From b4ad6fd6feb2abd9e4c677d1e276e143a3889e64 Mon Sep 17 00:00:00 2001 From: MarSeventh <1193267292@qq.com> Date: Wed, 30 Sep 2026 23:48:30 +0800 Subject: [PATCH] feat: add unified AI services and image tag recognition --- README.md | 8 +- README_zh.md | 10 +- deploy/worker/generate-toml.js | 7 +- deploy/worker/index.js | 8 + deploy/worker/wrangler.toml | 1 + docker-compose.yml | 2 + frontend-dist/css/126.8d4195f5.css | 1 + frontend-dist/css/126.8d4195f5.css.gz | Bin 0 -> 12766 bytes frontend-dist/css/130.8ca5a76a.css | 1 - frontend-dist/css/130.8ca5a76a.css.gz | Bin 15527 -> 0 bytes .../{787.448a9124.css => 168.448a9124.css} | 0 ...87.448a9124.css.gz => 168.448a9124.css.gz} | Bin frontend-dist/css/473.f3f669e8.css | 1 - frontend-dist/css/473.f3f669e8.css.gz | Bin 6054 -> 0 bytes frontend-dist/css/502.7f4cb9f9.css | 1 + frontend-dist/css/502.7f4cb9f9.css.gz | Bin 0 -> 12060 bytes frontend-dist/css/502.ae48a06e.css | 1 - frontend-dist/css/502.ae48a06e.css.gz | Bin 12448 -> 0 bytes frontend-dist/css/757.60c15823.css | 1 - frontend-dist/css/757.60c15823.css.gz | Bin 12812 -> 0 bytes frontend-dist/css/787.176e498b.css | 1 + frontend-dist/css/787.176e498b.css.gz | Bin 0 -> 15953 bytes frontend-dist/css/860.3febd367.css | 1 + frontend-dist/css/860.3febd367.css.gz | Bin 0 -> 5930 bytes frontend-dist/css/app.30026cb8.css | 1 + frontend-dist/css/app.30026cb8.css.gz | Bin 0 -> 3992 bytes frontend-dist/css/app.966aac8a.css | 1 - frontend-dist/css/app.966aac8a.css.gz | Bin 3906 -> 0 bytes frontend-dist/css/chunk-vendors.c8a4c1c7.css | 10 + .../css/chunk-vendors.c8a4c1c7.css.gz | Bin 0 -> 10688 bytes frontend-dist/css/chunk-vendors.f9cd4701.css | 10 - .../css/chunk-vendors.f9cd4701.css.gz | Bin 9747 -> 0 bytes frontend-dist/index.html | 2 +- frontend-dist/index.html.gz | Bin 601 -> 600 bytes frontend-dist/js/126.844eba4a.js | 23 ++ frontend-dist/js/126.844eba4a.js.gz | Bin 0 -> 115133 bytes ...57.47b4e4b0.js.map => 126.844eba4a.js.map} | 2 +- frontend-dist/js/126.844eba4a.js.map.gz | Bin 0 -> 387438 bytes frontend-dist/js/130.b657e68d.js | 2 - frontend-dist/js/130.b657e68d.js.gz | Bin 59623 -> 0 bytes frontend-dist/js/130.b657e68d.js.map | 1 - frontend-dist/js/130.b657e68d.js.map.gz | Bin 151426 -> 0 bytes .../js/{787.d0dbc2dd.js => 168.16edcf49.js} | 4 +- frontend-dist/js/168.16edcf49.js.gz | Bin 0 -> 1566 bytes ...87.d0dbc2dd.js.map => 168.16edcf49.js.map} | 2 +- frontend-dist/js/168.16edcf49.js.map.gz | Bin 0 -> 3271 bytes frontend-dist/js/502.58060353.js | 2 - frontend-dist/js/502.58060353.js.gz | Bin 33835 -> 0 bytes frontend-dist/js/502.58060353.js.map.gz | Bin 85300 -> 0 bytes frontend-dist/js/502.ff024e4c.js | 2 + frontend-dist/js/502.ff024e4c.js.gz | Bin 0 -> 33831 bytes ...02.58060353.js.map => 502.ff024e4c.js.map} | 2 +- frontend-dist/js/502.ff024e4c.js.map.gz | Bin 0 -> 85300 bytes frontend-dist/js/757.47b4e4b0.js | 23 -- frontend-dist/js/757.47b4e4b0.js.gz | Bin 108378 -> 0 bytes frontend-dist/js/757.47b4e4b0.js.map.gz | Bin 369621 -> 0 bytes frontend-dist/js/787.b5df6f2f.js | 2 + frontend-dist/js/787.b5df6f2f.js.gz | Bin 0 -> 64489 bytes frontend-dist/js/787.b5df6f2f.js.map | 1 + frontend-dist/js/787.b5df6f2f.js.map.gz | Bin 0 -> 161615 bytes frontend-dist/js/787.d0dbc2dd.js.gz | Bin 1566 -> 0 bytes frontend-dist/js/787.d0dbc2dd.js.map.gz | Bin 3272 -> 0 bytes frontend-dist/js/app.34dadb84.js | 2 - frontend-dist/js/app.34dadb84.js.gz | Bin 26966 -> 0 bytes frontend-dist/js/app.34dadb84.js.map | 1 - frontend-dist/js/app.34dadb84.js.map.gz | Bin 18923 -> 0 bytes frontend-dist/js/app.3c3cf9d6.js | 2 + frontend-dist/js/app.3c3cf9d6.js.gz | Bin 0 -> 33031 bytes frontend-dist/js/app.3c3cf9d6.js.map | 1 + frontend-dist/js/app.3c3cf9d6.js.map.gz | Bin 0 -> 20215 bytes ....c0852d4e.js => chunk-vendors.229dcca1.js} | 8 +- frontend-dist/js/chunk-vendors.229dcca1.js.gz | Bin 0 -> 518194 bytes ...e.js.map => chunk-vendors.229dcca1.js.map} | 2 +- .../js/chunk-vendors.229dcca1.js.map.gz | Bin 0 -> 1774833 bytes frontend-dist/js/chunk-vendors.c0852d4e.js.gz | Bin 518882 -> 0 bytes .../js/chunk-vendors.c0852d4e.js.map.gz | Bin 1775312 -> 0 bytes functions/api/manage/_middleware.js | 8 +- functions/api/manage/ai/tags.js | 62 ++++++ functions/api/manage/ai/test.js | 13 ++ functions/api/manage/sysConfig/ai.js | 17 ++ functions/api/manage/tags/[[path]].js | 208 ++---------------- functions/api/manage/tags/apply.js | 13 ++ functions/api/manage/tags/batch.js | 182 +-------------- functions/services/tags.js | 83 +++++++ functions/utils/ai/capabilities.js | 32 +++ functions/utils/ai/config.js | 156 +++++++++++++ functions/utils/ai/index.js | 52 +++++ .../utils/ai/providers/openaiCompatible.js | 69 ++++++ functions/utils/apiResponse.js | 64 ++++++ 89 files changed, 674 insertions(+), 435 deletions(-) create mode 100644 frontend-dist/css/126.8d4195f5.css create mode 100644 frontend-dist/css/126.8d4195f5.css.gz delete mode 100644 frontend-dist/css/130.8ca5a76a.css delete mode 100644 frontend-dist/css/130.8ca5a76a.css.gz rename frontend-dist/css/{787.448a9124.css => 168.448a9124.css} (100%) rename frontend-dist/css/{787.448a9124.css.gz => 168.448a9124.css.gz} (100%) delete mode 100644 frontend-dist/css/473.f3f669e8.css delete mode 100644 frontend-dist/css/473.f3f669e8.css.gz create mode 100644 frontend-dist/css/502.7f4cb9f9.css create mode 100644 frontend-dist/css/502.7f4cb9f9.css.gz delete mode 100644 frontend-dist/css/502.ae48a06e.css delete mode 100644 frontend-dist/css/502.ae48a06e.css.gz delete mode 100644 frontend-dist/css/757.60c15823.css delete mode 100644 frontend-dist/css/757.60c15823.css.gz create mode 100644 frontend-dist/css/787.176e498b.css create mode 100644 frontend-dist/css/787.176e498b.css.gz create mode 100644 frontend-dist/css/860.3febd367.css create mode 100644 frontend-dist/css/860.3febd367.css.gz create mode 100644 frontend-dist/css/app.30026cb8.css create mode 100644 frontend-dist/css/app.30026cb8.css.gz delete mode 100644 frontend-dist/css/app.966aac8a.css delete mode 100644 frontend-dist/css/app.966aac8a.css.gz create mode 100644 frontend-dist/css/chunk-vendors.c8a4c1c7.css create mode 100644 frontend-dist/css/chunk-vendors.c8a4c1c7.css.gz delete mode 100644 frontend-dist/css/chunk-vendors.f9cd4701.css delete mode 100644 frontend-dist/css/chunk-vendors.f9cd4701.css.gz create mode 100644 frontend-dist/js/126.844eba4a.js create mode 100644 frontend-dist/js/126.844eba4a.js.gz rename frontend-dist/js/{757.47b4e4b0.js.map => 126.844eba4a.js.map} (56%) create mode 100644 frontend-dist/js/126.844eba4a.js.map.gz delete mode 100644 frontend-dist/js/130.b657e68d.js delete mode 100644 frontend-dist/js/130.b657e68d.js.gz delete mode 100644 frontend-dist/js/130.b657e68d.js.map delete mode 100644 frontend-dist/js/130.b657e68d.js.map.gz rename frontend-dist/js/{787.d0dbc2dd.js => 168.16edcf49.js} (97%) create mode 100644 frontend-dist/js/168.16edcf49.js.gz rename frontend-dist/js/{787.d0dbc2dd.js.map => 168.16edcf49.js.map} (98%) create mode 100644 frontend-dist/js/168.16edcf49.js.map.gz delete mode 100644 frontend-dist/js/502.58060353.js delete mode 100644 frontend-dist/js/502.58060353.js.gz delete mode 100644 frontend-dist/js/502.58060353.js.map.gz create mode 100644 frontend-dist/js/502.ff024e4c.js create mode 100644 frontend-dist/js/502.ff024e4c.js.gz rename frontend-dist/js/{502.58060353.js.map => 502.ff024e4c.js.map} (99%) create mode 100644 frontend-dist/js/502.ff024e4c.js.map.gz delete mode 100644 frontend-dist/js/757.47b4e4b0.js delete mode 100644 frontend-dist/js/757.47b4e4b0.js.gz delete mode 100644 frontend-dist/js/757.47b4e4b0.js.map.gz create mode 100644 frontend-dist/js/787.b5df6f2f.js create mode 100644 frontend-dist/js/787.b5df6f2f.js.gz create mode 100644 frontend-dist/js/787.b5df6f2f.js.map create mode 100644 frontend-dist/js/787.b5df6f2f.js.map.gz delete mode 100644 frontend-dist/js/787.d0dbc2dd.js.gz delete mode 100644 frontend-dist/js/787.d0dbc2dd.js.map.gz delete mode 100644 frontend-dist/js/app.34dadb84.js delete mode 100644 frontend-dist/js/app.34dadb84.js.gz delete mode 100644 frontend-dist/js/app.34dadb84.js.map delete mode 100644 frontend-dist/js/app.34dadb84.js.map.gz create mode 100644 frontend-dist/js/app.3c3cf9d6.js create mode 100644 frontend-dist/js/app.3c3cf9d6.js.gz create mode 100644 frontend-dist/js/app.3c3cf9d6.js.map create mode 100644 frontend-dist/js/app.3c3cf9d6.js.map.gz rename frontend-dist/js/{chunk-vendors.c0852d4e.js => chunk-vendors.229dcca1.js} (71%) create mode 100644 frontend-dist/js/chunk-vendors.229dcca1.js.gz rename frontend-dist/js/{chunk-vendors.c0852d4e.js.map => chunk-vendors.229dcca1.js.map} (62%) create mode 100644 frontend-dist/js/chunk-vendors.229dcca1.js.map.gz delete mode 100644 frontend-dist/js/chunk-vendors.c0852d4e.js.gz delete mode 100644 frontend-dist/js/chunk-vendors.c0852d4e.js.map.gz create mode 100644 functions/api/manage/ai/tags.js create mode 100644 functions/api/manage/ai/test.js create mode 100644 functions/api/manage/sysConfig/ai.js create mode 100644 functions/api/manage/tags/apply.js create mode 100644 functions/services/tags.js create mode 100644 functions/utils/ai/capabilities.js create mode 100644 functions/utils/ai/config.js create mode 100644 functions/utils/ai/index.js create mode 100644 functions/utils/ai/providers/openaiCompatible.js create mode 100644 functions/utils/apiResponse.js diff --git a/README.md b/README.md index badd1dc..10b6e49 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ # 1. 💡 Introduction -CloudFlare ImgBed is a self-hosted image and file hosting solution for Docker and serverless environments, bringing **Telegram**, **Discord**, **Cloudflare R2**, **S3-compatible storage**, **Hugging Face**, **WebDAV**, and more into one management interface. It provides file management, authentication, directory organization, content moderation, a RESTful API, and WebDAV for personal image hosting, website asset management, and lightweight file distribution. **[View all features →](https://cfbed.sanyue.de/en/guide/features.html)** +CloudFlare ImgBed is a self-hosted image and file hosting solution for Docker and serverless environments, bringing **Telegram**, **Discord**, **Cloudflare R2**, **S3-compatible storage**, **Hugging Face**, **WebDAV**, and more into one management interface. It provides file management, authentication, directory organization, content moderation, a RESTful API, and WebDAV, with a growing range of personalized AI capabilities such as image tag recognition. It is suited to personal image hosting, website asset management, and lightweight file distribution. **[View all features →](https://cfbed.sanyue.de/en/guide/features.html)** ![CloudFlare](readme/海报.png) @@ -66,9 +66,9 @@ CloudFlare ImgBed is a self-hosted image and file hosting solution for Docker an Provides CDN acceleration and security protection Provides CDN acceleration and security protection - Provides highly available API services for leading AI models. New users receive a first top-up discount and free credits. - Provides stable and high-quality cloud computing resources - Provides stable and high-quality cloud computing resources + Provide premium, stable, and budget-friendly LLM APIs. Generate text, images, and code all in one place. Sign up via our link for free credits and exclusive discounts! + Provides stable and high-quality cloud computing resources. Sign up via our link for exclusive discounts! + Provides stable and high-quality cloud computing resources. Sign up via our link for exclusive discounts! Provides community support diff --git a/README_zh.md b/README_zh.md index df2696a..16db6d7 100644 --- a/README_zh.md +++ b/README_zh.md @@ -28,7 +28,7 @@ # 1. 💡 项目介绍 -CloudFlare ImgBed 是支持 Docker 与 Serverless 部署的自建图床和文件托管方案,可将 **Telegram**、**Discord**、**Cloudflare R2**、**S3 兼容存储**、**Hugging Face**、**WebDAV** 等渠道统一接入一个管理界面。项目提供文件管理、身份认证、目录组织、内容审核、RESTful API 与 WebDAV,适用于个人图床、网站资源管理和轻量文件分发。 **[查看完整功能 →](https://cfbed.sanyue.de/guide/features.html)** +CloudFlare ImgBed 是支持 Docker 与 Serverless 部署的自建图床和文件托管方案,可将 **Telegram**、**Discord**、**Cloudflare R2**、**S3 兼容存储**、**Hugging Face**、**WebDAV** 等渠道统一接入一个管理界面。项目提供文件管理、身份认证、目录组织、内容审核、RESTful API 与 WebDAV,同时也在不断增加 AI 驱动的图片标签识别等个性化能力,适用于个人图床、网站资源管理和轻量文件分发。 **[查看完整功能 →](https://cfbed.sanyue.de/guide/features.html)** ![CloudFlare](readme/海报.png) @@ -66,14 +66,16 @@ CloudFlare ImgBed 是支持 Docker 与 Serverless 部署的自建图床和文件 提供 CDN 加速及安全防护 提供 CDN 加速及安全防护 - 提供全面、高可用性的顶级大模型 API 服务,人民币 1:1 充值,新用户立享首充折扣与免费额度 - 提供稳定、优质的云计算资源 - 提供稳定、优质的云计算资源 + 提供稳定、高性价比的顶级大模型 API 服务,一站搞定文案、图片和代码,通过本项目链接注册立享充值折扣与免费额度! + 提供稳定、优质的云计算资源,通过本项目链接注册立享超值优惠! + 提供稳定、优质的云计算资源,通过本项目链接注册立享超值优惠! 提供社区支持 + + # 2. 🖥️ 在线演示 **演示站点**:[CloudFlare ImgBed](https://cfbed.1314883.xyz/) · **访问密码**:`cfbed` diff --git a/deploy/worker/generate-toml.js b/deploy/worker/generate-toml.js index 5e366fc..e0b60c6 100644 --- a/deploy/worker/generate-toml.js +++ b/deploy/worker/generate-toml.js @@ -62,13 +62,18 @@ bucket_name = "${env.R2_BUCKET_NAME}" `; } +toml += ` +[vars] +# AI_CONFIG_SECRET = "" # 至少 32 个字符的随机密钥,用于加密保存 AI 供应商 API Key +# Workers 生产环境:npx wrangler secret put AI_CONFIG_SECRET --config deploy/worker/wrangler.toml +`; + // 业务环境变量(从 JSON 解析) if (env.WORKER_VARS) { try { const vars = JSON.parse(env.WORKER_VARS); const entries = Object.entries(vars); if (entries.length > 0) { - toml += '\n[vars]\n'; for (const [key, value] of entries) { toml += `${key} = "${String(value).replace(/\\/g, '\\\\').replace(/"/g, '\\"')}"\n`; } diff --git a/deploy/worker/index.js b/deploy/worker/index.js index db80d66..329113b 100644 --- a/deploy/worker/index.js +++ b/deploy/worker/index.js @@ -20,6 +20,8 @@ import * as apiManageBatchIndexChunk from '../../functions/api/manage/batch/inde import * as apiManageBatchIndexConfig from '../../functions/api/manage/batch/index/config.js'; import * as apiManageBatchIndexFinalize from '../../functions/api/manage/batch/index/finalize.js'; import * as apiManageBatchRestoreChunk from '../../functions/api/manage/batch/restore/chunk.js'; +import * as apiManageAiTags from '../../functions/api/manage/ai/tags.js'; +import * as apiManageAiTest from '../../functions/api/manage/ai/test.js'; import * as apiManageBatchList from '../../functions/api/manage/batch/list.js'; import * as apiManageBatchSettings from '../../functions/api/manage/batch/settings.js'; import * as apiManageCusConfigBlockip from '../../functions/api/manage/cusConfig/blockip.js'; @@ -28,10 +30,12 @@ import * as apiManageCusConfigFiles from '../../functions/api/manage/cusConfig/f import * as apiManageCusConfigList from '../../functions/api/manage/cusConfig/list.js'; import * as apiManageCusConfigWhiteip from '../../functions/api/manage/cusConfig/whiteip.js'; import * as apiManageDeleteBatch from '../../functions/api/manage/delete/batch.js'; +import * as apiManageSysConfigAi from '../../functions/api/manage/sysConfig/ai.js'; import * as apiManageSysConfigOthers from '../../functions/api/manage/sysConfig/others.js'; import * as apiManageSysConfigPage from '../../functions/api/manage/sysConfig/page.js'; import * as apiManageSysConfigSecurity from '../../functions/api/manage/sysConfig/security.js'; import * as apiManageSysConfigUpload from '../../functions/api/manage/sysConfig/upload.js'; +import * as apiManageTagsApply from '../../functions/api/manage/tags/apply.js'; import * as apiManageTagsAutocomplete from '../../functions/api/manage/tags/autocomplete.js'; import * as apiManageTagsBatch from '../../functions/api/manage/tags/batch.js'; import * as apiAuthAdminLogin from '../../functions/api/auth/adminLogin.js'; @@ -71,6 +75,8 @@ const routes = [ { path: '/api/manage/batch/index/config', module: apiManageBatchIndexConfig, middlewares: [mw_api, mw_api_manage] }, { path: '/api/manage/batch/index/finalize', module: apiManageBatchIndexFinalize, middlewares: [mw_api, mw_api_manage] }, { path: '/api/manage/batch/restore/chunk', module: apiManageBatchRestoreChunk, middlewares: [mw_api, mw_api_manage] }, + { path: '/api/manage/ai/tags', module: apiManageAiTags, middlewares: [mw_api, mw_api_manage] }, + { path: '/api/manage/ai/test', module: apiManageAiTest, middlewares: [mw_api, mw_api_manage] }, { path: '/api/manage/batch/list', module: apiManageBatchList, middlewares: [mw_api, mw_api_manage] }, { path: '/api/manage/batch/settings', module: apiManageBatchSettings, middlewares: [mw_api, mw_api_manage] }, { path: '/api/manage/cusConfig/blockip', module: apiManageCusConfigBlockip, middlewares: [mw_api, mw_api_manage] }, @@ -79,10 +85,12 @@ const routes = [ { path: '/api/manage/cusConfig/list', module: apiManageCusConfigList, middlewares: [mw_api, mw_api_manage] }, { path: '/api/manage/cusConfig/whiteip', module: apiManageCusConfigWhiteip, middlewares: [mw_api, mw_api_manage] }, { path: '/api/manage/delete/batch', module: apiManageDeleteBatch, middlewares: [mw_api, mw_api_manage] }, + { path: '/api/manage/sysConfig/ai', module: apiManageSysConfigAi, middlewares: [mw_api, mw_api_manage] }, { path: '/api/manage/sysConfig/others', module: apiManageSysConfigOthers, middlewares: [mw_api, mw_api_manage] }, { path: '/api/manage/sysConfig/page', module: apiManageSysConfigPage, middlewares: [mw_api, mw_api_manage] }, { path: '/api/manage/sysConfig/security', module: apiManageSysConfigSecurity, middlewares: [mw_api, mw_api_manage] }, { path: '/api/manage/sysConfig/upload', module: apiManageSysConfigUpload, middlewares: [mw_api, mw_api_manage] }, + { path: '/api/manage/tags/apply', module: apiManageTagsApply, middlewares: [mw_api, mw_api_manage] }, { path: '/api/manage/tags/autocomplete', module: apiManageTagsAutocomplete, middlewares: [mw_api, mw_api_manage] }, { path: '/api/manage/tags/batch', module: apiManageTagsBatch, middlewares: [mw_api, mw_api_manage] }, { path: '/api/auth/adminLogin', module: apiAuthAdminLogin, middlewares: [mw_api] }, diff --git a/deploy/worker/wrangler.toml b/deploy/worker/wrangler.toml index 6510e2e..f4e2ec0 100644 --- a/deploy/worker/wrangler.toml +++ b/deploy/worker/wrangler.toml @@ -27,6 +27,7 @@ not_found_handling = "single-page-application" binding = "IMAGES" [vars] +# AI_CONFIG_SECRET = "" # 至少 32 个字符的随机密钥,用于加密保存 AI 供应商 API Key # TG_BOT_TOKEN = "" # TG_CHAT_ID = "" diff --git a/docker-compose.yml b/docker-compose.yml index f3ca9ad..1c58042 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,8 @@ services: imgbed: image: marseventh/cloudflare-imgbed:latest + # environment: + # AI_CONFIG_SECRET: "" # 填写至少 32 个字符的随机密钥,用于加密保存 AI 供应商 API Key ports: - "7658:8080" volumes: diff --git a/frontend-dist/css/126.8d4195f5.css b/frontend-dist/css/126.8d4195f5.css new file mode 100644 index 0000000..7632c64 --- /dev/null +++ b/frontend-dist/css/126.8d4195f5.css @@ -0,0 +1 @@ +.sidebar-container[data-v-0f5a14b0]{display:flex;flex-direction:column;position:fixed;top:50%;left:8px;transform:translateY(-50%);z-index:2001;max-width:200px;background:var(--glass-bg);backdrop-filter:blur(12px) saturate(1.4);-webkit-backdrop-filter:blur(12px) saturate(1.4);border:1px solid var(--glass-border);border-radius:16px;box-shadow:none;transition:width .3s ease,box-shadow .3s ease;overflow:hidden}.sidebar-container.is-collapsed[data-v-0f5a14b0]{width:56px}html.dark .sidebar-container[data-v-0f5a14b0]{background:var(--glass-bg);box-shadow:none}.sidebar-container[data-v-0f5a14b0]:hover,html.dark .sidebar-container[data-v-0f5a14b0]:hover{box-shadow:none}.menu-list[data-v-0f5a14b0]{padding:8px}.menu-item[data-v-0f5a14b0]{display:flex;align-items:center;justify-content:flex-start;padding:12px 12px 12px 0;height:42px;box-sizing:border-box;border-radius:10px;cursor:pointer;transition:background .2s ease,color .2s ease;color:var(--admin-container-color,#333);gap:0;overflow:hidden}.menu-item[data-v-0f5a14b0]:hover{background:color-mix(in srgb,var(--el-text-color-primary) 6%,transparent)}html.dark .menu-item[data-v-0f5a14b0]:hover{background:color-mix(in srgb,var(--el-text-color-primary) 10%,transparent)}.menu-item.is-active[data-v-0f5a14b0]{background:color-mix(in srgb,var(--primary-color) 20%,transparent);color:var(--primary-color)}html.dark .menu-item.is-active[data-v-0f5a14b0]{background:color-mix(in srgb,var(--primary-color) 30%,transparent);color:var(--el-text-color-primary)}.menu-icon[data-v-0f5a14b0]{width:40px;min-width:40px;font-size:16px;flex-shrink:0;text-align:center}.menu-text[data-v-0f5a14b0]{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .2s ease .05s,max-width .25s ease}.sidebar-container.is-collapsed .menu-text[data-v-0f5a14b0]{opacity:0;max-width:0;transition:opacity .1s ease,max-width .2s ease}.toggle-button[data-v-0f5a14b0]{padding:12px;text-align:center;cursor:pointer;transition:all .2s ease;color:var(--admin-container-color,#333)}.toggle-button[data-v-0f5a14b0],html.dark .toggle-button[data-v-0f5a14b0]{border-top:1px solid color-mix(in srgb,var(--el-text-color-primary) 8%,transparent)}.toggle-button[data-v-0f5a14b0]:hover{background:color-mix(in srgb,var(--el-text-color-primary) 10%,transparent)}html.dark .toggle-button[data-v-0f5a14b0]:hover{background:color-mix(in srgb,var(--el-text-color-primary) 6%,transparent)}@media (max-width:768px){.sidebar-container[data-v-0f5a14b0]{left:4px;max-width:170px}.sidebar-container.is-collapsed[data-v-0f5a14b0]{width:50px}.menu-icon[data-v-0f5a14b0]{width:34px;min-width:34px}}.el-progress{align-items:center;display:flex;line-height:1;position:relative}.el-progress__text{color:var(--el-text-color-regular);font-size:14px;line-height:1;margin-left:5px;min-width:50px}.el-progress__text i{display:block;vertical-align:middle}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{left:0;margin:0;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:100%}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{display:inline-block;vertical-align:middle}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{display:block;margin-right:0;padding-right:0}.el-progress--text-inside .el-progress-bar{margin-right:0;padding-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:var(--el-color-success)}.el-progress.is-success .el-progress__text{color:var(--el-color-success)}.el-progress.is-warning .el-progress-bar__inner{background-color:var(--el-color-warning)}.el-progress.is-warning .el-progress__text{color:var(--el-color-warning)}.el-progress.is-exception .el-progress-bar__inner{background-color:var(--el-color-danger)}.el-progress.is-exception .el-progress__text{color:var(--el-color-danger)}.el-progress-bar{box-sizing:border-box;flex-grow:1}.el-progress-bar__outer{background-color:var(--el-border-color-lighter);border-radius:100px;height:6px;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{background-color:var(--el-color-primary);border-radius:100px;height:100%;left:0;line-height:1;position:absolute;text-align:right;top:0;transition:width .6s ease;white-space:nowrap}.el-progress-bar__inner:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-progress-bar__inner--indeterminate{animation:indeterminate 3s infinite;transform:translateZ(0)}.el-progress-bar__inner--striped{background-image:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 0,transparent 50%,rgba(0,0,0,.1) 0,rgba(0,0,0,.1) 75%,transparent 0,transparent);background-size:1.25em 1.25em}.el-progress-bar__inner--striped.el-progress-bar__inner--striped-flow{animation:striped-flow 3s linear infinite}.el-progress-bar__innerText{color:#fff;display:inline-block;font-size:12px;margin:0 5px;vertical-align:middle}@keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}@keyframes indeterminate{0%{left:-100%}to{left:100%}}@keyframes striped-flow{0%{background-position:-100%}to{background-position:100%}}.date-range-calendar[data-v-5fbe496c]{--calendar-day-size:38px;width:min(336px,100%);max-width:100%;min-width:0;box-sizing:border-box;color:var(--admin-container-color);-webkit-user-select:none;-moz-user-select:none;user-select:none}.selected-range[data-v-5fbe496c]{margin-bottom:16px}.selected-range-inputs[data-v-5fbe496c]{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:8px}.date-input[data-v-5fbe496c]{width:100%;min-width:0;height:34px;box-sizing:border-box;border:1px solid var(--glass-border);border-radius:8px;padding:0 8px;background:var(--glass-bg);color:var(--admin-container-color);font-size:13px;text-align:center;outline:none;transition:border-color .18s ease,box-shadow .18s ease,background-color .18s ease}.date-input[data-v-5fbe496c]:focus,.date-input[data-v-5fbe496c]:hover{border-color:var(--el-color-primary);box-shadow:none}.date-range-separator[data-v-5fbe496c]{color:var(--el-text-color-secondary);font-size:12px;font-weight:700}.calendar-header[data-v-5fbe496c]{display:grid;grid-template-columns:36px 1fr 36px;align-items:center;gap:8px;margin-bottom:14px}.calendar-title[data-v-5fbe496c]{text-align:center;font-size:16px;font-weight:700}.calendar-nav[data-v-5fbe496c]{width:36px;height:36px;border:1px solid var(--glass-border);border-radius:50%;background:var(--glass-bg);color:var(--admin-container-color);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:color .2s ease,border-color .2s ease,background-color .2s ease,box-shadow .2s ease}.calendar-nav[data-v-5fbe496c]:focus,.calendar-nav[data-v-5fbe496c]:hover{color:var(--el-color-primary);border-color:var(--el-color-primary);background:color-mix(in srgb,var(--primary-color) 8%,transparent);box-shadow:none}.calendar-grid[data-v-5fbe496c],.calendar-weekdays[data-v-5fbe496c]{display:grid;grid-template-columns:repeat(7,1fr)}.calendar-weekdays[data-v-5fbe496c]{margin-bottom:8px;color:var(--el-text-color-secondary);font-size:12px;font-weight:600;text-align:center}.calendar-weekdays span[data-v-5fbe496c]{height:24px;line-height:24px}.calendar-grid[data-v-5fbe496c]{gap:4px}.calendar-day[data-v-5fbe496c]{position:relative;width:var(--calendar-day-size);height:var(--calendar-day-size);box-sizing:border-box;justify-self:center;padding:0;border:1px solid transparent;border-radius:50%;background:transparent;color:var(--admin-container-color);font-size:14px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:color .18s ease,background-color .18s ease,border-color .18s ease,box-shadow .18s ease}.calendar-day[data-v-5fbe496c]:focus,.calendar-day[data-v-5fbe496c]:hover{border-color:color-mix(in srgb,var(--primary-color) 45%,transparent);background:color-mix(in srgb,var(--primary-color) 10%,transparent);color:var(--el-color-primary)}.calendar-day.is-muted[data-v-5fbe496c]{color:var(--el-text-color-placeholder);opacity:.62}.calendar-day.is-today[data-v-5fbe496c]{border-color:rgba(249,115,22,.7)}.calendar-day.is-in-range[data-v-5fbe496c]{border-radius:12px;background:color-mix(in srgb,var(--primary-color) 12%,transparent);color:var(--el-color-primary)}.calendar-day.is-range-end[data-v-5fbe496c],.calendar-day.is-range-start[data-v-5fbe496c]{background:var(--el-color-primary);border-color:var(--el-color-primary);color:#fff;box-shadow:none}html.dark .calendar-day.is-muted[data-v-5fbe496c]{color:var(--el-text-color-placeholder)}@media (max-width:768px){.date-range-calendar[data-v-5fbe496c]{--calendar-day-size:clamp(30px,8.5vw,38px)}}.el-radio{--el-radio-font-size:var(--el-font-size-base);--el-radio-text-color:var(--el-text-color-regular);--el-radio-font-weight:var(--el-font-weight-primary);--el-radio-input-height:14px;--el-radio-input-width:14px;--el-radio-input-border-radius:var(--el-border-radius-circle);--el-radio-input-bg-color:var(--el-fill-color-blank);--el-radio-input-border:var(--el-border);--el-radio-input-border-color:var(--el-border-color);--el-radio-input-border-color-hover:var(--el-color-primary);align-items:center;color:var(--el-radio-text-color);cursor:pointer;display:inline-flex;font-size:var(--el-font-size-base);font-weight:var(--el-radio-font-weight);height:32px;margin-right:30px;outline:none;position:relative;-webkit-user-select:none;user-select:none;white-space:nowrap}.el-radio.el-radio--large{height:40px}.el-radio.el-radio--small{height:24px}.el-radio.is-bordered{border:var(--el-border);border-radius:var(--el-border-radius-base);box-sizing:border-box;padding:0 15px 0 9px}.el-radio.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-radio.is-bordered.is-disabled{border-color:var(--el-border-color-lighter);cursor:not-allowed}.el-radio.is-bordered.el-radio--large{border-radius:var(--el-border-radius-base);padding:0 19px 0 11px}.el-radio.is-bordered.el-radio--large .el-radio__label{font-size:var(--el-font-size-base)}.el-radio.is-bordered.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.is-bordered.el-radio--small{border-radius:var(--el-border-radius-base);padding:0 11px 0 7px}.el-radio.is-bordered.el-radio--small .el-radio__label{font-size:12px}.el-radio.is-bordered.el-radio--small .el-radio__inner{height:12px;width:12px}.el-radio:last-child{margin-right:0}.el-radio__input{cursor:pointer;display:inline-flex;outline:none;position:relative;vertical-align:middle;white-space:nowrap}.el-radio__input.is-disabled .el-radio__inner{border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled .el-radio__inner:after{background-color:var(--el-disabled-bg-color);cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled.is-checked .el-radio__inner:after{background-color:var(--el-text-color-placeholder)}.el-radio__input.is-disabled+span.el-radio__label{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{background:var(--el-color-primary);border-color:var(--el-color-primary)}.el-radio__input.is-checked .el-radio__inner:after{background-color:var(--el-color-white);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:var(--el-color-primary)}.el-radio__input.is-focus .el-radio__inner{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner{background-color:var(--el-radio-input-bg-color);border:var(--el-radio-input-border);border-radius:var(--el-radio-input-border-radius);box-sizing:border-box;cursor:pointer;display:inline-block;height:var(--el-radio-input-height);position:relative;width:var(--el-radio-input-width)}.el-radio__inner:hover{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner:after{border-radius:var(--el-radio-input-border-radius);content:"";height:4px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%) scale(0);transition:transform .15s ease-in;width:4px}.el-radio__original{bottom:0;left:0;margin:0;opacity:0;outline:none;position:absolute;right:0;top:0;z-index:-1}.el-radio__original:focus-visible+.el-radio__inner{border-radius:var(--el-radio-input-border-radius);outline:2px solid var(--el-radio-input-border-color-hover);outline-offset:1px}.el-radio:focus:not(:focus-visible):not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{box-shadow:0 0 2px 2px var(--el-radio-input-border-color-hover)}.el-radio__label{font-size:var(--el-radio-font-size);padding-left:8px}.el-radio.el-radio--large .el-radio__label{font-size:14px}.el-radio.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.el-radio--small .el-radio__label{font-size:12px}.el-radio.el-radio--small .el-radio__inner{height:12px;width:12px}.el-radio-group{align-items:center;display:inline-flex;flex-wrap:wrap;font-size:0}.el-radio-button{--el-radio-button-checked-bg-color:var(--el-color-primary);--el-radio-button-checked-text-color:var(--el-color-white);--el-radio-button-checked-border-color:var(--el-color-primary);--el-radio-button-disabled-checked-fill:var(--el-border-color-extra-light);display:inline-block;outline:none;position:relative}.el-radio-button__inner{-webkit-appearance:none;background:var(--el-button-bg-color,var(--el-fill-color-blank));border-radius:0;box-sizing:border-box;color:var(--el-button-text-color,var(--el-text-color-regular));cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);font-weight:var(--el-button-font-weight,var(--el-font-weight-primary));line-height:1;margin:0;outline:var(--el-border);padding:8px 15px;position:relative;text-align:center;transition:var(--el-transition-all);-webkit-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-radio-button__inner.is-round{padding:8px 15px}.el-radio-button__inner:hover{color:var(--el-color-primary)}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);box-shadow:none!important}.el-radio-button.is-active .el-radio-button__original-radio:not(:disabled)+.el-radio-button__inner{background-color:var(--el-radio-button-checked-bg-color,var(--el-color-primary));border-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));box-shadow:-1px 0 0 0 var(--el-radio-button-checked-border-color,var(--el-color-primary));color:var(--el-radio-button-checked-text-color,var(--el-color-white))}.el-radio-button__original-radio{opacity:0;outline:none;position:absolute;z-index:-1}.el-radio-button__original-radio:focus-visible+.el-radio-button__inner{border-left:var(--el-border);border-left-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));border-radius:var(--el-border-radius-base);box-shadow:none;outline:2px solid var(--el-radio-button-checked-border-color);outline-offset:1px;z-index:2}.el-radio-button__original-radio:disabled+.el-radio-button__inner{background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));background-image:none;border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none;color:var(--el-disabled-text-color);cursor:not-allowed}.el-radio-button__original-radio:disabled:checked+.el-radio-button__inner{background-color:var(--el-radio-button-disabled-checked-fill)}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:var(--el-border-radius-base)}.el-radio-button--large .el-radio-button__inner{border-radius:0;font-size:var(--el-font-size-base);padding:12px 19px}.el-radio-button--large .el-radio-button__inner.is-round{padding:12px 19px}.el-radio-button--small .el-radio-button__inner{border-radius:0;font-size:12px;padding:5px 11px}.el-radio-button--small .el-radio-button__inner.is-round{padding:5px 11px}.status-panel[data-v-776bcef4]{padding:20px;background:transparent;min-height:100vh}.status-hero[data-v-776bcef4]{--hero-status-color:var(--el-color-success);position:relative;isolation:isolate;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:42px;margin-bottom:8px;padding:28px 12px 34px;color:var(--admin-container-color)}.status-hero[data-v-776bcef4]:after,.status-hero[data-v-776bcef4]:before{content:"";position:absolute;pointer-events:none;z-index:-1}.status-hero[data-v-776bcef4]:before{inset:0;opacity:.34;background-image:radial-gradient(circle at 64% 52%,color-mix(in srgb,var(--primary-color) 9%,transparent),transparent 28%),linear-gradient(color-mix(in srgb,var(--primary-color) 16%,transparent) 1px,transparent 1px),linear-gradient(90deg,color-mix(in srgb,var(--primary-color) 16%,transparent) 1px,transparent 1px);background-size:auto,34px 34px,34px 34px;mask-image:linear-gradient(90deg,transparent 28%,#000 72%,transparent);-webkit-mask-image:linear-gradient(90deg,transparent 28%,#000 72%,transparent)}.status-hero[data-v-776bcef4]:after{width:150px;height:150px;top:50%;right:31%;border-radius:50%;background:color-mix(in srgb,var(--primary-color) 10%,transparent);filter:blur(20px);transform:translateY(-50%)}.status-hero.is-checking[data-v-776bcef4]{--hero-status-color:var(--el-color-warning)}.status-hero.is-attention[data-v-776bcef4]{--hero-status-color:var(--el-color-danger)}.status-hero-copy[data-v-776bcef4]{position:relative;z-index:1;min-width:0}.status-hero-kicker[data-v-776bcef4]{display:flex;align-items:center;flex-wrap:wrap;gap:10px 14px;margin-bottom:15px}.system-health-badge[data-v-776bcef4]{display:inline-flex;align-items:center;gap:8px;padding:6px 11px;color:var(--hero-status-color);background:color-mix(in srgb,var(--hero-status-color) 10%,var(--glass-bg));border:1px solid color-mix(in srgb,var(--hero-status-color) 24%,var(--glass-border));border-radius:999px;font-size:12px;font-weight:650;line-height:1}.system-health-dot[data-v-776bcef4]{position:relative;width:7px;height:7px;flex-shrink:0;background:currentColor;border-radius:50%;box-shadow:0 0 0 4px color-mix(in srgb,currentColor 12%,transparent)}.system-health-dot[data-v-776bcef4]:after{content:"";position:absolute;inset:-4px;border:1px solid currentColor;border-radius:inherit;animation:healthPulse-776bcef4 2s ease-out infinite}.status-hero-date[data-v-776bcef4]{color:var(--el-text-color-secondary);font-size:12px;font-weight:550;line-height:1.45}.status-hero-title[data-v-776bcef4]{margin:0;color:var(--admin-container-color);font-size:clamp(28px,3vw,40px);font-weight:750;line-height:1.18;letter-spacing:-.035em}.status-hero-summary[data-v-776bcef4]{max-width:720px;margin:12px auto 0;color:var(--el-text-color-secondary);font-size:14px;line-height:1.7;text-align:center}.status-hero-time-card[data-v-776bcef4]{position:relative;z-index:1;display:flex;flex-direction:column;justify-content:center;width:250px;min-width:250px;padding:12px 0 12px 32px;border-left:1px solid color-mix(in srgb,var(--el-text-color-primary) 10%,transparent);box-sizing:border-box}.status-hero-time-caption[data-v-776bcef4]{color:var(--el-text-color-secondary);font-size:10px;font-weight:650;letter-spacing:.12em;text-transform:uppercase}.status-hero-time[data-v-776bcef4]{margin-top:7px;color:var(--admin-container-color);font-size:clamp(28px,3vw,36px);font-weight:750;font-variant-numeric:tabular-nums;line-height:1;letter-spacing:-.04em;white-space:nowrap}.status-hero-timezone[data-v-776bcef4]{margin-top:10px;overflow:hidden;color:var(--el-text-color-secondary);font-size:10px;line-height:1.4;opacity:.78;text-overflow:ellipsis;white-space:nowrap}@keyframes healthPulse-776bcef4{0%{opacity:.8;transform:scale(.75)}75%,to{opacity:0;transform:scale(1.8)}}@media (prefers-reduced-motion:reduce){.system-health-dot[data-v-776bcef4]:after{animation:none}}.overview-cards[data-v-776bcef4]{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px;margin-bottom:30px}.overview-card[data-v-776bcef4]{background:var(--glass-bg);border-radius:16px;padding:24px;display:flex;align-items:center;box-shadow:var(--glass-shadow);border:1px solid var(--glass-border);cursor:pointer;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease;will-change:transform}.overview-card[data-v-776bcef4]:focus-within,.overview-card[data-v-776bcef4]:hover{transform:translateY(-5px);box-shadow:0 12px 28px color-mix(in srgb,var(--el-text-color-primary) 16%,transparent);border-color:color-mix(in srgb,var(--primary-color) 35%,var(--glass-border))}@media (prefers-reduced-motion:reduce){.overview-card[data-v-776bcef4]{transition:box-shadow .25s ease,border-color .25s ease}.overview-card[data-v-776bcef4]:focus-within,.overview-card[data-v-776bcef4]:hover{transform:none}}.card-icon[data-v-776bcef4]{width:60px;height:60px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:24px;margin-right:20px;background:var(--primary-color);color:var(--el-color-white)}.card-content[data-v-776bcef4]{flex:1}.card-title[data-v-776bcef4]{font-size:14px;color:#666;margin-bottom:8px;font-weight:500}.card-value[data-v-776bcef4]{font-size:28px;font-weight:700;color:var(--admin-container-color);line-height:1}.card-subtitle[data-v-776bcef4]{font-size:11px;color:var(--el-text-color-secondary);margin-top:4px;opacity:.8}.charts-section[data-v-776bcef4]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-bottom:30px;overflow:visible}@media (max-width:768px){.charts-section[data-v-776bcef4]{grid-template-columns:1fr}}.chart-card[data-v-776bcef4]{background:var(--glass-bg);border-radius:16px;padding:24px;border:1px solid var(--glass-border)}.chart-card[data-v-776bcef4],.chart-card[data-v-776bcef4]:hover{box-shadow:var(--glass-shadow)}.chart-card[data-v-776bcef4],.chart-content[data-v-776bcef4],.pie-chart-container[data-v-776bcef4],.pie-chart-wrapper[data-v-776bcef4]{overflow:visible}.chart-header[data-v-776bcef4]{display:flex;gap:8px;align-items:center;margin-bottom:20px;font-size:16px;font-weight:600;color:var(--admin-container-color)}.trend-chart-card[data-v-776bcef4]{grid-column:1/-1}.trend-chart-header[data-v-776bcef4]{justify-content:space-between;gap:14px;flex-wrap:wrap}.chart-title[data-v-776bcef4]{display:flex;align-items:center;gap:8px}.trend-controls[data-v-776bcef4]{display:flex;align-items:center;justify-content:flex-end;gap:12px;flex-wrap:wrap}.trend-calendar-btn[data-v-776bcef4]{width:32px;min-width:32px;height:32px;padding:0;display:inline-flex;align-items:center;justify-content:center;color:var(--admin-container-color);background:var(--glass-bg);border:1px solid var(--glass-border)}.trend-calendar-btn[data-v-776bcef4]:hover{color:var(--el-color-primary);border-color:var(--glass-border);background:var(--glass-bg);box-shadow:none}.trend-date-dialog[data-v-776bcef4]{overflow:visible;max-width:calc(100vw - 32px);box-sizing:border-box}.trend-date-dialog[data-v-776bcef4] .el-dialog__body{overflow:visible;padding:16px 24px 24px}.trend-date-panel[data-v-776bcef4]{width:100%;max-width:100%;min-width:0;box-sizing:border-box;display:flex;justify-content:center;overflow:hidden}.trend-group-switch[data-v-776bcef4]{flex-shrink:0;height:32px;display:flex}.trend-group-switch[data-v-776bcef4] .el-radio-button__inner{height:32px;display:inline-flex;align-items:center;justify-content:center;line-height:1;padding:0 14px}.chart-content.trend-chart-content[data-v-776bcef4]{min-height:320px;padding:0;margin:0;min-width:0;max-width:100%;overflow:hidden}.line-chart-wrapper[data-v-776bcef4]{position:relative;width:100%;max-width:100%;min-width:0;height:320px;overflow:hidden}.line-chart-wrapper[data-v-776bcef4] canvas{display:block;width:100%!important;max-width:100%!important}.trend-empty-state[data-v-776bcef4]{height:320px}.chart-content[data-v-776bcef4]{min-height:160px;padding:15px;margin:-5px}.empty-state[data-v-776bcef4]{display:flex;flex-direction:column;align-items:center;justify-content:center;height:160px;color:var(--el-text-color-secondary);font-size:14px}.empty-state .fa-icon[data-v-776bcef4]{font-size:32px;margin-bottom:10px}.stats-list[data-v-776bcef4]{display:flex;flex-direction:column;gap:16px}.stats-item[data-v-776bcef4]{display:flex;align-items:center;gap:12px}.stats-label[data-v-776bcef4]{min-width:80px;font-size:13px;color:#666;font-weight:500}.stats-bar[data-v-776bcef4]{flex:1;height:8px;background:#f0f0f0;border-radius:4px;overflow:hidden}.stats-fill[data-v-776bcef4]{height:100%;background:var(--primary-color);border-radius:4px;transition:width .6s ease}.type-fill[data-v-776bcef4]{background:#16a34a}.stats-value[data-v-776bcef4]{min-width:50px;text-align:right;font-size:13px;font-weight:600;color:var(--admin-container-color)}.pie-chart-container[data-v-776bcef4]{display:flex;align-items:center;gap:24px;flex-wrap:wrap;justify-content:center}.pie-chart-wrapper[data-v-776bcef4]{position:relative;width:180px;height:180px;flex-shrink:0;padding:15px;box-sizing:content-box;overflow:visible;isolation:isolate}.chart-center-text[data-v-776bcef4]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;pointer-events:none;z-index:-1}.center-value[data-v-776bcef4]{font-size:22px;font-weight:700;color:var(--admin-container-color);line-height:1.2}.center-label[data-v-776bcef4]{font-size:11px;color:#888;margin-top:2px}.chart-legend[data-v-776bcef4]{display:flex;flex-direction:column;gap:10px;flex:1;min-width:180px}.legend-item[data-v-776bcef4]{display:flex;align-items:center;gap:10px;padding:8px 12px;background:color-mix(in srgb,var(--el-text-color-primary) 3%,transparent);border:1px solid var(--glass-border);border-radius:8px;transition:transform .2s ease,background-color .2s ease,border-color .2s ease,box-shadow .2s ease;will-change:transform}.legend-item[data-v-776bcef4]:hover{transform:translateY(-2px);background:color-mix(in srgb,var(--primary-color) 8%,var(--glass-bg));border-color:color-mix(in srgb,var(--primary-color) 30%,var(--glass-border));box-shadow:0 6px 16px color-mix(in srgb,var(--el-text-color-primary) 12%,transparent)}html.dark .legend-item[data-v-776bcef4]{background:color-mix(in srgb,var(--el-text-color-primary) 5%,transparent)}html.dark .legend-item[data-v-776bcef4]:hover{background:color-mix(in srgb,var(--primary-color) 12%,var(--glass-bg))}@media (prefers-reduced-motion:reduce){.legend-item[data-v-776bcef4]{transition:background-color .2s ease,border-color .2s ease,box-shadow .2s ease}.legend-item[data-v-776bcef4]:hover{transform:none}}.legend-color[data-v-776bcef4]{width:12px;height:12px;border-radius:3px;flex-shrink:0}.legend-label[data-v-776bcef4]{flex:1;font-size:13px;color:var(--admin-container-color);font-weight:500}.legend-value[data-v-776bcef4]{font-size:13px;font-weight:600;color:var(--admin-container-color);min-width:50px;text-align:right}.legend-percent[data-v-776bcef4]{font-size:12px;color:#888;min-width:40px;text-align:right}.actions-section[data-v-776bcef4]{margin-bottom:30px}.action-card[data-v-776bcef4]{background:var(--glass-bg);border-radius:16px;padding:24px;border:1px solid var(--glass-border)}.action-card[data-v-776bcef4],.action-card[data-v-776bcef4]:hover{box-shadow:var(--glass-shadow)}.action-card[data-v-776bcef4],.chart-card[data-v-776bcef4],.overview-card[data-v-776bcef4]{backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}.action-header[data-v-776bcef4]{display:flex;align-items:center;gap:8px;margin-bottom:3px;font-size:16px;font-weight:600;color:var(--admin-container-color)}.action-content[data-v-776bcef4]{display:flex;justify-content:center;padding:20px 0}.action-buttons[data-v-776bcef4]{display:flex;gap:20px;flex-wrap:wrap;justify-content:center;align-items:center;width:100%}.action-btn[data-v-776bcef4]{border-radius:10px;padding:12px 24px;margin-left:0;font-weight:500;font-size:14px;transition:background-color .2s ease,border-color .2s ease,color .2s ease;min-width:150px;width:150px;height:48px;box-shadow:none}@media (max-width:768px){.action-btn[data-v-776bcef4]{flex:1;width:auto;min-width:0;height:auto}}.action-btn .fa-icon[data-v-776bcef4]{margin-right:8px;font-size:14px}.rebuild-btn[data-v-776bcef4]{background:var(--el-fill-color-blank);border-color:var(--el-border-color-lighter);color:#2563eb}.rebuild-btn[data-v-776bcef4]:hover{background:#eff6ff;border-color:#93c5fd;color:#1d4ed8}.backup-btn[data-v-776bcef4]{background:var(--el-fill-color-blank);border-color:var(--el-border-color-lighter);color:#16a34a}.backup-btn[data-v-776bcef4]:hover{background:#f0fdf4;border-color:#86efac;color:#15803d}.restore-btn[data-v-776bcef4]{background:var(--el-fill-color-blank);border-color:var(--el-border-color-lighter);color:#d97706}.restore-btn[data-v-776bcef4]:hover{background:#fffbeb;border-color:#fcd34d;color:#b45309}.dark .rebuild-btn[data-v-776bcef4]{background:var(--el-fill-color-light);border-color:var(--el-border-color-lighter);color:#60a5fa}.dark .rebuild-btn[data-v-776bcef4]:hover{background:rgba(59,130,246,.12);border-color:rgba(96,165,250,.4);color:#93c5fd}.dark .backup-btn[data-v-776bcef4]{background:var(--el-fill-color-light);border-color:var(--el-border-color-lighter);color:#4ade80}.dark .backup-btn[data-v-776bcef4]:hover{background:rgba(34,197,94,.12);border-color:rgba(74,222,128,.4);color:#86efac}.dark .restore-btn[data-v-776bcef4]{background:var(--el-fill-color-light);border-color:var(--el-border-color-lighter);color:#fbbf24}.dark .restore-btn[data-v-776bcef4]:hover{background:rgba(251,191,36,.12);border-color:rgba(251,191,36,.4);color:#fcd34d}.restore-section[data-v-776bcef4]{display:inline-block}@media (max-width:768px){.action-buttons>.el-tooltip[data-v-776bcef4],.action-buttons>.restore-section[data-v-776bcef4],.restore-section[data-v-776bcef4]{flex:1;width:100%}.action-btn[data-v-776bcef4]{width:100%!important;padding:10px 20px!important;box-sizing:border-box}}.file-info-section[data-v-776bcef4]{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px;align-items:stretch}.file-info-card[data-v-776bcef4]{position:relative;background:var(--glass-bg);border-radius:16px;box-shadow:var(--glass-shadow);border:1px solid var(--glass-border);transition:all .3s ease;height:300px;overflow:hidden;cursor:pointer}.card-bg-media[data-v-776bcef4]{position:absolute;top:0;left:0;transition:transform .5s ease;display:block}.card-bg-media[data-v-776bcef4],.card-bg-media[data-v-776bcef4] .el-image__inner{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.card-bg-media[data-v-776bcef4] .el-image__wrapper{width:100%;height:100%}.card-bg-fallback[data-v-776bcef4]{position:absolute;top:0;left:0;width:100%;height:100%;background:var(--admin-dashborad-stats-bg-color);display:flex;align-items:center;justify-content:center}.fallback-icon[data-v-776bcef4]{font-size:80px;color:var(--el-text-color-placeholder);opacity:.3}.file-card-header[data-v-776bcef4]{position:absolute;top:0;left:0;right:0;display:flex;gap:8px;align-items:center;padding:12px 16px;font-size:14px;font-weight:600;color:#fff;background:linear-gradient(180deg,rgba(0,0,0,.5) 0,rgba(0,0,0,.2) 55%,transparent);z-index:2}.file-card-header .fa-icon[data-v-776bcef4]{color:#60a5fa}.file-card-header.warning .fa-icon[data-v-776bcef4]{color:#f59e0b}.info-card-footer[data-v-776bcef4]{position:absolute;bottom:0;left:0;right:0;padding:12px 16px;background:linear-gradient(0deg,rgba(0,0,0,.55) 0,rgba(0,0,0,.25) 50%,transparent);text-align:center;z-index:2}.info-card-footer .file-name[data-v-776bcef4]{font-size:14px;color:#fff;margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600;text-shadow:0 1px 2px rgba(0,0,0,.5)}.info-card-footer .file-meta[data-v-776bcef4]{font-size:12px;color:#fafafa;text-shadow:0 1px 2px rgba(0,0,0,.5)}@media (min-width:1200px){.file-info-card[data-v-776bcef4]{height:400px}}@media (min-width:1600px){.file-info-card[data-v-776bcef4]{height:450px}}.file-info-card[data-v-776bcef4]:hover{box-shadow:var(--glass-shadow)}.file-info-card:hover .card-bg-media[data-v-776bcef4]{transform:scale(1)}@media (max-width:768px){.status-panel[data-v-776bcef4]{padding:15px}.status-hero[data-v-776bcef4]{grid-template-columns:1fr;gap:18px;padding:24px 8px 30px}.status-hero-time-card[data-v-776bcef4]{width:100%;min-width:0;padding:18px 0 0;border-top:1px solid color-mix(in srgb,var(--el-text-color-primary) 10%,transparent);border-left:0}.status-hero-time[data-v-776bcef4]{font-size:32px}.charts-section[data-v-776bcef4],.overview-cards[data-v-776bcef4]{grid-template-columns:1fr;gap:15px}.trend-chart-header[data-v-776bcef4]{align-items:stretch}.chart-title[data-v-776bcef4]{width:100%}.trend-controls[data-v-776bcef4]{width:100%;justify-content:stretch}.trend-date-dialog[data-v-776bcef4] .el-dialog__body{padding:12px 14px 18px}.trend-group-switch[data-v-776bcef4]{width:100%}.trend-group-switch[data-v-776bcef4] .el-radio-button{flex:1}.trend-group-switch[data-v-776bcef4] .el-radio-button__inner{width:100%;padding:0 10px}.line-chart-wrapper[data-v-776bcef4],.trend-empty-state[data-v-776bcef4]{height:280px}.file-info-section[data-v-776bcef4]{grid-template-columns:1fr;gap:15px}.card-icon[data-v-776bcef4]{width:50px;height:50px;font-size:20px;margin-right:15px}.card-value[data-v-776bcef4]{font-size:24px}.action-buttons[data-v-776bcef4]{flex-direction:column;gap:12px}.action-btn[data-v-776bcef4]{width:100%;min-width:unset}}@media (max-width:480px){.status-hero[data-v-776bcef4]{padding:21px 4px 28px}.status-hero-title[data-v-776bcef4]{font-size:27px}}.stats-fill[data-v-776bcef4]{animation:fillAnimation-776bcef4 1s ease-out}@keyframes fillAnimation-776bcef4{0%{width:0}}.progress-container[data-v-776bcef4]{width:100%;padding:20px;text-align:center}.progress-header[data-v-776bcef4]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.progress-phase[data-v-776bcef4]{font-size:16px;font-weight:600;color:var(--admin-container-color)}.progress-percentage[data-v-776bcef4]{font-size:18px;font-weight:700;color:var(--primary-color-accent)}.progress-bar[data-v-776bcef4]{margin-bottom:16px}.progress-bar[data-v-776bcef4] .el-progress-bar__outer{background-color:rgba(139,92,246,.1);border-radius:6px}.progress-bar[data-v-776bcef4] .el-progress-bar__inner{background:var(--primary-color);border-radius:6px;transition:width .3s ease}.progress-details[data-v-776bcef4]{display:flex;justify-content:center;gap:24px;margin-bottom:12px;flex-wrap:wrap}.progress-count[data-v-776bcef4],.progress-time[data-v-776bcef4]{display:flex;align-items:center;gap:6px;font-size:14px;color:#666}.progress-count .fa-icon[data-v-776bcef4],.progress-time .fa-icon[data-v-776bcef4]{color:var(--primary-color-accent);font-size:12px}.progress-message[data-v-776bcef4]{font-size:13px;color:#888;margin-bottom:16px;min-height:20px}.cancel-btn[data-v-776bcef4]{margin-top:12px;border-radius:10px;padding:10px 24px;font-weight:600;transition:all .3s cubic-bezier(.4,0,.2,1);background:rgba(239,68,68,.1);border:1px solid rgba(239,68,68,.3);color:#ef4444}.cancel-btn[data-v-776bcef4]:hover{background:rgba(239,68,68,.2);border-color:rgba(239,68,68,.5);box-shadow:none}.cancel-btn .fa-icon[data-v-776bcef4]{margin-right:8px}.error-container[data-v-776bcef4]{width:100%;padding:20px;display:flex;flex-direction:column;align-items:center;gap:16px;background:rgba(239,68,68,.05);border-radius:12px;border:1px solid rgba(239,68,68,.2)}.error-icon[data-v-776bcef4]{width:48px;height:48px;border-radius:50%;background:rgba(239,68,68,.1);display:flex;align-items:center;justify-content:center;color:#ef4444;font-size:24px}.error-content[data-v-776bcef4]{text-align:center}.error-message[data-v-776bcef4]{font-size:15px;font-weight:600;color:#ef4444;margin-bottom:8px}.error-suggestion[data-v-776bcef4]{font-size:13px;color:#666}.error-actions[data-v-776bcef4]{display:flex;gap:12px}.error-actions .el-button[data-v-776bcef4]{border-radius:10px;padding:10px 24px;font-weight:600;transition:all .3s cubic-bezier(.4,0,.2,1);min-width:100px}.error-actions .el-button--primary[data-v-776bcef4]{background:var(--primary-color);border:none;color:#fff}.error-actions .el-button--primary[data-v-776bcef4]:hover{background:var(--el-color-primary-dark-2);box-shadow:none}.error-actions .el-button--default[data-v-776bcef4]{background:hsla(0,0%,100%,.1);border:1px solid hsla(0,0%,100%,.2);color:var(--el-text-color-regular)}.error-actions .el-button--default[data-v-776bcef4]:hover{background:hsla(0,0%,100%,.15);border-color:var(--glass-border-hover);box-shadow:none}.error-actions .fa-icon[data-v-776bcef4]{margin-right:8px}html.dark .progress-count[data-v-776bcef4],html.dark .progress-time[data-v-776bcef4]{color:#aaa}html.dark .progress-message[data-v-776bcef4]{color:#999}html.dark .error-container[data-v-776bcef4]{background:rgba(239,68,68,.1);border-color:rgba(239,68,68,.3)}html.dark .error-suggestion[data-v-776bcef4]{color:#aaa}@media (max-width:768px){.error-container[data-v-776bcef4],.progress-container[data-v-776bcef4]{padding:16px}.progress-header[data-v-776bcef4]{flex-direction:column;gap:8px;text-align:center}.progress-details[data-v-776bcef4]{flex-direction:column;gap:8px}.error-actions[data-v-776bcef4]{flex-direction:column;width:100%}.error-actions .el-button[data-v-776bcef4]{width:100%;margin:0}}.el-descriptions{--el-descriptions-table-border:1px solid var(--el-border-color-lighter);--el-descriptions-item-bordered-label-background:var(--el-fill-color-light);box-sizing:border-box;color:var(--el-text-color-primary);font-size:var(--el-font-size-base)}.el-descriptions__header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.el-descriptions__title{color:var(--el-text-color-primary);font-size:16px;font-weight:700}.el-descriptions__body{background-color:var(--el-fill-color-blank)}.el-descriptions__body .el-descriptions__table{border-collapse:collapse;width:100%}.el-descriptions__body .el-descriptions__table .el-descriptions__cell{box-sizing:border-box;font-size:14px;line-height:23px;text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-left{text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-center{text-align:center}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-right{text-align:right}.el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{border:var(--el-descriptions-table-border);padding:8px 11px}.el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:12px}.el-descriptions--large{font-size:14px}.el-descriptions--large .el-descriptions__header{margin-bottom:20px}.el-descriptions--large .el-descriptions__header .el-descriptions__title{font-size:16px}.el-descriptions--large .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:14px}.el-descriptions--large .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:12px 15px}.el-descriptions--large .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:16px}.el-descriptions--small{font-size:12px}.el-descriptions--small .el-descriptions__header{margin-bottom:12px}.el-descriptions--small .el-descriptions__header .el-descriptions__title{font-size:14px}.el-descriptions--small .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:12px}.el-descriptions--small .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:4px 7px}.el-descriptions--small .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:8px}.el-descriptions__label.el-descriptions__cell.is-bordered-label{background:var(--el-descriptions-item-bordered-label-background);color:var(--el-text-color-regular);font-weight:700}.el-descriptions__label:not(.is-bordered-label){color:var(--el-text-color-primary);margin-right:16px}.el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:6px}.el-descriptions__content.el-descriptions__cell.is-bordered-content{color:var(--el-text-color-primary)}.el-descriptions__content:not(.is-bordered-label){color:var(--el-text-color-regular)}.el-descriptions--large .el-descriptions__label:not(.is-bordered-label){margin-right:16px}.el-descriptions--large .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:8px}.el-descriptions--small .el-descriptions__label:not(.is-bordered-label){margin-right:12px}.el-descriptions--small .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:4px}.el-form{--el-form-label-font-size:var(--el-font-size-base);--el-form-inline-content-width:220px}.el-form--inline .el-form-item{display:inline-flex;margin-right:32px;vertical-align:middle}.el-form--inline.el-form--label-top{display:flex;flex-wrap:wrap}.el-form--inline.el-form--label-top .el-form-item{display:block}.el-form-item{display:flex;--font-size:14px;margin-bottom:18px}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-input__validateIcon{display:none}.el-form-item--large{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:22px}.el-form-item--large .el-form-item__label{height:40px;line-height:40px}.el-form-item--large .el-form-item__content{line-height:40px}.el-form-item--large .el-form-item__error{padding-top:4px}.el-form-item--default{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--default .el-form-item__label{height:32px;line-height:32px}.el-form-item--default .el-form-item__content{line-height:32px}.el-form-item--default .el-form-item__error{padding-top:2px}.el-form-item--small{--font-size:12px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--small .el-form-item__label{height:24px;line-height:24px}.el-form-item--small .el-form-item__content{line-height:24px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--label-left .el-form-item__label{justify-content:flex-start;text-align:left}.el-form-item--label-right .el-form-item__label{justify-content:flex-end;text-align:right}.el-form-item--label-top{display:block}.el-form-item--label-top .el-form-item__label{display:block;height:auto;line-height:22px;margin-bottom:8px;padding-right:0;text-align:left;width:fit-content}.el-form-item__label-wrap{display:flex}.el-form-item__label{align-items:flex-start;box-sizing:border-box;color:var(--el-text-color-regular);display:inline-flex;flex:0 0 auto;font-size:var(--el-form-label-font-size);height:32px;line-height:32px;padding:0 12px 0 0}.el-form-item__content{align-items:center;display:flex;flex:1;flex-wrap:wrap;font-size:var(--font-size);line-height:32px;min-width:0;position:relative}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:var(--el-color-danger);font-size:12px;left:0;line-height:1;padding-top:2px;position:absolute;top:100%}.el-form-item__error--inline{display:inline-block;left:auto;margin-left:10px;position:relative;top:auto}.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label:before{color:var(--el-color-danger);content:"*";margin-right:4px}.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label-wrap>.el-form-item__label:after,.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label:after{color:var(--el-color-danger);content:"*";margin-left:4px}.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-select__wrapper,.el-form-item.is-error .el-form-item__content .el-select__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-textarea__inner,.el-form-item.is-error .el-form-item__content .el-textarea__inner.is-focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__wrapper{box-shadow:inset 0 0 0 1px transparent}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__validateIcon,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__validateIcon{display:none}.el-form-item.is-error .el-form-item__content .el-input__validateIcon{color:var(--el-color-danger)}.el-form-item--feedback .el-input__validateIcon,.el-input-number{display:inline-flex}.el-input-number{line-height:30px;position:relative;vertical-align:middle;width:150px}.el-input-number .el-input__wrapper{padding-left:42px;padding-right:42px}.el-input-number .el-input__inner{-webkit-appearance:none;-moz-appearance:textfield;line-height:1;text-align:center}.el-input-number .el-input__inner::-webkit-inner-spin-button,.el-input-number .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-input-number.is-left .el-input__inner{text-align:left}.el-input-number.is-right .el-input__inner{text-align:right}.el-input-number.is-center .el-input__inner{text-align:center}.el-input-number__decrease,.el-input-number__increase{align-items:center;background:var(--el-fill-color-light);bottom:1px;color:var(--el-text-color-regular);cursor:pointer;display:flex;font-size:13px;height:auto;justify-content:center;position:absolute;top:1px;-webkit-user-select:none;user-select:none;width:32px;z-index:1}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:var(--el-color-primary)}.el-input-number__decrease:hover~.el-input:not(.is-disabled) .el-input__wrapper,.el-input-number__increase:hover~.el-input:not(.is-disabled) .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-input-number__increase{border-left:var(--el-border);border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0;right:1px}.el-input-number__decrease{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);border-right:var(--el-border);left:1px}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:var(--el-disabled-border-color);color:var(--el-disabled-border-color)}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:var(--el-disabled-border-color);cursor:not-allowed}.el-input-number--large{line-height:38px;width:180px}.el-input-number--large .el-input-number__decrease,.el-input-number--large .el-input-number__increase{font-size:14px;width:40px}.el-input-number--large.is-controls-right .el-input--large .el-input__wrapper{padding-right:47px}.el-input-number--large .el-input--large .el-input__wrapper{padding-left:47px;padding-right:47px}.el-input-number--small{line-height:22px;width:120px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{font-size:12px;width:24px}.el-input-number--small.is-controls-right .el-input--small .el-input__wrapper{padding-right:31px}.el-input-number--small .el-input--small .el-input__wrapper{padding-left:31px;padding-right:31px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{transform:scale(.9)}.el-input-number.is-without-controls .el-input__wrapper{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__wrapper{padding-left:15px;padding-right:42px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{--el-input-number-controls-height:15px;height:var(--el-input-number-controls-height);line-height:var(--el-input-number-controls-height)}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-bottom:var(--el-border);border-radius:0 var(--el-border-radius-base) 0 0;bottom:auto;left:auto}.el-input-number.is-controls-right .el-input-number__decrease{border-left:var(--el-border);border-radius:0 0 var(--el-border-radius-base) 0;border-right:none;left:auto;right:1px;top:auto}.el-input-number.is-controls-right[class*=large] [class*=decrease],.el-input-number.is-controls-right[class*=large] [class*=increase]{--el-input-number-controls-height:19px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{--el-input-number-controls-height:11px}.channel-icon-wrapper[data-v-ce6ff2ce]{display:inline-flex;align-items:center;justify-content:center;line-height:1}.channel-icon-wrapper[data-v-ce6ff2ce] svg,.channel-svg-icon[data-v-ce6ff2ce]{width:1em;height:1em;fill:currentColor}.channel-icon-wrapper.channel-brand-telegram[data-v-ce6ff2ce]{color:#229ed9}.channel-icon-wrapper.channel-brand-cfr2[data-v-ce6ff2ce]{color:#f38020}.channel-icon-wrapper.channel-brand-s3[data-v-ce6ff2ce]{color:#f90}.channel-icon-wrapper.channel-brand-discord[data-v-ce6ff2ce]{color:#5865f2}.channel-icon-wrapper.channel-brand-huggingface[data-v-ce6ff2ce]{color:#ff9d00}.channel-icon-wrapper.channel-brand-webdav[data-v-ce6ff2ce]{color:#14b8a6}.custom-select[data-v-b9420432]{position:relative}.custom-select-trigger[data-v-b9420432]{display:flex;align-items:center;justify-content:space-between;height:32px;padding:0 12px;background:color-mix(in srgb,var(--el-fill-color-blank) 72%,transparent);border:1px solid var(--glass-border);border-radius:8px;cursor:pointer;transition:background-color .2s ease,border-color .2s ease;box-sizing:border-box}html.dark .custom-select-trigger[data-v-b9420432]{background:color-mix(in srgb,var(--el-bg-color) 75%,transparent)}.custom-select-trigger[data-v-b9420432]:hover{background:color-mix(in srgb,var(--el-fill-color-blank) 85%,transparent);border-color:var(--glass-border-hover)}html.dark .custom-select-trigger[data-v-b9420432]:hover{background:color-mix(in srgb,var(--el-bg-color) 88%,transparent);border-color:var(--glass-border-hover)}.custom-select.is-open .custom-select-trigger[data-v-b9420432]{border-color:var(--el-color-primary)}.custom-select-value[data-v-b9420432]{font-size:14px;color:var(--el-text-color-regular);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.custom-select-arrow[data-v-b9420432],.custom-select-value.is-placeholder[data-v-b9420432]{color:var(--el-text-color-placeholder)}.custom-select-arrow[data-v-b9420432]{font-size:12px;transition:transform .2s ease;flex-shrink:0;margin-left:8px}.custom-select.is-open .custom-select-arrow[data-v-b9420432]{transform:rotate(180deg)}.custom-select-dropdown[data-v-b9420432]{position:absolute;top:calc(100% + 4px);left:0;width:100%;box-sizing:border-box;padding:4px;background:var(--popper-bg-color);border:1px solid var(--glass-border);border-radius:8px;box-shadow:var(--popper-shadow);z-index:2000;max-height:280px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.custom-select-option[data-v-b9420432]{display:flex;align-items:center;gap:8px;min-height:34px;padding:0 12px;border-radius:6px;background:transparent;font-size:14px;color:var(--el-text-color-regular);cursor:pointer;transition:background-color .2s ease,color .2s ease}.custom-select-option.is-selected[data-v-b9420432]{color:var(--primary-color-accent);font-weight:600}.custom-select-option[data-v-b9420432]:hover{background-color:color-mix(in srgb,var(--el-text-color-primary) 10%,transparent);color:var(--el-text-color-primary)}html.dark .custom-select-option[data-v-b9420432]:hover{background-color:color-mix(in srgb,var(--el-text-color-primary) 8%,transparent);color:var(--el-text-color-primary)}.option-icon[data-v-b9420432]{width:16px;height:16px;flex-shrink:0}.dropdown-fade-enter-active[data-v-b9420432],.dropdown-fade-leave-active[data-v-b9420432]{transition:opacity .2s ease,transform .2s ease}.dropdown-fade-enter-from[data-v-b9420432],.dropdown-fade-leave-to[data-v-b9420432]{opacity:0;transform:translateY(-8px)}.upload-settings[data-v-0082a519]{padding:20px;min-height:500px;overflow-x:hidden}.page-header[data-v-0082a519]{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;flex-wrap:wrap;gap:12px}.first-title[data-v-0082a519]{display:flex;align-items:center;gap:8px;margin:0;font-size:20px;font-weight:600}.help-icon[data-v-0082a519]{cursor:pointer;color:var(--el-text-color-secondary);font-size:14px}.inline-warning-icon[data-v-0082a519]{color:var(--el-text-color-secondary);cursor:pointer;font-size:13px;margin-left:6px;transition:color .2s}.inline-warning-icon[data-v-0082a519]:hover{color:var(--el-color-primary)}.inline-help-icon[data-v-0082a519]{color:var(--el-text-color-secondary);cursor:pointer;font-size:13px;margin-left:6px;transition:color .2s}.inline-help-icon[data-v-0082a519]:hover{color:var(--el-color-primary)}.add-btn[data-v-0082a519]{border-radius:8px;transition:background-color .2s ease,border-color .2s ease}.header-actions[data-v-0082a519]{display:flex;gap:12px}.header-actions[data-v-0082a519] .el-button{border-radius:8px}.channel-group[data-v-0082a519]{margin-bottom:32px;background:var(--glass-bg);border-radius:16px;border:1px solid var(--glass-border);overflow:hidden;box-shadow:var(--glass-shadow)}.group-header[data-v-0082a519]{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;background:var(--glass-header-bg);border-bottom:1px solid var(--glass-header-border)}.group-title[data-v-0082a519]{display:flex;align-items:center;gap:10px;font-size:16px;font-weight:600;color:var(--el-text-color-primary)}.group-icon[data-v-0082a519]{font-size:20px;color:var(--el-color-primary)}.channel-count[data-v-0082a519]{font-size:12px}.load-balance-switch[data-v-0082a519]{display:flex;align-items:center;gap:8px}.switch-label[data-v-0082a519]{font-size:13px;color:var(--el-text-color-secondary)}.channel-cards[data-v-0082a519]{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;padding:20px}.channel-card[data-v-0082a519]{background:var(--glass-bg);border-radius:10px;border:1px solid var(--glass-border);overflow:hidden;position:relative;display:flex;flex-direction:column;box-shadow:var(--glass-shadow)}.channel-card[data-v-0082a519],.channel-group[data-v-0082a519]{backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}.card-glow[data-v-0082a519]{position:absolute;width:150px;height:150px;border-radius:50%;pointer-events:none;opacity:0;transform:translate(-50%,-50%);transition:opacity .3s ease;z-index:0;background:radial-gradient(circle,rgba(56,189,248,.15) 0,transparent 70%)}.channel-card.telegram .card-glow[data-v-0082a519]{background:radial-gradient(circle,rgba(84,169,235,.2) 0,transparent 70%)}.channel-card.cfr2 .card-glow[data-v-0082a519]{background:radial-gradient(circle,rgba(246,130,31,.2) 0,transparent 70%)}.channel-card.s3 .card-glow[data-v-0082a519]{background:radial-gradient(circle,rgba(86,154,49,.2) 0,transparent 70%)}.channel-card.discord .card-glow[data-v-0082a519]{background:radial-gradient(circle,rgba(88,101,242,.2) 0,transparent 70%)}.channel-card.huggingface .card-glow[data-v-0082a519]{background:radial-gradient(circle,rgba(255,210,30,.2) 0,transparent 70%)}.channel-card.webdav .card-glow[data-v-0082a519]{background:radial-gradient(circle,rgba(20,184,166,.2) 0,transparent 70%)}.channel-card[data-v-0082a519]:hover{border-color:var(--glass-border);box-shadow:var(--glass-shadow)}.channel-card.disabled[data-v-0082a519]{opacity:.6;background:var(--el-fill-color-lighter)}.card-header[data-v-0082a519]{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;background:var(--glass-header-bg);border-bottom:1px solid var(--glass-header-border)}.card-title[data-v-0082a519]{display:flex;align-items:center;gap:8px}.channel-name[data-v-0082a519]{font-weight:600;font-size:14px;color:var(--el-text-color-primary)}.card-body[data-v-0082a519]{padding:14px 16px;min-height:60px;text-align:left}.card-info[data-v-0082a519]{display:flex;flex-direction:column;gap:8px;align-items:flex-start;width:100%;overflow:hidden}.info-item[data-v-0082a519]{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--el-text-color-secondary);min-width:0;width:100%;max-width:100%}.info-text[data-v-0082a519]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;text-align:left}.info-icon[data-v-0082a519]{width:14px;flex-shrink:0;color:var(--el-text-color-placeholder)}.quota-mini[data-v-0082a519]{margin-top:12px;padding-top:12px;border-top:1px dashed var(--el-border-color-lighter)}.quota-mini[data-v-0082a519] .el-progress{margin-bottom:4px}.quota-text[data-v-0082a519]{font-size:11px;color:var(--el-text-color-secondary)}.card-actions[data-v-0082a519]{display:flex;justify-content:flex-end;gap:4px;padding:10px 16px;border-top:1px solid var(--glass-header-border);background:var(--glass-header-bg);margin-top:auto}.empty-tip[data-v-0082a519]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;color:var(--el-text-color-placeholder);gap:12px}.empty-icon[data-v-0082a519]{font-size:32px}.channel-warning[data-v-0082a519]{margin:0 20px 16px;padding:10px 14px;font-size:13px;color:var(--el-color-warning);background:var(--el-color-warning-light-9);border-radius:6px;border-left:3px solid var(--el-color-warning)}.channel-type-option[data-v-0082a519]{display:inline-flex;align-items:center;gap:8px;line-height:1}.select-option-icon[data-v-0082a519]{width:16px;height:16px;font-size:16px;text-align:center}.form-warning[data-v-0082a519]{padding:10px 14px;font-size:13px;color:var(--el-color-warning);background:var(--el-color-warning-light-9);border-radius:6px;border-left:3px solid var(--el-color-warning);margin-top:8px}.quota-status[data-v-0082a519]{width:100%}.quota-status[data-v-0082a519] .el-progress{margin-bottom:8px}.quota-info[data-v-0082a519]{font-size:13px;color:var(--el-text-color-secondary);padding:8px 12px;background:var(--el-fill-color);border:1px solid var(--glass-border);border-radius:6px}.quota-info.quota-warning[data-v-0082a519]{color:var(--el-color-danger);background:var(--el-color-danger-light-9);font-weight:500}.quota-label[data-v-0082a519]{display:inline-flex;align-items:center;gap:4px}.refresh-btn[data-v-0082a519]{padding:0!important;margin:0!important;height:auto!important;min-height:auto!important;vertical-align:middle}.refresh-btn .fa-spin[data-v-0082a519]{animation:fa-spin-0082a519 1s linear infinite}@keyframes fa-spin-0082a519{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@media (max-width:768px){.upload-settings[data-v-0082a519]{padding:12px}.page-header[data-v-0082a519]{flex-direction:column;align-items:flex-start}.channel-cards[data-v-0082a519]{grid-template-columns:1fr;padding:12px}.group-header[data-v-0082a519]{flex-direction:column;gap:12px;align-items:flex-start}}[data-v-0082a519] .channel-dialog{width:600px!important;max-width:90vw!important}@media (max-width:768px){[data-v-0082a519] .channel-dialog{width:90vw!important}}.el-checkbox-group{font-size:0;line-height:0}.floating-save-btn[data-v-9ebe7158]{position:fixed;right:var(--floating-btn-right,24px);bottom:var(--floating-btn-bottom,24px);display:flex;align-items:center;gap:6px;padding:10px 18px;background:var(--primary-color);color:var(--floating-btn-color);border-radius:50px;cursor:pointer;box-shadow:var(--floating-btn-shadow);transition:all .3s cubic-bezier(.4,0,.2,1);z-index:100;font-weight:500;font-size:13px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.floating-save-btn[data-v-9ebe7158]:hover{box-shadow:var(--floating-btn-shadow-hover)}.unsaved-dot[data-v-9ebe7158]{position:absolute;top:-3px;left:-3px;width:10px;height:10px;box-sizing:content-box;border:2px solid var(--el-bg-color);border-radius:50%;background:var(--el-color-danger);pointer-events:none}.floating-save-btn[data-v-9ebe7158]:active{transform:translateY(-1px);box-shadow:var(--floating-btn-shadow)}.floating-save-btn.is-loading[data-v-9ebe7158]{cursor:not-allowed;opacity:.8}.floating-save-btn.is-loading[data-v-9ebe7158]:hover{transform:none}.floating-save-btn svg[data-v-9ebe7158]{font-size:14px}.fade-up-enter-active[data-v-9ebe7158]{transition:all .3s ease-out}.fade-up-leave-active[data-v-9ebe7158]{transition:all .2s ease-in}.fade-up-enter-from[data-v-9ebe7158]{opacity:0;transform:translateY(20px)}.fade-up-leave-to[data-v-9ebe7158]{opacity:0;transform:translateY(10px)}@media (max-width:768px){.floating-save-btn[data-v-9ebe7158]{right:16px;bottom:16px;padding:10px 16px;font-size:12px}.floating-save-btn svg[data-v-9ebe7158]{font-size:12px}}@media (max-width:480px){.floating-save-btn[data-v-9ebe7158]{right:12px;bottom:12px;padding:12px;border-radius:50%}.save-text[data-v-9ebe7158]{display:none}.floating-save-btn svg[data-v-9ebe7158]{font-size:16px}}.security-settings[data-v-2c2362f7]{padding:20px;min-height:500px}.first-settings[data-v-2c2362f7]{margin-bottom:40px}.first-title[data-v-2c2362f7]{display:flex;align-items:center;gap:8px;margin-bottom:20px;padding-bottom:12px;border-bottom:2px solid var(--el-color-primary-light-7)}.second-title[data-v-2c2362f7]{display:flex;align-items:center;gap:8px;text-align:start;margin-left:0;margin-bottom:16px;padding-bottom:8px;border-bottom:1px solid var(--el-border-color-lighter)}.first-settings[data-v-2c2362f7] .el-form{padding:20px 24px;background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border-radius:16px;border:1px solid var(--glass-border);margin-bottom:20px;box-shadow:var(--glass-shadow)}.first-settings[data-v-2c2362f7] .el-form-item{margin-bottom:20px;display:flex;flex-direction:column;align-items:flex-start}.first-settings[data-v-2c2362f7] .el-form-item:last-child{margin-bottom:0}.first-settings[data-v-2c2362f7] .el-form-item__label{text-align:left;padding-bottom:8px;font-weight:500;color:var(--el-text-color-primary);width:auto!important;display:flex;align-items:center;gap:5px}.first-settings[data-v-2c2362f7] .el-form-item__content{width:100%;max-width:400px;margin-left:0!important}.first-settings[data-v-2c2362f7] .el-input,.first-settings[data-v-2c2362f7] .el-select{width:100%}.first-settings[data-v-2c2362f7] .el-switch{--el-switch-on-color:var(--el-color-primary)}.form-item-hint[data-v-2c2362f7]{display:inline-block;margin-left:8px;font-size:14px;color:var(--el-text-color-regular);line-height:32px;vertical-align:middle}.query-param-list[data-v-2c2362f7]{display:flex;flex-direction:column;gap:10px;width:100%}.query-param-row[data-v-2c2362f7]{display:grid;grid-template-columns:minmax(120px,1fr) minmax(160px,1.4fr) auto;gap:8px;align-items:center;width:100%}.response-field-row[data-v-2c2362f7]{display:grid;grid-template-columns:minmax(180px,1fr) auto auto auto;gap:4px;align-items:center;width:100%}.response-field-row[data-v-2c2362f7] .el-button+.el-button{margin-left:0}.token-title[data-v-2c2362f7]{display:flex;align-items:center;justify-content:space-between}.token-actions[data-v-2c2362f7]{margin-left:5px}.token-table-container[data-v-2c2362f7]{display:flex;justify-content:center;margin-top:20px;width:100%;overflow:hidden}.token-table[data-v-2c2362f7]{width:100%;border-radius:12px!important;overflow:hidden;box-shadow:var(--glass-shadow);background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border)}.token-table[data-v-2c2362f7] .el-table__header-wrapper{border-radius:12px 12px 0 0}.token-table[data-v-2c2362f7] .el-table__body-wrapper{border-radius:0 0 12px 12px;background:transparent}.token-table[data-v-2c2362f7] .el-table{border-radius:12px;background:transparent}.token-table[data-v-2c2362f7] .el-table__header{background-color:color-mix(in srgb,var(--el-text-color-primary) 4%,transparent)}.token-table[data-v-2c2362f7] .el-table th{background-color:color-mix(in srgb,var(--el-text-color-primary) 4%,transparent)!important;border-bottom:1px solid var(--glass-border);text-align:center}.token-table[data-v-2c2362f7] .el-table td{background-color:transparent!important;border-bottom:1px solid var(--glass-border)}html.dark .token-table[data-v-2c2362f7] .el-table th{background-color:color-mix(in srgb,var(--el-text-color-primary) 5%,transparent)!important}html.dark .token-table[data-v-2c2362f7] .el-table td{border-bottom:1px solid var(--glass-border)}.token-table[data-v-2c2362f7] .el-table__row:hover td{background-color:color-mix(in srgb,var(--el-text-color-primary) 3%,transparent)!important}html.dark .token-table[data-v-2c2362f7] .el-table__row:hover td{background-color:color-mix(in srgb,var(--el-text-color-primary) 5%,transparent)!important}.token-table[data-v-2c2362f7] .el-table__row:last-child td{border-bottom:none}.table-cell-content[data-v-2c2362f7]{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:4px;padding:8px 4px;min-height:40px;text-align:center}.action-buttons[data-v-2c2362f7]{gap:8px}.action-button[data-v-2c2362f7]{margin-left:0}.permission-tag[data-v-2c2362f7]{margin:2px!important}.token-display[data-v-2c2362f7]{font-family:Courier New,monospace;background-color:var(--text-bg-color);padding:4px 8px;border-radius:6px;font-size:12px;word-break:break-all;text-align:center;max-width:100%;overflow:hidden;text-overflow:ellipsis}@media (max-width:768px){.security-settings[data-v-2c2362f7]{padding:15px;padding-bottom:80px}.first-settings[data-v-2c2362f7] .el-form{padding:12px 15px}.first-settings[data-v-2c2362f7] .el-form-item__content{max-width:100%}.query-param-row[data-v-2c2362f7]{grid-template-columns:1fr}.response-field-row[data-v-2c2362f7]{grid-template-columns:1fr auto auto auto}.token-table-container[data-v-2c2362f7]{padding:0 10px}.table-cell-content[data-v-2c2362f7]{padding:6px 2px;min-height:36px}.token-display[data-v-2c2362f7]{font-size:11px;padding:3px 6px}}@media (max-width:480px){.token-table-container[data-v-2c2362f7]{padding:0 5px}.table-cell-content[data-v-2c2362f7]{padding:4px 2px;min-height:32px;font-size:12px}.action-buttons .el-button[data-v-2c2362f7]{padding:4px 8px;font-size:12px}.permission-tag[data-v-2c2362f7]{font-size:11px;padding:0 4px;height:20px;line-height:20px}}.token-result[data-v-2c2362f7]{padding:10px 0}.token-result .el-form-item[data-v-2c2362f7]{margin-bottom:20px}.dialog-footer[data-v-2c2362f7]{display:flex;justify-content:flex-end;gap:10px}.fade-slide-enter-active[data-v-2c2362f7],.fade-slide-leave-active[data-v-2c2362f7]{transition:all .3s ease-in-out}.fade-slide-enter-from[data-v-2c2362f7],.fade-slide-leave-to[data-v-2c2362f7]{opacity:0;transform:translateY(-10px)}.fade-slide-enter-to[data-v-2c2362f7],.fade-slide-leave-from[data-v-2c2362f7]{opacity:1;transform:translateY(0)}[data-v-2c2362f7] .el-dialog{border-radius:12px;background-color:var(--dialog-bg-color);border:1px solid var(--glass-border);box-shadow:var(--dialog-box-shadow)}.page-settings[data-v-66434202]{padding:20px;min-height:500px}.first-settings[data-v-66434202]{margin-bottom:40px}.first-title[data-v-66434202]{display:flex;align-items:center;gap:8px;margin-bottom:20px;padding-bottom:12px;border-bottom:2px solid var(--el-color-primary-light-7)}.second-title[data-v-66434202]{display:flex;align-items:center;gap:8px;text-align:start;margin-left:0;margin-bottom:16px;padding-bottom:8px;border-bottom:1px solid var(--el-border-color-lighter)}.first-settings[data-v-66434202] .el-form{padding:20px 24px;background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border-radius:16px;border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)}.first-settings[data-v-66434202] .el-form-item{margin-bottom:20px;display:flex;flex-direction:column;align-items:flex-start}.first-settings[data-v-66434202] .el-form-item:last-child{margin-bottom:0}.first-settings[data-v-66434202] .el-form-item__label{text-align:left;padding-bottom:8px;font-weight:500;color:var(--el-text-color-primary);width:auto!important;display:flex;align-items:center;gap:5px}.first-settings[data-v-66434202] .el-form-item__content{width:100%;max-width:400px;margin-left:0!important}.first-settings[data-v-66434202] .el-form-item:has(.el-textarea) .el-form-item__content{max-width:600px}.first-settings[data-v-66434202] .el-input,.first-settings[data-v-66434202] .el-select{width:100%}.first-settings[data-v-66434202] .el-switch{--el-switch-on-color:var(--el-color-primary)}.announcement-manual-height[data-v-66434202] .el-textarea__inner{height:var(--announcement-manual-height)!important}.announcement-refresh-option[data-v-66434202]{width:100%;margin-top:10px;display:flex;justify-content:flex-start}.first-settings[data-v-66434202] .el-form-item:has(.announcement-refresh-option) .el-form-item__content{flex-direction:column;align-items:flex-start}@media (max-width:768px){.page-settings[data-v-66434202]{padding:15px;padding-bottom:80px}.first-settings[data-v-66434202] .el-form{padding:12px 15px}.first-settings[data-v-66434202] .el-form-item__content{max-width:100%}}.others-settings[data-v-b6f6d070]{padding:20px;min-height:500px}.first-settings[data-v-b6f6d070]{margin-bottom:40px}.first-title[data-v-b6f6d070]{display:flex;align-items:center;gap:8px;margin-bottom:20px;padding-bottom:12px;border-bottom:2px solid var(--el-color-primary-light-7)}.second-title[data-v-b6f6d070]{display:flex;align-items:center;gap:8px;text-align:start;margin-left:0;margin-bottom:16px;padding-bottom:8px;border-bottom:1px solid var(--el-border-color-lighter)}.first-settings[data-v-b6f6d070] .el-form{padding:20px 24px;background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border-radius:16px;border:1px solid var(--glass-border);margin-bottom:20px;box-shadow:var(--glass-shadow)}.first-settings[data-v-b6f6d070] .el-form-item{margin-bottom:20px;display:flex;flex-direction:column;align-items:flex-start}.first-settings[data-v-b6f6d070] .el-form-item:last-child{margin-bottom:0}.first-settings[data-v-b6f6d070] .el-form-item__label{text-align:left;padding-bottom:8px;font-weight:500;color:var(--el-text-color-primary);width:auto!important;display:flex;align-items:center;gap:5px}.first-settings[data-v-b6f6d070] .el-form-item__content{width:100%;max-width:400px;margin-left:0!important}.first-settings[data-v-b6f6d070] .el-input{width:100%}.first-settings[data-v-b6f6d070] .el-switch{--el-switch-on-color:var(--el-color-primary)}@media (max-width:768px){.others-settings[data-v-b6f6d070]{padding:15px;padding-bottom:80px}.first-settings[data-v-b6f6d070] .el-form{padding:12px 15px}.first-settings[data-v-b6f6d070] .el-form-item__content{max-width:100%}}.ai-settings[data-v-08cd17d0]{padding:20px;min-height:500px}.first-settings[data-v-08cd17d0]{margin-bottom:40px}.first-title[data-v-08cd17d0]{display:flex;align-items:center;gap:8px;margin-bottom:20px;padding-bottom:12px;border-bottom:2px solid var(--el-color-primary-light-7)}.help-icon[data-v-08cd17d0]{margin-left:5px;cursor:pointer}.json-mode-hint[data-v-08cd17d0]{display:block;white-space:pre-line;max-width:min(420px,calc(100vw - 32px))}.first-settings[data-v-08cd17d0] .el-form{padding:20px 24px;background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border-radius:16px;border:1px solid var(--glass-border);margin-bottom:20px;box-shadow:var(--glass-shadow)}.first-settings[data-v-08cd17d0] .el-form-item{margin-bottom:20px;display:flex;flex-direction:column;align-items:flex-start}.first-settings[data-v-08cd17d0] .el-form-item:last-child{margin-bottom:0}.first-settings[data-v-08cd17d0] .el-form-item__label{text-align:left;padding-bottom:8px;font-weight:500;color:var(--el-text-color-primary);width:auto!important;display:flex;align-items:center;gap:5px}.first-settings[data-v-08cd17d0] .el-form-item__content{width:100%;max-width:400px;margin-left:0!important}.first-settings[data-v-08cd17d0] .el-input,.first-settings[data-v-08cd17d0] .el-select{width:100%}.first-settings[data-v-08cd17d0] .el-switch{--el-switch-on-color:var(--el-color-primary)}.first-settings .prompt-form[data-v-08cd17d0] .el-form-item__content{max-width:800px}.reset-prompt[data-v-08cd17d0]{margin-top:12px}.empty-card[data-v-08cd17d0]{display:flex;flex-direction:column;align-items:center;gap:16px;padding:32px 24px;margin-bottom:20px;border-radius:16px;background:var(--glass-bg);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)}.empty-icon[data-v-08cd17d0]{display:grid;place-items:center;width:52px;height:52px;border-radius:16px;background:var(--el-color-primary-light-9);color:var(--el-color-primary);font-size:22px}.empty-title[data-v-08cd17d0]{color:var(--el-text-color-secondary);font-size:14px}.empty-card .el-button[data-v-08cd17d0]{gap:8px}.empty-card[data-v-08cd17d0] .el-button>span{display:inline-flex;align-items:center;gap:8px}.resource-group[data-v-08cd17d0]{margin-bottom:20px;border:1px solid var(--glass-border);border-radius:16px;overflow:hidden;background:var(--glass-bg);box-shadow:var(--glass-shadow);text-align:left}.group-header[data-v-08cd17d0]{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 20px;background:var(--glass-header-bg);border-bottom:1px solid var(--glass-header-border)}.group-header h4[data-v-08cd17d0]{display:flex;align-items:center;gap:10px;margin:0;font-size:15px}.group-header h4>svg[data-v-08cd17d0]{color:var(--el-color-primary)}.resource-group .empty-card[data-v-08cd17d0]{margin:0;border:0;box-shadow:none;border-radius:0;background:transparent}.resource-cards[data-v-08cd17d0]{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(280px,100%),1fr));gap:16px;padding:20px}.resource-card[data-v-08cd17d0]{display:flex;flex-direction:column;border:1px solid var(--glass-border);border-radius:10px;background:var(--glass-bg);overflow:hidden;min-width:0}.resource-card.disabled[data-v-08cd17d0]{opacity:.65}.card-header[data-v-08cd17d0]{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:14px 16px;background:var(--glass-header-bg);border-bottom:1px solid var(--glass-header-border)}.card-title[data-v-08cd17d0]{font-size:14px;font-weight:600;overflow-wrap:anywhere;min-width:0}.card-header .el-tag[data-v-08cd17d0]{flex-shrink:0}.model-capabilities[data-v-08cd17d0]{display:flex;gap:6px;flex-shrink:0}.card-body[data-v-08cd17d0]{display:grid;gap:10px;padding:16px;flex:1}.card-info[data-v-08cd17d0]{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--el-text-color-secondary);min-width:0}.card-info svg[data-v-08cd17d0]{flex-shrink:0}.card-info span[data-v-08cd17d0]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-actions[data-v-08cd17d0]{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:4px;padding:8px 12px;border-top:1px solid var(--glass-border)}.card-actions .el-button+.el-button[data-v-08cd17d0]{margin-left:0}.ai-settings[data-v-08cd17d0] .el-button>span{display:inline-flex;align-items:center;gap:6px}.editor-form[data-v-08cd17d0]{text-align:left}.editor-form[data-v-08cd17d0] .el-form-item__label{display:flex;align-items:center;gap:5px}.editor-form[data-v-08cd17d0] .el-input,.editor-form[data-v-08cd17d0] .el-select{width:100%}.editor-form[data-v-08cd17d0] .el-checkbox{display:flex;width:100%}.api-key-field[data-v-08cd17d0] .el-form-item__error{position:static;width:100%;line-height:1.5}@media (max-width:480px){.group-header[data-v-08cd17d0]{padding:14px 12px;flex-wrap:wrap}.resource-cards[data-v-08cd17d0]{padding:12px}}@media (max-width:768px){.ai-settings[data-v-08cd17d0]{padding:15px;padding-bottom:80px}.first-settings[data-v-08cd17d0] .el-form{padding:12px 15px}.first-settings[data-v-08cd17d0] .el-form-item__content{max-width:100%}}.admin-header-content[data-v-3c6c75cc]{display:flex;justify-content:space-between;align-items:center;min-height:45px;padding:10px 24px;position:fixed;top:8px;left:50%;width:calc(95% - 16px);z-index:2001;border:1px solid var(--glass-border);border-radius:16px;backdrop-filter:blur(var(--glass-backdrop-blur)) saturate(1.4);-webkit-backdrop-filter:blur(var(--glass-backdrop-blur)) saturate(1.4);transition:background-color .25s ease,border-color .25s ease,box-shadow .25s ease}.admin-header-content[data-v-3c6c75cc],.admin-header-content[data-v-3c6c75cc]:hover{background:var(--glass-bg);box-shadow:none;transform:translateX(-50%)}.header-action[data-v-3c6c75cc],.header-content .actions[data-v-3c6c75cc]{display:flex;align-items:center}.header-action[data-v-3c6c75cc]{gap:10px}.header-content .actions[data-v-3c6c75cc]{gap:15px}.header-content .actions i[data-v-3c6c75cc],.header-icon[data-v-3c6c75cc]{font-size:1.5em;cursor:pointer;transition:color .3s ease,transform .3s ease;color:var(--admin-container-color);outline:none}.header-content .actions .el-dropdown-link i[data-v-3c6c75cc]:hover,.header-content .actions i[data-v-3c6c75cc]:hover,.header-icon[data-v-3c6c75cc]:hover{color:var(--primary-color-accent);transform:scale(1.2)}.header-content .actions .el-dropdown-link i[data-v-3c6c75cc]{color:var(--admin-container-color)}.header-content .actions .disabled[data-v-3c6c75cc]{color:var(--el-text-color-disabled);pointer-events:none}.header-content .actions .enabled[data-v-3c6c75cc]{color:var(--primary-color-accent)}@media (max-width:768px){.admin-header-content[data-v-3c6c75cc]{flex-direction:column;top:6px;width:calc(100% - 32px);padding:6px 12px;gap:4px;border-radius:14px}.header-content .actions i[data-v-3c6c75cc],.header-icon[data-v-3c6c75cc]{font-size:.95em}.header-content .actions[data-v-3c6c75cc]{gap:10px;margin-top:10px}}.pagination-container[data-v-3c6c75cc]{display:flex;justify-content:center;align-items:center;margin-top:20px;padding-bottom:20px;gap:15px;position:relative}.pagination-center[data-v-3c6c75cc]{display:flex;align-items:center;gap:10px}.pagination-container[data-v-3c6c75cc] .el-pagination{--el-pagination-button-bg-color:var(--glass-bg);--el-pagination-hover-color:var(--primary-color-accent)}.pagination-container[data-v-3c6c75cc] .btn-next,.pagination-container[data-v-3c6c75cc] .btn-prev,.pagination-container[data-v-3c6c75cc] .el-pager li{min-width:36px;height:36px;margin:0 4px;border:1px solid var(--glass-border)!important;border-radius:10px!important;background:var(--glass-bg)!important;color:var(--el-text-color-secondary);box-shadow:none;font-weight:500;line-height:36px;transition:background-color .25s ease,border-color .25s ease,color .25s ease}.pagination-container[data-v-3c6c75cc] .btn-next:hover,.pagination-container[data-v-3c6c75cc] .btn-prev:hover,.pagination-container[data-v-3c6c75cc] .el-pager li:hover{border-color:var(--glass-border-hover)!important;background:var(--glass-header-bg)!important;color:var(--primary-color-accent)}.pagination-container[data-v-3c6c75cc] .el-pager li.is-active,.pagination-container[data-v-3c6c75cc] .el-pager li.is-active:hover{border-color:var(--primary-color)!important;background:var(--primary-color)!important;color:var(--el-color-white)!important;box-shadow:none!important}.pagination-right[data-v-3c6c75cc]{display:flex;align-items:center;gap:10px;position:absolute;right:0}.page-jump[data-v-3c6c75cc],.page-total[data-v-3c6c75cc]{color:var(--el-text-color-secondary);font-size:13px;white-space:nowrap}.page-jump[data-v-3c6c75cc]{display:flex;align-items:center;gap:6px}.page-jump .jump-input[data-v-3c6c75cc]{width:50px}.page-jump .jump-input[data-v-3c6c75cc] .el-input__wrapper{height:28px;padding:0 8px;border:1px solid var(--glass-border);border-radius:8px;background-color:var(--glass-bg)!important;box-shadow:none;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}.page-jump .jump-input[data-v-3c6c75cc] .el-input__inner{height:28px;color:var(--el-text-color-primary);line-height:28px;text-align:center}.pagination-container .refresh-btn[data-v-3c6c75cc]{width:36px;min-width:36px;height:36px;padding:0!important;border:1px solid var(--glass-border)!important;border-radius:10px!important;background:var(--glass-bg)!important;color:var(--primary-color-accent)!important;box-shadow:none;font-size:14px;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);transition:background-color .25s ease,border-color .25s ease,color .25s ease}.pagination-container .refresh-btn[data-v-3c6c75cc]:hover{border-color:var(--glass-border-hover)!important;background:var(--glass-header-bg)!important;color:var(--primary-color-accent)!important;box-shadow:none}.page-jump .jump-btn[data-v-3c6c75cc],.pagination-container .load-more[data-v-3c6c75cc]{border-color:var(--primary-color)!important;background:var(--primary-color)!important;color:var(--el-color-white)!important;box-shadow:none;font-weight:500;transition:background-color .25s ease,border-color .25s ease,color .25s ease}.pagination-container .load-more[data-v-3c6c75cc]{height:36px;padding:0 16px!important;border-radius:10px!important}.page-jump .jump-btn[data-v-3c6c75cc]{height:28px;padding:0 12px!important;border-radius:8px!important;font-size:12px;font-weight:600}.page-jump .jump-btn[data-v-3c6c75cc]:hover,.pagination-container .load-more[data-v-3c6c75cc]:hover{border-color:var(--el-color-primary-dark-2)!important;background:var(--el-color-primary-dark-2)!important;box-shadow:none!important}@media (max-width:768px){.pagination-container[data-v-3c6c75cc]{flex-direction:column;gap:8px;margin-top:14px;padding-bottom:10px}.pagination-center[data-v-3c6c75cc]{flex-wrap:wrap;justify-content:center;gap:6px;order:0}.pagination-container[data-v-3c6c75cc] .el-pager li{min-width:30px;height:30px;margin:0 2px;border-radius:8px!important;font-size:12px;line-height:30px}.pagination-container[data-v-3c6c75cc] .btn-next,.pagination-container[data-v-3c6c75cc] .btn-prev{display:none!important;position:static!important;min-width:30px!important;width:30px!important;height:30px!important;border-radius:8px!important;font-size:12px}.pagination-right[data-v-3c6c75cc]{position:static;width:100%;justify-content:center;gap:6px;order:1}.page-jump[data-v-3c6c75cc],.page-total[data-v-3c6c75cc]{font-size:12px}.page-jump .jump-input[data-v-3c6c75cc]{width:40px}.page-jump .jump-input[data-v-3c6c75cc] .el-input__wrapper{height:26px;padding:0 6px;border-radius:7px}.page-jump .jump-input[data-v-3c6c75cc] .el-input__inner{height:26px;font-size:12px;line-height:26px}.pagination-container .refresh-btn[data-v-3c6c75cc]{width:30px!important;min-width:30px!important;height:30px!important;border-radius:8px!important;font-size:12px!important}.pagination-container .load-more[data-v-3c6c75cc]{height:30px!important;min-height:30px!important;padding:0 10px!important;border-radius:8px!important;font-size:12px!important}.page-jump .jump-btn[data-v-3c6c75cc]{height:26px;padding:0 10px!important;border-radius:7px!important;font-size:11px}}.container[data-v-3c6c75cc]{background:var(--admin-container-bg-color);min-height:100vh;font-family:Arial,sans-serif;color:var(--admin-container-color);margin:0;padding:0;overflow-x:hidden}.main-container[data-v-3c6c75cc]{margin-top:60px;transition:margin-left .3s ease,width .3s ease;width:calc(100% - 280px);margin-left:170px}.main-container.collapsed[data-v-3c6c75cc]{width:calc(100% - 150px);margin-left:80px}@media (max-width:768px){.main-container.collapsed[data-v-3c6c75cc],.main-container[data-v-3c6c75cc]{width:auto;margin-left:65px;margin-right:15px;padding:0;min-height:calc(100vh - 60px);box-sizing:border-box}} \ No newline at end of file diff --git a/frontend-dist/css/126.8d4195f5.css.gz b/frontend-dist/css/126.8d4195f5.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..353c4332f70590fb386e61cd3600278f41eaa141 GIT binary patch literal 12766 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 kHZ>HNyiXRmc!9SL`-=KLvl<30Ct+jL;wH) literal 0 HcmV?d00001 diff --git a/frontend-dist/css/130.8ca5a76a.css b/frontend-dist/css/130.8ca5a76a.css deleted file mode 100644 index bd76fb8..0000000 --- a/frontend-dist/css/130.8ca5a76a.css +++ /dev/null @@ -1 +0,0 @@ -.move-dialog-content[data-v-7aaa437c]{padding:0 10px}.move-path-input-container[data-v-7aaa437c]{display:flex;align-items:center;gap:10px}.move-path-input[data-v-7aaa437c]{flex:1}.directory-picker-trigger[data-v-7aaa437c]{flex-shrink:0}.move-dialog-hint[data-v-7aaa437c]{margin-top:12px;font-size:12px;color:var(--el-text-color-secondary)}.move-drawer-content[data-v-7aaa437c]{padding:16px}.move-path-section[data-v-7aaa437c]{margin-bottom:16px}.move-path-label[data-v-7aaa437c]{font-size:14px;font-weight:500;margin-bottom:8px;color:var(--el-text-color-primary)}.move-path-input-row[data-v-7aaa437c]{display:flex;align-items:center;gap:10px}.embedded-tree-section[data-v-7aaa437c]{margin-top:16px;border:1px solid var(--el-border-color-lighter);border-radius:8px;overflow:hidden}.tree-section-header[data-v-7aaa437c]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--el-fill-color-light);border-bottom:1px solid var(--el-border-color-lighter)}.tree-section-title[data-v-7aaa437c]{font-size:14px;font-weight:500}.tree-container[data-v-7aaa437c]{min-height:200px;max-height:300px;overflow-y:auto;padding:8px}.directory-tree[data-v-7aaa437c]{background:transparent}.directory-tree[data-v-7aaa437c] .el-tree-node__content{height:44px;padding:0 8px;border-radius:8px}.tree-node[data-v-7aaa437c]{display:flex;align-items:center;gap:8px;padding:4px 0;width:100%}.tree-node.is-current[data-v-7aaa437c]{color:var(--el-color-primary);font-weight:500}.folder-icon[data-v-7aaa437c]{color:var(--el-color-warning);font-size:16px}.node-label[data-v-7aaa437c]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.error-state[data-v-7aaa437c]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px 20px;text-align:center}.error-icon[data-v-7aaa437c]{font-size:32px;color:var(--el-color-danger)}.error-text[data-v-7aaa437c]{color:var(--el-text-color-secondary);font-size:14px}.drawer-footer[data-v-7aaa437c]{display:flex;gap:12px;padding:0 16px 16px}.footer-btn[data-v-7aaa437c]{flex:1}.move-dialog .el-dialog__body{padding:20px}.move-drawer{border-radius:16px 16px 0 0!important}.move-drawer .el-drawer__header{margin-bottom:0;padding:16px 20px;border-bottom:1px solid var(--el-border-color-lighter)}.move-drawer .el-drawer__body,.move-drawer .el-drawer__footer{padding:0}.mobile-drawer-overlay[data-v-feeadb1c]{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.4);z-index:2000}.mobile-drawer[data-v-feeadb1c]{position:absolute;top:22vh;left:8px;bottom:8px;width:280px;max-width:calc(85vw - 16px);background:var(--el-bg-color);border:1px solid var(--glass-border);border-radius:16px;box-shadow:none;display:flex;flex-direction:column;overflow:hidden}html.dark .mobile-drawer[data-v-feeadb1c]{background:rgba(40,40,45,.98);box-shadow:none}.mobile-drawer-header[data-v-feeadb1c]{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;background:color-mix(in srgb,var(--primary-color) 10%,transparent);border-bottom:1px solid var(--el-border-color-lighter)}.mobile-drawer-title[data-v-feeadb1c]{font-size:15px;font-weight:600;color:var(--primary-color-accent);display:flex;align-items:center;gap:8px}.mobile-drawer-title[data-v-feeadb1c]:before{content:"";display:inline-block;width:4px;height:16px;background:var(--primary-color-accent);border-radius:2px}.mobile-drawer-close[data-v-feeadb1c]{width:32px;height:32px;display:flex;align-items:center;justify-content:center;font-size:16px;color:var(--el-text-color-secondary);cursor:pointer;border-radius:8px;transition:all .2s ease;background:transparent}.mobile-drawer-close[data-v-feeadb1c]:active{background:var(--el-fill-color);color:var(--el-text-color-primary)}.mobile-drawer-content[data-v-feeadb1c]{flex:1;overflow-y:auto;padding:8px}.mobile-drawer-item[data-v-feeadb1c]{display:flex;align-items:center;gap:12px;padding:14px 16px;margin:2px 0;cursor:pointer;transition:all .2s ease;color:var(--el-text-color-primary);border-radius:10px;font-size:14px}.mobile-drawer-item[data-v-feeadb1c]:active{background:var(--el-fill-color-light);transform:scale(.98)}.mobile-drawer-item.active[data-v-feeadb1c]{background:color-mix(in srgb,var(--primary-color) 15%,transparent);color:var(--primary-color-accent);font-weight:600}.mobile-drawer-item-icon[data-v-feeadb1c]{font-size:18px;width:24px;text-align:center;opacity:.7}.mobile-drawer-item.active .mobile-drawer-item-icon[data-v-feeadb1c]{opacity:1;color:var(--primary-color-accent)}.mobile-drawer-back[data-v-feeadb1c]{display:flex;align-items:center;gap:12px;padding:14px 16px;margin:8px 8px;border-radius:10px;background:var(--el-fill-color-lighter);cursor:pointer;transition:all .2s ease;color:var(--el-text-color-secondary);font-size:14px}.mobile-drawer-back[data-v-feeadb1c]:active{background:var(--el-fill-color);color:var(--el-text-color-primary);transform:scale(.98)}.drawer-slide-enter-active[data-v-feeadb1c]{transition:opacity .3s ease}.drawer-slide-leave-active[data-v-feeadb1c]{transition:opacity .2s ease}.drawer-slide-enter-active .mobile-drawer[data-v-feeadb1c]{animation:slideInLeft-feeadb1c .3s ease-out}.drawer-slide-leave-active .mobile-drawer[data-v-feeadb1c]{animation:slideOutLeft-feeadb1c .2s ease-in}.drawer-slide-enter-from[data-v-feeadb1c],.drawer-slide-leave-to[data-v-feeadb1c]{opacity:0}@keyframes slideInLeft-feeadb1c{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes slideOutLeft-feeadb1c{0%{transform:translateX(0)}to{transform:translateX(-100%)}}.bottom-sheet-overlay[data-v-f5c66568]{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);z-index:9999;display:flex;align-items:flex-end;justify-content:center}.bottom-sheet[data-v-f5c66568]{width:100%;max-width:100%;background:var(--mobile-action-sheet-bg);border-radius:20px 20px 0 0;max-height:70vh;overflow:hidden;box-shadow:none;border-top:1px solid var(--mobile-action-sheet-border)}html.dark .bottom-sheet[data-v-f5c66568]{box-shadow:none}.bottom-sheet-header[data-v-f5c66568]{display:flex;flex-direction:column;align-items:center;gap:12px;padding:16px 20px 12px;border-bottom:1px solid var(--el-border-color-lighter)}.bottom-sheet-handle[data-v-f5c66568]{width:40px;height:4px;background:var(--el-border-color);border-radius:2px}.bottom-sheet-title[data-v-f5c66568]{font-size:16px;font-weight:600;color:var(--el-text-color-primary);text-align:center;max-width:80%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bottom-sheet-content[data-v-f5c66568]{padding:12px 16px;padding-bottom:calc(20px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:8px}.bottom-sheet-item[data-v-f5c66568]{display:flex;align-items:center;gap:16px;padding:16px 20px;border-radius:14px;cursor:pointer;transition:all .2s ease;background:var(--mobile-action-sheet-item-bg);color:var(--el-text-color-primary)}.bottom-sheet-item[data-v-f5c66568]:active{transform:scale(.98);background:var(--mobile-action-sheet-item-active-bg)}.bottom-sheet-icon[data-v-f5c66568]{font-size:20px;width:28px;text-align:center;color:var(--primary-color-accent)}.bottom-sheet-danger .bottom-sheet-icon[data-v-f5c66568],.bottom-sheet-danger[data-v-f5c66568]{color:var(--el-color-danger)}.bottom-sheet-enter-active[data-v-f5c66568]{transition:all .3s ease-out}.bottom-sheet-leave-active[data-v-f5c66568]{transition:all .2s ease-in}.bottom-sheet-enter-active .bottom-sheet[data-v-f5c66568]{animation:slideUp-f5c66568 .3s ease-out}.bottom-sheet-leave-active .bottom-sheet[data-v-f5c66568]{animation:slideDown-f5c66568 .2s ease-in}.bottom-sheet-enter-from[data-v-f5c66568],.bottom-sheet-leave-to[data-v-f5c66568]{opacity:0}.bottom-sheet-enter-from .bottom-sheet[data-v-f5c66568],.bottom-sheet-leave-to .bottom-sheet[data-v-f5c66568]{transform:translateY(100%)}@keyframes slideUp-f5c66568{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideDown-f5c66568{0%{transform:translateY(0)}to{transform:translateY(100%)}}.el-tabs{--el-tabs-header-height:40px;display:flex}.el-tabs__header{align-items:center;display:flex;justify-content:space-between;margin:0 0 15px;padding:0;position:relative}.el-tabs__header-vertical{flex-direction:column}.el-tabs__active-bar{background-color:var(--el-color-primary);bottom:0;height:2px;left:0;list-style:none;position:absolute;transition:width var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),transform var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);z-index:1}.el-tabs__active-bar.is-bottom{bottom:auto}.el-tabs__new-tab{align-items:center;border:1px solid var(--el-border-color);border-radius:3px;color:var(--el-text-color-primary);cursor:pointer;display:flex;flex-shrink:0;font-size:12px;height:20px;justify-content:center;line-height:20px;margin:10px 0 10px 10px;text-align:center;transition:all .15s;width:20px}.el-tabs__new-tab .is-icon-plus{height:inherit;transform:scale(.8);width:inherit}.el-tabs__new-tab .is-icon-plus svg{vertical-align:middle}.el-tabs__new-tab:hover{color:var(--el-color-primary)}.el-tabs__new-tab-vertical{margin-left:0}.el-tabs__nav-wrap{flex:1 auto;margin-bottom:-1px;overflow:hidden;position:relative}.el-tabs__nav-wrap:after{background-color:var(--el-border-color-light);bottom:0;content:"";height:2px;left:0;position:absolute;width:100%;z-index:var(--el-index-normal)}.el-tabs__nav-wrap.is-bottom:after{bottom:auto;top:0}.el-tabs__nav-wrap.is-scrollable{box-sizing:border-box;padding:0 20px}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{color:var(--el-text-color-secondary);cursor:pointer;font-size:12px;line-height:44px;position:absolute;text-align:center;width:20px}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{display:flex;float:left;position:relative;transition:transform var(--el-transition-duration);white-space:nowrap;z-index:calc(var(--el-index-normal) + 1)}.el-tabs__nav.is-stretch{display:flex;min-width:100%}.el-tabs__nav.is-stretch>*{flex:1;text-align:center}.el-tabs__item{align-items:center;box-sizing:border-box;color:var(--el-text-color-primary);display:flex;font-size:var(--el-font-size-base);font-weight:500;height:var(--el-tabs-header-height);justify-content:center;list-style:none;padding:0 20px;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:none}.el-tabs__item:focus-visible{border-radius:3px;box-shadow:0 0 2px 2px var(--el-color-primary) inset}.el-tabs__item .is-icon-close{border-radius:50%;margin-left:5px;text-align:center;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs__item .is-icon-close:before{display:inline-block;transform:scale(.9)}.el-tabs__item .is-icon-close:hover{background-color:var(--el-text-color-placeholder);color:#fff}.el-tabs__item.is-active,.el-tabs__item:hover{color:var(--el-color-primary)}.el-tabs__item:hover{cursor:pointer}.el-tabs__item.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-tabs__content{flex-grow:1;overflow:hidden;position:relative}.el-tabs--bottom>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:0}.el-tabs--bottom>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top>.el-tabs__header .el-tabs__item:last-child{padding-right:0}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--card>.el-tabs__header{border-bottom:1px solid var(--el-border-color-light);box-sizing:border-box;height:var(--el-tabs-header-height)}.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid var(--el-border-color-light);border-bottom:none;border-radius:4px 4px 0 0;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .is-icon-close{font-size:12px;height:14px;overflow:hidden;position:relative;right:-2px;transform-origin:100% 50%;width:0}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid var(--el-border-color-light);margin-top:-1px;transition:color var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),padding var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .is-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:var(--el-bg-color)}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .is-icon-close{width:14px}.el-tabs--border-card{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:var(--el-fill-color-light);border-bottom:1px solid var(--el-border-color-light);margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--border-card>.el-tabs__header .el-tabs__item{border:1px solid transparent;color:var(--el-text-color-secondary);margin-top:-1px;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item,.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{background-color:var(--el-bg-color-overlay);border-left-color:var(--el-border-color);border-right-color:var(--el-border-color);color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:var(--el-disabled-text-color)}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom{flex-direction:column}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid var(--el-border-color)}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-bottom:0;margin-top:-1px}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{bottom:auto;height:auto;top:0;width:2px}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{cursor:pointer;height:30px;line-height:30px;text-align:center;width:100%}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{transform:rotate(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{bottom:0;right:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__nav-wrap.is-right:after,.el-tabs--right .el-tabs__nav-wrap.is-left:after,.el-tabs--right .el-tabs__nav-wrap.is-right:after{bottom:auto;height:100%;top:0;width:2px}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{flex-direction:column}.el-tabs--left .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-left{justify-content:flex-end}.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-right{justify-content:flex-start}.el-tabs--left{flex-direction:row}.el-tabs--left .el-tabs__header.is-left{margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left:after{left:auto;right:0}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left{display:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-bottom:none;border-left:none;border-right:1px solid var(--el-border-color-light);border-top:1px solid var(--el-border-color-light);text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid var(--el-border-color-light);border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:none;border-right:1px solid #fff}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-radius:4px 0 0 4px;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid var(--el-border-color)}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:#d1dbe5 transparent}.el-tabs--left>.el-tabs__content+.el-tabs__header{order:-1}.el-tabs--right .el-tabs__header.is-right{margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right:after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid var(--el-border-color-light)}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid var(--el-border-color-light);border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:1px solid #fff;border-right:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-left:none;border-radius:0 4px 4px 0}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid var(--el-border-color)}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:#d1dbe5 transparent}.el-tabs--top{flex-direction:column}.el-tabs--top>.el-tabs__content+.el-tabs__header{order:-1}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{animation:slideInRight-enter var(--el-transition-duration)}.slideInRight-leave{animation:slideInRight-leave var(--el-transition-duration);left:0;position:absolute;right:0}.slideInLeft-enter{animation:slideInLeft-enter var(--el-transition-duration)}.slideInLeft-leave{animation:slideInLeft-leave var(--el-transition-duration);left:0;position:absolute;right:0}@keyframes slideInRight-enter{0%{opacity:0;transform:translateX(100%);transform-origin:0 0}to{opacity:1;transform:translateX(0);transform-origin:0 0}}@keyframes slideInRight-leave{0%{opacity:1;transform:translateX(0);transform-origin:0 0}to{opacity:0;transform:translateX(100%);transform-origin:0 0}}@keyframes slideInLeft-enter{0%{opacity:0;transform:translateX(-100%);transform-origin:0 0}to{opacity:1;transform:translateX(0);transform-origin:0 0}}@keyframes slideInLeft-leave{0%{opacity:1;transform:translateX(0);transform-origin:0 0}to{opacity:0;transform:translateX(-100%);transform-origin:0 0}}.el-alert{--el-alert-padding:8px 16px;--el-alert-border-radius-base:var(--el-border-radius-base);--el-alert-title-font-size:14px;--el-alert-title-with-description-font-size:16px;--el-alert-description-font-size:14px;--el-alert-close-font-size:16px;--el-alert-close-customed-font-size:14px;--el-alert-icon-size:16px;--el-alert-icon-large-size:28px;align-items:center;background-color:var(--el-color-white);border-radius:var(--el-alert-border-radius-base);box-sizing:border-box;display:flex;margin:0;opacity:1;overflow:hidden;padding:var(--el-alert-padding);position:relative;transition:opacity var(--el-transition-duration-fast);width:100%}.el-alert.is-light .el-alert__close-btn{color:var(--el-text-color-placeholder)}.el-alert.is-dark .el-alert__close-btn,.el-alert.is-dark .el-alert__description{color:var(--el-color-white)}.el-alert.is-center{justify-content:center}.el-alert--primary{--el-alert-bg-color:var(--el-color-primary-light-9)}.el-alert--primary.is-light{background-color:var(--el-alert-bg-color)}.el-alert--primary.is-light,.el-alert--primary.is-light .el-alert__description{color:var(--el-color-primary)}.el-alert--primary.is-dark{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-alert--success{--el-alert-bg-color:var(--el-color-success-light-9)}.el-alert--success.is-light{background-color:var(--el-alert-bg-color)}.el-alert--success.is-light,.el-alert--success.is-light .el-alert__description{color:var(--el-color-success)}.el-alert--success.is-dark{background-color:var(--el-color-success);color:var(--el-color-white)}.el-alert--info{--el-alert-bg-color:var(--el-color-info-light-9)}.el-alert--info.is-light{background-color:var(--el-alert-bg-color)}.el-alert--info.is-light,.el-alert--info.is-light .el-alert__description{color:var(--el-color-info)}.el-alert--info.is-dark{background-color:var(--el-color-info);color:var(--el-color-white)}.el-alert--warning{--el-alert-bg-color:var(--el-color-warning-light-9)}.el-alert--warning.is-light{background-color:var(--el-alert-bg-color)}.el-alert--warning.is-light,.el-alert--warning.is-light .el-alert__description{color:var(--el-color-warning)}.el-alert--warning.is-dark{background-color:var(--el-color-warning);color:var(--el-color-white)}.el-alert--error{--el-alert-bg-color:var(--el-color-error-light-9)}.el-alert--error.is-light{background-color:var(--el-alert-bg-color)}.el-alert--error.is-light,.el-alert--error.is-light .el-alert__description{color:var(--el-color-error)}.el-alert--error.is-dark{background-color:var(--el-color-error);color:var(--el-color-white)}.el-alert__content{display:flex;flex-direction:column;gap:4px}.el-alert .el-alert__icon{font-size:var(--el-alert-icon-size);margin-right:8px;width:var(--el-alert-icon-size)}.el-alert .el-alert__icon.is-big{font-size:var(--el-alert-icon-large-size);margin-right:12px;width:var(--el-alert-icon-large-size)}.el-alert__title{font-size:var(--el-alert-title-font-size);line-height:24px}.el-alert__title.with-description{font-size:var(--el-alert-title-with-description-font-size)}.el-alert .el-alert__description{font-size:var(--el-alert-description-font-size);margin:0}.el-alert .el-alert__close-btn{cursor:pointer;font-size:var(--el-alert-close-font-size);opacity:1;position:absolute;right:16px;top:12px}.el-alert .el-alert__close-btn.is-customed{font-size:var(--el-alert-close-customed-font-size);font-style:normal;line-height:24px;top:8px}.el-alert-fade-enter-from,.el-alert-fade-leave-active{opacity:0}.batch-tag-container[data-v-54f87f24]{padding:0}.tab-content[data-v-54f87f24]{padding:20px}.tab-description[data-v-54f87f24]{margin:0 0 15px 0;color:var(--el-text-color-regular);font-size:14px}.input-section[data-v-54f87f24]{position:relative;margin-bottom:20px}.suggestions-panel[data-v-54f87f24]{position:absolute;top:100%;left:0;right:0;background:var(--admin-dashboard-tag-suggestion-bg-color);border:1px solid var(--admin-dashboard-tag-suggestion-border-color);border-radius:4px;box-shadow:var(--admin-dashboard-tag-suggestion-box-shadow);max-height:200px;overflow-y:auto;z-index:1000;margin-top:4px}.suggestion-item[data-v-54f87f24]{padding:8px 12px;cursor:pointer;transition:background-color .2s}.suggestion-item[data-v-54f87f24]:hover{background-color:var(--admin-dashboard-tag-suggestion-item-hover-bg-color)}.common-tags-section[data-v-54f87f24],.tags-to-add-section[data-v-54f87f24]{margin-bottom:20px}.common-tags-section h4[data-v-54f87f24],.tags-to-add-section h4[data-v-54f87f24]{margin:0 0 10px 0;font-size:14px;color:var(--el-text-color-regular)}.tags-container[data-v-54f87f24]{display:flex;flex-wrap:wrap;gap:8px;min-height:40px}.tag-item[data-v-54f87f24]{cursor:default}.empty-message[data-v-54f87f24]{color:var(--el-text-color-secondary);font-size:13px;padding:10px 0}.action-buttons[data-v-54f87f24]{margin-top:20px;display:flex;justify-content:flex-end}.tag-management-container[data-v-1dabc380]{padding:10px 0}.input-section[data-v-1dabc380]{position:relative;margin-bottom:20px}.suggestions-panel[data-v-1dabc380]{position:absolute;top:100%;left:0;right:0;background:var(--admin-dashboard-tag-suggestion-bg-color);border:1px solid var(--admin-dashboard-tag-suggestion-border-color);border-radius:4px;box-shadow:var(--admin-dashboard-tag-suggestion-box-shadow);max-height:200px;overflow-y:auto;z-index:1000;margin-top:4px}.suggestion-item[data-v-1dabc380]{padding:8px 12px;cursor:pointer;transition:background-color .2s}.suggestion-item[data-v-1dabc380]:hover{background-color:var(--admin-dashboard-tag-suggestion-item-hover-bg-color)}.current-tags-section[data-v-1dabc380],.popular-tags-section[data-v-1dabc380]{margin-bottom:20px}.current-tags-section h4[data-v-1dabc380],.popular-tags-section h4[data-v-1dabc380]{margin:0 0 10px 0;font-size:14px;color:var(--el-text-color-regular)}.tags-container[data-v-1dabc380]{display:flex;flex-wrap:wrap;gap:8px;min-height:40px}.tag-item[data-v-1dabc380]{cursor:default}.tag-item.clickable[data-v-1dabc380]{cursor:pointer;transition:transform .2s}.empty-message[data-v-1dabc380]{color:var(--el-text-color-secondary);font-size:13px;padding:10px 0}.dialog-footer[data-v-1dabc380]{display:flex;justify-content:flex-end}.el-form{--el-form-label-font-size:var(--el-font-size-base);--el-form-inline-content-width:220px}.el-form--inline .el-form-item{display:inline-flex;margin-right:32px;vertical-align:middle}.el-form--inline.el-form--label-top{display:flex;flex-wrap:wrap}.el-form--inline.el-form--label-top .el-form-item{display:block}.el-form-item{display:flex;--font-size:14px;margin-bottom:18px}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-input__validateIcon{display:none}.el-form-item--large{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:22px}.el-form-item--large .el-form-item__label{height:40px;line-height:40px}.el-form-item--large .el-form-item__content{line-height:40px}.el-form-item--large .el-form-item__error{padding-top:4px}.el-form-item--default{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--default .el-form-item__label{height:32px;line-height:32px}.el-form-item--default .el-form-item__content{line-height:32px}.el-form-item--default .el-form-item__error{padding-top:2px}.el-form-item--small{--font-size:12px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--small .el-form-item__label{height:24px;line-height:24px}.el-form-item--small .el-form-item__content{line-height:24px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--label-left .el-form-item__label{justify-content:flex-start;text-align:left}.el-form-item--label-right .el-form-item__label{justify-content:flex-end;text-align:right}.el-form-item--label-top{display:block}.el-form-item--label-top .el-form-item__label{display:block;height:auto;line-height:22px;margin-bottom:8px;padding-right:0;text-align:left;width:fit-content}.el-form-item__label-wrap{display:flex}.el-form-item__label{align-items:flex-start;box-sizing:border-box;color:var(--el-text-color-regular);display:inline-flex;flex:0 0 auto;font-size:var(--el-form-label-font-size);height:32px;line-height:32px;padding:0 12px 0 0}.el-form-item__content{align-items:center;display:flex;flex:1;flex-wrap:wrap;font-size:var(--font-size);line-height:32px;min-width:0;position:relative}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:var(--el-color-danger);font-size:12px;left:0;line-height:1;padding-top:2px;position:absolute;top:100%}.el-form-item__error--inline{display:inline-block;left:auto;margin-left:10px;position:relative;top:auto}.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label:before{color:var(--el-color-danger);content:"*";margin-right:4px}.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label-wrap>.el-form-item__label:after,.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label:after{color:var(--el-color-danger);content:"*";margin-left:4px}.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-select__wrapper,.el-form-item.is-error .el-form-item__content .el-select__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-textarea__inner,.el-form-item.is-error .el-form-item__content .el-textarea__inner.is-focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__wrapper{box-shadow:inset 0 0 0 1px transparent}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__validateIcon,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__validateIcon{display:none}.el-form-item.is-error .el-form-item__content .el-input__validateIcon{color:var(--el-color-danger)}.el-form-item--feedback .el-input__validateIcon{display:inline-flex}.el-descriptions{--el-descriptions-table-border:1px solid var(--el-border-color-lighter);--el-descriptions-item-bordered-label-background:var(--el-fill-color-light);box-sizing:border-box;color:var(--el-text-color-primary);font-size:var(--el-font-size-base)}.el-descriptions__header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.el-descriptions__title{color:var(--el-text-color-primary);font-size:16px;font-weight:700}.el-descriptions__body{background-color:var(--el-fill-color-blank)}.el-descriptions__body .el-descriptions__table{border-collapse:collapse;width:100%}.el-descriptions__body .el-descriptions__table .el-descriptions__cell{box-sizing:border-box;font-size:14px;line-height:23px;text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-left{text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-center{text-align:center}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-right{text-align:right}.el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{border:var(--el-descriptions-table-border);padding:8px 11px}.el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:12px}.el-descriptions--large{font-size:14px}.el-descriptions--large .el-descriptions__header{margin-bottom:20px}.el-descriptions--large .el-descriptions__header .el-descriptions__title{font-size:16px}.el-descriptions--large .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:14px}.el-descriptions--large .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:12px 15px}.el-descriptions--large .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:16px}.el-descriptions--small{font-size:12px}.el-descriptions--small .el-descriptions__header{margin-bottom:12px}.el-descriptions--small .el-descriptions__header .el-descriptions__title{font-size:14px}.el-descriptions--small .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:12px}.el-descriptions--small .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:4px 7px}.el-descriptions--small .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:8px}.el-descriptions__label.el-descriptions__cell.is-bordered-label{background:var(--el-descriptions-item-bordered-label-background);color:var(--el-text-color-regular);font-weight:700}.el-descriptions__label:not(.is-bordered-label){color:var(--el-text-color-primary);margin-right:16px}.el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:6px}.el-descriptions__content.el-descriptions__cell.is-bordered-content{color:var(--el-text-color-primary)}.el-descriptions__content:not(.is-bordered-label){color:var(--el-text-color-regular)}.el-descriptions--large .el-descriptions__label:not(.is-bordered-label){margin-right:16px}.el-descriptions--large .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:8px}.el-descriptions--small .el-descriptions__label:not(.is-bordered-label){margin-right:12px}.el-descriptions--small .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:4px}.el-image__error,.el-image__inner,.el-image__placeholder,.el-image__wrapper{height:100%;width:100%}.el-image{display:inline-block;overflow:hidden;position:relative}.el-image__inner{opacity:1;vertical-align:top}.el-image__inner.is-loading{opacity:0}.el-image__wrapper{left:0;position:absolute;top:0}.el-image__error,.el-image__placeholder{background:var(--el-fill-color-light)}.el-image__error{align-items:center;color:var(--el-text-color-placeholder);display:flex;font-size:14px;justify-content:center;vertical-align:middle}.el-image__preview{cursor:pointer}.el-image-viewer__wrapper{bottom:0;left:0;position:fixed;right:0;top:0}.el-image-viewer__wrapper:focus{outline:none!important}.el-image-viewer__btn{align-items:center;border-radius:50%;box-sizing:border-box;cursor:pointer;display:flex;justify-content:center;opacity:.8;position:absolute;-webkit-user-select:none;user-select:none;z-index:1}.el-image-viewer__btn .el-icon{cursor:pointer}.el-image-viewer__close{font-size:40px;height:40px;right:40px;top:40px;width:40px}.el-image-viewer__canvas{align-items:center;display:flex;height:100%;justify-content:center;position:static;-webkit-user-select:none;user-select:none;width:100%}.el-image-viewer__actions{background-color:var(--el-text-color-regular);border-color:#fff;border-radius:22px;bottom:30px;height:44px;left:50%;padding:0 23px;transform:translateX(-50%)}.el-image-viewer__actions__inner{align-items:center;color:#fff;cursor:default;display:flex;font-size:23px;gap:22px;height:100%;justify-content:space-around;padding:0 6px;width:100%}.el-image-viewer__actions__divider{margin:0 -6px}.el-image-viewer__progress{bottom:90px;color:#fff;cursor:default;left:50%;transform:translateX(-50%)}.el-image-viewer__prev{left:40px}.el-image-viewer__next,.el-image-viewer__prev{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;top:50%;transform:translateY(-50%);width:44px}.el-image-viewer__next{right:40px;text-indent:2px}.el-image-viewer__close{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;width:44px}.el-image-viewer__mask{background:#000;height:100%;left:0;opacity:.5;position:absolute;top:0;width:100%}.el-image-viewer-parent--hidden{overflow:hidden}.viewer-fade-enter-active{animation:viewer-fade-in var(--el-transition-duration)}.viewer-fade-leave-active{animation:viewer-fade-out var(--el-transition-duration)}@keyframes viewer-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes viewer-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}.detail-actions[data-v-550287cc]{display:flex;justify-content:right;margin-bottom:10px;flex-wrap:wrap;gap:8px}.detail-action[data-v-550287cc]{margin-left:0!important}.video-preview[data-v-550287cc]{max-height:300px;cursor:pointer;-o-object-fit:contain;object-fit:contain}.audio-preview[data-v-550287cc],.video-preview[data-v-550287cc]{width:100%;max-width:400px;border-radius:8px}.image-preview[data-v-550287cc]{width:auto;height:auto;max-width:100%;max-height:300px;border-radius:8px;cursor:pointer}.image-preview[data-v-550287cc] img{max-width:100%;max-height:300px;-o-object-fit:contain;object-fit:contain}.file-icon-detail[data-v-550287cc]{font-size:64px;color:var(--el-text-color-secondary)}.preview-section[data-v-550287cc]{display:flex;justify-content:center;margin-bottom:15px;padding:12px;background:var(--el-fill-color-light);border:1px solid var(--glass-border);border-radius:8px;min-height:60px}.preview-content[data-v-550287cc]{display:flex;justify-content:center;align-items:center;width:100%}[data-v-550287cc] .el-descriptions__content{word-break:break-all;word-wrap:break-word}[data-v-550287cc] .el-descriptions__content .el-tag,[data-v-550287cc] .el-descriptions__content .el-tag+span{vertical-align:middle}[data-v-550287cc] .el-descriptions__label{width:120px!important;min-width:100px!important;max-width:120px!important}[data-v-550287cc] .el-descriptions__body table{table-layout:fixed}@media (max-width:768px){.detail-actions[data-v-550287cc]{justify-content:center}}.batch-floating-bar[data-v-49301bcc]{position:fixed;left:50%;bottom:max(84px,calc(72px + env(safe-area-inset-bottom)));transform:translateX(-50%);z-index:1200;display:flex;align-items:center;gap:8px;max-width:min(720px,calc(100vw - 48px));padding:8px;border:1px solid var(--admin-batch-toolbar-border);border-radius:18px;background:var(--admin-batch-toolbar-bg);box-shadow:var(--admin-batch-toolbar-shadow);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}.batch-selection-summary[data-v-49301bcc]{display:flex;align-items:center;flex:0 0 auto;padding:0 4px}.batch-selection-count[data-v-49301bcc]{min-width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;padding:0 8px;border:1px solid color-mix(in srgb,var(--primary-color) 28%,transparent);border-radius:10px;color:var(--primary-color-accent);background:color-mix(in srgb,var(--primary-color) 10%,transparent);font-size:14px;font-weight:600;line-height:1}.batch-toolbar-divider[data-v-49301bcc]{width:1px;height:24px;flex:0 0 auto;border-radius:999px;background:var(--admin-batch-toolbar-border);opacity:.78}.batch-floating-actions[data-v-49301bcc]{display:flex;align-items:center;gap:6px}.batch-floating-btn[data-v-49301bcc]{width:36px;height:36px;min-width:36px;margin-left:0!important;padding:0;border:1px solid transparent;border-radius:12px;color:var(--admin-batch-clear-color);background:var(--admin-batch-action-bg);box-shadow:var(--admin-batch-action-shadow);transition:border-color .2s ease,background-color .2s ease,color .2s ease}.batch-floating-btn[data-v-49301bcc]:hover{border-color:var(--glass-border-hover);color:var(--primary-color-accent);background:var(--admin-batch-action-hover-bg);box-shadow:var(--admin-batch-action-hover-shadow)}.batch-floating-btn.ban[data-v-49301bcc],.batch-floating-btn.copy[data-v-49301bcc],.batch-floating-btn.download[data-v-49301bcc],.batch-floating-btn.move[data-v-49301bcc],.batch-floating-btn.tag[data-v-49301bcc],.batch-floating-btn.white[data-v-49301bcc]{color:var(--admin-batch-action-color)}.batch-floating-btn.danger[data-v-49301bcc]{color:var(--admin-batch-delete-color)}.batch-floating-btn.danger[data-v-49301bcc]:hover{border-color:color-mix(in srgb,var(--admin-batch-delete-color) 32%,transparent);color:var(--admin-batch-delete-color);background:color-mix(in srgb,var(--admin-batch-delete-color) 10%,transparent)}.batch-floating-btn.ghost[data-v-49301bcc]{color:var(--admin-batch-clear-color)}.batch-floating-icon[data-v-49301bcc]{width:15px;margin-right:0}.batch-toolbar-enter-active[data-v-49301bcc],.batch-toolbar-leave-active[data-v-49301bcc]{transition:opacity .24s ease,transform .28s cubic-bezier(.22,1,.36,1)}.batch-toolbar-enter-from[data-v-49301bcc],.batch-toolbar-leave-to[data-v-49301bcc]{opacity:0;transform:translateX(-50%) translateY(12px) scale(.99)}.batch-toolbar-enter-to[data-v-49301bcc],.batch-toolbar-leave-from[data-v-49301bcc]{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}@media (max-width:768px){.batch-floating-bar[data-v-49301bcc]{left:50%;right:auto;bottom:max(76px,calc(64px + env(safe-area-inset-bottom)));transform:translateX(-50%);width:-moz-max-content;width:max-content;max-width:calc(100vw - 24px);gap:6px;padding:6px;border-radius:16px}.batch-selection-summary[data-v-49301bcc]{padding:0 1px}.batch-selection-count[data-v-49301bcc]{min-width:24px;height:26px;padding:0 7px;font-size:12px;border-radius:9px}.batch-toolbar-divider[data-v-49301bcc]{height:22px}.batch-floating-actions[data-v-49301bcc]{flex:1;min-width:0;gap:4px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;padding:1px}.batch-floating-actions[data-v-49301bcc]::-webkit-scrollbar{display:none}.batch-floating-btn[data-v-49301bcc]{width:30px;height:30px;min-width:30px;padding:0;border-radius:10px}.batch-floating-icon[data-v-49301bcc]{margin-right:0;width:13px}.batch-toolbar-enter-from[data-v-49301bcc],.batch-toolbar-leave-to[data-v-49301bcc]{transform:translateX(-50%) translateY(12px) scale(.99)}.batch-toolbar-enter-to[data-v-49301bcc],.batch-toolbar-leave-from[data-v-49301bcc]{transform:translateX(-50%) translateY(0) scale(1)}}.el-container{box-sizing:border-box;display:flex;flex:1;flex-basis:auto;flex-direction:row;min-width:0}.el-container.is-vertical{flex-direction:column}.el-aside{overflow:auto;width:var(--el-aside-width,300px)}.el-aside,.el-footer{box-sizing:border-box;flex-shrink:0}.el-footer{--el-footer-padding:0 20px;--el-footer-height:60px;height:var(--el-footer-height);padding:var(--el-footer-padding)}.el-header{--el-header-padding:0 20px;--el-header-height:60px;flex-shrink:0;height:var(--el-header-height);padding:var(--el-header-padding)}.el-header,.el-main{box-sizing:border-box}.el-main{--el-main-padding:20px;display:block;flex:1;flex-basis:auto;overflow:auto;padding:var(--el-main-padding)}.el-pagination{--el-pagination-font-size:14px;--el-pagination-bg-color:var(--el-fill-color-blank);--el-pagination-text-color:var(--el-text-color-primary);--el-pagination-border-radius:2px;--el-pagination-button-color:var(--el-text-color-primary);--el-pagination-button-width:32px;--el-pagination-button-height:32px;--el-pagination-button-disabled-color:var(--el-text-color-placeholder);--el-pagination-button-disabled-bg-color:var(--el-fill-color-blank);--el-pagination-button-bg-color:var(--el-fill-color);--el-pagination-hover-color:var(--el-color-primary);--el-pagination-font-size-small:12px;--el-pagination-button-width-small:24px;--el-pagination-button-height-small:24px;--el-pagination-button-width-large:40px;--el-pagination-button-height-large:40px;--el-pagination-item-gap:16px;align-items:center;color:var(--el-pagination-text-color);display:flex;font-size:var(--el-pagination-font-size);font-weight:400;white-space:nowrap}.el-pagination .el-input__inner{-moz-appearance:textfield;text-align:center}.el-pagination .el-select{width:128px}.el-pagination .btn-next,.el-pagination .btn-prev{align-items:center;background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;display:flex;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pagination .btn-next *,.el-pagination .btn-prev *{pointer-events:none}.el-pagination .btn-next:focus,.el-pagination .btn-prev:focus{outline:none}.el-pagination .btn-next:hover,.el-pagination .btn-prev:hover{color:var(--el-pagination-hover-color)}.el-pagination .btn-next.is-active,.el-pagination .btn-prev.is-active{color:var(--el-pagination-hover-color);cursor:default;font-weight:700}.el-pagination .btn-next.is-active.is-disabled,.el-pagination .btn-prev.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pagination .btn-next.is-disabled,.el-pagination .btn-next:disabled,.el-pagination .btn-prev.is-disabled,.el-pagination .btn-prev:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pagination .btn-next:focus-visible,.el-pagination .btn-prev:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700;width:inherit}.el-pagination>.is-first{margin-left:0!important}.el-pagination>.is-last{margin-right:0!important}.el-pagination .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination__sizes,.el-pagination__total{color:var(--el-text-color-regular);font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__total[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__jump{align-items:center;color:var(--el-text-color-regular);display:flex;font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__jump[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__goto{margin-right:8px}.el-pagination__editor{box-sizing:border-box;text-align:center}.el-pagination__editor.el-input{width:56px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination__classifier{margin-left:8px}.el-pagination__rightwrapper{align-items:center;display:flex;flex:1;justify-content:flex-end}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{background-color:var(--el-pagination-button-bg-color);margin:0 4px}.el-pagination.is-background .btn-next.is-active,.el-pagination.is-background .btn-prev.is-active,.el-pagination.is-background .el-pager li.is-active{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-pagination.is-background .btn-next.is-disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.is-disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.is-disabled,.el-pagination.is-background .el-pager li:disabled{background-color:var(--el-disabled-bg-color);color:var(--el-text-color-placeholder)}.el-pagination.is-background .btn-next.is-disabled.is-active,.el-pagination.is-background .btn-next:disabled.is-active,.el-pagination.is-background .btn-prev.is-disabled.is-active,.el-pagination.is-background .btn-prev:disabled.is-active,.el-pagination.is-background .el-pager li.is-disabled.is-active,.el-pagination.is-background .el-pager li:disabled.is-active{background-color:var(--el-fill-color-dark);color:var(--el-text-color-secondary)}.el-pagination.is-background .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li{font-size:var(--el-pagination-font-size-small);height:var(--el-pagination-button-height-small);line-height:var(--el-pagination-button-height-small);min-width:var(--el-pagination-button-width-small)}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){font-size:var(--el-pagination-font-size-small)}.el-pagination--small .el-select{width:100px}.el-pagination--large .btn-next,.el-pagination--large .btn-prev,.el-pagination--large .el-pager li{height:var(--el-pagination-button-height-large);line-height:var(--el-pagination-button-height-large);min-width:var(--el-pagination-button-width-large)}.el-pagination--large .el-select .el-input{width:160px}.el-pager{font-size:0;list-style:none;margin:0;padding:0;-webkit-user-select:none;user-select:none}.el-pager,.el-pager li{align-items:center;display:flex}.el-pager li{background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pager li *{pointer-events:none}.el-pager li:focus{outline:none}.el-pager li.is-active,.el-pager li:hover{color:var(--el-pagination-hover-color)}.el-pager li.is-active{cursor:default;font-weight:700}.el-pager li.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pager li.is-disabled,.el-pager li:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pager li:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.list-item[data-v-25a3242c]{display:grid;grid-template-columns:50px 60px minmax(180px,1fr) 130px 100px 110px 130px 80px 100px 120px;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:65px;padding:12px 20px;align-items:center;transition:background .2s ease;border-bottom:1px solid var(--el-border-color-lighter);min-width:-moz-fit-content;min-width:fit-content}.list-item[data-v-25a3242c]:last-child{border-bottom:none}.list-item[data-v-25a3242c]:hover{background:var(--el-fill-color-light)}.list-col[data-v-25a3242c]{display:flex;align-items:center}.list-col-checkbox[data-v-25a3242c]{justify-content:center;min-width:40px}.list-col-checkbox[data-v-25a3242c] .el-checkbox{--el-checkbox-input-width:16px;--el-checkbox-input-height:16px}.list-col-preview[data-v-25a3242c]{justify-content:center;cursor:pointer}.list-col-name[data-v-25a3242c]{cursor:pointer;overflow:hidden;padding-right:16px;min-width:0}.list-col-name[data-v-25a3242c]:hover{color:var(--primary-color-accent)}.filename-ellipsis[data-v-25a3242c]{display:flex;max-width:100%;overflow:hidden;align-items:center}.filename-start[data-v-25a3242c]{flex-shrink:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filename-end[data-v-25a3242c]{flex-shrink:0;white-space:nowrap}.list-col-channel-name[data-v-25a3242c],.list-col-channel[data-v-25a3242c],.list-col-date[data-v-25a3242c],.list-col-size[data-v-25a3242c]{font-size:13px;color:var(--el-text-color-secondary)}.list-col-address[data-v-25a3242c]{font-size:13px}.address-box[data-v-25a3242c],.channel-name-box[data-v-25a3242c]{background:var(--el-fill-color-light);border:1px solid var(--el-border-color-lighter);border-radius:4px;padding:4px 8px;font-size:12px;color:var(--el-text-color-secondary);max-width:100%;overflow-x:auto;overflow-y:hidden;white-space:nowrap;scrollbar-width:none;-ms-overflow-style:none}.address-box[data-v-25a3242c]{width:85px;font-family:Consolas,Monaco,monospace}.channel-name-box[data-v-25a3242c]{width:70px}.address-box[data-v-25a3242c]::-webkit-scrollbar,.channel-name-box[data-v-25a3242c]::-webkit-scrollbar{display:none}.list-col-tags[data-v-25a3242c]{display:flex;align-items:center;gap:4px;flex-wrap:nowrap;overflow:hidden}.color-tag[data-v-25a3242c]{padding:2px 8px;border-radius:10px;font-size:11px;color:#fff;white-space:nowrap;max-width:60px;overflow:hidden;text-overflow:ellipsis;text-shadow:0 1px 2px rgba(0,0,0,.2)}.color-tag-more[data-v-25a3242c]{min-width:30px;text-align:center}.list-empty[data-v-25a3242c]{color:var(--el-text-color-placeholder)}.list-col-actions[data-v-25a3242c]{display:flex;gap:8px;justify-content:flex-end}.list-preview-img[data-v-25a3242c]{width:40px;height:40px;-o-object-fit:cover;object-fit:cover;border-radius:6px}.list-folder-icon[data-v-25a3242c]{font-size:28px;color:var(--el-color-primary)}.list-file-icon[data-v-25a3242c]{font-size:24px;color:var(--el-text-color-secondary)}.list-action-btn[data-v-25a3242c]{width:32px;height:32px;border:none;border-radius:8px;background:var(--el-fill-color);color:var(--el-text-color-regular);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.list-action-btn[data-v-25a3242c]:hover{background:var(--primary-color);color:#fff}.list-action-danger[data-v-25a3242c]:hover{background:var(--el-color-danger)}@media (max-width:768px){.list-item[data-v-25a3242c]{grid-template-columns:20px 34px 1fr auto;padding:8px 6px;gap:6px;font-size:12px}.list-col-address[data-v-25a3242c],.list-col-channel-name[data-v-25a3242c],.list-col-channel[data-v-25a3242c],.list-col-date[data-v-25a3242c],.list-col-size[data-v-25a3242c],.list-col-tags[data-v-25a3242c]{display:none}.list-col-name[data-v-25a3242c]{padding-right:8px;line-height:1.25}.list-preview-img[data-v-25a3242c]{width:34px;height:34px;border-radius:5px}.list-folder-icon[data-v-25a3242c]{font-size:24px}.list-file-icon[data-v-25a3242c]{font-size:21px}.list-col-actions[data-v-25a3242c]{gap:3px}.list-action-btn[data-v-25a3242c]{width:26px;height:26px;border-radius:7px;font-size:12px}.list-col-checkbox[data-v-25a3242c]{width:18px;min-width:18px}.list-col-checkbox[data-v-25a3242c] .el-checkbox{--el-checkbox-input-width:14px;--el-checkbox-input-height:14px}}.img-card[data-v-956fb02e]{width:100%;height:22vh;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:260px;background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border);border-radius:8px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative;transition:transform .3s ease}.img-card[data-v-956fb02e]:before{content:"";position:absolute;top:0;left:0;right:0;height:45%;background:linear-gradient(180deg,rgba(0,0,0,.35) 0,rgba(0,0,0,.12) 50%,transparent);pointer-events:none;z-index:5}.img-card[data-v-956fb02e] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-956fb02e] .el-checkbox{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.img-card[data-v-956fb02e] .el-checkbox__inner{width:14px!important;min-width:14px;height:14px!important;min-height:14px;border-radius:50%!important}.img-card[data-v-956fb02e]:hover{transform:scale(1.05)}.image-preview[data-v-956fb02e],.video-preview[data-v-956fb02e]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;transition:transform .4s ease,opacity .3s ease;filter:var(--image-preview-filter)}.video-preview[data-v-956fb02e]{cursor:pointer}.img-card:hover .file-icon[data-v-956fb02e],.img-card:hover .image-preview[data-v-956fb02e],.img-card:hover .video-preview[data-v-956fb02e]{transform:scale(1.03)}.image-preview[data-v-956fb02e]:hover{opacity:.8}.file-short-info[data-v-956fb02e]{position:absolute;z-index:10;top:3px;left:3px;display:flex;gap:5px;align-items:start}.success-tag[data-v-956fb02e]{background-color:rgba(34,139,34,.6);border:1px solid rgba(34,139,34,.7);border-radius:6px}.fail-tag[data-v-956fb02e],.success-tag[data-v-956fb02e]{color:hsla(0,0%,100%,.95);padding:3px 8px;font-size:11px;font-weight:500;height:auto;line-height:1.2;text-shadow:0 1px 2px rgba(0,0,0,.3)}.fail-tag[data-v-956fb02e]{background-color:rgba(220,53,69,.6);border:1px solid rgba(220,53,69,.7);border-radius:6px}.primary-tag[data-v-956fb02e]{background-color:rgba(250,82,194,.6);color:hsla(0,0%,100%,.95);border:1px solid rgba(250,82,194,.7);padding:3px 8px;border-radius:6px;font-size:11px;font-weight:500;display:flex;align-items:center;height:auto;line-height:1.2;text-shadow:0 1px 2px rgba(0,0,0,.3)}.file-preview[data-v-956fb02e]{display:flex;justify-content:center;align-items:center;width:100%;height:100%}.file-icon[data-v-956fb02e]{opacity:.6;font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.audio-icon[data-v-956fb02e]{color:var(--el-color-primary);opacity:.8}.audio-card-preview[data-v-956fb02e]{cursor:pointer}.card-bottom-overlay[data-v-956fb02e]{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,rgba(0,0,0,.55) 0,rgba(0,0,0,.25) 50%,transparent);padding:clamp(15px,2.5vh,30px) clamp(6px,1vw,12px) clamp(5px,.8vh,10px);display:flex;flex-direction:column;gap:clamp(3px,.5vh,6px);z-index:10}.file-name-row[data-v-956fb02e]{display:flex;align-items:center;justify-content:center}.file-name[data-v-956fb02e]{color:#fff;font-size:clamp(10px,1.1vw,14px);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;text-shadow:0 1px 3px rgba(0,0,0,.5)}.action-bar[data-v-956fb02e]{display:flex;justify-content:space-between;align-items:center;opacity:0;transform:translateY(4px);transition:all .25s cubic-bezier(.4,0,.2,1);pointer-events:none}.el-card:hover .action-bar[data-v-956fb02e]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-956fb02e],.action-bar-right[data-v-956fb02e]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-956fb02e]{width:clamp(24px,2.5vw,28px);height:clamp(24px,2.5vw,28px);border:none;border-radius:clamp(5px,.6vw,8px);background:hsla(0,0%,100%,.15);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;font-size:clamp(11px,1.1vw,14px)}.action-btn[data-v-956fb02e]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-956fb02e]:active{transform:scale(.95)}.action-btn-danger[data-v-956fb02e]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.img-card[data-v-956fb02e]{height:148px;border-radius:7px;contain-intrinsic-size:148px}.img-card[data-v-956fb02e] .el-checkbox{top:6px;right:6px;transform:scale(1.1)}.img-card[data-v-956fb02e]:hover{transform:none}.file-short-info[data-v-956fb02e]{gap:3px;max-width:calc(100% - 38px)}.fail-tag[data-v-956fb02e],.primary-tag[data-v-956fb02e],.success-tag[data-v-956fb02e]{max-width:72px;padding:2px 5px;border-radius:5px;font-size:9px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-bottom-overlay[data-v-956fb02e]{padding:22px 6px 6px}.file-name[data-v-956fb02e]{font-size:11px}.file-icon[data-v-956fb02e]{font-size:34px}.action-bar[data-v-956fb02e]{display:none!important}}@keyframes skeleton-shimmer-956fb02e{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton-wrapper[data-v-956fb02e]{width:100%;height:100%;background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-956fb02e 1.5s ease-in-out infinite}.error-wrapper[data-v-956fb02e]{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--skeleton-bg-color);cursor:pointer;gap:8px}.error-icon[data-v-956fb02e]{font-size:32px;color:var(--el-color-warning);opacity:.7}.error-text[data-v-956fb02e]{font-size:12px;color:var(--el-text-color-secondary)}.img-card[data-v-534cf01b]{width:100%;height:22vh;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:260px;background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border);border-radius:8px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative;transition:transform .3s ease}.img-card[data-v-534cf01b] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-534cf01b] .el-checkbox{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.img-card[data-v-534cf01b] .el-checkbox__inner{width:14px!important;min-width:14px;height:14px!important;min-height:14px;border-radius:50%!important}.img-card[data-v-534cf01b]:hover{transform:scale(1.05)}.folder-card[data-v-534cf01b]{cursor:pointer}.folder-icon[data-v-534cf01b]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;color:var(--el-color-primary)}.folder-icon-svg[data-v-534cf01b]{font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.img-card:hover .folder-icon-svg[data-v-534cf01b]{transform:scale(1.03)}.card-bottom-overlay[data-v-534cf01b]{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,rgba(0,0,0,.55) 0,rgba(0,0,0,.25) 50%,transparent);padding:clamp(15px,2.5vh,30px) clamp(6px,1vw,12px) clamp(5px,.8vh,10px);display:flex;flex-direction:column;gap:clamp(3px,.5vh,6px);z-index:10}.file-name-row[data-v-534cf01b]{display:flex;align-items:center;justify-content:center}.file-name[data-v-534cf01b]{color:#fff;font-size:clamp(10px,1.1vw,14px);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;text-shadow:0 1px 3px rgba(0,0,0,.5)}.action-bar[data-v-534cf01b]{display:flex;justify-content:space-between;align-items:center;opacity:0;transform:translateY(4px);transition:all .25s cubic-bezier(.4,0,.2,1);pointer-events:none}.el-card:hover .action-bar[data-v-534cf01b]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-534cf01b],.action-bar-right[data-v-534cf01b]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-534cf01b]{width:clamp(24px,2.5vw,28px);height:clamp(24px,2.5vw,28px);border:none;border-radius:clamp(5px,.6vw,8px);background:hsla(0,0%,100%,.15);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;font-size:clamp(11px,1.1vw,14px)}.action-btn[data-v-534cf01b]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-534cf01b]:active{transform:scale(.95)}.action-btn-danger[data-v-534cf01b]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.img-card[data-v-534cf01b]{height:148px;border-radius:7px;contain-intrinsic-size:148px}.img-card[data-v-534cf01b] .el-checkbox{top:6px;right:6px;transform:scale(1.1)}.img-card[data-v-534cf01b]:hover{transform:none}.folder-icon-svg[data-v-534cf01b]{font-size:36px}.card-bottom-overlay[data-v-534cf01b]{padding:22px 6px 6px}.file-name[data-v-534cf01b]{font-size:11px}.action-bar[data-v-534cf01b]{display:none!important}}@keyframes skeleton-shimmer-070880ec{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes skeleton-pulse-070880ec{0%,to{opacity:.4}50%{opacity:.8}}.skeleton-card[data-v-070880ec]{width:100%;height:22vh;background:var(--admin-dashboard-imgcard-bg-color);border:1px solid var(--glass-border);border-radius:12px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative}.skeleton-image[data-v-070880ec]{width:100%;height:100%;background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-info[data-v-070880ec]{position:absolute;bottom:0;left:0;right:0;padding:15px;background:rgba(0,0,0,.5)}.skeleton-text[data-v-070880ec]{height:14px;width:60%;margin:0 auto;border-radius:4px;background:linear-gradient(90deg,hsla(0,0%,100%,.1) 25%,hsla(0,0%,100%,.25) 50%,hsla(0,0%,100%,.1) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-list-item[data-v-070880ec]{animation:skeleton-pulse-070880ec 1.5s ease-in-out infinite}.skeleton-checkbox[data-v-070880ec]{width:18px;height:18px;border-radius:4px;background:var(--skeleton-bg-color)}.skeleton-preview[data-v-070880ec]{width:40px;height:40px;border-radius:6px;background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-text-long[data-v-070880ec]{width:80%}.skeleton-text-long[data-v-070880ec],.skeleton-text-short[data-v-070880ec]{height:14px;border-radius:4px;background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-text-short[data-v-070880ec]{width:60px}.skeleton-text-tiny[data-v-070880ec]{height:14px;width:40px;border-radius:4px}.skeleton-tag[data-v-070880ec],.skeleton-text-tiny[data-v-070880ec]{background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-tag[data-v-070880ec]{height:20px;width:50px;border-radius:10px}.skeleton-actions[data-v-070880ec]{height:28px;width:80px;border-radius:6px;background:var(--skeleton-bg-color)}.list-item[data-v-070880ec]{display:grid;grid-template-columns:50px 60px minmax(180px,1fr) 130px 100px 110px 130px 80px 100px 120px;padding:12px 20px;align-items:center;border-bottom:1px solid var(--el-border-color-lighter)}.list-col[data-v-070880ec]{display:flex;align-items:center}.list-col-checkbox[data-v-070880ec],.list-col-preview[data-v-070880ec]{justify-content:center}@media (max-width:768px){.skeleton-card[data-v-070880ec]{height:148px;border-radius:7px}.skeleton-info[data-v-070880ec]{padding:22px 6px 6px}.skeleton-text[data-v-070880ec]{height:11px;width:68%;border-radius:3px}.list-item[data-v-070880ec]{box-sizing:border-box;grid-template-columns:20px 34px 1fr auto;padding:8px 6px;gap:6px;height:50px}.skeleton-checkbox[data-v-070880ec]{width:16px;height:16px}.skeleton-preview[data-v-070880ec]{width:34px;height:34px;border-radius:5px}.skeleton-text-long[data-v-070880ec],.skeleton-text-short[data-v-070880ec],.skeleton-text-tiny[data-v-070880ec]{height:10px;border-radius:3px}.skeleton-actions[data-v-070880ec]{width:58px;height:24px;border-radius:6px}.list-col-address[data-v-070880ec],.list-col-channel-name[data-v-070880ec],.list-col-channel[data-v-070880ec],.list-col-date[data-v-070880ec],.list-col-size[data-v-070880ec],.list-col-tags[data-v-070880ec]{display:none}}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb:after,.el-breadcrumb:before{content:"";display:table}.el-breadcrumb:after{clear:both}.el-breadcrumb__separator{color:var(--el-text-color-placeholder);font-weight:700;margin:0 9px}.el-breadcrumb__separator.el-icon{font-weight:400;margin:0 6px}.el-breadcrumb__separator.el-icon svg{vertical-align:middle}.el-breadcrumb__item{align-items:center;display:inline-flex;float:left}.el-breadcrumb__inner{color:var(--el-text-color-regular)}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{color:var(--el-text-color-primary);font-weight:700;text-decoration:none;transition:var(--el-transition-color)}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:var(--el-color-primary);cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{color:var(--el-text-color-regular);cursor:text;font-weight:400}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-divider{position:relative}.el-divider--horizontal{border-top:1px var(--el-border-color) var(--el-border-style);display:block;height:1px;margin:24px 0;width:100%}.el-divider--vertical{border-left:1px var(--el-border-color) var(--el-border-style);display:inline-block;height:1em;margin:0 8px;position:relative;vertical-align:middle;width:1px}.el-divider__text{background-color:var(--el-bg-color);color:var(--el-text-color-primary);font-size:14px;font-weight:500;padding:0 20px;position:absolute}.el-divider__text.is-left{left:20px;transform:translateY(-50%)}.el-divider__text.is-center{left:50%;transform:translateX(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;transform:translateY(-50%)}.dashboard-checkbox[data-v-3757bfa7]{box-sizing:border-box;display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;color:#fff;cursor:pointer;transition:background .2s ease,border-color .2s ease,box-shadow .2s ease}.dashboard-checkbox--breadcrumb[data-v-3757bfa7]{position:relative;width:32px;height:32px;overflow:hidden;border:1px solid var(--glass-border);border-radius:10px;background:var(--glass-bg);box-shadow:none;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);transition:background-color .2s ease,border-color .2s ease}.dashboard-checkbox--breadcrumb[data-v-3757bfa7]:before{content:"";position:absolute;inset:7px;box-sizing:border-box;border:1px solid var(--glass-border);border-radius:50%;background:transparent;transition:border-color .18s ease,background .18s ease}.dashboard-checkbox--breadcrumb[data-v-3757bfa7]:hover{border-color:var(--glass-border-hover)}.dashboard-checkbox--breadcrumb[data-v-3757bfa7]:focus-visible{outline:none;border-color:color-mix(in srgb,var(--primary-color-accent) 42%,transparent)}.dashboard-checkbox--breadcrumb.checked[data-v-3757bfa7],.dashboard-checkbox--breadcrumb.indeterminate[data-v-3757bfa7]{border-color:var(--glass-border);background:var(--glass-bg)}.dashboard-checkbox--breadcrumb.checked[data-v-3757bfa7]:before,.dashboard-checkbox--breadcrumb.indeterminate[data-v-3757bfa7]:before{border-color:hsla(0,0%,100%,.4);background:var(--primary-color)}.dashboard-checkbox-mark[data-v-3757bfa7]{position:relative;z-index:1;width:10px;height:10px;opacity:0;transform:scale(.72);transition:opacity .16s ease,transform .16s ease}.dashboard-checkbox.checked .dashboard-checkbox-mark[data-v-3757bfa7],.dashboard-checkbox.indeterminate .dashboard-checkbox-mark[data-v-3757bfa7]{opacity:1;transform:scale(1)}.dashboard-checkbox--breadcrumb .dashboard-checkbox-mark[data-v-3757bfa7]{width:11px;height:11px}@media (max-width:768px){.dashboard-checkbox--breadcrumb[data-v-3757bfa7]{width:28px;height:28px;border-radius:8px}.dashboard-checkbox--breadcrumb[data-v-3757bfa7]:before{inset:6px}.dashboard-checkbox--breadcrumb .dashboard-checkbox-mark[data-v-3757bfa7]{width:10px;height:10px}}.el-checkbox-group{font-size:0;line-height:0}.filter-dropdown[data-v-42919522]{flex-shrink:0}.filter-trigger[data-v-42919522]{cursor:pointer;display:flex;align-items:center}.header-icon[data-v-42919522]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-42919522]:hover{color:var(--primary-color-accent);transform:scale(1.2)}.filter-badge[data-v-42919522] .el-badge__content{background:var(--primary-color);border:none;font-size:10px;height:16px;line-height:16px;padding:0 5px}.filter-dropdown-menu[data-v-42919522]{padding:8px 0;min-width:180px;max-height:400px;overflow-y:auto}.filter-section[data-v-42919522]{padding:8px 12px;border-bottom:1px solid var(--el-border-color-lighter)}.filter-section[data-v-42919522]:last-of-type{border-bottom:none}.filter-title[data-v-42919522]{font-size:12px;font-weight:600;color:var(--el-text-color-secondary);margin-bottom:6px}.filter-options[data-v-42919522],.filter-options[data-v-42919522] .el-checkbox-group{display:flex;flex-direction:column;gap:2px}.filter-options[data-v-42919522] .el-checkbox{margin-right:0;height:26px;padding:0 6px;border-radius:6px;transition:all .2s ease}.filter-options[data-v-42919522] .el-checkbox:hover{background:color-mix(in srgb,var(--el-text-color-primary) 10%,transparent)}html.dark .filter-options[data-v-42919522] .el-checkbox:hover{background:color-mix(in srgb,var(--el-text-color-primary) 14%,transparent)}.filter-options[data-v-42919522] .el-checkbox__label{font-size:13px;color:var(--el-text-color-primary)}.filter-options[data-v-42919522] .el-checkbox__input.is-checked+.el-checkbox__label{color:var(--primary-color-accent)}.channel-group-title[data-v-42919522]{font-size:11px;font-weight:600;color:var(--el-text-color-secondary);text-transform:uppercase;letter-spacing:.5px;padding:4px 6px;margin-top:4px;margin-bottom:2px}.channel-divider[data-v-42919522]{height:1px;background:var(--el-border-color-lighter);margin:6px 0}.filter-options[data-v-42919522] .el-checkbox__input.is-checked .el-checkbox__inner{background-color:var(--primary-color);border-color:var(--primary-color)}.filter-actions[data-v-42919522]{padding:10px 12px 6px;display:flex;justify-content:center}.filter-actions .el-button[data-v-42919522]{width:100%;background:var(--el-fill-color-light);border:1px solid var(--el-border-color);color:var(--el-text-color-regular);border-radius:6px;transition:all .2s ease}.filter-actions .el-button[data-v-42919522]:hover:not(:disabled){background:var(--primary-color);border-color:var(--primary-color-accent);color:#fff}.filter-actions .el-button[data-v-42919522]:disabled{opacity:.5;cursor:not-allowed}@media (max-width:768px){.filter-dropdown-menu[data-v-42919522]{min-width:160px;max-height:320px}.filter-section[data-v-42919522]{padding:6px 10px}.filter-title[data-v-42919522]{font-size:11px;margin-bottom:4px}.filter-options[data-v-42919522] .el-checkbox{height:24px;padding:0 4px}.filter-options[data-v-42919522] .el-checkbox__label{font-size:12px}.header-icon[data-v-42919522]{font-size:1.2em}}.language-switcher[data-v-08567d0a]{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .3s ease}.lang-icon[data-v-08567d0a]{font-size:var(--lang-icon-size,1.5em);color:var(--lang-icon-color,var(--theme-toggle-color))}#themeToggle[data-v-5c149ed5]{border:0;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:.375rem;transition-property:background-color,border-color,color;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.theme_toggle_circle1[data-v-5c149ed5]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-5c149ed5]{transition:all .5s ease-in-out;fill:var(--admin-theme-toggle-bg-color)}.theme_toggle_svg[data-v-5c149ed5]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--admin-theme-toggle-color)}.dark.theme_toggle_svg[data-v-5c149ed5]{transform:rotate(40deg)}.theme_toggle_g[data-v-5c149ed5]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-5c149ed5],.icon-fade-leave-active[data-v-5c149ed5]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-5c149ed5]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-5c149ed5]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-5c149ed5],.icon-fade-leave-from[data-v-5c149ed5]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-5c149ed5]{display:inline-block}.tabs[data-v-2fe4fd26]{display:flex;align-items:center;justify-content:center;gap:8px}.page-switcher[data-v-2fe4fd26]{position:relative;display:grid;align-items:start;height:44px;overflow:visible}.page-switcher.is-open[data-v-2fe4fd26]{z-index:1200}.page-switcher-sheet[data-v-2fe4fd26]{position:relative;isolation:isolate;display:flex;flex-direction:column;align-items:stretch;gap:0;padding:4px;border:1px solid transparent;border-radius:14px;box-sizing:border-box;background-color:transparent;overflow:visible;transition:none}.page-switcher-sheet[data-v-2fe4fd26]:before{content:"";position:absolute;top:0;left:0;right:0;z-index:0;height:160px;border:1px solid var(--tabs-switcher-border-color);border-radius:14px;background:var(--tabs-dropdown-popper-bg-color);box-shadow:var(--tabs-dropdown-popper-shadow);opacity:0;transform:translateY(-4px) scaleY(.72);transform-origin:top center;pointer-events:none;transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1);will-change:opacity,transform}.page-switcher.is-open .page-switcher-sheet[data-v-2fe4fd26]:before{opacity:1;transform:translateY(0) scaleY(1);pointer-events:auto}.page-switcher-title[data-v-2fe4fd26]{line-height:1}.page-switcher-arrow[data-v-2fe4fd26]{margin-left:auto;font-size:.75em;color:var(--tabs-switcher-accent-color);transition:transform .3s ease}.page-switcher.is-open .page-switcher-arrow[data-v-2fe4fd26]{transform:rotate(180deg)}.page-option[data-v-2fe4fd26]{position:relative;z-index:1;display:inline-flex;flex:0 0 auto;align-items:center;box-sizing:border-box;gap:7px;width:100%;min-width:148px;height:37px;padding:0 12px;border:none;border-radius:10px;color:var(--admin-container-color);background:transparent;font-size:15px;font-weight:600;font-family:inherit;white-space:nowrap;cursor:pointer;transition:none}.page-option-list[data-v-2fe4fd26]{position:absolute;top:45px;left:5px;right:5px;display:flex;flex-direction:column;align-items:stretch;opacity:0;pointer-events:none;transform:translateY(-9px) scaleY(.86);transform-origin:top center;transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1)}.page-option-list .page-option[data-v-2fe4fd26]{position:relative;z-index:1;width:100%}.page-option-highlight[data-v-2fe4fd26]{position:absolute;top:0;left:0;right:0;z-index:0;height:37px;border-radius:10px;background:var(--tabs-switcher-hover-bg);opacity:0;pointer-events:none;transform:translateY(calc(var(--hovered-option-index)*37px));transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1)}.page-option-highlight.is-visible[data-v-2fe4fd26]{opacity:1}.page-switcher.is-open .page-option-list[data-v-2fe4fd26]{opacity:1;pointer-events:auto;transform:translateY(0) scaleY(1)}.page-option.is-current[data-v-2fe4fd26]{height:37px;gap:8px;padding:0 14px;color:var(--tabs-switcher-current-color);background:var(--tabs-switcher-current-bg);border:1px solid var(--tabs-switcher-current-border-color);box-shadow:none;font-size:1.1em;font-weight:700;line-height:1.15}.page-option.is-current>.page-option-icon[data-v-2fe4fd26]{width:17px;font-size:1.05em}.page-option.is-current>.page-option-icon[data-v-2fe4fd26],.page-option.is-current>.page-switcher-arrow[data-v-2fe4fd26],.page-option.is-current>.page-switcher-title[data-v-2fe4fd26]{translate:0 1px}.page-option[data-v-2fe4fd26]:hover{color:var(--tabs-switcher-accent-color);background-color:transparent}.page-option.is-current[data-v-2fe4fd26]:hover{color:var(--tabs-switcher-current-color);background:var(--tabs-switcher-current-bg)}.page-option-icon[data-v-2fe4fd26]{width:16px;color:var(--tabs-switcher-accent-color)}@media (max-width:768px){.tabs[data-v-2fe4fd26]{gap:6px}.page-switcher-title[data-v-2fe4fd26]{max-width:6em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page-switcher-sheet[data-v-2fe4fd26]{width:-moz-max-content;width:max-content;max-width:calc(100vw - 96px)}.page-switcher-sheet[data-v-2fe4fd26]:before{height:140px;transform:translateY(-3px) scaleY(.72)}.page-option[data-v-2fe4fd26]{justify-content:flex-start;min-width:0;height:32px;padding:0 10px;font-size:12px;gap:6px}.page-option-icon[data-v-2fe4fd26]{width:15px}.page-option-list[data-v-2fe4fd26]{top:40px;transform:translateY(-8px) scaleY(.86)}.page-option-highlight[data-v-2fe4fd26]{height:32px;transform:translateY(calc(var(--hovered-option-index)*32px))}.page-option.is-current[data-v-2fe4fd26]{height:32px;gap:5px;padding:0 10px;font-size:1em}.page-option.is-current>.page-option-icon[data-v-2fe4fd26]{width:16px}.page-option.is-current>.page-switcher-arrow[data-v-2fe4fd26]{margin-left:4px}.tabs-language-switcher[data-v-2fe4fd26]{--lang-icon-size:1.1em;padding:3px}}.tabs-language-switcher[data-v-2fe4fd26]{--lang-icon-size:1.3em;--lang-icon-color:var(--admin-theme-toggle-color);transition:color .3s ease;padding:5px}.tabs[data-v-2fe4fd26] #themeToggle,.tabs[data-v-2fe4fd26] #themeToggle:hover,.tabs[data-v-2fe4fd26] .language-switcher,.tabs[data-v-2fe4fd26] .language-switcher:hover{background-color:transparent!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}.admin-header-content[data-v-84ee336e]{display:flex;justify-content:space-between;align-items:center;min-height:45px;padding:10px 24px;position:fixed;top:8px;left:50%;width:calc(95% - 16px);z-index:2001;border:1px solid var(--glass-border);border-radius:16px;backdrop-filter:blur(var(--glass-backdrop-blur)) saturate(1.4);-webkit-backdrop-filter:blur(var(--glass-backdrop-blur)) saturate(1.4);transition:background-color .25s ease,border-color .25s ease,box-shadow .25s ease}.admin-header-content[data-v-84ee336e],.admin-header-content[data-v-84ee336e]:hover{background:var(--glass-bg);box-shadow:none;transform:translateX(-50%)}.header-action[data-v-84ee336e],.header-content .actions[data-v-84ee336e]{display:flex;align-items:center}.header-action[data-v-84ee336e]{gap:10px}.header-content .actions[data-v-84ee336e]{gap:15px}.header-content .actions i[data-v-84ee336e],.header-icon[data-v-84ee336e]{font-size:1.5em;cursor:pointer;transition:color .3s ease,transform .3s ease;color:var(--admin-container-color);outline:none}.header-content .actions .el-dropdown-link i[data-v-84ee336e]:hover,.header-content .actions i[data-v-84ee336e]:hover,.header-icon[data-v-84ee336e]:hover{color:var(--primary-color-accent);transform:scale(1.2)}.header-content .actions .el-dropdown-link i[data-v-84ee336e]{color:var(--admin-container-color)}.header-content .actions .disabled[data-v-84ee336e]{color:var(--el-text-color-disabled);pointer-events:none}.header-content .actions .enabled[data-v-84ee336e]{color:var(--primary-color-accent)}@media (max-width:768px){.admin-header-content[data-v-84ee336e]{flex-direction:column;top:6px;width:calc(100% - 32px);padding:6px 12px;gap:4px;border-radius:14px}.header-content .actions i[data-v-84ee336e],.header-icon[data-v-84ee336e]{font-size:.95em}.header-content .actions[data-v-84ee336e]{gap:10px;margin-top:10px}}.pagination-container[data-v-84ee336e]{display:flex;justify-content:center;align-items:center;margin-top:20px;padding-bottom:20px;gap:15px;position:relative}.pagination-center[data-v-84ee336e]{display:flex;align-items:center;gap:10px}.pagination-container[data-v-84ee336e] .el-pagination{--el-pagination-button-bg-color:var(--glass-bg);--el-pagination-hover-color:var(--primary-color-accent)}.pagination-container[data-v-84ee336e] .btn-next,.pagination-container[data-v-84ee336e] .btn-prev,.pagination-container[data-v-84ee336e] .el-pager li{min-width:36px;height:36px;margin:0 4px;border:1px solid var(--glass-border)!important;border-radius:10px!important;background:var(--glass-bg)!important;color:var(--el-text-color-secondary);box-shadow:none;font-weight:500;line-height:36px;transition:background-color .25s ease,border-color .25s ease,color .25s ease}.pagination-container[data-v-84ee336e] .btn-next:hover,.pagination-container[data-v-84ee336e] .btn-prev:hover,.pagination-container[data-v-84ee336e] .el-pager li:hover{border-color:var(--glass-border-hover)!important;background:var(--glass-header-bg)!important;color:var(--primary-color-accent)}.pagination-container[data-v-84ee336e] .el-pager li.is-active,.pagination-container[data-v-84ee336e] .el-pager li.is-active:hover{border-color:var(--primary-color)!important;background:var(--primary-color)!important;color:var(--el-color-white)!important;box-shadow:none!important}.pagination-right[data-v-84ee336e]{display:flex;align-items:center;gap:10px;position:absolute;right:0}.page-jump[data-v-84ee336e],.page-total[data-v-84ee336e]{color:var(--el-text-color-secondary);font-size:13px;white-space:nowrap}.page-jump[data-v-84ee336e]{display:flex;align-items:center;gap:6px}.page-jump .jump-input[data-v-84ee336e]{width:50px}.page-jump .jump-input[data-v-84ee336e] .el-input__wrapper{height:28px;padding:0 8px;border:1px solid var(--glass-border);border-radius:8px;background-color:var(--glass-bg)!important;box-shadow:none;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}.page-jump .jump-input[data-v-84ee336e] .el-input__inner{height:28px;color:var(--el-text-color-primary);line-height:28px;text-align:center}.pagination-container .refresh-btn[data-v-84ee336e]{width:36px;min-width:36px;height:36px;padding:0!important;border:1px solid var(--glass-border)!important;border-radius:10px!important;background:var(--glass-bg)!important;color:var(--primary-color-accent)!important;box-shadow:none;font-size:14px;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);transition:background-color .25s ease,border-color .25s ease,color .25s ease}.pagination-container .refresh-btn[data-v-84ee336e]:hover{border-color:var(--glass-border-hover)!important;background:var(--glass-header-bg)!important;color:var(--primary-color-accent)!important;box-shadow:none}.page-jump .jump-btn[data-v-84ee336e],.pagination-container .load-more[data-v-84ee336e]{border-color:var(--primary-color)!important;background:var(--primary-color)!important;color:var(--el-color-white)!important;box-shadow:none;font-weight:500;transition:background-color .25s ease,border-color .25s ease,color .25s ease}.pagination-container .load-more[data-v-84ee336e]{height:36px;padding:0 16px!important;border-radius:10px!important}.page-jump .jump-btn[data-v-84ee336e]{height:28px;padding:0 12px!important;border-radius:8px!important;font-size:12px;font-weight:600}.page-jump .jump-btn[data-v-84ee336e]:hover,.pagination-container .load-more[data-v-84ee336e]:hover{border-color:var(--el-color-primary-dark-2)!important;background:var(--el-color-primary-dark-2)!important;box-shadow:none!important}@media (max-width:768px){.pagination-container[data-v-84ee336e]{flex-direction:column;gap:8px;margin-top:14px;padding-bottom:10px}.pagination-center[data-v-84ee336e]{flex-wrap:wrap;justify-content:center;gap:6px;order:0}.pagination-container[data-v-84ee336e] .el-pager li{min-width:30px;height:30px;margin:0 2px;border-radius:8px!important;font-size:12px;line-height:30px}.pagination-container[data-v-84ee336e] .btn-next,.pagination-container[data-v-84ee336e] .btn-prev{display:none!important;position:static!important;min-width:30px!important;width:30px!important;height:30px!important;border-radius:8px!important;font-size:12px}.pagination-right[data-v-84ee336e]{position:static;width:100%;justify-content:center;gap:6px;order:1}.page-jump[data-v-84ee336e],.page-total[data-v-84ee336e]{font-size:12px}.page-jump .jump-input[data-v-84ee336e]{width:40px}.page-jump .jump-input[data-v-84ee336e] .el-input__wrapper{height:26px;padding:0 6px;border-radius:7px}.page-jump .jump-input[data-v-84ee336e] .el-input__inner{height:26px;font-size:12px;line-height:26px}.pagination-container .refresh-btn[data-v-84ee336e]{width:30px!important;min-width:30px!important;height:30px!important;border-radius:8px!important;font-size:12px!important}.pagination-container .load-more[data-v-84ee336e]{height:30px!important;min-height:30px!important;padding:0 10px!important;border-radius:8px!important;font-size:12px!important}.page-jump .jump-btn[data-v-84ee336e]{height:26px;padding:0 10px!important;border-radius:7px!important;font-size:11px}}.container[data-v-84ee336e]{background:var(--admin-container-bg-color);min-height:100vh;font-family:Arial,sans-serif;color:var(--admin-container-color);margin:0;padding:0}[data-v-84ee336e] .el-container,[data-v-84ee336e] .el-main{overflow:visible}[data-v-84ee336e] .el-dialog{border-radius:12px;background-color:var(--dialog-bg-color);box-shadow:var(--dialog-box-shadow)}@media (max-width:768px){.search-card[data-v-84ee336e] .el-input__inner{height:28px;font-size:.85em;width:50vw}.search-card[data-v-84ee336e] .el-input__wrapper{padding:0 12px}.search-card[data-v-84ee336e] .el-input__inner:focus{width:65vw}}.breadcrumb-container[data-v-84ee336e]{display:flex;align-items:center;justify-content:flex-start;gap:12px;padding:0 10px;margin-top:12px;margin-bottom:4px}.breadcrumb-view-toggle[data-v-84ee336e]{position:relative;height:32px;box-sizing:border-box;flex:0 0 auto;display:inline-flex;align-items:center;gap:2px;padding:2px;border:1px solid var(--glass-border);border-radius:10px;background:var(--glass-bg);box-shadow:none;overflow:hidden;transition:background-color .2s ease,border-color .2s ease}.breadcrumb-view-toggle[data-v-84ee336e]:hover{border-color:var(--glass-border-hover)}.breadcrumb-view-toggle[data-v-84ee336e]:before{content:"";position:absolute;top:2px;left:2px;width:28px;height:26px;border-radius:5px;background:color-mix(in srgb,var(--primary-color) 12%,transparent);transform:translateX(0);transition:transform .22s cubic-bezier(.4,0,.2,1);pointer-events:none}.breadcrumb-view-toggle.is-list[data-v-84ee336e]:before{transform:translateX(30px)}.breadcrumb-view-button[data-v-84ee336e]{position:relative;z-index:1;width:28px;height:26px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:none;border-radius:5px;color:var(--el-text-color-secondary);background:transparent;cursor:pointer;transition:color .16s ease}.breadcrumb-view-button[data-v-84ee336e]:hover{color:var(--primary-color-accent)}.breadcrumb-view-button.is-active[data-v-84ee336e]{color:var(--primary-color-accent);background:transparent;box-shadow:none}.breadcrumb-view-icon[data-v-84ee336e]{width:14px;height:14px}.breadcrumb-sort-dropdown[data-v-84ee336e]{flex:0 0 auto}.breadcrumb-sort-button[data-v-84ee336e]{width:44px;height:32px;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;padding:0;border:1px solid var(--glass-border);border-radius:10px;color:var(--el-text-color-secondary);background:var(--glass-bg);box-shadow:none;cursor:pointer;transition:color .16s ease,background-color .2s ease,border-color .2s ease}.breadcrumb-sort-button[data-v-84ee336e]:focus-visible,.breadcrumb-sort-button[data-v-84ee336e]:hover{border-color:var(--glass-border-hover);color:var(--primary-color-accent)}.breadcrumb-sort-button[data-v-84ee336e]:focus-visible{outline:none}.breadcrumb-sort-icon[data-v-84ee336e]{width:30px;height:18px;overflow:visible}.sort-field-glyph[data-v-84ee336e],.sort-order-glyph[data-v-84ee336e]{fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.sort-order-glyph[data-v-84ee336e]{stroke-width:1.9}@media (max-width:768px){.breadcrumb-container[data-v-84ee336e]{flex-direction:row;align-items:center;gap:8px;padding:0 5px;margin-top:8px;margin-bottom:2px}.breadcrumb-view-toggle[data-v-84ee336e]{height:28px;padding:2px;border-radius:8px}.breadcrumb-view-toggle[data-v-84ee336e]:before{width:24px;height:22px;border-radius:6px}.breadcrumb-view-toggle.is-list[data-v-84ee336e]:before{transform:translateX(26px)}.breadcrumb-view-button[data-v-84ee336e]{width:24px;height:22px;border-radius:6px}.breadcrumb-view-icon[data-v-84ee336e]{width:12px;height:12px}.breadcrumb-sort-button[data-v-84ee336e]{width:40px;height:28px;border-radius:8px}.breadcrumb-sort-icon[data-v-84ee336e]{width:27px;height:16px}}.stats-badge[data-v-84ee336e]{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:500;color:var(--el-text-color-secondary);background:var(--glass-bg);padding:4px 12px;border-radius:12px;border:1px solid var(--glass-border);box-shadow:none;transition:background-color .2s ease,border-color .2s ease;white-space:nowrap;flex-shrink:0;margin-left:auto}.stats-badge[data-v-84ee336e]:hover{border-color:var(--glass-border-hover)}.stats-badge-icon[data-v-84ee336e]{font-size:11px;opacity:.8}@media (max-width:768px){.stats-badge[data-v-84ee336e]{font-size:10px;padding:2px 6px;border-radius:8px}.stats-badge-icon[data-v-84ee336e]{font-size:9px}}.search-area[data-v-84ee336e]{margin-left:auto;margin-right:20px;display:flex;align-items:center;gap:8px}@media (max-width:768px){.search-area[data-v-84ee336e]{margin-right:0;margin-left:0;margin-top:10px;gap:6px}}.search-card[data-v-84ee336e]{display:flex;align-items:center}.search-card[data-v-84ee336e] .el-input{background:transparent!important;border:none!important;box-shadow:none!important}.search-card[data-v-84ee336e] .el-input__wrapper{padding:0 14px;border-radius:20px;background:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)}.search-card[data-v-84ee336e] .el-input__inner{width:280px;height:40px;font-size:1.2em;border:none;transition:width .3s;background:none}.search-card[data-v-84ee336e] .el-input__inner::-moz-placeholder{color:var(--el-text-color-placeholder);font-style:italic;font-weight:400;font-size:14px;opacity:.6;letter-spacing:.5px;-moz-transition:all .3s ease;transition:all .3s ease}.search-card[data-v-84ee336e] .el-input__inner::placeholder{color:var(--el-text-color-placeholder);font-style:italic;font-weight:400;font-size:14px;opacity:.6;letter-spacing:.5px;transition:all .3s ease}.search-card[data-v-84ee336e] .el-input__inner:focus::-moz-placeholder{opacity:.4;transform:translateX(5px)}.search-card[data-v-84ee336e] .el-input__inner:focus::placeholder{opacity:.4;transform:translateX(5px)}@media (max-width:768px){.search-card[data-v-84ee336e] .el-input__wrapper{padding:0 12px}.search-card[data-v-84ee336e] .el-input__inner{width:45vw;height:32px;font-size:1em}}.search-card[data-v-84ee336e] .el-input__inner:focus{width:350px}@media (max-width:768px){.search-card[data-v-84ee336e] .el-input__inner:focus{width:55vw}}.search-icon[data-v-84ee336e]{cursor:pointer;color:var(--admin-container-color);transition:all .3s ease;font-size:1.3em;opacity:0;transform:scale(.8);pointer-events:none}.search-card:focus-within .search-icon[data-v-84ee336e]{opacity:1;transform:scale(1);pointer-events:auto}.search-card:focus-within .search-icon[data-v-84ee336e]:hover{color:var(--primary-color-accent);transform:scale(1.2)}.search-card[data-v-84ee336e] .el-input__suffix{display:flex;align-items:center;right:10px}.main-container[data-v-84ee336e]{display:flex;flex-direction:column;padding:20px 60px;min-height:calc(100vh - 80px);transition:padding-bottom .24s ease}.main-container.has-batch-toolbar[data-v-84ee336e]{padding-bottom:72px}@media (max-width:768px){.main-container[data-v-84ee336e]{margin-top:12vh;padding:16px 10px}.main-container.has-batch-toolbar[data-v-84ee336e]{padding-bottom:86px}}.content[data-v-84ee336e]{display:grid;grid-template-columns:repeat(5,1fr);grid-template-rows:repeat(3,1fr);gap:20px;padding:10px;padding-bottom:0;flex-grow:1;min-height:80vh}.content.is-drag-selecting[data-v-84ee336e],.list-view.is-drag-selecting[data-v-84ee336e]{cursor:crosshair}.content.is-drag-selecting[data-v-84ee336e] .img-card:hover,.content.is-drag-selecting[data-v-84ee336e] .img-card:hover .file-icon,.content.is-drag-selecting[data-v-84ee336e] .img-card:hover .folder-icon-svg,.content.is-drag-selecting[data-v-84ee336e] .img-card:hover .image-preview,.content.is-drag-selecting[data-v-84ee336e] .img-card:hover .video-preview{transform:none}.content.is-drag-selecting[data-v-84ee336e] .image-preview:hover{opacity:1}.content.is-drag-selecting[data-v-84ee336e] .action-btn:hover{transform:none;background:hsla(0,0%,100%,.15)}.list-view.is-drag-selecting[data-v-84ee336e] .list-item:hover{background:transparent}.list-view.is-drag-selecting[data-v-84ee336e] .list-action-btn:hover{color:var(--el-text-color-regular);background:var(--el-fill-color)}.list-view.is-drag-selecting[data-v-84ee336e] .list-action-danger:hover{background:var(--el-fill-color)}.empty-state[data-v-84ee336e]{grid-column:1/-1;grid-row:1/-1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;color:var(--admin-container-color);opacity:.6}.empty-icon[data-v-84ee336e]{font-size:64px;margin-bottom:20px;color:var(--admin-container-color);opacity:.3}.empty-text[data-v-84ee336e]{font-size:18px;font-weight:500;margin:0 0 8px 0}.empty-hint[data-v-84ee336e]{font-size:14px;margin:0;opacity:.7}.list-empty[data-v-84ee336e]{padding:80px 20px}@media (max-width:768px){.content[data-v-84ee336e]{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:none;gap:8px;margin-top:15px;padding:0;flex-grow:0;min-height:auto;align-content:start;align-items:start}}.list-view[data-v-84ee336e]{display:flex;flex-direction:column;gap:0;background:var(--admin-dashboard-imgcard-bg-color);border:1px solid var(--glass-border);border-radius:12px;overflow-x:auto;overflow-y:visible;box-shadow:var(--admin-dashboard-imgcard-shadow);margin-top:15px}.list-header[data-v-84ee336e]{display:grid;grid-template-columns:50px 60px minmax(180px,1fr) 130px 100px 110px 130px 80px 100px 120px;padding:12px 20px;background:var(--admin-dashboard-stats-bg);font-weight:600;font-size:13px;color:var(--el-text-color-secondary);border-bottom:1px solid var(--el-border-color-lighter);min-width:-moz-fit-content;min-width:fit-content}.list-col[data-v-84ee336e]{display:flex;align-items:center}.list-col-checkbox[data-v-84ee336e]{justify-content:center;min-width:40px}.list-col-checkbox[data-v-84ee336e] .el-checkbox{--el-checkbox-input-width:16px;--el-checkbox-input-height:16px}@media (max-width:768px){.list-header[data-v-84ee336e]{display:none}}.question-icon[data-v-84ee336e]{margin:0 3px}.breadcrumb[data-v-84ee336e]{height:32px;box-sizing:border-box;display:flex;align-items:center;padding:0 12px;background-color:var(--glass-bg);border:1px solid var(--glass-border);border-radius:10px;font-size:.95em;box-shadow:none;cursor:pointer;transition:background-color .2s ease,border-color .2s ease}.breadcrumb[data-v-84ee336e]:hover{border-color:var(--glass-border-hover)}.breadcrumb-home-icon[data-v-84ee336e]{font-size:14px;color:var(--el-text-color-secondary);cursor:pointer;transition:color .2s ease}.breadcrumb-home-icon[data-v-84ee336e]:hover{color:var(--primary-color-accent)}[data-v-84ee336e] .el-breadcrumb__item{cursor:pointer}[data-v-84ee336e] .el-breadcrumb,[data-v-84ee336e] .el-breadcrumb__inner,[data-v-84ee336e] .el-breadcrumb__item,[data-v-84ee336e] .el-breadcrumb__separator{display:inline-flex;align-items:center;height:100%;line-height:32px}[data-v-84ee336e] .el-breadcrumb__inner{cursor:pointer}[data-v-84ee336e] .el-breadcrumb__inner:hover{color:var(--primary-color-accent)}.mobile-directory-trigger[data-v-84ee336e]{display:none;align-items:center;flex:1 1 auto;min-width:0;height:28px;box-sizing:border-box;gap:6px;padding:0 10px;background:var(--glass-bg);border-radius:8px;border:1px solid var(--glass-border);cursor:pointer;transition:background-color .2s ease,border-color .2s ease}.mobile-directory-trigger[data-v-84ee336e]:active{border-color:var(--glass-border-hover)}.breadcrumb-view-toggle[data-v-84ee336e],.breadcrumb[data-v-84ee336e],.mobile-directory-trigger[data-v-84ee336e],.refresh-btn[data-v-84ee336e],.stats-badge[data-v-84ee336e]{backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}.mobile-directory-icon[data-v-84ee336e]{flex:0 0 auto;font-size:12px;color:var(--primary-color-accent)}.mobile-directory-path[data-v-84ee336e]{display:block;flex:1 1 auto;min-width:0;font-size:12px;font-weight:500;line-height:1;color:var(--el-text-color-primary);max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mobile-directory-arrow[data-v-84ee336e]{flex:0 0 auto;font-size:8px;color:var(--el-text-color-secondary)}.desktop-only[data-v-84ee336e]{display:block}@media (max-width:768px){.mobile-directory-trigger[data-v-84ee336e]{display:flex}.desktop-only[data-v-84ee336e]{display:none!important}.breadcrumb-container[data-v-84ee336e]{padding:0;margin-left:0;width:100%;box-sizing:border-box}}.drag-select-overlay[data-v-84ee336e]{position:fixed;background:rgba(24,144,255,.1);border:1px solid rgba(24,144,255,.6);pointer-events:none;z-index:9999;border-radius:2px}.sort-dropdown-menu[data-v-84ee336e]{min-width:205px}.sort-order-wrapper[data-v-84ee336e]{padding:0 12px;text-align:center}.sort-divider[data-v-84ee336e]{margin:8px 0!important}.sort-dropdown-menu[data-v-84ee336e] .el-dropdown-menu__item{justify-content:space-between}.sort-dropdown-menu[data-v-84ee336e] .el-dropdown-menu__item.is-selected{color:var(--primary-color-accent)}.sort-field-check[data-v-84ee336e]{width:12px;margin-left:16px} \ No newline at end of file diff --git a/frontend-dist/css/130.8ca5a76a.css.gz b/frontend-dist/css/130.8ca5a76a.css.gz deleted file mode 100644 index 5dffe184598b5d256ad6a73525a9dadee2b3b779..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15527 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 diff --git a/frontend-dist/css/787.448a9124.css b/frontend-dist/css/168.448a9124.css similarity index 100% rename from frontend-dist/css/787.448a9124.css rename to frontend-dist/css/168.448a9124.css diff --git a/frontend-dist/css/787.448a9124.css.gz b/frontend-dist/css/168.448a9124.css.gz similarity index 100% rename from frontend-dist/css/787.448a9124.css.gz rename to frontend-dist/css/168.448a9124.css.gz diff --git a/frontend-dist/css/473.f3f669e8.css b/frontend-dist/css/473.f3f669e8.css deleted file mode 100644 index 1318514..0000000 --- a/frontend-dist/css/473.f3f669e8.css +++ /dev/null @@ -1 +0,0 @@ -:root{--el-popup-modal-bg-color:var(--el-color-black);--el-popup-modal-opacity:0.5}.v-modal-enter{animation:v-modal-in var(--el-transition-duration-fast) ease}.v-modal-leave{animation:v-modal-out var(--el-transition-duration-fast) ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{background:var(--el-popup-modal-bg-color);height:100%;left:0;opacity:var(--el-popup-modal-opacity);position:fixed;top:0;width:100%}.el-popup-parent--hidden{overflow:hidden}.el-dialog{--el-dialog-width:50%;--el-dialog-margin-top:15vh;--el-dialog-bg-color:var(--el-bg-color);--el-dialog-box-shadow:var(--el-box-shadow);--el-dialog-title-font-size:var(--el-font-size-large);--el-dialog-content-font-size:14px;--el-dialog-font-line-height:var(--el-font-line-height-primary);--el-dialog-padding-primary:16px;--el-dialog-border-radius:var(--el-border-radius-base);background:var(--el-dialog-bg-color);border-radius:var(--el-dialog-border-radius);box-shadow:var(--el-dialog-box-shadow);box-sizing:border-box;margin:var(--el-dialog-margin-top,15vh) auto 50px;overflow-wrap:break-word;padding:var(--el-dialog-padding-primary);position:relative;width:var(--el-dialog-width,50%)}.el-dialog:focus{outline:none!important}.el-dialog.is-align-center{margin:auto}.el-dialog.is-fullscreen{--el-dialog-width:100%;--el-dialog-margin-top:0;border-radius:0;height:100%;margin-bottom:0;overflow:auto}.el-dialog__wrapper{bottom:0;left:0;margin:0;overflow:auto;position:fixed;right:0;top:0}.el-dialog.is-draggable .el-dialog__header{cursor:move;-webkit-user-select:none;user-select:none}.el-dialog__header{padding-bottom:var(--el-dialog-padding-primary)}.el-dialog__header.show-close{padding-right:calc(var(--el-dialog-padding-primary) + var(--el-message-close-size, 16px))}.el-dialog__headerbtn{background:transparent;border:none;cursor:pointer;font-size:var(--el-message-close-size,16px);height:48px;outline:none;padding:0;position:absolute;right:0;top:0;width:48px}.el-dialog__headerbtn .el-dialog__close{color:var(--el-color-info);font-size:inherit}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:var(--el-color-primary)}.el-dialog__title{color:var(--el-text-color-primary);font-size:var(--el-dialog-title-font-size);line-height:var(--el-dialog-font-line-height)}.el-dialog__body{color:var(--el-text-color-regular);font-size:var(--el-dialog-content-font-size)}.el-dialog__footer{box-sizing:border-box;padding-top:var(--el-dialog-padding-primary);text-align:right}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial}.el-dialog--center .el-dialog__footer{text-align:inherit}.el-modal-dialog.is-penetrable{pointer-events:none}.el-modal-dialog.is-penetrable .el-dialog{pointer-events:auto}.el-overlay-dialog{bottom:0;left:0;overflow:auto;position:fixed;right:0;top:0}.dialog-fade-enter-active{animation:modal-fade-in var(--el-transition-duration)}.dialog-fade-enter-active .el-overlay-dialog{animation:dialog-fade-in var(--el-transition-duration)}.dialog-fade-leave-active{animation:modal-fade-out var(--el-transition-duration)}.dialog-fade-leave-active .el-overlay-dialog{animation:dialog-fade-out var(--el-transition-duration)}@keyframes dialog-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes dialog-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-fade-out{0%{opacity:1}to{opacity:0}}.el-radio{--el-radio-font-size:var(--el-font-size-base);--el-radio-text-color:var(--el-text-color-regular);--el-radio-font-weight:var(--el-font-weight-primary);--el-radio-input-height:14px;--el-radio-input-width:14px;--el-radio-input-border-radius:var(--el-border-radius-circle);--el-radio-input-bg-color:var(--el-fill-color-blank);--el-radio-input-border:var(--el-border);--el-radio-input-border-color:var(--el-border-color);--el-radio-input-border-color-hover:var(--el-color-primary);align-items:center;color:var(--el-radio-text-color);cursor:pointer;display:inline-flex;font-size:var(--el-font-size-base);font-weight:var(--el-radio-font-weight);height:32px;margin-right:30px;outline:none;position:relative;-webkit-user-select:none;user-select:none;white-space:nowrap}.el-radio.el-radio--large{height:40px}.el-radio.el-radio--small{height:24px}.el-radio.is-bordered{border:var(--el-border);border-radius:var(--el-border-radius-base);box-sizing:border-box;padding:0 15px 0 9px}.el-radio.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-radio.is-bordered.is-disabled{border-color:var(--el-border-color-lighter);cursor:not-allowed}.el-radio.is-bordered.el-radio--large{border-radius:var(--el-border-radius-base);padding:0 19px 0 11px}.el-radio.is-bordered.el-radio--large .el-radio__label{font-size:var(--el-font-size-base)}.el-radio.is-bordered.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.is-bordered.el-radio--small{border-radius:var(--el-border-radius-base);padding:0 11px 0 7px}.el-radio.is-bordered.el-radio--small .el-radio__label{font-size:12px}.el-radio.is-bordered.el-radio--small .el-radio__inner{height:12px;width:12px}.el-radio:last-child{margin-right:0}.el-radio__input{cursor:pointer;display:inline-flex;outline:none;position:relative;vertical-align:middle;white-space:nowrap}.el-radio__input.is-disabled .el-radio__inner{border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled .el-radio__inner:after{background-color:var(--el-disabled-bg-color);cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled.is-checked .el-radio__inner:after{background-color:var(--el-text-color-placeholder)}.el-radio__input.is-disabled+span.el-radio__label{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{background:var(--el-color-primary);border-color:var(--el-color-primary)}.el-radio__input.is-checked .el-radio__inner:after{background-color:var(--el-color-white);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:var(--el-color-primary)}.el-radio__input.is-focus .el-radio__inner{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner{background-color:var(--el-radio-input-bg-color);border:var(--el-radio-input-border);border-radius:var(--el-radio-input-border-radius);box-sizing:border-box;cursor:pointer;display:inline-block;height:var(--el-radio-input-height);position:relative;width:var(--el-radio-input-width)}.el-radio__inner:hover{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner:after{border-radius:var(--el-radio-input-border-radius);content:"";height:4px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%) scale(0);transition:transform .15s ease-in;width:4px}.el-radio__original{bottom:0;left:0;margin:0;opacity:0;outline:none;position:absolute;right:0;top:0;z-index:-1}.el-radio__original:focus-visible+.el-radio__inner{border-radius:var(--el-radio-input-border-radius);outline:2px solid var(--el-radio-input-border-color-hover);outline-offset:1px}.el-radio:focus:not(:focus-visible):not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{box-shadow:0 0 2px 2px var(--el-radio-input-border-color-hover)}.el-radio__label{font-size:var(--el-radio-font-size);padding-left:8px}.el-radio.el-radio--large .el-radio__label{font-size:14px}.el-radio.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.el-radio--small .el-radio__label{font-size:12px}.el-radio.el-radio--small .el-radio__inner{height:12px;width:12px}.el-overlay.is-drawer{overflow:hidden}.el-drawer{--el-drawer-bg-color:var(--el-dialog-bg-color,var(--el-bg-color));--el-drawer-padding-primary:var(--el-dialog-padding-primary,20px);--el-drawer-dragger-size:8px;background-color:var(--el-drawer-bg-color);box-shadow:var(--el-box-shadow-dark);box-sizing:border-box;display:flex;flex-direction:column;position:absolute;transition:all var(--el-transition-duration)}.el-drawer .btt,.el-drawer .ltr,.el-drawer .rtl,.el-drawer .ttb{transform:translate(0)}.el-drawer__sr-focus:focus{outline:none!important}.el-drawer__header{align-items:center;color:var(--el-text-color-primary);display:flex;margin-bottom:32px;overflow:hidden;padding:var(--el-drawer-padding-primary);padding-bottom:0}.el-drawer__header>:first-child{flex:1}.el-drawer__title{flex:1;font-size:16px;line-height:inherit;margin:0}.el-drawer__footer{overflow:hidden;padding:var(--el-drawer-padding-primary);padding-top:10px;text-align:right}.el-drawer__close-btn{background-color:transparent;border:none;color:inherit;cursor:pointer;display:inline-flex;font-size:var(--el-font-size-extra-large);outline:none}.el-drawer__close-btn:focus i,.el-drawer__close-btn:hover i{color:var(--el-color-primary)}.el-drawer__body{flex:1;overflow:auto;padding:var(--el-drawer-padding-primary)}.el-drawer__body>*{box-sizing:border-box}.el-drawer.is-dragging{transition:none}.el-drawer__dragger{-webkit-user-select:none;user-select:none}.el-drawer__dragger,.el-drawer__dragger:before{background-color:transparent;position:absolute;transition:all .2s}.el-drawer__dragger:before{content:""}.el-drawer__dragger:hover:before{background-color:var(--el-color-primary)}.el-drawer.ltr,.el-drawer.rtl{bottom:0;height:100%;top:0}.el-drawer.ltr>.el-drawer__dragger,.el-drawer.rtl>.el-drawer__dragger{bottom:0;cursor:ew-resize;height:100%;top:0;width:var(--el-drawer-dragger-size)}.el-drawer.ltr>.el-drawer__dragger:before,.el-drawer.rtl>.el-drawer__dragger:before{bottom:0;top:0;width:3px}.el-drawer.btt,.el-drawer.ttb{left:0;right:0;width:100%}.el-drawer.btt>.el-drawer__dragger,.el-drawer.ttb>.el-drawer__dragger{cursor:ns-resize;height:var(--el-drawer-dragger-size);left:0;right:0;width:100%}.el-drawer.btt>.el-drawer__dragger:before,.el-drawer.ttb>.el-drawer__dragger:before{height:3px;left:0;right:0}.el-drawer.ltr{left:0}.el-drawer.ltr>.el-drawer__dragger{right:0}.el-drawer.ltr>.el-drawer__dragger:before{right:-2px}.el-drawer.rtl{right:0}.el-drawer.rtl>.el-drawer__dragger{left:0}.el-drawer.rtl>.el-drawer__dragger:before{left:-2px}.el-drawer.ttb{top:0}.el-drawer.ttb>.el-drawer__dragger{bottom:0}.el-drawer.ttb>.el-drawer__dragger:before{bottom:-2px}.el-drawer.btt{bottom:0}.el-drawer.btt>.el-drawer__dragger{top:0}.el-drawer.btt>.el-drawer__dragger:before{top:-2px}.el-modal-drawer.is-penetrable{pointer-events:none}.el-modal-drawer.is-penetrable .el-drawer{pointer-events:auto}.el-drawer-fade-enter-active,.el-drawer-fade-leave-active{transition:all var(--el-transition-duration)}.el-drawer-fade-enter-active,.el-drawer-fade-enter-from,.el-drawer-fade-enter-to,.el-drawer-fade-leave-active,.el-drawer-fade-leave-from,.el-drawer-fade-leave-to{overflow:hidden!important}.el-drawer-fade-enter-from,.el-drawer-fade-leave-to{background-color:transparent!important}.el-drawer-fade-enter-from .rtl,.el-drawer-fade-leave-to .rtl{transform:translateX(100%)}.el-drawer-fade-enter-from .ltr,.el-drawer-fade-leave-to .ltr{transform:translateX(-100%)}.el-drawer-fade-enter-from .ttb,.el-drawer-fade-leave-to .ttb{transform:translateY(-100%)}.el-drawer-fade-enter-from .btt,.el-drawer-fade-leave-to .btt{transform:translateY(100%)}.el-radio-group{align-items:center;display:inline-flex;flex-wrap:wrap;font-size:0}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transform-origin:center top;transition:var(--el-transition-md-fade)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transform-origin:center bottom;transition:var(--el-transition-md-fade)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transform-origin:top left;transition:var(--el-transition-md-fade)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-enter-active,.el-collapse-transition-leave-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-tree{--el-tree-node-content-height:26px;--el-tree-node-hover-bg-color:var(--el-fill-color-light);--el-tree-text-color:var(--el-text-color-regular);--el-tree-expand-icon-color:var(--el-text-color-placeholder);background:var(--el-fill-color-blank);color:var(--el-tree-text-color);cursor:default;font-size:var(--el-font-size-base);position:relative}.el-tree__empty-block{height:100%;min-height:60px;position:relative;text-align:center;width:100%}.el-tree__empty-text{color:var(--el-text-color-secondary);font-size:var(--el-font-size-base);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.el-tree__drop-indicator{background-color:var(--el-color-primary);height:1px;left:0;position:absolute;right:0}.el-tree-node{outline:none;white-space:nowrap}.el-tree-node:focus>.el-tree-node__content{background-color:var(--el-tree-node-hover-bg-color)}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:var(--el-color-primary);color:#fff}.el-tree-node__content{--el-checkbox-height:var(--el-tree-node-content-height);align-items:center;cursor:pointer;display:flex;height:var(--el-tree-node-content-height)}.el-tree-node__content>.el-tree-node__expand-icon{box-sizing:content-box;padding:6px}.el-tree-node__content>label.el-checkbox{margin-right:8px}.el-tree-node__content:hover{background-color:var(--el-tree-node-hover-bg-color)}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{color:var(--el-tree-expand-icon-color);cursor:pointer;font-size:12px;transform:rotate(0deg);transition:transform var(--el-transition-duration) ease-in-out}.el-tree-node__expand-icon.expanded{transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default;visibility:hidden}.el-tree-node__expand-icon.is-hidden{visibility:hidden}.el-tree-node__loading-icon{color:var(--el-tree-expand-icon-color);font-size:var(--el-font-size-base);margin-right:8px}.el-tree-node>.el-tree-node__children{background-color:transparent;overflow:hidden}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:var(--el-color-primary-light-9)}.el-text{--el-text-font-size:var(--el-font-size-base);--el-text-color:var(--el-text-color-regular);align-self:center;color:var(--el-text-color);font-size:var(--el-text-font-size);margin:0;overflow-wrap:break-word;padding:0}.el-text.is-truncated{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-text.is-line-clamp{display:-webkit-inline-box;-webkit-box-orient:vertical;overflow:hidden}.el-text--large{--el-text-font-size:var(--el-font-size-medium)}.el-text--default{--el-text-font-size:var(--el-font-size-base)}.el-text--small{--el-text-font-size:var(--el-font-size-extra-small)}.el-text.el-text--primary{--el-text-color:var(--el-color-primary)}.el-text.el-text--success{--el-text-color:var(--el-color-success)}.el-text.el-text--warning{--el-text-color:var(--el-color-warning)}.el-text.el-text--danger{--el-text-color:var(--el-color-danger)}.el-text.el-text--error{--el-text-color:var(--el-color-error)}.el-text.el-text--info{--el-text-color:var(--el-color-info)}.el-text>.el-icon{vertical-align:-2px}.el-popover{--el-popover-bg-color:var(--el-bg-color-overlay);--el-popover-font-size:var(--el-font-size-base);--el-popover-border-color:var(--el-border-color-lighter);--el-popover-padding:12px;--el-popover-padding-large:18px 20px;--el-popover-title-font-size:16px;--el-popover-title-text-color:var(--el-text-color-primary);--el-popover-border-radius:4px}.el-popover.el-popper{background:var(--el-popover-bg-color);border:1px solid var(--el-popover-border-color);border-radius:var(--el-popover-border-radius);box-shadow:var(--el-box-shadow-light);box-sizing:border-box;color:var(--el-text-color-regular);font-size:var(--el-popover-font-size);line-height:1.4;min-width:150px;overflow-wrap:break-word;padding:var(--el-popover-padding);z-index:var(--el-index-popper)}.el-popover.el-popper--plain{padding:var(--el-popover-padding-large)}.el-popover__title{color:var(--el-popover-title-text-color);font-size:var(--el-popover-title-font-size);line-height:1;margin-bottom:12px}.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing){outline-width:0}.el-popover.el-popper.is-dark{--el-popover-bg-color:var(--el-text-color-primary);--el-popover-border-color:var(--el-text-color-primary);--el-popover-title-text-color:var(--el-bg-color);color:var(--el-bg-color)}.el-popover.el-popper:focus,.el-popover.el-popper:focus:active{outline-width:0}.el-radio-button{--el-radio-button-checked-bg-color:var(--el-color-primary);--el-radio-button-checked-text-color:var(--el-color-white);--el-radio-button-checked-border-color:var(--el-color-primary);--el-radio-button-disabled-checked-fill:var(--el-border-color-extra-light);display:inline-block;outline:none;position:relative}.el-radio-button__inner{-webkit-appearance:none;background:var(--el-button-bg-color,var(--el-fill-color-blank));border-radius:0;box-sizing:border-box;color:var(--el-button-text-color,var(--el-text-color-regular));cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);font-weight:var(--el-button-font-weight,var(--el-font-weight-primary));line-height:1;margin:0;outline:var(--el-border);padding:8px 15px;position:relative;text-align:center;transition:var(--el-transition-all);-webkit-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-radio-button__inner.is-round{padding:8px 15px}.el-radio-button__inner:hover{color:var(--el-color-primary)}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);box-shadow:none!important}.el-radio-button.is-active .el-radio-button__original-radio:not(:disabled)+.el-radio-button__inner{background-color:var(--el-radio-button-checked-bg-color,var(--el-color-primary));border-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));box-shadow:-1px 0 0 0 var(--el-radio-button-checked-border-color,var(--el-color-primary));color:var(--el-radio-button-checked-text-color,var(--el-color-white))}.el-radio-button__original-radio{opacity:0;outline:none;position:absolute;z-index:-1}.el-radio-button__original-radio:focus-visible+.el-radio-button__inner{border-left:var(--el-border);border-left-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));border-radius:var(--el-border-radius-base);box-shadow:none;outline:2px solid var(--el-radio-button-checked-border-color);outline-offset:1px;z-index:2}.el-radio-button__original-radio:disabled+.el-radio-button__inner{background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));background-image:none;border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none;color:var(--el-disabled-text-color);cursor:not-allowed}.el-radio-button__original-radio:disabled:checked+.el-radio-button__inner{background-color:var(--el-radio-button-disabled-checked-fill)}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:var(--el-border-radius-base)}.el-radio-button--large .el-radio-button__inner{border-radius:0;font-size:var(--el-font-size-base);padding:12px 19px}.el-radio-button--large .el-radio-button__inner.is-round{padding:12px 19px}.el-radio-button--small .el-radio-button__inner{border-radius:0;font-size:12px;padding:5px 11px}.el-radio-button--small .el-radio-button__inner.is-round{padding:5px 11px}.directory-tree-picker[data-v-62eab69a],.drawer-trigger-wrapper[data-v-62eab69a],.popover-trigger-wrapper[data-v-62eab69a]{display:inline-block}.tree-container[data-v-62eab69a]{min-height:200px;max-height:400px;overflow-y:auto;padding:8px}.directory-tree[data-v-62eab69a]{background:transparent;--el-tree-node-hover-bg-color:var(--el-fill-color-light)}.directory-tree[data-v-62eab69a] .el-tree-node__content{height:44px;padding:0 8px;border-radius:8px;transition:all .2s ease}.directory-tree[data-v-62eab69a] .el-tree-node__content:hover{background-color:var(--el-fill-color-light)}.directory-tree[data-v-62eab69a] .el-tree-node.is-current>.el-tree-node__content{background-color:var(--el-color-primary-light-9)}.tree-node[data-v-62eab69a]{display:flex;align-items:center;gap:8px;padding:4px 0;width:100%;min-height:36px}.tree-node.is-current[data-v-62eab69a]{color:var(--el-color-primary);font-weight:500}.folder-icon[data-v-62eab69a]{color:var(--el-color-warning);font-size:16px;flex-shrink:0}.node-label[data-v-62eab69a]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mobile-tree[data-v-62eab69a] .el-tree-node__content{height:48px;padding:0 12px}.mobile-tree .tree-node[data-v-62eab69a]{min-height:40px}.error-state[data-v-62eab69a]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px 20px;text-align:center}.error-icon[data-v-62eab69a]{font-size:32px;color:var(--el-color-danger)}.error-text[data-v-62eab69a]{color:var(--el-text-color-secondary);font-size:14px}.tree-container[data-v-62eab69a] .el-loading-mask{border-radius:8px}.settings-dialog-scope .dialog-section{margin-bottom:24px;background:var(--dialog-section-bg-color,var(--el-fill-color-lighter));border-radius:12px;padding:16px;border:1px solid var(--el-border-color-lighter)}.settings-dialog-scope .section-header{display:flex;align-items:center;gap:8px;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--el-border-color-lighter)}.settings-dialog-scope .section-title{font-size:15px;font-weight:600;color:var(--el-text-color-primary)}.settings-dialog-scope .inline-help-icon,.settings-dialog-scope .section-help-icon{color:var(--el-text-color-secondary);cursor:pointer;transition:color .2s}.settings-dialog-scope .section-help-icon{font-size:14px}.settings-dialog-scope .inline-help-icon{font-size:13px;margin-left:6px}.settings-dialog-scope .inline-help-icon:hover,.settings-dialog-scope .section-help-icon:hover{color:var(--el-color-primary)}.settings-dialog-scope .section-content{display:flex;flex-direction:column;gap:16px}.settings-dialog-scope .radio-card-group{display:flex;flex-wrap:wrap;gap:10px}.settings-dialog-scope .radio-card-group .radio-card{margin-right:0;padding:10px 16px;border-radius:8px;background:var(--dialog-control-bg-color,var(--el-bg-color));border:1px solid var(--el-border-color-lighter);transition:all .2s ease}.settings-dialog-scope .radio-card-group .radio-card:hover{border-color:var(--el-color-primary-light-5)}.settings-dialog-scope .radio-card-group .radio-card.is-checked{background:var(--el-color-primary-light-9);border-color:var(--el-color-primary)}html.dark .settings-dialog-scope .radio-card-group .radio-card.is-checked{background:color-mix(in srgb,var(--primary-color) 38%,transparent);border-color:var(--el-color-primary-light-5);color:var(--el-text-color-primary)}html.dark .settings-dialog-scope .radio-card-group .radio-card.is-checked .el-radio__label,html.dark .settings-dialog-scope .radio-card-group .radio-card.is-checked .radio-icon{color:var(--el-text-color-primary)!important}.settings-dialog-scope .radio-card-group .el-radio__input{display:none}.settings-dialog-scope .radio-card-group .el-radio__label{padding-left:0;font-weight:500;display:flex;align-items:center;gap:8px}.settings-dialog-scope .setting-item{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--dialog-control-bg-color,var(--el-bg-color));border-radius:8px;border:1px solid var(--el-border-color-lighter)}.settings-dialog-scope .setting-label{font-size:14px;font-weight:500;color:var(--el-text-color-primary)}.settings-dialog-scope .setting-input{width:60%;max-width:250px}.settings-dialog-scope .dialog-action{display:flex;justify-content:flex-end;padding-top:16px}.settings-dialog-scope .confirm-btn{min-width:100px;border-radius:8px}.settings-dialog-scope .radio-card-group.grid-2x2{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.settings-dialog-scope .radio-card-group.grid-2x2 .radio-card{width:100%;box-sizing:border-box;display:flex;align-items:center;justify-content:center;gap:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.settings-dialog-scope .radio-icon{font-size:14px;opacity:.8;width:20px;text-align:center;display:inline-block}.settings-dialog-scope .radio-card.is-checked .radio-icon{opacity:1}@media (min-width:769px){.settings-dialog-scope .radio-card-group.grid-2x2 .radio-card{justify-content:flex-start;padding-left:20px}}@media (max-width:768px){.settings-dialog-scope .dialog-section{padding:12px;overflow:hidden}.settings-dialog-scope .radio-card-group{flex-direction:column}.settings-dialog-scope .radio-card-group .radio-card{width:100%;text-align:center}.settings-dialog-scope .setting-item{flex-direction:column;align-items:flex-start;gap:10px}.settings-dialog-scope .setting-input{width:100%!important;max-width:none!important}.settings-dialog-scope .radio-card-group.grid-2x2{grid-template-columns:repeat(2,1fr);gap:8px}.settings-dialog-scope .radio-card-group.grid-2x2 .radio-card{padding:10px 12px;font-size:13px;justify-content:center}}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button:first-child:last-child{border-bottom-left-radius:var(--el-border-radius-base);border-bottom-right-radius:var(--el-border-radius-base);border-top-left-radius:var(--el-border-radius-base);border-top-right-radius:var(--el-border-radius-base)}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:var(--el-border-radius-round)}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button.is-active,.el-button-group>.el-button:active,.el-button-group>.el-button:focus,.el-button-group>.el-button:hover{z-index:1}.el-button-group--horizontal{display:inline-block;vertical-align:middle}.el-button-group--horizontal:after,.el-button-group--horizontal:before{content:"";display:table}.el-button-group--horizontal:after{clear:both}.el-button-group--horizontal>.el-button{float:left;position:relative}.el-button-group--horizontal>.el-button:first-child{border-bottom-right-radius:0;border-top-right-radius:0}.el-button-group--horizontal>.el-button:last-child{border-bottom-left-radius:0;border-top-left-radius:0}.el-button-group--horizontal>.el-button:not(:last-child){margin-right:-1px}.el-button-group--horizontal .el-button--primary:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--primary:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--primary:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--success:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--success:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--success:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--warning:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--warning:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--warning:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--danger:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--danger:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--danger:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--info:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--info:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--info:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal>.el-dropdown>.el-button{border-bottom-left-radius:0;border-left-color:var(--el-button-divide-border-color);border-top-left-radius:0}.el-button-group--vertical{align-items:stretch;display:inline-flex;flex-direction:column}.el-button-group--vertical>.el-button{margin-top:-1px}.el-button-group--vertical>.el-button:first-child{border-bottom-left-radius:0;border-bottom-right-radius:0}.el-button-group--vertical>.el-button:last-child{border-top-left-radius:0;border-top-right-radius:0}.el-button-group--vertical>.el-dropdown{margin-top:-1px}.el-button-group--vertical>.el-dropdown>.el-button{border-left-color:var(--el-button-divide-border-color);border-top-left-radius:0;border-top-right-radius:0}.el-button-group--vertical .el-button--primary:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--primary:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--primary:not(:first-child):not(:last-child){border-bottom-color:var(--el-button-divide-border-color);border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--success:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--success:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--success:not(:first-child):not(:last-child){border-bottom-color:var(--el-button-divide-border-color);border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--warning:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--warning:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--warning:not(:first-child):not(:last-child){border-bottom-color:var(--el-button-divide-border-color);border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--danger:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--danger:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--danger:not(:first-child):not(:last-child){border-bottom-color:var(--el-button-divide-border-color);border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--info:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--info:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--info:not(:first-child):not(:last-child){border-bottom-color:var(--el-button-divide-border-color);border-top-color:var(--el-button-divide-border-color)}.el-dropdown{--el-dropdown-menu-box-shadow:var(--el-box-shadow-light);--el-dropdown-menuItem-hover-fill:var(--el-color-primary-light-9);--el-dropdown-menuItem-hover-color:var(--el-color-primary);--el-dropdown-menu-index:10;color:var(--el-text-color-regular);display:inline-flex;font-size:var(--el-font-size-base);line-height:1;position:relative;vertical-align:top}.el-dropdown.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-dropdown__popper{--el-dropdown-menu-box-shadow:var(--el-box-shadow-light);--el-dropdown-menuItem-hover-fill:var(--el-color-primary-light-9);--el-dropdown-menuItem-hover-color:var(--el-color-primary);--el-dropdown-menu-index:10}.el-dropdown__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-dropdown-menu-box-shadow)}.el-dropdown__popper.el-popper,.el-dropdown__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-dropdown__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-dropdown__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-dropdown__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-dropdown__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-dropdown__popper .el-dropdown-menu{border:none}.el-dropdown__popper .el-dropdown__popper-selfdefine{outline:none}.el-dropdown__popper .el-scrollbar__bar{z-index:calc(var(--el-dropdown-menu-index) + 1)}.el-dropdown__popper .el-dropdown__list{box-sizing:border-box;list-style:none;margin:0;padding:0}.el-dropdown .el-dropdown__caret-button{align-items:center;border-left:none;display:inline-flex;justify-content:center;padding-left:0;padding-right:0;width:32px}.el-dropdown .el-dropdown__caret-button>span{display:inline-flex}.el-dropdown .el-dropdown__caret-button:before{background:var(--el-overlay-color-lighter);bottom:-1px;content:"";display:block;left:0;position:absolute;top:-1px;width:1px}.el-dropdown .el-dropdown__caret-button.el-button:before{background:var(--el-border-color);opacity:.5}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{font-size:inherit;padding-left:0}.el-dropdown .el-dropdown-selfdefine{outline:none}.el-dropdown--large .el-dropdown__caret-button{width:40px}.el-dropdown--small .el-dropdown__caret-button{width:24px}.el-dropdown-menu{background-color:var(--el-bg-color-overlay);border:none;border-radius:var(--el-border-radius-base);box-shadow:none;left:0;list-style:none;margin:0;padding:5px 0;position:relative;top:0;z-index:var(--el-dropdown-menu-index)}.el-dropdown-menu__item{align-items:center;color:var(--el-text-color-regular);cursor:pointer;display:flex;font-size:var(--el-font-size-base);line-height:22px;list-style:none;margin:0;outline:none;padding:5px 16px;white-space:nowrap}.el-dropdown-menu__item:not(.is-disabled):focus,.el-dropdown-menu__item:not(.is-disabled):hover{background-color:var(--el-dropdown-menuItem-hover-fill);color:var(--el-dropdown-menuItem-hover-color)}.el-dropdown-menu__item i{margin-right:5px}.el-dropdown-menu__item--divided{border-top:1px solid var(--el-border-color-lighter);margin:6px 0}.el-dropdown-menu__item.is-disabled{color:var(--el-text-color-disabled);cursor:not-allowed}.el-dropdown-menu--large{padding:7px 0}.el-dropdown-menu--large .el-dropdown-menu__item{font-size:14px;line-height:22px;padding:7px 20px}.el-dropdown-menu--large .el-dropdown-menu__item--divided{margin:8px 0}.el-dropdown-menu--small{padding:3px 0}.el-dropdown-menu--small .el-dropdown-menu__item{font-size:12px;line-height:20px;padding:2px 12px}.el-dropdown-menu--small .el-dropdown-menu__item--divided{margin:4px 0}.el-card{--el-card-border-color:var(--el-border-color-light);--el-card-border-radius:4px;--el-card-padding:20px;--el-card-bg-color:var(--el-fill-color-blank);background-color:var(--el-card-bg-color);border:1px solid var(--el-card-border-color);border-radius:var(--el-card-border-radius);color:var(--el-text-color-primary);display:flex;flex-direction:column;overflow:hidden;transition:var(--el-transition-duration)}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{box-shadow:var(--el-box-shadow-light)}.el-card__header{border-bottom:1px solid var(--el-card-border-color);box-sizing:border-box;padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding)}.el-card__body{flex:1;overflow:auto;padding:var(--el-card-padding)}.el-card__footer{border-top:1px solid var(--el-card-border-color);box-sizing:border-box;padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding)}.directory-tree-popover{padding:0!important;border-radius:12px!important;box-shadow:var(--el-box-shadow-light)!important}.el-zoom-in-top-enter-active.directory-tree-popover,.el-zoom-in-top-leave-active.directory-tree-popover{transition:transform .15s ease-out,opacity .15s ease-out!important}.directory-tree-drawer{border-radius:16px 16px 0 0!important}.directory-tree-drawer .el-drawer__header{margin-bottom:0;padding:16px 20px;border-bottom:1px solid var(--el-border-color-lighter)}.directory-tree-drawer .el-drawer__body{padding:0} \ No newline at end of file diff --git a/frontend-dist/css/473.f3f669e8.css.gz b/frontend-dist/css/473.f3f669e8.css.gz deleted file mode 100644 index 669680e7788a167bc6a077d761bf1d2f4e5661e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6054 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 diff --git a/frontend-dist/css/502.7f4cb9f9.css b/frontend-dist/css/502.7f4cb9f9.css new file mode 100644 index 0000000..3ccbeb1 --- /dev/null +++ b/frontend-dist/css/502.7f4cb9f9.css @@ -0,0 +1 @@ +.history-container[data-v-7da2f8c2]{position:fixed;top:0;left:0;width:100%;height:100%;z-index:2000;display:flex;flex-direction:column;color:var(--upload-text-color);clip-path:circle(0 at calc(100% - 200px) 50px);opacity:0;transition:clip-path .6s cubic-bezier(.4,0,.2,1),opacity .3s ease}.history-container[data-v-7da2f8c2]:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:var(--admin-container-bg-color);z-index:-1;will-change:transform;transform:translateZ(0)}.history-container.active[data-v-7da2f8c2]{clip-path:circle(150% at calc(100% - 200px) 50px);opacity:1}.history-header[data-v-7da2f8c2]{padding:20px 40px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--el-border-color-lighter)}.header-left[data-v-7da2f8c2]{display:flex;align-items:baseline;gap:15px}.header-left h2[data-v-7da2f8c2]{margin:0;font-size:24px;background:var(--upload-main-title-color);background-size:200% auto;background-clip:text;-webkit-background-clip:text;color:transparent;font-weight:700}.record-count[data-v-7da2f8c2]{color:var(--upload-text-color);font-size:14px;opacity:.8}.header-right[data-v-7da2f8c2]{display:flex;gap:10px}.header-right .el-button[data-v-7da2f8c2]{background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);border:none;color:var(--theme-toggle-color);transition:all .3s ease}.header-right .el-button[data-v-7da2f8c2]:hover{transform:scale(1.05);box-shadow:var(--toolbar-button-shadow-hover)}.header-right .el-button.el-button--danger[data-v-7da2f8c2]{background:#dc2626;color:#fff}.history-content[data-v-7da2f8c2]{flex:1;overflow-y:auto;padding:20px 40px}.grid-view[data-v-7da2f8c2]{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:20px}.grid-item[data-v-7da2f8c2]{background:var(--toolbar-button-bg-color);border-radius:12px;overflow:hidden;box-shadow:var(--toolbar-button-shadow);transition:transform .3s ease,box-shadow .3s ease;border:1px solid var(--glass-border)}.grid-item[data-v-7da2f8c2]:hover{box-shadow:var(--toolbar-button-shadow-hover)}.grid-preview[data-v-7da2f8c2]{height:160px;position:relative;background:var(--el-fill-color-light);display:flex;align-items:center;justify-content:center;overflow:hidden}.grid-preview img[data-v-7da2f8c2],.grid-preview video[data-v-7da2f8c2]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.file-icon-wrapper[data-v-7da2f8c2]{font-size:48px;color:var(--theme-toggle-color);opacity:.5}.grid-overlay[data-v-7da2f8c2]{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .3s ease}.grid-item:hover .grid-overlay[data-v-7da2f8c2]{opacity:1}.grid-actions[data-v-7da2f8c2]{display:flex;gap:15px}.grid-info[data-v-7da2f8c2]{padding:12px}.file-name[data-v-7da2f8c2]{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:5px;color:var(--upload-text-color)}.upload-time[data-v-7da2f8c2]{font-size:12px;color:var(--upload-text-color);opacity:.6}.list-view[data-v-7da2f8c2]{display:flex;flex-direction:column;gap:10px}.list-item[data-v-7da2f8c2]{display:flex;align-items:center;padding:12px 15px;background:var(--toolbar-button-bg-color);border-radius:12px;box-shadow:var(--toolbar-button-shadow);border:1px solid var(--glass-border);transition:all .3s ease}.list-item[data-v-7da2f8c2]:hover{transform:translateX(5px);box-shadow:var(--toolbar-button-shadow-hover)}.list-preview[data-v-7da2f8c2]{width:50px;height:50px;border-radius:8px;overflow:hidden;margin-right:15px;background:var(--el-fill-color-light);display:flex;align-items:center;justify-content:center;flex-shrink:0}.list-preview img[data-v-7da2f8c2],.list-preview video[data-v-7da2f8c2]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.file-icon-wrapper-small[data-v-7da2f8c2]{font-size:24px;color:var(--theme-toggle-color);opacity:.5}.list-info[data-v-7da2f8c2]{flex:1;min-width:0;margin-right:20px}.file-url[data-v-7da2f8c2]{font-size:12px;color:var(--upload-text-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:.6}.list-meta[data-v-7da2f8c2]{margin-right:20px;text-align:right;min-width:140px}.list-actions[data-v-7da2f8c2]{display:flex;gap:8px}.empty-state[data-v-7da2f8c2]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--upload-text-color);font-size:18px;opacity:.5}.empty-icon[data-v-7da2f8c2]{font-size:64px;margin-bottom:20px;color:var(--theme-toggle-color)}.history-content[data-v-7da2f8c2]::-webkit-scrollbar{width:8px}.history-content[data-v-7da2f8c2]::-webkit-scrollbar-track{background:transparent}.history-content[data-v-7da2f8c2]::-webkit-scrollbar-thumb{background:var(--el-border-color);border-radius:4px}.history-content[data-v-7da2f8c2]::-webkit-scrollbar-thumb:hover{background:var(--el-border-color-darker)}.action-btn-view[data-v-7da2f8c2]{background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);border:none;color:var(--theme-toggle-color)}.action-btn-view[data-v-7da2f8c2]:hover{box-shadow:var(--toolbar-button-shadow-hover);color:var(--el-color-primary)}.history-group[data-v-7da2f8c2]{position:relative;padding-left:30px;border-left:2px solid var(--el-border-color-lighter);margin-left:10px;padding-bottom:30px}.history-group[data-v-7da2f8c2]:last-child{border-left:2px solid transparent}.timeline-header[data-v-7da2f8c2]{display:flex;align-items:center;margin-bottom:20px;position:relative}.timeline-dot[data-v-7da2f8c2]{position:absolute;left:-38px;width:14px;height:14px;border-radius:50%;background:var(--el-upload-dragger-uniform-color);box-shadow:none;z-index:2;box-sizing:border-box}.date-label[data-v-7da2f8c2]{font-size:20px;font-weight:700;background:var(--upload-main-title-color);background-size:200% auto;background-clip:text;-webkit-background-clip:text;color:transparent}.load-more-container[data-v-7da2f8c2]{display:flex;justify-content:center;padding:20px}.loading-indicator[data-v-7da2f8c2]{display:flex;align-items:center;gap:8px;color:var(--el-upload-dragger-uniform-color)}.load-more-hint[data-v-7da2f8c2],.no-more-hint[data-v-7da2f8c2]{color:var(--upload-text-color);opacity:.5;font-size:14px}.no-more-hint[data-v-7da2f8c2]{text-align:center;padding:20px}@media (max-width:768px){.history-header[data-v-7da2f8c2]{padding:15px 20px}.header-left h2[data-v-7da2f8c2]{font-size:20px}.history-content[data-v-7da2f8c2]{padding:15px 20px}.grid-view[data-v-7da2f8c2]{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:15px}.grid-preview[data-v-7da2f8c2]{height:120px}.list-meta[data-v-7da2f8c2]{display:none}.list-info[data-v-7da2f8c2]{margin-right:10px}}.page-footer[data-v-08acbaa9]{display:flex;justify-content:center;align-items:center;width:100vw;color:var(--page-footer-text-color);font-size:large;-webkit-user-select:none;-moz-user-select:none;user-select:none}@media (max-width:768px){.page-footer[data-v-08acbaa9]{font-size:small}}.footer-name[data-v-08acbaa9]{color:var(--page-footer-name-color);font-weight:700;text-decoration:none;position:relative;transition:all .3s ease}.footer-name[data-v-08acbaa9]:after{content:"";position:absolute;width:0;height:2px;bottom:-2px;left:0;background-color:var(--page-footer-name-color);transition:width .3s ease-in-out}.footer-name[data-v-08acbaa9]:hover:after{width:100%}.footer-link-icon[data-v-08acbaa9]{color:var(--page-footer-name-color);margin-left:5px;transition:transform .3s ease-in-out}.footer-link-icon[data-v-08acbaa9]:hover{transform:scale(1.2) rotate(-12deg)}.el-input-number{display:inline-flex;line-height:30px;position:relative;vertical-align:middle;width:150px}.el-input-number .el-input__wrapper{padding-left:42px;padding-right:42px}.el-input-number .el-input__inner{-webkit-appearance:none;-moz-appearance:textfield;line-height:1;text-align:center}.el-input-number .el-input__inner::-webkit-inner-spin-button,.el-input-number .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-input-number.is-left .el-input__inner{text-align:left}.el-input-number.is-right .el-input__inner{text-align:right}.el-input-number.is-center .el-input__inner{text-align:center}.el-input-number__decrease,.el-input-number__increase{align-items:center;background:var(--el-fill-color-light);bottom:1px;color:var(--el-text-color-regular);cursor:pointer;display:flex;font-size:13px;height:auto;justify-content:center;position:absolute;top:1px;-webkit-user-select:none;user-select:none;width:32px;z-index:1}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:var(--el-color-primary)}.el-input-number__decrease:hover~.el-input:not(.is-disabled) .el-input__wrapper,.el-input-number__increase:hover~.el-input:not(.is-disabled) .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-input-number__increase{border-left:var(--el-border);border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0;right:1px}.el-input-number__decrease{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);border-right:var(--el-border);left:1px}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:var(--el-disabled-border-color);color:var(--el-disabled-border-color)}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:var(--el-disabled-border-color);cursor:not-allowed}.el-input-number--large{line-height:38px;width:180px}.el-input-number--large .el-input-number__decrease,.el-input-number--large .el-input-number__increase{font-size:14px;width:40px}.el-input-number--large.is-controls-right .el-input--large .el-input__wrapper{padding-right:47px}.el-input-number--large .el-input--large .el-input__wrapper{padding-left:47px;padding-right:47px}.el-input-number--small{line-height:22px;width:120px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{font-size:12px;width:24px}.el-input-number--small.is-controls-right .el-input--small .el-input__wrapper{padding-right:31px}.el-input-number--small .el-input--small .el-input__wrapper{padding-left:31px;padding-right:31px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{transform:scale(.9)}.el-input-number.is-without-controls .el-input__wrapper{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__wrapper{padding-left:15px;padding-right:42px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{--el-input-number-controls-height:15px;height:var(--el-input-number-controls-height);line-height:var(--el-input-number-controls-height)}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-bottom:var(--el-border);border-radius:0 var(--el-border-radius-base) 0 0;bottom:auto;left:auto}.el-input-number.is-controls-right .el-input-number__decrease{border-left:var(--el-border);border-radius:0 0 var(--el-border-radius-base) 0;border-right:none;left:auto;right:1px;top:auto}.el-input-number.is-controls-right[class*=large] [class*=decrease],.el-input-number.is-controls-right[class*=large] [class*=increase]{--el-input-number-controls-height:19px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{--el-input-number-controls-height:11px}.el-slider{--el-slider-main-bg-color:var(--el-color-primary);--el-slider-runway-bg-color:var(--el-border-color-light);--el-slider-stop-bg-color:var(--el-color-white);--el-slider-disabled-color:var(--el-text-color-placeholder);--el-slider-border-radius:3px;--el-slider-height:6px;--el-slider-button-size:20px;--el-slider-button-wrapper-size:36px;--el-slider-button-wrapper-offset:-15px;align-items:center;display:flex;height:32px;width:100%}.el-slider__runway{background-color:var(--el-slider-runway-bg-color);border-radius:var(--el-slider-border-radius);cursor:pointer;flex:1;height:var(--el-slider-height);position:relative}.el-slider__runway.show-input{margin-right:30px;width:auto}.el-slider__runway.is-disabled{cursor:default}.el-slider__runway.is-disabled .el-slider__bar{background-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button{border-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button-wrapper.dragging,.el-slider__runway.is-disabled .el-slider__button-wrapper.hover,.el-slider__runway.is-disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.is-disabled .el-slider__button.dragging,.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button:hover{transform:scale(1)}.el-slider__runway.is-disabled .el-slider__button.dragging,.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button:hover{cursor:not-allowed}.el-slider__input{flex-shrink:0;width:130px}.el-slider__bar{background-color:var(--el-slider-main-bg-color);border-bottom-left-radius:var(--el-slider-border-radius);border-top-left-radius:var(--el-slider-border-radius);height:var(--el-slider-height);position:absolute}.el-slider__button-wrapper{background-color:transparent;height:var(--el-slider-button-wrapper-size);line-height:normal;outline:none;position:absolute;text-align:center;top:var(--el-slider-button-wrapper-offset);transform:translateX(-50%);-webkit-user-select:none;user-select:none;width:var(--el-slider-button-wrapper-size);z-index:1}.el-slider__button-wrapper:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:grab}.el-slider__button-wrapper.dragging{cursor:grabbing}.el-slider__button{background-color:var(--el-color-white);border:2px solid var(--el-slider-main-bg-color);border-radius:50%;box-sizing:border-box;display:inline-block;height:var(--el-slider-button-size);transition:var(--el-transition-duration-fast);-webkit-user-select:none;user-select:none;vertical-align:middle;width:var(--el-slider-button-size)}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:grab}.el-slider__button.dragging{cursor:grabbing}.el-slider__stop{background-color:var(--el-slider-stop-bg-color);border-radius:var(--el-border-radius-circle);height:var(--el-slider-height);position:absolute;transform:translateX(-50%);width:var(--el-slider-height)}.el-slider__marks{height:100%;left:12px;top:0;width:18px}.el-slider__marks-text{color:var(--el-color-info);font-size:14px;margin-top:15px;position:absolute;transform:translateX(-50%);white-space:pre}.el-slider.is-vertical{display:inline-flex;flex:0;height:100%;position:relative;width:auto}.el-slider.is-vertical .el-slider__runway{height:100%;margin:0 16px;width:var(--el-slider-height)}.el-slider.is-vertical .el-slider__bar{border-radius:0 0 3px 3px;height:auto;width:var(--el-slider-height)}.el-slider.is-vertical .el-slider__button-wrapper{left:var(--el-slider-button-wrapper-offset);top:auto;transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{transform:translateY(50%)}.el-slider.is-vertical .el-slider__marks-text{left:15px;margin-top:0;transform:translateY(50%)}.el-slider--large{height:40px}.el-slider--small{height:24px}.channel-icon-wrapper[data-v-ce6ff2ce]{display:inline-flex;align-items:center;justify-content:center;line-height:1}.channel-icon-wrapper[data-v-ce6ff2ce] svg,.channel-svg-icon[data-v-ce6ff2ce]{width:1em;height:1em;fill:currentColor}.channel-icon-wrapper.channel-brand-telegram[data-v-ce6ff2ce]{color:#229ed9}.channel-icon-wrapper.channel-brand-cfr2[data-v-ce6ff2ce]{color:#f38020}.channel-icon-wrapper.channel-brand-s3[data-v-ce6ff2ce]{color:#f90}.channel-icon-wrapper.channel-brand-discord[data-v-ce6ff2ce]{color:#5865f2}.channel-icon-wrapper.channel-brand-huggingface[data-v-ce6ff2ce]{color:#ff9d00}.channel-icon-wrapper.channel-brand-webdav[data-v-ce6ff2ce]{color:#14b8a6}.channel-type-setting[data-v-25aa00bd]{flex-direction:column;align-items:stretch;gap:12px}.channel-type-toolbar[data-v-25aa00bd]{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%}.channel-visibility-filter[data-v-25aa00bd]{flex-shrink:0}.channel-visibility-filter[data-v-25aa00bd] .el-radio-button__inner{padding:6px 10px;font-size:12px}.channel-empty-state[data-v-25aa00bd]{width:100%;padding:12px;box-sizing:border-box;border:1px dashed var(--el-border-color);border-radius:8px;color:var(--el-text-color-secondary);font-size:13px;text-align:center}.radio-card-group.compact[data-v-25aa00bd]{gap:8px;width:100%}.radio-card-group.compact .radio-card[data-v-25aa00bd]{padding:8px 12px;font-size:13px}.radio-card-group.compact .radio-card[data-v-25aa00bd] .el-radio__label{display:flex;align-items:center;gap:6px}.radio-card-group.compact .channel-icon[data-v-25aa00bd]{width:18px;font-size:18px;text-align:center;flex-shrink:0}.slider-item[data-v-25aa00bd]{flex-direction:column;align-items:flex-start;gap:12px}.slider-wrapper[data-v-25aa00bd]{display:flex;align-items:center;gap:12px;width:100%}.slider-wrapper .el-slider[data-v-25aa00bd]{flex:1;min-width:0}.slider-input[data-v-25aa00bd]{width:96px!important;flex-shrink:0}.slider-input[data-v-25aa00bd] .el-input__inner{text-align:center}.slider-input-wrapper[data-v-25aa00bd]{display:flex;align-items:center;gap:6px;flex-shrink:0}.slider-unit[data-v-25aa00bd]{font-size:13px;font-weight:500;color:var(--el-text-color-secondary)}@media (max-width:768px){.channel-type-toolbar[data-v-25aa00bd]{align-items:flex-start;flex-direction:column}.channel-visibility-filter[data-v-25aa00bd]{display:flex;width:100%}.channel-visibility-filter .el-radio-button[data-v-25aa00bd]{flex:1}.channel-visibility-filter[data-v-25aa00bd] .el-radio-button__inner,.setting-item .radio-card-group.compact[data-v-25aa00bd]{width:100%}.radio-card-group.compact[data-v-25aa00bd]{flex-direction:row;display:grid;grid-template-columns:repeat(2,1fr);gap:8px;width:100%}.radio-card-group.compact .radio-card[data-v-25aa00bd]{width:100%;box-sizing:border-box;justify-content:center;flex:1}.radio-card-group.compact .radio-card[data-v-25aa00bd] .el-radio__label{justify-content:center}.slider-wrapper[data-v-25aa00bd]{gap:8px}}.upload-list-item[data-v-4a46527b]{display:flex;align-items:center;justify-content:space-between;margin:8px 10px;border:1px solid var(--upload-list-item-border-color,rgba(37,99,235,.1));padding:10px 12px;border-radius:16px;background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);box-shadow:none;transition:all .3s cubic-bezier(.4,0,.2,1)}.upload-list-item[data-v-4a46527b]:hover{border-color:var(--upload-list-item-hover-border,rgba(37,99,235,.25));box-shadow:none}.upload-list-item-content[data-v-4a46527b]{display:flex;flex-direction:column;margin-left:10px}.upload-list-item-action[data-v-4a46527b]{display:flex;flex-direction:column;align-items:center;gap:6px}.upload-list-item-url-row[data-v-4a46527b]{display:flex;flex-direction:row;align-items:center;width:38vw;gap:8px;margin-bottom:6px}.upload-list-item-url-row[data-v-4a46527b]:last-child{margin-bottom:0}.upload-list-item-url[data-v-4a46527b]{display:flex;flex-direction:column}.file-icon[data-v-4a46527b]{font-size:30px;color:var(--upload-list-file-icon-color)}.upload-list-item-name-wrapper[data-v-4a46527b]{display:flex;align-items:center;justify-content:center;padding:8px 16px;background:var(--file-name-bg,rgba(37,99,235,.05));border-radius:10px;margin-bottom:8px;border:1px solid var(--file-name-border,rgba(37,99,235,.12));transition:all .3s ease}.upload-list-item-name-wrapper[data-v-4a46527b]:hover{background:var(--file-name-hover-bg,rgba(37,99,235,.09));border-color:var(--file-name-hover-border,rgba(37,99,235,.2))}.upload-list-item-name[data-v-4a46527b]{font-size:14px;font-weight:600;max-width:28vw;color:var(--el-text-color-primary);letter-spacing:.3px;text-align:center}.upload-list-item-progress[data-v-4a46527b]{margin-top:8px;width:28vw;padding:4px 8px;background:var(--progress-wrapper-bg,rgba(37,99,235,.04));border-radius:12px;border:1px solid var(--progress-wrapper-border,rgba(37,99,235,.1))}.upload-list-item-progress[data-v-4a46527b] .el-progress{--el-color-primary:var(--primary-color)}.upload-list-item-progress[data-v-4a46527b] .el-progress-bar{padding-right:0;margin-right:0}.upload-list-item-progress[data-v-4a46527b] .el-progress-bar__outer{height:10px!important;border-radius:8px;background:var(--progress-outer-bg,rgba(0,0,0,.045));box-shadow:none;overflow:hidden}.upload-list-item-progress[data-v-4a46527b] .el-progress-bar__inner{border-radius:8px;background:var(--primary-color)!important;box-shadow:none;position:relative;overflow:hidden;transition:width .3s ease}.upload-list-item-progress[data-v-4a46527b] .el-progress-bar__inner:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:hsla(0,0%,100%,.12);pointer-events:none}.upload-list-item-progress[data-v-4a46527b] .el-progress-bar__inner:before{content:"";position:absolute;top:0;left:-100%;width:300%;height:100%;background:repeating-linear-gradient(45deg,transparent,transparent 8px,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 16px);animation:progressStripes-4a46527b 1s linear infinite}.upload-list-item-progress[data-v-4a46527b] .el-progress.is-success .el-progress-bar__inner{background:#16a34a!important;background-size:200% 100%;box-shadow:none;animation:none}.upload-list-item-progress[data-v-4a46527b] .el-progress.is-success .el-progress-bar__inner:after,.upload-list-item-progress[data-v-4a46527b] .el-progress.is-success .el-progress-bar__inner:before{animation:none;background:none}.upload-list-item-progress[data-v-4a46527b] .el-progress.is-exception .el-progress-bar__inner{background:#dc2626!important;background-size:200% 100%;box-shadow:none;animation:none}.upload-list-item-progress[data-v-4a46527b] .el-progress.is-exception .el-progress-bar__inner:after,.upload-list-item-progress[data-v-4a46527b] .el-progress.is-exception .el-progress-bar__inner:before{animation:none;background:none}@keyframes progressStripes-4a46527b{0%{transform:translateX(0)}to{transform:translateX(22.627px)}}.upload-list-item-url[data-v-4a46527b] .el-input{transition:all .3s cubic-bezier(.4,0,.2,1)}.upload-list-item-url[data-v-4a46527b] .el-input__wrapper{border-radius:10px;box-shadow:none;transition:all .3s cubic-bezier(.4,0,.2,1);background:var(--el-fill-color-blank);border:1px solid var(--el-border-color-lighter);overflow:hidden;position:relative;padding:0}.upload-list-item-url[data-v-4a46527b] .el-input-group>.el-input__wrapper{border-radius:0 9px 9px 0!important}.upload-list-item-url[data-v-4a46527b] .el-input__wrapper:hover{box-shadow:none;border-color:var(--el-color-primary-light-5)}.upload-list-item-url[data-v-4a46527b] .el-input__wrapper.is-focus{box-shadow:none;border-color:var(--el-color-primary)}.upload-list-item-url[data-v-4a46527b] .el-input__wrapper.is-focus:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(37,99,235,.08),transparent);animation:shimmer-4a46527b 2s infinite;z-index:0}@keyframes shimmer-4a46527b{0%{left:-100%}to{left:100%}}.upload-list-item-url[data-v-4a46527b] .el-input__inner{font-size:13px;font-family:Courier New,Monaco,monospace;color:var(--el-text-color-regular);transition:all .3s ease;padding-left:12px;position:relative;z-index:1;border-radius:0 10px 10px 0}.upload-list-item-url[data-v-4a46527b] .el-input__inner::-moz-selection{background-color:var(--el-color-primary-light-7)}.upload-list-item-url[data-v-4a46527b] .el-input__inner::selection{background-color:var(--el-color-primary-light-7)}.upload-list-item-url[data-v-4a46527b] .el-input-group__prepend{background:var(--el-color-primary-light-9);color:var(--el-color-primary);font-weight:600;font-size:12px;border:none;padding:0 14px;margin:0;border-radius:9px 0 0 9px;box-shadow:none;transition:all .3s ease;letter-spacing:.5px;position:relative;z-index:1}.upload-list-item-url[data-v-4a46527b] .el-input-group__prepend:after{content:"";position:absolute;right:0;top:50%;transform:translateY(-50%);height:60%;width:1px;background:var(--el-color-primary-light-7);opacity:.3;transition:all .3s ease}.upload-list-item-url[data-v-4a46527b] .el-input:hover .el-input-group__prepend{background:var(--el-color-primary-light-8)}.upload-list-item-url[data-v-4a46527b] .el-input:hover .el-input-group__prepend:after{opacity:.5}.upload-list-item-url[data-v-4a46527b] .el-input.is-focus .el-input-group__prepend{background:var(--el-color-primary);color:#fff;animation:prependPulse-4a46527b 2s ease-in-out infinite}.upload-list-item-url[data-v-4a46527b] .el-input.is-focus .el-input-group__prepend:after{background:hsla(0,0%,100%,.3);opacity:1}@keyframes prependPulse-4a46527b{0%,to{opacity:1}50%{opacity:.95}}.modern-file-action-btn[data-v-4a46527b]{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:10px;background:var(--upload-action-btn-bg);color:var(--upload-action-btn-color);box-shadow:var(--upload-action-btn-shadow);cursor:pointer;transition:background-color .22s ease,color .22s ease,transform .22s ease;font-size:16px;position:relative;overflow:hidden;margin:4px 0;outline:none}.modern-file-action-btn[data-v-4a46527b]:before{content:"";position:absolute;inset:2px;border-radius:8px;background:currentColor;opacity:0;transition:opacity .22s ease}.modern-file-action-btn[data-v-4a46527b]:hover{background:var(--upload-action-btn-hover-bg)}.modern-file-action-btn[data-v-4a46527b]:hover:before{opacity:.08}.modern-file-action-btn[data-v-4a46527b]:active{transform:scale(.96)}.modern-file-action-btn-primary[data-v-4a46527b]{color:var(--upload-action-copy-color)}.modern-file-action-btn-danger[data-v-4a46527b]{color:var(--upload-action-danger-color);background:var(--upload-action-danger-bg)}.modern-file-action-btn-danger[data-v-4a46527b]:hover{background:var(--upload-action-danger-hover-bg)}@media (max-width:768px){.upload-list-item[data-v-4a46527b]{margin:5px 6px;padding:7px 8px;border-radius:12px}.upload-list-item-content[data-v-4a46527b]{margin-left:2px}.upload-list-item-action[data-v-4a46527b]{gap:3px}.upload-list-item-url-row[data-v-4a46527b]{width:42vw;flex-direction:column;gap:4px;margin-bottom:4px}.upload-list-item-progress[data-v-4a46527b]{width:32vw;margin-top:5px;padding:2px 5px;border-radius:9px}.upload-list-item-progress[data-v-4a46527b] .el-progress-bar__outer{height:6px!important}.upload-list-item-url[data-v-4a46527b] .el-input__wrapper{border-radius:7px}.upload-list-item-url[data-v-4a46527b] .el-input__inner{font-size:10px;padding-left:8px}.upload-list-item-url[data-v-4a46527b] .el-input-group__prepend{font-size:9px;padding:0 6px;border-radius:7px 0 0 7px}.modern-file-action-btn[data-v-4a46527b]{width:26px;height:26px;margin:2px 0;border-radius:8px;font-size:12px}.upload-list-item-name-wrapper[data-v-4a46527b]{padding:3px 8px;margin-bottom:5px;border-radius:7px}.upload-list-item-name[data-v-4a46527b]{font-size:11px;width:32vw}}.el-upload{--el-upload-dragger-padding-horizontal:10px;--el-upload-dragger-padding-vertical:40px;--el-upload-list-picture-card-size:var(--el-upload-picture-card-size);--el-upload-picture-card-size:148px;align-items:center;cursor:pointer;display:inline-flex;justify-content:center;outline:none}.el-upload.is-disabled{cursor:not-allowed}.el-upload.is-disabled:focus{color:inherit}.el-upload.is-disabled:focus,.el-upload.is-disabled:focus .el-upload-dragger{border-color:var(--el-border-color-darker)}.el-upload.is-disabled .el-upload-dragger{background-color:var(--el-disabled-bg-color);cursor:not-allowed}.el-upload.is-disabled .el-upload-dragger .el-upload__text{color:var(--el-text-color-placeholder)}.el-upload.is-disabled .el-upload-dragger .el-upload__text em{color:var(--el-disabled-text-color)}.el-upload.is-disabled .el-upload-dragger:hover{border-color:var(--el-border-color-darker)}.el-upload__input{display:none}.el-upload__tip{color:var(--el-text-color-regular);font-size:12px;margin-top:7px}.el-upload iframe{filter:alpha(opacity=0);left:0;opacity:0;position:absolute;top:0;z-index:-1}.el-upload--picture-card{align-items:center;background-color:var(--el-fill-color-lighter);border:1px dashed var(--el-border-color-darker);border-radius:6px;box-sizing:border-box;cursor:pointer;display:inline-flex;height:var(--el-upload-picture-card-size);justify-content:center;vertical-align:top;width:var(--el-upload-picture-card-size)}.el-upload--picture-card>i{color:var(--el-text-color-secondary);font-size:28px}.el-upload--picture-card:hover{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-upload.is-drag{display:block}.el-upload:focus{color:var(--el-color-primary)}.el-upload:focus,.el-upload:focus .el-upload-dragger{border-color:var(--el-color-primary)}.el-upload-dragger{background-color:var(--el-fill-color-blank);border:1px dashed var(--el-border-color);border-radius:6px;box-sizing:border-box;cursor:pointer;overflow:hidden;padding:var(--el-upload-dragger-padding-vertical) var(--el-upload-dragger-padding-horizontal);position:relative;text-align:center}.el-upload-dragger .el-icon--upload{color:var(--el-text-color-placeholder);font-size:67px;line-height:50px;margin-bottom:16px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:var(--el-border);margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:var(--el-text-color-regular);font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:var(--el-color-primary);font-style:normal}.el-upload-dragger:hover{border-color:var(--el-color-primary)}.el-upload-dragger.is-dragover{background-color:var(--el-color-primary-light-9);border:2px dashed var(--el-color-primary);padding:calc(var(--el-upload-dragger-padding-vertical) - 1px) calc(var(--el-upload-dragger-padding-horizontal) - 1px)}.el-upload-list{--el-upload-dragger-padding-horizontal:10px;--el-upload-dragger-padding-vertical:40px;--el-upload-list-picture-card-size:var(--el-upload-picture-card-size);--el-upload-picture-card-size:148px;list-style:none;margin:10px 0 0;padding:0;position:relative}.el-upload-list__item{border-radius:4px;box-sizing:border-box;color:var(--el-text-color-regular);font-size:14px;margin-bottom:5px;position:relative;transition:all .5s cubic-bezier(.55,0,.1,1);width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item .el-icon--upload-success{color:var(--el-color-success)}.el-upload-list__item .el-icon--close{color:var(--el-text-color-regular);cursor:pointer;display:none;opacity:.75;position:absolute;right:5px;top:50%;transform:translateY(-50%);transition:opacity var(--el-transition-duration)}.el-upload-list__item .el-icon--close:hover{color:var(--el-color-primary);opacity:1}.el-upload-list__item .el-icon--close-tip{color:var(--el-color-primary);cursor:pointer;display:none;font-size:12px;font-style:normal;opacity:1;position:absolute;right:5px;top:1px}.el-upload-list__item:hover{background-color:var(--el-fill-color-light)}.el-upload-list__item:hover .el-icon--close{display:inline-flex}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item .el-upload-list__item-info{display:inline-flex;flex-direction:column;justify-content:center;margin-left:4px;width:calc(100% - 30px)}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:inline-flex}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:var(--el-color-primary);cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon--close-tip{display:inline-block}.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}.el-upload-list__item.is-success:active .el-icon--close-tip,.el-upload-list__item.is-success:not(.focusing):focus .el-icon--close-tip{display:none}.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label{display:none;opacity:0}.el-upload-list__item-name{align-items:center;color:var(--el-text-color-regular);display:inline-flex;font-size:var(--el-font-size-base);padding:0 4px;text-align:center;transition:color var(--el-transition-duration)}.el-upload-list__item-name .el-icon{color:var(--el-text-color-secondary);margin-right:6px}.el-upload-list__item-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-upload-list__item-status-label{align-items:center;display:none;height:100%;justify-content:center;line-height:inherit;position:absolute;right:5px;top:0;transition:opacity var(--el-transition-duration)}.el-upload-list__item-delete{color:var(--el-text-color-regular);display:none;font-size:12px;position:absolute;right:10px;top:0}.el-upload-list__item-delete:hover{color:var(--el-color-primary)}.el-upload-list--picture-card{display:inline-flex;flex-wrap:wrap;margin:0}.el-upload-list--picture-card .el-upload-list__item{background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;display:inline-flex;height:var(--el-upload-list-picture-card-size);margin:0 8px 8px 0;overflow:hidden;padding:0;width:var(--el-upload-list-picture-card-size)}.el-upload-list--picture-card .el-upload-list__item .el-icon--check,.el-upload-list--picture-card .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon--close{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:block;opacity:0}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{height:100%;object-fit:contain;width:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{background:var(--el-color-success);height:24px;right:-15px;text-align:center;top:-6px;transform:rotate(45deg);width:40px}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{align-items:center;background-color:var(--el-overlay-color-lighter);color:#fff;cursor:default;display:inline-flex;font-size:20px;height:100%;justify-content:center;left:0;opacity:0;position:absolute;top:0;transition:opacity var(--el-transition-duration);width:100%}.el-upload-list--picture-card .el-upload-list__item-actions span{cursor:pointer;display:none}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:16px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{color:inherit;font-size:inherit;position:static}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-flex}.el-upload-list--picture-card .el-progress{bottom:auto;left:50%;top:50%;transform:translate(-50%,-50%);width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{align-items:center;background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;display:flex;margin-top:10px;overflow:hidden;padding:10px;z-index:0}.el-upload-list--picture .el-upload-list__item .el-icon--check,.el-upload-list--picture .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{display:inline-flex;opacity:0}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item .el-icon--close{top:5px;transform:translateY(0)}.el-upload-list--picture .el-upload-list__item-thumbnail{align-items:center;background-color:var(--el-color-white);display:inline-flex;height:70px;justify-content:center;object-fit:contain;position:relative;width:70px;z-index:1}.el-upload-list--picture .el-upload-list__item-status-label{background:var(--el-color-success);height:26px;position:absolute;right:-17px;text-align:center;top:-7px;transform:rotate(45deg);width:46px}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{cursor:default;height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%;z-index:10}.el-upload-cover:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;height:100%;width:100%}.el-upload-cover__label{background:var(--el-color-success);height:24px;right:-15px;text-align:center;top:-6px;transform:rotate(45deg);width:40px}.el-upload-cover__label i{color:#fff;font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-cover__progress{display:inline-block;position:static;vertical-align:middle;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{height:100%;left:0;position:absolute;top:0;width:100%}.el-upload-cover__interact{background-color:var(--el-overlay-color-light);bottom:0;height:100%;left:0;position:absolute;text-align:center;width:100%}.el-upload-cover__interact .btn{color:#fff;cursor:pointer;display:inline-block;font-size:14px;margin-top:60px;transition:var(--el-transition-md-fade);vertical-align:middle}.el-upload-cover__interact .btn i{margin-top:0}.el-upload-cover__interact .btn span{opacity:0;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{background-color:#fff;bottom:0;color:var(--el-text-color-primary);font-size:14px;font-weight:400;height:36px;left:0;line-height:36px;margin:0;overflow:hidden;padding:0 10px;position:absolute;text-align:left;text-overflow:ellipsis;white-space:nowrap;width:100%}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}@property --border-angle{syntax:"";initial-value:0deg;inherits:false}@keyframes borderRotate-991f3af6{0%{--border-angle:0deg}to{--border-angle:360deg}}.upload-form[data-v-991f3af6]{--upload-card-height:45vh;--upload-card-busy-height:17vh;--upload-list-height:7vh;--upload-list-inner-height:var(--upload-list-height);--upload-list-busy-height:calc(var(--upload-card-height) - var(--upload-card-busy-height) + var(--upload-list-height));--upload-list-gap:10px;--upload-list-radius:15px;--upload-card-vertical-padding:40px;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;height:calc(var(--upload-card-height) + var(--upload-list-height) + var(--upload-list-gap) + var(--upload-card-vertical-padding))}.upload-list-card[data-v-991f3af6]{width:55vw;height:var(--upload-list-height);margin-top:var(--upload-list-gap);display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:var(--upload-list-radius);background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)!important;transition:height .3s ease;overflow:hidden}.upload-list-card[data-v-991f3af6] .el-card__body{padding:0;width:100%;height:100%;overflow:hidden}.upload-list-container[data-v-991f3af6]{width:100%;height:100%;overflow:hidden}@media (max-width:768px){.upload-list-card[data-v-991f3af6]{width:70vw}}.upload-list-card.upload-list-busy[data-v-991f3af6]{height:var(--upload-list-busy-height)}.upload-list-card[data-v-991f3af6]:not(.upload-list-busy) .el-scrollbar__view{height:100%}.upload-card-wrapper[data-v-991f3af6]{position:relative;overflow:visible}.folder-upload-input[data-v-991f3af6]{display:none}.clipboard-paste-receiver[data-v-991f3af6]{position:fixed;top:0;left:-9999px;width:1px;height:1px;padding:0;border:0;opacity:0;pointer-events:none}.upload-prompt-row[data-v-991f3af6]{display:flex;align-items:center;justify-content:center;gap:6px;max-width:calc(100% - 24px);min-width:0}.folder-upload-icon-button[data-v-991f3af6]{display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;width:28px;height:28px;box-sizing:border-box;padding:0;border:none;border-radius:7px;background:transparent;color:var(--el-text-color-secondary);line-height:1;cursor:pointer;transition:color .2s ease,background-color .2s ease}.folder-upload-icon-button[data-v-991f3af6] svg{display:block;width:15px;height:15px;transform:translateY(1px)}.folder-upload-icon-button[data-v-991f3af6]:hover{color:var(--primary-color-accent);background:color-mix(in srgb,var(--primary-color) 12%,transparent)}.folder-upload-icon-button[data-v-991f3af6]:focus-visible{outline:none;color:var(--primary-color-accent);background:color-mix(in srgb,var(--primary-color) 12%,transparent)}.folder-upload-icon-button.upload-list-busy[data-v-991f3af6]{width:24px;height:24px;border-radius:7px}.folder-upload-icon-button.upload-list-busy[data-v-991f3af6] svg{width:13px;height:13px}@media (max-width:768px){.upload-prompt-row[data-v-991f3af6]{gap:2px;max-width:calc(100% - 12px)}.folder-upload-icon-button[data-v-991f3af6]{width:22px;height:22px;border-radius:6px}.folder-upload-icon-button.upload-list-busy[data-v-991f3af6]{width:20px;height:20px}.folder-upload-icon-button[data-v-991f3af6] svg{width:12px;height:12px;transform:none}.folder-upload-icon-button.upload-list-busy[data-v-991f3af6] svg{width:11px;height:11px}}.upload-card-glow[data-v-991f3af6]{position:absolute;width:200px;height:200px;border-radius:50%;background:var(--upload-card-hover-glow-bg);pointer-events:none;transform:translate(-50%,-50%);opacity:0;transition:opacity .3s ease;z-index:10}.upload-card[data-v-991f3af6]{width:55vw;padding:20px;background:none}@media (max-width:768px){.upload-card[data-v-991f3af6]{width:70vw}}.upload-card-busy[data-v-991f3af6] .el-upload-dragger{height:var(--upload-card-busy-height)}[data-v-991f3af6] .el-upload-dragger{display:flex;flex-direction:column;justify-content:center;align-items:center;height:var(--upload-card-height);border-radius:15px;border:var(--el-upload-dragger-border);opacity:.7;background-color:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);box-shadow:var(--glass-shadow);transition:height .3s ease,opacity .25s ease,border-color .25s ease,box-shadow .25s ease,background-color .25s ease}[data-v-991f3af6] .el-upload:focus .el-upload-dragger,[data-v-991f3af6] .el-upload:focus-within .el-upload-dragger{border-color:var(--glass-border-hover)}[data-v-991f3af6] .el-upload-dragger.is-dragover,[data-v-991f3af6] .el-upload-dragger:hover{opacity:.8;border-color:var(--glass-border-hover);box-shadow:var(--el-upload-dragger-hover-box-shadow)}.is-uploading[data-v-991f3af6] .el-upload-dragger{border-color:transparent!important}.upload-card.is-uploading[data-v-991f3af6]{position:relative;background:none}.upload-card.is-uploading[data-v-991f3af6]:before{content:"";position:absolute;top:20px;left:20px;right:20px;bottom:20px;border-radius:15px;padding:2px;background:conic-gradient(from var(--border-angle),transparent 0deg,transparent 30deg,var(--upload-card-effect-color,#2563eb) 60deg,var(--upload-card-effect-highlight-color,color-mix(in srgb,var(--upload-card-effect-color,#2563eb) 70%,#fff)) 90deg,transparent 120deg,transparent 180deg,var(--upload-card-effect-highlight-color,color-mix(in srgb,var(--upload-card-effect-color,#2563eb) 70%,#fff)) 210deg,var(--upload-card-effect-color,#2563eb) 240deg,transparent 270deg,transparent 1turn);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:borderRotate-991f3af6 2s linear infinite;pointer-events:none;z-index:1}.el-upload__text[data-v-991f3af6]{font-weight:700;font-size:medium;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .3s ease}.el-upload__text.upload-list-busy[data-v-991f3af6]{font-size:small}@media (max-width:768px){.el-upload__text.upload-list-busy[data-v-991f3af6],.el-upload__text[data-v-991f3af6]{font-size:12px}}.el-icon--upload[data-v-991f3af6]{font-size:100px;transition:font-size .3s ease;color:#60a5fa}html.dark .el-icon--upload[data-v-991f3af6]{color:#6b6b73}.el-upload__text[data-v-991f3af6] em{color:#1d4ed8}html.dark .el-upload__text[data-v-991f3af6] em{color:#93c5fd}.el-icon--upload.upload-list-busy[data-v-991f3af6]{font-size:60px}@media (max-width:768px){.el-icon--upload[data-v-991f3af6]{font-size:50px}.el-icon--upload.upload-list-busy[data-v-991f3af6]{font-size:30px}}.paste-card[data-v-991f3af6]{display:flex;flex-direction:column;justify-content:center;align-items:center;height:var(--upload-card-height);border-radius:15px;border:var(--el-upload-dragger-border);box-shadow:none;opacity:.7;background-color:var(--el-upload-dragger-bg-color);transition:all .3s ease;box-sizing:border-box}.paste-card[data-v-991f3af6]:hover{opacity:.8;box-shadow:var(--el-upload-dragger-hover-box-shadow)}.paste-card.is-uploading[data-v-991f3af6]{position:relative;border-color:transparent!important;overflow:visible}.paste-card.is-uploading[data-v-991f3af6]:before{content:"";position:absolute;inset:-4px;border-radius:15px;padding:2px;background:conic-gradient(from var(--border-angle),transparent 0deg,transparent 30deg,var(--upload-card-effect-color,#2563eb) 60deg,var(--upload-card-effect-highlight-color,color-mix(in srgb,var(--upload-card-effect-color,#2563eb) 70%,#fff)) 90deg,transparent 120deg,transparent 180deg,var(--upload-card-effect-highlight-color,color-mix(in srgb,var(--upload-card-effect-color,#2563eb) 70%,#fff)) 210deg,var(--upload-card-effect-color,#2563eb) 240deg,transparent 270deg,transparent 1turn);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:borderRotate-991f3af6 2s linear infinite;pointer-events:none;z-index:1}.paste-card[data-v-991f3af6] .el-card__body{padding:0;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center}.upload-card-busy.paste-card[data-v-991f3af6]{height:var(--upload-card-busy-height)}.upload-card-textarea[data-v-991f3af6]{width:50vw;height:70%;border-radius:16px;background:color-mix(in srgb,var(--primary-color) 4%,var(--glass-bg));border:1px solid var(--glass-border);box-shadow:none;transition:background-color .22s ease,border-color .22s ease,box-shadow .22s ease;box-sizing:border-box;display:flex;position:relative;overflow:hidden}.upload-card-busy .upload-card-textarea[data-v-991f3af6]{height:50%}.upload-card-textarea[data-v-991f3af6]:hover{background:color-mix(in srgb,var(--primary-color) 6%,var(--glass-bg));border-color:var(--glass-border-hover)}.upload-card-textarea[data-v-991f3af6]:focus-within{background:color-mix(in srgb,var(--primary-color) 7%,var(--glass-bg));border-color:color-mix(in srgb,var(--primary-color) 45%,var(--glass-border));box-shadow:none}.upload-card-textarea[data-v-991f3af6] .el-textarea__inner{border-radius:16px;background:transparent;transition:color .2s ease,background-color .2s ease;resize:none;border:none;box-shadow:none!important;padding:16px 20px;font-size:14px;line-height:1.6;color:var(--el-text-color-primary)}.upload-card-textarea[data-v-991f3af6] .el-textarea__inner::-moz-placeholder{color:var(--el-text-color-placeholder);font-weight:400;opacity:.7}.upload-card-textarea[data-v-991f3af6] .el-textarea__inner::placeholder{color:var(--el-text-color-placeholder);font-weight:400;opacity:.7}.upload-card-textarea[data-v-991f3af6] .el-textarea__inner:focus{background:transparent;box-shadow:none!important}.upload-card-textarea[data-v-991f3af6] ::-webkit-scrollbar{width:6px;height:6px}.upload-card-textarea[data-v-991f3af6] ::-webkit-scrollbar-track{background:transparent;border-radius:6px;margin:8px}.upload-card-textarea[data-v-991f3af6] ::-webkit-scrollbar-thumb{background:rgba(37,99,235,.5);border-radius:6px;-webkit-transition:background .3s ease;transition:background .3s ease}.upload-card-textarea[data-v-991f3af6] ::-webkit-scrollbar-thumb:hover{background:rgba(37,99,235,.7)}.paste-card-actions[data-v-991f3af6]{display:flex;justify-content:space-between;align-items:center;width:50vw;gap:12px;margin-top:16px}.paste-card-upload-button[data-v-991f3af6]{min-width:92px;height:38px;border-radius:10px!important;font-weight:600;font-size:14px;letter-spacing:.04em;color:var(--primary-color-accent)!important;background:color-mix(in srgb,var(--primary-color) 10%,transparent)!important;border:1px solid color-mix(in srgb,var(--primary-color) 36%,var(--glass-border))!important;box-shadow:none;transition:background-color .2s ease,border-color .2s ease,transform .2s ease!important}.paste-card-upload-button[data-v-991f3af6]:hover{color:var(--primary-color-accent)!important;background:color-mix(in srgb,var(--primary-color) 14%,transparent)!important;border-color:color-mix(in srgb,var(--primary-color) 52%,var(--glass-border))!important;transform:translateY(-1px);box-shadow:none}.paste-card-upload-button[data-v-991f3af6]:focus-visible{color:var(--primary-color-accent)!important;background:color-mix(in srgb,var(--primary-color) 14%,transparent)!important;border-color:color-mix(in srgb,var(--primary-color) 52%,var(--glass-border))!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color) 14%,transparent)!important}.paste-card-upload-button[data-v-991f3af6]:active{transform:translateY(0);background:color-mix(in srgb,var(--primary-color) 18%,transparent)!important}.upload-card-busy .paste-card-upload-button[data-v-991f3af6]{min-width:72px;height:32px;border-radius:8px!important;font-size:13px;letter-spacing:.02em}.upload-card-busy .paste-card-actions[data-v-991f3af6]{margin-top:10px}.paste-card-method-group[data-v-991f3af6]{position:relative;display:inline-flex;align-items:center;width:158px;height:38px;box-sizing:border-box;gap:2px;padding:3px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:10px;overflow:hidden}.paste-card-method-group[data-v-991f3af6]:before{content:"";position:absolute;top:3px;left:3px;width:calc(50% - 4px);height:calc(100% - 6px);border-radius:7px;background:color-mix(in srgb,var(--primary-color) 14%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--primary-color) 42%,var(--glass-border)) inset;transform:translateX(0);transition:transform .22s cubic-bezier(.4,0,.2,1);pointer-events:none}.paste-card-method-group.is-external[data-v-991f3af6]:before{transform:translateX(calc(100% + 2px))}.paste-card-method-button[data-v-991f3af6]{position:relative;z-index:1;display:inline-flex;flex:1 1 0;align-items:center;justify-content:center;min-width:0;height:30px;box-sizing:border-box;padding:0 14px;border:none;border-radius:7px;background:transparent;font-weight:500;font-size:13px;line-height:1;color:var(--el-text-color-secondary);cursor:pointer;transition:color .2s ease}.paste-card-method-button.is-active[data-v-991f3af6],.paste-card-method-button[data-v-991f3af6]:hover{color:var(--primary-color-accent)}.paste-card-method-button[data-v-991f3af6]:focus-visible{outline:none;color:var(--primary-color-accent)}@media (max-width:768px){.paste-card[data-v-991f3af6]{height:var(--upload-card-height);min-height:0;max-height:var(--upload-card-height);padding:6px;border-radius:12px}.upload-card-busy.paste-card[data-v-991f3af6]{height:var(--upload-card-busy-height);min-height:0;max-height:var(--upload-card-busy-height);padding:5px}.upload-card-textarea[data-v-991f3af6]{margin-top:4px;width:calc(100% - 4px)!important;min-height:0;flex-shrink:1}.upload-card-textarea[data-v-991f3af6] .el-textarea__inner{height:100%;min-height:0!important;box-sizing:border-box;border-radius:10px;padding:8px 10px;font-size:12px}.paste-card-actions[data-v-991f3af6]{flex:0 0 auto;width:100%!important;margin-top:6px;gap:6px}.paste-card-upload-button[data-v-991f3af6]{letter-spacing:.02em;padding:0 10px}.paste-card-upload-button[data-v-991f3af6],.upload-card-busy .paste-card-upload-button[data-v-991f3af6]{height:28px;min-width:56px;border-radius:7px!important;font-size:11px}.upload-card-busy .paste-card-actions[data-v-991f3af6]{margin-top:6px}.paste-card-method-group[data-v-991f3af6]{width:112px;height:28px;padding:2px;border-radius:8px}.paste-card-method-group[data-v-991f3af6]:before{top:2px;left:2px;width:calc(50% - 3px);height:calc(100% - 4px);border-radius:6px}.paste-card-method-button[data-v-991f3af6]{height:22px;padding:0 8px;font-size:10px;border-radius:6px}}.upload-list-dashboard[data-v-991f3af6]{display:flex;justify-content:space-between;align-items:center;height:var(--upload-list-inner-height);padding:0 15px;box-sizing:border-box;width:100%;min-width:0;position:sticky;top:0;z-index:1;background:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border);border-radius:var(--upload-list-radius);box-shadow:var(--glass-shadow);opacity:.7}.upload-list-card:not(.upload-list-busy) .upload-list-dashboard[data-v-991f3af6]{height:100%}[data-v-991f3af6] .el-upload-dragger{position:relative;overflow:hidden}[data-v-991f3af6] .el-upload-dragger:before{background-image:radial-gradient(2px 2px at 10% 10%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2px 2px at 20% 30%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2px 2px at 30% 10%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2px 2px at 40% 30%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2px 2px at 50% 10%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2px 2px at 60% 30%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2px 2px at 70% 10%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2px 2px at 80% 30%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2px 2px at 90% 10%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2px 2px at 15% 70%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0);background-size:200px 200px}[data-v-991f3af6] .el-upload-dragger:after,[data-v-991f3af6] .el-upload-dragger:before{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;z-index:0;transition:opacity .6s ease}[data-v-991f3af6] .el-upload-dragger:after{background-image:radial-gradient(3px 3px at 15% 15%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(3px 3px at 50% 50%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(3px 3px at 85% 85%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2.5px 2.5px at 35% 65%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2.5px 2.5px at 65% 35%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0);background-size:150px 150px}.upload-card[data-v-991f3af6]:hover .el-upload-dragger:before{opacity:.3;animation:starScroll-991f3af6 60s linear infinite}.upload-card[data-v-991f3af6]:hover .el-upload-dragger:after{opacity:.6;animation:starScroll-991f3af6 40s linear infinite,starPulse-991f3af6 4s ease-in-out infinite}@keyframes starScroll-991f3af6{0%{background-position:0 0}to{background-position:100px 100px}}@keyframes starPulse-991f3af6{0%,to{opacity:.6}50%{opacity:.3}}.modern-action-group[data-v-991f3af6]{display:flex;align-items:center;gap:5px;height:44px;box-sizing:border-box;padding:5px;background:var(--glass-bg);border-radius:12px;border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)}.modern-action-group[data-v-991f3af6]:hover{background:var(--glass-bg);border-color:var(--glass-border);box-shadow:var(--glass-shadow)}.modern-action-btn[data-v-991f3af6]{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border:none;border-radius:13px;background:var(--upload-action-btn-bg);color:var(--upload-action-btn-color);cursor:pointer;transition:background-color .22s ease,color .22s ease,box-shadow .22s ease,transform .22s ease;font-size:14px;box-shadow:var(--upload-action-btn-shadow);position:relative;overflow:hidden;outline:none!important}.modern-action-btn[data-v-991f3af6]:focus,.modern-action-btn[data-v-991f3af6]:focus-visible{outline:none!important}.modern-action-btn[data-v-991f3af6]:before{content:"";position:absolute;inset:2px;border-radius:11px;background:currentColor;opacity:0;transition:opacity .22s ease}.modern-action-btn[data-v-991f3af6]:hover{background:var(--upload-action-btn-hover-bg);box-shadow:var(--upload-action-btn-hover-shadow)}.modern-action-btn[data-v-991f3af6]:hover:before{opacity:.08}.modern-action-btn[data-v-991f3af6]:active{transform:translateY(0) scale(.97);box-shadow:var(--upload-action-btn-active-shadow)}.modern-action-btn-copy[data-v-991f3af6]{color:var(--upload-action-copy-color)}.modern-action-btn-retry[data-v-991f3af6]{color:var(--upload-action-retry-color)}.modern-action-btn-danger[data-v-991f3af6]{color:var(--upload-action-danger-color);background:var(--upload-action-danger-bg)}.modern-action-btn-danger[data-v-991f3af6]:hover{background:var(--upload-action-danger-hover-bg);box-shadow:var(--upload-action-danger-hover-shadow)}.modern-dropdown-item-content[data-v-991f3af6]{display:flex;align-items:center;justify-content:space-between;width:100%;gap:12px;padding:4px 0}.modern-dropdown-item-content span[data-v-991f3af6]{font-weight:500;color:var(--el-text-color-primary)}.upload-list-dashboard-title[data-v-991f3af6]{font-size:14px;font-weight:600;display:flex;align-items:center;gap:8px;height:44px;box-sizing:border-box;padding:0 14px;background:var(--dashboard-title-bg,rgba(37,99,235,.06));border:none;border-radius:12px;color:var(--el-text-color-primary)}.upload-list-dashboard-title .el-icon[data-v-991f3af6]{font-size:16px;margin-right:4px;opacity:.85}@media (max-width:768px){.modern-action-group[data-v-991f3af6]{height:34px;gap:2px;padding:2px;border-radius:9px}.modern-action-btn[data-v-991f3af6]{width:28px;height:28px;border-radius:7px;font-size:11px}.upload-list-dashboard-title[data-v-991f3af6]{height:34px;font-size:11px;padding:0 7px;border-radius:9px}.upload-list-dashboard-title .el-icon[data-v-991f3af6]{font-size:13px;margin-right:1px}.upload-list-dashboard[data-v-991f3af6]{padding:0 6px;gap:4px}.upload-list-dashboard-title[data-v-991f3af6]{gap:3px;min-width:0;flex-shrink:1;overflow:hidden}.upload-list-dashboard-action[data-v-991f3af6]{flex-shrink:0}}@media (min-width:769px) and (max-height:1050px){.upload-list-dashboard[data-v-991f3af6]{padding:0 12px}.modern-action-group[data-v-991f3af6],.upload-list-dashboard-title[data-v-991f3af6]{height:34px}.modern-action-group[data-v-991f3af6]{gap:3px;padding:3px;border-radius:10px}.modern-action-btn[data-v-991f3af6]{width:28px;height:28px;border-radius:8px;font-size:12px}.upload-list-dashboard-title[data-v-991f3af6]{padding:0 10px;border-radius:10px;font-size:13px}}.logo-link[data-v-5c73638c]{text-decoration:none;display:inline-block}.logo[data-v-5c73638c]{--logo-brightness:1;--logo-hover-brightness:1.08;transition:transform .3s ease,filter .3s ease,opacity .3s ease;border-radius:8px}.logo--fixed[data-v-5c73638c]{position:fixed;top:20px;left:20px;z-index:100}.logo--relative[data-v-5c73638c]{position:relative}.logo--absolute[data-v-5c73638c]{position:absolute;top:5px;left:5px;z-index:100}.logo--static[data-v-5c73638c]{position:static}.logo--small[data-v-5c73638c]{height:50px;width:50px}.logo--normal[data-v-5c73638c]{height:70px;width:70px}.logo--large[data-v-5c73638c]{height:90px;width:90px}.logo--hover-enabled[data-v-5c73638c]:hover{transform:scale(1.1) rotate(5deg);filter:brightness(var(--logo-hover-brightness)) drop-shadow(0 0 10px var(--logo-glow-color))}@media (max-width:768px){.logo--small[data-v-5c73638c]{height:40px;width:40px}.logo--normal[data-v-5c73638c]{height:60px;width:60px}.logo--large[data-v-5c73638c]{height:75px;width:75px}}.logo[data-v-5c73638c]:focus{outline:2px solid var(--el-color-primary);outline-offset:2px}.logo[data-v-5c73638c]{filter:var(--logo-filter,brightness(var(--logo-brightness)) drop-shadow(0 0 0 var(--logo-glow-color)));opacity:var(--logo-opacity,1)}html.dark{--logo-brightness:0.9;--logo-hover-brightness:1;filter:var(--logo-dark-filter,brightness(var(--logo-brightness)) drop-shadow(0 0 0 var(--logo-glow-color)))}.directory-suggestion-input[data-v-28b8eda7]{width:100%;height:100%;position:relative}.suggestion-dropdown[data-v-28b8eda7]{position:absolute;top:calc(100% + 10px);left:0;width:100%;z-index:9999;border-radius:12px;border:1px solid var(--glass-border);background-color:var(--popper-bg-color);box-shadow:var(--popper-shadow);padding:6px 0;overflow:hidden}.suggestion-list[data-v-28b8eda7]{list-style:none;margin:0;padding:0;max-height:260px;overflow-y:auto}.suggestion-item[data-v-28b8eda7]{padding:8px 16px;font-size:13px;border-radius:6px;margin:2px 6px;cursor:pointer;transition:background-color .2s ease;text-align:left;color:var(--el-text-color-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.suggestion-item[data-v-28b8eda7]:hover{background-color:var(--el-fill-color-light)}#themeToggle[data-v-e9449eac]{border:1px solid var(--glass-border);box-sizing:border-box;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:12px;background-color:var(--glass-bg);box-shadow:none;transition:background-color .25s ease,border-color .25s ease,transform .25s ease}#themeToggle[data-v-e9449eac]:hover{border-color:var(--glass-border-hover)}#themeToggle[data-v-e9449eac]{backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}@media (max-width:768px){#themeToggle[data-v-e9449eac]{width:2rem;height:2rem}}.theme_toggle_circle1[data-v-e9449eac]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-e9449eac]{transition:all .5s ease-in-out;fill:var(--theme-toggle-bg-color)}.theme_toggle_svg[data-v-e9449eac]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--theme-toggle-color)}.dark.theme_toggle_svg[data-v-e9449eac]{transform:rotate(40deg)}.theme_toggle_g[data-v-e9449eac]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-e9449eac],.icon-fade-leave-active[data-v-e9449eac]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-e9449eac]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-e9449eac]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-e9449eac],.icon-fade-leave-from[data-v-e9449eac]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-e9449eac]{display:inline-block}.container[data-v-9426cafc]{background:var(--bg-color);min-height:100vh}.rotate[data-v-9426cafc]{animation:spin-9426cafc 2s ease-in-out}.scale[data-v-9426cafc]{animation:scale-9426cafc .5s ease-in-out}@keyframes spin-9426cafc{0%{transform:rotate(0deg)}25%{transform:rotate(5deg)}50%{transform:rotate(0deg)}75%{transform:rotate(-3deg)}to{transform:rotate(0deg)}}@keyframes streamer-9426cafc{0%{background-position:200%}to{background-position:-200%}}@keyframes rotate-shake-9426cafc{0%{transform:rotate(0deg)}50%{transform:rotate(10deg)}to{transform:rotate(0deg)}}@keyframes shake-9426cafc{0%{transform:translateX(0)}50%{transform:translateX(-1px)}to{transform:translateX(0)}}@keyframes scale-9426cafc{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}.desktop-only[data-v-9426cafc]{display:inline-block}.mobile-only[data-v-9426cafc]{display:none}@media (max-width:768px){.desktop-only[data-v-9426cafc]{display:none!important}.mobile-only[data-v-9426cafc]{display:flex!important}}.toggle-dark-button[data-v-9426cafc]{width:2.5rem;height:2.5rem;box-sizing:border-box;display:flex;justify-content:center;align-items:center;border:1px solid var(--glass-border);transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:var(--glass-bg);box-shadow:none;border-radius:12px;position:fixed;top:30px;right:80px;padding:0}.more-dropdown[data-v-9426cafc]{position:fixed;top:30px;right:30px;z-index:100}.more-dropdown .more-button[data-v-9426cafc]{width:2.5rem;height:2.5rem;box-sizing:border-box;display:flex;justify-content:center;align-items:center;border:1px solid var(--glass-border);transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:var(--glass-bg);box-shadow:none;color:var(--theme-toggle-color);border-radius:12px;outline:none;padding:0}.more-dropdown .more-button[data-v-9426cafc]:hover{transform:scale(1.05);border-color:var(--glass-border-hover)}.upload-method-button[data-v-9426cafc]{width:2.5rem;height:2.5rem;box-sizing:border-box;display:flex;justify-content:center;align-items:center;border:1px solid var(--glass-border);transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:var(--glass-bg);box-shadow:none;color:var(--theme-toggle-color);border-radius:12px;position:fixed;top:30px;right:130px;outline:none;padding:0}@media (max-width:768px){.upload-method-button[data-v-9426cafc]{width:2rem;height:2rem}}.upload-method-icon[data-v-9426cafc]{outline:none}.more-button .svg-inline--fa[data-v-9426cafc],.upload-method-button .svg-inline--fa[data-v-9426cafc]{font-size:1.5em}.directory-tree-trigger .svg-inline--fa[data-v-9426cafc]{font-size:1.2em}.mobile-more-dropdown[data-v-9426cafc]{position:fixed;top:30px;right:18px;z-index:100}.mobile-more-button[data-v-9426cafc]{width:2rem;height:2rem;display:flex;justify-content:center;align-items:center;border:1px solid var(--glass-border);transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:var(--glass-bg);box-shadow:none;color:var(--theme-toggle-color);border-radius:12px;outline:none;padding:0}.mobile-more-button[data-v-9426cafc]:hover{transform:scale(1.05);border-color:var(--glass-border-hover)}.upload-folder-container[data-v-9426cafc]{display:flex;align-items:center;position:fixed;top:30px;right:180px;z-index:100}.upload-folder-container.no-announcement[data-v-9426cafc]{right:180px}@media (max-width:768px){.upload-folder-container.no-announcement[data-v-9426cafc],.upload-folder-container[data-v-9426cafc]{right:58px}}.upload-folder[data-v-9426cafc]{width:100px;height:2.5rem;border-radius:12px;display:flex;align-items:center;box-sizing:border-box;transition:all .3s ease,width .4s ease}.upload-folder.active[data-v-9426cafc]{width:200px}@media (max-width:768px){.upload-folder[data-v-9426cafc]{width:80px;height:2rem}.upload-folder.active[data-v-9426cafc]{width:120px}}.directory-tree-trigger[data-v-9426cafc]{width:2.5rem;height:2.5rem;display:flex;justify-content:center;align-items:center;box-sizing:border-box;border:1px solid var(--glass-border);margin-left:10px;background-color:var(--glass-bg);box-shadow:var(--glass-shadow);color:var(--theme-toggle-color);border-radius:12px;outline:none;cursor:pointer;transition:background-color .25s ease,border-color .25s ease,transform .25s ease}.directory-tree-trigger[data-v-9426cafc]:hover{border-color:var(--glass-border-hover);transform:scale(1.05)}@media (max-width:768px){.directory-tree-trigger[data-v-9426cafc]{width:2rem;height:2rem}.directory-tree-trigger .svg-inline--fa[data-v-9426cafc]{font-size:1.1em}}.upload-folder[data-v-9426cafc] .inner-folder-input{width:100%;height:100%}.upload-folder[data-v-9426cafc] .el-input{height:100%;box-sizing:border-box}.upload-folder[data-v-9426cafc] .el-input__wrapper{border-radius:12px;background-color:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);box-shadow:var(--glass-shadow);border:1px solid var(--glass-border);height:100%;padding:0 10px;box-sizing:border-box;transition:background-color .25s ease,border-color .25s ease,box-shadow .25s ease!important}.upload-folder[data-v-9426cafc] .el-input__wrapper:hover{background-color:color-mix(in srgb,var(--el-fill-color-blank) 85%,transparent);border-color:var(--glass-border-hover)}html.dark .upload-folder[data-v-9426cafc] .el-input__wrapper:hover{background-color:color-mix(in srgb,var(--el-bg-color) 88%,transparent);border-color:var(--glass-border-hover)}.upload-folder[data-v-9426cafc] .el-input__wrapper.is-focus,.upload-folder[data-v-9426cafc] .el-input__wrapper:focus-within{border-color:var(--glass-border);box-shadow:var(--glass-shadow)!important}.quick-toolbar[data-v-9426cafc]{--quick-toolbar-size:2.5rem;--quick-toolbar-button-size:calc(var(--quick-toolbar-size) - 6px);position:fixed;bottom:50px;right:30px;width:var(--quick-toolbar-size);box-sizing:border-box;display:flex;flex-direction:column;align-items:center;gap:0;z-index:200;padding:3px;border-radius:999px;border:1px solid var(--glass-border);background-color:var(--glass-bg);box-shadow:none;transition:background-color .24s ease,border-color .24s ease}.directory-tree-trigger[data-v-9426cafc],.mobile-more-button[data-v-9426cafc],.more-dropdown .more-button[data-v-9426cafc],.quick-toolbar[data-v-9426cafc],.toggle-dark-button[data-v-9426cafc],.upload-method-button[data-v-9426cafc]{backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}.quick-toolbar-button[data-v-9426cafc]{width:var(--quick-toolbar-button-size);height:var(--quick-toolbar-button-size);border:none;transition:transform .22s ease,background-color .22s ease,box-shadow .22s ease,color .22s ease;margin-left:0;padding:0;border-radius:999px;background-color:transparent;box-shadow:none;color:var(--toolbar-button-color);outline:none}.quick-toolbar-actions[data-v-9426cafc]{display:grid;grid-template-rows:0fr;width:100%;margin-bottom:0;opacity:0;pointer-events:none;transform:translateY(12px);transform-origin:bottom center;transition:grid-template-rows .52s cubic-bezier(.16,1,.3,1),margin-bottom .52s cubic-bezier(.16,1,.3,1),opacity .32s ease,transform .52s cubic-bezier(.16,1,.3,1)}.quick-toolbar.is-expanded .quick-toolbar-actions[data-v-9426cafc]{grid-template-rows:1fr;margin-bottom:4px;opacity:1;pointer-events:auto;transform:translateY(0)}.quick-toolbar-actions-inner[data-v-9426cafc]{display:flex;flex-direction:column;align-items:center;gap:3px;min-height:0;overflow:hidden}.quick-toolbar-more.is-active[data-v-9426cafc]{background-color:var(--upload-action-btn-hover-bg);box-shadow:var(--upload-action-btn-shadow)}.quick-toolbar-more[data-v-9426cafc]{margin-top:4px}.quick-toolbar-icon[data-v-9426cafc]{font-size:16px}.quick-toolbar-toggle-icon[data-v-9426cafc]{transform:rotate(180deg);transition:transform .32s ease}.quick-toolbar-more.is-active .quick-toolbar-toggle-icon[data-v-9426cafc]{transform:rotate(0deg)}.info-container[data-v-9426cafc]:hover,.quick-toolbar-button[data-v-9426cafc]:hover{transform:scale(1.05);background-color:var(--upload-action-btn-hover-bg);box-shadow:var(--upload-action-btn-hover-shadow)}.quick-toolbar[data-v-9426cafc]:hover{border-color:var(--glass-border-hover)}.quick-toolbar-button[data-v-9426cafc]:hover{transform:none}.toggle-dark-button[data-v-9426cafc]:hover,.upload-method-button[data-v-9426cafc]:hover{transform:scale(1.05);border-color:var(--glass-border-hover)}.upload-folder[data-v-9426cafc]:hover .el-input__wrapper{background-color:color-mix(in srgb,var(--el-fill-color-blank) 85%,transparent);border-color:var(--glass-border-hover)}html.dark .upload-folder[data-v-9426cafc]:hover .el-input__wrapper{background-color:color-mix(in srgb,var(--el-bg-color) 88%,transparent);border-color:var(--glass-border-hover)}@media (max-width:768px){.quick-toolbar[data-v-9426cafc]{--quick-toolbar-size:2rem;--quick-toolbar-button-size:calc(var(--quick-toolbar-size) - 4px);right:18px;bottom:max(72px,calc(6vh + 20px + env(safe-area-inset-bottom)));padding:2px}.quick-toolbar-actions[data-v-9426cafc]{margin-bottom:0}.quick-toolbar.is-expanded .quick-toolbar-actions[data-v-9426cafc]{margin-bottom:3px}.quick-toolbar-actions-inner[data-v-9426cafc]{gap:2px}.quick-toolbar-more[data-v-9426cafc]{margin-top:3px}.quick-toolbar-icon[data-v-9426cafc]{font-size:14px}}[data-v-9426cafc] .el-dialog{border-radius:12px;border:1px solid var(--glass-border);background-color:var(--dialog-bg-color);box-shadow:var(--dialog-box-shadow)}.dialog-action[data-v-9426cafc]{display:flex;justify-content:center;margin-top:20px}.header[data-v-9426cafc]{display:flex;justify-content:center;align-items:center;padding:15px;margin-top:5vh;color:var(--upload-header-color);-webkit-user-select:none;-moz-user-select:none;user-select:none;text-decoration:none;position:relative;top:-3vh;transition:all .3s ease}.title[data-v-9426cafc]{font-size:2.25rem;font-weight:400;font-family:Pacifico,Noto Sans SC,sans-serif;color:var(--upload-title-text-color);text-shadow:var(--upload-title-text-shadow);position:relative;isolation:isolate;padding-bottom:8px;cursor:pointer;transition:transform .4s cubic-bezier(.4,0,.2,1),filter .25s ease;animation:float-9426cafc 4s ease-in-out infinite;letter-spacing:3px}.title[data-v-9426cafc]:hover{transform:scale(1.08);filter:drop-shadow(0 0 20px var(--upload-title-hover-glow))}.title[data-v-9426cafc]:after{content:"";position:absolute;bottom:0;left:50%;transform:translateX(-50%);z-index:0;width:0;height:3px;background:var(--upload-title-underline-bg);border-radius:3px;transition:width .5s cubic-bezier(.4,0,.2,1);box-shadow:var(--upload-title-underline-shadow)}.title[data-v-9426cafc]:hover:after{width:80%}.main-title[data-v-9426cafc]{color:var(--upload-main-title-color);text-decoration:none;display:inline-block;position:relative;filter:drop-shadow(0 0 8px rgba(255,255,255,.3))}.title-base-text[data-v-9426cafc]{position:relative;z-index:1;display:inline-block;transition:opacity .16s ease}.title:hover .title-base-text[data-v-9426cafc]{opacity:0}.title[data-v-9426cafc]:hover{text-shadow:none}.title-crayon-text[data-v-9426cafc]{position:absolute;left:50%;top:-1px;z-index:2;width:-moz-max-content;width:max-content;pointer-events:none;white-space:nowrap;color:var(--upload-title-crayon-deep,#1d2129);opacity:0;-webkit-text-stroke:.35px var(--upload-title-crayon-edge);text-shadow:-1.2px .4px 0 var(--upload-title-crayon-burr),.9px -.7px 0 hsla(0,0%,100%,.24),1.5px .5px 0 var(--upload-title-crayon-dust),-1.7px -.6px 0 var(--upload-title-crayon-dust);transform:translateX(-50%) rotate(-.8deg);transform-origin:left 68%;clip-path:inset(-10px 100% -24px -10px);filter:saturate(1.08) contrast(1.06)}.title:hover .title-crayon-text[data-v-9426cafc]{animation:crayonWrite-9426cafc .82s steps(18) forwards,crayonScratch-9426cafc .16s steps(2) .82s 3}@keyframes float-9426cafc{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes crayonWrite-9426cafc{0%{opacity:0;clip-path:inset(-10px 100% -24px -10px)}12%{opacity:.92}32%{clip-path:inset(-10px 68% -24px -10px)}47%{clip-path:inset(-10px 52% -24px -10px)}63%{clip-path:inset(-10px 34% -24px -10px)}78%{clip-path:inset(-10px 18% -24px -10px)}to{opacity:.92;clip-path:inset(-10px -10px -24px -10px)}}@keyframes crayonScratch-9426cafc{0%,to{transform:translateX(-50%) rotate(-.8deg)}50%{transform:translateX(calc(-50% + 1px)) rotate(-.45deg)}}@media (max-width:768px){.title[data-v-9426cafc]{font-size:1.4rem;letter-spacing:.75px}.title[data-v-9426cafc]:hover{transform:scale(1.05)}}.upload-home[data-v-9426cafc]{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:94vh;background-color:transparent}.upload[data-v-9426cafc]{margin-bottom:5px;position:relative;top:-3vh}@media (max-width:768px){.header[data-v-9426cafc]{padding:5px 15px 2px;top:-2.5vh}.title[data-v-9426cafc]{margin:.4em 0;padding-bottom:.45em;line-height:1.2}.upload[data-v-9426cafc]{top:-3.8vh}}@media (min-width:769px) and (max-height:1050px){.header[data-v-9426cafc]{padding:8px 15px;margin-top:3vh;top:-2vh}.title[data-v-9426cafc]{margin:.45em 0;padding-bottom:.45em;font-size:1.875rem;line-height:1.2;letter-spacing:2px}.upload[data-v-9426cafc]{top:-2.5vh}}.footer[data-v-9426cafc]{height:6vh} \ No newline at end of file diff --git a/frontend-dist/css/502.7f4cb9f9.css.gz b/frontend-dist/css/502.7f4cb9f9.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..4e1b4f5a1005348d5aa5f5c4dd2cd2e99de365c7 GIT binary patch literal 12060 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.el-input__wrapper{border-radius:0 9px 9px 0!important}.upload-list-item-url[data-v-4a46527b] .el-input__wrapper:hover{box-shadow:none;border-color:var(--el-color-primary-light-5)}.upload-list-item-url[data-v-4a46527b] .el-input__wrapper.is-focus{box-shadow:none;border-color:var(--el-color-primary)}.upload-list-item-url[data-v-4a46527b] .el-input__wrapper.is-focus:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(37,99,235,.08),transparent);animation:shimmer-4a46527b 2s infinite;z-index:0}@keyframes shimmer-4a46527b{0%{left:-100%}to{left:100%}}.upload-list-item-url[data-v-4a46527b] .el-input__inner{font-size:13px;font-family:Courier New,Monaco,monospace;color:var(--el-text-color-regular);transition:all .3s ease;padding-left:12px;position:relative;z-index:1;border-radius:0 10px 10px 0}.upload-list-item-url[data-v-4a46527b] .el-input__inner::-moz-selection{background-color:var(--el-color-primary-light-7)}.upload-list-item-url[data-v-4a46527b] .el-input__inner::selection{background-color:var(--el-color-primary-light-7)}.upload-list-item-url[data-v-4a46527b] .el-input-group__prepend{background:var(--el-color-primary-light-9);color:var(--el-color-primary);font-weight:600;font-size:12px;border:none;padding:0 14px;margin:0;border-radius:9px 0 0 9px;box-shadow:none;transition:all .3s ease;letter-spacing:.5px;position:relative;z-index:1}.upload-list-item-url[data-v-4a46527b] .el-input-group__prepend:after{content:"";position:absolute;right:0;top:50%;transform:translateY(-50%);height:60%;width:1px;background:var(--el-color-primary-light-7);opacity:.3;transition:all .3s ease}.upload-list-item-url[data-v-4a46527b] .el-input:hover .el-input-group__prepend{background:var(--el-color-primary-light-8)}.upload-list-item-url[data-v-4a46527b] .el-input:hover .el-input-group__prepend:after{opacity:.5}.upload-list-item-url[data-v-4a46527b] .el-input.is-focus .el-input-group__prepend{background:var(--el-color-primary);color:#fff;animation:prependPulse-4a46527b 2s ease-in-out infinite}.upload-list-item-url[data-v-4a46527b] .el-input.is-focus .el-input-group__prepend:after{background:hsla(0,0%,100%,.3);opacity:1}@keyframes prependPulse-4a46527b{0%,to{opacity:1}50%{opacity:.95}}.modern-file-action-btn[data-v-4a46527b]{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:10px;background:var(--upload-action-btn-bg);color:var(--upload-action-btn-color);box-shadow:var(--upload-action-btn-shadow);cursor:pointer;transition:background-color .22s ease,color .22s ease,transform .22s ease;font-size:16px;position:relative;overflow:hidden;margin:4px 0;outline:none}.modern-file-action-btn[data-v-4a46527b]:before{content:"";position:absolute;inset:2px;border-radius:8px;background:currentColor;opacity:0;transition:opacity .22s ease}.modern-file-action-btn[data-v-4a46527b]:hover{background:var(--upload-action-btn-hover-bg)}.modern-file-action-btn[data-v-4a46527b]:hover:before{opacity:.08}.modern-file-action-btn[data-v-4a46527b]:active{transform:scale(.96)}.modern-file-action-btn-primary[data-v-4a46527b]{color:var(--upload-action-copy-color)}.modern-file-action-btn-danger[data-v-4a46527b]{color:var(--upload-action-danger-color);background:var(--upload-action-danger-bg)}.modern-file-action-btn-danger[data-v-4a46527b]:hover{background:var(--upload-action-danger-hover-bg)}@media (max-width:768px){.upload-list-item[data-v-4a46527b]{margin:5px 6px;padding:7px 8px;border-radius:12px}.upload-list-item-content[data-v-4a46527b]{margin-left:2px}.upload-list-item-action[data-v-4a46527b]{gap:3px}.upload-list-item-url-row[data-v-4a46527b]{width:42vw;flex-direction:column;gap:4px;margin-bottom:4px}.upload-list-item-progress[data-v-4a46527b]{width:32vw;margin-top:5px;padding:2px 5px;border-radius:9px}.upload-list-item-progress[data-v-4a46527b] .el-progress-bar__outer{height:6px!important}.upload-list-item-url[data-v-4a46527b] .el-input__wrapper{border-radius:7px}.upload-list-item-url[data-v-4a46527b] .el-input__inner{font-size:10px;padding-left:8px}.upload-list-item-url[data-v-4a46527b] .el-input-group__prepend{font-size:9px;padding:0 6px;border-radius:7px 0 0 7px}.modern-file-action-btn[data-v-4a46527b]{width:26px;height:26px;margin:2px 0;border-radius:8px;font-size:12px}.upload-list-item-name-wrapper[data-v-4a46527b]{padding:3px 8px;margin-bottom:5px;border-radius:7px}.upload-list-item-name[data-v-4a46527b]{font-size:11px;width:32vw}}.el-upload{--el-upload-dragger-padding-horizontal:10px;--el-upload-dragger-padding-vertical:40px;--el-upload-list-picture-card-size:var(--el-upload-picture-card-size);--el-upload-picture-card-size:148px;align-items:center;cursor:pointer;display:inline-flex;justify-content:center;outline:none}.el-upload.is-disabled{cursor:not-allowed}.el-upload.is-disabled:focus{color:inherit}.el-upload.is-disabled:focus,.el-upload.is-disabled:focus .el-upload-dragger{border-color:var(--el-border-color-darker)}.el-upload.is-disabled .el-upload-dragger{background-color:var(--el-disabled-bg-color);cursor:not-allowed}.el-upload.is-disabled .el-upload-dragger .el-upload__text{color:var(--el-text-color-placeholder)}.el-upload.is-disabled .el-upload-dragger .el-upload__text em{color:var(--el-disabled-text-color)}.el-upload.is-disabled .el-upload-dragger:hover{border-color:var(--el-border-color-darker)}.el-upload__input{display:none}.el-upload__tip{color:var(--el-text-color-regular);font-size:12px;margin-top:7px}.el-upload iframe{filter:alpha(opacity=0);left:0;opacity:0;position:absolute;top:0;z-index:-1}.el-upload--picture-card{align-items:center;background-color:var(--el-fill-color-lighter);border:1px dashed var(--el-border-color-darker);border-radius:6px;box-sizing:border-box;cursor:pointer;display:inline-flex;height:var(--el-upload-picture-card-size);justify-content:center;vertical-align:top;width:var(--el-upload-picture-card-size)}.el-upload--picture-card>i{color:var(--el-text-color-secondary);font-size:28px}.el-upload--picture-card:hover{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-upload.is-drag{display:block}.el-upload:focus{color:var(--el-color-primary)}.el-upload:focus,.el-upload:focus .el-upload-dragger{border-color:var(--el-color-primary)}.el-upload-dragger{background-color:var(--el-fill-color-blank);border:1px dashed var(--el-border-color);border-radius:6px;box-sizing:border-box;cursor:pointer;overflow:hidden;padding:var(--el-upload-dragger-padding-vertical) var(--el-upload-dragger-padding-horizontal);position:relative;text-align:center}.el-upload-dragger .el-icon--upload{color:var(--el-text-color-placeholder);font-size:67px;line-height:50px;margin-bottom:16px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:var(--el-border);margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:var(--el-text-color-regular);font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:var(--el-color-primary);font-style:normal}.el-upload-dragger:hover{border-color:var(--el-color-primary)}.el-upload-dragger.is-dragover{background-color:var(--el-color-primary-light-9);border:2px dashed var(--el-color-primary);padding:calc(var(--el-upload-dragger-padding-vertical) - 1px) calc(var(--el-upload-dragger-padding-horizontal) - 1px)}.el-upload-list{--el-upload-dragger-padding-horizontal:10px;--el-upload-dragger-padding-vertical:40px;--el-upload-list-picture-card-size:var(--el-upload-picture-card-size);--el-upload-picture-card-size:148px;list-style:none;margin:10px 0 0;padding:0;position:relative}.el-upload-list__item{border-radius:4px;box-sizing:border-box;color:var(--el-text-color-regular);font-size:14px;margin-bottom:5px;position:relative;transition:all .5s cubic-bezier(.55,0,.1,1);width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item .el-icon--upload-success{color:var(--el-color-success)}.el-upload-list__item .el-icon--close{color:var(--el-text-color-regular);cursor:pointer;display:none;opacity:.75;position:absolute;right:5px;top:50%;transform:translateY(-50%);transition:opacity var(--el-transition-duration)}.el-upload-list__item .el-icon--close:hover{color:var(--el-color-primary);opacity:1}.el-upload-list__item .el-icon--close-tip{color:var(--el-color-primary);cursor:pointer;display:none;font-size:12px;font-style:normal;opacity:1;position:absolute;right:5px;top:1px}.el-upload-list__item:hover{background-color:var(--el-fill-color-light)}.el-upload-list__item:hover .el-icon--close{display:inline-flex}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item .el-upload-list__item-info{display:inline-flex;flex-direction:column;justify-content:center;margin-left:4px;width:calc(100% - 30px)}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:inline-flex}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:var(--el-color-primary);cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon--close-tip{display:inline-block}.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}.el-upload-list__item.is-success:active .el-icon--close-tip,.el-upload-list__item.is-success:not(.focusing):focus .el-icon--close-tip{display:none}.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label{display:none;opacity:0}.el-upload-list__item-name{align-items:center;color:var(--el-text-color-regular);display:inline-flex;font-size:var(--el-font-size-base);padding:0 4px;text-align:center;transition:color var(--el-transition-duration)}.el-upload-list__item-name .el-icon{color:var(--el-text-color-secondary);margin-right:6px}.el-upload-list__item-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-upload-list__item-status-label{align-items:center;display:none;height:100%;justify-content:center;line-height:inherit;position:absolute;right:5px;top:0;transition:opacity var(--el-transition-duration)}.el-upload-list__item-delete{color:var(--el-text-color-regular);display:none;font-size:12px;position:absolute;right:10px;top:0}.el-upload-list__item-delete:hover{color:var(--el-color-primary)}.el-upload-list--picture-card{display:inline-flex;flex-wrap:wrap;margin:0}.el-upload-list--picture-card .el-upload-list__item{background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;display:inline-flex;height:var(--el-upload-list-picture-card-size);margin:0 8px 8px 0;overflow:hidden;padding:0;width:var(--el-upload-list-picture-card-size)}.el-upload-list--picture-card .el-upload-list__item .el-icon--check,.el-upload-list--picture-card .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon--close{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:block;opacity:0}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{height:100%;object-fit:contain;width:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{background:var(--el-color-success);height:24px;right:-15px;text-align:center;top:-6px;transform:rotate(45deg);width:40px}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{align-items:center;background-color:var(--el-overlay-color-lighter);color:#fff;cursor:default;display:inline-flex;font-size:20px;height:100%;justify-content:center;left:0;opacity:0;position:absolute;top:0;transition:opacity var(--el-transition-duration);width:100%}.el-upload-list--picture-card .el-upload-list__item-actions span{cursor:pointer;display:none}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:16px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{color:inherit;font-size:inherit;position:static}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-flex}.el-upload-list--picture-card .el-progress{bottom:auto;left:50%;top:50%;transform:translate(-50%,-50%);width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{align-items:center;background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;display:flex;margin-top:10px;overflow:hidden;padding:10px;z-index:0}.el-upload-list--picture .el-upload-list__item .el-icon--check,.el-upload-list--picture .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{display:inline-flex;opacity:0}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item .el-icon--close{top:5px;transform:translateY(0)}.el-upload-list--picture .el-upload-list__item-thumbnail{align-items:center;background-color:var(--el-color-white);display:inline-flex;height:70px;justify-content:center;object-fit:contain;position:relative;width:70px;z-index:1}.el-upload-list--picture .el-upload-list__item-status-label{background:var(--el-color-success);height:26px;position:absolute;right:-17px;text-align:center;top:-7px;transform:rotate(45deg);width:46px}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{cursor:default;height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%;z-index:10}.el-upload-cover:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;height:100%;width:100%}.el-upload-cover__label{background:var(--el-color-success);height:24px;right:-15px;text-align:center;top:-6px;transform:rotate(45deg);width:40px}.el-upload-cover__label i{color:#fff;font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-cover__progress{display:inline-block;position:static;vertical-align:middle;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{height:100%;left:0;position:absolute;top:0;width:100%}.el-upload-cover__interact{background-color:var(--el-overlay-color-light);bottom:0;height:100%;left:0;position:absolute;text-align:center;width:100%}.el-upload-cover__interact .btn{color:#fff;cursor:pointer;display:inline-block;font-size:14px;margin-top:60px;transition:var(--el-transition-md-fade);vertical-align:middle}.el-upload-cover__interact .btn i{margin-top:0}.el-upload-cover__interact .btn span{opacity:0;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{background-color:#fff;bottom:0;color:var(--el-text-color-primary);font-size:14px;font-weight:400;height:36px;left:0;line-height:36px;margin:0;overflow:hidden;padding:0 10px;position:absolute;text-align:left;text-overflow:ellipsis;white-space:nowrap;width:100%}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}@property --border-angle{syntax:"";initial-value:0deg;inherits:false}@keyframes borderRotate-991f3af6{0%{--border-angle:0deg}to{--border-angle:360deg}}.upload-form[data-v-991f3af6]{--upload-card-height:45vh;--upload-card-busy-height:17vh;--upload-list-height:7vh;--upload-list-inner-height:var(--upload-list-height);--upload-list-busy-height:calc(var(--upload-card-height) - var(--upload-card-busy-height) + var(--upload-list-height));--upload-list-gap:10px;--upload-list-radius:15px;--upload-card-vertical-padding:40px;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;height:calc(var(--upload-card-height) + var(--upload-list-height) + var(--upload-list-gap) + var(--upload-card-vertical-padding))}.upload-list-card[data-v-991f3af6]{width:55vw;height:var(--upload-list-height);margin-top:var(--upload-list-gap);display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:var(--upload-list-radius);background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)!important;transition:height .3s ease;overflow:hidden}.upload-list-card[data-v-991f3af6] .el-card__body{padding:0;width:100%;height:100%;overflow:hidden}.upload-list-container[data-v-991f3af6]{width:100%;height:100%;overflow:hidden}@media (max-width:768px){.upload-list-card[data-v-991f3af6]{width:70vw}}.upload-list-card.upload-list-busy[data-v-991f3af6]{height:var(--upload-list-busy-height)}.upload-list-card[data-v-991f3af6]:not(.upload-list-busy) .el-scrollbar__view{height:100%}.upload-card-wrapper[data-v-991f3af6]{position:relative;overflow:visible}.folder-upload-input[data-v-991f3af6]{display:none}.clipboard-paste-receiver[data-v-991f3af6]{position:fixed;top:0;left:-9999px;width:1px;height:1px;padding:0;border:0;opacity:0;pointer-events:none}.upload-prompt-row[data-v-991f3af6]{display:flex;align-items:center;justify-content:center;gap:6px;max-width:calc(100% - 24px);min-width:0}.folder-upload-icon-button[data-v-991f3af6]{display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;width:28px;height:28px;box-sizing:border-box;padding:0;border:none;border-radius:7px;background:transparent;color:var(--el-text-color-secondary);line-height:1;cursor:pointer;transition:color .2s ease,background-color .2s ease}.folder-upload-icon-button[data-v-991f3af6] svg{display:block;width:15px;height:15px;transform:translateY(1px)}.folder-upload-icon-button[data-v-991f3af6]:hover{color:var(--primary-color-accent);background:color-mix(in srgb,var(--primary-color) 12%,transparent)}.folder-upload-icon-button[data-v-991f3af6]:focus-visible{outline:none;color:var(--primary-color-accent);background:color-mix(in srgb,var(--primary-color) 12%,transparent)}.folder-upload-icon-button.upload-list-busy[data-v-991f3af6]{width:24px;height:24px;border-radius:7px}.folder-upload-icon-button.upload-list-busy[data-v-991f3af6] svg{width:13px;height:13px}@media (max-width:768px){.upload-prompt-row[data-v-991f3af6]{gap:2px;max-width:calc(100% - 12px)}.folder-upload-icon-button[data-v-991f3af6]{width:22px;height:22px;border-radius:6px}.folder-upload-icon-button.upload-list-busy[data-v-991f3af6]{width:20px;height:20px}.folder-upload-icon-button[data-v-991f3af6] svg{width:12px;height:12px;transform:none}.folder-upload-icon-button.upload-list-busy[data-v-991f3af6] svg{width:11px;height:11px}}.upload-card-glow[data-v-991f3af6]{position:absolute;width:200px;height:200px;border-radius:50%;background:var(--upload-card-hover-glow-bg);pointer-events:none;transform:translate(-50%,-50%);opacity:0;transition:opacity .3s ease;z-index:10}.upload-card[data-v-991f3af6]{width:55vw;padding:20px;background:none}@media (max-width:768px){.upload-card[data-v-991f3af6]{width:70vw}}.upload-card-busy[data-v-991f3af6] .el-upload-dragger{height:var(--upload-card-busy-height)}[data-v-991f3af6] .el-upload-dragger{display:flex;flex-direction:column;justify-content:center;align-items:center;height:var(--upload-card-height);border-radius:15px;border:var(--el-upload-dragger-border);opacity:.7;background-color:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);box-shadow:var(--glass-shadow);transition:height .3s ease,opacity .25s ease,border-color .25s ease,box-shadow .25s ease,background-color .25s ease}[data-v-991f3af6] .el-upload:focus .el-upload-dragger,[data-v-991f3af6] .el-upload:focus-within .el-upload-dragger{border-color:var(--glass-border-hover)}[data-v-991f3af6] .el-upload-dragger.is-dragover,[data-v-991f3af6] .el-upload-dragger:hover{opacity:.8;border-color:var(--glass-border-hover);box-shadow:var(--el-upload-dragger-hover-box-shadow)}.is-uploading[data-v-991f3af6] .el-upload-dragger{border-color:transparent!important}.upload-card.is-uploading[data-v-991f3af6]{position:relative;background:none}.upload-card.is-uploading[data-v-991f3af6]:before{content:"";position:absolute;top:20px;left:20px;right:20px;bottom:20px;border-radius:15px;padding:2px;background:conic-gradient(from var(--border-angle),transparent 0deg,transparent 30deg,var(--upload-card-effect-color,#2563eb) 60deg,var(--upload-card-effect-highlight-color,color-mix(in srgb,var(--upload-card-effect-color,#2563eb) 70%,#fff)) 90deg,transparent 120deg,transparent 180deg,var(--upload-card-effect-highlight-color,color-mix(in srgb,var(--upload-card-effect-color,#2563eb) 70%,#fff)) 210deg,var(--upload-card-effect-color,#2563eb) 240deg,transparent 270deg,transparent 1turn);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:borderRotate-991f3af6 2s linear infinite;pointer-events:none;z-index:1}.el-upload__text[data-v-991f3af6]{font-weight:700;font-size:medium;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .3s ease}.el-upload__text.upload-list-busy[data-v-991f3af6]{font-size:small}@media (max-width:768px){.el-upload__text.upload-list-busy[data-v-991f3af6],.el-upload__text[data-v-991f3af6]{font-size:12px}}.el-icon--upload[data-v-991f3af6]{font-size:100px;transition:font-size .3s ease;color:#60a5fa}html.dark .el-icon--upload[data-v-991f3af6]{color:#6b6b73}.el-upload__text[data-v-991f3af6] em{color:#1d4ed8}html.dark .el-upload__text[data-v-991f3af6] em{color:#93c5fd}.el-icon--upload.upload-list-busy[data-v-991f3af6]{font-size:60px}@media (max-width:768px){.el-icon--upload[data-v-991f3af6]{font-size:50px}.el-icon--upload.upload-list-busy[data-v-991f3af6]{font-size:30px}}.paste-card[data-v-991f3af6]{display:flex;flex-direction:column;justify-content:center;align-items:center;height:var(--upload-card-height);border-radius:15px;border:var(--el-upload-dragger-border);box-shadow:none;opacity:.7;background-color:var(--el-upload-dragger-bg-color);transition:all .3s ease;box-sizing:border-box}.paste-card[data-v-991f3af6]:hover{opacity:.8;box-shadow:var(--el-upload-dragger-hover-box-shadow)}.paste-card.is-uploading[data-v-991f3af6]{position:relative;border-color:transparent!important;overflow:visible}.paste-card.is-uploading[data-v-991f3af6]:before{content:"";position:absolute;inset:-4px;border-radius:15px;padding:2px;background:conic-gradient(from var(--border-angle),transparent 0deg,transparent 30deg,var(--upload-card-effect-color,#2563eb) 60deg,var(--upload-card-effect-highlight-color,color-mix(in srgb,var(--upload-card-effect-color,#2563eb) 70%,#fff)) 90deg,transparent 120deg,transparent 180deg,var(--upload-card-effect-highlight-color,color-mix(in srgb,var(--upload-card-effect-color,#2563eb) 70%,#fff)) 210deg,var(--upload-card-effect-color,#2563eb) 240deg,transparent 270deg,transparent 1turn);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:borderRotate-991f3af6 2s linear infinite;pointer-events:none;z-index:1}.paste-card[data-v-991f3af6] .el-card__body{padding:0;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center}.upload-card-busy.paste-card[data-v-991f3af6]{height:var(--upload-card-busy-height)}.upload-card-textarea[data-v-991f3af6]{width:50vw;height:70%;border-radius:16px;background:color-mix(in srgb,var(--primary-color) 4%,var(--glass-bg));border:1px solid var(--glass-border);box-shadow:none;transition:background-color .22s ease,border-color .22s ease,box-shadow .22s ease;box-sizing:border-box;display:flex;position:relative;overflow:hidden}.upload-card-busy .upload-card-textarea[data-v-991f3af6]{height:50%}.upload-card-textarea[data-v-991f3af6]:hover{background:color-mix(in srgb,var(--primary-color) 6%,var(--glass-bg));border-color:var(--glass-border-hover)}.upload-card-textarea[data-v-991f3af6]:focus-within{background:color-mix(in srgb,var(--primary-color) 7%,var(--glass-bg));border-color:color-mix(in srgb,var(--primary-color) 45%,var(--glass-border));box-shadow:none}.upload-card-textarea[data-v-991f3af6] .el-textarea__inner{border-radius:16px;background:transparent;transition:color .2s ease,background-color .2s ease;resize:none;border:none;box-shadow:none!important;padding:16px 20px;font-size:14px;line-height:1.6;color:var(--el-text-color-primary)}.upload-card-textarea[data-v-991f3af6] .el-textarea__inner::-moz-placeholder{color:var(--el-text-color-placeholder);font-weight:400;opacity:.7}.upload-card-textarea[data-v-991f3af6] .el-textarea__inner::placeholder{color:var(--el-text-color-placeholder);font-weight:400;opacity:.7}.upload-card-textarea[data-v-991f3af6] .el-textarea__inner:focus{background:transparent;box-shadow:none!important}.upload-card-textarea[data-v-991f3af6] ::-webkit-scrollbar{width:6px;height:6px}.upload-card-textarea[data-v-991f3af6] ::-webkit-scrollbar-track{background:transparent;border-radius:6px;margin:8px}.upload-card-textarea[data-v-991f3af6] ::-webkit-scrollbar-thumb{background:rgba(37,99,235,.5);border-radius:6px;-webkit-transition:background .3s ease;transition:background .3s ease}.upload-card-textarea[data-v-991f3af6] ::-webkit-scrollbar-thumb:hover{background:rgba(37,99,235,.7)}.paste-card-actions[data-v-991f3af6]{display:flex;justify-content:space-between;align-items:center;width:50vw;gap:12px;margin-top:16px}.paste-card-upload-button[data-v-991f3af6]{min-width:92px;height:38px;border-radius:10px!important;font-weight:600;font-size:14px;letter-spacing:.04em;color:var(--primary-color-accent)!important;background:color-mix(in srgb,var(--primary-color) 10%,transparent)!important;border:1px solid color-mix(in srgb,var(--primary-color) 36%,var(--glass-border))!important;box-shadow:none;transition:background-color .2s ease,border-color .2s ease,transform .2s ease!important}.paste-card-upload-button[data-v-991f3af6]:hover{color:var(--primary-color-accent)!important;background:color-mix(in srgb,var(--primary-color) 14%,transparent)!important;border-color:color-mix(in srgb,var(--primary-color) 52%,var(--glass-border))!important;transform:translateY(-1px);box-shadow:none}.paste-card-upload-button[data-v-991f3af6]:focus-visible{color:var(--primary-color-accent)!important;background:color-mix(in srgb,var(--primary-color) 14%,transparent)!important;border-color:color-mix(in srgb,var(--primary-color) 52%,var(--glass-border))!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color) 14%,transparent)!important}.paste-card-upload-button[data-v-991f3af6]:active{transform:translateY(0);background:color-mix(in srgb,var(--primary-color) 18%,transparent)!important}.upload-card-busy .paste-card-upload-button[data-v-991f3af6]{min-width:72px;height:32px;border-radius:8px!important;font-size:13px;letter-spacing:.02em}.upload-card-busy .paste-card-actions[data-v-991f3af6]{margin-top:10px}.paste-card-method-group[data-v-991f3af6]{position:relative;display:inline-flex;align-items:center;width:158px;height:38px;box-sizing:border-box;gap:2px;padding:3px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:10px;overflow:hidden}.paste-card-method-group[data-v-991f3af6]:before{content:"";position:absolute;top:3px;left:3px;width:calc(50% - 4px);height:calc(100% - 6px);border-radius:7px;background:color-mix(in srgb,var(--primary-color) 14%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--primary-color) 42%,var(--glass-border)) inset;transform:translateX(0);transition:transform .22s cubic-bezier(.4,0,.2,1);pointer-events:none}.paste-card-method-group.is-external[data-v-991f3af6]:before{transform:translateX(calc(100% + 2px))}.paste-card-method-button[data-v-991f3af6]{position:relative;z-index:1;display:inline-flex;flex:1 1 0;align-items:center;justify-content:center;min-width:0;height:30px;box-sizing:border-box;padding:0 14px;border:none;border-radius:7px;background:transparent;font-weight:500;font-size:13px;line-height:1;color:var(--el-text-color-secondary);cursor:pointer;transition:color .2s ease}.paste-card-method-button.is-active[data-v-991f3af6],.paste-card-method-button[data-v-991f3af6]:hover{color:var(--primary-color-accent)}.paste-card-method-button[data-v-991f3af6]:focus-visible{outline:none;color:var(--primary-color-accent)}@media (max-width:768px){.paste-card[data-v-991f3af6]{height:var(--upload-card-height);min-height:0;max-height:var(--upload-card-height);padding:6px;border-radius:12px}.upload-card-busy.paste-card[data-v-991f3af6]{height:var(--upload-card-busy-height);min-height:0;max-height:var(--upload-card-busy-height);padding:5px}.upload-card-textarea[data-v-991f3af6]{margin-top:4px;width:calc(100% - 4px)!important;min-height:0;flex-shrink:1}.upload-card-textarea[data-v-991f3af6] .el-textarea__inner{height:100%;min-height:0!important;box-sizing:border-box;border-radius:10px;padding:8px 10px;font-size:12px}.paste-card-actions[data-v-991f3af6]{flex:0 0 auto;width:100%!important;margin-top:6px;gap:6px}.paste-card-upload-button[data-v-991f3af6]{letter-spacing:.02em;padding:0 10px}.paste-card-upload-button[data-v-991f3af6],.upload-card-busy .paste-card-upload-button[data-v-991f3af6]{height:28px;min-width:56px;border-radius:7px!important;font-size:11px}.upload-card-busy .paste-card-actions[data-v-991f3af6]{margin-top:6px}.paste-card-method-group[data-v-991f3af6]{width:112px;height:28px;padding:2px;border-radius:8px}.paste-card-method-group[data-v-991f3af6]:before{top:2px;left:2px;width:calc(50% - 3px);height:calc(100% - 4px);border-radius:6px}.paste-card-method-button[data-v-991f3af6]{height:22px;padding:0 8px;font-size:10px;border-radius:6px}}.upload-list-dashboard[data-v-991f3af6]{display:flex;justify-content:space-between;align-items:center;height:var(--upload-list-inner-height);padding:0 15px;box-sizing:border-box;width:100%;min-width:0;position:sticky;top:0;z-index:1;background:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border);border-radius:var(--upload-list-radius);box-shadow:var(--glass-shadow);opacity:.7}.upload-list-card:not(.upload-list-busy) .upload-list-dashboard[data-v-991f3af6]{height:100%}[data-v-991f3af6] .el-upload-dragger{position:relative;overflow:hidden}[data-v-991f3af6] .el-upload-dragger:before{background-image:radial-gradient(2px 2px at 10% 10%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2px 2px at 20% 30%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2px 2px at 30% 10%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2px 2px at 40% 30%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2px 2px at 50% 10%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2px 2px at 60% 30%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2px 2px at 70% 10%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2px 2px at 80% 30%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2px 2px at 90% 10%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2px 2px at 15% 70%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0);background-size:200px 200px}[data-v-991f3af6] .el-upload-dragger:after,[data-v-991f3af6] .el-upload-dragger:before{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;z-index:0;transition:opacity .6s ease}[data-v-991f3af6] .el-upload-dragger:after{background-image:radial-gradient(3px 3px at 15% 15%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(3px 3px at 50% 50%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(3px 3px at 85% 85%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2.5px 2.5px at 35% 65%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2.5px 2.5px at 65% 35%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0);background-size:150px 150px}.upload-card[data-v-991f3af6]:hover .el-upload-dragger:before{opacity:.3;animation:starScroll-991f3af6 60s linear infinite}.upload-card[data-v-991f3af6]:hover .el-upload-dragger:after{opacity:.6;animation:starScroll-991f3af6 40s linear infinite,starPulse-991f3af6 4s ease-in-out infinite}@keyframes starScroll-991f3af6{0%{background-position:0 0}to{background-position:100px 100px}}@keyframes starPulse-991f3af6{0%,to{opacity:.6}50%{opacity:.3}}.modern-action-group[data-v-991f3af6]{display:flex;align-items:center;gap:5px;height:44px;box-sizing:border-box;padding:5px;background:var(--glass-bg);border-radius:12px;border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)}.modern-action-group[data-v-991f3af6]:hover{background:var(--glass-bg);border-color:var(--glass-border);box-shadow:var(--glass-shadow)}.modern-action-btn[data-v-991f3af6]{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border:none;border-radius:13px;background:var(--upload-action-btn-bg);color:var(--upload-action-btn-color);cursor:pointer;transition:background-color .22s ease,color .22s ease,box-shadow .22s ease,transform .22s ease;font-size:14px;box-shadow:var(--upload-action-btn-shadow);position:relative;overflow:hidden;outline:none!important}.modern-action-btn[data-v-991f3af6]:focus,.modern-action-btn[data-v-991f3af6]:focus-visible{outline:none!important}.modern-action-btn[data-v-991f3af6]:before{content:"";position:absolute;inset:2px;border-radius:11px;background:currentColor;opacity:0;transition:opacity .22s ease}.modern-action-btn[data-v-991f3af6]:hover{background:var(--upload-action-btn-hover-bg);box-shadow:var(--upload-action-btn-hover-shadow)}.modern-action-btn[data-v-991f3af6]:hover:before{opacity:.08}.modern-action-btn[data-v-991f3af6]:active{transform:translateY(0) scale(.97);box-shadow:var(--upload-action-btn-active-shadow)}.modern-action-btn-copy[data-v-991f3af6]{color:var(--upload-action-copy-color)}.modern-action-btn-retry[data-v-991f3af6]{color:var(--upload-action-retry-color)}.modern-action-btn-danger[data-v-991f3af6]{color:var(--upload-action-danger-color);background:var(--upload-action-danger-bg)}.modern-action-btn-danger[data-v-991f3af6]:hover{background:var(--upload-action-danger-hover-bg);box-shadow:var(--upload-action-danger-hover-shadow)}.modern-dropdown-item-content[data-v-991f3af6]{display:flex;align-items:center;justify-content:space-between;width:100%;gap:12px;padding:4px 0}.modern-dropdown-item-content span[data-v-991f3af6]{font-weight:500;color:var(--el-text-color-primary)}.upload-list-dashboard-title[data-v-991f3af6]{font-size:14px;font-weight:600;display:flex;align-items:center;gap:8px;height:44px;box-sizing:border-box;padding:0 14px;background:var(--dashboard-title-bg,rgba(37,99,235,.06));border:none;border-radius:12px;color:var(--el-text-color-primary)}.upload-list-dashboard-title .el-icon[data-v-991f3af6]{font-size:16px;margin-right:4px;opacity:.85}@media (max-width:768px){.modern-action-group[data-v-991f3af6]{height:34px;gap:2px;padding:2px;border-radius:9px}.modern-action-btn[data-v-991f3af6]{width:28px;height:28px;border-radius:7px;font-size:11px}.upload-list-dashboard-title[data-v-991f3af6]{height:34px;font-size:11px;padding:0 7px;border-radius:9px}.upload-list-dashboard-title .el-icon[data-v-991f3af6]{font-size:13px;margin-right:1px}.upload-list-dashboard[data-v-991f3af6]{padding:0 6px;gap:4px}.upload-list-dashboard-title[data-v-991f3af6]{gap:3px;min-width:0;flex-shrink:1;overflow:hidden}.upload-list-dashboard-action[data-v-991f3af6]{flex-shrink:0}}@media (min-width:769px) and (max-height:1050px){.upload-list-dashboard[data-v-991f3af6]{padding:0 12px}.modern-action-group[data-v-991f3af6],.upload-list-dashboard-title[data-v-991f3af6]{height:34px}.modern-action-group[data-v-991f3af6]{gap:3px;padding:3px;border-radius:10px}.modern-action-btn[data-v-991f3af6]{width:28px;height:28px;border-radius:8px;font-size:12px}.upload-list-dashboard-title[data-v-991f3af6]{padding:0 10px;border-radius:10px;font-size:13px}}.logo-link[data-v-5c73638c]{text-decoration:none;display:inline-block}.logo[data-v-5c73638c]{--logo-brightness:1;--logo-hover-brightness:1.08;transition:transform .3s ease,filter .3s ease,opacity .3s ease;border-radius:8px}.logo--fixed[data-v-5c73638c]{position:fixed;top:20px;left:20px;z-index:100}.logo--relative[data-v-5c73638c]{position:relative}.logo--absolute[data-v-5c73638c]{position:absolute;top:5px;left:5px;z-index:100}.logo--static[data-v-5c73638c]{position:static}.logo--small[data-v-5c73638c]{height:50px;width:50px}.logo--normal[data-v-5c73638c]{height:70px;width:70px}.logo--large[data-v-5c73638c]{height:90px;width:90px}.logo--hover-enabled[data-v-5c73638c]:hover{transform:scale(1.1) rotate(5deg);filter:brightness(var(--logo-hover-brightness)) drop-shadow(0 0 10px var(--logo-glow-color))}@media (max-width:768px){.logo--small[data-v-5c73638c]{height:40px;width:40px}.logo--normal[data-v-5c73638c]{height:60px;width:60px}.logo--large[data-v-5c73638c]{height:75px;width:75px}}.logo[data-v-5c73638c]:focus{outline:2px solid var(--el-color-primary);outline-offset:2px}.logo[data-v-5c73638c]{filter:var(--logo-filter,brightness(var(--logo-brightness)) drop-shadow(0 0 0 var(--logo-glow-color)));opacity:var(--logo-opacity,1)}html.dark{--logo-brightness:0.9;--logo-hover-brightness:1;filter:var(--logo-dark-filter,brightness(var(--logo-brightness)) drop-shadow(0 0 0 var(--logo-glow-color)))}.directory-suggestion-input[data-v-28b8eda7]{width:100%;height:100%;position:relative}.suggestion-dropdown[data-v-28b8eda7]{position:absolute;top:calc(100% + 10px);left:0;width:100%;z-index:9999;border-radius:12px;border:1px solid var(--glass-border);background-color:var(--popper-bg-color);box-shadow:var(--popper-shadow);padding:6px 0;overflow:hidden}.suggestion-list[data-v-28b8eda7]{list-style:none;margin:0;padding:0;max-height:260px;overflow-y:auto}.suggestion-item[data-v-28b8eda7]{padding:8px 16px;font-size:13px;border-radius:6px;margin:2px 6px;cursor:pointer;transition:background-color .2s ease;text-align:left;color:var(--el-text-color-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.suggestion-item[data-v-28b8eda7]:hover{background-color:var(--el-fill-color-light)}#themeToggle[data-v-e9449eac]{border:1px solid var(--glass-border);box-sizing:border-box;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:12px;background-color:var(--glass-bg);box-shadow:none;transition:background-color .25s ease,border-color .25s ease,transform .25s ease}#themeToggle[data-v-e9449eac]:hover{border-color:var(--glass-border-hover)}#themeToggle[data-v-e9449eac]{backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}@media (max-width:768px){#themeToggle[data-v-e9449eac]{width:2rem;height:2rem}}.theme_toggle_circle1[data-v-e9449eac]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-e9449eac]{transition:all .5s ease-in-out;fill:var(--theme-toggle-bg-color)}.theme_toggle_svg[data-v-e9449eac]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--theme-toggle-color)}.dark.theme_toggle_svg[data-v-e9449eac]{transform:rotate(40deg)}.theme_toggle_g[data-v-e9449eac]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-e9449eac],.icon-fade-leave-active[data-v-e9449eac]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-e9449eac]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-e9449eac]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-e9449eac],.icon-fade-leave-from[data-v-e9449eac]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-e9449eac]{display:inline-block}.container[data-v-9426cafc]{background:var(--bg-color);min-height:100vh}.rotate[data-v-9426cafc]{animation:spin-9426cafc 2s ease-in-out}.scale[data-v-9426cafc]{animation:scale-9426cafc .5s ease-in-out}@keyframes spin-9426cafc{0%{transform:rotate(0deg)}25%{transform:rotate(5deg)}50%{transform:rotate(0deg)}75%{transform:rotate(-3deg)}to{transform:rotate(0deg)}}@keyframes streamer-9426cafc{0%{background-position:200%}to{background-position:-200%}}@keyframes rotate-shake-9426cafc{0%{transform:rotate(0deg)}50%{transform:rotate(10deg)}to{transform:rotate(0deg)}}@keyframes shake-9426cafc{0%{transform:translateX(0)}50%{transform:translateX(-1px)}to{transform:translateX(0)}}@keyframes scale-9426cafc{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}.desktop-only[data-v-9426cafc]{display:inline-block}.mobile-only[data-v-9426cafc]{display:none}@media (max-width:768px){.desktop-only[data-v-9426cafc]{display:none!important}.mobile-only[data-v-9426cafc]{display:flex!important}}.toggle-dark-button[data-v-9426cafc]{width:2.5rem;height:2.5rem;box-sizing:border-box;display:flex;justify-content:center;align-items:center;border:1px solid var(--glass-border);transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:var(--glass-bg);box-shadow:none;border-radius:12px;position:fixed;top:30px;right:80px;padding:0}.more-dropdown[data-v-9426cafc]{position:fixed;top:30px;right:30px;z-index:100}.more-dropdown .more-button[data-v-9426cafc]{width:2.5rem;height:2.5rem;box-sizing:border-box;display:flex;justify-content:center;align-items:center;border:1px solid var(--glass-border);transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:var(--glass-bg);box-shadow:none;color:var(--theme-toggle-color);border-radius:12px;outline:none;padding:0}.more-dropdown .more-button[data-v-9426cafc]:hover{transform:scale(1.05);border-color:var(--glass-border-hover)}.upload-method-button[data-v-9426cafc]{width:2.5rem;height:2.5rem;box-sizing:border-box;display:flex;justify-content:center;align-items:center;border:1px solid var(--glass-border);transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:var(--glass-bg);box-shadow:none;color:var(--theme-toggle-color);border-radius:12px;position:fixed;top:30px;right:130px;outline:none;padding:0}@media (max-width:768px){.upload-method-button[data-v-9426cafc]{width:2rem;height:2rem}}.upload-method-icon[data-v-9426cafc]{outline:none}.more-button .svg-inline--fa[data-v-9426cafc],.upload-method-button .svg-inline--fa[data-v-9426cafc]{font-size:1.5em}.directory-tree-trigger .svg-inline--fa[data-v-9426cafc]{font-size:1.2em}.mobile-more-dropdown[data-v-9426cafc]{position:fixed;top:30px;right:18px;z-index:100}.mobile-more-button[data-v-9426cafc]{width:2rem;height:2rem;display:flex;justify-content:center;align-items:center;border:1px solid var(--glass-border);transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:var(--glass-bg);box-shadow:none;color:var(--theme-toggle-color);border-radius:12px;outline:none;padding:0}.mobile-more-button[data-v-9426cafc]:hover{transform:scale(1.05);border-color:var(--glass-border-hover)}.upload-folder-container[data-v-9426cafc]{display:flex;align-items:center;position:fixed;top:30px;right:180px;z-index:100}.upload-folder-container.no-announcement[data-v-9426cafc]{right:180px}@media (max-width:768px){.upload-folder-container.no-announcement[data-v-9426cafc],.upload-folder-container[data-v-9426cafc]{right:58px}}.upload-folder[data-v-9426cafc]{width:100px;height:2.5rem;border-radius:12px;display:flex;align-items:center;box-sizing:border-box;transition:all .3s ease,width .4s ease}.upload-folder.active[data-v-9426cafc]{width:200px}@media (max-width:768px){.upload-folder[data-v-9426cafc]{width:80px;height:2rem}.upload-folder.active[data-v-9426cafc]{width:120px}}.directory-tree-trigger[data-v-9426cafc]{width:2.5rem;height:2.5rem;display:flex;justify-content:center;align-items:center;box-sizing:border-box;border:1px solid var(--glass-border);margin-left:10px;background-color:var(--glass-bg);box-shadow:var(--glass-shadow);color:var(--theme-toggle-color);border-radius:12px;outline:none;cursor:pointer;transition:background-color .25s ease,border-color .25s ease,transform .25s ease}.directory-tree-trigger[data-v-9426cafc]:hover{border-color:var(--glass-border-hover);transform:scale(1.05)}@media (max-width:768px){.directory-tree-trigger[data-v-9426cafc]{width:2rem;height:2rem}.directory-tree-trigger .svg-inline--fa[data-v-9426cafc]{font-size:1.1em}}.upload-folder[data-v-9426cafc] .inner-folder-input{width:100%;height:100%}.upload-folder[data-v-9426cafc] .el-input{height:100%;box-sizing:border-box}.upload-folder[data-v-9426cafc] .el-input__wrapper{border-radius:12px;background-color:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);box-shadow:var(--glass-shadow);border:1px solid var(--glass-border);height:100%;padding:0 10px;box-sizing:border-box;transition:background-color .25s ease,border-color .25s ease,box-shadow .25s ease!important}.upload-folder[data-v-9426cafc] .el-input__wrapper:hover{background-color:color-mix(in srgb,var(--el-fill-color-blank) 85%,transparent);border-color:var(--glass-border-hover)}html.dark .upload-folder[data-v-9426cafc] .el-input__wrapper:hover{background-color:color-mix(in srgb,var(--el-bg-color) 88%,transparent);border-color:var(--glass-border-hover)}.upload-folder[data-v-9426cafc] .el-input__wrapper.is-focus,.upload-folder[data-v-9426cafc] .el-input__wrapper:focus-within{border-color:var(--glass-border);box-shadow:var(--glass-shadow)!important}.quick-toolbar[data-v-9426cafc]{--quick-toolbar-size:2.5rem;--quick-toolbar-button-size:calc(var(--quick-toolbar-size) - 6px);position:fixed;bottom:50px;right:30px;width:var(--quick-toolbar-size);box-sizing:border-box;display:flex;flex-direction:column;align-items:center;gap:0;z-index:200;padding:3px;border-radius:999px;border:1px solid var(--glass-border);background-color:var(--glass-bg);box-shadow:none;transition:background-color .24s ease,border-color .24s ease}.directory-tree-trigger[data-v-9426cafc],.mobile-more-button[data-v-9426cafc],.more-dropdown .more-button[data-v-9426cafc],.quick-toolbar[data-v-9426cafc],.toggle-dark-button[data-v-9426cafc],.upload-method-button[data-v-9426cafc]{backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}.quick-toolbar-button[data-v-9426cafc]{width:var(--quick-toolbar-button-size);height:var(--quick-toolbar-button-size);border:none;transition:transform .22s ease,background-color .22s ease,box-shadow .22s ease,color .22s ease;margin-left:0;padding:0;border-radius:999px;background-color:transparent;box-shadow:none;color:var(--toolbar-button-color);outline:none}.quick-toolbar-actions[data-v-9426cafc]{display:grid;grid-template-rows:0fr;width:100%;margin-bottom:0;opacity:0;pointer-events:none;transform:translateY(12px);transform-origin:bottom center;transition:grid-template-rows .52s cubic-bezier(.16,1,.3,1),margin-bottom .52s cubic-bezier(.16,1,.3,1),opacity .32s ease,transform .52s cubic-bezier(.16,1,.3,1)}.quick-toolbar.is-expanded .quick-toolbar-actions[data-v-9426cafc]{grid-template-rows:1fr;margin-bottom:4px;opacity:1;pointer-events:auto;transform:translateY(0)}.quick-toolbar-actions-inner[data-v-9426cafc]{display:flex;flex-direction:column;align-items:center;gap:3px;min-height:0;overflow:hidden}.quick-toolbar-more.is-active[data-v-9426cafc]{background-color:var(--upload-action-btn-hover-bg);box-shadow:var(--upload-action-btn-shadow)}.quick-toolbar-more[data-v-9426cafc]{margin-top:4px}.quick-toolbar-icon[data-v-9426cafc]{font-size:16px}.quick-toolbar-toggle-icon[data-v-9426cafc]{transform:rotate(180deg);transition:transform .32s ease}.quick-toolbar-more.is-active .quick-toolbar-toggle-icon[data-v-9426cafc]{transform:rotate(0deg)}.info-container[data-v-9426cafc]:hover,.quick-toolbar-button[data-v-9426cafc]:hover{transform:scale(1.05);background-color:var(--upload-action-btn-hover-bg);box-shadow:var(--upload-action-btn-hover-shadow)}.quick-toolbar[data-v-9426cafc]:hover{border-color:var(--glass-border-hover)}.quick-toolbar-button[data-v-9426cafc]:hover{transform:none}.toggle-dark-button[data-v-9426cafc]:hover,.upload-method-button[data-v-9426cafc]:hover{transform:scale(1.05);border-color:var(--glass-border-hover)}.upload-folder[data-v-9426cafc]:hover .el-input__wrapper{background-color:color-mix(in srgb,var(--el-fill-color-blank) 85%,transparent);border-color:var(--glass-border-hover)}html.dark .upload-folder[data-v-9426cafc]:hover .el-input__wrapper{background-color:color-mix(in srgb,var(--el-bg-color) 88%,transparent);border-color:var(--glass-border-hover)}@media (max-width:768px){.quick-toolbar[data-v-9426cafc]{--quick-toolbar-size:2rem;--quick-toolbar-button-size:calc(var(--quick-toolbar-size) - 4px);right:18px;bottom:max(72px,calc(6vh + 20px + env(safe-area-inset-bottom)));padding:2px}.quick-toolbar-actions[data-v-9426cafc]{margin-bottom:0}.quick-toolbar.is-expanded .quick-toolbar-actions[data-v-9426cafc]{margin-bottom:3px}.quick-toolbar-actions-inner[data-v-9426cafc]{gap:2px}.quick-toolbar-more[data-v-9426cafc]{margin-top:3px}.quick-toolbar-icon[data-v-9426cafc]{font-size:14px}}[data-v-9426cafc] .el-dialog{border-radius:12px;border:1px solid var(--glass-border);background-color:var(--dialog-bg-color);box-shadow:var(--dialog-box-shadow)}.dialog-action[data-v-9426cafc]{display:flex;justify-content:center;margin-top:20px}.header[data-v-9426cafc]{display:flex;justify-content:center;align-items:center;padding:15px;margin-top:5vh;color:var(--upload-header-color);-webkit-user-select:none;-moz-user-select:none;user-select:none;text-decoration:none;position:relative;top:-3vh;transition:all .3s ease}.title[data-v-9426cafc]{font-size:2.25rem;font-weight:400;font-family:Pacifico,Noto Sans SC,sans-serif;color:var(--upload-title-text-color);text-shadow:var(--upload-title-text-shadow);position:relative;isolation:isolate;padding-bottom:8px;cursor:pointer;transition:transform .4s cubic-bezier(.4,0,.2,1),filter .25s ease;animation:float-9426cafc 4s ease-in-out infinite;letter-spacing:3px}.title[data-v-9426cafc]:hover{transform:scale(1.08);filter:drop-shadow(0 0 20px var(--upload-title-hover-glow))}.title[data-v-9426cafc]:after{content:"";position:absolute;bottom:0;left:50%;transform:translateX(-50%);z-index:0;width:0;height:3px;background:var(--upload-title-underline-bg);border-radius:3px;transition:width .5s cubic-bezier(.4,0,.2,1);box-shadow:var(--upload-title-underline-shadow)}.title[data-v-9426cafc]:hover:after{width:80%}.main-title[data-v-9426cafc]{color:var(--upload-main-title-color);text-decoration:none;display:inline-block;position:relative;filter:drop-shadow(0 0 8px rgba(255,255,255,.3))}.title-base-text[data-v-9426cafc]{position:relative;z-index:1;display:inline-block;transition:opacity .16s ease}.title:hover .title-base-text[data-v-9426cafc]{opacity:0}.title[data-v-9426cafc]:hover{text-shadow:none}.title-crayon-text[data-v-9426cafc]{position:absolute;left:50%;top:-1px;z-index:2;width:-moz-max-content;width:max-content;pointer-events:none;white-space:nowrap;color:var(--upload-title-crayon-deep,#1d2129);opacity:0;-webkit-text-stroke:.35px var(--upload-title-crayon-edge);text-shadow:-1.2px .4px 0 var(--upload-title-crayon-burr),.9px -.7px 0 hsla(0,0%,100%,.24),1.5px .5px 0 var(--upload-title-crayon-dust),-1.7px -.6px 0 var(--upload-title-crayon-dust);transform:translateX(-50%) rotate(-.8deg);transform-origin:left 68%;clip-path:inset(-10px 100% -24px -10px);filter:saturate(1.08) contrast(1.06)}.title:hover .title-crayon-text[data-v-9426cafc]{animation:crayonWrite-9426cafc .82s steps(18) forwards,crayonScratch-9426cafc .16s steps(2) .82s 3}@keyframes float-9426cafc{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes crayonWrite-9426cafc{0%{opacity:0;clip-path:inset(-10px 100% -24px -10px)}12%{opacity:.92}32%{clip-path:inset(-10px 68% -24px -10px)}47%{clip-path:inset(-10px 52% -24px -10px)}63%{clip-path:inset(-10px 34% -24px -10px)}78%{clip-path:inset(-10px 18% -24px -10px)}to{opacity:.92;clip-path:inset(-10px -10px -24px -10px)}}@keyframes crayonScratch-9426cafc{0%,to{transform:translateX(-50%) rotate(-.8deg)}50%{transform:translateX(calc(-50% + 1px)) rotate(-.45deg)}}@media (max-width:768px){.title[data-v-9426cafc]{font-size:1.4rem;letter-spacing:.75px}.title[data-v-9426cafc]:hover{transform:scale(1.05)}}.upload-home[data-v-9426cafc]{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:94vh;background-color:transparent}.upload[data-v-9426cafc]{margin-bottom:5px;position:relative;top:-3vh}@media (max-width:768px){.header[data-v-9426cafc]{padding:5px 15px 2px;top:-2.5vh}.title[data-v-9426cafc]{margin:.4em 0;padding-bottom:.45em;line-height:1.2}.upload[data-v-9426cafc]{top:-3.8vh}}@media (min-width:769px) and (max-height:1050px){.header[data-v-9426cafc]{padding:8px 15px;margin-top:3vh;top:-2vh}.title[data-v-9426cafc]{margin:.45em 0;padding-bottom:.45em;font-size:1.875rem;line-height:1.2;letter-spacing:2px}.upload[data-v-9426cafc]{top:-2.5vh}}.footer[data-v-9426cafc]{height:6vh} \ No newline at end of file diff --git a/frontend-dist/css/502.ae48a06e.css.gz b/frontend-dist/css/502.ae48a06e.css.gz deleted file mode 100644 index c11581fc1fe987fa8d9cb49cdf74e3800a937ff9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12448 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 diff --git a/frontend-dist/css/757.60c15823.css b/frontend-dist/css/757.60c15823.css deleted file mode 100644 index 7c25b30..0000000 --- a/frontend-dist/css/757.60c15823.css +++ /dev/null @@ -1 +0,0 @@ -.sidebar-container[data-v-418ec867]{display:flex;flex-direction:column;position:fixed;top:50%;left:8px;transform:translateY(-50%);z-index:2001;max-width:200px;background:var(--glass-bg);backdrop-filter:blur(12px) saturate(1.4);-webkit-backdrop-filter:blur(12px) saturate(1.4);border:1px solid var(--glass-border);border-radius:16px;box-shadow:none;transition:width .3s ease,box-shadow .3s ease;overflow:hidden}.sidebar-container.is-collapsed[data-v-418ec867]{width:56px}html.dark .sidebar-container[data-v-418ec867]{background:var(--glass-bg);box-shadow:none}.sidebar-container[data-v-418ec867]:hover,html.dark .sidebar-container[data-v-418ec867]:hover{box-shadow:none}.menu-list[data-v-418ec867]{padding:8px}.menu-item[data-v-418ec867]{display:flex;align-items:center;justify-content:flex-start;padding:12px 12px 12px 0;height:42px;box-sizing:border-box;border-radius:10px;cursor:pointer;transition:background .2s ease,color .2s ease;color:var(--admin-container-color,#333);gap:0;overflow:hidden}.menu-item[data-v-418ec867]:hover{background:color-mix(in srgb,var(--el-text-color-primary) 6%,transparent)}html.dark .menu-item[data-v-418ec867]:hover{background:color-mix(in srgb,var(--el-text-color-primary) 10%,transparent)}.menu-item.is-active[data-v-418ec867]{background:color-mix(in srgb,var(--primary-color) 20%,transparent);color:var(--primary-color)}html.dark .menu-item.is-active[data-v-418ec867]{background:color-mix(in srgb,var(--primary-color) 30%,transparent);color:var(--el-text-color-primary)}.menu-icon[data-v-418ec867]{width:40px;min-width:40px;font-size:16px;flex-shrink:0;text-align:center}.menu-text[data-v-418ec867]{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .2s ease .05s,max-width .25s ease}.sidebar-container.is-collapsed .menu-text[data-v-418ec867]{opacity:0;max-width:0;transition:opacity .1s ease,max-width .2s ease}.toggle-button[data-v-418ec867]{padding:12px;text-align:center;cursor:pointer;transition:all .2s ease;color:var(--admin-container-color,#333)}.toggle-button[data-v-418ec867],html.dark .toggle-button[data-v-418ec867]{border-top:1px solid color-mix(in srgb,var(--el-text-color-primary) 8%,transparent)}.toggle-button[data-v-418ec867]:hover{background:color-mix(in srgb,var(--el-text-color-primary) 10%,transparent)}html.dark .toggle-button[data-v-418ec867]:hover{background:color-mix(in srgb,var(--el-text-color-primary) 6%,transparent)}@media (max-width:768px){.sidebar-container[data-v-418ec867]{left:4px;max-width:170px}.sidebar-container.is-collapsed[data-v-418ec867]{width:50px}.menu-icon[data-v-418ec867]{width:34px;min-width:34px}}.el-progress{align-items:center;display:flex;line-height:1;position:relative}.el-progress__text{color:var(--el-text-color-regular);font-size:14px;line-height:1;margin-left:5px;min-width:50px}.el-progress__text i{display:block;vertical-align:middle}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{left:0;margin:0;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:100%}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{display:inline-block;vertical-align:middle}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{display:block;margin-right:0;padding-right:0}.el-progress--text-inside .el-progress-bar{margin-right:0;padding-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:var(--el-color-success)}.el-progress.is-success .el-progress__text{color:var(--el-color-success)}.el-progress.is-warning .el-progress-bar__inner{background-color:var(--el-color-warning)}.el-progress.is-warning .el-progress__text{color:var(--el-color-warning)}.el-progress.is-exception .el-progress-bar__inner{background-color:var(--el-color-danger)}.el-progress.is-exception .el-progress__text{color:var(--el-color-danger)}.el-progress-bar{box-sizing:border-box;flex-grow:1}.el-progress-bar__outer{background-color:var(--el-border-color-lighter);border-radius:100px;height:6px;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{background-color:var(--el-color-primary);border-radius:100px;height:100%;left:0;line-height:1;position:absolute;text-align:right;top:0;transition:width .6s ease;white-space:nowrap}.el-progress-bar__inner:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-progress-bar__inner--indeterminate{animation:indeterminate 3s infinite;transform:translateZ(0)}.el-progress-bar__inner--striped{background-image:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 0,transparent 50%,rgba(0,0,0,.1) 0,rgba(0,0,0,.1) 75%,transparent 0,transparent);background-size:1.25em 1.25em}.el-progress-bar__inner--striped.el-progress-bar__inner--striped-flow{animation:striped-flow 3s linear infinite}.el-progress-bar__innerText{color:#fff;display:inline-block;font-size:12px;margin:0 5px;vertical-align:middle}@keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}@keyframes indeterminate{0%{left:-100%}to{left:100%}}@keyframes striped-flow{0%{background-position:-100%}to{background-position:100%}}:root{--el-popup-modal-bg-color:var(--el-color-black);--el-popup-modal-opacity:0.5}.v-modal-enter{animation:v-modal-in var(--el-transition-duration-fast) ease}.v-modal-leave{animation:v-modal-out var(--el-transition-duration-fast) ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{background:var(--el-popup-modal-bg-color);height:100%;left:0;opacity:var(--el-popup-modal-opacity);position:fixed;top:0;width:100%}.el-popup-parent--hidden{overflow:hidden}.el-dialog{--el-dialog-width:50%;--el-dialog-margin-top:15vh;--el-dialog-bg-color:var(--el-bg-color);--el-dialog-box-shadow:var(--el-box-shadow);--el-dialog-title-font-size:var(--el-font-size-large);--el-dialog-content-font-size:14px;--el-dialog-font-line-height:var(--el-font-line-height-primary);--el-dialog-padding-primary:16px;--el-dialog-border-radius:var(--el-border-radius-base);background:var(--el-dialog-bg-color);border-radius:var(--el-dialog-border-radius);box-shadow:var(--el-dialog-box-shadow);box-sizing:border-box;margin:var(--el-dialog-margin-top,15vh) auto 50px;overflow-wrap:break-word;padding:var(--el-dialog-padding-primary);position:relative;width:var(--el-dialog-width,50%)}.el-dialog:focus{outline:none!important}.el-dialog.is-align-center{margin:auto}.el-dialog.is-fullscreen{--el-dialog-width:100%;--el-dialog-margin-top:0;border-radius:0;height:100%;margin-bottom:0;overflow:auto}.el-dialog__wrapper{bottom:0;left:0;margin:0;overflow:auto;position:fixed;right:0;top:0}.el-dialog.is-draggable .el-dialog__header{cursor:move;-webkit-user-select:none;user-select:none}.el-dialog__header{padding-bottom:var(--el-dialog-padding-primary)}.el-dialog__header.show-close{padding-right:calc(var(--el-dialog-padding-primary) + var(--el-message-close-size, 16px))}.el-dialog__headerbtn{background:transparent;border:none;cursor:pointer;font-size:var(--el-message-close-size,16px);height:48px;outline:none;padding:0;position:absolute;right:0;top:0;width:48px}.el-dialog__headerbtn .el-dialog__close{color:var(--el-color-info);font-size:inherit}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:var(--el-color-primary)}.el-dialog__title{color:var(--el-text-color-primary);font-size:var(--el-dialog-title-font-size);line-height:var(--el-dialog-font-line-height)}.el-dialog__body{color:var(--el-text-color-regular);font-size:var(--el-dialog-content-font-size)}.el-dialog__footer{box-sizing:border-box;padding-top:var(--el-dialog-padding-primary);text-align:right}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial}.el-dialog--center .el-dialog__footer{text-align:inherit}.el-modal-dialog.is-penetrable{pointer-events:none}.el-modal-dialog.is-penetrable .el-dialog{pointer-events:auto}.el-overlay-dialog{bottom:0;left:0;overflow:auto;position:fixed;right:0;top:0}.dialog-fade-enter-active{animation:modal-fade-in var(--el-transition-duration)}.dialog-fade-enter-active .el-overlay-dialog{animation:dialog-fade-in var(--el-transition-duration)}.dialog-fade-leave-active{animation:modal-fade-out var(--el-transition-duration)}.dialog-fade-leave-active .el-overlay-dialog{animation:dialog-fade-out var(--el-transition-duration)}@keyframes dialog-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes dialog-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-fade-out{0%{opacity:1}to{opacity:0}}.date-range-calendar[data-v-5fbe496c]{--calendar-day-size:38px;width:min(336px,100%);max-width:100%;min-width:0;box-sizing:border-box;color:var(--admin-container-color);-webkit-user-select:none;-moz-user-select:none;user-select:none}.selected-range[data-v-5fbe496c]{margin-bottom:16px}.selected-range-inputs[data-v-5fbe496c]{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:8px}.date-input[data-v-5fbe496c]{width:100%;min-width:0;height:34px;box-sizing:border-box;border:1px solid var(--glass-border);border-radius:8px;padding:0 8px;background:var(--glass-bg);color:var(--admin-container-color);font-size:13px;text-align:center;outline:none;transition:border-color .18s ease,box-shadow .18s ease,background-color .18s ease}.date-input[data-v-5fbe496c]:focus,.date-input[data-v-5fbe496c]:hover{border-color:var(--el-color-primary);box-shadow:none}.date-range-separator[data-v-5fbe496c]{color:var(--el-text-color-secondary);font-size:12px;font-weight:700}.calendar-header[data-v-5fbe496c]{display:grid;grid-template-columns:36px 1fr 36px;align-items:center;gap:8px;margin-bottom:14px}.calendar-title[data-v-5fbe496c]{text-align:center;font-size:16px;font-weight:700}.calendar-nav[data-v-5fbe496c]{width:36px;height:36px;border:1px solid var(--glass-border);border-radius:50%;background:var(--glass-bg);color:var(--admin-container-color);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:color .2s ease,border-color .2s ease,background-color .2s ease,box-shadow .2s ease}.calendar-nav[data-v-5fbe496c]:focus,.calendar-nav[data-v-5fbe496c]:hover{color:var(--el-color-primary);border-color:var(--el-color-primary);background:color-mix(in srgb,var(--primary-color) 8%,transparent);box-shadow:none}.calendar-grid[data-v-5fbe496c],.calendar-weekdays[data-v-5fbe496c]{display:grid;grid-template-columns:repeat(7,1fr)}.calendar-weekdays[data-v-5fbe496c]{margin-bottom:8px;color:var(--el-text-color-secondary);font-size:12px;font-weight:600;text-align:center}.calendar-weekdays span[data-v-5fbe496c]{height:24px;line-height:24px}.calendar-grid[data-v-5fbe496c]{gap:4px}.calendar-day[data-v-5fbe496c]{position:relative;width:var(--calendar-day-size);height:var(--calendar-day-size);box-sizing:border-box;justify-self:center;padding:0;border:1px solid transparent;border-radius:50%;background:transparent;color:var(--admin-container-color);font-size:14px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:color .18s ease,background-color .18s ease,border-color .18s ease,box-shadow .18s ease}.calendar-day[data-v-5fbe496c]:focus,.calendar-day[data-v-5fbe496c]:hover{border-color:color-mix(in srgb,var(--primary-color) 45%,transparent);background:color-mix(in srgb,var(--primary-color) 10%,transparent);color:var(--el-color-primary)}.calendar-day.is-muted[data-v-5fbe496c]{color:var(--el-text-color-placeholder);opacity:.62}.calendar-day.is-today[data-v-5fbe496c]{border-color:rgba(249,115,22,.7)}.calendar-day.is-in-range[data-v-5fbe496c]{border-radius:12px;background:color-mix(in srgb,var(--primary-color) 12%,transparent);color:var(--el-color-primary)}.calendar-day.is-range-end[data-v-5fbe496c],.calendar-day.is-range-start[data-v-5fbe496c]{background:var(--el-color-primary);border-color:var(--el-color-primary);color:#fff;box-shadow:none}html.dark .calendar-day.is-muted[data-v-5fbe496c]{color:var(--el-text-color-placeholder)}@media (max-width:768px){.date-range-calendar[data-v-5fbe496c]{--calendar-day-size:clamp(30px,8.5vw,38px)}}.el-radio{--el-radio-font-size:var(--el-font-size-base);--el-radio-text-color:var(--el-text-color-regular);--el-radio-font-weight:var(--el-font-weight-primary);--el-radio-input-height:14px;--el-radio-input-width:14px;--el-radio-input-border-radius:var(--el-border-radius-circle);--el-radio-input-bg-color:var(--el-fill-color-blank);--el-radio-input-border:var(--el-border);--el-radio-input-border-color:var(--el-border-color);--el-radio-input-border-color-hover:var(--el-color-primary);align-items:center;color:var(--el-radio-text-color);cursor:pointer;display:inline-flex;font-size:var(--el-font-size-base);font-weight:var(--el-radio-font-weight);height:32px;margin-right:30px;outline:none;position:relative;-webkit-user-select:none;user-select:none;white-space:nowrap}.el-radio.el-radio--large{height:40px}.el-radio.el-radio--small{height:24px}.el-radio.is-bordered{border:var(--el-border);border-radius:var(--el-border-radius-base);box-sizing:border-box;padding:0 15px 0 9px}.el-radio.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-radio.is-bordered.is-disabled{border-color:var(--el-border-color-lighter);cursor:not-allowed}.el-radio.is-bordered.el-radio--large{border-radius:var(--el-border-radius-base);padding:0 19px 0 11px}.el-radio.is-bordered.el-radio--large .el-radio__label{font-size:var(--el-font-size-base)}.el-radio.is-bordered.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.is-bordered.el-radio--small{border-radius:var(--el-border-radius-base);padding:0 11px 0 7px}.el-radio.is-bordered.el-radio--small .el-radio__label{font-size:12px}.el-radio.is-bordered.el-radio--small .el-radio__inner{height:12px;width:12px}.el-radio:last-child{margin-right:0}.el-radio__input{cursor:pointer;display:inline-flex;outline:none;position:relative;vertical-align:middle;white-space:nowrap}.el-radio__input.is-disabled .el-radio__inner{border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled .el-radio__inner:after{background-color:var(--el-disabled-bg-color);cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled.is-checked .el-radio__inner:after{background-color:var(--el-text-color-placeholder)}.el-radio__input.is-disabled+span.el-radio__label{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{background:var(--el-color-primary);border-color:var(--el-color-primary)}.el-radio__input.is-checked .el-radio__inner:after{background-color:var(--el-color-white);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:var(--el-color-primary)}.el-radio__input.is-focus .el-radio__inner{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner{background-color:var(--el-radio-input-bg-color);border:var(--el-radio-input-border);border-radius:var(--el-radio-input-border-radius);box-sizing:border-box;cursor:pointer;display:inline-block;height:var(--el-radio-input-height);position:relative;width:var(--el-radio-input-width)}.el-radio__inner:hover{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner:after{border-radius:var(--el-radio-input-border-radius);content:"";height:4px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%) scale(0);transition:transform .15s ease-in;width:4px}.el-radio__original{bottom:0;left:0;margin:0;opacity:0;outline:none;position:absolute;right:0;top:0;z-index:-1}.el-radio__original:focus-visible+.el-radio__inner{border-radius:var(--el-radio-input-border-radius);outline:2px solid var(--el-radio-input-border-color-hover);outline-offset:1px}.el-radio:focus:not(:focus-visible):not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{box-shadow:0 0 2px 2px var(--el-radio-input-border-color-hover)}.el-radio__label{font-size:var(--el-radio-font-size);padding-left:8px}.el-radio.el-radio--large .el-radio__label{font-size:14px}.el-radio.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.el-radio--small .el-radio__label{font-size:12px}.el-radio.el-radio--small .el-radio__inner{height:12px;width:12px}.el-radio-group{align-items:center;display:inline-flex;flex-wrap:wrap;font-size:0}.el-radio-button{--el-radio-button-checked-bg-color:var(--el-color-primary);--el-radio-button-checked-text-color:var(--el-color-white);--el-radio-button-checked-border-color:var(--el-color-primary);--el-radio-button-disabled-checked-fill:var(--el-border-color-extra-light);display:inline-block;outline:none;position:relative}.el-radio-button__inner{-webkit-appearance:none;background:var(--el-button-bg-color,var(--el-fill-color-blank));border-radius:0;box-sizing:border-box;color:var(--el-button-text-color,var(--el-text-color-regular));cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);font-weight:var(--el-button-font-weight,var(--el-font-weight-primary));line-height:1;margin:0;outline:var(--el-border);padding:8px 15px;position:relative;text-align:center;transition:var(--el-transition-all);-webkit-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-radio-button__inner.is-round{padding:8px 15px}.el-radio-button__inner:hover{color:var(--el-color-primary)}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);box-shadow:none!important}.el-radio-button.is-active .el-radio-button__original-radio:not(:disabled)+.el-radio-button__inner{background-color:var(--el-radio-button-checked-bg-color,var(--el-color-primary));border-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));box-shadow:-1px 0 0 0 var(--el-radio-button-checked-border-color,var(--el-color-primary));color:var(--el-radio-button-checked-text-color,var(--el-color-white))}.el-radio-button__original-radio{opacity:0;outline:none;position:absolute;z-index:-1}.el-radio-button__original-radio:focus-visible+.el-radio-button__inner{border-left:var(--el-border);border-left-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));border-radius:var(--el-border-radius-base);box-shadow:none;outline:2px solid var(--el-radio-button-checked-border-color);outline-offset:1px;z-index:2}.el-radio-button__original-radio:disabled+.el-radio-button__inner{background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));background-image:none;border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none;color:var(--el-disabled-text-color);cursor:not-allowed}.el-radio-button__original-radio:disabled:checked+.el-radio-button__inner{background-color:var(--el-radio-button-disabled-checked-fill)}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:var(--el-border-radius-base)}.el-radio-button--large .el-radio-button__inner{border-radius:0;font-size:var(--el-font-size-base);padding:12px 19px}.el-radio-button--large .el-radio-button__inner.is-round{padding:12px 19px}.el-radio-button--small .el-radio-button__inner{border-radius:0;font-size:12px;padding:5px 11px}.el-radio-button--small .el-radio-button__inner.is-round{padding:5px 11px}.status-panel[data-v-776bcef4]{padding:20px;background:transparent;min-height:100vh}.status-hero[data-v-776bcef4]{--hero-status-color:var(--el-color-success);position:relative;isolation:isolate;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:42px;margin-bottom:8px;padding:28px 12px 34px;color:var(--admin-container-color)}.status-hero[data-v-776bcef4]:after,.status-hero[data-v-776bcef4]:before{content:"";position:absolute;pointer-events:none;z-index:-1}.status-hero[data-v-776bcef4]:before{inset:0;opacity:.34;background-image:radial-gradient(circle at 64% 52%,color-mix(in srgb,var(--primary-color) 9%,transparent),transparent 28%),linear-gradient(color-mix(in srgb,var(--primary-color) 16%,transparent) 1px,transparent 1px),linear-gradient(90deg,color-mix(in srgb,var(--primary-color) 16%,transparent) 1px,transparent 1px);background-size:auto,34px 34px,34px 34px;mask-image:linear-gradient(90deg,transparent 28%,#000 72%,transparent);-webkit-mask-image:linear-gradient(90deg,transparent 28%,#000 72%,transparent)}.status-hero[data-v-776bcef4]:after{width:150px;height:150px;top:50%;right:31%;border-radius:50%;background:color-mix(in srgb,var(--primary-color) 10%,transparent);filter:blur(20px);transform:translateY(-50%)}.status-hero.is-checking[data-v-776bcef4]{--hero-status-color:var(--el-color-warning)}.status-hero.is-attention[data-v-776bcef4]{--hero-status-color:var(--el-color-danger)}.status-hero-copy[data-v-776bcef4]{position:relative;z-index:1;min-width:0}.status-hero-kicker[data-v-776bcef4]{display:flex;align-items:center;flex-wrap:wrap;gap:10px 14px;margin-bottom:15px}.system-health-badge[data-v-776bcef4]{display:inline-flex;align-items:center;gap:8px;padding:6px 11px;color:var(--hero-status-color);background:color-mix(in srgb,var(--hero-status-color) 10%,var(--glass-bg));border:1px solid color-mix(in srgb,var(--hero-status-color) 24%,var(--glass-border));border-radius:999px;font-size:12px;font-weight:650;line-height:1}.system-health-dot[data-v-776bcef4]{position:relative;width:7px;height:7px;flex-shrink:0;background:currentColor;border-radius:50%;box-shadow:0 0 0 4px color-mix(in srgb,currentColor 12%,transparent)}.system-health-dot[data-v-776bcef4]:after{content:"";position:absolute;inset:-4px;border:1px solid currentColor;border-radius:inherit;animation:healthPulse-776bcef4 2s ease-out infinite}.status-hero-date[data-v-776bcef4]{color:var(--el-text-color-secondary);font-size:12px;font-weight:550;line-height:1.45}.status-hero-title[data-v-776bcef4]{margin:0;color:var(--admin-container-color);font-size:clamp(28px,3vw,40px);font-weight:750;line-height:1.18;letter-spacing:-.035em}.status-hero-summary[data-v-776bcef4]{max-width:720px;margin:12px auto 0;color:var(--el-text-color-secondary);font-size:14px;line-height:1.7;text-align:center}.status-hero-time-card[data-v-776bcef4]{position:relative;z-index:1;display:flex;flex-direction:column;justify-content:center;width:250px;min-width:250px;padding:12px 0 12px 32px;border-left:1px solid color-mix(in srgb,var(--el-text-color-primary) 10%,transparent);box-sizing:border-box}.status-hero-time-caption[data-v-776bcef4]{color:var(--el-text-color-secondary);font-size:10px;font-weight:650;letter-spacing:.12em;text-transform:uppercase}.status-hero-time[data-v-776bcef4]{margin-top:7px;color:var(--admin-container-color);font-size:clamp(28px,3vw,36px);font-weight:750;font-variant-numeric:tabular-nums;line-height:1;letter-spacing:-.04em;white-space:nowrap}.status-hero-timezone[data-v-776bcef4]{margin-top:10px;overflow:hidden;color:var(--el-text-color-secondary);font-size:10px;line-height:1.4;opacity:.78;text-overflow:ellipsis;white-space:nowrap}@keyframes healthPulse-776bcef4{0%{opacity:.8;transform:scale(.75)}75%,to{opacity:0;transform:scale(1.8)}}@media (prefers-reduced-motion:reduce){.system-health-dot[data-v-776bcef4]:after{animation:none}}.overview-cards[data-v-776bcef4]{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px;margin-bottom:30px}.overview-card[data-v-776bcef4]{background:var(--glass-bg);border-radius:16px;padding:24px;display:flex;align-items:center;box-shadow:var(--glass-shadow);border:1px solid var(--glass-border);cursor:pointer;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease;will-change:transform}.overview-card[data-v-776bcef4]:focus-within,.overview-card[data-v-776bcef4]:hover{transform:translateY(-5px);box-shadow:0 12px 28px color-mix(in srgb,var(--el-text-color-primary) 16%,transparent);border-color:color-mix(in srgb,var(--primary-color) 35%,var(--glass-border))}@media (prefers-reduced-motion:reduce){.overview-card[data-v-776bcef4]{transition:box-shadow .25s ease,border-color .25s ease}.overview-card[data-v-776bcef4]:focus-within,.overview-card[data-v-776bcef4]:hover{transform:none}}.card-icon[data-v-776bcef4]{width:60px;height:60px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:24px;margin-right:20px;background:var(--primary-color);color:var(--el-color-white)}.card-content[data-v-776bcef4]{flex:1}.card-title[data-v-776bcef4]{font-size:14px;color:#666;margin-bottom:8px;font-weight:500}.card-value[data-v-776bcef4]{font-size:28px;font-weight:700;color:var(--admin-container-color);line-height:1}.card-subtitle[data-v-776bcef4]{font-size:11px;color:var(--el-text-color-secondary);margin-top:4px;opacity:.8}.charts-section[data-v-776bcef4]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-bottom:30px;overflow:visible}@media (max-width:768px){.charts-section[data-v-776bcef4]{grid-template-columns:1fr}}.chart-card[data-v-776bcef4]{background:var(--glass-bg);border-radius:16px;padding:24px;border:1px solid var(--glass-border)}.chart-card[data-v-776bcef4],.chart-card[data-v-776bcef4]:hover{box-shadow:var(--glass-shadow)}.chart-card[data-v-776bcef4],.chart-content[data-v-776bcef4],.pie-chart-container[data-v-776bcef4],.pie-chart-wrapper[data-v-776bcef4]{overflow:visible}.chart-header[data-v-776bcef4]{display:flex;gap:8px;align-items:center;margin-bottom:20px;font-size:16px;font-weight:600;color:var(--admin-container-color)}.trend-chart-card[data-v-776bcef4]{grid-column:1/-1}.trend-chart-header[data-v-776bcef4]{justify-content:space-between;gap:14px;flex-wrap:wrap}.chart-title[data-v-776bcef4]{display:flex;align-items:center;gap:8px}.trend-controls[data-v-776bcef4]{display:flex;align-items:center;justify-content:flex-end;gap:12px;flex-wrap:wrap}.trend-calendar-btn[data-v-776bcef4]{width:32px;min-width:32px;height:32px;padding:0;display:inline-flex;align-items:center;justify-content:center;color:var(--admin-container-color);background:var(--glass-bg);border:1px solid var(--glass-border)}.trend-calendar-btn[data-v-776bcef4]:hover{color:var(--el-color-primary);border-color:var(--glass-border);background:var(--glass-bg);box-shadow:none}.trend-date-dialog[data-v-776bcef4]{overflow:visible;max-width:calc(100vw - 32px);box-sizing:border-box}.trend-date-dialog[data-v-776bcef4] .el-dialog__body{overflow:visible;padding:16px 24px 24px}.trend-date-panel[data-v-776bcef4]{width:100%;max-width:100%;min-width:0;box-sizing:border-box;display:flex;justify-content:center;overflow:hidden}.trend-group-switch[data-v-776bcef4]{flex-shrink:0;height:32px;display:flex}.trend-group-switch[data-v-776bcef4] .el-radio-button__inner{height:32px;display:inline-flex;align-items:center;justify-content:center;line-height:1;padding:0 14px}.chart-content.trend-chart-content[data-v-776bcef4]{min-height:320px;padding:0;margin:0;min-width:0;max-width:100%;overflow:hidden}.line-chart-wrapper[data-v-776bcef4]{position:relative;width:100%;max-width:100%;min-width:0;height:320px;overflow:hidden}.line-chart-wrapper[data-v-776bcef4] canvas{display:block;width:100%!important;max-width:100%!important}.trend-empty-state[data-v-776bcef4]{height:320px}.chart-content[data-v-776bcef4]{min-height:160px;padding:15px;margin:-5px}.empty-state[data-v-776bcef4]{display:flex;flex-direction:column;align-items:center;justify-content:center;height:160px;color:var(--el-text-color-secondary);font-size:14px}.empty-state .fa-icon[data-v-776bcef4]{font-size:32px;margin-bottom:10px}.stats-list[data-v-776bcef4]{display:flex;flex-direction:column;gap:16px}.stats-item[data-v-776bcef4]{display:flex;align-items:center;gap:12px}.stats-label[data-v-776bcef4]{min-width:80px;font-size:13px;color:#666;font-weight:500}.stats-bar[data-v-776bcef4]{flex:1;height:8px;background:#f0f0f0;border-radius:4px;overflow:hidden}.stats-fill[data-v-776bcef4]{height:100%;background:var(--primary-color);border-radius:4px;transition:width .6s ease}.type-fill[data-v-776bcef4]{background:#16a34a}.stats-value[data-v-776bcef4]{min-width:50px;text-align:right;font-size:13px;font-weight:600;color:var(--admin-container-color)}.pie-chart-container[data-v-776bcef4]{display:flex;align-items:center;gap:24px;flex-wrap:wrap;justify-content:center}.pie-chart-wrapper[data-v-776bcef4]{position:relative;width:180px;height:180px;flex-shrink:0;padding:15px;box-sizing:content-box;overflow:visible;isolation:isolate}.chart-center-text[data-v-776bcef4]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;pointer-events:none;z-index:-1}.center-value[data-v-776bcef4]{font-size:22px;font-weight:700;color:var(--admin-container-color);line-height:1.2}.center-label[data-v-776bcef4]{font-size:11px;color:#888;margin-top:2px}.chart-legend[data-v-776bcef4]{display:flex;flex-direction:column;gap:10px;flex:1;min-width:180px}.legend-item[data-v-776bcef4]{display:flex;align-items:center;gap:10px;padding:8px 12px;background:color-mix(in srgb,var(--el-text-color-primary) 3%,transparent);border:1px solid var(--glass-border);border-radius:8px;transition:transform .2s ease,background-color .2s ease,border-color .2s ease,box-shadow .2s ease;will-change:transform}.legend-item[data-v-776bcef4]:hover{transform:translateY(-2px);background:color-mix(in srgb,var(--primary-color) 8%,var(--glass-bg));border-color:color-mix(in srgb,var(--primary-color) 30%,var(--glass-border));box-shadow:0 6px 16px color-mix(in srgb,var(--el-text-color-primary) 12%,transparent)}html.dark .legend-item[data-v-776bcef4]{background:color-mix(in srgb,var(--el-text-color-primary) 5%,transparent)}html.dark .legend-item[data-v-776bcef4]:hover{background:color-mix(in srgb,var(--primary-color) 12%,var(--glass-bg))}@media (prefers-reduced-motion:reduce){.legend-item[data-v-776bcef4]{transition:background-color .2s ease,border-color .2s ease,box-shadow .2s ease}.legend-item[data-v-776bcef4]:hover{transform:none}}.legend-color[data-v-776bcef4]{width:12px;height:12px;border-radius:3px;flex-shrink:0}.legend-label[data-v-776bcef4]{flex:1;font-size:13px;color:var(--admin-container-color);font-weight:500}.legend-value[data-v-776bcef4]{font-size:13px;font-weight:600;color:var(--admin-container-color);min-width:50px;text-align:right}.legend-percent[data-v-776bcef4]{font-size:12px;color:#888;min-width:40px;text-align:right}.actions-section[data-v-776bcef4]{margin-bottom:30px}.action-card[data-v-776bcef4]{background:var(--glass-bg);border-radius:16px;padding:24px;border:1px solid var(--glass-border)}.action-card[data-v-776bcef4],.action-card[data-v-776bcef4]:hover{box-shadow:var(--glass-shadow)}.action-card[data-v-776bcef4],.chart-card[data-v-776bcef4],.overview-card[data-v-776bcef4]{backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}.action-header[data-v-776bcef4]{display:flex;align-items:center;gap:8px;margin-bottom:3px;font-size:16px;font-weight:600;color:var(--admin-container-color)}.action-content[data-v-776bcef4]{display:flex;justify-content:center;padding:20px 0}.action-buttons[data-v-776bcef4]{display:flex;gap:20px;flex-wrap:wrap;justify-content:center;align-items:center;width:100%}.action-btn[data-v-776bcef4]{border-radius:10px;padding:12px 24px;margin-left:0;font-weight:500;font-size:14px;transition:background-color .2s ease,border-color .2s ease,color .2s ease;min-width:150px;width:150px;height:48px;box-shadow:none}@media (max-width:768px){.action-btn[data-v-776bcef4]{flex:1;width:auto;min-width:0;height:auto}}.action-btn .fa-icon[data-v-776bcef4]{margin-right:8px;font-size:14px}.rebuild-btn[data-v-776bcef4]{background:var(--el-fill-color-blank);border-color:var(--el-border-color-lighter);color:#2563eb}.rebuild-btn[data-v-776bcef4]:hover{background:#eff6ff;border-color:#93c5fd;color:#1d4ed8}.backup-btn[data-v-776bcef4]{background:var(--el-fill-color-blank);border-color:var(--el-border-color-lighter);color:#16a34a}.backup-btn[data-v-776bcef4]:hover{background:#f0fdf4;border-color:#86efac;color:#15803d}.restore-btn[data-v-776bcef4]{background:var(--el-fill-color-blank);border-color:var(--el-border-color-lighter);color:#d97706}.restore-btn[data-v-776bcef4]:hover{background:#fffbeb;border-color:#fcd34d;color:#b45309}.dark .rebuild-btn[data-v-776bcef4]{background:var(--el-fill-color-light);border-color:var(--el-border-color-lighter);color:#60a5fa}.dark .rebuild-btn[data-v-776bcef4]:hover{background:rgba(59,130,246,.12);border-color:rgba(96,165,250,.4);color:#93c5fd}.dark .backup-btn[data-v-776bcef4]{background:var(--el-fill-color-light);border-color:var(--el-border-color-lighter);color:#4ade80}.dark .backup-btn[data-v-776bcef4]:hover{background:rgba(34,197,94,.12);border-color:rgba(74,222,128,.4);color:#86efac}.dark .restore-btn[data-v-776bcef4]{background:var(--el-fill-color-light);border-color:var(--el-border-color-lighter);color:#fbbf24}.dark .restore-btn[data-v-776bcef4]:hover{background:rgba(251,191,36,.12);border-color:rgba(251,191,36,.4);color:#fcd34d}.restore-section[data-v-776bcef4]{display:inline-block}@media (max-width:768px){.action-buttons>.el-tooltip[data-v-776bcef4],.action-buttons>.restore-section[data-v-776bcef4],.restore-section[data-v-776bcef4]{flex:1;width:100%}.action-btn[data-v-776bcef4]{width:100%!important;padding:10px 20px!important;box-sizing:border-box}}.file-info-section[data-v-776bcef4]{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px;align-items:stretch}.file-info-card[data-v-776bcef4]{position:relative;background:var(--glass-bg);border-radius:16px;box-shadow:var(--glass-shadow);border:1px solid var(--glass-border);transition:all .3s ease;height:300px;overflow:hidden;cursor:pointer}.card-bg-media[data-v-776bcef4]{position:absolute;top:0;left:0;transition:transform .5s ease;display:block}.card-bg-media[data-v-776bcef4],.card-bg-media[data-v-776bcef4] .el-image__inner{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.card-bg-media[data-v-776bcef4] .el-image__wrapper{width:100%;height:100%}.card-bg-fallback[data-v-776bcef4]{position:absolute;top:0;left:0;width:100%;height:100%;background:var(--admin-dashborad-stats-bg-color);display:flex;align-items:center;justify-content:center}.fallback-icon[data-v-776bcef4]{font-size:80px;color:var(--el-text-color-placeholder);opacity:.3}.file-card-header[data-v-776bcef4]{position:absolute;top:0;left:0;right:0;display:flex;gap:8px;align-items:center;padding:12px 16px;font-size:14px;font-weight:600;color:#fff;background:linear-gradient(180deg,rgba(0,0,0,.5) 0,rgba(0,0,0,.2) 55%,transparent);z-index:2}.file-card-header .fa-icon[data-v-776bcef4]{color:#60a5fa}.file-card-header.warning .fa-icon[data-v-776bcef4]{color:#f59e0b}.info-card-footer[data-v-776bcef4]{position:absolute;bottom:0;left:0;right:0;padding:12px 16px;background:linear-gradient(0deg,rgba(0,0,0,.55) 0,rgba(0,0,0,.25) 50%,transparent);text-align:center;z-index:2}.info-card-footer .file-name[data-v-776bcef4]{font-size:14px;color:#fff;margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600;text-shadow:0 1px 2px rgba(0,0,0,.5)}.info-card-footer .file-meta[data-v-776bcef4]{font-size:12px;color:#fafafa;text-shadow:0 1px 2px rgba(0,0,0,.5)}@media (min-width:1200px){.file-info-card[data-v-776bcef4]{height:400px}}@media (min-width:1600px){.file-info-card[data-v-776bcef4]{height:450px}}.file-info-card[data-v-776bcef4]:hover{box-shadow:var(--glass-shadow)}.file-info-card:hover .card-bg-media[data-v-776bcef4]{transform:scale(1)}@media (max-width:768px){.status-panel[data-v-776bcef4]{padding:15px}.status-hero[data-v-776bcef4]{grid-template-columns:1fr;gap:18px;padding:24px 8px 30px}.status-hero-time-card[data-v-776bcef4]{width:100%;min-width:0;padding:18px 0 0;border-top:1px solid color-mix(in srgb,var(--el-text-color-primary) 10%,transparent);border-left:0}.status-hero-time[data-v-776bcef4]{font-size:32px}.charts-section[data-v-776bcef4],.overview-cards[data-v-776bcef4]{grid-template-columns:1fr;gap:15px}.trend-chart-header[data-v-776bcef4]{align-items:stretch}.chart-title[data-v-776bcef4]{width:100%}.trend-controls[data-v-776bcef4]{width:100%;justify-content:stretch}.trend-date-dialog[data-v-776bcef4] .el-dialog__body{padding:12px 14px 18px}.trend-group-switch[data-v-776bcef4]{width:100%}.trend-group-switch[data-v-776bcef4] .el-radio-button{flex:1}.trend-group-switch[data-v-776bcef4] .el-radio-button__inner{width:100%;padding:0 10px}.line-chart-wrapper[data-v-776bcef4],.trend-empty-state[data-v-776bcef4]{height:280px}.file-info-section[data-v-776bcef4]{grid-template-columns:1fr;gap:15px}.card-icon[data-v-776bcef4]{width:50px;height:50px;font-size:20px;margin-right:15px}.card-value[data-v-776bcef4]{font-size:24px}.action-buttons[data-v-776bcef4]{flex-direction:column;gap:12px}.action-btn[data-v-776bcef4]{width:100%;min-width:unset}}@media (max-width:480px){.status-hero[data-v-776bcef4]{padding:21px 4px 28px}.status-hero-title[data-v-776bcef4]{font-size:27px}}.stats-fill[data-v-776bcef4]{animation:fillAnimation-776bcef4 1s ease-out}@keyframes fillAnimation-776bcef4{0%{width:0}}.progress-container[data-v-776bcef4]{width:100%;padding:20px;text-align:center}.progress-header[data-v-776bcef4]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.progress-phase[data-v-776bcef4]{font-size:16px;font-weight:600;color:var(--admin-container-color)}.progress-percentage[data-v-776bcef4]{font-size:18px;font-weight:700;color:var(--primary-color-accent)}.progress-bar[data-v-776bcef4]{margin-bottom:16px}.progress-bar[data-v-776bcef4] .el-progress-bar__outer{background-color:rgba(139,92,246,.1);border-radius:6px}.progress-bar[data-v-776bcef4] .el-progress-bar__inner{background:var(--primary-color);border-radius:6px;transition:width .3s ease}.progress-details[data-v-776bcef4]{display:flex;justify-content:center;gap:24px;margin-bottom:12px;flex-wrap:wrap}.progress-count[data-v-776bcef4],.progress-time[data-v-776bcef4]{display:flex;align-items:center;gap:6px;font-size:14px;color:#666}.progress-count .fa-icon[data-v-776bcef4],.progress-time .fa-icon[data-v-776bcef4]{color:var(--primary-color-accent);font-size:12px}.progress-message[data-v-776bcef4]{font-size:13px;color:#888;margin-bottom:16px;min-height:20px}.cancel-btn[data-v-776bcef4]{margin-top:12px;border-radius:10px;padding:10px 24px;font-weight:600;transition:all .3s cubic-bezier(.4,0,.2,1);background:rgba(239,68,68,.1);border:1px solid rgba(239,68,68,.3);color:#ef4444}.cancel-btn[data-v-776bcef4]:hover{background:rgba(239,68,68,.2);border-color:rgba(239,68,68,.5);box-shadow:none}.cancel-btn .fa-icon[data-v-776bcef4]{margin-right:8px}.error-container[data-v-776bcef4]{width:100%;padding:20px;display:flex;flex-direction:column;align-items:center;gap:16px;background:rgba(239,68,68,.05);border-radius:12px;border:1px solid rgba(239,68,68,.2)}.error-icon[data-v-776bcef4]{width:48px;height:48px;border-radius:50%;background:rgba(239,68,68,.1);display:flex;align-items:center;justify-content:center;color:#ef4444;font-size:24px}.error-content[data-v-776bcef4]{text-align:center}.error-message[data-v-776bcef4]{font-size:15px;font-weight:600;color:#ef4444;margin-bottom:8px}.error-suggestion[data-v-776bcef4]{font-size:13px;color:#666}.error-actions[data-v-776bcef4]{display:flex;gap:12px}.error-actions .el-button[data-v-776bcef4]{border-radius:10px;padding:10px 24px;font-weight:600;transition:all .3s cubic-bezier(.4,0,.2,1);min-width:100px}.error-actions .el-button--primary[data-v-776bcef4]{background:var(--primary-color);border:none;color:#fff}.error-actions .el-button--primary[data-v-776bcef4]:hover{background:var(--el-color-primary-dark-2);box-shadow:none}.error-actions .el-button--default[data-v-776bcef4]{background:hsla(0,0%,100%,.1);border:1px solid hsla(0,0%,100%,.2);color:var(--el-text-color-regular)}.error-actions .el-button--default[data-v-776bcef4]:hover{background:hsla(0,0%,100%,.15);border-color:var(--glass-border-hover);box-shadow:none}.error-actions .fa-icon[data-v-776bcef4]{margin-right:8px}html.dark .progress-count[data-v-776bcef4],html.dark .progress-time[data-v-776bcef4]{color:#aaa}html.dark .progress-message[data-v-776bcef4]{color:#999}html.dark .error-container[data-v-776bcef4]{background:rgba(239,68,68,.1);border-color:rgba(239,68,68,.3)}html.dark .error-suggestion[data-v-776bcef4]{color:#aaa}@media (max-width:768px){.error-container[data-v-776bcef4],.progress-container[data-v-776bcef4]{padding:16px}.progress-header[data-v-776bcef4]{flex-direction:column;gap:8px;text-align:center}.progress-details[data-v-776bcef4]{flex-direction:column;gap:8px}.error-actions[data-v-776bcef4]{flex-direction:column;width:100%}.error-actions .el-button[data-v-776bcef4]{width:100%;margin:0}}.el-descriptions{--el-descriptions-table-border:1px solid var(--el-border-color-lighter);--el-descriptions-item-bordered-label-background:var(--el-fill-color-light);box-sizing:border-box;color:var(--el-text-color-primary);font-size:var(--el-font-size-base)}.el-descriptions__header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.el-descriptions__title{color:var(--el-text-color-primary);font-size:16px;font-weight:700}.el-descriptions__body{background-color:var(--el-fill-color-blank)}.el-descriptions__body .el-descriptions__table{border-collapse:collapse;width:100%}.el-descriptions__body .el-descriptions__table .el-descriptions__cell{box-sizing:border-box;font-size:14px;line-height:23px;text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-left{text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-center{text-align:center}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-right{text-align:right}.el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{border:var(--el-descriptions-table-border);padding:8px 11px}.el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:12px}.el-descriptions--large{font-size:14px}.el-descriptions--large .el-descriptions__header{margin-bottom:20px}.el-descriptions--large .el-descriptions__header .el-descriptions__title{font-size:16px}.el-descriptions--large .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:14px}.el-descriptions--large .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:12px 15px}.el-descriptions--large .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:16px}.el-descriptions--small{font-size:12px}.el-descriptions--small .el-descriptions__header{margin-bottom:12px}.el-descriptions--small .el-descriptions__header .el-descriptions__title{font-size:14px}.el-descriptions--small .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:12px}.el-descriptions--small .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:4px 7px}.el-descriptions--small .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:8px}.el-descriptions__label.el-descriptions__cell.is-bordered-label{background:var(--el-descriptions-item-bordered-label-background);color:var(--el-text-color-regular);font-weight:700}.el-descriptions__label:not(.is-bordered-label){color:var(--el-text-color-primary);margin-right:16px}.el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:6px}.el-descriptions__content.el-descriptions__cell.is-bordered-content{color:var(--el-text-color-primary)}.el-descriptions__content:not(.is-bordered-label){color:var(--el-text-color-regular)}.el-descriptions--large .el-descriptions__label:not(.is-bordered-label){margin-right:16px}.el-descriptions--large .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:8px}.el-descriptions--small .el-descriptions__label:not(.is-bordered-label){margin-right:12px}.el-descriptions--small .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:4px}.el-form{--el-form-label-font-size:var(--el-font-size-base);--el-form-inline-content-width:220px}.el-form--inline .el-form-item{display:inline-flex;margin-right:32px;vertical-align:middle}.el-form--inline.el-form--label-top{display:flex;flex-wrap:wrap}.el-form--inline.el-form--label-top .el-form-item{display:block}.el-form-item{display:flex;--font-size:14px;margin-bottom:18px}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-input__validateIcon{display:none}.el-form-item--large{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:22px}.el-form-item--large .el-form-item__label{height:40px;line-height:40px}.el-form-item--large .el-form-item__content{line-height:40px}.el-form-item--large .el-form-item__error{padding-top:4px}.el-form-item--default{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--default .el-form-item__label{height:32px;line-height:32px}.el-form-item--default .el-form-item__content{line-height:32px}.el-form-item--default .el-form-item__error{padding-top:2px}.el-form-item--small{--font-size:12px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--small .el-form-item__label{height:24px;line-height:24px}.el-form-item--small .el-form-item__content{line-height:24px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--label-left .el-form-item__label{justify-content:flex-start;text-align:left}.el-form-item--label-right .el-form-item__label{justify-content:flex-end;text-align:right}.el-form-item--label-top{display:block}.el-form-item--label-top .el-form-item__label{display:block;height:auto;line-height:22px;margin-bottom:8px;padding-right:0;text-align:left;width:fit-content}.el-form-item__label-wrap{display:flex}.el-form-item__label{align-items:flex-start;box-sizing:border-box;color:var(--el-text-color-regular);display:inline-flex;flex:0 0 auto;font-size:var(--el-form-label-font-size);height:32px;line-height:32px;padding:0 12px 0 0}.el-form-item__content{align-items:center;display:flex;flex:1;flex-wrap:wrap;font-size:var(--font-size);line-height:32px;min-width:0;position:relative}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:var(--el-color-danger);font-size:12px;left:0;line-height:1;padding-top:2px;position:absolute;top:100%}.el-form-item__error--inline{display:inline-block;left:auto;margin-left:10px;position:relative;top:auto}.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label:before{color:var(--el-color-danger);content:"*";margin-right:4px}.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label-wrap>.el-form-item__label:after,.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label:after{color:var(--el-color-danger);content:"*";margin-left:4px}.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-select__wrapper,.el-form-item.is-error .el-form-item__content .el-select__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-textarea__inner,.el-form-item.is-error .el-form-item__content .el-textarea__inner.is-focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__wrapper{box-shadow:inset 0 0 0 1px transparent}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__validateIcon,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__validateIcon{display:none}.el-form-item.is-error .el-form-item__content .el-input__validateIcon{color:var(--el-color-danger)}.el-form-item--feedback .el-input__validateIcon,.el-input-number{display:inline-flex}.el-input-number{line-height:30px;position:relative;vertical-align:middle;width:150px}.el-input-number .el-input__wrapper{padding-left:42px;padding-right:42px}.el-input-number .el-input__inner{-webkit-appearance:none;-moz-appearance:textfield;line-height:1;text-align:center}.el-input-number .el-input__inner::-webkit-inner-spin-button,.el-input-number .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-input-number.is-left .el-input__inner{text-align:left}.el-input-number.is-right .el-input__inner{text-align:right}.el-input-number.is-center .el-input__inner{text-align:center}.el-input-number__decrease,.el-input-number__increase{align-items:center;background:var(--el-fill-color-light);bottom:1px;color:var(--el-text-color-regular);cursor:pointer;display:flex;font-size:13px;height:auto;justify-content:center;position:absolute;top:1px;-webkit-user-select:none;user-select:none;width:32px;z-index:1}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:var(--el-color-primary)}.el-input-number__decrease:hover~.el-input:not(.is-disabled) .el-input__wrapper,.el-input-number__increase:hover~.el-input:not(.is-disabled) .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-input-number__increase{border-left:var(--el-border);border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0;right:1px}.el-input-number__decrease{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);border-right:var(--el-border);left:1px}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:var(--el-disabled-border-color);color:var(--el-disabled-border-color)}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:var(--el-disabled-border-color);cursor:not-allowed}.el-input-number--large{line-height:38px;width:180px}.el-input-number--large .el-input-number__decrease,.el-input-number--large .el-input-number__increase{font-size:14px;width:40px}.el-input-number--large.is-controls-right .el-input--large .el-input__wrapper{padding-right:47px}.el-input-number--large .el-input--large .el-input__wrapper{padding-left:47px;padding-right:47px}.el-input-number--small{line-height:22px;width:120px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{font-size:12px;width:24px}.el-input-number--small.is-controls-right .el-input--small .el-input__wrapper{padding-right:31px}.el-input-number--small .el-input--small .el-input__wrapper{padding-left:31px;padding-right:31px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{transform:scale(.9)}.el-input-number.is-without-controls .el-input__wrapper{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__wrapper{padding-left:15px;padding-right:42px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{--el-input-number-controls-height:15px;height:var(--el-input-number-controls-height);line-height:var(--el-input-number-controls-height)}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-bottom:var(--el-border);border-radius:0 var(--el-border-radius-base) 0 0;bottom:auto;left:auto}.el-input-number.is-controls-right .el-input-number__decrease{border-left:var(--el-border);border-radius:0 0 var(--el-border-radius-base) 0;border-right:none;left:auto;right:1px;top:auto}.el-input-number.is-controls-right[class*=large] [class*=decrease],.el-input-number.is-controls-right[class*=large] [class*=increase]{--el-input-number-controls-height:19px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{--el-input-number-controls-height:11px}.channel-icon-wrapper[data-v-ce6ff2ce]{display:inline-flex;align-items:center;justify-content:center;line-height:1}.channel-icon-wrapper[data-v-ce6ff2ce] svg,.channel-svg-icon[data-v-ce6ff2ce]{width:1em;height:1em;fill:currentColor}.channel-icon-wrapper.channel-brand-telegram[data-v-ce6ff2ce]{color:#229ed9}.channel-icon-wrapper.channel-brand-cfr2[data-v-ce6ff2ce]{color:#f38020}.channel-icon-wrapper.channel-brand-s3[data-v-ce6ff2ce]{color:#f90}.channel-icon-wrapper.channel-brand-discord[data-v-ce6ff2ce]{color:#5865f2}.channel-icon-wrapper.channel-brand-huggingface[data-v-ce6ff2ce]{color:#ff9d00}.channel-icon-wrapper.channel-brand-webdav[data-v-ce6ff2ce]{color:#14b8a6}.custom-select[data-v-b9420432]{position:relative}.custom-select-trigger[data-v-b9420432]{display:flex;align-items:center;justify-content:space-between;height:32px;padding:0 12px;background:color-mix(in srgb,var(--el-fill-color-blank) 72%,transparent);border:1px solid var(--glass-border);border-radius:8px;cursor:pointer;transition:background-color .2s ease,border-color .2s ease;box-sizing:border-box}html.dark .custom-select-trigger[data-v-b9420432]{background:color-mix(in srgb,var(--el-bg-color) 75%,transparent)}.custom-select-trigger[data-v-b9420432]:hover{background:color-mix(in srgb,var(--el-fill-color-blank) 85%,transparent);border-color:var(--glass-border-hover)}html.dark .custom-select-trigger[data-v-b9420432]:hover{background:color-mix(in srgb,var(--el-bg-color) 88%,transparent);border-color:var(--glass-border-hover)}.custom-select.is-open .custom-select-trigger[data-v-b9420432]{border-color:var(--el-color-primary)}.custom-select-value[data-v-b9420432]{font-size:14px;color:var(--el-text-color-regular);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.custom-select-arrow[data-v-b9420432],.custom-select-value.is-placeholder[data-v-b9420432]{color:var(--el-text-color-placeholder)}.custom-select-arrow[data-v-b9420432]{font-size:12px;transition:transform .2s ease;flex-shrink:0;margin-left:8px}.custom-select.is-open .custom-select-arrow[data-v-b9420432]{transform:rotate(180deg)}.custom-select-dropdown[data-v-b9420432]{position:absolute;top:calc(100% + 4px);left:0;width:100%;box-sizing:border-box;padding:4px;background:var(--popper-bg-color);border:1px solid var(--glass-border);border-radius:8px;box-shadow:var(--popper-shadow);z-index:2000;max-height:280px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.custom-select-option[data-v-b9420432]{display:flex;align-items:center;gap:8px;min-height:34px;padding:0 12px;border-radius:6px;background:transparent;font-size:14px;color:var(--el-text-color-regular);cursor:pointer;transition:background-color .2s ease,color .2s ease}.custom-select-option.is-selected[data-v-b9420432]{color:var(--primary-color-accent);font-weight:600}.custom-select-option[data-v-b9420432]:hover{background-color:color-mix(in srgb,var(--el-text-color-primary) 10%,transparent);color:var(--el-text-color-primary)}html.dark .custom-select-option[data-v-b9420432]:hover{background-color:color-mix(in srgb,var(--el-text-color-primary) 8%,transparent);color:var(--el-text-color-primary)}.option-icon[data-v-b9420432]{width:16px;height:16px;flex-shrink:0}.dropdown-fade-enter-active[data-v-b9420432],.dropdown-fade-leave-active[data-v-b9420432]{transition:opacity .2s ease,transform .2s ease}.dropdown-fade-enter-from[data-v-b9420432],.dropdown-fade-leave-to[data-v-b9420432]{opacity:0;transform:translateY(-8px)}.upload-settings[data-v-0082a519]{padding:20px;min-height:500px;overflow-x:hidden}.page-header[data-v-0082a519]{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;flex-wrap:wrap;gap:12px}.first-title[data-v-0082a519]{display:flex;align-items:center;gap:8px;margin:0;font-size:20px;font-weight:600}.help-icon[data-v-0082a519]{cursor:pointer;color:var(--el-text-color-secondary);font-size:14px}.inline-warning-icon[data-v-0082a519]{color:var(--el-text-color-secondary);cursor:pointer;font-size:13px;margin-left:6px;transition:color .2s}.inline-warning-icon[data-v-0082a519]:hover{color:var(--el-color-primary)}.inline-help-icon[data-v-0082a519]{color:var(--el-text-color-secondary);cursor:pointer;font-size:13px;margin-left:6px;transition:color .2s}.inline-help-icon[data-v-0082a519]:hover{color:var(--el-color-primary)}.add-btn[data-v-0082a519]{border-radius:8px;transition:background-color .2s ease,border-color .2s ease}.header-actions[data-v-0082a519]{display:flex;gap:12px}.header-actions[data-v-0082a519] .el-button{border-radius:8px}.channel-group[data-v-0082a519]{margin-bottom:32px;background:var(--glass-bg);border-radius:16px;border:1px solid var(--glass-border);overflow:hidden;box-shadow:var(--glass-shadow)}.group-header[data-v-0082a519]{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;background:var(--glass-header-bg);border-bottom:1px solid var(--glass-header-border)}.group-title[data-v-0082a519]{display:flex;align-items:center;gap:10px;font-size:16px;font-weight:600;color:var(--el-text-color-primary)}.group-icon[data-v-0082a519]{font-size:20px;color:var(--el-color-primary)}.channel-count[data-v-0082a519]{font-size:12px}.load-balance-switch[data-v-0082a519]{display:flex;align-items:center;gap:8px}.switch-label[data-v-0082a519]{font-size:13px;color:var(--el-text-color-secondary)}.channel-cards[data-v-0082a519]{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;padding:20px}.channel-card[data-v-0082a519]{background:var(--glass-bg);border-radius:10px;border:1px solid var(--glass-border);overflow:hidden;position:relative;display:flex;flex-direction:column;box-shadow:var(--glass-shadow)}.channel-card[data-v-0082a519],.channel-group[data-v-0082a519]{backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}.card-glow[data-v-0082a519]{position:absolute;width:150px;height:150px;border-radius:50%;pointer-events:none;opacity:0;transform:translate(-50%,-50%);transition:opacity .3s ease;z-index:0;background:radial-gradient(circle,rgba(56,189,248,.15) 0,transparent 70%)}.channel-card.telegram .card-glow[data-v-0082a519]{background:radial-gradient(circle,rgba(84,169,235,.2) 0,transparent 70%)}.channel-card.cfr2 .card-glow[data-v-0082a519]{background:radial-gradient(circle,rgba(246,130,31,.2) 0,transparent 70%)}.channel-card.s3 .card-glow[data-v-0082a519]{background:radial-gradient(circle,rgba(86,154,49,.2) 0,transparent 70%)}.channel-card.discord .card-glow[data-v-0082a519]{background:radial-gradient(circle,rgba(88,101,242,.2) 0,transparent 70%)}.channel-card.huggingface .card-glow[data-v-0082a519]{background:radial-gradient(circle,rgba(255,210,30,.2) 0,transparent 70%)}.channel-card.webdav .card-glow[data-v-0082a519]{background:radial-gradient(circle,rgba(20,184,166,.2) 0,transparent 70%)}.channel-card[data-v-0082a519]:hover{border-color:var(--glass-border);box-shadow:var(--glass-shadow)}.channel-card.disabled[data-v-0082a519]{opacity:.6;background:var(--el-fill-color-lighter)}.card-header[data-v-0082a519]{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;background:var(--glass-header-bg);border-bottom:1px solid var(--glass-header-border)}.card-title[data-v-0082a519]{display:flex;align-items:center;gap:8px}.channel-name[data-v-0082a519]{font-weight:600;font-size:14px;color:var(--el-text-color-primary)}.card-body[data-v-0082a519]{padding:14px 16px;min-height:60px;text-align:left}.card-info[data-v-0082a519]{display:flex;flex-direction:column;gap:8px;align-items:flex-start;width:100%;overflow:hidden}.info-item[data-v-0082a519]{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--el-text-color-secondary);min-width:0;width:100%;max-width:100%}.info-text[data-v-0082a519]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;text-align:left}.info-icon[data-v-0082a519]{width:14px;flex-shrink:0;color:var(--el-text-color-placeholder)}.quota-mini[data-v-0082a519]{margin-top:12px;padding-top:12px;border-top:1px dashed var(--el-border-color-lighter)}.quota-mini[data-v-0082a519] .el-progress{margin-bottom:4px}.quota-text[data-v-0082a519]{font-size:11px;color:var(--el-text-color-secondary)}.card-actions[data-v-0082a519]{display:flex;justify-content:flex-end;gap:4px;padding:10px 16px;border-top:1px solid var(--glass-header-border);background:var(--glass-header-bg);margin-top:auto}.empty-tip[data-v-0082a519]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;color:var(--el-text-color-placeholder);gap:12px}.empty-icon[data-v-0082a519]{font-size:32px}.channel-warning[data-v-0082a519]{margin:0 20px 16px;padding:10px 14px;font-size:13px;color:var(--el-color-warning);background:var(--el-color-warning-light-9);border-radius:6px;border-left:3px solid var(--el-color-warning)}.channel-type-option[data-v-0082a519]{display:inline-flex;align-items:center;gap:8px;line-height:1}.select-option-icon[data-v-0082a519]{width:16px;height:16px;font-size:16px;text-align:center}.form-warning[data-v-0082a519]{padding:10px 14px;font-size:13px;color:var(--el-color-warning);background:var(--el-color-warning-light-9);border-radius:6px;border-left:3px solid var(--el-color-warning);margin-top:8px}.quota-status[data-v-0082a519]{width:100%}.quota-status[data-v-0082a519] .el-progress{margin-bottom:8px}.quota-info[data-v-0082a519]{font-size:13px;color:var(--el-text-color-secondary);padding:8px 12px;background:var(--el-fill-color);border:1px solid var(--glass-border);border-radius:6px}.quota-info.quota-warning[data-v-0082a519]{color:var(--el-color-danger);background:var(--el-color-danger-light-9);font-weight:500}.quota-label[data-v-0082a519]{display:inline-flex;align-items:center;gap:4px}.refresh-btn[data-v-0082a519]{padding:0!important;margin:0!important;height:auto!important;min-height:auto!important;vertical-align:middle}.refresh-btn .fa-spin[data-v-0082a519]{animation:fa-spin-0082a519 1s linear infinite}@keyframes fa-spin-0082a519{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@media (max-width:768px){.upload-settings[data-v-0082a519]{padding:12px}.page-header[data-v-0082a519]{flex-direction:column;align-items:flex-start}.channel-cards[data-v-0082a519]{grid-template-columns:1fr;padding:12px}.group-header[data-v-0082a519]{flex-direction:column;gap:12px;align-items:flex-start}}[data-v-0082a519] .channel-dialog{width:600px!important;max-width:90vw!important}@media (max-width:768px){[data-v-0082a519] .channel-dialog{width:90vw!important}}.el-checkbox-group{font-size:0;line-height:0}.floating-save-btn[data-v-9cef95d2]{position:fixed;right:var(--floating-btn-right,24px);bottom:var(--floating-btn-bottom,24px);display:flex;align-items:center;gap:6px;padding:10px 18px;background:var(--primary-color);color:var(--floating-btn-color);border-radius:50px;cursor:pointer;box-shadow:var(--floating-btn-shadow);transition:all .3s cubic-bezier(.4,0,.2,1);z-index:100;font-weight:500;font-size:13px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.floating-save-btn[data-v-9cef95d2]:hover{box-shadow:var(--floating-btn-shadow-hover)}.floating-save-btn[data-v-9cef95d2]:active{transform:translateY(-1px);box-shadow:var(--floating-btn-shadow)}.floating-save-btn.is-loading[data-v-9cef95d2]{cursor:not-allowed;opacity:.8}.floating-save-btn.is-loading[data-v-9cef95d2]:hover{transform:none}.floating-save-btn svg[data-v-9cef95d2]{font-size:14px}.fade-up-enter-active[data-v-9cef95d2]{transition:all .3s ease-out}.fade-up-leave-active[data-v-9cef95d2]{transition:all .2s ease-in}.fade-up-enter-from[data-v-9cef95d2]{opacity:0;transform:translateY(20px)}.fade-up-leave-to[data-v-9cef95d2]{opacity:0;transform:translateY(10px)}@media (max-width:768px){.floating-save-btn[data-v-9cef95d2]{right:16px;bottom:16px;padding:10px 16px;font-size:12px}.floating-save-btn svg[data-v-9cef95d2]{font-size:12px}}@media (max-width:480px){.floating-save-btn[data-v-9cef95d2]{right:12px;bottom:12px;padding:12px;border-radius:50%}.save-text[data-v-9cef95d2]{display:none}.floating-save-btn svg[data-v-9cef95d2]{font-size:16px}}.security-settings[data-v-264510a6]{padding:20px;min-height:500px}.first-settings[data-v-264510a6]{margin-bottom:40px}.first-title[data-v-264510a6]{display:flex;align-items:center;gap:8px;margin-bottom:20px;padding-bottom:12px;border-bottom:2px solid var(--el-color-primary-light-7)}.second-title[data-v-264510a6]{display:flex;align-items:center;gap:8px;text-align:start;margin-left:0;margin-bottom:16px;padding-bottom:8px;border-bottom:1px solid var(--el-border-color-lighter)}.first-settings[data-v-264510a6] .el-form{padding:20px 24px;background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border-radius:16px;border:1px solid var(--glass-border);margin-bottom:20px;box-shadow:var(--glass-shadow)}.first-settings[data-v-264510a6] .el-form-item{margin-bottom:20px;display:flex;flex-direction:column;align-items:flex-start}.first-settings[data-v-264510a6] .el-form-item:last-child{margin-bottom:0}.first-settings[data-v-264510a6] .el-form-item__label{text-align:left;padding-bottom:8px;font-weight:500;color:var(--el-text-color-primary);width:auto!important;display:flex;align-items:center;gap:5px}.first-settings[data-v-264510a6] .el-form-item__content{width:100%;max-width:400px;margin-left:0!important}.first-settings[data-v-264510a6] .el-input,.first-settings[data-v-264510a6] .el-select{width:100%}.first-settings[data-v-264510a6] .el-switch{--el-switch-on-color:var(--el-color-primary)}.form-item-hint[data-v-264510a6]{display:inline-block;margin-left:8px;font-size:14px;color:var(--el-text-color-regular);line-height:32px;vertical-align:middle}.query-param-list[data-v-264510a6]{display:flex;flex-direction:column;gap:10px;width:100%}.query-param-row[data-v-264510a6]{display:grid;grid-template-columns:minmax(120px,1fr) minmax(160px,1.4fr) auto;gap:8px;align-items:center;width:100%}.response-field-row[data-v-264510a6]{display:grid;grid-template-columns:minmax(180px,1fr) auto auto auto;gap:4px;align-items:center;width:100%}.response-field-row[data-v-264510a6] .el-button+.el-button{margin-left:0}.token-title[data-v-264510a6]{display:flex;align-items:center;justify-content:space-between}.token-actions[data-v-264510a6]{margin-left:5px}.token-table-container[data-v-264510a6]{display:flex;justify-content:center;margin-top:20px;width:100%;overflow:hidden}.token-table[data-v-264510a6]{width:100%;border-radius:12px!important;overflow:hidden;box-shadow:var(--glass-shadow);background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border)}.token-table[data-v-264510a6] .el-table__header-wrapper{border-radius:12px 12px 0 0}.token-table[data-v-264510a6] .el-table__body-wrapper{border-radius:0 0 12px 12px;background:transparent}.token-table[data-v-264510a6] .el-table{border-radius:12px;background:transparent}.token-table[data-v-264510a6] .el-table__header{background-color:color-mix(in srgb,var(--el-text-color-primary) 4%,transparent)}.token-table[data-v-264510a6] .el-table th{background-color:color-mix(in srgb,var(--el-text-color-primary) 4%,transparent)!important;border-bottom:1px solid var(--glass-border);text-align:center}.token-table[data-v-264510a6] .el-table td{background-color:transparent!important;border-bottom:1px solid var(--glass-border)}html.dark .token-table[data-v-264510a6] .el-table th{background-color:color-mix(in srgb,var(--el-text-color-primary) 5%,transparent)!important}html.dark .token-table[data-v-264510a6] .el-table td{border-bottom:1px solid var(--glass-border)}.token-table[data-v-264510a6] .el-table__row:hover td{background-color:color-mix(in srgb,var(--el-text-color-primary) 3%,transparent)!important}html.dark .token-table[data-v-264510a6] .el-table__row:hover td{background-color:color-mix(in srgb,var(--el-text-color-primary) 5%,transparent)!important}.token-table[data-v-264510a6] .el-table__row:last-child td{border-bottom:none}.table-cell-content[data-v-264510a6]{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:4px;padding:8px 4px;min-height:40px;text-align:center}.action-buttons[data-v-264510a6]{gap:8px}.action-button[data-v-264510a6]{margin-left:0}.permission-tag[data-v-264510a6]{margin:2px!important}.token-display[data-v-264510a6]{font-family:Courier New,monospace;background-color:var(--text-bg-color);padding:4px 8px;border-radius:6px;font-size:12px;word-break:break-all;text-align:center;max-width:100%;overflow:hidden;text-overflow:ellipsis}@media (max-width:768px){.security-settings[data-v-264510a6]{padding:15px;padding-bottom:80px}.first-settings[data-v-264510a6] .el-form{padding:12px 15px}.first-settings[data-v-264510a6] .el-form-item__content{max-width:100%}.query-param-row[data-v-264510a6]{grid-template-columns:1fr}.response-field-row[data-v-264510a6]{grid-template-columns:1fr auto auto auto}.token-table-container[data-v-264510a6]{padding:0 10px}.table-cell-content[data-v-264510a6]{padding:6px 2px;min-height:36px}.token-display[data-v-264510a6]{font-size:11px;padding:3px 6px}}@media (max-width:480px){.token-table-container[data-v-264510a6]{padding:0 5px}.table-cell-content[data-v-264510a6]{padding:4px 2px;min-height:32px;font-size:12px}.action-buttons .el-button[data-v-264510a6]{padding:4px 8px;font-size:12px}.permission-tag[data-v-264510a6]{font-size:11px;padding:0 4px;height:20px;line-height:20px}}.token-result[data-v-264510a6]{padding:10px 0}.token-result .el-form-item[data-v-264510a6]{margin-bottom:20px}.dialog-footer[data-v-264510a6]{display:flex;justify-content:flex-end;gap:10px}.fade-slide-enter-active[data-v-264510a6],.fade-slide-leave-active[data-v-264510a6]{transition:all .3s ease-in-out}.fade-slide-enter-from[data-v-264510a6],.fade-slide-leave-to[data-v-264510a6]{opacity:0;transform:translateY(-10px)}.fade-slide-enter-to[data-v-264510a6],.fade-slide-leave-from[data-v-264510a6]{opacity:1;transform:translateY(0)}[data-v-264510a6] .el-dialog{border-radius:12px;background-color:var(--dialog-bg-color);border:1px solid var(--glass-border);box-shadow:var(--dialog-box-shadow)}.page-settings[data-v-342e4dda]{padding:20px;min-height:500px}.first-settings[data-v-342e4dda]{margin-bottom:40px}.first-title[data-v-342e4dda]{display:flex;align-items:center;gap:8px;margin-bottom:20px;padding-bottom:12px;border-bottom:2px solid var(--el-color-primary-light-7)}.second-title[data-v-342e4dda]{display:flex;align-items:center;gap:8px;text-align:start;margin-left:0;margin-bottom:16px;padding-bottom:8px;border-bottom:1px solid var(--el-border-color-lighter)}.first-settings[data-v-342e4dda] .el-form{padding:20px 24px;background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border-radius:16px;border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)}.first-settings[data-v-342e4dda] .el-form-item{margin-bottom:20px;display:flex;flex-direction:column;align-items:flex-start}.first-settings[data-v-342e4dda] .el-form-item:last-child{margin-bottom:0}.first-settings[data-v-342e4dda] .el-form-item__label{text-align:left;padding-bottom:8px;font-weight:500;color:var(--el-text-color-primary);width:auto!important;display:flex;align-items:center;gap:5px}.first-settings[data-v-342e4dda] .el-form-item__content{width:100%;max-width:400px;margin-left:0!important}.first-settings[data-v-342e4dda] .el-form-item:has(.el-textarea) .el-form-item__content{max-width:600px}.first-settings[data-v-342e4dda] .el-input,.first-settings[data-v-342e4dda] .el-select{width:100%}.first-settings[data-v-342e4dda] .el-switch{--el-switch-on-color:var(--el-color-primary)}.announcement-manual-height[data-v-342e4dda] .el-textarea__inner{height:var(--announcement-manual-height)!important}.announcement-refresh-option[data-v-342e4dda]{width:100%;margin-top:10px;display:flex;justify-content:flex-start}.first-settings[data-v-342e4dda] .el-form-item:has(.announcement-refresh-option) .el-form-item__content{flex-direction:column;align-items:flex-start}@media (max-width:768px){.page-settings[data-v-342e4dda]{padding:15px;padding-bottom:80px}.first-settings[data-v-342e4dda] .el-form{padding:12px 15px}.first-settings[data-v-342e4dda] .el-form-item__content{max-width:100%}}.others-settings[data-v-69ae97d8]{padding:20px;min-height:500px}.first-settings[data-v-69ae97d8]{margin-bottom:40px}.first-title[data-v-69ae97d8]{display:flex;align-items:center;gap:8px;margin-bottom:20px;padding-bottom:12px;border-bottom:2px solid var(--el-color-primary-light-7)}.second-title[data-v-69ae97d8]{display:flex;align-items:center;gap:8px;text-align:start;margin-left:0;margin-bottom:16px;padding-bottom:8px;border-bottom:1px solid var(--el-border-color-lighter)}.first-settings[data-v-69ae97d8] .el-form{padding:20px 24px;background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border-radius:16px;border:1px solid var(--glass-border);margin-bottom:20px;box-shadow:var(--glass-shadow)}.first-settings[data-v-69ae97d8] .el-form-item{margin-bottom:20px;display:flex;flex-direction:column;align-items:flex-start}.first-settings[data-v-69ae97d8] .el-form-item:last-child{margin-bottom:0}.first-settings[data-v-69ae97d8] .el-form-item__label{text-align:left;padding-bottom:8px;font-weight:500;color:var(--el-text-color-primary);width:auto!important;display:flex;align-items:center;gap:5px}.first-settings[data-v-69ae97d8] .el-form-item__content{width:100%;max-width:400px;margin-left:0!important}.first-settings[data-v-69ae97d8] .el-input{width:100%}.first-settings[data-v-69ae97d8] .el-switch{--el-switch-on-color:var(--el-color-primary)}@media (max-width:768px){.others-settings[data-v-69ae97d8]{padding:15px;padding-bottom:80px}.first-settings[data-v-69ae97d8] .el-form{padding:12px 15px}.first-settings[data-v-69ae97d8] .el-form-item__content{max-width:100%}}.admin-header-content[data-v-7e9e1ae0]{display:flex;justify-content:space-between;align-items:center;min-height:45px;padding:10px 24px;position:fixed;top:8px;left:50%;width:calc(95% - 16px);z-index:2001;border:1px solid var(--glass-border);border-radius:16px;backdrop-filter:blur(var(--glass-backdrop-blur)) saturate(1.4);-webkit-backdrop-filter:blur(var(--glass-backdrop-blur)) saturate(1.4);transition:background-color .25s ease,border-color .25s ease,box-shadow .25s ease}.admin-header-content[data-v-7e9e1ae0],.admin-header-content[data-v-7e9e1ae0]:hover{background:var(--glass-bg);box-shadow:none;transform:translateX(-50%)}.header-action[data-v-7e9e1ae0],.header-content .actions[data-v-7e9e1ae0]{display:flex;align-items:center}.header-action[data-v-7e9e1ae0]{gap:10px}.header-content .actions[data-v-7e9e1ae0]{gap:15px}.header-content .actions i[data-v-7e9e1ae0],.header-icon[data-v-7e9e1ae0]{font-size:1.5em;cursor:pointer;transition:color .3s ease,transform .3s ease;color:var(--admin-container-color);outline:none}.header-content .actions .el-dropdown-link i[data-v-7e9e1ae0]:hover,.header-content .actions i[data-v-7e9e1ae0]:hover,.header-icon[data-v-7e9e1ae0]:hover{color:var(--primary-color-accent);transform:scale(1.2)}.header-content .actions .el-dropdown-link i[data-v-7e9e1ae0]{color:var(--admin-container-color)}.header-content .actions .disabled[data-v-7e9e1ae0]{color:var(--el-text-color-disabled);pointer-events:none}.header-content .actions .enabled[data-v-7e9e1ae0]{color:var(--primary-color-accent)}@media (max-width:768px){.admin-header-content[data-v-7e9e1ae0]{flex-direction:column;top:6px;width:calc(100% - 32px);padding:6px 12px;gap:4px;border-radius:14px}.header-content .actions i[data-v-7e9e1ae0],.header-icon[data-v-7e9e1ae0]{font-size:.95em}.header-content .actions[data-v-7e9e1ae0]{gap:10px;margin-top:10px}}.pagination-container[data-v-7e9e1ae0]{display:flex;justify-content:center;align-items:center;margin-top:20px;padding-bottom:20px;gap:15px;position:relative}.pagination-center[data-v-7e9e1ae0]{display:flex;align-items:center;gap:10px}.pagination-container[data-v-7e9e1ae0] .el-pagination{--el-pagination-button-bg-color:var(--glass-bg);--el-pagination-hover-color:var(--primary-color-accent)}.pagination-container[data-v-7e9e1ae0] .btn-next,.pagination-container[data-v-7e9e1ae0] .btn-prev,.pagination-container[data-v-7e9e1ae0] .el-pager li{min-width:36px;height:36px;margin:0 4px;border:1px solid var(--glass-border)!important;border-radius:10px!important;background:var(--glass-bg)!important;color:var(--el-text-color-secondary);box-shadow:none;font-weight:500;line-height:36px;transition:background-color .25s ease,border-color .25s ease,color .25s ease}.pagination-container[data-v-7e9e1ae0] .btn-next:hover,.pagination-container[data-v-7e9e1ae0] .btn-prev:hover,.pagination-container[data-v-7e9e1ae0] .el-pager li:hover{border-color:var(--glass-border-hover)!important;background:var(--glass-header-bg)!important;color:var(--primary-color-accent)}.pagination-container[data-v-7e9e1ae0] .el-pager li.is-active,.pagination-container[data-v-7e9e1ae0] .el-pager li.is-active:hover{border-color:var(--primary-color)!important;background:var(--primary-color)!important;color:var(--el-color-white)!important;box-shadow:none!important}.pagination-right[data-v-7e9e1ae0]{display:flex;align-items:center;gap:10px;position:absolute;right:0}.page-jump[data-v-7e9e1ae0],.page-total[data-v-7e9e1ae0]{color:var(--el-text-color-secondary);font-size:13px;white-space:nowrap}.page-jump[data-v-7e9e1ae0]{display:flex;align-items:center;gap:6px}.page-jump .jump-input[data-v-7e9e1ae0]{width:50px}.page-jump .jump-input[data-v-7e9e1ae0] .el-input__wrapper{height:28px;padding:0 8px;border:1px solid var(--glass-border);border-radius:8px;background-color:var(--glass-bg)!important;box-shadow:none;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}.page-jump .jump-input[data-v-7e9e1ae0] .el-input__inner{height:28px;color:var(--el-text-color-primary);line-height:28px;text-align:center}.pagination-container .refresh-btn[data-v-7e9e1ae0]{width:36px;min-width:36px;height:36px;padding:0!important;border:1px solid var(--glass-border)!important;border-radius:10px!important;background:var(--glass-bg)!important;color:var(--primary-color-accent)!important;box-shadow:none;font-size:14px;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);transition:background-color .25s ease,border-color .25s ease,color .25s ease}.pagination-container .refresh-btn[data-v-7e9e1ae0]:hover{border-color:var(--glass-border-hover)!important;background:var(--glass-header-bg)!important;color:var(--primary-color-accent)!important;box-shadow:none}.page-jump .jump-btn[data-v-7e9e1ae0],.pagination-container .load-more[data-v-7e9e1ae0]{border-color:var(--primary-color)!important;background:var(--primary-color)!important;color:var(--el-color-white)!important;box-shadow:none;font-weight:500;transition:background-color .25s ease,border-color .25s ease,color .25s ease}.pagination-container .load-more[data-v-7e9e1ae0]{height:36px;padding:0 16px!important;border-radius:10px!important}.page-jump .jump-btn[data-v-7e9e1ae0]{height:28px;padding:0 12px!important;border-radius:8px!important;font-size:12px;font-weight:600}.page-jump .jump-btn[data-v-7e9e1ae0]:hover,.pagination-container .load-more[data-v-7e9e1ae0]:hover{border-color:var(--el-color-primary-dark-2)!important;background:var(--el-color-primary-dark-2)!important;box-shadow:none!important}@media (max-width:768px){.pagination-container[data-v-7e9e1ae0]{flex-direction:column;gap:8px;margin-top:14px;padding-bottom:10px}.pagination-center[data-v-7e9e1ae0]{flex-wrap:wrap;justify-content:center;gap:6px;order:0}.pagination-container[data-v-7e9e1ae0] .el-pager li{min-width:30px;height:30px;margin:0 2px;border-radius:8px!important;font-size:12px;line-height:30px}.pagination-container[data-v-7e9e1ae0] .btn-next,.pagination-container[data-v-7e9e1ae0] .btn-prev{display:none!important;position:static!important;min-width:30px!important;width:30px!important;height:30px!important;border-radius:8px!important;font-size:12px}.pagination-right[data-v-7e9e1ae0]{position:static;width:100%;justify-content:center;gap:6px;order:1}.page-jump[data-v-7e9e1ae0],.page-total[data-v-7e9e1ae0]{font-size:12px}.page-jump .jump-input[data-v-7e9e1ae0]{width:40px}.page-jump .jump-input[data-v-7e9e1ae0] .el-input__wrapper{height:26px;padding:0 6px;border-radius:7px}.page-jump .jump-input[data-v-7e9e1ae0] .el-input__inner{height:26px;font-size:12px;line-height:26px}.pagination-container .refresh-btn[data-v-7e9e1ae0]{width:30px!important;min-width:30px!important;height:30px!important;border-radius:8px!important;font-size:12px!important}.pagination-container .load-more[data-v-7e9e1ae0]{height:30px!important;min-height:30px!important;padding:0 10px!important;border-radius:8px!important;font-size:12px!important}.page-jump .jump-btn[data-v-7e9e1ae0]{height:26px;padding:0 10px!important;border-radius:7px!important;font-size:11px}}.container[data-v-7e9e1ae0]{background:var(--admin-container-bg-color);min-height:100vh;font-family:Arial,sans-serif;color:var(--admin-container-color);margin:0;padding:0;overflow-x:hidden}.main-container[data-v-7e9e1ae0]{margin-top:60px;transition:margin-left .3s ease,width .3s ease;width:calc(100% - 280px);margin-left:170px}.main-container.collapsed[data-v-7e9e1ae0]{width:calc(100% - 150px);margin-left:80px}@media (max-width:768px){.main-container.collapsed[data-v-7e9e1ae0],.main-container[data-v-7e9e1ae0]{width:auto;margin-left:65px;margin-right:15px;padding:0;min-height:calc(100vh - 60px);box-sizing:border-box}} \ No newline at end of file diff --git a/frontend-dist/css/757.60c15823.css.gz b/frontend-dist/css/757.60c15823.css.gz deleted file mode 100644 index d44b034ca38ecc2ccb93d997125fb65d207d150f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12812 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:1;text-align:center}.el-tabs__item{align-items:center;box-sizing:border-box;color:var(--el-text-color-primary);display:flex;font-size:var(--el-font-size-base);font-weight:500;height:var(--el-tabs-header-height);justify-content:center;list-style:none;padding:0 20px;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:none}.el-tabs__item:focus-visible{border-radius:3px;box-shadow:0 0 2px 2px var(--el-color-primary) inset}.el-tabs__item .is-icon-close{border-radius:50%;margin-left:5px;text-align:center;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs__item .is-icon-close:before{display:inline-block;transform:scale(.9)}.el-tabs__item .is-icon-close:hover{background-color:var(--el-text-color-placeholder);color:#fff}.el-tabs__item.is-active,.el-tabs__item:hover{color:var(--el-color-primary)}.el-tabs__item:hover{cursor:pointer}.el-tabs__item.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-tabs__content{flex-grow:1;overflow:hidden;position:relative}.el-tabs--bottom>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:0}.el-tabs--bottom>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top>.el-tabs__header .el-tabs__item:last-child{padding-right:0}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--card>.el-tabs__header{border-bottom:1px solid var(--el-border-color-light);box-sizing:border-box;height:var(--el-tabs-header-height)}.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid var(--el-border-color-light);border-bottom:none;border-radius:4px 4px 0 0;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .is-icon-close{font-size:12px;height:14px;overflow:hidden;position:relative;right:-2px;transform-origin:100% 50%;width:0}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid var(--el-border-color-light);margin-top:-1px;transition:color var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),padding var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .is-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:var(--el-bg-color)}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .is-icon-close{width:14px}.el-tabs--border-card{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:var(--el-fill-color-light);border-bottom:1px solid var(--el-border-color-light);margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--border-card>.el-tabs__header .el-tabs__item{border:1px solid transparent;color:var(--el-text-color-secondary);margin-top:-1px;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item,.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{background-color:var(--el-bg-color-overlay);border-left-color:var(--el-border-color);border-right-color:var(--el-border-color);color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:var(--el-disabled-text-color)}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom{flex-direction:column}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid var(--el-border-color)}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-bottom:0;margin-top:-1px}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{bottom:auto;height:auto;top:0;width:2px}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{cursor:pointer;height:30px;line-height:30px;text-align:center;width:100%}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{transform:rotate(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{bottom:0;right:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__nav-wrap.is-right:after,.el-tabs--right .el-tabs__nav-wrap.is-left:after,.el-tabs--right .el-tabs__nav-wrap.is-right:after{bottom:auto;height:100%;top:0;width:2px}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{flex-direction:column}.el-tabs--left .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-left{justify-content:flex-end}.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-right{justify-content:flex-start}.el-tabs--left{flex-direction:row}.el-tabs--left .el-tabs__header.is-left{margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left:after{left:auto;right:0}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left{display:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-bottom:none;border-left:none;border-right:1px solid var(--el-border-color-light);border-top:1px solid var(--el-border-color-light);text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid var(--el-border-color-light);border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:none;border-right:1px solid #fff}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-radius:4px 0 0 4px;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid var(--el-border-color)}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:#d1dbe5 transparent}.el-tabs--left>.el-tabs__content+.el-tabs__header{order:-1}.el-tabs--right .el-tabs__header.is-right{margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right:after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid var(--el-border-color-light)}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid var(--el-border-color-light);border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:1px solid #fff;border-right:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-left:none;border-radius:0 4px 4px 0}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid var(--el-border-color)}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:#d1dbe5 transparent}.el-tabs--top{flex-direction:column}.el-tabs--top>.el-tabs__content+.el-tabs__header{order:-1}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{animation:slideInRight-enter var(--el-transition-duration)}.slideInRight-leave{animation:slideInRight-leave var(--el-transition-duration);left:0;position:absolute;right:0}.slideInLeft-enter{animation:slideInLeft-enter var(--el-transition-duration)}.slideInLeft-leave{animation:slideInLeft-leave var(--el-transition-duration);left:0;position:absolute;right:0}@keyframes slideInRight-enter{0%{opacity:0;transform:translateX(100%);transform-origin:0 0}to{opacity:1;transform:translateX(0);transform-origin:0 0}}@keyframes slideInRight-leave{0%{opacity:1;transform:translateX(0);transform-origin:0 0}to{opacity:0;transform:translateX(100%);transform-origin:0 0}}@keyframes slideInLeft-enter{0%{opacity:0;transform:translateX(-100%);transform-origin:0 0}to{opacity:1;transform:translateX(0);transform-origin:0 0}}@keyframes slideInLeft-leave{0%{opacity:1;transform:translateX(0);transform-origin:0 0}to{opacity:0;transform:translateX(-100%);transform-origin:0 0}}.el-check-tag{background-color:var(--el-color-info-light-9);border-radius:var(--el-border-radius-base);color:var(--el-color-info);cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);font-weight:700;line-height:var(--el-font-size-base);padding:7px 15px;transition:var(--el-transition-all)}.el-check-tag:hover{background-color:var(--el-color-info-light-7)}.el-check-tag.el-check-tag--primary.is-checked{background-color:var(--el-color-primary-light-8);color:var(--el-color-primary)}.el-check-tag.el-check-tag--primary.is-checked:hover{background-color:var(--el-color-primary-light-7)}.el-check-tag.el-check-tag--primary.is-checked.is-disabled{background-color:var(--el-color-primary-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--primary.is-checked.is-disabled:hover{background-color:var(--el-color-primary-light-8)}.el-check-tag.el-check-tag--primary.is-disabled{background-color:var(--el-color-info-light-9);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--primary.is-disabled:hover{background-color:var(--el-color-info-light-9)}.el-check-tag.el-check-tag--success.is-checked{background-color:var(--el-color-success-light-8);color:var(--el-color-success)}.el-check-tag.el-check-tag--success.is-checked:hover{background-color:var(--el-color-success-light-7)}.el-check-tag.el-check-tag--success.is-checked.is-disabled{background-color:var(--el-color-success-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--success.is-checked.is-disabled:hover{background-color:var(--el-color-success-light-8)}.el-check-tag.el-check-tag--success.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--success.is-disabled,.el-check-tag.el-check-tag--success.is-disabled:hover{background-color:var(--el-color-success-light-9)}.el-check-tag.el-check-tag--warning.is-checked{background-color:var(--el-color-warning-light-8);color:var(--el-color-warning)}.el-check-tag.el-check-tag--warning.is-checked:hover{background-color:var(--el-color-warning-light-7)}.el-check-tag.el-check-tag--warning.is-checked.is-disabled{background-color:var(--el-color-warning-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--warning.is-checked.is-disabled:hover{background-color:var(--el-color-warning-light-8)}.el-check-tag.el-check-tag--warning.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--warning.is-disabled,.el-check-tag.el-check-tag--warning.is-disabled:hover{background-color:var(--el-color-warning-light-9)}.el-check-tag.el-check-tag--danger.is-checked{background-color:var(--el-color-danger-light-8);color:var(--el-color-danger)}.el-check-tag.el-check-tag--danger.is-checked:hover{background-color:var(--el-color-danger-light-7)}.el-check-tag.el-check-tag--danger.is-checked.is-disabled{background-color:var(--el-color-danger-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--danger.is-checked.is-disabled:hover{background-color:var(--el-color-danger-light-8)}.el-check-tag.el-check-tag--danger.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--danger.is-disabled,.el-check-tag.el-check-tag--danger.is-disabled:hover{background-color:var(--el-color-danger-light-9)}.el-check-tag.el-check-tag--error.is-checked{background-color:var(--el-color-error-light-8);color:var(--el-color-error)}.el-check-tag.el-check-tag--error.is-checked:hover{background-color:var(--el-color-error-light-7)}.el-check-tag.el-check-tag--error.is-checked.is-disabled{background-color:var(--el-color-error-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--error.is-checked.is-disabled:hover{background-color:var(--el-color-error-light-8)}.el-check-tag.el-check-tag--error.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--error.is-disabled,.el-check-tag.el-check-tag--error.is-disabled:hover{background-color:var(--el-color-error-light-9)}.el-check-tag.el-check-tag--info.is-checked{background-color:var(--el-color-info-light-8);color:var(--el-color-info)}.el-check-tag.el-check-tag--info.is-checked:hover{background-color:var(--el-color-info-light-7)}.el-check-tag.el-check-tag--info.is-checked.is-disabled{background-color:var(--el-color-info-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--info.is-checked.is-disabled:hover{background-color:var(--el-color-info-light-8)}.el-check-tag.el-check-tag--info.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--info.is-disabled,.el-check-tag.el-check-tag--info.is-disabled:hover{background-color:var(--el-color-info-light-9)}.ai-tags[data-v-954f5f34]{margin:16px 0;padding:18px;text-align:left;border-radius:16px;border:1px solid var(--glass-border);background:var(--glass-bg);box-shadow:var(--glass-shadow)}.ai-footer-actions[data-v-954f5f34],.ai-footer[data-v-954f5f34],.ai-heading[data-v-954f5f34],.ai-progress-label[data-v-954f5f34],.ai-result-heading[data-v-954f5f34],.ai-toolbar[data-v-954f5f34]{display:flex;align-items:center;gap:10px}.ai-footer[data-v-954f5f34],.ai-progress-label[data-v-954f5f34],.ai-toolbar[data-v-954f5f34]{justify-content:space-between}.ai-toolbar[data-v-954f5f34]{flex-wrap:wrap}.ai-heading h4[data-v-954f5f34]{margin:0;color:var(--el-text-color-primary);font-size:15px}.ai-empty-icon[data-v-954f5f34],.ai-heading-icon[data-v-954f5f34]{display:grid;place-items:center;color:var(--el-color-primary);background:var(--el-color-primary-light-9);border-radius:12px}.ai-heading-icon[data-v-954f5f34]{width:34px;height:34px;font-size:16px}.help-icon[data-v-954f5f34]{color:var(--el-text-color-secondary);cursor:pointer}.ai-tags .el-button[data-v-954f5f34]{gap:7px}.ai-tags[data-v-954f5f34] .el-button>span{display:inline-flex;align-items:center;gap:7px}.ai-empty[data-v-954f5f34]{display:flex;flex-direction:column;align-items:center;gap:16px;padding:28px 12px 12px}.ai-empty-icon[data-v-954f5f34]{width:52px;height:52px;font-size:22px}.ai-empty-title[data-v-954f5f34],.ai-selection[data-v-954f5f34]{color:var(--el-text-color-secondary);font-size:13px;overflow-wrap:anywhere}.ai-result[data-v-954f5f34] .el-alert__title{overflow-wrap:anywhere}.ai-ready[data-v-954f5f34]{padding-bottom:20px}.ai-progress[data-v-954f5f34]{margin-top:18px}.ai-progress-label[data-v-954f5f34]{color:var(--el-text-color-secondary);margin-bottom:10px;font-size:13px}.ai-results[data-v-954f5f34]{display:grid;gap:12px;margin-top:18px}.ai-result[data-v-954f5f34]{border:1px solid var(--el-border-color-light);border-radius:12px;padding:14px;background:var(--el-fill-color-blank)}.ai-result-heading[data-v-954f5f34]{margin-bottom:12px}.ai-file-icon[data-v-954f5f34]{color:var(--el-text-color-secondary);flex-shrink:0}.ai-file[data-v-954f5f34]{flex:1;min-width:0;font-weight:500;overflow-wrap:anywhere;line-height:1.5}.ai-result-heading>.el-tag[data-v-954f5f34]{flex-shrink:0}.ai-tag-list[data-v-954f5f34]{display:flex;flex-wrap:wrap;gap:8px}.ai-tag-list .el-check-tag[data-v-954f5f34],.ai-tag-list .el-tag[data-v-954f5f34]{max-width:100%;height:auto;white-space:normal;overflow-wrap:anywhere}.ai-tag-list [aria-disabled=true][data-v-954f5f34]{cursor:default;opacity:.65}.ai-save-error[data-v-954f5f34]{margin-top:12px}.ai-footer[data-v-954f5f34]{margin-top:18px;padding-top:16px;border-top:1px solid var(--el-border-color-lighter);flex-wrap:wrap}.ai-footer-actions[data-v-954f5f34]{flex-wrap:wrap;margin-left:auto}.ai-footer-actions .el-button[data-v-954f5f34]{height:32px;box-sizing:border-box;padding:8px 15px}.ai-footer-actions .el-button+.el-button[data-v-954f5f34]{margin-left:0}@media (max-width:480px){.ai-tags[data-v-954f5f34]{padding:14px}.ai-footer-actions[data-v-954f5f34]{width:100%}.ai-footer-actions .el-button[data-v-954f5f34]{flex:1}}.batch-tag-container[data-v-2bcde7ae]{padding:0}.tab-content[data-v-2bcde7ae]{padding:20px}.ai-tab-content[data-v-2bcde7ae]{padding:0}.tab-description[data-v-2bcde7ae]{margin:0 0 15px 0;color:var(--el-text-color-regular);font-size:14px}.input-section[data-v-2bcde7ae]{position:relative;margin-bottom:20px}.suggestions-panel[data-v-2bcde7ae]{position:absolute;top:100%;left:0;right:0;background:var(--admin-dashboard-tag-suggestion-bg-color);border:1px solid var(--admin-dashboard-tag-suggestion-border-color);border-radius:4px;box-shadow:var(--admin-dashboard-tag-suggestion-box-shadow);max-height:200px;overflow-y:auto;z-index:1000;margin-top:4px}.suggestion-item[data-v-2bcde7ae]{padding:8px 12px;cursor:pointer;transition:background-color .2s}.suggestion-item[data-v-2bcde7ae]:hover{background-color:var(--admin-dashboard-tag-suggestion-item-hover-bg-color)}.common-tags-section[data-v-2bcde7ae],.tags-to-add-section[data-v-2bcde7ae]{margin-bottom:20px}.common-tags-section h4[data-v-2bcde7ae],.tags-to-add-section h4[data-v-2bcde7ae]{margin:0 0 10px 0;font-size:14px;color:var(--el-text-color-regular)}.tags-container[data-v-2bcde7ae]{display:flex;flex-wrap:wrap;gap:8px;min-height:40px}.tag-item[data-v-2bcde7ae]{cursor:default}.empty-message[data-v-2bcde7ae]{color:var(--el-text-color-secondary);font-size:13px;padding:10px 0}.action-buttons[data-v-2bcde7ae]{margin-top:20px;display:flex;justify-content:flex-end}.tag-management-container[data-v-8ac449fe]{padding:10px 0 0}.tag-management-container .single-ai-panel[data-v-8ac449fe]{margin-bottom:0}.input-section[data-v-8ac449fe]{position:relative;margin-bottom:20px}.suggestions-panel[data-v-8ac449fe]{position:absolute;top:100%;left:0;right:0;background:var(--admin-dashboard-tag-suggestion-bg-color);border:1px solid var(--admin-dashboard-tag-suggestion-border-color);border-radius:4px;box-shadow:var(--admin-dashboard-tag-suggestion-box-shadow);max-height:200px;overflow-y:auto;z-index:1000;margin-top:4px}.suggestion-item[data-v-8ac449fe]{padding:8px 12px;cursor:pointer;transition:background-color .2s}.suggestion-item[data-v-8ac449fe]:hover{background-color:var(--admin-dashboard-tag-suggestion-item-hover-bg-color)}.current-tags-section[data-v-8ac449fe],.popular-tags-section[data-v-8ac449fe]{margin-bottom:20px}.current-tags-section h4[data-v-8ac449fe],.popular-tags-section h4[data-v-8ac449fe]{margin:0 0 10px 0;font-size:14px;color:var(--el-text-color-regular)}.tags-container[data-v-8ac449fe]{display:flex;flex-wrap:wrap;gap:8px;min-height:40px}.tag-item[data-v-8ac449fe]{cursor:default}.tag-item.clickable[data-v-8ac449fe]{cursor:pointer;transition:transform .2s}.empty-message[data-v-8ac449fe]{color:var(--el-text-color-secondary);font-size:13px;padding:10px 0}.dialog-footer[data-v-8ac449fe]{display:flex;justify-content:flex-end}.el-form{--el-form-label-font-size:var(--el-font-size-base);--el-form-inline-content-width:220px}.el-form--inline .el-form-item{display:inline-flex;margin-right:32px;vertical-align:middle}.el-form--inline.el-form--label-top{display:flex;flex-wrap:wrap}.el-form--inline.el-form--label-top .el-form-item{display:block}.el-form-item{display:flex;--font-size:14px;margin-bottom:18px}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-input__validateIcon{display:none}.el-form-item--large{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:22px}.el-form-item--large .el-form-item__label{height:40px;line-height:40px}.el-form-item--large .el-form-item__content{line-height:40px}.el-form-item--large .el-form-item__error{padding-top:4px}.el-form-item--default{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--default .el-form-item__label{height:32px;line-height:32px}.el-form-item--default .el-form-item__content{line-height:32px}.el-form-item--default .el-form-item__error{padding-top:2px}.el-form-item--small{--font-size:12px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--small .el-form-item__label{height:24px;line-height:24px}.el-form-item--small .el-form-item__content{line-height:24px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--label-left .el-form-item__label{justify-content:flex-start;text-align:left}.el-form-item--label-right .el-form-item__label{justify-content:flex-end;text-align:right}.el-form-item--label-top{display:block}.el-form-item--label-top .el-form-item__label{display:block;height:auto;line-height:22px;margin-bottom:8px;padding-right:0;text-align:left;width:fit-content}.el-form-item__label-wrap{display:flex}.el-form-item__label{align-items:flex-start;box-sizing:border-box;color:var(--el-text-color-regular);display:inline-flex;flex:0 0 auto;font-size:var(--el-form-label-font-size);height:32px;line-height:32px;padding:0 12px 0 0}.el-form-item__content{align-items:center;display:flex;flex:1;flex-wrap:wrap;font-size:var(--font-size);line-height:32px;min-width:0;position:relative}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:var(--el-color-danger);font-size:12px;left:0;line-height:1;padding-top:2px;position:absolute;top:100%}.el-form-item__error--inline{display:inline-block;left:auto;margin-left:10px;position:relative;top:auto}.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label:before{color:var(--el-color-danger);content:"*";margin-right:4px}.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label-wrap>.el-form-item__label:after,.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label:after{color:var(--el-color-danger);content:"*";margin-left:4px}.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-select__wrapper,.el-form-item.is-error .el-form-item__content .el-select__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-textarea__inner,.el-form-item.is-error .el-form-item__content .el-textarea__inner.is-focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__wrapper{box-shadow:inset 0 0 0 1px transparent}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__validateIcon,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__validateIcon{display:none}.el-form-item.is-error .el-form-item__content .el-input__validateIcon{color:var(--el-color-danger)}.el-form-item--feedback .el-input__validateIcon{display:inline-flex}.el-descriptions{--el-descriptions-table-border:1px solid var(--el-border-color-lighter);--el-descriptions-item-bordered-label-background:var(--el-fill-color-light);box-sizing:border-box;color:var(--el-text-color-primary);font-size:var(--el-font-size-base)}.el-descriptions__header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.el-descriptions__title{color:var(--el-text-color-primary);font-size:16px;font-weight:700}.el-descriptions__body{background-color:var(--el-fill-color-blank)}.el-descriptions__body .el-descriptions__table{border-collapse:collapse;width:100%}.el-descriptions__body .el-descriptions__table .el-descriptions__cell{box-sizing:border-box;font-size:14px;line-height:23px;text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-left{text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-center{text-align:center}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-right{text-align:right}.el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{border:var(--el-descriptions-table-border);padding:8px 11px}.el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:12px}.el-descriptions--large{font-size:14px}.el-descriptions--large .el-descriptions__header{margin-bottom:20px}.el-descriptions--large .el-descriptions__header .el-descriptions__title{font-size:16px}.el-descriptions--large .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:14px}.el-descriptions--large .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:12px 15px}.el-descriptions--large .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:16px}.el-descriptions--small{font-size:12px}.el-descriptions--small .el-descriptions__header{margin-bottom:12px}.el-descriptions--small .el-descriptions__header .el-descriptions__title{font-size:14px}.el-descriptions--small .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:12px}.el-descriptions--small .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:4px 7px}.el-descriptions--small .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:8px}.el-descriptions__label.el-descriptions__cell.is-bordered-label{background:var(--el-descriptions-item-bordered-label-background);color:var(--el-text-color-regular);font-weight:700}.el-descriptions__label:not(.is-bordered-label){color:var(--el-text-color-primary);margin-right:16px}.el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:6px}.el-descriptions__content.el-descriptions__cell.is-bordered-content{color:var(--el-text-color-primary)}.el-descriptions__content:not(.is-bordered-label){color:var(--el-text-color-regular)}.el-descriptions--large .el-descriptions__label:not(.is-bordered-label){margin-right:16px}.el-descriptions--large .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:8px}.el-descriptions--small .el-descriptions__label:not(.is-bordered-label){margin-right:12px}.el-descriptions--small .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:4px}.el-image__error,.el-image__inner,.el-image__placeholder,.el-image__wrapper{height:100%;width:100%}.el-image{display:inline-block;overflow:hidden;position:relative}.el-image__inner{opacity:1;vertical-align:top}.el-image__inner.is-loading{opacity:0}.el-image__wrapper{left:0;position:absolute;top:0}.el-image__error,.el-image__placeholder{background:var(--el-fill-color-light)}.el-image__error{align-items:center;color:var(--el-text-color-placeholder);display:flex;font-size:14px;justify-content:center;vertical-align:middle}.el-image__preview{cursor:pointer}.el-image-viewer__wrapper{bottom:0;left:0;position:fixed;right:0;top:0}.el-image-viewer__wrapper:focus{outline:none!important}.el-image-viewer__btn{align-items:center;border-radius:50%;box-sizing:border-box;cursor:pointer;display:flex;justify-content:center;opacity:.8;position:absolute;-webkit-user-select:none;user-select:none;z-index:1}.el-image-viewer__btn .el-icon{cursor:pointer}.el-image-viewer__close{font-size:40px;height:40px;right:40px;top:40px;width:40px}.el-image-viewer__canvas{align-items:center;display:flex;height:100%;justify-content:center;position:static;-webkit-user-select:none;user-select:none;width:100%}.el-image-viewer__actions{background-color:var(--el-text-color-regular);border-color:#fff;border-radius:22px;bottom:30px;height:44px;left:50%;padding:0 23px;transform:translateX(-50%)}.el-image-viewer__actions__inner{align-items:center;color:#fff;cursor:default;display:flex;font-size:23px;gap:22px;height:100%;justify-content:space-around;padding:0 6px;width:100%}.el-image-viewer__actions__divider{margin:0 -6px}.el-image-viewer__progress{bottom:90px;color:#fff;cursor:default;left:50%;transform:translateX(-50%)}.el-image-viewer__prev{left:40px}.el-image-viewer__next,.el-image-viewer__prev{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;top:50%;transform:translateY(-50%);width:44px}.el-image-viewer__next{right:40px;text-indent:2px}.el-image-viewer__close{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;width:44px}.el-image-viewer__mask{background:#000;height:100%;left:0;opacity:.5;position:absolute;top:0;width:100%}.el-image-viewer-parent--hidden{overflow:hidden}.viewer-fade-enter-active{animation:viewer-fade-in var(--el-transition-duration)}.viewer-fade-leave-active{animation:viewer-fade-out var(--el-transition-duration)}@keyframes viewer-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes viewer-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}.detail-actions[data-v-550287cc]{display:flex;justify-content:right;margin-bottom:10px;flex-wrap:wrap;gap:8px}.detail-action[data-v-550287cc]{margin-left:0!important}.video-preview[data-v-550287cc]{max-height:300px;cursor:pointer;-o-object-fit:contain;object-fit:contain}.audio-preview[data-v-550287cc],.video-preview[data-v-550287cc]{width:100%;max-width:400px;border-radius:8px}.image-preview[data-v-550287cc]{width:auto;height:auto;max-width:100%;max-height:300px;border-radius:8px;cursor:pointer}.image-preview[data-v-550287cc] img{max-width:100%;max-height:300px;-o-object-fit:contain;object-fit:contain}.file-icon-detail[data-v-550287cc]{font-size:64px;color:var(--el-text-color-secondary)}.preview-section[data-v-550287cc]{display:flex;justify-content:center;margin-bottom:15px;padding:12px;background:var(--el-fill-color-light);border:1px solid var(--glass-border);border-radius:8px;min-height:60px}.preview-content[data-v-550287cc]{display:flex;justify-content:center;align-items:center;width:100%}[data-v-550287cc] .el-descriptions__content{word-break:break-all;word-wrap:break-word}[data-v-550287cc] .el-descriptions__content .el-tag,[data-v-550287cc] .el-descriptions__content .el-tag+span{vertical-align:middle}[data-v-550287cc] .el-descriptions__label{width:120px!important;min-width:100px!important;max-width:120px!important}[data-v-550287cc] .el-descriptions__body table{table-layout:fixed}@media (max-width:768px){.detail-actions[data-v-550287cc]{justify-content:center}}.batch-floating-bar[data-v-49301bcc]{position:fixed;left:50%;bottom:max(84px,calc(72px + env(safe-area-inset-bottom)));transform:translateX(-50%);z-index:1200;display:flex;align-items:center;gap:8px;max-width:min(720px,calc(100vw - 48px));padding:8px;border:1px solid var(--admin-batch-toolbar-border);border-radius:18px;background:var(--admin-batch-toolbar-bg);box-shadow:var(--admin-batch-toolbar-shadow);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}.batch-selection-summary[data-v-49301bcc]{display:flex;align-items:center;flex:0 0 auto;padding:0 4px}.batch-selection-count[data-v-49301bcc]{min-width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;padding:0 8px;border:1px solid color-mix(in srgb,var(--primary-color) 28%,transparent);border-radius:10px;color:var(--primary-color-accent);background:color-mix(in srgb,var(--primary-color) 10%,transparent);font-size:14px;font-weight:600;line-height:1}.batch-toolbar-divider[data-v-49301bcc]{width:1px;height:24px;flex:0 0 auto;border-radius:999px;background:var(--admin-batch-toolbar-border);opacity:.78}.batch-floating-actions[data-v-49301bcc]{display:flex;align-items:center;gap:6px}.batch-floating-btn[data-v-49301bcc]{width:36px;height:36px;min-width:36px;margin-left:0!important;padding:0;border:1px solid transparent;border-radius:12px;color:var(--admin-batch-clear-color);background:var(--admin-batch-action-bg);box-shadow:var(--admin-batch-action-shadow);transition:border-color .2s ease,background-color .2s ease,color .2s ease}.batch-floating-btn[data-v-49301bcc]:hover{border-color:var(--glass-border-hover);color:var(--primary-color-accent);background:var(--admin-batch-action-hover-bg);box-shadow:var(--admin-batch-action-hover-shadow)}.batch-floating-btn.ban[data-v-49301bcc],.batch-floating-btn.copy[data-v-49301bcc],.batch-floating-btn.download[data-v-49301bcc],.batch-floating-btn.move[data-v-49301bcc],.batch-floating-btn.tag[data-v-49301bcc],.batch-floating-btn.white[data-v-49301bcc]{color:var(--admin-batch-action-color)}.batch-floating-btn.danger[data-v-49301bcc]{color:var(--admin-batch-delete-color)}.batch-floating-btn.danger[data-v-49301bcc]:hover{border-color:color-mix(in srgb,var(--admin-batch-delete-color) 32%,transparent);color:var(--admin-batch-delete-color);background:color-mix(in srgb,var(--admin-batch-delete-color) 10%,transparent)}.batch-floating-btn.ghost[data-v-49301bcc]{color:var(--admin-batch-clear-color)}.batch-floating-icon[data-v-49301bcc]{width:15px;margin-right:0}.batch-toolbar-enter-active[data-v-49301bcc],.batch-toolbar-leave-active[data-v-49301bcc]{transition:opacity .24s ease,transform .28s cubic-bezier(.22,1,.36,1)}.batch-toolbar-enter-from[data-v-49301bcc],.batch-toolbar-leave-to[data-v-49301bcc]{opacity:0;transform:translateX(-50%) translateY(12px) scale(.99)}.batch-toolbar-enter-to[data-v-49301bcc],.batch-toolbar-leave-from[data-v-49301bcc]{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}@media (max-width:768px){.batch-floating-bar[data-v-49301bcc]{left:50%;right:auto;bottom:max(76px,calc(64px + env(safe-area-inset-bottom)));transform:translateX(-50%);width:-moz-max-content;width:max-content;max-width:calc(100vw - 24px);gap:6px;padding:6px;border-radius:16px}.batch-selection-summary[data-v-49301bcc]{padding:0 1px}.batch-selection-count[data-v-49301bcc]{min-width:24px;height:26px;padding:0 7px;font-size:12px;border-radius:9px}.batch-toolbar-divider[data-v-49301bcc]{height:22px}.batch-floating-actions[data-v-49301bcc]{flex:1;min-width:0;gap:4px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;padding:1px}.batch-floating-actions[data-v-49301bcc]::-webkit-scrollbar{display:none}.batch-floating-btn[data-v-49301bcc]{width:30px;height:30px;min-width:30px;padding:0;border-radius:10px}.batch-floating-icon[data-v-49301bcc]{margin-right:0;width:13px}.batch-toolbar-enter-from[data-v-49301bcc],.batch-toolbar-leave-to[data-v-49301bcc]{transform:translateX(-50%) translateY(12px) scale(.99)}.batch-toolbar-enter-to[data-v-49301bcc],.batch-toolbar-leave-from[data-v-49301bcc]{transform:translateX(-50%) translateY(0) scale(1)}}.el-container{box-sizing:border-box;display:flex;flex:1;flex-basis:auto;flex-direction:row;min-width:0}.el-container.is-vertical{flex-direction:column}.el-aside{overflow:auto;width:var(--el-aside-width,300px)}.el-aside,.el-footer{box-sizing:border-box;flex-shrink:0}.el-footer{--el-footer-padding:0 20px;--el-footer-height:60px;height:var(--el-footer-height);padding:var(--el-footer-padding)}.el-header{--el-header-padding:0 20px;--el-header-height:60px;flex-shrink:0;height:var(--el-header-height);padding:var(--el-header-padding)}.el-header,.el-main{box-sizing:border-box}.el-main{--el-main-padding:20px;display:block;flex:1;flex-basis:auto;overflow:auto;padding:var(--el-main-padding)}.el-pagination{--el-pagination-font-size:14px;--el-pagination-bg-color:var(--el-fill-color-blank);--el-pagination-text-color:var(--el-text-color-primary);--el-pagination-border-radius:2px;--el-pagination-button-color:var(--el-text-color-primary);--el-pagination-button-width:32px;--el-pagination-button-height:32px;--el-pagination-button-disabled-color:var(--el-text-color-placeholder);--el-pagination-button-disabled-bg-color:var(--el-fill-color-blank);--el-pagination-button-bg-color:var(--el-fill-color);--el-pagination-hover-color:var(--el-color-primary);--el-pagination-font-size-small:12px;--el-pagination-button-width-small:24px;--el-pagination-button-height-small:24px;--el-pagination-button-width-large:40px;--el-pagination-button-height-large:40px;--el-pagination-item-gap:16px;align-items:center;color:var(--el-pagination-text-color);display:flex;font-size:var(--el-pagination-font-size);font-weight:400;white-space:nowrap}.el-pagination .el-input__inner{-moz-appearance:textfield;text-align:center}.el-pagination .el-select{width:128px}.el-pagination .btn-next,.el-pagination .btn-prev{align-items:center;background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;display:flex;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pagination .btn-next *,.el-pagination .btn-prev *{pointer-events:none}.el-pagination .btn-next:focus,.el-pagination .btn-prev:focus{outline:none}.el-pagination .btn-next:hover,.el-pagination .btn-prev:hover{color:var(--el-pagination-hover-color)}.el-pagination .btn-next.is-active,.el-pagination .btn-prev.is-active{color:var(--el-pagination-hover-color);cursor:default;font-weight:700}.el-pagination .btn-next.is-active.is-disabled,.el-pagination .btn-prev.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pagination .btn-next.is-disabled,.el-pagination .btn-next:disabled,.el-pagination .btn-prev.is-disabled,.el-pagination .btn-prev:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pagination .btn-next:focus-visible,.el-pagination .btn-prev:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700;width:inherit}.el-pagination>.is-first{margin-left:0!important}.el-pagination>.is-last{margin-right:0!important}.el-pagination .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination__sizes,.el-pagination__total{color:var(--el-text-color-regular);font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__total[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__jump{align-items:center;color:var(--el-text-color-regular);display:flex;font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__jump[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__goto{margin-right:8px}.el-pagination__editor{box-sizing:border-box;text-align:center}.el-pagination__editor.el-input{width:56px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination__classifier{margin-left:8px}.el-pagination__rightwrapper{align-items:center;display:flex;flex:1;justify-content:flex-end}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{background-color:var(--el-pagination-button-bg-color);margin:0 4px}.el-pagination.is-background .btn-next.is-active,.el-pagination.is-background .btn-prev.is-active,.el-pagination.is-background .el-pager li.is-active{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-pagination.is-background .btn-next.is-disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.is-disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.is-disabled,.el-pagination.is-background .el-pager li:disabled{background-color:var(--el-disabled-bg-color);color:var(--el-text-color-placeholder)}.el-pagination.is-background .btn-next.is-disabled.is-active,.el-pagination.is-background .btn-next:disabled.is-active,.el-pagination.is-background .btn-prev.is-disabled.is-active,.el-pagination.is-background .btn-prev:disabled.is-active,.el-pagination.is-background .el-pager li.is-disabled.is-active,.el-pagination.is-background .el-pager li:disabled.is-active{background-color:var(--el-fill-color-dark);color:var(--el-text-color-secondary)}.el-pagination.is-background .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li{font-size:var(--el-pagination-font-size-small);height:var(--el-pagination-button-height-small);line-height:var(--el-pagination-button-height-small);min-width:var(--el-pagination-button-width-small)}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){font-size:var(--el-pagination-font-size-small)}.el-pagination--small .el-select{width:100px}.el-pagination--large .btn-next,.el-pagination--large .btn-prev,.el-pagination--large .el-pager li{height:var(--el-pagination-button-height-large);line-height:var(--el-pagination-button-height-large);min-width:var(--el-pagination-button-width-large)}.el-pagination--large .el-select .el-input{width:160px}.el-pager{font-size:0;list-style:none;margin:0;padding:0;-webkit-user-select:none;user-select:none}.el-pager,.el-pager li{align-items:center;display:flex}.el-pager li{background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pager li *{pointer-events:none}.el-pager li:focus{outline:none}.el-pager li.is-active,.el-pager li:hover{color:var(--el-pagination-hover-color)}.el-pager li.is-active{cursor:default;font-weight:700}.el-pager li.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pager li.is-disabled,.el-pager li:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pager li:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.list-item[data-v-25a3242c]{display:grid;grid-template-columns:50px 60px minmax(180px,1fr) 130px 100px 110px 130px 80px 100px 120px;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:65px;padding:12px 20px;align-items:center;transition:background .2s ease;border-bottom:1px solid var(--el-border-color-lighter);min-width:-moz-fit-content;min-width:fit-content}.list-item[data-v-25a3242c]:last-child{border-bottom:none}.list-item[data-v-25a3242c]:hover{background:var(--el-fill-color-light)}.list-col[data-v-25a3242c]{display:flex;align-items:center}.list-col-checkbox[data-v-25a3242c]{justify-content:center;min-width:40px}.list-col-checkbox[data-v-25a3242c] .el-checkbox{--el-checkbox-input-width:16px;--el-checkbox-input-height:16px}.list-col-preview[data-v-25a3242c]{justify-content:center;cursor:pointer}.list-col-name[data-v-25a3242c]{cursor:pointer;overflow:hidden;padding-right:16px;min-width:0}.list-col-name[data-v-25a3242c]:hover{color:var(--primary-color-accent)}.filename-ellipsis[data-v-25a3242c]{display:flex;max-width:100%;overflow:hidden;align-items:center}.filename-start[data-v-25a3242c]{flex-shrink:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filename-end[data-v-25a3242c]{flex-shrink:0;white-space:nowrap}.list-col-channel-name[data-v-25a3242c],.list-col-channel[data-v-25a3242c],.list-col-date[data-v-25a3242c],.list-col-size[data-v-25a3242c]{font-size:13px;color:var(--el-text-color-secondary)}.list-col-address[data-v-25a3242c]{font-size:13px}.address-box[data-v-25a3242c],.channel-name-box[data-v-25a3242c]{background:var(--el-fill-color-light);border:1px solid var(--el-border-color-lighter);border-radius:4px;padding:4px 8px;font-size:12px;color:var(--el-text-color-secondary);max-width:100%;overflow-x:auto;overflow-y:hidden;white-space:nowrap;scrollbar-width:none;-ms-overflow-style:none}.address-box[data-v-25a3242c]{width:85px;font-family:Consolas,Monaco,monospace}.channel-name-box[data-v-25a3242c]{width:70px}.address-box[data-v-25a3242c]::-webkit-scrollbar,.channel-name-box[data-v-25a3242c]::-webkit-scrollbar{display:none}.list-col-tags[data-v-25a3242c]{display:flex;align-items:center;gap:4px;flex-wrap:nowrap;overflow:hidden}.color-tag[data-v-25a3242c]{padding:2px 8px;border-radius:10px;font-size:11px;color:#fff;white-space:nowrap;max-width:60px;overflow:hidden;text-overflow:ellipsis;text-shadow:0 1px 2px rgba(0,0,0,.2)}.color-tag-more[data-v-25a3242c]{min-width:30px;text-align:center}.list-empty[data-v-25a3242c]{color:var(--el-text-color-placeholder)}.list-col-actions[data-v-25a3242c]{display:flex;gap:8px;justify-content:flex-end}.list-preview-img[data-v-25a3242c]{width:40px;height:40px;-o-object-fit:cover;object-fit:cover;border-radius:6px}.list-folder-icon[data-v-25a3242c]{font-size:28px;color:var(--el-color-primary)}.list-file-icon[data-v-25a3242c]{font-size:24px;color:var(--el-text-color-secondary)}.list-action-btn[data-v-25a3242c]{width:32px;height:32px;border:none;border-radius:8px;background:var(--el-fill-color);color:var(--el-text-color-regular);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.list-action-btn[data-v-25a3242c]:hover{background:var(--primary-color);color:#fff}.list-action-danger[data-v-25a3242c]:hover{background:var(--el-color-danger)}@media (max-width:768px){.list-item[data-v-25a3242c]{grid-template-columns:20px 34px 1fr auto;padding:8px 6px;gap:6px;font-size:12px}.list-col-address[data-v-25a3242c],.list-col-channel-name[data-v-25a3242c],.list-col-channel[data-v-25a3242c],.list-col-date[data-v-25a3242c],.list-col-size[data-v-25a3242c],.list-col-tags[data-v-25a3242c]{display:none}.list-col-name[data-v-25a3242c]{padding-right:8px;line-height:1.25}.list-preview-img[data-v-25a3242c]{width:34px;height:34px;border-radius:5px}.list-folder-icon[data-v-25a3242c]{font-size:24px}.list-file-icon[data-v-25a3242c]{font-size:21px}.list-col-actions[data-v-25a3242c]{gap:3px}.list-action-btn[data-v-25a3242c]{width:26px;height:26px;border-radius:7px;font-size:12px}.list-col-checkbox[data-v-25a3242c]{width:18px;min-width:18px}.list-col-checkbox[data-v-25a3242c] .el-checkbox{--el-checkbox-input-width:14px;--el-checkbox-input-height:14px}}.img-card[data-v-956fb02e]{width:100%;height:22vh;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:260px;background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border);border-radius:8px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative;transition:transform .3s ease}.img-card[data-v-956fb02e]:before{content:"";position:absolute;top:0;left:0;right:0;height:45%;background:linear-gradient(180deg,rgba(0,0,0,.35) 0,rgba(0,0,0,.12) 50%,transparent);pointer-events:none;z-index:5}.img-card[data-v-956fb02e] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-956fb02e] .el-checkbox{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.img-card[data-v-956fb02e] .el-checkbox__inner{width:14px!important;min-width:14px;height:14px!important;min-height:14px;border-radius:50%!important}.img-card[data-v-956fb02e]:hover{transform:scale(1.05)}.image-preview[data-v-956fb02e],.video-preview[data-v-956fb02e]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;transition:transform .4s ease,opacity .3s ease;filter:var(--image-preview-filter)}.video-preview[data-v-956fb02e]{cursor:pointer}.img-card:hover .file-icon[data-v-956fb02e],.img-card:hover .image-preview[data-v-956fb02e],.img-card:hover .video-preview[data-v-956fb02e]{transform:scale(1.03)}.image-preview[data-v-956fb02e]:hover{opacity:.8}.file-short-info[data-v-956fb02e]{position:absolute;z-index:10;top:3px;left:3px;display:flex;gap:5px;align-items:start}.success-tag[data-v-956fb02e]{background-color:rgba(34,139,34,.6);border:1px solid rgba(34,139,34,.7);border-radius:6px}.fail-tag[data-v-956fb02e],.success-tag[data-v-956fb02e]{color:hsla(0,0%,100%,.95);padding:3px 8px;font-size:11px;font-weight:500;height:auto;line-height:1.2;text-shadow:0 1px 2px rgba(0,0,0,.3)}.fail-tag[data-v-956fb02e]{background-color:rgba(220,53,69,.6);border:1px solid rgba(220,53,69,.7);border-radius:6px}.primary-tag[data-v-956fb02e]{background-color:rgba(250,82,194,.6);color:hsla(0,0%,100%,.95);border:1px solid rgba(250,82,194,.7);padding:3px 8px;border-radius:6px;font-size:11px;font-weight:500;display:flex;align-items:center;height:auto;line-height:1.2;text-shadow:0 1px 2px rgba(0,0,0,.3)}.file-preview[data-v-956fb02e]{display:flex;justify-content:center;align-items:center;width:100%;height:100%}.file-icon[data-v-956fb02e]{opacity:.6;font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.audio-icon[data-v-956fb02e]{color:var(--el-color-primary);opacity:.8}.audio-card-preview[data-v-956fb02e]{cursor:pointer}.card-bottom-overlay[data-v-956fb02e]{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,rgba(0,0,0,.55) 0,rgba(0,0,0,.25) 50%,transparent);padding:clamp(15px,2.5vh,30px) clamp(6px,1vw,12px) clamp(5px,.8vh,10px);display:flex;flex-direction:column;gap:clamp(3px,.5vh,6px);z-index:10}.file-name-row[data-v-956fb02e]{display:flex;align-items:center;justify-content:center}.file-name[data-v-956fb02e]{color:#fff;font-size:clamp(10px,1.1vw,14px);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;text-shadow:0 1px 3px rgba(0,0,0,.5)}.action-bar[data-v-956fb02e]{display:flex;justify-content:space-between;align-items:center;opacity:0;transform:translateY(4px);transition:all .25s cubic-bezier(.4,0,.2,1);pointer-events:none}.el-card:hover .action-bar[data-v-956fb02e]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-956fb02e],.action-bar-right[data-v-956fb02e]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-956fb02e]{width:clamp(24px,2.5vw,28px);height:clamp(24px,2.5vw,28px);border:none;border-radius:clamp(5px,.6vw,8px);background:hsla(0,0%,100%,.15);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;font-size:clamp(11px,1.1vw,14px)}.action-btn[data-v-956fb02e]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-956fb02e]:active{transform:scale(.95)}.action-btn-danger[data-v-956fb02e]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.img-card[data-v-956fb02e]{height:148px;border-radius:7px;contain-intrinsic-size:148px}.img-card[data-v-956fb02e] .el-checkbox{top:6px;right:6px;transform:scale(1.1)}.img-card[data-v-956fb02e]:hover{transform:none}.file-short-info[data-v-956fb02e]{gap:3px;max-width:calc(100% - 38px)}.fail-tag[data-v-956fb02e],.primary-tag[data-v-956fb02e],.success-tag[data-v-956fb02e]{max-width:72px;padding:2px 5px;border-radius:5px;font-size:9px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-bottom-overlay[data-v-956fb02e]{padding:22px 6px 6px}.file-name[data-v-956fb02e]{font-size:11px}.file-icon[data-v-956fb02e]{font-size:34px}.action-bar[data-v-956fb02e]{display:none!important}}@keyframes skeleton-shimmer-956fb02e{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton-wrapper[data-v-956fb02e]{width:100%;height:100%;background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-956fb02e 1.5s ease-in-out infinite}.error-wrapper[data-v-956fb02e]{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--skeleton-bg-color);cursor:pointer;gap:8px}.error-icon[data-v-956fb02e]{font-size:32px;color:var(--el-color-warning);opacity:.7}.error-text[data-v-956fb02e]{font-size:12px;color:var(--el-text-color-secondary)}.img-card[data-v-534cf01b]{width:100%;height:22vh;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:260px;background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border);border-radius:8px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative;transition:transform .3s ease}.img-card[data-v-534cf01b] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-534cf01b] .el-checkbox{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.img-card[data-v-534cf01b] .el-checkbox__inner{width:14px!important;min-width:14px;height:14px!important;min-height:14px;border-radius:50%!important}.img-card[data-v-534cf01b]:hover{transform:scale(1.05)}.folder-card[data-v-534cf01b]{cursor:pointer}.folder-icon[data-v-534cf01b]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;color:var(--el-color-primary)}.folder-icon-svg[data-v-534cf01b]{font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.img-card:hover .folder-icon-svg[data-v-534cf01b]{transform:scale(1.03)}.card-bottom-overlay[data-v-534cf01b]{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,rgba(0,0,0,.55) 0,rgba(0,0,0,.25) 50%,transparent);padding:clamp(15px,2.5vh,30px) clamp(6px,1vw,12px) clamp(5px,.8vh,10px);display:flex;flex-direction:column;gap:clamp(3px,.5vh,6px);z-index:10}.file-name-row[data-v-534cf01b]{display:flex;align-items:center;justify-content:center}.file-name[data-v-534cf01b]{color:#fff;font-size:clamp(10px,1.1vw,14px);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;text-shadow:0 1px 3px rgba(0,0,0,.5)}.action-bar[data-v-534cf01b]{display:flex;justify-content:space-between;align-items:center;opacity:0;transform:translateY(4px);transition:all .25s cubic-bezier(.4,0,.2,1);pointer-events:none}.el-card:hover .action-bar[data-v-534cf01b]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-534cf01b],.action-bar-right[data-v-534cf01b]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-534cf01b]{width:clamp(24px,2.5vw,28px);height:clamp(24px,2.5vw,28px);border:none;border-radius:clamp(5px,.6vw,8px);background:hsla(0,0%,100%,.15);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;font-size:clamp(11px,1.1vw,14px)}.action-btn[data-v-534cf01b]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-534cf01b]:active{transform:scale(.95)}.action-btn-danger[data-v-534cf01b]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.img-card[data-v-534cf01b]{height:148px;border-radius:7px;contain-intrinsic-size:148px}.img-card[data-v-534cf01b] .el-checkbox{top:6px;right:6px;transform:scale(1.1)}.img-card[data-v-534cf01b]:hover{transform:none}.folder-icon-svg[data-v-534cf01b]{font-size:36px}.card-bottom-overlay[data-v-534cf01b]{padding:22px 6px 6px}.file-name[data-v-534cf01b]{font-size:11px}.action-bar[data-v-534cf01b]{display:none!important}}@keyframes skeleton-shimmer-070880ec{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes skeleton-pulse-070880ec{0%,to{opacity:.4}50%{opacity:.8}}.skeleton-card[data-v-070880ec]{width:100%;height:22vh;background:var(--admin-dashboard-imgcard-bg-color);border:1px solid var(--glass-border);border-radius:12px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative}.skeleton-image[data-v-070880ec]{width:100%;height:100%;background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-info[data-v-070880ec]{position:absolute;bottom:0;left:0;right:0;padding:15px;background:rgba(0,0,0,.5)}.skeleton-text[data-v-070880ec]{height:14px;width:60%;margin:0 auto;border-radius:4px;background:linear-gradient(90deg,hsla(0,0%,100%,.1) 25%,hsla(0,0%,100%,.25) 50%,hsla(0,0%,100%,.1) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-list-item[data-v-070880ec]{animation:skeleton-pulse-070880ec 1.5s ease-in-out infinite}.skeleton-checkbox[data-v-070880ec]{width:18px;height:18px;border-radius:4px;background:var(--skeleton-bg-color)}.skeleton-preview[data-v-070880ec]{width:40px;height:40px;border-radius:6px;background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-text-long[data-v-070880ec]{width:80%}.skeleton-text-long[data-v-070880ec],.skeleton-text-short[data-v-070880ec]{height:14px;border-radius:4px;background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-text-short[data-v-070880ec]{width:60px}.skeleton-text-tiny[data-v-070880ec]{height:14px;width:40px;border-radius:4px}.skeleton-tag[data-v-070880ec],.skeleton-text-tiny[data-v-070880ec]{background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-tag[data-v-070880ec]{height:20px;width:50px;border-radius:10px}.skeleton-actions[data-v-070880ec]{height:28px;width:80px;border-radius:6px;background:var(--skeleton-bg-color)}.list-item[data-v-070880ec]{display:grid;grid-template-columns:50px 60px minmax(180px,1fr) 130px 100px 110px 130px 80px 100px 120px;padding:12px 20px;align-items:center;border-bottom:1px solid var(--el-border-color-lighter)}.list-col[data-v-070880ec]{display:flex;align-items:center}.list-col-checkbox[data-v-070880ec],.list-col-preview[data-v-070880ec]{justify-content:center}@media (max-width:768px){.skeleton-card[data-v-070880ec]{height:148px;border-radius:7px}.skeleton-info[data-v-070880ec]{padding:22px 6px 6px}.skeleton-text[data-v-070880ec]{height:11px;width:68%;border-radius:3px}.list-item[data-v-070880ec]{box-sizing:border-box;grid-template-columns:20px 34px 1fr auto;padding:8px 6px;gap:6px;height:50px}.skeleton-checkbox[data-v-070880ec]{width:16px;height:16px}.skeleton-preview[data-v-070880ec]{width:34px;height:34px;border-radius:5px}.skeleton-text-long[data-v-070880ec],.skeleton-text-short[data-v-070880ec],.skeleton-text-tiny[data-v-070880ec]{height:10px;border-radius:3px}.skeleton-actions[data-v-070880ec]{width:58px;height:24px;border-radius:6px}.list-col-address[data-v-070880ec],.list-col-channel-name[data-v-070880ec],.list-col-channel[data-v-070880ec],.list-col-date[data-v-070880ec],.list-col-size[data-v-070880ec],.list-col-tags[data-v-070880ec]{display:none}}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb:after,.el-breadcrumb:before{content:"";display:table}.el-breadcrumb:after{clear:both}.el-breadcrumb__separator{color:var(--el-text-color-placeholder);font-weight:700;margin:0 9px}.el-breadcrumb__separator.el-icon{font-weight:400;margin:0 6px}.el-breadcrumb__separator.el-icon svg{vertical-align:middle}.el-breadcrumb__item{align-items:center;display:inline-flex;float:left}.el-breadcrumb__inner{color:var(--el-text-color-regular)}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{color:var(--el-text-color-primary);font-weight:700;text-decoration:none;transition:var(--el-transition-color)}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:var(--el-color-primary);cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{color:var(--el-text-color-regular);cursor:text;font-weight:400}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-divider{position:relative}.el-divider--horizontal{border-top:1px var(--el-border-color) var(--el-border-style);display:block;height:1px;margin:24px 0;width:100%}.el-divider--vertical{border-left:1px var(--el-border-color) var(--el-border-style);display:inline-block;height:1em;margin:0 8px;position:relative;vertical-align:middle;width:1px}.el-divider__text{background-color:var(--el-bg-color);color:var(--el-text-color-primary);font-size:14px;font-weight:500;padding:0 20px;position:absolute}.el-divider__text.is-left{left:20px;transform:translateY(-50%)}.el-divider__text.is-center{left:50%;transform:translateX(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;transform:translateY(-50%)}.dashboard-checkbox[data-v-3757bfa7]{box-sizing:border-box;display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;color:#fff;cursor:pointer;transition:background .2s ease,border-color .2s ease,box-shadow .2s ease}.dashboard-checkbox--breadcrumb[data-v-3757bfa7]{position:relative;width:32px;height:32px;overflow:hidden;border:1px solid var(--glass-border);border-radius:10px;background:var(--glass-bg);box-shadow:none;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);transition:background-color .2s ease,border-color .2s ease}.dashboard-checkbox--breadcrumb[data-v-3757bfa7]:before{content:"";position:absolute;inset:7px;box-sizing:border-box;border:1px solid var(--glass-border);border-radius:50%;background:transparent;transition:border-color .18s ease,background .18s ease}.dashboard-checkbox--breadcrumb[data-v-3757bfa7]:hover{border-color:var(--glass-border-hover)}.dashboard-checkbox--breadcrumb[data-v-3757bfa7]:focus-visible{outline:none;border-color:color-mix(in srgb,var(--primary-color-accent) 42%,transparent)}.dashboard-checkbox--breadcrumb.checked[data-v-3757bfa7],.dashboard-checkbox--breadcrumb.indeterminate[data-v-3757bfa7]{border-color:var(--glass-border);background:var(--glass-bg)}.dashboard-checkbox--breadcrumb.checked[data-v-3757bfa7]:before,.dashboard-checkbox--breadcrumb.indeterminate[data-v-3757bfa7]:before{border-color:hsla(0,0%,100%,.4);background:var(--primary-color)}.dashboard-checkbox-mark[data-v-3757bfa7]{position:relative;z-index:1;width:10px;height:10px;opacity:0;transform:scale(.72);transition:opacity .16s ease,transform .16s ease}.dashboard-checkbox.checked .dashboard-checkbox-mark[data-v-3757bfa7],.dashboard-checkbox.indeterminate .dashboard-checkbox-mark[data-v-3757bfa7]{opacity:1;transform:scale(1)}.dashboard-checkbox--breadcrumb .dashboard-checkbox-mark[data-v-3757bfa7]{width:11px;height:11px}@media (max-width:768px){.dashboard-checkbox--breadcrumb[data-v-3757bfa7]{width:28px;height:28px;border-radius:8px}.dashboard-checkbox--breadcrumb[data-v-3757bfa7]:before{inset:6px}.dashboard-checkbox--breadcrumb .dashboard-checkbox-mark[data-v-3757bfa7]{width:10px;height:10px}}.el-checkbox-group{font-size:0;line-height:0}.filter-dropdown[data-v-42919522]{flex-shrink:0}.filter-trigger[data-v-42919522]{cursor:pointer;display:flex;align-items:center}.header-icon[data-v-42919522]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-42919522]:hover{color:var(--primary-color-accent);transform:scale(1.2)}.filter-badge[data-v-42919522] .el-badge__content{background:var(--primary-color);border:none;font-size:10px;height:16px;line-height:16px;padding:0 5px}.filter-dropdown-menu[data-v-42919522]{padding:8px 0;min-width:180px;max-height:400px;overflow-y:auto}.filter-section[data-v-42919522]{padding:8px 12px;border-bottom:1px solid var(--el-border-color-lighter)}.filter-section[data-v-42919522]:last-of-type{border-bottom:none}.filter-title[data-v-42919522]{font-size:12px;font-weight:600;color:var(--el-text-color-secondary);margin-bottom:6px}.filter-options[data-v-42919522],.filter-options[data-v-42919522] .el-checkbox-group{display:flex;flex-direction:column;gap:2px}.filter-options[data-v-42919522] .el-checkbox{margin-right:0;height:26px;padding:0 6px;border-radius:6px;transition:all .2s ease}.filter-options[data-v-42919522] .el-checkbox:hover{background:color-mix(in srgb,var(--el-text-color-primary) 10%,transparent)}html.dark .filter-options[data-v-42919522] .el-checkbox:hover{background:color-mix(in srgb,var(--el-text-color-primary) 14%,transparent)}.filter-options[data-v-42919522] .el-checkbox__label{font-size:13px;color:var(--el-text-color-primary)}.filter-options[data-v-42919522] .el-checkbox__input.is-checked+.el-checkbox__label{color:var(--primary-color-accent)}.channel-group-title[data-v-42919522]{font-size:11px;font-weight:600;color:var(--el-text-color-secondary);text-transform:uppercase;letter-spacing:.5px;padding:4px 6px;margin-top:4px;margin-bottom:2px}.channel-divider[data-v-42919522]{height:1px;background:var(--el-border-color-lighter);margin:6px 0}.filter-options[data-v-42919522] .el-checkbox__input.is-checked .el-checkbox__inner{background-color:var(--primary-color);border-color:var(--primary-color)}.filter-actions[data-v-42919522]{padding:10px 12px 6px;display:flex;justify-content:center}.filter-actions .el-button[data-v-42919522]{width:100%;background:var(--el-fill-color-light);border:1px solid var(--el-border-color);color:var(--el-text-color-regular);border-radius:6px;transition:all .2s ease}.filter-actions .el-button[data-v-42919522]:hover:not(:disabled){background:var(--primary-color);border-color:var(--primary-color-accent);color:#fff}.filter-actions .el-button[data-v-42919522]:disabled{opacity:.5;cursor:not-allowed}@media (max-width:768px){.filter-dropdown-menu[data-v-42919522]{min-width:160px;max-height:320px}.filter-section[data-v-42919522]{padding:6px 10px}.filter-title[data-v-42919522]{font-size:11px;margin-bottom:4px}.filter-options[data-v-42919522] .el-checkbox{height:24px;padding:0 4px}.filter-options[data-v-42919522] .el-checkbox__label{font-size:12px}.header-icon[data-v-42919522]{font-size:1.2em}}.language-switcher[data-v-08567d0a]{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .3s ease}.lang-icon[data-v-08567d0a]{font-size:var(--lang-icon-size,1.5em);color:var(--lang-icon-color,var(--theme-toggle-color))}#themeToggle[data-v-5c149ed5]{border:0;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:.375rem;transition-property:background-color,border-color,color;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.theme_toggle_circle1[data-v-5c149ed5]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-5c149ed5]{transition:all .5s ease-in-out;fill:var(--admin-theme-toggle-bg-color)}.theme_toggle_svg[data-v-5c149ed5]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--admin-theme-toggle-color)}.dark.theme_toggle_svg[data-v-5c149ed5]{transform:rotate(40deg)}.theme_toggle_g[data-v-5c149ed5]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-5c149ed5],.icon-fade-leave-active[data-v-5c149ed5]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-5c149ed5]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-5c149ed5]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-5c149ed5],.icon-fade-leave-from[data-v-5c149ed5]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-5c149ed5]{display:inline-block}.tabs[data-v-2fe4fd26]{display:flex;align-items:center;justify-content:center;gap:8px}.page-switcher[data-v-2fe4fd26]{position:relative;display:grid;align-items:start;height:44px;overflow:visible}.page-switcher.is-open[data-v-2fe4fd26]{z-index:1200}.page-switcher-sheet[data-v-2fe4fd26]{position:relative;isolation:isolate;display:flex;flex-direction:column;align-items:stretch;gap:0;padding:4px;border:1px solid transparent;border-radius:14px;box-sizing:border-box;background-color:transparent;overflow:visible;transition:none}.page-switcher-sheet[data-v-2fe4fd26]:before{content:"";position:absolute;top:0;left:0;right:0;z-index:0;height:160px;border:1px solid var(--tabs-switcher-border-color);border-radius:14px;background:var(--tabs-dropdown-popper-bg-color);box-shadow:var(--tabs-dropdown-popper-shadow);opacity:0;transform:translateY(-4px) scaleY(.72);transform-origin:top center;pointer-events:none;transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1);will-change:opacity,transform}.page-switcher.is-open .page-switcher-sheet[data-v-2fe4fd26]:before{opacity:1;transform:translateY(0) scaleY(1);pointer-events:auto}.page-switcher-title[data-v-2fe4fd26]{line-height:1}.page-switcher-arrow[data-v-2fe4fd26]{margin-left:auto;font-size:.75em;color:var(--tabs-switcher-accent-color);transition:transform .3s ease}.page-switcher.is-open .page-switcher-arrow[data-v-2fe4fd26]{transform:rotate(180deg)}.page-option[data-v-2fe4fd26]{position:relative;z-index:1;display:inline-flex;flex:0 0 auto;align-items:center;box-sizing:border-box;gap:7px;width:100%;min-width:148px;height:37px;padding:0 12px;border:none;border-radius:10px;color:var(--admin-container-color);background:transparent;font-size:15px;font-weight:600;font-family:inherit;white-space:nowrap;cursor:pointer;transition:none}.page-option-list[data-v-2fe4fd26]{position:absolute;top:45px;left:5px;right:5px;display:flex;flex-direction:column;align-items:stretch;opacity:0;pointer-events:none;transform:translateY(-9px) scaleY(.86);transform-origin:top center;transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1)}.page-option-list .page-option[data-v-2fe4fd26]{position:relative;z-index:1;width:100%}.page-option-highlight[data-v-2fe4fd26]{position:absolute;top:0;left:0;right:0;z-index:0;height:37px;border-radius:10px;background:var(--tabs-switcher-hover-bg);opacity:0;pointer-events:none;transform:translateY(calc(var(--hovered-option-index)*37px));transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1)}.page-option-highlight.is-visible[data-v-2fe4fd26]{opacity:1}.page-switcher.is-open .page-option-list[data-v-2fe4fd26]{opacity:1;pointer-events:auto;transform:translateY(0) scaleY(1)}.page-option.is-current[data-v-2fe4fd26]{height:37px;gap:8px;padding:0 14px;color:var(--tabs-switcher-current-color);background:var(--tabs-switcher-current-bg);border:1px solid var(--tabs-switcher-current-border-color);box-shadow:none;font-size:1.1em;font-weight:700;line-height:1.15}.page-option.is-current>.page-option-icon[data-v-2fe4fd26]{width:17px;font-size:1.05em}.page-option.is-current>.page-option-icon[data-v-2fe4fd26],.page-option.is-current>.page-switcher-arrow[data-v-2fe4fd26],.page-option.is-current>.page-switcher-title[data-v-2fe4fd26]{translate:0 1px}.page-option[data-v-2fe4fd26]:hover{color:var(--tabs-switcher-accent-color);background-color:transparent}.page-option.is-current[data-v-2fe4fd26]:hover{color:var(--tabs-switcher-current-color);background:var(--tabs-switcher-current-bg)}.page-option-icon[data-v-2fe4fd26]{width:16px;color:var(--tabs-switcher-accent-color)}@media (max-width:768px){.tabs[data-v-2fe4fd26]{gap:6px}.page-switcher-title[data-v-2fe4fd26]{max-width:6em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page-switcher-sheet[data-v-2fe4fd26]{width:-moz-max-content;width:max-content;max-width:calc(100vw - 96px)}.page-switcher-sheet[data-v-2fe4fd26]:before{height:140px;transform:translateY(-3px) scaleY(.72)}.page-option[data-v-2fe4fd26]{justify-content:flex-start;min-width:0;height:32px;padding:0 10px;font-size:12px;gap:6px}.page-option-icon[data-v-2fe4fd26]{width:15px}.page-option-list[data-v-2fe4fd26]{top:40px;transform:translateY(-8px) scaleY(.86)}.page-option-highlight[data-v-2fe4fd26]{height:32px;transform:translateY(calc(var(--hovered-option-index)*32px))}.page-option.is-current[data-v-2fe4fd26]{height:32px;gap:5px;padding:0 10px;font-size:1em}.page-option.is-current>.page-option-icon[data-v-2fe4fd26]{width:16px}.page-option.is-current>.page-switcher-arrow[data-v-2fe4fd26]{margin-left:4px}.tabs-language-switcher[data-v-2fe4fd26]{--lang-icon-size:1.1em;padding:3px}}.tabs-language-switcher[data-v-2fe4fd26]{--lang-icon-size:1.3em;--lang-icon-color:var(--admin-theme-toggle-color);transition:color .3s ease;padding:5px}.tabs[data-v-2fe4fd26] #themeToggle,.tabs[data-v-2fe4fd26] #themeToggle:hover,.tabs[data-v-2fe4fd26] .language-switcher,.tabs[data-v-2fe4fd26] .language-switcher:hover{background-color:transparent!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}.admin-header-content[data-v-8a33a938]{display:flex;justify-content:space-between;align-items:center;min-height:45px;padding:10px 24px;position:fixed;top:8px;left:50%;width:calc(95% - 16px);z-index:2001;border:1px solid var(--glass-border);border-radius:16px;backdrop-filter:blur(var(--glass-backdrop-blur)) saturate(1.4);-webkit-backdrop-filter:blur(var(--glass-backdrop-blur)) saturate(1.4);transition:background-color .25s ease,border-color .25s ease,box-shadow .25s ease}.admin-header-content[data-v-8a33a938],.admin-header-content[data-v-8a33a938]:hover{background:var(--glass-bg);box-shadow:none;transform:translateX(-50%)}.header-action[data-v-8a33a938],.header-content .actions[data-v-8a33a938]{display:flex;align-items:center}.header-action[data-v-8a33a938]{gap:10px}.header-content .actions[data-v-8a33a938]{gap:15px}.header-content .actions i[data-v-8a33a938],.header-icon[data-v-8a33a938]{font-size:1.5em;cursor:pointer;transition:color .3s ease,transform .3s ease;color:var(--admin-container-color);outline:none}.header-content .actions .el-dropdown-link i[data-v-8a33a938]:hover,.header-content .actions i[data-v-8a33a938]:hover,.header-icon[data-v-8a33a938]:hover{color:var(--primary-color-accent);transform:scale(1.2)}.header-content .actions .el-dropdown-link i[data-v-8a33a938]{color:var(--admin-container-color)}.header-content .actions .disabled[data-v-8a33a938]{color:var(--el-text-color-disabled);pointer-events:none}.header-content .actions .enabled[data-v-8a33a938]{color:var(--primary-color-accent)}@media (max-width:768px){.admin-header-content[data-v-8a33a938]{flex-direction:column;top:6px;width:calc(100% - 32px);padding:6px 12px;gap:4px;border-radius:14px}.header-content .actions i[data-v-8a33a938],.header-icon[data-v-8a33a938]{font-size:.95em}.header-content .actions[data-v-8a33a938]{gap:10px;margin-top:10px}}.pagination-container[data-v-8a33a938]{display:flex;justify-content:center;align-items:center;margin-top:20px;padding-bottom:20px;gap:15px;position:relative}.pagination-center[data-v-8a33a938]{display:flex;align-items:center;gap:10px}.pagination-container[data-v-8a33a938] .el-pagination{--el-pagination-button-bg-color:var(--glass-bg);--el-pagination-hover-color:var(--primary-color-accent)}.pagination-container[data-v-8a33a938] .btn-next,.pagination-container[data-v-8a33a938] .btn-prev,.pagination-container[data-v-8a33a938] .el-pager li{min-width:36px;height:36px;margin:0 4px;border:1px solid var(--glass-border)!important;border-radius:10px!important;background:var(--glass-bg)!important;color:var(--el-text-color-secondary);box-shadow:none;font-weight:500;line-height:36px;transition:background-color .25s ease,border-color .25s ease,color .25s ease}.pagination-container[data-v-8a33a938] .btn-next:hover,.pagination-container[data-v-8a33a938] .btn-prev:hover,.pagination-container[data-v-8a33a938] .el-pager li:hover{border-color:var(--glass-border-hover)!important;background:var(--glass-header-bg)!important;color:var(--primary-color-accent)}.pagination-container[data-v-8a33a938] .el-pager li.is-active,.pagination-container[data-v-8a33a938] .el-pager li.is-active:hover{border-color:var(--primary-color)!important;background:var(--primary-color)!important;color:var(--el-color-white)!important;box-shadow:none!important}.pagination-right[data-v-8a33a938]{display:flex;align-items:center;gap:10px;position:absolute;right:0}.page-jump[data-v-8a33a938],.page-total[data-v-8a33a938]{color:var(--el-text-color-secondary);font-size:13px;white-space:nowrap}.page-jump[data-v-8a33a938]{display:flex;align-items:center;gap:6px}.page-jump .jump-input[data-v-8a33a938]{width:50px}.page-jump .jump-input[data-v-8a33a938] .el-input__wrapper{height:28px;padding:0 8px;border:1px solid var(--glass-border);border-radius:8px;background-color:var(--glass-bg)!important;box-shadow:none;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}.page-jump .jump-input[data-v-8a33a938] .el-input__inner{height:28px;color:var(--el-text-color-primary);line-height:28px;text-align:center}.pagination-container .refresh-btn[data-v-8a33a938]{width:36px;min-width:36px;height:36px;padding:0!important;border:1px solid var(--glass-border)!important;border-radius:10px!important;background:var(--glass-bg)!important;color:var(--primary-color-accent)!important;box-shadow:none;font-size:14px;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);transition:background-color .25s ease,border-color .25s ease,color .25s ease}.pagination-container .refresh-btn[data-v-8a33a938]:hover{border-color:var(--glass-border-hover)!important;background:var(--glass-header-bg)!important;color:var(--primary-color-accent)!important;box-shadow:none}.page-jump .jump-btn[data-v-8a33a938],.pagination-container .load-more[data-v-8a33a938]{border-color:var(--primary-color)!important;background:var(--primary-color)!important;color:var(--el-color-white)!important;box-shadow:none;font-weight:500;transition:background-color .25s ease,border-color .25s ease,color .25s ease}.pagination-container .load-more[data-v-8a33a938]{height:36px;padding:0 16px!important;border-radius:10px!important}.page-jump .jump-btn[data-v-8a33a938]{height:28px;padding:0 12px!important;border-radius:8px!important;font-size:12px;font-weight:600}.page-jump .jump-btn[data-v-8a33a938]:hover,.pagination-container .load-more[data-v-8a33a938]:hover{border-color:var(--el-color-primary-dark-2)!important;background:var(--el-color-primary-dark-2)!important;box-shadow:none!important}@media (max-width:768px){.pagination-container[data-v-8a33a938]{flex-direction:column;gap:8px;margin-top:14px;padding-bottom:10px}.pagination-center[data-v-8a33a938]{flex-wrap:wrap;justify-content:center;gap:6px;order:0}.pagination-container[data-v-8a33a938] .el-pager li{min-width:30px;height:30px;margin:0 2px;border-radius:8px!important;font-size:12px;line-height:30px}.pagination-container[data-v-8a33a938] .btn-next,.pagination-container[data-v-8a33a938] .btn-prev{display:none!important;position:static!important;min-width:30px!important;width:30px!important;height:30px!important;border-radius:8px!important;font-size:12px}.pagination-right[data-v-8a33a938]{position:static;width:100%;justify-content:center;gap:6px;order:1}.page-jump[data-v-8a33a938],.page-total[data-v-8a33a938]{font-size:12px}.page-jump .jump-input[data-v-8a33a938]{width:40px}.page-jump .jump-input[data-v-8a33a938] .el-input__wrapper{height:26px;padding:0 6px;border-radius:7px}.page-jump .jump-input[data-v-8a33a938] .el-input__inner{height:26px;font-size:12px;line-height:26px}.pagination-container .refresh-btn[data-v-8a33a938]{width:30px!important;min-width:30px!important;height:30px!important;border-radius:8px!important;font-size:12px!important}.pagination-container .load-more[data-v-8a33a938]{height:30px!important;min-height:30px!important;padding:0 10px!important;border-radius:8px!important;font-size:12px!important}.page-jump .jump-btn[data-v-8a33a938]{height:26px;padding:0 10px!important;border-radius:7px!important;font-size:11px}}.container[data-v-8a33a938]{background:var(--admin-container-bg-color);min-height:100vh;font-family:Arial,sans-serif;color:var(--admin-container-color);margin:0;padding:0}[data-v-8a33a938] .el-container,[data-v-8a33a938] .el-main{overflow:visible}[data-v-8a33a938] .el-dialog{border-radius:12px;background-color:var(--dialog-bg-color);box-shadow:var(--dialog-box-shadow)}@media (max-width:768px){.search-card[data-v-8a33a938] .el-input__inner{height:28px;font-size:.85em;width:50vw}.search-card[data-v-8a33a938] .el-input__wrapper{padding:0 12px}.search-card[data-v-8a33a938] .el-input__inner:focus{width:65vw}}.breadcrumb-container[data-v-8a33a938]{display:flex;align-items:center;justify-content:flex-start;gap:12px;padding:0 10px;margin-top:12px;margin-bottom:4px}.breadcrumb-view-toggle[data-v-8a33a938]{position:relative;height:32px;box-sizing:border-box;flex:0 0 auto;display:inline-flex;align-items:center;gap:2px;padding:2px;border:1px solid var(--glass-border);border-radius:10px;background:var(--glass-bg);box-shadow:none;overflow:hidden;transition:background-color .2s ease,border-color .2s ease}.breadcrumb-view-toggle[data-v-8a33a938]:hover{border-color:var(--glass-border-hover)}.breadcrumb-view-toggle[data-v-8a33a938]:before{content:"";position:absolute;top:2px;left:2px;width:28px;height:26px;border-radius:5px;background:color-mix(in srgb,var(--primary-color) 12%,transparent);transform:translateX(0);transition:transform .22s cubic-bezier(.4,0,.2,1);pointer-events:none}.breadcrumb-view-toggle.is-list[data-v-8a33a938]:before{transform:translateX(30px)}.breadcrumb-view-button[data-v-8a33a938]{position:relative;z-index:1;width:28px;height:26px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:none;border-radius:5px;color:var(--el-text-color-secondary);background:transparent;cursor:pointer;transition:color .16s ease}.breadcrumb-view-button[data-v-8a33a938]:hover{color:var(--primary-color-accent)}.breadcrumb-view-button.is-active[data-v-8a33a938]{color:var(--primary-color-accent);background:transparent;box-shadow:none}.breadcrumb-view-icon[data-v-8a33a938]{width:14px;height:14px}.breadcrumb-sort-dropdown[data-v-8a33a938]{flex:0 0 auto}.breadcrumb-sort-button[data-v-8a33a938]{width:44px;height:32px;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;padding:0;border:1px solid var(--glass-border);border-radius:10px;color:var(--el-text-color-secondary);background:var(--glass-bg);box-shadow:none;cursor:pointer;transition:color .16s ease,background-color .2s ease,border-color .2s ease}.breadcrumb-sort-button[data-v-8a33a938]:focus-visible,.breadcrumb-sort-button[data-v-8a33a938]:hover{border-color:var(--glass-border-hover);color:var(--primary-color-accent)}.breadcrumb-sort-button[data-v-8a33a938]:focus-visible{outline:none}.breadcrumb-sort-icon[data-v-8a33a938]{width:30px;height:18px;overflow:visible}.sort-field-glyph[data-v-8a33a938],.sort-order-glyph[data-v-8a33a938]{fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.sort-order-glyph[data-v-8a33a938]{stroke-width:1.9}@media (max-width:768px){.breadcrumb-container[data-v-8a33a938]{flex-direction:row;align-items:center;gap:8px;padding:0 5px;margin-top:8px;margin-bottom:2px}.breadcrumb-view-toggle[data-v-8a33a938]{height:28px;padding:2px;border-radius:8px}.breadcrumb-view-toggle[data-v-8a33a938]:before{width:24px;height:22px;border-radius:6px}.breadcrumb-view-toggle.is-list[data-v-8a33a938]:before{transform:translateX(26px)}.breadcrumb-view-button[data-v-8a33a938]{width:24px;height:22px;border-radius:6px}.breadcrumb-view-icon[data-v-8a33a938]{width:12px;height:12px}.breadcrumb-sort-button[data-v-8a33a938]{width:40px;height:28px;border-radius:8px}.breadcrumb-sort-icon[data-v-8a33a938]{width:27px;height:16px}}.stats-badge[data-v-8a33a938]{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:500;color:var(--el-text-color-secondary);background:var(--glass-bg);padding:4px 12px;border-radius:12px;border:1px solid var(--glass-border);box-shadow:none;transition:background-color .2s ease,border-color .2s ease;white-space:nowrap;flex-shrink:0;margin-left:auto}.stats-badge[data-v-8a33a938]:hover{border-color:var(--glass-border-hover)}.stats-badge-icon[data-v-8a33a938]{font-size:11px;opacity:.8}@media (max-width:768px){.stats-badge[data-v-8a33a938]{font-size:10px;padding:2px 6px;border-radius:8px}.stats-badge-icon[data-v-8a33a938]{font-size:9px}}.search-area[data-v-8a33a938]{margin-left:auto;margin-right:20px;display:flex;align-items:center;gap:8px}@media (max-width:768px){.search-area[data-v-8a33a938]{margin-right:0;margin-left:0;margin-top:10px;gap:6px}}.search-card[data-v-8a33a938]{display:flex;align-items:center}.search-card[data-v-8a33a938] .el-input{background:transparent!important;border:none!important;box-shadow:none!important}.search-card[data-v-8a33a938] .el-input__wrapper{padding:0 14px;border-radius:20px;background:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)}.search-card[data-v-8a33a938] .el-input__inner{width:280px;height:40px;font-size:1.2em;border:none;transition:width .3s;background:none}.search-card[data-v-8a33a938] .el-input__inner::-moz-placeholder{color:var(--el-text-color-placeholder);font-style:italic;font-weight:400;font-size:14px;opacity:.6;letter-spacing:.5px;-moz-transition:all .3s ease;transition:all .3s ease}.search-card[data-v-8a33a938] .el-input__inner::placeholder{color:var(--el-text-color-placeholder);font-style:italic;font-weight:400;font-size:14px;opacity:.6;letter-spacing:.5px;transition:all .3s ease}.search-card[data-v-8a33a938] .el-input__inner:focus::-moz-placeholder{opacity:.4;transform:translateX(5px)}.search-card[data-v-8a33a938] .el-input__inner:focus::placeholder{opacity:.4;transform:translateX(5px)}@media (max-width:768px){.search-card[data-v-8a33a938] .el-input__wrapper{padding:0 12px}.search-card[data-v-8a33a938] .el-input__inner{width:45vw;height:32px;font-size:1em}}.search-card[data-v-8a33a938] .el-input__inner:focus{width:350px}@media (max-width:768px){.search-card[data-v-8a33a938] .el-input__inner:focus{width:55vw}}.search-icon[data-v-8a33a938]{cursor:pointer;color:var(--admin-container-color);transition:all .3s ease;font-size:1.3em;opacity:0;transform:scale(.8);pointer-events:none}.search-card:focus-within .search-icon[data-v-8a33a938]{opacity:1;transform:scale(1);pointer-events:auto}.search-card:focus-within .search-icon[data-v-8a33a938]:hover{color:var(--primary-color-accent);transform:scale(1.2)}.search-card[data-v-8a33a938] .el-input__suffix{display:flex;align-items:center;right:10px}.main-container[data-v-8a33a938]{display:flex;flex-direction:column;padding:20px 60px;min-height:calc(100vh - 80px);transition:padding-bottom .24s ease}.main-container.has-batch-toolbar[data-v-8a33a938]{padding-bottom:72px}@media (max-width:768px){.main-container[data-v-8a33a938]{margin-top:12vh;padding:16px 10px}.main-container.has-batch-toolbar[data-v-8a33a938]{padding-bottom:86px}}.content[data-v-8a33a938]{display:grid;grid-template-columns:repeat(5,1fr);grid-template-rows:repeat(3,1fr);gap:20px;padding:10px;padding-bottom:0;flex-grow:1;min-height:80vh}.content.is-drag-selecting[data-v-8a33a938],.list-view.is-drag-selecting[data-v-8a33a938]{cursor:crosshair}.content.is-drag-selecting[data-v-8a33a938] .img-card:hover,.content.is-drag-selecting[data-v-8a33a938] .img-card:hover .file-icon,.content.is-drag-selecting[data-v-8a33a938] .img-card:hover .folder-icon-svg,.content.is-drag-selecting[data-v-8a33a938] .img-card:hover .image-preview,.content.is-drag-selecting[data-v-8a33a938] .img-card:hover .video-preview{transform:none}.content.is-drag-selecting[data-v-8a33a938] .image-preview:hover{opacity:1}.content.is-drag-selecting[data-v-8a33a938] .action-btn:hover{transform:none;background:hsla(0,0%,100%,.15)}.list-view.is-drag-selecting[data-v-8a33a938] .list-item:hover{background:transparent}.list-view.is-drag-selecting[data-v-8a33a938] .list-action-btn:hover{color:var(--el-text-color-regular);background:var(--el-fill-color)}.list-view.is-drag-selecting[data-v-8a33a938] .list-action-danger:hover{background:var(--el-fill-color)}.empty-state[data-v-8a33a938]{grid-column:1/-1;grid-row:1/-1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;color:var(--admin-container-color);opacity:.6}.empty-icon[data-v-8a33a938]{font-size:64px;margin-bottom:20px;color:var(--admin-container-color);opacity:.3}.empty-text[data-v-8a33a938]{font-size:18px;font-weight:500;margin:0 0 8px 0}.empty-hint[data-v-8a33a938]{font-size:14px;margin:0;opacity:.7}.list-empty[data-v-8a33a938]{padding:80px 20px}@media (max-width:768px){.content[data-v-8a33a938]{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:none;gap:8px;margin-top:15px;padding:0;flex-grow:0;min-height:auto;align-content:start;align-items:start}}.list-view[data-v-8a33a938]{display:flex;flex-direction:column;gap:0;background:var(--admin-dashboard-imgcard-bg-color);border:1px solid var(--glass-border);border-radius:12px;overflow-x:auto;overflow-y:visible;box-shadow:var(--admin-dashboard-imgcard-shadow);margin-top:15px}.list-header[data-v-8a33a938]{display:grid;grid-template-columns:50px 60px minmax(180px,1fr) 130px 100px 110px 130px 80px 100px 120px;padding:12px 20px;background:var(--admin-dashboard-stats-bg);font-weight:600;font-size:13px;color:var(--el-text-color-secondary);border-bottom:1px solid var(--el-border-color-lighter);min-width:-moz-fit-content;min-width:fit-content}.list-col[data-v-8a33a938]{display:flex;align-items:center}.list-col-checkbox[data-v-8a33a938]{justify-content:center;min-width:40px}.list-col-checkbox[data-v-8a33a938] .el-checkbox{--el-checkbox-input-width:16px;--el-checkbox-input-height:16px}@media (max-width:768px){.list-header[data-v-8a33a938]{display:none}}.question-icon[data-v-8a33a938]{margin:0 3px}.breadcrumb[data-v-8a33a938]{height:32px;box-sizing:border-box;display:flex;align-items:center;padding:0 12px;background-color:var(--glass-bg);border:1px solid var(--glass-border);border-radius:10px;font-size:.95em;box-shadow:none;cursor:pointer;transition:background-color .2s ease,border-color .2s ease}.breadcrumb[data-v-8a33a938]:hover{border-color:var(--glass-border-hover)}.breadcrumb-home-icon[data-v-8a33a938]{font-size:14px;color:var(--el-text-color-secondary);cursor:pointer;transition:color .2s ease}.breadcrumb-home-icon[data-v-8a33a938]:hover{color:var(--primary-color-accent)}[data-v-8a33a938] .el-breadcrumb__item{cursor:pointer}[data-v-8a33a938] .el-breadcrumb,[data-v-8a33a938] .el-breadcrumb__inner,[data-v-8a33a938] .el-breadcrumb__item,[data-v-8a33a938] .el-breadcrumb__separator{display:inline-flex;align-items:center;height:100%;line-height:32px}[data-v-8a33a938] .el-breadcrumb__inner{cursor:pointer}[data-v-8a33a938] .el-breadcrumb__inner:hover{color:var(--primary-color-accent)}.mobile-directory-trigger[data-v-8a33a938]{display:none;align-items:center;flex:1 1 auto;min-width:0;height:28px;box-sizing:border-box;gap:6px;padding:0 10px;background:var(--glass-bg);border-radius:8px;border:1px solid var(--glass-border);cursor:pointer;transition:background-color .2s ease,border-color .2s ease}.mobile-directory-trigger[data-v-8a33a938]:active{border-color:var(--glass-border-hover)}.breadcrumb-view-toggle[data-v-8a33a938],.breadcrumb[data-v-8a33a938],.mobile-directory-trigger[data-v-8a33a938],.refresh-btn[data-v-8a33a938],.stats-badge[data-v-8a33a938]{backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}.mobile-directory-icon[data-v-8a33a938]{flex:0 0 auto;font-size:12px;color:var(--primary-color-accent)}.mobile-directory-path[data-v-8a33a938]{display:block;flex:1 1 auto;min-width:0;font-size:12px;font-weight:500;line-height:1;color:var(--el-text-color-primary);max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mobile-directory-arrow[data-v-8a33a938]{flex:0 0 auto;font-size:8px;color:var(--el-text-color-secondary)}.desktop-only[data-v-8a33a938]{display:block}@media (max-width:768px){.mobile-directory-trigger[data-v-8a33a938]{display:flex}.desktop-only[data-v-8a33a938]{display:none!important}.breadcrumb-container[data-v-8a33a938]{padding:0;margin-left:0;width:100%;box-sizing:border-box}}.drag-select-overlay[data-v-8a33a938]{position:fixed;background:rgba(24,144,255,.1);border:1px solid rgba(24,144,255,.6);pointer-events:none;z-index:9999;border-radius:2px}.sort-dropdown-menu[data-v-8a33a938]{min-width:205px}.sort-order-wrapper[data-v-8a33a938]{padding:0 12px;text-align:center}.sort-divider[data-v-8a33a938]{margin:8px 0!important}.sort-dropdown-menu[data-v-8a33a938] .el-dropdown-menu__item{justify-content:space-between}.sort-dropdown-menu[data-v-8a33a938] .el-dropdown-menu__item.is-selected{color:var(--primary-color-accent)}.sort-field-check[data-v-8a33a938]{width:12px;margin-left:16px} \ No newline at end of file diff --git a/frontend-dist/css/787.176e498b.css.gz b/frontend-dist/css/787.176e498b.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..20d3e0e9695fe291cd29b3b096b7a845cda241a8 GIT binary patch literal 15953 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 literal 0 HcmV?d00001 diff --git a/frontend-dist/css/860.3febd367.css b/frontend-dist/css/860.3febd367.css new file mode 100644 index 0000000..ae7c256 --- /dev/null +++ b/frontend-dist/css/860.3febd367.css @@ -0,0 +1 @@ +.el-radio{--el-radio-font-size:var(--el-font-size-base);--el-radio-text-color:var(--el-text-color-regular);--el-radio-font-weight:var(--el-font-weight-primary);--el-radio-input-height:14px;--el-radio-input-width:14px;--el-radio-input-border-radius:var(--el-border-radius-circle);--el-radio-input-bg-color:var(--el-fill-color-blank);--el-radio-input-border:var(--el-border);--el-radio-input-border-color:var(--el-border-color);--el-radio-input-border-color-hover:var(--el-color-primary);align-items:center;color:var(--el-radio-text-color);cursor:pointer;display:inline-flex;font-size:var(--el-font-size-base);font-weight:var(--el-radio-font-weight);height:32px;margin-right:30px;outline:none;position:relative;-webkit-user-select:none;user-select:none;white-space:nowrap}.el-radio.el-radio--large{height:40px}.el-radio.el-radio--small{height:24px}.el-radio.is-bordered{border:var(--el-border);border-radius:var(--el-border-radius-base);box-sizing:border-box;padding:0 15px 0 9px}.el-radio.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-radio.is-bordered.is-disabled{border-color:var(--el-border-color-lighter);cursor:not-allowed}.el-radio.is-bordered.el-radio--large{border-radius:var(--el-border-radius-base);padding:0 19px 0 11px}.el-radio.is-bordered.el-radio--large .el-radio__label{font-size:var(--el-font-size-base)}.el-radio.is-bordered.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.is-bordered.el-radio--small{border-radius:var(--el-border-radius-base);padding:0 11px 0 7px}.el-radio.is-bordered.el-radio--small .el-radio__label{font-size:12px}.el-radio.is-bordered.el-radio--small .el-radio__inner{height:12px;width:12px}.el-radio:last-child{margin-right:0}.el-radio__input{cursor:pointer;display:inline-flex;outline:none;position:relative;vertical-align:middle;white-space:nowrap}.el-radio__input.is-disabled .el-radio__inner{border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled .el-radio__inner:after{background-color:var(--el-disabled-bg-color);cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled.is-checked .el-radio__inner:after{background-color:var(--el-text-color-placeholder)}.el-radio__input.is-disabled+span.el-radio__label{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{background:var(--el-color-primary);border-color:var(--el-color-primary)}.el-radio__input.is-checked .el-radio__inner:after{background-color:var(--el-color-white);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:var(--el-color-primary)}.el-radio__input.is-focus .el-radio__inner{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner{background-color:var(--el-radio-input-bg-color);border:var(--el-radio-input-border);border-radius:var(--el-radio-input-border-radius);box-sizing:border-box;cursor:pointer;display:inline-block;height:var(--el-radio-input-height);position:relative;width:var(--el-radio-input-width)}.el-radio__inner:hover{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner:after{border-radius:var(--el-radio-input-border-radius);content:"";height:4px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%) scale(0);transition:transform .15s ease-in;width:4px}.el-radio__original{bottom:0;left:0;margin:0;opacity:0;outline:none;position:absolute;right:0;top:0;z-index:-1}.el-radio__original:focus-visible+.el-radio__inner{border-radius:var(--el-radio-input-border-radius);outline:2px solid var(--el-radio-input-border-color-hover);outline-offset:1px}.el-radio:focus:not(:focus-visible):not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{box-shadow:0 0 2px 2px var(--el-radio-input-border-color-hover)}.el-radio__label{font-size:var(--el-radio-font-size);padding-left:8px}.el-radio.el-radio--large .el-radio__label{font-size:14px}.el-radio.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.el-radio--small .el-radio__label{font-size:12px}.el-radio.el-radio--small .el-radio__inner{height:12px;width:12px}.el-overlay.is-drawer{overflow:hidden}.el-drawer{--el-drawer-bg-color:var(--el-dialog-bg-color,var(--el-bg-color));--el-drawer-padding-primary:var(--el-dialog-padding-primary,20px);--el-drawer-dragger-size:8px;background-color:var(--el-drawer-bg-color);box-shadow:var(--el-box-shadow-dark);box-sizing:border-box;display:flex;flex-direction:column;position:absolute;transition:all var(--el-transition-duration)}.el-drawer .btt,.el-drawer .ltr,.el-drawer .rtl,.el-drawer .ttb{transform:translate(0)}.el-drawer__sr-focus:focus{outline:none!important}.el-drawer__header{align-items:center;color:var(--el-text-color-primary);display:flex;margin-bottom:32px;overflow:hidden;padding:var(--el-drawer-padding-primary);padding-bottom:0}.el-drawer__header>:first-child{flex:1}.el-drawer__title{flex:1;font-size:16px;line-height:inherit;margin:0}.el-drawer__footer{overflow:hidden;padding:var(--el-drawer-padding-primary);padding-top:10px;text-align:right}.el-drawer__close-btn{background-color:transparent;border:none;color:inherit;cursor:pointer;display:inline-flex;font-size:var(--el-font-size-extra-large);outline:none}.el-drawer__close-btn:focus i,.el-drawer__close-btn:hover i{color:var(--el-color-primary)}.el-drawer__body{flex:1;overflow:auto;padding:var(--el-drawer-padding-primary)}.el-drawer__body>*{box-sizing:border-box}.el-drawer.is-dragging{transition:none}.el-drawer__dragger{-webkit-user-select:none;user-select:none}.el-drawer__dragger,.el-drawer__dragger:before{background-color:transparent;position:absolute;transition:all .2s}.el-drawer__dragger:before{content:""}.el-drawer__dragger:hover:before{background-color:var(--el-color-primary)}.el-drawer.ltr,.el-drawer.rtl{bottom:0;height:100%;top:0}.el-drawer.ltr>.el-drawer__dragger,.el-drawer.rtl>.el-drawer__dragger{bottom:0;cursor:ew-resize;height:100%;top:0;width:var(--el-drawer-dragger-size)}.el-drawer.ltr>.el-drawer__dragger:before,.el-drawer.rtl>.el-drawer__dragger:before{bottom:0;top:0;width:3px}.el-drawer.btt,.el-drawer.ttb{left:0;right:0;width:100%}.el-drawer.btt>.el-drawer__dragger,.el-drawer.ttb>.el-drawer__dragger{cursor:ns-resize;height:var(--el-drawer-dragger-size);left:0;right:0;width:100%}.el-drawer.btt>.el-drawer__dragger:before,.el-drawer.ttb>.el-drawer__dragger:before{height:3px;left:0;right:0}.el-drawer.ltr{left:0}.el-drawer.ltr>.el-drawer__dragger{right:0}.el-drawer.ltr>.el-drawer__dragger:before{right:-2px}.el-drawer.rtl{right:0}.el-drawer.rtl>.el-drawer__dragger{left:0}.el-drawer.rtl>.el-drawer__dragger:before{left:-2px}.el-drawer.ttb{top:0}.el-drawer.ttb>.el-drawer__dragger{bottom:0}.el-drawer.ttb>.el-drawer__dragger:before{bottom:-2px}.el-drawer.btt{bottom:0}.el-drawer.btt>.el-drawer__dragger{top:0}.el-drawer.btt>.el-drawer__dragger:before{top:-2px}.el-modal-drawer.is-penetrable{pointer-events:none}.el-modal-drawer.is-penetrable .el-drawer{pointer-events:auto}.el-drawer-fade-enter-active,.el-drawer-fade-leave-active{transition:all var(--el-transition-duration)}.el-drawer-fade-enter-active,.el-drawer-fade-enter-from,.el-drawer-fade-enter-to,.el-drawer-fade-leave-active,.el-drawer-fade-leave-from,.el-drawer-fade-leave-to{overflow:hidden!important}.el-drawer-fade-enter-from,.el-drawer-fade-leave-to{background-color:transparent!important}.el-drawer-fade-enter-from .rtl,.el-drawer-fade-leave-to .rtl{transform:translateX(100%)}.el-drawer-fade-enter-from .ltr,.el-drawer-fade-leave-to .ltr{transform:translateX(-100%)}.el-drawer-fade-enter-from .ttb,.el-drawer-fade-leave-to .ttb{transform:translateY(-100%)}.el-drawer-fade-enter-from .btt,.el-drawer-fade-leave-to .btt{transform:translateY(100%)}.el-radio-group{align-items:center;display:inline-flex;flex-wrap:wrap;font-size:0}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transform-origin:center top;transition:var(--el-transition-md-fade)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transform-origin:center bottom;transition:var(--el-transition-md-fade)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transform-origin:top left;transition:var(--el-transition-md-fade)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-enter-active,.el-collapse-transition-leave-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-tree{--el-tree-node-content-height:26px;--el-tree-node-hover-bg-color:var(--el-fill-color-light);--el-tree-text-color:var(--el-text-color-regular);--el-tree-expand-icon-color:var(--el-text-color-placeholder);background:var(--el-fill-color-blank);color:var(--el-tree-text-color);cursor:default;font-size:var(--el-font-size-base);position:relative}.el-tree__empty-block{height:100%;min-height:60px;position:relative;text-align:center;width:100%}.el-tree__empty-text{color:var(--el-text-color-secondary);font-size:var(--el-font-size-base);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.el-tree__drop-indicator{background-color:var(--el-color-primary);height:1px;left:0;position:absolute;right:0}.el-tree-node{outline:none;white-space:nowrap}.el-tree-node:focus>.el-tree-node__content{background-color:var(--el-tree-node-hover-bg-color)}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:var(--el-color-primary);color:#fff}.el-tree-node__content{--el-checkbox-height:var(--el-tree-node-content-height);align-items:center;cursor:pointer;display:flex;height:var(--el-tree-node-content-height)}.el-tree-node__content>.el-tree-node__expand-icon{box-sizing:content-box;padding:6px}.el-tree-node__content>label.el-checkbox{margin-right:8px}.el-tree-node__content:hover{background-color:var(--el-tree-node-hover-bg-color)}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{color:var(--el-tree-expand-icon-color);cursor:pointer;font-size:12px;transform:rotate(0deg);transition:transform var(--el-transition-duration) ease-in-out}.el-tree-node__expand-icon.expanded{transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default;visibility:hidden}.el-tree-node__expand-icon.is-hidden{visibility:hidden}.el-tree-node__loading-icon{color:var(--el-tree-expand-icon-color);font-size:var(--el-font-size-base);margin-right:8px}.el-tree-node>.el-tree-node__children{background-color:transparent;overflow:hidden}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:var(--el-color-primary-light-9)}.el-text{--el-text-font-size:var(--el-font-size-base);--el-text-color:var(--el-text-color-regular);align-self:center;color:var(--el-text-color);font-size:var(--el-text-font-size);margin:0;overflow-wrap:break-word;padding:0}.el-text.is-truncated{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-text.is-line-clamp{display:-webkit-inline-box;-webkit-box-orient:vertical;overflow:hidden}.el-text--large{--el-text-font-size:var(--el-font-size-medium)}.el-text--default{--el-text-font-size:var(--el-font-size-base)}.el-text--small{--el-text-font-size:var(--el-font-size-extra-small)}.el-text.el-text--primary{--el-text-color:var(--el-color-primary)}.el-text.el-text--success{--el-text-color:var(--el-color-success)}.el-text.el-text--warning{--el-text-color:var(--el-color-warning)}.el-text.el-text--danger{--el-text-color:var(--el-color-danger)}.el-text.el-text--error{--el-text-color:var(--el-color-error)}.el-text.el-text--info{--el-text-color:var(--el-color-info)}.el-text>.el-icon{vertical-align:-2px}.el-popover{--el-popover-bg-color:var(--el-bg-color-overlay);--el-popover-font-size:var(--el-font-size-base);--el-popover-border-color:var(--el-border-color-lighter);--el-popover-padding:12px;--el-popover-padding-large:18px 20px;--el-popover-title-font-size:16px;--el-popover-title-text-color:var(--el-text-color-primary);--el-popover-border-radius:4px}.el-popover.el-popper{background:var(--el-popover-bg-color);border:1px solid var(--el-popover-border-color);border-radius:var(--el-popover-border-radius);box-shadow:var(--el-box-shadow-light);box-sizing:border-box;color:var(--el-text-color-regular);font-size:var(--el-popover-font-size);line-height:1.4;min-width:150px;overflow-wrap:break-word;padding:var(--el-popover-padding);z-index:var(--el-index-popper)}.el-popover.el-popper--plain{padding:var(--el-popover-padding-large)}.el-popover__title{color:var(--el-popover-title-text-color);font-size:var(--el-popover-title-font-size);line-height:1;margin-bottom:12px}.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing){outline-width:0}.el-popover.el-popper.is-dark{--el-popover-bg-color:var(--el-text-color-primary);--el-popover-border-color:var(--el-text-color-primary);--el-popover-title-text-color:var(--el-bg-color);color:var(--el-bg-color)}.el-popover.el-popper:focus,.el-popover.el-popper:focus:active{outline-width:0}.el-radio-button{--el-radio-button-checked-bg-color:var(--el-color-primary);--el-radio-button-checked-text-color:var(--el-color-white);--el-radio-button-checked-border-color:var(--el-color-primary);--el-radio-button-disabled-checked-fill:var(--el-border-color-extra-light);display:inline-block;outline:none;position:relative}.el-radio-button__inner{-webkit-appearance:none;background:var(--el-button-bg-color,var(--el-fill-color-blank));border-radius:0;box-sizing:border-box;color:var(--el-button-text-color,var(--el-text-color-regular));cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);font-weight:var(--el-button-font-weight,var(--el-font-weight-primary));line-height:1;margin:0;outline:var(--el-border);padding:8px 15px;position:relative;text-align:center;transition:var(--el-transition-all);-webkit-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-radio-button__inner.is-round{padding:8px 15px}.el-radio-button__inner:hover{color:var(--el-color-primary)}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);box-shadow:none!important}.el-radio-button.is-active .el-radio-button__original-radio:not(:disabled)+.el-radio-button__inner{background-color:var(--el-radio-button-checked-bg-color,var(--el-color-primary));border-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));box-shadow:-1px 0 0 0 var(--el-radio-button-checked-border-color,var(--el-color-primary));color:var(--el-radio-button-checked-text-color,var(--el-color-white))}.el-radio-button__original-radio{opacity:0;outline:none;position:absolute;z-index:-1}.el-radio-button__original-radio:focus-visible+.el-radio-button__inner{border-left:var(--el-border);border-left-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));border-radius:var(--el-border-radius-base);box-shadow:none;outline:2px solid var(--el-radio-button-checked-border-color);outline-offset:1px;z-index:2}.el-radio-button__original-radio:disabled+.el-radio-button__inner{background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));background-image:none;border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none;color:var(--el-disabled-text-color);cursor:not-allowed}.el-radio-button__original-radio:disabled:checked+.el-radio-button__inner{background-color:var(--el-radio-button-disabled-checked-fill)}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:var(--el-border-radius-base)}.el-radio-button--large .el-radio-button__inner{border-radius:0;font-size:var(--el-font-size-base);padding:12px 19px}.el-radio-button--large .el-radio-button__inner.is-round{padding:12px 19px}.el-radio-button--small .el-radio-button__inner{border-radius:0;font-size:12px;padding:5px 11px}.el-radio-button--small .el-radio-button__inner.is-round{padding:5px 11px}.directory-tree-picker[data-v-62eab69a],.drawer-trigger-wrapper[data-v-62eab69a],.popover-trigger-wrapper[data-v-62eab69a]{display:inline-block}.tree-container[data-v-62eab69a]{min-height:200px;max-height:400px;overflow-y:auto;padding:8px}.directory-tree[data-v-62eab69a]{background:transparent;--el-tree-node-hover-bg-color:var(--el-fill-color-light)}.directory-tree[data-v-62eab69a] .el-tree-node__content{height:44px;padding:0 8px;border-radius:8px;transition:all .2s ease}.directory-tree[data-v-62eab69a] .el-tree-node__content:hover{background-color:var(--el-fill-color-light)}.directory-tree[data-v-62eab69a] .el-tree-node.is-current>.el-tree-node__content{background-color:var(--el-color-primary-light-9)}.tree-node[data-v-62eab69a]{display:flex;align-items:center;gap:8px;padding:4px 0;width:100%;min-height:36px}.tree-node.is-current[data-v-62eab69a]{color:var(--el-color-primary);font-weight:500}.folder-icon[data-v-62eab69a]{color:var(--el-color-warning);font-size:16px;flex-shrink:0}.node-label[data-v-62eab69a]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mobile-tree[data-v-62eab69a] .el-tree-node__content{height:48px;padding:0 12px}.mobile-tree .tree-node[data-v-62eab69a]{min-height:40px}.error-state[data-v-62eab69a]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px 20px;text-align:center}.error-icon[data-v-62eab69a]{font-size:32px;color:var(--el-color-danger)}.error-text[data-v-62eab69a]{color:var(--el-text-color-secondary);font-size:14px}.tree-container[data-v-62eab69a] .el-loading-mask{border-radius:8px}.settings-dialog-scope .dialog-section{margin-bottom:24px;background:var(--dialog-section-bg-color,var(--el-fill-color-lighter));border-radius:12px;padding:16px;border:1px solid var(--el-border-color-lighter)}.settings-dialog-scope .section-header{display:flex;align-items:center;gap:8px;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--el-border-color-lighter)}.settings-dialog-scope .section-title{font-size:15px;font-weight:600;color:var(--el-text-color-primary)}.settings-dialog-scope .inline-help-icon,.settings-dialog-scope .section-help-icon{color:var(--el-text-color-secondary);cursor:pointer;transition:color .2s}.settings-dialog-scope .section-help-icon{font-size:14px}.settings-dialog-scope .inline-help-icon{font-size:13px;margin-left:6px}.settings-dialog-scope .inline-help-icon:hover,.settings-dialog-scope .section-help-icon:hover{color:var(--el-color-primary)}.settings-dialog-scope .section-content{display:flex;flex-direction:column;gap:16px}.settings-dialog-scope .radio-card-group{display:flex;flex-wrap:wrap;gap:10px}.settings-dialog-scope .radio-card-group .radio-card{margin-right:0;padding:10px 16px;border-radius:8px;background:var(--dialog-control-bg-color,var(--el-bg-color));border:1px solid var(--el-border-color-lighter);transition:all .2s ease}.settings-dialog-scope .radio-card-group .radio-card:hover{border-color:var(--el-color-primary-light-5)}.settings-dialog-scope .radio-card-group .radio-card.is-checked{background:var(--el-color-primary-light-9);border-color:var(--el-color-primary)}html.dark .settings-dialog-scope .radio-card-group .radio-card.is-checked{background:color-mix(in srgb,var(--primary-color) 38%,transparent);border-color:var(--el-color-primary-light-5);color:var(--el-text-color-primary)}html.dark .settings-dialog-scope .radio-card-group .radio-card.is-checked .el-radio__label,html.dark .settings-dialog-scope .radio-card-group .radio-card.is-checked .radio-icon{color:var(--el-text-color-primary)!important}.settings-dialog-scope .radio-card-group .el-radio__input{display:none}.settings-dialog-scope .radio-card-group .el-radio__label{padding-left:0;font-weight:500;display:flex;align-items:center;gap:8px}.settings-dialog-scope .setting-item{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--dialog-control-bg-color,var(--el-bg-color));border-radius:8px;border:1px solid var(--el-border-color-lighter)}.settings-dialog-scope .setting-label{font-size:14px;font-weight:500;color:var(--el-text-color-primary)}.settings-dialog-scope .setting-input{width:60%;max-width:250px}.settings-dialog-scope .dialog-action{display:flex;justify-content:flex-end;padding-top:16px}.settings-dialog-scope .confirm-btn{min-width:100px;border-radius:8px}.settings-dialog-scope .radio-card-group.grid-2x2{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.settings-dialog-scope .radio-card-group.grid-2x2 .radio-card{width:100%;box-sizing:border-box;display:flex;align-items:center;justify-content:center;gap:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.settings-dialog-scope .radio-icon{font-size:14px;opacity:.8;width:20px;text-align:center;display:inline-block}.settings-dialog-scope .radio-card.is-checked .radio-icon{opacity:1}@media (min-width:769px){.settings-dialog-scope .radio-card-group.grid-2x2 .radio-card{justify-content:flex-start;padding-left:20px}}@media (max-width:768px){.settings-dialog-scope .dialog-section{padding:12px;overflow:hidden}.settings-dialog-scope .radio-card-group{flex-direction:column}.settings-dialog-scope .radio-card-group .radio-card{width:100%;text-align:center}.settings-dialog-scope .setting-item{flex-direction:column;align-items:flex-start;gap:10px}.settings-dialog-scope .setting-input{width:100%!important;max-width:none!important}.settings-dialog-scope .radio-card-group.grid-2x2{grid-template-columns:repeat(2,1fr);gap:8px}.settings-dialog-scope .radio-card-group.grid-2x2 .radio-card{padding:10px 12px;font-size:13px;justify-content:center}}.el-progress{align-items:center;display:flex;line-height:1;position:relative}.el-progress__text{color:var(--el-text-color-regular);font-size:14px;line-height:1;margin-left:5px;min-width:50px}.el-progress__text i{display:block;vertical-align:middle}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{left:0;margin:0;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:100%}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{display:inline-block;vertical-align:middle}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{display:block;margin-right:0;padding-right:0}.el-progress--text-inside .el-progress-bar{margin-right:0;padding-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:var(--el-color-success)}.el-progress.is-success .el-progress__text{color:var(--el-color-success)}.el-progress.is-warning .el-progress-bar__inner{background-color:var(--el-color-warning)}.el-progress.is-warning .el-progress__text{color:var(--el-color-warning)}.el-progress.is-exception .el-progress-bar__inner{background-color:var(--el-color-danger)}.el-progress.is-exception .el-progress__text{color:var(--el-color-danger)}.el-progress-bar{box-sizing:border-box;flex-grow:1}.el-progress-bar__outer{background-color:var(--el-border-color-lighter);border-radius:100px;height:6px;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{background-color:var(--el-color-primary);border-radius:100px;height:100%;left:0;line-height:1;position:absolute;text-align:right;top:0;transition:width .6s ease;white-space:nowrap}.el-progress-bar__inner:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-progress-bar__inner--indeterminate{animation:indeterminate 3s infinite;transform:translateZ(0)}.el-progress-bar__inner--striped{background-image:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 0,transparent 50%,rgba(0,0,0,.1) 0,rgba(0,0,0,.1) 75%,transparent 0,transparent);background-size:1.25em 1.25em}.el-progress-bar__inner--striped.el-progress-bar__inner--striped-flow{animation:striped-flow 3s linear infinite}.el-progress-bar__innerText{color:#fff;display:inline-block;font-size:12px;margin:0 5px;vertical-align:middle}@keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}@keyframes indeterminate{0%{left:-100%}to{left:100%}}@keyframes striped-flow{0%{background-position:-100%}to{background-position:100%}}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button:first-child:last-child{border-bottom-left-radius:var(--el-border-radius-base);border-bottom-right-radius:var(--el-border-radius-base);border-top-left-radius:var(--el-border-radius-base);border-top-right-radius:var(--el-border-radius-base)}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:var(--el-border-radius-round)}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button.is-active,.el-button-group>.el-button:active,.el-button-group>.el-button:focus,.el-button-group>.el-button:hover{z-index:1}.el-button-group--horizontal{display:inline-block;vertical-align:middle}.el-button-group--horizontal:after,.el-button-group--horizontal:before{content:"";display:table}.el-button-group--horizontal:after{clear:both}.el-button-group--horizontal>.el-button{float:left;position:relative}.el-button-group--horizontal>.el-button:first-child{border-bottom-right-radius:0;border-top-right-radius:0}.el-button-group--horizontal>.el-button:last-child{border-bottom-left-radius:0;border-top-left-radius:0}.el-button-group--horizontal>.el-button:not(:last-child){margin-right:-1px}.el-button-group--horizontal .el-button--primary:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--primary:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--primary:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--success:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--success:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--success:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--warning:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--warning:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--warning:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--danger:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--danger:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--danger:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--info:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--info:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--info:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal>.el-dropdown>.el-button{border-bottom-left-radius:0;border-left-color:var(--el-button-divide-border-color);border-top-left-radius:0}.el-button-group--vertical{align-items:stretch;display:inline-flex;flex-direction:column}.el-button-group--vertical>.el-button{margin-top:-1px}.el-button-group--vertical>.el-button:first-child{border-bottom-left-radius:0;border-bottom-right-radius:0}.el-button-group--vertical>.el-button:last-child{border-top-left-radius:0;border-top-right-radius:0}.el-button-group--vertical>.el-dropdown{margin-top:-1px}.el-button-group--vertical>.el-dropdown>.el-button{border-left-color:var(--el-button-divide-border-color);border-top-left-radius:0;border-top-right-radius:0}.el-button-group--vertical .el-button--primary:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--primary:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--primary:not(:first-child):not(:last-child){border-bottom-color:var(--el-button-divide-border-color);border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--success:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--success:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--success:not(:first-child):not(:last-child){border-bottom-color:var(--el-button-divide-border-color);border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--warning:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--warning:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--warning:not(:first-child):not(:last-child){border-bottom-color:var(--el-button-divide-border-color);border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--danger:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--danger:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--danger:not(:first-child):not(:last-child){border-bottom-color:var(--el-button-divide-border-color);border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--info:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--info:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--info:not(:first-child):not(:last-child){border-bottom-color:var(--el-button-divide-border-color);border-top-color:var(--el-button-divide-border-color)}.el-dropdown{--el-dropdown-menu-box-shadow:var(--el-box-shadow-light);--el-dropdown-menuItem-hover-fill:var(--el-color-primary-light-9);--el-dropdown-menuItem-hover-color:var(--el-color-primary);--el-dropdown-menu-index:10;color:var(--el-text-color-regular);display:inline-flex;font-size:var(--el-font-size-base);line-height:1;position:relative;vertical-align:top}.el-dropdown.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-dropdown__popper{--el-dropdown-menu-box-shadow:var(--el-box-shadow-light);--el-dropdown-menuItem-hover-fill:var(--el-color-primary-light-9);--el-dropdown-menuItem-hover-color:var(--el-color-primary);--el-dropdown-menu-index:10}.el-dropdown__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-dropdown-menu-box-shadow)}.el-dropdown__popper.el-popper,.el-dropdown__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-dropdown__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-dropdown__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-dropdown__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-dropdown__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-dropdown__popper .el-dropdown-menu{border:none}.el-dropdown__popper .el-dropdown__popper-selfdefine{outline:none}.el-dropdown__popper .el-scrollbar__bar{z-index:calc(var(--el-dropdown-menu-index) + 1)}.el-dropdown__popper .el-dropdown__list{box-sizing:border-box;list-style:none;margin:0;padding:0}.el-dropdown .el-dropdown__caret-button{align-items:center;border-left:none;display:inline-flex;justify-content:center;padding-left:0;padding-right:0;width:32px}.el-dropdown .el-dropdown__caret-button>span{display:inline-flex}.el-dropdown .el-dropdown__caret-button:before{background:var(--el-overlay-color-lighter);bottom:-1px;content:"";display:block;left:0;position:absolute;top:-1px;width:1px}.el-dropdown .el-dropdown__caret-button.el-button:before{background:var(--el-border-color);opacity:.5}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{font-size:inherit;padding-left:0}.el-dropdown .el-dropdown-selfdefine{outline:none}.el-dropdown--large .el-dropdown__caret-button{width:40px}.el-dropdown--small .el-dropdown__caret-button{width:24px}.el-dropdown-menu{background-color:var(--el-bg-color-overlay);border:none;border-radius:var(--el-border-radius-base);box-shadow:none;left:0;list-style:none;margin:0;padding:5px 0;position:relative;top:0;z-index:var(--el-dropdown-menu-index)}.el-dropdown-menu__item{align-items:center;color:var(--el-text-color-regular);cursor:pointer;display:flex;font-size:var(--el-font-size-base);line-height:22px;list-style:none;margin:0;outline:none;padding:5px 16px;white-space:nowrap}.el-dropdown-menu__item:not(.is-disabled):focus,.el-dropdown-menu__item:not(.is-disabled):hover{background-color:var(--el-dropdown-menuItem-hover-fill);color:var(--el-dropdown-menuItem-hover-color)}.el-dropdown-menu__item i{margin-right:5px}.el-dropdown-menu__item--divided{border-top:1px solid var(--el-border-color-lighter);margin:6px 0}.el-dropdown-menu__item.is-disabled{color:var(--el-text-color-disabled);cursor:not-allowed}.el-dropdown-menu--large{padding:7px 0}.el-dropdown-menu--large .el-dropdown-menu__item{font-size:14px;line-height:22px;padding:7px 20px}.el-dropdown-menu--large .el-dropdown-menu__item--divided{margin:8px 0}.el-dropdown-menu--small{padding:3px 0}.el-dropdown-menu--small .el-dropdown-menu__item{font-size:12px;line-height:20px;padding:2px 12px}.el-dropdown-menu--small .el-dropdown-menu__item--divided{margin:4px 0}.el-card{--el-card-border-color:var(--el-border-color-light);--el-card-border-radius:4px;--el-card-padding:20px;--el-card-bg-color:var(--el-fill-color-blank);background-color:var(--el-card-bg-color);border:1px solid var(--el-card-border-color);border-radius:var(--el-card-border-radius);color:var(--el-text-color-primary);display:flex;flex-direction:column;overflow:hidden;transition:var(--el-transition-duration)}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{box-shadow:var(--el-box-shadow-light)}.el-card__header{border-bottom:1px solid var(--el-card-border-color);box-sizing:border-box;padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding)}.el-card__body{flex:1;overflow:auto;padding:var(--el-card-padding)}.el-card__footer{border-top:1px solid var(--el-card-border-color);box-sizing:border-box;padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding)}.directory-tree-popover{padding:0!important;border-radius:12px!important;box-shadow:var(--el-box-shadow-light)!important}.el-zoom-in-top-enter-active.directory-tree-popover,.el-zoom-in-top-leave-active.directory-tree-popover{transition:transform .15s ease-out,opacity .15s ease-out!important}.directory-tree-drawer{border-radius:16px 16px 0 0!important}.directory-tree-drawer .el-drawer__header{margin-bottom:0;padding:16px 20px;border-bottom:1px solid var(--el-border-color-lighter)}.directory-tree-drawer .el-drawer__body{padding:0} \ No newline at end of file diff --git a/frontend-dist/css/860.3febd367.css.gz b/frontend-dist/css/860.3febd367.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..e4f0837d9eedd162670a31c49bf0f9db69e2c202 GIT binary patch literal 5930 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 M4FT.el-popper__arrow:before{background:none!important;border:none!important}*,body,html{scrollbar-width:none!important;-ms-overflow-style:none!important}::-webkit-scrollbar,body::-webkit-scrollbar,html::-webkit-scrollbar{display:none!important;width:0!important;height:0!important;background:transparent!important}.os-theme-dark{--os-handle-bg:hsla(0,0%,50%,.5);--os-handle-bg-hover:hsla(0,0%,50%,.7);--os-handle-bg-active:hsla(0,0%,50%,.85)}.dark .os-theme-dark,html.dark .os-theme-dark{--os-handle-bg:hsla(0,0%,71%,.6);--os-handle-bg-hover:hsla(0,0%,71%,.75);--os-handle-bg-active:hsla(0,0%,71%,.9)}.os-theme-dark .os-scrollbar,.os-theme-dark .os-scrollbar-horizontal,.os-theme-dark .os-scrollbar-vertical{--os-size:10px;--os-padding-perpendicular:2px;--os-padding-axis:2px;--os-track-bg:transparent;--os-track-bg-hover:transparent;--os-track-bg-active:transparent}.os-theme-dark .os-scrollbar .os-scrollbar-handle{border-radius:10px!important;transition:background-color .2s ease,opacity .2s ease!important}.el-card,.el-dropdown__popper.el-popper{background-color:var(--glass-bg)!important;backdrop-filter:blur(var(--glass-backdrop-blur)) saturate(1.4);-webkit-backdrop-filter:blur(var(--glass-backdrop-blur)) saturate(1.4)} \ No newline at end of file diff --git a/frontend-dist/css/app.30026cb8.css.gz b/frontend-dist/css/app.30026cb8.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..ad7cbe19bc6be1281017ae4421f37ae66b842062 GIT binary patch literal 3992 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.el-popper__arrow:before{background:none!important;border:none!important}*,body,html{scrollbar-width:none!important;-ms-overflow-style:none!important}::-webkit-scrollbar,body::-webkit-scrollbar,html::-webkit-scrollbar{display:none!important;width:0!important;height:0!important;background:transparent!important}.os-theme-dark{--os-handle-bg:hsla(0,0%,50%,.5);--os-handle-bg-hover:hsla(0,0%,50%,.7);--os-handle-bg-active:hsla(0,0%,50%,.85)}.dark .os-theme-dark,html.dark .os-theme-dark{--os-handle-bg:hsla(0,0%,71%,.6);--os-handle-bg-hover:hsla(0,0%,71%,.75);--os-handle-bg-active:hsla(0,0%,71%,.9)}.os-theme-dark .os-scrollbar,.os-theme-dark .os-scrollbar-horizontal,.os-theme-dark .os-scrollbar-vertical{--os-size:10px;--os-padding-perpendicular:2px;--os-padding-axis:2px;--os-track-bg:transparent;--os-track-bg-hover:transparent;--os-track-bg-active:transparent}.os-theme-dark .os-scrollbar .os-scrollbar-handle{border-radius:10px!important;transition:background-color .2s ease,opacity .2s ease!important}.el-card,.el-dropdown__popper.el-popper{background-color:var(--glass-bg)!important;backdrop-filter:blur(var(--glass-backdrop-blur)) saturate(1.4);-webkit-backdrop-filter:blur(var(--glass-backdrop-blur)) saturate(1.4)} \ No newline at end of file diff --git a/frontend-dist/css/app.966aac8a.css.gz b/frontend-dist/css/app.966aac8a.css.gz deleted file mode 100644 index cf00a12d4e14279616140b1865b614d83d228118..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3906 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 Q7Kr)yUwuaZz$;Dw09rqaS^xk5 diff --git a/frontend-dist/css/chunk-vendors.c8a4c1c7.css b/frontend-dist/css/chunk-vendors.c8a4c1c7.css new file mode 100644 index 0000000..27730e0 --- /dev/null +++ b/frontend-dist/css/chunk-vendors.c8a4c1c7.css @@ -0,0 +1,10 @@ +@charset "UTF-8";:root{--el-color-white:#fff;--el-color-black:#000;--el-color-primary-rgb:64,158,255;--el-color-success-rgb:103,194,58;--el-color-warning-rgb:230,162,60;--el-color-danger-rgb:245,108,108;--el-color-error-rgb:245,108,108;--el-color-info-rgb:144,147,153;--el-font-size-extra-large:20px;--el-font-size-large:18px;--el-font-size-medium:16px;--el-font-size-base:14px;--el-font-size-small:13px;--el-font-size-extra-small:12px;--el-font-family:"Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif;--el-font-weight-primary:500;--el-font-line-height-primary:24px;--el-index-normal:1;--el-index-top:1000;--el-index-popper:2000;--el-border-radius-base:4px;--el-border-radius-small:2px;--el-border-radius-round:20px;--el-border-radius-circle:100%;--el-transition-duration:0.3s;--el-transition-duration-fast:0.2s;--el-transition-function-ease-in-out-bezier:cubic-bezier(0.645,0.045,0.355,1);--el-transition-function-fast-bezier:cubic-bezier(0.23,1,0.32,1);--el-transition-all:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);--el-transition-fade:opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-md-fade:transform var(--el-transition-duration) var(--el-transition-function-fast-bezier),opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-fade-linear:opacity var(--el-transition-duration-fast) linear;--el-transition-border:border-color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-box-shadow:box-shadow var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-color:color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-component-size-large:40px;--el-component-size:32px;--el-component-size-small:24px;color-scheme:light;--el-color-primary:#409eff;--el-color-primary-light-3:#79bbff;--el-color-primary-light-5:#a0cfff;--el-color-primary-light-7:#c6e2ff;--el-color-primary-light-8:#d9ecff;--el-color-primary-light-9:#ecf5ff;--el-color-primary-dark-2:#337ecc;--el-color-success:#67c23a;--el-color-success-light-3:#95d475;--el-color-success-light-5:#b3e19d;--el-color-success-light-7:#d1edc4;--el-color-success-light-8:#e1f3d8;--el-color-success-light-9:#f0f9eb;--el-color-success-dark-2:#529b2e;--el-color-warning:#e6a23c;--el-color-warning-light-3:#eebe77;--el-color-warning-light-5:#f3d19e;--el-color-warning-light-7:#f8e3c5;--el-color-warning-light-8:#faecd8;--el-color-warning-light-9:#fdf6ec;--el-color-warning-dark-2:#b88230;--el-color-danger:#f56c6c;--el-color-danger-light-3:#f89898;--el-color-danger-light-5:#fab6b6;--el-color-danger-light-7:#fcd3d3;--el-color-danger-light-8:#fde2e2;--el-color-danger-light-9:#fef0f0;--el-color-danger-dark-2:#c45656;--el-color-error:#f56c6c;--el-color-error-light-3:#f89898;--el-color-error-light-5:#fab6b6;--el-color-error-light-7:#fcd3d3;--el-color-error-light-8:#fde2e2;--el-color-error-light-9:#fef0f0;--el-color-error-dark-2:#c45656;--el-color-info:#909399;--el-color-info-light-3:#b1b3b8;--el-color-info-light-5:#c8c9cc;--el-color-info-light-7:#dedfe0;--el-color-info-light-8:#e9e9eb;--el-color-info-light-9:#f4f4f5;--el-color-info-dark-2:#73767a;--el-bg-color:#fff;--el-bg-color-page:#f2f3f5;--el-bg-color-overlay:#fff;--el-text-color-primary:#303133;--el-text-color-regular:#606266;--el-text-color-secondary:#909399;--el-text-color-placeholder:#a8abb2;--el-text-color-disabled:#c0c4cc;--el-border-color:#dcdfe6;--el-border-color-light:#e4e7ed;--el-border-color-lighter:#ebeef5;--el-border-color-extra-light:#f2f6fc;--el-border-color-dark:#d4d7de;--el-border-color-darker:#cdd0d6;--el-fill-color:#f0f2f5;--el-fill-color-light:#f5f7fa;--el-fill-color-lighter:#fafafa;--el-fill-color-extra-light:#fafcff;--el-fill-color-dark:#ebedf0;--el-fill-color-darker:#e6e8eb;--el-fill-color-blank:#fff;--el-box-shadow:0px 12px 32px 4px rgba(0,0,0,.04),0px 8px 20px rgba(0,0,0,.08);--el-box-shadow-light:0px 0px 12px rgba(0,0,0,.12);--el-box-shadow-lighter:0px 0px 6px rgba(0,0,0,.12);--el-box-shadow-dark:0px 16px 48px 16px rgba(0,0,0,.08),0px 12px 32px rgba(0,0,0,.12),0px 8px 16px -8px rgba(0,0,0,.16);--el-disabled-bg-color:var(--el-fill-color-light);--el-disabled-text-color:var(--el-text-color-placeholder);--el-disabled-border-color:var(--el-border-color-light);--el-overlay-color:rgba(0,0,0,.8);--el-overlay-color-light:rgba(0,0,0,.7);--el-overlay-color-lighter:rgba(0,0,0,.5);--el-mask-color:hsla(0,0%,100%,.9);--el-mask-color-extra-light:hsla(0,0%,100%,.3);--el-border-width:1px;--el-border-style:solid;--el-border-color-hover:var(--el-text-color-disabled);--el-border:var(--el-border-width) var(--el-border-style) var(--el-border-color);--el-svg-monochrome-grey:var(--el-border-color)}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transform-origin:center top;transition:var(--el-transition-md-fade)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transform-origin:center bottom;transition:var(--el-transition-md-fade)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transform-origin:top left;transition:var(--el-transition-md-fade)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-enter-active,.el-collapse-transition-leave-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.el-icon{--color:inherit;align-items:center;display:inline-flex;height:1em;justify-content:center;line-height:1em;position:relative;width:1em;fill:currentColor;color:var(--color);font-size:inherit}.el-icon.is-loading{animation:rotating 2s linear infinite}.el-icon svg{height:1em;width:1em}.el-badge{--el-badge-bg-color:var(--el-color-danger);--el-badge-radius:10px;--el-badge-font-size:12px;--el-badge-padding:6px;--el-badge-size:18px;display:inline-block;position:relative;vertical-align:middle;width:fit-content}.el-badge__content{align-items:center;background-color:var(--el-badge-bg-color);border:1px solid var(--el-bg-color);border-radius:var(--el-badge-radius);color:var(--el-color-white);display:inline-flex;font-size:var(--el-badge-font-size);height:var(--el-badge-size);justify-content:center;padding:0 var(--el-badge-padding);white-space:nowrap}.el-badge__content.is-fixed{position:absolute;right:calc(1px + var(--el-badge-size)/2);top:0;transform:translateY(-50%) translateX(100%);z-index:var(--el-index-normal)}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{border-radius:50%;height:8px;padding:0;right:0;width:8px}.el-badge__content.is-hide-zero{display:none}.el-badge__content--primary{background-color:var(--el-color-primary)}.el-badge__content--success{background-color:var(--el-color-success)}.el-badge__content--warning{background-color:var(--el-color-warning)}.el-badge__content--info{background-color:var(--el-color-info)}.el-badge__content--danger{background-color:var(--el-color-danger)}.el-message{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-border-color-lighter);--el-message-padding:11px 15px;--el-message-close-size:16px;--el-message-close-icon-color:var(--el-text-color-placeholder);--el-message-close-hover-color:var(--el-text-color-secondary);align-items:center;background-color:var(--el-message-bg-color);border-color:var(--el-message-border-color);border-radius:var(--el-border-radius-base);border-style:var(--el-border-style);border-width:var(--el-border-width);box-sizing:border-box;display:flex;gap:8px;max-width:calc(100% - 32px);padding:var(--el-message-padding);position:fixed;transition:opacity var(--el-transition-duration),transform .4s,top .4s,bottom .4s;width:fit-content}.el-message.is-left{left:16px}.el-message.is-right{right:16px}.el-message.is-center{left:0;margin:0 auto;right:0}.el-message.is-plain{background-color:var(--el-bg-color-overlay);border-color:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-message p{margin:0}.el-message--primary{--el-message-bg-color:var(--el-color-primary-light-9);--el-message-border-color:var(--el-color-primary-light-8);--el-message-text-color:var(--el-color-primary)}.el-message--primary .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--primary{color:var(--el-message-text-color)}.el-message--success{--el-message-bg-color:var(--el-color-success-light-9);--el-message-border-color:var(--el-color-success-light-8);--el-message-text-color:var(--el-color-success)}.el-message--success .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--success{color:var(--el-message-text-color)}.el-message--info{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-color-info-light-8);--el-message-text-color:var(--el-color-info)}.el-message--info .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--info{color:var(--el-message-text-color)}.el-message--warning{--el-message-bg-color:var(--el-color-warning-light-9);--el-message-border-color:var(--el-color-warning-light-8);--el-message-text-color:var(--el-color-warning)}.el-message--warning .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--warning{color:var(--el-message-text-color)}.el-message--error{--el-message-bg-color:var(--el-color-error-light-9);--el-message-border-color:var(--el-color-error-light-8);--el-message-text-color:var(--el-color-error)}.el-message--error .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--error{color:var(--el-message-text-color)}.el-message .el-message__badge{position:absolute;right:-8px;top:-8px}.el-message__content{font-size:14px;line-height:1;padding:0}.el-message__content:focus{outline-width:0}.el-message .el-message__closeBtn{color:var(--el-message-close-icon-color);cursor:pointer;font-size:var(--el-message-close-size)}.el-message .el-message__closeBtn:focus{outline-width:0}.el-message .el-message__closeBtn:hover{color:var(--el-message-close-hover-color)}.el-message-fade-enter-from,.el-message-fade-leave-to{opacity:0;transform:translateY(-100%)}.el-message-fade-enter-from.is-bottom,.el-message-fade-leave-to.is-bottom{transform:translateY(100%)}.el-message-box{--el-messagebox-title-color:var(--el-text-color-primary);--el-messagebox-width:420px;--el-messagebox-border-radius:4px;--el-messagebox-box-shadow:var(--el-box-shadow);--el-messagebox-font-size:var(--el-font-size-large);--el-messagebox-content-font-size:var(--el-font-size-base);--el-messagebox-content-color:var(--el-text-color-regular);--el-messagebox-error-font-size:12px;--el-messagebox-padding-primary:12px;--el-messagebox-font-line-height:var(--el-font-line-height-primary);backface-visibility:hidden;background-color:var(--el-bg-color);border-radius:var(--el-messagebox-border-radius);box-shadow:var(--el-messagebox-box-shadow);box-sizing:border-box;display:inline-block;font-size:var(--el-messagebox-font-size);max-width:var(--el-messagebox-width);overflow:hidden;overflow-wrap:break-word;padding:var(--el-messagebox-padding-primary);position:relative;text-align:left;vertical-align:middle;width:100%}.el-message-box:focus{outline:none!important}.is-message-box .el-overlay-message-box{bottom:0;left:0;overflow:auto;padding:16px;position:fixed;right:0;text-align:center;top:0}.is-message-box .el-overlay-message-box:after{content:"";display:inline-block;height:100%;vertical-align:middle;width:0}.el-message-box.is-draggable .el-message-box__header{cursor:move;-webkit-user-select:none;user-select:none}.el-message-box__header{padding-bottom:var(--el-messagebox-padding-primary)}.el-message-box__header.show-close{padding-right:calc(var(--el-messagebox-padding-primary) + var(--el-message-close-size, 16px))}.el-message-box__title{color:var(--el-messagebox-title-color);font-size:var(--el-messagebox-font-size);line-height:var(--el-messagebox-font-line-height)}.el-message-box__headerbtn{background:transparent;border:none;cursor:pointer;font-size:var(--el-message-close-size,16px);height:40px;outline:none;padding:0;position:absolute;right:0;top:0;width:40px}.el-message-box__headerbtn .el-message-box__close{color:var(--el-color-info);font-size:inherit}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:var(--el-color-primary)}.el-message-box__content{color:var(--el-messagebox-content-color);font-size:var(--el-messagebox-content-font-size)}.el-message-box__container{align-items:center;display:flex;gap:12px}.el-message-box__input{padding-top:12px}.el-message-box__input div.invalid>input,.el-message-box__input div.invalid>input:focus{border-color:var(--el-color-error)}.el-message-box__status{font-size:24px}.el-message-box__status.el-message-box-icon--primary{--el-messagebox-color:var(--el-color-primary);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--success{--el-messagebox-color:var(--el-color-success);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--info{--el-messagebox-color:var(--el-color-info);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--warning{--el-messagebox-color:var(--el-color-warning);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--error{--el-messagebox-color:var(--el-color-error);color:var(--el-messagebox-color)}.el-message-box__message{margin:0;min-width:0}.el-message-box__message p{line-height:var(--el-messagebox-font-line-height);margin:0}.el-message-box__errormsg{color:var(--el-color-error);font-size:var(--el-messagebox-error-font-size);line-height:var(--el-messagebox-font-line-height)}.el-message-box__btns{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-end;padding-top:var(--el-messagebox-padding-primary)}.el-message-box--center .el-message-box__title{align-items:center;display:flex;gap:6px;justify-content:center}.el-message-box--center .el-message-box__status{font-size:inherit}.el-message-box--center .el-message-box__btns,.el-message-box--center .el-message-box__container{justify-content:center}.el-message-box-parent--hidden{overflow:hidden}.fade-in-linear-enter-active .el-overlay-message-box{animation:msgbox-fade-in var(--el-transition-duration)}.fade-in-linear-leave-active .el-overlay-message-box{animation:msgbox-fade-in var(--el-transition-duration) reverse}@keyframes msgbox-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}.el-button{--el-button-font-weight:var(--el-font-weight-primary);--el-button-border-color:var(--el-border-color);--el-button-bg-color:var(--el-fill-color-blank);--el-button-text-color:var(--el-text-color-regular);--el-button-disabled-text-color:var(--el-disabled-text-color);--el-button-disabled-bg-color:var(--el-fill-color-blank);--el-button-disabled-border-color:var(--el-border-color-light);--el-button-divide-border-color:hsla(0,0%,100%,.5);--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-color-primary-light-9);--el-button-hover-border-color:var(--el-color-primary-light-7);--el-button-active-text-color:var(--el-button-hover-text-color);--el-button-active-border-color:var(--el-color-primary);--el-button-active-bg-color:var(--el-button-hover-bg-color);--el-button-outline-color:var(--el-color-primary-light-5);--el-button-hover-link-text-color:var(--el-text-color-secondary);--el-button-active-color:var(--el-text-color-primary);align-items:center;-webkit-appearance:none;background-color:var(--el-button-bg-color);border:var(--el-border);border-color:var(--el-button-border-color);box-sizing:border-box;color:var(--el-button-text-color);cursor:pointer;display:inline-flex;font-weight:var(--el-button-font-weight);height:32px;justify-content:center;line-height:1;outline:none;text-align:center;transition:.1s;-webkit-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-button:hover{background-color:var(--el-button-hover-bg-color);border-color:var(--el-button-hover-border-color);color:var(--el-button-hover-text-color);outline:none}.el-button:active{background-color:var(--el-button-active-bg-color);border-color:var(--el-button-active-border-color);color:var(--el-button-active-text-color);outline:none}.el-button:focus-visible{outline:2px solid var(--el-button-outline-color);outline-offset:1px;transition:outline-offset 0s,outline 0s}.el-button>span{align-items:center;display:inline-flex}.el-button+.el-button{margin-left:12px}.el-button{border-radius:var(--el-border-radius-base);font-size:var(--el-font-size-base)}.el-button,.el-button.is-round{padding:8px 15px}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon]+span{margin-left:6px}.el-button [class*=el-icon] svg{vertical-align:bottom}.el-button.is-plain{--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-fill-color-blank);--el-button-hover-border-color:var(--el-color-primary)}.el-button.is-active{background-color:var(--el-button-active-bg-color);border-color:var(--el-button-active-border-color);color:var(--el-button-active-text-color);outline:none}.el-button.is-disabled,.el-button.is-disabled:hover{background-color:var(--el-button-disabled-bg-color);background-image:none;border-color:var(--el-button-disabled-border-color);color:var(--el-button-disabled-text-color);cursor:not-allowed}.el-button.is-loading{pointer-events:none;position:relative}.el-button.is-loading:before{background-color:var(--el-mask-color-extra-light);border-radius:inherit;bottom:-1px;content:"";left:-1px;pointer-events:none;position:absolute;right:-1px;top:-1px;z-index:1}.el-button.is-round{border-radius:var(--el-border-radius-round)}.el-button.is-circle{border-radius:50%;padding:8px;width:32px}.el-button.is-text{background-color:transparent;border:0 solid transparent;color:var(--el-button-text-color)}.el-button.is-text.is-disabled{background-color:transparent!important;color:var(--el-button-disabled-text-color)}.el-button.is-text:not(.is-disabled):hover{background-color:var(--el-fill-color-light)}.el-button.is-text:not(.is-disabled):focus-visible{outline:2px solid var(--el-button-outline-color);outline-offset:1px;transition:outline-offset 0s,outline 0s}.el-button.is-text:not(.is-disabled):active{background-color:var(--el-fill-color)}.el-button.is-text:not(.is-disabled).is-has-bg{background-color:var(--el-fill-color-light)}.el-button.is-text:not(.is-disabled).is-has-bg:hover{background-color:var(--el-fill-color)}.el-button.is-text:not(.is-disabled).is-has-bg:active{background-color:var(--el-fill-color-dark)}.el-button__text--expand{letter-spacing:.3em;margin-right:-.3em}.el-button.is-link{background:transparent;border-color:transparent;color:var(--el-button-text-color);height:auto;padding:2px}.el-button.is-link:hover{color:var(--el-button-hover-link-text-color)}.el-button.is-link.is-disabled{background-color:transparent!important;border-color:transparent!important;color:var(--el-button-disabled-text-color)}.el-button.is-link:not(.is-disabled):active,.el-button.is-link:not(.is-disabled):hover{background-color:transparent;border-color:transparent}.el-button.is-link:not(.is-disabled):active{color:var(--el-button-active-color)}.el-button--text{background:transparent;border-color:transparent;color:var(--el-color-primary);padding-left:0;padding-right:0}.el-button--text.is-disabled{background-color:transparent!important;border-color:transparent!important;color:var(--el-button-disabled-text-color)}.el-button--text:not(.is-disabled):hover{background-color:transparent;border-color:transparent;color:var(--el-color-primary-light-3)}.el-button--text:not(.is-disabled):active{background-color:transparent;border-color:transparent;color:var(--el-color-primary-dark-2)}.el-button__link--expand{letter-spacing:.3em;margin-right:-.3em}.el-button--primary{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-primary);--el-button-border-color:var(--el-color-primary);--el-button-outline-color:var(--el-color-primary-light-5);--el-button-active-color:var(--el-color-primary-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-primary-light-5);--el-button-hover-bg-color:var(--el-color-primary-light-3);--el-button-hover-border-color:var(--el-color-primary-light-3);--el-button-active-bg-color:var(--el-color-primary-dark-2);--el-button-active-border-color:var(--el-color-primary-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-primary-light-5);--el-button-disabled-border-color:var(--el-color-primary-light-5)}.el-button--primary.is-link,.el-button--primary.is-plain,.el-button--primary.is-text{--el-button-text-color:var(--el-color-primary);--el-button-bg-color:var(--el-color-primary-light-9);--el-button-border-color:var(--el-color-primary-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-primary);--el-button-hover-border-color:var(--el-color-primary);--el-button-active-text-color:var(--el-color-white)}.el-button--primary.is-link.is-disabled,.el-button--primary.is-link.is-disabled:active,.el-button--primary.is-link.is-disabled:focus,.el-button--primary.is-link.is-disabled:hover,.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover,.el-button--primary.is-text.is-disabled,.el-button--primary.is-text.is-disabled:active,.el-button--primary.is-text.is-disabled:focus,.el-button--primary.is-text.is-disabled:hover{background-color:var(--el-color-primary-light-9);border-color:var(--el-color-primary-light-8);color:var(--el-color-primary-light-5)}.el-button--success{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-success);--el-button-border-color:var(--el-color-success);--el-button-outline-color:var(--el-color-success-light-5);--el-button-active-color:var(--el-color-success-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-success-light-5);--el-button-hover-bg-color:var(--el-color-success-light-3);--el-button-hover-border-color:var(--el-color-success-light-3);--el-button-active-bg-color:var(--el-color-success-dark-2);--el-button-active-border-color:var(--el-color-success-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-success-light-5);--el-button-disabled-border-color:var(--el-color-success-light-5)}.el-button--success.is-link,.el-button--success.is-plain,.el-button--success.is-text{--el-button-text-color:var(--el-color-success);--el-button-bg-color:var(--el-color-success-light-9);--el-button-border-color:var(--el-color-success-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-success);--el-button-hover-border-color:var(--el-color-success);--el-button-active-text-color:var(--el-color-white)}.el-button--success.is-link.is-disabled,.el-button--success.is-link.is-disabled:active,.el-button--success.is-link.is-disabled:focus,.el-button--success.is-link.is-disabled:hover,.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover,.el-button--success.is-text.is-disabled,.el-button--success.is-text.is-disabled:active,.el-button--success.is-text.is-disabled:focus,.el-button--success.is-text.is-disabled:hover{background-color:var(--el-color-success-light-9);border-color:var(--el-color-success-light-8);color:var(--el-color-success-light-5)}.el-button--warning{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-warning);--el-button-border-color:var(--el-color-warning);--el-button-outline-color:var(--el-color-warning-light-5);--el-button-active-color:var(--el-color-warning-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-warning-light-5);--el-button-hover-bg-color:var(--el-color-warning-light-3);--el-button-hover-border-color:var(--el-color-warning-light-3);--el-button-active-bg-color:var(--el-color-warning-dark-2);--el-button-active-border-color:var(--el-color-warning-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-warning-light-5);--el-button-disabled-border-color:var(--el-color-warning-light-5)}.el-button--warning.is-link,.el-button--warning.is-plain,.el-button--warning.is-text{--el-button-text-color:var(--el-color-warning);--el-button-bg-color:var(--el-color-warning-light-9);--el-button-border-color:var(--el-color-warning-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-warning);--el-button-hover-border-color:var(--el-color-warning);--el-button-active-text-color:var(--el-color-white)}.el-button--warning.is-link.is-disabled,.el-button--warning.is-link.is-disabled:active,.el-button--warning.is-link.is-disabled:focus,.el-button--warning.is-link.is-disabled:hover,.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover,.el-button--warning.is-text.is-disabled,.el-button--warning.is-text.is-disabled:active,.el-button--warning.is-text.is-disabled:focus,.el-button--warning.is-text.is-disabled:hover{background-color:var(--el-color-warning-light-9);border-color:var(--el-color-warning-light-8);color:var(--el-color-warning-light-5)}.el-button--danger{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-danger);--el-button-border-color:var(--el-color-danger);--el-button-outline-color:var(--el-color-danger-light-5);--el-button-active-color:var(--el-color-danger-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-danger-light-5);--el-button-hover-bg-color:var(--el-color-danger-light-3);--el-button-hover-border-color:var(--el-color-danger-light-3);--el-button-active-bg-color:var(--el-color-danger-dark-2);--el-button-active-border-color:var(--el-color-danger-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-danger-light-5);--el-button-disabled-border-color:var(--el-color-danger-light-5)}.el-button--danger.is-link,.el-button--danger.is-plain,.el-button--danger.is-text{--el-button-text-color:var(--el-color-danger);--el-button-bg-color:var(--el-color-danger-light-9);--el-button-border-color:var(--el-color-danger-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-danger);--el-button-hover-border-color:var(--el-color-danger);--el-button-active-text-color:var(--el-color-white)}.el-button--danger.is-link.is-disabled,.el-button--danger.is-link.is-disabled:active,.el-button--danger.is-link.is-disabled:focus,.el-button--danger.is-link.is-disabled:hover,.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover,.el-button--danger.is-text.is-disabled,.el-button--danger.is-text.is-disabled:active,.el-button--danger.is-text.is-disabled:focus,.el-button--danger.is-text.is-disabled:hover{background-color:var(--el-color-danger-light-9);border-color:var(--el-color-danger-light-8);color:var(--el-color-danger-light-5)}.el-button--info{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-info);--el-button-border-color:var(--el-color-info);--el-button-outline-color:var(--el-color-info-light-5);--el-button-active-color:var(--el-color-info-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-info-light-5);--el-button-hover-bg-color:var(--el-color-info-light-3);--el-button-hover-border-color:var(--el-color-info-light-3);--el-button-active-bg-color:var(--el-color-info-dark-2);--el-button-active-border-color:var(--el-color-info-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-info-light-5);--el-button-disabled-border-color:var(--el-color-info-light-5)}.el-button--info.is-link,.el-button--info.is-plain,.el-button--info.is-text{--el-button-text-color:var(--el-color-info);--el-button-bg-color:var(--el-color-info-light-9);--el-button-border-color:var(--el-color-info-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-info);--el-button-hover-border-color:var(--el-color-info);--el-button-active-text-color:var(--el-color-white)}.el-button--info.is-link.is-disabled,.el-button--info.is-link.is-disabled:active,.el-button--info.is-link.is-disabled:focus,.el-button--info.is-link.is-disabled:hover,.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover,.el-button--info.is-text.is-disabled,.el-button--info.is-text.is-disabled:active,.el-button--info.is-text.is-disabled:focus,.el-button--info.is-text.is-disabled:hover{background-color:var(--el-color-info-light-9);border-color:var(--el-color-info-light-8);color:var(--el-color-info-light-5)}.el-button--large{--el-button-size:40px;height:var(--el-button-size)}.el-button--large [class*=el-icon]+span{margin-left:8px}.el-button--large{border-radius:var(--el-border-radius-base);font-size:var(--el-font-size-base);padding:12px 19px}.el-button--large.is-round{padding:12px 19px}.el-button--large.is-circle{padding:12px;width:var(--el-button-size)}.el-button--small{--el-button-size:24px;height:var(--el-button-size)}.el-button--small [class*=el-icon]+span{margin-left:4px}.el-button--small{border-radius:calc(var(--el-border-radius-base) - 1px);font-size:12px;padding:5px 11px}.el-button--small.is-round{padding:5px 11px}.el-button--small.is-circle{padding:5px;width:var(--el-button-size)}.el-textarea{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;display:inline-block;font-size:var(--el-font-size-base);position:relative;vertical-align:bottom;width:100%}.el-textarea__inner{-webkit-appearance:none;background-color:var(--el-input-bg-color,var(--el-fill-color-blank));background-image:none;border:none;border-radius:var(--el-input-border-radius,var(--el-border-radius-base));box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;box-sizing:border-box;color:var(--el-input-text-color,var(--el-text-color-regular));display:block;font-family:inherit;font-size:inherit;line-height:1.5;padding:5px 11px;position:relative;resize:vertical;transition:var(--el-transition-box-shadow);width:100%}.el-textarea__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-textarea__inner:focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset;outline:none}.el-textarea .el-input__count{background:var(--el-fill-color-blank);bottom:5px;color:var(--el-color-info);font-size:12px;line-height:14px;position:absolute;right:10px}.el-textarea .el-input__count.is-outside{background:transparent;bottom:unset;line-height:1;padding-top:2px;position:absolute;right:0;top:100%}.el-textarea.is-disabled .el-textarea__inner{background-color:var(--el-disabled-bg-color);box-shadow:0 0 0 1px var(--el-disabled-border-color) inset;color:var(--el-disabled-text-color);cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:var(--el-text-color-placeholder)}.el-textarea.is-exceed .el-textarea__inner{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-textarea.is-exceed .el-input__count{color:var(--el-color-danger)}.el-input{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;--el-input-height:var(--el-component-size);box-sizing:border-box;display:inline-flex;font-size:var(--el-font-size-base);line-height:var(--el-input-height);position:relative;vertical-align:middle;width:var(--el-input-width)}.el-input::-webkit-scrollbar{width:6px;z-index:11}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{background:var(--el-text-color-disabled);border-radius:5px;width:6px}.el-input::-webkit-scrollbar-corner,.el-input::-webkit-scrollbar-track{background:var(--el-fill-color-blank)}.el-input::-webkit-scrollbar-track-piece{background:var(--el-fill-color-blank);width:6px}.el-input .el-input__clear,.el-input .el-input__password{color:var(--el-input-icon-color);cursor:pointer;font-size:14px}.el-input .el-input__clear:hover,.el-input .el-input__password:hover{color:var(--el-input-clear-hover-color)}.el-input .el-input__count{align-items:center;color:var(--el-color-info);display:inline-flex;font-size:12px;height:100%}.el-input .el-input__count .el-input__count-inner{background:var(--el-fill-color-blank);display:inline-block;line-height:normal;padding-left:8px}.el-input .el-input__count.is-outside{height:unset;padding-top:2px;position:absolute;right:0;top:100%}.el-input .el-input__count.is-outside .el-input__count-inner{background:transparent;line-height:1;padding-left:0}.el-input__wrapper{align-items:center;background-color:var(--el-input-bg-color,var(--el-fill-color-blank));background-image:none;border-radius:var(--el-input-border-radius,var(--el-border-radius-base));box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;cursor:text;display:inline-flex;flex-grow:1;justify-content:center;padding:1px 11px;transform:translateZ(0);transition:var(--el-transition-box-shadow)}.el-input__wrapper:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-input__wrapper.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-input{--el-input-inner-height:calc(var(--el-input-height, 32px) - 2px)}.el-input__inner{-webkit-appearance:none;background:none;border:none;box-sizing:border-box;color:var(--el-input-text-color,var(--el-text-color-regular));flex-grow:1;font-size:inherit;height:var(--el-input-inner-height);line-height:var(--el-input-inner-height);outline:none;padding:0;width:100%}.el-input__inner:focus{outline:none}.el-input__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-input__inner[type=password]::-ms-reveal{display:none}.el-input__inner[type=number]{line-height:1}.el-input__prefix{color:var(--el-input-icon-color,var(--el-text-color-placeholder));display:inline-flex;flex-shrink:0;flex-wrap:nowrap;height:100%;line-height:var(--el-input-inner-height);pointer-events:none;text-align:center;transition:all var(--el-transition-duration);white-space:nowrap}.el-input__prefix-inner{align-items:center;display:inline-flex;justify-content:center;pointer-events:all}.el-input__prefix-inner>:last-child{margin-right:8px}.el-input__prefix-inner>:first-child,.el-input__prefix-inner>:first-child.el-input__icon{margin-left:0}.el-input__suffix{color:var(--el-input-icon-color,var(--el-text-color-placeholder));display:inline-flex;flex-shrink:0;flex-wrap:nowrap;height:100%;line-height:var(--el-input-inner-height);pointer-events:none;text-align:center;transition:all var(--el-transition-duration);white-space:nowrap}.el-input__suffix-inner{align-items:center;display:inline-flex;justify-content:center;pointer-events:all}.el-input__suffix-inner>:first-child{margin-left:8px}.el-input .el-input__icon{align-items:center;display:flex;height:inherit;justify-content:center;line-height:inherit;margin-left:8px;transition:all var(--el-transition-duration)}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-color, ) inset}.el-input.is-disabled{cursor:not-allowed}.el-input.is-disabled .el-input__wrapper{background-color:var(--el-disabled-bg-color);box-shadow:0 0 0 1px var(--el-disabled-border-color) inset;cursor:not-allowed}.el-input.is-disabled .el-input__inner{color:var(--el-disabled-text-color);-webkit-text-fill-color:var(--el-disabled-text-color);cursor:not-allowed}.el-input.is-disabled .el-input__inner::placeholder{color:var(--el-text-color-placeholder)}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-disabled .el-input__prefix-inner,.el-input.is-disabled .el-input__suffix-inner{pointer-events:none}.el-input.is-exceed .el-input__wrapper{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-input.is-exceed .el-input__suffix .el-input__count{color:var(--el-color-danger)}.el-input--large{--el-input-height:var(--el-component-size-large);font-size:14px}.el-input--large .el-input__wrapper{padding:1px 15px}.el-input--large{--el-input-inner-height:calc(var(--el-input-height, 40px) - 2px)}.el-input--small{--el-input-height:var(--el-component-size-small);font-size:12px}.el-input--small .el-input__wrapper{padding:1px 7px}.el-input--small{--el-input-inner-height:calc(var(--el-input-height, 24px) - 2px)}.el-input-group{align-items:stretch;display:inline-flex;width:100%}.el-input-group__append,.el-input-group__prepend{align-items:center;background-color:var(--el-fill-color-light);border-radius:var(--el-input-border-radius);color:var(--el-color-info);display:inline-flex;justify-content:center;min-height:100%;padding:0 20px;position:relative;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:none}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;flex:1;margin:0 -20px}.el-input-group__append button.el-button,.el-input-group__append button.el-button:hover,.el-input-group__append div.el-select .el-select__wrapper,.el-input-group__append div.el-select:hover .el-select__wrapper,.el-input-group__prepend button.el-button,.el-input-group__prepend button.el-button:hover,.el-input-group__prepend div.el-select .el-select__wrapper,.el-input-group__prepend div.el-select:hover .el-select__wrapper{background-color:transparent;border-color:transparent;color:inherit}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-bottom-right-radius:0;border-right:0;border-top-right-radius:0;box-shadow:1px 0 0 0 var(--el-input-border-color) inset,0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset}.el-input-group__append{border-bottom-left-radius:0;border-left:0;border-top-left-radius:0;box-shadow:0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset,-1px 0 0 0 var(--el-input-border-color) inset}.el-input-group--prepend>.el-input__wrapper{border-bottom-left-radius:0;border-top-left-radius:0}.el-input-group--prepend .el-input-group__prepend .el-select .el-select__wrapper{border-bottom-right-radius:0;border-top-right-radius:0;box-shadow:1px 0 0 0 var(--el-input-border-color) inset,0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset}.el-input-group--append>.el-input__wrapper{border-bottom-right-radius:0;border-top-right-radius:0}.el-input-group--append .el-input-group__append .el-select .el-select__wrapper{border-bottom-left-radius:0;border-top-left-radius:0;box-shadow:0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset,-1px 0 0 0 var(--el-input-border-color) inset}.el-input-hidden{display:none!important}.el-overlay{background-color:var(--el-overlay-color-lighter);bottom:0;height:100%;left:0;overflow:auto;position:fixed;right:0;top:0;z-index:2000}.el-overlay .el-overlay-root{height:0}:root{--el-popup-modal-bg-color:var(--el-color-black);--el-popup-modal-opacity:0.5}.v-modal-enter{animation:v-modal-in var(--el-transition-duration-fast) ease}.v-modal-leave{animation:v-modal-out var(--el-transition-duration-fast) ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{background:var(--el-popup-modal-bg-color);height:100%;left:0;opacity:var(--el-popup-modal-opacity);position:fixed;top:0;width:100%}.el-popup-parent--hidden{overflow:hidden}.el-dialog{--el-dialog-width:50%;--el-dialog-margin-top:15vh;--el-dialog-bg-color:var(--el-bg-color);--el-dialog-box-shadow:var(--el-box-shadow);--el-dialog-title-font-size:var(--el-font-size-large);--el-dialog-content-font-size:14px;--el-dialog-font-line-height:var(--el-font-line-height-primary);--el-dialog-padding-primary:16px;--el-dialog-border-radius:var(--el-border-radius-base);background:var(--el-dialog-bg-color);border-radius:var(--el-dialog-border-radius);box-shadow:var(--el-dialog-box-shadow);box-sizing:border-box;margin:var(--el-dialog-margin-top,15vh) auto 50px;overflow-wrap:break-word;padding:var(--el-dialog-padding-primary);position:relative;width:var(--el-dialog-width,50%)}.el-dialog:focus{outline:none!important}.el-dialog.is-align-center{margin:auto}.el-dialog.is-fullscreen{--el-dialog-width:100%;--el-dialog-margin-top:0;border-radius:0;height:100%;margin-bottom:0;overflow:auto}.el-dialog__wrapper{bottom:0;left:0;margin:0;overflow:auto;position:fixed;right:0;top:0}.el-dialog.is-draggable .el-dialog__header{cursor:move;-webkit-user-select:none;user-select:none}.el-dialog__header{padding-bottom:var(--el-dialog-padding-primary)}.el-dialog__header.show-close{padding-right:calc(var(--el-dialog-padding-primary) + var(--el-message-close-size, 16px))}.el-dialog__headerbtn{background:transparent;border:none;cursor:pointer;font-size:var(--el-message-close-size,16px);height:48px;outline:none;padding:0;position:absolute;right:0;top:0;width:48px}.el-dialog__headerbtn .el-dialog__close{color:var(--el-color-info);font-size:inherit}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:var(--el-color-primary)}.el-dialog__title{color:var(--el-text-color-primary);font-size:var(--el-dialog-title-font-size);line-height:var(--el-dialog-font-line-height)}.el-dialog__body{color:var(--el-text-color-regular);font-size:var(--el-dialog-content-font-size)}.el-dialog__footer{box-sizing:border-box;padding-top:var(--el-dialog-padding-primary);text-align:right}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial}.el-dialog--center .el-dialog__footer{text-align:inherit}.el-modal-dialog.is-penetrable{pointer-events:none}.el-modal-dialog.is-penetrable .el-dialog{pointer-events:auto}.el-overlay-dialog{bottom:0;left:0;overflow:auto;position:fixed;right:0;top:0}.dialog-fade-enter-active{animation:modal-fade-in var(--el-transition-duration)}.dialog-fade-enter-active .el-overlay-dialog{animation:dialog-fade-in var(--el-transition-duration)}.dialog-fade-leave-active{animation:modal-fade-out var(--el-transition-duration)}.dialog-fade-leave-active .el-overlay-dialog{animation:dialog-fade-out var(--el-transition-duration)}@keyframes dialog-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes dialog-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-fade-out{0%{opacity:1}to{opacity:0}}.el-alert{--el-alert-padding:8px 16px;--el-alert-border-radius-base:var(--el-border-radius-base);--el-alert-title-font-size:14px;--el-alert-title-with-description-font-size:16px;--el-alert-description-font-size:14px;--el-alert-close-font-size:16px;--el-alert-close-customed-font-size:14px;--el-alert-icon-size:16px;--el-alert-icon-large-size:28px;align-items:center;background-color:var(--el-color-white);border-radius:var(--el-alert-border-radius-base);box-sizing:border-box;display:flex;margin:0;opacity:1;overflow:hidden;padding:var(--el-alert-padding);position:relative;transition:opacity var(--el-transition-duration-fast);width:100%}.el-alert.is-light .el-alert__close-btn{color:var(--el-text-color-placeholder)}.el-alert.is-dark .el-alert__close-btn,.el-alert.is-dark .el-alert__description{color:var(--el-color-white)}.el-alert.is-center{justify-content:center}.el-alert--primary{--el-alert-bg-color:var(--el-color-primary-light-9)}.el-alert--primary.is-light{background-color:var(--el-alert-bg-color)}.el-alert--primary.is-light,.el-alert--primary.is-light .el-alert__description{color:var(--el-color-primary)}.el-alert--primary.is-dark{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-alert--success{--el-alert-bg-color:var(--el-color-success-light-9)}.el-alert--success.is-light{background-color:var(--el-alert-bg-color)}.el-alert--success.is-light,.el-alert--success.is-light .el-alert__description{color:var(--el-color-success)}.el-alert--success.is-dark{background-color:var(--el-color-success);color:var(--el-color-white)}.el-alert--info{--el-alert-bg-color:var(--el-color-info-light-9)}.el-alert--info.is-light{background-color:var(--el-alert-bg-color)}.el-alert--info.is-light,.el-alert--info.is-light .el-alert__description{color:var(--el-color-info)}.el-alert--info.is-dark{background-color:var(--el-color-info);color:var(--el-color-white)}.el-alert--warning{--el-alert-bg-color:var(--el-color-warning-light-9)}.el-alert--warning.is-light{background-color:var(--el-alert-bg-color)}.el-alert--warning.is-light,.el-alert--warning.is-light .el-alert__description{color:var(--el-color-warning)}.el-alert--warning.is-dark{background-color:var(--el-color-warning);color:var(--el-color-white)}.el-alert--error{--el-alert-bg-color:var(--el-color-error-light-9)}.el-alert--error.is-light{background-color:var(--el-alert-bg-color)}.el-alert--error.is-light,.el-alert--error.is-light .el-alert__description{color:var(--el-color-error)}.el-alert--error.is-dark{background-color:var(--el-color-error);color:var(--el-color-white)}.el-alert__content{display:flex;flex-direction:column;gap:4px}.el-alert .el-alert__icon{font-size:var(--el-alert-icon-size);margin-right:8px;width:var(--el-alert-icon-size)}.el-alert .el-alert__icon.is-big{font-size:var(--el-alert-icon-large-size);margin-right:12px;width:var(--el-alert-icon-large-size)}.el-alert__title{font-size:var(--el-alert-title-font-size);line-height:24px}.el-alert__title.with-description{font-size:var(--el-alert-title-with-description-font-size)}.el-alert .el-alert__description{font-size:var(--el-alert-description-font-size);margin:0}.el-alert .el-alert__close-btn{cursor:pointer;font-size:var(--el-alert-close-font-size);opacity:1;position:absolute;right:16px;top:12px}.el-alert .el-alert__close-btn.is-customed{font-size:var(--el-alert-close-customed-font-size);font-style:normal;line-height:24px;top:8px}.el-alert-fade-enter-from,.el-alert-fade-leave-active{opacity:0}html.dark{color-scheme:dark;--el-color-primary:#409eff;--el-color-primary-light-3:#3375b9;--el-color-primary-light-5:#2a598a;--el-color-primary-light-7:#213d5b;--el-color-primary-light-8:#1d3043;--el-color-primary-light-9:#18222b;--el-color-primary-dark-2:#66b1ff;--el-color-success:#67c23a;--el-color-success-light-3:#4e8e2f;--el-color-success-light-5:#3e6b27;--el-color-success-light-7:#2d481f;--el-color-success-light-8:#25371c;--el-color-success-light-9:#1c2518;--el-color-success-dark-2:#85ce61;--el-color-warning:#e6a23c;--el-color-warning-light-3:#a77730;--el-color-warning-light-5:#7d5b28;--el-color-warning-light-7:#533f20;--el-color-warning-light-8:#3e301c;--el-color-warning-light-9:#292218;--el-color-warning-dark-2:#ebb563;--el-color-danger:#f56c6c;--el-color-danger-light-3:#b25252;--el-color-danger-light-5:#854040;--el-color-danger-light-7:#582e2e;--el-color-danger-light-8:#412626;--el-color-danger-light-9:#2a1d1d;--el-color-danger-dark-2:#f78989;--el-color-error:#f56c6c;--el-color-error-light-3:#b25252;--el-color-error-light-5:#854040;--el-color-error-light-7:#582e2e;--el-color-error-light-8:#412626;--el-color-error-light-9:#2a1d1d;--el-color-error-dark-2:#f78989;--el-color-info:#909399;--el-color-info-light-3:#6b6d71;--el-color-info-light-5:#525457;--el-color-info-light-7:#393a3c;--el-color-info-light-8:#2d2d2f;--el-color-info-light-9:#202121;--el-color-info-dark-2:#a6a9ad;--el-box-shadow:0px 12px 32px 4px rgba(0,0,0,.36),0px 8px 20px rgba(0,0,0,.72);--el-box-shadow-light:0px 0px 12px rgba(0,0,0,.72);--el-box-shadow-lighter:0px 0px 6px rgba(0,0,0,.72);--el-box-shadow-dark:0px 16px 48px 16px rgba(0,0,0,.72),0px 12px 32px #000,0px 8px 16px -8px #000;--el-bg-color-page:#0a0a0a;--el-bg-color:#141414;--el-bg-color-overlay:#1d1e1f;--el-text-color-primary:#e5eaf3;--el-text-color-regular:#cfd3dc;--el-text-color-secondary:#a3a6ad;--el-text-color-placeholder:#8d9095;--el-text-color-disabled:#6c6e72;--el-border-color-darker:#636466;--el-border-color-dark:#58585b;--el-border-color:#4c4d4f;--el-border-color-light:#414243;--el-border-color-lighter:#363637;--el-border-color-extra-light:#2b2b2c;--el-fill-color-darker:#424243;--el-fill-color-dark:#39393a;--el-fill-color:#303030;--el-fill-color-light:#262727;--el-fill-color-lighter:#1d1d1d;--el-fill-color-extra-light:#191919;--el-fill-color-blank:#141414;--el-mask-color:rgba(0,0,0,.8);--el-mask-color-extra-light:rgba(0,0,0,.3)}html.dark .el-button{--el-button-disabled-text-color:hsla(0,0%,100%,.5)}html.dark .el-card{--el-card-bg-color:var(--el-bg-color-overlay)}html.dark .el-empty{--el-empty-fill-color-0:var(--el-color-black);--el-empty-fill-color-1:#4b4b52;--el-empty-fill-color-2:#36383d;--el-empty-fill-color-3:#1e1e20;--el-empty-fill-color-4:#262629;--el-empty-fill-color-5:#202124;--el-empty-fill-color-6:#212224;--el-empty-fill-color-7:#1b1c1f;--el-empty-fill-color-8:#1c1d1f;--el-empty-fill-color-9:#18181a} +/*! + * OverlayScrollbars + * Version: 2.13.0 + * + * Copyright (c) Rene Haas | KingSora. + * https://github.com/KingSora + * + * Released under the MIT license. + */.os-size-observer,.os-size-observer-listener{scroll-behavior:auto!important;direction:inherit;pointer-events:none;overflow:hidden;visibility:hidden;box-sizing:border-box}.os-size-observer,.os-size-observer-listener,.os-size-observer-listener-item,.os-size-observer-listener-item-final{writing-mode:horizontal-tb;position:absolute;left:0;top:0}.os-size-observer{z-index:-1;contain:strict;display:flex;flex-direction:row;flex-wrap:nowrap;padding:inherit;border:inherit;box-sizing:inherit;margin:-133px;top:0;right:0;bottom:0;left:0;transform:scale(.1)}.os-size-observer:before{content:"";flex:none;box-sizing:inherit;padding:10px;width:10px;height:10px}.os-size-observer-appear{animation:os-size-observer-appear-animation 1ms forwards}.os-size-observer-listener{box-sizing:border-box;position:relative;flex:auto;padding:inherit;border:inherit;margin:-133px;transform:scale(10)}.os-size-observer-listener.ltr{margin-right:-266px;margin-left:0}.os-size-observer-listener.rtl{margin-left:-266px;margin-right:0}.os-size-observer-listener:empty:before{content:"";width:100%;height:100%}.os-size-observer-listener:empty:before,.os-size-observer-listener>.os-size-observer-listener-item{display:block;position:relative;padding:inherit;border:inherit;box-sizing:content-box;flex:auto}.os-size-observer-listener-scroll{box-sizing:border-box;display:flex}.os-size-observer-listener-item{right:0;bottom:0;overflow:hidden;direction:ltr;flex:none}.os-size-observer-listener-item-final{transition:none}@keyframes os-size-observer-appear-animation{0%{cursor:auto}to{cursor:none}}.os-trinsic-observer{flex:none;box-sizing:border-box;position:relative;max-width:0;max-height:1px;padding:0;margin:0;border:none;overflow:hidden;z-index:-1;height:0;top:calc(100% + 1px);contain:strict}.os-trinsic-observer:not(:empty){height:calc(100% + 1px);top:-1px}.os-trinsic-observer:not(:empty)>.os-size-observer{width:1000%;height:1000%;min-height:1px;min-width:1px}[data-overlayscrollbars-initialize]:not([data-overlayscrollbars-viewport]),[data-overlayscrollbars-viewport~=scrollbarHidden],html[data-overlayscrollbars-viewport~=scrollbarHidden]>body{scrollbar-width:none!important}[data-overlayscrollbars-initialize]:not([data-overlayscrollbars-viewport])::-webkit-scrollbar,[data-overlayscrollbars-initialize]:not([data-overlayscrollbars-viewport])::-webkit-scrollbar-corner,[data-overlayscrollbars-viewport~=scrollbarHidden]::-webkit-scrollbar,[data-overlayscrollbars-viewport~=scrollbarHidden]::-webkit-scrollbar-corner,html[data-overlayscrollbars-viewport~=scrollbarHidden]>body::-webkit-scrollbar,html[data-overlayscrollbars-viewport~=scrollbarHidden]>body::-webkit-scrollbar-corner{-webkit-appearance:none!important;appearance:none!important;display:none!important;width:0!important;height:0!important}[data-overlayscrollbars-initialize]:not([data-overlayscrollbars]):not(html):not(body){overflow:auto}html[data-overlayscrollbars-body]{overflow:hidden}html[data-overlayscrollbars-body],html[data-overlayscrollbars-body]>body{width:100%;height:100%;margin:0}html[data-overlayscrollbars-body]>body{overflow:visible;margin:0}[data-overlayscrollbars]{position:relative}[data-overlayscrollbars-padding],[data-overlayscrollbars~=host]{display:flex;align-items:stretch!important;flex-direction:row!important;flex-wrap:nowrap!important;scroll-behavior:auto!important}[data-overlayscrollbars-padding],[data-overlayscrollbars-viewport]:not([data-overlayscrollbars]){box-sizing:inherit;position:relative;flex:auto;height:auto;width:100%;min-width:0;padding:0;margin:0;border:none;z-index:0}[data-overlayscrollbars-viewport]:not([data-overlayscrollbars]){--os-vaw:0;--os-vah:0;outline:none}[data-overlayscrollbars-viewport]:not([data-overlayscrollbars]):focus{outline:none}[data-overlayscrollbars-viewport][data-overlayscrollbars-viewport~=arrange]:before{content:"";position:absolute;pointer-events:none;z-index:-1;min-width:1px;min-height:1px;width:var(--os-vaw);height:var(--os-vah)}[data-overlayscrollbars-padding],[data-overlayscrollbars~=host]{overflow:hidden!important}[data-overlayscrollbars-padding~=noClipping],[data-overlayscrollbars~=host][data-overlayscrollbars~=noClipping]{overflow:visible!important}[data-overlayscrollbars-viewport]{--os-viewport-overflow-x:hidden;--os-viewport-overflow-y:hidden;overflow-x:var(--os-viewport-overflow-x);overflow-y:var(--os-viewport-overflow-y)}[data-overlayscrollbars-viewport~=overflowXVisible]{--os-viewport-overflow-x:visible}[data-overlayscrollbars-viewport~=overflowXHidden]{--os-viewport-overflow-x:hidden}[data-overlayscrollbars-viewport~=overflowXScroll]{--os-viewport-overflow-x:scroll}[data-overlayscrollbars-viewport~=overflowYVisible]{--os-viewport-overflow-y:visible}[data-overlayscrollbars-viewport~=overflowYHidden]{--os-viewport-overflow-y:hidden}[data-overlayscrollbars-viewport~=overflowYScroll]{--os-viewport-overflow-y:scroll}[data-overlayscrollbars-viewport~=overflowImportant]{overflow-x:var(--os-viewport-overflow-x)!important;overflow-y:var(--os-viewport-overflow-y)!important}[data-overlayscrollbars-viewport~=noContent]:not(#osFakeId){font-size:0!important;line-height:0!important}[data-overlayscrollbars-viewport~=noContent]:not(#osFakeId):after,[data-overlayscrollbars-viewport~=noContent]:not(#osFakeId):before,[data-overlayscrollbars-viewport~=noContent]:not(#osFakeId)>*{display:none!important;position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border-width:0!important}[data-overlayscrollbars-viewport~=measuring],[data-overlayscrollbars-viewport~=scrolling]{scroll-behavior:auto!important;scroll-snap-type:none!important}[data-overlayscrollbars-viewport~=measuring][data-overlayscrollbars-viewport~=overflowXVisible]{overflow-x:hidden!important}[data-overlayscrollbars-viewport~=measuring][data-overlayscrollbars-viewport~=overflowYVisible]{overflow-y:hidden!important}[data-overlayscrollbars-content]{box-sizing:inherit}[data-overlayscrollbars-contents]:not(#osFakeId):not([data-overlayscrollbars-padding]):not([data-overlayscrollbars-viewport]):not([data-overlayscrollbars-content]){display:contents}[data-overlayscrollbars-grid],[data-overlayscrollbars-grid] [data-overlayscrollbars-padding]{display:grid;grid-template:1fr/1fr}[data-overlayscrollbars-grid]>[data-overlayscrollbars-padding],[data-overlayscrollbars-grid]>[data-overlayscrollbars-padding]>[data-overlayscrollbars-viewport],[data-overlayscrollbars-grid]>[data-overlayscrollbars-viewport]{height:auto!important;width:auto!important}@property --os-scroll-percent{syntax:"";inherits:true;initial-value:0}@property --os-viewport-percent{syntax:"";inherits:true;initial-value:0}.os-scrollbar{--os-viewport-percent:0;--os-scroll-percent:0;--os-scroll-direction:0;--os-scroll-percent-directional:calc(var(--os-scroll-percent) - (var(--os-scroll-percent) + (1 - var(--os-scroll-percent))*-1)*var(--os-scroll-direction));contain:size layout;contain:size layout style;transition:opacity .15s,visibility .15s,top .15s,right .15s,bottom .15s,left .15s;pointer-events:none;position:absolute;opacity:0;visibility:hidden}body>.os-scrollbar{position:fixed;z-index:99999}.os-scrollbar-transitionless{transition:none!important}.os-scrollbar-track{position:relative;padding:0!important;border:none!important}.os-scrollbar-handle{position:absolute}.os-scrollbar-handle,.os-scrollbar-track{pointer-events:none;width:100%;height:100%}.os-scrollbar.os-scrollbar-handle-interactive .os-scrollbar-handle,.os-scrollbar.os-scrollbar-track-interactive .os-scrollbar-track{pointer-events:auto;touch-action:none}.os-scrollbar-horizontal{bottom:0;left:0}.os-scrollbar-vertical{top:0;right:0}.os-scrollbar-rtl.os-scrollbar-horizontal{right:0}.os-scrollbar-rtl.os-scrollbar-vertical{right:auto;left:0}.os-scrollbar-visible{opacity:1;visibility:visible}.os-scrollbar-auto-hide.os-scrollbar-auto-hide-hidden{opacity:0;visibility:hidden}.os-scrollbar-interaction.os-scrollbar-visible{opacity:1;visibility:visible}.os-scrollbar-unusable,.os-scrollbar-unusable *,.os-scrollbar-wheel,.os-scrollbar-wheel *{pointer-events:none!important}.os-scrollbar-unusable .os-scrollbar-handle{opacity:0!important;transition:none!important}.os-scrollbar-horizontal .os-scrollbar-handle{bottom:0;left:calc(var(--os-scroll-percent-directional)*100%);transform:translateX(calc(var(--os-scroll-percent-directional)*-100%));width:calc(var(--os-viewport-percent)*100%)}.os-scrollbar-vertical .os-scrollbar-handle{right:0;top:calc(var(--os-scroll-percent-directional)*100%);transform:translateY(calc(var(--os-scroll-percent-directional)*-100%));height:calc(var(--os-viewport-percent)*100%)}@supports (container-type:size){.os-scrollbar-track{container-type:size}.os-scrollbar-horizontal .os-scrollbar-handle{left:auto;transform:translateX(calc(var(--os-scroll-percent-directional)*100cqw + var(--os-scroll-percent-directional)*-100%))}.os-scrollbar-vertical .os-scrollbar-handle{top:auto;transform:translateY(calc(var(--os-scroll-percent-directional)*100cqh + var(--os-scroll-percent-directional)*-100%))}.os-scrollbar-rtl.os-scrollbar-horizontal .os-scrollbar-handle{right:auto;left:0}}.os-scrollbar-rtl.os-scrollbar-vertical .os-scrollbar-handle{right:auto;left:0}.os-scrollbar.os-scrollbar-horizontal.os-scrollbar-cornerless,.os-scrollbar.os-scrollbar-horizontal.os-scrollbar-cornerless.os-scrollbar-rtl{left:0;right:0}.os-scrollbar.os-scrollbar-vertical.os-scrollbar-cornerless,.os-scrollbar.os-scrollbar-vertical.os-scrollbar-cornerless.os-scrollbar-rtl{top:0;bottom:0}@media print{.os-scrollbar{display:none}}.os-scrollbar{--os-size:0;--os-padding-perpendicular:0;--os-padding-axis:0;--os-track-border-radius:0;--os-track-bg:none;--os-track-bg-hover:none;--os-track-bg-active:none;--os-track-border:none;--os-track-border-hover:none;--os-track-border-active:none;--os-handle-border-radius:0;--os-handle-bg:none;--os-handle-bg-hover:none;--os-handle-bg-active:none;--os-handle-border:none;--os-handle-border-hover:none;--os-handle-border-active:none;--os-handle-min-size:33px;--os-handle-max-size:none;--os-handle-perpendicular-size:100%;--os-handle-perpendicular-size-hover:100%;--os-handle-perpendicular-size-active:100%;--os-handle-interactive-area-offset:0}.os-scrollbar-track{border:var(--os-track-border);border-radius:var(--os-track-border-radius);background:var(--os-track-bg);transition:opacity .15s,background-color .15s,border-color .15s}.os-scrollbar-track:hover{border:var(--os-track-border-hover);background:var(--os-track-bg-hover)}.os-scrollbar-track:active{border:var(--os-track-border-active);background:var(--os-track-bg-active)}.os-scrollbar-handle{border:var(--os-handle-border);border-radius:var(--os-handle-border-radius);background:var(--os-handle-bg)}.os-scrollbar-handle:hover{border:var(--os-handle-border-hover);background:var(--os-handle-bg-hover)}.os-scrollbar-handle:active{border:var(--os-handle-border-active);background:var(--os-handle-bg-active)}.os-scrollbar-handle:before,.os-scrollbar-track:before{content:"";position:absolute;left:0;right:0;top:0;bottom:0;display:block}.os-scrollbar-horizontal{padding:var(--os-padding-perpendicular) var(--os-padding-axis);right:var(--os-size);height:var(--os-size)}.os-scrollbar-horizontal.os-scrollbar-rtl{left:var(--os-size);right:0}.os-scrollbar-horizontal .os-scrollbar-track:before{top:calc(var(--os-padding-perpendicular)*-1);bottom:calc(var(--os-padding-perpendicular)*-1)}.os-scrollbar-horizontal .os-scrollbar-handle{min-width:var(--os-handle-min-size);max-width:var(--os-handle-max-size);height:var(--os-handle-perpendicular-size);transition:opacity .15s,background-color .15s,border-color .15s,height .15s}.os-scrollbar-horizontal .os-scrollbar-handle:before{top:calc((var(--os-padding-perpendicular) + var(--os-handle-interactive-area-offset))*-1);bottom:calc(var(--os-padding-perpendicular)*-1)}.os-scrollbar-horizontal:hover .os-scrollbar-handle{height:var(--os-handle-perpendicular-size-hover)}.os-scrollbar-horizontal:active .os-scrollbar-handle{height:var(--os-handle-perpendicular-size-active)}.os-scrollbar-vertical{padding:var(--os-padding-axis) var(--os-padding-perpendicular);bottom:var(--os-size);width:var(--os-size)}.os-scrollbar-vertical .os-scrollbar-track:before{left:calc(var(--os-padding-perpendicular)*-1);right:calc(var(--os-padding-perpendicular)*-1)}.os-scrollbar-vertical .os-scrollbar-handle{min-height:var(--os-handle-min-size);max-height:var(--os-handle-max-size);width:var(--os-handle-perpendicular-size);transition:opacity .15s,background-color .15s,border-color .15s,width .15s}.os-scrollbar-vertical .os-scrollbar-handle:before{left:calc((var(--os-padding-perpendicular) + var(--os-handle-interactive-area-offset))*-1);right:calc(var(--os-padding-perpendicular)*-1)}.os-scrollbar-vertical.os-scrollbar-rtl .os-scrollbar-handle:before{right:calc((var(--os-padding-perpendicular) + var(--os-handle-interactive-area-offset))*-1);left:calc(var(--os-padding-perpendicular)*-1)}.os-scrollbar-vertical:hover .os-scrollbar-handle{width:var(--os-handle-perpendicular-size-hover)}.os-scrollbar-vertical:active .os-scrollbar-handle{width:var(--os-handle-perpendicular-size-active)}.os-theme-none.os-scrollbar,[data-overlayscrollbars-viewport~=measuring]>.os-scrollbar{display:none!important}.os-theme-dark,.os-theme-light{box-sizing:border-box;--os-size:10px;--os-padding-perpendicular:2px;--os-padding-axis:2px;--os-track-border-radius:10px;--os-handle-interactive-area-offset:4px;--os-handle-border-radius:10px}.os-theme-dark{--os-handle-bg:rgba(0,0,0,.44);--os-handle-bg-hover:rgba(0,0,0,.55);--os-handle-bg-active:rgba(0,0,0,.66)}.os-theme-light{--os-handle-bg:hsla(0,0%,100%,.44);--os-handle-bg-hover:hsla(0,0%,100%,.55);--os-handle-bg-active:hsla(0,0%,100%,.66)} \ No newline at end of file diff --git a/frontend-dist/css/chunk-vendors.c8a4c1c7.css.gz b/frontend-dist/css/chunk-vendors.c8a4c1c7.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..fb9c22e67cf59583a288523fe1ed2f7668cb79d2 GIT binary patch literal 10688 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 literal 0 HcmV?d00001 diff --git a/frontend-dist/css/chunk-vendors.f9cd4701.css b/frontend-dist/css/chunk-vendors.f9cd4701.css deleted file mode 100644 index f1b92b0..0000000 --- a/frontend-dist/css/chunk-vendors.f9cd4701.css +++ /dev/null @@ -1,10 +0,0 @@ -@charset "UTF-8";:root{--el-color-white:#fff;--el-color-black:#000;--el-color-primary-rgb:64,158,255;--el-color-success-rgb:103,194,58;--el-color-warning-rgb:230,162,60;--el-color-danger-rgb:245,108,108;--el-color-error-rgb:245,108,108;--el-color-info-rgb:144,147,153;--el-font-size-extra-large:20px;--el-font-size-large:18px;--el-font-size-medium:16px;--el-font-size-base:14px;--el-font-size-small:13px;--el-font-size-extra-small:12px;--el-font-family:"Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif;--el-font-weight-primary:500;--el-font-line-height-primary:24px;--el-index-normal:1;--el-index-top:1000;--el-index-popper:2000;--el-border-radius-base:4px;--el-border-radius-small:2px;--el-border-radius-round:20px;--el-border-radius-circle:100%;--el-transition-duration:0.3s;--el-transition-duration-fast:0.2s;--el-transition-function-ease-in-out-bezier:cubic-bezier(0.645,0.045,0.355,1);--el-transition-function-fast-bezier:cubic-bezier(0.23,1,0.32,1);--el-transition-all:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);--el-transition-fade:opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-md-fade:transform var(--el-transition-duration) var(--el-transition-function-fast-bezier),opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-fade-linear:opacity var(--el-transition-duration-fast) linear;--el-transition-border:border-color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-box-shadow:box-shadow var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-color:color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-component-size-large:40px;--el-component-size:32px;--el-component-size-small:24px;color-scheme:light;--el-color-primary:#409eff;--el-color-primary-light-3:#79bbff;--el-color-primary-light-5:#a0cfff;--el-color-primary-light-7:#c6e2ff;--el-color-primary-light-8:#d9ecff;--el-color-primary-light-9:#ecf5ff;--el-color-primary-dark-2:#337ecc;--el-color-success:#67c23a;--el-color-success-light-3:#95d475;--el-color-success-light-5:#b3e19d;--el-color-success-light-7:#d1edc4;--el-color-success-light-8:#e1f3d8;--el-color-success-light-9:#f0f9eb;--el-color-success-dark-2:#529b2e;--el-color-warning:#e6a23c;--el-color-warning-light-3:#eebe77;--el-color-warning-light-5:#f3d19e;--el-color-warning-light-7:#f8e3c5;--el-color-warning-light-8:#faecd8;--el-color-warning-light-9:#fdf6ec;--el-color-warning-dark-2:#b88230;--el-color-danger:#f56c6c;--el-color-danger-light-3:#f89898;--el-color-danger-light-5:#fab6b6;--el-color-danger-light-7:#fcd3d3;--el-color-danger-light-8:#fde2e2;--el-color-danger-light-9:#fef0f0;--el-color-danger-dark-2:#c45656;--el-color-error:#f56c6c;--el-color-error-light-3:#f89898;--el-color-error-light-5:#fab6b6;--el-color-error-light-7:#fcd3d3;--el-color-error-light-8:#fde2e2;--el-color-error-light-9:#fef0f0;--el-color-error-dark-2:#c45656;--el-color-info:#909399;--el-color-info-light-3:#b1b3b8;--el-color-info-light-5:#c8c9cc;--el-color-info-light-7:#dedfe0;--el-color-info-light-8:#e9e9eb;--el-color-info-light-9:#f4f4f5;--el-color-info-dark-2:#73767a;--el-bg-color:#fff;--el-bg-color-page:#f2f3f5;--el-bg-color-overlay:#fff;--el-text-color-primary:#303133;--el-text-color-regular:#606266;--el-text-color-secondary:#909399;--el-text-color-placeholder:#a8abb2;--el-text-color-disabled:#c0c4cc;--el-border-color:#dcdfe6;--el-border-color-light:#e4e7ed;--el-border-color-lighter:#ebeef5;--el-border-color-extra-light:#f2f6fc;--el-border-color-dark:#d4d7de;--el-border-color-darker:#cdd0d6;--el-fill-color:#f0f2f5;--el-fill-color-light:#f5f7fa;--el-fill-color-lighter:#fafafa;--el-fill-color-extra-light:#fafcff;--el-fill-color-dark:#ebedf0;--el-fill-color-darker:#e6e8eb;--el-fill-color-blank:#fff;--el-box-shadow:0px 12px 32px 4px rgba(0,0,0,.04),0px 8px 20px rgba(0,0,0,.08);--el-box-shadow-light:0px 0px 12px rgba(0,0,0,.12);--el-box-shadow-lighter:0px 0px 6px rgba(0,0,0,.12);--el-box-shadow-dark:0px 16px 48px 16px rgba(0,0,0,.08),0px 12px 32px rgba(0,0,0,.12),0px 8px 16px -8px rgba(0,0,0,.16);--el-disabled-bg-color:var(--el-fill-color-light);--el-disabled-text-color:var(--el-text-color-placeholder);--el-disabled-border-color:var(--el-border-color-light);--el-overlay-color:rgba(0,0,0,.8);--el-overlay-color-light:rgba(0,0,0,.7);--el-overlay-color-lighter:rgba(0,0,0,.5);--el-mask-color:hsla(0,0%,100%,.9);--el-mask-color-extra-light:hsla(0,0%,100%,.3);--el-border-width:1px;--el-border-style:solid;--el-border-color-hover:var(--el-text-color-disabled);--el-border:var(--el-border-width) var(--el-border-style) var(--el-border-color);--el-svg-monochrome-grey:var(--el-border-color)}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transform-origin:center top;transition:var(--el-transition-md-fade)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transform-origin:center bottom;transition:var(--el-transition-md-fade)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transform-origin:top left;transition:var(--el-transition-md-fade)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-enter-active,.el-collapse-transition-leave-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.el-icon{--color:inherit;align-items:center;display:inline-flex;height:1em;justify-content:center;line-height:1em;position:relative;width:1em;fill:currentColor;color:var(--color);font-size:inherit}.el-icon.is-loading{animation:rotating 2s linear infinite}.el-icon svg{height:1em;width:1em}.el-badge{--el-badge-bg-color:var(--el-color-danger);--el-badge-radius:10px;--el-badge-font-size:12px;--el-badge-padding:6px;--el-badge-size:18px;display:inline-block;position:relative;vertical-align:middle;width:fit-content}.el-badge__content{align-items:center;background-color:var(--el-badge-bg-color);border:1px solid var(--el-bg-color);border-radius:var(--el-badge-radius);color:var(--el-color-white);display:inline-flex;font-size:var(--el-badge-font-size);height:var(--el-badge-size);justify-content:center;padding:0 var(--el-badge-padding);white-space:nowrap}.el-badge__content.is-fixed{position:absolute;right:calc(1px + var(--el-badge-size)/2);top:0;transform:translateY(-50%) translateX(100%);z-index:var(--el-index-normal)}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{border-radius:50%;height:8px;padding:0;right:0;width:8px}.el-badge__content.is-hide-zero{display:none}.el-badge__content--primary{background-color:var(--el-color-primary)}.el-badge__content--success{background-color:var(--el-color-success)}.el-badge__content--warning{background-color:var(--el-color-warning)}.el-badge__content--info{background-color:var(--el-color-info)}.el-badge__content--danger{background-color:var(--el-color-danger)}.el-message{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-border-color-lighter);--el-message-padding:11px 15px;--el-message-close-size:16px;--el-message-close-icon-color:var(--el-text-color-placeholder);--el-message-close-hover-color:var(--el-text-color-secondary);align-items:center;background-color:var(--el-message-bg-color);border-color:var(--el-message-border-color);border-radius:var(--el-border-radius-base);border-style:var(--el-border-style);border-width:var(--el-border-width);box-sizing:border-box;display:flex;gap:8px;max-width:calc(100% - 32px);padding:var(--el-message-padding);position:fixed;transition:opacity var(--el-transition-duration),transform .4s,top .4s,bottom .4s;width:fit-content}.el-message.is-left{left:16px}.el-message.is-right{right:16px}.el-message.is-center{left:0;margin:0 auto;right:0}.el-message.is-plain{background-color:var(--el-bg-color-overlay);border-color:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-message p{margin:0}.el-message--primary{--el-message-bg-color:var(--el-color-primary-light-9);--el-message-border-color:var(--el-color-primary-light-8);--el-message-text-color:var(--el-color-primary)}.el-message--primary .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--primary{color:var(--el-message-text-color)}.el-message--success{--el-message-bg-color:var(--el-color-success-light-9);--el-message-border-color:var(--el-color-success-light-8);--el-message-text-color:var(--el-color-success)}.el-message--success .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--success{color:var(--el-message-text-color)}.el-message--info{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-color-info-light-8);--el-message-text-color:var(--el-color-info)}.el-message--info .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--info{color:var(--el-message-text-color)}.el-message--warning{--el-message-bg-color:var(--el-color-warning-light-9);--el-message-border-color:var(--el-color-warning-light-8);--el-message-text-color:var(--el-color-warning)}.el-message--warning .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--warning{color:var(--el-message-text-color)}.el-message--error{--el-message-bg-color:var(--el-color-error-light-9);--el-message-border-color:var(--el-color-error-light-8);--el-message-text-color:var(--el-color-error)}.el-message--error .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--error{color:var(--el-message-text-color)}.el-message .el-message__badge{position:absolute;right:-8px;top:-8px}.el-message__content{font-size:14px;line-height:1;padding:0}.el-message__content:focus{outline-width:0}.el-message .el-message__closeBtn{color:var(--el-message-close-icon-color);cursor:pointer;font-size:var(--el-message-close-size)}.el-message .el-message__closeBtn:focus{outline-width:0}.el-message .el-message__closeBtn:hover{color:var(--el-message-close-hover-color)}.el-message-fade-enter-from,.el-message-fade-leave-to{opacity:0;transform:translateY(-100%)}.el-message-fade-enter-from.is-bottom,.el-message-fade-leave-to.is-bottom{transform:translateY(100%)}:root{--el-popup-modal-bg-color:var(--el-color-black);--el-popup-modal-opacity:0.5}.v-modal-enter{animation:v-modal-in var(--el-transition-duration-fast) ease}.v-modal-leave{animation:v-modal-out var(--el-transition-duration-fast) ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{background:var(--el-popup-modal-bg-color);height:100%;left:0;opacity:var(--el-popup-modal-opacity);position:fixed;top:0;width:100%}.el-popup-parent--hidden{overflow:hidden}.el-message-box{--el-messagebox-title-color:var(--el-text-color-primary);--el-messagebox-width:420px;--el-messagebox-border-radius:4px;--el-messagebox-box-shadow:var(--el-box-shadow);--el-messagebox-font-size:var(--el-font-size-large);--el-messagebox-content-font-size:var(--el-font-size-base);--el-messagebox-content-color:var(--el-text-color-regular);--el-messagebox-error-font-size:12px;--el-messagebox-padding-primary:12px;--el-messagebox-font-line-height:var(--el-font-line-height-primary);backface-visibility:hidden;background-color:var(--el-bg-color);border-radius:var(--el-messagebox-border-radius);box-shadow:var(--el-messagebox-box-shadow);box-sizing:border-box;display:inline-block;font-size:var(--el-messagebox-font-size);max-width:var(--el-messagebox-width);overflow:hidden;overflow-wrap:break-word;padding:var(--el-messagebox-padding-primary);position:relative;text-align:left;vertical-align:middle;width:100%}.el-message-box:focus{outline:none!important}.is-message-box .el-overlay-message-box{bottom:0;left:0;overflow:auto;padding:16px;position:fixed;right:0;text-align:center;top:0}.is-message-box .el-overlay-message-box:after{content:"";display:inline-block;height:100%;vertical-align:middle;width:0}.el-message-box.is-draggable .el-message-box__header{cursor:move;-webkit-user-select:none;user-select:none}.el-message-box__header{padding-bottom:var(--el-messagebox-padding-primary)}.el-message-box__header.show-close{padding-right:calc(var(--el-messagebox-padding-primary) + var(--el-message-close-size, 16px))}.el-message-box__title{color:var(--el-messagebox-title-color);font-size:var(--el-messagebox-font-size);line-height:var(--el-messagebox-font-line-height)}.el-message-box__headerbtn{background:transparent;border:none;cursor:pointer;font-size:var(--el-message-close-size,16px);height:40px;outline:none;padding:0;position:absolute;right:0;top:0;width:40px}.el-message-box__headerbtn .el-message-box__close{color:var(--el-color-info);font-size:inherit}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:var(--el-color-primary)}.el-message-box__content{color:var(--el-messagebox-content-color);font-size:var(--el-messagebox-content-font-size)}.el-message-box__container{align-items:center;display:flex;gap:12px}.el-message-box__input{padding-top:12px}.el-message-box__input div.invalid>input,.el-message-box__input div.invalid>input:focus{border-color:var(--el-color-error)}.el-message-box__status{font-size:24px}.el-message-box__status.el-message-box-icon--primary{--el-messagebox-color:var(--el-color-primary);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--success{--el-messagebox-color:var(--el-color-success);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--info{--el-messagebox-color:var(--el-color-info);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--warning{--el-messagebox-color:var(--el-color-warning);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--error{--el-messagebox-color:var(--el-color-error);color:var(--el-messagebox-color)}.el-message-box__message{margin:0;min-width:0}.el-message-box__message p{line-height:var(--el-messagebox-font-line-height);margin:0}.el-message-box__errormsg{color:var(--el-color-error);font-size:var(--el-messagebox-error-font-size);line-height:var(--el-messagebox-font-line-height)}.el-message-box__btns{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-end;padding-top:var(--el-messagebox-padding-primary)}.el-message-box--center .el-message-box__title{align-items:center;display:flex;gap:6px;justify-content:center}.el-message-box--center .el-message-box__status{font-size:inherit}.el-message-box--center .el-message-box__btns,.el-message-box--center .el-message-box__container{justify-content:center}.el-message-box-parent--hidden{overflow:hidden}.fade-in-linear-enter-active .el-overlay-message-box{animation:msgbox-fade-in var(--el-transition-duration)}.fade-in-linear-leave-active .el-overlay-message-box{animation:msgbox-fade-in var(--el-transition-duration) reverse}@keyframes msgbox-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}.el-button{--el-button-font-weight:var(--el-font-weight-primary);--el-button-border-color:var(--el-border-color);--el-button-bg-color:var(--el-fill-color-blank);--el-button-text-color:var(--el-text-color-regular);--el-button-disabled-text-color:var(--el-disabled-text-color);--el-button-disabled-bg-color:var(--el-fill-color-blank);--el-button-disabled-border-color:var(--el-border-color-light);--el-button-divide-border-color:hsla(0,0%,100%,.5);--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-color-primary-light-9);--el-button-hover-border-color:var(--el-color-primary-light-7);--el-button-active-text-color:var(--el-button-hover-text-color);--el-button-active-border-color:var(--el-color-primary);--el-button-active-bg-color:var(--el-button-hover-bg-color);--el-button-outline-color:var(--el-color-primary-light-5);--el-button-hover-link-text-color:var(--el-text-color-secondary);--el-button-active-color:var(--el-text-color-primary);align-items:center;-webkit-appearance:none;background-color:var(--el-button-bg-color);border:var(--el-border);border-color:var(--el-button-border-color);box-sizing:border-box;color:var(--el-button-text-color);cursor:pointer;display:inline-flex;font-weight:var(--el-button-font-weight);height:32px;justify-content:center;line-height:1;outline:none;text-align:center;transition:.1s;-webkit-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-button:hover{background-color:var(--el-button-hover-bg-color);border-color:var(--el-button-hover-border-color);color:var(--el-button-hover-text-color);outline:none}.el-button:active{background-color:var(--el-button-active-bg-color);border-color:var(--el-button-active-border-color);color:var(--el-button-active-text-color);outline:none}.el-button:focus-visible{outline:2px solid var(--el-button-outline-color);outline-offset:1px;transition:outline-offset 0s,outline 0s}.el-button>span{align-items:center;display:inline-flex}.el-button+.el-button{margin-left:12px}.el-button{border-radius:var(--el-border-radius-base);font-size:var(--el-font-size-base)}.el-button,.el-button.is-round{padding:8px 15px}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon]+span{margin-left:6px}.el-button [class*=el-icon] svg{vertical-align:bottom}.el-button.is-plain{--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-fill-color-blank);--el-button-hover-border-color:var(--el-color-primary)}.el-button.is-active{background-color:var(--el-button-active-bg-color);border-color:var(--el-button-active-border-color);color:var(--el-button-active-text-color);outline:none}.el-button.is-disabled,.el-button.is-disabled:hover{background-color:var(--el-button-disabled-bg-color);background-image:none;border-color:var(--el-button-disabled-border-color);color:var(--el-button-disabled-text-color);cursor:not-allowed}.el-button.is-loading{pointer-events:none;position:relative}.el-button.is-loading:before{background-color:var(--el-mask-color-extra-light);border-radius:inherit;bottom:-1px;content:"";left:-1px;pointer-events:none;position:absolute;right:-1px;top:-1px;z-index:1}.el-button.is-round{border-radius:var(--el-border-radius-round)}.el-button.is-circle{border-radius:50%;padding:8px;width:32px}.el-button.is-text{background-color:transparent;border:0 solid transparent;color:var(--el-button-text-color)}.el-button.is-text.is-disabled{background-color:transparent!important;color:var(--el-button-disabled-text-color)}.el-button.is-text:not(.is-disabled):hover{background-color:var(--el-fill-color-light)}.el-button.is-text:not(.is-disabled):focus-visible{outline:2px solid var(--el-button-outline-color);outline-offset:1px;transition:outline-offset 0s,outline 0s}.el-button.is-text:not(.is-disabled):active{background-color:var(--el-fill-color)}.el-button.is-text:not(.is-disabled).is-has-bg{background-color:var(--el-fill-color-light)}.el-button.is-text:not(.is-disabled).is-has-bg:hover{background-color:var(--el-fill-color)}.el-button.is-text:not(.is-disabled).is-has-bg:active{background-color:var(--el-fill-color-dark)}.el-button__text--expand{letter-spacing:.3em;margin-right:-.3em}.el-button.is-link{background:transparent;border-color:transparent;color:var(--el-button-text-color);height:auto;padding:2px}.el-button.is-link:hover{color:var(--el-button-hover-link-text-color)}.el-button.is-link.is-disabled{background-color:transparent!important;border-color:transparent!important;color:var(--el-button-disabled-text-color)}.el-button.is-link:not(.is-disabled):active,.el-button.is-link:not(.is-disabled):hover{background-color:transparent;border-color:transparent}.el-button.is-link:not(.is-disabled):active{color:var(--el-button-active-color)}.el-button--text{background:transparent;border-color:transparent;color:var(--el-color-primary);padding-left:0;padding-right:0}.el-button--text.is-disabled{background-color:transparent!important;border-color:transparent!important;color:var(--el-button-disabled-text-color)}.el-button--text:not(.is-disabled):hover{background-color:transparent;border-color:transparent;color:var(--el-color-primary-light-3)}.el-button--text:not(.is-disabled):active{background-color:transparent;border-color:transparent;color:var(--el-color-primary-dark-2)}.el-button__link--expand{letter-spacing:.3em;margin-right:-.3em}.el-button--primary{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-primary);--el-button-border-color:var(--el-color-primary);--el-button-outline-color:var(--el-color-primary-light-5);--el-button-active-color:var(--el-color-primary-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-primary-light-5);--el-button-hover-bg-color:var(--el-color-primary-light-3);--el-button-hover-border-color:var(--el-color-primary-light-3);--el-button-active-bg-color:var(--el-color-primary-dark-2);--el-button-active-border-color:var(--el-color-primary-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-primary-light-5);--el-button-disabled-border-color:var(--el-color-primary-light-5)}.el-button--primary.is-link,.el-button--primary.is-plain,.el-button--primary.is-text{--el-button-text-color:var(--el-color-primary);--el-button-bg-color:var(--el-color-primary-light-9);--el-button-border-color:var(--el-color-primary-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-primary);--el-button-hover-border-color:var(--el-color-primary);--el-button-active-text-color:var(--el-color-white)}.el-button--primary.is-link.is-disabled,.el-button--primary.is-link.is-disabled:active,.el-button--primary.is-link.is-disabled:focus,.el-button--primary.is-link.is-disabled:hover,.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover,.el-button--primary.is-text.is-disabled,.el-button--primary.is-text.is-disabled:active,.el-button--primary.is-text.is-disabled:focus,.el-button--primary.is-text.is-disabled:hover{background-color:var(--el-color-primary-light-9);border-color:var(--el-color-primary-light-8);color:var(--el-color-primary-light-5)}.el-button--success{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-success);--el-button-border-color:var(--el-color-success);--el-button-outline-color:var(--el-color-success-light-5);--el-button-active-color:var(--el-color-success-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-success-light-5);--el-button-hover-bg-color:var(--el-color-success-light-3);--el-button-hover-border-color:var(--el-color-success-light-3);--el-button-active-bg-color:var(--el-color-success-dark-2);--el-button-active-border-color:var(--el-color-success-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-success-light-5);--el-button-disabled-border-color:var(--el-color-success-light-5)}.el-button--success.is-link,.el-button--success.is-plain,.el-button--success.is-text{--el-button-text-color:var(--el-color-success);--el-button-bg-color:var(--el-color-success-light-9);--el-button-border-color:var(--el-color-success-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-success);--el-button-hover-border-color:var(--el-color-success);--el-button-active-text-color:var(--el-color-white)}.el-button--success.is-link.is-disabled,.el-button--success.is-link.is-disabled:active,.el-button--success.is-link.is-disabled:focus,.el-button--success.is-link.is-disabled:hover,.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover,.el-button--success.is-text.is-disabled,.el-button--success.is-text.is-disabled:active,.el-button--success.is-text.is-disabled:focus,.el-button--success.is-text.is-disabled:hover{background-color:var(--el-color-success-light-9);border-color:var(--el-color-success-light-8);color:var(--el-color-success-light-5)}.el-button--warning{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-warning);--el-button-border-color:var(--el-color-warning);--el-button-outline-color:var(--el-color-warning-light-5);--el-button-active-color:var(--el-color-warning-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-warning-light-5);--el-button-hover-bg-color:var(--el-color-warning-light-3);--el-button-hover-border-color:var(--el-color-warning-light-3);--el-button-active-bg-color:var(--el-color-warning-dark-2);--el-button-active-border-color:var(--el-color-warning-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-warning-light-5);--el-button-disabled-border-color:var(--el-color-warning-light-5)}.el-button--warning.is-link,.el-button--warning.is-plain,.el-button--warning.is-text{--el-button-text-color:var(--el-color-warning);--el-button-bg-color:var(--el-color-warning-light-9);--el-button-border-color:var(--el-color-warning-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-warning);--el-button-hover-border-color:var(--el-color-warning);--el-button-active-text-color:var(--el-color-white)}.el-button--warning.is-link.is-disabled,.el-button--warning.is-link.is-disabled:active,.el-button--warning.is-link.is-disabled:focus,.el-button--warning.is-link.is-disabled:hover,.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover,.el-button--warning.is-text.is-disabled,.el-button--warning.is-text.is-disabled:active,.el-button--warning.is-text.is-disabled:focus,.el-button--warning.is-text.is-disabled:hover{background-color:var(--el-color-warning-light-9);border-color:var(--el-color-warning-light-8);color:var(--el-color-warning-light-5)}.el-button--danger{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-danger);--el-button-border-color:var(--el-color-danger);--el-button-outline-color:var(--el-color-danger-light-5);--el-button-active-color:var(--el-color-danger-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-danger-light-5);--el-button-hover-bg-color:var(--el-color-danger-light-3);--el-button-hover-border-color:var(--el-color-danger-light-3);--el-button-active-bg-color:var(--el-color-danger-dark-2);--el-button-active-border-color:var(--el-color-danger-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-danger-light-5);--el-button-disabled-border-color:var(--el-color-danger-light-5)}.el-button--danger.is-link,.el-button--danger.is-plain,.el-button--danger.is-text{--el-button-text-color:var(--el-color-danger);--el-button-bg-color:var(--el-color-danger-light-9);--el-button-border-color:var(--el-color-danger-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-danger);--el-button-hover-border-color:var(--el-color-danger);--el-button-active-text-color:var(--el-color-white)}.el-button--danger.is-link.is-disabled,.el-button--danger.is-link.is-disabled:active,.el-button--danger.is-link.is-disabled:focus,.el-button--danger.is-link.is-disabled:hover,.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover,.el-button--danger.is-text.is-disabled,.el-button--danger.is-text.is-disabled:active,.el-button--danger.is-text.is-disabled:focus,.el-button--danger.is-text.is-disabled:hover{background-color:var(--el-color-danger-light-9);border-color:var(--el-color-danger-light-8);color:var(--el-color-danger-light-5)}.el-button--info{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-info);--el-button-border-color:var(--el-color-info);--el-button-outline-color:var(--el-color-info-light-5);--el-button-active-color:var(--el-color-info-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-info-light-5);--el-button-hover-bg-color:var(--el-color-info-light-3);--el-button-hover-border-color:var(--el-color-info-light-3);--el-button-active-bg-color:var(--el-color-info-dark-2);--el-button-active-border-color:var(--el-color-info-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-info-light-5);--el-button-disabled-border-color:var(--el-color-info-light-5)}.el-button--info.is-link,.el-button--info.is-plain,.el-button--info.is-text{--el-button-text-color:var(--el-color-info);--el-button-bg-color:var(--el-color-info-light-9);--el-button-border-color:var(--el-color-info-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-info);--el-button-hover-border-color:var(--el-color-info);--el-button-active-text-color:var(--el-color-white)}.el-button--info.is-link.is-disabled,.el-button--info.is-link.is-disabled:active,.el-button--info.is-link.is-disabled:focus,.el-button--info.is-link.is-disabled:hover,.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover,.el-button--info.is-text.is-disabled,.el-button--info.is-text.is-disabled:active,.el-button--info.is-text.is-disabled:focus,.el-button--info.is-text.is-disabled:hover{background-color:var(--el-color-info-light-9);border-color:var(--el-color-info-light-8);color:var(--el-color-info-light-5)}.el-button--large{--el-button-size:40px;height:var(--el-button-size)}.el-button--large [class*=el-icon]+span{margin-left:8px}.el-button--large{border-radius:var(--el-border-radius-base);font-size:var(--el-font-size-base);padding:12px 19px}.el-button--large.is-round{padding:12px 19px}.el-button--large.is-circle{padding:12px;width:var(--el-button-size)}.el-button--small{--el-button-size:24px;height:var(--el-button-size)}.el-button--small [class*=el-icon]+span{margin-left:4px}.el-button--small{border-radius:calc(var(--el-border-radius-base) - 1px);font-size:12px;padding:5px 11px}.el-button--small.is-round{padding:5px 11px}.el-button--small.is-circle{padding:5px;width:var(--el-button-size)}.el-textarea{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;display:inline-block;font-size:var(--el-font-size-base);position:relative;vertical-align:bottom;width:100%}.el-textarea__inner{-webkit-appearance:none;background-color:var(--el-input-bg-color,var(--el-fill-color-blank));background-image:none;border:none;border-radius:var(--el-input-border-radius,var(--el-border-radius-base));box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;box-sizing:border-box;color:var(--el-input-text-color,var(--el-text-color-regular));display:block;font-family:inherit;font-size:inherit;line-height:1.5;padding:5px 11px;position:relative;resize:vertical;transition:var(--el-transition-box-shadow);width:100%}.el-textarea__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-textarea__inner:focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset;outline:none}.el-textarea .el-input__count{background:var(--el-fill-color-blank);bottom:5px;color:var(--el-color-info);font-size:12px;line-height:14px;position:absolute;right:10px}.el-textarea .el-input__count.is-outside{background:transparent;bottom:unset;line-height:1;padding-top:2px;position:absolute;right:0;top:100%}.el-textarea.is-disabled .el-textarea__inner{background-color:var(--el-disabled-bg-color);box-shadow:0 0 0 1px var(--el-disabled-border-color) inset;color:var(--el-disabled-text-color);cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:var(--el-text-color-placeholder)}.el-textarea.is-exceed .el-textarea__inner{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-textarea.is-exceed .el-input__count{color:var(--el-color-danger)}.el-input{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;--el-input-height:var(--el-component-size);box-sizing:border-box;display:inline-flex;font-size:var(--el-font-size-base);line-height:var(--el-input-height);position:relative;vertical-align:middle;width:var(--el-input-width)}.el-input::-webkit-scrollbar{width:6px;z-index:11}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{background:var(--el-text-color-disabled);border-radius:5px;width:6px}.el-input::-webkit-scrollbar-corner,.el-input::-webkit-scrollbar-track{background:var(--el-fill-color-blank)}.el-input::-webkit-scrollbar-track-piece{background:var(--el-fill-color-blank);width:6px}.el-input .el-input__clear,.el-input .el-input__password{color:var(--el-input-icon-color);cursor:pointer;font-size:14px}.el-input .el-input__clear:hover,.el-input .el-input__password:hover{color:var(--el-input-clear-hover-color)}.el-input .el-input__count{align-items:center;color:var(--el-color-info);display:inline-flex;font-size:12px;height:100%}.el-input .el-input__count .el-input__count-inner{background:var(--el-fill-color-blank);display:inline-block;line-height:normal;padding-left:8px}.el-input .el-input__count.is-outside{height:unset;padding-top:2px;position:absolute;right:0;top:100%}.el-input .el-input__count.is-outside .el-input__count-inner{background:transparent;line-height:1;padding-left:0}.el-input__wrapper{align-items:center;background-color:var(--el-input-bg-color,var(--el-fill-color-blank));background-image:none;border-radius:var(--el-input-border-radius,var(--el-border-radius-base));box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;cursor:text;display:inline-flex;flex-grow:1;justify-content:center;padding:1px 11px;transform:translateZ(0);transition:var(--el-transition-box-shadow)}.el-input__wrapper:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-input__wrapper.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-input{--el-input-inner-height:calc(var(--el-input-height, 32px) - 2px)}.el-input__inner{-webkit-appearance:none;background:none;border:none;box-sizing:border-box;color:var(--el-input-text-color,var(--el-text-color-regular));flex-grow:1;font-size:inherit;height:var(--el-input-inner-height);line-height:var(--el-input-inner-height);outline:none;padding:0;width:100%}.el-input__inner:focus{outline:none}.el-input__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-input__inner[type=password]::-ms-reveal{display:none}.el-input__inner[type=number]{line-height:1}.el-input__prefix{color:var(--el-input-icon-color,var(--el-text-color-placeholder));display:inline-flex;flex-shrink:0;flex-wrap:nowrap;height:100%;line-height:var(--el-input-inner-height);pointer-events:none;text-align:center;transition:all var(--el-transition-duration);white-space:nowrap}.el-input__prefix-inner{align-items:center;display:inline-flex;justify-content:center;pointer-events:all}.el-input__prefix-inner>:last-child{margin-right:8px}.el-input__prefix-inner>:first-child,.el-input__prefix-inner>:first-child.el-input__icon{margin-left:0}.el-input__suffix{color:var(--el-input-icon-color,var(--el-text-color-placeholder));display:inline-flex;flex-shrink:0;flex-wrap:nowrap;height:100%;line-height:var(--el-input-inner-height);pointer-events:none;text-align:center;transition:all var(--el-transition-duration);white-space:nowrap}.el-input__suffix-inner{align-items:center;display:inline-flex;justify-content:center;pointer-events:all}.el-input__suffix-inner>:first-child{margin-left:8px}.el-input .el-input__icon{align-items:center;display:flex;height:inherit;justify-content:center;line-height:inherit;margin-left:8px;transition:all var(--el-transition-duration)}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-color, ) inset}.el-input.is-disabled{cursor:not-allowed}.el-input.is-disabled .el-input__wrapper{background-color:var(--el-disabled-bg-color);box-shadow:0 0 0 1px var(--el-disabled-border-color) inset;cursor:not-allowed}.el-input.is-disabled .el-input__inner{color:var(--el-disabled-text-color);-webkit-text-fill-color:var(--el-disabled-text-color);cursor:not-allowed}.el-input.is-disabled .el-input__inner::placeholder{color:var(--el-text-color-placeholder)}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-disabled .el-input__prefix-inner,.el-input.is-disabled .el-input__suffix-inner{pointer-events:none}.el-input.is-exceed .el-input__wrapper{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-input.is-exceed .el-input__suffix .el-input__count{color:var(--el-color-danger)}.el-input--large{--el-input-height:var(--el-component-size-large);font-size:14px}.el-input--large .el-input__wrapper{padding:1px 15px}.el-input--large{--el-input-inner-height:calc(var(--el-input-height, 40px) - 2px)}.el-input--small{--el-input-height:var(--el-component-size-small);font-size:12px}.el-input--small .el-input__wrapper{padding:1px 7px}.el-input--small{--el-input-inner-height:calc(var(--el-input-height, 24px) - 2px)}.el-input-group{align-items:stretch;display:inline-flex;width:100%}.el-input-group__append,.el-input-group__prepend{align-items:center;background-color:var(--el-fill-color-light);border-radius:var(--el-input-border-radius);color:var(--el-color-info);display:inline-flex;justify-content:center;min-height:100%;padding:0 20px;position:relative;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:none}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;flex:1;margin:0 -20px}.el-input-group__append button.el-button,.el-input-group__append button.el-button:hover,.el-input-group__append div.el-select .el-select__wrapper,.el-input-group__append div.el-select:hover .el-select__wrapper,.el-input-group__prepend button.el-button,.el-input-group__prepend button.el-button:hover,.el-input-group__prepend div.el-select .el-select__wrapper,.el-input-group__prepend div.el-select:hover .el-select__wrapper{background-color:transparent;border-color:transparent;color:inherit}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-bottom-right-radius:0;border-right:0;border-top-right-radius:0;box-shadow:1px 0 0 0 var(--el-input-border-color) inset,0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset}.el-input-group__append{border-bottom-left-radius:0;border-left:0;border-top-left-radius:0;box-shadow:0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset,-1px 0 0 0 var(--el-input-border-color) inset}.el-input-group--prepend>.el-input__wrapper{border-bottom-left-radius:0;border-top-left-radius:0}.el-input-group--prepend .el-input-group__prepend .el-select .el-select__wrapper{border-bottom-right-radius:0;border-top-right-radius:0;box-shadow:1px 0 0 0 var(--el-input-border-color) inset,0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset}.el-input-group--append>.el-input__wrapper{border-bottom-right-radius:0;border-top-right-radius:0}.el-input-group--append .el-input-group__append .el-select .el-select__wrapper{border-bottom-left-radius:0;border-top-left-radius:0;box-shadow:0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset,-1px 0 0 0 var(--el-input-border-color) inset}.el-input-hidden{display:none!important}.el-overlay{background-color:var(--el-overlay-color-lighter);bottom:0;height:100%;left:0;overflow:auto;position:fixed;right:0;top:0;z-index:2000}.el-overlay .el-overlay-root{height:0}html.dark{color-scheme:dark;--el-color-primary:#409eff;--el-color-primary-light-3:#3375b9;--el-color-primary-light-5:#2a598a;--el-color-primary-light-7:#213d5b;--el-color-primary-light-8:#1d3043;--el-color-primary-light-9:#18222b;--el-color-primary-dark-2:#66b1ff;--el-color-success:#67c23a;--el-color-success-light-3:#4e8e2f;--el-color-success-light-5:#3e6b27;--el-color-success-light-7:#2d481f;--el-color-success-light-8:#25371c;--el-color-success-light-9:#1c2518;--el-color-success-dark-2:#85ce61;--el-color-warning:#e6a23c;--el-color-warning-light-3:#a77730;--el-color-warning-light-5:#7d5b28;--el-color-warning-light-7:#533f20;--el-color-warning-light-8:#3e301c;--el-color-warning-light-9:#292218;--el-color-warning-dark-2:#ebb563;--el-color-danger:#f56c6c;--el-color-danger-light-3:#b25252;--el-color-danger-light-5:#854040;--el-color-danger-light-7:#582e2e;--el-color-danger-light-8:#412626;--el-color-danger-light-9:#2a1d1d;--el-color-danger-dark-2:#f78989;--el-color-error:#f56c6c;--el-color-error-light-3:#b25252;--el-color-error-light-5:#854040;--el-color-error-light-7:#582e2e;--el-color-error-light-8:#412626;--el-color-error-light-9:#2a1d1d;--el-color-error-dark-2:#f78989;--el-color-info:#909399;--el-color-info-light-3:#6b6d71;--el-color-info-light-5:#525457;--el-color-info-light-7:#393a3c;--el-color-info-light-8:#2d2d2f;--el-color-info-light-9:#202121;--el-color-info-dark-2:#a6a9ad;--el-box-shadow:0px 12px 32px 4px rgba(0,0,0,.36),0px 8px 20px rgba(0,0,0,.72);--el-box-shadow-light:0px 0px 12px rgba(0,0,0,.72);--el-box-shadow-lighter:0px 0px 6px rgba(0,0,0,.72);--el-box-shadow-dark:0px 16px 48px 16px rgba(0,0,0,.72),0px 12px 32px #000,0px 8px 16px -8px #000;--el-bg-color-page:#0a0a0a;--el-bg-color:#141414;--el-bg-color-overlay:#1d1e1f;--el-text-color-primary:#e5eaf3;--el-text-color-regular:#cfd3dc;--el-text-color-secondary:#a3a6ad;--el-text-color-placeholder:#8d9095;--el-text-color-disabled:#6c6e72;--el-border-color-darker:#636466;--el-border-color-dark:#58585b;--el-border-color:#4c4d4f;--el-border-color-light:#414243;--el-border-color-lighter:#363637;--el-border-color-extra-light:#2b2b2c;--el-fill-color-darker:#424243;--el-fill-color-dark:#39393a;--el-fill-color:#303030;--el-fill-color-light:#262727;--el-fill-color-lighter:#1d1d1d;--el-fill-color-extra-light:#191919;--el-fill-color-blank:#141414;--el-mask-color:rgba(0,0,0,.8);--el-mask-color-extra-light:rgba(0,0,0,.3)}html.dark .el-button{--el-button-disabled-text-color:hsla(0,0%,100%,.5)}html.dark .el-card{--el-card-bg-color:var(--el-bg-color-overlay)}html.dark .el-empty{--el-empty-fill-color-0:var(--el-color-black);--el-empty-fill-color-1:#4b4b52;--el-empty-fill-color-2:#36383d;--el-empty-fill-color-3:#1e1e20;--el-empty-fill-color-4:#262629;--el-empty-fill-color-5:#202124;--el-empty-fill-color-6:#212224;--el-empty-fill-color-7:#1b1c1f;--el-empty-fill-color-8:#1c1d1f;--el-empty-fill-color-9:#18181a} -/*! - * OverlayScrollbars - * Version: 2.13.0 - * - * Copyright (c) Rene Haas | KingSora. - * https://github.com/KingSora - * - * Released under the MIT license. - */.os-size-observer,.os-size-observer-listener{scroll-behavior:auto!important;direction:inherit;pointer-events:none;overflow:hidden;visibility:hidden;box-sizing:border-box}.os-size-observer,.os-size-observer-listener,.os-size-observer-listener-item,.os-size-observer-listener-item-final{writing-mode:horizontal-tb;position:absolute;left:0;top:0}.os-size-observer{z-index:-1;contain:strict;display:flex;flex-direction:row;flex-wrap:nowrap;padding:inherit;border:inherit;box-sizing:inherit;margin:-133px;top:0;right:0;bottom:0;left:0;transform:scale(.1)}.os-size-observer:before{content:"";flex:none;box-sizing:inherit;padding:10px;width:10px;height:10px}.os-size-observer-appear{animation:os-size-observer-appear-animation 1ms forwards}.os-size-observer-listener{box-sizing:border-box;position:relative;flex:auto;padding:inherit;border:inherit;margin:-133px;transform:scale(10)}.os-size-observer-listener.ltr{margin-right:-266px;margin-left:0}.os-size-observer-listener.rtl{margin-left:-266px;margin-right:0}.os-size-observer-listener:empty:before{content:"";width:100%;height:100%}.os-size-observer-listener:empty:before,.os-size-observer-listener>.os-size-observer-listener-item{display:block;position:relative;padding:inherit;border:inherit;box-sizing:content-box;flex:auto}.os-size-observer-listener-scroll{box-sizing:border-box;display:flex}.os-size-observer-listener-item{right:0;bottom:0;overflow:hidden;direction:ltr;flex:none}.os-size-observer-listener-item-final{transition:none}@keyframes os-size-observer-appear-animation{0%{cursor:auto}to{cursor:none}}.os-trinsic-observer{flex:none;box-sizing:border-box;position:relative;max-width:0;max-height:1px;padding:0;margin:0;border:none;overflow:hidden;z-index:-1;height:0;top:calc(100% + 1px);contain:strict}.os-trinsic-observer:not(:empty){height:calc(100% + 1px);top:-1px}.os-trinsic-observer:not(:empty)>.os-size-observer{width:1000%;height:1000%;min-height:1px;min-width:1px}[data-overlayscrollbars-initialize]:not([data-overlayscrollbars-viewport]),[data-overlayscrollbars-viewport~=scrollbarHidden],html[data-overlayscrollbars-viewport~=scrollbarHidden]>body{scrollbar-width:none!important}[data-overlayscrollbars-initialize]:not([data-overlayscrollbars-viewport])::-webkit-scrollbar,[data-overlayscrollbars-initialize]:not([data-overlayscrollbars-viewport])::-webkit-scrollbar-corner,[data-overlayscrollbars-viewport~=scrollbarHidden]::-webkit-scrollbar,[data-overlayscrollbars-viewport~=scrollbarHidden]::-webkit-scrollbar-corner,html[data-overlayscrollbars-viewport~=scrollbarHidden]>body::-webkit-scrollbar,html[data-overlayscrollbars-viewport~=scrollbarHidden]>body::-webkit-scrollbar-corner{-webkit-appearance:none!important;appearance:none!important;display:none!important;width:0!important;height:0!important}[data-overlayscrollbars-initialize]:not([data-overlayscrollbars]):not(html):not(body){overflow:auto}html[data-overlayscrollbars-body]{overflow:hidden}html[data-overlayscrollbars-body],html[data-overlayscrollbars-body]>body{width:100%;height:100%;margin:0}html[data-overlayscrollbars-body]>body{overflow:visible;margin:0}[data-overlayscrollbars]{position:relative}[data-overlayscrollbars-padding],[data-overlayscrollbars~=host]{display:flex;align-items:stretch!important;flex-direction:row!important;flex-wrap:nowrap!important;scroll-behavior:auto!important}[data-overlayscrollbars-padding],[data-overlayscrollbars-viewport]:not([data-overlayscrollbars]){box-sizing:inherit;position:relative;flex:auto;height:auto;width:100%;min-width:0;padding:0;margin:0;border:none;z-index:0}[data-overlayscrollbars-viewport]:not([data-overlayscrollbars]){--os-vaw:0;--os-vah:0;outline:none}[data-overlayscrollbars-viewport]:not([data-overlayscrollbars]):focus{outline:none}[data-overlayscrollbars-viewport][data-overlayscrollbars-viewport~=arrange]:before{content:"";position:absolute;pointer-events:none;z-index:-1;min-width:1px;min-height:1px;width:var(--os-vaw);height:var(--os-vah)}[data-overlayscrollbars-padding],[data-overlayscrollbars~=host]{overflow:hidden!important}[data-overlayscrollbars-padding~=noClipping],[data-overlayscrollbars~=host][data-overlayscrollbars~=noClipping]{overflow:visible!important}[data-overlayscrollbars-viewport]{--os-viewport-overflow-x:hidden;--os-viewport-overflow-y:hidden;overflow-x:var(--os-viewport-overflow-x);overflow-y:var(--os-viewport-overflow-y)}[data-overlayscrollbars-viewport~=overflowXVisible]{--os-viewport-overflow-x:visible}[data-overlayscrollbars-viewport~=overflowXHidden]{--os-viewport-overflow-x:hidden}[data-overlayscrollbars-viewport~=overflowXScroll]{--os-viewport-overflow-x:scroll}[data-overlayscrollbars-viewport~=overflowYVisible]{--os-viewport-overflow-y:visible}[data-overlayscrollbars-viewport~=overflowYHidden]{--os-viewport-overflow-y:hidden}[data-overlayscrollbars-viewport~=overflowYScroll]{--os-viewport-overflow-y:scroll}[data-overlayscrollbars-viewport~=overflowImportant]{overflow-x:var(--os-viewport-overflow-x)!important;overflow-y:var(--os-viewport-overflow-y)!important}[data-overlayscrollbars-viewport~=noContent]:not(#osFakeId){font-size:0!important;line-height:0!important}[data-overlayscrollbars-viewport~=noContent]:not(#osFakeId):after,[data-overlayscrollbars-viewport~=noContent]:not(#osFakeId):before,[data-overlayscrollbars-viewport~=noContent]:not(#osFakeId)>*{display:none!important;position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border-width:0!important}[data-overlayscrollbars-viewport~=measuring],[data-overlayscrollbars-viewport~=scrolling]{scroll-behavior:auto!important;scroll-snap-type:none!important}[data-overlayscrollbars-viewport~=measuring][data-overlayscrollbars-viewport~=overflowXVisible]{overflow-x:hidden!important}[data-overlayscrollbars-viewport~=measuring][data-overlayscrollbars-viewport~=overflowYVisible]{overflow-y:hidden!important}[data-overlayscrollbars-content]{box-sizing:inherit}[data-overlayscrollbars-contents]:not(#osFakeId):not([data-overlayscrollbars-padding]):not([data-overlayscrollbars-viewport]):not([data-overlayscrollbars-content]){display:contents}[data-overlayscrollbars-grid],[data-overlayscrollbars-grid] [data-overlayscrollbars-padding]{display:grid;grid-template:1fr/1fr}[data-overlayscrollbars-grid]>[data-overlayscrollbars-padding],[data-overlayscrollbars-grid]>[data-overlayscrollbars-padding]>[data-overlayscrollbars-viewport],[data-overlayscrollbars-grid]>[data-overlayscrollbars-viewport]{height:auto!important;width:auto!important}@property --os-scroll-percent{syntax:"";inherits:true;initial-value:0}@property --os-viewport-percent{syntax:"";inherits:true;initial-value:0}.os-scrollbar{--os-viewport-percent:0;--os-scroll-percent:0;--os-scroll-direction:0;--os-scroll-percent-directional:calc(var(--os-scroll-percent) - (var(--os-scroll-percent) + (1 - var(--os-scroll-percent))*-1)*var(--os-scroll-direction));contain:size layout;contain:size layout style;transition:opacity .15s,visibility .15s,top .15s,right .15s,bottom .15s,left .15s;pointer-events:none;position:absolute;opacity:0;visibility:hidden}body>.os-scrollbar{position:fixed;z-index:99999}.os-scrollbar-transitionless{transition:none!important}.os-scrollbar-track{position:relative;padding:0!important;border:none!important}.os-scrollbar-handle{position:absolute}.os-scrollbar-handle,.os-scrollbar-track{pointer-events:none;width:100%;height:100%}.os-scrollbar.os-scrollbar-handle-interactive .os-scrollbar-handle,.os-scrollbar.os-scrollbar-track-interactive .os-scrollbar-track{pointer-events:auto;touch-action:none}.os-scrollbar-horizontal{bottom:0;left:0}.os-scrollbar-vertical{top:0;right:0}.os-scrollbar-rtl.os-scrollbar-horizontal{right:0}.os-scrollbar-rtl.os-scrollbar-vertical{right:auto;left:0}.os-scrollbar-visible{opacity:1;visibility:visible}.os-scrollbar-auto-hide.os-scrollbar-auto-hide-hidden{opacity:0;visibility:hidden}.os-scrollbar-interaction.os-scrollbar-visible{opacity:1;visibility:visible}.os-scrollbar-unusable,.os-scrollbar-unusable *,.os-scrollbar-wheel,.os-scrollbar-wheel *{pointer-events:none!important}.os-scrollbar-unusable .os-scrollbar-handle{opacity:0!important;transition:none!important}.os-scrollbar-horizontal .os-scrollbar-handle{bottom:0;left:calc(var(--os-scroll-percent-directional)*100%);transform:translateX(calc(var(--os-scroll-percent-directional)*-100%));width:calc(var(--os-viewport-percent)*100%)}.os-scrollbar-vertical .os-scrollbar-handle{right:0;top:calc(var(--os-scroll-percent-directional)*100%);transform:translateY(calc(var(--os-scroll-percent-directional)*-100%));height:calc(var(--os-viewport-percent)*100%)}@supports (container-type:size){.os-scrollbar-track{container-type:size}.os-scrollbar-horizontal .os-scrollbar-handle{left:auto;transform:translateX(calc(var(--os-scroll-percent-directional)*100cqw + var(--os-scroll-percent-directional)*-100%))}.os-scrollbar-vertical .os-scrollbar-handle{top:auto;transform:translateY(calc(var(--os-scroll-percent-directional)*100cqh + var(--os-scroll-percent-directional)*-100%))}.os-scrollbar-rtl.os-scrollbar-horizontal .os-scrollbar-handle{right:auto;left:0}}.os-scrollbar-rtl.os-scrollbar-vertical .os-scrollbar-handle{right:auto;left:0}.os-scrollbar.os-scrollbar-horizontal.os-scrollbar-cornerless,.os-scrollbar.os-scrollbar-horizontal.os-scrollbar-cornerless.os-scrollbar-rtl{left:0;right:0}.os-scrollbar.os-scrollbar-vertical.os-scrollbar-cornerless,.os-scrollbar.os-scrollbar-vertical.os-scrollbar-cornerless.os-scrollbar-rtl{top:0;bottom:0}@media print{.os-scrollbar{display:none}}.os-scrollbar{--os-size:0;--os-padding-perpendicular:0;--os-padding-axis:0;--os-track-border-radius:0;--os-track-bg:none;--os-track-bg-hover:none;--os-track-bg-active:none;--os-track-border:none;--os-track-border-hover:none;--os-track-border-active:none;--os-handle-border-radius:0;--os-handle-bg:none;--os-handle-bg-hover:none;--os-handle-bg-active:none;--os-handle-border:none;--os-handle-border-hover:none;--os-handle-border-active:none;--os-handle-min-size:33px;--os-handle-max-size:none;--os-handle-perpendicular-size:100%;--os-handle-perpendicular-size-hover:100%;--os-handle-perpendicular-size-active:100%;--os-handle-interactive-area-offset:0}.os-scrollbar-track{border:var(--os-track-border);border-radius:var(--os-track-border-radius);background:var(--os-track-bg);transition:opacity .15s,background-color .15s,border-color .15s}.os-scrollbar-track:hover{border:var(--os-track-border-hover);background:var(--os-track-bg-hover)}.os-scrollbar-track:active{border:var(--os-track-border-active);background:var(--os-track-bg-active)}.os-scrollbar-handle{border:var(--os-handle-border);border-radius:var(--os-handle-border-radius);background:var(--os-handle-bg)}.os-scrollbar-handle:hover{border:var(--os-handle-border-hover);background:var(--os-handle-bg-hover)}.os-scrollbar-handle:active{border:var(--os-handle-border-active);background:var(--os-handle-bg-active)}.os-scrollbar-handle:before,.os-scrollbar-track:before{content:"";position:absolute;left:0;right:0;top:0;bottom:0;display:block}.os-scrollbar-horizontal{padding:var(--os-padding-perpendicular) var(--os-padding-axis);right:var(--os-size);height:var(--os-size)}.os-scrollbar-horizontal.os-scrollbar-rtl{left:var(--os-size);right:0}.os-scrollbar-horizontal .os-scrollbar-track:before{top:calc(var(--os-padding-perpendicular)*-1);bottom:calc(var(--os-padding-perpendicular)*-1)}.os-scrollbar-horizontal .os-scrollbar-handle{min-width:var(--os-handle-min-size);max-width:var(--os-handle-max-size);height:var(--os-handle-perpendicular-size);transition:opacity .15s,background-color .15s,border-color .15s,height .15s}.os-scrollbar-horizontal .os-scrollbar-handle:before{top:calc((var(--os-padding-perpendicular) + var(--os-handle-interactive-area-offset))*-1);bottom:calc(var(--os-padding-perpendicular)*-1)}.os-scrollbar-horizontal:hover .os-scrollbar-handle{height:var(--os-handle-perpendicular-size-hover)}.os-scrollbar-horizontal:active .os-scrollbar-handle{height:var(--os-handle-perpendicular-size-active)}.os-scrollbar-vertical{padding:var(--os-padding-axis) var(--os-padding-perpendicular);bottom:var(--os-size);width:var(--os-size)}.os-scrollbar-vertical .os-scrollbar-track:before{left:calc(var(--os-padding-perpendicular)*-1);right:calc(var(--os-padding-perpendicular)*-1)}.os-scrollbar-vertical .os-scrollbar-handle{min-height:var(--os-handle-min-size);max-height:var(--os-handle-max-size);width:var(--os-handle-perpendicular-size);transition:opacity .15s,background-color .15s,border-color .15s,width .15s}.os-scrollbar-vertical .os-scrollbar-handle:before{left:calc((var(--os-padding-perpendicular) + var(--os-handle-interactive-area-offset))*-1);right:calc(var(--os-padding-perpendicular)*-1)}.os-scrollbar-vertical.os-scrollbar-rtl .os-scrollbar-handle:before{right:calc((var(--os-padding-perpendicular) + var(--os-handle-interactive-area-offset))*-1);left:calc(var(--os-padding-perpendicular)*-1)}.os-scrollbar-vertical:hover .os-scrollbar-handle{width:var(--os-handle-perpendicular-size-hover)}.os-scrollbar-vertical:active .os-scrollbar-handle{width:var(--os-handle-perpendicular-size-active)}.os-theme-none.os-scrollbar,[data-overlayscrollbars-viewport~=measuring]>.os-scrollbar{display:none!important}.os-theme-dark,.os-theme-light{box-sizing:border-box;--os-size:10px;--os-padding-perpendicular:2px;--os-padding-axis:2px;--os-track-border-radius:10px;--os-handle-interactive-area-offset:4px;--os-handle-border-radius:10px}.os-theme-dark{--os-handle-bg:rgba(0,0,0,.44);--os-handle-bg-hover:rgba(0,0,0,.55);--os-handle-bg-active:rgba(0,0,0,.66)}.os-theme-light{--os-handle-bg:hsla(0,0%,100%,.44);--os-handle-bg-hover:hsla(0,0%,100%,.55);--os-handle-bg-active:hsla(0,0%,100%,.66)} \ No newline at end of file diff --git a/frontend-dist/css/chunk-vendors.f9cd4701.css.gz b/frontend-dist/css/chunk-vendors.f9cd4701.css.gz deleted file mode 100644 index 4e504129fde5618f98bba28ce438fc5799380cd0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9747 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

Sanyue ImgHub

\ No newline at end of file +Sanyue ImgHub
\ No newline at end of file diff --git a/frontend-dist/index.html.gz b/frontend-dist/index.html.gz index d1eff6d8ec2ff2c3cbbbb752cf9442b1405ac747..6829e24b827c0ec3b1697134ee3360fff543dc27 100644 GIT binary patch literal 600 zcmV-e0;l~SiwFP!000023YApBZrd;n{S{6-^b*@?8gwmS8z_bW>rUN@V!I8pMB8j+ z(UWLr`THSunl&wkZ5KmN;(H|ZOyzGZ8`<>;t#q!;_g`?@H-%DV-lDc;-l1qPtqu{T zP=nOTl{)OUB7K5C1{w?XEqS;}-gDP$p~|5G!(Px!p>97EXd8SYdEH^5M#62+L7v5J z$x2&T9LZoZfdzRI(k_WcJ1ou@o&HJP&>is*F-$;L4hzqVC)uPXDGZMoRGB;S8wltM zMTWhCHeg+-EQ%H~S%;Q%=D6Xs_svPT?t6!c@L<~HKdGILn}6YeVaK6RZ|ilnUM^2G z`hbqLJu1}fC1!WpP)&xDFW3xDht!(O3vI5~>6Ytyr9j6*?L!spot@X&;mib%kpng4 zPwcQ5O`u+AU+~e9d+m1v!fn@l94biQ20FGFJk;b6T8=`#f!=AUIdrE6Z*aHeVB;&f z#X)azqOt($bn^@v$Ag6^9Q4b7M-S3+cqROqRGABj!}6r?JexQ3xka#8W7xM`V^9!- zDOC0tGt&-!lZ@yshnTKb*VY()o<2rZ=GjdBn}qKB^uk=2`r2N;AWp6xd^GW8Hgl!d z=G?qXO^j+bKg!NwY!OAhW>1Nh%hjc+uKvWy=JBoA?#kTru>%S0oAN831%${U?4TM1 z;&fx*scYJy0?QcvnZTCA2KvA~2DgJPNy~%4Cq3%>`6AHoC(ovE=TJvHU?2hE$sh6q mrg?VAnrFWYu`~kNX~_1~S{lndo2$*H*XS3+sgD$$1ONa@I4lbQ literal 601 zcmV-f0;c^RiwFP!000023YApBZqzUk{guHSdf6n~b}3saiBusZ%BfHxxS@$XN!)cj z!JcHC_Cj6?b^E>`)6gTyV@HJ=Ep2-a@+59+ zjkJZK(P~QeU}3!#i!O;89Tn$`4u9Hi=#F@Z6!risM}_Cbqij-JDKw81RGB;LHxS4b z%4+rs+CX)ovM4B4XB`=fnd64j-Zv-V*!PYS;X${_e^NV)n}6YeX2+pWuj^H{S}spC z`aq7+92IKz60cQ;*?FBE&UD}yIoQVf z6FUq=9c(XlD){KgJ^I~1aN9K>h6)n6fsPFY54Cj!El07wf!?9i9J*73H?-SwF!6=l z;-I%UQCWcPuz3Qt@Ot*vIBqMplA*On{esf_~ls-gN=GjdBn*{cKdbu)as`cs_aqsHEM;)JMtFN_L zyuc2Erh zaergqZP&Cz1%@g5Gl4CK4fKI~3T_8mD=iNKA92L{`69?qlV?)6bA*u&7_5Ns-XH4+ nO7rZHHP3z*V(bXk?1yZs*4VMkv$@)A{~G-QN9$H_odf^?o|q!C diff --git a/frontend-dist/js/126.844eba4a.js b/frontend-dist/js/126.844eba4a.js new file mode 100644 index 0000000..895cfe0 --- /dev/null +++ b/frontend-dist/js/126.844eba4a.js @@ -0,0 +1,23 @@ +"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[126],{2893:function(e,t,s){s(85331)},3261:function(e,t,s){s(85331)},4885:function(e,t,s){s(85331)},5802:function(e,t,s){s(85331),s(38736),s(213),s(85970)},10126:function(e,t,s){s.r(t),s.d(t,{default:function(){return Gm}});var i=s(56768),a=s(24232);const n={class:"menu-list"},o=["onClick"],l={class:"menu-text"};function r(e,t,s,r,d,c){const h=(0,i.g2)("font-awesome-icon");return(0,i.uX)(),(0,i.CE)("div",{class:(0,a.C4)(["sidebar-container",{"is-collapsed":s.isCollapse}]),ref:"sidebar",style:(0,a.Tr)(c.sidebarStyle)},[(0,i.Lk)("div",n,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(d.menuItems,t=>((0,i.uX)(),(0,i.CE)("div",{key:t.index,class:(0,a.C4)(["menu-item",{"is-active":s.activeIndex===t.index}]),onClick:e=>c.handleSelect(t.index)},[(0,i.bF)(h,{icon:t.icon,class:"menu-icon"},null,8,["icon"]),(0,i.Lk)("span",l,(0,a.v_)(e.$t(t.titleKey)),1)],10,o))),128))]),(0,i.Lk)("div",{class:"toggle-button",onClick:t[0]||(t[0]=(...e)=>c.toggleCollapse&&c.toggleCollapse(...e))},[(0,i.bF)(h,{icon:s.isCollapse?"angle-double-right":"angle-double-left"},null,8,["icon"])])],6)}var d={name:"SysConfigTabs",props:{activeIndex:{type:String,default:"status"},isCollapse:{type:Boolean,default:!1}},data(){return{expandedWidth:null,menuItems:[{index:"status",icon:"chart-bar",titleKey:"sysConfigTabs.systemStatus"},{index:"upload",icon:"cloud-upload",titleKey:"sysConfigTabs.uploadSettings"},{index:"security",icon:"shield",titleKey:"sysConfigTabs.securitySettings"},{index:"page",icon:"pager",titleKey:"sysConfigTabs.pageSettings"},{index:"ai",icon:"comments",titleKey:"sysAI.title"},{index:"others",icon:"cog",titleKey:"sysConfigTabs.otherSettings"}]}},computed:{collapsedWidth(){return window.innerWidth<=768?50:56},sidebarStyle(){return this.isCollapse?{width:this.collapsedWidth+"px"}:this.expandedWidth?{width:this.expandedWidth+"px"}:{}}},watch:{"$i18n.locale"(){this.$nextTick(()=>this.measureWidth())}},methods:{toggleCollapse(){this.$emit("update:isCollapse",!this.isCollapse)},checkMobile(){const e=window.innerWidth<=768;this.$emit("update:isCollapse",e)},handleSelect(e){this.$emit("update:activeIndex",e)},measureWidth(){const e=this.$refs.sidebar;if(!e)return;const t=e.style.width,s=e.style.transition,i=e.classList.contains("is-collapsed");e.style.transition="none",i&&e.classList.remove("is-collapsed"),e.style.width="auto",e.offsetWidth;const a=e.scrollWidth;e.style.width=t,i&&e.classList.add("is-collapsed"),e.offsetWidth,e.style.transition=s,this.expandedWidth=a}},mounted(){this.checkMobile(),this.$nextTick(()=>this.measureWidth()),window.addEventListener("resize",this.checkMobile)},beforeDestroy(){window.removeEventListener("resize",this.checkMobile)}},c=s(71241);const h=(0,c.A)(d,[["render",r],["__scopeId","data-v-0f5a14b0"]]);var u=h,p=s(54880),g=(s(85331),s(77128),s(78507)),m=(s(213),s(20620));const f={class:"container"},b={class:"header-content admin-header-content"},y={class:"header-action"};function v(e,t,s,n,o,l){const r=m.A,d=(0,i.g2)("font-awesome-icon"),c=g.R7,h=p.bZ,v=u;return(0,i.uX)(),(0,i.CE)("div",f,[(0,i.bF)(h,null,{default:(0,i.k6)(()=>[(0,i.Lk)("div",b,[(0,i.bF)(r,{activeTab:"systemConfig"}),(0,i.Lk)("div",y,[(0,i.bF)(c,{disabled:l.disableTooltip,content:e.$t("sysConfig.logout"),placement:"bottom"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"sign-out-alt",class:"header-icon",onClick:l.handleLogout},null,8,["onClick"])]),_:1},8,["disabled","content"])])])]),_:1}),(0,i.bF)(v,{activeIndex:o.activeIndex,"onUpdate:activeIndex":t[0]||(t[0]=e=>o.activeIndex=e),isCollapse:o.isSidebarCollapse,"onUpdate:isCollapse":t[1]||(t[1]=e=>o.isSidebarCollapse=e)},null,8,["activeIndex","isCollapse"]),((0,i.uX)(),(0,i.Wv)((0,i.$y)(l.currentComponent),{class:(0,a.C4)(["main-container",{collapsed:o.isSidebarCollapse}])},null,8,["class"]))])}s(44114);var x=s(99114),k=(s(30694),s(57009)),_=(s(78450),s(69655)),w=(s(2893),s(9267)),C=(s(15616),s(45130));const S={class:"date-range-calendar"},F={class:"selected-range"},T={class:"selected-range-inputs"},A=["aria-label"],$={class:"date-range-separator"},P=["aria-label"],M={class:"calendar-header"},D=["aria-label"],V={class:"calendar-title"},L=["aria-label"],E={class:"calendar-weekdays"},I={class:"calendar-grid"},U=["onClick"];function O(e,t,s,n,o,l){const r=(0,i.g2)("font-awesome-icon");return(0,i.uX)(),(0,i.CE)("div",S,[(0,i.Lk)("div",F,[(0,i.Lk)("div",T,[(0,i.bo)((0,i.Lk)("input",{"onUpdate:modelValue":t[0]||(t[0]=e=>o.inputStart=e),class:"date-input",type:"text",inputmode:"numeric","aria-label":l.startDateLabel,onChange:t[1]||(t[1]=(...e)=>l.handleManualInput&&l.handleManualInput(...e))},null,40,A),[[C.Jo,o.inputStart,void 0,{trim:!0}]]),(0,i.Lk)("span",$,(0,a.v_)(l.rangeSeparator),1),(0,i.bo)((0,i.Lk)("input",{"onUpdate:modelValue":t[2]||(t[2]=e=>o.inputEnd=e),class:"date-input",type:"text",inputmode:"numeric","aria-label":l.endDateLabel,onChange:t[3]||(t[3]=(...e)=>l.handleManualInput&&l.handleManualInput(...e))},null,40,P),[[C.Jo,o.inputEnd,void 0,{trim:!0}]])])]),(0,i.Lk)("div",M,[(0,i.Lk)("button",{type:"button",class:"calendar-nav","aria-label":l.previousMonthLabel,onClick:t[4]||(t[4]=(...e)=>l.goToPreviousMonth&&l.goToPreviousMonth(...e))},[(0,i.bF)(r,{icon:"chevron-left"})],8,D),(0,i.Lk)("div",V,(0,a.v_)(l.monthTitle),1),(0,i.Lk)("button",{type:"button",class:"calendar-nav","aria-label":l.nextMonthLabel,onClick:t[5]||(t[5]=(...e)=>l.goToNextMonth&&l.goToNextMonth(...e))},[(0,i.bF)(r,{icon:"chevron-right"})],8,L)]),(0,i.Lk)("div",E,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(l.weekdayLabels,e=>((0,i.uX)(),(0,i.CE)("span",{key:e},(0,a.v_)(e),1))),128))]),(0,i.Lk)("div",I,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(l.calendarDays,e=>((0,i.uX)(),(0,i.CE)("button",{key:e.key,type:"button",class:(0,a.C4)(["calendar-day",{"is-muted":!e.isCurrentMonth,"is-today":e.isToday,"is-range-start":e.key===o.draftStart,"is-range-end":e.key===o.draftEnd,"is-in-range":l.isInRange(e.key)}]),onClick:t=>l.selectDay(e.key)},(0,a.v_)(e.dayOfMonth),11,U))),128))])])}const R=864e5;function W(e){return String(e).padStart(2,"0")}function N(e){return`${e.getFullYear()}-${W(e.getMonth()+1)}-${W(e.getDate())}`}function z(e){if("string"!==typeof e)return null;const t=e.trim().match(/^(\d{4})[-/](\d{1,2})[-/](\d{1,2})$/);if(!t)return null;const s=Number(t[1]),i=Number(t[2])-1,a=Number(t[3]),n=new Date(s,i,a);return n.getFullYear()!==s||n.getMonth()!==i||n.getDate()!==a?null:(n.setHours(0,0,0,0),n)}function B(e,t){return new Date(e.getFullYear(),e.getMonth()+t,1)}var j={name:"DateRangeCalendar",props:{modelValue:{type:Array,default:()=>[]}},emits:["update:modelValue","change"],data(){const e=new Date;return e.setHours(0,0,0,0),{displayYear:e.getFullYear(),displayMonth:e.getMonth(),draftStart:"",draftEnd:"",inputStart:"",inputEnd:"",awaitingEnd:!1}},computed:{previousMonthLabel(){return this.$t("dateRangeCalendar.previousMonth")},nextMonthLabel(){return this.$t("dateRangeCalendar.nextMonth")},startDateLabel(){return this.$t("dateRangeCalendar.startDate")},endDateLabel(){return this.$t("dateRangeCalendar.endDate")},rangeSeparator(){return this.$t("dateRangeCalendar.rangeSeparator")},monthTitle(){return this.$t("dateRangeCalendar.monthTitle",{year:this.displayYear,month:W(this.displayMonth+1)})},weekdayLabels(){return[this.$t("dateRangeCalendar.weekdaySun"),this.$t("dateRangeCalendar.weekdayMon"),this.$t("dateRangeCalendar.weekdayTue"),this.$t("dateRangeCalendar.weekdayWed"),this.$t("dateRangeCalendar.weekdayThu"),this.$t("dateRangeCalendar.weekdayFri"),this.$t("dateRangeCalendar.weekdaySat")]},calendarDays(){const e=new Date(this.displayYear,this.displayMonth,1),t=new Date(this.displayYear,this.displayMonth,1-e.getDay()),s=N(new Date);return Array.from({length:42},(e,i)=>{const a=new Date(t.getTime()+i*R),n=N(a);return{key:n,dayOfMonth:a.getDate(),isCurrentMonth:a.getMonth()===this.displayMonth,isToday:n===s}})}},watch:{modelValue:{immediate:!0,handler(e){this.syncFromModel(e)}}},methods:{syncFromModel(e){const t=z(e?.[0]),s=z(e?.[1]);this.draftStart=t?N(t):"",this.draftEnd=s?N(s):"",this.inputStart=this.draftStart,this.inputEnd=this.draftEnd,this.awaitingEnd=!1;const i=t||s;i&&(this.displayYear=i.getFullYear(),this.displayMonth=i.getMonth())},goToPreviousMonth(){const e=B(new Date(this.displayYear,this.displayMonth,1),-1);this.displayYear=e.getFullYear(),this.displayMonth=e.getMonth()},goToNextMonth(){const e=B(new Date(this.displayYear,this.displayMonth,1),1);this.displayYear=e.getFullYear(),this.displayMonth=e.getMonth()},selectDay(e){if(!this.draftStart||this.draftEnd||!this.awaitingEnd)return this.draftStart=e,this.draftEnd="",this.inputStart=e,this.inputEnd="",void(this.awaitingEnd=!0);const t=ethis.draftStart&&el.fetchIndexInfo&&l.fetchIndexInfo(...e))},[(0,i.Lk)("div",re,[(0,i.bF)(r,{icon:"database"})]),(0,i.Lk)("div",de,[(0,i.Lk)("div",ce,(0,a.v_)(e.$t("sysStatus.totalFiles")),1),(0,i.Lk)("div",he,(0,a.v_)(o.indexInfo.totalFiles?.toLocaleString()||"0"),1),(0,i.Lk)("div",ue,(0,a.v_)(e.$t("sysStatus.clickToRefresh")),1)])]),(0,i.Lk)("div",pe,[(0,i.Lk)("div",ge,[(0,i.bF)(r,{icon:"clock"})]),(0,i.Lk)("div",me,[(0,i.Lk)("div",fe,(0,a.v_)(e.$t("sysStatus.indexUpdateTime")),1),(0,i.Lk)("div",be,(0,a.v_)(l.formatTime(o.indexInfo.lastUpdated)),1),(0,i.Lk)("div",ye,(0,a.v_)(l.getTimeAgo(o.indexInfo.lastUpdated)),1)])]),(0,i.Lk)("div",{class:"overview-card system-version",onClick:t[1]||(t[1]=(...e)=>l.openReleases&&l.openReleases(...e))},[(0,i.Lk)("div",ve,[(0,i.bF)(r,{icon:"code-branch"})]),(0,i.Lk)("div",xe,[(0,i.Lk)("div",ke,(0,a.v_)(e.$t("sysStatus.systemVersion")),1),(0,i.Lk)("div",_e,"v"+(0,a.v_)(o.version),1),(0,i.Lk)("div",we,(0,a.v_)(e.$t("sysStatus.clickToViewChangelog")),1)])])]),(0,i.Lk)("div",Ce,[(0,i.Lk)("div",Se,[(0,i.Lk)("div",Fe,[(0,i.Lk)("div",Te,[(0,i.bF)(r,{icon:"chart-line"}),(0,i.Lk)("span",null,(0,a.v_)(e.$t("sysStatus.uploadTrend")),1),(0,i.bF)(d,{class:"trend-calendar-btn",circle:"","aria-label":e.$t("sysStatus.selectDateRange"),onClick:l.openTrendDateDialog},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"calendar"})]),_:1},8,["aria-label","onClick"])]),(0,i.Lk)("div",Ae,[(0,i.bF)(h,{modelValue:o.trendGroupBy,"onUpdate:modelValue":t[2]||(t[2]=e=>o.trendGroupBy=e),size:"small",class:"trend-group-switch","aria-label":e.$t("sysStatus.uploadTrendGroupBy")},{default:(0,i.k6)(()=>[(0,i.bF)(c,{label:"channel"},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysStatus.byChannelType")),1)]),_:1}),(0,i.bF)(c,{label:"channelName"},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysStatus.byChannelName")),1)]),_:1})]),_:1},8,["modelValue","aria-label"])])]),(0,i.bF)(p,{modelValue:o.trendDatePickerVisible,"onUpdate:modelValue":t[4]||(t[4]=e=>o.trendDatePickerVisible=e),title:e.$t("sysStatus.selectDateRange"),width:l.trendDateDialogWidth,class:"trend-date-dialog","align-center":"","append-to-body":""},{default:(0,i.k6)(()=>[(0,i.Lk)("div",$e,[(0,i.bF)(u,{modelValue:o.trendDateRange,"onUpdate:modelValue":t[3]||(t[3]=e=>o.trendDateRange=e),onChange:l.handleTrendDateRangeChange},null,8,["modelValue","onChange"])])]),_:1},8,["modelValue","title","width"]),(0,i.Lk)("div",Pe,[l.hasTrendData?((0,i.uX)(),(0,i.CE)("div",De,[(0,i.bF)(m,{data:l.uploadTrendChartData,options:l.lineChartOptions},null,8,["data","options"])])):((0,i.uX)(),(0,i.CE)("div",Me,[(0,i.bF)(r,{icon:"inbox"}),(0,i.Lk)("span",null,(0,a.v_)(e.$t("sysStatus.noData")),1)]))])]),(0,i.Lk)("div",Ve,[(0,i.Lk)("div",Le,[(0,i.bF)(r,{icon:"share-alt"}),(0,i.Lk)("span",null,(0,a.v_)(e.$t("sysStatus.channelDistribution")),1)]),(0,i.Lk)("div",Ee,[0===Object.keys(o.indexInfo.channelStats||{}).length?((0,i.uX)(),(0,i.CE)("div",Ie,[(0,i.bF)(r,{icon:"inbox"}),(0,i.Lk)("span",null,(0,a.v_)(e.$t("sysStatus.noData")),1)])):((0,i.uX)(),(0,i.CE)("div",Ue,[(0,i.Lk)("div",Oe,[(0,i.bF)(f,{data:l.channelChartData,options:l.chartOptions},null,8,["data","options"]),(0,i.Lk)("div",Re,[(0,i.Lk)("div",We,(0,a.v_)(o.indexInfo.totalFiles?.toLocaleString()||"0"),1),(0,i.Lk)("div",Ne,(0,a.v_)(e.$t("sysStatus.totalFilesLabel")),1)])]),(0,i.Lk)("div",ze,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.indexInfo.channelStats,(e,t,s)=>((0,i.uX)(),(0,i.CE)("div",{key:t,class:"legend-item"},[(0,i.Lk)("span",{class:"legend-color",style:(0,a.Tr)({background:l.getChartColor(s)})},null,4),(0,i.Lk)("span",Be,(0,a.v_)(t),1),(0,i.Lk)("span",je,(0,a.v_)(e.toLocaleString()),1),(0,i.Lk)("span",He,(0,a.v_)(l.getPercentage(e,o.indexInfo.totalFiles))+"%",1)]))),128))])]))])]),(0,i.Lk)("div",qe,[(0,i.Lk)("div",Xe,[(0,i.bF)(r,{icon:"file-alt"}),(0,i.Lk)("span",null,(0,a.v_)(e.$t("sysStatus.fileStatusDistribution")),1)]),(0,i.Lk)("div",Ke,[0===Object.keys(o.indexInfo.typeStats||{}).length?((0,i.uX)(),(0,i.CE)("div",Qe,[(0,i.bF)(r,{icon:"inbox"}),(0,i.Lk)("span",null,(0,a.v_)(e.$t("sysStatus.noData")),1)])):((0,i.uX)(),(0,i.CE)("div",Ye,[(0,i.Lk)("div",Ge,[(0,i.bF)(f,{data:l.typeChartData,options:l.chartOptions},null,8,["data","options"]),(0,i.Lk)("div",Je,[(0,i.Lk)("div",Ze,(0,a.v_)(Object.keys(o.indexInfo.typeStats).length),1),(0,i.Lk)("div",et,(0,a.v_)(e.$t("sysStatus.statusTypes")),1)])]),(0,i.Lk)("div",tt,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(l.aggregatedTypeStats,(e,t,s)=>((0,i.uX)(),(0,i.CE)("div",{key:t,class:"legend-item"},[(0,i.Lk)("span",{class:"legend-color",style:(0,a.Tr)({background:l.getTypeChartColor(s)})},null,4),(0,i.Lk)("span",st,(0,a.v_)(t),1),(0,i.Lk)("span",it,(0,a.v_)(e.toLocaleString()),1),(0,i.Lk)("span",at,(0,a.v_)(l.getPercentage(e,o.indexInfo.totalFiles))+"%",1)]))),128))])]))])])]),(0,i.Lk)("div",nt,[(0,i.Lk)("div",ot,[(0,i.Lk)("div",lt,[(0,i.bF)(r,{icon:"tools"}),(0,i.Lk)("span",null,(0,a.v_)(e.$t("sysStatus.systemMaintenance")),1)]),(0,i.Lk)("div",rt,[o.isProcessing?((0,i.uX)(),(0,i.CE)("div",dt,[(0,i.Lk)("div",ct,[(0,i.Lk)("span",ht,(0,a.v_)(l.phaseDescription),1),(0,i.Lk)("span",ut,(0,a.v_)(Math.round(o.processingProgress.percentage))+"%",1)]),(0,i.bF)(b,{percentage:o.processingProgress.percentage,"stroke-width":12,"show-text":!1,class:"progress-bar"},null,8,["percentage"]),(0,i.Lk)("div",pt,[o.processingProgress.current>0?((0,i.uX)(),(0,i.CE)("span",gt,[(0,i.bF)(r,{icon:"file-alt"}),(0,i.eW)(" "+(0,a.v_)(o.processingProgress.current.toLocaleString())+" ",1),o.processingProgress.total>0?((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[(0,i.eW)(" / "+(0,a.v_)(o.processingProgress.total.toLocaleString()),1)],64)):(0,i.Q3)("",!0),(0,i.eW)(" "+(0,a.v_)(e.$t("sysStatus.records")),1)])):(0,i.Q3)("",!0),l.estimatedTimeRemaining?((0,i.uX)(),(0,i.CE)("span",mt,[(0,i.bF)(r,{icon:"clock"}),(0,i.eW)(" "+(0,a.v_)(l.estimatedTimeRemaining),1)])):(0,i.Q3)("",!0)]),o.processingProgress.message?((0,i.uX)(),(0,i.CE)("div",ft,(0,a.v_)(o.processingProgress.message),1)):(0,i.Q3)("",!0),(0,i.bF)(d,{type:"danger",plain:"",size:"small",onClick:l.cancelOperation,class:"cancel-btn"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"times"}),(0,i.eW)(" "+(0,a.v_)(e.$t("sysStatus.cancelOperation")),1)]),_:1},8,["onClick"])])):o.processingError?((0,i.uX)(),(0,i.CE)("div",bt,[(0,i.Lk)("div",yt,[(0,i.bF)(r,{icon:"exclamation-triangle"})]),(0,i.Lk)("div",vt,[(0,i.Lk)("div",xt,(0,a.v_)(o.processingError.message),1),o.processingError.suggestion?((0,i.uX)(),(0,i.CE)("div",kt,(0,a.v_)(o.processingError.suggestion),1)):(0,i.Q3)("",!0)]),(0,i.Lk)("div",_t,[o.processingError.recoverable?((0,i.uX)(),(0,i.Wv)(d,{key:0,type:"primary",size:"small",onClick:l.retryOperation},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"redo"}),(0,i.eW)(" "+(0,a.v_)(e.$t("sysStatus.retry")),1)]),_:1},8,["onClick"])):(0,i.Q3)("",!0),(0,i.bF)(d,{type:"default",size:"small",onClick:l.dismissError},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysStatus.close")),1)]),_:1},8,["onClick"])])])):((0,i.uX)(),(0,i.CE)("div",wt,[(0,i.bF)(y,{content:e.$t("sysStatus.rebuildTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{type:"primary",loading:o.rebuilding,disabled:o.isProcessing,onClick:l.rebuildIndex,class:"action-btn rebuild-btn"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"sync-alt"}),(0,i.eW)(" "+(0,a.v_)(o.rebuilding?e.$t("sysStatus.rebuilding"):e.$t("sysStatus.rebuildIndex")),1)]),_:1},8,["loading","disabled","onClick"])]),_:1},8,["content"]),(0,i.bF)(y,{content:e.$t("sysStatus.backupTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{type:"success",loading:o.backing,disabled:o.isProcessing,onClick:l.backupData,class:"action-btn backup-btn"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"download"}),(0,i.eW)(" "+(0,a.v_)(o.backing?e.$t("sysStatus.backingUp"):e.$t("sysStatus.backupData")),1)]),_:1},8,["loading","disabled","onClick"])]),_:1},8,["content"]),(0,i.bF)(y,{content:e.$t("sysStatus.restoreTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",Ct,[(0,i.Lk)("input",{type:"file",ref:"fileInput",accept:".json",onChange:t[5]||(t[5]=(...e)=>l.handleFileSelect&&l.handleFileSelect(...e)),style:{display:"none"}},null,544),(0,i.bF)(d,{type:"warning",loading:o.restoring,disabled:o.isProcessing,onClick:l.selectRestoreFile,class:"action-btn restore-btn"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"upload"}),(0,i.eW)(" "+(0,a.v_)(o.restoring?e.$t("sysStatus.restoring"):e.$t("sysStatus.restoreData")),1)]),_:1},8,["loading","disabled","onClick"])])]),_:1},8,["content"])]))])])]),o.indexInfo.newestFile||o.indexInfo.oldestFile?((0,i.uX)(),(0,i.CE)("div",St,[o.indexInfo.newestFile?((0,i.uX)(),(0,i.CE)("div",{key:0,class:"file-info-card info-card-newest",onClick:t[8]||(t[8]=e=>l.openFileInNewTab(o.indexInfo.newestFile))},[l.isImageFile(o.indexInfo.newestFile)&&!o.loadErrors["newest"]?((0,i.uX)(),(0,i.Wv)(v,{key:0,src:"/file/"+o.indexInfo.newestFile.id+"?from=admin",fit:"cover",class:"card-bg-media",onError:t[6]||(t[6]=e=>l.handleImageError("newest"))},null,8,["src"])):l.isVideoFile(o.indexInfo.newestFile)&&!o.loadErrors["newest"]?((0,i.uX)(),(0,i.CE)("video",{key:1,src:"/file/"+o.indexInfo.newestFile.id+"?from=admin",class:"card-bg-media",muted:"",loop:"",autoplay:"",onError:t[7]||(t[7]=e=>l.handleImageError("newest"))},null,40,Ft)):((0,i.uX)(),(0,i.CE)("div",Tt,[(0,i.bF)(r,{icon:"file-alt",class:"fallback-icon"})])),(0,i.Lk)("div",At,[(0,i.bF)(r,{icon:"arrow-up"}),(0,i.Lk)("span",null,(0,a.v_)(e.$t("sysStatus.latestUpload")),1)]),(0,i.Lk)("div",$t,[(0,i.Lk)("div",Pt,(0,a.v_)(o.indexInfo.newestFile.metadata?.FileName||o.indexInfo.newestFile.id),1),(0,i.Lk)("div",Mt,(0,a.v_)(l.formatTime(o.indexInfo.newestFile.metadata?.TimeStamp)),1)])])):(0,i.Q3)("",!0),o.indexInfo.oldestFile?((0,i.uX)(),(0,i.CE)("div",{key:1,class:"file-info-card info-card-oldest",onClick:t[11]||(t[11]=e=>l.openFileInNewTab(o.indexInfo.oldestFile))},[l.isImageFile(o.indexInfo.oldestFile)&&!o.loadErrors["oldest"]?((0,i.uX)(),(0,i.Wv)(v,{key:0,src:"/file/"+o.indexInfo.oldestFile.id+"?from=admin",fit:"cover",class:"card-bg-media",onError:t[9]||(t[9]=e=>l.handleImageError("oldest"))},null,8,["src"])):l.isVideoFile(o.indexInfo.oldestFile)&&!o.loadErrors["oldest"]?((0,i.uX)(),(0,i.CE)("video",{key:1,src:"/file/"+o.indexInfo.oldestFile.id+"?from=admin",class:"card-bg-media",muted:"",loop:"",autoplay:"",onError:t[10]||(t[10]=e=>l.handleImageError("oldest"))},null,40,Dt)):((0,i.uX)(),(0,i.CE)("div",Vt,[(0,i.bF)(r,{icon:"file-alt",class:"fallback-icon"})])),(0,i.Lk)("div",Lt,[(0,i.bF)(r,{icon:"arrow-down"}),(0,i.Lk)("span",null,(0,a.v_)(e.$t("sysStatus.earliestUpload")),1)]),(0,i.Lk)("div",Et,[(0,i.Lk)("div",It,(0,a.v_)(o.indexInfo.oldestFile.metadata?.FileName||o.indexInfo.oldestFile.id),1),(0,i.Lk)("div",Ut,(0,a.v_)(l.formatTime(o.indexInfo.oldestFile.metadata?.TimeStamp)),1)])])):(0,i.Q3)("",!0)])):(0,i.Q3)("",!0)])),[[C,o.loading]])}s(18111),s(7588),s(61701),s(18237),s(17642),s(58004),s(33853),s(45876),s(32475),s(15024),s(31698);var Rt=s(70797),Wt={rE:"2.7.7"},Nt=(s(20116),s(91114));s(22489),s(13579); +/*! + * @kurkle/color v0.3.4 + * https://github.com/kurkle/color#readme + * (c) 2024 Jukka Kurkela + * Released under the MIT License + */ +function zt(e){return e+.5|0}const Bt=(e,t,s)=>Math.max(Math.min(e,s),t);function jt(e){return Bt(zt(2.55*e),0,255)}function Ht(e){return Bt(zt(255*e),0,255)}function qt(e){return Bt(zt(e/2.55)/100,0,1)}function Xt(e){return Bt(zt(100*e),0,100)}const Kt={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},Qt=[..."0123456789ABCDEF"],Yt=e=>Qt[15&e],Gt=e=>Qt[(240&e)>>4]+Qt[15&e],Jt=e=>(240&e)>>4===(15&e),Zt=e=>Jt(e.r)&&Jt(e.g)&&Jt(e.b)&&Jt(e.a);function es(e){var t,s=e.length;return"#"===e[0]&&(4===s||5===s?t={r:255&17*Kt[e[1]],g:255&17*Kt[e[2]],b:255&17*Kt[e[3]],a:5===s?17*Kt[e[4]]:255}:7!==s&&9!==s||(t={r:Kt[e[1]]<<4|Kt[e[2]],g:Kt[e[3]]<<4|Kt[e[4]],b:Kt[e[5]]<<4|Kt[e[6]],a:9===s?Kt[e[7]]<<4|Kt[e[8]]:255})),t}const ts=(e,t)=>e<255?t(e):"";function ss(e){var t=Zt(e)?Yt:Gt;return e?"#"+t(e.r)+t(e.g)+t(e.b)+ts(e.a,t):void 0}const is=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function as(e,t,s){const i=t*Math.min(s,1-s),a=(t,a=(t+e/30)%12)=>s-i*Math.max(Math.min(a-3,9-a,1),-1);return[a(0),a(8),a(4)]}function ns(e,t,s){const i=(i,a=(i+e/60)%6)=>s-s*t*Math.max(Math.min(a,4-a,1),0);return[i(5),i(3),i(1)]}function os(e,t,s){const i=as(e,1,.5);let a;for(t+s>1&&(a=1/(t+s),t*=a,s*=a),a=0;a<3;a++)i[a]*=1-t-s,i[a]+=t;return i}function ls(e,t,s,i,a){return e===a?(t-s)/i+(t.5?c/(2-n-o):c/(n+o),r=ls(s,i,a,c,n),r=60*r+.5),[0|r,d||0,l]}function ds(e,t,s,i){return(Array.isArray(t)?e(t[0],t[1],t[2]):e(t,s,i)).map(Ht)}function cs(e,t,s){return ds(as,e,t,s)}function hs(e,t,s){return ds(os,e,t,s)}function us(e,t,s){return ds(ns,e,t,s)}function ps(e){return(e%360+360)%360}function gs(e){const t=is.exec(e);let s,i=255;if(!t)return;t[5]!==s&&(i=t[6]?jt(+t[5]):Ht(+t[5]));const a=ps(+t[2]),n=+t[3]/100,o=+t[4]/100;return s="hwb"===t[1]?hs(a,n,o):"hsv"===t[1]?us(a,n,o):cs(a,n,o),{r:s[0],g:s[1],b:s[2],a:i}}function ms(e,t){var s=rs(e);s[0]=ps(s[0]+t),s=cs(s),e.r=s[0],e.g=s[1],e.b=s[2]}function fs(e){if(!e)return;const t=rs(e),s=t[0],i=Xt(t[1]),a=Xt(t[2]);return e.a<255?`hsla(${s}, ${i}%, ${a}%, ${qt(e.a)})`:`hsl(${s}, ${i}%, ${a}%)`}const bs={x:"dark",Z:"light",Y:"re",X:"blu",W:"gr",V:"medium",U:"slate",A:"ee",T:"ol",S:"or",B:"ra",C:"lateg",D:"ights",R:"in",Q:"turquois",E:"hi",P:"ro",O:"al",N:"le",M:"de",L:"yello",F:"en",K:"ch",G:"arks",H:"ea",I:"ightg",J:"wh"},ys={OiceXe:"f0f8ff",antiquewEte:"faebd7",aqua:"ffff",aquamarRe:"7fffd4",azuY:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"0",blanKedOmond:"ffebcd",Xe:"ff",XeviTet:"8a2be2",bPwn:"a52a2a",burlywood:"deb887",caMtXe:"5f9ea0",KartYuse:"7fff00",KocTate:"d2691e",cSO:"ff7f50",cSnflowerXe:"6495ed",cSnsilk:"fff8dc",crimson:"dc143c",cyan:"ffff",xXe:"8b",xcyan:"8b8b",xgTMnPd:"b8860b",xWay:"a9a9a9",xgYF:"6400",xgYy:"a9a9a9",xkhaki:"bdb76b",xmagFta:"8b008b",xTivegYF:"556b2f",xSange:"ff8c00",xScEd:"9932cc",xYd:"8b0000",xsOmon:"e9967a",xsHgYF:"8fbc8f",xUXe:"483d8b",xUWay:"2f4f4f",xUgYy:"2f4f4f",xQe:"ced1",xviTet:"9400d3",dAppRk:"ff1493",dApskyXe:"bfff",dimWay:"696969",dimgYy:"696969",dodgerXe:"1e90ff",fiYbrick:"b22222",flSOwEte:"fffaf0",foYstWAn:"228b22",fuKsia:"ff00ff",gaRsbSo:"dcdcdc",ghostwEte:"f8f8ff",gTd:"ffd700",gTMnPd:"daa520",Way:"808080",gYF:"8000",gYFLw:"adff2f",gYy:"808080",honeyMw:"f0fff0",hotpRk:"ff69b4",RdianYd:"cd5c5c",Rdigo:"4b0082",ivSy:"fffff0",khaki:"f0e68c",lavFMr:"e6e6fa",lavFMrXsh:"fff0f5",lawngYF:"7cfc00",NmoncEffon:"fffacd",ZXe:"add8e6",ZcSO:"f08080",Zcyan:"e0ffff",ZgTMnPdLw:"fafad2",ZWay:"d3d3d3",ZgYF:"90ee90",ZgYy:"d3d3d3",ZpRk:"ffb6c1",ZsOmon:"ffa07a",ZsHgYF:"20b2aa",ZskyXe:"87cefa",ZUWay:"778899",ZUgYy:"778899",ZstAlXe:"b0c4de",ZLw:"ffffe0",lime:"ff00",limegYF:"32cd32",lRF:"faf0e6",magFta:"ff00ff",maPon:"800000",VaquamarRe:"66cdaa",VXe:"cd",VScEd:"ba55d3",VpurpN:"9370db",VsHgYF:"3cb371",VUXe:"7b68ee",VsprRggYF:"fa9a",VQe:"48d1cc",VviTetYd:"c71585",midnightXe:"191970",mRtcYam:"f5fffa",mistyPse:"ffe4e1",moccasR:"ffe4b5",navajowEte:"ffdead",navy:"80",Tdlace:"fdf5e6",Tive:"808000",TivedBb:"6b8e23",Sange:"ffa500",SangeYd:"ff4500",ScEd:"da70d6",pOegTMnPd:"eee8aa",pOegYF:"98fb98",pOeQe:"afeeee",pOeviTetYd:"db7093",papayawEp:"ffefd5",pHKpuff:"ffdab9",peru:"cd853f",pRk:"ffc0cb",plum:"dda0dd",powMrXe:"b0e0e6",purpN:"800080",YbeccapurpN:"663399",Yd:"ff0000",Psybrown:"bc8f8f",PyOXe:"4169e1",saddNbPwn:"8b4513",sOmon:"fa8072",sandybPwn:"f4a460",sHgYF:"2e8b57",sHshell:"fff5ee",siFna:"a0522d",silver:"c0c0c0",skyXe:"87ceeb",UXe:"6a5acd",UWay:"708090",UgYy:"708090",snow:"fffafa",sprRggYF:"ff7f",stAlXe:"4682b4",tan:"d2b48c",teO:"8080",tEstN:"d8bfd8",tomato:"ff6347",Qe:"40e0d0",viTet:"ee82ee",JHt:"f5deb3",wEte:"ffffff",wEtesmoke:"f5f5f5",Lw:"ffff00",LwgYF:"9acd32"};function vs(){const e={},t=Object.keys(ys),s=Object.keys(bs);let i,a,n,o,l;for(i=0;i>16&255,n>>8&255,255&n]}return e}let xs;function ks(e){xs||(xs=vs(),xs.transparent=[0,0,0,0]);const t=xs[e.toLowerCase()];return t&&{r:t[0],g:t[1],b:t[2],a:4===t.length?t[3]:255}}const _s=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;function ws(e){const t=_s.exec(e);let s,i,a,n=255;if(t){if(t[7]!==s){const e=+t[7];n=t[8]?jt(e):Bt(255*e,0,255)}return s=+t[1],i=+t[3],a=+t[5],s=255&(t[2]?jt(s):Bt(s,0,255)),i=255&(t[4]?jt(i):Bt(i,0,255)),a=255&(t[6]?jt(a):Bt(a,0,255)),{r:s,g:i,b:a,a:n}}}function Cs(e){return e&&(e.a<255?`rgba(${e.r}, ${e.g}, ${e.b}, ${qt(e.a)})`:`rgb(${e.r}, ${e.g}, ${e.b})`)}const Ss=e=>e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055,Fs=e=>e<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4);function Ts(e,t,s){const i=Fs(qt(e.r)),a=Fs(qt(e.g)),n=Fs(qt(e.b));return{r:Ht(Ss(i+s*(Fs(qt(t.r))-i))),g:Ht(Ss(a+s*(Fs(qt(t.g))-a))),b:Ht(Ss(n+s*(Fs(qt(t.b))-n))),a:e.a+s*(t.a-e.a)}}function As(e,t,s){if(e){let i=rs(e);i[t]=Math.max(0,Math.min(i[t]+i[t]*s,0===t?360:1)),i=cs(i),e.r=i[0],e.g=i[1],e.b=i[2]}}function $s(e,t){return e?Object.assign(t||{},e):e}function Ps(e){var t={r:0,g:0,b:0,a:255};return Array.isArray(e)?e.length>=3&&(t={r:e[0],g:e[1],b:e[2],a:255},e.length>3&&(t.a=Ht(e[3]))):(t=$s(e,{r:0,g:0,b:0,a:1}),t.a=Ht(t.a)),t}function Ms(e){return"r"===e.charAt(0)?ws(e):gs(e)}class Ds{constructor(e){if(e instanceof Ds)return e;const t=typeof e;let s;"object"===t?s=Ps(e):"string"===t&&(s=es(e)||ks(e)||Ms(e)),this._rgb=s,this._valid=!!s}get valid(){return this._valid}get rgb(){var e=$s(this._rgb);return e&&(e.a=qt(e.a)),e}set rgb(e){this._rgb=Ps(e)}rgbString(){return this._valid?Cs(this._rgb):void 0}hexString(){return this._valid?ss(this._rgb):void 0}hslString(){return this._valid?fs(this._rgb):void 0}mix(e,t){if(e){const s=this.rgb,i=e.rgb;let a;const n=t===a?.5:t,o=2*n-1,l=s.a-i.a,r=((o*l===-1?o:(o+l)/(1+o*l))+1)/2;a=1-r,s.r=255&r*s.r+a*i.r+.5,s.g=255&r*s.g+a*i.g+.5,s.b=255&r*s.b+a*i.b+.5,s.a=n*s.a+(1-n)*i.a,this.rgb=s}return this}interpolate(e,t){return e&&(this._rgb=Ts(this._rgb,e._rgb,t)),this}clone(){return new Ds(this.rgb)}alpha(e){return this._rgb.a=Ht(e),this}clearer(e){const t=this._rgb;return t.a*=1-e,this}greyscale(){const e=this._rgb,t=zt(.3*e.r+.59*e.g+.11*e.b);return e.r=e.g=e.b=t,this}opaquer(e){const t=this._rgb;return t.a*=1+e,this}negate(){const e=this._rgb;return e.r=255-e.r,e.g=255-e.g,e.b=255-e.b,this}lighten(e){return As(this._rgb,2,e),this}darken(e){return As(this._rgb,2,-e),this}saturate(e){return As(this._rgb,1,e),this}desaturate(e){return As(this._rgb,1,-e),this}rotate(e){return ms(this._rgb,e),this}} +/*! + * Chart.js v4.5.1 + * https://www.chartjs.org + * (c) 2025 Chart.js Contributors + * Released under the MIT License + */ +function Vs(){}const Ls=(()=>{let e=0;return()=>e++})();function Es(e){return null===e||void 0===e}function Is(e){if(Array.isArray&&Array.isArray(e))return!0;const t=Object.prototype.toString.call(e);return"[object"===t.slice(0,7)&&"Array]"===t.slice(-6)}function Us(e){return null!==e&&"[object Object]"===Object.prototype.toString.call(e)}function Os(e){return("number"===typeof e||e instanceof Number)&&isFinite(+e)}function Rs(e,t){return Os(e)?e:t}function Ws(e,t){return"undefined"===typeof e?t:e}const Ns=(e,t)=>"string"===typeof e&&e.endsWith("%")?parseFloat(e)/100:+e/t,zs=(e,t)=>"string"===typeof e&&e.endsWith("%")?parseFloat(e)/100*t:+e;function Bs(e,t,s){if(e&&"function"===typeof e.call)return e.apply(s,t)}function js(e,t,s,i){let a,n,o;if(Is(e))if(n=e.length,i)for(a=n-1;a>=0;a--)t.call(s,e[a],a);else for(a=0;ae,x:e=>e.x,y:e=>e.y};function Zs(e){const t=e.split("."),s=[];let i="";for(const a of t)i+=a,i.endsWith("\\")?i=i.slice(0,-1)+".":(s.push(i),i="");return s}function ei(e){const t=Zs(e);return e=>{for(const s of t){if(""===s)break;e=e&&e[s]}return e}}function ti(e,t){const s=Js[t]||(Js[t]=ei(t));return s(e)}function si(e){return e.charAt(0).toUpperCase()+e.slice(1)}const ii=e=>"undefined"!==typeof e,ai=e=>"function"===typeof e,ni=(e,t)=>{if(e.size!==t.size)return!1;for(const s of e)if(!t.has(s))return!1;return!0};function oi(e){return"mouseup"===e.type||"click"===e.type||"contextmenu"===e.type}const li=Math.PI,ri=2*li,di=ri+li,ci=Number.POSITIVE_INFINITY,hi=li/180,ui=li/2,pi=li/4,gi=2*li/3,mi=Math.log10,fi=Math.sign;function bi(e,t,s){return Math.abs(e-t)e-t).pop(),t}function xi(e){return"symbol"===typeof e||"object"===typeof e&&null!==e&&!(Symbol.toPrimitive in e||"toString"in e||"valueOf"in e)}function ki(e){return!xi(e)&&!isNaN(parseFloat(e))&&isFinite(e)}function _i(e,t){const s=Math.round(e);return s-t<=e&&s+t>=e}function wi(e,t,s){let i,a,n;for(i=0,a=e.length;ir&&d=Math.min(t,s)-i&&e<=Math.max(t,s)+i}function Ei(e,t,s){s=s||(s=>e[s]1)i=n+a>>1,s(i)?n=i:a=i;return{lo:n,hi:a}}const Ii=(e,t,s,i)=>Ei(e,s,i?i=>{const a=e[i][t];return ae[i][t]Ei(e,s,i=>e[i][t]>=s);function Oi(e,t,s){let i=0,a=e.length;while(ii&&e[a-1]>s)a--;return i>0||a{const s="_onData"+si(t),i=e[t];Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value(...t){const a=i.apply(this,t);return e._chartjs.listeners.forEach(e=>{"function"===typeof e[s]&&e[s](...t)}),a}})}))}function Ni(e,t){const s=e._chartjs;if(!s)return;const i=s.listeners,a=i.indexOf(t);-1!==a&&i.splice(a,1),i.length>0||(Ri.forEach(t=>{delete e[t]}),delete e._chartjs)}function zi(e){const t=new Set(e);return t.size===e.length?e:Array.from(t)}const Bi=function(){return"undefined"===typeof window?function(e){return e()}:window.requestAnimationFrame}();function ji(e,t){let s=[],i=!1;return function(...a){s=a,i||(i=!0,Bi.call(window,()=>{i=!1,e.apply(t,s)}))}}function Hi(e,t){let s;return function(...i){return t?(clearTimeout(s),s=setTimeout(e,t,i)):e.apply(this,i),t}}const qi=e=>"start"===e?"left":"end"===e?"right":"center",Xi=(e,t,s)=>"start"===e?t:"end"===e?s:(t+s)/2,Ki=(e,t,s,i)=>{const a=i?"left":"right";return e===a?s:"center"===e?(t+s)/2:t};function Qi(e,t,s){const i=t.length;let a=0,n=i;if(e._sorted){const{iScale:o,vScale:l,_parsed:r}=e,d=e.dataset&&e.dataset.options?e.dataset.options.spanGaps:null,c=o.axis,{min:h,max:u,minDefined:p,maxDefined:g}=o.getUserBounds();if(p){if(a=Math.min(Ii(r,c,h).lo,s?i:Ii(t,c,o.getPixelForValue(h)).lo),d){const e=r.slice(0,a+1).reverse().findIndex(e=>!Es(e[l.axis]));a-=Math.max(0,e)}a=Di(a,0,i-1)}if(g){let e=Math.max(Ii(r,o.axis,u,!0).hi+1,s?0:Ii(t,c,o.getPixelForValue(u),!0).hi+1);if(d){const t=r.slice(e-1).findIndex(e=>!Es(e[l.axis]));e+=Math.max(0,t)}n=Di(e,a,i)-a}else n=i-a}return{start:a,count:n}}function Yi(e){const{xScale:t,yScale:s,_scaleRanges:i}=e,a={xmin:t.min,xmax:t.max,ymin:s.min,ymax:s.max};if(!i)return e._scaleRanges=a,!0;const n=i.xmin!==t.min||i.xmax!==t.max||i.ymin!==s.min||i.ymax!==s.max;return Object.assign(i,a),n}const Gi=e=>0===e||1===e,Ji=(e,t,s)=>-Math.pow(2,10*(e-=1))*Math.sin((e-t)*ri/s),Zi=(e,t,s)=>Math.pow(2,-10*e)*Math.sin((e-t)*ri/s)+1,ea={linear:e=>e,easeInQuad:e=>e*e,easeOutQuad:e=>-e*(e-2),easeInOutQuad:e=>(e/=.5)<1?.5*e*e:-.5*(--e*(e-2)-1),easeInCubic:e=>e*e*e,easeOutCubic:e=>(e-=1)*e*e+1,easeInOutCubic:e=>(e/=.5)<1?.5*e*e*e:.5*((e-=2)*e*e+2),easeInQuart:e=>e*e*e*e,easeOutQuart:e=>-((e-=1)*e*e*e-1),easeInOutQuart:e=>(e/=.5)<1?.5*e*e*e*e:-.5*((e-=2)*e*e*e-2),easeInQuint:e=>e*e*e*e*e,easeOutQuint:e=>(e-=1)*e*e*e*e+1,easeInOutQuint:e=>(e/=.5)<1?.5*e*e*e*e*e:.5*((e-=2)*e*e*e*e+2),easeInSine:e=>1-Math.cos(e*ui),easeOutSine:e=>Math.sin(e*ui),easeInOutSine:e=>-.5*(Math.cos(li*e)-1),easeInExpo:e=>0===e?0:Math.pow(2,10*(e-1)),easeOutExpo:e=>1===e?1:1-Math.pow(2,-10*e),easeInOutExpo:e=>Gi(e)?e:e<.5?.5*Math.pow(2,10*(2*e-1)):.5*(2-Math.pow(2,-10*(2*e-1))),easeInCirc:e=>e>=1?e:-(Math.sqrt(1-e*e)-1),easeOutCirc:e=>Math.sqrt(1-(e-=1)*e),easeInOutCirc:e=>(e/=.5)<1?-.5*(Math.sqrt(1-e*e)-1):.5*(Math.sqrt(1-(e-=2)*e)+1),easeInElastic:e=>Gi(e)?e:Ji(e,.075,.3),easeOutElastic:e=>Gi(e)?e:Zi(e,.075,.3),easeInOutElastic(e){const t=.1125,s=.45;return Gi(e)?e:e<.5?.5*Ji(2*e,t,s):.5+.5*Zi(2*e-1,t,s)},easeInBack(e){const t=1.70158;return e*e*((t+1)*e-t)},easeOutBack(e){const t=1.70158;return(e-=1)*e*((t+1)*e+t)+1},easeInOutBack(e){let t=1.70158;return(e/=.5)<1?e*e*((1+(t*=1.525))*e-t)*.5:.5*((e-=2)*e*((1+(t*=1.525))*e+t)+2)},easeInBounce:e=>1-ea.easeOutBounce(1-e),easeOutBounce(e){const t=7.5625,s=2.75;return e<1/s?t*e*e:e<2/s?t*(e-=1.5/s)*e+.75:e<2.5/s?t*(e-=2.25/s)*e+.9375:t*(e-=2.625/s)*e+.984375},easeInOutBounce:e=>e<.5?.5*ea.easeInBounce(2*e):.5*ea.easeOutBounce(2*e-1)+.5};function ta(e){if(e&&"object"===typeof e){const t=e.toString();return"[object CanvasPattern]"===t||"[object CanvasGradient]"===t}return!1}function sa(e){return ta(e)?e:new Ds(e)}function ia(e){return ta(e)?e:new Ds(e).saturate(.5).darken(.1).hexString()}const aa=["x","y","borderWidth","radius","tension"],na=["color","borderColor","backgroundColor"];function oa(e){e.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),e.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:e=>"onProgress"!==e&&"onComplete"!==e&&"fn"!==e}),e.set("animations",{colors:{type:"color",properties:na},numbers:{type:"number",properties:aa}}),e.describe("animations",{_fallback:"animation"}),e.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:e=>0|e}}}})}function la(e){e.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})}const ra=new Map;function da(e,t){t=t||{};const s=e+JSON.stringify(t);let i=ra.get(s);return i||(i=new Intl.NumberFormat(e,t),ra.set(s,i)),i}function ca(e,t,s){return da(t,s).format(e)}const ha={values(e){return Is(e)?e:""+e},numeric(e,t,s){if(0===e)return"0";const i=this.chart.options.locale;let a,n=e;if(s.length>1){const t=Math.max(Math.abs(s[0].value),Math.abs(s[s.length-1].value));(t<1e-4||t>1e15)&&(a="scientific"),n=ua(e,s)}const o=mi(Math.abs(n)),l=isNaN(o)?1:Math.max(Math.min(-1*Math.floor(o),20),0),r={notation:a,minimumFractionDigits:l,maximumFractionDigits:l};return Object.assign(r,this.options.ticks.format),ca(e,i,r)},logarithmic(e,t,s){if(0===e)return"0";const i=s[t].significand||e/Math.pow(10,Math.floor(mi(e)));return[1,2,3,5,10,15].includes(i)||t>.8*s.length?ha.numeric.call(this,e,t,s):""}};function ua(e,t){let s=t.length>3?t[2].value-t[1].value:t[1].value-t[0].value;return Math.abs(s)>=1&&e!==Math.floor(e)&&(s=e-Math.floor(e)),s}var pa={formatters:ha};function ga(e){e.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(e,t)=>t.lineWidth,tickColor:(e,t)=>t.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:pa.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),e.route("scale.ticks","color","","color"),e.route("scale.grid","color","","borderColor"),e.route("scale.border","color","","borderColor"),e.route("scale.title","color","","color"),e.describe("scale",{_fallback:!1,_scriptable:e=>!e.startsWith("before")&&!e.startsWith("after")&&"callback"!==e&&"parser"!==e,_indexable:e=>"borderDash"!==e&&"tickBorderDash"!==e&&"dash"!==e}),e.describe("scales",{_fallback:"scale"}),e.describe("scale.ticks",{_scriptable:e=>"backdropPadding"!==e&&"callback"!==e,_indexable:e=>"backdropPadding"!==e})}const ma=Object.create(null),fa=Object.create(null);function ba(e,t){if(!t)return e;const s=t.split(".");for(let i=0,a=s.length;ie.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(e,t)=>ia(t.backgroundColor),this.hoverBorderColor=(e,t)=>ia(t.borderColor),this.hoverColor=(e,t)=>ia(t.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(e),this.apply(t)}set(e,t){return ya(this,e,t)}get(e){return ba(this,e)}describe(e,t){return ya(fa,e,t)}override(e,t){return ya(ma,e,t)}route(e,t,s,i){const a=ba(this,e),n=ba(this,s),o="_"+t;Object.defineProperties(a,{[o]:{value:a[t],writable:!0},[t]:{enumerable:!0,get(){const e=this[o],t=n[i];return Us(e)?Object.assign({},t,e):Ws(e,t)},set(e){this[o]=e}}})}apply(e){e.forEach(e=>e(this))}}var xa=new va({_scriptable:e=>!e.startsWith("on"),_indexable:e=>"events"!==e,hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[oa,la,ga]);function ka(e){return!e||Es(e.size)||Es(e.family)?null:(e.style?e.style+" ":"")+(e.weight?e.weight+" ":"")+e.size+"px "+e.family}function _a(e,t,s,i,a){let n=t[a];return n||(n=t[a]=e.measureText(a).width,s.push(a)),n>i&&(i=n),i}function wa(e,t,s,i){i=i||{};let a=i.data=i.data||{},n=i.garbageCollect=i.garbageCollect||[];i.font!==t&&(a=i.data={},n=i.garbageCollect=[],i.font=t),e.save(),e.font=t;let o=0;const l=s.length;let r,d,c,h,u;for(r=0;rs.length){for(r=0;r0&&e.stroke()}}function Aa(e,t,s){return s=s||.5,!t||e&&e.x>t.left-s&&e.xt.top-s&&e.y0&&""!==n.strokeColor;let r,d;for(e.save(),e.font=a.string,Va(e,n),r=0;r+e||0;function za(e,t){const s={},i=Us(t),a=i?Object.keys(t):t,n=Us(e)?i?s=>Ws(e[s],e[t[s]]):t=>e[t]:()=>e;for(const o of a)s[o]=Na(n(o));return s}function Ba(e){return za(e,{top:"y",right:"x",bottom:"y",left:"x"})}function ja(e){return za(e,["topLeft","topRight","bottomLeft","bottomRight"])}function Ha(e){const t=Ba(e);return t.width=t.left+t.right,t.height=t.top+t.bottom,t}function qa(e,t){e=e||{},t=t||xa.font;let s=Ws(e.size,t.size);"string"===typeof s&&(s=parseInt(s,10));let i=Ws(e.style,t.style);i&&!(""+i).match(Ra)&&(console.warn('Invalid font style specified: "'+i+'"'),i=void 0);const a={family:Ws(e.family,t.family),lineHeight:Wa(Ws(e.lineHeight,t.lineHeight),s),size:s,style:i,weight:Ws(e.weight,t.weight),string:""};return a.string=ka(a),a}function Xa(e,t,s,i){let a,n,o,l=!0;for(a=0,n=e.length;as&&0===e?0:e+t;return{min:o(i,-Math.abs(n)),max:o(a,n)}}function Qa(e,t){return Object.assign(Object.create(e),t)}function Ya(e,t=[""],s,i,a=()=>e[0]){const n=s||e;"undefined"===typeof i&&(i=pn("_fallback",e));const o={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:e,_rootScopes:n,_fallback:i,_getTarget:a,override:s=>Ya([s,...e],t,n,i)};return new Proxy(o,{deleteProperty(t,s){return delete t[s],delete t._keys,delete e[0][s],!0},get(s,i){return tn(s,i,()=>un(i,t,e,s))},getOwnPropertyDescriptor(e,t){return Reflect.getOwnPropertyDescriptor(e._scopes[0],t)},getPrototypeOf(){return Reflect.getPrototypeOf(e[0])},has(e,t){return gn(e).includes(t)},ownKeys(e){return gn(e)},set(e,t,s){const i=e._storage||(e._storage=a());return e[t]=i[t]=s,delete e._keys,!0}})}function Ga(e,t,s,i){const a={_cacheable:!1,_proxy:e,_context:t,_subProxy:s,_stack:new Set,_descriptors:Ja(e,i),setContext:t=>Ga(e,t,s,i),override:a=>Ga(e.override(a),t,s,i)};return new Proxy(a,{deleteProperty(t,s){return delete t[s],delete e[s],!0},get(e,t,s){return tn(e,t,()=>sn(e,t,s))},getOwnPropertyDescriptor(t,s){return t._descriptors.allKeys?Reflect.has(e,s)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(e,s)},getPrototypeOf(){return Reflect.getPrototypeOf(e)},has(t,s){return Reflect.has(e,s)},ownKeys(){return Reflect.ownKeys(e)},set(t,s,i){return e[s]=i,delete t[s],!0}})}function Ja(e,t={scriptable:!0,indexable:!0}){const{_scriptable:s=t.scriptable,_indexable:i=t.indexable,_allKeys:a=t.allKeys}=e;return{allKeys:a,scriptable:s,indexable:i,isScriptable:ai(s)?s:()=>s,isIndexable:ai(i)?i:()=>i}}const Za=(e,t)=>e?e+si(t):t,en=(e,t)=>Us(t)&&"adapters"!==e&&(null===Object.getPrototypeOf(t)||t.constructor===Object);function tn(e,t,s){if(Object.prototype.hasOwnProperty.call(e,t)||"constructor"===t)return e[t];const i=s();return e[t]=i,i}function sn(e,t,s){const{_proxy:i,_context:a,_subProxy:n,_descriptors:o}=e;let l=i[t];return ai(l)&&o.isScriptable(t)&&(l=an(t,l,e,s)),Is(l)&&l.length&&(l=nn(t,l,e,o.isIndexable)),en(t,l)&&(l=Ga(l,a,n&&n[t],o)),l}function an(e,t,s,i){const{_proxy:a,_context:n,_subProxy:o,_stack:l}=s;if(l.has(e))throw new Error("Recursion detected: "+Array.from(l).join("->")+"->"+e);l.add(e);let r=t(n,o||i);return l.delete(e),en(e,r)&&(r=dn(a._scopes,a,e,r)),r}function nn(e,t,s,i){const{_proxy:a,_context:n,_subProxy:o,_descriptors:l}=s;if("undefined"!==typeof n.index&&i(e))return t[n.index%t.length];if(Us(t[0])){const s=t,i=a._scopes.filter(e=>e!==s);t=[];for(const r of s){const s=dn(i,a,e,r);t.push(Ga(s,n,o&&o[e],l))}}return t}function on(e,t,s){return ai(e)?e(t,s):e}const ln=(e,t)=>!0===e?t:"string"===typeof e?ti(t,e):void 0;function rn(e,t,s,i,a){for(const n of t){const t=ln(s,n);if(t){e.add(t);const n=on(t._fallback,s,a);if("undefined"!==typeof n&&n!==s&&n!==i)return n}else if(!1===t&&"undefined"!==typeof i&&s!==i)return null}return!1}function dn(e,t,s,i){const a=t._rootScopes,n=on(t._fallback,s,i),o=[...e,...a],l=new Set;l.add(i);let r=cn(l,o,s,n||s,i);return null!==r&&(("undefined"===typeof n||n===s||(r=cn(l,o,n,r,i),null!==r))&&Ya(Array.from(l),[""],a,n,()=>hn(t,s,i)))}function cn(e,t,s,i,a){while(s)s=rn(e,t,s,i,a);return s}function hn(e,t,s){const i=e._getTarget();t in i||(i[t]={});const a=i[t];return Is(a)&&Us(s)?s:a||{}}function un(e,t,s,i){let a;for(const n of t)if(a=pn(Za(n,e),s),"undefined"!==typeof a)return en(e,a)?dn(s,i,e,a):a}function pn(e,t){for(const s of t){if(!s)continue;const t=s[e];if("undefined"!==typeof t)return t}}function gn(e){let t=e._keys;return t||(t=e._keys=mn(e._scopes)),t}function mn(e){const t=new Set;for(const s of e)for(const e of Object.keys(s).filter(e=>!e.startsWith("_")))t.add(e);return Array.from(t)}function fn(e,t,s,i){const{iScale:a}=e,{key:n="r"}=this._parsing,o=new Array(i);let l,r,d,c;for(l=0,r=i;lt"x"===e?"y":"x";function xn(e,t,s,i){const a=e.skip?t:e,n=t,o=s.skip?t:s,l=Ai(n,a),r=Ai(o,n);let d=l/(l+r),c=r/(l+r);d=isNaN(d)?0:d,c=isNaN(c)?0:c;const h=i*d,u=i*c;return{previous:{x:n.x-h*(o.x-a.x),y:n.y-h*(o.y-a.y)},next:{x:n.x+u*(o.x-a.x),y:n.y+u*(o.y-a.y)}}}function kn(e,t,s){const i=e.length;let a,n,o,l,r,d=yn(e,0);for(let c=0;c!e.skip)),"monotone"===t.cubicInterpolationMode)wn(e,a);else{let s=i?e[e.length-1]:e[0];for(n=0,o=e.length;ne.ownerDocument.defaultView.getComputedStyle(e,null);function Mn(e,t){return Pn(e).getPropertyValue(t)}const Dn=["top","right","bottom","left"];function Vn(e,t,s){const i={};s=s?"-"+s:"";for(let a=0;a<4;a++){const n=Dn[a];i[n]=parseFloat(e[t+"-"+n+s])||0}return i.width=i.left+i.right,i.height=i.top+i.bottom,i}const Ln=(e,t,s)=>(e>0||t>0)&&(!s||!s.shadowRoot);function En(e,t){const s=e.touches,i=s&&s.length?s[0]:e,{offsetX:a,offsetY:n}=i;let o,l,r=!1;if(Ln(a,n,e.target))o=a,l=n;else{const e=t.getBoundingClientRect();o=i.clientX-e.left,l=i.clientY-e.top,r=!0}return{x:o,y:l,box:r}}function In(e,t){if("native"in e)return e;const{canvas:s,currentDevicePixelRatio:i}=t,a=Pn(s),n="border-box"===a.boxSizing,o=Vn(a,"padding"),l=Vn(a,"border","width"),{x:r,y:d,box:c}=En(e,s),h=o.left+(c&&l.left),u=o.top+(c&&l.top);let{width:p,height:g}=t;return n&&(p-=o.width+l.width,g-=o.height+l.height),{x:Math.round((r-h)/p*s.width/i),y:Math.round((d-u)/g*s.height/i)}}function Un(e,t,s){let i,a;if(void 0===t||void 0===s){const n=e&&An(e);if(n){const e=n.getBoundingClientRect(),o=Pn(n),l=Vn(o,"border","width"),r=Vn(o,"padding");t=e.width-r.width-l.width,s=e.height-r.height-l.height,i=$n(o.maxWidth,n,"clientWidth"),a=$n(o.maxHeight,n,"clientHeight")}else t=e.clientWidth,s=e.clientHeight}return{width:t,height:s,maxWidth:i||ci,maxHeight:a||ci}}const On=e=>Math.round(10*e)/10;function Rn(e,t,s,i){const a=Pn(e),n=Vn(a,"margin"),o=$n(a.maxWidth,e,"clientWidth")||ci,l=$n(a.maxHeight,e,"clientHeight")||ci,r=Un(e,t,s);let{width:d,height:c}=r;if("content-box"===a.boxSizing){const e=Vn(a,"border","width"),t=Vn(a,"padding");d-=t.width+e.width,c-=t.height+e.height}d=Math.max(0,d-n.width),c=Math.max(0,i?d/i:c-n.height),d=On(Math.min(d,o,r.maxWidth)),c=On(Math.min(c,l,r.maxHeight)),d&&!c&&(c=On(d/2));const h=void 0!==t||void 0!==s;return h&&i&&r.height&&c>r.height&&(c=r.height,d=On(Math.floor(c*i))),{width:d,height:c}}function Wn(e,t,s){const i=t||1,a=On(e.height*i),n=On(e.width*i);e.height=On(e.height),e.width=On(e.width);const o=e.canvas;return o.style&&(s||!o.style.height&&!o.style.width)&&(o.style.height=`${e.height}px`,o.style.width=`${e.width}px`),(e.currentDevicePixelRatio!==i||o.height!==a||o.width!==n)&&(e.currentDevicePixelRatio=i,o.height=a,o.width=n,e.ctx.setTransform(i,0,0,i,0,0),!0)}const Nn=function(){let e=!1;try{const t={get passive(){return e=!0,!1}};Tn()&&(window.addEventListener("test",null,t),window.removeEventListener("test",null,t))}catch(t){}return e}();function zn(e,t){const s=Mn(e,t),i=s&&s.match(/^(\d+)(\.\d+)?px$/);return i?+i[1]:void 0}function Bn(e,t,s,i){return{x:e.x+s*(t.x-e.x),y:e.y+s*(t.y-e.y)}}function jn(e,t,s,i){return{x:e.x+s*(t.x-e.x),y:"middle"===i?s<.5?e.y:t.y:"after"===i?s<1?e.y:t.y:s>0?t.y:e.y}}function Hn(e,t,s,i){const a={x:e.cp2x,y:e.cp2y},n={x:t.cp1x,y:t.cp1y},o=Bn(e,a,s),l=Bn(a,n,s),r=Bn(n,t,s),d=Bn(o,l,s),c=Bn(l,r,s);return Bn(d,c,s)}const qn=function(e,t){return{x(s){return e+e+t-s},setWidth(e){t=e},textAlign(e){return"center"===e?e:"right"===e?"left":"right"},xPlus(e,t){return e-t},leftForLtr(e,t){return e-t}}},Xn=function(){return{x(e){return e},setWidth(e){},textAlign(e){return e},xPlus(e,t){return e+t},leftForLtr(e,t){return e}}};function Kn(e,t,s){return e?qn(t,s):Xn()}function Qn(e,t){let s,i;"ltr"!==t&&"rtl"!==t||(s=e.canvas.style,i=[s.getPropertyValue("direction"),s.getPropertyPriority("direction")],s.setProperty("direction",t,"important"),e.prevTextDirection=i)}function Yn(e,t){void 0!==t&&(delete e.prevTextDirection,e.canvas.style.setProperty("direction",t[0],t[1]))}function Gn(e){return"angle"===e?{between:Mi,compare:$i,normalize:Pi}:{between:Li,compare:(e,t)=>e-t,normalize:e=>e}}function Jn({start:e,end:t,count:s,loop:i,style:a}){return{start:e%s,end:t%s,loop:i&&(t-e+1)%s===0,style:a}}function Zn(e,t,s){const{property:i,start:a,end:n}=s,{between:o,normalize:l}=Gn(i),r=t.length;let d,c,{start:h,end:u,loop:p}=e;if(p){for(h+=r,u+=r,d=0,c=r;dr(a,b,m)&&0!==l(a,b),k=()=>0===l(n,m)||r(n,b,m),_=()=>y||x(),w=()=>!y||k();for(let C=c,S=c;C<=h;++C)f=t[C%o],f.skip||(m=d(f[i]),m!==b&&(y=r(m,a,n),null===v&&_()&&(v=0===l(m,a)?C:S),null!==v&&w()&&(g.push(Jn({start:v,end:C,loop:u,count:o,style:p})),v=null),S=C,b=m));return null!==v&&g.push(Jn({start:v,end:h,loop:u,count:o,style:p})),g}function to(e,t){const s=[],i=e.segments;for(let a=0;aa&&e[n%t].skip)n--;return n%=t,{start:a,end:n}}function io(e,t,s,i){const a=e.length,n=[];let o,l=t,r=e[t];for(o=t+1;o<=s;++o){const s=e[o%a];s.skip||s.stop?r.skip||(i=!1,n.push({start:t%a,end:(o-1)%a,loop:i}),t=l=s.stop?o:null):(l=o,r.skip&&(t=o)),r=s}return null!==l&&n.push({start:t%a,end:l%a,loop:i}),n}function ao(e,t){const s=e.points,i=e.options.spanGaps,a=s.length;if(!a)return[];const n=!!e._loop,{start:o,end:l}=so(s,a,n,i);if(!0===i)return no(e,[{start:o,end:l,loop:n}],s,t);const r=li({chart:e,initial:t.initial,numSteps:n,currentStep:Math.min(s-t.start,n)}))}_refresh(){this._request||(this._running=!0,this._request=Bi.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(e=Date.now()){let t=0;this._charts.forEach((s,i)=>{if(!s.running||!s.items.length)return;const a=s.items;let n,o=a.length-1,l=!1;for(;o>=0;--o)n=a[o],n._active?(n._total>s.duration&&(s.duration=n._total),n.tick(e),l=!0):(a[o]=a[a.length-1],a.pop());l&&(i.draw(),this._notify(i,s,e,"progress")),a.length||(s.running=!1,this._notify(i,s,e,"complete"),s.initial=!1),t+=a.length}),this._lastDate=e,0===t&&(this._running=!1)}_getAnims(e){const t=this._charts;let s=t.get(e);return s||(s={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},t.set(e,s)),s}listen(e,t,s){this._getAnims(e).listeners[t].push(s)}add(e,t){t&&t.length&&this._getAnims(e).items.push(...t)}has(e){return this._getAnims(e).items.length>0}start(e){const t=this._charts.get(e);t&&(t.running=!0,t.start=Date.now(),t.duration=t.items.reduce((e,t)=>Math.max(e,t._duration),0),this._refresh())}running(e){if(!this._running)return!1;const t=this._charts.get(e);return!!(t&&t.running&&t.items.length)}stop(e){const t=this._charts.get(e);if(!t||!t.items.length)return;const s=t.items;let i=s.length-1;for(;i>=0;--i)s[i].cancel();t.items=[],this._notify(e,t,Date.now(),"complete")}remove(e){return this._charts.delete(e)}}var go=new po;const mo="transparent",fo={boolean(e,t,s){return s>.5?t:e},color(e,t,s){const i=sa(e||mo),a=i.valid&&sa(t||mo);return a&&a.valid?a.mix(i,s).hexString():t},number(e,t,s){return e+(t-e)*s}};class bo{constructor(e,t,s,i){const a=t[s];i=Xa([e.to,i,a,e.from]);const n=Xa([e.from,a,i]);this._active=!0,this._fn=e.fn||fo[e.type||typeof n],this._easing=ea[e.easing]||ea.linear,this._start=Math.floor(Date.now()+(e.delay||0)),this._duration=this._total=Math.floor(e.duration),this._loop=!!e.loop,this._target=t,this._prop=s,this._from=n,this._to=i,this._promises=void 0}active(){return this._active}update(e,t,s){if(this._active){this._notify(!1);const i=this._target[this._prop],a=s-this._start,n=this._duration-a;this._start=s,this._duration=Math.floor(Math.max(n,e.duration)),this._total+=a,this._loop=!!e.loop,this._to=Xa([e.to,t,i,e.from]),this._from=Xa([e.from,i,t])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(e){const t=e-this._start,s=this._duration,i=this._prop,a=this._from,n=this._loop,o=this._to;let l;if(this._active=a!==o&&(n||t1?2-l:l,l=this._easing(Math.min(1,Math.max(0,l))),this._target[i]=this._fn(a,o,l))}wait(){const e=this._promises||(this._promises=[]);return new Promise((t,s)=>{e.push({res:t,rej:s})})}_notify(e){const t=e?"res":"rej",s=this._promises||[];for(let i=0;i{const a=e[i];if(!Us(a))return;const n={};for(const e of t)n[e]=a[e];(Is(a.properties)&&a.properties||[i]).forEach(e=>{e!==i&&s.has(e)||s.set(e,n)})})}_animateOptions(e,t){const s=t.options,i=xo(e,s);if(!i)return[];const a=this._createAnimations(i,s);return s.$shared&&vo(e.options.$animations,s).then(()=>{e.options=s},()=>{}),a}_createAnimations(e,t){const s=this._properties,i=[],a=e.$animations||(e.$animations={}),n=Object.keys(t),o=Date.now();let l;for(l=n.length-1;l>=0;--l){const r=n[l];if("$"===r.charAt(0))continue;if("options"===r){i.push(...this._animateOptions(e,t));continue}const d=t[r];let c=a[r];const h=s.get(r);if(c){if(h&&c.active()){c.update(h,d,o);continue}c.cancel()}h&&h.duration?(a[r]=c=new bo(h,e,r,d),i.push(c)):e[r]=d}return i}update(e,t){if(0===this._properties.size)return void Object.assign(e,t);const s=this._createAnimations(e,t);return s.length?(go.add(this._chart,s),!0):void 0}}function vo(e,t){const s=[],i=Object.keys(t);for(let a=0;a0||!s&&t<0)return a.index}return null}function Do(e,t){const{chart:s,_cachedMeta:i}=e,a=s._stacks||(s._stacks={}),{iScale:n,vScale:o,index:l}=i,r=n.axis,d=o.axis,c=Ao(n,o,i),h=t.length;let u;for(let p=0;ps[e].axis===t).shift()}function Lo(e,t){return Qa(e,{active:!1,dataset:void 0,datasetIndex:t,index:t,mode:"default",type:"dataset"})}function Eo(e,t,s){return Qa(e,{active:!1,dataIndex:t,parsed:void 0,raw:void 0,element:s,index:t,mode:"default",type:"data"})}function Io(e,t){const s=e.controller.index,i=e.vScale&&e.vScale.axis;if(i){t=t||e._parsed;for(const e of t){const t=e._stacks;if(!t||void 0===t[i]||void 0===t[i][s])return;delete t[i][s],void 0!==t[i]._visualValues&&void 0!==t[i]._visualValues[s]&&delete t[i]._visualValues[s]}}}const Uo=e=>"reset"===e||"none"===e,Oo=(e,t)=>t?e:Object.assign({},e),Ro=(e,t,s)=>e&&!t.hidden&&t._stacked&&{keys:Co(s,!0),values:null};class Wo{constructor(e,t){this.chart=e,this._ctx=e.ctx,this.index=t,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const e=this._cachedMeta;this.configure(),this.linkScales(),e._stacked=To(e.vScale,e),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(e){this.index!==e&&Io(this._cachedMeta),this.index=e}linkScales(){const e=this.chart,t=this._cachedMeta,s=this.getDataset(),i=(e,t,s,i)=>"x"===e?t:"r"===e?i:s,a=t.xAxisID=Ws(s.xAxisID,Vo(e,"x")),n=t.yAxisID=Ws(s.yAxisID,Vo(e,"y")),o=t.rAxisID=Ws(s.rAxisID,Vo(e,"r")),l=t.indexAxis,r=t.iAxisID=i(l,a,n,o),d=t.vAxisID=i(l,n,a,o);t.xScale=this.getScaleForId(a),t.yScale=this.getScaleForId(n),t.rScale=this.getScaleForId(o),t.iScale=this.getScaleForId(r),t.vScale=this.getScaleForId(d)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(e){return this.chart.scales[e]}_getOtherScale(e){const t=this._cachedMeta;return e===t.iScale?t.vScale:t.iScale}reset(){this._update("reset")}_destroy(){const e=this._cachedMeta;this._data&&Ni(this._data,this),e._stacked&&Io(e)}_dataCheck(){const e=this.getDataset(),t=e.data||(e.data=[]),s=this._data;if(Us(t)){const e=this._cachedMeta;this._data=Fo(t,e)}else if(s!==t){if(s){Ni(s,this);const e=this._cachedMeta;Io(e),e._parsed=[]}t&&Object.isExtensible(t)&&Wi(t,this),this._syncList=[],this._data=t}}addElements(){const e=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(e.dataset=new this.datasetElementType)}buildOrUpdateElements(e){const t=this._cachedMeta,s=this.getDataset();let i=!1;this._dataCheck();const a=t._stacked;t._stacked=To(t.vScale,t),t.stack!==s.stack&&(i=!0,Io(t),t.stack=s.stack),this._resyncElements(e),(i||a!==t._stacked)&&(Do(this,t._parsed),t._stacked=To(t.vScale,t))}configure(){const e=this.chart.config,t=e.datasetScopeKeys(this._type),s=e.getOptionScopes(this.getDataset(),t,!0);this.options=e.createResolver(s,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(e,t){const{_cachedMeta:s,_data:i}=this,{iScale:a,_stacked:n}=s,o=a.axis;let l,r,d,c=0===e&&t===i.length||s._sorted,h=e>0&&s._parsed[e-1];if(!1===this._parsing)s._parsed=i,s._sorted=!0,d=i;else{d=Is(i[e])?this.parseArrayData(s,i,e,t):Us(i[e])?this.parseObjectData(s,i,e,t):this.parsePrimitiveData(s,i,e,t);const a=()=>null===r[o]||h&&r[o]t||c=0;--h)if(!p()){this.updateRangeFromParsed(r,e,u,l);break}return r}getAllParsedValues(e){const t=this._cachedMeta._parsed,s=[];let i,a,n;for(i=0,a=t.length;i=0&&ethis.getContext(s,i,t),g=r.resolveNamedOptions(h,u,p,c);return g.$shared&&(g.$shared=l,a[n]=Object.freeze(Oo(g,l))),g}_resolveAnimations(e,t,s){const i=this.chart,a=this._cachedDataOpts,n=`animation-${t}`,o=a[n];if(o)return o;let l;if(!1!==i.options.animation){const i=this.chart.config,a=i.datasetAnimationScopeKeys(this._type,t),n=i.getOptionScopes(this.getDataset(),a);l=i.createResolver(n,this.getContext(e,s,t))}const r=new yo(i,l&&l.animations);return l&&l._cacheable&&(a[n]=Object.freeze(r)),r}getSharedOptions(e){if(e.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},e))}includeOptions(e,t){return!t||Uo(e)||this.chart._animationsDisabled}_getSharedOptions(e,t){const s=this.resolveDataElementOptions(e,t),i=this._sharedOptions,a=this.getSharedOptions(s),n=this.includeOptions(t,a)||a!==i;return this.updateSharedOptions(a,t,s),{sharedOptions:a,includeOptions:n}}updateElement(e,t,s,i){Uo(i)?Object.assign(e,s):this._resolveAnimations(t,i).update(e,s)}updateSharedOptions(e,t,s){e&&!Uo(t)&&this._resolveAnimations(void 0,t).update(e,s)}_setStyle(e,t,s,i){e.active=i;const a=this.getStyle(t,i);this._resolveAnimations(t,s,i).update(e,{options:!i&&this.getSharedOptions(a)||a})}removeHoverStyle(e,t,s){this._setStyle(e,s,"active",!1)}setHoverStyle(e,t,s){this._setStyle(e,s,"active",!0)}_removeDatasetHoverStyle(){const e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,"active",!1)}_setDatasetHoverStyle(){const e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,"active",!0)}_resyncElements(e){const t=this._data,s=this._cachedMeta.data;for(const[o,l,r]of this._syncList)this[o](l,r);this._syncList=[];const i=s.length,a=t.length,n=Math.min(a,i);n&&this.parse(0,n),a>i?this._insertElements(i,a-i,e):a{for(e.length+=t,o=e.length-1;o>=n;o--)e[o]=e[o-t]};for(l(a),o=e;oe-t))}return e._cache.$bar}function zo(e){const t=e.iScale,s=No(t,e.type);let i,a,n,o,l=t._length;const r=()=>{32767!==n&&-32768!==n&&(ii(o)&&(l=Math.min(l,Math.abs(n-o)||l)),o=n)};for(i=0,a=s.length;i0?a[e-1]:null,l=eMath.abs(l)&&(r=l,d=o),t[s.axis]=d,t._custom={barStart:r,barEnd:d,start:a,end:n,min:o,max:l}}function qo(e,t,s,i){return Is(e)?Ho(e,t,s,i):t[s.axis]=s.parse(e,i),t}function Xo(e,t,s,i){const a=e.iScale,n=e.vScale,o=a.getLabels(),l=a===n,r=[];let d,c,h,u;for(d=s,c=s+i;d=s?1:-1)}function Yo(e){let t,s,i,a,n;return e.horizontal?(t=e.base>e.x,s="left",i="right"):(t=e.basee.controller.options.grouped),a=s.options.stacked,n=[],o=this._cachedMeta.controller.getParsed(t),l=o&&o[s.axis],r=e=>{const t=e._parsed.find(e=>e[s.axis]===l),i=t&&t[e.vScale.axis];if(Es(i)||isNaN(i))return!0};for(const d of i)if((void 0===t||!r(d))&&((!1===a||-1===n.indexOf(d.stack)||void 0===a&&void 0===d.stack)&&n.push(d.stack),d.index===e))break;return n.length||n.push(void 0),n}_getStackCount(e){return this._getStacks(void 0,e).length}_getAxisCount(){return this._getAxis().length}getFirstScaleIdForIndexAxis(){const e=this.chart.scales,t=this.chart.options.indexAxis;return Object.keys(e).filter(s=>e[s].axis===t).shift()}_getAxis(){const e={},t=this.getFirstScaleIdForIndexAxis();for(const s of this.chart.data.datasets)e[Ws("x"===this.chart.options.indexAxis?s.xAxisID:s.yAxisID,t)]=!0;return Object.keys(e)}_getStackIndex(e,t,s){const i=this._getStacks(e,s),a=void 0!==t?i.indexOf(t):-1;return-1===a?i.length-1:a}_getRuler(){const e=this.options,t=this._cachedMeta,s=t.iScale,i=[];let a,n;for(a=0,n=t.data.length;a=0;--s)t=Math.max(t,e[s].size(this.resolveDataElementOptions(s))/2);return t>0&&t}getLabelAndValue(e){const t=this._cachedMeta,s=this.chart.data.labels||[],{xScale:i,yScale:a}=t,n=this.getParsed(e),o=i.getLabelForValue(n.x),l=a.getLabelForValue(n.y),r=n._custom;return{label:s[e]||"",value:"("+o+", "+l+(r?", "+r:"")+")"}}update(e){const t=this._cachedMeta.data;this.updateElements(t,0,t.length,e)}updateElements(e,t,s,i){const a="reset"===i,{iScale:n,vScale:o}=this._cachedMeta,{sharedOptions:l,includeOptions:r}=this._getSharedOptions(t,i),d=n.axis,c=o.axis;for(let h=t;hMi(e,l,r,!0)?1:Math.max(t,t*s,i,i*s),g=(e,t,i)=>Mi(e,l,r,!0)?-1:Math.min(t,t*s,i,i*s),m=p(0,d,h),f=p(ui,c,u),b=g(li,d,h),y=g(li+ui,c,u);i=(m-b)/2,a=(f-y)/2,n=-(m+b)/2,o=-(f+y)/2}return{ratioX:i,ratioY:a,offsetX:n,offsetY:o}}(0,Nt.A)(il,"id","bubble"),(0,Nt.A)(il,"defaults",{datasetElementType:!1,dataElementType:"point",animations:{numbers:{type:"number",properties:["x","y","borderWidth","radius"]}}}),(0,Nt.A)(il,"overrides",{scales:{x:{type:"linear"},y:{type:"linear"}}});class nl extends Wo{constructor(e,t){super(e,t),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(e,t){const s=this.getDataset().data,i=this._cachedMeta;if(!1===this._parsing)i._parsed=s;else{let a,n,o=e=>+s[e];if(Us(s[e])){const{key:e="value"}=this._parsing;o=t=>+ti(s[t],e)}for(a=e,n=e+t;a0&&!isNaN(e)?ri*(Math.abs(e)/t):0}getLabelAndValue(e){const t=this._cachedMeta,s=this.chart,i=s.data.labels||[],a=ca(t._parsed[e],s.options.locale);return{label:i[e]||"",value:a}}getMaxBorderWidth(e){let t=0;const s=this.chart;let i,a,n,o,l;if(!e)for(i=0,a=s.data.datasets.length;i"spacing"!==e,_indexable:e=>"spacing"!==e&&!e.startsWith("borderDash")&&!e.startsWith("hoverBorderDash")}),(0,Nt.A)(nl,"overrides",{aspectRatio:1,plugins:{legend:{labels:{generateLabels(e){const t=e.data,{labels:{pointStyle:s,textAlign:i,color:a,useBorderRadius:n,borderRadius:o}}=e.legend.options;return t.labels.length&&t.datasets.length?t.labels.map((t,l)=>{const r=e.getDatasetMeta(0),d=r.controller.getStyle(l);return{text:t,fillStyle:d.backgroundColor,fontColor:a,hidden:!e.getDataVisibility(l),lineDash:d.borderDash,lineDashOffset:d.borderDashOffset,lineJoin:d.borderJoinStyle,lineWidth:d.borderWidth,strokeStyle:d.borderColor,textAlign:i,pointStyle:s,borderRadius:n&&(o||d.borderRadius),index:l}}):[]}},onClick(e,t,s){s.chart.toggleDataVisibility(t.index),s.chart.update()}}}});class ol extends Wo{initialize(){this.enableOptionSharing=!0,this.supportsDecimation=!0,super.initialize()}update(e){const t=this._cachedMeta,{dataset:s,data:i=[],_dataset:a}=t,n=this.chart._animationsDisabled;let{start:o,count:l}=Qi(t,i,n);this._drawStart=o,this._drawCount=l,Yi(t)&&(o=0,l=i.length),s._chart=this.chart,s._datasetIndex=this.index,s._decimated=!!a._decimated,s.points=i;const r=this.resolveDatasetElementOptions(e);this.options.showLine||(r.borderWidth=0),r.segment=this.options.segment,this.updateElement(s,void 0,{animated:!n,options:r},e),this.updateElements(i,o,l,e)}updateElements(e,t,s,i){const a="reset"===i,{iScale:n,vScale:o,_stacked:l,_dataset:r}=this._cachedMeta,{sharedOptions:d,includeOptions:c}=this._getSharedOptions(t,i),h=n.axis,u=o.axis,{spanGaps:p,segment:g}=this.options,m=ki(p)?p:Number.POSITIVE_INFINITY,f=this.chart._animationsDisabled||a||"none"===i,b=t+s,y=e.length;let v=t>0&&this.getParsed(t-1);for(let x=0;x=b){p.skip=!0;continue}const y=this.getParsed(x),k=Es(y[u]),_=p[h]=n.getPixelForValue(y[h],x),w=p[u]=a||k?o.getBasePixel():o.getPixelForValue(l?this.applyStack(o,y,l):y[u],x);p.skip=isNaN(_)||isNaN(w)||k,p.stop=x>0&&Math.abs(y[h]-v[h])>m,g&&(p.parsed=y,p.raw=r.data[x]),c&&(p.options=d||this.resolveDataElementOptions(x,s.active?"active":i)),f||this.updateElement(s,x,p,i),v=y}}getMaxOverflow(){const e=this._cachedMeta,t=e.dataset,s=t.options&&t.options.borderWidth||0,i=e.data||[];if(!i.length)return s;const a=i[0].size(this.resolveDataElementOptions(0)),n=i[i.length-1].size(this.resolveDataElementOptions(i.length-1));return Math.max(s,a,n)/2}draw(){const e=this._cachedMeta;e.dataset.updateControlPoints(this.chart.chartArea,e.iScale.axis),super.draw()}}(0,Nt.A)(ol,"id","line"),(0,Nt.A)(ol,"defaults",{datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1}),(0,Nt.A)(ol,"overrides",{scales:{_index_:{type:"category"},_value_:{type:"linear"}}});class ll extends Wo{constructor(e,t){super(e,t),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(e){const t=this._cachedMeta,s=this.chart,i=s.data.labels||[],a=ca(t._parsed[e].r,s.options.locale);return{label:i[e]||"",value:a}}parseObjectData(e,t,s,i){return fn.bind(this)(e,t,s,i)}update(e){const t=this._cachedMeta.data;this._updateRadius(),this.updateElements(t,0,t.length,e)}getMinMax(){const e=this._cachedMeta,t={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};return e.data.forEach((e,s)=>{const i=this.getParsed(s).r;!isNaN(i)&&this.chart.getDataVisibility(s)&&(it.max&&(t.max=i))}),t}_updateRadius(){const e=this.chart,t=e.chartArea,s=e.options,i=Math.min(t.right-t.left,t.bottom-t.top),a=Math.max(i/2,0),n=Math.max(s.cutoutPercentage?a/100*s.cutoutPercentage:1,0),o=(a-n)/e.getVisibleDatasetCount();this.outerRadius=a-o*this.index,this.innerRadius=this.outerRadius-o}updateElements(e,t,s,i){const a="reset"===i,n=this.chart,o=n.options,l=o.animation,r=this._cachedMeta.rScale,d=r.xCenter,c=r.yCenter,h=r.getIndexAngle(0)-.5*li;let u,p=h;const g=360/this.countVisibleElements();for(u=0;u{!isNaN(this.getParsed(s).r)&&this.chart.getDataVisibility(s)&&t++}),t}_computeAngle(e,t,s){return this.chart.getDataVisibility(e)?Ci(this.resolveDataElementOptions(e,t).angle||s):0}}(0,Nt.A)(ll,"id","polarArea"),(0,Nt.A)(ll,"defaults",{dataElementType:"arc",animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:"number",properties:["x","y","startAngle","endAngle","innerRadius","outerRadius"]}},indexAxis:"r",startAngle:0}),(0,Nt.A)(ll,"overrides",{aspectRatio:1,plugins:{legend:{labels:{generateLabels(e){const t=e.data;if(t.labels.length&&t.datasets.length){const{labels:{pointStyle:s,color:i}}=e.legend.options;return t.labels.map((t,a)=>{const n=e.getDatasetMeta(0),o=n.controller.getStyle(a);return{text:t,fillStyle:o.backgroundColor,strokeStyle:o.borderColor,fontColor:i,lineWidth:o.borderWidth,pointStyle:s,hidden:!e.getDataVisibility(a),index:a}})}return[]}},onClick(e,t,s){s.chart.toggleDataVisibility(t.index),s.chart.update()}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}});class rl extends nl{}(0,Nt.A)(rl,"id","pie"),(0,Nt.A)(rl,"defaults",{cutout:0,rotation:0,circumference:360,radius:"100%"});class dl extends Wo{getLabelAndValue(e){const t=this._cachedMeta.vScale,s=this.getParsed(e);return{label:t.getLabels()[e],value:""+t.getLabelForValue(s[t.axis])}}parseObjectData(e,t,s,i){return fn.bind(this)(e,t,s,i)}update(e){const t=this._cachedMeta,s=t.dataset,i=t.data||[],a=t.iScale.getLabels();if(s.points=i,"resize"!==e){const t=this.resolveDatasetElementOptions(e);this.options.showLine||(t.borderWidth=0);const n={_loop:!0,_fullLoop:a.length===i.length,options:t};this.updateElement(s,void 0,n,e)}this.updateElements(i,0,i.length,e)}updateElements(e,t,s,i){const a=this._cachedMeta.rScale,n="reset"===i;for(let o=t;o0&&this.getParsed(t-1);for(let v=t;v0&&Math.abs(s[u]-y[u])>f,m&&(d.parsed=s,d.raw=r.data[v]),h&&(d.options=c||this.resolveDataElementOptions(v,t.active?"active":i)),b||this.updateElement(t,v,d,i),y=s}this.updateSharedOptions(c,i,d)}getMaxOverflow(){const e=this._cachedMeta,t=e.data||[];if(!this.options.showLine){let e=0;for(let s=t.length-1;s>=0;--s)e=Math.max(e,t[s].size(this.resolveDataElementOptions(s))/2);return e>0&&e}const s=e.dataset,i=s.options&&s.options.borderWidth||0;if(!t.length)return i;const a=t[0].size(this.resolveDataElementOptions(0)),n=t[t.length-1].size(this.resolveDataElementOptions(t.length-1));return Math.max(i,a,n)/2}}(0,Nt.A)(cl,"id","scatter"),(0,Nt.A)(cl,"defaults",{datasetElementType:!1,dataElementType:"point",showLine:!1,fill:!1}),(0,Nt.A)(cl,"overrides",{interaction:{mode:"point"},scales:{x:{type:"linear"},y:{type:"linear"}}});function hl(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class ul{static override(e){Object.assign(ul.prototype,e)}constructor(e){(0,Nt.A)(this,"options",void 0),this.options=e||{}}init(){}formats(){return hl()}parse(){return hl()}format(){return hl()}add(){return hl()}diff(){return hl()}startOf(){return hl()}endOf(){return hl()}}var pl={_date:ul};function gl(e,t,s,i){const{controller:a,data:n,_sorted:o}=e,l=a._cachedMeta.iScale,r=e.dataset&&e.dataset.options?e.dataset.options.spanGaps:null;if(l&&t===l.axis&&"r"!==t&&o&&n.length){const o=l._reversePixels?Ui:Ii;if(!i){const i=o(n,t,s);if(r){const{vScale:t}=a._cachedMeta,{_parsed:s}=e,n=s.slice(0,i.lo+1).reverse().findIndex(e=>!Es(e[t.axis]));i.lo-=Math.max(0,n);const o=s.slice(i.hi).findIndex(e=>!Es(e[t.axis]));i.hi+=Math.max(0,o)}return i}if(a._sharedOptions){const e=n[0],i="function"===typeof e.getRange&&e.getRange(t);if(i){const e=o(n,t,s-i),a=o(n,t,s+i);return{lo:e.lo,hi:a.hi}}}}return{lo:0,hi:n.length-1}}function ml(e,t,s,i,a){const n=e.getSortedVisibleDatasetMetas(),o=s[t];for(let l=0,r=n.length;l{e[o]&&e[o](t[s],a)&&(n.push({element:e,datasetIndex:i,index:r}),l=l||e.inRange(t.x,t.y,a))}),i&&!l?[]:n}var _l={evaluateInteractionItems:ml,modes:{index(e,t,s,i){const a=In(t,e),n=s.axis||"x",o=s.includeInvisible||!1,l=s.intersect?bl(e,a,n,i,o):xl(e,a,n,!1,i,o),r=[];return l.length?(e.getSortedVisibleDatasetMetas().forEach(e=>{const t=l[0].index,s=e.data[t];s&&!s.skip&&r.push({element:s,datasetIndex:e.index,index:t})}),r):[]},dataset(e,t,s,i){const a=In(t,e),n=s.axis||"xy",o=s.includeInvisible||!1;let l=s.intersect?bl(e,a,n,i,o):xl(e,a,n,!1,i,o);if(l.length>0){const t=l[0].datasetIndex,s=e.getDatasetMeta(t).data;l=[];for(let e=0;ee.pos===t)}function Sl(e,t){return e.filter(e=>-1===wl.indexOf(e.pos)&&e.box.axis===t)}function Fl(e,t){return e.sort((e,s)=>{const i=t?s:e,a=t?e:s;return i.weight===a.weight?i.index-a.index:i.weight-a.weight})}function Tl(e){const t=[];let s,i,a,n,o,l;for(s=0,i=(e||[]).length;se.box.fullSize),!0),i=Fl(Cl(t,"left"),!0),a=Fl(Cl(t,"right")),n=Fl(Cl(t,"top"),!0),o=Fl(Cl(t,"bottom")),l=Sl(t,"x"),r=Sl(t,"y");return{fullSize:s,leftAndTop:i.concat(n),rightAndBottom:a.concat(r).concat(o).concat(l),chartArea:Cl(t,"chartArea"),vertical:i.concat(a).concat(r),horizontal:n.concat(o).concat(l)}}function Ml(e,t,s,i){return Math.max(e[s],t[s])+Math.max(e[i],t[i])}function Dl(e,t){e.top=Math.max(e.top,t.top),e.left=Math.max(e.left,t.left),e.bottom=Math.max(e.bottom,t.bottom),e.right=Math.max(e.right,t.right)}function Vl(e,t,s,i){const{pos:a,box:n}=s,o=e.maxPadding;if(!Us(a)){s.size&&(e[a]-=s.size);const t=i[s.stack]||{size:0,count:1};t.size=Math.max(t.size,s.horizontal?n.height:n.width),s.size=t.size/t.count,e[a]+=s.size}n.getPadding&&Dl(o,n.getPadding());const l=Math.max(0,t.outerWidth-Ml(o,e,"left","right")),r=Math.max(0,t.outerHeight-Ml(o,e,"top","bottom")),d=l!==e.w,c=r!==e.h;return e.w=l,e.h=r,s.horizontal?{same:d,other:c}:{same:c,other:d}}function Ll(e){const t=e.maxPadding;function s(s){const i=Math.max(t[s]-e[s],0);return e[s]+=i,i}e.y+=s("top"),e.x+=s("left"),s("right"),s("bottom")}function El(e,t){const s=t.maxPadding;function i(e){const i={left:0,top:0,right:0,bottom:0};return e.forEach(e=>{i[e]=Math.max(t[e],s[e])}),i}return i(e?["left","right"]:["top","bottom"])}function Il(e,t,s,i){const a=[];let n,o,l,r,d,c;for(n=0,o=e.length,d=0;n{"function"===typeof e.beforeLayout&&e.beforeLayout()});const c=r.reduce((e,t)=>t.box.options&&!1===t.box.options.display?e:e+1,0)||1,h=Object.freeze({outerWidth:t,outerHeight:s,padding:a,availableWidth:n,availableHeight:o,vBoxMaxWidth:n/2/c,hBoxMaxHeight:o/2}),u=Object.assign({},a);Dl(u,Ha(i));const p=Object.assign({maxPadding:u,w:n,h:o,x:a.left,y:a.top},a),g=$l(r.concat(d),h);Il(l.fullSize,p,h,g),Il(r,p,h,g),Il(d,p,h,g)&&Il(r,p,h,g),Ll(p),Ol(l.leftAndTop,p,h,g),p.x+=p.w,p.y+=p.h,Ol(l.rightAndBottom,p,h,g),e.chartArea={left:p.left,top:p.top,right:p.left+p.w,bottom:p.top+p.h,height:p.h,width:p.w},js(l.chartArea,t=>{const s=t.box;Object.assign(s,e.chartArea),s.update(p.w,p.h,{left:0,top:0,right:0,bottom:0})})}};class Wl{acquireContext(e,t){}releaseContext(e){return!1}addEventListener(e,t,s){}removeEventListener(e,t,s){}getDevicePixelRatio(){return 1}getMaximumSize(e,t,s,i){return t=Math.max(0,t||e.width),s=s||e.height,{width:t,height:Math.max(0,i?Math.floor(t/i):s)}}isAttached(e){return!0}updateConfig(e){}}class Nl extends Wl{acquireContext(e){return e&&e.getContext&&e.getContext("2d")||null}updateConfig(e){e.options.animation=!1}}const zl="$chartjs",Bl={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},jl=e=>null===e||""===e;function Hl(e,t){const s=e.style,i=e.getAttribute("height"),a=e.getAttribute("width");if(e[zl]={initial:{height:i,width:a,style:{display:s.display,height:s.height,width:s.width}}},s.display=s.display||"block",s.boxSizing=s.boxSizing||"border-box",jl(a)){const t=zn(e,"width");void 0!==t&&(e.width=t)}if(jl(i))if(""===e.style.height)e.height=e.width/(t||2);else{const t=zn(e,"height");void 0!==t&&(e.height=t)}return e}const ql=!!Nn&&{passive:!0};function Xl(e,t,s){e&&e.addEventListener(t,s,ql)}function Kl(e,t,s){e&&e.canvas&&e.canvas.removeEventListener(t,s,ql)}function Ql(e,t){const s=Bl[e.type]||e.type,{x:i,y:a}=In(e,t);return{type:s,chart:t,native:e,x:void 0!==i?i:null,y:void 0!==a?a:null}}function Yl(e,t){for(const s of e)if(s===t||s.contains(t))return!0}function Gl(e,t,s){const i=e.canvas,a=new MutationObserver(e=>{let t=!1;for(const s of e)t=t||Yl(s.addedNodes,i),t=t&&!Yl(s.removedNodes,i);t&&s()});return a.observe(document,{childList:!0,subtree:!0}),a}function Jl(e,t,s){const i=e.canvas,a=new MutationObserver(e=>{let t=!1;for(const s of e)t=t||Yl(s.removedNodes,i),t=t&&!Yl(s.addedNodes,i);t&&s()});return a.observe(document,{childList:!0,subtree:!0}),a}const Zl=new Map;let er=0;function tr(){const e=window.devicePixelRatio;e!==er&&(er=e,Zl.forEach((t,s)=>{s.currentDevicePixelRatio!==e&&t()}))}function sr(e,t){Zl.size||window.addEventListener("resize",tr),Zl.set(e,t)}function ir(e){Zl.delete(e),Zl.size||window.removeEventListener("resize",tr)}function ar(e,t,s){const i=e.canvas,a=i&&An(i);if(!a)return;const n=ji((e,t)=>{const i=a.clientWidth;s(e,t),i{const t=e[0],s=t.contentRect.width,i=t.contentRect.height;0===s&&0===i||n(s,i)});return o.observe(a),sr(e,n),o}function nr(e,t,s){s&&s.disconnect(),"resize"===t&&ir(e)}function or(e,t,s){const i=e.canvas,a=ji(t=>{null!==e.ctx&&s(Ql(t,e))},e);return Xl(i,t,a),a}class lr extends Wl{acquireContext(e,t){const s=e&&e.getContext&&e.getContext("2d");return s&&s.canvas===e?(Hl(e,t),s):null}releaseContext(e){const t=e.canvas;if(!t[zl])return!1;const s=t[zl].initial;["height","width"].forEach(e=>{const i=s[e];Es(i)?t.removeAttribute(e):t.setAttribute(e,i)});const i=s.style||{};return Object.keys(i).forEach(e=>{t.style[e]=i[e]}),t.width=t.width,delete t[zl],!0}addEventListener(e,t,s){this.removeEventListener(e,t);const i=e.$proxies||(e.$proxies={}),a={attach:Gl,detach:Jl,resize:ar},n=a[t]||or;i[t]=n(e,t,s)}removeEventListener(e,t){const s=e.$proxies||(e.$proxies={}),i=s[t];if(!i)return;const a={attach:nr,detach:nr,resize:nr},n=a[t]||Kl;n(e,t,i),s[t]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(e,t,s,i){return Rn(e,t,s,i)}isAttached(e){const t=e&&An(e);return!(!t||!t.isConnected)}}function rr(e){return!Tn()||"undefined"!==typeof OffscreenCanvas&&e instanceof OffscreenCanvas?Nl:lr}class dr{constructor(){(0,Nt.A)(this,"x",void 0),(0,Nt.A)(this,"y",void 0),(0,Nt.A)(this,"active",!1),(0,Nt.A)(this,"options",void 0),(0,Nt.A)(this,"$animations",void 0)}tooltipPosition(e){const{x:t,y:s}=this.getProps(["x","y"],e);return{x:t,y:s}}hasValue(){return ki(this.x)&&ki(this.y)}getProps(e,t){const s=this.$animations;if(!t||!s)return this;const i={};return e.forEach(e=>{i[e]=s[e]&&s[e].active()?s[e]._to:this[e]}),i}}function cr(e,t){const s=e.options.ticks,i=hr(e),a=Math.min(s.maxTicksLimit||i,i),n=s.major.enabled?pr(t):[],o=n.length,l=n[0],r=n[o-1],d=[];if(o>a)return gr(t,d,n,o/a),d;const c=ur(n,t,a);if(o>0){let e,s;const i=o>1?Math.round((r-l)/(o-1)):null;for(mr(t,d,c,Es(i)?0:l-i,l),e=0,s=o-1;ea)return e}return Math.max(a,1)}function pr(e){const t=[];let s,i;for(s=0,i=e.length;s"left"===e?"right":"right"===e?"left":e,yr=(e,t,s)=>"top"===t||"left"===t?e[t]+s:e[t]-s,vr=(e,t)=>Math.min(t||e,e);function xr(e,t){const s=[],i=e.length/t,a=e.length;let n=0;for(;no+l)))return d}function _r(e,t){js(e,e=>{const s=e.gc,i=s.length/2;let a;if(i>t){for(a=0;ai?i:s,i=a&&s>i?s:i,{min:Rs(s,Rs(i,s)),max:Rs(i,Rs(s,i))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const e=this.chart.data;return this.options.labels||(this.isHorizontal()?e.xLabels:e.yLabels)||e.labels||[]}getLabelItems(e=this.chart.chartArea){const t=this._labelItems||(this._labelItems=this._computeLabelItems(e));return t}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){Bs(this.options.beforeUpdate,[this])}update(e,t,s){const{beginAtZero:i,grace:a,ticks:n}=this.options,o=n.sampleSize;this.beforeUpdate(),this.maxWidth=e,this.maxHeight=t,this._margins=s=Object.assign({left:0,right:0,top:0,bottom:0},s),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+s.left+s.right:this.height+s.top+s.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=Ka(this,a,i),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const l=o=a||s<=1||!this.isHorizontal())return void(this.labelRotation=i);const d=this._getLabelSizes(),c=d.widest.width,h=d.highest.height,u=Di(this.chart.width-c,0,this.maxWidth);n=e.offset?this.maxWidth/s:u/(s-1),c+6>n&&(n=u/(s-(e.offset?.5:1)),o=this.maxHeight-wr(e.grid)-t.padding-Cr(e.title,this.chart.options.font),l=Math.sqrt(c*c+h*h),r=Si(Math.min(Math.asin(Di((d.highest.height+6)/n,-1,1)),Math.asin(Di(o/l,-1,1))-Math.asin(Di(h/l,-1,1)))),r=Math.max(i,Math.min(a,r))),this.labelRotation=r}afterCalculateLabelRotation(){Bs(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){Bs(this.options.beforeFit,[this])}fit(){const e={width:0,height:0},{chart:t,options:{ticks:s,title:i,grid:a}}=this,n=this._isVisible(),o=this.isHorizontal();if(n){const n=Cr(i,t.options.font);if(o?(e.width=this.maxWidth,e.height=wr(a)+n):(e.height=this.maxHeight,e.width=wr(a)+n),s.display&&this.ticks.length){const{first:t,last:i,widest:a,highest:n}=this._getLabelSizes(),l=2*s.padding,r=Ci(this.labelRotation),d=Math.cos(r),c=Math.sin(r);if(o){const t=s.mirror?0:c*a.width+d*n.height;e.height=Math.min(this.maxHeight,e.height+t+l)}else{const t=s.mirror?0:d*a.width+c*n.height;e.width=Math.min(this.maxWidth,e.width+t+l)}this._calculatePadding(t,i,c,d)}}this._handleMargins(),o?(this.width=this._length=t.width-this._margins.left-this._margins.right,this.height=e.height):(this.width=e.width,this.height=this._length=t.height-this._margins.top-this._margins.bottom)}_calculatePadding(e,t,s,i){const{ticks:{align:a,padding:n},position:o}=this.options,l=0!==this.labelRotation,r="top"!==o&&"x"===this.axis;if(this.isHorizontal()){const o=this.getPixelForTick(0)-this.left,d=this.right-this.getPixelForTick(this.ticks.length-1);let c=0,h=0;l?r?(c=i*e.width,h=s*t.height):(c=s*e.height,h=i*t.width):"start"===a?h=t.width:"end"===a?c=e.width:"inner"!==a&&(c=e.width/2,h=t.width/2),this.paddingLeft=Math.max((c-o+n)*this.width/(this.width-o),0),this.paddingRight=Math.max((h-d+n)*this.width/(this.width-d),0)}else{let s=t.height/2,i=e.height/2;"start"===a?(s=0,i=e.height):"end"===a&&(s=t.height,i=0),this.paddingTop=s+n,this.paddingBottom=i+n}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){Bs(this.options.afterFit,[this])}isHorizontal(){const{axis:e,position:t}=this.options;return"top"===t||"bottom"===t||"x"===e}isFullSize(){return this.options.fullSize}_convertTicksToLabels(e){let t,s;for(this.beforeTickToLabelConversion(),this.generateTickLabels(e),t=0,s=e.length;t({width:n[e]||0,height:o[e]||0});return{first:w(0),last:w(t-1),widest:w(k),highest:w(_),widths:n,heights:o}}getLabelForValue(e){return e}getPixelForValue(e,t){return NaN}getValueForPixel(e){}getPixelForTick(e){const t=this.ticks;return e<0||e>t.length-1?null:this.getPixelForValue(t[e].value)}getPixelForDecimal(e){this._reversePixels&&(e=1-e);const t=this._startPixel+e*this._length;return Vi(this._alignToPixels?Ca(this.chart,t,0):t)}getDecimalForPixel(e){const t=(e-this._startPixel)/this._length;return this._reversePixels?1-t:t}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:e,max:t}=this;return e<0&&t<0?t:e>0&&t>0?e:0}getContext(e){const t=this.ticks||[];if(e>=0&&eo*i?o/s:l/i:l*i0}_computeGridLineItems(e){const t=this.axis,s=this.chart,i=this.options,{grid:a,position:n,border:o}=i,l=a.offset,r=this.isHorizontal(),d=this.ticks,c=d.length+(l?1:0),h=wr(a),u=[],p=o.setContext(this.getContext()),g=p.display?p.width:0,m=g/2,f=function(e){return Ca(s,e,g)};let b,y,v,x,k,_,w,C,S,F,T,A;if("top"===n)b=f(this.bottom),_=this.bottom-h,C=b-m,F=f(e.top)+m,A=e.bottom;else if("bottom"===n)b=f(this.top),F=e.top,A=f(e.bottom)-m,_=b+m,C=this.top+h;else if("left"===n)b=f(this.right),k=this.right-h,w=b-m,S=f(e.left)+m,T=e.right;else if("right"===n)b=f(this.left),S=e.left,T=f(e.right)-m,k=b+m,w=this.left+h;else if("x"===t){if("center"===n)b=f((e.top+e.bottom)/2+.5);else if(Us(n)){const e=Object.keys(n)[0],t=n[e];b=f(this.chart.scales[e].getPixelForValue(t))}F=e.top,A=e.bottom,_=b+m,C=_+h}else if("y"===t){if("center"===n)b=f((e.left+e.right)/2);else if(Us(n)){const e=Object.keys(n)[0],t=n[e];b=f(this.chart.scales[e].getPixelForValue(t))}k=b-m,w=k-h,S=e.left,T=e.right}const $=Ws(i.ticks.maxTicksLimit,c),P=Math.max(1,Math.ceil(c/$));for(y=0;y0&&(n-=i/2);break}h={left:n,top:a,width:i+t.width,height:s+t.height,color:e.backdropColor}}m.push({label:v,font:C,textOffset:T,options:{rotation:g,color:s,strokeColor:l,strokeWidth:d,textAlign:u,textBaseline:A,translation:[x,k],backdrop:h}})}return m}_getXAxisLabelAlignment(){const{position:e,ticks:t}=this.options,s=-Ci(this.labelRotation);if(s)return"top"===e?"left":"right";let i="center";return"start"===t.align?i="left":"end"===t.align?i="right":"inner"===t.align&&(i="inner"),i}_getYAxisLabelAlignment(e){const{position:t,ticks:{crossAlign:s,mirror:i,padding:a}}=this.options,n=this._getLabelSizes(),o=e+a,l=n.widest.width;let r,d;return"left"===t?i?(d=this.right+a,"near"===s?r="left":"center"===s?(r="center",d+=l/2):(r="right",d+=l)):(d=this.right-o,"near"===s?r="right":"center"===s?(r="center",d-=l/2):(r="left",d=this.left)):"right"===t?i?(d=this.left+a,"near"===s?r="right":"center"===s?(r="center",d-=l/2):(r="left",d-=l)):(d=this.left+o,"near"===s?r="left":"center"===s?(r="center",d+=l/2):(r="right",d=this.right)):r="right",{textAlign:r,x:d}}_computeLabelArea(){if(this.options.ticks.mirror)return;const e=this.chart,t=this.options.position;return"left"===t||"right"===t?{top:0,left:this.left,bottom:e.height,right:this.right}:"top"===t||"bottom"===t?{top:this.top,left:0,bottom:this.bottom,right:e.width}:void 0}drawBackground(){const{ctx:e,options:{backgroundColor:t},left:s,top:i,width:a,height:n}=this;t&&(e.save(),e.fillStyle=t,e.fillRect(s,i,a,n),e.restore())}getLineWidthForValue(e){const t=this.options.grid;if(!this._isVisible()||!t.display)return 0;const s=this.ticks,i=s.findIndex(t=>t.value===e);if(i>=0){const e=t.setContext(this.getContext(i));return e.lineWidth}return 0}drawGrid(e){const t=this.options.grid,s=this.ctx,i=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(e));let a,n;const o=(e,t,i)=>{i.width&&i.color&&(s.save(),s.lineWidth=i.width,s.strokeStyle=i.color,s.setLineDash(i.borderDash||[]),s.lineDashOffset=i.borderDashOffset,s.beginPath(),s.moveTo(e.x,e.y),s.lineTo(t.x,t.y),s.stroke(),s.restore())};if(t.display)for(a=0,n=i.length;a{this.drawBackground(),this.drawGrid(e),this.drawTitle()}},{z:i,draw:()=>{this.drawBorder()}},{z:t,draw:e=>{this.drawLabels(e)}}]:[{z:t,draw:e=>{this.draw(e)}}]}getMatchingVisibleMetas(e){const t=this.chart.getSortedVisibleDatasetMetas(),s=this.axis+"AxisID",i=[];let a,n;for(a=0,n=t.length;a{const i=s.split("."),a=i.pop(),n=[e].concat(i).join("."),o=t[s].split("."),l=o.pop(),r=o.join(".");xa.route(n,a,r,l)})}function Vr(e){return"id"in e&&"defaults"in e}class Lr{constructor(){this.controllers=new Pr(Wo,"datasets",!0),this.elements=new Pr(dr,"elements"),this.plugins=new Pr(Object,"plugins"),this.scales=new Pr($r,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...e){this._each("register",e)}remove(...e){this._each("unregister",e)}addControllers(...e){this._each("register",e,this.controllers)}addElements(...e){this._each("register",e,this.elements)}addPlugins(...e){this._each("register",e,this.plugins)}addScales(...e){this._each("register",e,this.scales)}getController(e){return this._get(e,this.controllers,"controller")}getElement(e){return this._get(e,this.elements,"element")}getPlugin(e){return this._get(e,this.plugins,"plugin")}getScale(e){return this._get(e,this.scales,"scale")}removeControllers(...e){this._each("unregister",e,this.controllers)}removeElements(...e){this._each("unregister",e,this.elements)}removePlugins(...e){this._each("unregister",e,this.plugins)}removeScales(...e){this._each("unregister",e,this.scales)}_each(e,t,s){[...t].forEach(t=>{const i=s||this._getRegistryForType(t);s||i.isForType(t)||i===this.plugins&&t.id?this._exec(e,i,t):js(t,t=>{const i=s||this._getRegistryForType(t);this._exec(e,i,t)})})}_exec(e,t,s){const i=si(e);Bs(s["before"+i],[],s),t[e](s),Bs(s["after"+i],[],s)}_getRegistryForType(e){for(let t=0;te.filter(e=>!t.some(t=>e.plugin.id===t.plugin.id));this._notify(i(t,s),e,"stop"),this._notify(i(s,t),e,"start")}}function Ur(e){const t={},s=[],i=Object.keys(Er.plugins.items);for(let n=0;n1&&jr(e[0].toLowerCase());if(t)return t}throw new Error(`Cannot determine type of '${e}' axis. Please provide 'axis' or 'position' option.`)}function Xr(e,t,s){if(s[t+"AxisID"]===e)return{axis:t}}function Kr(e,t){if(t.data&&t.data.datasets){const s=t.data.datasets.filter(t=>t.xAxisID===e||t.yAxisID===e);if(s.length)return Xr(e,"x",s[0])||Xr(e,"y",s[0])}return{}}function Qr(e,t){const s=ma[e.type]||{scales:{}},i=t.scales||{},a=Nr(e.type,t),n=Object.create(null);return Object.keys(i).forEach(t=>{const o=i[t];if(!Us(o))return console.error(`Invalid scale configuration for scale: ${t}`);if(o._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${t}`);const l=qr(t,o,Kr(t,e),xa.scales[o.type]),r=Br(l,a),d=s.scales||{};n[t]=Ys(Object.create(null),[{axis:l},o,d[l],d[r]])}),e.data.datasets.forEach(s=>{const a=s.type||e.type,o=s.indexAxis||Nr(a,t),l=ma[a]||{},r=l.scales||{};Object.keys(r).forEach(e=>{const t=zr(e,o),a=s[t+"AxisID"]||t;n[a]=n[a]||Object.create(null),Ys(n[a],[{axis:t},i[a],r[e]])})}),Object.keys(n).forEach(e=>{const t=n[e];Ys(t,[xa.scales[t.type],xa.scale])}),n}function Yr(e){const t=e.options||(e.options={});t.plugins=Ws(t.plugins,{}),t.scales=Qr(e,t)}function Gr(e){return e=e||{},e.datasets=e.datasets||[],e.labels=e.labels||[],e}function Jr(e){return e=e||{},e.data=Gr(e.data),Yr(e),e}const Zr=new Map,ed=new Set;function td(e,t){let s=Zr.get(e);return s||(s=t(),Zr.set(e,s),ed.add(s)),s}const sd=(e,t,s)=>{const i=ti(t,s);void 0!==i&&e.add(i)};class id{constructor(e){this._config=Jr(e),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(e){this._config.type=e}get data(){return this._config.data}set data(e){this._config.data=Gr(e)}get options(){return this._config.options}set options(e){this._config.options=e}get plugins(){return this._config.plugins}update(){const e=this._config;this.clearCache(),Yr(e)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(e){return td(e,()=>[[`datasets.${e}`,""]])}datasetAnimationScopeKeys(e,t){return td(`${e}.transition.${t}`,()=>[[`datasets.${e}.transitions.${t}`,`transitions.${t}`],[`datasets.${e}`,""]])}datasetElementScopeKeys(e,t){return td(`${e}-${t}`,()=>[[`datasets.${e}.elements.${t}`,`datasets.${e}`,`elements.${t}`,""]])}pluginScopeKeys(e){const t=e.id,s=this.type;return td(`${s}-plugin-${t}`,()=>[[`plugins.${t}`,...e.additionalOptionScopes||[]]])}_cachedScopes(e,t){const s=this._scopeCache;let i=s.get(e);return i&&!t||(i=new Map,s.set(e,i)),i}getOptionScopes(e,t,s){const{options:i,type:a}=this,n=this._cachedScopes(e,s),o=n.get(t);if(o)return o;const l=new Set;t.forEach(t=>{e&&(l.add(e),t.forEach(t=>sd(l,e,t))),t.forEach(e=>sd(l,i,e)),t.forEach(e=>sd(l,ma[a]||{},e)),t.forEach(e=>sd(l,xa,e)),t.forEach(e=>sd(l,fa,e))});const r=Array.from(l);return 0===r.length&&r.push(Object.create(null)),ed.has(t)&&n.set(t,r),r}chartOptionScopes(){const{options:e,type:t}=this;return[e,ma[t]||{},xa.datasets[t]||{},{type:t},xa,fa]}resolveNamedOptions(e,t,s,i=[""]){const a={$shared:!0},{resolver:n,subPrefixes:o}=ad(this._resolverCache,e,i);let l=n;if(od(n,t)){a.$shared=!1,s=ai(s)?s():s;const t=this.createResolver(e,s,o);l=Ga(n,s,t)}for(const r of t)a[r]=l[r];return a}createResolver(e,t,s=[""],i){const{resolver:a}=ad(this._resolverCache,e,s);return Us(t)?Ga(a,t,void 0,i):a}}function ad(e,t,s){let i=e.get(t);i||(i=new Map,e.set(t,i));const a=s.join();let n=i.get(a);if(!n){const e=Ya(t,s);n={resolver:e,subPrefixes:s.filter(e=>!e.toLowerCase().includes("hover"))},i.set(a,n)}return n}const nd=e=>Us(e)&&Object.getOwnPropertyNames(e).some(t=>ai(e[t]));function od(e,t){const{isScriptable:s,isIndexable:i}=Ja(e);for(const a of t){const t=s(a),n=i(a),o=(n||t)&&e[a];if(t&&(ai(o)||nd(o))||n&&Is(o))return!0}return!1}var ld="4.5.1";const rd=["top","bottom","left","right","chartArea"];function dd(e,t){return"top"===e||"bottom"===e||-1===rd.indexOf(e)&&"x"===t}function cd(e,t){return function(s,i){return s[e]===i[e]?s[t]-i[t]:s[e]-i[e]}}function hd(e){const t=e.chart,s=t.options.animation;t.notifyPlugins("afterRender"),Bs(s&&s.onComplete,[e],t)}function ud(e){const t=e.chart,s=t.options.animation;Bs(s&&s.onProgress,[e],t)}function pd(e){return Tn()&&"string"===typeof e?e=document.getElementById(e):e&&e.length&&(e=e[0]),e&&e.canvas&&(e=e.canvas),e}const gd={},md=e=>{const t=pd(e);return Object.values(gd).filter(e=>e.canvas===t).pop()};function fd(e,t,s){const i=Object.keys(e);for(const a of i){const i=+a;if(i>=t){const n=e[a];delete e[a],(s>0||i>t)&&(e[i+s]=n)}}}function bd(e,t,s,i){return s&&"mouseout"!==e.type?i?t:e:null}class yd{static register(...e){Er.add(...e),vd()}static unregister(...e){Er.remove(...e),vd()}constructor(e,t){const s=this.config=new id(t),i=pd(e),a=md(i);if(a)throw new Error("Canvas is already in use. Chart with ID '"+a.id+"' must be destroyed before the canvas with ID '"+a.canvas.id+"' can be reused.");const n=s.createResolver(s.chartOptionScopes(),this.getContext());this.platform=new(s.platform||rr(i)),this.platform.updateConfig(s);const o=this.platform.acquireContext(i,n.aspectRatio),l=o&&o.canvas,r=l&&l.height,d=l&&l.width;this.id=Ls(),this.ctx=o,this.canvas=l,this.width=d,this.height=r,this._options=n,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new Ir,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=Hi(e=>this.update(e),n.resizeDelay||0),this._dataChanges=[],gd[this.id]=this,o&&l?(go.listen(this,"complete",hd),go.listen(this,"progress",ud),this._initialize(),this.attached&&this.update()):console.error("Failed to create chart: can't acquire context from the given item")}get aspectRatio(){const{options:{aspectRatio:e,maintainAspectRatio:t},width:s,height:i,_aspectRatio:a}=this;return Es(e)?t&&a?a:i?s/i:null:e}get data(){return this.config.data}set data(e){this.config.data=e}get options(){return this._options}set options(e){this.config.options=e}get registry(){return Er}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():Wn(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Sa(this.canvas,this.ctx),this}stop(){return go.stop(this),this}resize(e,t){go.running(this)?this._resizeBeforeDraw={width:e,height:t}:this._resize(e,t)}_resize(e,t){const s=this.options,i=this.canvas,a=s.maintainAspectRatio&&this.aspectRatio,n=this.platform.getMaximumSize(i,e,t,a),o=s.devicePixelRatio||this.platform.getDevicePixelRatio(),l=this.width?"resize":"attach";this.width=n.width,this.height=n.height,this._aspectRatio=this.aspectRatio,Wn(this,o,!0)&&(this.notifyPlugins("resize",{size:n}),Bs(s.onResize,[this,n],this),this.attached&&this._doResize(l)&&this.render())}ensureScalesHaveIDs(){const e=this.options,t=e.scales||{};js(t,(e,t)=>{e.id=t})}buildOrUpdateScales(){const e=this.options,t=e.scales,s=this.scales,i=Object.keys(s).reduce((e,t)=>(e[t]=!1,e),{});let a=[];t&&(a=a.concat(Object.keys(t).map(e=>{const s=t[e],i=qr(e,s),a="r"===i,n="x"===i;return{options:s,dposition:a?"chartArea":n?"bottom":"left",dtype:a?"radialLinear":n?"category":"linear"}}))),js(a,t=>{const a=t.options,n=a.id,o=qr(n,a),l=Ws(a.type,t.dtype);void 0!==a.position&&dd(a.position,o)===dd(t.dposition)||(a.position=t.dposition),i[n]=!0;let r=null;if(n in s&&s[n].type===l)r=s[n];else{const e=Er.getScale(l);r=new e({id:n,type:l,ctx:this.ctx,chart:this}),s[r.id]=r}r.init(a,e)}),js(i,(e,t)=>{e||delete s[t]}),js(s,e=>{Rl.configure(this,e,e.options),Rl.addBox(this,e)})}_updateMetasets(){const e=this._metasets,t=this.data.datasets.length,s=e.length;if(e.sort((e,t)=>e.index-t.index),s>t){for(let e=t;et.length&&delete this._stacks,e.forEach((e,s)=>{0===t.filter(t=>t===e._dataset).length&&this._destroyDatasetMeta(s)})}buildOrUpdateControllers(){const e=[],t=this.data.datasets;let s,i;for(this._removeUnreferencedMetasets(),s=0,i=t.length;s{this.getDatasetMeta(t).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(e){const t=this.config;t.update();const s=this._options=t.createResolver(t.chartOptionScopes(),this.getContext()),i=this._animationsDisabled=!s.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins("beforeUpdate",{mode:e,cancelable:!0}))return;const a=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let n=0;for(let r=0,d=this.data.datasets.length;r{e.reset()}),this._updateDatasets(e),this.notifyPlugins("afterUpdate",{mode:e}),this._layers.sort(cd("z","_idx"));const{_active:o,_lastEvent:l}=this;l?this._eventHandler(l,!0):o.length&&this._updateHoverStyles(o,o,!0),this.render()}_updateScales(){js(this.scales,e=>{Rl.removeBox(this,e)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const e=this.options,t=new Set(Object.keys(this._listeners)),s=new Set(e.events);ni(t,s)&&!!this._responsiveListeners===e.responsive||(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:e}=this,t=this._getUniformDataChanges()||[];for(const{method:s,start:i,count:a}of t){const t="_removeElements"===s?-a:a;fd(e,i,t)}}_getUniformDataChanges(){const e=this._dataChanges;if(!e||!e.length)return;this._dataChanges=[];const t=this.data.datasets.length,s=t=>new Set(e.filter(e=>e[0]===t).map((e,t)=>t+","+e.splice(1).join(","))),i=s(0);for(let a=1;ae.split(",")).map(e=>({method:e[1],start:+e[2],count:+e[3]}))}_updateLayout(e){if(!1===this.notifyPlugins("beforeLayout",{cancelable:!0}))return;Rl.update(this,this.width,this.height,e);const t=this.chartArea,s=t.width<=0||t.height<=0;this._layers=[],js(this.boxes,e=>{s&&"chartArea"===e.position||(e.configure&&e.configure(),this._layers.push(...e._layers()))},this),this._layers.forEach((e,t)=>{e._idx=t}),this.notifyPlugins("afterLayout")}_updateDatasets(e){if(!1!==this.notifyPlugins("beforeDatasetsUpdate",{mode:e,cancelable:!0})){for(let e=0,t=this.data.datasets.length;e=0;--t)this._drawDataset(e[t]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(e){const t=this.ctx,s={meta:e,index:e.index,cancelable:!0},i=uo(this,e);!1!==this.notifyPlugins("beforeDatasetDraw",s)&&(i&&$a(t,i),e.controller.draw(),i&&Pa(t),s.cancelable=!1,this.notifyPlugins("afterDatasetDraw",s))}isPointInArea(e){return Aa(e,this.chartArea,this._minPadding)}getElementsAtEventForMode(e,t,s,i){const a=_l.modes[t];return"function"===typeof a?a(this,e,s,i):[]}getDatasetMeta(e){const t=this.data.datasets[e],s=this._metasets;let i=s.filter(e=>e&&e._dataset===t).pop();return i||(i={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:t&&t.order||0,index:e,_dataset:t,_parsed:[],_sorted:!1},s.push(i)),i}getContext(){return this.$context||(this.$context=Qa(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(e){const t=this.data.datasets[e];if(!t)return!1;const s=this.getDatasetMeta(e);return"boolean"===typeof s.hidden?!s.hidden:!t.hidden}setDatasetVisibility(e,t){const s=this.getDatasetMeta(e);s.hidden=!t}toggleDataVisibility(e){this._hiddenIndices[e]=!this._hiddenIndices[e]}getDataVisibility(e){return!this._hiddenIndices[e]}_updateVisibility(e,t,s){const i=s?"show":"hide",a=this.getDatasetMeta(e),n=a.controller._resolveAnimations(void 0,i);ii(t)?(a.data[t].hidden=!s,this.update()):(this.setDatasetVisibility(e,s),n.update(a,{visible:s}),this.update(t=>t.datasetIndex===e?i:void 0))}hide(e,t){this._updateVisibility(e,t,!1)}show(e,t){this._updateVisibility(e,t,!0)}_destroyDatasetMeta(e){const t=this._metasets[e];t&&t.controller&&t.controller._destroy(),delete this._metasets[e]}_stop(){let e,t;for(this.stop(),go.remove(this),e=0,t=this.data.datasets.length;e{t.addEventListener(this,s,i),e[s]=i},i=(e,t,s)=>{e.offsetX=t,e.offsetY=s,this._eventHandler(e)};js(this.options.events,e=>s(e,i))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const e=this._responsiveListeners,t=this.platform,s=(s,i)=>{t.addEventListener(this,s,i),e[s]=i},i=(s,i)=>{e[s]&&(t.removeEventListener(this,s,i),delete e[s])},a=(e,t)=>{this.canvas&&this.resize(e,t)};let n;const o=()=>{i("attach",o),this.attached=!0,this.resize(),s("resize",a),s("detach",n)};n=()=>{this.attached=!1,i("resize",a),this._stop(),this._resize(0,0),s("attach",o)},t.isAttached(this.canvas)?o():n()}unbindEvents(){js(this._listeners,(e,t)=>{this.platform.removeEventListener(this,t,e)}),this._listeners={},js(this._responsiveListeners,(e,t)=>{this.platform.removeEventListener(this,t,e)}),this._responsiveListeners=void 0}updateHoverStyle(e,t,s){const i=s?"set":"remove";let a,n,o,l;for("dataset"===t&&(a=this.getDatasetMeta(e[0].datasetIndex),a.controller["_"+i+"DatasetHoverStyle"]()),o=0,l=e.length;o{const s=this.getDatasetMeta(e);if(!s)throw new Error("No dataset found at index "+e);return{datasetIndex:e,element:s.data[t],index:t}}),i=!Hs(s,t);i&&(this._active=s,this._lastEvent=null,this._updateHoverStyles(s,t))}notifyPlugins(e,t,s){return this._plugins.notify(this,e,t,s)}isPluginEnabled(e){return 1===this._plugins._cache.filter(t=>t.plugin.id===e).length}_updateHoverStyles(e,t,s){const i=this.options.hover,a=(e,t)=>e.filter(e=>!t.some(t=>e.datasetIndex===t.datasetIndex&&e.index===t.index)),n=a(t,e),o=s?e:a(e,t);n.length&&this.updateHoverStyle(n,i.mode,!1),o.length&&i.mode&&this.updateHoverStyle(o,i.mode,!0)}_eventHandler(e,t){const s={event:e,replay:t,cancelable:!0,inChartArea:this.isPointInArea(e)},i=t=>(t.options.events||this.options.events).includes(e.native.type);if(!1===this.notifyPlugins("beforeEvent",s,i))return;const a=this._handleEvent(e,t,s.inChartArea);return s.cancelable=!1,this.notifyPlugins("afterEvent",s,i),(a||s.changed)&&this.render(),this}_handleEvent(e,t,s){const{_active:i=[],options:a}=this,n=t,o=this._getActiveElements(e,i,s,n),l=oi(e),r=bd(e,this._lastEvent,s,l);s&&(this._lastEvent=null,Bs(a.onHover,[e,o,this],this),l&&Bs(a.onClick,[e,o,this],this));const d=!Hs(o,i);return(d||t)&&(this._active=o,this._updateHoverStyles(o,i,t)),this._lastEvent=r,d}_getActiveElements(e,t,s,i){if("mouseout"===e.type)return[];if(!s)return t;const a=this.options.hover;return this.getElementsAtEventForMode(e,a.mode,a,i)}}function vd(){return js(yd.instances,e=>e._plugins.invalidate())}function xd(e,t,s){const{startAngle:i,x:a,y:n,outerRadius:o,innerRadius:l,options:r}=t,{borderWidth:d,borderJoinStyle:c}=r,h=Math.min(d/o,Pi(i-s));if(e.beginPath(),e.arc(a,n,o-d/2,i+h/2,s-h/2),l>0){const t=Math.min(d/l,Pi(i-s));e.arc(a,n,l+d/2,s-t/2,i+t/2,!0)}else{const t=Math.min(d/2,o*Pi(i-s));if("round"===c)e.arc(a,n,t,s-li/2,i+li/2,!0);else if("bevel"===c){const o=2*t*t,l=-o*Math.cos(s+li/2)+a,r=-o*Math.sin(s+li/2)+n,d=o*Math.cos(i+li/2)+a,c=o*Math.sin(i+li/2)+n;e.lineTo(l,r),e.lineTo(d,c)}}e.closePath(),e.moveTo(0,0),e.rect(0,0,e.canvas.width,e.canvas.height),e.clip("evenodd")}function kd(e,t,s){const{startAngle:i,pixelMargin:a,x:n,y:o,outerRadius:l,innerRadius:r}=t;let d=a/l;e.beginPath(),e.arc(n,o,l,i-d,s+d),r>a?(d=a/r,e.arc(n,o,r,s+d,i-d,!0)):e.arc(n,o,a,s+ui,i-ui),e.closePath(),e.clip()}function _d(e){return za(e,["outerStart","outerEnd","innerStart","innerEnd"])}function wd(e,t,s,i){const a=_d(e.options.borderRadius),n=(s-t)/2,o=Math.min(n,i*t/2),l=e=>{const t=(s-Math.min(n,e))*i/2;return Di(e,0,Math.min(n,t))};return{outerStart:l(a.outerStart),outerEnd:l(a.outerEnd),innerStart:Di(a.innerStart,0,o),innerEnd:Di(a.innerEnd,0,o)}}function Cd(e,t,s,i){return{x:s+e*Math.cos(t),y:i+e*Math.sin(t)}}function Sd(e,t,s,i,a,n){const{x:o,y:l,startAngle:r,pixelMargin:d,innerRadius:c}=t,h=Math.max(t.outerRadius+i+s-d,0),u=c>0?c+i+s+d:0;let p=0;const g=a-r;if(i){const e=c>0?c-i:0,t=h>0?h-i:0,s=(e+t)/2,a=0!==s?g*s/(s+i):g;p=(g-a)/2}const m=Math.max(.001,g*h-s/li)/h,f=(g-m)/2,b=r+f+p,y=a-f-p,{outerStart:v,outerEnd:x,innerStart:k,innerEnd:_}=wd(t,u,h,y-b),w=h-v,C=h-x,S=b+v/w,F=y-x/C,T=u+k,A=u+_,$=b+k/T,P=y-_/A;if(e.beginPath(),n){const t=(S+F)/2;if(e.arc(o,l,h,S,t),e.arc(o,l,h,t,F),x>0){const t=Cd(C,F,o,l);e.arc(t.x,t.y,x,F,y+ui)}const s=Cd(A,y,o,l);if(e.lineTo(s.x,s.y),_>0){const t=Cd(A,P,o,l);e.arc(t.x,t.y,_,y+ui,P+Math.PI)}const i=(y-_/u+(b+k/u))/2;if(e.arc(o,l,u,y-_/u,i,!0),e.arc(o,l,u,i,b+k/u,!0),k>0){const t=Cd(T,$,o,l);e.arc(t.x,t.y,k,$+Math.PI,b-ui)}const a=Cd(w,b,o,l);if(e.lineTo(a.x,a.y),v>0){const t=Cd(w,S,o,l);e.arc(t.x,t.y,v,b-ui,S)}}else{e.moveTo(o,l);const t=Math.cos(S)*h+o,s=Math.sin(S)*h+l;e.lineTo(t,s);const i=Math.cos(F)*h+o,a=Math.sin(F)*h+l;e.lineTo(i,a)}e.closePath()}function Fd(e,t,s,i,a){const{fullCircles:n,startAngle:o,circumference:l}=t;let r=t.endAngle;if(n){Sd(e,t,s,i,r,a);for(let t=0;t=li&&0===p&&"miter"!==c&&xd(e,t,m),n||(Sd(e,t,s,i,m,a),e.stroke())}(0,Nt.A)(yd,"defaults",xa),(0,Nt.A)(yd,"instances",gd),(0,Nt.A)(yd,"overrides",ma),(0,Nt.A)(yd,"registry",Er),(0,Nt.A)(yd,"version",ld),(0,Nt.A)(yd,"getChart",md);class Ad extends dr{constructor(e){super(),(0,Nt.A)(this,"circumference",void 0),(0,Nt.A)(this,"endAngle",void 0),(0,Nt.A)(this,"fullCircles",void 0),(0,Nt.A)(this,"innerRadius",void 0),(0,Nt.A)(this,"outerRadius",void 0),(0,Nt.A)(this,"pixelMargin",void 0),(0,Nt.A)(this,"startAngle",void 0),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,e&&Object.assign(this,e)}inRange(e,t,s){const i=this.getProps(["x","y"],s),{angle:a,distance:n}=Ti(i,{x:e,y:t}),{startAngle:o,endAngle:l,innerRadius:r,outerRadius:d,circumference:c}=this.getProps(["startAngle","endAngle","innerRadius","outerRadius","circumference"],s),h=(this.options.spacing+this.options.borderWidth)/2,u=Ws(c,l-o),p=Mi(a,o,l)&&o!==l,g=u>=ri||p,m=Li(n,r+h,d+h);return g&&m}getCenterPoint(e){const{x:t,y:s,startAngle:i,endAngle:a,innerRadius:n,outerRadius:o}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius"],e),{offset:l,spacing:r}=this.options,d=(i+a)/2,c=(n+o+r+l)/2;return{x:t+Math.cos(d)*c,y:s+Math.sin(d)*c}}tooltipPosition(e){return this.getCenterPoint(e)}draw(e){const{options:t,circumference:s}=this,i=(t.offset||0)/4,a=(t.spacing||0)/2,n=t.circular;if(this.pixelMargin="inner"===t.borderAlign?.33:0,this.fullCircles=s>ri?Math.floor(s/ri):0,0===s||this.innerRadius<0||this.outerRadius<0)return;e.save();const o=(this.startAngle+this.endAngle)/2;e.translate(Math.cos(o)*i,Math.sin(o)*i);const l=1-Math.sin(Math.min(li,s||0)),r=i*l;e.fillStyle=t.backgroundColor,e.strokeStyle=t.borderColor,Fd(e,this,r,a,n),Td(e,this,r,a,n),e.restore()}}function $d(e,t,s=t){e.lineCap=Ws(s.borderCapStyle,t.borderCapStyle),e.setLineDash(Ws(s.borderDash,t.borderDash)),e.lineDashOffset=Ws(s.borderDashOffset,t.borderDashOffset),e.lineJoin=Ws(s.borderJoinStyle,t.borderJoinStyle),e.lineWidth=Ws(s.borderWidth,t.borderWidth),e.strokeStyle=Ws(s.borderColor,t.borderColor)}function Pd(e,t,s){e.lineTo(s.x,s.y)}function Md(e){return e.stepped?Ma:e.tension||"monotone"===e.cubicInterpolationMode?Da:Pd}function Dd(e,t,s={}){const i=e.length,{start:a=0,end:n=i-1}=s,{start:o,end:l}=t,r=Math.max(a,o),d=Math.min(n,l),c=al&&n>l;return{count:i,start:r,loop:t.loop,ilen:d(o+(d?l-e:e))%n,v=()=>{p!==g&&(e.lineTo(f,g),e.lineTo(f,p),e.lineTo(f,m))};for(r&&(h=a[y(0)],e.moveTo(h.x,h.y)),c=0;c<=l;++c){if(h=a[y(c)],h.skip)continue;const t=h.x,s=h.y,i=0|t;i===u?(sg&&(g=s),f=(b*f+t)/++b):(v(),e.lineTo(t,s),u=i,b=0,p=g=s),m=s}v()}function Ed(e){const t=e.options,s=t.borderDash&&t.borderDash.length,i=!e._decimated&&!e._loop&&!t.tension&&"monotone"!==t.cubicInterpolationMode&&!t.stepped&&!s;return i?Ld:Vd}function Id(e){return e.stepped?jn:e.tension||"monotone"===e.cubicInterpolationMode?Hn:Bn}function Ud(e,t,s,i){let a=t._path;a||(a=t._path=new Path2D,t.path(a,s,i)&&a.closePath()),$d(e,t.options),e.stroke(a)}function Od(e,t,s,i){const{segments:a,options:n}=t,o=Ed(t);for(const l of a)$d(e,n,l.style),e.beginPath(),o(e,t,l,{start:s,end:s+i-1})&&e.closePath(),e.stroke()}(0,Nt.A)(Ad,"id","arc"),(0,Nt.A)(Ad,"defaults",{borderAlign:"center",borderColor:"#fff",borderDash:[],borderDashOffset:0,borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0,circular:!0,selfJoin:!1}),(0,Nt.A)(Ad,"defaultRoutes",{backgroundColor:"backgroundColor"}),(0,Nt.A)(Ad,"descriptors",{_scriptable:!0,_indexable:e=>"borderDash"!==e});const Rd="function"===typeof Path2D;function Wd(e,t,s,i){Rd&&!t.options.segment?Ud(e,t,s,i):Od(e,t,s,i)}class Nd extends dr{constructor(e){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,e&&Object.assign(this,e)}updateControlPoints(e,t){const s=this.options;if((s.tension||"monotone"===s.cubicInterpolationMode)&&!s.stepped&&!this._pointsUpdated){const i=s.spanGaps?this._loop:this._fullLoop;Fn(this._points,s,e,i,t),this._pointsUpdated=!0}}set points(e){this._points=e,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=ao(this,this.options.segment))}first(){const e=this.segments,t=this.points;return e.length&&t[e[0].start]}last(){const e=this.segments,t=this.points,s=e.length;return s&&t[e[s-1].end]}interpolate(e,t){const s=this.options,i=e[t],a=this.points,n=to(this,{property:t,start:i,end:i});if(!n.length)return;const o=[],l=Id(s);let r,d;for(r=0,d=n.length;r"borderDash"!==e&&"fill"!==e});class Bd extends dr{constructor(e){super(),(0,Nt.A)(this,"parsed",void 0),(0,Nt.A)(this,"skip",void 0),(0,Nt.A)(this,"stop",void 0),this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,e&&Object.assign(this,e)}inRange(e,t,s){const i=this.options,{x:a,y:n}=this.getProps(["x","y"],s);return Math.pow(e-a,2)+Math.pow(t-n,2){t=ic(e,t,a);const o=a[e],l=a[t];null!==i?(n.push({x:o.x,y:i}),n.push({x:l.x,y:i})):null!==s&&(n.push({x:s,y:o.y}),n.push({x:s,y:l.y}))}),n}function ic(e,t,s){for(;t>e;t--){const e=s[t];if(!isNaN(e.x)&&!isNaN(e.y))break}return t}function ac(e,t,s,i){return e&&t?i(e[s],t[s]):e?e[s]:t?t[s]:0}function nc(e,t){let s=[],i=!1;return Is(e)?(i=!0,s=e):s=sc(e,t),s.length?new Nd({points:s,options:{tension:0},_loop:i,_fullLoop:i}):null}function oc(e){return e&&!1!==e.fill}function lc(e,t,s){const i=e[t];let a=i.fill;const n=[t];let o;if(!s)return a;while(!1!==a&&-1===n.indexOf(a)){if(!Os(a))return a;if(o=e[a],!o)return!1;if(o.visible)return a;n.push(a),a=o.fill}return!1}function rc(e,t,s){const i=uc(e);if(Us(i))return!isNaN(i.value)&&i;let a=parseFloat(i);return Os(a)&&Math.floor(a)===a?dc(i[0],t,a,s):["origin","start","end","stack","shape"].indexOf(i)>=0&&i}function dc(e,t,s,i){return"-"!==e&&"+"!==e||(s=t+s),!(s===t||s<0||s>=i)&&s}function cc(e,t){let s=null;return"start"===e?s=t.bottom:"end"===e?s=t.top:Us(e)?s=t.getPixelForValue(e.value):t.getBasePixel&&(s=t.getBasePixel()),s}function hc(e,t,s){let i;return i="start"===e?s:"end"===e?t.options.reverse?t.min:t.max:Us(e)?e.value:t.getBaseValue(),i}function uc(e){const t=e.options,s=t.fill;let i=Ws(s&&s.target,s);return void 0===i&&(i=!!t.backgroundColor),!1!==i&&null!==i&&(!0===i?"origin":i)}function pc(e){const{scale:t,index:s,line:i}=e,a=[],n=i.segments,o=i.points,l=gc(t,s);l.push(nc({x:null,y:t.bottom},i));for(let r=0;r=0;--o){const t=a[o].$filler;t&&(t.line.updateControlPoints(n,t.axis),i&&t.fill&&wc(e.ctx,t,n))}},beforeDatasetsDraw(e,t,s){if("beforeDatasetsDraw"!==s.drawTime)return;const i=e.getSortedVisibleDatasetMetas();for(let a=i.length-1;a>=0;--a){const t=i[a].$filler;oc(t)&&wc(e.ctx,t,e.chartArea)}},beforeDatasetDraw(e,t,s){const i=t.meta.$filler;oc(i)&&"beforeDatasetDraw"===s.drawTime&&wc(e.ctx,i,e.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const Mc=(e,t)=>{let{boxHeight:s=t,boxWidth:i=t}=e;return e.usePointStyle&&(s=Math.min(s,t),i=e.pointStyleWidth||Math.min(i,t)),{boxWidth:i,boxHeight:s,itemHeight:Math.max(t,s)}},Dc=(e,t)=>null!==e&&null!==t&&e.datasetIndex===t.datasetIndex&&e.index===t.index;class Vc extends dr{constructor(e){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=e.chart,this.options=e.options,this.ctx=e.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(e,t,s){this.maxWidth=e,this.maxHeight=t,this._margins=s,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const e=this.options.labels||{};let t=Bs(e.generateLabels,[this.chart],this)||[];e.filter&&(t=t.filter(t=>e.filter(t,this.chart.data))),e.sort&&(t=t.sort((t,s)=>e.sort(t,s,this.chart.data))),this.options.reverse&&t.reverse(),this.legendItems=t}fit(){const{options:e,ctx:t}=this;if(!e.display)return void(this.width=this.height=0);const s=e.labels,i=qa(s.font),a=i.size,n=this._computeTitleHeight(),{boxWidth:o,itemHeight:l}=Mc(s,a);let r,d;t.font=i.string,this.isHorizontal()?(r=this.maxWidth,d=this._fitRows(n,a,o,l)+10):(d=this.maxHeight,r=this._fitCols(n,i,o,l)+10),this.width=Math.min(r,e.maxWidth||this.maxWidth),this.height=Math.min(d,e.maxHeight||this.maxHeight)}_fitRows(e,t,s,i){const{ctx:a,maxWidth:n,options:{labels:{padding:o}}}=this,l=this.legendHitBoxes=[],r=this.lineWidths=[0],d=i+o;let c=e;a.textAlign="left",a.textBaseline="middle";let h=-1,u=-d;return this.legendItems.forEach((e,p)=>{const g=s+t/2+a.measureText(e.text).width;(0===p||r[r.length-1]+g+2*o>n)&&(c+=d,r[r.length-(p>0?0:1)]=0,u+=d,h++),l[p]={left:0,top:u,row:h,width:g,height:i},r[r.length-1]+=g+o}),c}_fitCols(e,t,s,i){const{ctx:a,maxHeight:n,options:{labels:{padding:o}}}=this,l=this.legendHitBoxes=[],r=this.columnSizes=[],d=n-e;let c=o,h=0,u=0,p=0,g=0;return this.legendItems.forEach((e,n)=>{const{itemWidth:m,itemHeight:f}=Lc(s,t,a,e,i);n>0&&u+f+2*o>d&&(c+=h+o,r.push({width:h,height:u}),p+=h+o,g++,h=u=0),l[n]={left:p,top:u,col:g,width:m,height:f},h=Math.max(h,m),u+=f+o}),c+=h,r.push({width:h,height:u}),c}adjustHitBoxes(){if(!this.options.display)return;const e=this._computeTitleHeight(),{legendHitBoxes:t,options:{align:s,labels:{padding:i},rtl:a}}=this,n=Kn(a,this.left,this.width);if(this.isHorizontal()){let a=0,o=Xi(s,this.left+i,this.right-this.lineWidths[a]);for(const l of t)a!==l.row&&(a=l.row,o=Xi(s,this.left+i,this.right-this.lineWidths[a])),l.top+=this.top+e+i,l.left=n.leftForLtr(n.x(o),l.width),o+=l.width+i}else{let a=0,o=Xi(s,this.top+e+i,this.bottom-this.columnSizes[a].height);for(const l of t)l.col!==a&&(a=l.col,o=Xi(s,this.top+e+i,this.bottom-this.columnSizes[a].height)),l.top=o,l.left+=this.left+i,l.left=n.leftForLtr(n.x(l.left),l.width),o+=l.height+i}}isHorizontal(){return"top"===this.options.position||"bottom"===this.options.position}draw(){if(this.options.display){const e=this.ctx;$a(e,this),this._draw(),Pa(e)}}_draw(){const{options:e,columnSizes:t,lineWidths:s,ctx:i}=this,{align:a,labels:n}=e,o=xa.color,l=Kn(e.rtl,this.left,this.width),r=qa(n.font),{padding:d}=n,c=r.size,h=c/2;let u;this.drawTitle(),i.textAlign=l.textAlign("left"),i.textBaseline="middle",i.lineWidth=.5,i.font=r.string;const{boxWidth:p,boxHeight:g,itemHeight:m}=Mc(n,c),f=function(e,t,s){if(isNaN(p)||p<=0||isNaN(g)||g<0)return;i.save();const a=Ws(s.lineWidth,1);if(i.fillStyle=Ws(s.fillStyle,o),i.lineCap=Ws(s.lineCap,"butt"),i.lineDashOffset=Ws(s.lineDashOffset,0),i.lineJoin=Ws(s.lineJoin,"miter"),i.lineWidth=a,i.strokeStyle=Ws(s.strokeStyle,o),i.setLineDash(Ws(s.lineDash,[])),n.usePointStyle){const o={radius:g*Math.SQRT2/2,pointStyle:s.pointStyle,rotation:s.rotation,borderWidth:a},r=l.xPlus(e,p/2),d=t+h;Ta(i,o,r,d,n.pointStyleWidth&&p)}else{const n=t+Math.max((c-g)/2,0),o=l.leftForLtr(e,p),r=ja(s.borderRadius);i.beginPath(),Object.values(r).some(e=>0!==e)?Ua(i,{x:o,y:n,w:p,h:g,radius:r}):i.rect(o,n,p,g),i.fill(),0!==a&&i.stroke()}i.restore()},b=function(e,t,s){Ia(i,s.text,e,t+m/2,r,{strikethrough:s.hidden,textAlign:l.textAlign(s.textAlign)})},y=this.isHorizontal(),v=this._computeTitleHeight();u=y?{x:Xi(a,this.left+d,this.right-s[0]),y:this.top+d+v,line:0}:{x:this.left+d,y:Xi(a,this.top+v+d,this.bottom-t[0].height),line:0},Qn(this.ctx,e.textDirection);const x=m+d;this.legendItems.forEach((o,c)=>{i.strokeStyle=o.fontColor,i.fillStyle=o.fontColor;const g=i.measureText(o.text).width,m=l.textAlign(o.textAlign||(o.textAlign=n.textAlign)),k=p+h+g;let _=u.x,w=u.y;l.setWidth(this.width),y?c>0&&_+k+d>this.right&&(w=u.y+=x,u.line++,_=u.x=Xi(a,this.left+d,this.right-s[u.line])):c>0&&w+x>this.bottom&&(_=u.x=_+t[u.line].width+d,u.line++,w=u.y=Xi(a,this.top+v+d,this.bottom-t[u.line].height));const C=l.x(_);if(f(C,w,o),_=Ki(m,_+p+h,y?_+k:this.right,e.rtl),b(l.x(_),w,o),y)u.x+=k+d;else if("string"!==typeof o.text){const e=r.lineHeight;u.y+=Uc(o,e)+d}else u.y+=x}),Yn(this.ctx,e.textDirection)}drawTitle(){const e=this.options,t=e.title,s=qa(t.font),i=Ha(t.padding);if(!t.display)return;const a=Kn(e.rtl,this.left,this.width),n=this.ctx,o=t.position,l=s.size/2,r=i.top+l;let d,c=this.left,h=this.width;if(this.isHorizontal())h=Math.max(...this.lineWidths),d=this.top+r,c=Xi(e.align,c,this.right-h);else{const t=this.columnSizes.reduce((e,t)=>Math.max(e,t.height),0);d=r+Xi(e.align,this.top,this.bottom-t-e.labels.padding-this._computeTitleHeight())}const u=Xi(o,c,c+h);n.textAlign=a.textAlign(qi(o)),n.textBaseline="middle",n.strokeStyle=t.color,n.fillStyle=t.color,n.font=s.string,Ia(n,t.text,u,d,s)}_computeTitleHeight(){const e=this.options.title,t=qa(e.font),s=Ha(e.padding);return e.display?t.lineHeight+s.height:0}_getLegendItemAt(e,t){let s,i,a;if(Li(e,this.left,this.right)&&Li(t,this.top,this.bottom))for(a=this.legendHitBoxes,s=0;se.length>t.length?e:t)),t+s.size/2+i.measureText(a).width}function Ic(e,t,s){let i=e;return"string"!==typeof t.text&&(i=Uc(t,s)),i}function Uc(e,t){const s=e.text?e.text.length:0;return t*s}function Oc(e,t){return!("mousemove"!==e&&"mouseout"!==e||!t.onHover&&!t.onLeave)||!(!t.onClick||"click"!==e&&"mouseup"!==e)}var Rc={id:"legend",_element:Vc,start(e,t,s){const i=e.legend=new Vc({ctx:e.ctx,options:s,chart:e});Rl.configure(e,i,s),Rl.addBox(e,i)},stop(e){Rl.removeBox(e,e.legend),delete e.legend},beforeUpdate(e,t,s){const i=e.legend;Rl.configure(e,i,s),i.options=s},afterUpdate(e){const t=e.legend;t.buildLabels(),t.adjustHitBoxes()},afterEvent(e,t){t.replay||e.legend.handleEvent(t.event)},defaults:{display:!0,position:"top",align:"center",fullSize:!0,reverse:!1,weight:1e3,onClick(e,t,s){const i=t.datasetIndex,a=s.chart;a.isDatasetVisible(i)?(a.hide(i),t.hidden=!0):(a.show(i),t.hidden=!1)},onHover:null,onLeave:null,labels:{color:e=>e.chart.options.color,boxWidth:40,padding:10,generateLabels(e){const t=e.data.datasets,{labels:{usePointStyle:s,pointStyle:i,textAlign:a,color:n,useBorderRadius:o,borderRadius:l}}=e.legend.options;return e._getSortedDatasetMetas().map(e=>{const r=e.controller.getStyle(s?0:void 0),d=Ha(r.borderWidth);return{text:t[e.index].label,fillStyle:r.backgroundColor,fontColor:n,hidden:!e.visible,lineCap:r.borderCapStyle,lineDash:r.borderDash,lineDashOffset:r.borderDashOffset,lineJoin:r.borderJoinStyle,lineWidth:(d.width+d.height)/4,strokeStyle:r.borderColor,pointStyle:i||r.pointStyle,rotation:r.rotation,textAlign:a||r.textAlign,borderRadius:o&&(l||r.borderRadius),datasetIndex:e.index}},this)}},title:{color:e=>e.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:e=>!e.startsWith("on"),labels:{_scriptable:e=>!["generateLabels","filter","sort"].includes(e)}}};new WeakMap;const Wc={average(e){if(!e.length)return!1;let t,s,i=new Set,a=0,n=0;for(t=0,s=e.length;te+t)/i.size;return{x:o,y:a/n}},nearest(e,t){if(!e.length)return!1;let s,i,a,n=t.x,o=t.y,l=Number.POSITIVE_INFINITY;for(s=0,i=e.length;s-1?e.split("\n"):e}function Bc(e,t){const{element:s,datasetIndex:i,index:a}=t,n=e.getDatasetMeta(i).controller,{label:o,value:l}=n.getLabelAndValue(a);return{chart:e,label:o,parsed:n.getParsed(a),raw:e.data.datasets[i].data[a],formattedValue:l,dataset:n.getDataset(),dataIndex:a,datasetIndex:i,element:s}}function jc(e,t){const s=e.chart.ctx,{body:i,footer:a,title:n}=e,{boxWidth:o,boxHeight:l}=t,r=qa(t.bodyFont),d=qa(t.titleFont),c=qa(t.footerFont),h=n.length,u=a.length,p=i.length,g=Ha(t.padding);let m=g.height,f=0,b=i.reduce((e,t)=>e+t.before.length+t.lines.length+t.after.length,0);if(b+=e.beforeBody.length+e.afterBody.length,h&&(m+=h*d.lineHeight+(h-1)*t.titleSpacing+t.titleMarginBottom),b){const e=t.displayColors?Math.max(l,r.lineHeight):r.lineHeight;m+=p*e+(b-p)*r.lineHeight+(b-1)*t.bodySpacing}u&&(m+=t.footerMarginTop+u*c.lineHeight+(u-1)*t.footerSpacing);let y=0;const v=function(e){f=Math.max(f,s.measureText(e).width+y)};return s.save(),s.font=d.string,js(e.title,v),s.font=r.string,js(e.beforeBody.concat(e.afterBody),v),y=t.displayColors?o+2+t.boxPadding:0,js(i,e=>{js(e.before,v),js(e.lines,v),js(e.after,v)}),y=0,s.font=c.string,js(e.footer,v),s.restore(),f+=g.width,{width:f,height:m}}function Hc(e,t){const{y:s,height:i}=t;return se.height-i/2?"bottom":"center"}function qc(e,t,s,i){const{x:a,width:n}=i,o=s.caretSize+s.caretPadding;return"left"===e&&a+n+o>t.width||("right"===e&&a-n-o<0||void 0)}function Xc(e,t,s,i){const{x:a,width:n}=s,{width:o,chartArea:{left:l,right:r}}=e;let d="center";return"center"===i?d=a<=(l+r)/2?"left":"right":a<=n/2?d="left":a>=o-n/2&&(d="right"),qc(d,e,t,s)&&(d="center"),d}function Kc(e,t,s){const i=s.yAlign||t.yAlign||Hc(e,s);return{xAlign:s.xAlign||t.xAlign||Xc(e,t,s,i),yAlign:i}}function Qc(e,t){let{x:s,width:i}=e;return"right"===t?s-=i:"center"===t&&(s-=i/2),s}function Yc(e,t,s){let{y:i,height:a}=e;return"top"===t?i+=s:i-="bottom"===t?a+s:a/2,i}function Gc(e,t,s,i){const{caretSize:a,caretPadding:n,cornerRadius:o}=e,{xAlign:l,yAlign:r}=s,d=a+n,{topLeft:c,topRight:h,bottomLeft:u,bottomRight:p}=ja(o);let g=Qc(t,l);const m=Yc(t,r,d);return"center"===r?"left"===l?g+=d:"right"===l&&(g-=d):"left"===l?g-=Math.max(c,u)+a:"right"===l&&(g+=Math.max(h,p)+a),{x:Di(g,0,i.width-t.width),y:Di(m,0,i.height-t.height)}}function Jc(e,t,s){const i=Ha(s.padding);return"center"===t?e.x+e.width/2:"right"===t?e.x+e.width-i.right:e.x+i.left}function Zc(e){return Nc([],zc(e))}function eh(e,t,s){return Qa(e,{tooltip:t,tooltipItems:s,type:"tooltip"})}function th(e,t){const s=t&&t.dataset&&t.dataset.tooltip&&t.dataset.tooltip.callbacks;return s?e.override(s):e}const sh={beforeTitle:Vs,title(e){if(e.length>0){const t=e[0],s=t.chart.data.labels,i=s?s.length:0;if(this&&this.options&&"dataset"===this.options.mode)return t.dataset.label||"";if(t.label)return t.label;if(i>0&&t.dataIndex{const t={before:[],lines:[],after:[]},a=th(s,e);Nc(t.before,zc(ih(a,"beforeLabel",this,e))),Nc(t.lines,ih(a,"label",this,e)),Nc(t.after,zc(ih(a,"afterLabel",this,e))),i.push(t)}),i}getAfterBody(e,t){return Zc(ih(t.callbacks,"afterBody",this,e))}getFooter(e,t){const{callbacks:s}=t,i=ih(s,"beforeFooter",this,e),a=ih(s,"footer",this,e),n=ih(s,"afterFooter",this,e);let o=[];return o=Nc(o,zc(i)),o=Nc(o,zc(a)),o=Nc(o,zc(n)),o}_createItems(e){const t=this._active,s=this.chart.data,i=[],a=[],n=[];let o,l,r=[];for(o=0,l=t.length;oe.filter(t,i,a,s))),e.itemSort&&(r=r.sort((t,i)=>e.itemSort(t,i,s))),js(r,t=>{const s=th(e.callbacks,t);i.push(ih(s,"labelColor",this,t)),a.push(ih(s,"labelPointStyle",this,t)),n.push(ih(s,"labelTextColor",this,t))}),this.labelColors=i,this.labelPointStyles=a,this.labelTextColors=n,this.dataPoints=r,r}update(e,t){const s=this.options.setContext(this.getContext()),i=this._active;let a,n=[];if(i.length){const e=Wc[s.position].call(this,i,this._eventPosition);n=this._createItems(s),this.title=this.getTitle(n,s),this.beforeBody=this.getBeforeBody(n,s),this.body=this.getBody(n,s),this.afterBody=this.getAfterBody(n,s),this.footer=this.getFooter(n,s);const t=this._size=jc(this,s),o=Object.assign({},e,t),l=Kc(this.chart,s,o),r=Gc(s,o,l,this.chart);this.xAlign=l.xAlign,this.yAlign=l.yAlign,a={opacity:1,x:r.x,y:r.y,width:t.width,height:t.height,caretX:e.x,caretY:e.y}}else 0!==this.opacity&&(a={opacity:0});this._tooltipItems=n,this.$context=void 0,a&&this._resolveAnimations().update(this,a),e&&s.external&&s.external.call(this,{chart:this.chart,tooltip:this,replay:t})}drawCaret(e,t,s,i){const a=this.getCaretPosition(e,s,i);t.lineTo(a.x1,a.y1),t.lineTo(a.x2,a.y2),t.lineTo(a.x3,a.y3)}getCaretPosition(e,t,s){const{xAlign:i,yAlign:a}=this,{caretSize:n,cornerRadius:o}=s,{topLeft:l,topRight:r,bottomLeft:d,bottomRight:c}=ja(o),{x:h,y:u}=e,{width:p,height:g}=t;let m,f,b,y,v,x;return"center"===a?(v=u+g/2,"left"===i?(m=h,f=m-n,y=v+n,x=v-n):(m=h+p,f=m+n,y=v-n,x=v+n),b=m):(f="left"===i?h+Math.max(l,d)+n:"right"===i?h+p-Math.max(r,c)-n:this.caretX,"top"===a?(y=u,v=y-n,m=f-n,b=f+n):(y=u+g,v=y+n,m=f+n,b=f-n),x=y),{x1:m,x2:f,x3:b,y1:y,y2:v,y3:x}}drawTitle(e,t,s){const i=this.title,a=i.length;let n,o,l;if(a){const r=Kn(s.rtl,this.x,this.width);for(e.x=Jc(this,s.titleAlign,s),t.textAlign=r.textAlign(s.titleAlign),t.textBaseline="middle",n=qa(s.titleFont),o=s.titleSpacing,t.fillStyle=s.titleColor,t.font=n.string,l=0;l0!==e)?(e.beginPath(),e.fillStyle=a.multiKeyBackground,Ua(e,{x:t,y:p,w:r,h:l,radius:o}),e.fill(),e.stroke(),e.fillStyle=n.backgroundColor,e.beginPath(),Ua(e,{x:s,y:p+1,w:r-2,h:l-2,radius:o}),e.fill()):(e.fillStyle=a.multiKeyBackground,e.fillRect(t,p,r,l),e.strokeRect(t,p,r,l),e.fillStyle=n.backgroundColor,e.fillRect(s,p+1,r-2,l-2))}e.fillStyle=this.labelTextColors[s]}drawBody(e,t,s){const{body:i}=this,{bodySpacing:a,bodyAlign:n,displayColors:o,boxHeight:l,boxWidth:r,boxPadding:d}=s,c=qa(s.bodyFont);let h=c.lineHeight,u=0;const p=Kn(s.rtl,this.x,this.width),g=function(s){t.fillText(s,p.x(e.x+u),e.y+h/2),e.y+=h+a},m=p.textAlign(n);let f,b,y,v,x,k,_;for(t.textAlign=n,t.textBaseline="middle",t.font=c.string,e.x=Jc(this,m,s),t.fillStyle=s.bodyColor,js(this.beforeBody,g),u=o&&"right"!==m?"center"===n?r/2+d:r+2+d:0,v=0,k=i.length;v0&&t.stroke()}_updateAnimationTarget(e){const t=this.chart,s=this.$animations,i=s&&s.x,a=s&&s.y;if(i||a){const s=Wc[e.position].call(this,this._active,this._eventPosition);if(!s)return;const n=this._size=jc(this,e),o=Object.assign({},s,this._size),l=Kc(t,e,o),r=Gc(e,o,l,t);i._to===r.x&&a._to===r.y||(this.xAlign=l.xAlign,this.yAlign=l.yAlign,this.width=n.width,this.height=n.height,this.caretX=s.x,this.caretY=s.y,this._resolveAnimations().update(this,r))}}_willRender(){return!!this.opacity}draw(e){const t=this.options.setContext(this.getContext());let s=this.opacity;if(!s)return;this._updateAnimationTarget(t);const i={width:this.width,height:this.height},a={x:this.x,y:this.y};s=Math.abs(s)<.001?0:s;const n=Ha(t.padding),o=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;t.enabled&&o&&(e.save(),e.globalAlpha=s,this.drawBackground(a,e,i,t),Qn(e,t.textDirection),a.y+=n.top,this.drawTitle(a,e,t),this.drawBody(a,e,t),this.drawFooter(a,e,t),Yn(e,t.textDirection),e.restore())}getActiveElements(){return this._active||[]}setActiveElements(e,t){const s=this._active,i=e.map(({datasetIndex:e,index:t})=>{const s=this.chart.getDatasetMeta(e);if(!s)throw new Error("Cannot find a dataset at index "+e);return{datasetIndex:e,element:s.data[t],index:t}}),a=!Hs(s,i),n=this._positionChanged(i,t);(a||n)&&(this._active=i,this._eventPosition=t,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(e,t,s=!0){if(t&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const i=this.options,a=this._active||[],n=this._getActiveElements(e,a,t,s),o=this._positionChanged(n,e),l=t||!Hs(n,a)||o;return l&&(this._active=n,(i.enabled||i.external)&&(this._eventPosition={x:e.x,y:e.y},this.update(!0,t))),l}_getActiveElements(e,t,s,i){const a=this.options;if("mouseout"===e.type)return[];if(!i)return t.filter(e=>this.chart.data.datasets[e.datasetIndex]&&void 0!==this.chart.getDatasetMeta(e.datasetIndex).controller.getParsed(e.index));const n=this.chart.getElementsAtEventForMode(e,a.mode,a,s);return a.reverse&&n.reverse(),n}_positionChanged(e,t){const{caretX:s,caretY:i,options:a}=this,n=Wc[a.position].call(this,e,t);return!1!==n&&(s!==n.x||i!==n.y)}}(0,Nt.A)(ah,"positioners",Wc);var nh={id:"tooltip",_element:ah,positioners:Wc,afterInit(e,t,s){s&&(e.tooltip=new ah({chart:e,options:s}))},beforeUpdate(e,t,s){e.tooltip&&e.tooltip.initialize(s)},reset(e,t,s){e.tooltip&&e.tooltip.initialize(s)},afterDraw(e){const t=e.tooltip;if(t&&t._willRender()){const s={tooltip:t};if(!1===e.notifyPlugins("beforeTooltipDraw",{...s,cancelable:!0}))return;t.draw(e.ctx),e.notifyPlugins("afterTooltipDraw",s)}},afterEvent(e,t){if(e.tooltip){const s=t.replay;e.tooltip.handleEvent(t.event,s,t.inChartArea)&&(t.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(e,t)=>t.bodyFont.size,boxWidth:(e,t)=>t.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:sh},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:e=>"filter"!==e&&"itemSort"!==e&&"external"!==e,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};const oh=(e,t,s,i)=>("string"===typeof t?(s=e.push(t)-1,i.unshift({index:s,label:t})):isNaN(t)&&(s=null),s);function lh(e,t,s,i){const a=e.indexOf(t);if(-1===a)return oh(e,t,s,i);const n=e.lastIndexOf(t);return a!==n?s:a}const rh=(e,t)=>null===e?null:Di(Math.round(e),0,t);function dh(e){const t=this.getLabels();return e>=0&&et.length-1?null:this.getPixelForValue(t[e].value)}getValueForPixel(e){return Math.round(this._startValue+this.getDecimalForPixel(e)*this._valueRange)}getBasePixel(){return this.bottom}}function hh(e,t){const s=[],i=1e-14,{bounds:a,step:n,min:o,max:l,precision:r,count:d,maxTicks:c,maxDigits:h,includeBounds:u}=e,p=n||1,g=c-1,{min:m,max:f}=t,b=!Es(o),y=!Es(l),v=!Es(d),x=(f-m)/(h+1);let k,_,w,C,S=yi((f-m)/g/p)*p;if(Sg&&(S=yi(C*S/g/p)*p),Es(r)||(k=Math.pow(10,r),S=Math.ceil(S*k)/k),"ticks"===a?(_=Math.floor(m/S)*S,w=Math.ceil(f/S)*S):(_=m,w=f),b&&y&&n&&_i((l-o)/n,S/1e3)?(C=Math.round(Math.min((l-o)/S,c)),S=(l-o)/C,_=o,w=l):v?(_=b?o:_,w=y?l:w,C=d-1,S=(w-_)/C):(C=(w-_)/S,C=bi(C,Math.round(C),S/1e3)?Math.round(C):Math.ceil(C));const F=Math.max(Fi(S),Fi(_));k=Math.pow(10,Es(r)?F:r),_=Math.round(_*k)/k,w=Math.round(w*k)/k;let T=0;for(b&&(u&&_!==o?(s.push({value:o}),_l)break;s.push({value:e})}return y&&u&&w!==l?s.length&&bi(s[s.length-1].value,l,uh(l,x,e))?s[s.length-1].value=l:s.push({value:l}):y&&w!==l||s.push({value:w}),s}function uh(e,t,{horizontal:s,minRotation:i}){const a=Ci(i),n=(s?Math.sin(a):Math.cos(a))||.001,o=.75*t*(""+e).length;return Math.min(t/n,o)}(0,Nt.A)(ch,"id","category"),(0,Nt.A)(ch,"defaults",{ticks:{callback:dh}});class ph extends $r{constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(e,t){return Es(e)||("number"===typeof e||e instanceof Number)&&!isFinite(+e)?null:+e}handleTickRangeOptions(){const{beginAtZero:e}=this.options,{minDefined:t,maxDefined:s}=this.getUserBounds();let{min:i,max:a}=this;const n=e=>i=t?i:e,o=e=>a=s?a:e;if(e){const e=fi(i),t=fi(a);e<0&&t<0?o(0):e>0&&t>0&&n(0)}if(i===a){let t=0===a?1:Math.abs(.05*a);o(a+t),e||n(i-t)}this.min=i,this.max=a}getTickLimit(){const e=this.options.ticks;let t,{maxTicksLimit:s,stepSize:i}=e;return i?(t=Math.ceil(this.max/i)-Math.floor(this.min/i)+1,t>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${i} would result generating up to ${t} ticks. Limiting to 1000.`),t=1e3)):(t=this.computeTickLimit(),s=s||11),s&&(t=Math.min(s,t)),t}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const e=this.options,t=e.ticks;let s=this.getTickLimit();s=Math.max(2,s);const i={maxTicks:s,bounds:e.bounds,min:e.min,max:e.max,precision:t.precision,step:t.stepSize,count:t.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:t.minRotation||0,includeBounds:!1!==t.includeBounds},a=this._range||this,n=hh(i,a);return"ticks"===e.bounds&&wi(n,this,"value"),e.reverse?(n.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),n}configure(){const e=this.ticks;let t=this.min,s=this.max;if(super.configure(),this.options.offset&&e.length){const i=(s-t)/Math.max(e.length-1,1)/2;t-=i,s+=i}this._startValue=t,this._endValue=s,this._valueRange=s-t}getLabelForValue(e){return ca(e,this.chart.options.locale,this.options.ticks.format)}}class gh extends ph{determineDataLimits(){const{min:e,max:t}=this.getMinMax(!0);this.min=Os(e)?e:0,this.max=Os(t)?t:1,this.handleTickRangeOptions()}computeTickLimit(){const e=this.isHorizontal(),t=e?this.width:this.height,s=Ci(this.options.ticks.minRotation),i=(e?Math.sin(s):Math.cos(s))||.001,a=this._resolveTickFontOptions(0);return Math.ceil(t/Math.min(40,a.lineHeight/i))}getPixelForValue(e){return null===e?NaN:this.getPixelForDecimal((e-this._startValue)/this._valueRange)}getValueForPixel(e){return this._startValue+this.getDecimalForPixel(e)*this._valueRange}}(0,Nt.A)(gh,"id","linear"),(0,Nt.A)(gh,"defaults",{ticks:{callback:pa.formatters.numeric}});const mh=e=>Math.floor(mi(e)),fh=(e,t)=>Math.pow(10,mh(e)+t);function bh(e){const t=e/Math.pow(10,mh(e));return 1===t}function yh(e,t,s){const i=Math.pow(10,s),a=Math.floor(e/i),n=Math.ceil(t/i);return n-a}function vh(e,t){const s=t-e;let i=mh(s);while(yh(e,t,i)>10)i++;while(yh(e,t,i)<10)i--;return Math.min(i,mh(e))}function xh(e,{min:t,max:s}){t=Rs(e.min,t);const i=[],a=mh(t);let n=vh(t,s),o=n<0?Math.pow(10,Math.abs(n)):1;const l=Math.pow(10,n),r=a>n?Math.pow(10,a):0,d=Math.round((t-r)*o)/o,c=Math.floor((t-r)/l/10)*l*10;let h=Math.floor((d-c)/Math.pow(10,n)),u=Rs(e.min,Math.round((r+c+h*Math.pow(10,n))*o)/o);while(u=10?h=h<15?15:20:h++,h>=20&&(n++,h=2,o=n>=0?1:o),u=Math.round((r+c+h*Math.pow(10,n))*o)/o;const p=Rs(e.max,u);return i.push({value:p,major:bh(p),significand:h}),i}class kh extends $r{constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(e,t){const s=ph.prototype.parse.apply(this,[e,t]);if(0!==s)return Os(s)&&s>0?s:null;this._zero=!0}determineDataLimits(){const{min:e,max:t}=this.getMinMax(!0);this.min=Os(e)?Math.max(0,e):null,this.max=Os(t)?Math.max(0,t):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!Os(this._userMin)&&(this.min=e===fh(this.min,0)?fh(this.min,-1):fh(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:e,maxDefined:t}=this.getUserBounds();let s=this.min,i=this.max;const a=t=>s=e?s:t,n=e=>i=t?i:e;s===i&&(s<=0?(a(1),n(10)):(a(fh(s,-1)),n(fh(i,1)))),s<=0&&a(fh(i,-1)),i<=0&&n(fh(s,1)),this.min=s,this.max=i}buildTicks(){const e=this.options,t={min:this._userMin,max:this._userMax},s=xh(t,this);return"ticks"===e.bounds&&wi(s,this,"value"),e.reverse?(s.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),s}getLabelForValue(e){return void 0===e?"0":ca(e,this.chart.options.locale,this.options.ticks.format)}configure(){const e=this.min;super.configure(),this._startValue=mi(e),this._valueRange=mi(this.max)-mi(e)}getPixelForValue(e){return void 0!==e&&0!==e||(e=this.min),null===e||isNaN(e)?NaN:this.getPixelForDecimal(e===this.min?0:(mi(e)-this._startValue)/this._valueRange)}getValueForPixel(e){const t=this.getDecimalForPixel(e);return Math.pow(10,this._startValue+t*this._valueRange)}}function _h(e){const t=e.ticks;if(t.display&&e.display){const e=Ha(t.backdropPadding);return Ws(t.font&&t.font.size,xa.font.size)+e.height}return 0}function wh(e,t,s){return s=Is(s)?s:[s],{w:wa(e,t.string,s),h:s.length*t.lineHeight}}function Ch(e,t,s,i,a){return e===i||e===a?{start:t-s/2,end:t+s/2}:ea?{start:t-s,end:t}:{start:t,end:t+s}}function Sh(e){const t={l:e.left+e._padding.left,r:e.right-e._padding.right,t:e.top+e._padding.top,b:e.bottom-e._padding.bottom},s=Object.assign({},t),i=[],a=[],n=e._pointLabels.length,o=e.options.pointLabels,l=o.centerPointLabels?li/n:0;for(let r=0;rt.r&&(l=(i.end-t.r)/n,e.r=Math.max(e.r,t.r+l)),a.startt.b&&(r=(a.end-t.b)/o,e.b=Math.max(e.b,t.b+r))}function Th(e,t,s){const i=e.drawingArea,{extra:a,additionalAngle:n,padding:o,size:l}=s,r=e.getPointPosition(t,i+a+o,n),d=Math.round(Si(Pi(r.angle+ui))),c=Dh(r.y,l.h,d),h=Ph(d),u=Mh(r.x,l.w,h);return{visible:!0,x:r.x,y:c,textAlign:h,left:u,top:c,right:u+l.w,bottom:c+l.h}}function Ah(e,t){if(!t)return!0;const{left:s,top:i,right:a,bottom:n}=e,o=Aa({x:s,y:i},t)||Aa({x:s,y:n},t)||Aa({x:a,y:i},t)||Aa({x:a,y:n},t);return!o}function $h(e,t,s){const i=[],a=e._pointLabels.length,n=e.options,{centerPointLabels:o,display:l}=n.pointLabels,r={extra:_h(n)/2,additionalAngle:o?li/a:0};let d;for(let c=0;c270||s<90)&&(e-=t),e}function Vh(e,t,s){const{left:i,top:a,right:n,bottom:o}=s,{backdropColor:l}=t;if(!Es(l)){const s=ja(t.borderRadius),r=Ha(t.backdropPadding);e.fillStyle=l;const d=i-r.left,c=a-r.top,h=n-i+r.width,u=o-a+r.height;Object.values(s).some(e=>0!==e)?(e.beginPath(),Ua(e,{x:d,y:c,w:h,h:u,radius:s}),e.fill()):e.fillRect(d,c,h,u)}}function Lh(e,t){const{ctx:s,options:{pointLabels:i}}=e;for(let a=t-1;a>=0;a--){const t=e._pointLabelItems[a];if(!t.visible)continue;const n=i.setContext(e.getPointLabelContext(a));Vh(s,n,t);const o=qa(n.font),{x:l,y:r,textAlign:d}=t;Ia(s,e._pointLabels[a],l,r+o.lineHeight/2,o,{color:n.color,textAlign:d,textBaseline:"middle"})}}function Eh(e,t,s,i){const{ctx:a}=e;if(s)a.arc(e.xCenter,e.yCenter,t,0,ri);else{let s=e.getPointPosition(0,t);a.moveTo(s.x,s.y);for(let n=1;n{const s=Bs(this.options.pointLabels.callback,[e,t],this);return s||0===s?s:""}).filter((e,t)=>this.chart.getDataVisibility(t))}fit(){const e=this.options;e.display&&e.pointLabels.display?Sh(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(e,t,s,i){this.xCenter+=Math.floor((e-t)/2),this.yCenter+=Math.floor((s-i)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(e,t,s,i))}getIndexAngle(e){const t=ri/(this._pointLabels.length||1),s=this.options.startAngle||0;return Pi(e*t+Ci(s))}getDistanceFromCenterForValue(e){if(Es(e))return NaN;const t=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-e)*t:(e-this.min)*t}getValueForDistanceFromCenter(e){if(Es(e))return NaN;const t=e/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-t:this.min+t}getPointLabelContext(e){const t=this._pointLabels||[];if(e>=0&&e{if(0!==t||0===t&&this.min<0){l=this.getDistanceFromCenterForValue(e.value);const s=this.getContext(t),o=i.setContext(s),r=a.setContext(s);Ih(this,o,l,n,r)}}),s.display){for(e.save(),o=n-1;o>=0;o--){const i=s.setContext(this.getPointLabelContext(o)),{color:a,lineWidth:n}=i;n&&a&&(e.lineWidth=n,e.strokeStyle=a,e.setLineDash(i.borderDash),e.lineDashOffset=i.borderDashOffset,l=this.getDistanceFromCenterForValue(t.reverse?this.min:this.max),r=this.getPointPosition(o,l),e.beginPath(),e.moveTo(this.xCenter,this.yCenter),e.lineTo(r.x,r.y),e.stroke())}e.restore()}}drawBorder(){}drawLabels(){const e=this.ctx,t=this.options,s=t.ticks;if(!s.display)return;const i=this.getIndexAngle(0);let a,n;e.save(),e.translate(this.xCenter,this.yCenter),e.rotate(i),e.textAlign="center",e.textBaseline="middle",this.ticks.forEach((i,o)=>{if(0===o&&this.min>=0&&!t.reverse)return;const l=s.setContext(this.getContext(o)),r=qa(l.font);if(a=this.getDistanceFromCenterForValue(this.ticks[o].value),l.showLabelBackdrop){e.font=r.string,n=e.measureText(i.label).width,e.fillStyle=l.backdropColor;const t=Ha(l.backdropPadding);e.fillRect(-n/2-t.left,-a-r.size/2-t.top,n+t.width,r.size+t.height)}Ia(e,i.label,0,-a,r,{color:l.color,strokeColor:l.textStrokeColor,strokeWidth:l.textStrokeWidth})}),e.restore()}drawTitle(){}}(0,Nt.A)(Oh,"id","radialLinear"),(0,Nt.A)(Oh,"defaults",{display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:pa.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback(e){return e},padding:5,centerPointLabels:!1}}),(0,Nt.A)(Oh,"defaultRoutes",{"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"}),(0,Nt.A)(Oh,"descriptors",{angleLines:{_fallback:"grid"}});const Rh={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},Wh=Object.keys(Rh);function Nh(e,t){return e-t}function zh(e,t){if(Es(t))return null;const s=e._adapter,{parser:i,round:a,isoWeekday:n}=e._parseOpts;let o=t;return"function"===typeof i&&(o=i(o)),Os(o)||(o="string"===typeof i?s.parse(o,i):s.parse(o)),null===o?null:(a&&(o="week"!==a||!ki(n)&&!0!==n?s.startOf(o,a):s.startOf(o,"isoWeek",n)),+o)}function Bh(e,t,s,i){const a=Wh.length;for(let n=Wh.indexOf(e);n=Wh.indexOf(s);n--){const s=Wh[n];if(Rh[s].common&&e._adapter.diff(a,i,s)>=t-1)return s}return Wh[s?Wh.indexOf(s):0]}function Hh(e){for(let t=Wh.indexOf(e)+1,s=Wh.length;t=t?s[i]:s[a];e[n]=!0}}else e[t]=!0}function Xh(e,t,s,i){const a=e._adapter,n=+a.startOf(t[0].value,i),o=t[t.length-1].value;let l,r;for(l=n;l<=o;l=+a.add(l,1,i))r=s[l],r>=0&&(t[r].major=!0);return t}function Kh(e,t,s){const i=[],a={},n=t.length;let o,l;for(o=0;o+e.value))}initOffsets(e=[]){let t,s,i=0,a=0;this.options.offset&&e.length&&(t=this.getDecimalForValue(e[0]),i=1===e.length?1-t:(this.getDecimalForValue(e[1])-t)/2,s=this.getDecimalForValue(e[e.length-1]),a=1===e.length?s:(s-this.getDecimalForValue(e[e.length-2]))/2);const n=e.length<3?.5:.25;i=Di(i,0,n),a=Di(a,0,n),this._offsets={start:i,end:a,factor:1/(i+1+a)}}_generate(){const e=this._adapter,t=this.min,s=this.max,i=this.options,a=i.time,n=a.unit||Bh(a.minUnit,t,s,this._getLabelCapacity(t)),o=Ws(i.ticks.stepSize,1),l="week"===n&&a.isoWeekday,r=ki(l)||!0===l,d={};let c,h,u=t;if(r&&(u=+e.startOf(u,"isoWeek",l)),u=+e.startOf(u,r?"day":n),e.diff(s,t,n)>1e5*o)throw new Error(t+" and "+s+" are too far apart with stepSize of "+o+" "+n);const p="data"===i.ticks.source&&this.getDataTimestamps();for(c=u,h=0;c+e)}getLabelForValue(e){const t=this._adapter,s=this.options.time;return s.tooltipFormat?t.format(e,s.tooltipFormat):t.format(e,s.displayFormats.datetime)}format(e,t){const s=this.options,i=s.time.displayFormats,a=this._unit,n=t||i[a];return this._adapter.format(e,n)}_tickFormatFunction(e,t,s,i){const a=this.options,n=a.ticks.callback;if(n)return Bs(n,[e,t,s],this);const o=a.time.displayFormats,l=this._unit,r=this._majorUnit,d=l&&o[l],c=r&&o[r],h=s[t],u=r&&c&&h&&h.major;return this._adapter.format(e,i||(u?c:d))}generateTickLabels(e){let t,s,i;for(t=0,s=e.length;t0?o:1}getDataTimestamps(){let e,t,s=this._cache.data||[];if(s.length)return s;const i=this.getMatchingVisibleMetas();if(this._normalized&&i.length)return this._cache.data=i[0].controller.getAllParsedValues(this);for(e=0,t=i.length;e=e[l].pos&&t<=e[r].pos&&({lo:l,hi:r}=Ii(e,"pos",t)),({pos:i,time:n}=e[l]),({pos:a,time:o}=e[r])):(t>=e[l].time&&t<=e[r].time&&({lo:l,hi:r}=Ii(e,"time",t)),({time:i,pos:n}=e[l]),({time:a,pos:o}=e[r]));const d=a-i;return d?n+(o-n)*(t-i)/d:n}(0,Nt.A)(Qh,"id","time"),(0,Nt.A)(Qh,"defaults",{bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",callback:!1,major:{enabled:!1}}});class Gh extends Qh{constructor(e){super(e),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const e=this._getTimestampsForTable(),t=this._table=this.buildLookupTable(e);this._minPos=Yh(t,this.min),this._tableRange=Yh(t,this.max)-this._minPos,super.initOffsets(e)}buildLookupTable(e){const{min:t,max:s}=this,i=[],a=[];let n,o,l,r,d;for(n=0,o=e.length;n=t&&r<=s&&i.push(r);if(i.length<2)return[{time:t,pos:0},{time:s,pos:1}];for(n=0,o=i.length;ne-t)}_getTimestampsForTable(){let e=this._cache.all||[];if(e.length)return e;const t=this.getDataTimestamps(),s=this.getLabelTimestamps();return e=t.length&&s.length?this.normalize(t.concat(s)):t.length?t:s,e=this._cache.all=e,e}getDecimalForValue(e){return(Yh(this._table,e)-this._minPos)/this._tableRange}getValueForPixel(e){const t=this._offsets,s=this.getDecimalForPixel(e)/t.factor-t.end;return Yh(this._table,s*this._tableRange+this._minPos,!0)}}(0,Nt.A)(Gh,"id","timeseries"),(0,Nt.A)(Gh,"defaults",Qh.defaults);var Jh=s(90144);const Zh={data:{type:Object,required:!0},options:{type:Object,default:()=>({})},plugins:{type:Array,default:()=>[]},datasetIdKey:{type:String,default:"label"},updateMode:{type:String,default:void 0}},eu={ariaLabel:{type:String},ariaDescribedby:{type:String}},tu={type:{type:String,required:!0},destroyDelay:{type:Number,default:0},...Zh,...eu},su="2"===i.rE[0]?(e,t)=>Object.assign(e,{attrs:t}):(e,t)=>Object.assign(e,t);function iu(e){return(0,Jh.ju)(e)?(0,Jh.ux)(e):e}function au(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e;return(0,Jh.ju)(t)?new Proxy(e,{}):e}function nu(e,t){const s=e.options;s&&t&&Object.assign(s,t)}function ou(e,t){e.labels=t}function lu(e,t,s){const i=[];e.datasets=t.map(t=>{const a=e.datasets.find(e=>e[s]===t[s]);return a&&t.data&&!i.includes(a)?(i.push(a),Object.assign(a,t),a):{...t}})}function ru(e,t){const s={labels:[],datasets:[]};return ou(s,e.labels),lu(s,e.datasets,t),s}const du=(0,i.pM)({props:tu,setup(e,t){let{expose:s,slots:a}=t;const n=(0,Jh.KR)(null),o=(0,Jh.IJ)(null);s({chart:o});const l=()=>{if(!n.value)return;const{type:t,data:s,options:i,plugins:a,datasetIdKey:l}=e,r=ru(s,l),d=au(r,s);o.value=new yd(n.value,{type:t,data:d,options:{...i},plugins:a})},r=()=>{const t=(0,Jh.ux)(o.value);t&&(e.destroyDelay>0?setTimeout(()=>{t.destroy(),o.value=null},e.destroyDelay):(t.destroy(),o.value=null))},d=t=>{t.update(e.updateMode)};return(0,i.sV)(l),(0,i.hi)(r),(0,i.wB)([()=>e.options,()=>e.data],(t,s)=>{let[a,n]=t,[l,r]=s;const c=(0,Jh.ux)(o.value);if(!c)return;let h=!1;if(a){const e=iu(a),t=iu(l);e&&e!==t&&(nu(c,e),h=!0)}if(n){const t=iu(n.labels),s=iu(r.labels),i=iu(n.datasets),a=iu(r.datasets);t!==s&&(ou(c.config.data,t),h=!0),i&&i!==a&&(lu(c.config.data,i,e.datasetIdKey),h=!0)}h&&(0,i.dY)(()=>{d(c)})},{deep:!0}),()=>(0,i.h)("canvas",{role:"img","aria-label":e.ariaLabel,"aria-describedby":e.ariaDescribedby,ref:n},[(0,i.h)("p",{},[a.default?a.default():""])])}});function cu(e,t){return yd.register(t),(0,i.pM)({props:Zh,setup(t,s){let{expose:a}=s;const n=(0,Jh.IJ)(null),o=e=>{n.value=e?.chart};return a({chart:n}),()=>(0,i.h)(du,su({ref:o},{type:e,...t}))}})}const hu=cu("doughnut",nl),uu=cu("line",ol);s(79577),s(41549),s(49797),s(49631),s(35623);class pu extends Error{constructor(e,t,s=!1,i=""){super(e),this.name="BatchOperationError",this.code=t,this.recoverable=s,this.suggestion=i}}const gu={401:()=>new pu("认证失败,请重新登录","AUTH_FAILED",!1,"请刷新页面并重新登录"),403:()=>new pu("权限不足或请求被拒绝","FORBIDDEN",!1,"请确认您有管理员权限"),400:e=>new pu(`请求数据无效: ${e}`,"INVALID_DATA",!0,"请检查数据格式后重试"),500:()=>new pu("服务器内部错误","SERVER_ERROR",!0,"请稍后重试,如果问题持续请联系管理员"),NETWORK:()=>new pu("网络连接失败","NETWORK_ERROR",!0,"请检查网络连接后重试"),ABORT:()=>new pu("操作已取消","ABORTED",!1,"")};function mu(e,t=""){if("AbortError"===e.name)return gu.ABORT();if(e instanceof Response||e&&"number"===typeof e.status){const s=gu[e.status];return s?s(t):new pu(`请求失败: ${e.status}`,"HTTP_ERROR",!0,"请稍后重试")}return e instanceof TypeError&&e.message.includes("fetch")?gu.NETWORK():new pu(e.message||"未知错误","UNKNOWN_ERROR",!0,"请稍后重试")}class fu{constructor(e={}){this.batchSize=e.batchSize||1e3,this.onProgress=e.onProgress||(()=>{}),this.onError=e.onError||(()=>{}),this.abortController=null}async fetchAllRecords(e=!1){this.abortController=new AbortController;const t=[];let s=null,i=0,a=0;try{do{if(this.abortController.signal.aborted)break;const n=await this.fetchBatch(s,e);t.push(...n.records),s=n.nextCursor,i+=n.records.length,a++,this.onProgress({phase:"fetching",current:i,batchCount:a,message:`已获取 ${i} 条记录...`})}while(s&&!this.abortController.signal.aborted);if(this.abortController.signal.aborted)throw gu.ABORT();return t}catch(n){const e=n instanceof pu?n:mu(n);throw this.onError(e),e}}async fetchBatch(e,t){const s=new URLSearchParams;e&&s.set("cursor",e),t&&s.set("includeValue","true"),s.set("limit",String(this.batchSize));try{const e=await(0,Rt.A)(`/api/manage/batch/list?${s}`,{signal:this.abortController.signal});if(!e.ok){let t="";try{const s=await e.json();t=s.error||""}catch{}throw mu(e,t)}const t=await e.json();if(!t.success)throw new pu(t.error||"请求失败","API_ERROR",!0,"请稍后重试");return{records:t.records||[],nextCursor:t.nextCursor||null,totalProcessed:t.totalProcessed||0}}catch(i){if(i instanceof pu)throw i;throw mu(i)}}abort(){this.abortController&&this.abortController.abort()}isAborted(){return!!this.abortController&&this.abortController.signal.aborted}reset(){this.abortController=null}}var bu=fu;class yu{constructor(e={}){this.chunkSize=e.chunkSize||null,this.maxRetries=e.maxRetries||3,this.retryDelay=e.retryDelay||1e3,this.onProgress=e.onProgress||(()=>{}),this.onError=e.onError||(()=>{}),this.sessionId=this.generateSessionId(),this.aborted=!1}async fetchConfig(){try{const e=await(0,Rt.A)("/api/manage/batch/index/config");if(!e.ok)throw new Error("获取配置失败");const t=await e.json();if(t.success)return{chunkSize:t.chunkSize||500,databaseType:t.databaseType||"unknown"};throw new Error(t.error||"获取配置失败")}catch(e){return console.warn("Failed to fetch index config, using default:",e),{chunkSize:500,databaseType:"unknown"}}}async rebuild(){this.aborted=!1;try{if(!this.chunkSize){const e=await this.fetchConfig();this.chunkSize=e.chunkSize}this.onProgress({phase:"fetching",message:"正在获取数据...",current:0});const e=new bu({onProgress:e=>this.onProgress({...e,phase:"fetching"}),onError:e=>this.onError(e)}),t=await e.fetchAllRecords(!1);if(this.aborted)throw new pu("操作已取消","ABORTED",!1,"");if(this.onProgress({phase:"sorting",message:"正在排序...",current:0,total:t.length}),this.sortByTimestampDescending(t),this.aborted)throw new pu("操作已取消","ABORTED",!1,"");const s=this.splitIntoChunks(t);for(let i=0;i{const s=e.metadata&&e.metadata.TimeStamp||0,i=t.metadata&&t.metadata.TimeStamp||0;return i-s})}splitIntoChunks(e){const t=[];for(let s=0;se.toString(16).padStart(2,"0")).join("")}let a=2166136261,n=2166136261;for(let o=0;o>>0,n=Math.imul(n^i[o],16777635)>>>0;return a.toString(16).padStart(8,"0")+n.toString(16).padStart(8,"0")}createHttpError(e,t=""){switch(e){case 401:return new pu("认证失败,请重新登录","AUTH_FAILED",!1,"请刷新页面并重新登录");case 403:return new pu("权限不足或请求被拒绝","FORBIDDEN",!1,"请确认您有管理员权限");case 400:return new pu(`请求数据无效: ${t}`,"INVALID_DATA",!0,"请检查数据格式后重试");case 404:return new pu("会话不存在","SESSION_NOT_FOUND",!1,"请重新开始索引重建");case 410:return new pu("会话已过期","SESSION_EXPIRED",!1,"请重新开始索引重建");case 500:default:return new pu(`服务器错误: ${t||e}`,"SERVER_ERROR",!0,"请稍后重试")}}sleep(e){return new Promise(t=>setTimeout(t,e))}abort(){this.aborted=!0}reset(){this.aborted=!1,this.sessionId=this.generateSessionId()}}var vu=yu;class xu{constructor(e={}){this.onProgress=e.onProgress||(()=>{}),this.processor=null}async generateBackup(){this.processor=new bu({onProgress:e=>this.onProgress({...e,phase:"fetching"})});const e=await this.processor.fetchAllRecords(!0);this.onProgress({phase:"building",message:"正在构建备份数据..."});const t={timestamp:Date.now(),version:Wt.rE,data:{fileCount:e.length,files:{},settings:{}}};for(const a of e)t.data.files[a.id]={metadata:a.metadata,value:a.value||null};const s=await this.fetchSettings();t.data.settings=s,this.onProgress({phase:"downloading",message:"正在生成下载..."}),this.downloadBackup(t);const i=Object.keys(s).length;return{success:!0,fileCount:e.length,settingsCount:i}}async fetchSettings(){try{const e=await(0,Rt.A)("/api/manage/batch/settings");if(!e.ok)return console.warn("Failed to fetch settings:",e.status),{};const t=await e.json();return t.settings||{}}catch(e){return console.warn("Failed to fetch settings:",e),{}}}downloadBackup(e){const t=JSON.stringify(e,null,2),s=new Blob([t],{type:"application/json"}),i=URL.createObjectURL(s),a=document.createElement("a");a.href=i,a.download=`imgbed_backup_${(new Date).toISOString().split("T")[0]}.json`,document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(i)}abort(){this.processor&&this.processor.abort()}isAborted(){return!!this.processor&&this.processor.isAborted()}}var ku=xu;class _u{constructor(e={}){this.chunkSize=e.chunkSize||50,this.maxRetries=e.maxRetries||3,this.retryDelay=e.retryDelay||1e3,this.onProgress=e.onProgress||(()=>{}),this.onError=e.onError||(()=>{}),this.aborted=!1}async restore(e){if(this.aborted=!1,!e||!e.data)throw new pu("备份文件格式无效","INVALID_BACKUP",!1,"请选择有效的备份文件");const{files:t={},settings:s={}}=e.data,i=Object.entries(t),a=Object.entries(s),n=i.length,o=a.length,l=n+o;let r=0,d=0,c=0,h=0;try{this.onProgress({phase:"restoring_files",message:"正在恢复文件数据...",current:0,total:l});const t=this.splitIntoChunks(i,this.chunkSize);for(let e=0;esetTimeout(t,e))}abort(){this.aborted=!0}}var wu=_u;yd.register(Ad,nh,Rc,ch,gh,Bd,Nd,Pc);const Cu=864e5;function Su(e){return String(e).padStart(2,"0")}function Fu(e){return`${e.getFullYear()}-${Su(e.getMonth()+1)}-${Su(e.getDate())}`}function Tu(){const e=new Date;e.setHours(0,0,0,0);const t=new Date(e.getTime()-6*Cu);return[Fu(t),Fu(e)]}var Au={name:"SysCogStatus",components:{Doughnut:hu,Line:uu,DateRangeCalendar:q},data(){return{loading:!1,rebuilding:!1,backing:!1,restoring:!1,indexInfo:{},indexInfoLoaded:!1,indexInfoError:!1,currentTime:new Date,clockTimer:null,version:Wt.rE,loadErrors:{newest:!1,oldest:!1},trendGroupBy:"channel",trendDatePickerVisible:!1,trendDateRange:Tu(),channelColors:["#8B5CF6","#EC4899","#06B6D4","#10B981","#F59E0B","#EF4444","#2563EB","#84CC16"],typeColors:["#10B981","#3B82F6","#F59E0B","#EF4444","#8B5CF6","#EC4899","#06B6D4","#84CC16"],trendColors:["#2563EB","#10B981","#F59E0B","#EF4444","#8B5CF6","#06B6D4","#EC4899","#84CC16","#64748B"],isProcessing:!1,processingPhase:"",processingProgress:{current:0,total:0,message:"",percentage:0},processingError:null,processingStartTime:null,currentRebuilder:null,currentBackupGenerator:null,currentRestoreProcessor:null}},computed:{currentLocale(){return String(this.$i18n.locale||"zh-CN")},indexedFileCount(){return Number(this.indexInfo.totalFiles||0)},uploadChannelCount(){return Object.keys(this.indexInfo.channelStats||{}).length},systemHealthState(){return this.indexInfoError?"attention":this.indexInfoLoaded?"healthy":"checking"},systemHealthLabel(){return this.$t(`sysStatus.health${this.systemHealthState.charAt(0).toUpperCase()}${this.systemHealthState.slice(1)}`)},greetingTitle(){const e=this.currentTime.getHours();return e<5?this.$t("sysStatus.greetingLateNight"):e<11?this.$t("sysStatus.greetingMorning"):e<14?this.$t("sysStatus.greetingNoon"):e<18?this.$t("sysStatus.greetingAfternoon"):e<23?this.$t("sysStatus.greetingEvening"):this.$t("sysStatus.greetingLateNight")},systemStatusSummary(){return this.indexInfoError?this.$t("sysStatus.summaryUnavailable"):this.indexInfoLoaded?0===this.indexedFileCount?this.$t("sysStatus.summaryEmpty"):0===this.uploadChannelCount?this.$t("sysStatus.summaryIndexed",{files:this.indexedFileCount.toLocaleString(this.currentLocale)}):this.$t("sysStatus.summaryHealthy",{files:this.indexedFileCount.toLocaleString(this.currentLocale),channels:this.uploadChannelCount.toLocaleString(this.currentLocale)}):this.$t("sysStatus.summaryChecking")},currentDateLabel(){return new Intl.DateTimeFormat(this.currentLocale,{year:"numeric",month:"long",day:"numeric",weekday:"long"}).format(this.currentTime)},currentTimeLabel(){return new Intl.DateTimeFormat(this.currentLocale,{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1}).format(this.currentTime)},timeZoneLabel(){const e=Intl.DateTimeFormat().resolvedOptions().timeZone||this.$t("sysStatus.localTimezone"),t=-this.currentTime.getTimezoneOffset(),s=t>=0?"+":"-",i=Math.abs(t),a=Math.floor(i/60),n=i%60,o=0===n?`UTC${s}${a}`:`UTC${s}${a}:${String(n).padStart(2,"0")}`;return`${e} · ${o}`},channelChartData(){const e=this.indexInfo.channelStats||{};return{labels:Object.keys(e),datasets:[{data:Object.values(e),backgroundColor:this.channelColors.slice(0,Object.keys(e).length),borderWidth:0}]}},typeChartData(){const e=this.aggregatedTypeStats;return{labels:Object.keys(e),datasets:[{data:Object.values(e),backgroundColor:this.typeColors.slice(0,Object.keys(e).length),borderWidth:0}]}},aggregatedTypeStats(){const e=this.indexInfo.typeStats||{},t={};for(const[s,i]of Object.entries(e)){const e="Block"===s?this.$t("sysStatus.blocked"):this.$t("sysStatus.normalStatus");t[e]=(t[e]||0)+i}return t},currentTrendGroup(){const e=this.indexInfo.uploadTrend||{},t=e.groupBy||{};return t[this.trendGroupBy]||{series:[]}},trendRawLabels(){const e=this.indexInfo.uploadTrend||{};return e.labels||[]},trendRangeCrossesYear(){const e=new Set;return this.trendRawLabels.forEach(t=>{this.extractTrendLabelDates(t).forEach(t=>e.add(t.year))}),e.size>1},trendDisplayLabels(){return this.trendRawLabels.map(e=>this.formatTrendAxisLabel(e))},hasTrendData(){const e=this.indexInfo.uploadTrend||{};return(e.labels||[]).length>0},trendDateDialogWidth(){return window.innerWidth>768?"420px":"90%"},uploadTrendChartData(){const e=this.indexInfo.uploadTrend||{},t=this.currentTrendGroup.series||[],s="#F97316";return{labels:this.trendDisplayLabels,datasets:[{label:this.$t("sysStatus.totalUploads"),data:e.total||[],borderColor:s,backgroundColor:this.hexToRgba(s,.1),pointBackgroundColor:s,pointBorderColor:s,borderWidth:3,pointRadius:2,pointHoverRadius:5,tension:.28,fill:!1},...t.map((e,t)=>{const s=this.getTrendColor(t);return{label:this.formatTrendSeriesName(e),data:e.data||[],borderColor:s,backgroundColor:this.hexToRgba(s,.12),pointBackgroundColor:s,pointBorderColor:s,borderWidth:2,pointRadius:2,pointHoverRadius:5,tension:.32,fill:!1}})]}},lineChartOptions(){const e="#64748B";return{responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:{legend:{display:!0,position:"bottom",labels:{usePointStyle:!0,boxWidth:8,boxHeight:8,padding:16,color:e}},tooltip:{backgroundColor:"rgba(0, 0, 0, 0.8)",titleColor:"#fff",bodyColor:"#fff",padding:12,cornerRadius:8,displayColors:!0,callbacks:{title:e=>{const t=e?.[0]?.dataIndex;return this.trendRawLabels[t]||""},label:e=>{const t=e.parsed||{},s=void 0!==t.y?t.y:e.raw;return` ${e.dataset.label}: ${Number(s||0).toLocaleString()} ${this.$t("sysStatus.uploadsUnit")}`}}}},scales:{x:{grid:{display:!1},ticks:{color:e,maxTicksLimit:8,autoSkip:!0}},y:{beginAtZero:!0,grid:{color:"rgba(148, 163, 184, 0.18)"},ticks:{color:e,precision:0,callback:e=>Number(e).toLocaleString()}}}}},chartOptions(){return{responsive:!0,maintainAspectRatio:!0,cutout:"65%",hoverOffset:8,layout:{padding:10},plugins:{legend:{display:!1},tooltip:{backgroundColor:"rgba(0, 0, 0, 0.8)",titleColor:"#fff",bodyColor:"#fff",padding:12,cornerRadius:8,displayColors:!0,z:100,callbacks:{label:e=>{const t=e.raw,s=e.dataset.data.reduce((e,t)=>e+t,0),i=(t/s*100).toFixed(1);return` ${t.toLocaleString()} (${i}%)`}}}},animation:{animateRotate:!0,animateScale:!0}}},estimatedTimeRemaining(){if(!this.isProcessing||!this.processingStartTime)return"";if(0===this.processingProgress.current||0===this.processingProgress.percentage)return"";const e=Date.now()-this.processingStartTime,t=this.processingProgress.percentage/100;if(t<=0)return"";const s=e/t,i=s-e;if(i<=0)return this.$t("sysStatus.aboutToComplete");const a=Math.ceil(i/1e3);if(a<60)return this.$t("sysStatus.seconds",{count:a});const n=Math.ceil(a/60);if(n<60)return this.$t("sysStatus.minutes",{count:n});const o=Math.floor(n/60),l=n%60;return this.$t("sysStatus.hoursMinutes",{hours:o,minutes:l})},phaseDescription(){const e={fetching:this.$t("sysStatus.phaseFetching"),sorting:this.$t("sysStatus.phaseSorting"),uploading:this.$t("sysStatus.phaseUploading"),finalizing:this.$t("sysStatus.phaseFinalizing"),building:this.$t("sysStatus.phaseBuilding"),downloading:this.$t("sysStatus.phaseDownloading"),restoring_files:this.$t("sysStatus.phaseRestoringFiles"),restoring_settings:this.$t("sysStatus.phaseRestoringSettings"),completed:this.$t("sysStatus.phaseCompleted"),retrying:this.$t("sysStatus.phaseRetrying")};return e[this.processingPhase]||this.processingPhase}},mounted(){this.fetchIndexInfo(),this.clockTimer=window.setInterval(()=>{this.currentTime=new Date},1e3)},beforeUnmount(){this.clockTimer&&(window.clearInterval(this.clockTimer),this.clockTimer=null)},methods:{getChartColor(e){return this.channelColors[e%this.channelColors.length]},getTypeChartColor(e){return this.typeColors[e%this.typeColors.length]},getTrendColor(e){return this.trendColors[e%this.trendColors.length]},formatTrendSeriesName(e){return e?.isOther||"__other__"===e?.name?this.$t("sysStatus.otherChannels"):e?.name||this.$t("sysStatus.unknown")},hexToRgba(e,t){const s=(e||"").replace("#","");if(6!==s.length)return`rgba(37, 99, 235, ${t})`;const i=parseInt(s.slice(0,2),16),a=parseInt(s.slice(2,4),16),n=parseInt(s.slice(4,6),16);return`rgba(${i}, ${a}, ${n}, ${t})`},extractTrendLabelDates(e){const t=String(e||"").match(/\d{4}-\d{2}-\d{2}/g)||[];return t.map(e=>{const[t,s,i]=e.split("-").map(Number);return{year:t,month:s,day:i}})},formatTrendAxisLabel(e){const t=this.extractTrendLabelDates(e);if(0===t.length)return e;const s=(e,t)=>{const s=`${e.month}/${e.day}`;return t?`${e.year}/${s}`:s};if(1===t.length)return s(t[0],this.trendRangeCrossesYear);const[i,a]=t;if(!this.trendRangeCrossesYear)return`${s(i,!1)}-${s(a,!1)}`;const n=i.year===a.year?s(a,!1):s(a,!0);return`${s(i,!0)}-${n}`},openTrendDateDialog(){this.trendDatePickerVisible=!0},handleTrendDateRangeChange(e){Array.isArray(e)&&2===e.length&&e[0]&&e[1]&&(this.trendDatePickerVisible=!1,this.fetchIndexInfo())},getTrendDateRangeParams(){return Array.isArray(this.trendDateRange)&&2===this.trendDateRange.length||(this.trendDateRange=Tu()),{startDate:this.trendDateRange[0],endDate:this.trendDateRange[1]}},async fetchIndexInfo(){this.loading=!0,this.indexInfoError=!1;try{const{startDate:e,endDate:t}=this.getTrendDateRangeParams(),s=new URLSearchParams({action:"info",timezoneOffset:String((new Date).getTimezoneOffset()),trendMaxPoints:"90",trendSeriesLimit:"8",trendStartDate:e,trendEndDate:t}),i=await(0,Rt.A)(`/api/manage/list?${s.toString()}`,{method:"GET"});if(!i.ok)throw new Error("API请求失败");{const e=await i.json();this.indexInfo=e,this.indexInfoLoaded=!0}}catch(e){console.error("获取索引信息失败:",e),this.indexInfoError=!0,this.$message.error(this.$t("sysStatus.fetchIndexFailed"))}finally{this.loading=!1}},async rebuildIndex(){if(this.isProcessing)this.$message.warning(this.$t("sysStatus.operationInProgress"));else{this.rebuilding=!0,this.isProcessing=!0,this.processingError=null,this.processingStartTime=Date.now(),this.processingProgress={current:0,total:0,message:"",percentage:0},this.currentRebuilder=new vu({onProgress:e=>this.handleProgress(e),onError:e=>this.handleError(e)});try{const e=await this.currentRebuilder.rebuild();this.$message.success(this.$t("sysStatus.rebuildSuccess",{count:e.totalFiles.toLocaleString()})),setTimeout(()=>{this.fetchIndexInfo()},1e3)}catch(e){if("ABORTED"!==e.code){const t=e.suggestion?`${e.message}。${e.suggestion}`:e.message;this.$message.error(t),this.processingError={message:e.message,suggestion:e.suggestion,recoverable:e.recoverable}}}finally{this.rebuilding=!1,this.isProcessing=!1,this.currentRebuilder=null,this.processingStartTime=null}}},async backupData(){if(this.isProcessing)this.$message.warning(this.$t("sysStatus.operationInProgress"));else{this.backing=!0,this.isProcessing=!0,this.processingError=null,this.processingStartTime=Date.now(),this.processingProgress={current:0,total:0,message:"",percentage:0},this.currentBackupGenerator=new ku({onProgress:e=>this.handleProgress(e)});try{const e=await this.currentBackupGenerator.generateBackup(),t=e.settingsCount>0?this.$t("sysStatus.backupSuccessWithSettings",{fileCount:e.fileCount.toLocaleString(),settingsCount:e.settingsCount}):this.$t("sysStatus.backupSuccess",{count:e.fileCount.toLocaleString()});this.$message.success(t)}catch(e){if("ABORTED"!==e.code){const t=e.suggestion?`${e.message}。${e.suggestion}`:e.message;this.$message.error(t),this.processingError={message:e.message,suggestion:e.suggestion,recoverable:e.recoverable}}}finally{this.backing=!1,this.isProcessing=!1,this.currentBackupGenerator=null,this.processingStartTime=null}}},selectRestoreFile(){this.restoring||this.$refs.fileInput.click()},async handleFileSelect(e){const t=e.target.files[0];if(t)if(t.name.endsWith(".json")){try{await this.$confirm(this.$t("sysStatus.restoreConfirmMessage"),this.$t("sysStatus.restoreConfirmTitle"),{confirmButtonText:this.$t("sysStatus.restoreConfirmOk"),cancelButtonText:this.$t("sysStatus.restoreConfirmCancel"),type:"warning"}),await this.restoreData(t)}catch(s){"cancel"!==s&&console.error("确认恢复失败:",s)}e.target.value=""}else this.$message.error(this.$t("sysStatus.selectJsonFile"))},async restoreData(e){if(this.isProcessing)this.$message.warning(this.$t("sysStatus.operationInProgress"));else{this.restoring=!0,this.isProcessing=!0,this.processingError=null,this.processingStartTime=Date.now(),this.processingProgress={current:0,total:0,message:"",percentage:0};try{const s=await e.text();let i;try{i=JSON.parse(s)}catch(t){throw new Error(this.$t("sysStatus.invalidBackupFile"))}this.currentRestoreProcessor=new wu({chunkSize:100,onProgress:e=>this.handleProgress(e),onError:e=>this.handleError(e)});const a=await this.currentRestoreProcessor.restore(i);this.restoring=!1,this.isProcessing=!1,this.currentRestoreProcessor=null,this.processingStartTime=null,this.$message.success(this.$t("sysStatus.restoreSuccess",{files:a.restoredFiles,settings:a.restoredSettings})),await new Promise(e=>setTimeout(e,500)),await this.rebuildIndex()}catch(s){if(console.error("恢复数据失败:",s),this.restoring=!1,this.isProcessing=!1,this.currentRestoreProcessor=null,this.processingStartTime=null,"ABORTED"!==s.code){const e=s.suggestion?`${s.message}。${s.suggestion}`:s.message;this.$message.error(this.$t("sysStatus.restoreFailed")+": "+e),this.processingError={message:s.message,suggestion:s.suggestion,recoverable:s.recoverable}}}}},formatTime(e){if(!e)return this.$t("sysStatus.unknown");const t=new Date(e);return t.toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})},getPercentage(e,t){return t&&0!==t?Math.round(e/t*100):0},getTimeAgo(e){if(!e)return"";const t=Date.now(),s=t-e,i=Math.floor(s/6e4),a=Math.floor(s/36e5),n=Math.floor(s/864e5);return n>0?this.$t("sysStatus.daysAgo",{count:n}):a>0?this.$t("sysStatus.hoursAgo",{count:a}):i>0?this.$t("sysStatus.minutesAgo",{count:i}):this.$t("sysStatus.justNow")},handleImageError(e){this.loadErrors[e]=!0},isValidPreview(e,t){return!this.loadErrors[e]&&(!!t?.metadata?.FileType&&(t.metadata.FileType.includes("image")||t.metadata.FileType.includes("video")))},openReleases(){window.open("https://github.com/MarSeventh/CloudFlare-ImgBed/releases","_blank")},isImageFile(e){if(!e)return!1;if(e.metadata?.FileType?.includes("image"))return!0;const t=e.metadata?.FileName||e.id||"",s=t.substring(t.lastIndexOf(".")+1).toLowerCase(),i=["jpg","jpeg","png","gif","bmp","webp","svg","ico","tiff","tif","avif","heic","heif"];return i.includes(s)},isVideoFile(e){if(!e)return!1;if(e.metadata?.FileType?.includes("video"))return!0;const t=e.metadata?.FileName||e.id||"",s=t.substring(t.lastIndexOf(".")+1).toLowerCase(),i=["mp4","webm","ogg","avi","mov","flv","wmv","mkv","m4v","3gp","mpeg","mpg"];return i.includes(s)},openFileInNewTab(e){e?.id&&window.open("/file/"+e.id+"?from=admin","_blank")},handleProgress(e){this.processingPhase=e.phase,this.processingProgress.message=e.message||"",this.processingProgress.current=e.current||0,"fetching"===e.phase?(this.processingProgress.total=e.total||0,e.total&&e.total>0?this.processingProgress.percentage=Math.min(60,e.current/e.total*60):this.processingProgress.percentage=Math.min(50,15*Math.log10(e.current+1))):"sorting"===e.phase?(this.processingProgress.percentage=65,this.processingProgress.total=e.total||this.processingProgress.total):"uploading"===e.phase?(this.processingProgress.total=e.total||0,e.total&&e.total>0&&(this.processingProgress.percentage=70+e.current/e.total*25)):"finalizing"===e.phase?this.processingProgress.percentage=97:"building"===e.phase?this.processingProgress.percentage=80:"downloading"===e.phase?this.processingProgress.percentage=95:"restoring_files"===e.phase?(this.processingProgress.total=e.total||0,this.processingProgress.percentage=e.percentage||0):"restoring_settings"===e.phase?(this.processingProgress.total=e.total||0,this.processingProgress.percentage=e.percentage||80):"completed"===e.phase?this.processingProgress.percentage=100:"retrying"===e.phase&&(this.processingProgress.message=e.message)},handleError(e){console.error("批量操作错误:",e),this.processingError={message:e.message,suggestion:e.suggestion,recoverable:e.recoverable}},cancelOperation(){this.currentRebuilder&&(this.currentRebuilder.abort(),this.$message.info(this.$t("sysStatus.cancellingRebuild"))),this.currentBackupGenerator&&(this.currentBackupGenerator.abort(),this.$message.info(this.$t("sysStatus.cancellingRebuild"))),this.currentRestoreProcessor&&(this.currentRestoreProcessor.abort(),this.$message.info(this.$t("sysStatus.cancellingRebuild")))},retryOperation(){this.processingError=null,this.rebuilding?(this.rebuilding=!1,this.isProcessing=!1,this.$nextTick(()=>{this.rebuildIndex()})):this.backing&&(this.backing=!1,this.isProcessing=!1,this.$nextTick(()=>{this.backupData()}))},dismissError(){this.processingError=null}}};const $u=(0,c.A)(Au,[["render",Ot],["__scopeId","data-v-776bcef4"]]);var Pu=$u,Mu=s(59869),Du=(s(70415),s(73565),s(82006)),Vu=(s(98642),s(81418)),Lu=(s(50333),s(39623)),Eu=(s(29092),s(63003),s(76018)),Iu=(s(96808),s(67819),s(55558)),Uu=(s(10456),s(12687)),Ou=(s(18785),s(97769));const Ru=["onClick"];function Wu(e,t,s,n,o,l){const r=(0,i.g2)("font-awesome-icon"),d=Ou.A;return(0,i.uX)(),(0,i.CE)("div",{class:(0,a.C4)(["custom-select",{"is-open":o.isOpen}]),style:(0,a.Tr)({width:s.width})},[(0,i.Lk)("div",{class:"custom-select-trigger",onClick:t[0]||(t[0]=(...e)=>l.toggleDropdown&&l.toggleDropdown(...e))},[(0,i.Lk)("span",{class:(0,a.C4)(["custom-select-value",{"is-placeholder":!s.modelValue}])},(0,a.v_)(l.displayLabel),3),(0,i.bF)(r,{icon:"chevron-down",class:"custom-select-arrow"})]),(0,i.bF)(C.eB,{name:"dropdown-fade"},{default:(0,i.k6)(()=>[(0,i.bo)((0,i.Lk)("div",{class:"custom-select-dropdown",onClick:t[1]||(t[1]=(0,C.D$)(()=>{},["stop"]))},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(s.options,t=>((0,i.uX)(),(0,i.CE)("div",{key:t.value,class:(0,a.C4)(["custom-select-option",{"is-selected":s.modelValue===t.value}]),onClick:e=>l.selectOption(t.value)},[(0,i.RG)(e.$slots,"option",{option:t},()=>[t.channelType?((0,i.uX)(),(0,i.Wv)(d,{key:0,type:t.channelType,class:(0,a.C4)(["option-icon",t.iconClass])},null,8,["type","class"])):t.icon?((0,i.uX)(),(0,i.Wv)(r,{key:1,icon:t.icon,class:(0,a.C4)(["option-icon",t.iconClass])},null,8,["icon","class"])):(0,i.Q3)("",!0),(0,i.Lk)("span",null,(0,a.v_)(t.label),1)],!0)],10,Ru))),128))],512),[[C.aG,o.isOpen]])]),_:3})],6)}var Nu={name:"CustomSelect",components:{ChannelIcon:Ou.A},props:{modelValue:{type:[String,Number],default:""},options:{type:Array,required:!0},placeholder:{type:String,default:""},width:{type:String,default:"160px"}},emits:["update:modelValue","change"],data(){return{isOpen:!1}},computed:{resolvedPlaceholder(){return this.placeholder||this.$t("common.select")},displayLabel(){const e=this.options.find(e=>e.value===this.modelValue);return e?e.label:this.resolvedPlaceholder}},mounted(){document.addEventListener("click",this.handleClickOutside)},beforeUnmount(){document.removeEventListener("click",this.handleClickOutside)},methods:{toggleDropdown(){this.isOpen=!this.isOpen},selectOption(e){this.$emit("update:modelValue",e),this.$emit("change",e),this.isOpen=!1},handleClickOutside(e){this.$el.contains(e.target)||(this.isOpen=!1)}}};const zu=(0,c.A)(Nu,[["render",Wu],["__scopeId","data-v-b9420432"]]);var Bu=zu;const ju={class:"upload-settings"},Hu={class:"page-header"},qu={class:"first-title"},Xu={class:"header-actions"},Ku={class:"group-header"},Qu={class:"group-title"},Yu={key:0,class:"load-balance-switch"},Gu={class:"switch-label"},Ju={key:0,class:"channel-cards"},Zu=["onMousemove","onMouseleave"],ep={class:"card-header"},tp={class:"card-title"},sp={class:"channel-name"},ip={class:"card-body"},ap={class:"card-info"},np={class:"info-item"},op={class:"info-text"},lp={key:0,class:"info-item"},rp={class:"info-text"},dp={key:1,class:"info-item"},cp=["title"],hp={class:"info-item"},up={class:"info-text"},pp={key:0,class:"info-item"},gp=["title"],mp={class:"info-item"},fp={class:"info-text"},bp={class:"info-item"},yp={class:"info-text"},vp={class:"info-item"},xp={class:"info-text"},kp={class:"info-item"},_p=["title"],wp={key:0,class:"info-item"},Cp=["title"],Sp={key:0,class:"quota-mini"},Fp={class:"quota-text"},Tp={class:"card-actions"},Ap={key:1,class:"empty-tip"},$p={class:"channel-type-option"},Pp={key:0,class:"form-warning",style:{"margin-top":"0"}},Mp=["innerHTML"],Dp={class:"form-warning"},Vp={class:"quota-label"},Lp={class:"quota-status"};function Ep(e,t,s,n,o,l){const r=(0,i.g2)("font-awesome-icon"),d=g.R7,c=Bu,h=K.S2,u=Ou.A,p=Uu.u,m=Iu.qi,f=_.ve,b=Eu.P9,y=Eu.AV,v=Du.xE,k=Lu.WK,S=Vu.lq,F=Du.US,T=w.kZ,A=Mu.MF,$=Mu.TS,P=x.A;return(0,i.bo)(((0,i.uX)(),(0,i.CE)("div",ju,[(0,i.Lk)("div",Hu,[(0,i.Lk)("h3",qu,[(0,i.eW)((0,a.v_)(e.$t("sysUpload.title"))+" ",1),(0,i.bF)(d,{content:e.$t("sysUpload.titleTooltip"),placement:"right"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",class:"help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",Xu,[(0,i.bF)(c,{modelValue:o.channelFilter,"onUpdate:modelValue":t[0]||(t[0]=e=>o.channelFilter=e),options:l.filterOptions,placeholder:e.$t("sysUpload.filterPlaceholder"),width:"160px"},null,8,["modelValue","options","placeholder"]),(0,i.bF)(h,{type:"primary",onClick:t[1]||(t[1]=e=>o.showAddDialog=!0),class:"add-btn"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"plus",style:{"margin-right":"6px"}}),(0,i.eW)(" "+(0,a.v_)(e.$t("sysUpload.addChannel")),1)]),_:1})])]),((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(l.filteredChannels,s=>((0,i.uX)(),(0,i.CE)("div",{key:s.value,class:"channel-group"},[(0,i.Lk)("div",Ku,[(0,i.Lk)("div",Qu,[(0,i.bF)(u,{type:s.value,class:"group-icon"},null,8,["type"]),(0,i.Lk)("span",null,(0,a.v_)(s.label),1),(0,i.bF)(p,{size:"small",type:"info",class:"channel-count"},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(l.getChannelList(s.value).length),1)]),_:2},1024)]),l.hasLoadBalance(s.value)?((0,i.uX)(),(0,i.CE)("div",Yu,[(0,i.Lk)("span",Gu,(0,a.v_)(e.$t("sysUpload.loadBalance")),1),(0,i.bF)(m,{modelValue:l.getSettings(s.value).loadBalance.enabled,"onUpdate:modelValue":e=>l.getSettings(s.value).loadBalance.enabled=e,size:"small",onChange:l.saveSettings},null,8,["modelValue","onUpdate:modelValue","onChange"])])):(0,i.Q3)("",!0)]),l.getChannelList(s.value).length>0?((0,i.uX)(),(0,i.CE)("div",Ju,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(l.getChannelList(s.value),(n,o)=>((0,i.uX)(),(0,i.CE)("div",{key:n.name||o,class:(0,a.C4)(["channel-card",[s.value,{disabled:!n.enabled,fixed:n.fixed}]]),onMousemove:e=>l.handleCardMouseMove(e,s.value,o),onMouseleave:e=>l.handleCardMouseLeave(s.value,o)},[(0,i.Lk)("div",{class:"card-glow",ref_for:!0,ref:`glow-${s.value}-${o}`},null,512),(0,i.Lk)("div",ep,[(0,i.Lk)("div",tp,[(0,i.Lk)("span",sp,(0,a.v_)(n.name||e.$t("sysUpload.unnamedChannel")),1),n.fixed?((0,i.uX)(),(0,i.Wv)(p,{key:0,size:"small",type:"warning"},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysUpload.envVariable")),1)]),_:1})):(0,i.Q3)("",!0)]),(0,i.bF)(m,{modelValue:n.enabled,"onUpdate:modelValue":e=>n.enabled=e,size:"small",onClick:t[2]||(t[2]=(0,C.D$)(()=>{},["stop"])),onChange:l.saveSettings},null,8,["modelValue","onUpdate:modelValue","onChange"])]),(0,i.Lk)("div",ip,[(0,i.Lk)("div",ap,["telegram"===s.value?((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[(0,i.Lk)("div",np,[(0,i.bF)(r,{icon:"robot",class:"info-icon"}),(0,i.Lk)("span",op,"Bot: "+(0,a.v_)(l.maskText(n.botToken)),1)]),n.chatId?((0,i.uX)(),(0,i.CE)("div",lp,[(0,i.bF)(r,{icon:"comments",class:"info-icon"}),(0,i.Lk)("span",rp,"Channel: "+(0,a.v_)(l.maskText(n.chatId)),1)])):(0,i.Q3)("",!0)],64)):"cfr2"===s.value?((0,i.uX)(),(0,i.CE)("div",dp,[(0,i.bF)(r,{icon:"link",class:"info-icon"}),(0,i.Lk)("span",{class:"info-text",title:n.publicUrl},(0,a.v_)(n.publicUrl||e.$t("sysUpload.notSet")),9,cp)])):"s3"===s.value?((0,i.uX)(),(0,i.CE)(i.FK,{key:2},[(0,i.Lk)("div",hp,[(0,i.bF)(r,{icon:"server",class:"info-icon"}),(0,i.Lk)("span",up,(0,a.v_)(n.bucketName||e.$t("sysUpload.notSet")),1)]),n.endpoint?((0,i.uX)(),(0,i.CE)("div",pp,[(0,i.bF)(r,{icon:"link",class:"info-icon"}),(0,i.Lk)("span",{class:"info-text",title:n.endpoint},(0,a.v_)(n.endpoint),9,gp)])):(0,i.Q3)("",!0)],64)):"discord"===s.value?((0,i.uX)(),(0,i.CE)(i.FK,{key:3},[(0,i.Lk)("div",mp,[(0,i.bF)(r,{icon:"robot",class:"info-icon"}),(0,i.Lk)("span",fp,"Bot: "+(0,a.v_)(l.maskText(n.botToken)),1)]),(0,i.Lk)("div",bp,[(0,i.bF)(r,{icon:"hashtag",class:"info-icon"}),(0,i.Lk)("span",yp,"Channel: "+(0,a.v_)(l.maskText(n.channelId)),1)]),n.isNitro?((0,i.uX)(),(0,i.Wv)(p,{key:0,size:"small",type:"success"},{default:(0,i.k6)(()=>[...t[78]||(t[78]=[(0,i.eW)("Nitro",-1)])]),_:1})):(0,i.Q3)("",!0)],64)):"huggingface"===s.value?((0,i.uX)(),(0,i.CE)(i.FK,{key:4},[(0,i.Lk)("div",vp,[(0,i.bF)(r,{icon:"database",class:"info-icon"}),(0,i.Lk)("span",xp,(0,a.v_)(n.repo||e.$t("sysUpload.notSet")),1)]),n.isPrivate?((0,i.uX)(),(0,i.Wv)(p,{key:0,size:"small",type:"warning"},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysUpload.privateRepo")),1)]),_:1})):(0,i.Q3)("",!0)],64)):"webdav"===s.value?((0,i.uX)(),(0,i.CE)(i.FK,{key:5},[(0,i.Lk)("div",kp,[(0,i.bF)(r,{icon:"folder",class:"info-icon"}),(0,i.Lk)("span",{class:"info-text",title:n.baseUrl},(0,a.v_)(n.baseUrl||e.$t("sysUpload.notSet")),9,_p)]),n.publicUrl?((0,i.uX)(),(0,i.CE)("div",wp,[(0,i.bF)(r,{icon:"link",class:"info-icon"}),(0,i.Lk)("span",{class:"info-text",title:n.publicUrl},(0,a.v_)(n.publicUrl),9,Cp)])):(0,i.Q3)("",!0)],64)):(0,i.Q3)("",!0)]),n.quota?.enabled?((0,i.uX)(),(0,i.CE)("div",Sp,[(0,i.bF)(f,{percentage:l.getQuotaPercentage(n),status:l.getQuotaStatus(n),"stroke-width":6},null,8,["percentage","status"]),(0,i.Lk)("span",Fp,(0,a.v_)(l.getQuotaText(n)),1)])):(0,i.Q3)("",!0)]),(0,i.Lk)("div",Tp,[(0,i.bF)(h,{text:"",type:"primary",size:"small",onClick:e=>l.openDetailDialog(s.value,o)},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"eye",style:{"margin-right":"4px"}}),(0,i.eW)((0,a.v_)(e.$t("sysUpload.detail")),1)]),_:1},8,["onClick"]),(0,i.bF)(h,{text:"",type:"primary",size:"small",onClick:e=>l.openEditDialog(s.value,o)},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"edit",style:{"margin-right":"4px"}}),(0,i.eW)((0,a.v_)(e.$t("sysUpload.editBtn")),1)]),_:1},8,["onClick"]),(0,i.bF)(h,{text:"",type:"danger",size:"small",onClick:e=>l.deleteChannel(s.value,o),disabled:n.fixed},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"trash-alt",style:{"margin-right":"4px"}}),(0,i.eW)((0,a.v_)(e.$t("sysUpload.deleteBtn")),1)]),_:1},8,["onClick","disabled"])])],42,Zu))),128))])):((0,i.uX)(),(0,i.CE)("div",Ap,[(0,i.bF)(r,{icon:"inbox",class:"empty-icon"}),(0,i.Lk)("span",null,(0,a.v_)(e.$t("sysUpload.noChannels",{type:s.label})),1)]))]))),128)),(0,i.bF)(T,{modelValue:o.showAddDialog,"onUpdate:modelValue":t[35]||(t[35]=e=>o.showAddDialog=e),title:e.$t("sysUpload.addDialogTitle"),class:"channel-dialog","destroy-on-close":"",onClosed:l.resetAddForm},{footer:(0,i.k6)(()=>[(0,i.bF)(h,{onClick:t[34]||(t[34]=e=>o.showAddDialog=!1)},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysUpload.cancel")),1)]),_:1}),"cfr2"!==o.newChannel.type?((0,i.uX)(),(0,i.Wv)(h,{key:0,type:"primary",onClick:l.confirmAddChannel},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysUpload.confirmAdd")),1)]),_:1},8,["onClick"])):(0,i.Q3)("",!0)]),default:(0,i.k6)(()=>[(0,i.bF)(F,{model:o.newChannel,"label-position":"top",ref:"addForm",rules:l.addRules},{default:(0,i.k6)(()=>[(0,i.bF)(v,{label:e.$t("sysUpload.channelTypeLabel"),prop:"type"},{default:(0,i.k6)(()=>[(0,i.bF)(y,{modelValue:o.newChannel.type,"onUpdate:modelValue":t[3]||(t[3]=e=>o.newChannel.type=e),placeholder:e.$t("sysUpload.channelTypePlaceholder"),style:{width:"100%"},onChange:l.onChannelTypeChange},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.addableChannels,e=>((0,i.uX)(),(0,i.Wv)(b,{key:e.value,label:e.label,value:e.value},{default:(0,i.k6)(()=>[(0,i.Lk)("span",$p,[(0,i.bF)(u,{type:e.value,class:"select-option-icon"},null,8,["type"]),(0,i.Lk)("span",null,(0,a.v_)(e.label),1)])]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue","placeholder","onChange"])]),_:1},8,["label"]),"cfr2"===o.newChannel.type?((0,i.uX)(),(0,i.CE)("div",Pp,[(0,i.bF)(r,{icon:"info-circle",style:{"margin-right":"6px"}}),(0,i.Lk)("span",{innerHTML:e.$t("sysUpload.r2ConfigNote")},null,8,Mp)])):((0,i.uX)(),(0,i.CE)(i.FK,{key:1},[(0,i.bF)(v,{prop:"name"},{label:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysUpload.channelNameLabel"))+" ",1),(0,i.bF)(d,{content:e.$t("sysUpload.channelNameImmutableTip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"exclamation-triangle",class:"inline-warning-icon"})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.name,"onUpdate:modelValue":t[4]||(t[4]=e=>o.newChannel.name=e),placeholder:e.$t("sysUpload.channelNamePlaceholder")},null,8,["modelValue","placeholder"])]),_:1}),"telegram"===o.newChannel.type?((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[(0,i.bF)(v,{label:e.$t("sysUpload.botTokenLabel"),prop:"botToken"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.botToken,"onUpdate:modelValue":t[5]||(t[5]=e=>o.newChannel.botToken=e),type:"password","show-password":"",placeholder:e.$t("sysUpload.botTokenPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),(0,i.bF)(v,{label:e.$t("sysUpload.chatIdLabel"),prop:"chatId"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.chatId,"onUpdate:modelValue":t[6]||(t[6]=e=>o.newChannel.chatId=e),type:"password","show-password":"",placeholder:e.$t("sysUpload.chatIdPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),(0,i.bF)(v,{label:e.$t("sysUpload.proxyDomain")},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.proxyUrl,"onUpdate:modelValue":t[7]||(t[7]=e=>o.newChannel.proxyUrl=e),placeholder:e.$t("sysUpload.proxyDomainPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"])],64)):"s3"===o.newChannel.type?((0,i.uX)(),(0,i.CE)(i.FK,{key:1},[(0,i.bF)(v,{label:e.$t("sysUpload.endpointLabel"),prop:"endpoint"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.endpoint,"onUpdate:modelValue":t[8]||(t[8]=e=>o.newChannel.endpoint=e),placeholder:e.$t("sysUpload.endpointPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),(0,i.bF)(v,null,{label:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysUpload.cdnDomain"))+" ",1),(0,i.bF)(d,{content:e.$t("sysUpload.cdnDomainTip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.cdnDomain,"onUpdate:modelValue":t[9]||(t[9]=e=>o.newChannel.cdnDomain=e),placeholder:e.$t("sysUpload.cdnDomainPlaceholder")},null,8,["modelValue","placeholder"])]),_:1}),(0,i.bF)(v,{label:e.$t("sysUpload.bucketName"),prop:"bucketName"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.bucketName,"onUpdate:modelValue":t[10]||(t[10]=e=>o.newChannel.bucketName=e),placeholder:e.$t("sysUpload.bucketNamePlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),(0,i.bF)(v,{label:e.$t("sysUpload.bucketRegion"),prop:"region"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.region,"onUpdate:modelValue":t[11]||(t[11]=e=>o.newChannel.region=e),placeholder:e.$t("sysUpload.bucketRegionPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),(0,i.bF)(v,{label:e.$t("sysUpload.accessKeyId"),prop:"accessKeyId"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.accessKeyId,"onUpdate:modelValue":t[12]||(t[12]=e=>o.newChannel.accessKeyId=e),type:"password","show-password":"",placeholder:e.$t("sysUpload.accessKeyIdPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),(0,i.bF)(v,{label:e.$t("sysUpload.secretAccessKey"),prop:"secretAccessKey"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.secretAccessKey,"onUpdate:modelValue":t[13]||(t[13]=e=>o.newChannel.secretAccessKey=e),type:"password","show-password":"",placeholder:e.$t("sysUpload.secretAccessKeyPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),(0,i.bF)(v,null,{label:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysUpload.pathStyle"))+" ",1),(0,i.bF)(d,{content:e.$t("sysUpload.pathStyleTip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(m,{modelValue:o.newChannel.pathStyle,"onUpdate:modelValue":t[14]||(t[14]=e=>o.newChannel.pathStyle=e)},null,8,["modelValue"])]),_:1}),(0,i.bF)(v,{label:e.$t("sysUpload.quotaLimit")},{default:(0,i.k6)(()=>[(0,i.bF)(m,{modelValue:o.newChannel.quota.enabled,"onUpdate:modelValue":t[15]||(t[15]=e=>o.newChannel.quota.enabled=e)},null,8,["modelValue"])]),_:1},8,["label"]),o.newChannel.quota?.enabled?((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[(0,i.bF)(v,{label:e.$t("sysUpload.quotaLimitGB")},{default:(0,i.k6)(()=>[(0,i.bF)(S,{modelValue:o.newChannel.quota.limitGB,"onUpdate:modelValue":t[16]||(t[16]=e=>o.newChannel.quota.limitGB=e),min:.1,step:1,precision:1},null,8,["modelValue"])]),_:1},8,["label"]),(0,i.bF)(v,{label:e.$t("sysUpload.quotaThreshold")},{default:(0,i.k6)(()=>[(0,i.bF)(S,{modelValue:o.newChannel.quota.threshold,"onUpdate:modelValue":t[17]||(t[17]=e=>o.newChannel.quota.threshold=e),min:50,max:100,step:5},null,8,["modelValue"])]),_:1},8,["label"])],64)):(0,i.Q3)("",!0)],64)):"discord"===o.newChannel.type?((0,i.uX)(),(0,i.CE)(i.FK,{key:2},[(0,i.bF)(v,{label:e.$t("sysUpload.botTokenLabel"),prop:"botToken"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.botToken,"onUpdate:modelValue":t[18]||(t[18]=e=>o.newChannel.botToken=e),type:"password","show-password":"",placeholder:e.$t("sysUpload.botTokenPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),(0,i.bF)(v,{label:e.$t("sysUpload.channelIdLabel"),prop:"channelId"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.channelId,"onUpdate:modelValue":t[19]||(t[19]=e=>o.newChannel.channelId=e),type:"password","show-password":"",placeholder:e.$t("sysUpload.channelIdPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),(0,i.bF)(v,{label:e.$t("sysUpload.proxyDomain")},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.proxyUrl,"onUpdate:modelValue":t[20]||(t[20]=e=>o.newChannel.proxyUrl=e),placeholder:e.$t("sysUpload.proxyDomainPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),(0,i.bF)(v,null,{label:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysUpload.nitroMember"))+" ",1),(0,i.bF)(d,{content:e.$t("sysUpload.nitroTip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(m,{modelValue:o.newChannel.isNitro,"onUpdate:modelValue":t[21]||(t[21]=e=>o.newChannel.isNitro=e)},null,8,["modelValue"])]),_:1}),(0,i.Lk)("div",Dp,[(0,i.bF)(r,{icon:"exclamation-triangle",style:{"margin-right":"6px"}}),(0,i.eW)(" "+(0,a.v_)(e.$t("sysUpload.discordWarning")),1)])],64)):"huggingface"===o.newChannel.type?((0,i.uX)(),(0,i.CE)(i.FK,{key:3},[(0,i.bF)(v,{label:e.$t("sysUpload.repoName"),prop:"repo"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.repo,"onUpdate:modelValue":t[22]||(t[22]=e=>o.newChannel.repo=e),placeholder:e.$t("sysUpload.repoNamePlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),(0,i.bF)(v,{label:e.$t("sysUpload.accessToken"),prop:"token"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.token,"onUpdate:modelValue":t[23]||(t[23]=e=>o.newChannel.token=e),type:"password","show-password":"",placeholder:e.$t("sysUpload.accessTokenPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),(0,i.bF)(v,null,{label:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysUpload.privateRepo"))+" ",1),(0,i.bF)(d,{content:e.$t("sysUpload.privateRepoTip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(m,{modelValue:o.newChannel.isPrivate,"onUpdate:modelValue":t[24]||(t[24]=e=>o.newChannel.isPrivate=e)},null,8,["modelValue"])]),_:1})],64)):"webdav"===o.newChannel.type?((0,i.uX)(),(0,i.CE)(i.FK,{key:4},[(0,i.bF)(v,{label:e.$t("sysUpload.webdavBaseUrl"),prop:"baseUrl"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.baseUrl,"onUpdate:modelValue":t[25]||(t[25]=e=>o.newChannel.baseUrl=e),placeholder:e.$t("sysUpload.webdavBaseUrlPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),(0,i.bF)(v,{label:e.$t("sysUpload.webdavUsername")},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.username,"onUpdate:modelValue":t[26]||(t[26]=e=>o.newChannel.username=e),placeholder:e.$t("sysUpload.webdavUsernamePlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),(0,i.bF)(v,{label:e.$t("sysUpload.webdavPassword")},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.password,"onUpdate:modelValue":t[27]||(t[27]=e=>o.newChannel.password=e),type:"password","show-password":"",placeholder:e.$t("sysUpload.webdavPasswordPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),(0,i.bF)(v,null,{label:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysUpload.publicUrl"))+" ",1),(0,i.bF)(d,{content:e.$t("sysUpload.webdavPublicUrlTip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.publicUrl,"onUpdate:modelValue":t[28]||(t[28]=e=>o.newChannel.publicUrl=e),placeholder:e.$t("sysUpload.webdavPublicUrlPlaceholder")},null,8,["modelValue","placeholder"])]),_:1}),(0,i.bF)(v,{label:e.$t("sysUpload.webdavHeaders")},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.headersText,"onUpdate:modelValue":t[29]||(t[29]=e=>o.newChannel.headersText=e),type:"textarea",autosize:{minRows:2},placeholder:e.$t("sysUpload.webdavHeadersPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),(0,i.bF)(v,null,{label:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysUpload.webdavCreateDirectory"))+" ",1),(0,i.bF)(d,{content:e.$t("sysUpload.webdavCreateDirectoryTip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(m,{modelValue:o.newChannel.createDirectory,"onUpdate:modelValue":t[30]||(t[30]=e=>o.newChannel.createDirectory=e)},null,8,["modelValue"])]),_:1}),(0,i.bF)(v,{label:e.$t("sysUpload.quotaLimit")},{default:(0,i.k6)(()=>[(0,i.bF)(m,{modelValue:o.newChannel.quota.enabled,"onUpdate:modelValue":t[31]||(t[31]=e=>o.newChannel.quota.enabled=e)},null,8,["modelValue"])]),_:1},8,["label"]),o.newChannel.quota?.enabled?((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[(0,i.bF)(v,{label:e.$t("sysUpload.quotaLimitGB")},{default:(0,i.k6)(()=>[(0,i.bF)(S,{modelValue:o.newChannel.quota.limitGB,"onUpdate:modelValue":t[32]||(t[32]=e=>o.newChannel.quota.limitGB=e),min:.1,step:1,precision:1},null,8,["modelValue"])]),_:1},8,["label"]),(0,i.bF)(v,{label:e.$t("sysUpload.quotaThreshold")},{default:(0,i.k6)(()=>[(0,i.bF)(S,{modelValue:o.newChannel.quota.threshold,"onUpdate:modelValue":t[33]||(t[33]=e=>o.newChannel.quota.threshold=e),min:50,max:100,step:5},null,8,["modelValue"])]),_:1},8,["label"])],64)):(0,i.Q3)("",!0)],64)):(0,i.Q3)("",!0)],64))]),_:1},8,["model","rules"])]),_:1},8,["modelValue","title","onClosed"]),(0,i.bF)(T,{modelValue:o.showDetailDialog,"onUpdate:modelValue":t[37]||(t[37]=e=>o.showDetailDialog=e),title:e.$t("sysUpload.detailDialogTitle",{name:o.currentChannel?.name||""}),class:"channel-dialog",onClosed:l.resetDetailData},{footer:(0,i.k6)(()=>[(0,i.bF)(h,{onClick:t[36]||(t[36]=e=>o.showDetailDialog=!1)},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysUpload.closeBtn")),1)]),_:1}),(0,i.bF)(h,{type:"primary",onClick:l.openEditFromDetail},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysUpload.editBtn")),1)]),_:1},8,["onClick"])]),default:(0,i.k6)(()=>[(0,i.bF)($,{column:1,border:""},{default:(0,i.k6)(()=>[(0,i.bF)(A,{label:e.$t("sysUpload.channelNameDetail")},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(o.currentChannel?.name),1)]),_:1},8,["label"]),(0,i.bF)(A,{label:e.$t("sysUpload.channelTypeDetail")},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(l.getChannelTypeLabel(o.currentChannelType)),1)]),_:1},8,["label"]),(0,i.bF)(A,{label:e.$t("sysUpload.statusLabel")},{default:(0,i.k6)(()=>[(0,i.bF)(p,{type:o.currentChannel?.enabled?"success":"info"},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(o.currentChannel?.enabled?e.$t("sysUpload.enabled"):e.$t("sysUpload.disabled")),1)]),_:1},8,["type"])]),_:1},8,["label"]),o.currentChannel?.fixed?((0,i.uX)(),(0,i.Wv)(A,{key:0,label:e.$t("sysUpload.configSource")},{default:(0,i.k6)(()=>[(0,i.bF)(p,{type:"warning"},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysUpload.envVariable")),1)]),_:1})]),_:1},8,["label"])):(0,i.Q3)("",!0),"telegram"===o.currentChannelType?((0,i.uX)(),(0,i.CE)(i.FK,{key:1},[(0,i.bF)(A,{label:e.$t("sysUpload.botTokenLabel")},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(l.maskText(o.currentChannel?.botToken,10)),1)]),_:1},8,["label"]),(0,i.bF)(A,{label:e.$t("sysUpload.chatIdLabel")},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(l.maskText(o.currentChannel?.chatId,6)),1)]),_:1},8,["label"]),(0,i.bF)(A,{label:e.$t("sysUpload.proxyDomain")},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(o.currentChannel?.proxyUrl||e.$t("sysUpload.notSet")),1)]),_:1},8,["label"])],64)):"cfr2"===o.currentChannelType?((0,i.uX)(),(0,i.Wv)(A,{key:2,label:e.$t("sysUpload.publicUrl")},{default:(0,i.k6)(()=>[(0,i.bF)(k,{"model-value":o.currentChannel?.publicUrl||e.$t("sysUpload.notSet"),readonly:""},null,8,["model-value"])]),_:1},8,["label"])):"s3"===o.currentChannelType?((0,i.uX)(),(0,i.CE)(i.FK,{key:3},[(0,i.bF)(A,{label:e.$t("sysUpload.endpointLabel")},{default:(0,i.k6)(()=>[(0,i.bF)(k,{"model-value":o.currentChannel?.endpoint,readonly:""},null,8,["model-value"])]),_:1},8,["label"]),(0,i.bF)(A,{label:e.$t("sysUpload.cdnDomain")},{default:(0,i.k6)(()=>[(0,i.bF)(k,{"model-value":o.currentChannel?.cdnDomain||e.$t("sysUpload.notSet"),readonly:""},null,8,["model-value"])]),_:1},8,["label"]),(0,i.bF)(A,{label:e.$t("sysUpload.bucketName")},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(o.currentChannel?.bucketName),1)]),_:1},8,["label"]),(0,i.bF)(A,{label:e.$t("sysUpload.bucketRegion")},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(o.currentChannel?.region),1)]),_:1},8,["label"]),(0,i.bF)(A,{label:e.$t("sysUpload.pathStyle")},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(o.currentChannel?.pathStyle?e.$t("sysUpload.isPathStyle"):e.$t("sysUpload.isNotPathStyle")),1)]),_:1},8,["label"])],64)):"discord"===o.currentChannelType?((0,i.uX)(),(0,i.CE)(i.FK,{key:4},[(0,i.bF)(A,{label:e.$t("sysUpload.botTokenLabel")},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(l.maskText(o.currentChannel?.botToken,10)),1)]),_:1},8,["label"]),(0,i.bF)(A,{label:e.$t("sysUpload.channelIdLabel")},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(l.maskText(o.currentChannel?.channelId,6)),1)]),_:1},8,["label"]),(0,i.bF)(A,{label:e.$t("sysUpload.proxyDomain")},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(o.currentChannel?.proxyUrl||e.$t("sysUpload.notSet")),1)]),_:1},8,["label"]),(0,i.bF)(A,{label:e.$t("sysUpload.nitroMember")},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(o.currentChannel?.isNitro?e.$t("sysUpload.isPathStyle"):e.$t("sysUpload.isNotPathStyle")),1)]),_:1},8,["label"])],64)):"huggingface"===o.currentChannelType?((0,i.uX)(),(0,i.CE)(i.FK,{key:5},[(0,i.bF)(A,{label:e.$t("sysUpload.repoName")},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(o.currentChannel?.repo),1)]),_:1},8,["label"]),(0,i.bF)(A,{label:e.$t("sysUpload.privateRepo")},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(o.currentChannel?.isPrivate?e.$t("sysUpload.isPathStyle"):e.$t("sysUpload.isNotPathStyle")),1)]),_:1},8,["label"])],64)):"webdav"===o.currentChannelType?((0,i.uX)(),(0,i.CE)(i.FK,{key:6},[(0,i.bF)(A,{label:e.$t("sysUpload.webdavBaseUrl")},{default:(0,i.k6)(()=>[(0,i.bF)(k,{"model-value":o.currentChannel?.baseUrl,readonly:""},null,8,["model-value"])]),_:1},8,["label"]),(0,i.bF)(A,{label:e.$t("sysUpload.publicUrl")},{default:(0,i.k6)(()=>[(0,i.bF)(k,{"model-value":o.currentChannel?.publicUrl||e.$t("sysUpload.notSet"),readonly:""},null,8,["model-value"])]),_:1},8,["label"]),(0,i.bF)(A,{label:e.$t("sysUpload.webdavUsername")},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(o.currentChannel?.username||e.$t("sysUpload.notSet")),1)]),_:1},8,["label"]),(0,i.bF)(A,{label:e.$t("sysUpload.webdavHeaders")},{default:(0,i.k6)(()=>[(0,i.bF)(k,{"model-value":l.formatHeaders(o.currentChannel?.headers),type:"textarea",autosize:{minRows:2},readonly:""},null,8,["model-value"])]),_:1},8,["label"]),(0,i.bF)(A,{label:e.$t("sysUpload.webdavCreateDirectory")},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(!1!==o.currentChannel?.createDirectory?e.$t("sysUpload.isPathStyle"):e.$t("sysUpload.isNotPathStyle")),1)]),_:1},8,["label"])],64)):(0,i.Q3)("",!0),o.currentChannel?.quota?.enabled?((0,i.uX)(),(0,i.CE)(i.FK,{key:7},[(0,i.bF)(A,{label:e.$t("sysUpload.quotaLimit")},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(o.currentChannel?.quota?.limitGB)+" GB",1)]),_:1},8,["label"]),(0,i.bF)(A,{label:e.$t("sysUpload.quotaThreshold")},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(o.currentChannel?.quota?.threshold)+"%",1)]),_:1},8,["label"]),(0,i.bF)(A,null,{label:(0,i.k6)(()=>[(0,i.Lk)("span",Vp,[(0,i.eW)((0,a.v_)(e.$t("sysUpload.currentUsage"))+" ",1),(0,i.bF)(h,{link:"",type:"primary",onClick:l.refreshQuota,class:"refresh-btn"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"sync-alt",class:(0,a.C4)({"fa-spin":o.quotaLoading})},null,8,["class"])]),_:1},8,["onClick"])])]),default:(0,i.k6)(()=>[(0,i.Lk)("div",Lp,[(0,i.bF)(f,{percentage:l.getQuotaPercentage(o.currentChannel),status:l.getQuotaStatus(o.currentChannel),"stroke-width":16,"text-inside":!0,format:()=>l.getQuotaText(o.currentChannel)},null,8,["percentage","status","format"]),(0,i.Lk)("div",{class:(0,a.C4)(["quota-info",{"quota-warning":l.isQuotaExceeded(o.currentChannel)}])},(0,a.v_)(l.getQuotaStatusText(o.currentChannel)),3)])]),_:1})],64)):(0,i.Q3)("",!0)]),_:1})]),_:1},8,["modelValue","title","onClosed"]),(0,i.bF)(T,{modelValue:o.showEditDialog,"onUpdate:modelValue":t[77]||(t[77]=e=>o.showEditDialog=e),title:e.$t("sysUpload.editDialogTitle",{name:o.editChannel?.name||""}),class:"channel-dialog","destroy-on-close":"",onClosed:l.resetEditData},{footer:(0,i.k6)(()=>[(0,i.bF)(h,{onClick:t[76]||(t[76]=e=>o.showEditDialog=!1)},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysUpload.cancel")),1)]),_:1}),(0,i.bF)(h,{type:"primary",onClick:l.confirmEditChannel},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysUpload.saveChanges")),1)]),_:1},8,["onClick"])]),default:(0,i.k6)(()=>[(0,i.bF)(F,{model:o.editChannel,"label-position":"top",ref:"editForm",rules:l.editRules},{default:(0,i.k6)(()=>[(0,i.bF)(v,{prop:"name"},{label:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysUpload.channelNameLabel"))+" ",1),(0,i.bF)(d,{content:e.$t("sysUpload.channelNameEditDisabledTip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"exclamation-triangle",class:"inline-warning-icon"})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.name,"onUpdate:modelValue":t[38]||(t[38]=e=>o.editChannel.name=e),disabled:""},null,8,["modelValue"])]),_:1}),(0,i.bF)(v,{label:e.$t("sysUpload.enableChannel")},{default:(0,i.k6)(()=>[(0,i.bF)(m,{modelValue:o.editChannel.enabled,"onUpdate:modelValue":t[39]||(t[39]=e=>o.editChannel.enabled=e)},null,8,["modelValue"])]),_:1},8,["label"]),"telegram"===o.currentChannelType?((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[(0,i.bF)(v,{label:e.$t("sysUpload.botTokenLabel"),prop:"botToken"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.botToken,"onUpdate:modelValue":t[40]||(t[40]=e=>o.editChannel.botToken=e),disabled:o.editChannel.fixed,type:"password","show-password":""},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(v,{label:e.$t("sysUpload.chatIdLabel"),prop:"chatId"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.chatId,"onUpdate:modelValue":t[41]||(t[41]=e=>o.editChannel.chatId=e),disabled:o.editChannel.fixed,type:"password","show-password":""},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(v,{label:e.$t("sysUpload.proxyDomain")},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.proxyUrl,"onUpdate:modelValue":t[42]||(t[42]=e=>o.editChannel.proxyUrl=e),placeholder:e.$t("sysUpload.proxyDomainPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"])],64)):"cfr2"===o.currentChannelType?((0,i.uX)(),(0,i.CE)(i.FK,{key:1},[(0,i.bF)(v,{label:e.$t("sysUpload.publicUrl")},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.publicUrl,"onUpdate:modelValue":t[43]||(t[43]=e=>o.editChannel.publicUrl=e)},null,8,["modelValue"])]),_:1},8,["label"]),(0,i.bF)(v,{label:e.$t("sysUpload.quotaLimit")},{default:(0,i.k6)(()=>[(0,i.bF)(m,{modelValue:o.editChannel.quota.enabled,"onUpdate:modelValue":t[44]||(t[44]=e=>o.editChannel.quota.enabled=e),onChange:t[45]||(t[45]=e=>l.onQuotaEnabledChange(e,o.editChannel))},null,8,["modelValue"])]),_:1},8,["label"]),o.editChannel.quota?.enabled?((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[(0,i.bF)(v,{label:e.$t("sysUpload.quotaLimitGB")},{default:(0,i.k6)(()=>[(0,i.bF)(S,{modelValue:o.editChannel.quota.limitGB,"onUpdate:modelValue":t[46]||(t[46]=e=>o.editChannel.quota.limitGB=e),min:.1,step:1,precision:1},null,8,["modelValue"])]),_:1},8,["label"]),(0,i.bF)(v,{label:e.$t("sysUpload.quotaThreshold")},{default:(0,i.k6)(()=>[(0,i.bF)(S,{modelValue:o.editChannel.quota.threshold,"onUpdate:modelValue":t[47]||(t[47]=e=>o.editChannel.quota.threshold=e),min:50,max:100,step:5},null,8,["modelValue"])]),_:1},8,["label"])],64)):(0,i.Q3)("",!0)],64)):"s3"===o.currentChannelType?((0,i.uX)(),(0,i.CE)(i.FK,{key:2},[(0,i.bF)(v,{label:e.$t("sysUpload.endpointLabel"),prop:"endpoint"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.endpoint,"onUpdate:modelValue":t[48]||(t[48]=e=>o.editChannel.endpoint=e),disabled:o.editChannel.fixed},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(v,null,{label:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysUpload.cdnDomain"))+" ",1),(0,i.bF)(d,{content:e.$t("sysUpload.cdnDomainTip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.cdnDomain,"onUpdate:modelValue":t[49]||(t[49]=e=>o.editChannel.cdnDomain=e),placeholder:e.$t("sysUpload.cdnDomainPlaceholder")},null,8,["modelValue","placeholder"])]),_:1}),(0,i.bF)(v,{label:e.$t("sysUpload.bucketName"),prop:"bucketName"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.bucketName,"onUpdate:modelValue":t[50]||(t[50]=e=>o.editChannel.bucketName=e),disabled:o.editChannel.fixed},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(v,{label:e.$t("sysUpload.bucketRegion"),prop:"region"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.region,"onUpdate:modelValue":t[51]||(t[51]=e=>o.editChannel.region=e),disabled:o.editChannel.fixed},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(v,{label:e.$t("sysUpload.accessKeyId"),prop:"accessKeyId"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.accessKeyId,"onUpdate:modelValue":t[52]||(t[52]=e=>o.editChannel.accessKeyId=e),disabled:o.editChannel.fixed,type:"password","show-password":""},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(v,{label:e.$t("sysUpload.secretAccessKey"),prop:"secretAccessKey"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.secretAccessKey,"onUpdate:modelValue":t[53]||(t[53]=e=>o.editChannel.secretAccessKey=e),disabled:o.editChannel.fixed,type:"password","show-password":""},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(v,null,{label:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysUpload.pathStyle"))+" ",1),(0,i.bF)(d,{content:e.$t("sysUpload.pathStyleTip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(m,{modelValue:o.editChannel.pathStyle,"onUpdate:modelValue":t[54]||(t[54]=e=>o.editChannel.pathStyle=e),disabled:o.editChannel.fixed},null,8,["modelValue","disabled"])]),_:1}),(0,i.bF)(v,{label:e.$t("sysUpload.quotaLimit")},{default:(0,i.k6)(()=>[(0,i.bF)(m,{modelValue:o.editChannel.quota.enabled,"onUpdate:modelValue":t[55]||(t[55]=e=>o.editChannel.quota.enabled=e),onChange:t[56]||(t[56]=e=>l.onQuotaEnabledChange(e,o.editChannel))},null,8,["modelValue"])]),_:1},8,["label"]),o.editChannel.quota?.enabled?((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[(0,i.bF)(v,{label:e.$t("sysUpload.quotaLimitGB")},{default:(0,i.k6)(()=>[(0,i.bF)(S,{modelValue:o.editChannel.quota.limitGB,"onUpdate:modelValue":t[57]||(t[57]=e=>o.editChannel.quota.limitGB=e),min:.1,step:1,precision:1},null,8,["modelValue"])]),_:1},8,["label"]),(0,i.bF)(v,{label:e.$t("sysUpload.quotaThreshold")},{default:(0,i.k6)(()=>[(0,i.bF)(S,{modelValue:o.editChannel.quota.threshold,"onUpdate:modelValue":t[58]||(t[58]=e=>o.editChannel.quota.threshold=e),min:50,max:100,step:5},null,8,["modelValue"])]),_:1},8,["label"])],64)):(0,i.Q3)("",!0)],64)):"discord"===o.currentChannelType?((0,i.uX)(),(0,i.CE)(i.FK,{key:3},[(0,i.bF)(v,{label:e.$t("sysUpload.botTokenLabel"),prop:"botToken"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.botToken,"onUpdate:modelValue":t[59]||(t[59]=e=>o.editChannel.botToken=e),disabled:o.editChannel.fixed,type:"password","show-password":""},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(v,{label:e.$t("sysUpload.channelIdLabel"),prop:"channelId"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.channelId,"onUpdate:modelValue":t[60]||(t[60]=e=>o.editChannel.channelId=e),disabled:o.editChannel.fixed,type:"password","show-password":""},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(v,{label:e.$t("sysUpload.proxyDomain")},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.proxyUrl,"onUpdate:modelValue":t[61]||(t[61]=e=>o.editChannel.proxyUrl=e),placeholder:e.$t("sysUpload.proxyDomainPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),(0,i.bF)(v,null,{label:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysUpload.nitroMember"))+" ",1),(0,i.bF)(d,{content:e.$t("sysUpload.nitroTip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(m,{modelValue:o.editChannel.isNitro,"onUpdate:modelValue":t[62]||(t[62]=e=>o.editChannel.isNitro=e)},null,8,["modelValue"])]),_:1})],64)):"huggingface"===o.currentChannelType?((0,i.uX)(),(0,i.CE)(i.FK,{key:4},[(0,i.bF)(v,{label:e.$t("sysUpload.repoName"),prop:"repo"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.repo,"onUpdate:modelValue":t[63]||(t[63]=e=>o.editChannel.repo=e),disabled:o.editChannel.fixed},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(v,{label:e.$t("sysUpload.accessToken"),prop:"token"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.token,"onUpdate:modelValue":t[64]||(t[64]=e=>o.editChannel.token=e),disabled:o.editChannel.fixed,type:"password","show-password":""},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(v,null,{label:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysUpload.privateRepo"))+" ",1),(0,i.bF)(d,{content:e.$t("sysUpload.privateRepoTip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(m,{modelValue:o.editChannel.isPrivate,"onUpdate:modelValue":t[65]||(t[65]=e=>o.editChannel.isPrivate=e)},null,8,["modelValue"])]),_:1})],64)):"webdav"===o.currentChannelType?((0,i.uX)(),(0,i.CE)(i.FK,{key:5},[(0,i.bF)(v,{label:e.$t("sysUpload.webdavBaseUrl"),prop:"baseUrl"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.baseUrl,"onUpdate:modelValue":t[66]||(t[66]=e=>o.editChannel.baseUrl=e),disabled:o.editChannel.fixed},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(v,{label:e.$t("sysUpload.webdavUsername")},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.username,"onUpdate:modelValue":t[67]||(t[67]=e=>o.editChannel.username=e),disabled:o.editChannel.fixed},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(v,{label:e.$t("sysUpload.webdavPassword")},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.password,"onUpdate:modelValue":t[68]||(t[68]=e=>o.editChannel.password=e),disabled:o.editChannel.fixed,type:"password","show-password":""},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(v,null,{label:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysUpload.publicUrl"))+" ",1),(0,i.bF)(d,{content:e.$t("sysUpload.webdavPublicUrlTip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.publicUrl,"onUpdate:modelValue":t[69]||(t[69]=e=>o.editChannel.publicUrl=e),placeholder:e.$t("sysUpload.webdavPublicUrlPlaceholder")},null,8,["modelValue","placeholder"])]),_:1}),(0,i.bF)(v,{label:e.$t("sysUpload.webdavHeaders")},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.headersText,"onUpdate:modelValue":t[70]||(t[70]=e=>o.editChannel.headersText=e),type:"textarea",autosize:{minRows:2},placeholder:e.$t("sysUpload.webdavHeadersPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),(0,i.bF)(v,null,{label:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysUpload.webdavCreateDirectory"))+" ",1),(0,i.bF)(d,{content:e.$t("sysUpload.webdavCreateDirectoryTip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(m,{modelValue:o.editChannel.createDirectory,"onUpdate:modelValue":t[71]||(t[71]=e=>o.editChannel.createDirectory=e)},null,8,["modelValue"])]),_:1}),(0,i.bF)(v,{label:e.$t("sysUpload.quotaLimit")},{default:(0,i.k6)(()=>[(0,i.bF)(m,{modelValue:o.editChannel.quota.enabled,"onUpdate:modelValue":t[72]||(t[72]=e=>o.editChannel.quota.enabled=e),onChange:t[73]||(t[73]=e=>l.onQuotaEnabledChange(e,o.editChannel))},null,8,["modelValue"])]),_:1},8,["label"]),o.editChannel.quota?.enabled?((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[(0,i.bF)(v,{label:e.$t("sysUpload.quotaLimitGB")},{default:(0,i.k6)(()=>[(0,i.bF)(S,{modelValue:o.editChannel.quota.limitGB,"onUpdate:modelValue":t[74]||(t[74]=e=>o.editChannel.quota.limitGB=e),min:.1,step:1,precision:1},null,8,["modelValue"])]),_:1},8,["label"]),(0,i.bF)(v,{label:e.$t("sysUpload.quotaThreshold")},{default:(0,i.k6)(()=>[(0,i.bF)(S,{modelValue:o.editChannel.quota.threshold,"onUpdate:modelValue":t[75]||(t[75]=e=>o.editChannel.quota.threshold=e),min:50,max:100,step:5},null,8,["modelValue"])]),_:1},8,["label"])],64)):(0,i.Q3)("",!0)],64)):(0,i.Q3)("",!0)]),_:1},8,["model","rules"])]),_:1},8,["modelValue","title","onClosed"])])),[[P,o.loading]])}var Ip={components:{ChannelIcon:Ou.A,CustomSelect:Bu},data(){return{channelFilter:"",channels:[{value:"telegram",label:"Telegram"},{value:"cfr2",label:"CloudFlare R2"},{value:"s3",label:"S3"},{value:"discord",label:"Discord"},{value:"huggingface",label:"HuggingFace"},{value:"webdav",label:"WebDAV"}],addableChannels:[{value:"telegram",label:"Telegram"},{value:"cfr2",label:"CloudFlare R2"},{value:"s3",label:"S3"},{value:"discord",label:"Discord"},{value:"huggingface",label:"HuggingFace"},{value:"webdav",label:"WebDAV"}],telegramSettings:{loadBalance:{enabled:!1},channels:[]},cfr2Settings:{channels:[]},s3Settings:{loadBalance:{enabled:!1},channels:[]},discordSettings:{loadBalance:{enabled:!1},channels:[]},huggingfaceSettings:{loadBalance:{enabled:!1},channels:[]},webdavSettings:{loadBalance:{enabled:!1},channels:[]},showAddDialog:!1,showDetailDialog:!1,showEditDialog:!1,currentChannelType:"",currentChannelIndex:-1,currentChannel:null,editChannel:{},newChannel:{type:"",name:"",enabled:!0,botToken:"",chatId:"",proxyUrl:"",endpoint:"",cdnDomain:"",bucketName:"",region:"auto",accessKeyId:"",secretAccessKey:"",pathStyle:!1,quota:{enabled:!1,limitGB:10,threshold:95},channelId:"",isNitro:!1,repo:"",token:"",isPrivate:!1,baseUrl:"",username:"",password:"",publicUrl:"",headersText:"",createDirectory:!0},quotaStats:{},quotaLoading:!1,loading:!1}},computed:{filterOptions(){return[{value:"",label:this.$t("common.all")},...this.channels.map(e=>({value:e.value,label:e.label,channelType:e.value}))]},filteredChannels(){return this.channelFilter?this.channels.filter(e=>e.value===this.channelFilter):this.channels},addRules(){return{type:[{required:!0,message:this.$t("sysUpload.channelTypePlaceholder"),trigger:"change"}],name:[{required:!0,message:this.$t("sysUpload.channelNamePlaceholder"),trigger:"blur"},{pattern:/^[\u4e00-\u9fa5a-zA-Z0-9_-]+$/,message:this.$t("sysUpload.channelNamePlaceholder"),trigger:"blur"}],botToken:[{required:!0,message:this.$t("sysUpload.botTokenPlaceholder"),trigger:"blur"}],chatId:[{required:!0,message:this.$t("sysUpload.chatIdPlaceholder"),trigger:"blur"}],channelId:[{required:!0,message:this.$t("sysUpload.channelIdPlaceholder"),trigger:"blur"}],endpoint:[{required:!0,message:this.$t("sysUpload.endpointPlaceholder"),trigger:"blur"}],bucketName:[{required:!0,message:this.$t("sysUpload.bucketNamePlaceholder"),trigger:"blur"}],region:[{required:!0,message:this.$t("sysUpload.bucketRegionPlaceholder"),trigger:"blur"}],accessKeyId:[{required:!0,message:this.$t("sysUpload.accessKeyIdPlaceholder"),trigger:"blur"}],secretAccessKey:[{required:!0,message:this.$t("sysUpload.secretAccessKeyPlaceholder"),trigger:"blur"}],repo:[{required:!0,message:this.$t("sysUpload.repoNamePlaceholder"),trigger:"blur"}],token:[{required:!0,message:this.$t("sysUpload.accessTokenPlaceholder"),trigger:"blur"}],baseUrl:[{required:!0,message:this.$t("sysUpload.webdavBaseUrlPlaceholder"),trigger:"blur"}]}},editRules(){return{name:[{required:!0,message:this.$t("sysUpload.channelNamePlaceholder"),trigger:"blur"},{pattern:/^[\u4e00-\u9fa5a-zA-Z0-9_-]+$/,message:this.$t("sysUpload.channelNamePlaceholder"),trigger:"blur"}],botToken:[{required:!0,message:this.$t("sysUpload.botTokenPlaceholder"),trigger:"blur"}],chatId:[{required:!0,message:this.$t("sysUpload.chatIdPlaceholder"),trigger:"blur"}],channelId:[{required:!0,message:this.$t("sysUpload.channelIdPlaceholder"),trigger:"blur"}],endpoint:[{required:!0,message:this.$t("sysUpload.endpointPlaceholder"),trigger:"blur"}],bucketName:[{required:!0,message:this.$t("sysUpload.bucketNamePlaceholder"),trigger:"blur"}],region:[{required:!0,message:this.$t("sysUpload.bucketRegionPlaceholder"),trigger:"blur"}],accessKeyId:[{required:!0,message:this.$t("sysUpload.accessKeyIdPlaceholder"),trigger:"blur"}],secretAccessKey:[{required:!0,message:this.$t("sysUpload.secretAccessKeyPlaceholder"),trigger:"blur"}],repo:[{required:!0,message:this.$t("sysUpload.repoNamePlaceholder"),trigger:"blur"}],token:[{required:!0,message:this.$t("sysUpload.accessTokenPlaceholder"),trigger:"blur"}],baseUrl:[{required:!0,message:this.$t("sysUpload.webdavBaseUrlPlaceholder"),trigger:"blur"}]}}},methods:{handleCardMouseMove(e,t,s){const i=e.currentTarget,a=i.getBoundingClientRect(),n=e.clientX-a.left,o=e.clientY-a.top,l=`glow-${t}-${s}`,r=this.$refs[l];r&&r[0]&&(r[0].style.opacity="1",r[0].style.left=`${n}px`,r[0].style.top=`${o}px`)},handleCardMouseLeave(e,t){const s=`glow-${e}-${t}`,i=this.$refs[s];i&&i[0]&&(i[0].style.opacity="0")},getChannelTypeLabel(e){const t=this.channels.find(t=>t.value===e);return t?t.label:e},getChannelList(e){return this.getSettings(e)?.channels||[]},getSettings(e){const t={telegram:this.telegramSettings,cfr2:this.cfr2Settings,s3:this.s3Settings,discord:this.discordSettings,huggingface:this.huggingfaceSettings,webdav:this.webdavSettings};return t[e]},hasLoadBalance(e){return["telegram","s3","discord","huggingface","webdav"].includes(e)},maskText(e,t=4){return e?e.length<=2*t?"****":e.slice(0,t)+"****"+e.slice(-t):this.$t("sysUpload.notSet")},formatHeaders(e){return!e||"object"===typeof e&&0===Object.keys(e).length?this.$t("sysUpload.notSet"):"string"===typeof e?e:JSON.stringify(e,null,2)},headersToText(e){return e?"string"===typeof e?e:JSON.stringify(e,null,2):""},parseHeadersText(e){if(!e||!e.trim())return{};try{const t=JSON.parse(e);return!t||"object"!==typeof t||Array.isArray(t)?null:t}catch(t){return null}},openDetailDialog(e,t){this.currentChannelType=e,this.currentChannelIndex=t,this.currentChannel=this.getChannelList(e)[t],this.showDetailDialog=!0},openEditDialog(e,t){this.currentChannelType=e,this.currentChannelIndex=t;const s=this.getChannelList(e)[t];this.editChannel=JSON.parse(JSON.stringify(s)),"webdav"===e&&(this.editChannel.headersText=this.headersToText(this.editChannel.headers),this.editChannel.createDirectory=!1!==this.editChannel.createDirectory),this.editChannel.quota||(this.editChannel.quota={enabled:!1,limitGB:10,threshold:95}),this.showEditDialog=!0},openEditFromDetail(){this.showDetailDialog=!1,this.openEditDialog(this.currentChannelType,this.currentChannelIndex)},resetAddForm(){this.newChannel={type:"",name:"",enabled:!0,botToken:"",chatId:"",proxyUrl:"",endpoint:"",bucketName:"",region:"auto",accessKeyId:"",secretAccessKey:"",pathStyle:!1,quota:{enabled:!1,limitGB:10,threshold:95},channelId:"",isNitro:!1,repo:"",token:"",isPrivate:!1,baseUrl:"",username:"",password:"",publicUrl:"",headersText:"",createDirectory:!0}},resetDetailData(){this.currentChannel=null},resetEditData(){this.editChannel={}},onChannelTypeChange(){const{type:e,name:t}=this.newChannel;this.newChannel={type:e,name:t,enabled:!0,botToken:"",chatId:"",proxyUrl:"",endpoint:"",cdnDomain:"",bucketName:"",region:"auto",accessKeyId:"",secretAccessKey:"",pathStyle:!1,quota:{enabled:!1,limitGB:10,threshold:95},channelId:"",isNitro:!1,repo:"",token:"",isPrivate:!1,baseUrl:"",username:"",password:"",publicUrl:"",headersText:"",createDirectory:!0}},confirmAddChannel(){this.$refs.addForm.validate(e=>{if(!e)return;const{type:t,name:s}=this.newChannel,i=this.getSettings(t),a=["Telegram_env","R2_env","S3_env","Discord_env","HuggingFace_env","WebDAV_env"];if(a.includes(s))return void this.$message.warning(this.$t("sysUpload.reservedName"));const n=i.channels.some(e=>e.name===s);if(n)return void this.$message.warning(this.$t("sysUpload.duplicateName"));let o={id:i.channels.length+1,name:this.newChannel.name,type:t,savePath:"database",enabled:!0,fixed:!1};if("telegram"===t)Object.assign(o,{botToken:this.newChannel.botToken,chatId:this.newChannel.chatId,proxyUrl:this.newChannel.proxyUrl});else if("s3"===t)Object.assign(o,{endpoint:this.newChannel.endpoint,cdnDomain:this.newChannel.cdnDomain,bucketName:this.newChannel.bucketName,region:this.newChannel.region,accessKeyId:this.newChannel.accessKeyId,secretAccessKey:this.newChannel.secretAccessKey,pathStyle:this.newChannel.pathStyle,quota:{...this.newChannel.quota}});else if("discord"===t)Object.assign(o,{botToken:this.newChannel.botToken,channelId:this.newChannel.channelId,proxyUrl:this.newChannel.proxyUrl,isNitro:this.newChannel.isNitro});else if("huggingface"===t)Object.assign(o,{repo:this.newChannel.repo,token:this.newChannel.token,isPrivate:this.newChannel.isPrivate});else if("webdav"===t){const e=this.parseHeadersText(this.newChannel.headersText);if(null===e)return void this.$message.warning(this.$t("sysUpload.webdavHeadersInvalid"));Object.assign(o,{baseUrl:this.newChannel.baseUrl,username:this.newChannel.username,password:this.newChannel.password,publicUrl:this.newChannel.publicUrl,headers:e,createDirectory:!1!==this.newChannel.createDirectory,quota:{...this.newChannel.quota}})}i.channels.push(o),this.showAddDialog=!1,this.saveSettings()})},confirmEditChannel(){this.$refs.editForm.validate(e=>{if(!e)return;const t=this.getSettings(this.currentChannelType),s=this.currentChannelIndex,i=t.channels[s]?.name||this.editChannel.name,a={...this.editChannel,name:i};if("webdav"===this.currentChannelType){const e=this.parseHeadersText(a.headersText);if(null===e)return void this.$message.warning(this.$t("sysUpload.webdavHeadersInvalid"));a.headers=e,a.createDirectory=!1!==a.createDirectory,delete a.headersText}t.channels[this.currentChannelIndex]=a,this.showEditDialog=!1,this.saveSettings()})},deleteChannel(e,t){const s=this.getChannelList(e)[t];s.fixed?this.$message.warning(this.$t("sysUpload.fixedChannelCannotDelete")):this.$confirm(this.$t("sysUpload.deleteChannelConfirm"),this.$t("common.warning"),{confirmButtonText:this.$t("common.confirm"),cancelButtonText:this.$t("common.cancel"),type:"warning"}).then(()=>{const s=this.getSettings(e);s.channels.splice(t,1),s.channels.forEach((e,t)=>{e.id=t+1}),this.saveSettings()}).catch(()=>{})},saveSettings(){const e={telegram:this.telegramSettings,cfr2:this.cfr2Settings,s3:this.s3Settings,discord:this.discordSettings,huggingface:this.huggingfaceSettings,webdav:this.webdavSettings};(0,Rt.A)("/api/manage/sysConfig/upload",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}).then(()=>{this.$message.success(this.$t("sysOthers.settingsSaved"))})},async refreshQuota(){this.quotaLoading=!0;try{const e=await(0,Rt.A)("/api/manage/quota",{method:"POST"}),t=await e.json();if(t.success)this.quotaStats=t.channelStats||{};else{const e=await(0,Rt.A)("/api/manage/quota"),t=await e.json();t.success&&(this.quotaStats=t.quotaStats||{})}}catch(e){console.error("Failed to refresh quota stats:",e)}finally{this.quotaLoading=!1}},async loadQuotaStats(){try{const e=await(0,Rt.A)("/api/manage/quota"),t=await e.json();t.success&&(this.quotaStats=t.quotaStats||{})}catch(e){console.error("Failed to load quota stats:",e)}},getChannelUsedGB(e){const t=this.quotaStats[e.name];return t?(t.usedMB||0)/1024:0},getQuotaPercentage(e){const t=this.getChannelUsedGB(e),s=e.quota?.limitGB||10,i=t/s*100;return Math.min(100,Math.round(10*i)/10)},getQuotaStatus(e){const t=this.getQuotaPercentage(e),s=e.quota?.threshold||95;return t>=s?"exception":t>=80?"warning":"success"},getQuotaText(e){const t=this.getChannelUsedGB(e),s=e.quota?.limitGB||10;return`${t.toFixed(2)} / ${s} GB`},isQuotaExceeded(e){const t=this.getQuotaPercentage(e),s=e.quota?.threshold||95;return t>=s},getQuotaStatusText(e){const t=this.getQuotaPercentage(e),s=e.quota?.threshold||95;return t>=s?`⚠️ 已达到容量阈值 (${s}%),渠道写入已暂停`:t>=80?"⚡ 容量使用较高,接近阈值":"✓ 容量正常"},async onQuotaEnabledChange(e,t){if(e&&t.name){const e=this.quotaStats[t.name];e||this.$confirm(this.$t("sysUpload.quotaInitConfirm"),this.$t("sysUpload.quotaInitTitle"),{confirmButtonText:this.$t("sysUpload.quotaInitConfirmBtn"),cancelButtonText:this.$t("sysUpload.quotaInitCancelBtn"),type:"info"}).then(async()=>{await this.recalculateQuota()}).catch(()=>{this.$message.info(this.$t("sysUpload.quotaInitLater"))})}},async recalculateQuota(){this.quotaLoading=!0;try{this.$message.info(this.$t("sysUpload.quotaCalculating"));const e=await(0,Rt.A)("/api/manage/quota",{method:"POST"}),t=await e.json();t.success?(this.quotaStats=t.channelStats||{},this.$message.success(this.$t("sysUpload.quotaCalculateSuccess"))):this.$message.error(this.$t("sysUpload.quotaCalculateError")+(t.error||""))}catch(e){console.error("Failed to recalculate quota:",e),this.$message.error(this.$t("sysUpload.quotaCalculateFailed"))}finally{this.quotaLoading=!1}}},mounted(){this.loading=!0,(0,Rt.A)("/api/manage/sysConfig/upload").then(e=>e.json()).then(e=>{this.telegramSettings=e.telegram,e.cfr2&&e.cfr2.channels&&(e.cfr2.channels=e.cfr2.channels.map(e=>({...e,quota:e.quota||{enabled:!1,limitGB:10,threshold:95}}))),this.cfr2Settings=e.cfr2,e.s3&&e.s3.channels&&(e.s3.channels=e.s3.channels.map(e=>({...e,quota:e.quota||{enabled:!1,limitGB:10,threshold:95}}))),this.s3Settings=e.s3,e.discord&&e.discord.channels&&(e.discord.channels=e.discord.channels.map(e=>({...e,proxyUrl:e.proxyUrl||""}))),this.discordSettings=e.discord||{loadBalance:{},channels:[]},e.huggingface&&e.huggingface.channels&&(e.huggingface.channels=e.huggingface.channels.map(e=>({...e,isPrivate:e.isPrivate||!1}))),this.huggingfaceSettings=e.huggingface||{loadBalance:{},channels:[]},e.webdav&&e.webdav.channels&&(e.webdav.channels=e.webdav.channels.map(e=>({...e,username:e.username||"",password:e.password||"",publicUrl:e.publicUrl||"",headers:e.headers||{},createDirectory:!1!==e.createDirectory,quota:e.quota||{enabled:!1,limitGB:10,threshold:95}}))),this.webdavSettings=e.webdav||{loadBalance:{},channels:[]},this.loadQuotaStats()}).finally(()=>{this.loading=!1})}};const Up=(0,c.A)(Ip,[["render",Ep],["__scopeId","data-v-0082a519"]]);var Op=Up,Rp=s(98469);s(49187);const Wp=["aria-label"],Np={class:"save-text"};function zp(e,t,s,n,o,l){const r=(0,i.g2)("font-awesome-icon");return(0,i.uX)(),(0,i.Wv)(C.eB,{name:"fade-up"},{default:(0,i.k6)(()=>[(0,i.bo)((0,i.Lk)("div",{class:(0,a.C4)(["floating-save-btn",{"is-loading":s.loading}]),onClick:t[0]||(t[0]=(...e)=>l.handleClick&&l.handleClick(...e))},[s.dirty?((0,i.uX)(),(0,i.CE)("span",{key:0,class:"unsaved-dot",role:"img","aria-label":e.$t("floatingSave.unsaved")},null,8,Wp)):(0,i.Q3)("",!0),s.loading?((0,i.uX)(),(0,i.Wv)(r,{key:1,icon:"spinner",spin:""})):((0,i.uX)(),(0,i.Wv)(r,{key:2,icon:"save"})),(0,i.Lk)("span",Np,(0,a.v_)(s.loading?e.$t("floatingSave.saving"):e.$t("floatingSave.save")),1)],2),[[C.aG,o.visible]])]),_:1})}var Bp={name:"FloatingSaveButton",emits:["click"],props:{dirty:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},show:{type:Boolean,default:!0}},data(){return{visible:!1,visibilityTimer:null}},watch:{show:{immediate:!0,handler(e){clearTimeout(this.visibilityTimer),e?this.visibilityTimer=setTimeout(()=>{this.visible=!0},600):this.visible=!1}}},beforeUnmount(){clearTimeout(this.visibilityTimer)},methods:{handleClick(){this.loading||this.$emit("click")}}};const jp=(0,c.A)(Bp,[["render",zp],["__scopeId","data-v-9ebe7158"]]);var Hp=jp,qp=s(84757);s(5802),s(64752),s(38736);const Xp={class:"security-settings"},Kp={class:"first-settings"},Qp={class:"first-title"},Yp={class:"second-title"},Gp={style:{display:"flex",gap:"8px",width:"100%"}},Jp={class:"second-title"},Zp={style:{display:"flex",gap:"8px",width:"100%"}},eg={class:"second-title token-title"},tg={class:"token-actions"},sg={class:"token-table-container"},ig={class:"table-cell-content"},ag={class:"table-cell-content"},ng={class:"token-display"},og={class:"table-cell-content"},lg={class:"table-cell-content"},rg={class:"table-cell-content"},dg={class:"table-cell-content"},cg={class:"table-cell-content action-buttons"},hg={class:"first-settings"},ug={class:"first-title"},pg={class:"second-title"},gg={class:"second-title"},mg={class:"query-param-list"},fg={class:"query-param-list"},bg={class:"first-settings"},yg={class:"first-title"},vg={class:"second-title"},xg={class:"second-title"},kg={class:"second-title"},_g={class:"second-title"},wg={class:"form-item-hint"},Cg={class:"form-item-hint"},Sg={style:{display:"flex",gap:"10px",width:"100%"}},Fg={class:"dialog-footer"},Tg={style:{display:"flex",gap:"10px",width:"100%"}},Ag={class:"dialog-footer"},$g={class:"token-result"},Pg={style:{"margin-bottom":"15px",color:"#e6a23c"}},Mg={class:"dialog-footer"};function Dg(e,t,s,n,o,l){const r=Lu.WK,d=Rp.dI,c=Du.xE,h=Du.US,u=(0,i.g2)("font-awesome-icon"),p=K.S2,m=qp.o8,f=Uu.u,b=qp.Up,y=g.R7,v=Iu.qi,k=Eu.P9,_=Eu.AV,S=Vu.lq,F=Hp,T=Rp.o5,A=w.kZ,$=x.A;return(0,i.bo)(((0,i.uX)(),(0,i.CE)("div",Xp,[(0,i.Lk)("div",Kp,[(0,i.Lk)("h3",Qp,(0,a.v_)(e.$t("sysSecurity.authManagement")),1),(0,i.Lk)("h4",Yp,(0,a.v_)(e.$t("sysSecurity.userAuth")),1),(0,i.bF)(h,{model:o.authSettings.user,disabled:o.saving,rules:l.userPassRules,ref:"userPassForm","label-width":"120px"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{label:e.$t("sysSecurity.uploadPassword"),prop:"authCode"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",Gp,[(0,i.bF)(r,{modelValue:o.authSettings.user.authCode,"onUpdate:modelValue":t[0]||(t[0]=e=>o.authSettings.user.authCode=e),type:"password","show-password":"",onInput:l.handleUserPassInput,autocomplete:"new-password",placeholder:o.authSettings.user._hasPassword?e.$t("sysSecurity.passwordUnchanged"):"",disabled:o.clearUserPassword},null,8,["modelValue","onInput","placeholder","disabled"]),o.authSettings.user._hasPassword?((0,i.uX)(),(0,i.Wv)(d,{key:0,modelValue:o.clearUserPassword,"onUpdate:modelValue":t[1]||(t[1]=e=>o.clearUserPassword=e),onChange:l.handleClearUserPassword},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysSecurity.clearPassword")),1)]),_:1},8,["modelValue","onChange"])):(0,i.Q3)("",!0)])]),_:1},8,["label"]),(0,i.bF)(C.eB,{name:"fade-slide",mode:"out-in"},{default:(0,i.k6)(()=>[o.showUserPassConfirm?((0,i.uX)(),(0,i.Wv)(c,{label:e.$t("sysSecurity.confirmPassword"),prop:"confirmNewUserPassword",key:"user-confirm"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{modelValue:o.authSettings.user.confirmNewUserPassword,"onUpdate:modelValue":t[2]||(t[2]=e=>o.authSettings.user.confirmNewUserPassword=e),type:"password","show-password":"",autocomplete:"new-password"},null,8,["modelValue"])]),_:1},8,["label"])):(0,i.Q3)("",!0)]),_:1})]),_:1},8,["model","disabled","rules"]),(0,i.Lk)("h4",Jp,(0,a.v_)(e.$t("sysSecurity.adminAuth")),1),(0,i.bF)(h,{model:o.authSettings.admin,disabled:o.saving,rules:l.adminPassRules,ref:"adminPassForm","label-width":"120px"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{label:e.$t("sysSecurity.adminUsername"),prop:"adminUsername"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{modelValue:o.authSettings.admin.adminUsername,"onUpdate:modelValue":t[3]||(t[3]=e=>o.authSettings.admin.adminUsername=e),autocomplete:"new-password",disabled:o.clearAdminPassword},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(c,{label:e.$t("sysSecurity.adminPassword"),prop:"adminPassword"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",Zp,[(0,i.bF)(r,{modelValue:o.authSettings.admin.adminPassword,"onUpdate:modelValue":t[4]||(t[4]=e=>o.authSettings.admin.adminPassword=e),type:"password","show-password":"",onInput:l.handleAdminPassInput,autocomplete:"new-password",placeholder:o.authSettings.admin._hasPassword?e.$t("sysSecurity.passwordUnchanged"):"",disabled:o.clearAdminPassword},null,8,["modelValue","onInput","placeholder","disabled"]),o.authSettings.admin._hasPassword?((0,i.uX)(),(0,i.Wv)(d,{key:0,modelValue:o.clearAdminPassword,"onUpdate:modelValue":t[5]||(t[5]=e=>o.clearAdminPassword=e),onChange:l.handleClearAdminPassword},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysSecurity.clearPassword")),1)]),_:1},8,["modelValue","onChange"])):(0,i.Q3)("",!0)])]),_:1},8,["label"]),(0,i.bF)(C.eB,{name:"fade-slide",mode:"out-in"},{default:(0,i.k6)(()=>[o.showAdminPassConfirm?((0,i.uX)(),(0,i.Wv)(c,{label:e.$t("sysSecurity.confirmPassword"),prop:"confirmNewAdminPassword",key:"admin-confirm"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{modelValue:o.authSettings.admin.confirmNewAdminPassword,"onUpdate:modelValue":t[6]||(t[6]=e=>o.authSettings.admin.confirmNewAdminPassword=e),type:"password","show-password":"",autocomplete:"new-password"},null,8,["modelValue"])]),_:1},8,["label"])):(0,i.Q3)("",!0)]),_:1})]),_:1},8,["model","disabled","rules"]),(0,i.Lk)("h4",eg,[(0,i.eW)((0,a.v_)(e.$t("sysSecurity.apiTokenManagement"))+" ",1),(0,i.Lk)("a",tg,[(0,i.bF)(p,{type:"primary",size:"small",onClick:t[7]||(t[7]=e=>o.showCreateTokenDialog=!0),circle:""},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"plus"})]),_:1})])]),(0,i.Lk)("div",sg,[(0,i.bo)(((0,i.uX)(),(0,i.Wv)(b,{data:o.apiTokens,class:"token-table"},{default:(0,i.k6)(()=>[(0,i.bF)(m,{prop:"name",label:e.$t("sysSecurity.tokenName"),"header-align":"center"},{default:(0,i.k6)(e=>[(0,i.Lk)("div",ig,(0,a.v_)(e.row.name),1)]),_:1},8,["label"]),(0,i.bF)(m,{prop:"token",label:e.$t("sysSecurity.tokenValue"),"header-align":"center"},{default:(0,i.k6)(e=>[(0,i.Lk)("div",ag,[(0,i.Lk)("span",ng,(0,a.v_)(e.row.token),1)])]),_:1},8,["label"]),(0,i.bF)(m,{prop:"permissions",label:e.$t("sysSecurity.permissions"),"header-align":"center"},{default:(0,i.k6)(e=>[(0,i.Lk)("div",og,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.row.permissions,e=>((0,i.uX)(),(0,i.Wv)(f,{key:e,size:"small",class:"permission-tag"},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(l.getPermissionText(e)),1)]),_:2},1024))),128))])]),_:1},8,["label"]),(0,i.bF)(m,{prop:"createdAt",label:e.$t("sysSecurity.createdAt"),"header-align":"center"},{default:(0,i.k6)(e=>[(0,i.Lk)("div",lg,(0,a.v_)(l.formatDate(e.row.createdAt)),1)]),_:1},8,["label"]),(0,i.bF)(m,{label:e.$t("sysSecurity.status"),"header-align":"center",width:"90"},{default:(0,i.k6)(e=>[(0,i.Lk)("div",rg,[(0,i.bF)(f,{type:"active"===l.getTokenStatus(e.row.expiresAt).status?"success":"danger",size:"small"},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(l.getTokenStatus(e.row.expiresAt).label),1)]),_:2},1032,["type"])])]),_:1},8,["label"]),(0,i.bF)(m,{label:e.$t("sysSecurity.expiresAt"),"header-align":"center"},{default:(0,i.k6)(e=>[(0,i.Lk)("div",dg,(0,a.v_)(l.getTokenStatus(e.row.expiresAt).expiresText),1)]),_:1},8,["label"]),(0,i.bF)(m,{label:e.$t("sysSecurity.operation"),fixed:"right","header-align":"center"},{default:(0,i.k6)(t=>[(0,i.Lk)("div",cg,[(0,i.bF)(p,{class:"action-button",size:"small",onClick:e=>l.editToken(t.row)},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysSecurity.editBtn")),1)]),_:1},8,["onClick"]),(0,i.bF)(p,{class:"action-button",size:"small",type:"danger",onClick:e=>l.deleteToken(t.row.id)},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysSecurity.deleteBtn")),1)]),_:1},8,["onClick"])])]),_:1},8,["label"])]),_:1},8,["data"])),[[$,o.tokenLoading]])])]),(0,i.Lk)("div",hg,[(0,i.Lk)("h3",ug,(0,a.v_)(e.$t("sysSecurity.uploadManagement")),1),(0,i.Lk)("h4",pg,[(0,i.eW)((0,a.v_)(e.$t("sysSecurity.imageReview"))+" ",1),(0,i.bF)(y,{content:e.$t("sysSecurity.imageReviewTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"question-circle",style:{"margin-left":"5px",cursor:"pointer"}})]),_:1},8,["content"])]),(0,i.bF)(h,{model:o.uploadSettings.moderate,"label-width":"120px",disabled:o.saving},{default:(0,i.k6)(()=>[(0,i.bF)(c,{label:e.$t("sysSecurity.enableReview")},{default:(0,i.k6)(()=>[(0,i.bF)(v,{modelValue:o.uploadSettings.moderate.enabled,"onUpdate:modelValue":t[8]||(t[8]=e=>o.uploadSettings.moderate.enabled=e)},null,8,["modelValue"])]),_:1},8,["label"]),(0,i.bF)(c,{label:e.$t("sysSecurity.reviewChannel")},{default:(0,i.k6)(()=>[(0,i.bF)(_,{modelValue:o.uploadSettings.moderate.channel,"onUpdate:modelValue":t[9]||(t[9]=e=>o.uploadSettings.moderate.channel=e),placeholder:e.$t("sysSecurity.reviewChannelPlaceholder")},{default:(0,i.k6)(()=>[(0,i.bF)(k,{label:"moderatecontent.com",value:"moderatecontent.com"}),(0,i.bF)(k,{label:"nsfwjs",value:"nsfwjs"})]),_:1},8,["modelValue","placeholder"])]),_:1},8,["label"]),"moderatecontent.com"===o.uploadSettings.moderate.channel?((0,i.uX)(),(0,i.Wv)(c,{key:0,label:e.$t("sysSecurity.apiKey")},{default:(0,i.k6)(()=>[(0,i.bF)(r,{modelValue:o.uploadSettings.moderate.moderateContentApiKey,"onUpdate:modelValue":t[10]||(t[10]=e=>o.uploadSettings.moderate.moderateContentApiKey=e)},null,8,["modelValue"])]),_:1},8,["label"])):(0,i.Q3)("",!0),"nsfwjs"===o.uploadSettings.moderate.channel?((0,i.uX)(),(0,i.Wv)(c,{key:1,label:e.$t("sysSecurity.apiPath")},{default:(0,i.k6)(()=>[(0,i.bF)(r,{modelValue:o.uploadSettings.moderate.nsfwApiPath,"onUpdate:modelValue":t[11]||(t[11]=e=>o.uploadSettings.moderate.nsfwApiPath=e),placeholder:"https://nsfwjs.your.domain"},null,8,["modelValue"])]),_:1},8,["label"])):(0,i.Q3)("",!0)]),_:1},8,["model","disabled"]),(0,i.Lk)("h4",gg,[(0,i.eW)((0,a.v_)(e.$t("sysSecurity.ipQuery"))+" ",1),(0,i.bF)(y,{content:e.$t("sysSecurity.ipQueryTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"question-circle",style:{"margin-left":"5px",cursor:"pointer"}})]),_:1},8,["content"])]),(0,i.bF)(h,{model:o.uploadSettings.ipQuery,"label-width":"120px",disabled:o.saving},{default:(0,i.k6)(()=>[(0,i.bF)(c,{label:e.$t("sysSecurity.enableIpQuery")},{default:(0,i.k6)(()=>[(0,i.bF)(v,{modelValue:o.uploadSettings.ipQuery.enabled,"onUpdate:modelValue":t[12]||(t[12]=e=>o.uploadSettings.ipQuery.enabled=e)},null,8,["modelValue"])]),_:1},8,["label"]),(0,i.bF)(c,{label:e.$t("sysSecurity.ipQueryChannel")},{default:(0,i.k6)(()=>[(0,i.bF)(_,{modelValue:o.uploadSettings.ipQuery.channel,"onUpdate:modelValue":t[13]||(t[13]=e=>o.uploadSettings.ipQuery.channel=e),placeholder:e.$t("sysSecurity.ipQueryChannelPlaceholder")},{default:(0,i.k6)(()=>[(0,i.bF)(k,{label:e.$t("sysSecurity.customApi"),value:"customApi"},null,8,["label"])]),_:1},8,["modelValue","placeholder"])]),_:1},8,["label"]),"customApi"===o.uploadSettings.ipQuery.channel?((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[(0,i.bF)(c,{label:e.$t("sysSecurity.apiPath")},{default:(0,i.k6)(()=>[(0,i.bF)(r,{modelValue:o.uploadSettings.ipQuery.customApi.url,"onUpdate:modelValue":t[14]||(t[14]=e=>o.uploadSettings.ipQuery.customApi.url=e),placeholder:"https://api.example.com/ip"},null,8,["modelValue"])]),_:1},8,["label"]),(0,i.bF)(c,{label:e.$t("sysSecurity.queryParams")},{default:(0,i.k6)(()=>[(0,i.Lk)("div",mg,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.uploadSettings.ipQuery.customApi.params,(t,s)=>((0,i.uX)(),(0,i.CE)("div",{key:s,class:"query-param-row"},[(0,i.bF)(r,{modelValue:t.key,"onUpdate:modelValue":e=>t.key=e,placeholder:e.$t("sysSecurity.paramNamePlaceholder")},null,8,["modelValue","onUpdate:modelValue","placeholder"]),(0,i.bF)(r,{modelValue:t.value,"onUpdate:modelValue":e=>t.value=e,placeholder:e.$t("sysSecurity.paramValuePlaceholder")},null,8,["modelValue","onUpdate:modelValue","placeholder"]),(0,i.bF)(p,{type:"danger",plain:"",circle:"",onClick:e=>l.removeIpQueryParam(s),disabled:o.uploadSettings.ipQuery.customApi.params.length<=1},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"trash-alt"})]),_:1},8,["onClick","disabled"])]))),128)),(0,i.bF)(p,{type:"primary",plain:"",onClick:l.addIpQueryParam},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"plus"}),(0,i.Lk)("span",null,(0,a.v_)(e.$t("sysSecurity.addQueryParam")),1)]),_:1},8,["onClick"])])]),_:1},8,["label"]),(0,i.bF)(c,null,{label:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysSecurity.responseFields"))+" ",1),(0,i.bF)(y,{content:e.$t("sysSecurity.responseFieldsTip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"question-circle",style:{"margin-left":"5px",cursor:"pointer"}})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.Lk)("div",fg,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.uploadSettings.ipQuery.customApi.responseFields,(t,s)=>((0,i.uX)(),(0,i.CE)("div",{key:s,class:"response-field-row"},[(0,i.bF)(r,{modelValue:o.uploadSettings.ipQuery.customApi.responseFields[s],"onUpdate:modelValue":e=>o.uploadSettings.ipQuery.customApi.responseFields[s]=e,placeholder:e.$t("sysSecurity.responseFieldPathPlaceholder")},null,8,["modelValue","onUpdate:modelValue","placeholder"]),(0,i.bF)(p,{plain:"",circle:"",onClick:e=>l.moveIpQueryResponseField(s,-1),disabled:0===s},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"arrow-up"})]),_:1},8,["onClick","disabled"]),(0,i.bF)(p,{plain:"",circle:"",onClick:e=>l.moveIpQueryResponseField(s,1),disabled:s===o.uploadSettings.ipQuery.customApi.responseFields.length-1},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"arrow-down"})]),_:1},8,["onClick","disabled"]),(0,i.bF)(p,{type:"danger",plain:"",circle:"",onClick:e=>l.removeIpQueryResponseField(s)},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"trash-alt"})]),_:1},8,["onClick"])]))),128)),(0,i.bF)(p,{type:"primary",plain:"",onClick:l.addIpQueryResponseField},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"plus"}),(0,i.Lk)("span",null,(0,a.v_)(e.$t("sysSecurity.addResponseField")),1)]),_:1},8,["onClick"])])]),_:1})],64)):(0,i.Q3)("",!0)]),_:1},8,["model","disabled"])]),(0,i.Lk)("div",bg,[(0,i.Lk)("h3",yg,(0,a.v_)(e.$t("sysSecurity.accessManagement")),1),(0,i.Lk)("h4",vg,(0,a.v_)(e.$t("sysSecurity.domainFilter")),1),(0,i.bF)(h,{model:o.accessSettings,"label-width":"120px",disabled:o.saving},{default:(0,i.k6)(()=>[(0,i.bF)(c,null,{label:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysSecurity.allowedDomains"))+" ",1),(0,i.bF)(y,{content:e.$t("sysSecurity.allowedDomainsTooltip"),placement:"top","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"question-circle",style:{"margin-left":"5px",cursor:"pointer"}})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(r,{modelValue:o.accessSettings.allowedDomains,"onUpdate:modelValue":t[15]||(t[15]=e=>o.accessSettings.allowedDomains=e)},null,8,["modelValue"])]),_:1})]),_:1},8,["model","disabled"]),(0,i.Lk)("h4",xg,(0,a.v_)(e.$t("sysSecurity.whiteListMode")),1),(0,i.bF)(h,{model:o.accessSettings,rules:l.accessRules,ref:"accessForm","label-width":"120px",disabled:o.saving},{default:(0,i.k6)(()=>[(0,i.bF)(c,null,{label:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysSecurity.enableWhiteList"))+" ",1),(0,i.bF)(y,{content:e.$t("sysSecurity.enableWhiteListTooltip"),placement:"top","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"question-circle",style:{"margin-left":"5px",cursor:"pointer"}})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(v,{modelValue:o.accessSettings.whiteListMode,"onUpdate:modelValue":t[16]||(t[16]=e=>o.accessSettings.whiteListMode=e)},null,8,["modelValue"])]),_:1})]),_:1},8,["model","rules","disabled"]),(0,i.Lk)("h4",kg,(0,a.v_)(e.$t("sysSecurity.imageTransform")),1),(0,i.bF)(h,{model:o.accessSettings,rules:l.accessRules,ref:"imageTransformForm","label-width":"120px",disabled:o.saving},{default:(0,i.k6)(()=>[(0,i.bF)(c,null,{label:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysSecurity.enableImageTransform"))+" ",1),(0,i.bF)(y,{content:e.$t("sysSecurity.enableImageTransformTooltip"),placement:"top","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"question-circle",style:{"margin-left":"5px",cursor:"pointer"}})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(v,{modelValue:o.accessSettings.imageTransformEnabled,"onUpdate:modelValue":t[17]||(t[17]=e=>o.accessSettings.imageTransformEnabled=e)},null,8,["modelValue"])]),_:1}),o.accessSettings.imageTransformEnabled?((0,i.uX)(),(0,i.Wv)(c,{key:0,prop:"imageTransformAllowedSizes"},{label:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysSecurity.imageTransformAllowedSizes"))+" ",1),(0,i.bF)(y,{content:e.$t("sysSecurity.imageTransformAllowedSizesHint"),placement:"top","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"question-circle",style:{"margin-left":"5px",cursor:"pointer"}})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(r,{modelValue:o.accessSettings.imageTransformAllowedSizes,"onUpdate:modelValue":t[18]||(t[18]=e=>o.accessSettings.imageTransformAllowedSizes=e),placeholder:e.$t("sysSecurity.imageTransformAllowedSizesPlaceholder")},null,8,["modelValue","placeholder"])]),_:1})):(0,i.Q3)("",!0)]),_:1},8,["model","rules","disabled"]),(0,i.Lk)("h4",_g,(0,a.v_)(e.$t("sysSecurity.sessionSecurityPolicy")),1),(0,i.bF)(h,{model:o.accessSettings,"label-width":"120px",disabled:o.saving},{default:(0,i.k6)(()=>[(0,i.bF)(c,null,{label:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysSecurity.secureMode"))+" ",1),(0,i.bF)(y,{content:e.$t("sysSecurity.secureModeTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"question-circle",style:{"margin-left":"5px",cursor:"pointer"}})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(v,{modelValue:o.accessSettings.sessionSecure,"onUpdate:modelValue":t[19]||(t[19]=e=>o.accessSettings.sessionSecure=e)},null,8,["modelValue"])]),_:1}),(0,i.bF)(c,{label:e.$t("sysSecurity.userSessionMaxAge"),prop:"userSessionMaxAge"},{default:(0,i.k6)(()=>[(0,i.bF)(S,{modelValue:o.accessSettings.userSessionMaxAge,"onUpdate:modelValue":t[20]||(t[20]=e=>o.accessSettings.userSessionMaxAge=e),min:1,max:3650,step:1,precision:0,"controls-position":"right"},null,8,["modelValue"]),(0,i.Lk)("span",wg,(0,a.v_)(e.$t("sysSecurity.sessionMaxAgeUnit")),1)]),_:1},8,["label"]),(0,i.bF)(c,{label:e.$t("sysSecurity.adminSessionMaxAge"),prop:"adminSessionMaxAge"},{default:(0,i.k6)(()=>[(0,i.bF)(S,{modelValue:o.accessSettings.adminSessionMaxAge,"onUpdate:modelValue":t[21]||(t[21]=e=>o.accessSettings.adminSessionMaxAge=e),min:1,max:3650,step:1,precision:0,"controls-position":"right"},null,8,["modelValue"]),(0,i.Lk)("span",Cg,(0,a.v_)(e.$t("sysSecurity.sessionMaxAgeUnit")),1)]),_:1},8,["label"])]),_:1},8,["model","disabled"])]),(0,i.bF)(F,{show:!o.loading,loading:o.saving,dirty:e.hasUnsavedChanges,onClick:l.saveSettings},null,8,["show","loading","dirty","onClick"]),(0,i.bF)(A,{modelValue:o.showCreateTokenDialog,"onUpdate:modelValue":t[29]||(t[29]=e=>o.showCreateTokenDialog=e),title:e.$t("sysSecurity.createTokenTitle"),width:l.dialogWidth},{footer:(0,i.k6)(()=>[(0,i.Lk)("span",Fg,[(0,i.bF)(p,{onClick:t[28]||(t[28]=e=>o.showCreateTokenDialog=!1)},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("common.cancel")),1)]),_:1}),(0,i.bF)(p,{type:"primary",onClick:l.createToken},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysSecurity.createBtn")),1)]),_:1},8,["onClick"])])]),default:(0,i.k6)(()=>[(0,i.bF)(h,{model:o.newToken,rules:l.tokenRules,ref:"tokenForm","label-width":"100px"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{label:e.$t("sysSecurity.tokenNameLabel"),prop:"name"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{modelValue:o.newToken.name,"onUpdate:modelValue":t[22]||(t[22]=e=>o.newToken.name=e),placeholder:e.$t("sysSecurity.tokenNamePlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),(0,i.bF)(c,{label:e.$t("sysSecurity.permissionsLabel"),prop:"permissions"},{default:(0,i.k6)(()=>[(0,i.bF)(T,{modelValue:o.newToken.permissions,"onUpdate:modelValue":t[23]||(t[23]=e=>o.newToken.permissions=e)},{default:(0,i.k6)(()=>[(0,i.bF)(d,{label:"upload"},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysSecurity.permUpload")),1)]),_:1}),(0,i.bF)(d,{label:"delete"},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysSecurity.permDelete")),1)]),_:1}),(0,i.bF)(d,{label:"list"},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysSecurity.permList")),1)]),_:1}),(0,i.bF)(d,{label:"manage"},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysSecurity.permManage")),1)]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["label"]),(0,i.bF)(c,{label:e.$t("sysSecurity.neverExpire")},{default:(0,i.k6)(()=>[(0,i.bF)(v,{modelValue:o.newToken.neverExpire,"onUpdate:modelValue":t[24]||(t[24]=e=>o.newToken.neverExpire=e),onChange:l.onCreateNeverExpireChange},null,8,["modelValue","onChange"])]),_:1},8,["label"]),o.newToken.neverExpire?(0,i.Q3)("",!0):((0,i.uX)(),(0,i.Wv)(c,{key:0,label:e.$t("sysSecurity.validPeriod"),prop:"expirationValue"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",Sg,[(0,i.bF)(S,{modelValue:o.newToken.expirationValue,"onUpdate:modelValue":t[25]||(t[25]=e=>o.newToken.expirationValue=e),min:1,step:1,"controls-position":"right",style:{flex:"1"}},null,8,["modelValue"]),(0,i.bF)(_,{modelValue:o.newToken.expirationUnit,"onUpdate:modelValue":t[26]||(t[26]=e=>o.newToken.expirationUnit=e),style:{width:"100px"}},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.timeUnitOptions,t=>((0,i.uX)(),(0,i.Wv)(k,{key:t.value,label:e.$t(t.labelKey),value:t.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])])]),_:1},8,["label"])),o.newToken.neverExpire?(0,i.Q3)("",!0):((0,i.uX)(),(0,i.Wv)(c,{key:1,label:e.$t("sysSecurity.autoDeleteOnExpire")},{default:(0,i.k6)(()=>[(0,i.bF)(v,{modelValue:o.newToken.autoDelete,"onUpdate:modelValue":t[27]||(t[27]=e=>o.newToken.autoDelete=e)},null,8,["modelValue"])]),_:1},8,["label"]))]),_:1},8,["model","rules"])]),_:1},8,["modelValue","title","width"]),(0,i.bF)(A,{modelValue:o.showEditTokenDialog,"onUpdate:modelValue":t[37]||(t[37]=e=>o.showEditTokenDialog=e),title:e.$t("sysSecurity.editTokenTitle"),width:l.dialogWidth},{footer:(0,i.k6)(()=>[(0,i.Lk)("span",Ag,[(0,i.bF)(p,{onClick:t[36]||(t[36]=e=>o.showEditTokenDialog=!1)},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("common.cancel")),1)]),_:1}),(0,i.bF)(p,{type:"primary",onClick:l.updateToken},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysSecurity.updateBtn")),1)]),_:1},8,["onClick"])])]),default:(0,i.k6)(()=>[(0,i.bF)(h,{model:o.editingToken,rules:l.editTokenRules,ref:"editTokenForm","label-width":"100px"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{label:e.$t("sysSecurity.tokenNameLabel")},{default:(0,i.k6)(()=>[(0,i.bF)(r,{modelValue:o.editingToken.name,"onUpdate:modelValue":t[30]||(t[30]=e=>o.editingToken.name=e),disabled:""},null,8,["modelValue"])]),_:1},8,["label"]),(0,i.bF)(c,{label:e.$t("sysSecurity.permissionsLabel"),prop:"permissions"},{default:(0,i.k6)(()=>[(0,i.bF)(T,{modelValue:o.editingToken.permissions,"onUpdate:modelValue":t[31]||(t[31]=e=>o.editingToken.permissions=e)},{default:(0,i.k6)(()=>[(0,i.bF)(d,{label:"upload"},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysSecurity.permUpload")),1)]),_:1}),(0,i.bF)(d,{label:"delete"},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysSecurity.permDelete")),1)]),_:1}),(0,i.bF)(d,{label:"list"},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysSecurity.permList")),1)]),_:1}),(0,i.bF)(d,{label:"manage"},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysSecurity.permManage")),1)]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["label"]),(0,i.bF)(c,{label:e.$t("sysSecurity.neverExpire")},{default:(0,i.k6)(()=>[(0,i.bF)(v,{modelValue:o.editingToken.neverExpire,"onUpdate:modelValue":t[32]||(t[32]=e=>o.editingToken.neverExpire=e),onChange:l.onEditNeverExpireChange},null,8,["modelValue","onChange"])]),_:1},8,["label"]),o.editingToken.neverExpire?(0,i.Q3)("",!0):((0,i.uX)(),(0,i.Wv)(c,{key:0,label:e.$t("sysSecurity.validPeriod"),prop:"expirationValue"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",Tg,[(0,i.bF)(S,{modelValue:o.editingToken.expirationValue,"onUpdate:modelValue":t[33]||(t[33]=e=>o.editingToken.expirationValue=e),min:1,step:1,"controls-position":"right",style:{flex:"1"}},null,8,["modelValue"]),(0,i.bF)(_,{modelValue:o.editingToken.expirationUnit,"onUpdate:modelValue":t[34]||(t[34]=e=>o.editingToken.expirationUnit=e),style:{width:"100px"}},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.timeUnitOptions,t=>((0,i.uX)(),(0,i.Wv)(k,{key:t.value,label:e.$t(t.labelKey),value:t.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])])]),_:1},8,["label"])),o.editingToken.neverExpire?(0,i.Q3)("",!0):((0,i.uX)(),(0,i.Wv)(c,{key:1,label:e.$t("sysSecurity.autoDeleteOnExpire")},{default:(0,i.k6)(()=>[(0,i.bF)(v,{modelValue:o.editingToken.autoDelete,"onUpdate:modelValue":t[35]||(t[35]=e=>o.editingToken.autoDelete=e)},null,8,["modelValue"])]),_:1},8,["label"]))]),_:1},8,["model","rules"])]),_:1},8,["modelValue","title","width"]),(0,i.bF)(A,{modelValue:o.showTokenResultDialog,"onUpdate:modelValue":t[40]||(t[40]=e=>o.showTokenResultDialog=e),title:e.$t("sysSecurity.tokenCreatedTitle"),width:l.dialogWidth},{footer:(0,i.k6)(()=>[(0,i.Lk)("span",Mg,[(0,i.bF)(p,{type:"primary",onClick:t[39]||(t[39]=e=>o.showTokenResultDialog=!1)},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysSecurity.savedBtn")),1)]),_:1})])]),default:(0,i.k6)(()=>[(0,i.Lk)("div",$g,[(0,i.Lk)("p",Pg,[(0,i.bF)(u,{icon:"exclamation-triangle",style:{"margin-right":"5px"}}),(0,i.eW)(" "+(0,a.v_)(e.$t("sysSecurity.tokenCreatedWarning")),1)]),(0,i.bF)(h,{"label-width":"100px"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{label:e.$t("sysSecurity.tokenNameLabel")},{default:(0,i.k6)(()=>[(0,i.Lk)("span",null,(0,a.v_)(o.createdToken.name),1)]),_:1},8,["label"]),(0,i.bF)(c,{label:e.$t("sysSecurity.fullToken")},{default:(0,i.k6)(()=>[(0,i.bF)(r,{modelValue:o.createdToken.token,"onUpdate:modelValue":t[38]||(t[38]=e=>o.createdToken.token=e),readonly:""},{append:(0,i.k6)(()=>[(0,i.bF)(p,{onClick:l.copyToken},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysSecurity.copyBtn")),1)]),_:1},8,["onClick"])]),_:1},8,["modelValue"])]),_:1},8,["label"])]),_:1})])]),_:1},8,["modelValue","title","width"])])),[[$,o.loading]])}s(81148);const Vg={s:1e3,m:6e4,h:36e5,d:864e5};function Lg(e,t,s){if(!Number.isFinite(t)||t<=0)throw new Error("有效期数值必须大于 0");const i="string"===typeof e?new Date(e):new Date(e.getTime());if(Vg[s])return new Date(i.getTime()+t*Vg[s]).toISOString();if("M"===s)return i.setUTCMonth(i.getUTCMonth()+t),i.toISOString();if("Y"===s)return i.setUTCFullYear(i.getUTCFullYear()+t),i.toISOString();throw new Error(`无效的时间单位: ${s}`)}function Eg(e){const t=new Date(e),s=t.getFullYear(),i=String(t.getMonth()+1).padStart(2,"0"),a=String(t.getDate()).padStart(2,"0"),n=String(t.getHours()).padStart(2,"0"),o=String(t.getMinutes()).padStart(2,"0"),l=String(t.getSeconds()).padStart(2,"0");return`${s}-${i}-${a} ${n}:${o}:${l}`}function Ig(e,t=new Date){if(null===e||void 0===e)return{status:"active",label:"有效",expiresText:"永不过期"};const s=new Date(e),i=t instanceof Date?t:new Date(t),a=Eg(e);return i.getTime()>s.getTime()?{status:"expired",label:"已过期",expiresText:a}:{status:"active",label:"有效",expiresText:a}}function Ug(e){return JSON.stringify(e,(e,t)=>t&&"object"===typeof t&&!Array.isArray(t)?Object.fromEntries(Object.keys(t).sort().map(e=>[e,t[e]])):t)}var Og={data(){return{savedSettingsSnapshot:null}},computed:{hasUnsavedChanges(){return null!==this.savedSettingsSnapshot&&Ug(this.editableSettings)!==this.savedSettingsSnapshot}},methods:{markSettingsSaved(e=this.editableSettings){this.savedSettingsSnapshot=Ug(e)}}},Rg={mixins:[Og],components:{FloatingSaveButton:Hp},data(){return{authSettings:{user:{},admin:{}},uploadSettings:{moderate:{},ipQuery:{enabled:!1,channel:"customApi",customApi:{url:"",params:[{key:"ip",value:"{ip}"}],responseFields:[]}}},accessSettings:{},apiTokens:[],loading:!0,saving:!1,tokenLoading:!1,oriUserPassword:"",oriAdminPassword:"",showUserPassConfirm:!1,showAdminPassConfirm:!1,clearUserPassword:!1,clearAdminPassword:!1,showCreateTokenDialog:!1,showEditTokenDialog:!1,showTokenResultDialog:!1,timeUnitOptions:[{labelKey:"sysSecurity.timeUnitSeconds",value:"s"},{labelKey:"sysSecurity.timeUnitMinutes",value:"m"},{labelKey:"sysSecurity.timeUnitHours",value:"h"},{labelKey:"sysSecurity.timeUnitDays",value:"d"},{labelKey:"sysSecurity.timeUnitMonths",value:"M"},{labelKey:"sysSecurity.timeUnitYears",value:"Y"}],newToken:{name:"",owner:"",permissions:[],neverExpire:!0,expirationValue:1,expirationUnit:"d",autoDelete:!1},editingToken:{id:"",name:"",owner:"",permissions:[],neverExpire:!0,expirationValue:1,expirationUnit:"d",autoDelete:!1},createdToken:{name:"",token:""}}},computed:{editableSettings(){return{auth:{user:{authCode:this.authSettings.user.authCode},admin:{adminUsername:this.authSettings.admin.adminUsername,adminPassword:this.authSettings.admin.adminPassword}},upload:this.uploadSettings,access:this.accessSettings,clearUserPassword:this.clearUserPassword,clearAdminPassword:this.clearAdminPassword}},dialogWidth(){return window.innerWidth>768?"50%":"90%"},userPassRules(){return{authCode:[{validator:(e,t,s)=>{const i=["%","&","?","#","/"],a=i.some(e=>t&&t.includes(e));a?s(new Error(this.$t("sysSecurity.passwordUrlReserved"))):s()},trigger:"blur"}],confirmNewUserPassword:[{validator:(e,t,s)=>{t?t!==this.authSettings.user.authCode?s(new Error(this.$t("sysSecurity.passwordMismatch"))):s():s(new Error(this.$t("sysSecurity.confirmUploadPassword")))},trigger:"blur"}]}},adminPassRules(){return{confirmNewAdminPassword:[{validator:(e,t,s)=>{t?t!==this.authSettings.admin.adminPassword?s(new Error(this.$t("sysSecurity.passwordMismatch"))):s():s(new Error(this.$t("sysSecurity.confirmAdminPassword")))},trigger:"blur"}]}},accessRules(){const e=(e,t,s)=>{!Number.isInteger(t)||t<1||t>3650?s(new Error(this.$t("sysSecurity.sessionMaxAgeInvalid"))):s()},t=(e,t,s)=>{if(!this.accessSettings.imageTransformEnabled||!t||!t.trim())return void s();const i=t.split(",").map(e=>e.trim().toLowerCase()).filter(Boolean),a=i.every(e=>{const t=e.match(/^(auto|[1-9]\d*)x(auto|[1-9]\d*)$/);return!(!t||"auto"===t[1]&&"auto"===t[2])&&t.slice(1).every(e=>"auto"===e||Number(e)<=4096)});a?s():s(new Error(this.$t("sysSecurity.imageTransformAllowedSizesInvalid")))};return{userSessionMaxAge:[{validator:e,trigger:"change"}],adminSessionMaxAge:[{validator:e,trigger:"change"}],imageTransformAllowedSizes:[{validator:t,trigger:["blur","change"]}]}},tokenRules(){return{name:[{required:!0,message:this.$t("sysSecurity.tokenNameRequired"),trigger:"blur"}],permissions:[{required:!0,message:this.$t("sysSecurity.permissionsRequired"),trigger:"change"}],expirationValue:[{validator:(e,t,s)=>{this.newToken.neverExpire||t&&!(t<=0)?s():s(new Error(this.$t("sysSecurity.validPeriodRequired")))},trigger:"blur"}]}},editTokenRules(){return{permissions:[{required:!0,message:this.$t("sysSecurity.permissionsRequired"),trigger:"change"}],expirationValue:[{validator:(e,t,s)=>{this.editingToken.neverExpire||t&&!(t<=0)?s():s(new Error(this.$t("sysSecurity.validPeriodRequired")))},trigger:"blur"}]}}},methods:{normalizeIpQuerySettings(e={}){const t=e.ipQuery||{},s=t.customApi||{},i=Array.isArray(s.params)&&s.params.length>0?s.params.map(e=>({key:e?.key||"",value:e?.value||""})):[{key:"ip",value:"{ip}"}],a=Array.isArray(s.responseFields)?s.responseFields.map(e=>"string"===typeof e?e:e?.path||""):[];return{...e,moderate:e.moderate||{},ipQuery:{enabled:t.enabled??!1,channel:t.channel||"customApi",customApi:{url:s.url||"",params:i,responseFields:a}}}},addIpQueryParam(){this.uploadSettings.ipQuery.customApi.params.push({key:"",value:""})},removeIpQueryParam(e){this.uploadSettings.ipQuery.customApi.params.length<=1||this.uploadSettings.ipQuery.customApi.params.splice(e,1)},addIpQueryResponseField(){this.uploadSettings.ipQuery.customApi.responseFields.push("")},removeIpQueryResponseField(e){this.uploadSettings.ipQuery.customApi.responseFields.splice(e,1)},moveIpQueryResponseField(e,t){const s=this.uploadSettings.ipQuery.customApi.responseFields,i=e+t;if(i<0||i>=s.length)return;const[a]=s.splice(e,1);s.splice(i,0,a)},handleUserPassInput(){this.authSettings.user.authCode!==this.oriUserPassword?this.showUserPassConfirm=!0:this.showUserPassConfirm=!1},handleAdminPassInput(){this.authSettings.admin.adminPassword!==this.oriAdminPassword?this.showAdminPassConfirm=!0:this.showAdminPassConfirm=!1},handleClearUserPassword(e){e&&(this.authSettings.user.authCode="",this.showUserPassConfirm=!1)},handleClearAdminPassword(e){e&&(this.authSettings.admin.adminPassword="",this.authSettings.admin.adminUsername="",this.showAdminPassConfirm=!1)},getPermissionText(e){const t={upload:this.$t("sysSecurity.permUpload"),delete:this.$t("sysSecurity.permDelete"),list:this.$t("sysSecurity.permList"),manage:this.$t("sysSecurity.permManage")};return t[e]||e},formatDate(e){return new Date(e).toLocaleString("zh-CN")},async loadApiTokens(){this.tokenLoading=!0;try{const e=await(0,Rt.A)("/api/manage/apiTokens"),t=await e.json();this.apiTokens=t.tokens||[]}catch(e){this.$message.error(this.$t("sysSecurity.tokenListFailed"))}finally{this.tokenLoading=!1}},createToken(){this.$refs.tokenForm.validate(async e=>{if(e)try{this.newToken.owner="admin";let e=null,t=!1;this.newToken.neverExpire||(e=Lg(new Date,this.newToken.expirationValue,this.newToken.expirationUnit),t=this.newToken.autoDelete);const s=await(0,Rt.A)("/api/manage/apiTokens",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:this.newToken.name,owner:this.newToken.owner,permissions:this.newToken.permissions,expiresAt:e,autoDelete:t})}),i=await s.json();s.ok?(this.createdToken={name:i.name,token:i.token},this.showCreateTokenDialog=!1,this.showTokenResultDialog=!0,this.newToken={name:"",owner:"",permissions:[],neverExpire:!0,expirationValue:1,expirationUnit:"d",autoDelete:!1},await this.loadApiTokens(),this.$message.success(this.$t("sysSecurity.tokenCreateSuccess"))):this.$message.error(i.error||this.$t("sysSecurity.tokenCreateFailed"))}catch(t){this.$message.error(this.$t("sysSecurity.tokenCreateFailed"))}})},editToken(e){const t=null!==e.expiresAt&&void 0!==e.expiresAt;this.editingToken={id:e.id,name:e.name,owner:e.owner,permissions:[...e.permissions],neverExpire:!t,expirationValue:1,expirationUnit:"d",autoDelete:e.autoDelete||!1},this.showEditTokenDialog=!0},updateToken(){this.$refs.editTokenForm.validate(async e=>{if(e)try{let e=null,t=!1;this.editingToken.neverExpire||(e=Lg(new Date,this.editingToken.expirationValue,this.editingToken.expirationUnit),t=this.editingToken.autoDelete);const s=await(0,Rt.A)("/api/manage/apiTokens",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({tokenId:this.editingToken.id,permissions:this.editingToken.permissions,expiresAt:e,autoDelete:t})}),i=await s.json();s.ok?(this.showEditTokenDialog=!1,await this.loadApiTokens(),this.$message.success(this.$t("sysSecurity.tokenUpdateSuccess"))):this.$message.error(i.error||this.$t("sysSecurity.tokenUpdateFailed"))}catch(t){this.$message.error(this.$t("sysSecurity.tokenUpdateFailed"))}})},async deleteToken(e){try{await this.$confirm(this.$t("sysSecurity.tokenDeleteConfirm"),this.$t("sysSecurity.tokenDeleteConfirmTitle"),{confirmButtonText:this.$t("sysSecurity.tokenDeleteConfirmOk"),cancelButtonText:this.$t("sysSecurity.tokenDeleteConfirmCancel"),type:"warning"});const t=await(0,Rt.A)(`/api/manage/apiTokens?id=${e}`,{method:"DELETE"}),s=await t.json();t.ok?(await this.loadApiTokens(),this.$message.success(this.$t("sysSecurity.tokenDeleteSuccess"))):this.$message.error(s.error||this.$t("sysSecurity.tokenDeleteFailed"))}catch(t){"cancel"!==t&&this.$message.error(this.$t("sysSecurity.tokenDeleteFailed"))}},async copyToken(){try{await navigator.clipboard.writeText(this.createdToken.token),this.$message.success(this.$t("sysSecurity.tokenCopied"))}catch(e){this.$message.error(this.$t("sysSecurity.copyFailed"))}},onCreateNeverExpireChange(e){e&&(this.newToken.autoDelete=!1)},onEditNeverExpireChange(e){e&&(this.editingToken.autoDelete=!1)},getTokenStatus(e){return Ig(e)},saveSettings(){if(this.saving)return;this.saving=!0;let e=[];return e.push(new Promise(e=>{this.$refs.userPassForm.validate(t=>{e(t)})})),e.push(new Promise(e=>{this.$refs.adminPassForm.validate(t=>{e(t)})})),e.push(new Promise(e=>{this.$refs.accessForm.validate(t=>{e(t)})})),e.push(new Promise(e=>{this.$refs.imageTransformForm.validate(t=>{e(t)})})),Promise.all(e).then(e=>{const t=e.every(e=>e);if(!t)return;if(this.accessSettings.userSessionMaxAge<1||!Number.isInteger(this.accessSettings.userSessionMaxAge)||this.accessSettings.userSessionMaxAge>3650||this.accessSettings.adminSessionMaxAge<1||!Number.isInteger(this.accessSettings.adminSessionMaxAge)||this.accessSettings.adminSessionMaxAge>3650)return void this.$message.error(this.$t("sysSecurity.sessionMaxAgeInvalid"));const s=JSON.parse(JSON.stringify({auth:this.authSettings,upload:this.uploadSettings,access:this.accessSettings}));return delete s.auth.user.confirmNewUserPassword,delete s.auth.admin.confirmNewAdminPassword,this.clearUserPassword&&(s.auth.user._clear=!0,s.auth.user.authCode=""),this.clearAdminPassword&&(s.auth.admin._clear=!0,s.auth.admin.adminPassword=""),(0,Rt.A)("/api/manage/sysConfig/security",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s)}).then(e=>{if(!e.ok)throw new Error(this.$t("floatingSave.failed"));return e.json()}).then(e=>{if(e.adminPasswordChanged){this.markSettingsSaved();const e=this.$t("sysSecurity.adminPasswordChangedRelogin");return this.$message.warning(e),void setTimeout(()=>{this.$store.commit("setAdminLoggedIn",!1),this.$router.push("/adminLogin")},1500)}this.$message.success(this.$t("sysSecurity.settingsSaved")),this.authSettings.user.authCode="",this.authSettings.admin.adminPassword="",this.authSettings.user.confirmNewUserPassword="",this.authSettings.admin.confirmNewAdminPassword="",this.oriUserPassword="",this.oriAdminPassword="",s.auth.user.authCode&&!s.auth.user._clear?this.authSettings.user._hasPassword=!0:s.auth.user._clear&&(this.authSettings.user._hasPassword=!1),s.auth.admin.adminPassword&&!s.auth.admin._clear?this.authSettings.admin._hasPassword=!0:s.auth.admin._clear&&(this.authSettings.admin._hasPassword=!1),this.showUserPassConfirm=!1,this.showAdminPassConfirm=!1,this.clearUserPassword=!1,this.clearAdminPassword=!1,this.markSettingsSaved()})}).catch(()=>{this.$message.error(this.$t("floatingSave.failed"))}).finally(()=>{this.saving=!1})}},mounted(){this.loading=!0,(0,Rt.A)("/api/manage/sysConfig/security").then(e=>e.json()).then(async e=>{this.authSettings=e.auth,this.uploadSettings=this.normalizeIpQuerySettings(e.upload),this.accessSettings={imageTransformEnabled:!1,imageTransformAllowedSizes:"",...e.access},this.oriUserPassword="",this.oriAdminPassword="",this.authSettings.user.confirmNewUserPassword="",this.authSettings.admin.confirmNewAdminPassword="",await this.$nextTick(),this.markSettingsSaved(),this.loadApiTokens()}).finally(()=>{this.loading=!1})}};const Wg=(0,c.A)(Rg,[["render",Dg],["__scopeId","data-v-2c2362f7"]]);var Ng=Wg;const zg={class:"page-settings"},Bg={class:"first-title"},jg={key:5,class:"announcement-refresh-option"};function Hg(e,t,s,n,o,l){const r=(0,i.g2)("font-awesome-icon"),d=g.R7,c=Eu.P9,h=Eu.AV,u=Iu.qi,p=Lu.WK,m=Rp.dI,f=Du.xE,b=Du.US,y=Hp,v=x.A;return(0,i.bo)(((0,i.uX)(),(0,i.CE)("div",zg,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(l.groupedSettings,(s,n)=>((0,i.uX)(),(0,i.CE)("div",{key:n,class:"first-settings"},[(0,i.Lk)("h3",Bg,(0,a.v_)(n),1),(0,i.bF)(b,{model:o.settings,"label-width":"150px"},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(s,(s,n)=>((0,i.uX)(),(0,i.Wv)(f,{key:s.id,class:(0,a.C4)({"announcement-manual-height":"announcement"===s.id&&null!==o.announcementManualHeight}),style:(0,a.Tr)("announcement"===s.id&&null!==o.announcementManualHeight?{"--announcement-manual-height":`${o.announcementManualHeight}px`}:void 0)},{label:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(l.localized(s,"label"))+" ",1),s.tooltip?((0,i.uX)(),(0,i.Wv)(d,{key:0,content:l.localized(s,"tooltip"),placement:"top","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",style:{"margin-left":"5px",cursor:"pointer"}})]),_:1},8,["content"])):(0,i.Q3)("",!0)]),default:(0,i.k6)(()=>["select"===s.type?((0,i.uX)(),(0,i.Wv)(h,{key:0,modelValue:s.value,"onUpdate:modelValue":e=>s.value=e,disabled:s.fixed,placeholder:l.localized(s,"placeholder"),style:{width:"100%"}},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(s.options,e=>((0,i.uX)(),(0,i.Wv)(c,{key:e.value,label:l.localizedOption(e),value:e.value},null,8,["label","value"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue","disabled","placeholder"])):"channelName"===s.type?((0,i.uX)(),(0,i.Wv)(h,{key:1,modelValue:s.value,"onUpdate:modelValue":e=>s.value=e,disabled:!l.currentUploadChannel||0===l.currentChannelList.length,placeholder:e.$t("sysPage.channelSelectPlaceholder"),clearable:"",style:{width:"100%"}},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(l.currentChannelList,e=>((0,i.uX)(),(0,i.Wv)(c,{key:e.name,label:e.name,value:e.name},null,8,["label","value"]))),128))]),_:1},8,["modelValue","onUpdate:modelValue","disabled","placeholder"])):"boolean"===s.type?((0,i.uX)(),(0,i.Wv)(u,{key:2,modelValue:s.value,"onUpdate:modelValue":e=>s.value=e,disabled:s.fixed},null,8,["modelValue","onUpdate:modelValue","disabled"])):"textarea"===s.type?((0,i.uX)(),(0,i.Wv)(p,{key:3,modelValue:s.value,"onUpdate:modelValue":e=>s.value=e,type:"textarea",autosize:{minRows:2,maxRows:"announcement"===s.id?8:void 0},resize:"vertical",disabled:s.fixed,placeholder:l.localized(s,"placeholder"),onMousedown:e=>l.handleAnnouncementResizeStart(e,s)},null,8,["modelValue","onUpdate:modelValue","autosize","disabled","placeholder","onMousedown"])):((0,i.uX)(),(0,i.Wv)(p,{key:4,modelValue:s.value,"onUpdate:modelValue":e=>s.value=e,disabled:s.fixed,placeholder:l.localized(s,"placeholder")},null,8,["modelValue","onUpdate:modelValue","disabled","placeholder"])),"announcement"===s.id?((0,i.uX)(),(0,i.CE)("div",jg,[(0,i.bF)(m,{modelValue:o.refreshAnnouncement,"onUpdate:modelValue":t[0]||(t[0]=e=>o.refreshAnnouncement=e)},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysPage.refreshAnnouncement")),1)]),_:1},8,["modelValue"])])):(0,i.Q3)("",!0)]),_:2},1032,["class","style"]))),128))]),_:2},1032,["model"])]))),128)),(0,i.bF)(y,{show:!o.loading,loading:o.saving,dirty:e.hasUnsavedChanges,onClick:l.saveSettings},null,8,["show","loading","dirty","onClick"])])),[[v,o.loading]])}var qg=s(457),Xg={mixins:[Og],components:{FloatingSaveButton:Hp},data(){return{settings:{config:[]},loading:!0,saving:!1,refreshAnnouncement:!1,announcementManualHeight:null,announcementResizeMouseUpHandler:null,availableChannels:{}}},computed:{editableSettings(){return{config:this.settings.config.map(({id:e,value:t})=>({id:e,value:t})),refreshAnnouncement:this.refreshAnnouncement}},isEn(){return"en"===this.$i18n.locale},groupedSettings(){const e={};return this.settings.config&&this.settings.config.forEach(t=>{const s=this.isEn?t.category_en||t.category||this.$t("sysPage.otherSettings"):t.category||this.$t("sysPage.otherSettings");e[s]||(e[s]=[]),e[s].push(t)}),e},currentUploadChannel(){const e=this.settings.config?.find(e=>"defaultUploadChannel"===e.id);return e?.value||""},currentChannelList(){return this.availableChannels[this.currentUploadChannel]||[]}},watch:{currentUploadChannel(e,t){if(!this.loading&&e!==t){const t=this.settings.config?.find(e=>"defaultChannelName"===e.id);if(t){const s=this.availableChannels[e]||[];s.some(e=>e.name===t.value)||(t.value="")}}}},methods:{localized(e,t){return this.isEn&&e[t+"_en"]?e[t+"_en"]:e[t]||""},localizedOption(e){return this.isEn&&e.label_en?e.label_en:e.label},handleAnnouncementResizeStart(e,t){if("announcement"!==t.id)return;const s=e.target.closest?.("textarea");if(!s)return;const i=s.getBoundingClientRect(),a=24,n=e.clientX>=i.right-a&&e.clientY>=i.bottom-a;if(!n)return;const o=s.closest(".el-form-item");this.announcementResizeMouseUpHandler&&window.removeEventListener("mouseup",this.announcementResizeMouseUpHandler);const l=s.offsetHeight;s.style.height=`${l}px`,o?.classList.remove("announcement-manual-height"),this.announcementResizeMouseUpHandler=()=>{const e=s.offsetHeight,t=Math.abs(e-l)>1?e:this.announcementManualHeight;null!==t&&(this.announcementManualHeight=t,o?.style.setProperty("--announcement-manual-height",`${t}px`),o?.classList.add("announcement-manual-height")),this.announcementResizeMouseUpHandler=null},window.addEventListener("mouseup",this.announcementResizeMouseUpHandler,{once:!0})},async saveSettings(){if(this.saving)return;const e=JSON.parse(JSON.stringify({...this.settings,refreshAnnouncement:this.refreshAnnouncement}));this.saving=!0;try{const t=await(0,Rt.A)("/api/manage/sysConfig/page",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw new Error(this.$t("floatingSave.failed"));this.refreshAnnouncement===e.refreshAnnouncement&&(this.refreshAnnouncement=!1),this.markSettingsSaved({config:e.config.map(({id:e,value:t})=>({id:e,value:t})),refreshAnnouncement:!1}),this.$message.success(this.$t("sysPage.settingsSaved"))}catch{this.$message.error(this.$t("floatingSave.failed"))}finally{this.saving=!1}},async fetchAvailableChannels(){try{const e=await qg.A.get("/api/channels");e.data&&(this.availableChannels=e.data)}catch(e){console.error("Failed to fetch available channels:",e)}}},beforeUnmount(){this.announcementResizeMouseUpHandler&&window.removeEventListener("mouseup",this.announcementResizeMouseUpHandler)},mounted(){this.loading=!0,this.fetchAvailableChannels(),(0,Rt.A)("/api/manage/sysConfig/page").then(e=>e.json()).then(async e=>{this.settings=e,this.settings.config&&this.settings.config.forEach(e=>{void 0!==e.value&&null!==e.value&&""!==e.value||void 0===e.default||(e.value=e.default),"boolean"===e.type&&"string"===typeof e.value&&(e.value="true"===e.value)}),await this.$nextTick(),this.markSettingsSaved()}).finally(()=>{this.loading=!1})}};const Kg=(0,c.A)(Xg,[["render",Hg],["__scopeId","data-v-66434202"]]);var Qg=Kg;const Yg={class:"others-settings"},Gg={class:"first-settings"},Jg={class:"first-title"},Zg={class:"first-title"},em={class:"first-title"},tm={class:"first-title"},sm=["innerHTML"],im={class:"first-title"};function am(e,t,s,n,o,l){const r=(0,i.g2)("font-awesome-icon"),d=g.R7,c=Iu.qi,h=Du.xE,u=Du.US,p=Lu.WK,m=Eu.P9,f=Eu.AV,b=Hp,y=x.A;return(0,i.bo)(((0,i.uX)(),(0,i.CE)("div",Yg,[(0,i.Lk)("div",Gg,[(0,i.Lk)("h3",Jg,[(0,i.eW)((0,a.v_)(e.$t("sysOthers.remoteTelemetry"))+" ",1),(0,i.bF)(d,{content:e.$t("sysOthers.remoteTelemetryTooltip"),placement:"right"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",style:{"margin-left":"5px",cursor:"pointer"}})]),_:1},8,["content"])]),(0,i.bF)(u,{model:o.settings.telemetry,"label-width":"120px"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{label:e.$t("sysOthers.enable")},{default:(0,i.k6)(()=>[(0,i.bF)(c,{modelValue:o.settings.telemetry.enabled,"onUpdate:modelValue":t[0]||(t[0]=e=>o.settings.telemetry.enabled=e),disabled:o.settings.telemetry.fixed},null,8,["modelValue","disabled"])]),_:1},8,["label"])]),_:1},8,["model"]),(0,i.Lk)("h3",Zg,[(0,i.eW)((0,a.v_)(e.$t("sysOthers.cloudflareApiToken"))+" ",1),(0,i.bF)(d,{content:e.$t("sysOthers.cloudflareApiTokenTooltip"),placement:"right","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",style:{"margin-left":"5px",cursor:"pointer"}})]),_:1},8,["content"])]),(0,i.bF)(u,{model:o.settings.cloudflareApiToken,"label-width":"120px"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{label:e.$t("sysOthers.zoneId")},{default:(0,i.k6)(()=>[(0,i.bF)(p,{modelValue:o.settings.cloudflareApiToken.CF_ZONE_ID,"onUpdate:modelValue":t[1]||(t[1]=e=>o.settings.cloudflareApiToken.CF_ZONE_ID=e),disabled:o.settings.cloudflareApiToken.fixed},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(h,{label:e.$t("sysOthers.accountEmail")},{default:(0,i.k6)(()=>[(0,i.bF)(p,{modelValue:o.settings.cloudflareApiToken.CF_EMAIL,"onUpdate:modelValue":t[2]||(t[2]=e=>o.settings.cloudflareApiToken.CF_EMAIL=e),disabled:o.settings.cloudflareApiToken.fixed},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(h,{label:"API Key"},{default:(0,i.k6)(()=>[(0,i.bF)(p,{modelValue:o.settings.cloudflareApiToken.CF_API_KEY,"onUpdate:modelValue":t[3]||(t[3]=e=>o.settings.cloudflareApiToken.CF_API_KEY=e),disabled:o.settings.cloudflareApiToken.fixed,type:"password","show-password":"",autocomplete:"new-password"},null,8,["modelValue","disabled"])]),_:1})]),_:1},8,["model"]),(0,i.Lk)("h3",em,[(0,i.eW)((0,a.v_)(e.$t("sysOthers.randomImageApi"))+" ",1),(0,i.bF)(d,{content:e.$t("sysOthers.randomImageApiTooltip"),placement:"right"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",style:{"margin-left":"5px",cursor:"pointer"}})]),_:1},8,["content"])]),(0,i.bF)(u,{model:o.settings.randomImageAPI,"label-width":"120px"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{label:e.$t("sysOthers.enable")},{default:(0,i.k6)(()=>[(0,i.bF)(c,{modelValue:o.settings.randomImageAPI.enabled,"onUpdate:modelValue":t[4]||(t[4]=e=>o.settings.randomImageAPI.enabled=e),disabled:o.settings.randomImageAPI.fixed},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(h,{prop:"randomImageAPI.allowedDir"},{label:(0,i.k6)(()=>[(0,i.Lk)("span",null,(0,a.v_)(e.$t("sysOthers.directory")),1),(0,i.bF)(d,{content:e.$t("sysOthers.directoryTooltip"),placement:"right","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",style:{"margin-left":"5px",cursor:"pointer"}})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(p,{modelValue:o.settings.randomImageAPI.allowedDir,"onUpdate:modelValue":t[5]||(t[5]=e=>o.settings.randomImageAPI.allowedDir=e),disabled:o.settings.randomImageAPI.fixed},null,8,["modelValue","disabled"])]),_:1})]),_:1},8,["model"]),(0,i.Lk)("h3",tm,[(0,i.eW)((0,a.v_)(e.$t("sysOthers.publicBrowse"))+" ",1),(0,i.bF)(d,{content:e.$t("sysOthers.publicBrowseTooltip"),placement:"right","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",style:{"margin-left":"5px",cursor:"pointer"}})]),_:1},8,["content"])]),(0,i.bF)(u,{model:o.settings.publicBrowse,"label-width":"120px"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{label:e.$t("sysOthers.enable")},{default:(0,i.k6)(()=>[(0,i.bF)(c,{modelValue:o.settings.publicBrowse.enabled,"onUpdate:modelValue":t[6]||(t[6]=e=>o.settings.publicBrowse.enabled=e),disabled:o.settings.publicBrowse.fixed},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(h,{prop:"publicBrowse.allowedDir"},{label:(0,i.k6)(()=>[(0,i.Lk)("span",null,(0,a.v_)(e.$t("sysOthers.openDirectory")),1),(0,i.bF)(d,{placement:"right","raw-content":""},{content:(0,i.k6)(()=>[(0,i.Lk)("div",{style:{"max-width":"320px","line-height":"1.6"},innerHTML:e.$t("sysOthers.openDirectoryTooltip")},null,8,sm)]),default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",style:{"margin-left":"5px",cursor:"pointer"}})]),_:1})]),default:(0,i.k6)(()=>[(0,i.bF)(p,{modelValue:o.settings.publicBrowse.allowedDir,"onUpdate:modelValue":t[7]||(t[7]=e=>o.settings.publicBrowse.allowedDir=e),disabled:o.settings.publicBrowse.fixed,placeholder:"wallpaper,photos,album"},null,8,["modelValue","disabled"])]),_:1})]),_:1},8,["model"]),(0,i.Lk)("h3",im,[(0,i.eW)((0,a.v_)(e.$t("sysOthers.webdav"))+" ",1),(0,i.bF)(d,{content:e.$t("sysOthers.webdavTooltip"),placement:"right","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",style:{"margin-left":"5px",cursor:"pointer"}})]),_:1},8,["content"])]),(0,i.bF)(u,{model:o.settings.webDAV,"label-width":"120px"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{label:e.$t("sysOthers.enable")},{default:(0,i.k6)(()=>[(0,i.bF)(c,{modelValue:o.settings.webDAV.enabled,"onUpdate:modelValue":t[8]||(t[8]=e=>o.settings.webDAV.enabled=e),disabled:o.settings.webDAV.fixed},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(h,{label:e.$t("sysOthers.webdavUsername")},{default:(0,i.k6)(()=>[(0,i.bF)(p,{modelValue:o.settings.webDAV.username,"onUpdate:modelValue":t[9]||(t[9]=e=>o.settings.webDAV.username=e),disabled:o.settings.webDAV.fixed},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(h,{label:e.$t("sysOthers.webdavPassword")},{default:(0,i.k6)(()=>[(0,i.bF)(p,{modelValue:o.settings.webDAV.password,"onUpdate:modelValue":t[10]||(t[10]=e=>o.settings.webDAV.password=e),disabled:o.settings.webDAV.fixed,type:"password","show-password":"",autocomplete:"new-password"},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(h,{label:e.$t("sysOthers.webdavUploadChannel")},{default:(0,i.k6)(()=>[(0,i.bF)(f,{modelValue:o.settings.webDAV.uploadChannel,"onUpdate:modelValue":t[11]||(t[11]=e=>o.settings.webDAV.uploadChannel=e),disabled:o.settings.webDAV.fixed,placeholder:e.$t("sysOthers.webdavDefaultChannel"),clearable:""},{default:(0,i.k6)(()=>[(0,i.bF)(m,{label:"Telegram",value:"telegram"}),(0,i.bF)(m,{label:"Cloudflare R2",value:"cfr2"}),(0,i.bF)(m,{label:"S3",value:"s3"}),(0,i.bF)(m,{label:"Discord",value:"discord"}),(0,i.bF)(m,{label:"HuggingFace",value:"huggingface"}),(0,i.bF)(m,{label:"WebDAV",value:"webdav"})]),_:1},8,["modelValue","disabled","placeholder"])]),_:1},8,["label"]),o.settings.webDAV.uploadChannel&&l.webdavChannelList.length>1?((0,i.uX)(),(0,i.Wv)(h,{key:0,label:e.$t("sysOthers.webdavChannelName")},{default:(0,i.k6)(()=>[(0,i.bF)(f,{modelValue:o.settings.webDAV.channelName,"onUpdate:modelValue":t[12]||(t[12]=e=>o.settings.webDAV.channelName=e),disabled:o.settings.webDAV.fixed,placeholder:e.$t("uploadSettings.autoSelect"),clearable:""},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(l.webdavChannelList,e=>((0,i.uX)(),(0,i.Wv)(m,{key:e.name,label:e.name,value:e.name},null,8,["label","value"]))),128))]),_:1},8,["modelValue","disabled","placeholder"])]),_:1},8,["label"])):(0,i.Q3)("",!0)]),_:1},8,["model"])]),(0,i.bF)(b,{show:!o.loading,loading:o.saving,dirty:e.hasUnsavedChanges,onClick:l.saveSettings},null,8,["show","loading","dirty","onClick"])])),[[y,o.loading]])}var nm={mixins:[Og],components:{FloatingSaveButton:Hp},data(){return{settings:{telemetry:{},randomImageAPI:{},cloudflareApiToken:{},webDAV:{},publicBrowse:{}},availableChannels:{},loading:!0,saving:!1}},computed:{editableSettings(){return this.settings},webdavChannelList(){const e=this.settings.webDAV?.uploadChannel;return e&&this.availableChannels[e]||[]}},watch:{"settings.webDAV.uploadChannel"(){!this.loading&&this.settings.webDAV&&(this.settings.webDAV.channelName="")}},methods:{async saveSettings(){if(this.saving)return;const e=JSON.parse(JSON.stringify(this.settings));this.saving=!0;try{const t=await(0,Rt.A)("/api/manage/sysConfig/others",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw new Error(this.$t("floatingSave.failed"));this.markSettingsSaved(e),this.$message.success(this.$t("sysOthers.settingsSaved"))}catch{this.$message.error(this.$t("floatingSave.failed"))}finally{this.saving=!1}},async fetchAvailableChannels(){try{const e=await(0,Rt.A)("/api/channels");e.ok&&(this.availableChannels=await e.json())}catch(e){console.error("Failed to fetch available channels:",e)}}},mounted(){this.loading=!0,(0,Rt.A)("/api/manage/sysConfig/others").then(e=>e.json()).then(async e=>{this.settings=e,await this.$nextTick(),this.markSettingsSaved()}).finally(()=>{this.loading=!1}),this.fetchAvailableChannels()}};const om=(0,c.A)(nm,[["render",am],["__scopeId","data-v-b6f6d070"]]);var lm=om,rm=s(89559);s(85332);const dm={class:"ai-settings"},cm={key:0,class:"first-settings"},hm={class:"first-title"},um={class:"basic-settings"},pm={class:"resource-group"},gm={class:"group-header"},mm={key:0,class:"empty-card"},fm={class:"empty-icon"},bm={class:"empty-title"},ym={key:1,class:"resource-cards"},vm={class:"card-header"},xm={class:"card-title"},km={class:"card-body"},_m={class:"card-info"},wm=["title"],Cm={class:"card-info"},Sm={class:"card-actions"},Fm={class:"resource-group"},Tm={class:"group-header"},Am={key:0,class:"empty-card"},$m={class:"empty-icon"},Pm={class:"empty-title"},Mm={key:1,class:"resource-cards"},Dm={class:"card-header"},Vm={class:"card-title"},Lm={class:"model-capabilities"},Em={class:"card-body"},Im={class:"card-info"},Um={class:"card-actions"},Om={class:"first-title"},Rm={class:"first-title"},Wm={class:"json-mode-hint"};function Nm(e,t,s,n,o,l){const r=Iu.qi,d=Du.xE,c=Vu.lq,h=Du.US,u=(0,i.g2)("font-awesome-icon"),p=Uu.u,m=K.S2,f=g.R7,b=Lu.WK,y=Eu.P9,v=Eu.AV,k=Hp,_=rm.KR,C=Rp.dI,S=w.kZ,F=x.A;return(0,i.bo)(((0,i.uX)(),(0,i.CE)("div",dm,[o.settings?((0,i.uX)(),(0,i.CE)("div",cm,[(0,i.Lk)("h3",hm,(0,a.v_)(e.$t("sysAI.general")),1),(0,i.Lk)("section",um,[(0,i.bF)(h,{"label-width":"120px",disabled:o.saving},{default:(0,i.k6)(()=>[(0,i.bF)(d,{label:e.$t("sysAI.enable")},{default:(0,i.k6)(()=>[(0,i.bF)(r,{modelValue:o.settings.enabled,"onUpdate:modelValue":t[0]||(t[0]=e=>o.settings.enabled=e)},null,8,["modelValue"])]),_:1},8,["label"]),(0,i.bF)(d,{label:e.$t("sysAI.timeout")},{default:(0,i.k6)(()=>[(0,i.bF)(c,{modelValue:o.settings.execution.providerTimeoutMs,"onUpdate:modelValue":t[1]||(t[1]=e=>o.settings.execution.providerTimeoutMs=e),min:1e3,max:2e4,step:1e3},null,8,["modelValue"])]),_:1},8,["label"]),(0,i.bF)(d,{label:e.$t("sysAI.batchSize")},{default:(0,i.k6)(()=>[(0,i.bF)(c,{modelValue:o.settings.execution.maxBatchSize,"onUpdate:modelValue":t[2]||(t[2]=e=>o.settings.execution.maxBatchSize=e),min:1,max:3},null,8,["modelValue"])]),_:1},8,["label"]),(0,i.bF)(d,{label:e.$t("sysAI.concurrency")},{default:(0,i.k6)(()=>[(0,i.bF)(c,{modelValue:o.settings.execution.concurrency,"onUpdate:modelValue":t[3]||(t[3]=e=>o.settings.execution.concurrency=e),min:1,max:2},null,8,["modelValue"])]),_:1},8,["label"])]),_:1},8,["disabled"]),(0,i.Lk)("div",pm,[(0,i.Lk)("div",gm,[(0,i.Lk)("h4",null,[(0,i.bF)(u,{icon:"server"}),(0,i.eW)((0,a.v_)(e.$t("sysAI.providers")),1),(0,i.bF)(p,{size:"small",type:"info"},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(o.settings.providers.length),1)]),_:1})]),(0,i.bF)(m,{type:"primary",size:"small",disabled:o.saving||!!o.testing||o.settings.providers.length>=8,onClick:t[4]||(t[4]=e=>l.openProvider())},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"plus"}),(0,i.eW)((0,a.v_)(e.$t("sysAI.addProvider")),1)]),_:1},8,["disabled"])]),o.settings.providers.length?((0,i.uX)(),(0,i.CE)("div",ym,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.settings.providers,t=>((0,i.uX)(),(0,i.CE)("article",{key:t.id,class:(0,a.C4)(["resource-card",{disabled:!t.enabled}])},[(0,i.Lk)("div",vm,[(0,i.Lk)("span",xm,(0,a.v_)(t.name||t.id),1),(0,i.bF)(r,{modelValue:t.enabled,"onUpdate:modelValue":e=>t.enabled=e,size:"small",disabled:o.saving||!!o.testing,"aria-label":e.$t("sysAI.enabled")},null,8,["modelValue","onUpdate:modelValue","disabled","aria-label"])]),(0,i.Lk)("div",km,[(0,i.Lk)("div",_m,[(0,i.bF)(u,{icon:"link"}),(0,i.Lk)("span",{title:t.baseUrl},(0,a.v_)(t.baseUrl),9,wm)]),(0,i.Lk)("div",Cm,[(0,i.bF)(u,{icon:"shield-alt"}),(0,i.Lk)("span",null,(0,a.v_)(l.keyPreview(t)),1)])]),(0,i.Lk)("div",Sm,[(0,i.bF)(m,{type:"primary",text:"",size:"small",disabled:o.saving||!!o.testing,onClick:e=>l.openProvider(t)},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"edit"}),(0,i.eW)((0,a.v_)(e.$t("sysAI.edit")),1)]),_:1},8,["disabled","onClick"]),(0,i.bF)(m,{type:"danger",text:"",size:"small",disabled:o.saving||!!o.testing,onClick:e=>l.removeProvider(t.id)},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"trash-alt"}),(0,i.eW)((0,a.v_)(e.$t("sysAI.remove")),1)]),_:1},8,["disabled","onClick"])])],2))),128))])):((0,i.uX)(),(0,i.CE)("div",mm,[(0,i.Lk)("span",fm,[(0,i.bF)(u,{icon:"server"})]),(0,i.Lk)("span",bm,(0,a.v_)(e.$t("sysAI.noProviders")),1),(0,i.bF)(m,{type:"primary",plain:"",disabled:o.saving,onClick:t[5]||(t[5]=e=>l.openProvider())},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"plus"}),(0,i.eW)((0,a.v_)(e.$t("sysAI.addProvider")),1)]),_:1},8,["disabled"])]))]),(0,i.Lk)("div",Fm,[(0,i.Lk)("div",Tm,[(0,i.Lk)("h4",null,[(0,i.bF)(u,{icon:"robot"}),(0,i.eW)((0,a.v_)(e.$t("sysAI.models")),1),(0,i.bF)(p,{size:"small",type:"info"},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(o.settings.models.length),1)]),_:1})]),(0,i.bF)(m,{type:"primary",size:"small",disabled:o.saving||!!o.testing||!o.settings.providers.length||o.settings.models.length>=16,onClick:t[6]||(t[6]=e=>l.openModel())},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"plus"}),(0,i.eW)((0,a.v_)(e.$t("sysAI.addModel")),1)]),_:1},8,["disabled"])]),o.settings.models.length?((0,i.uX)(),(0,i.CE)("div",Mm,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.settings.models,s=>((0,i.uX)(),(0,i.CE)("article",{key:s.id,class:(0,a.C4)(["resource-card",{disabled:!l.isModelAvailable(s)}])},[(0,i.Lk)("div",Dm,[(0,i.Lk)("span",Vm,(0,a.v_)(s.model),1),(0,i.Lk)("div",Lm,[(0,i.bF)(p,{size:"small",type:"info"},{default:(0,i.k6)(()=>[...t[31]||(t[31]=[(0,i.eW)("text",-1)])]),_:1}),s.vision?((0,i.uX)(),(0,i.Wv)(p,{key:0,size:"small"},{default:(0,i.k6)(()=>[...t[32]||(t[32]=[(0,i.eW)("img",-1)])]),_:1})):(0,i.Q3)("",!0)])]),(0,i.Lk)("div",Em,[(0,i.Lk)("div",Im,[(0,i.bF)(u,{icon:"server"}),(0,i.Lk)("span",null,(0,a.v_)(l.providerName(s.providerId)),1)])]),(0,i.Lk)("div",Um,[(0,i.bF)(m,{type:"primary",text:"",size:"small",loading:o.testing===s.id,disabled:o.saving||!!o.testing||!l.isModelAvailable(s),onClick:e=>l.testModel(s)},{default:(0,i.k6)(()=>[o.testing!==s.id?((0,i.uX)(),(0,i.Wv)(u,{key:0,icon:"link"})):(0,i.Q3)("",!0),(0,i.eW)((0,a.v_)(e.$t("sysAI.test")),1)]),_:2},1032,["loading","disabled","onClick"]),(0,i.bF)(m,{type:"primary",text:"",size:"small",disabled:o.saving||!!o.testing,onClick:e=>l.openModel(s)},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"edit"}),(0,i.eW)((0,a.v_)(e.$t("sysAI.edit")),1)]),_:1},8,["disabled","onClick"]),(0,i.bF)(m,{type:"danger",text:"",size:"small",disabled:o.saving||!!o.testing,onClick:e=>l.removeModel(s.id)},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"trash-alt"}),(0,i.eW)((0,a.v_)(e.$t("sysAI.remove")),1)]),_:1},8,["disabled","onClick"])])],2))),128))])):((0,i.uX)(),(0,i.CE)("div",Am,[(0,i.Lk)("span",$m,[(0,i.bF)(u,{icon:"robot"})]),(0,i.Lk)("span",Pm,(0,a.v_)(e.$t("sysAI.noModels")),1),(0,i.bF)(m,{type:"primary",plain:"",disabled:o.saving||!o.settings.providers.length,onClick:t[7]||(t[7]=e=>l.openModel())},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"plus"}),(0,i.eW)((0,a.v_)(e.$t("sysAI.addModel")),1)]),_:1},8,["disabled"])]))])]),(0,i.Lk)("h3",Om,(0,a.v_)(e.$t("sysAI.prompts")),1),(0,i.bF)(h,{"label-width":"120px",class:"prompt-form",disabled:o.saving},{default:(0,i.k6)(()=>[(0,i.bF)(d,null,{label:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysAI.tagPrompt"))+" ",1),(0,i.bF)(f,{placement:"right"},{content:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysAI.promptHint"))+" ",1),t[33]||(t[33]=(0,i.Lk)("code",null,"{language} {maxTags} {preferredTags}",-1))]),default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"question-circle",class:"help-icon"})]),_:1})]),default:(0,i.k6)(()=>[(0,i.bF)(b,{modelValue:o.prompt,"onUpdate:modelValue":t[8]||(t[8]=e=>o.prompt=e),type:"textarea",rows:8,maxlength:"8000","show-word-limit":""},null,8,["modelValue"]),(0,i.bF)(m,{class:"reset-prompt",onClick:t[9]||(t[9]=e=>o.prompt=o.defaultPrompt)},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysAI.resetPrompt")),1)]),_:1})]),_:1})]),_:1},8,["disabled"]),(0,i.Lk)("h3",Rm,(0,a.v_)(e.$t("sysAI.tagging")),1),(0,i.bF)(h,{model:l.tagging,"label-width":"120px",disabled:o.saving},{default:(0,i.k6)(()=>[(0,i.bF)(d,{label:e.$t("sysAI.enableTagging")},{default:(0,i.k6)(()=>[(0,i.bF)(r,{modelValue:l.tagging.enabled,"onUpdate:modelValue":t[10]||(t[10]=e=>l.tagging.enabled=e)},null,8,["modelValue"])]),_:1},8,["label"]),(0,i.bF)(d,{label:e.$t("sysAI.modelName")},{default:(0,i.k6)(()=>[(0,i.bF)(v,{modelValue:l.tagging.modelId,"onUpdate:modelValue":t[11]||(t[11]=e=>l.tagging.modelId=e)},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(l.visionModels,e=>((0,i.uX)(),(0,i.Wv)(y,{key:e.id,label:`${e.model||e.id} · ${l.providerName(e.providerId)}`,value:e.id,disabled:!l.isModelAvailable(e)},null,8,["label","value","disabled"]))),128))]),_:1},8,["modelValue"])]),_:1},8,["label"]),(0,i.bF)(d,{label:e.$t("sysAI.language")},{default:(0,i.k6)(()=>[(0,i.bF)(v,{modelValue:l.tagging.language,"onUpdate:modelValue":t[12]||(t[12]=e=>l.tagging.language=e)},{default:(0,i.k6)(()=>[(0,i.bF)(y,{label:"中文",value:"zh-CN"}),(0,i.bF)(y,{label:"English",value:"en"})]),_:1},8,["modelValue"])]),_:1},8,["label"]),(0,i.bF)(d,{label:e.$t("sysAI.maxTags")},{default:(0,i.k6)(()=>[(0,i.bF)(c,{modelValue:l.tagging.maxTags,"onUpdate:modelValue":t[13]||(t[13]=e=>l.tagging.maxTags=e),min:1,max:10},null,8,["modelValue"])]),_:1},8,["label"]),(0,i.bF)(d,null,{label:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysAI.vocabulary")),1),(0,i.bF)(f,{content:e.$t("sysAI.vocabularyHint"),placement:"right"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"question-circle",class:"help-icon"})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(b,{modelValue:o.vocabulary,"onUpdate:modelValue":t[14]||(t[14]=e=>o.vocabulary=e),type:"textarea",rows:3},null,8,["modelValue"])]),_:1})]),_:1},8,["model","disabled"]),(0,i.bF)(k,{show:!o.loading&&!o.providerDialogVisible&&!o.modelDialogVisible,loading:o.saving,dirty:e.hasUnsavedChanges,onClick:l.save},null,8,["show","loading","dirty","onClick"])])):o.loadError?((0,i.uX)(),(0,i.Wv)(_,{key:1,title:o.loadError,type:"error",closable:!1},null,8,["title"])):(0,i.Q3)("",!0),(0,i.bF)(S,{modelValue:o.providerDialogVisible,"onUpdate:modelValue":t[21]||(t[21]=e=>o.providerDialogVisible=e),title:e.$t(o.editingProvider?"sysAI.editProvider":"sysAI.addProvider"),width:"min(600px, 90vw)",class:"ai-dialog","destroy-on-close":"",onClosed:t[22]||(t[22]=e=>o.providerDraft=null)},{footer:(0,i.k6)(()=>[(0,i.bF)(m,{onClick:t[20]||(t[20]=e=>o.providerDialogVisible=!1)},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysAI.cancel")),1)]),_:1}),(0,i.bF)(m,{type:"primary",onClick:l.confirmProvider},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t(o.editingProvider?"sysAI.confirm":"sysAI.confirmAdd")),1)]),_:1},8,["onClick"])]),default:(0,i.k6)(()=>[o.providerDraft?((0,i.uX)(),(0,i.Wv)(h,{key:0,ref:"providerForm",model:o.providerDraft,rules:l.providerRules,"label-position":"top",class:"editor-form"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{label:e.$t("sysAI.name"),prop:"name"},{default:(0,i.k6)(()=>[(0,i.bF)(b,{modelValue:o.providerDraft.name,"onUpdate:modelValue":t[15]||(t[15]=e=>o.providerDraft.name=e),maxlength:"200"},null,8,["modelValue"])]),_:1},8,["label"]),(0,i.bF)(d,{label:e.$t("sysAI.protocol")},{default:(0,i.k6)(()=>[(0,i.bF)(b,{"model-value":"OpenAI compatible (chat)",disabled:""})]),_:1},8,["label"]),(0,i.bF)(d,{label:"Base URL",prop:"baseUrl"},{default:(0,i.k6)(()=>[(0,i.bF)(b,{modelValue:o.providerDraft.baseUrl,"onUpdate:modelValue":t[16]||(t[16]=e=>o.providerDraft.baseUrl=e),placeholder:"https://example.com/v1",maxlength:"500"},null,8,["modelValue"])]),_:1}),(0,i.bF)(d,{prop:"apiKey",class:"api-key-field"},{label:(0,i.k6)(()=>[t[34]||(t[34]=(0,i.eW)("API Key",-1)),(0,i.bF)(f,{content:e.$t("sysAI.credentialHint"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"question-circle",class:"help-icon"})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(b,{modelValue:o.providerDraft.apiKey,"onUpdate:modelValue":t[17]||(t[17]=e=>o.providerDraft.apiKey=e),type:"password","show-password":"",autocomplete:"new-password",placeholder:o.providerDraft.credential.configured?e.$t("sysAI.keyUnchanged"):e.$t("sysAI.enterKey"),maxlength:"2048",disabled:!o.canStoreCredentials||o.providerDraft.clearApiKey},null,8,["modelValue","placeholder","disabled"])]),_:1}),o.editingProvider&&o.providerDraft.credential.configured?((0,i.uX)(),(0,i.Wv)(d,{key:0,prop:"clearApiKey"},{default:(0,i.k6)(()=>[(0,i.bF)(C,{modelValue:o.providerDraft.clearApiKey,"onUpdate:modelValue":t[18]||(t[18]=e=>o.providerDraft.clearApiKey=e),disabled:!o.canStoreCredentials},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysAI.clearKey")),1)]),_:1},8,["modelValue","disabled"])]),_:1})):(0,i.Q3)("",!0),(0,i.bF)(d,{label:e.$t("sysAI.enabled")},{default:(0,i.k6)(()=>[(0,i.bF)(r,{modelValue:o.providerDraft.enabled,"onUpdate:modelValue":t[19]||(t[19]=e=>o.providerDraft.enabled=e)},null,8,["modelValue"])]),_:1},8,["label"])]),_:1},8,["model","rules"])):(0,i.Q3)("",!0)]),_:1},8,["modelValue","title"]),(0,i.bF)(S,{modelValue:o.modelDialogVisible,"onUpdate:modelValue":t[29]||(t[29]=e=>o.modelDialogVisible=e),title:e.$t(o.editingModel?"sysAI.editModel":"sysAI.addModel"),width:"min(600px, 90vw)",class:"ai-dialog","destroy-on-close":"",onClosed:t[30]||(t[30]=e=>o.modelDraft=null)},{footer:(0,i.k6)(()=>[(0,i.bF)(m,{onClick:t[28]||(t[28]=e=>o.modelDialogVisible=!1)},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysAI.cancel")),1)]),_:1}),(0,i.bF)(m,{type:"primary",onClick:l.confirmModel},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t(o.editingModel?"sysAI.confirm":"sysAI.confirmAdd")),1)]),_:1},8,["onClick"])]),default:(0,i.k6)(()=>[o.modelDraft?((0,i.uX)(),(0,i.Wv)(h,{key:0,ref:"modelForm",model:o.modelDraft,rules:l.modelRules,"label-position":"top",class:"editor-form"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{label:e.$t("sysAI.provider"),prop:"providerId"},{default:(0,i.k6)(()=>[(0,i.bF)(v,{modelValue:o.modelDraft.providerId,"onUpdate:modelValue":t[23]||(t[23]=e=>o.modelDraft.providerId=e)},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.settings.providers,e=>((0,i.uX)(),(0,i.Wv)(y,{key:e.id,label:e.name||e.id,value:e.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1},8,["label"]),(0,i.bF)(d,{label:e.$t("sysAI.modelName"),prop:"model"},{default:(0,i.k6)(()=>[(0,i.bF)(b,{modelValue:o.modelDraft.model,"onUpdate:modelValue":t[24]||(t[24]=e=>o.modelDraft.model=e),maxlength:"200"},null,8,["modelValue"])]),_:1},8,["label"]),(0,i.bF)(d,{label:e.$t("sysAI.vision")},{default:(0,i.k6)(()=>[(0,i.bF)(r,{modelValue:o.modelDraft.vision,"onUpdate:modelValue":t[25]||(t[25]=e=>o.modelDraft.vision=e)},null,8,["modelValue"])]),_:1},8,["label"]),(0,i.bF)(d,null,{label:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("sysAI.jsonMode")),1),(0,i.bF)(f,{placement:"top"},{content:(0,i.k6)(()=>[(0,i.Lk)("span",Wm,(0,a.v_)(e.$t("sysAI.jsonModeHint")),1)]),default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"question-circle",class:"help-icon"})]),_:1})]),default:(0,i.k6)(()=>[(0,i.bF)(v,{modelValue:o.modelDraft.structuredOutput,"onUpdate:modelValue":t[26]||(t[26]=e=>o.modelDraft.structuredOutput=e)},{default:(0,i.k6)(()=>[(0,i.bF)(y,{label:e.$t("sysAI.promptOnly"),value:"none"},null,8,["label"]),(0,i.bF)(y,{label:e.$t("sysAI.nativeJsonObject"),value:"json"},null,8,["label"])]),_:1},8,["modelValue"])]),_:1}),(0,i.bF)(d,{label:e.$t("sysAI.outputTokens")},{default:(0,i.k6)(()=>[(0,i.bF)(c,{modelValue:o.modelDraft.maxOutputTokens,"onUpdate:modelValue":t[27]||(t[27]=e=>o.modelDraft.maxOutputTokens=e),min:64,max:2048},null,8,["modelValue"])]),_:1},8,["label"])]),_:1},8,["model","rules"])):(0,i.Q3)("",!0)]),_:1},8,["modelValue","title"])])),[[F,o.loading]])}var zm=s(84344);const Bm="builtin.image-tags.v1",jm=e=>e+(globalThis.crypto?.randomUUID?.().replace(/-/g,"")||Date.now().toString(36)+Math.random().toString(36).slice(2));var Hm={mixins:[Og],name:"SysCogAI",components:{FloatingSaveButton:Hp},data(){return{settings:null,loading:!0,saving:!1,testing:"",loadError:"",prompt:"",defaultPrompt:"",vocabulary:"",canStoreCredentials:!1,providerDialogVisible:!1,modelDialogVisible:!1,providerDraft:null,modelDraft:null,editingProvider:!1,editingModel:!1}},computed:{editableSettings(){return this.settings?this.payload():null},tagging(){return this.settings.capabilities["image.tags"]},visionModels(){return this.settings?.models.filter(e=>e.vision)||[]},availableVisionModels(){return this.visionModels.filter(e=>this.isModelAvailable(e))},providerRules(){return{name:[this.requiredRule(this.$t("sysAI.name"))],baseUrl:[this.requiredRule("Base URL"),{validator:(e,t,s)=>{try{const e=new URL(t);if(!["https:","http:"].includes(e.protocol)||e.username||e.password||e.search||e.hash)throw new Error;s()}catch{s(new Error(this.$t("sysAI.invalidURL")))}},trigger:"blur"}],apiKey:[{validator:(e,t,s)=>this.canStoreCredentials?this.providerDraft?.credential.configured||this.providerDraft?.clearApiKey||t?.trim()?void s():s(new Error(this.$t("sysAI.enterKey"))):s(new Error(this.$t("sysAI.credentialHint"))),trigger:"blur"}]}},modelRules(){return{providerId:[this.requiredRule(this.$t("sysAI.provider"))],model:[this.requiredRule(this.$t("sysAI.modelName"))]}}},watch:{availableVisionModels(){this.syncTaggingModel()}},async mounted(){try{this.setConfig(await(0,zm.Lh)("/api/manage/sysConfig/ai"))}catch(e){this.loadError=this.errorText(e)}finally{this.loading=!1}},methods:{errorText(e){return(0,zm.wt)(e,this.$t,this.$te)},setConfig(e){this.canStoreCredentials=e.canStoreCredentials,this.defaultPrompt=e.defaults.tagPrompt,this.prompt=e.promptOverrides[Bm]?.template||this.defaultPrompt,this.vocabulary=e.capabilities["image.tags"].preferredTags.join(", "),this.settings=e,this.markSettingsSaved()},payload(){const e=JSON.parse(JSON.stringify(this.settings));return e.promptOverrides=this.prompt===this.defaultPrompt?{}:{[Bm]:{template:this.prompt}},e.capabilities["image.tags"].preferredTags=this.vocabulary.split(/[,,\n]/).map(e=>e.trim()).filter(Boolean),e},requiredRule(e){return{required:!0,whitespace:!0,message:this.$t("sysAI.required",{field:e}),trigger:"blur"}},providerName(e){return this.settings.providers.find(t=>t.id===e)?.name||e},isModelAvailable(e){return this.settings?.providers.some(t=>t.id===e.providerId&&t.enabled)||!1},syncTaggingModel(){if(!this.settings||this.availableVisionModels.some(e=>e.id===this.tagging.modelId))return;const e=!!this.tagging.modelId;this.tagging.modelId=this.availableVisionModels[0]?.id||"",!this.tagging.modelId&&e&&(this.tagging.enabled=!1)},keyPreview(e){if(e.clearApiKey)return this.$t("sysAI.keyNotConfigured");const t=e.apiKey?.trim();return t?t.length>6?`${t.slice(0,2)}******${t.slice(-4)}`:"******":e.credential.maskedKey||(e.credential.configured?"******":this.$t("sysAI.keyNotConfigured"))},openProvider(e){this.saving||this.testing||!e&&this.settings.providers.length>=8||(this.editingProvider=!!e,this.providerDraft=e?JSON.parse(JSON.stringify(e)):{id:jm("provider_"),name:"",protocol:"openai-compatible",baseUrl:"",enabled:!0,credential:{source:"stored",configured:!1}},this.providerDraft.credential={source:"stored",configured:"stored"===this.providerDraft.credential?.source&&!!this.providerDraft.credential.configured,maskedKey:this.providerDraft.credential?.maskedKey||""},this.providerDialogVisible=!0)},async confirmProvider(){if(!await this.$refs.providerForm.validate().catch(()=>!1))return;const e=JSON.parse(JSON.stringify(this.providerDraft));e.name=e.name.trim(),e.baseUrl=e.baseUrl.trim();const t=this.settings.providers.findIndex(t=>t.id===e.id);t<0?this.settings.providers.push(e):this.settings.providers.splice(t,1,e),this.providerDialogVisible=!1},removeProvider(e){this.settings.models.some(t=>t.providerId===e)?this.$message.warning(this.$t("sysAI.providerInUse")):this.settings.providers=this.settings.providers.filter(t=>t.id!==e)},openModel(e){this.saving||this.testing||!this.settings.providers.length||!e&&this.settings.models.length>=16||(this.editingModel=!!e,this.modelDraft=e?JSON.parse(JSON.stringify(e)):{id:jm("model_"),providerId:this.settings.providers[0].id,model:"",vision:!0,structuredOutput:"none",maxOutputTokens:256},this.modelDialogVisible=!0)},async confirmModel(){if(!await this.$refs.modelForm.validate().catch(()=>!1))return;const e=JSON.parse(JSON.stringify(this.modelDraft));e.model=e.model.trim();const t=this.settings.models.findIndex(t=>t.id===e.id);t<0?this.settings.models.push(e):this.settings.models.splice(t,1,e),this.syncTaggingModel(),this.modelDialogVisible=!1},removeModel(e){this.settings.models=this.settings.models.filter(t=>t.id!==e),this.syncTaggingModel()},async save(){if(!this.saving){this.saving=!0;try{this.setConfig(await(0,zm.Lh)("/api/manage/sysConfig/ai",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(this.payload())})),this.$message.success(this.$t("sysAI.saved"))}catch(e){this.$message.error(this.errorText(e))}finally{this.saving=!1}}},async testModel(e){if(!this.saving&&!this.testing&&this.isModelAvailable(e)){this.testing=e.id;try{const t=await(0,zm.Lh)("/api/manage/ai/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({config:this.payload(),modelId:e.id})});this.$message.success(this.$t("sysAI.testSuccess",{ms:t.elapsedMs}))}catch(t){this.$message.error(this.errorText(t))}finally{this.testing=""}}}}};const qm=(0,c.A)(Hm,[["render",Nm],["__scopeId","data-v-08cd17d0"]]);var Xm=qm,Km=s(48903),Qm={name:"SystemConfig",mixins:[Km.A],data(){return{activeIndex:"status",isSidebarCollapse:!1}},watch:{"$route.hash":{immediate:!0,handler(e){this.activeIndex=e.replace("#",""),window.scrollTo(0,0)}},activeIndex(e){const t=`#${e}`;this.$router.push({hash:t})}},components:{DashboardTabs:m.A,SysConfigTabs:u,SysCogStatus:Pu,SysCogUpload:Op,SysCogSecurity:Ng,SysCogPage:Qg,SysCogOthers:lm,SysCogAI:Xm},computed:{disableTooltip(){return window.innerWidth<768},currentComponent(){const e=this.$route.hash.replace("#","");switch(e){case"status":return Pu;case"upload":return Op;case"security":return Ng;case"page":return Qg;case"others":return lm;case"ai":return Xm;default:return Pu}}},methods:{handleLogout(){const e="/api/auth/logout";fetch(e,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({authType:"admin"})}).finally(()=>{this.$store.commit("setAdminLoggedIn",!1),this.$router.push("/adminLogin")})},setDefaultHash(){const e="#status";window.location.hash=e,this.activeIndex=e.replace("#","")}},mounted(){this.initializeBackground("adminBkImg",".container",!1,!0),window.location.hash||this.setDefaultHash()}};const Ym=(0,c.A)(Qm,[["render",v],["__scopeId","data-v-3c6c75cc"]]);var Gm=Ym},34396:function(e,t,s){s(85331),s(4885)},49187:function(e,t,s){s(85331),s(38736)},50333:function(e,t,s){s(85331),s(29092)},63003:function(e,t,s){s(85331)},64752:function(e,t,s){s(85331),s(38736),s(18785)},70415:function(e,t,s){s(85331),s(73565)},73565:function(e,t,s){s(85331)},84344:function(e,t,s){s.d(t,{EY:function(){return u},Lh:function(){return d},hP:function(){return h},wt:function(){return l}});s(44114),s(18111),s(61701),s(13579),s(64979);var i=s(70797);const a=262144,n=20971520;function o(e){if(e?.aborted)throw new DOMException("Cancelled","AbortError")}function l(e,t,s){const i=e?.code||e?.message,a=`aiErrors.${i}`,n=s(a)?t(a,{status:e.details?.status||e.status}):t("aiErrors.NETWORK_ERROR"),o=["code","type","requestId"].filter(t=>e?.details?.[t]).map(s=>`${t(`aiErrors.${s}`)}: ${e.details[s]}`);return o.length?`${n} (${o.join(", ")})`:n}const r=e=>({code:e.code||e.message,message:e.message,...e.details?{details:e.details}:{}});async function d(e,t={}){const s=await(0,i.A)(e,t);let a;try{a=await s.json()}catch{const e=new Error(`HTTP ${s.status}`);throw e.code=401===s.status?"AUTH_REQUIRED":s.ok?"INVALID_RESPONSE":"HTTP_ERROR",e.details={status:s.status},e}if(!a||"object"!==typeof a||Array.isArray(a)){const e=new Error("INVALID_RESPONSE");throw e.code="INVALID_RESPONSE",e}if(!s.ok){const e=new Error(a.error?.message||a.message||`HTTP ${s.status}`);throw e.code=a.error?.code||(401===s.status?"AUTH_REQUIRED":"HTTP_ERROR"),e.details={status:s.status,...a.error?.details},e}return a}async function c(e,t){o(t);const s=e.metadata?.FileType?.toLowerCase();if(s&&!["image/jpeg","image/png","image/webp","image/avif","image/gif"].includes(s))throw new Error("UNSUPPORTED_IMAGE");if(Number(e.metadata?.FileSizeBytes)>n)throw new Error("IMAGE_TOO_LARGE");const l=e.name.split("/").map(encodeURIComponent).join("/"),r=await(0,i.A)(`/file/${l}`,{signal:t});if(!r.ok){const e=new Error(`HTTP ${r.status}`);throw e.code="IMAGE_FETCH_FAILED",e.details={status:r.status},e}if(Number(r.headers.get("Content-Length"))>n)throw await(r.body?.cancel()),new Error("IMAGE_TOO_LARGE");const d=r.body.getReader(),c=[];let h=0;try{while(1){o(t);const{value:e,done:s}=await d.read();if(s)break;if(h+=e.byteLength,h>n)throw await d.cancel(),new Error("IMAGE_TOO_LARGE");c.push(e)}}finally{d.releaseLock()}const u=new Blob(c,{type:r.headers.get("Content-Type")||s});let p,g;o(t);try{"function"===typeof createImageBitmap?p=await createImageBitmap(u):(g=URL.createObjectURL(u),p=new Image,await new Promise((e,t)=>{p.onload=e,p.onerror=()=>t(new Error("UNSUPPORTED_IMAGE")),p.src=g})),o(t);const e=p.width||p.naturalWidth,s=p.height||p.naturalHeight;if(!e||!s)throw new Error("UNSUPPORTED_IMAGE");const i=document.createElement("canvas"),n=Math.min(1,768/Math.max(e,s));i.width=Math.max(1,Math.round(e*n)),i.height=Math.max(1,Math.round(s*n));const l=i.getContext("2d");l.fillStyle="#ffffff",l.fillRect(0,0,i.width,i.height),l.drawImage(p,0,0,i.width,i.height);for(const r of[.8,.6,.4]){o(t);const e=await new Promise(e=>i.toBlob(e,"image/jpeg",r));if(e&&e.size<=a&&(e.size<=131072||.4===r))return e}throw new Error("PREVIEW_TOO_LARGE")}catch(m){if(t?.aborted||"AbortError"===m.name||"PREVIEW_TOO_LARGE"===m.message)throw m;throw new Error("UNSUPPORTED_IMAGE")}finally{p?.close?.(),g&&URL.revokeObjectURL(g)}}async function h(e,{signal:t,batchSize:s=3,onResult:i,prepare:a=c}={}){s=Math.max(1,Math.min(3,s));const n=[];for(let c=0;c({fileId:e.file.name})))),h.forEach((e,t)=>u.append(`image${t}`,e.image,"preview.jpg"));try{const e=await d("/api/manage/ai/tags",{method:"POST",body:u,signal:t});if(o(t),!Array.isArray(e.results)||e.results.length!==h.length)throw new Error("INVALID_RESPONSE");for(let t=0;t"string"!==typeof e)||!/^[a-f0-9]{64}$/.test(s.sourceIdentity)))throw new Error("INVALID_RESPONSE")}for(const t of e.results)n.push(t),i?.(t)}catch(l){if(t?.aborted||"AbortError"===l.name)throw l;for(const e of h){const t={fileId:e.file.name,error:r(l)};n.push(t),i?.(t)}}}return n}async function u(e,t){const s=[];for(let a=0;a!e||e.fileId!==n[t].fileId||"boolean"!==typeof e.saved||e.saved&&(!Array.isArray(e.tags)||e.tags.some(e=>"string"!==typeof e))))throw new Error("INVALID_RESPONSE");for(const i of e.results)s.push(i),t?.(i)}catch(i){for(const e of n){const a={fileId:e.fileId,saved:!1,error:r(i)};s.push(a),t?.(a)}}}return s}},91114:function(e,t,s){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function a(e,t){if("object"!=i(e)||!e)return e;var s=e[Symbol.toPrimitive];if(void 0!==s){var a=s.call(e,t||"default");if("object"!=i(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}function n(e){var t=a(e,"string");return"symbol"==i(t)?t:t+""}function o(e,t,s){return(t=n(t))in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,e}s.d(t,{A:function(){return o}})},97769:function(e,t,s){s.d(t,{A:function(){return h}});var i=s(56768);const a={key:0,class:"channel-svg-icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},n={key:1,class:"channel-svg-icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},o={key:2,class:"channel-svg-icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"};function l(e,t,s,l,r,d){const c=(0,i.g2)("font-awesome-icon");return(0,i.uX)(),(0,i.CE)("span",(0,i.v6)(e.$attrs,{class:["channel-icon-wrapper",`channel-brand-${s.type}`]}),["telegram"===s.type?((0,i.uX)(),(0,i.CE)("svg",a,[...t[0]||(t[0]=[(0,i.Lk)("path",{d:"M417.28 795.733333 429.226667 615.253333 756.906667 320C771.413333 306.773333 753.92 300.373333 734.72 311.893333L330.24 567.466667 155.306667 512C117.76 501.333333 117.333333 475.306667 163.84 456.533333L845.226667 193.706667C876.373333 179.626667 906.24 201.386667 894.293333 249.173333L778.24 795.733333C770.133333 834.56 746.666667 843.946667 714.24 826.026667L537.6 695.466667 452.693333 777.813333C442.88 787.626667 434.773333 795.733333 417.28 795.733333Z"},null,-1)])])):"huggingface"===s.type?((0,i.uX)(),(0,i.CE)("svg",n,[...t[1]||(t[1]=[(0,i.Fv)('',9)])])):"webdav"===s.type?((0,i.uX)(),(0,i.CE)("svg",o,[...t[2]||(t[2]=[(0,i.Lk)("path",{d:"M446.293333 810.666667C384 898.986667 262.4 921.173333 174.506667 859.733333c-87.466667-61.44-107.946667-183.893333-46.506667-273.066666a195.626667 195.626667 0 0 1 152.746667-84.48l2.133333 61.013333c-38.826667 2.986667-76.373333 23.04-100.693333 58.026667-42.666667 61.44-29.44 144.213333 29.013333 185.6 58.88 40.96 141.226667 25.173333 183.893333-35.84 13.226667-19.2 20.906667-40.106667 23.893334-61.44v-43.093334l238.08-1.706666 2.986666-4.693334c22.613333-39.253333 71.68-52.906667 110.08-30.72a81.066667 81.066667 0 0 1 29.013334 110.933334c-22.613333 38.826667-72.106667 52.48-110.506667 30.293333-17.493333-9.813333-29.866667-25.6-35.413333-43.52l-173.653334 0.853333a211.626667 211.626667 0 0 1-33.28 82.773334m310.613334-304.64c107.946667 13.226667 184.746667 110.08 171.52 216.32-13.226667 106.666667-111.36 182.186667-219.306667 168.96a197.504 197.504 0 0 1-146.346667-94.293334l52.906667-30.72a137.386667 137.386667 0 0 0 98.986667 61.866667c74.666667 8.96 140.8-41.813333 149.76-113.066667 8.96-71.253333-43.946667-136.533333-117.76-145.493333-23.04-2.56-45.226667 0.426667-65.28 7.68l-36.266667 18.773333-110.08-203.52h-9.386667a81.322667 81.322667 0 0 1-78.933333-83.2c1.28-44.373333 39.68-78.933333 84.48-77.226666 44.8 2.56 80.213333 38.826667 78.933333 83.2-0.853333 18.773333-8.106667 35.84-19.626666 49.066666l81.066666 149.76c26.453333-8.533333 55.466667-11.52 85.333334-8.106666M352 389.973333c-42.666667-100.266667 2.56-215.04 101.12-256.853333 98.986667-41.813333 213.333333 5.546667 256 105.813333 25.173333 58.453333 20.053333 122.453333-8.533333 173.653334l-52.906667-30.72c17.92-34.56 20.906667-76.8 3.84-116.48-29.013333-68.266667-106.24-101.12-172.373333-73.386667-66.56 28.16-96.426667 106.666667-67.413334 174.933333 11.946667 28.16 32 49.92 56.32 64.426667l16.64 8.96-130.986666 212.906667c1.28 2.133333 2.986667 4.693333 4.266666 8.106666 20.906667 38.826667 6.4 87.893333-32.853333 108.8-38.826667 20.906667-87.893333 5.546667-109.226667-34.56-20.906667-39.68-6.4-88.746667 32.853334-109.653333 16.64-8.96 34.986667-11.093333 52.48-7.253333l98.56-160.853334c-20.053333-18.346667-37.12-41.386667-47.786667-67.84z"},null,-1)])])):((0,i.uX)(),(0,i.Wv)(c,{key:3,icon:d.fontAwesomeIcon},null,8,["icon"]))],16)}var r={name:"ChannelIcon",inheritAttrs:!1,props:{type:{type:String,required:!0}},computed:{fontAwesomeIcon(){const e={cfr2:["fab","cloudflare"],s3:["fab","aws"],discord:["fab","discord"]};return e[this.type]||"server"}}},d=s(71241);const c=(0,d.A)(r,[["render",l],["__scopeId","data-v-ce6ff2ce"]]);var h=c},98642:function(e,t,s){s(85331)}}]); +//# sourceMappingURL=126.844eba4a.js.map \ No newline at end of file diff --git a/frontend-dist/js/126.844eba4a.js.gz b/frontend-dist/js/126.844eba4a.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..4c4fbb42971f5fc85881f7c65b58b3bb5b353de0 GIT binary patch literal 115133 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 z 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 literal 0 HcmV?d00001 diff --git a/frontend-dist/js/757.47b4e4b0.js.map b/frontend-dist/js/126.844eba4a.js.map similarity index 56% rename from frontend-dist/js/757.47b4e4b0.js.map rename to frontend-dist/js/126.844eba4a.js.map index 9340d93..ddbf6e3 100644 --- a/frontend-dist/js/757.47b4e4b0.js.map +++ b/frontend-dist/js/126.844eba4a.js.map @@ -1 +1 @@ -{"version":3,"file":"js/757.47b4e4b0.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/components/config/SysConfigTabs.vue?351a","webpack://sanyue_imghub/./src/components/config/SysConfigTabs.vue","webpack://sanyue_imghub/./src/components/config/SysConfigTabs.vue?cf73","webpack://sanyue_imghub/./src/views/SystemConfig.vue?00e2","webpack://sanyue_imghub/./src/components/DateRangeCalendar.vue?f721","webpack://sanyue_imghub/./src/components/DateRangeCalendar.vue","webpack://sanyue_imghub/./src/components/DateRangeCalendar.vue?7c9a","webpack://sanyue_imghub/./src/components/config/SysCogStatus.vue?9c77","webpack://sanyue_imghub/./node_modules/@kurkle/color/dist/color.esm.js","webpack://sanyue_imghub/../../src/helpers/helpers.core.ts","webpack://sanyue_imghub/../../src/helpers/helpers.math.ts","webpack://sanyue_imghub/../../src/helpers/helpers.collection.ts","webpack://sanyue_imghub/../../src/helpers/helpers.extras.ts","webpack://sanyue_imghub/../../src/helpers/helpers.easing.ts","webpack://sanyue_imghub/../../src/helpers/helpers.color.ts","webpack://sanyue_imghub/../../src/core/core.animations.defaults.js","webpack://sanyue_imghub/../../src/core/core.layouts.defaults.js","webpack://sanyue_imghub/../../src/helpers/helpers.intl.ts","webpack://sanyue_imghub/../../src/core/core.ticks.js","webpack://sanyue_imghub/../../src/core/core.scale.defaults.js","webpack://sanyue_imghub/../../src/core/core.defaults.js","webpack://sanyue_imghub/../../src/helpers/helpers.canvas.ts","webpack://sanyue_imghub/../../src/helpers/helpers.options.ts","webpack://sanyue_imghub/../../src/helpers/helpers.config.ts","webpack://sanyue_imghub/../../src/helpers/helpers.curve.ts","webpack://sanyue_imghub/../../src/helpers/helpers.dom.ts","webpack://sanyue_imghub/../../src/helpers/helpers.interpolation.ts","webpack://sanyue_imghub/../../src/helpers/helpers.rtl.ts","webpack://sanyue_imghub/../../src/helpers/helpers.segment.js","webpack://sanyue_imghub/../../src/helpers/helpers.dataset.ts","webpack://sanyue_imghub/../src/core/core.animator.js","webpack://sanyue_imghub/../src/core/core.animation.js","webpack://sanyue_imghub/../src/core/core.animations.js","webpack://sanyue_imghub/../src/core/core.datasetController.js","webpack://sanyue_imghub/../src/controllers/controller.bar.js","webpack://sanyue_imghub/../src/controllers/controller.bubble.js","webpack://sanyue_imghub/../src/controllers/controller.doughnut.js","webpack://sanyue_imghub/../src/controllers/controller.line.js","webpack://sanyue_imghub/../src/controllers/controller.polarArea.js","webpack://sanyue_imghub/../src/controllers/controller.pie.js","webpack://sanyue_imghub/../src/controllers/controller.radar.js","webpack://sanyue_imghub/../src/controllers/controller.scatter.js","webpack://sanyue_imghub/../src/core/core.adapters.ts","webpack://sanyue_imghub/../src/core/core.interaction.js","webpack://sanyue_imghub/../src/core/core.layouts.js","webpack://sanyue_imghub/../src/platform/platform.base.js","webpack://sanyue_imghub/../src/platform/platform.basic.js","webpack://sanyue_imghub/../src/platform/platform.dom.js","webpack://sanyue_imghub/../src/platform/index.js","webpack://sanyue_imghub/../src/core/core.element.ts","webpack://sanyue_imghub/../src/core/core.scale.autoskip.js","webpack://sanyue_imghub/../src/core/core.scale.js","webpack://sanyue_imghub/../src/core/core.typedRegistry.js","webpack://sanyue_imghub/../src/core/core.registry.js","webpack://sanyue_imghub/../src/core/core.plugins.js","webpack://sanyue_imghub/../src/core/core.config.js","webpack://sanyue_imghub/../src/core/core.controller.js","webpack://sanyue_imghub/../src/elements/element.arc.ts","webpack://sanyue_imghub/../src/elements/element.line.js","webpack://sanyue_imghub/../src/elements/element.point.ts","webpack://sanyue_imghub/../src/elements/element.bar.js","webpack://sanyue_imghub/../src/plugins/plugin.filler/filler.segment.js","webpack://sanyue_imghub/../src/plugins/plugin.filler/filler.helper.js","webpack://sanyue_imghub/../src/plugins/plugin.filler/filler.options.js","webpack://sanyue_imghub/../src/plugins/plugin.filler/filler.target.stack.js","webpack://sanyue_imghub/../src/plugins/plugin.filler/simpleArc.js","webpack://sanyue_imghub/../src/plugins/plugin.filler/filler.target.js","webpack://sanyue_imghub/../src/plugins/plugin.filler/filler.drawing.js","webpack://sanyue_imghub/../src/plugins/plugin.filler/index.js","webpack://sanyue_imghub/../src/plugins/plugin.legend.js","webpack://sanyue_imghub/../src/plugins/plugin.subtitle.js","webpack://sanyue_imghub/../src/plugins/plugin.tooltip.js","webpack://sanyue_imghub/../src/scales/scale.category.js","webpack://sanyue_imghub/../src/scales/scale.linearbase.js","webpack://sanyue_imghub/../src/scales/scale.linear.js","webpack://sanyue_imghub/../src/scales/scale.logarithmic.js","webpack://sanyue_imghub/../src/scales/scale.radialLinear.js","webpack://sanyue_imghub/../src/scales/scale.time.js","webpack://sanyue_imghub/../src/scales/scale.timeseries.js","webpack://sanyue_imghub/../src/props.ts","webpack://sanyue_imghub/../src/utils.ts","webpack://sanyue_imghub/../src/chart.ts","webpack://sanyue_imghub/../src/typedCharts.ts","webpack://sanyue_imghub/./src/utils/batchProcessor.js","webpack://sanyue_imghub/./src/utils/indexRebuilder.js","webpack://sanyue_imghub/./src/utils/backupGenerator.js","webpack://sanyue_imghub/./src/utils/restoreProcessor.js","webpack://sanyue_imghub/./src/components/config/SysCogStatus.vue","webpack://sanyue_imghub/./src/components/config/SysCogStatus.vue?ce78","webpack://sanyue_imghub/./src/components/config/CustomSelect.vue?189e","webpack://sanyue_imghub/./src/components/config/CustomSelect.vue","webpack://sanyue_imghub/./src/components/config/CustomSelect.vue?1e7e","webpack://sanyue_imghub/./src/components/config/SysCogUpload.vue?f46d","webpack://sanyue_imghub/./src/components/config/SysCogUpload.vue","webpack://sanyue_imghub/./src/components/config/SysCogUpload.vue?a7b6","webpack://sanyue_imghub/./src/components/FloatingSaveButton.vue?2ea5","webpack://sanyue_imghub/./src/components/FloatingSaveButton.vue","webpack://sanyue_imghub/./src/components/FloatingSaveButton.vue?45e6","webpack://sanyue_imghub/./src/components/config/SysCogSecurity.vue?b758","webpack://sanyue_imghub/./src/utils/tokenExpiration.js","webpack://sanyue_imghub/./src/components/config/SysCogSecurity.vue","webpack://sanyue_imghub/./src/components/config/SysCogSecurity.vue?3739","webpack://sanyue_imghub/./src/components/config/SysCogPage.vue?ab49","webpack://sanyue_imghub/./src/components/config/SysCogPage.vue","webpack://sanyue_imghub/./src/components/config/SysCogPage.vue?4209","webpack://sanyue_imghub/./src/components/config/SysCogOthers.vue?c551","webpack://sanyue_imghub/./src/components/config/SysCogOthers.vue","webpack://sanyue_imghub/./src/components/config/SysCogOthers.vue?780f","webpack://sanyue_imghub/./src/views/SystemConfig.vue","webpack://sanyue_imghub/./src/views/SystemConfig.vue?d269","webpack://sanyue_imghub/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://sanyue_imghub/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://sanyue_imghub/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://sanyue_imghub/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://sanyue_imghub/./src/components/icons/ChannelIcon.vue?3436","webpack://sanyue_imghub/./src/components/icons/ChannelIcon.vue","webpack://sanyue_imghub/./src/components/icons/ChannelIcon.vue?8c05"],"sourcesContent":["import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle } from \"vue\";\nconst _hoisted_1 = {\n class: \"menu-list\"\n};\nconst _hoisted_2 = [\"onClick\"];\nconst _hoisted_3 = {\n class: \"menu-text\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"sidebar-container\", {\n 'is-collapsed': $props.isCollapse\n }]),\n ref: \"sidebar\",\n style: _normalizeStyle($options.sidebarStyle)\n }, [_createElementVNode(\"div\", _hoisted_1, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.menuItems, item => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: item.index,\n class: _normalizeClass([\"menu-item\", {\n 'is-active': $props.activeIndex === item.index\n }]),\n onClick: $event => $options.handleSelect(item.index)\n }, [_createVNode(_component_font_awesome_icon, {\n icon: item.icon,\n class: \"menu-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_3, _toDisplayString(_ctx.$t(item.titleKey)), 1)], 10, _hoisted_2);\n }), 128))]), _createElementVNode(\"div\", {\n class: \"toggle-button\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.toggleCollapse && $options.toggleCollapse(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: $props.isCollapse ? 'angle-double-right' : 'angle-double-left'\n }, null, 8, [\"icon\"])])], 6);\n}","export default {\n name: 'SysConfigTabs',\n props: {\n activeIndex: {\n type: String,\n default: 'status'\n },\n isCollapse: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n expandedWidth: null,\n menuItems: [{\n index: 'status',\n icon: 'chart-bar',\n titleKey: 'sysConfigTabs.systemStatus'\n }, {\n index: 'upload',\n icon: 'cloud-upload',\n titleKey: 'sysConfigTabs.uploadSettings'\n }, {\n index: 'security',\n icon: 'shield',\n titleKey: 'sysConfigTabs.securitySettings'\n }, {\n index: 'page',\n icon: 'pager',\n titleKey: 'sysConfigTabs.pageSettings'\n }, {\n index: 'others',\n icon: 'cog',\n titleKey: 'sysConfigTabs.otherSettings'\n }]\n };\n },\n computed: {\n collapsedWidth() {\n return window.innerWidth <= 768 ? 50 : 56;\n },\n sidebarStyle() {\n if (this.isCollapse) {\n return {\n width: this.collapsedWidth + 'px'\n };\n }\n return this.expandedWidth ? {\n width: this.expandedWidth + 'px'\n } : {};\n }\n },\n watch: {\n '$i18n.locale'() {\n this.$nextTick(() => this.measureWidth());\n }\n },\n methods: {\n toggleCollapse() {\n this.$emit('update:isCollapse', !this.isCollapse);\n },\n checkMobile() {\n const isMobile = window.innerWidth <= 768;\n this.$emit('update:isCollapse', isMobile);\n },\n handleSelect(index) {\n this.$emit('update:activeIndex', index);\n },\n measureWidth() {\n const el = this.$refs.sidebar;\n if (!el) return;\n // Temporarily expand to measure natural content width\n const prevWidth = el.style.width;\n const prevTransition = el.style.transition;\n const wasCollapsed = el.classList.contains('is-collapsed');\n el.style.transition = 'none';\n if (wasCollapsed) {\n el.classList.remove('is-collapsed');\n }\n el.style.width = 'auto';\n // Force reflow to apply changes\n void el.offsetWidth;\n const natural = el.scrollWidth;\n // Restore original state\n el.style.width = prevWidth;\n if (wasCollapsed) {\n el.classList.add('is-collapsed');\n }\n void el.offsetWidth;\n el.style.transition = prevTransition;\n this.expandedWidth = natural;\n }\n },\n mounted() {\n this.checkMobile();\n this.$nextTick(() => this.measureWidth());\n window.addEventListener('resize', this.checkMobile);\n },\n beforeDestroy() {\n window.removeEventListener('resize', this.checkMobile);\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./SysConfigTabs.vue?vue&type=template&id=418ec867&scoped=true\"\nimport script from \"./SysConfigTabs.vue?vue&type=script&lang=js\"\nexport * from \"./SysConfigTabs.vue?vue&type=script&lang=js\"\n\nimport \"./SysConfigTabs.vue?vue&type=style&index=0&id=418ec867&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-418ec867\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, resolveDynamicComponent as _resolveDynamicComponent, normalizeClass as _normalizeClass, openBlock as _openBlock, createBlock as _createBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"container\"\n};\nconst _hoisted_2 = {\n class: \"header-content admin-header-content\"\n};\nconst _hoisted_3 = {\n class: \"header-action\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_DashboardTabs = _resolveComponent(\"DashboardTabs\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_header = _resolveComponent(\"el-header\");\n const _component_SysConfigTabs = _resolveComponent(\"SysConfigTabs\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_header, null, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createVNode(_component_DashboardTabs, {\n activeTab: \"systemConfig\"\n }), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('sysConfig.logout'),\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"sign-out-alt\",\n class: \"header-icon\",\n onClick: $options.handleLogout\n }, null, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])])]),\n _: 1\n }), _createVNode(_component_SysConfigTabs, {\n activeIndex: $data.activeIndex,\n \"onUpdate:activeIndex\": _cache[0] || (_cache[0] = $event => $data.activeIndex = $event),\n isCollapse: $data.isSidebarCollapse,\n \"onUpdate:isCollapse\": _cache[1] || (_cache[1] = $event => $data.isSidebarCollapse = $event)\n }, null, 8, [\"activeIndex\", \"isCollapse\"]), (_openBlock(), _createBlock(_resolveDynamicComponent($options.currentComponent), {\n class: _normalizeClass(['main-container', {\n 'collapsed': $data.isSidebarCollapse\n }])\n }, null, 8, [\"class\"]))]);\n}","import { vModelText as _vModelText, createElementVNode as _createElementVNode, withDirectives as _withDirectives, toDisplayString as _toDisplayString, resolveComponent as _resolveComponent, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass } from \"vue\";\nconst _hoisted_1 = {\n class: \"date-range-calendar\"\n};\nconst _hoisted_2 = {\n class: \"selected-range\"\n};\nconst _hoisted_3 = {\n class: \"selected-range-inputs\"\n};\nconst _hoisted_4 = [\"aria-label\"];\nconst _hoisted_5 = {\n class: \"date-range-separator\"\n};\nconst _hoisted_6 = [\"aria-label\"];\nconst _hoisted_7 = {\n class: \"calendar-header\"\n};\nconst _hoisted_8 = [\"aria-label\"];\nconst _hoisted_9 = {\n class: \"calendar-title\"\n};\nconst _hoisted_10 = [\"aria-label\"];\nconst _hoisted_11 = {\n class: \"calendar-weekdays\"\n};\nconst _hoisted_12 = {\n class: \"calendar-grid\"\n};\nconst _hoisted_13 = [\"onClick\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"div\", _hoisted_3, [_withDirectives(_createElementVNode(\"input\", {\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.inputStart = $event),\n class: \"date-input\",\n type: \"text\",\n inputmode: \"numeric\",\n \"aria-label\": $options.startDateLabel,\n onChange: _cache[1] || (_cache[1] = (...args) => $options.handleManualInput && $options.handleManualInput(...args))\n }, null, 40, _hoisted_4), [[_vModelText, $data.inputStart, void 0, {\n trim: true\n }]]), _createElementVNode(\"span\", _hoisted_5, _toDisplayString($options.rangeSeparator), 1), _withDirectives(_createElementVNode(\"input\", {\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.inputEnd = $event),\n class: \"date-input\",\n type: \"text\",\n inputmode: \"numeric\",\n \"aria-label\": $options.endDateLabel,\n onChange: _cache[3] || (_cache[3] = (...args) => $options.handleManualInput && $options.handleManualInput(...args))\n }, null, 40, _hoisted_6), [[_vModelText, $data.inputEnd, void 0, {\n trim: true\n }]])])]), _createElementVNode(\"div\", _hoisted_7, [_createElementVNode(\"button\", {\n type: \"button\",\n class: \"calendar-nav\",\n \"aria-label\": $options.previousMonthLabel,\n onClick: _cache[4] || (_cache[4] = (...args) => $options.goToPreviousMonth && $options.goToPreviousMonth(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"chevron-left\"\n })], 8, _hoisted_8), _createElementVNode(\"div\", _hoisted_9, _toDisplayString($options.monthTitle), 1), _createElementVNode(\"button\", {\n type: \"button\",\n class: \"calendar-nav\",\n \"aria-label\": $options.nextMonthLabel,\n onClick: _cache[5] || (_cache[5] = (...args) => $options.goToNextMonth && $options.goToNextMonth(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"chevron-right\"\n })], 8, _hoisted_10)]), _createElementVNode(\"div\", _hoisted_11, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.weekdayLabels, weekday => {\n return _openBlock(), _createElementBlock(\"span\", {\n key: weekday\n }, _toDisplayString(weekday), 1);\n }), 128))]), _createElementVNode(\"div\", _hoisted_12, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.calendarDays, day => {\n return _openBlock(), _createElementBlock(\"button\", {\n key: day.key,\n type: \"button\",\n class: _normalizeClass([\"calendar-day\", {\n 'is-muted': !day.isCurrentMonth,\n 'is-today': day.isToday,\n 'is-range-start': day.key === $data.draftStart,\n 'is-range-end': day.key === $data.draftEnd,\n 'is-in-range': $options.isInRange(day.key)\n }]),\n onClick: $event => $options.selectDay(day.key)\n }, _toDisplayString(day.dayOfMonth), 11, _hoisted_13);\n }), 128))])]);\n}","const DAY_MS = 24 * 60 * 60 * 1000;\nfunction padDatePart(value) {\n return String(value).padStart(2, '0');\n}\nfunction formatDateKey(date) {\n return `${date.getFullYear()}-${padDatePart(date.getMonth() + 1)}-${padDatePart(date.getDate())}`;\n}\nfunction parseDateKey(value) {\n if (typeof value !== 'string') return null;\n const match = value.trim().match(/^(\\d{4})[-/](\\d{1,2})[-/](\\d{1,2})$/);\n if (!match) return null;\n const year = Number(match[1]);\n const month = Number(match[2]) - 1;\n const day = Number(match[3]);\n const date = new Date(year, month, day);\n if (date.getFullYear() !== year || date.getMonth() !== month || date.getDate() !== day) {\n return null;\n }\n date.setHours(0, 0, 0, 0);\n return date;\n}\nfunction shiftMonth(date, amount) {\n return new Date(date.getFullYear(), date.getMonth() + amount, 1);\n}\nexport default {\n name: 'DateRangeCalendar',\n props: {\n modelValue: {\n type: Array,\n default: () => []\n }\n },\n emits: ['update:modelValue', 'change'],\n data() {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n return {\n displayYear: today.getFullYear(),\n displayMonth: today.getMonth(),\n draftStart: '',\n draftEnd: '',\n inputStart: '',\n inputEnd: '',\n awaitingEnd: false\n };\n },\n computed: {\n previousMonthLabel() {\n return this.$t('dateRangeCalendar.previousMonth');\n },\n nextMonthLabel() {\n return this.$t('dateRangeCalendar.nextMonth');\n },\n startDateLabel() {\n return this.$t('dateRangeCalendar.startDate');\n },\n endDateLabel() {\n return this.$t('dateRangeCalendar.endDate');\n },\n rangeSeparator() {\n return this.$t('dateRangeCalendar.rangeSeparator');\n },\n monthTitle() {\n return this.$t('dateRangeCalendar.monthTitle', {\n year: this.displayYear,\n month: padDatePart(this.displayMonth + 1)\n });\n },\n weekdayLabels() {\n return [this.$t('dateRangeCalendar.weekdaySun'), this.$t('dateRangeCalendar.weekdayMon'), this.$t('dateRangeCalendar.weekdayTue'), this.$t('dateRangeCalendar.weekdayWed'), this.$t('dateRangeCalendar.weekdayThu'), this.$t('dateRangeCalendar.weekdayFri'), this.$t('dateRangeCalendar.weekdaySat')];\n },\n calendarDays() {\n const monthStart = new Date(this.displayYear, this.displayMonth, 1);\n const start = new Date(this.displayYear, this.displayMonth, 1 - monthStart.getDay());\n const todayKey = formatDateKey(new Date());\n return Array.from({\n length: 42\n }, (_, index) => {\n const date = new Date(start.getTime() + index * DAY_MS);\n const key = formatDateKey(date);\n return {\n key,\n dayOfMonth: date.getDate(),\n isCurrentMonth: date.getMonth() === this.displayMonth,\n isToday: key === todayKey\n };\n });\n }\n },\n watch: {\n modelValue: {\n immediate: true,\n handler(value) {\n this.syncFromModel(value);\n }\n }\n },\n methods: {\n syncFromModel(value) {\n const startDate = parseDateKey(value?.[0]);\n const endDate = parseDateKey(value?.[1]);\n this.draftStart = startDate ? formatDateKey(startDate) : '';\n this.draftEnd = endDate ? formatDateKey(endDate) : '';\n this.inputStart = this.draftStart;\n this.inputEnd = this.draftEnd;\n this.awaitingEnd = false;\n const displayDate = startDate || endDate;\n if (displayDate) {\n this.displayYear = displayDate.getFullYear();\n this.displayMonth = displayDate.getMonth();\n }\n },\n goToPreviousMonth() {\n const date = shiftMonth(new Date(this.displayYear, this.displayMonth, 1), -1);\n this.displayYear = date.getFullYear();\n this.displayMonth = date.getMonth();\n },\n goToNextMonth() {\n const date = shiftMonth(new Date(this.displayYear, this.displayMonth, 1), 1);\n this.displayYear = date.getFullYear();\n this.displayMonth = date.getMonth();\n },\n selectDay(key) {\n if (!this.draftStart || this.draftEnd || !this.awaitingEnd) {\n this.draftStart = key;\n this.draftEnd = '';\n this.inputStart = key;\n this.inputEnd = '';\n this.awaitingEnd = true;\n return;\n }\n const range = key < this.draftStart ? [key, this.draftStart] : [this.draftStart, key];\n this.draftStart = range[0];\n this.draftEnd = range[1];\n this.inputStart = range[0];\n this.inputEnd = range[1];\n this.awaitingEnd = false;\n this.commitRange(range);\n },\n handleManualInput() {\n const startDate = parseDateKey(this.inputStart);\n const endDate = parseDateKey(this.inputEnd);\n if (!startDate || !endDate) return;\n const startKey = formatDateKey(startDate);\n const endKey = formatDateKey(endDate);\n const range = startKey <= endKey ? [startKey, endKey] : [endKey, startKey];\n this.draftStart = range[0];\n this.draftEnd = range[1];\n this.inputStart = range[0];\n this.inputEnd = range[1];\n this.awaitingEnd = false;\n this.displayYear = startDate.getFullYear();\n this.displayMonth = startDate.getMonth();\n this.commitRange(range);\n },\n commitRange(range) {\n this.$emit('update:modelValue', range);\n this.$emit('change', range);\n },\n isInRange(key) {\n return Boolean(this.draftStart && this.draftEnd && key > this.draftStart && key < this.draftEnd);\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DateRangeCalendar.vue?vue&type=template&id=5fbe496c&scoped=true\"\nimport script from \"./DateRangeCalendar.vue?vue&type=script&lang=js\"\nexport * from \"./DateRangeCalendar.vue?vue&type=script&lang=js\"\n\nimport \"./DateRangeCalendar.vue?vue&type=style&index=0&id=5fbe496c&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5fbe496c\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, normalizeStyle as _normalizeStyle, createBlock as _createBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"status-panel\"\n};\nconst _hoisted_2 = [\"aria-label\"];\nconst _hoisted_3 = {\n class: \"status-hero-copy\"\n};\nconst _hoisted_4 = {\n class: \"status-hero-kicker\"\n};\nconst _hoisted_5 = {\n class: \"system-health-badge\",\n \"aria-live\": \"polite\"\n};\nconst _hoisted_6 = {\n class: \"status-hero-date\"\n};\nconst _hoisted_7 = {\n class: \"status-hero-title\"\n};\nconst _hoisted_8 = {\n class: \"status-hero-summary\",\n \"aria-live\": \"polite\"\n};\nconst _hoisted_9 = {\n class: \"status-hero-time-card\"\n};\nconst _hoisted_10 = {\n class: \"status-hero-time-caption\"\n};\nconst _hoisted_11 = [\"datetime\"];\nconst _hoisted_12 = {\n class: \"status-hero-timezone\"\n};\nconst _hoisted_13 = {\n class: \"overview-cards\"\n};\nconst _hoisted_14 = {\n class: \"card-icon\"\n};\nconst _hoisted_15 = {\n class: \"card-content\"\n};\nconst _hoisted_16 = {\n class: \"card-title\"\n};\nconst _hoisted_17 = {\n class: \"card-value\"\n};\nconst _hoisted_18 = {\n class: \"card-subtitle\"\n};\nconst _hoisted_19 = {\n class: \"overview-card index-status\"\n};\nconst _hoisted_20 = {\n class: \"card-icon\"\n};\nconst _hoisted_21 = {\n class: \"card-content\"\n};\nconst _hoisted_22 = {\n class: \"card-title\"\n};\nconst _hoisted_23 = {\n class: \"card-value\"\n};\nconst _hoisted_24 = {\n class: \"card-subtitle\"\n};\nconst _hoisted_25 = {\n class: \"card-icon\"\n};\nconst _hoisted_26 = {\n class: \"card-content\"\n};\nconst _hoisted_27 = {\n class: \"card-title\"\n};\nconst _hoisted_28 = {\n class: \"card-value\"\n};\nconst _hoisted_29 = {\n class: \"card-subtitle\"\n};\nconst _hoisted_30 = {\n class: \"charts-section\"\n};\nconst _hoisted_31 = {\n class: \"chart-card trend-chart-card\"\n};\nconst _hoisted_32 = {\n class: \"chart-header trend-chart-header\"\n};\nconst _hoisted_33 = {\n class: \"chart-title\"\n};\nconst _hoisted_34 = {\n class: \"trend-controls\"\n};\nconst _hoisted_35 = {\n class: \"trend-date-panel\"\n};\nconst _hoisted_36 = {\n class: \"chart-content trend-chart-content\"\n};\nconst _hoisted_37 = {\n key: 0,\n class: \"empty-state trend-empty-state\"\n};\nconst _hoisted_38 = {\n key: 1,\n class: \"line-chart-wrapper\"\n};\nconst _hoisted_39 = {\n class: \"chart-card\"\n};\nconst _hoisted_40 = {\n class: \"chart-header\"\n};\nconst _hoisted_41 = {\n class: \"chart-content\"\n};\nconst _hoisted_42 = {\n key: 0,\n class: \"empty-state\"\n};\nconst _hoisted_43 = {\n key: 1,\n class: \"pie-chart-container\"\n};\nconst _hoisted_44 = {\n class: \"pie-chart-wrapper\"\n};\nconst _hoisted_45 = {\n class: \"chart-center-text\"\n};\nconst _hoisted_46 = {\n class: \"center-value\"\n};\nconst _hoisted_47 = {\n class: \"center-label\"\n};\nconst _hoisted_48 = {\n class: \"chart-legend\"\n};\nconst _hoisted_49 = {\n class: \"legend-label\"\n};\nconst _hoisted_50 = {\n class: \"legend-value\"\n};\nconst _hoisted_51 = {\n class: \"legend-percent\"\n};\nconst _hoisted_52 = {\n class: \"chart-card\"\n};\nconst _hoisted_53 = {\n class: \"chart-header\"\n};\nconst _hoisted_54 = {\n class: \"chart-content\"\n};\nconst _hoisted_55 = {\n key: 0,\n class: \"empty-state\"\n};\nconst _hoisted_56 = {\n key: 1,\n class: \"pie-chart-container\"\n};\nconst _hoisted_57 = {\n class: \"pie-chart-wrapper\"\n};\nconst _hoisted_58 = {\n class: \"chart-center-text\"\n};\nconst _hoisted_59 = {\n class: \"center-value\"\n};\nconst _hoisted_60 = {\n class: \"center-label\"\n};\nconst _hoisted_61 = {\n class: \"chart-legend\"\n};\nconst _hoisted_62 = {\n class: \"legend-label\"\n};\nconst _hoisted_63 = {\n class: \"legend-value\"\n};\nconst _hoisted_64 = {\n class: \"legend-percent\"\n};\nconst _hoisted_65 = {\n class: \"actions-section\"\n};\nconst _hoisted_66 = {\n class: \"action-card\"\n};\nconst _hoisted_67 = {\n class: \"action-header\"\n};\nconst _hoisted_68 = {\n class: \"action-content\"\n};\nconst _hoisted_69 = {\n key: 0,\n class: \"progress-container\"\n};\nconst _hoisted_70 = {\n class: \"progress-header\"\n};\nconst _hoisted_71 = {\n class: \"progress-phase\"\n};\nconst _hoisted_72 = {\n class: \"progress-percentage\"\n};\nconst _hoisted_73 = {\n class: \"progress-details\"\n};\nconst _hoisted_74 = {\n key: 0,\n class: \"progress-count\"\n};\nconst _hoisted_75 = {\n key: 1,\n class: \"progress-time\"\n};\nconst _hoisted_76 = {\n key: 0,\n class: \"progress-message\"\n};\nconst _hoisted_77 = {\n key: 1,\n class: \"error-container\"\n};\nconst _hoisted_78 = {\n class: \"error-icon\"\n};\nconst _hoisted_79 = {\n class: \"error-content\"\n};\nconst _hoisted_80 = {\n class: \"error-message\"\n};\nconst _hoisted_81 = {\n key: 0,\n class: \"error-suggestion\"\n};\nconst _hoisted_82 = {\n class: \"error-actions\"\n};\nconst _hoisted_83 = {\n key: 2,\n class: \"action-buttons\"\n};\nconst _hoisted_84 = {\n class: \"restore-section\"\n};\nconst _hoisted_85 = {\n key: 0,\n class: \"file-info-section\"\n};\nconst _hoisted_86 = [\"src\"];\nconst _hoisted_87 = {\n key: 2,\n class: \"card-bg-fallback\"\n};\nconst _hoisted_88 = {\n class: \"file-card-header\"\n};\nconst _hoisted_89 = {\n class: \"info-card-footer\"\n};\nconst _hoisted_90 = {\n class: \"file-name\"\n};\nconst _hoisted_91 = {\n class: \"file-meta\"\n};\nconst _hoisted_92 = [\"src\"];\nconst _hoisted_93 = {\n key: 2,\n class: \"card-bg-fallback\"\n};\nconst _hoisted_94 = {\n class: \"file-card-header warning\"\n};\nconst _hoisted_95 = {\n class: \"info-card-footer\"\n};\nconst _hoisted_96 = {\n class: \"file-name\"\n};\nconst _hoisted_97 = {\n class: \"file-meta\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_radio_button = _resolveComponent(\"el-radio-button\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_DateRangeCalendar = _resolveComponent(\"DateRangeCalendar\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _component_Line = _resolveComponent(\"Line\");\n const _component_Doughnut = _resolveComponent(\"Doughnut\");\n const _component_el_progress = _resolveComponent(\"el-progress\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_image = _resolveComponent(\"el-image\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"section\", {\n class: _normalizeClass([\"status-hero\", `is-${$options.systemHealthState}`]),\n \"aria-label\": _ctx.$t('sysStatus.systemOverview')\n }, [_createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createElementVNode(\"span\", _hoisted_5, [_cache[12] || (_cache[12] = _createElementVNode(\"span\", {\n class: \"system-health-dot\",\n \"aria-hidden\": \"true\"\n }, null, -1)), _createTextVNode(\" \" + _toDisplayString($options.systemHealthLabel), 1)]), _createElementVNode(\"span\", _hoisted_6, _toDisplayString($options.currentDateLabel), 1)]), _createElementVNode(\"h1\", _hoisted_7, _toDisplayString($options.greetingTitle), 1), _createElementVNode(\"p\", _hoisted_8, _toDisplayString($options.systemStatusSummary), 1)]), _createElementVNode(\"div\", _hoisted_9, [_createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('sysStatus.localTime')), 1), _createElementVNode(\"time\", {\n class: \"status-hero-time\",\n datetime: $data.currentTime.toISOString()\n }, _toDisplayString($options.currentTimeLabel), 9, _hoisted_11), _createElementVNode(\"span\", _hoisted_12, _toDisplayString($options.timeZoneLabel), 1)])], 10, _hoisted_2), _createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"div\", {\n class: \"overview-card total-files\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.fetchIndexInfo && $options.fetchIndexInfo(...args))\n }, [_createElementVNode(\"div\", _hoisted_14, [_createVNode(_component_font_awesome_icon, {\n icon: \"database\"\n })]), _createElementVNode(\"div\", _hoisted_15, [_createElementVNode(\"div\", _hoisted_16, _toDisplayString(_ctx.$t('sysStatus.totalFiles')), 1), _createElementVNode(\"div\", _hoisted_17, _toDisplayString($data.indexInfo.totalFiles?.toLocaleString() || '0'), 1), _createElementVNode(\"div\", _hoisted_18, _toDisplayString(_ctx.$t('sysStatus.clickToRefresh')), 1)])]), _createElementVNode(\"div\", _hoisted_19, [_createElementVNode(\"div\", _hoisted_20, [_createVNode(_component_font_awesome_icon, {\n icon: \"clock\"\n })]), _createElementVNode(\"div\", _hoisted_21, [_createElementVNode(\"div\", _hoisted_22, _toDisplayString(_ctx.$t('sysStatus.indexUpdateTime')), 1), _createElementVNode(\"div\", _hoisted_23, _toDisplayString($options.formatTime($data.indexInfo.lastUpdated)), 1), _createElementVNode(\"div\", _hoisted_24, _toDisplayString($options.getTimeAgo($data.indexInfo.lastUpdated)), 1)])]), _createElementVNode(\"div\", {\n class: \"overview-card system-version\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.openReleases && $options.openReleases(...args))\n }, [_createElementVNode(\"div\", _hoisted_25, [_createVNode(_component_font_awesome_icon, {\n icon: \"code-branch\"\n })]), _createElementVNode(\"div\", _hoisted_26, [_createElementVNode(\"div\", _hoisted_27, _toDisplayString(_ctx.$t('sysStatus.systemVersion')), 1), _createElementVNode(\"div\", _hoisted_28, \"v\" + _toDisplayString($data.version), 1), _createElementVNode(\"div\", _hoisted_29, _toDisplayString(_ctx.$t('sysStatus.clickToViewChangelog')), 1)])])]), _createElementVNode(\"div\", _hoisted_30, [_createElementVNode(\"div\", _hoisted_31, [_createElementVNode(\"div\", _hoisted_32, [_createElementVNode(\"div\", _hoisted_33, [_createVNode(_component_font_awesome_icon, {\n icon: \"chart-line\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('sysStatus.uploadTrend')), 1), _createVNode(_component_el_button, {\n class: \"trend-calendar-btn\",\n circle: \"\",\n \"aria-label\": _ctx.$t('sysStatus.selectDateRange'),\n onClick: $options.openTrendDateDialog\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"calendar\"\n })]),\n _: 1\n }, 8, [\"aria-label\", \"onClick\"])]), _createElementVNode(\"div\", _hoisted_34, [_createVNode(_component_el_radio_group, {\n modelValue: $data.trendGroupBy,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.trendGroupBy = $event),\n size: \"small\",\n class: \"trend-group-switch\",\n \"aria-label\": _ctx.$t('sysStatus.uploadTrendGroupBy')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio_button, {\n label: \"channel\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysStatus.byChannelType')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio_button, {\n label: \"channelName\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysStatus.byChannelName')), 1)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\", \"aria-label\"])])]), _createVNode(_component_el_dialog, {\n modelValue: $data.trendDatePickerVisible,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $data.trendDatePickerVisible = $event),\n title: _ctx.$t('sysStatus.selectDateRange'),\n width: $options.trendDateDialogWidth,\n class: \"trend-date-dialog\",\n \"align-center\": \"\",\n \"append-to-body\": \"\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_35, [_createVNode(_component_DateRangeCalendar, {\n modelValue: $data.trendDateRange,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.trendDateRange = $event),\n onChange: $options.handleTrendDateRangeChange\n }, null, 8, [\"modelValue\", \"onChange\"])])]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"width\"]), _createElementVNode(\"div\", _hoisted_36, [!$options.hasTrendData ? (_openBlock(), _createElementBlock(\"div\", _hoisted_37, [_createVNode(_component_font_awesome_icon, {\n icon: \"inbox\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('sysStatus.noData')), 1)])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_38, [_createVNode(_component_Line, {\n data: $options.uploadTrendChartData,\n options: $options.lineChartOptions\n }, null, 8, [\"data\", \"options\"])]))])]), _createElementVNode(\"div\", _hoisted_39, [_createElementVNode(\"div\", _hoisted_40, [_createVNode(_component_font_awesome_icon, {\n icon: \"share-alt\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('sysStatus.channelDistribution')), 1)]), _createElementVNode(\"div\", _hoisted_41, [Object.keys($data.indexInfo.channelStats || {}).length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_42, [_createVNode(_component_font_awesome_icon, {\n icon: \"inbox\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('sysStatus.noData')), 1)])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_43, [_createElementVNode(\"div\", _hoisted_44, [_createVNode(_component_Doughnut, {\n data: $options.channelChartData,\n options: $options.chartOptions\n }, null, 8, [\"data\", \"options\"]), _createElementVNode(\"div\", _hoisted_45, [_createElementVNode(\"div\", _hoisted_46, _toDisplayString($data.indexInfo.totalFiles?.toLocaleString() || '0'), 1), _createElementVNode(\"div\", _hoisted_47, _toDisplayString(_ctx.$t('sysStatus.totalFilesLabel')), 1)])]), _createElementVNode(\"div\", _hoisted_48, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.indexInfo.channelStats, (count, channel, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: channel,\n class: \"legend-item\"\n }, [_createElementVNode(\"span\", {\n class: \"legend-color\",\n style: _normalizeStyle({\n background: $options.getChartColor(index)\n })\n }, null, 4), _createElementVNode(\"span\", _hoisted_49, _toDisplayString(channel), 1), _createElementVNode(\"span\", _hoisted_50, _toDisplayString(count.toLocaleString()), 1), _createElementVNode(\"span\", _hoisted_51, _toDisplayString($options.getPercentage(count, $data.indexInfo.totalFiles)) + \"%\", 1)]);\n }), 128))])]))])]), _createElementVNode(\"div\", _hoisted_52, [_createElementVNode(\"div\", _hoisted_53, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-alt\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('sysStatus.fileStatusDistribution')), 1)]), _createElementVNode(\"div\", _hoisted_54, [Object.keys($data.indexInfo.typeStats || {}).length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_55, [_createVNode(_component_font_awesome_icon, {\n icon: \"inbox\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('sysStatus.noData')), 1)])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_56, [_createElementVNode(\"div\", _hoisted_57, [_createVNode(_component_Doughnut, {\n data: $options.typeChartData,\n options: $options.chartOptions\n }, null, 8, [\"data\", \"options\"]), _createElementVNode(\"div\", _hoisted_58, [_createElementVNode(\"div\", _hoisted_59, _toDisplayString(Object.keys($data.indexInfo.typeStats).length), 1), _createElementVNode(\"div\", _hoisted_60, _toDisplayString(_ctx.$t('sysStatus.statusTypes')), 1)])]), _createElementVNode(\"div\", _hoisted_61, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.aggregatedTypeStats, (count, status, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: status,\n class: \"legend-item\"\n }, [_createElementVNode(\"span\", {\n class: \"legend-color\",\n style: _normalizeStyle({\n background: $options.getTypeChartColor(index)\n })\n }, null, 4), _createElementVNode(\"span\", _hoisted_62, _toDisplayString(status), 1), _createElementVNode(\"span\", _hoisted_63, _toDisplayString(count.toLocaleString()), 1), _createElementVNode(\"span\", _hoisted_64, _toDisplayString($options.getPercentage(count, $data.indexInfo.totalFiles)) + \"%\", 1)]);\n }), 128))])]))])])]), _createElementVNode(\"div\", _hoisted_65, [_createElementVNode(\"div\", _hoisted_66, [_createElementVNode(\"div\", _hoisted_67, [_createVNode(_component_font_awesome_icon, {\n icon: \"tools\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('sysStatus.systemMaintenance')), 1)]), _createElementVNode(\"div\", _hoisted_68, [$data.isProcessing ? (_openBlock(), _createElementBlock(\"div\", _hoisted_69, [_createElementVNode(\"div\", _hoisted_70, [_createElementVNode(\"span\", _hoisted_71, _toDisplayString($options.phaseDescription), 1), _createElementVNode(\"span\", _hoisted_72, _toDisplayString(Math.round($data.processingProgress.percentage)) + \"%\", 1)]), _createVNode(_component_el_progress, {\n percentage: $data.processingProgress.percentage,\n \"stroke-width\": 12,\n \"show-text\": false,\n class: \"progress-bar\"\n }, null, 8, [\"percentage\"]), _createElementVNode(\"div\", _hoisted_73, [$data.processingProgress.current > 0 ? (_openBlock(), _createElementBlock(\"span\", _hoisted_74, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-alt\"\n }), _createTextVNode(\" \" + _toDisplayString($data.processingProgress.current.toLocaleString()) + \" \", 1), $data.processingProgress.total > 0 ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [_createTextVNode(\" / \" + _toDisplayString($data.processingProgress.total.toLocaleString()), 1)], 64)) : _createCommentVNode(\"\", true), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('sysStatus.records')), 1)])) : _createCommentVNode(\"\", true), $options.estimatedTimeRemaining ? (_openBlock(), _createElementBlock(\"span\", _hoisted_75, [_createVNode(_component_font_awesome_icon, {\n icon: \"clock\"\n }), _createTextVNode(\" \" + _toDisplayString($options.estimatedTimeRemaining), 1)])) : _createCommentVNode(\"\", true)]), $data.processingProgress.message ? (_openBlock(), _createElementBlock(\"div\", _hoisted_76, _toDisplayString($data.processingProgress.message), 1)) : _createCommentVNode(\"\", true), _createVNode(_component_el_button, {\n type: \"danger\",\n plain: \"\",\n size: \"small\",\n onClick: $options.cancelOperation,\n class: \"cancel-btn\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"times\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('sysStatus.cancelOperation')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : $data.processingError ? (_openBlock(), _createElementBlock(\"div\", _hoisted_77, [_createElementVNode(\"div\", _hoisted_78, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-triangle\"\n })]), _createElementVNode(\"div\", _hoisted_79, [_createElementVNode(\"div\", _hoisted_80, _toDisplayString($data.processingError.message), 1), $data.processingError.suggestion ? (_openBlock(), _createElementBlock(\"div\", _hoisted_81, _toDisplayString($data.processingError.suggestion), 1)) : _createCommentVNode(\"\", true)]), _createElementVNode(\"div\", _hoisted_82, [$data.processingError.recoverable ? (_openBlock(), _createBlock(_component_el_button, {\n key: 0,\n type: \"primary\",\n size: \"small\",\n onClick: $options.retryOperation\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('sysStatus.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])) : _createCommentVNode(\"\", true), _createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n onClick: $options.dismissError\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysStatus.close')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_83, [_createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysStatus.rebuildTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n type: \"primary\",\n loading: $data.rebuilding,\n disabled: $data.isProcessing,\n onClick: $options.rebuildIndex,\n class: \"action-btn rebuild-btn\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"sync-alt\"\n }), _createTextVNode(\" \" + _toDisplayString($data.rebuilding ? _ctx.$t('sysStatus.rebuilding') : _ctx.$t('sysStatus.rebuildIndex')), 1)]),\n _: 1\n }, 8, [\"loading\", \"disabled\", \"onClick\"])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysStatus.backupTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n type: \"success\",\n loading: $data.backing,\n disabled: $data.isProcessing,\n onClick: $options.backupData,\n class: \"action-btn backup-btn\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"download\"\n }), _createTextVNode(\" \" + _toDisplayString($data.backing ? _ctx.$t('sysStatus.backingUp') : _ctx.$t('sysStatus.backupData')), 1)]),\n _: 1\n }, 8, [\"loading\", \"disabled\", \"onClick\"])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysStatus.restoreTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_84, [_createElementVNode(\"input\", {\n type: \"file\",\n ref: \"fileInput\",\n accept: \".json\",\n onChange: _cache[5] || (_cache[5] = (...args) => $options.handleFileSelect && $options.handleFileSelect(...args)),\n style: {\n \"display\": \"none\"\n }\n }, null, 544), _createVNode(_component_el_button, {\n type: \"warning\",\n loading: $data.restoring,\n disabled: $data.isProcessing,\n onClick: $options.selectRestoreFile,\n class: \"action-btn restore-btn\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"upload\"\n }), _createTextVNode(\" \" + _toDisplayString($data.restoring ? _ctx.$t('sysStatus.restoring') : _ctx.$t('sysStatus.restoreData')), 1)]),\n _: 1\n }, 8, [\"loading\", \"disabled\", \"onClick\"])])]),\n _: 1\n }, 8, [\"content\"])]))])])]), $data.indexInfo.newestFile || $data.indexInfo.oldestFile ? (_openBlock(), _createElementBlock(\"div\", _hoisted_85, [$data.indexInfo.newestFile ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"file-info-card info-card-newest\",\n onClick: _cache[8] || (_cache[8] = $event => $options.openFileInNewTab($data.indexInfo.newestFile))\n }, [$options.isImageFile($data.indexInfo.newestFile) && !$data.loadErrors['newest'] ? (_openBlock(), _createBlock(_component_el_image, {\n key: 0,\n src: '/file/' + $data.indexInfo.newestFile.id + '?from=admin',\n fit: \"cover\",\n class: \"card-bg-media\",\n onError: _cache[6] || (_cache[6] = $event => $options.handleImageError('newest'))\n }, null, 8, [\"src\"])) : $options.isVideoFile($data.indexInfo.newestFile) && !$data.loadErrors['newest'] ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n src: '/file/' + $data.indexInfo.newestFile.id + '?from=admin',\n class: \"card-bg-media\",\n muted: \"\",\n loop: \"\",\n autoplay: \"\",\n onError: _cache[7] || (_cache[7] = $event => $options.handleImageError('newest'))\n }, null, 40, _hoisted_86)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_87, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-alt\",\n class: \"fallback-icon\"\n })])), _createElementVNode(\"div\", _hoisted_88, [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-up\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('sysStatus.latestUpload')), 1)]), _createElementVNode(\"div\", _hoisted_89, [_createElementVNode(\"div\", _hoisted_90, _toDisplayString($data.indexInfo.newestFile.metadata?.FileName || $data.indexInfo.newestFile.id), 1), _createElementVNode(\"div\", _hoisted_91, _toDisplayString($options.formatTime($data.indexInfo.newestFile.metadata?.TimeStamp)), 1)])])) : _createCommentVNode(\"\", true), $data.indexInfo.oldestFile ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"file-info-card info-card-oldest\",\n onClick: _cache[11] || (_cache[11] = $event => $options.openFileInNewTab($data.indexInfo.oldestFile))\n }, [$options.isImageFile($data.indexInfo.oldestFile) && !$data.loadErrors['oldest'] ? (_openBlock(), _createBlock(_component_el_image, {\n key: 0,\n src: '/file/' + $data.indexInfo.oldestFile.id + '?from=admin',\n fit: \"cover\",\n class: \"card-bg-media\",\n onError: _cache[9] || (_cache[9] = $event => $options.handleImageError('oldest'))\n }, null, 8, [\"src\"])) : $options.isVideoFile($data.indexInfo.oldestFile) && !$data.loadErrors['oldest'] ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n src: '/file/' + $data.indexInfo.oldestFile.id + '?from=admin',\n class: \"card-bg-media\",\n muted: \"\",\n loop: \"\",\n autoplay: \"\",\n onError: _cache[10] || (_cache[10] = $event => $options.handleImageError('oldest'))\n }, null, 40, _hoisted_92)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_93, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-alt\",\n class: \"fallback-icon\"\n })])), _createElementVNode(\"div\", _hoisted_94, [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-down\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('sysStatus.earliestUpload')), 1)]), _createElementVNode(\"div\", _hoisted_95, [_createElementVNode(\"div\", _hoisted_96, _toDisplayString($data.indexInfo.oldestFile.metadata?.FileName || $data.indexInfo.oldestFile.id), 1), _createElementVNode(\"div\", _hoisted_97, _toDisplayString($options.formatTime($data.indexInfo.oldestFile.metadata?.TimeStamp)), 1)])])) : _createCommentVNode(\"\", true)])) : _createCommentVNode(\"\", true)])), [[_directive_loading, $data.loading]]);\n}","/*!\n * @kurkle/color v0.3.4\n * https://github.com/kurkle/color#readme\n * (c) 2024 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction b2p(v) {\n return lim(round(v / 2.55), 0, 100);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\n\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map$1[str[1]] * 17,\n g: 255 & map$1[str[2]] * 17,\n b: 255 & map$1[str[3]] * 17,\n a: len === 5 ? map$1[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map$1[str[1]] << 4 | map$1[str[2]],\n g: map$1[str[3]] << 4 | map$1[str[4]],\n b: map$1[str[5]] << 4 | map$1[str[6]],\n a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n };\n }\n }\n return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v\n ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n : undefined;\n}\n\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return ((g - b) / d) + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h, s, d;\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (\n Array.isArray(a)\n ? f(a[0], a[1], a[2])\n : f(a, b, c)\n ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return;\n }\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n if (m[1] === 'hwb') {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === 'hsv') {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\nfunction rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\nfunction hslString(v) {\n if (!v) {\n return;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255\n ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n : `hsl(${h}, ${s}%, ${l}%)`;\n}\n\nconst map = {\n\tx: 'dark',\n\tZ: 'light',\n\tY: 're',\n\tX: 'blu',\n\tW: 'gr',\n\tV: 'medium',\n\tU: 'slate',\n\tA: 'ee',\n\tT: 'ol',\n\tS: 'or',\n\tB: 'ra',\n\tC: 'lateg',\n\tD: 'ights',\n\tR: 'in',\n\tQ: 'turquois',\n\tE: 'hi',\n\tP: 'ro',\n\tO: 'al',\n\tN: 'le',\n\tM: 'de',\n\tL: 'yello',\n\tF: 'en',\n\tK: 'ch',\n\tG: 'arks',\n\tH: 'ea',\n\tI: 'ightg',\n\tJ: 'wh'\n};\nconst names$1 = {\n\tOiceXe: 'f0f8ff',\n\tantiquewEte: 'faebd7',\n\taqua: 'ffff',\n\taquamarRe: '7fffd4',\n\tazuY: 'f0ffff',\n\tbeige: 'f5f5dc',\n\tbisque: 'ffe4c4',\n\tblack: '0',\n\tblanKedOmond: 'ffebcd',\n\tXe: 'ff',\n\tXeviTet: '8a2be2',\n\tbPwn: 'a52a2a',\n\tburlywood: 'deb887',\n\tcaMtXe: '5f9ea0',\n\tKartYuse: '7fff00',\n\tKocTate: 'd2691e',\n\tcSO: 'ff7f50',\n\tcSnflowerXe: '6495ed',\n\tcSnsilk: 'fff8dc',\n\tcrimson: 'dc143c',\n\tcyan: 'ffff',\n\txXe: '8b',\n\txcyan: '8b8b',\n\txgTMnPd: 'b8860b',\n\txWay: 'a9a9a9',\n\txgYF: '6400',\n\txgYy: 'a9a9a9',\n\txkhaki: 'bdb76b',\n\txmagFta: '8b008b',\n\txTivegYF: '556b2f',\n\txSange: 'ff8c00',\n\txScEd: '9932cc',\n\txYd: '8b0000',\n\txsOmon: 'e9967a',\n\txsHgYF: '8fbc8f',\n\txUXe: '483d8b',\n\txUWay: '2f4f4f',\n\txUgYy: '2f4f4f',\n\txQe: 'ced1',\n\txviTet: '9400d3',\n\tdAppRk: 'ff1493',\n\tdApskyXe: 'bfff',\n\tdimWay: '696969',\n\tdimgYy: '696969',\n\tdodgerXe: '1e90ff',\n\tfiYbrick: 'b22222',\n\tflSOwEte: 'fffaf0',\n\tfoYstWAn: '228b22',\n\tfuKsia: 'ff00ff',\n\tgaRsbSo: 'dcdcdc',\n\tghostwEte: 'f8f8ff',\n\tgTd: 'ffd700',\n\tgTMnPd: 'daa520',\n\tWay: '808080',\n\tgYF: '8000',\n\tgYFLw: 'adff2f',\n\tgYy: '808080',\n\thoneyMw: 'f0fff0',\n\thotpRk: 'ff69b4',\n\tRdianYd: 'cd5c5c',\n\tRdigo: '4b0082',\n\tivSy: 'fffff0',\n\tkhaki: 'f0e68c',\n\tlavFMr: 'e6e6fa',\n\tlavFMrXsh: 'fff0f5',\n\tlawngYF: '7cfc00',\n\tNmoncEffon: 'fffacd',\n\tZXe: 'add8e6',\n\tZcSO: 'f08080',\n\tZcyan: 'e0ffff',\n\tZgTMnPdLw: 'fafad2',\n\tZWay: 'd3d3d3',\n\tZgYF: '90ee90',\n\tZgYy: 'd3d3d3',\n\tZpRk: 'ffb6c1',\n\tZsOmon: 'ffa07a',\n\tZsHgYF: '20b2aa',\n\tZskyXe: '87cefa',\n\tZUWay: '778899',\n\tZUgYy: '778899',\n\tZstAlXe: 'b0c4de',\n\tZLw: 'ffffe0',\n\tlime: 'ff00',\n\tlimegYF: '32cd32',\n\tlRF: 'faf0e6',\n\tmagFta: 'ff00ff',\n\tmaPon: '800000',\n\tVaquamarRe: '66cdaa',\n\tVXe: 'cd',\n\tVScEd: 'ba55d3',\n\tVpurpN: '9370db',\n\tVsHgYF: '3cb371',\n\tVUXe: '7b68ee',\n\tVsprRggYF: 'fa9a',\n\tVQe: '48d1cc',\n\tVviTetYd: 'c71585',\n\tmidnightXe: '191970',\n\tmRtcYam: 'f5fffa',\n\tmistyPse: 'ffe4e1',\n\tmoccasR: 'ffe4b5',\n\tnavajowEte: 'ffdead',\n\tnavy: '80',\n\tTdlace: 'fdf5e6',\n\tTive: '808000',\n\tTivedBb: '6b8e23',\n\tSange: 'ffa500',\n\tSangeYd: 'ff4500',\n\tScEd: 'da70d6',\n\tpOegTMnPd: 'eee8aa',\n\tpOegYF: '98fb98',\n\tpOeQe: 'afeeee',\n\tpOeviTetYd: 'db7093',\n\tpapayawEp: 'ffefd5',\n\tpHKpuff: 'ffdab9',\n\tperu: 'cd853f',\n\tpRk: 'ffc0cb',\n\tplum: 'dda0dd',\n\tpowMrXe: 'b0e0e6',\n\tpurpN: '800080',\n\tYbeccapurpN: '663399',\n\tYd: 'ff0000',\n\tPsybrown: 'bc8f8f',\n\tPyOXe: '4169e1',\n\tsaddNbPwn: '8b4513',\n\tsOmon: 'fa8072',\n\tsandybPwn: 'f4a460',\n\tsHgYF: '2e8b57',\n\tsHshell: 'fff5ee',\n\tsiFna: 'a0522d',\n\tsilver: 'c0c0c0',\n\tskyXe: '87ceeb',\n\tUXe: '6a5acd',\n\tUWay: '708090',\n\tUgYy: '708090',\n\tsnow: 'fffafa',\n\tsprRggYF: 'ff7f',\n\tstAlXe: '4682b4',\n\ttan: 'd2b48c',\n\tteO: '8080',\n\ttEstN: 'd8bfd8',\n\ttomato: 'ff6347',\n\tQe: '40e0d0',\n\tviTet: 'ee82ee',\n\tJHt: 'f5deb3',\n\twEte: 'ffffff',\n\twEtesmoke: 'f5f5f5',\n\tLw: 'ffff00',\n\tLwgYF: '9acd32'\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names$1);\n const tkeys = Object.keys(map);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map[k]);\n }\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\n\nlet names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const a = names[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\n\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return;\n }\n if (m[7] !== r) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n r: r,\n g: g,\n b: b,\n a: a\n };\n}\nfunction rgbString(v) {\n return v && (\n v.a < 255\n ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n : `rgb(${v.r}, ${v.g}, ${v.b})`\n );\n}\n\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\n };\n}\n\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n var v = {r: 0, g: 0, b: 0, a: 255};\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {r: input[0], g: input[1], b: input[2], a: 255};\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\nclass Color {\n constructor(input) {\n if (input instanceof Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === 'object') {\n v = fromObject(input);\n } else if (type === 'string') {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n get valid() {\n return this._valid;\n }\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n mix(color, weight) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n let w2;\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n clone() {\n return new Color(this.rgb);\n }\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n greyscale() {\n const rgb = this._rgb;\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\n\nfunction index_esm(input) {\n return new Color(input);\n}\n\nexport { Color, b2n, b2p, index_esm as default, hexParse, hexString, hsl2rgb, hslString, hsv2rgb, hueParse, hwb2rgb, lim, n2b, n2p, nameParse, p2b, rgb2hsl, rgbParse, rgbString, rotate, round };\n","/**\n * @namespace Chart.helpers\n */\n\nimport type {AnyObject} from '../types/basic.js';\nimport type {ActiveDataPoint, ChartEvent} from '../types/index.js';\n\n/**\n * An empty function that can be used, for example, for optional callback.\n */\nexport function noop() {\n /* noop */\n}\n\n/**\n * Returns a unique id, sequentially generated from a global variable.\n */\nexport const uid = (() => {\n let id = 0;\n return () => id++;\n})();\n\n/**\n * Returns true if `value` is neither null nor undefined, else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */\nexport function isNullOrUndef(value: unknown): value is null | undefined {\n return value === null || value === undefined;\n}\n\n/**\n * Returns true if `value` is an array (including typed arrays), else returns false.\n * @param value - The value to test.\n * @function\n */\nexport function isArray(value: unknown): value is T[] {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n return true;\n }\n return false;\n}\n\n/**\n * Returns true if `value` is an object (excluding null), else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */\nexport function isObject(value: unknown): value is AnyObject {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\n\n/**\n * Returns true if `value` is a finite number, else returns false\n * @param value - The value to test.\n */\nfunction isNumberFinite(value: unknown): value is number {\n return (typeof value === 'number' || value instanceof Number) && isFinite(+value);\n}\nexport {\n isNumberFinite as isFinite,\n};\n\n/**\n * Returns `value` if finite, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is not finite.\n */\nexport function finiteOrDefault(value: unknown, defaultValue: number) {\n return isNumberFinite(value) ? value : defaultValue;\n}\n\n/**\n * Returns `value` if defined, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is undefined.\n */\nexport function valueOrDefault(value: T | undefined, defaultValue: T) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\n\nexport const toPercentage = (value: number | string, dimension: number) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100\n : +value / dimension;\n\nexport const toDimension = (value: number | string, dimension: number) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100 * dimension\n : +value;\n\n/**\n * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n * @param fn - The function to call.\n * @param args - The arguments with which `fn` should be called.\n * @param [thisArg] - The value of `this` provided for the call to `fn`.\n */\nexport function callback R, TA, R>(\n fn: T | undefined,\n args: unknown[],\n thisArg?: TA\n): R | undefined {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\n\n/**\n * Note(SB) for performance sake, this method should only be used when loopable type\n * is unknown or in none intensive code (not called often and small loopable). Else\n * it's preferable to use a regular for() loop and save extra function calls.\n * @param loopable - The object or array to be iterated.\n * @param fn - The function to call for each item.\n * @param [thisArg] - The value of `this` provided for the call to `fn`.\n * @param [reverse] - If true, iterates backward on the loopable.\n */\nexport function each(\n loopable: Record,\n fn: (this: TA, v: T, i: string) => void,\n thisArg?: TA,\n reverse?: boolean\n): void;\nexport function each(\n loopable: T[],\n fn: (this: TA, v: T, i: number) => void,\n thisArg?: TA,\n reverse?: boolean\n): void;\nexport function each(\n loopable: T[] | Record,\n fn: (this: TA, v: T, i: any) => void,\n thisArg?: TA,\n reverse?: boolean\n) {\n let i: number, len: number, keys: string[];\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for (i = len - 1; i >= 0; i--) {\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\n\n/**\n * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n * @param a0 - The array to compare\n * @param a1 - The array to compare\n * @private\n */\nexport function _elementsEqual(a0: ActiveDataPoint[], a1: ActiveDataPoint[]) {\n let i: number, ilen: number, v0: ActiveDataPoint, v1: ActiveDataPoint;\n\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Returns a deep copy of `source` without keeping references on objects and arrays.\n * @param source - The value to clone.\n */\nexport function clone(source: T): T {\n if (isArray(source)) {\n return source.map(clone) as unknown as T;\n }\n\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n\n for (; k < klen; ++k) {\n target[keys[k]] = clone(source[keys[k]]);\n }\n\n return target;\n }\n\n return source;\n}\n\nfunction isValidKey(key: string) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\n\n/**\n * The default merger when Chart.helpers.merge is called without merger option.\n * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\n * @private\n */\nexport function _merger(key: string, target: AnyObject, source: AnyObject, options: AnyObject) {\n if (!isValidKey(key)) {\n return;\n }\n\n const tval = target[key];\n const sval = source[key];\n\n if (isObject(tval) && isObject(sval)) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n merge(tval, sval, options);\n } else {\n target[key] = clone(sval);\n }\n}\n\nexport interface MergeOptions {\n merger?: (key: string, target: AnyObject, source: AnyObject, options?: AnyObject) => void;\n}\n\n/**\n * Recursively deep copies `source` properties into `target` with the given `options`.\n * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n * @param target - The target object in which all sources are merged into.\n * @param source - Object(s) to merge into `target`.\n * @param [options] - Merging options:\n * @param [options.merger] - The merge method (key, target, source, options)\n * @returns The `target` object.\n */\nexport function merge(target: T, source: [], options?: MergeOptions): T;\nexport function merge(target: T, source: S1, options?: MergeOptions): T & S1;\nexport function merge(target: T, source: [S1], options?: MergeOptions): T & S1;\nexport function merge(target: T, source: [S1, S2], options?: MergeOptions): T & S1 & S2;\nexport function merge(target: T, source: [S1, S2, S3], options?: MergeOptions): T & S1 & S2 & S3;\nexport function merge(\n target: T,\n source: [S1, S2, S3, S4],\n options?: MergeOptions\n): T & S1 & S2 & S3 & S4;\nexport function merge(target: T, source: AnyObject[], options?: MergeOptions): AnyObject;\nexport function merge(target: T, source: AnyObject[], options?: MergeOptions): AnyObject {\n const sources = isArray(source) ? source : [source];\n const ilen = sources.length;\n\n if (!isObject(target)) {\n return target as AnyObject;\n }\n\n options = options || {};\n const merger = options.merger || _merger;\n let current: AnyObject;\n\n for (let i = 0; i < ilen; ++i) {\n current = sources[i];\n if (!isObject(current)) {\n continue;\n }\n\n const keys = Object.keys(current);\n for (let k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, current, options as AnyObject);\n }\n }\n\n return target;\n}\n\n/**\n * Recursively deep copies `source` properties into `target` *only* if not defined in target.\n * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n * @param target - The target object in which all sources are merged into.\n * @param source - Object(s) to merge into `target`.\n * @returns The `target` object.\n */\nexport function mergeIf(target: T, source: []): T;\nexport function mergeIf(target: T, source: S1): T & S1;\nexport function mergeIf(target: T, source: [S1]): T & S1;\nexport function mergeIf(target: T, source: [S1, S2]): T & S1 & S2;\nexport function mergeIf(target: T, source: [S1, S2, S3]): T & S1 & S2 & S3;\nexport function mergeIf(target: T, source: [S1, S2, S3, S4]): T & S1 & S2 & S3 & S4;\nexport function mergeIf(target: T, source: AnyObject[]): AnyObject;\nexport function mergeIf(target: T, source: AnyObject[]): AnyObject {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return merge(target, source, {merger: _mergerIf});\n}\n\n/**\n * Merges source[key] in target[key] only if target[key] is undefined.\n * @private\n */\nexport function _mergerIf(key: string, target: AnyObject, source: AnyObject) {\n if (!isValidKey(key)) {\n return;\n }\n\n const tval = target[key];\n const sval = source[key];\n\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone(sval);\n }\n}\n\n/**\n * @private\n */\nexport function _deprecated(scope: string, value: unknown, previous: string, current: string) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous +\n '\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\n\n// resolveObjectKey resolver cache\nconst keyResolvers = {\n // Chart.helpers.core resolveObjectKey should resolve empty key to root object\n '': v => v,\n // default resolvers\n x: o => o.x,\n y: o => o.y\n};\n\n/**\n * @private\n */\nexport function _splitKey(key: string) {\n const parts = key.split('.');\n const keys: string[] = [];\n let tmp = '';\n for (const part of parts) {\n tmp += part;\n if (tmp.endsWith('\\\\')) {\n tmp = tmp.slice(0, -1) + '.';\n } else {\n keys.push(tmp);\n tmp = '';\n }\n }\n return keys;\n}\n\nfunction _getKeyResolver(key: string) {\n const keys = _splitKey(key);\n return obj => {\n for (const k of keys) {\n if (k === '') {\n // For backward compatibility:\n // Chart.helpers.core resolveObjectKey should break at empty key\n break;\n }\n obj = obj && obj[k];\n }\n return obj;\n };\n}\n\nexport function resolveObjectKey(obj: AnyObject, key: string): any {\n const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n return resolver(obj);\n}\n\n/**\n * @private\n */\nexport function _capitalize(str: string) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\n\nexport const defined = (value: unknown) => typeof value !== 'undefined';\n\nexport const isFunction = (value: unknown): value is (...args: any[]) => any => typeof value === 'function';\n\n// Adapted from https://stackoverflow.com/questions/31128855/comparing-ecma6-sets-for-equality#31129384\nexport const setsEqual = (a: Set, b: Set) => {\n if (a.size !== b.size) {\n return false;\n }\n\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n\n return true;\n};\n\n/**\n * @param e - The event\n * @private\n */\nexport function _isClickEvent(e: ChartEvent) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n","import type {Point} from '../types/geometric.js';\nimport {isFinite as isFiniteNumber} from './helpers.core.js';\n\n/**\n * @alias Chart.helpers.math\n * @namespace\n */\n\nexport const PI = Math.PI;\nexport const TAU = 2 * PI;\nexport const PITAU = TAU + PI;\nexport const INFINITY = Number.POSITIVE_INFINITY;\nexport const RAD_PER_DEG = PI / 180;\nexport const HALF_PI = PI / 2;\nexport const QUARTER_PI = PI / 4;\nexport const TWO_THIRDS_PI = PI * 2 / 3;\n\nexport const log10 = Math.log10;\nexport const sign = Math.sign;\n\nexport function almostEquals(x: number, y: number, epsilon: number) {\n return Math.abs(x - y) < epsilon;\n}\n\n/**\n * Implementation of the nice number algorithm used in determining where axis labels will go\n */\nexport function niceNum(range: number) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\n\n/**\n * Returns an array of factors sorted from 1 to sqrt(value)\n * @private\n */\nexport function _factorize(value: number) {\n const result: number[] = [];\n const sqrt = Math.sqrt(value);\n let i: number;\n\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) { // if value is a square number\n result.push(sqrt);\n }\n\n result.sort((a, b) => a - b).pop();\n return result;\n}\n\n/**\n * Verifies that attempting to coerce n to string or number won't throw a TypeError.\n */\nfunction isNonPrimitive(n: unknown) {\n return typeof n === 'symbol' || (typeof n === 'object' && n !== null && !(Symbol.toPrimitive in n || 'toString' in n || 'valueOf' in n));\n}\n\nexport function isNumber(n: unknown): n is number {\n return !isNonPrimitive(n) && !isNaN(parseFloat(n as string)) && isFinite(n as number);\n}\n\nexport function almostWhole(x: number, epsilon: number) {\n const rounded = Math.round(x);\n return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\n\n/**\n * @private\n */\nexport function _setMinAndMaxByKey(\n array: Record[],\n target: { min: number, max: number },\n property: string\n) {\n let i: number, ilen: number, value: number;\n\n for (i = 0, ilen = array.length; i < ilen; i++) {\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\n\nexport function toRadians(degrees: number) {\n return degrees * (PI / 180);\n}\n\nexport function toDegrees(radians: number) {\n return radians * (180 / PI);\n}\n\n/**\n * Returns the number of decimal places\n * i.e. the number of digits after the decimal point, of the value of this Number.\n * @param x - A number.\n * @returns The number of decimal places.\n * @private\n */\nexport function _decimalPlaces(x: number) {\n if (!isFiniteNumber(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n return p;\n}\n\n// Gets the angle from vertical upright to the point about a centre.\nexport function getAngleFromPoint(\n centrePoint: Point,\n anglePoint: Point\n) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n\n if (angle < (-0.5 * PI)) {\n angle += TAU; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n }\n\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\n\nexport function distanceBetweenPoints(pt1: Point, pt2: Point) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\n\n/**\n * Shortest distance between angles, in either direction.\n * @private\n */\nexport function _angleDiff(a: number, b: number) {\n return (a - b + PITAU) % TAU - PI;\n}\n\n/**\n * Normalize angle to be between 0 and 2*PI\n * @private\n */\nexport function _normalizeAngle(a: number) {\n return (a % TAU + TAU) % TAU;\n}\n\n/**\n * @private\n */\nexport function _angleBetween(angle: number, start: number, end: number, sameAngleIsFullCircle?: boolean) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || (sameAngleIsFullCircle && s === e)\n || (angleToStart > angleToEnd && startToAngle < endToAngle);\n}\n\n/**\n * Limit `value` between `min` and `max`\n * @param value\n * @param min\n * @param max\n * @private\n */\nexport function _limitValue(value: number, min: number, max: number) {\n return Math.max(min, Math.min(max, value));\n}\n\n/**\n * @param {number} value\n * @private\n */\nexport function _int16Range(value: number) {\n return _limitValue(value, -32768, 32767);\n}\n\n/**\n * @param value\n * @param start\n * @param end\n * @param [epsilon]\n * @private\n */\nexport function _isBetween(value: number, start: number, end: number, epsilon = 1e-6) {\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n","import {_capitalize} from './helpers.core.js';\n\n/**\n * Binary search\n * @param table - the table search. must be sorted!\n * @param value - value to find\n * @param cmp\n * @private\n */\nexport function _lookup(\n table: number[],\n value: number,\n cmp?: (value: number) => boolean\n): {lo: number, hi: number};\nexport function _lookup(\n table: T[],\n value: number,\n cmp: (value: number) => boolean\n): {lo: number, hi: number};\nexport function _lookup(\n table: unknown[],\n value: number,\n cmp?: (value: number) => boolean\n) {\n cmp = cmp || ((index) => table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid: number;\n\n while (hi - lo > 1) {\n mid = (lo + hi) >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n\n return {lo, hi};\n}\n\n/**\n * Binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @param last - lookup last index\n * @private\n */\nexport const _lookupByKey = (\n table: Record[],\n key: string,\n value: number,\n last?: boolean\n) =>\n _lookup(table, value, last\n ? index => {\n const ti = table[index][key];\n return ti < value || ti === value && table[index + 1][key] === value;\n }\n : index => table[index][key] < value);\n\n/**\n * Reverse binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @private\n */\nexport const _rlookupByKey = (\n table: Record[],\n key: string,\n value: number\n) =>\n _lookup(table, value, index => table[index][key] >= value);\n\n/**\n * Return subset of `values` between `min` and `max` inclusive.\n * Values are assumed to be in sorted order.\n * @param values - sorted array of values\n * @param min - min value\n * @param max - max value\n */\nexport function _filterBetween(values: number[], min: number, max: number) {\n let start = 0;\n let end = values.length;\n\n while (start < end && values[start] < min) {\n start++;\n }\n while (end > start && values[end - 1] > max) {\n end--;\n }\n\n return start > 0 || end < values.length\n ? values.slice(start, end)\n : values;\n}\n\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'] as const;\n\nexport interface ArrayListener {\n _onDataPush?(...item: T[]): void;\n _onDataPop?(): void;\n _onDataShift?(): void;\n _onDataSplice?(index: number, deleteCount: number, ...items: T[]): void;\n _onDataUnshift?(...item: T[]): void;\n}\n\n/**\n * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\n * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\n * called on the '_onData*' callbacks (e.g. _onDataPush, etc.) with same arguments.\n */\nexport function listenArrayEvents(array: T[], listener: ArrayListener): void;\nexport function listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n\n arrayEvents.forEach((key) => {\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value(...args) {\n const res = base.apply(this, args);\n\n array._chartjs.listeners.forEach((object) => {\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n\n return res;\n }\n });\n });\n}\n\n\n/**\n * Removes the given array event listener and cleanup extra attached properties (such as\n * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\n */\nexport function unlistenArrayEvents(array: T[], listener: ArrayListener): void;\nexport function unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n\n if (listeners.length > 0) {\n return;\n }\n\n arrayEvents.forEach((key) => {\n delete array[key];\n });\n\n delete array._chartjs;\n}\n\n/**\n * @param items\n */\nexport function _arrayUnique(items: T[]) {\n const set = new Set(items);\n\n if (set.size === items.length) {\n return items;\n }\n\n return Array.from(set);\n}\n","import type {ChartMeta, PointElement} from '../types/index.js';\n\nimport {_limitValue} from './helpers.math.js';\nimport {_lookupByKey} from './helpers.collection.js';\nimport {isNullOrUndef} from './helpers.core.js';\n\nexport function fontString(pixelSize: number, fontStyle: string, fontFamily: string) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\n\n/**\n* Request animation polyfill\n*/\nexport const requestAnimFrame = (function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}());\n\n/**\n * Throttles calling `fn` once per animation frame\n * Latest arguments are used on the actual call\n */\nexport function throttled>(\n fn: (...args: TArgs) => void,\n thisArg: any,\n) {\n let argsToUse = [] as TArgs;\n let ticking = false;\n\n return function(...args: TArgs) {\n // Save the args for use later\n argsToUse = args;\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, () => {\n ticking = false;\n fn.apply(thisArg, argsToUse);\n });\n }\n };\n}\n\n/**\n * Debounces calling `fn` for `delay` ms\n */\nexport function debounce>(fn: (...args: TArgs) => void, delay: number) {\n let timeout;\n return function(...args: TArgs) {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\n\n/**\n * Converts 'start' to 'left', 'end' to 'right' and others to 'center'\n * @private\n */\nexport const _toLeftRightCenter = (align: 'start' | 'end' | 'center') => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\n\n/**\n * Returns `start`, `end` or `(start + end) / 2` depending on `align`. Defaults to `center`\n * @private\n */\nexport const _alignStartEnd = (align: 'start' | 'end' | 'center', start: number, end: number) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\n\n/**\n * Returns `left`, `right` or `(left + right) / 2` depending on `align`. Defaults to `left`\n * @private\n */\nexport const _textX = (align: 'left' | 'right' | 'center', left: number, right: number, rtl: boolean) => {\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\n\n/**\n * Return start and count of visible points.\n * @private\n */\nexport function _getStartAndCountOfVisiblePoints(meta: ChartMeta<'line' | 'scatter'>, points: PointElement[], animationsDisabled: boolean) {\n const pointCount = points.length;\n\n let start = 0;\n let count = pointCount;\n\n if (meta._sorted) {\n const {iScale, vScale, _parsed} = meta;\n const spanGaps = meta.dataset ? meta.dataset.options ? meta.dataset.options.spanGaps : null : null;\n const axis = iScale.axis;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n\n if (minDefined) {\n start = Math.min(\n // @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, axis, min).lo,\n // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo);\n if (spanGaps) {\n const distanceToDefinedLo = (_parsed\n .slice(0, start + 1)\n .reverse()\n .findIndex(\n point => !isNullOrUndef(point[vScale.axis])));\n start -= Math.max(0, distanceToDefinedLo);\n }\n start = _limitValue(start, 0, pointCount - 1);\n }\n if (maxDefined) {\n let end = Math.max(\n // @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, iScale.axis, max, true).hi + 1,\n // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1);\n if (spanGaps) {\n const distanceToDefinedHi = (_parsed\n .slice(end - 1)\n .findIndex(\n point => !isNullOrUndef(point[vScale.axis])));\n end += Math.max(0, distanceToDefinedHi);\n }\n count = _limitValue(end, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n\n return {start, count};\n}\n\n/**\n * Checks if the scale ranges have changed.\n * @param {object} meta - dataset meta.\n * @returns {boolean}\n * @private\n */\nexport function _scaleRangesChanged(meta) {\n const {xScale, yScale, _scaleRanges} = meta;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min\n\t\t|| _scaleRanges.xmax !== xScale.max\n\t\t|| _scaleRanges.ymin !== yScale.min\n\t\t|| _scaleRanges.ymax !== yScale.max;\n\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\n","import {PI, TAU, HALF_PI} from './helpers.math.js';\n\nconst atEdge = (t: number) => t === 0 || t === 1;\nconst elasticIn = (t: number, s: number, p: number) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t: number, s: number, p: number) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\n\n/**\n * Easing functions adapted from Robert Penner's easing equations.\n * @namespace Chart.helpers.easing.effects\n * @see http://www.robertpenner.com/easing/\n */\nconst effects = {\n linear: (t: number) => t,\n\n easeInQuad: (t: number) => t * t,\n\n easeOutQuad: (t: number) => -t * (t - 2),\n\n easeInOutQuad: (t: number) => ((t /= 0.5) < 1)\n ? 0.5 * t * t\n : -0.5 * ((--t) * (t - 2) - 1),\n\n easeInCubic: (t: number) => t * t * t,\n\n easeOutCubic: (t: number) => (t -= 1) * t * t + 1,\n\n easeInOutCubic: (t: number) => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t\n : 0.5 * ((t -= 2) * t * t + 2),\n\n easeInQuart: (t: number) => t * t * t * t,\n\n easeOutQuart: (t: number) => -((t -= 1) * t * t * t - 1),\n\n easeInOutQuart: (t: number) => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t\n : -0.5 * ((t -= 2) * t * t * t - 2),\n\n easeInQuint: (t: number) => t * t * t * t * t,\n\n easeOutQuint: (t: number) => (t -= 1) * t * t * t * t + 1,\n\n easeInOutQuint: (t: number) => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t * t\n : 0.5 * ((t -= 2) * t * t * t * t + 2),\n\n easeInSine: (t: number) => -Math.cos(t * HALF_PI) + 1,\n\n easeOutSine: (t: number) => Math.sin(t * HALF_PI),\n\n easeInOutSine: (t: number) => -0.5 * (Math.cos(PI * t) - 1),\n\n easeInExpo: (t: number) => (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)),\n\n easeOutExpo: (t: number) => (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1,\n\n easeInOutExpo: (t: number) => atEdge(t) ? t : t < 0.5\n ? 0.5 * Math.pow(2, 10 * (t * 2 - 1))\n : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n\n easeInCirc: (t: number) => (t >= 1) ? t : -(Math.sqrt(1 - t * t) - 1),\n\n easeOutCirc: (t: number) => Math.sqrt(1 - (t -= 1) * t),\n\n easeInOutCirc: (t: number) => ((t /= 0.5) < 1)\n ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n\n easeInElastic: (t: number) => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n\n easeOutElastic: (t: number) => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n\n easeInOutElastic(t: number) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t :\n t < 0.5\n ? 0.5 * elasticIn(t * 2, s, p)\n : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n\n easeInBack(t: number) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n\n easeOutBack(t: number) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n\n easeInOutBack(t: number) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n },\n\n easeInBounce: (t: number) => 1 - effects.easeOutBounce(1 - t),\n\n easeOutBounce(t: number) {\n const m = 7.5625;\n const d = 2.75;\n if (t < (1 / d)) {\n return m * t * t;\n }\n if (t < (2 / d)) {\n return m * (t -= (1.5 / d)) * t + 0.75;\n }\n if (t < (2.5 / d)) {\n return m * (t -= (2.25 / d)) * t + 0.9375;\n }\n return m * (t -= (2.625 / d)) * t + 0.984375;\n },\n\n easeInOutBounce: (t: number) => (t < 0.5)\n ? effects.easeInBounce(t * 2) * 0.5\n : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5,\n} as const;\n\nexport type EasingFunction = keyof typeof effects\n\nexport default effects;\n","import {Color} from '@kurkle/color';\n\nexport function isPatternOrGradient(value: unknown): value is CanvasPattern | CanvasGradient {\n if (value && typeof value === 'object') {\n const type = value.toString();\n return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n }\n\n return false;\n}\n\nexport function color(value: CanvasGradient): CanvasGradient;\nexport function color(value: CanvasPattern): CanvasPattern;\nexport function color(\n value:\n | string\n | { r: number; g: number; b: number; a: number }\n | [number, number, number]\n | [number, number, number, number]\n): Color;\nexport function color(value) {\n return isPatternOrGradient(value) ? value : new Color(value);\n}\n\nexport function getHoverColor(value: CanvasGradient): CanvasGradient;\nexport function getHoverColor(value: CanvasPattern): CanvasPattern;\nexport function getHoverColor(value: string): string;\nexport function getHoverColor(value) {\n return isPatternOrGradient(value)\n ? value\n : new Color(value).saturate(0.5).darken(0.1).hexString();\n}\n","const numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\n\nexport function applyAnimationsDefaults(defaults) {\n defaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined,\n });\n\n defaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn',\n });\n\n defaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n },\n });\n\n defaults.describe('animations', {\n _fallback: 'animation',\n });\n\n defaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0 // show immediately\n },\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: v => v | 0 // for keeping the dataset visible all the way through the animation\n },\n }\n }\n });\n}\n","export function applyLayoutsDefaults(defaults) {\n defaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n });\n}\n","\nconst intlCache = new Map();\n\nfunction getNumberFormat(locale: string, options?: Intl.NumberFormatOptions) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\n\nexport function formatNumber(num: number, locale: string, options?: Intl.NumberFormatOptions) {\n return getNumberFormat(locale, options).format(num);\n}\n","import {isArray} from '../helpers/helpers.core.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\nimport {log10} from '../helpers/helpers.math.js';\n\n/**\n * Namespace to hold formatters for different types of ticks\n * @namespace Chart.Ticks.formatters\n */\nconst formatters = {\n /**\n * Formatter for value labels\n * @method Chart.Ticks.formatters.values\n * @param value the value to display\n * @return {string|string[]} the label to display\n */\n values(value) {\n return isArray(value) ? /** @type {string[]} */ (value) : '' + value;\n },\n\n /**\n * Formatter for numeric ticks\n * @method Chart.Ticks.formatters.numeric\n * @param tickValue {number} the value to be formatted\n * @param index {number} the position of the tickValue parameter in the ticks array\n * @param ticks {object[]} the list of ticks being converted\n * @return {string} string representation of the tickValue parameter\n */\n numeric(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0'; // never show decimal places for 0\n }\n\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue; // This is used when there are less than 2 ticks as the tick interval.\n\n if (ticks.length > 1) {\n // all ticks are small or there huge numbers; use scientific notation\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n\n delta = calculateDelta(tickValue, ticks);\n }\n\n const logDelta = log10(Math.abs(delta));\n\n // When datasets have values approaching Number.MAX_VALUE, the tick calculations might result in\n // infinity and eventually NaN. Passing NaN for minimumFractionDigits or maximumFractionDigits\n // will make the number formatter throw. So instead we check for isNaN and use a fallback value.\n //\n // toFixed has a max of 20 decimal places\n const numDecimal = isNaN(logDelta) ? 1 : Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n\n const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\n Object.assign(options, this.options.ticks.format);\n\n return formatNumber(tickValue, locale, options);\n },\n\n\n /**\n * Formatter for logarithmic ticks\n * @method Chart.Ticks.formatters.logarithmic\n * @param tickValue {number} the value to be formatted\n * @param index {number} the position of the tickValue parameter in the ticks array\n * @param ticks {object[]} the list of ticks being converted\n * @return {string} string representation of the tickValue parameter\n */\n logarithmic(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = ticks[index].significand || (tickValue / (Math.pow(10, Math.floor(log10(tickValue)))));\n if ([1, 2, 3, 5, 10, 15].includes(remain) || index > 0.8 * ticks.length) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n\n};\n\n\nfunction calculateDelta(tickValue, ticks) {\n // Figure out how many digits to show\n // The space between the first two ticks might be smaller than normal spacing\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n\n // If we have a number like 2.5 as the delta, figure out how many decimal places we need\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n // not an integer\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\n\n/**\n * Namespace to hold static tick generation functions\n * @namespace Chart.Ticks\n */\nexport default {formatters};\n","import Ticks from './core.ticks.js';\n\nexport function applyScaleDefaults(defaults) {\n defaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n\n /**\n * Scale boundary strategy (bypassed by min/max time options)\n * - `data`: make sure data are fully visible, ticks outside are removed\n * - `ticks`: make sure ticks are fully visible, data outside are truncated\n * @see https://github.com/chartjs/Chart.js/pull/4556\n * @since 3.0.0\n */\n bounds: 'ticks',\n\n clip: true,\n\n /**\n * Addition grace added to max and reduced from min data value.\n * @since 3.0.0\n */\n grace: 0,\n\n // grid line settings\n grid: {\n display: true,\n lineWidth: 1,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options) => options.lineWidth,\n tickColor: (_ctx, options) => options.color,\n offset: false,\n },\n\n border: {\n display: true,\n dash: [],\n dashOffset: 0.0,\n width: 1\n },\n\n // scale title\n title: {\n // display property\n display: false,\n\n // actual label\n text: '',\n\n // top/bottom padding\n padding: {\n top: 4,\n bottom: 4\n }\n },\n\n // label settings\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n // We pass through arrays to be rendered as multiline labels, we convert Others to strings here.\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2,\n }\n });\n\n defaults.route('scale.ticks', 'color', '', 'color');\n defaults.route('scale.grid', 'color', '', 'borderColor');\n defaults.route('scale.border', 'color', '', 'borderColor');\n defaults.route('scale.title', 'color', '', 'color');\n\n defaults.describe('scale', {\n _fallback: false,\n _scriptable: (name) => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: (name) => name !== 'borderDash' && name !== 'tickBorderDash' && name !== 'dash',\n });\n\n defaults.describe('scales', {\n _fallback: 'scale',\n });\n\n defaults.describe('scale.ticks', {\n _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n _indexable: (name) => name !== 'backdropPadding',\n });\n}\n","import {getHoverColor} from '../helpers/helpers.color.js';\nimport {isObject, merge, valueOrDefault} from '../helpers/helpers.core.js';\nimport {applyAnimationsDefaults} from './core.animations.defaults.js';\nimport {applyLayoutsDefaults} from './core.layouts.defaults.js';\nimport {applyScaleDefaults} from './core.scale.defaults.js';\n\nexport const overrides = Object.create(null);\nexport const descriptors = Object.create(null);\n\n/**\n * @param {object} node\n * @param {string} key\n * @return {object}\n */\nfunction getScope(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for (let i = 0, n = keys.length; i < n; ++i) {\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\n\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope(root, scope), values);\n }\n return merge(getScope(root, ''), scope);\n}\n\n/**\n * Please use the module's default export which provides a singleton instance\n * Note: class is exported for typedoc\n */\nexport class Defaults {\n constructor(_descriptors, _appliers) {\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = [\n 'mousemove',\n 'mouseout',\n 'click',\n 'touchstart',\n 'touchmove'\n ];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options) => getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true,\n includeInvisible: false\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n\n this.describe(_descriptors);\n this.apply(_appliers);\n }\n\n /**\n\t * @param {string|object} scope\n\t * @param {object} [values]\n\t */\n set(scope, values) {\n return set(this, scope, values);\n }\n\n /**\n\t * @param {string} scope\n\t */\n get(scope) {\n return getScope(this, scope);\n }\n\n /**\n\t * @param {string|object} scope\n\t * @param {object} [values]\n\t */\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n\n override(scope, values) {\n return set(overrides, scope, values);\n }\n\n /**\n\t * Routes the named defaults to fallback to another scope/name.\n\t * This routing is useful when those target values, like defaults.color, are changed runtime.\n\t * If the values would be copied, the runtime change would not take effect. By routing, the\n\t * fallback is evaluated at each access, so its always up to date.\n\t *\n\t * Example:\n\t *\n\t * \tdefaults.route('elements.arc', 'backgroundColor', '', 'color')\n\t * - reads the backgroundColor from defaults.color when undefined locally\n\t *\n\t * @param {string} scope Scope this route applies to.\n\t * @param {string} name Property name that should be routed to different namespace when not defined here.\n\t * @param {string} targetScope The namespace where those properties should be routed to.\n\t * Empty string ('') is the root of defaults.\n\t * @param {string} targetName The target name in the target scope the property should be routed to.\n\t */\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope(this, scope);\n const targetScopeObject = getScope(this, targetScope);\n const privateName = '_' + name;\n\n Object.defineProperties(scopeObject, {\n // A private property is defined to hold the actual value, when this property is set in its scope (set in the setter)\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n // The actual property is defined as getter/setter so we can do the routing when value is not locally set.\n [name]: {\n enumerable: true,\n get() {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set(value) {\n this[privateName] = value;\n }\n }\n });\n }\n\n apply(appliers) {\n appliers.forEach((apply) => apply(this));\n }\n}\n\n// singleton instance\nexport default /* #__PURE__ */ new Defaults({\n _scriptable: (name) => !name.startsWith('on'),\n _indexable: (name) => name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false,\n }\n}, [applyAnimationsDefaults, applyLayoutsDefaults, applyScaleDefaults]);\n","import type {\n Chart,\n Point,\n FontSpec,\n CanvasFontSpec,\n PointStyle,\n RenderTextOpts,\n BackdropOptions\n} from '../types/index.js';\nimport type {\n TRBL,\n SplinePoint,\n RoundedRect,\n TRBLCorners\n} from '../types/geometric.js';\nimport {isArray, isNullOrUndef} from './helpers.core.js';\nimport {PI, TAU, HALF_PI, QUARTER_PI, TWO_THIRDS_PI, RAD_PER_DEG} from './helpers.math.js';\n\n/**\n * Converts the given font object into a CSS font string.\n * @param font - A font object.\n * @return The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\n * @private\n */\nexport function toFontString(font: FontSpec) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n\n return (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\n\n/**\n * @private\n */\nexport function _measureText(\n ctx: CanvasRenderingContext2D,\n data: Record,\n gc: string[],\n longest: number,\n string: string\n) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\n\ntype Thing = string | undefined | null\ntype Things = (Thing | Thing[])[]\n\n/**\n * @private\n */\n// eslint-disable-next-line complexity\nexport function _longestText(\n ctx: CanvasRenderingContext2D,\n font: string,\n arrayOfThings: Things,\n cache?: {data?: Record, garbageCollect?: string[], font?: string}\n) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n\n ctx.save();\n\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i: number, j: number, jlen: number, thing: Thing | Thing[], nestedThing: Thing | Thing[];\n for (i = 0; i < ilen; i++) {\n thing = arrayOfThings[i];\n\n // Undefined strings and arrays should not be measured\n if (thing !== undefined && thing !== null && !isArray(thing)) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n // if it is an array lets measure each element\n // to do maybe simplify this function a bit so we can do this more recursively?\n for (j = 0, jlen = thing.length; j < jlen; j++) {\n nestedThing = thing[j];\n // Undefined strings and arrays should not be measured\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n\n ctx.restore();\n\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for (i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\n\n/**\n * Returns the aligned pixel value to avoid anti-aliasing blur\n * @param chart - The chart instance.\n * @param pixel - A pixel value.\n * @param width - The width of the element.\n * @returns The aligned pixel value.\n * @private\n */\nexport function _alignPixel(chart: Chart, pixel: number, width: number) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\n\n/**\n * Clears the entire canvas.\n */\nexport function clearCanvas(canvas?: HTMLCanvasElement, ctx?: CanvasRenderingContext2D) {\n if (!ctx && !canvas) {\n return;\n }\n\n ctx = ctx || canvas.getContext('2d');\n\n ctx.save();\n // canvas.width and canvas.height do not consider the canvas transform,\n // while clearRect does\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\n\nexport interface DrawPointOptions {\n pointStyle: PointStyle;\n rotation?: number;\n radius: number;\n borderWidth: number;\n}\n\nexport function drawPoint(\n ctx: CanvasRenderingContext2D,\n options: DrawPointOptions,\n x: number,\n y: number\n) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n drawPointLegend(ctx, options, x, y, null);\n}\n\n// eslint-disable-next-line complexity\nexport function drawPointLegend(\n ctx: CanvasRenderingContext2D,\n options: DrawPointOptions,\n x: number,\n y: number,\n w: number\n) {\n let type: string, xOffset: number, yOffset: number, size: number, cornerRadius: number, width: number, xOffsetW: number, yOffsetW: number;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n\n ctx.beginPath();\n\n switch (style) {\n // Default includes circle\n default:\n if (w) {\n ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n } else {\n ctx.arc(x, y, radius, 0, TAU);\n }\n ctx.closePath();\n break;\n case 'triangle':\n width = w ? w / 2 : radius;\n ctx.moveTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n // NOTE: the rounded rect implementation changed to use `arc` instead of\n // `quadraticCurveTo` since it generates better results when rect is\n // almost a circle. 0.516 (instead of 0.5) produces results with visually\n // closer proportion to the previous impl and it is inscribed in the\n // circle with `radius`. For more details, see the following PRs:\n // https://github.com/chartjs/Chart.js/issues/5597\n // https://github.com/chartjs/Chart.js/issues/5858\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n xOffsetW = Math.cos(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n yOffsetW = Math.sin(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n ctx.arc(x - xOffsetW, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffsetW, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffsetW, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffsetW, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n width = w ? w / 2 : size;\n ctx.rect(x - width, y - size, 2 * width, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n /* falls through */\n case 'rectRot':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n /* falls through */\n case 'cross':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'star':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n rad += QUARTER_PI;\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'line':\n xOffset = w ? w / 2 : Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * (w ? w / 2 : radius), y + Math.sin(rad) * radius);\n break;\n case false:\n ctx.closePath();\n break;\n }\n\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\n\n/**\n * Returns true if the point is inside the rectangle\n * @param point - The point to test\n * @param area - The rectangle\n * @param margin - allowed margin\n * @private\n */\nexport function _isPointInArea(\n point: Point,\n area: TRBL,\n margin?: number\n) {\n margin = margin || 0.5; // margin - default is to match rounded decimals\n\n return !area || (point && point.x > area.left - margin && point.x < area.right + margin &&\n\t\tpoint.y > area.top - margin && point.y < area.bottom + margin);\n}\n\nexport function clipArea(ctx: CanvasRenderingContext2D, area: TRBL) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\n\nexport function unclipArea(ctx: CanvasRenderingContext2D) {\n ctx.restore();\n}\n\n/**\n * @private\n */\nexport function _steppedLineTo(\n ctx: CanvasRenderingContext2D,\n previous: Point,\n target: Point,\n flip?: boolean,\n mode?: string\n) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\n\n/**\n * @private\n */\nexport function _bezierCurveTo(\n ctx: CanvasRenderingContext2D,\n previous: SplinePoint,\n target: SplinePoint,\n flip?: boolean\n) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(\n flip ? previous.cp1x : previous.cp2x,\n flip ? previous.cp1y : previous.cp2y,\n flip ? target.cp2x : target.cp1x,\n flip ? target.cp2y : target.cp1y,\n target.x,\n target.y);\n}\n\nfunction setRenderOpts(ctx: CanvasRenderingContext2D, opts: RenderTextOpts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\n\nfunction decorateText(\n ctx: CanvasRenderingContext2D,\n x: number,\n y: number,\n line: string,\n opts: RenderTextOpts\n) {\n if (opts.strikethrough || opts.underline) {\n /**\n * Now that IE11 support has been dropped, we can use more\n * of the TextMetrics object. The actual bounding boxes\n * are unflagged in Chrome, Firefox, Edge, and Safari so they\n * can be safely used.\n * See https://developer.mozilla.org/en-US/docs/Web/API/TextMetrics#Browser_compatibility\n */\n const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\n\nfunction drawBackdrop(ctx: CanvasRenderingContext2D, opts: BackdropOptions) {\n const oldColor = ctx.fillStyle;\n\n ctx.fillStyle = opts.color as string;\n ctx.fillRect(opts.left, opts.top, opts.width, opts.height);\n ctx.fillStyle = oldColor;\n}\n\n/**\n * Render text onto the canvas\n */\nexport function renderText(\n ctx: CanvasRenderingContext2D,\n text: string | string[],\n x: number,\n y: number,\n font: CanvasFontSpec,\n opts: RenderTextOpts = {}\n) {\n const lines = isArray(text) ? text : [text];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i: number, line: string;\n\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n\n for (i = 0; i < lines.length; ++i) {\n line = lines[i];\n\n if (opts.backdrop) {\n drawBackdrop(ctx, opts.backdrop);\n }\n\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n\n y += Number(font.lineHeight);\n }\n\n ctx.restore();\n}\n\n/**\n * Add a path of a rectangle with rounded corners to the current sub-path\n * @param ctx - Context\n * @param rect - Bounding rect\n */\nexport function addRoundedRectPath(\n ctx: CanvasRenderingContext2D,\n rect: RoundedRect & { radius: TRBLCorners }\n) {\n const {x, y, w, h, radius} = rect;\n\n // top left arc\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, 1.5 * PI, PI, true);\n\n // line from top left to bottom left\n ctx.lineTo(x, y + h - radius.bottomLeft);\n\n // bottom left arc\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n\n // line from bottom left to bottom right\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n\n // bottom right arc\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n\n // line from bottom right to top right\n ctx.lineTo(x + w, y + radius.topRight);\n\n // top right arc\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n\n // line from top right to top left\n ctx.lineTo(x + radius.topLeft, y);\n}\n","import defaults from '../core/core.defaults.js';\nimport {isArray, isObject, toDimension, valueOrDefault} from './helpers.core.js';\nimport {toFontString} from './helpers.canvas.js';\nimport type {ChartArea, FontSpec, Point} from '../types/index.js';\nimport type {TRBL, TRBLCorners} from '../types/geometric.js';\n\nconst LINE_HEIGHT = /^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/;\nconst FONT_STYLE = /^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;\n\n/**\n * @alias Chart.helpers.options\n * @namespace\n */\n/**\n * Converts the given line height `value` in pixels for a specific font `size`.\n * @param value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n * @param size - The font size (in pixels) used to resolve relative `value`.\n * @returns The effective line height in pixels (size * 1.2 if value is invalid).\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n * @since 2.7.0\n */\nexport function toLineHeight(value: number | string, size: number): number {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n\n value = +matches[2];\n\n switch (matches[3]) {\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n default:\n break;\n }\n\n return size * value;\n}\n\nconst numberOrZero = (v: unknown) => +v || 0;\n\n/**\n * @param value\n * @param props\n */\nexport function _readValueToProps(value: number | Record, props: K[]): Record;\nexport function _readValueToProps(value: number | Record, props: Record): Record;\nexport function _readValueToProps(value: number | Record, props: string[] | Record) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value)\n ? objProps\n ? prop => valueOrDefault(value[prop], value[props[prop]])\n : prop => value[prop]\n : () => value;\n\n for (const prop of keys) {\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\n\n/**\n * Converts the given value into a TRBL object.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left)\n * @since 3.0.0\n */\nexport function toTRBL(value: number | TRBL | Point) {\n return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\n\n/**\n * Converts the given value into a TRBL corners object (similar with css border-radius).\n * @param value - If a number, set the value to all TRBL corner components,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * @returns The TRBL corner values (topLeft, topRight, bottomLeft, bottomRight)\n * @since 3.0.0\n */\nexport function toTRBLCorners(value: number | TRBLCorners) {\n return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\n\n/**\n * Converts the given value into a padding object with pre-computed width/height.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left, width, height)\n * @since 2.7.0\n */\nexport function toPadding(value?: number | TRBL): ChartArea {\n const obj = toTRBL(value) as ChartArea;\n\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n\n return obj;\n}\n\n/**\n * Parses font options and returns the font object.\n * @param options - A object that contains font options to be parsed.\n * @param fallback - A object that contains fallback font options.\n * @return The font object.\n * @private\n */\n\nexport function toFont(options: Partial, fallback?: Partial) {\n options = options || {};\n fallback = fallback || defaults.font as FontSpec;\n\n let size = valueOrDefault(options.size, fallback.size);\n\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = undefined;\n }\n\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n\n font.string = toFontString(font);\n return font;\n}\n\n/**\n * Evaluates the given `inputs` sequentially and returns the first defined value.\n * @param inputs - An array of values, falling back to the last value.\n * @param context - If defined and the current value is a function, the value\n * is called with `context` as first argument and the result becomes the new input.\n * @param index - If defined and the current value is an array, the value\n * at `index` become the new input.\n * @param info - object to return information about resolution in\n * @param info.cacheable - Will be set to `false` if option is not cacheable.\n * @since 2.7.0\n */\nexport function resolve(inputs: Array, context?: object, index?: number, info?: { cacheable: boolean }) {\n let cacheable = true;\n let i: number, ilen: number, value: unknown;\n\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\n\n/**\n * @param minmax\n * @param grace\n * @param beginAtZero\n * @private\n */\nexport function _addGrace(minmax: { min: number; max: number; }, grace: number | string, beginAtZero: boolean) {\n const {min, max} = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value: number, add: number) => beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\n\n/**\n * Create a context inheriting parentContext\n * @param parentContext\n * @param context\n * @returns\n */\nexport function createContext(parentContext: null, context: T): T;\nexport function createContext(parentContext: P, context: T): P & T;\nexport function createContext(parentContext: object, context: object) {\n return Object.assign(Object.create(parentContext), context);\n}\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport type {AnyObject} from '../types/basic.js';\nimport type {ChartMeta} from '../types/index.js';\nimport type {\n ResolverObjectKey,\n ResolverCache,\n ResolverProxy,\n DescriptorDefaults,\n Descriptor,\n ContextCache,\n ContextProxy\n} from './helpers.config.types.js';\nimport {isArray, isFunction, isObject, resolveObjectKey, _capitalize} from './helpers.core.js';\n\nexport * from './helpers.config.types.js';\n\n/**\n * Creates a Proxy for resolving raw values for options.\n * @param scopes - The option scopes to look for values, in resolution order\n * @param prefixes - The prefixes for values, in resolution order.\n * @param rootScopes - The root option scopes\n * @param fallback - Parent scopes fallback\n * @param getTarget - callback for getting the target for changed values\n * @returns Proxy\n * @private\n */\nexport function _createResolver<\n T extends AnyObject[] = AnyObject[],\n R extends AnyObject[] = T\n>(\n scopes: T,\n prefixes = [''],\n rootScopes?: R,\n fallback?: ResolverObjectKey,\n getTarget = () => scopes[0]\n) {\n const finalRootScopes = rootScopes || scopes;\n if (typeof fallback === 'undefined') {\n fallback = _resolve('_fallback', scopes);\n }\n const cache: ResolverCache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: finalRootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope: AnyObject) => _createResolver([scope, ...scopes], prefixes, finalRootScopes, fallback),\n };\n return new Proxy(cache, {\n /**\n * A trap for the delete operator.\n */\n deleteProperty(target, prop: string) {\n delete target[prop]; // remove from cache\n delete target._keys; // remove cached keys\n delete scopes[0][prop]; // remove from top level scope\n return true;\n },\n\n /**\n * A trap for getting property values.\n */\n get(target, prop: string) {\n return _cached(target, prop,\n () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n\n /**\n * A trap for Object.getOwnPropertyDescriptor.\n * Also used by Object.hasOwnProperty.\n */\n getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n\n /**\n * A trap for Object.getPrototypeOf.\n */\n getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n\n /**\n * A trap for the in operator.\n */\n has(target, prop: string) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n\n /**\n * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n */\n ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n\n /**\n * A trap for setting property values.\n */\n set(target, prop: string, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value; // set to top level scope + cache\n delete target._keys; // remove cached keys\n return true;\n }\n }) as ResolverProxy;\n}\n\n/**\n * Returns an Proxy for resolving option values with context.\n * @param proxy - The Proxy returned by `_createResolver`\n * @param context - Context object for scriptable/indexable options\n * @param subProxy - The proxy provided for scriptable options\n * @param descriptorDefaults - Defaults for descriptors\n * @private\n */\nexport function _attachContext<\n T extends AnyObject[] = AnyObject[],\n R extends AnyObject[] = T\n>(\n proxy: ResolverProxy,\n context: AnyObject,\n subProxy?: ResolverProxy,\n descriptorDefaults?: DescriptorDefaults\n) {\n const cache: ContextCache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: (ctx: AnyObject) => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: (scope: AnyObject) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n /**\n * A trap for the delete operator.\n */\n deleteProperty(target, prop) {\n delete target[prop]; // remove from cache\n delete proxy[prop]; // remove from proxy\n return true;\n },\n\n /**\n * A trap for getting property values.\n */\n get(target, prop: string, receiver) {\n return _cached(target, prop,\n () => _resolveWithContext(target, prop, receiver));\n },\n\n /**\n * A trap for Object.getOwnPropertyDescriptor.\n * Also used by Object.hasOwnProperty.\n */\n getOwnPropertyDescriptor(target, prop) {\n return target._descriptors.allKeys\n ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined\n : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n\n /**\n * A trap for Object.getPrototypeOf.\n */\n getPrototypeOf() {\n return Reflect.getPrototypeOf(proxy);\n },\n\n /**\n * A trap for the in operator.\n */\n has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n\n /**\n * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n */\n ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n\n /**\n * A trap for setting property values.\n */\n set(target, prop, value) {\n proxy[prop] = value; // set to proxy\n delete target[prop]; // remove from cache\n return true;\n }\n }) as ContextProxy;\n}\n\n/**\n * @private\n */\nexport function _descriptors(\n proxy: ResolverCache,\n defaults: DescriptorDefaults = {scriptable: true, indexable: true}\n): Descriptor {\n const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n };\n}\n\nconst readKey = (prefix: string, name: string) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop: string, value: unknown) => isObject(value) && prop !== 'adapters' &&\n (Object.getPrototypeOf(value) === null || value.constructor === Object);\n\nfunction _cached(\n target: AnyObject,\n prop: string,\n resolve: () => unknown\n) {\n if (Object.prototype.hasOwnProperty.call(target, prop) || prop === 'constructor') {\n return target[prop];\n }\n\n const value = resolve();\n // cache the resolved value\n target[prop] = value;\n return value;\n}\n\nfunction _resolveWithContext(\n target: ContextCache,\n prop: string,\n receiver: AnyObject\n) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n let value = _proxy[prop]; // resolve from proxy\n\n // resolve with context\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n // if the resolved value is an object, create a sub resolver for it\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\n\nfunction _resolveScriptable(\n prop: string,\n getValue: (ctx: AnyObject, sub: AnyObject) => unknown,\n target: ContextCache,\n receiver: AnyObject\n) {\n const {_proxy, _context, _subProxy, _stack} = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n let value = getValue(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n // When scriptable option returns an object, create a resolver on that.\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\n\nfunction _resolveArray(\n prop: string,\n value: unknown[],\n target: ContextCache,\n isIndexable: (key: string) => boolean\n) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n\n if (typeof _context.index !== 'undefined' && isIndexable(prop)) {\n return value[_context.index % value.length];\n } else if (isObject(value[0])) {\n // Array of objects, return array or resolvers\n const arr = value;\n const scopes = _proxy._scopes.filter(s => s !== arr);\n value = [];\n for (const item of arr) {\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\n\nfunction resolveFallback(\n fallback: ResolverObjectKey | ((prop: ResolverObjectKey, value: unknown) => ResolverObjectKey),\n prop: ResolverObjectKey,\n value: unknown\n) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\n\nconst getScope = (key: ResolverObjectKey, parent: AnyObject) => key === true ? parent\n : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\n\nfunction addScopes(\n set: Set,\n parentScopes: AnyObject[],\n key: ResolverObjectKey,\n parentFallback: ResolverObjectKey,\n value: unknown\n) {\n for (const parent of parentScopes) {\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (typeof fallback !== 'undefined' && fallback !== key && fallback !== parentFallback) {\n // When we reach the descriptor that defines a new _fallback, return that.\n // The fallback will resume to that new scope.\n return fallback;\n }\n } else if (scope === false && typeof parentFallback !== 'undefined' && key !== parentFallback) {\n // Fallback to `false` results to `false`, when falling back to different key.\n // For example `interaction` from `hover` or `plugins.tooltip` and `animation` from `animations`\n return null;\n }\n }\n return false;\n}\n\nfunction createSubResolver(\n parentScopes: AnyObject[],\n resolver: ResolverCache,\n prop: ResolverObjectKey,\n value: unknown\n) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [...parentScopes, ...rootScopes];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (typeof fallback !== 'undefined' && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [''], rootScopes, fallback,\n () => subGetTarget(resolver, prop as string, value));\n}\n\nfunction addScopesFromKey(\n set: Set,\n allScopes: AnyObject[],\n key: ResolverObjectKey,\n fallback: ResolverObjectKey,\n item: unknown\n) {\n while (key) {\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\n\nfunction subGetTarget(\n resolver: ResolverCache,\n prop: string,\n value: unknown\n) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n // For array of objects, the object is used to store updated values\n return value;\n }\n return target || {};\n}\n\nfunction _resolveWithPrefixes(\n prop: string,\n prefixes: string[],\n scopes: AnyObject[],\n proxy: ResolverProxy\n) {\n let value: unknown;\n for (const prefix of prefixes) {\n value = _resolve(readKey(prefix, prop), scopes);\n if (typeof value !== 'undefined') {\n return needsSubResolver(prop, value)\n ? createSubResolver(scopes, proxy, prop, value)\n : value;\n }\n }\n}\n\nfunction _resolve(key: string, scopes: AnyObject[]) {\n for (const scope of scopes) {\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (typeof value !== 'undefined') {\n return value;\n }\n }\n}\n\nfunction getKeysFromAllScopes(target: ResolverCache) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\n\nfunction resolveKeysFromAllScopes(scopes: AnyObject[]) {\n const set = new Set();\n for (const scope of scopes) {\n for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n set.add(key);\n }\n }\n return Array.from(set);\n}\n\nexport function _parseObjectDataRadialScale(\n meta: ChartMeta<'line' | 'scatter'>,\n data: AnyObject[],\n start: number,\n count: number\n) {\n const {iScale} = meta;\n const {key = 'r'} = this._parsing;\n const parsed = new Array<{r: unknown}>(count);\n let i: number, ilen: number, index: number, item: AnyObject;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n r: iScale.parse(resolveObjectKey(item, key), index)\n };\n }\n return parsed;\n}\n","import {almostEquals, distanceBetweenPoints, sign} from './helpers.math.js';\nimport {_isPointInArea} from './helpers.canvas.js';\nimport type {ChartArea} from '../types/index.js';\nimport type {SplinePoint} from '../types/geometric.js';\n\nconst EPSILON = Number.EPSILON || 1e-14;\n\ntype OptionalSplinePoint = SplinePoint | false\nconst getPoint = (points: SplinePoint[], i: number): OptionalSplinePoint => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis: 'x' | 'y') => indexAxis === 'x' ? 'y' : 'x';\n\nexport function splineCurve(\n firstPoint: SplinePoint,\n middlePoint: SplinePoint,\n afterPoint: SplinePoint,\n t: number\n): {\n previous: SplinePoint\n next: SplinePoint\n } {\n // Props to Rob Spencer at scaled innovation for his post on splining between points\n // http://scaledinnovation.com/analytics/splines/aboutSplines.html\n\n // This function must also respect \"skipped\" points\n\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n\n // If all points are the same, s01 & s02 will be inf\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n\n const fa = t * s01; // scaling factor for triangle Ta\n const fb = t * s12;\n\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\n\n/**\n * Adjust tangents to ensure monotonic properties\n */\nfunction monotoneAdjust(points: SplinePoint[], deltaK: number[], mK: number[]) {\n const pointsLen = points.length;\n\n let alphaK: number, betaK: number, tauK: number, squaredMagnitude: number, pointCurrent: OptionalSplinePoint;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\n\nfunction monotoneCompute(points: SplinePoint[], mK: number[], indexAxis: 'x' | 'y' = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta: number, pointBefore: OptionalSplinePoint, pointCurrent: OptionalSplinePoint;\n let pointAfter = getPoint(points, 0);\n\n for (let i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\n\n/**\n * This function calculates Bézier control points in a similar way than |splineCurve|,\n * but preserves monotonicity of the provided data and ensures no local extremums are added\n * between the dataset discrete points due to the interpolation.\n * See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n */\nexport function splineCurveMonotone(points: SplinePoint[], indexAxis: 'x' | 'y' = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK: number[] = Array(pointsLen).fill(0);\n const mK: number[] = Array(pointsLen);\n\n // Calculate slopes (deltaK) and initialize tangents (mK)\n let i, pointBefore: OptionalSplinePoint, pointCurrent: OptionalSplinePoint;\n let pointAfter = getPoint(points, 0);\n\n for (i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n\n // In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i]\n : !pointAfter ? deltaK[i - 1]\n : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0\n : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n\n monotoneAdjust(points, deltaK, mK);\n\n monotoneCompute(points, mK, indexAxis);\n}\n\nfunction capControlPoint(pt: number, min: number, max: number) {\n return Math.max(Math.min(pt, max), min);\n}\n\nfunction capBezierPoints(points: SplinePoint[], area: ChartArea) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\n\n/**\n * @private\n */\nexport function _updateBezierControlPoints(\n points: SplinePoint[],\n options,\n area: ChartArea,\n loop: boolean,\n indexAxis: 'x' | 'y'\n) {\n let i: number, ilen: number, point: SplinePoint, controlPoints: ReturnType;\n\n // Only consider points that are drawn in case the spanGaps option is used\n if (options.spanGaps) {\n points = points.filter((pt) => !pt.skip);\n }\n\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n point = points[i];\n controlPoints = splineCurve(\n prev,\n point,\n points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen],\n options.tension\n );\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n","import type {ChartArea, Scale} from '../types/index.js';\nimport type PrivateChart from '../core/core.controller.js';\nimport type {Chart, ChartEvent} from '../types.js';\nimport {INFINITY} from './helpers.math.js';\n\n/**\n * @private\n */\nexport function _isDomSupported(): boolean {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\n/**\n * @private\n */\nexport function _getParentNode(domNode: HTMLCanvasElement): HTMLCanvasElement {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = (parent as ShadowRoot).host;\n }\n return parent as HTMLCanvasElement;\n}\n\n/**\n * convert max-width/max-height values that may be percentages into a number\n * @private\n */\n\nfunction parseMaxStyle(styleValue: string | number, node: HTMLElement, parentProperty: string) {\n let valueInPixels: number;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n\n if (styleValue.indexOf('%') !== -1) {\n // percentage * size in dimension\n valueInPixels = (valueInPixels / 100) * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n\n return valueInPixels;\n}\n\nconst getComputedStyle = (element: HTMLElement): CSSStyleDeclaration =>\n element.ownerDocument.defaultView.getComputedStyle(element, null);\n\nexport function getStyle(el: HTMLElement, property: string): string {\n return getComputedStyle(el).getPropertyValue(property);\n}\n\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles: CSSStyleDeclaration, style: string, suffix?: string): ChartArea {\n const result = {} as ChartArea;\n suffix = suffix ? '-' + suffix : '';\n for (let i = 0; i < 4; i++) {\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\n\nconst useOffsetPos = (x: number, y: number, target: HTMLElement | EventTarget) =>\n (x > 0 || y > 0) && (!target || !(target as HTMLElement).shadowRoot);\n\n/**\n * @param e\n * @param canvas\n * @returns Canvas position\n */\nfunction getCanvasPosition(\n e: Event | TouchEvent | MouseEvent,\n canvas: HTMLCanvasElement\n): {\n x: number;\n y: number;\n box: boolean;\n } {\n const touches = (e as TouchEvent).touches;\n const source = (touches && touches.length ? touches[0] : e) as MouseEvent;\n const {offsetX, offsetY} = source as MouseEvent;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {x, y, box};\n}\n\n/**\n * Gets an event's x, y coordinates, relative to the chart area\n * @param event\n * @param chart\n * @returns x and y coordinates of the event\n */\n\nexport function getRelativePosition(\n event: Event | ChartEvent | TouchEvent | MouseEvent,\n chart: Chart | PrivateChart\n): { x: number; y: number } {\n if ('native' in event) {\n return event;\n }\n\n const {canvas, currentDevicePixelRatio} = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const {x, y, box} = getCanvasPosition(event, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n\n let {width, height} = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\n\nfunction getContainerSize(canvas: HTMLCanvasElement, width: number, height: number): Partial {\n let maxWidth: number, maxHeight: number;\n\n if (width === undefined || height === undefined) {\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect(); // this is the border box of the container\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\n\nconst round1 = (v: number) => Math.round(v * 10) / 10;\n\n// eslint-disable-next-line complexity\nexport function getMaximumSize(\n canvas: HTMLCanvasElement,\n bbWidth?: number,\n bbHeight?: number,\n aspectRatio?: number\n): { width: number; height: number } {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let {width, height} = containerSize;\n\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? width / aspectRatio : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n // https://github.com/chartjs/Chart.js/issues/4659\n // If the canvas has width, but no height, default to aspectRatio of 2 (canvas default)\n height = round1(width / 2);\n }\n\n const maintainHeight = bbWidth !== undefined || bbHeight !== undefined;\n\n if (maintainHeight && aspectRatio && containerSize.height && height > containerSize.height) {\n height = containerSize.height;\n width = round1(Math.floor(height * aspectRatio));\n }\n\n return {width, height};\n}\n\n/**\n * @param chart\n * @param forceRatio\n * @param forceStyle\n * @returns True if the canvas context size or transformation has changed.\n */\nexport function retinaScale(\n chart: Chart | PrivateChart,\n forceRatio: number,\n forceStyle?: boolean\n): boolean | void {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = round1(chart.height * pixelRatio);\n const deviceWidth = round1(chart.width * pixelRatio);\n\n (chart as PrivateChart).height = round1(chart.height);\n (chart as PrivateChart).width = round1(chart.width);\n\n const canvas = chart.canvas;\n\n // If no style has been set on the canvas, the render size is used as display size,\n // making the chart visually bigger, so let's enforce it to the \"correct\" values.\n // See https://github.com/chartjs/Chart.js/issues/3575\n if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n\n if (chart.currentDevicePixelRatio !== pixelRatio\n || canvas.height !== deviceHeight\n || canvas.width !== deviceWidth) {\n (chart as PrivateChart).currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\n\n/**\n * Detects support for options object argument in addEventListener.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n * @private\n */\nexport const supportsEventListenerOptions = (function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive() { // This function will be called when the browser attempts to access the passive property.\n passiveSupported = true;\n return false;\n }\n } as EventListenerOptions;\n\n if (_isDomSupported()) {\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n }\n } catch (e) {\n // continue regardless of error\n }\n return passiveSupported;\n}());\n\n/**\n * The \"used\" size is the final value of a dimension property after all calculations have\n * been performed. This method uses the computed style of `element` but returns undefined\n * if the computed style is not expressed in pixels. That can happen in some cases where\n * `element` has a size relative to its parent and this last one is not yet displayed,\n * for example because of `display: none` on a parent node.\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\n * @returns Size in pixels or undefined if unknown.\n */\n\nexport function readUsedSize(\n element: HTMLElement,\n property: 'width' | 'height'\n): number | undefined {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n","import type {Point, SplinePoint} from '../types/geometric.js';\n\n/**\n * @private\n */\nexport function _pointInLine(p1: Point, p2: Point, t: number, mode?) { // eslint-disable-line @typescript-eslint/no-unused-vars\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\n\n/**\n * @private\n */\nexport function _steppedInterpolation(\n p1: Point,\n p2: Point,\n t: number, mode: 'middle' | 'after' | unknown\n) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y\n : mode === 'after' ? t < 1 ? p1.y : p2.y\n : t > 0 ? p2.y : p1.y\n };\n}\n\n/**\n * @private\n */\nexport function _bezierInterpolation(p1: SplinePoint, p2: SplinePoint, t: number, mode?) { // eslint-disable-line @typescript-eslint/no-unused-vars\n const cp1 = {x: p1.cp2x, y: p1.cp2y};\n const cp2 = {x: p2.cp1x, y: p2.cp1y};\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\n","export interface RTLAdapter {\n x(x: number): number;\n setWidth(w: number): void;\n textAlign(align: 'center' | 'left' | 'right'): 'center' | 'left' | 'right';\n xPlus(x: number, value: number): number;\n leftForLtr(x: number, itemWidth: number): number;\n}\n\nconst getRightToLeftAdapter = function(rectX: number, width: number): RTLAdapter {\n return {\n x(x) {\n return rectX + rectX + width - x;\n },\n setWidth(w) {\n width = w;\n },\n textAlign(align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus(x, value) {\n return x - value;\n },\n leftForLtr(x, itemWidth) {\n return x - itemWidth;\n },\n };\n};\n\nconst getLeftToRightAdapter = function(): RTLAdapter {\n return {\n x(x) {\n return x;\n },\n setWidth(w) { // eslint-disable-line no-unused-vars\n },\n textAlign(align) {\n return align;\n },\n xPlus(x, value) {\n return x + value;\n },\n leftForLtr(x, _itemWidth) { // eslint-disable-line @typescript-eslint/no-unused-vars\n return x;\n },\n };\n};\n\nexport function getRtlAdapter(rtl: boolean, rectX: number, width: number) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\n\nexport function overrideTextDirection(ctx: CanvasRenderingContext2D, direction: 'ltr' | 'rtl') {\n let style: CSSStyleDeclaration, original: [string, string];\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [\n style.getPropertyValue('direction'),\n style.getPropertyPriority('direction'),\n ];\n\n style.setProperty('direction', direction, 'important');\n (ctx as { prevTextDirection?: [string, string] }).prevTextDirection = original;\n }\n}\n\nexport function restoreTextDirection(ctx: CanvasRenderingContext2D, original?: [string, string]) {\n if (original !== undefined) {\n delete (ctx as { prevTextDirection?: [string, string] }).prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n","import {_angleBetween, _angleDiff, _isBetween, _normalizeAngle} from './helpers.math.js';\nimport {createContext} from './helpers.options.js';\nimport {isPatternOrGradient} from './helpers.color.js';\n\n/**\n * @typedef { import('../elements/element.line.js').default } LineElement\n * @typedef { import('../elements/element.point.js').default } PointElement\n * @typedef {{start: number, end: number, loop: boolean, style?: any}} Segment\n */\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle,\n };\n }\n return {\n between: _isBetween,\n compare: (a, b) => a - b,\n normalize: x => x\n };\n}\n\nfunction normalizeSegment({start, end, count, loop, style}) {\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\n\nfunction getSegment(segment, points, bounds) {\n const {property, start: startBound, end: endBound} = bounds;\n const {between, normalize} = propertyFn(property);\n const count = points.length;\n // eslint-disable-next-line prefer-const\n let {start, end, loop} = segment;\n let i, ilen;\n\n if (loop) {\n start += count;\n end += count;\n for (i = 0, ilen = count; i < ilen; ++i) {\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n\n if (end < start) {\n end += count;\n }\n return {start, end, loop, style: segment.style};\n}\n\n/**\n * Returns the sub-segment(s) of a line segment that fall in the given bounds\n * @param {object} segment\n * @param {number} segment.start - start index of the segment, referring the points array\n * @param {number} segment.end - end index of the segment, referring the points array\n * @param {boolean} segment.loop - indicates that the segment is a loop\n * @param {object} [segment.style] - segment style\n * @param {PointElement[]} points - the points that this segment refers to\n * @param {object} [bounds]\n * @param {string} bounds.property - the property of a `PointElement` we are bounding. `x`, `y` or `angle`.\n * @param {number} bounds.start - start value of the property\n * @param {number} bounds.end - end value of the property\n * @private\n **/\nexport function _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [segment];\n }\n\n const {property, start: startBound, end: endBound} = bounds;\n const count = points.length;\n const {compare, between, normalize} = propertyFn(property);\n const {start, end, loop, style} = getSegment(segment, points, bounds);\n\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n\n const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = () => inside || startIsBefore();\n const shouldStop = () => !inside || endIsBefore();\n\n for (let i = start, prev = start; i <= end; ++i) {\n point = points[i % count];\n\n if (point.skip) {\n continue;\n }\n\n value = normalize(point[property]);\n\n if (value === prevValue) {\n continue;\n }\n\n inside = between(value, startBound, endBound);\n\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({start: subStart, end: i, loop, count, style}));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n\n if (subStart !== null) {\n result.push(normalizeSegment({start: subStart, end, loop, count, style}));\n }\n\n return result;\n}\n\n\n/**\n * Returns the segments of the line that are inside given bounds\n * @param {LineElement} line\n * @param {object} [bounds]\n * @param {string} bounds.property - the property we are bounding with. `x`, `y` or `angle`.\n * @param {number} bounds.start - start value of the `property`\n * @param {number} bounds.end - end value of the `property`\n * @private\n */\nexport function _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n\n for (let i = 0; i < segments.length; i++) {\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\n\n/**\n * Find start and end index of a line.\n */\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n\n if (loop && !spanGaps) {\n // loop and not spanning gaps, first find a gap to start from\n while (start < count && !points[start].skip) {\n start++;\n }\n }\n\n // find first non skipped point (after the first gap possibly)\n while (start < count && points[start].skip) {\n start++;\n }\n\n // if we looped to count, start needs to be 0\n start %= count;\n\n if (loop) {\n // loop will go past count, if start > 0\n end += start;\n }\n\n while (end > start && points[end % count].skip) {\n end--;\n }\n\n // end could be more than count, normalize\n end %= count;\n\n return {start, end};\n}\n\n/**\n * Compute solid segments from Points, when spanGaps === false\n * @param {PointElement[]} points - the points\n * @param {number} start - start index\n * @param {number} max - max index (can go past count on a loop)\n * @param {boolean} loop - boolean indicating that this would be a loop if no gaps are found\n */\nfunction solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n\n for (end = start + 1; end <= max; ++end) {\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({start: start % count, end: (end - 1) % count, loop});\n // @ts-ignore\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n\n if (last !== null) {\n result.push({start: start % count, end: last % count, loop});\n }\n\n return result;\n}\n\n/**\n * Compute the continuous segments that define the whole line\n * There can be skipped points within a segment, if spanGaps is true.\n * @param {LineElement} line\n * @param {object} [segmentOptions]\n * @return {Segment[]}\n * @private\n */\nexport function _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n\n if (!count) {\n return [];\n }\n\n const loop = !!line._loop;\n const {start, end} = findStartAndEnd(points, count, loop, spanGaps);\n\n if (spanGaps === true) {\n return splitByStyles(line, [{start, end, loop}], points, segmentOptions);\n }\n\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\n\n/**\n * @param {Segment[]} segments\n * @param {PointElement[]} points\n * @param {object} [segmentOptions]\n * @return {Segment[]}\n */\nfunction splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\n\n/**\n * @param {LineElement} line\n * @param {Segment[]} segments\n * @param {PointElement[]} points\n * @param {object} [segmentOptions]\n * @return {Segment[]}\n */\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const {_datasetIndex: datasetIndex, options: {spanGaps}} = line;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n // Style can not start/end on a skipped point, adjust indices accordingly\n s += count;\n while (points[s % count].skip) {\n s -= dir;\n }\n while (points[e % count].skip) {\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({start: s % count, end: e % count, loop: l, style: st});\n prevStyle = st;\n start = e % count;\n }\n }\n\n for (const segment of segments) {\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for (i = start + 1; i <= segment.end; i++) {\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n\n return result;\n}\n\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\n\nfunction styleChanged(style, prevStyle) {\n if (!prevStyle) {\n return false;\n }\n const cache = [];\n const replacer = function(key, value) {\n if (!isPatternOrGradient(value)) {\n return value;\n }\n if (!cache.includes(value)) {\n cache.push(value);\n }\n return cache.indexOf(value);\n };\n return JSON.stringify(style, replacer) !== JSON.stringify(prevStyle, replacer);\n}\n","import type {Chart, ChartArea, ChartMeta, Scale, TRBL} from '../types/index.js';\n\nfunction getSizeForArea(scale: Scale, chartArea: ChartArea, field: keyof ChartArea) {\n return scale.options.clip ? scale[field] : chartArea[field];\n}\n\nfunction getDatasetArea(meta: ChartMeta, chartArea: ChartArea): TRBL {\n const {xScale, yScale} = meta;\n if (xScale && yScale) {\n return {\n left: getSizeForArea(xScale, chartArea, 'left'),\n right: getSizeForArea(xScale, chartArea, 'right'),\n top: getSizeForArea(yScale, chartArea, 'top'),\n bottom: getSizeForArea(yScale, chartArea, 'bottom')\n };\n }\n return chartArea;\n}\n\nexport function getDatasetClipArea(chart: Chart, meta: ChartMeta): TRBL | false {\n const clip = meta._clip;\n if (clip.disabled) {\n return false;\n }\n const area = getDatasetArea(meta, chart.chartArea);\n\n return {\n left: clip.left === false ? 0 : area.left - (clip.left === true ? 0 : clip.left),\n right: clip.right === false ? chart.width : area.right + (clip.right === true ? 0 : clip.right),\n top: clip.top === false ? 0 : area.top - (clip.top === true ? 0 : clip.top),\n bottom: clip.bottom === false ? chart.height : area.bottom + (clip.bottom === true ? 0 : clip.bottom)\n };\n}\n","import {requestAnimFrame} from '../helpers/helpers.extras.js';\n\n/**\n * @typedef { import('./core.animation.js').default } Animation\n * @typedef { import('./core.controller.js').default } Chart\n */\n\n/**\n * Please use the module's default export which provides a singleton instance\n * Note: class is export for typedoc\n */\nexport class Animator {\n constructor() {\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n\n /**\n\t * @private\n\t */\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n\n callbacks.forEach(fn => fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n\n /**\n\t * @private\n\t */\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n\n this._request = requestAnimFrame.call(window, () => {\n this._update();\n this._request = null;\n\n if (this._running) {\n this._refresh();\n }\n });\n }\n\n /**\n\t * @private\n\t */\n _update(date = Date.now()) {\n let remaining = 0;\n\n this._charts.forEach((anims, chart) => {\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n\n for (; i >= 0; --i) {\n item = items[i];\n\n if (item._active) {\n if (item._total > anims.duration) {\n // if the animation has been updated and its duration prolonged,\n // update to total duration of current animations run (for progress event)\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n // Remove the item by replacing it with last item and removing the last\n // A lot faster than splice.\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n\n remaining += items.length;\n });\n\n this._lastDate = date;\n\n if (remaining === 0) {\n this._running = false;\n }\n }\n\n /**\n\t * @private\n\t */\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n\n /**\n\t * @param {Chart} chart\n\t * @param {string} event - event name\n\t * @param {Function} cb - callback\n\t */\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n\n /**\n\t * Add animations\n\t * @param {Chart} chart\n\t * @param {Animation[]} items - animations\n\t */\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n\n /**\n\t * Counts number of active animations for the chart\n\t * @param {Chart} chart\n\t */\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n\n /**\n\t * Start animating (all charts)\n\t * @param {Chart} chart\n\t */\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n\n /**\n\t * Stop all animations for the chart\n\t * @param {Chart} chart\n\t */\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n\n for (; i >= 0; --i) {\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n\n /**\n\t * Remove chart from Animator\n\t * @param {Chart} chart\n\t */\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\n\n// singleton instance\nexport default /* #__PURE__ */ new Animator();\n","import effects from '../helpers/helpers.easing.js';\nimport {resolve} from '../helpers/helpers.options.js';\nimport {color as helpersColor} from '../helpers/helpers.color.js';\n\nconst transparent = 'transparent';\nconst interpolators = {\n boolean(from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n /**\n * @param {string} from\n * @param {string} to\n * @param {number} factor\n */\n color(from, to, factor) {\n const c0 = helpersColor(from || transparent);\n const c1 = c0.valid && helpersColor(to || transparent);\n return c1 && c1.valid\n ? c1.mix(c0, factor).hexString()\n : to;\n },\n number(from, to, factor) {\n return from + (to - from) * factor;\n }\n};\n\nexport default class Animation {\n constructor(cfg, target, prop, to) {\n const currentValue = target[prop];\n\n to = resolve([cfg.to, to, currentValue, cfg.from]);\n const from = resolve([cfg.from, currentValue, to]);\n\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n\n active() {\n return this._active;\n }\n\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n this._from = resolve([cfg.from, currentValue, to]);\n }\n }\n\n cancel() {\n if (this._active) {\n // update current evaluated value, for smoother animations\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n\n this._active = from !== to && (loop || (elapsed < duration));\n\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n\n factor = (elapsed / duration) % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n\n this._target[prop] = this._fn(from, to, factor);\n }\n\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej) => {\n promises.push({res, rej});\n });\n }\n\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for (let i = 0; i < promises.length; i++) {\n promises[i][method]();\n }\n }\n}\n","import animator from './core.animator.js';\nimport Animation from './core.animation.js';\nimport defaults from './core.defaults.js';\nimport {isArray, isObject} from '../helpers/helpers.core.js';\n\nexport default class Animations {\n constructor(chart, config) {\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n\n const animationOptions = Object.keys(defaults.animation);\n const animatedProps = this._properties;\n\n Object.getOwnPropertyNames(config).forEach(key => {\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions) {\n resolved[option] = cfg[option];\n }\n\n (isArray(cfg.properties) && cfg.properties || [key]).forEach((prop) => {\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n\n /**\n\t * Utility to handle animation of `options`.\n\t * @private\n\t */\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n // Going to shared options:\n // After all animations are done, assign the shared options object to the element\n // So any new updates to the shared options are observed\n awaitAll(target.options.$animations, newOptions).then(() => {\n target.options = newOptions;\n }, () => {\n // rejected, noop\n });\n }\n\n return animations;\n }\n\n /**\n\t * @private\n\t */\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n\n for (i = props.length - 1; i >= 0; --i) {\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n\n if (animation) {\n if (cfg && animation.active()) {\n // There is an existing active animation, let's update that\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n // not animated, set directly to new value\n target[prop] = value;\n continue;\n }\n\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n\n\n /**\n\t * Update `target` properties to new values, using configured animations\n\t * @param {object} target - object to update\n\t * @param {object} values - new target properties\n\t * @returns {boolean|undefined} - `true` if animations were started\n\t **/\n update(target, values) {\n if (this._properties.size === 0) {\n // Nothing is animated, just apply the new values.\n Object.assign(target, values);\n return;\n }\n\n const animations = this._createAnimations(target, values);\n\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\n\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for (let i = 0; i < keys.length; i++) {\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n // @ts-ignore\n return Promise.all(running);\n}\n\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n // Going from shared options to distinct one:\n // Create new options object containing the old shared values and start updating that.\n target.options = options = Object.assign({}, options, {$shared: false, $animations: {}});\n }\n return options;\n}\n","import Animations from './core.animations.js';\nimport defaults from './core.defaults.js';\nimport {isArray, isFinite, isObject, valueOrDefault, resolveObjectKey, defined} from '../helpers/helpers.core.js';\nimport {listenArrayEvents, unlistenArrayEvents} from '../helpers/helpers.collection.js';\nimport {createContext, sign} from '../helpers/index.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef { import('./core.scale.js').default } Scale\n */\n\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\n\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\n\nfunction toClip(value) {\n let t, r, b, l;\n\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\n\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n keys.push(metasets[i].index);\n }\n return keys;\n}\n\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n\n if (value === null) {\n return;\n }\n\n let found = false;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n found = true;\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isFinite(otherValue) && (singleMode || (value === 0 || sign(value) === sign(otherValue)))) {\n value += otherValue;\n }\n }\n\n if (!found && !options.all) {\n return 0;\n }\n\n return value;\n}\n\nfunction convertObjectDataToArray(data, meta) {\n const {iScale, vScale} = meta;\n const iAxisKey = iScale.axis === 'x' ? 'x' : 'y';\n const vAxisKey = vScale.axis === 'x' ? 'x' : 'y';\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n adata[i] = {\n [iAxisKey]: key,\n [vAxisKey]: data[key]\n };\n }\n return adata;\n}\n\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || (stacked === undefined && meta.stack !== undefined);\n}\n\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\n\nfunction getUserBounds(scale) {\n const {min, max, minDefined, maxDefined} = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\n\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\n\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n const value = stack[meta.index];\n if ((positive && value > 0) || (!positive && value < 0)) {\n return meta.index;\n }\n }\n\n return null;\n}\n\nfunction updateStacks(controller, parsed) {\n const {chart, _cachedMeta: meta} = controller;\n const stacks = chart._stacks || (chart._stacks = {}); // map structure is {stackKey: {datasetIndex: value}}\n const {iScale, vScale, index: datasetIndex} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n\n for (let i = 0; i < ilen; ++i) {\n const item = parsed[i];\n const {[iAxis]: index, [vAxis]: value} = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n\n const visualValues = stack._visualValues || (stack._visualValues = {});\n visualValues[datasetIndex] = value;\n }\n}\n\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\n\nfunction createDatasetContext(parent, index) {\n return createContext(parent,\n {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n }\n );\n}\n\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\n\nfunction clearStacks(meta, items) {\n // Not using meta.index here, because it might be already updated if the dataset changed location\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n\n items = items || meta._parsed;\n for (const parsed of items) {\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n if (stacks[axis]._visualValues !== undefined && stacks[axis]._visualValues[datasetIndex] !== undefined) {\n delete stacks[axis]._visualValues[datasetIndex];\n }\n }\n}\n\nconst isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked\n && {keys: getSortedDatasetIndices(chart, true), values: null};\n\nexport default class DatasetController {\n\n /**\n * @type {any}\n */\n static defaults = {};\n\n /**\n * Element type used to generate a meta dataset (e.g. Chart.element.LineElement).\n */\n static datasetElementType = null;\n\n /**\n * Element type used to generate a meta data (e.g. Chart.element.PointElement).\n */\n static dataElementType = null;\n\n /**\n\t * @param {Chart} chart\n\t * @param {number} datasetIndex\n\t */\n constructor(chart, datasetIndex) {\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n /** @type {boolean | object} */\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.supportsDecimation = false;\n this.$context = undefined;\n this._syncList = [];\n this.datasetElementType = new.target.datasetElementType;\n this.dataElementType = new.target.dataElementType;\n\n this.initialize();\n }\n\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n\n if (this.options.fill && !this.chart.isPluginEnabled('filler')) {\n console.warn(\"Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options\");\n }\n }\n\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n\n const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n\n /**\n\t * @param {string} scaleID\n\t * @return {Scale}\n\t */\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n\n /**\n\t * @private\n\t */\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale\n ? meta.vScale\n : meta.iScale;\n }\n\n reset() {\n this._update('reset');\n }\n\n /**\n\t * @private\n\t */\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n\n /**\n\t * @private\n\t */\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n\n // In order to correctly handle data addition/deletion animation (and thus simulate\n // real-time charts), we need to monitor these data modifications and synchronize\n // the internal metadata accordingly.\n\n if (isObject(data)) {\n const meta = this._cachedMeta;\n this._data = convertObjectDataToArray(data, meta);\n } else if (_data !== data) {\n if (_data) {\n // This case happens when the user replaced the data array instance.\n unlistenArrayEvents(_data, this);\n // Discard old parsed data and stacks\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n\n addElements() {\n const meta = this._cachedMeta;\n\n this._dataCheck();\n\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n\n this._dataCheck();\n\n // make sure cached _stacked status is current\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n\n // detect change in stack option\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n // remove values from old stack\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n\n // Re-sync meta data in case the user replaced the data array or if we missed\n // any updates and so make sure that we handle number of datapoints changing.\n this._resyncElements(resetNewElements);\n\n // if stack changed, update stack values for the whole dataset\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n meta._stacked = isStacked(meta.vScale, meta);\n }\n }\n\n /**\n\t * Merges user-supplied and default dataset-level options\n\t * @private\n\t */\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n\n /**\n\t * @param {number} start\n\t * @param {number} count\n\t */\n parse(start, count) {\n const {_cachedMeta: meta, _data: data} = this;\n const {iScale, _stacked} = meta;\n const iAxis = iScale.axis;\n\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n\n const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]);\n for (i = 0; i < count; ++i) {\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n\n /**\n\t * Parse array of primitive values\n\t * @param {object} meta - dataset meta\n\t * @param {array} data - data array. Example [1,3,4]\n\t * @param {number} start - start index\n\t * @param {number} count - number of items to parse\n\t * @returns {object} parsed item - item containing index and a parsed value\n\t * for each scale id.\n\t * Example: {xScale0: 0, yScale0: 1}\n\t * @protected\n\t */\n parsePrimitiveData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n\n /**\n\t * Parse array of arrays\n\t * @param {object} meta - dataset meta\n\t * @param {array} data - data array. Example [[1,2],[3,4]]\n\t * @param {number} start - start index\n\t * @param {number} count - number of items to parse\n\t * @returns {object} parsed item - item containing index and a parsed value\n\t * for each scale id.\n\t * Example: {x: 0, y: 1}\n\t * @protected\n\t */\n parseArrayData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n\n /**\n\t * Parse array of objects\n\t * @param {object} meta - dataset meta\n\t * @param {array} data - data array. Example [{x:1, y:5}, {x:2, y:10}]\n\t * @param {number} start - start index\n\t * @param {number} count - number of items to parse\n\t * @returns {object} parsed item - item containing index and a parsed value\n\t * for each scale id. _custom is optional\n\t * Example: {xScale0: 0, yScale0: 1, _custom: {r: 10, foo: 'bar'}}\n\t * @protected\n\t */\n parseObjectData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n\n /**\n\t * @protected\n\t */\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n\n /**\n\t * @protected\n\t */\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n\n /**\n\t * @protected\n\t */\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]._visualValues\n };\n return applyStack(stack, value, meta.index, {mode});\n }\n\n /**\n\t * @protected\n\t */\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n\n /**\n\t * @protected\n\t */\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n const {min: otherMin, max: otherMax} = getUserBounds(otherScale);\n let i, parsed;\n\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n\n for (i = 0; i < ilen; ++i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n // if the data is sorted, we don't need to check further from this end of array\n break;\n }\n }\n if (sorted) {\n // in the sorted case, find first non-skipped value from other end of array\n for (i = ilen - 1; i >= 0; --i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n\n for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n value = parsed[i][scale.axis];\n if (isFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n\n /**\n\t * @return {number|boolean}\n\t * @protected\n\t */\n getMaxOverflow() {\n return false;\n }\n\n /**\n\t * @protected\n\t */\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n\n /**\n\t * @private\n\t */\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n\n /**\n\t * @param {string} mode\n\t */\n update(mode) {} // eslint-disable-line no-unused-vars\n\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || (elements.length - start);\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n\n for (i = start; i < start + count; ++i) {\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n\n for (i = 0; i < active.length; ++i) {\n active[i].draw(ctx, area);\n }\n }\n\n /**\n\t * Returns a set of predefined style properties that should be used to represent the dataset\n\t * or the data if the index is specified\n\t * @param {number} index - data index\n\t * @param {boolean} [active] - true if hover\n\t * @return {object} style object\n\t */\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset\n ? this.resolveDatasetElementOptions(mode)\n : this.resolveDataElementOptions(index || 0, mode);\n }\n\n /**\n\t * @protected\n\t */\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context ||\n (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context ||\n (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n\n /**\n\t * @param {string} [mode]\n\t * @protected\n\t */\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n\n /**\n\t * @param {number} index\n\t * @param {string} [mode]\n\t * @protected\n\t */\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n\n /**\n\t * @private\n\t */\n _resolveElementOptions(elementType, mode = 'default', index) {\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n // context is provided as a function, and is called only if needed,\n // so we don't create a context for each element if not needed.\n const context = () => this.getContext(index, active, mode);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n\n if (values.$shared) {\n // `$shared` indicates this set of options can be shared between multiple elements.\n // Sharing is used to reduce number of properties to change during animation.\n values.$shared = sharing;\n\n // We cache options by `mode`, which can be 'active' for example. This enables us\n // to have the 'active' element options and 'default' options to switch between\n // when interacting.\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n\n return values;\n }\n\n\n /**\n\t * @private\n\t */\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n\n /**\n\t * Utility for getting the options object shared between elements\n\t * @protected\n\t */\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n\n /**\n\t * Utility for determining if `options` should be included in the updated properties\n\t * @protected\n\t */\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n\n /**\n * @todo v4, rename to getSharedOptions and remove excess functions\n */\n _getSharedOptions(start, mode) {\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const previouslySharedOptions = this._sharedOptions;\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions) || (sharedOptions !== previouslySharedOptions);\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n return {sharedOptions, includeOptions};\n }\n\n /**\n\t * Utility for updating an element with new properties, using animations when appropriate.\n\t * @protected\n\t */\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n\n /**\n\t * Utility to animate the shared options, that are potentially affecting multiple elements.\n\t * @protected\n\t */\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n\n /**\n\t * @private\n\t */\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n // When going from active to inactive, we need to update to the shared options.\n // This way the once hovered element will end up with the same original shared options instance, after animation.\n options: (!active && this.getSharedOptions(options)) || options\n });\n }\n\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n\n /**\n\t * @private\n\t */\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n\n /**\n\t * @private\n\t */\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n\n /**\n\t * @private\n\t */\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n\n // Apply changes detected through array listeners\n for (const [method, arg1, arg2] of this._syncList) {\n this[method](arg1, arg2);\n }\n this._syncList = [];\n\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n\n if (count) {\n // TODO: It is not optimal to always parse the old data\n // This is done because we are not detecting direct assignments:\n // chart.data.datasets[0].data[5] = 10;\n // chart.data.datasets[0].data[5].y = 10;\n this.parse(0, count);\n }\n\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n\n /**\n\t * @private\n\t */\n _insertElements(start, count, resetNewElements = true) {\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n\n const move = (arr) => {\n arr.length += count;\n for (i = arr.length - 1; i >= end; i--) {\n arr[i] = arr[i - count];\n }\n };\n move(data);\n\n for (i = start; i < end; ++i) {\n data[i] = new this.dataElementType();\n }\n\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n\n updateElements(element, start, count, mode) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * @private\n\t */\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n\n /**\n\t * @private\n */\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const [method, arg1, arg2] = args;\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([this.index, ...args]);\n }\n\n _onDataPush() {\n const count = arguments.length;\n this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n }\n\n _onDataPop() {\n this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n }\n\n _onDataShift() {\n this._sync(['_removeElements', 0, 1]);\n }\n\n _onDataSplice(start, count) {\n if (count) {\n this._sync(['_removeElements', start, count]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync(['_insertElements', start, newCount]);\n }\n }\n\n _onDataUnshift() {\n this._sync(['_insertElements', 0, arguments.length]);\n }\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {\n _arrayUnique, isArray, isNullOrUndef,\n valueOrDefault, resolveObjectKey, sign, defined\n} from '../helpers/index.js';\n\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n\n for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n }\n return scale._cache.$bar;\n}\n\n/**\n * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\n * @private\n */\nfunction computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = () => {\n if (curr === 32767 || curr === -32768) {\n // Ignore truncated pixels\n return;\n }\n if (defined(prev)) {\n // curr - prev === 0 is ignored\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n\n for (i = 0, ilen = values.length; i < ilen; ++i) {\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n\n prev = undefined;\n for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n\n return min;\n}\n\n/**\n * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\n * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\n * mode currently always generates bars equally sized (until we introduce scriptable options?).\n * @private\n */\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n // When bar thickness is enforced, category and bar percentages are ignored.\n // Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\n // and deprecate barPercentage since this value is ignored when thickness is absolute.\n size = thickness * stackCount;\n ratio = 1;\n }\n\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - (size / 2)\n };\n}\n\n/**\n * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\n * percentage options are 1), based on the previous and following categories. This mode\n * generates bars with different widths when data are not evenly spaced.\n * @private\n */\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n\n if (prev === null) {\n // first data: its size is double based on the next point or,\n // if it's also the last data, we use the scale size.\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n\n if (next === null) {\n // last data: its size is also double based on the previous point.\n next = curr + curr - prev;\n }\n\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\n\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n\n // Store `barEnd` (furthest away from origin) as parsed value,\n // to make stacking straight forward\n item[vScale.axis] = barEnd;\n\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\n\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\n\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n\n for (i = start, ilen = start + count; i < ilen; ++i) {\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\n\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\n\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\n\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {start, end, reverse, top, bottom};\n}\n\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n\n if (edge === true) {\n properties.borderSkipped = {top: true, right: true, bottom: true, left: true};\n return;\n }\n\n const {start, end, reverse, top, bottom} = borderProps(properties);\n\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\n\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\n\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\n\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\n\nfunction setInflateAmount(properties, {inflateAmount}, ratio) {\n properties.inflateAmount = inflateAmount === 'auto'\n ? ratio === 1 ? 0.33 : 0\n : inflateAmount;\n}\n\nexport default class BarController extends DatasetController {\n\n static id = 'bar';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'base', 'width', 'height']\n }\n }\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true,\n }\n }\n };\n\n\n /**\n\t * Overriding primitive data parsing since we support mixed primitive/array\n\t * data for float bars\n\t * @protected\n\t */\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n\n /**\n\t * Overriding array data parsing since we support mixed primitive/array\n\t * data for float bars\n\t * @protected\n\t */\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n\n /**\n\t * Overriding object data parsing since we support mixed primitive/array\n\t * value-scale data for float bars\n\t * @protected\n\t */\n parseObjectData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n\n /**\n\t * @protected\n\t */\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n // float bar: only one end of the bar is considered by `super`\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n\n /**\n\t * @return {number|boolean}\n\t * @protected\n\t */\n getMaxOverflow() {\n return 0;\n }\n\n /**\n\t * @protected\n\t */\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {iScale, vScale} = meta;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom)\n ? '[' + custom.start + ', ' + custom.end + ']'\n : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n\n initialize() {\n this.enableOptionSharing = true;\n\n super.initialize();\n\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const {index, _cachedMeta: {vScale}} = this;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n\n for (let i = start; i < start + count; i++) {\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {base, head: base} : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || (index === stack._top || index === stack._bottom),\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n\n /**\n\t * Returns the stacks based on groups and bar visibility.\n\t * @param {number} [last] - The dataset index\n\t * @param {number} [dataIndex] - The data index of the ruler\n\t * @returns {string[]} The list of stack IDs\n\t * @private\n\t */\n _getStacks(last, dataIndex) {\n const {iScale} = this._cachedMeta;\n const metasets = iScale.getMatchingVisibleMetas(this._type)\n .filter(meta => meta.controller.options.grouped);\n const stacked = iScale.options.stacked;\n const stacks = [];\n const currentParsed = this._cachedMeta.controller.getParsed(dataIndex);\n const iScaleValue = currentParsed && currentParsed[iScale.axis];\n\n const skipNull = (meta) => {\n const parsed = meta._parsed.find(item => item[iScale.axis] === iScaleValue);\n const val = parsed && parsed[meta.vScale.axis];\n\n if (isNullOrUndef(val) || isNaN(val)) {\n return true;\n }\n };\n\n for (const meta of metasets) {\n if (dataIndex !== undefined && skipNull(meta)) {\n continue;\n }\n\n // stacked | meta.stack\n // | found | not found | undefined\n // false | x | x | x\n // true | | x |\n // undefined | | x | x\n if (stacked === false || stacks.indexOf(meta.stack) === -1 ||\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\n stacks.push(meta.stack);\n }\n if (meta.index === last) {\n break;\n }\n }\n\n // No stacks? that means there is no visible data. Let's still initialize an `undefined`\n // stack where possible invisible bars will be located.\n // https://github.com/chartjs/Chart.js/issues/6368\n if (!stacks.length) {\n stacks.push(undefined);\n }\n\n return stacks;\n }\n\n /**\n\t * Returns the effective number of stacks based on groups and bar visibility.\n\t * @private\n\t */\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n\n _getAxisCount() {\n return this._getAxis().length;\n }\n\n getFirstScaleIdForIndexAxis() {\n const scales = this.chart.scales;\n const indexScaleId = this.chart.options.indexAxis;\n return Object.keys(scales).filter(key => scales[key].axis === indexScaleId).shift();\n }\n\n _getAxis() {\n const axis = {};\n const firstScaleAxisId = this.getFirstScaleIdForIndexAxis();\n for (const dataset of this.chart.data.datasets) {\n axis[valueOrDefault(\n this.chart.options.indexAxis === 'x' ? dataset.xAxisID : dataset.yAxisID, firstScaleAxisId\n )] = true;\n }\n return Object.keys(axis);\n }\n\n /**\n\t * Returns the stack index for the given dataset based on groups and bar visibility.\n\t * @param {number} [datasetIndex] - The dataset index\n\t * @param {string} [name] - The stack name to find\n * @param {number} [dataIndex]\n\t * @returns {number} The stack index\n\t * @private\n\t */\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = (name !== undefined)\n ? stacks.indexOf(name)\n : -1; // indexOf returns -1 if element is not present\n\n return (index === -1)\n ? stacks.length - 1\n : index;\n }\n\n /**\n\t * @private\n\t */\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n\n for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n // bar thickness ratio used for non-grouped bars\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n\n /**\n\t * Note: pixel values are not clamped to the scale area.\n\t * @private\n\t */\n _calculateBarValuePixels(index) {\n const {_cachedMeta: {vScale, _stacked, index: datasetIndex}, options: {base: baseValue, minBarLength}} = this;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n\n if (length !== value) {\n start = length - value;\n length = value;\n }\n\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n // bars crossing origin are not stacked\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n // When not visible, no height\n head = base;\n }\n\n size = head - base;\n\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n const startPixel = vScale.getPixelForDecimal(0);\n const endPixel = vScale.getPixelForDecimal(1);\n const min = Math.min(startPixel, endPixel);\n const max = Math.max(startPixel, endPixel);\n base = Math.max(Math.min(base, max), min);\n head = base + size;\n\n if (_stacked && !floating) {\n // visual data coordinates after applying minBarLength\n parsed._stacks[vScale.axis]._visualValues[datasetIndex] = vScale.getValueForPixel(head) - vScale.getValueForPixel(base);\n }\n }\n\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n\n /**\n\t * @private\n\t */\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n const axisCount = this._getAxisCount();\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex'\n ? computeFlexCategoryTraits(index, ruler, options, stackCount * axisCount)\n : computeFitCategoryTraits(index, ruler, options, stackCount * axisCount);\n const axisID = this.chart.options.indexAxis === 'x' ? this.getDataset().xAxisID : this.getDataset().yAxisID;\n const axisNumber = this._getAxis().indexOf(valueOrDefault(axisID, this.getFirstScaleIdForIndexAxis()));\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined) + axisNumber;\n center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n // For non-grouped bar charts, exact pixel values are used\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n\n\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n\n for (; i < ilen; ++i) {\n if (this.getParsed(i)[vScale.axis] !== null && !rects[i].hidden) {\n rects[i].draw(this._ctx);\n }\n }\n }\n\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {valueOrDefault} from '../helpers/helpers.core.js';\n\nexport default class BubbleController extends DatasetController {\n\n static id = 'bubble';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'borderWidth', 'radius']\n }\n }\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n };\n\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n\n /**\n\t * Parse array of primitive values\n\t * @protected\n\t */\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n\n /**\n\t * Parse array of arrays\n\t * @protected\n\t */\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n\n /**\n\t * Parse array of objects\n\t * @protected\n\t */\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n\n /**\n\t * @protected\n\t */\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n\n /**\n\t * @protected\n\t */\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const {xScale, yScale} = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n\n update(mode) {\n const points = this._cachedMeta.data;\n\n // Update Points\n this.updateElements(points, 0, points.length, mode);\n }\n\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale} = this._cachedMeta;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n\n if (reset) {\n properties.options.radius = 0;\n }\n }\n\n this.updateElement(point, i, properties, mode);\n }\n }\n\n /**\n\t * @param {number} index\n\t * @param {string} [mode]\n\t * @protected\n\t */\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n\n // In case values were cached (and thus frozen), we need to clone the values\n if (values.$shared) {\n values = Object.assign({}, values, {$shared: false});\n }\n\n // Custom radius resolution\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n\n return values;\n }\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {isObject, resolveObjectKey, toPercentage, toDimension, valueOrDefault} from '../helpers/helpers.core.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\nimport {toRadians, PI, TAU, HALF_PI, _angleBetween} from '../helpers/helpers.math.js';\n\n/**\n * @typedef { import('../core/core.controller.js').default } Chart\n */\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n // If the chart's circumference isn't a full circle, calculate size as a ratio of the width/height of the arc\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {ratioX, ratioY, offsetX, offsetY};\n}\n\nexport default class DoughnutController extends DatasetController {\n\n static id = 'doughnut';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n // Boolean - Whether we animate the rotation of the Doughnut\n animateRotate: true,\n // Boolean - Whether we animate scaling the Doughnut from the centre\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n },\n },\n // The percentage of the chart that we cut out of the middle.\n cutout: '50%',\n\n // The rotation of the chart, where the first data arc begins.\n rotation: 0,\n\n // The total circumference of the chart.\n circumference: 360,\n\n // The outer radius of the chart\n radius: '100%',\n\n // Spacing between arcs\n spacing: 0,\n\n indexAxis: 'r',\n };\n\n static descriptors = {\n _scriptable: (name) => name !== 'spacing',\n _indexable: (name) => name !== 'spacing' && !name.startsWith('borderDash') && !name.startsWith('hoverBorderDash'),\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n aspectRatio: 1,\n\n // Need to override these to give a nice default\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n const {labels: {pointStyle, textAlign, color, useBorderRadius, borderRadius}} = chart.legend.options;\n if (data.labels.length && data.datasets.length) {\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n\n return {\n text: label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !chart.getDataVisibility(i),\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: style.borderWidth,\n strokeStyle: style.borderColor,\n textAlign: textAlign,\n pointStyle: pointStyle,\n borderRadius: useBorderRadius && (borderRadius || style.borderRadius),\n // Extra data used for toggling the correct item\n index: i\n };\n });\n }\n return [];\n }\n },\n\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n }\n };\n\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n\n linkScales() {}\n\n /**\n\t * Override data parsing, since we are not using scales\n\t */\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = (i) => +data[i];\n\n if (isObject(data[start])) {\n const {key = 'value'} = this._parsing;\n getter = (i) => +resolveObjectKey(data[i], key);\n }\n\n let i, ilen;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n meta._parsed[i] = getter(i);\n }\n }\n }\n\n /**\n\t * @private\n\t */\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n\n /**\n\t * @private\n\t */\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n\n /**\n\t * Get the maximal rotation & circumference extents\n\t * across all visible datasets.\n\t */\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n\n for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n if (this.chart.isDatasetVisible(i) && this.chart.getDatasetMeta(i).type === this._type) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n\n return {\n rotation: min,\n circumference: max - min,\n };\n }\n\n /**\n\t * @param {string} mode\n\t */\n update(mode) {\n const chart = this.chart;\n const {chartArea} = chart;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n\n // Compute the maximal rotation & circumference limits.\n // If we only consider our dataset, this can cause problems when two datasets\n // are both less than a circle with different rotations (starting angles)\n const {circumference, rotation} = this._getRotationExtents();\n const {ratioX, ratioY, offsetX, offsetY} = getRatioAndOffset(rotation, circumference, cutout);\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n\n meta.total = this.calculateTotal();\n\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n\n /**\n * @private\n */\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if ((reset && opts.animation.animateRotate) || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n let startAngle = this._getRotation();\n let i;\n\n for (i = 0; i < start; ++i) {\n startAngle += this._circumference(i, reset);\n }\n\n for (i = start; i < start + count; ++i) {\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n\n this.updateElement(arc, i, properties, mode);\n }\n }\n\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n\n for (i = 0; i < metaData.length; i++) {\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n\n return total;\n }\n\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n\n return {\n label: labels[index] || '',\n value,\n };\n }\n\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n\n if (!arcs) {\n // Find the outmost visible dataset\n for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n\n if (!arcs) {\n return 0;\n }\n\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n\n getMaxOffset(arcs) {\n let max = 0;\n\n for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n\n /**\n\t * Get radius length offset of the dataset in relation to the visible datasets weights. This allows determining the inner and outer radius correctly\n\t * @private\n\t */\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n\n for (let i = 0; i < datasetIndex; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n\n return ringWeightOffset;\n }\n\n /**\n\t * @private\n\t */\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n\n /**\n\t * Returns the sum of all visible data set weights.\n\t * @private\n\t */\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {isNullOrUndef} from '../helpers/index.js';\nimport {isNumber} from '../helpers/helpers.math.js';\nimport {_getStartAndCountOfVisiblePoints, _scaleRangesChanged} from '../helpers/helpers.extras.js';\n\nexport default class LineController extends DatasetController {\n\n static id = 'line';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n\n showLine: true,\n spanGaps: false,\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n scales: {\n _index_: {\n type: 'category',\n },\n _value_: {\n type: 'linear',\n },\n }\n };\n\n initialize() {\n this.enableOptionSharing = true;\n this.supportsDecimation = true;\n super.initialize();\n }\n\n update(mode) {\n const meta = this._cachedMeta;\n const {dataset: line, data: points = [], _dataset} = meta;\n // @ts-ignore\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n\n this._drawStart = start;\n this._drawCount = count;\n\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n\n // Update Line\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n\n // Update Points\n this.updateElements(points, start, count, mode);\n }\n\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n const end = start + count;\n const pointsCount = points.length;\n let prevParsed = start > 0 && this.getParsed(start - 1);\n\n for (let i = 0; i < pointsCount; ++i) {\n const point = points[i];\n const properties = directUpdate ? point : {};\n\n if (i < start || i >= end) {\n properties.skip = true;\n continue;\n }\n\n const parsed = this.getParsed(i);\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n\n prevParsed = parsed;\n }\n }\n\n /**\n\t * @protected\n\t */\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {toRadians, PI, formatNumber, _parseObjectDataRadialScale} from '../helpers/index.js';\n\nexport default class PolarAreaController extends DatasetController {\n\n static id = 'polarArea';\n\n /**\n * @type {any}\n */\n static defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n },\n },\n indexAxis: 'r',\n startAngle: 0,\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n aspectRatio: 1,\n\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle, color}} = chart.legend.options;\n\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n\n // Extra data used for toggling the correct item\n index: i\n };\n });\n }\n return [];\n }\n },\n\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n },\n\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n };\n\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n\n return {\n label: labels[index] || '',\n value,\n };\n }\n\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n\n update(mode) {\n const arcs = this._cachedMeta.data;\n\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n\n /**\n * @protected\n */\n getMinMax() {\n const meta = this._cachedMeta;\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n\n meta.data.forEach((element, index) => {\n const parsed = this.getParsed(index).r;\n\n if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n if (parsed < range.min) {\n range.min = parsed;\n }\n\n if (parsed > range.max) {\n range.max = parsed;\n }\n }\n });\n\n return range;\n }\n\n /**\n\t * @private\n\t */\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? (outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n\n this.outerRadius = outerRadius - (radiusLength * this.index);\n this.innerRadius = this.outerRadius - radiusLength;\n }\n\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n\n const defaultAngle = 360 / this.countVisibleElements();\n\n for (i = 0; i < start; ++i) {\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for (i = start; i < start + count; i++) {\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n angle = endAngle;\n\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n\n this.updateElement(arc, i, properties, mode);\n }\n }\n\n countVisibleElements() {\n const meta = this._cachedMeta;\n let count = 0;\n\n meta.data.forEach((element, index) => {\n if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n\n return count;\n }\n\n /**\n\t * @private\n\t */\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index)\n ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n : 0;\n }\n}\n","import DoughnutController from './controller.doughnut.js';\n\n// Pie charts are Doughnut chart with different defaults\nexport default class PieController extends DoughnutController {\n\n static id = 'pie';\n\n /**\n * @type {any}\n */\n static defaults = {\n // The percentage of the chart that we cut out of the middle.\n cutout: 0,\n\n // The rotation of the chart, where the first data arc begins.\n rotation: 0,\n\n // The total circumference of the chart.\n circumference: 360,\n\n // The outer radius of the chart\n radius: '100%'\n };\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {_parseObjectDataRadialScale} from '../helpers/index.js';\n\nexport default class RadarController extends DatasetController {\n\n static id = 'radar';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n },\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n aspectRatio: 1,\n\n scales: {\n r: {\n type: 'radialLinear',\n }\n }\n };\n\n /**\n\t * @protected\n\t */\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n\n // Update Line\n line.points = points;\n // In resize mode only point locations change, so no need to set the points or options.\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n\n this.updateElement(line, undefined, properties, mode);\n }\n\n // Update Points\n this.updateElements(points, 0, points.length, mode);\n }\n\n updateElements(points, start, count, mode) {\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n\n this.updateElement(point, i, properties, mode);\n }\n }\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {isNullOrUndef} from '../helpers/index.js';\nimport {isNumber} from '../helpers/helpers.math.js';\nimport {_getStartAndCountOfVisiblePoints, _scaleRangesChanged} from '../helpers/helpers.extras.js';\n\nexport default class ScatterController extends DatasetController {\n\n static id = 'scatter';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n showLine: false,\n fill: false\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n\n interaction: {\n mode: 'point'\n },\n\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n };\n\n /**\n\t * @protected\n\t */\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const {xScale, yScale} = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + ')'\n };\n }\n\n update(mode) {\n const meta = this._cachedMeta;\n const {data: points = []} = meta;\n // @ts-ignore\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n\n this._drawStart = start;\n this._drawCount = count;\n\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n\n if (this.options.showLine) {\n\n // https://github.com/chartjs/Chart.js/issues/11333\n if (!this.datasetElementType) {\n this.addElements();\n }\n const {dataset: line, _dataset} = meta;\n\n // Update Line\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n\n const options = this.resolveDatasetElementOptions(mode);\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n } else if (this.datasetElementType) {\n // https://github.com/chartjs/Chart.js/issues/11333\n delete meta.dataset;\n this.datasetElementType = false;\n }\n\n // Update Points\n this.updateElements(points, start, count, mode);\n }\n\n addElements() {\n const {showLine} = this.options;\n\n if (!this.datasetElementType && showLine) {\n this.datasetElementType = this.chart.registry.getElement('line');\n }\n\n super.addElements();\n }\n\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n\n prevParsed = parsed;\n }\n\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n\n /**\n\t * @protected\n\t */\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const data = meta.data || [];\n\n if (!this.options.showLine) {\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n\n if (!data.length) {\n return border;\n }\n\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n}\n","/**\n * @namespace Chart._adapters\n * @since 2.8.0\n * @private\n */\n\nimport type {AnyObject} from '../types/basic.js';\nimport type {ChartOptions} from '../types/index.js';\n\nexport type TimeUnit = 'millisecond' | 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year';\n\nexport interface DateAdapter {\n readonly options: T;\n /**\n * Will called with chart options after adapter creation.\n */\n init(this: DateAdapter, chartOptions: ChartOptions): void;\n /**\n * Returns a map of time formats for the supported formatting units defined\n * in Unit as well as 'datetime' representing a detailed date/time string.\n */\n formats(this: DateAdapter): Record;\n /**\n * Parses the given `value` and return the associated timestamp.\n * @param value - the value to parse (usually comes from the data)\n * @param [format] - the expected data format\n */\n parse(this: DateAdapter, value: unknown, format?: string): number | null;\n /**\n * Returns the formatted date in the specified `format` for a given `timestamp`.\n * @param timestamp - the timestamp to format\n * @param format - the date/time token\n */\n format(this: DateAdapter, timestamp: number, format: string): string;\n /**\n * Adds the specified `amount` of `unit` to the given `timestamp`.\n * @param timestamp - the input timestamp\n * @param amount - the amount to add\n * @param unit - the unit as string\n */\n add(this: DateAdapter, timestamp: number, amount: number, unit: TimeUnit): number;\n /**\n * Returns the number of `unit` between the given timestamps.\n * @param a - the input timestamp (reference)\n * @param b - the timestamp to subtract\n * @param unit - the unit as string\n */\n diff(this: DateAdapter, a: number, b: number, unit: TimeUnit): number;\n /**\n * Returns start of `unit` for the given `timestamp`.\n * @param timestamp - the input timestamp\n * @param unit - the unit as string\n * @param [weekday] - the ISO day of the week with 1 being Monday\n * and 7 being Sunday (only needed if param *unit* is `isoWeek`).\n */\n startOf(this: DateAdapter, timestamp: number, unit: TimeUnit | 'isoWeek', weekday?: number | boolean): number;\n /**\n * Returns end of `unit` for the given `timestamp`.\n * @param timestamp - the input timestamp\n * @param unit - the unit as string\n */\n endOf(this: DateAdapter, timestamp: number, unit: TimeUnit): number;\n}\n\nfunction abstract(): T {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\n\n/**\n * Date adapter (current used by the time scale)\n * @namespace Chart._adapters._date\n * @memberof Chart._adapters\n * @private\n */\nclass DateAdapterBase implements DateAdapter {\n\n /**\n * Override default date adapter methods.\n * Accepts type parameter to define options type.\n * @example\n * Chart._adapters._date.override<{myAdapterOption: string}>({\n * init() {\n * console.log(this.options.myAdapterOption);\n * }\n * })\n */\n static override(\n members: Partial, 'options'>>\n ) {\n Object.assign(DateAdapterBase.prototype, members);\n }\n\n readonly options: AnyObject;\n\n constructor(options?: AnyObject) {\n this.options = options || {};\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n init() {}\n\n formats(): Record {\n return abstract();\n }\n\n parse(): number | null {\n return abstract();\n }\n\n format(): string {\n return abstract();\n }\n\n add(): number {\n return abstract();\n }\n\n diff(): number {\n return abstract();\n }\n\n startOf(): number {\n return abstract();\n }\n\n endOf(): number {\n return abstract();\n }\n}\n\nexport default {\n _date: DateAdapterBase as {\n new (options?: AnyObject): DateAdapter;\n override(\n members: Partial, 'options'>>\n ): void;\n }\n};\n","import {_lookupByKey, _rlookupByKey} from '../helpers/helpers.collection.js';\nimport {getRelativePosition} from '../helpers/helpers.dom.js';\nimport {_angleBetween, getAngleFromPoint} from '../helpers/helpers.math.js';\nimport {_isPointInArea, isNullOrUndef} from '../helpers/index.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef {{axis?: string, intersect?: boolean, includeInvisible?: boolean}} InteractionOptions\n * @typedef {{datasetIndex: number, index: number, element: import('./core.element.js').default}} InteractionItem\n * @typedef { import('../types/index.js').Point } Point\n */\n\n/**\n * Helper function to do binary search when possible\n * @param {object} metaset - the dataset meta\n * @param {string} axis - the axis mode. x|y|xy|r\n * @param {number} value - the value to find\n * @param {boolean} [intersect] - should the element intersect\n * @returns {{lo:number, hi:number}} indices to search data array between\n */\nfunction binarySearch(metaset, axis, value, intersect) {\n const {controller, data, _sorted} = metaset;\n const iScale = controller._cachedMeta.iScale;\n const spanGaps = metaset.dataset ? metaset.dataset.options ? metaset.dataset.options.spanGaps : null : null;\n\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n const result = lookupMethod(data, axis, value);\n if (spanGaps) {\n const {vScale} = controller._cachedMeta;\n const {_parsed} = metaset;\n\n const distanceToDefinedLo = (_parsed\n .slice(0, result.lo + 1)\n .reverse()\n .findIndex(\n point => !isNullOrUndef(point[vScale.axis])));\n result.lo -= Math.max(0, distanceToDefinedLo);\n\n const distanceToDefinedHi = (_parsed\n .slice(result.hi)\n .findIndex(\n point => !isNullOrUndef(point[vScale.axis])));\n result.hi += Math.max(0, distanceToDefinedHi);\n }\n return result;\n } else if (controller._sharedOptions) {\n // _sharedOptions indicates that each element has equal options -> equal proportions\n // So we can do a ranged binary search based on the range of first element and\n // be confident to get the full range of indices that can intersect with the value.\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {lo: start.lo, hi: end.hi};\n }\n }\n }\n // Default to all elements, when binary search can not be used.\n return {lo: 0, hi: data.length - 1};\n}\n\n/**\n * Helper function to select candidate elements for interaction\n * @param {Chart} chart - the chart\n * @param {string} axis - the axis mode. x|y|xy|r\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {function} handler - the callback to execute for each visible item\n * @param {boolean} [intersect] - consider intersecting items\n */\nfunction evaluateInteractionItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n const {index, data} = metasets[i];\n const {lo, hi} = binarySearch(metasets[i], axis, value, intersect);\n for (let j = lo; j <= hi; ++j) {\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\n\n/**\n * Get a distance metric function for two points based on the\n * axis mode setting\n * @param {string} axis - the axis mode. x|y|xy|r\n */\nfunction getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n\n return function(pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\n\n/**\n * Helper function to get the items that intersect the event position\n * @param {Chart} chart - the chart\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axis mode. x|y|xy|r\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @param {boolean} [includeInvisible] - include invisible points that are outside of the chart area\n * @return {InteractionItem[]} the nearest items\n */\nfunction getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n const items = [];\n\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n\n const evaluationFunc = function(element, datasetIndex, index) {\n if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n return;\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({element, datasetIndex, index});\n }\n };\n\n evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\n\n/**\n * Helper function to get the items nearest to the event position for a radial chart\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axes along which to measure distance\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @return {InteractionItem[]} the nearest items\n */\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n\n function evaluationFunc(element, datasetIndex, index) {\n const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n const {angle} = getAngleFromPoint(element, {x: position.x, y: position.y});\n\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({element, datasetIndex, index});\n }\n }\n\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\n\n/**\n * Helper function to get the items nearest to the event position for a cartesian chart\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axes along which to measure distance\n * @param {boolean} [intersect] - if true, only consider items that intersect the position\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @param {boolean} [includeInvisible] - include invisible points that are outside of the chart area\n * @return {InteractionItem[]} the nearest items\n */\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n if (!pointInArea && !inRange) {\n return;\n }\n\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [{element, datasetIndex, index}];\n minDistance = distance;\n } else if (distance === minDistance) {\n // Can have multiple items at the same distance in which case we sort by size\n items.push({element, datasetIndex, index});\n }\n }\n\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\n\n/**\n * Helper function to get the items nearest to the event position considering all visible items in the chart\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axes along which to measure distance\n * @param {boolean} [intersect] - if true, only consider items that intersect the position\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @param {boolean} [includeInvisible] - include invisible points that are outside of the chart area\n * @return {InteractionItem[]} the nearest items\n */\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n\n return axis === 'r' && !intersect\n ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\n\n/**\n * Helper function to get the items matching along the given X or Y axis\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axis to match\n * @param {boolean} [intersect] - if true, only consider items that intersect the position\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @return {InteractionItem[]} the nearest items\n */\nfunction getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n const items = [];\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n\n evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index) => {\n if (element[rangeMethod] && element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({element, datasetIndex, index});\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n\n // If we want to trigger on an intersect and we don't have any items\n // that intersect the position, return nothing\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\n\n/**\n * Contains interaction related functions\n * @namespace Chart.Interaction\n */\nexport default {\n // Part of the public API to facilitate developers creating their own modes\n evaluateInteractionItems,\n\n // Helper function for different modes\n modes: {\n /**\n\t\t * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item\n\t\t * @function Chart.Interaction.modes.index\n\t\t * @since v2.4.0\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n index(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n // Default axis for index mode is 'x' to match old behaviour\n const axis = options.axis || 'x';\n const includeInvisible = options.includeInvisible || false;\n const items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible)\n : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n const elements = [];\n\n if (!items.length) {\n return [];\n }\n\n chart.getSortedVisibleDatasetMetas().forEach((meta) => {\n const index = items[0].index;\n const element = meta.data[index];\n\n // don't count items that are skipped (null data)\n if (element && !element.skip) {\n elements.push({element, datasetIndex: meta.index, index});\n }\n });\n\n return elements;\n },\n\n /**\n\t\t * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect is false, we find the nearest item and return the items in that dataset\n\t\t * @function Chart.Interaction.modes.dataset\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n dataset(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n let items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) :\n getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for (let i = 0; i < data.length; ++i) {\n items.push({element: data[i], datasetIndex, index: i});\n }\n }\n\n return items;\n },\n\n /**\n\t\t * Point mode returns all elements that hit test based on the event position\n\t\t * of the event\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n point(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n },\n\n /**\n\t\t * nearest mode returns the element closest to the point\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n nearest(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n },\n\n /**\n\t\t * x mode returns the elements that hit-test at the current x coordinate\n\t\t * @function Chart.Interaction.modes.x\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n x(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n },\n\n /**\n\t\t * y mode returns the elements that hit-test at the current y coordinate\n\t\t * @function Chart.Interaction.modes.y\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n y(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n }\n }\n};\n","import {defined, each, isObject} from '../helpers/helpers.core.js';\nimport {toPadding} from '../helpers/helpers.options.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n */\n\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\n\nfunction filterByPosition(array, position) {\n return array.filter(v => v.pos === position);\n}\n\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\n\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b) => {\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ?\n v0.index - v1.index :\n v0.weight - v1.weight;\n });\n}\n\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n\n for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n box = boxes[i];\n ({position: pos, options: {stack, stackWeight = 1}} = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && (pos + stack),\n stackWeight\n });\n }\n return layoutBoxes;\n}\n\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts) {\n const {stack, pos, stackWeight} = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {count: 0, placed: 0, weight: 0, size: 0});\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\n\n/**\n * store dimensions used instead of available chartArea in fitBoxes\n **/\nfunction setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const {vBoxMaxWidth, hBoxMaxHeight} = params;\n let i, ilen, layout;\n for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n layout = layouts[i];\n const {fullSize} = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\n\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\n\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\n\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\n\nfunction updateDims(chartArea, params, layout, stacks) {\n const {pos, box} = layout;\n const maxPadding = chartArea.maxPadding;\n\n // dynamically placed boxes size is not considered\n if (!isObject(pos)) {\n if (layout.size) {\n // this layout was already counted for, lets first reduce old size\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {size: 0, count: 1};\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n\n // return booleans on the changes per direction\n return layout.horizontal\n ? {same: widthChanged, other: heightChanged}\n : {same: heightChanged, other: widthChanged};\n}\n\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\n\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n\n function marginForPositions(positions) {\n const margin = {left: 0, top: 0, right: 0, bottom: 0};\n positions.forEach((pos) => {\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n\n return horizontal\n ? marginForPositions(['left', 'right'])\n : marginForPositions(['top', 'bottom']);\n}\n\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n\n for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n\n box.update(\n layout.width || chartArea.w,\n layout.height || chartArea.h,\n getMargins(layout.horizontal, chartArea)\n );\n const {same, other} = updateDims(chartArea, params, layout, stacks);\n\n // Dimensions changed and there were non full width boxes before this\n // -> we have to refit those\n refit |= same && refitBoxes.length;\n\n // Chart area changed in the opposite direction\n changed = changed || other;\n\n if (!box.fullSize) { // fullSize boxes don't need to be re-fitted in any case\n refitBoxes.push(layout);\n }\n }\n\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\n\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\n\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let {x, y} = chartArea;\n\n for (const layout of boxes) {\n const box = layout.box;\n const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1};\n const weight = (layout.stackWeight / stack.weight) || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height = chartArea.h * weight;\n const width = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n }\n stack.start = x;\n stack.placed += height;\n x = box.right;\n }\n }\n\n chartArea.x = x;\n chartArea.y = y;\n}\n\n/**\n * @interface LayoutItem\n * @typedef {object} LayoutItem\n * @prop {string} position - The position of the item in the chart layout. Possible values are\n * 'left', 'top', 'right', 'bottom', and 'chartArea'\n * @prop {number} weight - The weight used to sort the item. Higher weights are further away from the chart area\n * @prop {boolean} fullSize - if true, and the item is horizontal, then push vertical boxes down\n * @prop {function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\n * @prop {function} update - Takes two parameters: width and height. Returns size of item\n * @prop {function} draw - Draws the element\n * @prop {function} [getPadding] - Returns an object with padding on the edges\n * @prop {number} width - Width of item. Must be valid after update()\n * @prop {number} height - Height of item. Must be valid after update()\n * @prop {number} left - Left edge of the item. Set by layout system and cannot be used in update\n * @prop {number} top - Top edge of the item. Set by layout system and cannot be used in update\n * @prop {number} right - Right edge of the item. Set by layout system and cannot be used in update\n * @prop {number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\n */\n\n// The layout service is very self explanatory. It's responsible for the layout within a chart.\n// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\n// It is this service's responsibility of carrying out that layout.\nexport default {\n\n /**\n\t * Register a box to a chart.\n\t * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\n\t * @param {Chart} chart - the chart to use\n\t * @param {LayoutItem} item - the item to add to be laid out\n\t */\n addBox(chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n\n // initialize item with default values\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n // @ts-ignore\n item._layers = item._layers || function() {\n return [{\n z: 0,\n draw(chartArea) {\n item.draw(chartArea);\n }\n }];\n };\n\n chart.boxes.push(item);\n },\n\n /**\n\t * Remove a layoutItem from a chart\n\t * @param {Chart} chart - the chart to remove the box from\n\t * @param {LayoutItem} layoutItem - the item to remove from the layout\n\t */\n removeBox(chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n\n /**\n\t * Sets (or updates) options on the given `item`.\n\t * @param {Chart} chart - the chart in which the item lives (or will be added to)\n\t * @param {LayoutItem} item - the item to configure with the given options\n\t * @param {object} options - the new item options.\n\t */\n configure(chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n\n /**\n\t * Fits boxes of the given chart into the given size by having each box measure itself\n\t * then running a fitting algorithm\n\t * @param {Chart} chart - the chart\n\t * @param {number} width - the width to fit into\n\t * @param {number} height - the height to fit into\n * @param {number} minPadding - minimum padding required for each side of chart area\n\t */\n update(chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n\n // Before any changes are made, notify boxes that an update is about to being\n // This is used to clear any cached data (e.g. scale limits)\n each(chart.boxes, box => {\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n\n // Essentially we now have any number of boxes on each of the 4 sides.\n // Our canvas looks like the following.\n // The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\n // B1 is the bottom axis\n // There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\n // These locations are single-box locations only, when trying to register a chartArea location that is already taken,\n // an error will be thrown.\n //\n // |----------------------------------------------------|\n // | T1 (Full Width) |\n // |----------------------------------------------------|\n // | | | T2 | |\n // | |----|-------------------------------------|----|\n // | | | C1 | | C2 | |\n // | | |----| |----| |\n // | | | | |\n // | L1 | L2 | ChartArea (C0) | R1 |\n // | | | | |\n // | | |----| |----| |\n // | | | C3 | | C4 | |\n // | |----|-------------------------------------|----|\n // | | | B1 | |\n // |----------------------------------------------------|\n // | B2 (Full Width) |\n // |----------------------------------------------------|\n //\n\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) =>\n wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n\n // First fit the fullSize boxes, to reduce probability of re-fitting.\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n\n // Then fit vertical boxes\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n\n // Then fit horizontal boxes\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n // if the area changed, re-fit vertical boxes\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n\n handleMaxPadding(chartArea);\n\n // Finally place the boxes to correct coordinates\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n\n // Move to opposite side of chart\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w,\n };\n\n // Finally update boxes in chartArea (radial scale for example)\n each(boxes.chartArea, (layout) => {\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {left: 0, top: 0, right: 0, bottom: 0});\n });\n }\n};\n","\n/**\n * @typedef { import('../core/core.controller.js').default } Chart\n */\n\n/**\n * Abstract class that allows abstracting platform dependencies away from the chart.\n */\nexport default class BasePlatform {\n /**\n\t * Called at chart construction time, returns a context2d instance implementing\n\t * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}.\n\t * @param {HTMLCanvasElement} canvas - The canvas from which to acquire context (platform specific)\n\t * @param {number} [aspectRatio] - The chart options\n\t */\n acquireContext(canvas, aspectRatio) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * Called at chart destruction time, releases any resources associated to the context\n\t * previously returned by the acquireContext() method.\n\t * @param {CanvasRenderingContext2D} context - The context2d instance\n\t * @returns {boolean} true if the method succeeded, else false\n\t */\n releaseContext(context) { // eslint-disable-line no-unused-vars\n return false;\n }\n\n /**\n\t * Registers the specified listener on the given chart.\n\t * @param {Chart} chart - Chart from which to listen for event\n\t * @param {string} type - The ({@link ChartEvent}) type to listen for\n\t * @param {function} listener - Receives a notification (an object that implements\n\t * the {@link ChartEvent} interface) when an event of the specified type occurs.\n\t */\n addEventListener(chart, type, listener) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * Removes the specified listener previously registered with addEventListener.\n\t * @param {Chart} chart - Chart from which to remove the listener\n\t * @param {string} type - The ({@link ChartEvent}) type to remove\n\t * @param {function} listener - The listener function to remove from the event target.\n\t */\n removeEventListener(chart, type, listener) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * @returns {number} the current devicePixelRatio of the device this platform is connected to.\n\t */\n getDevicePixelRatio() {\n return 1;\n }\n\n /**\n\t * Returns the maximum size in pixels of given canvas element.\n\t * @param {HTMLCanvasElement} element\n\t * @param {number} [width] - content width of parent element\n\t * @param {number} [height] - content height of parent element\n\t * @param {number} [aspectRatio] - aspect ratio to maintain\n\t */\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n\n /**\n\t * @param {HTMLCanvasElement} canvas\n\t * @returns {boolean} true if the canvas is attached to the platform, false if not.\n\t */\n isAttached(canvas) { // eslint-disable-line no-unused-vars\n return true;\n }\n\n /**\n * Updates config with platform specific requirements\n * @param {import('../core/core.config.js').default} config\n */\n updateConfig(config) { // eslint-disable-line no-unused-vars\n // no-op\n }\n}\n","/**\n * Platform fallback implementation (minimal).\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\n */\n\nimport BasePlatform from './platform.base.js';\n\n/**\n * Platform class for charts without access to the DOM or to many element properties\n * This platform is used by default for any chart passed an OffscreenCanvas.\n * @extends BasePlatform\n */\nexport default class BasicPlatform extends BasePlatform {\n acquireContext(item) {\n // To prevent canvas fingerprinting, some add-ons undefine the getContext\n // method, for example: https://github.com/kkapsner/CanvasBlocker\n // https://github.com/chartjs/Chart.js/issues/2807\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\n","/**\n * Chart.Platform implementation for targeting a web browser\n */\n\nimport BasePlatform from './platform.base.js';\nimport {_getParentNode, getRelativePosition, supportsEventListenerOptions, readUsedSize, getMaximumSize} from '../helpers/helpers.dom.js';\nimport {throttled} from '../helpers/helpers.extras.js';\nimport {isNullOrUndef} from '../helpers/helpers.core.js';\n\n/**\n * @typedef { import('../core/core.controller.js').default } Chart\n */\n\nconst EXPANDO_KEY = '$chartjs';\n\n/**\n * DOM event types -> Chart.js event types.\n * Note: only events with different types are mapped.\n * @see https://developer.mozilla.org/en-US/docs/Web/Events\n */\nconst EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\n\nconst isNullOrEmpty = value => value === null || value === '';\n/**\n * Initializes the canvas style and render size without modifying the canvas display size,\n * since responsiveness is handled by the controller.resize() method. The config is used\n * to determine the aspect ratio to apply in case no explicit height has been specified.\n * @param {HTMLCanvasElement} canvas\n * @param {number} [aspectRatio]\n */\nfunction initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n\n // NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\n // returns null or '' if no explicit value has been set to the canvas attribute.\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n\n // Chart.js modifies some canvas values that we want to restore on destroy\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n\n // Force canvas to display as block to avoid extra space caused by inline\n // elements, which would interfere with the responsive resize process.\n // https://github.com/chartjs/Chart.js/issues/2538\n style.display = style.display || 'block';\n // Include possible borders in the size\n style.boxSizing = style.boxSizing || 'border-box';\n\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n // If no explicit render height and style height, let's apply the aspect ratio,\n // which one can be specified by the user but also by charts as default option\n // (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n\n return canvas;\n}\n\n// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\n// https://github.com/chartjs/Chart.js/issues/4287\nconst eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\n\nfunction addListener(node, type, listener) {\n if (node) {\n node.addEventListener(type, listener, eventListenerOptions);\n }\n}\n\nfunction removeListener(chart, type, listener) {\n if (chart && chart.canvas) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n }\n}\n\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const {x, y} = getRelativePosition(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null,\n };\n}\n\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList) {\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\n\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\n\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\n\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\n\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart) => {\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\n\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\n\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\n\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height) => {\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n // If the container size shrank during chart resize, let's assume\n // scrollbar appeared. So we resize again with the scrollbar visible -\n // effectively making chart smaller and the scrollbar hidden again.\n // Because we are inside `throttled`, and currently `ticking`, scroll\n // events are ignored during this whole 2 resize process.\n // If we assumed wrong and something else happened, we are resizing\n // twice in a frame (potential performance issue)\n listener();\n }\n }, window);\n\n // @ts-ignore until https://github.com/microsoft/TypeScript/issues/37861 implemented\n const observer = new ResizeObserver(entries => {\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n // When its container's display is set to 'none' the callback will be called with a\n // size of (0, 0), which will cause the chart to lose its original height, so skip\n // resizing in such case.\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n\n return observer;\n}\n\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\n\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled((event) => {\n // This case can occur if the chart is destroyed while waiting\n // for the throttled function to occur. We prevent crashes by checking\n // for a destroyed chart\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart);\n\n addListener(canvas, type, proxy);\n\n return proxy;\n}\n\n/**\n * Platform class for charts that can access the DOM and global window/document properties\n * @extends BasePlatform\n */\nexport default class DomPlatform extends BasePlatform {\n\n /**\n\t * @param {HTMLCanvasElement} canvas\n\t * @param {number} [aspectRatio]\n\t * @return {CanvasRenderingContext2D|null}\n\t */\n acquireContext(canvas, aspectRatio) {\n // To prevent canvas fingerprinting, some add-ons undefine the getContext\n // method, for example: https://github.com/kkapsner/CanvasBlocker\n // https://github.com/chartjs/Chart.js/issues/2807\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n\n // `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the canvas is\n // inside an iframe or when running in a protected environment. We could guess the\n // types from their toString() value but let's keep things flexible and assume it's\n // a sufficient condition if the canvas has a context2D which has canvas as `canvas`.\n // https://github.com/chartjs/Chart.js/issues/3887\n // https://github.com/chartjs/Chart.js/issues/4102\n // https://github.com/chartjs/Chart.js/issues/4152\n if (context && context.canvas === canvas) {\n // Load platform resources on first chart creation, to make it possible to\n // import the library before setting platform options.\n initCanvas(canvas, aspectRatio);\n return context;\n }\n\n return null;\n }\n\n /**\n\t * @param {CanvasRenderingContext2D} context\n\t */\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n\n const initial = canvas[EXPANDO_KEY].initial;\n ['height', 'width'].forEach((prop) => {\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n\n const style = initial.style || {};\n Object.keys(style).forEach((key) => {\n canvas.style[key] = style[key];\n });\n\n // The canvas render size might have been changed (and thus the state stack discarded),\n // we can't use save() and restore() to restore the initial state. So make sure that at\n // least the canvas context is reset to the default state by setting the canvas width.\n // https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html\n // eslint-disable-next-line no-self-assign\n canvas.width = canvas.width;\n\n delete canvas[EXPANDO_KEY];\n return true;\n }\n\n /**\n\t *\n\t * @param {Chart} chart\n\t * @param {string} type\n\t * @param {function} listener\n\t */\n addEventListener(chart, type, listener) {\n // Can have only one listener per type, so make sure previous is removed\n this.removeEventListener(chart, type);\n\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n\n\n /**\n\t * @param {Chart} chart\n\t * @param {string} type\n\t */\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n\n if (!proxy) {\n return;\n }\n\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n\n /**\n\t * @param {HTMLCanvasElement} canvas\n\t * @param {number} [width] - content width of parent element\n\t * @param {number} [height] - content height of parent element\n\t * @param {number} [aspectRatio] - aspect ratio to maintain\n\t */\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n\n /**\n\t * @param {HTMLCanvasElement} canvas\n\t */\n isAttached(canvas) {\n const container = canvas && _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n","import {_isDomSupported} from '../helpers/index.js';\nimport BasePlatform from './platform.base.js';\nimport BasicPlatform from './platform.basic.js';\nimport DomPlatform from './platform.dom.js';\n\nexport function _detectPlatform(canvas) {\n if (!_isDomSupported() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nexport {BasePlatform, BasicPlatform, DomPlatform};\n","import type {AnyObject} from '../types/basic.js';\nimport type {Point} from '../types/geometric.js';\nimport type {Animation} from '../types/animation.js';\nimport {isNumber} from '../helpers/helpers.math.js';\n\nexport default class Element {\n\n static defaults = {};\n static defaultRoutes = undefined;\n\n x: number;\n y: number;\n active = false;\n options: O;\n $animations: Record;\n\n tooltipPosition(useFinalPosition: boolean): Point {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y} as Point;\n }\n\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n\n /**\n * Gets the current or final value of each prop. Can return extra properties (whole object).\n * @param props - properties to get\n * @param [final] - get the final value (animation target)\n */\n getProps

(props: P, final?: boolean): Pick;\n getProps

(props: P[], final?: boolean): Partial>;\n getProps(props: string[], final?: boolean): Partial> {\n const anims = this.$animations;\n if (!final || !anims) {\n // let's not create an object, if not needed\n return this as Record;\n }\n const ret: Record = {};\n props.forEach((prop) => {\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop as string];\n });\n return ret;\n }\n}\n","import {isNullOrUndef, valueOrDefault} from '../helpers/helpers.core.js';\nimport {_factorize} from '../helpers/helpers.math.js';\n\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef {{value:number | string, label?:string, major?:boolean, $context?:any}} Tick\n */\n\n/**\n * Returns a subset of ticks to be plotted to avoid overlapping labels.\n * @param {import('./core.scale.js').default} scale\n * @param {Tick[]} ticks\n * @return {Tick[]}\n * @private\n */\nexport function autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const determinedMaxTicks = determineMaxTicks(scale);\n const ticksLimit = Math.min(tickOpts.maxTicksLimit || determinedMaxTicks, determinedMaxTicks);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n\n // If there are too many major ticks to display them all\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\n\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\n\n/**\n * @param {number[]} majorIndices\n * @param {Tick[]} ticks\n * @param {number} ticksLimit\n */\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n\n // If the major ticks are evenly spaced apart, place the minor ticks\n // so that they divide the major ticks into even chunks\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n\n const factors = _factorize(evenMajorSpacing);\n for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\n\n/**\n * @param {Tick[]} ticks\n */\nfunction getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\n\n/**\n * @param {Tick[]} ticks\n * @param {Tick[]} newTicks\n * @param {number[]} majorIndices\n * @param {number} spacing\n */\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n\n spacing = Math.ceil(spacing);\n for (i = 0; i < ticks.length; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\n\n/**\n * @param {Tick[]} ticks\n * @param {Tick[]} newTicks\n * @param {number} spacing\n * @param {number} [majorStart]\n * @param {number} [majorEnd]\n */\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n\n next = start;\n\n while (next < 0) {\n count++;\n next = Math.round(start + count * spacing);\n }\n\n for (i = Math.max(start, 0); i < end; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\n\n\n/**\n * @param {number[]} arr\n */\nfunction getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n\n if (len < 2) {\n return false;\n }\n\n for (diff = arr[0], i = 1; i < len; ++i) {\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\n","import Element from './core.element.js';\nimport {_alignPixel, _measureText, renderText, clipArea, unclipArea} from '../helpers/helpers.canvas.js';\nimport {callback as call, each, finiteOrDefault, isArray, isFinite, isNullOrUndef, isObject, valueOrDefault} from '../helpers/helpers.core.js';\nimport {toDegrees, toRadians, _int16Range, _limitValue, HALF_PI} from '../helpers/helpers.math.js';\nimport {_alignStartEnd, _toLeftRightCenter} from '../helpers/helpers.extras.js';\nimport {createContext, toFont, toPadding, _addGrace} from '../helpers/helpers.options.js';\nimport {autoSkip} from './core.scale.autoskip.js';\n\nconst reverseAlign = (align) => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nconst getTicksLimit = (ticksLength, maxTicksLimit) => Math.min(maxTicksLimit || ticksLength, ticksLength);\n\n/**\n * @typedef { import('../types/index.js').Chart } Chart\n * @typedef {{value:number | string, label?:string, major?:boolean, $context?:any}} Tick\n */\n\n/**\n * Returns a new array containing numItems from arr\n * @param {any[]} arr\n * @param {number} numItems\n */\nfunction sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n\n for (; i < len; i += increment) {\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\n\n/**\n * @param {Scale} scale\n * @param {number} index\n * @param {boolean} offsetGridLines\n */\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n\n // Return undefined if the pixel is out of the range\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\n\n/**\n * @param {object} caches\n * @param {number} length\n */\nfunction garbageCollect(caches, length) {\n each(caches, (cache) => {\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for (i = 0; i < gcLen; ++i) {\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\n\n/**\n * @param {object} options\n */\nfunction getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\n\n/**\n * @param {object} options\n */\nfunction getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n\n return (lines * font.lineHeight) + padding.height;\n}\n\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\n\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\n\nfunction titleAlign(align, position, reverse) {\n /** @type {CanvasTextAlign} */\n let ret = _toLeftRightCenter(align);\n if ((reverse && position !== 'right') || (!reverse && position === 'right')) {\n ret = reverseAlign(ret);\n }\n return ret;\n}\n\nfunction titleArgs(scale, offset, position, align) {\n const {top, left, bottom, right, chart} = scale;\n const {chartArea, scales} = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {titleX, titleY, maxWidth, rotation};\n}\n\nexport default class Scale extends Element {\n\n // eslint-disable-next-line max-statements\n constructor(cfg) {\n super();\n\n /** @type {string} */\n this.id = cfg.id;\n /** @type {string} */\n this.type = cfg.type;\n /** @type {any} */\n this.options = undefined;\n /** @type {CanvasRenderingContext2D} */\n this.ctx = cfg.ctx;\n /** @type {Chart} */\n this.chart = cfg.chart;\n\n // implements box\n /** @type {number} */\n this.top = undefined;\n /** @type {number} */\n this.bottom = undefined;\n /** @type {number} */\n this.left = undefined;\n /** @type {number} */\n this.right = undefined;\n /** @type {number} */\n this.width = undefined;\n /** @type {number} */\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n /** @type {number} */\n this.maxWidth = undefined;\n /** @type {number} */\n this.maxHeight = undefined;\n /** @type {number} */\n this.paddingTop = undefined;\n /** @type {number} */\n this.paddingBottom = undefined;\n /** @type {number} */\n this.paddingLeft = undefined;\n /** @type {number} */\n this.paddingRight = undefined;\n\n // scale-specific properties\n /** @type {string=} */\n this.axis = undefined;\n /** @type {number=} */\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n /** @type {Tick[]} */\n this.ticks = [];\n /** @type {object[]|null} */\n this._gridLineItems = null;\n /** @type {object[]|null} */\n this._labelItems = null;\n /** @type {object|null} */\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n /** @type {number} */\n this._startPixel = undefined;\n /** @type {number} */\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n\n /**\n\t * @param {any} options\n\t * @since 3.0\n\t */\n init(options) {\n this.options = options.setContext(this.getContext());\n\n this.axis = options.axis;\n\n // parse min/max value, so we can properly determine min/max for other scales\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n\n /**\n\t * Parse a supported input value to internal representation.\n\t * @param {*} raw\n\t * @param {number} [index]\n\t * @since 3.0\n\t */\n parse(raw, index) { // eslint-disable-line no-unused-vars\n return raw;\n }\n\n /**\n\t * @return {{min: number, max: number, minDefined: boolean, maxDefined: boolean}}\n\t * @protected\n\t * @since 3.0\n\t */\n getUserBounds() {\n let {_userMin, _userMax, _suggestedMin, _suggestedMax} = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isFinite(_userMin),\n maxDefined: isFinite(_userMax)\n };\n }\n\n /**\n\t * @param {boolean} canStack\n\t * @return {{min: number, max: number}}\n\t * @protected\n\t * @since 3.0\n\t */\n getMinMax(canStack) {\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n let range;\n\n if (minDefined && maxDefined) {\n return {min, max};\n }\n\n const metas = this.getMatchingVisibleMetas();\n for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n\n // Make sure min <= max when only min or max is defined by user and the data is outside that range\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n\n /**\n\t * Get the padding needed for the scale\n\t * @return {{top: number, left: number, bottom: number, right: number}} the necessary padding\n\t * @private\n\t */\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n\n /**\n\t * Returns the scale tick objects\n\t * @return {Tick[]}\n\t * @since 2.7\n\t */\n getTicks() {\n return this.ticks;\n }\n\n /**\n\t * @return {string[]}\n\t */\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n\n /**\n * @return {import('../types.js').LabelItem[]}\n */\n getLabelItems(chartArea = this.chart.chartArea) {\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n return items;\n }\n\n // When a new layout is created, reset the data limits cache\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n\n // These methods are ordered by lifecycle. Utilities then follow.\n // Any function defined here is inherited by all scale types.\n // Any function can be extended by the scale type\n\n beforeUpdate() {\n call(this.options.beforeUpdate, [this]);\n }\n\n /**\n\t * @param {number} maxWidth - the max width in pixels\n\t * @param {number} maxHeight - the max height in pixels\n\t * @param {{top: number, left: number, bottom: number, right: number}} margins - the space between the edge of the other scales and edge of the chart\n\t * This space comes from two sources:\n\t * - padding - space that's required to show the labels at the edges of the scale\n\t * - thickness of scales or legends in another orientation\n\t */\n update(maxWidth, maxHeight, margins) {\n const {beginAtZero, grace, ticks: tickOpts} = this.options;\n const sampleSize = tickOpts.sampleSize;\n\n // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n this.beforeUpdate();\n\n // Absorb the master measurements\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n\n // Dimensions\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n\n this._maxLength = this.isHorizontal()\n ? this.width + margins.left + margins.right\n : this.height + margins.top + margins.bottom;\n\n // Data min/max\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n\n this.beforeBuildTicks();\n\n this.ticks = this.buildTicks() || [];\n\n // Allow modification of ticks in callback.\n this.afterBuildTicks();\n\n // Compute tick rotation and fit using a sampled subset of labels\n // We generally don't need to compute the size of every single label for determining scale size\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n\n // configure is called twice, once here, once from core.controller.updateLayout.\n // Here we haven't been positioned yet, but dimensions are correct.\n // Variables set in configure are needed for calculateLabelRotation, and\n // it's ok that coordinates are not correct there, only dimensions matter.\n this.configure();\n\n // Tick Rotation\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation(); // Preconditions: number of ticks and sizes of largest labels must be calculated beforehand\n this.afterCalculateLabelRotation();\n\n // Auto-skip\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n this.afterAutoSkip();\n }\n\n if (samplingEnabled) {\n // Generate labels using all non-skipped ticks\n this._convertTicksToLabels(this.ticks);\n }\n\n this.beforeFit();\n this.fit(); // Preconditions: label rotation and label sizes must be calculated beforehand\n this.afterFit();\n\n // IMPORTANT: after this point, we consider that `this.ticks` will NEVER change!\n\n this.afterUpdate();\n }\n\n /**\n\t * @protected\n\t */\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n // by default vertical scales are from bottom to top, so pixels are reversed\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n\n afterUpdate() {\n call(this.options.afterUpdate, [this]);\n }\n\n //\n\n beforeSetDimensions() {\n call(this.options.beforeSetDimensions, [this]);\n }\n setDimensions() {\n // Set the unconstrained dimension before label rotation\n if (this.isHorizontal()) {\n // Reset position before calculating rotation\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n\n // Reset position before calculating rotation\n this.top = 0;\n this.bottom = this.height;\n }\n\n // Reset padding\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n call(this.options.afterSetDimensions, [this]);\n }\n\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n call(this.options[name], [this]);\n }\n\n // Data limits\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n\n //\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n /**\n\t * @return {object[]} the ticks\n\t */\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n\n beforeTickToLabelConversion() {\n call(this.options.beforeTickToLabelConversion, [this]);\n }\n /**\n\t * Convert ticks to label strings\n\t * @param {Tick[]} ticks\n\t */\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n tick = ticks[i];\n tick.label = call(tickOpts.callback, [tick.value, i, ticks], this);\n }\n }\n afterTickToLabelConversion() {\n call(this.options.afterTickToLabelConversion, [this]);\n }\n\n //\n\n beforeCalculateLabelRotation() {\n call(this.options.beforeCalculateLabelRotation, [this]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = getTicksLimit(this.ticks.length, options.ticks.maxTicksLimit);\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n\n // Estimate the width of each grid based on the canvas width, the maximum\n // label width and the number of tick intervals\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n\n // Allow 3 pixels x2 padding either side for label readability\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid)\n\t\t\t\t- tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(\n Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)),\n Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))\n ));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n call(this.options.afterCalculateLabelRotation, [this]);\n }\n afterAutoSkip() {}\n\n //\n\n beforeFit() {\n call(this.options.beforeFit, [this]);\n }\n fit() {\n // Reset\n const minSize = {\n width: 0,\n height: 0\n };\n\n const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight; // fill all the height\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n\n // Don't bother fitting the ticks if we are not showing the labels\n if (tickOpts.display && this.ticks.length) {\n const {first, last, widest, highest} = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n\n if (isHorizontal) {\n // A horizontal axis is more constrained by the height.\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n // A vertical axis is more constrained by the width. Labels are the\n // dominant factor here, so get that length first and account for padding\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n\n this._handleMargins();\n\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n\n _calculatePadding(first, last, sin, cos) {\n const {ticks: {align, padding}, position} = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n\n // Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned\n // which means that the right padding is dominated by the font height\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else if (align !== 'inner') {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n\n // Adjust padding taking into account changes in offsets\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n\n /**\n\t * Handle margins and padding interactions\n\t * @private\n\t */\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n\n afterFit() {\n call(this.options.afterFit, [this]);\n }\n\n // Shared Methods\n /**\n\t * @return {boolean}\n\t */\n isHorizontal() {\n const {axis, position} = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n /**\n\t * @return {boolean}\n\t */\n isFullSize() {\n return this.options.fullSize;\n }\n\n /**\n\t * @param {Tick[]} ticks\n\t * @private\n\t */\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n\n this.generateTickLabels(ticks);\n\n // Ticks should be skipped when callback returns null or undef, so lets remove those.\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n\n this.afterTickToLabelConversion();\n }\n\n /**\n\t * @return {{ first: object, last: object, widest: object, highest: object, widths: Array, heights: array }}\n\t * @private\n\t */\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length, this.options.ticks.maxTicksLimit);\n }\n\n return labelSizes;\n }\n\n /**\n\t * Returns {width, height, offset} objects for the first, last, widest, highest tick\n\t * labels where offset indicates the anchor point offset from the top in pixels.\n\t * @return {{ first: object, last: object, widest: object, highest: object, widths: Array, heights: array }}\n\t * @private\n\t */\n _computeLabelSizes(ticks, length, maxTicksLimit) {\n const {ctx, _longestTextCache: caches} = this;\n const widths = [];\n const heights = [];\n const increment = Math.floor(length / getTicksLimit(length, maxTicksLimit));\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n\n for (i = 0; i < length; i += increment) {\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n // Undefined labels and arrays should not be measured\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n // if it is an array let's measure each element\n for (j = 0, jlen = label.length; j < jlen; ++j) {\n nestedLabel = /** @type {string} */ (label[j]);\n // Undefined labels and arrays should not be measured\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n\n const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0});\n\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights,\n };\n }\n\n /**\n\t * Used to get the label to display in the tooltip for the given value\n\t * @param {*} value\n\t * @return {string}\n\t */\n getLabelForValue(value) {\n return value;\n }\n\n /**\n\t * Returns the location of the given data point. Value can either be an index or a numerical value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {*} value\n\t * @param {number} [index]\n\t * @return {number}\n\t */\n getPixelForValue(value, index) { // eslint-disable-line no-unused-vars\n return NaN;\n }\n\n /**\n\t * Used to get the data value from a given pixel. This is the inverse of getPixelForValue\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {number} pixel\n\t * @return {*}\n\t */\n getValueForPixel(pixel) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * Returns the location of the tick at the given index\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {number} index\n\t * @return {number}\n\t */\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n\n /**\n\t * Utility for getting the pixel location of a percentage of scale\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {number} decimal\n\t * @return {number}\n\t */\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n\n /**\n\t * @param {number} pixel\n\t * @return {number}\n\t */\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n\n /**\n\t * Returns the pixel for the minimum chart value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @return {number}\n\t */\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n\n /**\n\t * @return {number}\n\t */\n getBaseValue() {\n const {min, max} = this;\n\n return min < 0 && max < 0 ? max :\n min > 0 && max > 0 ? min :\n 0;\n }\n\n /**\n\t * @protected\n\t */\n getContext(index) {\n const ticks = this.ticks || [];\n\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context ||\n\t\t\t\t(tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context ||\n\t\t\t(this.$context = createScaleContext(this.chart.getContext(), this));\n }\n\n /**\n\t * @return {number}\n\t * @private\n\t */\n _tickSize() {\n const optionTicks = this.options.ticks;\n\n // Calculate space needed by label in axis direction.\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n\n // Calculate space needed for 1 tick in axis direction.\n return this.isHorizontal()\n ? h * cos > w * sin ? w / cos : h / sin\n : h * sin < w * cos ? h / cos : w / sin;\n }\n\n /**\n\t * @return {boolean}\n\t * @private\n\t */\n _isVisible() {\n const display = this.options.display;\n\n if (display !== 'auto') {\n return !!display;\n }\n\n return this.getMatchingVisibleMetas().length > 0;\n }\n\n /**\n\t * @private\n\t */\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const {grid, position, border} = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = borderOpts.display ? borderOpts.width : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for (i = 0; i < ticksLength; i += step) {\n const context = this.getContext(i);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = optsAtIndexBorder.dash || [];\n const borderDashOffset = optsAtIndexBorder.dashOffset;\n\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n\n lineValue = getPixelForGridLine(this, i, offset);\n\n // Skip if the pixel is out of the range\n if (lineValue === undefined) {\n continue;\n }\n\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset,\n });\n }\n\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n\n return items;\n }\n\n /**\n\t * @private\n\t */\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const {position, ticks: optionTicks} = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const {align, crossAlign, padding, mirror} = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = this.chart.scales[positionAxisID].getPixelForValue(value);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n\n const labelSizes = this._getLabelSizes();\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n label = tick.label;\n\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n let tickTextAlign = textAlign;\n\n if (isHorizontal) {\n x = pixel;\n\n if (textAlign === 'inner') {\n if (i === ilen - 1) {\n tickTextAlign = !this.options.reverse ? 'right' : 'left';\n } else if (i === 0) {\n tickTextAlign = !this.options.reverse ? 'left' : 'right';\n } else {\n tickTextAlign = 'center';\n }\n }\n\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n // eslint-disable-next-line no-lonely-if\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n if (rotation !== 0 && !optsAtIndex.showLabelBackdrop) {\n x += (lineHeight / 2) * Math.sin(rotation);\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n\n let backdrop;\n\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n\n let top = textOffset - labelPadding.top;\n let left = 0 - labelPadding.left;\n\n switch (textBaseline) {\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n default:\n break;\n }\n\n switch (textAlign) {\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n case 'inner':\n if (i === ilen - 1) {\n left -= width;\n } else if (i > 0) {\n left -= width / 2;\n }\n break;\n default:\n break;\n }\n\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n\n color: optsAtIndex.backdropColor,\n };\n }\n\n items.push({\n label,\n font,\n textOffset,\n options: {\n rotation,\n color,\n strokeColor,\n strokeWidth,\n textAlign: tickTextAlign,\n textBaseline,\n translation: [x, y],\n backdrop,\n }\n });\n }\n\n return items;\n }\n\n _getXAxisLabelAlignment() {\n const {position, ticks} = this.options;\n const rotation = -toRadians(this.labelRotation);\n\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n\n let align = 'center';\n\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n } else if (ticks.align === 'inner') {\n align = 'inner';\n }\n\n return align;\n }\n\n _getYAxisLabelAlignment(tl) {\n const {position, ticks: {crossAlign, mirror, padding}} = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n\n let textAlign;\n let x;\n\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += (widest / 2);\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n\n return {textAlign, x};\n }\n\n /**\n\t * @private\n\t */\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n\n const chart = this.chart;\n const position = this.options.position;\n\n if (position === 'left' || position === 'right') {\n return {top: 0, left: this.left, bottom: chart.height, right: this.right};\n } if (position === 'top' || position === 'bottom') {\n return {top: this.top, left: 0, bottom: this.bottom, right: chart.width};\n }\n }\n\n /**\n * @protected\n */\n drawBackground() {\n const {ctx, options: {backgroundColor}, left, top, width, height} = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex(t => t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n\n /**\n\t * @protected\n\t */\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n\n const drawLine = (p1, p2, style) => {\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n\n if (grid.display) {\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n\n if (grid.drawOnChartArea) {\n drawLine(\n {x: item.x1, y: item.y1},\n {x: item.x2, y: item.y2},\n item\n );\n }\n\n if (grid.drawTicks) {\n drawLine(\n {x: item.tx1, y: item.ty1},\n {x: item.tx2, y: item.ty2},\n {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n }\n );\n }\n }\n }\n }\n\n /**\n\t * @protected\n\t */\n drawBorder() {\n const {chart, ctx, options: {border, grid}} = this;\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = border.display ? borderOpts.width : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.width;\n ctx.strokeStyle = borderOpts.color;\n\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n\n ctx.restore();\n }\n\n /**\n\t * @protected\n\t */\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n\n if (!optionTicks.display) {\n return;\n }\n\n const ctx = this.ctx;\n\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n\n const items = this.getLabelItems(chartArea);\n for (const item of items) {\n const renderTextOptions = item.options;\n const tickFont = item.font;\n const label = item.label;\n const y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, renderTextOptions);\n }\n\n if (area) {\n unclipArea(ctx);\n }\n }\n\n /**\n\t * @protected\n\t */\n drawTitle() {\n const {ctx, options: {position, title, reverse}} = this;\n\n if (!title.display) {\n return;\n }\n\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n\n const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align);\n\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n\n /**\n\t * @return {object[]}\n\t * @private\n\t */\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n const bz = valueOrDefault(opts.border && opts.border.z, 0);\n\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n // backward compatibility: draw has been overridden by custom scale\n return [{\n z: tz,\n draw: (chartArea) => {\n this.draw(chartArea);\n }\n }];\n }\n\n return [{\n z: gz,\n draw: (chartArea) => {\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n }, {\n z: bz,\n draw: () => {\n this.drawBorder();\n }\n }, {\n z: tz,\n draw: (chartArea) => {\n this.drawLabels(chartArea);\n }\n }];\n }\n\n /**\n\t * Returns visible dataset metas that are attached to this scale\n\t * @param {string} [type] - if specified, also filter by dataset type\n\t * @return {object[]}\n\t */\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n\n /**\n\t * @param {number} index\n\t * @return {object}\n\t * @protected\n \t */\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n\n /**\n * @protected\n */\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\n","import {merge} from '../helpers/index.js';\nimport defaults, {overrides} from './core.defaults.js';\n\n/**\n * @typedef {{id: string, defaults: any, overrides?: any, defaultRoutes: any}} IChartComponent\n */\n\nexport default class TypedRegistry {\n constructor(type, scope, override) {\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n\n /**\n\t * @param {IChartComponent} item\n\t * @returns {string} The scope where items defaults were registered to.\n\t */\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n\n if (isIChartComponent(proto)) {\n // Make sure the parent is registered and note the scope where its defaults are.\n parentScope = this.register(proto);\n }\n\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n\n if (id in items) {\n // already registered\n return scope;\n }\n\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n\n return scope;\n }\n\n /**\n\t * @param {string} id\n\t * @returns {object?}\n\t */\n get(id) {\n return this.items[id];\n }\n\n /**\n\t * @param {IChartComponent} item\n\t */\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n\n if (id in items) {\n delete items[id];\n }\n\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\n\nfunction registerDefaults(item, scope, parentScope) {\n // Inherit the parent's defaults and keep existing defaults\n const itemDefaults = merge(Object.create(null), [\n parentScope ? defaults.get(parentScope) : {},\n defaults.get(scope),\n item.defaults\n ]);\n\n defaults.set(scope, itemDefaults);\n\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\n\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach(property => {\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [scope].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\n\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n","import DatasetController from './core.datasetController.js';\nimport Element from './core.element.js';\nimport Scale from './core.scale.js';\nimport TypedRegistry from './core.typedRegistry.js';\nimport {each, callback as call, _capitalize} from '../helpers/helpers.core.js';\n\n/**\n * Please use the module's default export which provides a singleton instance\n * Note: class is exported for typedoc\n */\nexport class Registry {\n constructor() {\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n // Order is important, Scale has Element in prototype chain,\n // so Scales must be before Elements. Plugins are a fallback, so not listed here.\n this._typedRegistries = [this.controllers, this.scales, this.elements];\n }\n\n /**\n\t * @param {...any} args\n\t */\n add(...args) {\n this._each('register', args);\n }\n\n remove(...args) {\n this._each('unregister', args);\n }\n\n /**\n\t * @param {...typeof DatasetController} args\n\t */\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n\n /**\n\t * @param {...typeof Element} args\n\t */\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n\n /**\n\t * @param {...any} args\n\t */\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n\n /**\n\t * @param {...typeof Scale} args\n\t */\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n\n /**\n\t * @param {string} id\n\t * @returns {typeof DatasetController}\n\t */\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n\n /**\n\t * @param {string} id\n\t * @returns {typeof Element}\n\t */\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n\n /**\n\t * @param {string} id\n\t * @returns {object}\n\t */\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n\n /**\n\t * @param {string} id\n\t * @returns {typeof Scale}\n\t */\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n\n /**\n\t * @param {...typeof DatasetController} args\n\t */\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n\n /**\n\t * @param {...typeof Element} args\n\t */\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n\n /**\n\t * @param {...any} args\n\t */\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n\n /**\n\t * @param {...typeof Scale} args\n\t */\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n\n /**\n\t * @private\n\t */\n _each(method, args, typedRegistry) {\n [...args].forEach(arg => {\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || (reg === this.plugins && arg.id)) {\n this._exec(method, reg, arg);\n } else {\n // Handle loopable args\n // Use case:\n // import * as plugins from './plugins.js';\n // Chart.register(plugins);\n each(arg, item => {\n // If there are mixed types in the loopable, make sure those are\n // registered in correct registry\n // Use case: (treemap exporting controller, elements etc)\n // import * as treemap from 'chartjs-chart-treemap.js';\n // Chart.register(treemap);\n\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n\n /**\n\t * @private\n\t */\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n call(component['before' + camelMethod], [], component); // beforeRegister / beforeUnregister\n registry[method](component);\n call(component['after' + camelMethod], [], component); // afterRegister / afterUnregister\n }\n\n /**\n\t * @private\n\t */\n _getRegistryForType(type) {\n for (let i = 0; i < this._typedRegistries.length; i++) {\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n // plugins is the fallback registry\n return this.plugins;\n }\n\n /**\n\t * @private\n\t */\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n\n}\n\n// singleton instance\nexport default /* #__PURE__ */ new Registry();\n","import registry from './core.registry.js';\nimport {callback as callCallback, isNullOrUndef, valueOrDefault} from '../helpers/helpers.core.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef { import('../plugins/plugin.tooltip.js').default } Tooltip\n */\n\n/**\n * @callback filterCallback\n * @param {{plugin: object, options: object}} value\n * @param {number} [index]\n * @param {array} [array]\n * @param {object} [thisArg]\n * @return {boolean}\n */\n\n\nexport default class PluginService {\n constructor() {\n this._init = undefined;\n }\n\n /**\n\t * Calls enabled plugins for `chart` on the specified hook and with the given args.\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\n\t * returned value can be used, for instance, to interrupt the current action.\n\t * @param {Chart} chart - The chart instance for which plugins should be called.\n\t * @param {string} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\n\t * @param {object} [args] - Extra arguments to apply to the hook call.\n * @param {filterCallback} [filter] - Filtering function for limiting which plugins are notified\n\t * @returns {boolean} false if any of the plugins return false, else returns true.\n\t */\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n\n if (this._init === undefined) { // Do not trigger events before install\n return;\n }\n\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n this._init = undefined; // Do not trigger events after uninstall\n }\n return result;\n }\n\n /**\n\t * @private\n\t */\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors) {\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [chart, args, descriptor.options];\n if (callCallback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n\n return true;\n }\n\n invalidate() {\n // When plugins are registered, there is the possibility of a double\n // invalidate situation. In this case, we only want to invalidate once.\n // If we invalidate multiple times, the `_oldCache` is lost and all of the\n // plugins are restarted without being correctly stopped.\n // See https://github.com/chartjs/Chart.js/issues/8147\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n\n /**\n\t * @param {Chart} chart\n\t * @private\n\t */\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n\n const descriptors = this._cache = this._createDescriptors(chart);\n\n this._notifyStateChanges(chart);\n\n return descriptors;\n }\n\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n // options === false => all plugins are disabled\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n\n /**\n\t * @param {Chart} chart\n\t * @private\n\t */\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\n\n/**\n * @param {import('./core.config.js').default} config\n */\nfunction allPlugins(config) {\n const localIds = {};\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for (let i = 0; i < keys.length; i++) {\n plugins.push(registry.getPlugin(keys[i]));\n }\n\n const local = config.plugins || [];\n for (let i = 0; i < local.length; i++) {\n const plugin = local[i];\n\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n localIds[plugin.id] = true;\n }\n }\n\n return {plugins, localIds};\n}\n\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\n\nfunction createDescriptors(chart, {plugins, localIds}, options, all) {\n const result = [];\n const context = chart.getContext();\n\n for (const plugin of plugins) {\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, {plugin, local: localIds[id]}, opts, context)\n });\n }\n\n return result;\n}\n\nfunction pluginOpts(config, {plugin, local}, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n if (local && plugin.defaults) {\n // make sure plugin defaults are in scopes for local (not registered) plugins\n scopes.push(plugin.defaults);\n }\n return config.createResolver(scopes, context, [''], {\n // These are just defaults that plugins can override\n scriptable: false,\n indexable: false,\n allKeys: true\n });\n}\n","import defaults, {overrides, descriptors} from './core.defaults.js';\nimport {mergeIf, resolveObjectKey, isArray, isFunction, valueOrDefault, isObject} from '../helpers/helpers.core.js';\nimport {_attachContext, _createResolver, _descriptors} from '../helpers/helpers.config.js';\n\nexport function getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\n\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\n\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\n\nfunction idMatchesAxis(id) {\n if (id === 'x' || id === 'y' || id === 'r') {\n return id;\n }\n}\n\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\n\nexport function determineAxis(id, ...scaleOptions) {\n if (idMatchesAxis(id)) {\n return id;\n }\n for (const opts of scaleOptions) {\n const axis = opts.axis\n || axisFromPosition(opts.position)\n || id.length > 1 && idMatchesAxis(id[0].toLowerCase());\n if (axis) {\n return axis;\n }\n }\n throw new Error(`Cannot determine type of '${id}' axis. Please provide 'axis' or 'position' option.`);\n}\n\nfunction getAxisFromDataset(id, axis, dataset) {\n if (dataset[axis + 'AxisID'] === id) {\n return {axis};\n }\n}\n\nfunction retrieveAxisFromDatasets(id, config) {\n if (config.data && config.data.datasets) {\n const boundDs = config.data.datasets.filter((d) => d.xAxisID === id || d.yAxisID === id);\n if (boundDs.length) {\n return getAxisFromDataset(id, 'x', boundDs[0]) || getAxisFromDataset(id, 'y', boundDs[0]);\n }\n }\n return {};\n}\n\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {scales: {}};\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const scales = Object.create(null);\n\n // First figure out first scale id's per axis.\n Object.keys(configScales).forEach(id => {\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf, retrieveAxisFromDatasets(id, config), defaults.scales[scaleConf.type]);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n scales[id] = mergeIf(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n });\n\n // Then merge dataset defaults to scale configs\n config.data.datasets.forEach(dataset => {\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach(defaultID => {\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n });\n });\n\n // apply scale defaults, if not overridden by dataset defaults\n Object.keys(scales).forEach(key => {\n const scale = scales[key];\n mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n });\n\n return scales;\n}\n\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\n\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\n\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n\n initOptions(config);\n\n return config;\n}\n\nconst keyCache = new Map();\nconst keysCached = new Set();\n\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\n\nconst addIfFound = (set, obj, key) => {\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\n\nexport default class Config {\n constructor(config) {\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n\n get platform() {\n return this._config.platform;\n }\n\n get type() {\n return this._config.type;\n }\n\n set type(type) {\n this._config.type = type;\n }\n\n get data() {\n return this._config.data;\n }\n\n set data(data) {\n this._config.data = initData(data);\n }\n\n get options() {\n return this._config.options;\n }\n\n set options(options) {\n this._config.options = options;\n }\n\n get plugins() {\n return this._config.plugins;\n }\n\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n\n /**\n * Returns the option scope keys for resolving dataset options.\n * These keys do not include the dataset itself, because it is not under options.\n * @param {string} datasetType\n * @return {string[][]}\n */\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType,\n () => [[\n `datasets.${datasetType}`,\n ''\n ]]);\n }\n\n /**\n * Returns the option scope keys for resolving dataset animation options.\n * These keys do not include the dataset itself, because it is not under options.\n * @param {string} datasetType\n * @param {string} transition\n * @return {string[][]}\n */\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`,\n () => [\n [\n `datasets.${datasetType}.transitions.${transition}`,\n `transitions.${transition}`,\n ],\n // The following are used for looking up the `animations` and `animation` keys\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n\n /**\n * Returns the options scope keys for resolving element options that belong\n * to an dataset. These keys do not include the dataset itself, because it\n * is not under options.\n * @param {string} datasetType\n * @param {string} elementType\n * @return {string[][]}\n */\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`,\n () => [[\n `datasets.${datasetType}.elements.${elementType}`,\n `datasets.${datasetType}`,\n `elements.${elementType}`,\n ''\n ]]);\n }\n\n /**\n * Returns the options scope keys for resolving plugin options.\n * @param {{id: string, additionalOptionScopes?: string[]}} plugin\n * @return {string[][]}\n */\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`,\n () => [[\n `plugins.${id}`,\n ...plugin.additionalOptionScopes || [],\n ]]);\n }\n\n /**\n * @private\n */\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n\n /**\n * Resolves the objects from options and defaults for option value resolution.\n * @param {object} mainScope - The main scope object for options\n * @param {string[][]} keyLists - The arrays of keys in resolution order\n * @param {boolean} [resetCache] - reset the cache for this mainScope\n */\n getOptionScopes(mainScope, keyLists, resetCache) {\n const {options, type} = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n\n const scopes = new Set();\n\n keyLists.forEach(keys => {\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach(key => addIfFound(scopes, mainScope, key));\n }\n keys.forEach(key => addIfFound(scopes, options, key));\n keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach(key => addIfFound(scopes, defaults, key));\n keys.forEach(key => addIfFound(scopes, descriptors, key));\n });\n\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n\n /**\n * Returns the option scopes for resolving chart options\n * @return {object[]}\n */\n chartOptionScopes() {\n const {options, type} = this;\n\n return [\n options,\n overrides[type] || {},\n defaults.datasets[type] || {}, // https://github.com/chartjs/Chart.js/issues/8531\n {type},\n defaults,\n descriptors\n ];\n }\n\n /**\n * @param {object[]} scopes\n * @param {string[]} names\n * @param {function|object} context\n * @param {string[]} [prefixes]\n * @return {object}\n */\n resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n const result = {$shared: true};\n const {resolver, subPrefixes} = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n // subResolver is passed to scriptable options. It should not resolve to hover options.\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n\n for (const prop of names) {\n result[prop] = options[prop];\n }\n return result;\n }\n\n /**\n * @param {object[]} scopes\n * @param {object} [context]\n * @param {string[]} [prefixes]\n * @param {{scriptable: boolean, indexable: boolean, allKeys?: boolean}} [descriptorDefaults]\n */\n createResolver(scopes, context, prefixes = [''], descriptorDefaults) {\n const {resolver} = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context)\n ? _attachContext(resolver, context, undefined, descriptorDefaults)\n : resolver;\n }\n}\n\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\n\nconst hasFunction = value => isObject(value)\n && Object.getOwnPropertyNames(value).some((key) => isFunction(value[key]));\n\nfunction needContext(proxy, names) {\n const {isScriptable, isIndexable} = _descriptors(proxy);\n\n for (const prop of names) {\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if ((scriptable && (isFunction(value) || hasFunction(value)))\n || (indexable && isArray(value))) {\n return true;\n }\n }\n return false;\n}\n","import animator from './core.animator.js';\nimport defaults, {overrides} from './core.defaults.js';\nimport Interaction from './core.interaction.js';\nimport layouts from './core.layouts.js';\nimport {_detectPlatform} from '../platform/index.js';\nimport PluginService from './core.plugins.js';\nimport registry from './core.registry.js';\nimport Config, {determineAxis, getIndexAxis} from './core.config.js';\nimport {each, callback as callCallback, uid, valueOrDefault, _elementsEqual, isNullOrUndef, setsEqual, defined, isFunction, _isClickEvent} from '../helpers/helpers.core.js';\nimport {clearCanvas, clipArea, createContext, unclipArea, _isPointInArea, _isDomSupported, retinaScale, getDatasetClipArea} from '../helpers/index.js';\n// @ts-ignore\nimport {version} from '../../package.json';\nimport {debounce} from '../helpers/helpers.extras.js';\n\n/**\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef { import('../types/index.js').Point } Point\n */\n\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x');\n}\n\nfunction compare2Level(l1, l2) {\n return function(a, b) {\n return a[l1] === b[l1]\n ? a[l2] - b[l2]\n : a[l1] - b[l1];\n };\n}\n\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n\n chart.notifyPlugins('afterRender');\n callCallback(animationOptions && animationOptions.onComplete, [context], chart);\n}\n\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callCallback(animationOptions && animationOptions.onProgress, [context], chart);\n}\n\n/**\n * Chart.js can take a string id of a canvas element, a 2d context, or a canvas element itself.\n * Attempt to unwrap the item passed into the chart constructor so that it is a canvas element (if possible).\n */\nfunction getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n // Support for array based queries (such as jQuery)\n item = item[0];\n }\n\n if (item && item.canvas) {\n // Support for any object associated to a canvas (including a context2d)\n item = item.canvas;\n }\n return item;\n}\n\nconst instances = {};\nconst getChart = (key) => {\n const canvas = getCanvas(key);\n return Object.values(instances).filter((c) => c.canvas === canvas).pop();\n};\n\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys) {\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\n\n/**\n * @param {ChartEvent} e\n * @param {ChartEvent|null} lastEvent\n * @param {boolean} inChartArea\n * @param {boolean} isClick\n * @returns {ChartEvent|null}\n */\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\n\nclass Chart {\n\n static defaults = defaults;\n static instances = instances;\n static overrides = overrides;\n static registry = registry;\n static version = version;\n static getChart = getChart;\n\n static register(...items) {\n registry.add(...items);\n invalidatePlugins();\n }\n\n static unregister(...items) {\n registry.remove(...items);\n invalidatePlugins();\n }\n\n // eslint-disable-next-line max-statements\n constructor(item, userConfig) {\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error(\n 'Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' +\n\t\t\t\t' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.'\n );\n }\n\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n // Store the previously used aspect ratio to determine if a resize\n // is needed during updates. Do this after _options is set since\n // aspectRatio uses a getter\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n /** @type {?{attach?: function, detach?: function, resize?: function}} */\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n\n // Add the chart instance to the global namespace\n instances[this.id] = this;\n\n if (!context || !canvas) {\n // The given item is not a compatible context2d element, let's return before finalizing\n // the chart initialization but after setting basic chart / controller properties that\n // can help to figure out that the chart is not valid (e.g chart.canvas !== null);\n // https://github.com/chartjs/Chart.js/issues/2807\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n\n get aspectRatio() {\n const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this;\n if (!isNullOrUndef(aspectRatio)) {\n // If aspectRatio is defined in options, use that.\n return aspectRatio;\n }\n\n if (maintainAspectRatio && _aspectRatio) {\n // If maintainAspectRatio is truthly and we had previously determined _aspectRatio, use that\n return _aspectRatio;\n }\n\n // Calculate\n return height ? width / height : null;\n }\n\n get data() {\n return this.config.data;\n }\n\n set data(data) {\n this.config.data = data;\n }\n\n get options() {\n return this._options;\n }\n\n set options(options) {\n this.config.options = options;\n }\n\n get registry() {\n return registry;\n }\n\n /**\n\t * @private\n\t */\n _initialize() {\n // Before init plugin notification\n this.notifyPlugins('beforeInit');\n\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n\n this.bindEvents();\n\n // After init plugin notification\n this.notifyPlugins('afterInit');\n\n return this;\n }\n\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n\n stop() {\n animator.stop(this);\n return this;\n }\n\n /**\n\t * Resize the chart to its container or to explicit dimensions.\n\t * @param {number} [width]\n\t * @param {number} [height]\n\t */\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {width, height};\n }\n }\n\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n\n this.notifyPlugins('resize', {size: newSize});\n\n callCallback(options.onResize, [this, newSize], this);\n\n if (this.attached) {\n if (this._doResize(mode)) {\n // The resize update is delayed, only draw without updating.\n this.render();\n }\n }\n }\n\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n\n each(scalesOptions, (axisOptions, axisID) => {\n axisOptions.id = axisID;\n });\n }\n\n /**\n\t * Builds a map of scale ID to scale object for future lookup.\n\t */\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id) => {\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n\n if (scaleOpts) {\n items = items.concat(\n Object.keys(scaleOpts).map((id) => {\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n })\n );\n }\n\n each(items, (item) => {\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n\n scale.init(scaleOptions, options);\n });\n // clear up discarded scales\n each(updated, (hasUpdated, id) => {\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n\n each(scales, (scale) => {\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n\n /**\n\t * @private\n\t */\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n\n metasets.sort((a, b) => a.index - b.index);\n if (numMeta > numData) {\n for (let i = numData; i < numMeta; ++i) {\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n\n /**\n\t * @private\n\t */\n _removeUnreferencedMetasets() {\n const {_metasets: metasets, data: {datasets}} = this;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index) => {\n if (datasets.filter(x => x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n\n this._removeUnreferencedMetasets();\n\n for (i = 0, ilen = datasets.length; i < ilen; i++) {\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const {datasetElementType, dataElementType} = defaults.datasets[type];\n Object.assign(ControllerClass, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n\n this._updateMetasets();\n return newControllers;\n }\n\n /**\n\t * Reset the elements of all datasets\n\t * @private\n\t */\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex) => {\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n\n /**\n\t* Resets the chart back to its state before the initial animation\n\t*/\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n\n update(mode) {\n const config = this.config;\n\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n\n // plugins options references might have change, let's invalidate the cache\n // https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\n this._plugins.invalidate();\n\n if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n\n // Make sure dataset controllers are updated and new controllers are reset\n const newControllers = this.buildOrUpdateControllers();\n\n this.notifyPlugins('beforeElementsUpdate');\n\n // Make sure all dataset controllers have correct meta data counts\n let minPadding = 0;\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n const {controller} = this.getDatasetMeta(i);\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n // New controllers will be reset after the layout pass, so we only want to modify\n // elements added to new datasets\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n\n // Only reset the controllers if we have animations\n if (!animsDisabled) {\n // Can only reset the new controllers after the scales have been updated\n // Reset is done to get the starting point for the initial animation\n each(newControllers, (controller) => {\n controller.reset();\n });\n }\n\n this._updateDatasets(mode);\n\n // Do this before render so that any plugins that need final scale updates can use it\n this.notifyPlugins('afterUpdate', {mode});\n\n this._layers.sort(compare2Level('z', '_idx'));\n\n // Replay last event from before update, or set hover styles on active elements\n const {_active, _lastEvent} = this;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n\n this.render();\n }\n\n /**\n * @private\n */\n _updateScales() {\n each(this.scales, (scale) => {\n layouts.removeBox(this, scale);\n });\n\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n\n /**\n * @private\n */\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n // The configured events have changed. Rebind.\n this.unbindEvents();\n this.bindEvents();\n }\n }\n\n /**\n * @private\n */\n _updateHiddenIndices() {\n const {_hiddenIndices} = this;\n const changes = this._getUniformDataChanges() || [];\n for (const {method, start, count} of changes) {\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n\n /**\n * @private\n */\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = (idx) => new Set(\n _dataChanges\n .filter(c => c[0] === idx)\n .map((c, i) => i + ',' + c.splice(1).join(','))\n );\n\n const changeSet = makeSet(0);\n for (let i = 1; i < datasetCount; i++) {\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet)\n .map(c => c.split(','))\n .map(a => ({method: a[1], start: +a[2], count: +a[3]}));\n }\n\n /**\n\t * Updates the chart layout unless a plugin returns `false` to the `beforeLayout`\n\t * hook, in which case, plugins will not be called on `afterLayout`.\n\t * @private\n\t */\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) {\n return;\n }\n\n layouts.update(this, this.width, this.height, minPadding);\n\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n\n this._layers = [];\n each(this.boxes, (box) => {\n if (noArea && box.position === 'chartArea') {\n // Skip drawing and configuring chartArea boxes when chartArea is zero or negative\n return;\n }\n\n // configure is called twice, once in core.scale.update and once here.\n // Here the boxes are fully updated and at their final positions.\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n\n this._layers.forEach((item, index) => {\n item._idx = index;\n });\n\n this.notifyPlugins('afterLayout');\n }\n\n /**\n\t * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate`\n\t * hook, in which case, plugins will not be called on `afterDatasetsUpdate`.\n\t * @private\n\t */\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this.getDatasetMeta(i).controller.configure();\n }\n\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._updateDataset(i, isFunction(mode) ? mode({datasetIndex: i}) : mode);\n }\n\n this.notifyPlugins('afterDatasetsUpdate', {mode});\n }\n\n /**\n\t * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate`\n\t * hook, in which case, plugins will not be called on `afterDatasetUpdate`.\n\t * @private\n\t */\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {meta, index, mode, cancelable: true};\n\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n\n meta.controller._update(mode);\n\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n\n render() {\n if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) {\n return;\n }\n\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({chart: this});\n }\n }\n\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const {width, height} = this._resizeBeforeDraw;\n // Unset pending resize request now to avoid possible recursion within _resize\n this._resizeBeforeDraw = null;\n this._resize(width, height);\n }\n this.clear();\n\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n\n if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) {\n return;\n }\n\n // Because of plugin hooks (before/afterDatasetsDraw), datasets can't\n // currently be part of layers. Instead, we draw\n // layers <= 0 before(default, backward compat), and the rest after\n const layers = this._layers;\n for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n layers[i].draw(this.chartArea);\n }\n\n this._drawDatasets();\n\n // Rest of layers\n for (; i < layers.length; ++i) {\n layers[i].draw(this.chartArea);\n }\n\n this.notifyPlugins('afterDraw');\n }\n\n /**\n\t * @private\n\t */\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n\n return result;\n }\n\n /**\n\t * Gets the visible dataset metas in drawing order\n\t * @return {object[]}\n\t */\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n\n /**\n\t * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw`\n\t * hook, in which case, plugins will not be called on `afterDatasetsDraw`.\n\t * @private\n\t */\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) {\n return;\n }\n\n const metasets = this.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n this._drawDataset(metasets[i]);\n }\n\n this.notifyPlugins('afterDatasetsDraw');\n }\n\n /**\n\t * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw`\n\t * hook, in which case, plugins will not be called on `afterDatasetDraw`.\n\t * @private\n\t */\n _drawDataset(meta) {\n const ctx = this.ctx;\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n // @ts-expect-error\n const clip = getDatasetClipArea(this, meta);\n\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n\n if (clip) {\n clipArea(ctx, clip);\n }\n\n meta.controller.draw();\n\n if (clip) {\n unclipArea(ctx);\n }\n\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n\n /**\n * Checks whether the given point is in the chart area.\n * @param {Point} point - in relative coordinates (see, e.g., getRelativePosition)\n * @returns {boolean}\n */\n isPointInArea(point) {\n return _isPointInArea(point, this.chartArea, this._minPadding);\n }\n\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n\n return [];\n }\n\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\t\t\t// See isDatasetVisible() comment\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n\n return meta;\n }\n\n getContext() {\n return this.$context || (this.$context = createContext(null, {chart: this, type: 'chart'}));\n }\n\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n\n const meta = this.getDatasetMeta(datasetIndex);\n\n // meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,\n // the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n\n /**\n\t * @private\n\t */\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n // Animate visible state, so hide animation can be seen. This could be handled better if update / updateDataset returned a Promise.\n anims.update(meta, {visible});\n this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n\n /**\n\t * @private\n\t */\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n\n for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._destroyDatasetMeta(i);\n }\n }\n\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const {canvas, ctx} = this;\n\n this._stop();\n this.config.clearCache();\n\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n\n delete instances[this.id];\n\n this.notifyPlugins('afterDestroy');\n }\n\n toBase64Image(...args) {\n return this.canvas.toDataURL(...args);\n }\n\n /**\n\t * @private\n\t */\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n\n /**\n * @private\n */\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n\n const listener = (e, x, y) => {\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n\n each(this.options.events, (type) => _add(type, listener));\n }\n\n /**\n * @private\n */\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener) => {\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n\n const listener = (width, height) => {\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n\n let detached; // eslint-disable-line prefer-const\n const attached = () => {\n _remove('attach', attached);\n\n this.attached = true;\n this.resize();\n\n _add('resize', listener);\n _add('detach', detached);\n };\n\n detached = () => {\n this.attached = false;\n\n _remove('resize', listener);\n\n // Stop animating and remove metasets, so when re-attached, the animations start from beginning.\n this._stop();\n this._resize(0, 0);\n\n _add('attach', attached);\n };\n\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n\n /**\n\t * @private\n\t */\n unbindEvents() {\n each(this._listeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n\n each(this._responsiveListeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n\n /**\n\t * Get active (hovered) elements\n\t * @returns array\n\t */\n getActiveElements() {\n return this._active || [];\n }\n\n /**\n\t * Set active (hovered) elements\n\t * @param {array} activeElements New active data points\n\t */\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n\n if (changed) {\n this._active = active;\n // Make sure we don't use the previous mouse event to override the active elements in update.\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n\n /**\n\t * Calls enabled plugins on the specified hook and with the given args.\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\n\t * returned value can be used, for instance, to interrupt the current action.\n\t * @param {string} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\n\t * @param {Object} [args] - Extra arguments to apply to the hook call.\n * @param {import('./core.plugins.js').filterCallback} [filter] - Filtering function for limiting which plugins are notified\n\t * @returns {boolean} false if any of the plugins return false, else returns true.\n\t */\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n\n /**\n * Check if a plugin with the specific ID is registered and enabled\n * @param {string} pluginId - The ID of the plugin of which to check if it is enabled\n * @returns {boolean}\n */\n isPluginEnabled(pluginId) {\n return this._plugins._cache.filter(p => p.plugin.id === pluginId).length === 1;\n }\n\n /**\n\t * @private\n\t */\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n\n /**\n\t * @private\n\t */\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: this.isPointInArea(e)\n };\n const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type);\n\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n\n const changed = this._handleEvent(e, replay, args.inChartArea);\n\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n\n if (changed || args.changed) {\n this.render();\n }\n\n return this;\n }\n\n /**\n\t * Handle an event\n\t * @param {ChartEvent} e the event to handle\n\t * @param {boolean} [replay] - true if the event was replayed by `update`\n * @param {boolean} [inChartArea] - true if the event is inside chartArea\n\t * @return {boolean} true if the chart needs to re-render\n\t * @private\n\t */\n _handleEvent(e, replay, inChartArea) {\n const {_active: lastActive = [], options} = this;\n\n // If the event is replayed from `update`, we should evaluate with the final positions.\n //\n // The `replay`:\n // It's the last event (excluding click) that has occurred before `update`.\n // So mouse has not moved. It's also over the chart, because there is a `replay`.\n //\n // The why:\n // If animations are active, the elements haven't moved yet compared to state before update.\n // But if they will, we are activating the elements that would be active, if this check\n // was done after the animations have completed. => \"final positions\".\n // If there is no animations, the \"final\" and \"current\" positions are equal.\n // This is done so we do not have to evaluate the active elements each animation frame\n // - it would be expensive.\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n\n if (inChartArea) {\n // Set _lastEvent to null while we are processing the event handlers.\n // This prevents recursion if the handler calls chart.update()\n this._lastEvent = null;\n\n // Invoke onHover hook\n callCallback(options.onHover, [e, active, this], this);\n\n if (isClick) {\n callCallback(options.onClick, [e, active, this], this);\n }\n }\n\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n\n this._lastEvent = lastEvent;\n\n return changed;\n }\n\n /**\n * @param {ChartEvent} e - The event\n * @param {import('../types/index.js').ActiveElement[]} lastActive - Previously active elements\n * @param {boolean} inChartArea - Is the event inside chartArea\n * @param {boolean} useFinalPosition - Should the evaluation be done with current or final (after animation) element positions\n * @returns {import('../types/index.js').ActiveElement[]} - The active elements\n * @pravate\n */\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n\n if (!inChartArea) {\n // Let user control the active elements outside chartArea. Eg. using Legend.\n return lastActive;\n }\n\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\n\n// @ts-ignore\nfunction invalidatePlugins() {\n return each(Chart.instances, (chart) => chart._plugins.invalidate());\n}\n\nexport default Chart;\n","import Element from '../core/core.element.js';\nimport {_angleBetween, getAngleFromPoint, TAU, HALF_PI, valueOrDefault} from '../helpers/index.js';\nimport {PI, _angleDiff, _normalizeAngle, _isBetween, _limitValue} from '../helpers/helpers.math.js';\nimport {_readValueToProps} from '../helpers/helpers.options.js';\nimport type {ArcOptions, Point} from '../types/index.js';\n\nfunction clipSelf(ctx: CanvasRenderingContext2D, element: ArcElement, endAngle: number) {\n const {startAngle, x, y, outerRadius, innerRadius, options} = element;\n const {borderWidth, borderJoinStyle} = options;\n const outerAngleClip = Math.min(borderWidth / outerRadius, _normalizeAngle(startAngle - endAngle));\n ctx.beginPath();\n ctx.arc(x, y, outerRadius - borderWidth / 2, startAngle + outerAngleClip / 2, endAngle - outerAngleClip / 2);\n\n if (innerRadius > 0) {\n const innerAngleClip = Math.min(borderWidth / innerRadius, _normalizeAngle(startAngle - endAngle));\n ctx.arc(x, y, innerRadius + borderWidth / 2, endAngle - innerAngleClip / 2, startAngle + innerAngleClip / 2, true);\n } else {\n const clipWidth = Math.min(borderWidth / 2, outerRadius * _normalizeAngle(startAngle - endAngle));\n\n if (borderJoinStyle === 'round') {\n ctx.arc(x, y, clipWidth, endAngle - PI / 2, startAngle + PI / 2, true);\n } else if (borderJoinStyle === 'bevel') {\n const r = 2 * clipWidth * clipWidth;\n const endX = -r * Math.cos(endAngle + PI / 2) + x;\n const endY = -r * Math.sin(endAngle + PI / 2) + y;\n const startX = r * Math.cos(startAngle + PI / 2) + x;\n const startY = r * Math.sin(startAngle + PI / 2) + y;\n ctx.lineTo(endX, endY);\n ctx.lineTo(startX, startY);\n }\n }\n ctx.closePath();\n\n ctx.moveTo(0, 0);\n ctx.rect(0, 0, ctx.canvas.width, ctx.canvas.height);\n\n ctx.clip('evenodd');\n}\n\n\nfunction clipArc(ctx: CanvasRenderingContext2D, element: ArcElement, endAngle: number) {\n const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;\n let angleMargin = pixelMargin / outerRadius;\n\n // Draw an inner border by clipping the arc and drawing a double-width border\n // Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\n\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\n\n/**\n * Parse border radius from the provided options\n */\nfunction parseBorderRadius(arc: ArcElement, innerRadius: number, outerRadius: number, angleDelta: number) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n\n // Outer limits are complicated. We want to compute the available angular distance at\n // a radius of outerRadius - borderRadius because for small angular distances, this term limits.\n // We compute at r = outerRadius - borderRadius because this circle defines the center of the border corners.\n //\n // If the borderRadius is large, that value can become negative.\n // This causes the outer borders to lose their radius entirely, which is rather unexpected. To solve that, if borderRadius > outerRadius\n // we know that the thickness term will dominate and compute the limits at that point\n const computeOuterLimit = (val) => {\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit),\n };\n}\n\n/**\n * Convert (r, 𝜃) to (x, y)\n */\nfunction rThetaToXY(r: number, theta: number, x: number, y: number) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta),\n };\n}\n\n\n/**\n * Path the arc, respecting border radius by separating into left and right halves.\n *\n * Start End\n *\n * 1--->a--->2 Outer\n * / \\\n * 8 3\n * | |\n * | |\n * 7 4\n * \\ /\n * 6<---b<---5 Inner\n */\nfunction pathArc(\n ctx: CanvasRenderingContext2D,\n element: ArcElement,\n offset: number,\n spacing: number,\n end: number,\n circular: boolean,\n) {\n const {x, y, startAngle: start, pixelMargin, innerRadius: innerR} = element;\n\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n\n let spacingOffset = 0;\n const alpha = end - start;\n\n if (spacing) {\n // When spacing is present, it is the same for all items\n // So we adjust the start and end angle of the arc such that\n // the distance is the same as it would be without the spacing\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? (alpha * avNogSpacingRadius) / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const {outerStart, outerEnd, innerStart, innerEnd} = parseBorderRadius(element, innerRadius, outerRadius, endAngle - startAngle);\n\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n\n ctx.beginPath();\n\n if (circular) {\n // The first arc segments from point 1 to point a to point 2\n const outerMidAdjustedAngle = (outerStartAdjustedAngle + outerEndAdjustedAngle) / 2;\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerMidAdjustedAngle);\n ctx.arc(x, y, outerRadius, outerMidAdjustedAngle, outerEndAdjustedAngle);\n\n // The corner segment from point 2 to point 3\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n\n // The line from point 3 to point 4\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n\n // The corner segment from point 4 to point 5\n if (innerEnd > 0) {\n const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n\n // The inner arc from point 5 to point b to point 6\n const innerMidAdjustedAngle = ((endAngle - (innerEnd / innerRadius)) + (startAngle + (innerStart / innerRadius))) / 2;\n ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), innerMidAdjustedAngle, true);\n ctx.arc(x, y, innerRadius, innerMidAdjustedAngle, startAngle + (innerStart / innerRadius), true);\n\n // The corner segment from point 6 to point 7\n if (innerStart > 0) {\n const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n\n // The line from point 7 to point 8\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n\n // The corner segment from point 8 to point 1\n if (outerStart > 0) {\n const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n } else {\n ctx.moveTo(x, y);\n\n const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerStartX, outerStartY);\n\n const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerEndX, outerEndY);\n }\n\n ctx.closePath();\n}\n\nfunction drawArc(\n ctx: CanvasRenderingContext2D,\n element: ArcElement,\n offset: number,\n spacing: number,\n circular: boolean,\n) {\n const {fullCircles, startAngle, circumference} = element;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.fill();\n return endAngle;\n}\n\nfunction drawBorder(\n ctx: CanvasRenderingContext2D,\n element: ArcElement,\n offset: number,\n spacing: number,\n circular: boolean,\n) {\n const {fullCircles, startAngle, circumference, options} = element;\n const {borderWidth, borderJoinStyle, borderDash, borderDashOffset, borderRadius} = options;\n const inner = options.borderAlign === 'inner';\n\n if (!borderWidth) {\n return;\n }\n\n ctx.setLineDash(borderDash || []);\n ctx.lineDashOffset = borderDashOffset;\n\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n\n if (options.selfJoin && endAngle - startAngle >= PI && borderRadius === 0 && borderJoinStyle !== 'miter') {\n clipSelf(ctx, element, endAngle);\n }\n\n if (!fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.stroke();\n }\n}\n\nexport interface ArcProps extends Point {\n startAngle: number;\n endAngle: number;\n innerRadius: number;\n outerRadius: number;\n circumference: number;\n}\n\nexport default class ArcElement extends Element {\n\n static id = 'arc';\n\n static defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n circular: true,\n selfJoin: false,\n };\n\n static defaultRoutes = {\n backgroundColor: 'backgroundColor'\n };\n\n static descriptors = {\n _scriptable: true,\n _indexable: (name) => name !== 'borderDash'\n };\n\n circumference: number;\n endAngle: number;\n fullCircles: number;\n innerRadius: number;\n outerRadius: number;\n pixelMargin: number;\n startAngle: number;\n\n constructor(cfg) {\n super();\n\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n inRange(chartX: number, chartY: number, useFinalPosition: boolean) {\n const point = this.getProps(['x', 'y'], useFinalPosition);\n const {angle, distance} = getAngleFromPoint(point, {x: chartX, y: chartY});\n const {startAngle, endAngle, innerRadius, outerRadius, circumference} = this.getProps([\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const rAdjust = (this.options.spacing + this.options.borderWidth) / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const nonZeroBetween = _angleBetween(angle, startAngle, endAngle) && startAngle !== endAngle;\n const betweenAngles = _circumference >= TAU || nonZeroBetween;\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n\n return (betweenAngles && withinRadius);\n }\n\n getCenterPoint(useFinalPosition: boolean) {\n const {x, y, startAngle, endAngle, innerRadius, outerRadius} = this.getProps([\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius'\n ], useFinalPosition);\n const {offset, spacing} = this.options;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n\n tooltipPosition(useFinalPosition: boolean) {\n return this.getCenterPoint(useFinalPosition);\n }\n\n draw(ctx: CanvasRenderingContext2D) {\n const {options, circumference} = this;\n const offset = (options.offset || 0) / 4;\n const spacing = (options.spacing || 0) / 2;\n const circular = options.circular;\n this.pixelMargin = (options.borderAlign === 'inner') ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n\n ctx.save();\n\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * offset, Math.sin(halfAngle) * offset);\n const fix = 1 - Math.sin(Math.min(PI, circumference || 0));\n const radiusOffset = offset * fix;\n\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n\n drawArc(ctx, this, radiusOffset, spacing, circular);\n drawBorder(ctx, this, radiusOffset, spacing, circular);\n\n ctx.restore();\n }\n}\n","import Element from '../core/core.element.js';\nimport {_bezierInterpolation, _pointInLine, _steppedInterpolation} from '../helpers/helpers.interpolation.js';\nimport {_computeSegments, _boundSegments} from '../helpers/helpers.segment.js';\nimport {_steppedLineTo, _bezierCurveTo} from '../helpers/helpers.canvas.js';\nimport {_updateBezierControlPoints} from '../helpers/helpers.curve.js';\nimport {valueOrDefault} from '../helpers/index.js';\n\n/**\n * @typedef { import('./element.point.js').default } PointElement\n */\n\nfunction setStyle(ctx, options, style = options) {\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\n\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\n\n/**\n * @returns {any}\n */\nfunction getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n\n return lineTo;\n}\n\nfunction pathVars(points, segment, params = {}) {\n const count = points.length;\n const {start: paramsStart = 0, end: paramsEnd = count - 1} = params;\n const {start: segmentStart, end: segmentEnd} = segment;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\n\n/**\n * Create path from points, grouping by truncated x-coordinate\n * Points need to be in order by x-coordinate for this to work efficiently\n * @param {CanvasRenderingContext2D|Path2D} ctx - Context\n * @param {LineElement} line\n * @param {object} segment\n * @param {number} segment.start - start index of the segment, referring the points array\n * @param {number} segment.end - end index of the segment, referring the points array\n * @param {boolean} segment.loop - indicates that the segment is a loop\n * @param {object} params\n * @param {boolean} params.move - move to starting point (vs line to it)\n * @param {boolean} params.reverse - path the segment from end to start\n * @param {number} params.start - limit segment to points starting from `start` index\n * @param {number} params.end - limit segment to points ending at `start` + `count` index\n */\nfunction pathSegment(ctx, line, segment, params) {\n const {points, options} = line;\n const {count, start, loop, ilen} = pathVars(points, segment, params);\n const lineMethod = getLineMethod(options);\n // eslint-disable-next-line prefer-const\n let {move = true, reverse} = params || {};\n let i, point, prev;\n\n for (i = 0; i <= ilen; ++i) {\n point = points[(start + (reverse ? ilen - i : i)) % count];\n\n if (point.skip) {\n // If there is a skipped point inside a segment, spanGaps must be true\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n\n prev = point;\n }\n\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n\n return !!loop;\n}\n\n/**\n * Create path from points, grouping by truncated x-coordinate\n * Points need to be in order by x-coordinate for this to work efficiently\n * @param {CanvasRenderingContext2D|Path2D} ctx - Context\n * @param {LineElement} line\n * @param {object} segment\n * @param {number} segment.start - start index of the segment, referring the points array\n * @param {number} segment.end - end index of the segment, referring the points array\n * @param {boolean} segment.loop - indicates that the segment is a loop\n * @param {object} params\n * @param {boolean} params.move - move to starting point (vs line to it)\n * @param {boolean} params.reverse - path the segment from end to start\n * @param {number} params.start - limit segment to points starting from `start` index\n * @param {number} params.end - limit segment to points ending at `start` + `count` index\n */\nfunction fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const {count, start, ilen} = pathVars(points, segment, params);\n const {move = true, reverse} = params || {};\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n\n const pointIndex = (index) => (start + (reverse ? ilen - index : index)) % count;\n const drawX = () => {\n if (minY !== maxY) {\n // Draw line to maxY and minY, using the average x-coordinate\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n // Line to y-value of last point in group. So the line continues\n // from correct position. Not using move, to have solid path.\n ctx.lineTo(avgX, lastY);\n }\n };\n\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n\n for (i = 0; i <= ilen; ++i) {\n point = points[pointIndex(i)];\n\n if (point.skip) {\n // If there is a skipped point inside a segment, spanGaps must be true\n continue;\n }\n\n const x = point.x;\n const y = point.y;\n const truncX = x | 0; // truncated x-coordinate\n\n if (truncX === prevX) {\n // Determine `minY` / `maxY` and `avgX` while we stay within same x-position\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n // For first point in group, countX is `0`, so average will be `x` / 1.\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n // Draw line to next x-position, using the first (or only)\n // y-value in that group\n ctx.lineTo(x, y);\n\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n // Keep track of the last y-value in group\n lastY = y;\n }\n drawX();\n}\n\n/**\n * @param {LineElement} line - the line\n * @returns {function}\n * @private\n */\nfunction _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\n\n/**\n * @private\n */\nfunction _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n\n return _pointInLine;\n}\n\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\n\nfunction strokePathDirect(ctx, line, start, count) {\n const {segments, options} = line;\n const segmentMethod = _getSegmentMethod(line);\n\n for (const segment of segments) {\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {start, end: start + count - 1})) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\n\nconst usePath2D = typeof Path2D === 'function';\n\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\n\nexport default class LineElement extends Element {\n\n static id = 'line';\n\n /**\n * @type {any}\n */\n static defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0,\n };\n\n /**\n * @type {any}\n */\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n\n\n static descriptors = {\n _scriptable: true,\n _indexable: (name) => name !== 'borderDash' && name !== 'fill',\n };\n\n\n constructor(cfg) {\n super();\n\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n\n get points() {\n return this._points;\n }\n\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n\n /**\n\t * First non-skipped point on this line\n\t * @returns {PointElement|undefined}\n\t */\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n\n /**\n\t * Last non-skipped point on this line\n\t * @returns {PointElement|undefined}\n\t */\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n\n /**\n\t * Interpolate a point in this line at the same value on `property` as\n\t * the reference `point` provided\n\t * @param {PointElement} point - the reference point\n\t * @param {string} property - the property to match on\n\t * @returns {PointElement|undefined}\n\t */\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {property, start: value, end: value});\n\n if (!segments.length) {\n return;\n }\n\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for (i = 0, ilen = segments.length; i < ilen; ++i) {\n const {start, end} = segments[i];\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n\n /**\n\t * Append a segment of this line to current path.\n\t * @param {CanvasRenderingContext2D} ctx\n\t * @param {object} segment\n\t * @param {number} segment.start - start index of the segment, referring the points array\n \t * @param {number} segment.end - end index of the segment, referring the points array\n \t * @param {boolean} segment.loop - indicates that the segment is a loop\n\t * @param {object} params\n\t * @param {boolean} params.move - move to starting point (vs line to it)\n\t * @param {boolean} params.reverse - path the segment from end to start\n\t * @param {number} params.start - limit segment to points starting from `start` index\n\t * @param {number} params.end - limit segment to points ending at `start` + `count` index\n\t * @returns {undefined|boolean} - true if the segment is a full loop (path should be closed)\n\t */\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n\n /**\n\t * Append all segments of this line to current path.\n\t * @param {CanvasRenderingContext2D|Path2D} ctx\n\t * @param {number} [start]\n\t * @param {number} [count]\n\t * @returns {undefined|boolean} - true if line is a full loop (path should be closed)\n\t */\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n\n start = start || 0;\n count = count || (this.points.length - start);\n\n for (const segment of segments) {\n loop &= segmentMethod(ctx, this, segment, {start, end: start + count - 1});\n }\n return !!loop;\n }\n\n /**\n\t * Draw\n\t * @param {CanvasRenderingContext2D} ctx\n\t * @param {object} chartArea\n\t * @param {number} [start]\n\t * @param {number} [count]\n\t */\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n\n if (points.length && options.borderWidth) {\n ctx.save();\n\n draw(ctx, this, start, count);\n\n ctx.restore();\n }\n\n if (this.animated) {\n // When line is animated, the control points and path are not cached.\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n}\n","import Element from '../core/core.element.js';\nimport {drawPoint, _isPointInArea} from '../helpers/helpers.canvas.js';\nimport type {\n CartesianParsedData,\n ChartArea,\n Point,\n PointHoverOptions,\n PointOptions,\n} from '../types/index.js';\n\nfunction inRange(el: PointElement, pos: number, axis: 'x' | 'y', useFinalPosition?: boolean) {\n const options = el.options;\n const {[axis]: value} = el.getProps([axis], useFinalPosition);\n\n return (Math.abs(pos - value) < options.radius + options.hitRadius);\n}\n\nexport type PointProps = Point\n\nexport default class PointElement extends Element {\n\n static id = 'point';\n\n parsed: CartesianParsedData;\n skip?: boolean;\n stop?: boolean;\n\n /**\n * @type {any}\n */\n static defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n };\n\n /**\n * @type {any}\n */\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n\n constructor(cfg) {\n super();\n\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n inRange(mouseX: number, mouseY: number, useFinalPosition?: boolean) {\n const options = this.options;\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return ((Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2)) < Math.pow(options.hitRadius + options.radius, 2));\n }\n\n inXRange(mouseX: number, useFinalPosition?: boolean) {\n return inRange(this, mouseX, 'x', useFinalPosition);\n }\n\n inYRange(mouseY: number, useFinalPosition?: boolean) {\n return inRange(this, mouseY, 'y', useFinalPosition);\n }\n\n getCenterPoint(useFinalPosition?: boolean) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n\n size(options?: Partial) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n\n draw(ctx: CanvasRenderingContext2D, area: ChartArea) {\n const options = this.options;\n\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n\n getRange() {\n const options = this.options || {};\n // @ts-expect-error Fallbacks should never be hit in practice\n return options.radius + options.hitRadius;\n }\n}\n","import Element from '../core/core.element.js';\nimport {isObject, _isBetween, _limitValue} from '../helpers/index.js';\nimport {addRoundedRectPath} from '../helpers/helpers.canvas.js';\nimport {toTRBL, toTRBLCorners} from '../helpers/helpers.options.js';\n\n/** @typedef {{ x: number, y: number, base: number, horizontal: boolean, width: number, height: number }} BarProps */\n\n/**\n * Helper function to get the bounds of the bar regardless of the orientation\n * @param {BarElement} bar the bar\n * @param {boolean} [useFinalPosition]\n * @return {object} bounds of the bar\n * @private\n */\nfunction getBarBounds(bar, useFinalPosition) {\n const {x, y, base, width, height} = /** @type {BarProps} */ (bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition));\n\n let left, right, top, bottom, half;\n\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n\n return {left, top, right, bottom};\n}\n\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\n\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\n\nfunction parseBorderRadius(bar, maxW, maxH) {\n const {enableBorderRadius} = bar.getProps(['enableBorderRadius']);\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n\n // If the value is an object, assume the user knows what they are doing\n // and apply as directed.\n const enableBorder = enableBorderRadius || isObject(value);\n\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\n\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)),\n }\n }\n };\n}\n\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n\n return bounds\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\n\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\n\n/**\n * Add a path of a rectangle to the current sub-path\n * @param {CanvasRenderingContext2D} ctx Context\n * @param {*} rect Bounding rect\n */\nfunction addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\n\nfunction inflateRect(rect, amount, refRect = {}) {\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\n\nexport default class BarElement extends Element {\n\n static id = 'bar';\n\n /**\n * @type {any}\n */\n static defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n };\n\n /**\n * @type {any}\n */\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n\n constructor(cfg) {\n super();\n\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n draw(ctx) {\n const {inflateAmount, options: {borderColor, backgroundColor}} = this;\n const {inner, outer} = boundingRects(this);\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n\n ctx.save();\n\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n\n ctx.restore();\n }\n\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n\n getCenterPoint(useFinalPosition) {\n const {x, y, base, horizontal} = /** @type {BarProps} */ (this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition));\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\n","import {_boundSegment, _boundSegments, _normalizeAngle} from '../../helpers/index.js';\n\nexport function _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n\n for (const segment of segments) {\n let {start, end} = segment;\n end = _findSegmentEnd(start, end, points);\n\n const bounds = _getBounds(property, points[start], points[end], segment.loop);\n\n if (!target.segments) {\n // Special case for boundary not supporting `segments` (simpleArc)\n // Bounds are provided as `target` for partial circle, or undefined for full circle\n parts.push({\n source: segment,\n target: bounds,\n start: points[start],\n end: points[end]\n });\n continue;\n }\n\n // Get all segments from `target` that intersect the bounds of current segment of `line`\n const targetSegments = _boundSegments(target, bounds);\n\n for (const tgt of targetSegments) {\n const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n const fillSources = _boundSegment(segment, points, subBounds);\n\n for (const fillSource of fillSources) {\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n return parts;\n}\n\nexport function _getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n let start = first[property];\n let end = last[property];\n\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {property, start, end};\n}\n\nexport function _pointsFromSegments(boundary, line) {\n const {x = null, y = null} = boundary || {};\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(({start, end}) => {\n end = _findSegmentEnd(start, end, linePoints);\n const first = linePoints[start];\n const last = linePoints[end];\n if (y !== null) {\n points.push({x: first.x, y});\n points.push({x: last.x, y});\n } else if (x !== null) {\n points.push({x, y: first.y});\n points.push({x, y: last.y});\n }\n });\n return points;\n}\n\nexport function _findSegmentEnd(start, end, points) {\n for (;end > start; end--) {\n const point = points[end];\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n return end;\n}\n\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n return a ? a[prop] : b ? b[prop] : 0;\n}\n","/**\n * @typedef { import('../../core/core.controller.js').default } Chart\n * @typedef { import('../../core/core.scale.js').default } Scale\n * @typedef { import('../../elements/element.point.js').default } PointElement\n */\n\nimport {LineElement} from '../../elements/index.js';\nimport {isArray} from '../../helpers/index.js';\nimport {_pointsFromSegments} from './filler.segment.js';\n\n/**\n * @param {PointElement[] | { x: number; y: number; }} boundary\n * @param {LineElement} line\n * @return {LineElement?}\n */\nexport function _createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n\n if (isArray(boundary)) {\n _loop = true;\n // @ts-ignore\n points = boundary;\n } else {\n points = _pointsFromSegments(boundary, line);\n }\n\n return points.length ? new LineElement({\n points,\n options: {tension: 0},\n _loop,\n _fullLoop: _loop\n }) : null;\n}\n\nexport function _shouldApplyFill(source) {\n return source && source.fill !== false;\n}\n","import {isObject, isFinite, valueOrDefault} from '../../helpers/helpers.core.js';\n\n/**\n * @typedef { import('../../core/core.scale.js').default } Scale\n * @typedef { import('../../elements/element.line.js').default } LineElement\n * @typedef { import('../../types/index.js').FillTarget } FillTarget\n * @typedef { import('../../types/index.js').ComplexFillTarget } ComplexFillTarget\n */\n\nexport function _resolveTarget(sources, index, propagate) {\n const source = sources[index];\n let fill = source.fill;\n const visited = [index];\n let target;\n\n if (!propagate) {\n return fill;\n }\n\n while (fill !== false && visited.indexOf(fill) === -1) {\n if (!isFinite(fill)) {\n return fill;\n }\n\n target = sources[fill];\n if (!target) {\n return false;\n }\n\n if (target.visible) {\n return fill;\n }\n\n visited.push(fill);\n fill = target.fill;\n }\n\n return false;\n}\n\n/**\n * @param {LineElement} line\n * @param {number} index\n * @param {number} count\n */\nexport function _decodeFill(line, index, count) {\n /** @type {string | {value: number}} */\n const fill = parseFillOption(line);\n\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n\n let target = parseFloat(fill);\n\n if (isFinite(target) && Math.floor(target) === target) {\n return decodeTargetIndex(fill[0], index, target, count);\n }\n\n return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\n\nfunction decodeTargetIndex(firstCh, index, target, count) {\n if (firstCh === '-' || firstCh === '+') {\n target = index + target;\n }\n\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n\n return target;\n}\n\n/**\n * @param {FillTarget | ComplexFillTarget} fill\n * @param {Scale} scale\n * @returns {number | null}\n */\nexport function _getTargetPixel(fill, scale) {\n let pixel = null;\n if (fill === 'start') {\n pixel = scale.bottom;\n } else if (fill === 'end') {\n pixel = scale.top;\n } else if (isObject(fill)) {\n // @ts-ignore\n pixel = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n pixel = scale.getBasePixel();\n }\n return pixel;\n}\n\n/**\n * @param {FillTarget | ComplexFillTarget} fill\n * @param {Scale} scale\n * @param {number} startValue\n * @returns {number | undefined}\n */\nexport function _getTargetValue(fill, scale, startValue) {\n let value;\n\n if (fill === 'start') {\n value = startValue;\n } else if (fill === 'end') {\n value = scale.options.reverse ? scale.min : scale.max;\n } else if (isObject(fill)) {\n // @ts-ignore\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n return value;\n}\n\n/**\n * @param {LineElement} line\n */\nfunction parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n\n if (fill === false || fill === null) {\n return false;\n }\n\n if (fill === true) {\n return 'origin';\n }\n return fill;\n}\n","/**\n * @typedef { import('../../core/core.controller.js').default } Chart\n * @typedef { import('../../core/core.scale.js').default } Scale\n * @typedef { import('../../elements/element.point.js').default } PointElement\n */\n\nimport {LineElement} from '../../elements/index.js';\nimport {_isBetween} from '../../helpers/index.js';\nimport {_createBoundaryLine} from './filler.helper.js';\n\n/**\n * @param {{ chart: Chart; scale: Scale; index: number; line: LineElement; }} source\n * @return {LineElement}\n */\nexport function _buildStackLine(source) {\n const {scale, index, line} = source;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(scale, index);\n linesBelow.push(_createBoundaryLine({x: null, y: scale.bottom}, line));\n\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n for (let j = segment.start; j <= segment.end; j++) {\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({points, options: {}});\n}\n\n/**\n * @param {Scale} scale\n * @param {number} index\n * @return {LineElement[]}\n */\nfunction getLinesBelow(scale, index) {\n const below = [];\n const metas = scale.getMatchingVisibleMetas('line');\n\n for (let i = 0; i < metas.length; i++) {\n const meta = metas[i];\n if (meta.index === index) {\n break;\n }\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n return below;\n}\n\n/**\n * @param {PointElement[]} points\n * @param {PointElement} sourcePoint\n * @param {LineElement[]} linesBelow\n */\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n for (let j = 0; j < linesBelow.length; j++) {\n const line = linesBelow[j];\n const {first, last, point} = findPoint(line, sourcePoint, 'x');\n\n if (!point || (first && last)) {\n continue;\n }\n if (first) {\n // First point of a segment -> need to add another point before this,\n postponed.unshift(point);\n } else {\n points.push(point);\n if (!last) {\n // In the middle of a segment, no need to add more points.\n break;\n }\n }\n }\n points.push(...postponed);\n}\n\n/**\n * @param {LineElement} line\n * @param {PointElement} sourcePoint\n * @param {string} property\n * @returns {{point?: PointElement, first?: boolean, last?: boolean}}\n */\nfunction findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\n }\n\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const lastValue = linePoints[segment.end][property];\n if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n return {first, last, point};\n}\n","import {TAU} from '../../helpers/index.js';\n\n// TODO: use elements.ArcElement instead\nexport class simpleArc {\n constructor(opts) {\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n\n pathSegment(ctx, bounds, opts) {\n const {x, y, radius} = this;\n bounds = bounds || {start: 0, end: TAU};\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n\n interpolate(point) {\n const {x, y, radius} = this;\n const angle = point.angle;\n return {\n x: x + Math.cos(angle) * radius,\n y: y + Math.sin(angle) * radius,\n angle\n };\n }\n}\n","import {isFinite} from '../../helpers/index.js';\nimport {_createBoundaryLine} from './filler.helper.js';\nimport {_getTargetPixel, _getTargetValue} from './filler.options.js';\nimport {_buildStackLine} from './filler.target.stack.js';\nimport {simpleArc} from './simpleArc.js';\n\n/**\n * @typedef { import('../../core/core.controller.js').default } Chart\n * @typedef { import('../../core/core.scale.js').default } Scale\n * @typedef { import('../../elements/element.point.js').default } PointElement\n */\n\nexport function _getTarget(source) {\n const {chart, fill, line} = source;\n\n if (isFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n\n if (fill === 'stack') {\n return _buildStackLine(source);\n }\n\n if (fill === 'shape') {\n return true;\n }\n\n const boundary = computeBoundary(source);\n\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n\n return _createBoundaryLine(boundary, line);\n}\n\n/**\n * @param {Chart} chart\n * @param {number} index\n */\nfunction getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\n\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\n\n\nfunction computeLinearBoundary(source) {\n const {scale = {}, fill} = source;\n const pixel = _getTargetPixel(fill, scale);\n\n if (isFinite(pixel)) {\n const horizontal = scale.isHorizontal();\n\n return {\n x: horizontal ? pixel : null,\n y: horizontal ? null : pixel\n };\n }\n\n return null;\n}\n\nfunction computeCircularBoundary(source) {\n const {scale, fill} = source;\n const options = scale.options;\n const length = scale.getLabels().length;\n const start = options.reverse ? scale.max : scale.min;\n const value = _getTargetValue(fill, scale, start);\n const target = [];\n\n if (options.grid.circular) {\n const center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n\n for (let i = 0; i < length; ++i) {\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\n\n","import {clipArea, unclipArea, getDatasetClipArea} from '../../helpers/index.js';\nimport {_findSegmentEnd, _getBounds, _segments} from './filler.segment.js';\nimport {_getTarget} from './filler.target.js';\n\nexport function _drawfill(ctx, source, area) {\n const target = _getTarget(source);\n const {chart, index, line, scale, axis} = source;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n const {above = color, below = color} = fillOption || {};\n const meta = chart.getDatasetMeta(index);\n const clip = getDatasetClipArea(chart, meta);\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {line, target, above, below, area, scale, axis, clip});\n unclipArea(ctx);\n }\n}\n\nfunction doFill(ctx, cfg) {\n const {line, target, above, below, area, scale, clip} = cfg;\n const property = line._loop ? 'angle' : cfg.axis;\n\n ctx.save();\n\n let fillColor = below;\n if (below !== above) {\n if (property === 'x') {\n clipVertical(ctx, target, area.top);\n fill(ctx, {line, target, color: above, scale, property, clip});\n ctx.restore();\n ctx.save();\n clipVertical(ctx, target, area.bottom);\n } else if (property === 'y') {\n clipHorizontal(ctx, target, area.left);\n fill(ctx, {line, target, color: below, scale, property, clip});\n ctx.restore();\n ctx.save();\n clipHorizontal(ctx, target, area.right);\n fillColor = above;\n }\n }\n fill(ctx, {line, target, color: fillColor, scale, property, clip});\n\n ctx.restore();\n}\n\nfunction clipVertical(ctx, target, clipY) {\n const {segments, points} = target;\n let first = true;\n let lineLoop = false;\n\n ctx.beginPath();\n for (const segment of segments) {\n const {start, end} = segment;\n const firstPoint = points[start];\n const lastPoint = points[_findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(firstPoint.x, clipY);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop});\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(lastPoint.x, clipY);\n }\n }\n\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\n\nfunction clipHorizontal(ctx, target, clipX) {\n const {segments, points} = target;\n let first = true;\n let lineLoop = false;\n\n ctx.beginPath();\n for (const segment of segments) {\n const {start, end} = segment;\n const firstPoint = points[start];\n const lastPoint = points[_findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(clipX, firstPoint.y);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop});\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(clipX, lastPoint.y);\n }\n }\n\n ctx.lineTo(clipX, target.first().y);\n ctx.closePath();\n ctx.clip();\n}\n\nfunction fill(ctx, cfg) {\n const {line, target, property, color, scale, clip} = cfg;\n const segments = _segments(line, target, property);\n\n for (const {source: src, target: tgt, start, end} of segments) {\n const {style: {backgroundColor = color} = {}} = src;\n const notShape = target !== true;\n\n ctx.save();\n ctx.fillStyle = backgroundColor;\n\n clipBounds(ctx, scale, clip, notShape && _getBounds(property, start, end));\n\n ctx.beginPath();\n\n const lineLoop = !!line.pathSegment(ctx, src);\n\n let loop;\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n\n const targetLoop = !!target.pathSegment(ctx, tgt, {move: lineLoop, reverse: true});\n loop = lineLoop && targetLoop;\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n\n ctx.restore();\n }\n}\n\nfunction clipBounds(ctx, scale, clip, bounds) {\n const chartArea = scale.chart.chartArea;\n const {property, start, end} = bounds || {};\n\n if (property === 'x' || property === 'y') {\n let left, top, right, bottom;\n\n if (property === 'x') {\n left = start;\n top = chartArea.top;\n right = end;\n bottom = chartArea.bottom;\n } else {\n left = chartArea.left;\n top = start;\n right = chartArea.right;\n bottom = end;\n }\n\n ctx.beginPath();\n\n if (clip) {\n left = Math.max(left, clip.left);\n right = Math.min(right, clip.right);\n top = Math.max(top, clip.top);\n bottom = Math.min(bottom, clip.bottom);\n }\n\n ctx.rect(left, top, right - left, bottom - top);\n ctx.clip();\n }\n}\n\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\n\n","/**\n * Plugin based on discussion from the following Chart.js issues:\n * @see https://github.com/chartjs/Chart.js/issues/2380#issuecomment-279961569\n * @see https://github.com/chartjs/Chart.js/issues/2440#issuecomment-256461897\n */\n\nimport LineElement from '../../elements/element.line.js';\nimport {_drawfill} from './filler.drawing.js';\nimport {_shouldApplyFill} from './filler.helper.js';\nimport {_decodeFill, _resolveTarget} from './filler.options.js';\n\nexport default {\n id: 'filler',\n\n afterDatasetsUpdate(chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n\n for (i = 0; i < count; ++i) {\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: _decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line,\n };\n }\n\n meta.$filler = source;\n sources.push(source);\n }\n\n for (i = 0; i < count; ++i) {\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\n }\n\n source.fill = _resolveTarget(sources, i, options.propagate);\n }\n },\n\n beforeDraw(chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n\n source.line.updateControlPoints(area, source.axis);\n if (draw && source.fill) {\n _drawfill(chart.ctx, source, area);\n }\n }\n },\n\n beforeDatasetsDraw(chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n\n const metasets = chart.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n\n if (_shouldApplyFill(source)) {\n _drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n\n beforeDatasetDraw(chart, args, options) {\n const source = args.meta.$filler;\n\n if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n\n _drawfill(chart.ctx, source, chart.chartArea);\n },\n\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\n","import defaults from '../core/core.defaults.js';\nimport Element from '../core/core.element.js';\nimport layouts from '../core/core.layouts.js';\nimport {addRoundedRectPath, drawPointLegend, renderText} from '../helpers/helpers.canvas.js';\nimport {\n _isBetween,\n callback as call,\n clipArea,\n getRtlAdapter,\n overrideTextDirection,\n restoreTextDirection,\n toFont,\n toPadding,\n unclipArea,\n valueOrDefault,\n} from '../helpers/index.js';\nimport {_alignStartEnd, _textX, _toLeftRightCenter} from '../helpers/helpers.extras.js';\nimport {toTRBLCorners} from '../helpers/helpers.options.js';\n\n/**\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n */\n\nconst getBoxSize = (labelOpts, fontSize) => {\n let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts;\n\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n }\n\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\n\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\n\nexport class Legend extends Element {\n\n /**\n\t * @param {{ ctx: any; options: any; chart: any; }} config\n\t */\n constructor(config) {\n super();\n\n this._added = false;\n\n // Contains hit boxes for each dataset (in dataset order)\n this.legendHitBoxes = [];\n\n /**\n \t\t * @private\n \t\t */\n this._hoveredItem = null;\n\n // Are we in doughnut mode which has a different data type\n this.doughnutMode = false;\n\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = call(labelOpts.generateLabels, [this.chart], this) || [];\n\n if (labelOpts.filter) {\n legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data));\n }\n\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n }\n\n if (this.options.reverse) {\n legendItems.reverse();\n }\n\n this.legendItems = legendItems;\n }\n\n fit() {\n const {options, ctx} = this;\n\n // The legend may not be displayed for a variety of reasons including\n // the fact that the defaults got set to `false`.\n // When the legend is not displayed, there are no guarantees that the options\n // are correctly formatted so we need to bail out as early as possible.\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const {boxWidth, itemHeight} = getBoxSize(labelOpts, fontSize);\n\n let width, height;\n\n ctx.font = labelFont.string;\n\n if (this.isHorizontal()) {\n width = this.maxWidth; // fill all the width\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight; // fill all the height\n width = this._fitCols(titleHeight, labelFont, boxWidth, itemHeight) + 10;\n }\n\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n\n /**\n\t * @private\n\t */\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxWidth, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n // Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one\n const lineWidths = this.lineWidths = [0];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n\n hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n\n return totalHeight;\n }\n\n _fitCols(titleHeight, labelFont, boxWidth, _itemHeight) {\n const {ctx, maxHeight, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n\n let left = 0;\n let col = 0;\n\n this.legendItems.forEach((legendItem, i) => {\n const {itemWidth, itemHeight} = calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight);\n\n // If too tall, go to new column\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({width: currentColWidth, height: currentColHeight}); // previous column size\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n\n // Store the hitbox width and height here. Final position will be updated in `draw`\n hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n\n // Get max width\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n\n totalWidth += currentColWidth;\n columnSizes.push({width: currentColWidth, height: currentColHeight}); // previous column size\n\n return totalWidth;\n }\n\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const {legendHitBoxes: hitboxes, options: {align, labels: {padding}, rtl}} = this;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes) {\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox of hitboxes) {\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox.top = top;\n hitbox.left += this.left + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n top += hitbox.height + padding;\n }\n }\n }\n\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n\n this._draw();\n\n unclipArea(ctx);\n }\n }\n\n /**\n\t * @private\n\t */\n _draw() {\n const {options: opts, columnSizes, lineWidths, ctx} = this;\n const {align, labels: labelOpts} = opts;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const {padding} = labelOpts;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n\n this.drawTitle();\n\n // Canvas setup\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n\n const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize);\n\n // current position\n const drawLegendBox = function(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n\n // Set the ctx for the box\n ctx.save();\n\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n\n if (labelOpts.usePointStyle) {\n // Recalculate x and y for drawPoint() because its expecting\n // x and y to be center of figure (instead of top left)\n const drawOptions = {\n radius: boxHeight * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n\n // Draw pointStyle as legend symbol\n drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n } else {\n // Draw box as legend symbol\n // Adjust position when boxHeight < fontSize (want it centered)\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n\n ctx.beginPath();\n\n if (Object.values(borderRadius).some(v => v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n\n ctx.restore();\n };\n\n const fillText = function(x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + (itemHeight / 2), labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n\n // Horizontal\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n\n overrideTextDirection(this.ctx, opts.textDirection);\n\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i) => {\n ctx.strokeStyle = legendItem.fontColor; // for strikethrough effect\n ctx.fillStyle = legendItem.fontColor; // render in correct colour\n\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n\n rtlHelper.setWidth(this.width);\n\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n\n const realX = rtlHelper.x(x);\n\n drawLegendBox(realX, y, legendItem);\n\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n\n // Fill the actual label\n fillText(rtlHelper.x(x), y, legendItem);\n\n if (isHorizontal) {\n cursor.x += width + padding;\n } else if (typeof legendItem.text !== 'string') {\n const fontLineHeight = labelFont.lineHeight;\n cursor.y += calculateLegendItemHeight(legendItem, fontLineHeight) + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n\n /**\n\t * @protected\n\t */\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n\n if (!titleOpts.display) {\n return;\n }\n\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n\n // These defaults are used when the legend is vertical.\n // When horizontal, they are computed below.\n let left = this.left;\n let maxWidth = this.width;\n\n if (this.isHorizontal()) {\n // Move left / right so that the title is above the legend lines\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n // Move down so that the title is above the legend stack in every alignment\n const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n\n // Now that we know the left edge of the inner legend box, compute the correct\n // X coordinate from the title alignment\n const x = _alignStartEnd(position, left, left + maxWidth);\n\n // Canvas setup\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n\n /**\n\t * @private\n\t */\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n\n /**\n\t * @private\n\t */\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n\n if (_isBetween(x, this.left, this.right)\n && _isBetween(y, this.top, this.bottom)) {\n // See if we are touching one of the dataset boxes\n lh = this.legendHitBoxes;\n for (i = 0; i < lh.length; ++i) {\n hitBox = lh[i];\n\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width)\n && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n // Touching an element\n return this.legendItems[i];\n }\n }\n }\n\n return null;\n }\n\n /**\n\t * Handle an event\n\t * @param {ChartEvent} e - The event to handle\n\t */\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n\n // Chart event already has relative position in it\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n\n if (e.type === 'mousemove' || e.type === 'mouseout') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n call(opts.onLeave, [e, previous, this], this);\n }\n\n this._hoveredItem = hoveredItem;\n\n if (hoveredItem && !sameItem) {\n call(opts.onHover, [e, hoveredItem, this], this);\n }\n } else if (hoveredItem) {\n call(opts.onClick, [e, hoveredItem, this], this);\n }\n }\n}\n\nfunction calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight) {\n const itemWidth = calculateItemWidth(legendItem, boxWidth, labelFont, ctx);\n const itemHeight = calculateItemHeight(_itemHeight, legendItem, labelFont.lineHeight);\n return {itemWidth, itemHeight};\n}\n\nfunction calculateItemWidth(legendItem, boxWidth, labelFont, ctx) {\n let legendItemText = legendItem.text;\n if (legendItemText && typeof legendItemText !== 'string') {\n legendItemText = legendItemText.reduce((a, b) => a.length > b.length ? a : b);\n }\n return boxWidth + (labelFont.size / 2) + ctx.measureText(legendItemText).width;\n}\n\nfunction calculateItemHeight(_itemHeight, legendItem, fontLineHeight) {\n let itemHeight = _itemHeight;\n if (typeof legendItem.text !== 'string') {\n itemHeight = calculateLegendItemHeight(legendItem, fontLineHeight);\n }\n return itemHeight;\n}\n\nfunction calculateLegendItemHeight(legendItem, fontLineHeight) {\n const labelHeight = legendItem.text ? legendItem.text.length : 0;\n return fontLineHeight * labelHeight;\n}\n\nfunction isListened(type, opts) {\n if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\n\nexport default {\n id: 'legend',\n\n /**\n\t * For tests\n\t * @private\n\t */\n _element: Legend,\n\n start(chart, _args, options) {\n const legend = chart.legend = new Legend({ctx: chart.ctx, options, chart});\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n\n stop(chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n\n // During the beforeUpdate step, the layout configuration needs to run\n // This ensures that if the legend position changes (via an option update)\n // the layout system respects the change. See https://github.com/chartjs/Chart.js/issues/7527\n beforeUpdate(chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n\n // The labels need to be built after datasets are updated to ensure that colors\n // and other styling are correct. See https://github.com/chartjs/Chart.js/issues/6968\n afterUpdate(chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n\n\n afterEvent(chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n\n // a callback that will handle\n onClick(e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n\n onHover: null,\n onLeave: null,\n\n labels: {\n color: (ctx) => ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n // Generates labels shown in the legend\n // Valid properties to return:\n // text : text to display\n // fillStyle : fill of coloured box\n // strokeStyle: stroke of coloured box\n // hidden : if this legend item refers to a hidden item\n // lineCap : cap style for line\n // lineDash\n // lineDashOffset :\n // lineJoin :\n // lineWidth :\n generateLabels(chart) {\n const datasets = chart.data.datasets;\n const {labels: {usePointStyle, pointStyle, textAlign, color, useBorderRadius, borderRadius}} = chart.legend.options;\n\n return chart._getSortedDatasetMetas().map((meta) => {\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: useBorderRadius && (borderRadius || style.borderRadius),\n\n // Below is extra data used for toggling the datasets\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n\n title: {\n color: (ctx) => ctx.chart.options.color,\n display: false,\n position: 'center',\n text: '',\n }\n },\n\n descriptors: {\n _scriptable: (name) => !name.startsWith('on'),\n labels: {\n _scriptable: (name) => !['generateLabels', 'filter', 'sort'].includes(name),\n }\n },\n};\n","import {Title} from './plugin.title.js';\nimport layouts from '../core/core.layouts.js';\n\nconst map = new WeakMap();\n\nexport default {\n id: 'subtitle',\n\n start(chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n\n stop(chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n\n beforeUpdate(chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal',\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500 // by default greater than legend (1000) and smaller than title (2000)\n },\n\n defaultRoutes: {\n color: 'color'\n },\n\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n","import Animations from '../core/core.animations.js';\nimport Element from '../core/core.element.js';\nimport {addRoundedRectPath} from '../helpers/helpers.canvas.js';\nimport {each, noop, isNullOrUndef, isArray, _elementsEqual, isObject} from '../helpers/helpers.core.js';\nimport {toFont, toPadding, toTRBLCorners} from '../helpers/helpers.options.js';\nimport {getRtlAdapter, overrideTextDirection, restoreTextDirection} from '../helpers/helpers.rtl.js';\nimport {distanceBetweenPoints, _limitValue} from '../helpers/helpers.math.js';\nimport {createContext, drawPoint} from '../helpers/index.js';\n\n/**\n * @typedef { import('../platform/platform.base.js').Chart } Chart\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef { import('../types/index.js').ActiveElement } ActiveElement\n * @typedef { import('../core/core.interaction.js').InteractionItem } InteractionItem\n */\n\nconst positioners = {\n /**\n\t * Average mode places the tooltip at the average position of the elements shown\n\t */\n average(items) {\n if (!items.length) {\n return false;\n }\n\n let i, len;\n let xSet = new Set();\n let y = 0;\n let count = 0;\n\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n xSet.add(pos.x);\n y += pos.y;\n ++count;\n }\n }\n\n // No visible items where found, return false so we don't have to divide by 0 which reduces in NaN\n if (count === 0 || xSet.size === 0) {\n return false;\n }\n\n const xAverage = [...xSet].reduce((a, b) => a + b) / xSet.size;\n\n return {\n x: xAverage,\n y: y / count\n };\n },\n\n /**\n\t * Gets the tooltip position nearest of the item nearest to the event position\n\t */\n nearest(items, eventPosition) {\n if (!items.length) {\n return false;\n }\n\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n\n return {\n x,\n y\n };\n }\n};\n\n// Helper to push or concat based on if the 2nd parameter is an array or not\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n // base = base.concat(toPush);\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n\n return base;\n}\n\n/**\n * Returns array of strings split by newline\n * @param {*} str - The value to split by newline.\n * @returns {string|string[]} value if newline present - Returned from String split() method\n * @function\n */\nfunction splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\n\n\n/**\n * Private helper to create a tooltip item model\n * @param {Chart} chart\n * @param {ActiveElement} item - {element, index, datasetIndex} to create the tooltip item for\n * @return new tooltip item\n */\nfunction createTooltipItem(chart, item) {\n const {element, datasetIndex, index} = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const {label, value} = controller.getLabelAndValue(index);\n\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\n\n/**\n * Get the size of the tooltip\n */\nfunction getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const {body, footer, title} = tooltip;\n const {boxWidth, boxHeight} = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n\n // Count of all lines in the body\n let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight\n\t\t\t+ (titleLineCount - 1) * options.titleSpacing\n\t\t\t+ options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n // Body lines may include some extra height depending on boxHeight\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight\n\t\t\t+ (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight\n\t\t\t+ (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop\n\t\t\t+ footerLineCount * footerFont.lineHeight\n\t\t\t+ (footerLineCount - 1) * options.footerSpacing;\n }\n\n // Title width\n let widthPadding = 0;\n const maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n\n ctx.save();\n\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n\n // Body width\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n\n // Body lines may include some extra width due to the color box\n widthPadding = options.displayColors ? (boxWidth + 2 + options.boxPadding) : 0;\n each(body, (bodyItem) => {\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n\n // Reset back to 0\n widthPadding = 0;\n\n // Footer width\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n\n ctx.restore();\n\n // Add padding\n width += padding.width;\n\n return {width, height};\n}\n\nfunction determineYAlign(chart, size) {\n const {y, height} = size;\n\n if (y < height / 2) {\n return 'top';\n } else if (y > (chart.height - height / 2)) {\n return 'bottom';\n }\n return 'center';\n}\n\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const {x, width} = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\n\nfunction determineXAlign(chart, options, size, yAlign) {\n const {x, width} = size;\n const {width: chartWidth, chartArea: {left, right}} = chart;\n let xAlign = 'center';\n\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n\n return xAlign;\n}\n\n/**\n * Helper to get the alignment of a tooltip given the size\n */\nfunction determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\n\nfunction alignX(size, xAlign) {\n let {x, width} = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= (width / 2);\n }\n return x;\n}\n\nfunction alignY(size, yAlign, paddingAndSize) {\n // eslint-disable-next-line prefer-const\n let {y, height} = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= (height / 2);\n }\n return y;\n}\n\n/**\n * Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment\n */\nfunction getBackgroundPoint(options, size, alignment, chart) {\n const {caretSize, caretPadding, cornerRadius} = options;\n const {xAlign, yAlign} = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\n\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n\n return align === 'center'\n ? tooltip.x + tooltip.width / 2\n : align === 'right'\n ? tooltip.x + tooltip.width - padding.right\n : tooltip.x + padding.left;\n}\n\n/**\n * Helper to build before and after body lines\n */\nfunction getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\n\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\n\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\n\nconst defaultCallbacks = {\n // Args are: (tooltipItems, data)\n beforeTitle: noop,\n title(tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n\n return '';\n },\n afterTitle: noop,\n\n // Args are: (tooltipItems, data)\n beforeBody: noop,\n\n // Args are: (tooltipItem, data)\n beforeLabel: noop,\n label(tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n\n let label = tooltipItem.dataset.label || '';\n\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0,\n };\n },\n labelTextColor() {\n return this.options.bodyColor;\n },\n labelPointStyle(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation,\n };\n },\n afterLabel: noop,\n\n // Args are: (tooltipItems, data)\n afterBody: noop,\n\n // Args are: (tooltipItems, data)\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n};\n\n/**\n * Invoke callback from object with context and arguments.\n * If callback returns `undefined`, then will be invoked default callback.\n * @param {Record} callbacks\n * @param {keyof typeof defaultCallbacks} name\n * @param {*} ctx\n * @param {*} arg\n * @returns {any}\n */\nfunction invokeCallbackWithFallback(callbacks, name, ctx, arg) {\n const result = callbacks[name].call(ctx, arg);\n\n if (typeof result === 'undefined') {\n return defaultCallbacks[name].call(ctx, arg);\n }\n\n return result;\n}\n\nexport class Tooltip extends Element {\n\n /**\n * @namespace Chart.Tooltip.positioners\n */\n static positioners = positioners;\n\n constructor(config) {\n super();\n\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n // TODO: V4, make this private, rename to `_labelStyles`, and combine with `labelPointStyles`\n // and `labelTextColors` to create a single variable\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n\n /**\n\t * @private\n\t */\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n\n if (cached) {\n return cached;\n }\n\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n\n return animations;\n }\n\n /**\n\t * @protected\n\t */\n getContext() {\n return this.$context ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n\n getTitle(context, options) {\n const {callbacks} = options;\n\n const beforeTitle = invokeCallbackWithFallback(callbacks, 'beforeTitle', this, context);\n const title = invokeCallbackWithFallback(callbacks, 'title', this, context);\n const afterTitle = invokeCallbackWithFallback(callbacks, 'afterTitle', this, context);\n\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n\n return lines;\n }\n\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(\n invokeCallbackWithFallback(options.callbacks, 'beforeBody', this, tooltipItems)\n );\n }\n\n getBody(tooltipItems, options) {\n const {callbacks} = options;\n const bodyItems = [];\n\n each(tooltipItems, (context) => {\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(invokeCallbackWithFallback(scoped, 'beforeLabel', this, context)));\n pushOrConcat(bodyItem.lines, invokeCallbackWithFallback(scoped, 'label', this, context));\n pushOrConcat(bodyItem.after, splitNewlines(invokeCallbackWithFallback(scoped, 'afterLabel', this, context)));\n\n bodyItems.push(bodyItem);\n });\n\n return bodyItems;\n }\n\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(\n invokeCallbackWithFallback(options.callbacks, 'afterBody', this, tooltipItems)\n );\n }\n\n // Get the footer and beforeFooter and afterFooter lines\n getFooter(tooltipItems, options) {\n const {callbacks} = options;\n\n const beforeFooter = invokeCallbackWithFallback(callbacks, 'beforeFooter', this, tooltipItems);\n const footer = invokeCallbackWithFallback(callbacks, 'footer', this, tooltipItems);\n const afterFooter = invokeCallbackWithFallback(callbacks, 'afterFooter', this, tooltipItems);\n\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n\n return lines;\n }\n\n /**\n\t * @private\n\t */\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n\n for (i = 0, len = active.length; i < len; ++i) {\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n\n // If the user provided a filter function, use it to modify the tooltip items\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n }\n\n // If the user provided a sorting function, use it to modify the tooltip items\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n }\n\n // Determine colors for boxes\n each(tooltipItems, (context) => {\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(invokeCallbackWithFallback(scoped, 'labelColor', this, context));\n labelPointStyles.push(invokeCallbackWithFallback(scoped, 'labelPointStyle', this, context));\n labelTextColors.push(invokeCallbackWithFallback(scoped, 'labelTextColor', this, context));\n });\n\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n\n if (changed && options.external) {\n options.external.call(this, {chart: this.chart, tooltip: this, replay});\n }\n }\n\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n\n getCaretPosition(tooltipPoint, size, options) {\n const {xAlign, yAlign} = this;\n const {caretSize, cornerRadius} = options;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n const {x: ptX, y: ptY} = tooltipPoint;\n const {width, height} = size;\n let x1, x2, x3, y1, y2, y3;\n\n if (yAlign === 'center') {\n y2 = ptY + (height / 2);\n\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n\n // Left draws bottom -> top, this y1 is on the bottom\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n\n // Right draws top -> bottom, thus y1 is on the top\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + (caretSize);\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n\n // Top draws left -> right, thus x1 is on the left\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n\n // Bottom draws right -> left, thus x1 is on the right\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {x1, x2, x3, y1, y2, y3};\n }\n\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n\n pt.x = getAlignedX(this, options.titleAlign, options);\n\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n\n for (i = 0; i < length; ++i) {\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing; // Line Height and spacing\n\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing\n }\n }\n }\n }\n\n /**\n\t * @private\n\t */\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColor = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const {boxHeight, boxWidth} = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2, // fit the circle in the box\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n // Recalculate x and y for drawPoint() because its expecting\n // x and y to be center of figure (instead of top left)\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n\n // Fill the point with white so that colours merge nicely if the opacity is < 1\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n\n // Draw the point\n ctx.strokeStyle = labelColor.borderColor;\n ctx.fillStyle = labelColor.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n // Border\n ctx.lineWidth = isObject(labelColor.borderWidth) ? Math.max(...Object.values(labelColor.borderWidth)) : (labelColor.borderWidth || 1); // TODO, v4 remove fallback\n ctx.strokeStyle = labelColor.borderColor;\n ctx.setLineDash(labelColor.borderDash || []);\n ctx.lineDashOffset = labelColor.borderDashOffset || 0;\n\n // Fill a white rect so that colours merge nicely if the opacity is < 1\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - 2);\n const borderRadius = toTRBLCorners(labelColor.borderRadius);\n\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n ctx.fill();\n ctx.stroke();\n\n // Inner square\n ctx.fillStyle = labelColor.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n // Normal rect\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n // Inner square\n ctx.fillStyle = labelColor.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n\n // restore fillStyle\n ctx.fillStyle = this.labelTextColors[i];\n }\n\n drawBody(pt, ctx, options) {\n const {body} = this;\n const {bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n\n const fillLineOfText = function(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n\n // Before body lines\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right'\n ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n : 0;\n\n // Draw body lines now\n for (i = 0, ilen = body.length; i < ilen; ++i) {\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n\n lines = bodyItem.lines;\n // Draw Legend-like boxes if needed\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n\n for (j = 0, jlen = lines.length; j < jlen; ++j) {\n fillLineOfText(lines[j]);\n // Reset for any lines that don't include colorbox\n bodyLineHeight = bodyFont.lineHeight;\n }\n\n each(bodyItem.after, fillLineOfText);\n }\n\n // Reset back to 0 for after body\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n\n // After body lines\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing; // Remove last body spacing\n }\n\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n\n footerFont = toFont(options.footerFont);\n\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n\n for (i = 0; i < length; ++i) {\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n\n drawBackground(pt, ctx, tooltipSize, options) {\n const {xAlign, yAlign} = this;\n const {x, y} = pt;\n const {width, height} = tooltipSize;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(options.cornerRadius);\n\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n\n ctx.fill();\n\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n\n /**\n\t * Update x/y animation targets when _active elements are animating too\n\t * @private\n\t */\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n\n /**\n * Determine if the tooltip will draw anything\n * @returns {boolean} True if the tooltip will render\n */\n _willRender() {\n return !!this.opacity;\n }\n\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n\n if (!opacity) {\n return;\n }\n\n this._updateAnimationTarget(options);\n\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n\n // IE11/Edge does not like very small opacities, so snap to 0\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n\n const padding = toPadding(options.padding);\n\n // Truthy/falsey value for empty tooltip\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n\n // Draw Background\n this.drawBackground(pt, ctx, tooltipSize, options);\n\n overrideTextDirection(ctx, options.textDirection);\n\n pt.y += padding.top;\n\n // Titles\n this.drawTitle(pt, ctx, options);\n\n // Body\n this.drawBody(pt, ctx, options);\n\n // Footer\n this.drawFooter(pt, ctx, options);\n\n restoreTextDirection(ctx, options.textDirection);\n\n ctx.restore();\n }\n }\n\n /**\n\t * Get active elements in the tooltip\n\t * @returns {Array} Array of elements that are active in the tooltip\n\t */\n getActiveElements() {\n return this._active || [];\n }\n\n /**\n\t * Set active elements in the tooltip\n\t * @param {array} activeElements Array of active datasetIndex/index pairs.\n\t * @param {object} eventPosition Synthetic event position used in positioning\n\t */\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.chart.getDatasetMeta(datasetIndex);\n\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n\n /**\n\t * Handle an event\n\t * @param {ChartEvent} e - The event to handle\n\t * @param {boolean} [replay] - This is a replayed event (from update)\n\t * @param {boolean} [inChartArea] - The event is inside chartArea\n\t * @returns {boolean} true if the tooltip changed\n\t */\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n\n // When there are multiple items shown, but the tooltip position is nearest mode\n // an update may need to be made because our position may have changed even though\n // the items are the same as before.\n const positionChanged = this._positionChanged(active, e);\n\n // Remember Last Actives\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n\n // Only handle target event on tooltip change\n if (changed) {\n this._active = active;\n\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n\n this.update(true, replay);\n }\n }\n\n return changed;\n }\n\n /**\n\t * Helper for determining the active elements for event\n\t * @param {ChartEvent} e - The event to handle\n\t * @param {InteractionItem[]} lastActive - Previously active elements\n\t * @param {boolean} [replay] - This is a replayed event (from update)\n\t * @param {boolean} [inChartArea] - The event is inside chartArea\n\t * @returns {InteractionItem[]} - Active elements\n\t * @private\n\t */\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n\n if (e.type === 'mouseout') {\n return [];\n }\n\n if (!inChartArea) {\n // Let user control the active elements outside chartArea. Eg. using Legend.\n // But make sure that active elements are still valid.\n return lastActive.filter(i =>\n this.chart.data.datasets[i.datasetIndex] &&\n this.chart.getDatasetMeta(i.datasetIndex).controller.getParsed(i.index) !== undefined\n );\n }\n\n // Find Active Elements for tooltips\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n\n if (options.reverse) {\n active.reverse();\n }\n\n return active;\n }\n\n /**\n\t * Determine if the active elements + event combination changes the\n\t * tooltip position\n\t * @param {array} active - Active elements\n\t * @param {ChartEvent} e - Event that triggered the position change\n\t * @returns {boolean} True if the position has changed\n\t */\n _positionChanged(active, e) {\n const {caretX, caretY, options} = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\n\nexport default {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n\n afterInit(chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({chart, options});\n }\n },\n\n beforeUpdate(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n\n reset(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n\n afterDraw(chart) {\n const tooltip = chart.tooltip;\n\n if (tooltip && tooltip._willRender()) {\n const args = {\n tooltip\n };\n\n if (chart.notifyPlugins('beforeTooltipDraw', {...args, cancelable: true}) === false) {\n return;\n }\n\n tooltip.draw(chart.ctx);\n\n chart.notifyPlugins('afterTooltipDraw', args);\n }\n },\n\n afterEvent(chart, args) {\n if (chart.tooltip) {\n // If the event is replayed from `update`, we should evaluate with the final positions.\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n // notify chart about the change, so it will render\n args.changed = true;\n }\n }\n },\n\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold',\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {\n },\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold',\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts) => opts.bodyFont.size,\n boxWidth: (ctx, opts) => opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart',\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY'],\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: defaultCallbacks\n },\n\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n\n descriptors: {\n _scriptable: (name) => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false,\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n\n // Resolve additionally from `interaction` options and defaults.\n additionalOptionScopes: ['interaction']\n};\n","import Scale from '../core/core.scale.js';\nimport {isNullOrUndef, valueOrDefault, _limitValue} from '../helpers/index.js';\n\nconst addIfString = (labels, raw, index, addedLabels) => {\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({index, label: raw});\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\n\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\n\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\n\nfunction _getLabelForValue(value) {\n const labels = this.getLabels();\n\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n}\n\nexport default class CategoryScale extends Scale {\n\n static id = 'category';\n\n /**\n * @type {any}\n */\n static defaults = {\n ticks: {\n callback: _getLabelForValue\n }\n };\n\n constructor(cfg) {\n super(cfg);\n\n /** @type {number} */\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const {index, label} of added) {\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index\n : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n\n determineDataLimits() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this.getMinMax(true);\n\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n\n this.min = min;\n this.max = max;\n }\n\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n\n // If we are viewing some subset of labels, slice the original array\n labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1);\n\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n\n for (let value = min; value <= max; value++) {\n ticks.push({value});\n }\n return ticks;\n }\n\n getLabelForValue(value) {\n return _getLabelForValue.call(this, value);\n }\n\n /**\n\t * @protected\n\t */\n configure() {\n super.configure();\n\n if (!this.isHorizontal()) {\n // For backward compatibility, vertical category scale reverse is inverted.\n this._reversePixels = !this._reversePixels;\n }\n }\n\n // Used to get data value locations. Value can either be an index or a numerical value\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n\n // Must override base implementation because it calls getPixelForValue\n // and category scale can have duplicate values\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n\n getBasePixel() {\n return this.bottom;\n }\n}\n","import {isNullOrUndef} from '../helpers/helpers.core.js';\nimport {almostEquals, almostWhole, niceNum, _decimalPlaces, _setMinAndMaxByKey, sign, toRadians} from '../helpers/helpers.math.js';\nimport Scale from '../core/core.scale.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\n\n/**\n * Generate a set of linear ticks for an axis\n * 1. If generationOptions.min, generationOptions.max, and generationOptions.step are defined:\n * if (max - min) / step is an integer, ticks are generated as [min, min + step, ..., max]\n * Note that the generationOptions.maxCount setting is respected in this scenario\n *\n * 2. If generationOptions.min, generationOptions.max, and generationOptions.count is defined\n * spacing = (max - min) / count\n * Ticks are generated as [min, min + spacing, ..., max]\n *\n * 3. If generationOptions.count is defined\n * spacing = (niceMax - niceMin) / count\n *\n * 4. Compute optimal spacing of ticks using niceNum algorithm\n *\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {object[]} array of tick objects\n */\nfunction generateTicks(generationOptions, dataRange) {\n const ticks = [];\n // To get a \"nice\" value for the tick spacing, we will use the appropriately named\n // \"nice number\" algorithm. See https://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks\n // for details.\n\n const MIN_SPACING = 1e-14;\n const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const {min: rmin, max: rmax} = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n\n // Beyond MIN_SPACING floating point numbers being to lose precision\n // such that we can't do the math necessary to generate ticks\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [{value: rmin}, {value: rmax}];\n }\n\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n // If the calculated num of spaces exceeds maxNumSpaces, recalculate it\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n\n if (!isNullOrUndef(precision)) {\n // If the user specified a precision, round to that number of decimal places\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n // Case 1: If min, max and stepSize are set and they make an evenly spaced scale use it.\n // spacing = step;\n // numSpaces = (max - min) / spacing;\n // Note that we round here to handle the case where almostWhole translated an FP error\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n // Cases 2 & 3, we have a count specified. Handle optional user defined edges to the range.\n // Sometimes these are no-ops, but it makes the code a lot clearer\n // and when a user defined range is specified, we want the correct ticks\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n // Case 4\n numSpaces = (niceMax - niceMin) / spacing;\n\n // If very close to our rounded value, use it.\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n\n // The spacing will have changed in cases 1, 2, and 3 so the factor cannot be computed\n // until this point\n const decimalPlaces = Math.max(\n _decimalPlaces(spacing),\n _decimalPlaces(niceMin)\n );\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({value: min});\n\n if (niceMin < min) {\n j++; // Skip niceMin\n }\n // If the next nice tick is close to min, skip it\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n\n for (; j < numSpaces; ++j) {\n const tickValue = Math.round((niceMin + j * spacing) * factor) / factor;\n if (maxDefined && tickValue > max) {\n break;\n }\n ticks.push({value: tickValue});\n }\n\n if (maxDefined && includeBounds && niceMax !== max) {\n // If the previous tick is too close to max, replace it with max, else add max\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({value: max});\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({value: niceMax});\n }\n\n return ticks;\n}\n\nfunction relativeLabelSize(value, minSpacing, {horizontal, minRotation}) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\n\nexport default class LinearScaleBase extends Scale {\n\n constructor(cfg) {\n super(cfg);\n\n /** @type {number} */\n this.start = undefined;\n /** @type {number} */\n this.end = undefined;\n /** @type {number} */\n this._startValue = undefined;\n /** @type {number} */\n this._endValue = undefined;\n this._valueRange = 0;\n }\n\n parse(raw, index) { // eslint-disable-line no-unused-vars\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n\n return +raw;\n }\n\n handleTickRangeOptions() {\n const {beginAtZero} = this.options;\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this;\n\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n\n if (min === max) {\n let offset = max === 0 ? 1 : Math.abs(max * 0.05);\n\n setMax(max + offset);\n\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n\n getTickLimit() {\n const tickOpts = this.options.ticks;\n // eslint-disable-next-line prefer-const\n let {maxTicksLimit, stepSize} = tickOpts;\n let maxTicks;\n\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n\n return maxTicks;\n }\n\n /**\n\t * @protected\n\t */\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n\n // Figure out what the max number of ticks we can support it is based on the size of\n // the axis area. For now, we say that the minimum tick spacing in pixels must be 40\n // We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n // the graph. Make sure we always have at least 2 ticks\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks(numericGeneratorOptions, dataRange);\n\n // At this point, we need to update our max and min given the tick values,\n // since we probably have expanded the range of the scale\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n\n if (opts.reverse) {\n ticks.reverse();\n\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n\n return ticks;\n }\n\n /**\n\t * @protected\n\t */\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n\n super.configure();\n\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\n","import {isFinite} from '../helpers/helpers.core.js';\nimport LinearScaleBase from './scale.linearbase.js';\nimport Ticks from '../core/core.ticks.js';\nimport {toRadians} from '../helpers/index.js';\n\nexport default class LinearScale extends LinearScaleBase {\n\n static id = 'linear';\n\n /**\n * @type {any}\n */\n static defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n };\n\n\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n\n this.min = isFinite(min) ? min : 0;\n this.max = isFinite(max) ? max : 1;\n\n // Common base implementation to handle min, max, beginAtZero\n this.handleTickRangeOptions();\n }\n\n /**\n\t * Returns the maximum number of ticks based on the scale dimension\n\t * @protected\n \t */\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n\n // Utils\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\n","import {finiteOrDefault, isFinite} from '../helpers/helpers.core.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\nimport {_setMinAndMaxByKey, log10} from '../helpers/helpers.math.js';\nimport Scale from '../core/core.scale.js';\nimport LinearScaleBase from './scale.linearbase.js';\nimport Ticks from '../core/core.ticks.js';\n\nconst log10Floor = v => Math.floor(log10(v));\nconst changeExponent = (v, m) => Math.pow(10, log10Floor(v) + m);\n\nfunction isMajor(tickVal) {\n const remain = tickVal / (Math.pow(10, log10Floor(tickVal)));\n return remain === 1;\n}\n\nfunction steps(min, max, rangeExp) {\n const rangeStep = Math.pow(10, rangeExp);\n const start = Math.floor(min / rangeStep);\n const end = Math.ceil(max / rangeStep);\n return end - start;\n}\n\nfunction startExp(min, max) {\n const range = max - min;\n let rangeExp = log10Floor(range);\n while (steps(min, max, rangeExp) > 10) {\n rangeExp++;\n }\n while (steps(min, max, rangeExp) < 10) {\n rangeExp--;\n }\n return Math.min(rangeExp, log10Floor(min));\n}\n\n\n/**\n * Generate a set of logarithmic ticks\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {object[]} array of tick objects\n */\nfunction generateTicks(generationOptions, {min, max}) {\n min = finiteOrDefault(generationOptions.min, min);\n const ticks = [];\n const minExp = log10Floor(min);\n let exp = startExp(min, max);\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n const stepSize = Math.pow(10, exp);\n const base = minExp > exp ? Math.pow(10, minExp) : 0;\n const start = Math.round((min - base) * precision) / precision;\n const offset = Math.floor((min - base) / stepSize / 10) * stepSize * 10;\n let significand = Math.floor((start - offset) / Math.pow(10, exp));\n let value = finiteOrDefault(generationOptions.min, Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision);\n while (value < max) {\n ticks.push({value, major: isMajor(value), significand});\n if (significand >= 10) {\n significand = significand < 15 ? 15 : 20;\n } else {\n significand++;\n }\n if (significand >= 20) {\n exp++;\n significand = 2;\n precision = exp >= 0 ? 1 : precision;\n }\n value = Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision;\n }\n const lastTick = finiteOrDefault(generationOptions.max, value);\n ticks.push({value: lastTick, major: isMajor(lastTick), significand});\n\n return ticks;\n}\n\nexport default class LogarithmicScale extends Scale {\n\n static id = 'logarithmic';\n\n /**\n * @type {any}\n */\n static defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n };\n\n\n constructor(cfg) {\n super(cfg);\n\n /** @type {number} */\n this.start = undefined;\n /** @type {number} */\n this.end = undefined;\n /** @type {number} */\n this._startValue = undefined;\n this._valueRange = 0;\n }\n\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isFinite(value) && value > 0 ? value : null;\n }\n\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n\n this.min = isFinite(min) ? Math.max(0, min) : null;\n this.max = isFinite(max) ? Math.max(0, max) : null;\n\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n\n // if data has `0` in it or `beginAtZero` is true, min (non zero) value is at bottom\n // of scale, and it does not equal suggestedMin, lower the min bound by one exp.\n if (this._zero && this.min !== this._suggestedMin && !isFinite(this._userMin)) {\n this.min = min === changeExponent(this.min, 0) ? changeExponent(this.min, -1) : changeExponent(this.min, 0);\n }\n\n this.handleTickRangeOptions();\n }\n\n handleTickRangeOptions() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n\n if (min === max) {\n if (min <= 0) { // includes null\n setMin(1);\n setMax(10);\n } else {\n setMin(changeExponent(min, -1));\n setMax(changeExponent(max, +1));\n }\n }\n if (min <= 0) {\n setMin(changeExponent(max, -1));\n }\n if (max <= 0) {\n\n setMax(changeExponent(min, +1));\n }\n\n this.min = min;\n this.max = max;\n }\n\n buildTicks() {\n const opts = this.options;\n\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n\n // At this point, we need to update our max and min given the tick values,\n // since we probably have expanded the range of the scale\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n\n if (opts.reverse) {\n ticks.reverse();\n\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n\n return ticks;\n }\n\n /**\n\t * @param {number} value\n\t * @return {string}\n\t */\n getLabelForValue(value) {\n return value === undefined\n ? '0'\n : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n\n /**\n\t * @protected\n\t */\n configure() {\n const start = this.min;\n\n super.configure();\n\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min\n ? 0\n : (log10(value) - this._startValue) / this._valueRange);\n }\n\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\n","import defaults from '../core/core.defaults.js';\nimport {_longestText, addRoundedRectPath, renderText, _isPointInArea} from '../helpers/helpers.canvas.js';\nimport {HALF_PI, TAU, toDegrees, toRadians, _normalizeAngle, PI} from '../helpers/helpers.math.js';\nimport LinearScaleBase from './scale.linearbase.js';\nimport Ticks from '../core/core.ticks.js';\nimport {valueOrDefault, isArray, isFinite, callback as callCallback, isNullOrUndef} from '../helpers/helpers.core.js';\nimport {createContext, toFont, toPadding, toTRBLCorners} from '../helpers/helpers.options.js';\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\n\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [label];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\n\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - (size / 2),\n end: pos + (size / 2)\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n\n return {\n start: pos,\n end: pos + size\n };\n}\n\n/**\n * Helper function to fit a radial linear scale with point labels\n */\nfunction fitWithPointLabels(scale) {\n\n // Right, this is really confusing and there is a lot of maths going on here\n // The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9\n //\n // Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif\n //\n // Solution:\n //\n // We assume the radius of the polygon is half the size of the canvas at first\n // at each index we check if the text overlaps.\n //\n // Where it does, we store that angle and that index.\n //\n // After finding the largest index and angle we calculate how much we need to remove\n // from the shape radius to move the point inwards by that x.\n //\n // We average the left and right distances to get the maximum shape radius that can fit in the box\n // along with labels.\n //\n // Once we have that, we can find the centre point for the chart, by taking the x text protrusion\n // on each side, removing that from the size, halving it and adding the left x protrusion width.\n //\n // This will mean we have a shape fitted to the canvas, as large as it can be with the labels\n // and position it in the most space efficient manner\n //\n // https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif\n\n // Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.\n // Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n\n for (let i = 0; i < valueCount; i++) {\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n\n scale.setCenterPoint(\n orig.l - limits.l,\n limits.r - orig.r,\n orig.t - limits.t,\n limits.b - orig.b\n );\n\n // Now that text size is determined, compute the full positions\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\n\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\n\nfunction createPointLabelItem(scale, index, itemOpts) {\n const outerDistance = scale.drawingArea;\n const {extra, additionalAngle, padding, size} = itemOpts;\n const pointLabelPosition = scale.getPointPosition(index, outerDistance + extra + padding, additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n return {\n // if to draw or overlapped\n visible: true,\n\n // Text position\n x: pointLabelPosition.x,\n y,\n\n // Text rendering data\n textAlign,\n\n // Bounding box\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n };\n}\n\nfunction isNotOverlapped(item, area) {\n if (!area) {\n return true;\n }\n const {left, top, right, bottom} = item;\n const apexesInArea = _isPointInArea({x: left, y: top}, area) || _isPointInArea({x: left, y: bottom}, area) ||\n _isPointInArea({x: right, y: top}, area) || _isPointInArea({x: right, y: bottom}, area);\n return !apexesInArea;\n}\n\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const {centerPointLabels, display} = opts.pointLabels;\n const itemOpts = {\n extra: getTickBackdropHeight(opts) / 2,\n additionalAngle: centerPointLabels ? PI / valueCount : 0\n };\n let area;\n\n for (let i = 0; i < valueCount; i++) {\n itemOpts.padding = padding[i];\n itemOpts.size = labelSizes[i];\n\n const item = createPointLabelItem(scale, i, itemOpts);\n items.push(item);\n if (display === 'auto') {\n item.visible = isNotOverlapped(item, area);\n if (item.visible) {\n area = item;\n }\n }\n }\n return items;\n}\n\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n\n return 'right';\n}\n\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= (w / 2);\n }\n return x;\n}\n\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= (h / 2);\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\n\nfunction drawPointLabelBox(ctx, opts, item) {\n const {left, top, right, bottom} = item;\n const {backdropColor} = opts;\n\n if (!isNullOrUndef(backdropColor)) {\n const borderRadius = toTRBLCorners(opts.borderRadius);\n const padding = toPadding(opts.backdropPadding);\n ctx.fillStyle = backdropColor;\n\n const backdropLeft = left - padding.left;\n const backdropTop = top - padding.top;\n const backdropWidth = right - left + padding.width;\n const backdropHeight = bottom - top + padding.height;\n\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: backdropLeft,\n y: backdropTop,\n w: backdropWidth,\n h: backdropHeight,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n }\n }\n}\n\nfunction drawPointLabels(scale, labelCount) {\n const {ctx, options: {pointLabels}} = scale;\n\n for (let i = labelCount - 1; i >= 0; i--) {\n const item = scale._pointLabelItems[i];\n if (!item.visible) {\n // overlapping\n continue;\n }\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n drawPointLabelBox(ctx, optsAtIndex, item);\n const plFont = toFont(optsAtIndex.font);\n const {x, y, textAlign} = item;\n\n renderText(\n ctx,\n scale._pointLabels[i],\n x,\n y + (plFont.lineHeight / 2),\n plFont,\n {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n }\n );\n }\n}\n\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const {ctx} = scale;\n if (circular) {\n // Draw circular arcs between the points\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n // Draw straight lines connecting each index\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n\n for (let i = 1; i < labelCount; i++) {\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\n\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount, borderOpts) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n\n const {color, lineWidth} = gridLineOpts;\n\n if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) {\n return;\n }\n\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(borderOpts.dash || []);\n ctx.lineDashOffset = borderOpts.dashOffset;\n\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\n\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\n\nexport default class RadialLinearScale extends LinearScaleBase {\n\n static id = 'radialLinear';\n\n /**\n * @type {any}\n */\n static defaults = {\n display: true,\n\n // Boolean - Whether to animate scaling the chart from the centre\n animate: true,\n position: 'chartArea',\n\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n\n grid: {\n circular: false\n },\n\n startAngle: 0,\n\n // label settings\n ticks: {\n // Boolean - Show a backdrop to the scale label\n showLabelBackdrop: true,\n\n callback: Ticks.formatters.numeric\n },\n\n pointLabels: {\n backdropColor: undefined,\n\n // Number - The backdrop padding above & below the label in pixels\n backdropPadding: 2,\n\n // Boolean - if true, show point labels\n display: true,\n\n // Number - Point label font size in pixels\n font: {\n size: 10\n },\n\n // Function - Used to convert point labels\n callback(label) {\n return label;\n },\n\n // Number - Additionl padding between scale and pointLabel\n padding: 5,\n\n // Boolean - if true, center point labels to slices in polar chart\n centerPointLabels: false\n }\n };\n\n static defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n };\n\n static descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n };\n\n constructor(cfg) {\n super(cfg);\n\n /** @type {number} */\n this.xCenter = undefined;\n /** @type {number} */\n this.yCenter = undefined;\n /** @type {number} */\n this.drawingArea = undefined;\n /** @type {string[]} */\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n\n setDimensions() {\n // Set the unconstrained dimension before label rotation\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n\n determineDataLimits() {\n const {min, max} = this.getMinMax(false);\n\n this.min = isFinite(min) && !isNaN(min) ? min : 0;\n this.max = isFinite(max) && !isNaN(max) ? max : 0;\n\n // Common base implementation to handle min, max, beginAtZero\n this.handleTickRangeOptions();\n }\n\n /**\n\t * Returns the maximum number of ticks based on the scale dimension\n\t * @protected\n\t */\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n\n // Point labels\n this._pointLabels = this.getLabels()\n .map((value, index) => {\n const label = callCallback(this.options.pointLabels.callback, [value, index], this);\n return label || label === 0 ? label : '';\n })\n .filter((v, i) => this.chart.getDataVisibility(i));\n }\n\n fit() {\n const opts = this.options;\n\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n\n // Take into account half font size + the yPadding of the top value\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n\n getPointLabelPosition(index) {\n const {left, top, right, bottom} = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom,\n };\n }\n\n /**\n\t * @protected\n\t */\n drawBackground() {\n const {backgroundColor, grid: {circular}} = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n\n /**\n\t * @protected\n\t */\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const {angleLines, grid, border} = opts;\n const labelCount = this._pointLabels.length;\n\n let i, offset, position;\n\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n\n if (grid.display) {\n this.ticks.forEach((tick, index) => {\n if (index !== 0 || (index === 0 && this.min < 0)) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const context = this.getContext(index);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n\n drawRadiusLine(this, optsAtIndex, offset, labelCount, optsAtIndexBorder);\n }\n });\n }\n\n if (angleLines.display) {\n ctx.save();\n\n for (i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const {color, lineWidth} = optsAtIndex;\n\n if (!lineWidth || !color) {\n continue;\n }\n\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n\n offset = this.getDistanceFromCenterForValue(opts.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n\n ctx.restore();\n }\n }\n\n /**\n\t * @protected\n\t */\n drawBorder() {}\n\n /**\n\t * @protected\n\t */\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n\n if (!tickOpts.display) {\n return;\n }\n\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n\n this.ticks.forEach((tick, index) => {\n if ((index === 0 && this.min >= 0) && !opts.reverse) {\n return;\n }\n\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(\n -width / 2 - padding.left,\n -offset - tickFont.size / 2 - padding.top,\n width + padding.width,\n tickFont.size + padding.height\n );\n }\n\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color,\n strokeColor: optsAtIndex.textStrokeColor,\n strokeWidth: optsAtIndex.textStrokeWidth,\n });\n });\n\n ctx.restore();\n }\n\n /**\n\t * @protected\n\t */\n drawTitle() {}\n}\n","import adapters from '../core/core.adapters.js';\nimport {callback as call, isFinite, isNullOrUndef, mergeIf, valueOrDefault} from '../helpers/helpers.core.js';\nimport {toRadians, isNumber, _limitValue} from '../helpers/helpers.math.js';\nimport Scale from '../core/core.scale.js';\nimport {_arrayUnique, _filterBetween, _lookup} from '../helpers/helpers.collection.js';\n\n/**\n * @typedef { import('../core/core.adapters.js').TimeUnit } Unit\n * @typedef {{common: boolean, size: number, steps?: number}} Interval\n * @typedef { import('../core/core.adapters.js').DateAdapter } DateAdapter\n */\n\n/**\n * @type {Object}\n */\nconst INTERVALS = {\n millisecond: {common: true, size: 1, steps: 1000},\n second: {common: true, size: 1000, steps: 60},\n minute: {common: true, size: 60000, steps: 60},\n hour: {common: true, size: 3600000, steps: 24},\n day: {common: true, size: 86400000, steps: 30},\n week: {common: false, size: 604800000, steps: 4},\n month: {common: true, size: 2.628e9, steps: 12},\n quarter: {common: false, size: 7.884e9, steps: 4},\n year: {common: true, size: 3.154e10}\n};\n\n/**\n * @type {Unit[]}\n */\nconst UNITS = /** @type Unit[] */ /* #__PURE__ */ (Object.keys(INTERVALS));\n\n/**\n * @param {number} a\n * @param {number} b\n */\nfunction sorter(a, b) {\n return a - b;\n}\n\n/**\n * @param {TimeScale} scale\n * @param {*} input\n * @return {number}\n */\nfunction parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n\n const adapter = scale._adapter;\n const {parser, round, isoWeekday} = scale._parseOpts;\n let value = input;\n\n if (typeof parser === 'function') {\n value = parser(value);\n }\n\n // Only parse if it's not a timestamp already\n if (!isFinite(value)) {\n value = typeof parser === 'string'\n ? adapter.parse(value, parser)\n : adapter.parse(value);\n }\n\n if (value === null) {\n return null;\n }\n\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true)\n ? adapter.startOf(value, 'isoWeek', isoWeekday)\n : adapter.startOf(value, round);\n }\n\n return +value;\n}\n\n/**\n * Figures out what unit results in an appropriate number of auto-generated ticks\n * @param {Unit} minUnit\n * @param {number} min\n * @param {number} max\n * @param {number} capacity\n * @return {object}\n */\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n\n for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n\n return UNITS[ilen - 1];\n}\n\n/**\n * Figures out what unit to format a set of ticks with\n * @param {TimeScale} scale\n * @param {number} numTicks\n * @param {Unit} minUnit\n * @param {number} min\n * @param {number} max\n * @return {Unit}\n */\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\n\n/**\n * @param {Unit} unit\n * @return {object}\n */\nfunction determineMajorUnit(unit) {\n for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\n\n/**\n * @param {object} ticks\n * @param {number} time\n * @param {number[]} [timestamps] - if defined, snap to these timestamps\n */\nfunction addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const {lo, hi} = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\n\n/**\n * @param {TimeScale} scale\n * @param {object[]} ticks\n * @param {object} map\n * @param {Unit} majorUnit\n * @return {object[]}\n */\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n\n for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\n\n/**\n * @param {TimeScale} scale\n * @param {number[]} values\n * @param {Unit|undefined} [majorUnit]\n * @return {object[]}\n */\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n /** @type {Object} */\n const map = {};\n const ilen = values.length;\n let i, value;\n\n for (i = 0; i < ilen; ++i) {\n value = values[i];\n map[value] = i;\n\n ticks.push({\n value,\n major: false\n });\n }\n\n // We set the major ticks separately from the above loop because calling startOf for every tick\n // is expensive when there is a large number of ticks\n return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\n\nexport default class TimeScale extends Scale {\n\n static id = 'time';\n\n /**\n * @type {any}\n */\n static defaults = {\n /**\n * Scale boundary strategy (bypassed by min/max time options)\n * - `data`: make sure data are fully visible, ticks outside are removed\n * - `ticks`: make sure ticks are fully visible, data outside are truncated\n * @see https://github.com/chartjs/Chart.js/pull/4556\n * @since 2.7.0\n */\n bounds: 'data',\n\n adapters: {},\n time: {\n parser: false, // false == a pattern string from or a custom callback that converts its argument to a timestamp\n unit: false, // false == automatic or override with week, month, year, etc.\n round: false, // none, or override with week, month, year, etc.\n isoWeekday: false, // override week start day\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n /**\n * Ticks generation input values:\n * - 'auto': generates \"optimal\" ticks based on scale size and time options.\n * - 'data': generates ticks from data (including labels from data {t|x|y} objects).\n * - 'labels': generates ticks from user given `data.labels` values ONLY.\n * @see https://github.com/chartjs/Chart.js/pull/4507\n * @since 2.7.0\n */\n source: 'auto',\n\n callback: false,\n\n major: {\n enabled: false\n }\n }\n };\n\n /**\n\t * @param {object} props\n\t */\n constructor(props) {\n super(props);\n\n /** @type {{data: number[], labels: number[], all: number[]}} */\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n\n /** @type {Unit} */\n this._unit = 'day';\n /** @type {Unit=} */\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n\n init(scaleOpts, opts = {}) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n /** @type {DateAdapter} */\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n\n adapter.init(opts);\n\n // Backward compatibility: before introducing adapter, `displayFormats` was\n // supposed to contain *all* unit/string pairs but this can't be resolved\n // when loading the scale (adapters are loaded afterward), so let's populate\n // missing formats on update\n mergeIf(time.displayFormats, adapter.formats());\n\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n\n super.init(scaleOpts);\n\n this._normalized = opts.normalized;\n }\n\n /**\n\t * @param {*} raw\n\t * @param {number?} [index]\n\t * @return {number}\n\t */\n parse(raw, index) { // eslint-disable-line no-unused-vars\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n // eslint-disable-next-line prefer-const\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n\n /**\n\t\t * @param {object} bounds\n\t\t */\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n\n // If we have user provided `min` and `max` labels / data bounds can be ignored\n if (!minDefined || !maxDefined) {\n // Labels are always considered, when user did not force bounds\n _applyBounds(this._getLabelBounds());\n\n // If `bounds` is `'ticks'` and `ticks.source` is `'labels'`,\n // data bounds are ignored (and don't need to be determined)\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n\n min = isFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n\n // Make sure that max is strictly higher than min (required by the timeseries lookup table)\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n\n /**\n\t * @private\n\t */\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {min, max};\n }\n\n /**\n\t * @return {object[]}\n\t */\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n\n const min = this.min;\n const max = this.max;\n\n const ticks = _filterBetween(timestamps, min, max);\n\n // PRIVATE\n // determineUnitForFormatting relies on the number of ticks so we don't use it when\n // autoSkip is enabled because we don't yet know what the final number of ticks will be\n this._unit = timeOpts.unit || (tickOpts.autoSkip\n ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min))\n : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined\n : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n\n if (options.reverse) {\n ticks.reverse();\n }\n\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n\n afterAutoSkip() {\n // Offsets for bar charts need to be handled with the auto skipped\n // ticks. Once ticks have been skipped, we re-compute the offsets.\n if (this.options.offsetAfterAutoskip) {\n this.initOffsets(this.ticks.map(tick => +tick.value));\n }\n }\n\n /**\n\t * Returns the start and end offsets from edges in the form of {start, end}\n\t * where each value is a relative width to the scale and ranges between 0 and 1.\n\t * They add extra margins on the both sides by scaling down the original scale.\n\t * Offsets are added when the `offset` option is true.\n\t * @param {number[]} timestamps\n\t * @protected\n\t */\n initOffsets(timestamps = []) {\n let start = 0;\n let end = 0;\n let first, last;\n\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n\n this._offsets = {start, end, factor: 1 / (start + 1 + end)};\n }\n\n /**\n\t * Generates a maximum of `capacity` timestamps between min and max, rounded to the\n\t * `minor` unit using the given scale time `options`.\n\t * Important: this method can return ticks outside the min and max range, it's the\n\t * responsibility of the calling code to clamp values if needed.\n\t * @protected\n\t */\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n // @ts-ignore\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(options.ticks.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n\n // For 'week' unit, handle the first day of week option\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n\n // Align first ticks on unit\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n\n // Prevent browser from freezing in case user options request millions of milliseconds\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n addTick(ticks, time, timestamps);\n }\n\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n\n // @ts-ignore\n return Object.keys(ticks).sort(sorter).map(x => +x);\n }\n\n /**\n\t * @param {number} value\n\t * @return {string}\n\t */\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n\n /**\n\t * @param {number} value\n\t * @param {string|undefined} format\n\t * @return {string}\n\t */\n format(value, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const fmt = format || formats[unit];\n return this._adapter.format(value, fmt);\n }\n\n /**\n\t * Function to format an individual tick mark\n\t * @param {number} time\n\t * @param {number} index\n\t * @param {object[]} ticks\n\t * @param {string|undefined} [format]\n\t * @return {string}\n\t * @private\n\t */\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formatter = options.ticks.callback;\n\n if (formatter) {\n return call(formatter, [time, index, ticks], this);\n }\n\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n\n return this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n }\n\n /**\n\t * @param {object[]} ticks\n\t */\n generateTickLabels(ticks) {\n let i, ilen, tick;\n\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n\n /**\n\t * @param {number} value - Milliseconds since epoch (1 January 1970 00:00:00 UTC)\n\t * @return {number}\n\t */\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n\n /**\n\t * @param {number} value - Milliseconds since epoch (1 January 1970 00:00:00 UTC)\n\t * @return {number}\n\t */\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n\n /**\n\t * @param {number} pixel\n\t * @return {number}\n\t */\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n\n /**\n\t * @param {string} label\n\t * @return {{w:number, h:number}}\n\t * @private\n\t */\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n\n return {\n w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\n h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\n };\n }\n\n /**\n\t * @param {number} exampleTime\n\t * @return {number}\n\t * @private\n\t */\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n\n // pick the longest format (milliseconds) for guesstimation\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n // subtract 1 - if offset then there's one less label than tick\n // if not offset then one half label padding is added to each end leaving room for one less label\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n\n /**\n\t * @protected\n\t */\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n\n if (timestamps.length) {\n return timestamps;\n }\n\n const metas = this.getMatchingVisibleMetas();\n\n if (this._normalized && metas.length) {\n return (this._cache.data = metas[0].controller.getAllParsedValues(this));\n }\n\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n\n return (this._cache.data = this.normalize(timestamps));\n }\n\n /**\n\t * @protected\n\t */\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n\n if (timestamps.length) {\n return timestamps;\n }\n\n const labels = this.getLabels();\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n timestamps.push(parse(this, labels[i]));\n }\n\n return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps));\n }\n\n /**\n\t * @param {number[]} values\n\t * @protected\n\t */\n normalize(values) {\n // It seems to be somewhat faster to do sorting first\n return _arrayUnique(values.sort(sorter));\n }\n}\n","import TimeScale from './scale.time.js';\nimport {_lookupByKey} from '../helpers/helpers.collection.js';\n\n/**\n * Linearly interpolates the given source `val` using the table. If value is out of bounds, values\n * at edges are used for the interpolation.\n * @param {object} table\n * @param {number} val\n * @param {boolean} [reverse] lookup time based on position instead of vice versa\n * @return {object}\n */\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n ({lo, hi} = _lookupByKey(table, 'pos', val));\n }\n ({pos: prevSource, time: prevTarget} = table[lo]);\n ({pos: nextSource, time: nextTarget} = table[hi]);\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n ({lo, hi} = _lookupByKey(table, 'time', val));\n }\n ({time: prevSource, pos: prevTarget} = table[lo]);\n ({time: nextSource, pos: nextTarget} = table[hi]);\n }\n\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\n\nclass TimeSeriesScale extends TimeScale {\n\n static id = 'timeseries';\n\n /**\n * @type {any}\n */\n static defaults = TimeScale.defaults;\n\n /**\n\t * @param {object} props\n\t */\n constructor(props) {\n super(props);\n\n /** @type {object[]} */\n this._table = [];\n /** @type {number} */\n this._minPos = undefined;\n /** @type {number} */\n this._tableRange = undefined;\n }\n\n /**\n\t * @protected\n\t */\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n\n /**\n\t * Returns an array of {time, pos} objects used to interpolate a specific `time` or position\n\t * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is\n\t * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other\n\t * extremity (left + width or top + height). Note that it would be more optimized to directly\n\t * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need\n\t * to create the lookup table. The table ALWAYS contains at least two items: min and max.\n\t * @param {number[]} timestamps\n\t * @return {object[]}\n\t * @protected\n\t */\n buildLookupTable(timestamps) {\n const {min, max} = this;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n\n for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n\n if (items.length < 2) {\n // In case there is less that 2 timestamps between min and max, the scale is defined by min and max\n return [\n {time: min, pos: 0},\n {time: max, pos: 1}\n ];\n }\n\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n\n // only add points that breaks the scale linearity\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({time: curr, pos: i / (ilen - 1)});\n }\n }\n return table;\n }\n\n /**\n * Generates all timestamps defined in the data.\n * Important: this method can return ticks outside the min and max range, it's the\n * responsibility of the calling code to clamp values if needed.\n * @protected\n */\n _generate() {\n const min = this.min;\n const max = this.max;\n let timestamps = super.getDataTimestamps();\n if (!timestamps.includes(min) || !timestamps.length) {\n timestamps.splice(0, 0, min);\n }\n if (!timestamps.includes(max) || timestamps.length === 1) {\n timestamps.push(max);\n }\n return timestamps.sort((a, b) => a - b);\n }\n\n /**\n\t * Returns all timestamps\n\t * @return {number[]}\n\t * @private\n\t */\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n\n if (timestamps.length) {\n return timestamps;\n }\n\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n // If combining labels and data (data might not contain all labels),\n // we need to recheck uniqueness and sort\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n\n return timestamps;\n }\n\n /**\n\t * @param {number} value - Milliseconds since epoch (1 January 1970 00:00:00 UTC)\n\t * @return {number}\n\t */\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n\n /**\n\t * @param {number} pixel\n\t * @return {number}\n\t */\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\n\nexport default TimeSeriesScale;\n","import type { PropType } from 'vue'\nimport type {\n ChartType,\n ChartData,\n ChartOptions,\n Plugin,\n UpdateMode\n} from 'chart.js'\n\nexport const CommonProps = {\n data: {\n type: Object as PropType,\n required: true\n },\n options: {\n type: Object as PropType,\n default: () => ({})\n },\n plugins: {\n type: Array as PropType,\n default: () => []\n },\n datasetIdKey: {\n type: String,\n default: 'label'\n },\n updateMode: {\n type: String as PropType,\n default: undefined\n }\n} as const\n\nexport const A11yProps = {\n ariaLabel: {\n type: String\n },\n ariaDescribedby: {\n type: String\n }\n} as const\n\nexport const Props = {\n type: {\n type: String as PropType,\n required: true\n },\n destroyDelay: {\n type: Number,\n default: 0 // No delay by default\n },\n ...CommonProps,\n ...A11yProps\n} as const\n","import { isProxy, toRaw, version } from 'vue'\nimport type {\n Chart,\n ChartType,\n ChartData,\n ChartDataset,\n ChartOptions,\n DefaultDataPoint\n} from 'chart.js'\n\nexport const compatProps =\n version[0] === '2'\n ? (internals: I, props: T) =>\n Object.assign(internals, { attrs: props }) as unknown as I & T\n : (internals: I, props: T) =>\n Object.assign(internals, props)\n\nexport function toRawIfProxy(obj: T) {\n return isProxy(obj) ? toRaw(obj) : obj\n}\n\nexport function cloneProxy(obj: T, src = obj) {\n return isProxy(src) ? new Proxy(obj, {}) : obj\n}\n\nexport function setOptions<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(chart: Chart, nextOptions: ChartOptions) {\n const options = chart.options\n\n if (options && nextOptions) {\n Object.assign(options, nextOptions)\n }\n}\n\nexport function setLabels<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(\n currentData: ChartData,\n nextLabels: TLabel[] | undefined\n) {\n currentData.labels = nextLabels\n}\n\nexport function setDatasets<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(\n currentData: ChartData,\n nextDatasets: ChartDataset[],\n datasetIdKey: string\n) {\n const addedDatasets: ChartDataset[] = []\n\n currentData.datasets = nextDatasets.map(\n (nextDataset: Record) => {\n // given the new set, find it's current match\n const currentDataset = currentData.datasets.find(\n (dataset: Record) =>\n dataset[datasetIdKey] === nextDataset[datasetIdKey]\n )\n\n // There is no original to update, so simply add new one\n if (\n !currentDataset ||\n !nextDataset.data ||\n addedDatasets.includes(currentDataset)\n ) {\n return { ...nextDataset } as ChartDataset\n }\n\n addedDatasets.push(currentDataset)\n\n Object.assign(currentDataset, nextDataset)\n\n return currentDataset\n }\n )\n}\n\nexport function cloneData<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(data: ChartData, datasetIdKey: string) {\n const nextData: ChartData = {\n labels: [],\n datasets: []\n }\n\n setLabels(nextData, data.labels)\n setDatasets(nextData, data.datasets, datasetIdKey)\n\n return nextData\n}\n\n/**\n * Get dataset from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */\nexport function getDatasetAtEvent(chart: Chart, event: MouseEvent) {\n return chart.getElementsAtEventForMode(\n event,\n 'dataset',\n { intersect: true },\n false\n )\n}\n\n/**\n * Get single dataset element from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */\nexport function getElementAtEvent(chart: Chart, event: MouseEvent) {\n return chart.getElementsAtEventForMode(\n event,\n 'nearest',\n { intersect: true },\n false\n )\n}\n\n/**\n * Get all dataset elements from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */\nexport function getElementsAtEvent(chart: Chart, event: MouseEvent) {\n return chart.getElementsAtEventForMode(\n event,\n 'index',\n { intersect: true },\n false\n )\n}\n","import { Chart as ChartJS } from 'chart.js'\nimport {\n defineComponent,\n h,\n nextTick,\n onUnmounted,\n onMounted,\n ref,\n shallowRef,\n toRaw,\n watch\n} from 'vue'\n\nimport type { ChartComponent } from './types.js'\nimport { Props } from './props.js'\nimport {\n cloneData,\n setLabels,\n setDatasets,\n setOptions,\n toRawIfProxy,\n cloneProxy\n} from './utils.js'\n\nexport const Chart = defineComponent({\n props: Props,\n setup(props, { expose, slots }) {\n const canvasRef = ref(null)\n const chartRef = shallowRef(null)\n\n expose({ chart: chartRef })\n\n const renderChart = () => {\n if (!canvasRef.value) return\n\n const { type, data, options, plugins, datasetIdKey } = props\n const clonedData = cloneData(data, datasetIdKey)\n const proxiedData = cloneProxy(clonedData, data)\n\n chartRef.value = new ChartJS(canvasRef.value, {\n type,\n data: proxiedData,\n options: { ...options },\n plugins\n })\n }\n\n const destroyChart = () => {\n const chart = toRaw(chartRef.value)\n\n if (chart) {\n if (props.destroyDelay > 0) {\n setTimeout(() => {\n chart.destroy()\n chartRef.value = null\n }, props.destroyDelay)\n } else {\n chart.destroy()\n chartRef.value = null\n }\n }\n }\n\n const update = (chart: ChartJS) => {\n chart.update(props.updateMode)\n }\n\n onMounted(renderChart)\n\n onUnmounted(destroyChart)\n\n watch(\n [() => props.options, () => props.data],\n (\n [nextOptionsProxy, nextDataProxy],\n [prevOptionsProxy, prevDataProxy]\n ) => {\n const chart = toRaw(chartRef.value)\n\n if (!chart) {\n return\n }\n\n let shouldUpdate = false\n\n if (nextOptionsProxy) {\n const nextOptions = toRawIfProxy(nextOptionsProxy)\n const prevOptions = toRawIfProxy(prevOptionsProxy)\n\n if (nextOptions && nextOptions !== prevOptions) {\n setOptions(chart, nextOptions)\n shouldUpdate = true\n }\n }\n\n if (nextDataProxy) {\n const nextLabels = toRawIfProxy(nextDataProxy.labels)\n const prevLabels = toRawIfProxy(prevDataProxy.labels)\n const nextDatasets = toRawIfProxy(nextDataProxy.datasets)\n const prevDatasets = toRawIfProxy(prevDataProxy.datasets)\n\n if (nextLabels !== prevLabels) {\n setLabels(chart.config.data, nextLabels)\n shouldUpdate = true\n }\n\n if (nextDatasets && nextDatasets !== prevDatasets) {\n setDatasets(chart.config.data, nextDatasets, props.datasetIdKey)\n shouldUpdate = true\n }\n }\n\n if (shouldUpdate) {\n nextTick(() => {\n update(chart)\n })\n }\n },\n { deep: true }\n )\n\n return () => {\n return h(\n 'canvas',\n {\n role: 'img',\n 'aria-label': props.ariaLabel,\n 'aria-describedby': props.ariaDescribedby,\n ref: canvasRef\n },\n [h('p', {}, [slots.default ? slots.default() : ''])]\n )\n }\n }\n}) as ChartComponent\n","import { defineComponent, shallowRef, h } from 'vue'\nimport type { ChartType, ChartComponentLike, DefaultDataPoint } from 'chart.js'\nimport {\n Chart as ChartJS,\n BarController,\n BubbleController,\n DoughnutController,\n LineController,\n PieController,\n PolarAreaController,\n RadarController,\n ScatterController\n} from 'chart.js'\nimport type { DistributiveArray } from 'chart.js/dist/types/utils'\nimport type { TypedChartComponent, ChartComponentRef } from './types.js'\nimport { CommonProps } from './props.js'\nimport { Chart } from './chart.js'\nimport { compatProps } from './utils.js'\n\nexport function createTypedChart<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(\n type: TType,\n registerables: ChartComponentLike\n): TypedChartComponent {\n ChartJS.register(registerables)\n\n return defineComponent({\n props: CommonProps,\n setup(props, { expose }) {\n const ref = shallowRef(null)\n const reforwardRef = (chartRef: ChartComponentRef) => {\n ref.value = chartRef?.chart\n }\n\n expose({ chart: ref })\n\n return () => {\n return h(\n Chart,\n compatProps(\n {\n ref: reforwardRef as any\n },\n {\n type,\n ...props\n }\n )\n )\n }\n }\n }) as any\n}\n\nexport interface ExtendedDataPoint {\n [key: string]: string | number | null | ExtendedDataPoint\n}\n\nexport const Bar = /* #__PURE__ */ createTypedChart<\n 'bar',\n DefaultDataPoint<'bar'> | DistributiveArray\n>('bar', BarController)\n\nexport const Doughnut = /* #__PURE__ */ createTypedChart(\n 'doughnut',\n DoughnutController\n)\n\nexport const Line = /* #__PURE__ */ createTypedChart('line', LineController)\n\nexport const Pie = /* #__PURE__ */ createTypedChart('pie', PieController)\n\nexport const PolarArea = /* #__PURE__ */ createTypedChart(\n 'polarArea',\n PolarAreaController\n)\n\nexport const Radar = /* #__PURE__ */ createTypedChart('radar', RadarController)\n\nexport const Bubble = /* #__PURE__ */ createTypedChart(\n 'bubble',\n BubbleController\n)\n\nexport const Scatter = /* #__PURE__ */ createTypedChart(\n 'scatter',\n ScatterController\n)\n","/**\r\n * BatchProcessor - 批量数据处理类\r\n * \r\n * 处理批量数据获取和处理的核心类,使用 cursor 分页机制获取所有数据。\r\n * 支持进度回调和取消功能。\r\n */\r\n\r\nimport fetchWithAuth from '@/utils/fetchWithAuth';\r\n\r\n/**\r\n * 批量操作错误类\r\n * 提供错误代码、是否可恢复、建议操作等信息\r\n */\r\nexport class BatchOperationError extends Error {\r\n constructor(message, code, recoverable = false, suggestion = '') {\r\n super(message);\r\n this.name = 'BatchOperationError';\r\n this.code = code;\r\n this.recoverable = recoverable;\r\n this.suggestion = suggestion;\r\n }\r\n}\r\n\r\n/**\r\n * 错误处理器映射\r\n * 根据 HTTP 状态码返回对应的错误对象\r\n */\r\nconst ERROR_HANDLERS = {\r\n 401: () => new BatchOperationError(\r\n '认证失败,请重新登录',\r\n 'AUTH_FAILED',\r\n false,\r\n '请刷新页面并重新登录'\r\n ),\r\n 403: () => new BatchOperationError(\r\n '权限不足或请求被拒绝',\r\n 'FORBIDDEN',\r\n false,\r\n '请确认您有管理员权限'\r\n ),\r\n 400: (details) => new BatchOperationError(\r\n `请求数据无效: ${details}`,\r\n 'INVALID_DATA',\r\n true,\r\n '请检查数据格式后重试'\r\n ),\r\n 500: () => new BatchOperationError(\r\n '服务器内部错误',\r\n 'SERVER_ERROR',\r\n true,\r\n '请稍后重试,如果问题持续请联系管理员'\r\n ),\r\n NETWORK: () => new BatchOperationError(\r\n '网络连接失败',\r\n 'NETWORK_ERROR',\r\n true,\r\n '请检查网络连接后重试'\r\n ),\r\n ABORT: () => new BatchOperationError(\r\n '操作已取消',\r\n 'ABORTED',\r\n false,\r\n ''\r\n )\r\n};\r\n\r\n/**\r\n * 根据错误创建 BatchOperationError\r\n * @param {Error|Response} error - 原始错误或响应对象\r\n * @param {string} details - 错误详情\r\n * @returns {BatchOperationError}\r\n */\r\nfunction createError(error, details = '') {\r\n // 处理取消操作\r\n if (error.name === 'AbortError') {\r\n return ERROR_HANDLERS.ABORT();\r\n }\r\n \r\n // 处理 HTTP 响应错误\r\n if (error instanceof Response || (error && typeof error.status === 'number')) {\r\n const handler = ERROR_HANDLERS[error.status];\r\n if (handler) {\r\n return handler(details);\r\n }\r\n return new BatchOperationError(\r\n `请求失败: ${error.status}`,\r\n 'HTTP_ERROR',\r\n true,\r\n '请稍后重试'\r\n );\r\n }\r\n \r\n // 处理网络错误\r\n if (error instanceof TypeError && error.message.includes('fetch')) {\r\n return ERROR_HANDLERS.NETWORK();\r\n }\r\n \r\n // 其他错误\r\n return new BatchOperationError(\r\n error.message || '未知错误',\r\n 'UNKNOWN_ERROR',\r\n true,\r\n '请稍后重试'\r\n );\r\n}\r\n\r\n/**\r\n * BatchProcessor 类\r\n * \r\n * 用于批量获取和处理数据的核心类\r\n */\r\nclass BatchProcessor {\r\n /**\r\n * 创建 BatchProcessor 实例\r\n * @param {Object} options - 配置选项\r\n * @param {number} options.batchSize - 每批数据量,默认 1000\r\n * @param {Function} options.onProgress - 进度回调函数\r\n * @param {Function} options.onError - 错误回调函数\r\n */\r\n constructor(options = {}) {\r\n this.batchSize = options.batchSize || 1000;\r\n this.onProgress = options.onProgress || (() => {});\r\n this.onError = options.onError || (() => {});\r\n this.abortController = null;\r\n }\r\n\r\n /**\r\n * 获取所有数据记录\r\n * 使用 cursor 分页机制循环获取所有数据,直到没有更多数据或操作被取消\r\n * \r\n * @param {boolean} includeValue - 是否包含分块文件的 value 数据\r\n * @returns {Promise} 所有记录的数组\r\n * @throws {BatchOperationError} 当发生错误时抛出\r\n */\r\n async fetchAllRecords(includeValue = false) {\r\n // 创建新的 AbortController 用于取消操作\r\n this.abortController = new AbortController();\r\n const allRecords = [];\r\n let cursor = null;\r\n let totalFetched = 0;\r\n let batchCount = 0;\r\n\r\n try {\r\n do {\r\n // 检查是否已取消\r\n if (this.abortController.signal.aborted) {\r\n break;\r\n }\r\n\r\n // 获取一批数据\r\n const response = await this.fetchBatch(cursor, includeValue);\r\n \r\n // 合并数据到总数组\r\n allRecords.push(...response.records);\r\n cursor = response.nextCursor;\r\n totalFetched += response.records.length;\r\n batchCount++;\r\n\r\n // 调用进度回调\r\n this.onProgress({\r\n phase: 'fetching',\r\n current: totalFetched,\r\n batchCount: batchCount,\r\n message: `已获取 ${totalFetched} 条记录...`\r\n });\r\n\r\n } while (cursor && !this.abortController.signal.aborted);\r\n\r\n // 如果是因为取消而退出循环,抛出取消错误\r\n if (this.abortController.signal.aborted) {\r\n throw ERROR_HANDLERS.ABORT();\r\n }\r\n\r\n return allRecords;\r\n } catch (error) {\r\n // 调用错误回调\r\n const batchError = error instanceof BatchOperationError \r\n ? error \r\n : createError(error);\r\n this.onError(batchError);\r\n throw batchError;\r\n }\r\n }\r\n\r\n /**\r\n * 获取单批数据\r\n * \r\n * @param {string|null} cursor - 分页游标,首次请求为 null\r\n * @param {boolean} includeValue - 是否包含分块文件的 value 数据\r\n * @returns {Promise} 包含 records 和 nextCursor 的响应对象\r\n * @throws {BatchOperationError} 当请求失败时抛出\r\n */\r\n async fetchBatch(cursor, includeValue) {\r\n // 构建查询参数\r\n const params = new URLSearchParams();\r\n if (cursor) {\r\n params.set('cursor', cursor);\r\n }\r\n if (includeValue) {\r\n params.set('includeValue', 'true');\r\n }\r\n params.set('limit', String(this.batchSize));\r\n\r\n try {\r\n // 发送请求,传入 abort signal 支持取消\r\n const response = await fetchWithAuth(\r\n `/api/manage/batch/list?${params}`,\r\n { signal: this.abortController.signal }\r\n );\r\n\r\n // 检查响应状态\r\n if (!response.ok) {\r\n let errorDetails = '';\r\n try {\r\n const errorData = await response.json();\r\n errorDetails = errorData.error || '';\r\n } catch {\r\n // 忽略 JSON 解析错误\r\n }\r\n throw createError(response, errorDetails);\r\n }\r\n\r\n // 解析响应数据\r\n const data = await response.json();\r\n \r\n // 验证响应格式\r\n if (!data.success) {\r\n throw new BatchOperationError(\r\n data.error || '请求失败',\r\n 'API_ERROR',\r\n true,\r\n '请稍后重试'\r\n );\r\n }\r\n\r\n return {\r\n records: data.records || [],\r\n nextCursor: data.nextCursor || null,\r\n totalProcessed: data.totalProcessed || 0\r\n };\r\n } catch (error) {\r\n // 如果已经是 BatchOperationError,直接抛出\r\n if (error instanceof BatchOperationError) {\r\n throw error;\r\n }\r\n // 否则转换为 BatchOperationError\r\n throw createError(error);\r\n }\r\n }\r\n\r\n /**\r\n * 取消当前操作\r\n * 调用此方法将中止正在进行的 fetch 请求\r\n */\r\n abort() {\r\n if (this.abortController) {\r\n this.abortController.abort();\r\n }\r\n }\r\n\r\n /**\r\n * 检查操作是否已被取消\r\n * @returns {boolean}\r\n */\r\n isAborted() {\r\n return this.abortController ? this.abortController.signal.aborted : false;\r\n }\r\n\r\n /**\r\n * 重置处理器状态\r\n * 在开始新的批量操作前调用\r\n */\r\n reset() {\r\n this.abortController = null;\r\n }\r\n}\r\n\r\nexport default BatchProcessor;\r\n","/**\r\n * IndexRebuilder - 索引重建类\r\n * \r\n * 处理索引重建的完整流程,包括数据获取、排序、分块上传和完成。\r\n */\r\n\r\nimport fetchWithAuth from '@/utils/fetchWithAuth';\r\nimport BatchProcessor, { BatchOperationError } from '@/utils/batchProcessor';\r\n\r\n/**\r\n * IndexRebuilder 类\r\n * \r\n * 用于重建索引的核心类,协调数据获取、排序和分块上传\r\n */\r\nclass IndexRebuilder {\r\n /**\r\n * 创建 IndexRebuilder 实例\r\n * @param {Object} options - 配置选项\r\n * @param {number} options.chunkSize - 每个分块的记录数,默认从后端获取\r\n * @param {number} options.maxRetries - 分块上传最大重试次数,默认 3\r\n * @param {number} options.retryDelay - 重试延迟基数(毫秒),默认 1000\r\n * @param {Function} options.onProgress - 进度回调函数\r\n * @param {Function} options.onError - 错误回调函数\r\n */\r\n constructor(options = {}) {\r\n this.chunkSize = options.chunkSize || null; // 从后端获取\r\n this.maxRetries = options.maxRetries || 3;\r\n this.retryDelay = options.retryDelay || 1000;\r\n this.onProgress = options.onProgress || (() => {});\r\n this.onError = options.onError || (() => {});\r\n this.sessionId = this.generateSessionId();\r\n this.aborted = false;\r\n }\r\n\r\n /**\r\n * 从后端获取索引配置(分块大小等)\r\n * @returns {Promise} 配置对象 { chunkSize, databaseType }\r\n */\r\n async fetchConfig() {\r\n try {\r\n const response = await fetchWithAuth('/api/manage/batch/index/config');\r\n if (!response.ok) {\r\n throw new Error('获取配置失败');\r\n }\r\n const result = await response.json();\r\n if (result.success) {\r\n return {\r\n chunkSize: result.chunkSize || 500,\r\n databaseType: result.databaseType || 'unknown'\r\n };\r\n }\r\n throw new Error(result.error || '获取配置失败');\r\n } catch (error) {\r\n // 获取失败时使用保守的默认值(兼容 D1)\r\n console.warn('Failed to fetch index config, using default:', error);\r\n return { chunkSize: 500, databaseType: 'unknown' };\r\n }\r\n }\r\n\r\n /**\r\n * 执行索引重建\r\n * \r\n * 完整流程:\r\n * 1. 获取配置(分块大小)\r\n * 2. 获取所有记录\r\n * 3. 按时间戳降序排序\r\n * 4. 分块上传\r\n * 5. 完成重建\r\n * \r\n * @returns {Promise} 重建结果 { success: boolean, totalFiles: number }\r\n * @throws {BatchOperationError} 当发生错误时抛出\r\n */\r\n async rebuild() {\r\n this.aborted = false;\r\n \r\n try {\r\n // 获取配置(分块大小)\r\n if (!this.chunkSize) {\r\n const config = await this.fetchConfig();\r\n this.chunkSize = config.chunkSize;\r\n }\r\n\r\n // 获取所有记录\r\n this.onProgress({ \r\n phase: 'fetching', \r\n message: '正在获取数据...',\r\n current: 0\r\n });\r\n \r\n const processor = new BatchProcessor({\r\n onProgress: (p) => this.onProgress({ ...p, phase: 'fetching' }),\r\n onError: (e) => this.onError(e)\r\n });\r\n \r\n const records = await processor.fetchAllRecords(false);\r\n \r\n if (this.aborted) {\r\n throw new BatchOperationError('操作已取消', 'ABORTED', false, '');\r\n }\r\n\r\n // 排序(按时间戳降序)\r\n this.onProgress({ \r\n phase: 'sorting', \r\n message: '正在排序...',\r\n current: 0,\r\n total: records.length\r\n });\r\n \r\n this.sortByTimestampDescending(records);\r\n \r\n if (this.aborted) {\r\n throw new BatchOperationError('操作已取消', 'ABORTED', false, '');\r\n }\r\n\r\n // 分块上传\r\n const chunks = this.splitIntoChunks(records);\r\n \r\n for (let i = 0; i < chunks.length; i++) {\r\n if (this.aborted) {\r\n throw new BatchOperationError('操作已取消', 'ABORTED', false, '');\r\n }\r\n \r\n // 使用重试机制上传分块\r\n await this.uploadChunkWithRetry(chunks[i], i);\r\n \r\n this.onProgress({\r\n phase: 'uploading',\r\n current: i + 1,\r\n total: chunks.length,\r\n message: `正在上传分块 ${i + 1}/${chunks.length}...`\r\n });\r\n }\r\n\r\n // 完成重建\r\n this.onProgress({ \r\n phase: 'finalizing', \r\n message: '正在完成重建...',\r\n current: chunks.length,\r\n total: chunks.length\r\n });\r\n \r\n await this.finalize(chunks.length, records.length);\r\n\r\n this.onProgress({\r\n phase: 'completed',\r\n message: `索引重建完成,共 ${records.length} 个文件`,\r\n current: records.length,\r\n total: records.length\r\n });\r\n\r\n return { success: true, totalFiles: records.length };\r\n } catch (error) {\r\n const batchError = error instanceof BatchOperationError \r\n ? error \r\n : new BatchOperationError(\r\n error.message || '索引重建失败',\r\n 'REBUILD_ERROR',\r\n true,\r\n '请稍后重试'\r\n );\r\n this.onError(batchError);\r\n throw batchError;\r\n }\r\n }\r\n\r\n /**\r\n * 按时间戳降序排序记录\r\n * \r\n * @param {Array} records - 要排序的记录数组(原地排序)\r\n */\r\n sortByTimestampDescending(records) {\r\n records.sort((a, b) => {\r\n const timestampA = (a.metadata && a.metadata.TimeStamp) || 0;\r\n const timestampB = (b.metadata && b.metadata.TimeStamp) || 0;\r\n return timestampB - timestampA;\r\n });\r\n }\r\n\r\n /**\r\n * 将记录分割为多个块\r\n * \r\n * @param {Array} records - 要分割的记录数组\r\n * @returns {Array} 分块后的二维数组\r\n */\r\n splitIntoChunks(records) {\r\n const chunks = [];\r\n for (let i = 0; i < records.length; i += this.chunkSize) {\r\n chunks.push(records.slice(i, i + this.chunkSize));\r\n }\r\n return chunks;\r\n }\r\n\r\n /**\r\n * 带重试机制的分块上传\r\n * \r\n * @param {Array} chunk - 要上传的分块数据\r\n * @param {number} chunkId - 分块 ID\r\n * @returns {Promise} 上传响应\r\n * @throws {BatchOperationError} 当所有重试都失败时抛出\r\n */\r\n async uploadChunkWithRetry(chunk, chunkId) {\r\n let lastError;\r\n \r\n for (let attempt = 1; attempt <= this.maxRetries; attempt++) {\r\n try {\r\n return await this.uploadChunk(chunk, chunkId);\r\n } catch (error) {\r\n lastError = error;\r\n \r\n // 不重试的错误类型\r\n if (error instanceof BatchOperationError) {\r\n if (error.code === 'AUTH_FAILED' || \r\n error.code === 'FORBIDDEN' || \r\n error.code === 'ABORTED') {\r\n throw error;\r\n }\r\n }\r\n \r\n // 如果还有重试机会,等待后重试\r\n if (attempt < this.maxRetries) {\r\n // 指数退避\r\n const delay = this.retryDelay * Math.pow(2, attempt - 1);\r\n await this.sleep(delay);\r\n \r\n this.onProgress({\r\n phase: 'retrying',\r\n message: `分块 ${chunkId + 1} 上传失败,正在重试 (${attempt}/${this.maxRetries})...`,\r\n current: chunkId,\r\n attempt: attempt\r\n });\r\n }\r\n }\r\n }\r\n \r\n // 所有重试都失败\r\n throw lastError instanceof BatchOperationError \r\n ? lastError \r\n : new BatchOperationError(\r\n `分块 ${chunkId + 1} 上传失败,已重试 ${this.maxRetries} 次`,\r\n 'CHUNK_UPLOAD_FAILED',\r\n false,\r\n '请检查网络连接后重新开始重建'\r\n );\r\n }\r\n\r\n /**\r\n * 上传单个分块\r\n * \r\n * @param {Array} chunk - 要上传的分块数据\r\n * @param {number} chunkId - 分块 ID\r\n * @returns {Promise} 上传响应\r\n * @throws {BatchOperationError} 当上传失败时抛出\r\n */\r\n async uploadChunk(chunk, chunkId) {\r\n const checksum = await this.calculateChecksum(chunk);\r\n \r\n try {\r\n const response = await fetchWithAuth('/api/manage/batch/index/chunk', {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify({\r\n chunkId: String(chunkId),\r\n sessionId: this.sessionId,\r\n data: chunk,\r\n checksum\r\n })\r\n });\r\n\r\n if (!response.ok) {\r\n let errorDetails = '';\r\n try {\r\n const errorData = await response.json();\r\n errorDetails = errorData.error || '';\r\n } catch {\r\n // 忽略 JSON 解析错误\r\n }\r\n throw this.createHttpError(response.status, errorDetails);\r\n }\r\n\r\n const result = await response.json();\r\n \r\n if (!result.success) {\r\n throw new BatchOperationError(\r\n result.error || '分块上传失败',\r\n 'CHUNK_UPLOAD_FAILED',\r\n true,\r\n '请稍后重试'\r\n );\r\n }\r\n\r\n return result;\r\n } catch (error) {\r\n if (error instanceof BatchOperationError) {\r\n throw error;\r\n }\r\n // 网络错误\r\n if (error instanceof TypeError && error.message.includes('fetch')) {\r\n throw new BatchOperationError(\r\n '网络连接失败',\r\n 'NETWORK_ERROR',\r\n true,\r\n '请检查网络连接后重试'\r\n );\r\n }\r\n throw new BatchOperationError(\r\n error.message || '分块上传失败',\r\n 'CHUNK_UPLOAD_FAILED',\r\n true,\r\n '请稍后重试'\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * 完成索引重建\r\n * \r\n * @param {number} totalChunks - 总分块数\r\n * @param {number} totalFiles - 总文件数\r\n * @returns {Promise} 完成响应\r\n * @throws {BatchOperationError} 当完成请求失败时抛出\r\n */\r\n async finalize(totalChunks, totalFiles) {\r\n try {\r\n const response = await fetchWithAuth('/api/manage/batch/index/finalize', {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify({\r\n sessionId: this.sessionId,\r\n totalChunks,\r\n totalFiles\r\n })\r\n });\r\n\r\n if (!response.ok) {\r\n let errorDetails = '';\r\n try {\r\n const errorData = await response.json();\r\n errorDetails = errorData.error || '';\r\n } catch {\r\n // 忽略 JSON 解析错误\r\n }\r\n throw this.createHttpError(response.status, errorDetails);\r\n }\r\n\r\n const result = await response.json();\r\n \r\n if (!result.success) {\r\n throw new BatchOperationError(\r\n result.error || '索引完成失败',\r\n 'FINALIZE_FAILED',\r\n true,\r\n '请稍后重试'\r\n );\r\n }\r\n\r\n return result;\r\n } catch (error) {\r\n if (error instanceof BatchOperationError) {\r\n throw error;\r\n }\r\n throw new BatchOperationError(\r\n error.message || '索引完成失败',\r\n 'FINALIZE_FAILED',\r\n true,\r\n '请稍后重试'\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * 生成唯一的会话 ID\r\n * \r\n * @returns {string} 会话 ID\r\n */\r\n generateSessionId() {\r\n return `rebuild_${Date.now()}_${Math.random().toString(36).slice(2)}`;\r\n }\r\n\r\n /**\r\n * 计算数据的 SHA-256 校验和\r\n * \r\n * @param {Array} data - 要计算校验和的数据\r\n * @returns {Promise} 十六进制格式的校验和\r\n */\r\n async calculateChecksum(data) {\r\n const text = JSON.stringify(data);\r\n const encoder = new TextEncoder();\r\n const dataBuffer = encoder.encode(text);\r\n\r\n // crypto.subtle 仅在安全上下文(HTTPS / localhost)下可用\r\n // 通过 0.0.0.0 等非安全上下文访问时需要 fallback\r\n if (typeof crypto !== 'undefined' && crypto.subtle) {\r\n const hashBuffer = await crypto.subtle.digest('SHA-256', dataBuffer);\r\n const hashArray = Array.from(new Uint8Array(hashBuffer));\r\n return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');\r\n }\r\n\r\n // Fallback: 简单但足够用于校验的哈希实现 (FNV-1a 变体, 产生 64 位十六进制)\r\n let h1 = 0x811c9dc5 >>> 0;\r\n let h2 = 0x811c9dc5 >>> 0;\r\n for (let i = 0; i < dataBuffer.length; i++) {\r\n h1 = Math.imul(h1 ^ dataBuffer[i], 0x01000193) >>> 0;\r\n h2 = Math.imul(h2 ^ dataBuffer[i], 0x01000193 + 0x10) >>> 0;\r\n }\r\n return h1.toString(16).padStart(8, '0') + h2.toString(16).padStart(8, '0');\r\n }\r\n\r\n\r\n /**\r\n * 根据 HTTP 状态码创建错误对象\r\n * \r\n * @param {number} status - HTTP 状态码\r\n * @param {string} details - 错误详情\r\n * @returns {BatchOperationError}\r\n */\r\n createHttpError(status, details = '') {\r\n switch (status) {\r\n case 401:\r\n return new BatchOperationError(\r\n '认证失败,请重新登录',\r\n 'AUTH_FAILED',\r\n false,\r\n '请刷新页面并重新登录'\r\n );\r\n case 403:\r\n return new BatchOperationError(\r\n '权限不足或请求被拒绝',\r\n 'FORBIDDEN',\r\n false,\r\n '请确认您有管理员权限'\r\n );\r\n case 400:\r\n return new BatchOperationError(\r\n `请求数据无效: ${details}`,\r\n 'INVALID_DATA',\r\n true,\r\n '请检查数据格式后重试'\r\n );\r\n case 404:\r\n return new BatchOperationError(\r\n '会话不存在',\r\n 'SESSION_NOT_FOUND',\r\n false,\r\n '请重新开始索引重建'\r\n );\r\n case 410:\r\n return new BatchOperationError(\r\n '会话已过期',\r\n 'SESSION_EXPIRED',\r\n false,\r\n '请重新开始索引重建'\r\n );\r\n case 500:\r\n default:\r\n return new BatchOperationError(\r\n `服务器错误: ${details || status}`,\r\n 'SERVER_ERROR',\r\n true,\r\n '请稍后重试'\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * 延迟执行\r\n * \r\n * @param {number} ms - 延迟毫秒数\r\n * @returns {Promise}\r\n */\r\n sleep(ms) {\r\n return new Promise(resolve => setTimeout(resolve, ms));\r\n }\r\n\r\n /**\r\n * 取消当前操作\r\n */\r\n abort() {\r\n this.aborted = true;\r\n }\r\n\r\n /**\r\n * 重置重建器状态\r\n * 在开始新的重建操作前调用\r\n */\r\n reset() {\r\n this.aborted = false;\r\n this.sessionId = this.generateSessionId();\r\n }\r\n}\r\n\r\nexport default IndexRebuilder;\r\n","/**\r\n * BackupGenerator - 备份数据生成类\r\n * \r\n * 处理前端辅助备份功能,获取所有文件记录(包含分块文件的 value),\r\n * 构建完整的备份 JSON 文件,并触发浏览器下载。\r\n */\r\n\r\nimport BatchProcessor from '@/utils/batchProcessor';\r\nimport fetchWithAuth from '@/utils/fetchWithAuth';\r\nimport packageInfo from '../../package.json'\r\n\r\n/**\r\n * BackupGenerator 类\r\n * \r\n * 用于生成和下载备份数据的类\r\n */\r\nclass BackupGenerator {\r\n /**\r\n * 创建 BackupGenerator 实例\r\n * @param {Object} options - 配置选项\r\n * @param {Function} options.onProgress - 进度回调函数\r\n */\r\n constructor(options = {}) {\r\n this.onProgress = options.onProgress || (() => {});\r\n this.processor = null;\r\n }\r\n\r\n /**\r\n * 生成并下载备份\r\n * \r\n * 完整流程:\r\n * 1. 获取所有文件记录(包含分块文件的 value)\r\n * 2. 构建备份数据结构\r\n * 3. 获取系统设置\r\n * 4. 生成并触发下载\r\n * \r\n * @returns {Promise} 包含 success 和 fileCount 的结果对象\r\n * @throws {Error} 当备份过程中发生错误时抛出\r\n */\r\n async generateBackup() {\r\n // 获取所有文件记录(包含分块文件的 value)\r\n this.processor = new BatchProcessor({\r\n onProgress: (p) => this.onProgress({ ...p, phase: 'fetching' })\r\n });\r\n\r\n const records = await this.processor.fetchAllRecords(true);\r\n\r\n // 构建备份数据\r\n this.onProgress({ phase: 'building', message: '正在构建备份数据...' });\r\n\r\n const backupData = {\r\n timestamp: Date.now(),\r\n version: packageInfo.version,\r\n data: {\r\n fileCount: records.length,\r\n files: {},\r\n settings: {}\r\n }\r\n };\r\n\r\n // 将记录转换为以 id 为键的对象格式\r\n for (const record of records) {\r\n backupData.data.files[record.id] = {\r\n metadata: record.metadata,\r\n value: record.value || null\r\n };\r\n }\r\n\r\n // 3. 获取系统设置\r\n const settings = await this.fetchSettings();\r\n backupData.data.settings = settings;\r\n\r\n // 生成下载\r\n this.onProgress({ phase: 'downloading', message: '正在生成下载...' });\r\n this.downloadBackup(backupData);\r\n\r\n const settingsCount = Object.keys(settings).length;\r\n return { success: true, fileCount: records.length, settingsCount };\r\n }\r\n\r\n /**\r\n * 获取系统设置\r\n * \r\n * @returns {Promise} 系统设置对象,失败时返回空对象\r\n */\r\n async fetchSettings() {\r\n try {\r\n const response = await fetchWithAuth('/api/manage/batch/settings');\r\n if (!response.ok) {\r\n console.warn('Failed to fetch settings:', response.status);\r\n return {};\r\n }\r\n const data = await response.json();\r\n // 返回 settings 字段,而不是整个响应\r\n return data.settings || {};\r\n } catch (error) {\r\n console.warn('Failed to fetch settings:', error);\r\n return {};\r\n }\r\n }\r\n\r\n /**\r\n * 触发浏览器下载备份文件\r\n * \r\n * @param {Object} data - 备份数据对象\r\n */\r\n downloadBackup(data) {\r\n // 将数据转换为格式化的 JSON 字符串\r\n const json = JSON.stringify(data, null, 2);\r\n \r\n // 创建 Blob 对象\r\n const blob = new Blob([json], { type: 'application/json' });\r\n \r\n // 创建下载 URL\r\n const url = URL.createObjectURL(blob);\r\n\r\n // 创建临时下载链接\r\n const a = document.createElement('a');\r\n a.href = url;\r\n // 使用日期作为文件名的一部分\r\n a.download = `imgbed_backup_${new Date().toISOString().split('T')[0]}.json`;\r\n \r\n // 触发下载\r\n document.body.appendChild(a);\r\n a.click();\r\n \r\n // 清理\r\n document.body.removeChild(a);\r\n URL.revokeObjectURL(url);\r\n }\r\n\r\n /**\r\n * 取消当前备份操作\r\n */\r\n abort() {\r\n if (this.processor) {\r\n this.processor.abort();\r\n }\r\n }\r\n\r\n /**\r\n * 检查操作是否已被取消\r\n * @returns {boolean}\r\n */\r\n isAborted() {\r\n return this.processor ? this.processor.isAborted() : false;\r\n }\r\n}\r\n\r\nexport default BackupGenerator;\r\n","/**\r\n * RestoreProcessor - 分批恢复数据类\r\n * \r\n * 将备份数据分批上传到后端进行恢复,避免 CPU 超时\r\n */\r\n\r\nimport fetchWithAuth from '@/utils/fetchWithAuth';\r\nimport { BatchOperationError } from '@/utils/batchProcessor';\r\n\r\n/**\r\n * RestoreProcessor 类\r\n */\r\nclass RestoreProcessor {\r\n /**\r\n * 创建 RestoreProcessor 实例\r\n * @param {Object} options - 配置选项\r\n * @param {number} options.chunkSize - 每批数据量,默认 50\r\n * @param {number} options.maxRetries - 最大重试次数,默认 3\r\n * @param {number} options.retryDelay - 重试延迟基数(毫秒),默认 1000\r\n * @param {Function} options.onProgress - 进度回调函数\r\n * @param {Function} options.onError - 错误回调函数\r\n */\r\n constructor(options = {}) {\r\n this.chunkSize = options.chunkSize || 50;\r\n this.maxRetries = options.maxRetries || 3;\r\n this.retryDelay = options.retryDelay || 1000;\r\n this.onProgress = options.onProgress || (() => {});\r\n this.onError = options.onError || (() => {});\r\n this.aborted = false;\r\n }\r\n\r\n /**\r\n * 执行恢复操作\r\n * \r\n * @param {Object} backupData - 备份数据对象\r\n * @returns {Promise} 恢复结果\r\n */\r\n async restore(backupData) {\r\n this.aborted = false;\r\n\r\n // 验证备份数据格式\r\n if (!backupData || !backupData.data) {\r\n throw new BatchOperationError(\r\n '备份文件格式无效',\r\n 'INVALID_BACKUP',\r\n false,\r\n '请选择有效的备份文件'\r\n );\r\n }\r\n\r\n const { files = {}, settings = {} } = backupData.data;\r\n const fileEntries = Object.entries(files);\r\n const settingEntries = Object.entries(settings);\r\n \r\n const totalFiles = fileEntries.length;\r\n const totalSettings = settingEntries.length;\r\n const totalItems = totalFiles + totalSettings;\r\n\r\n let restoredFiles = 0;\r\n let restoredSettings = 0;\r\n let failedFiles = 0;\r\n let failedSettings = 0;\r\n\r\n try {\r\n // 1. 分批恢复文件数据\r\n this.onProgress({\r\n phase: 'restoring_files',\r\n message: '正在恢复文件数据...',\r\n current: 0,\r\n total: totalItems\r\n });\r\n\r\n const fileChunks = this.splitIntoChunks(fileEntries, this.chunkSize);\r\n \r\n for (let i = 0; i < fileChunks.length; i++) {\r\n if (this.aborted) {\r\n throw new BatchOperationError('操作已取消', 'ABORTED', false, '');\r\n }\r\n\r\n const chunk = fileChunks[i];\r\n const chunkData = Object.fromEntries(chunk);\r\n \r\n const result = await this.uploadChunkWithRetry('files', chunkData);\r\n restoredFiles += result.restoredCount;\r\n failedFiles += result.failedCount;\r\n\r\n this.onProgress({\r\n phase: 'restoring_files',\r\n message: `正在恢复文件数据 ${restoredFiles}/${totalFiles}...`,\r\n current: restoredFiles,\r\n total: totalItems,\r\n percentage: (restoredFiles / totalItems) * 80\r\n });\r\n }\r\n\r\n // 2. 分批恢复系统设置\r\n this.onProgress({\r\n phase: 'restoring_settings',\r\n message: '正在恢复系统设置...',\r\n current: restoredFiles,\r\n total: totalItems\r\n });\r\n\r\n const settingChunks = this.splitIntoChunks(settingEntries, this.chunkSize);\r\n \r\n for (let i = 0; i < settingChunks.length; i++) {\r\n if (this.aborted) {\r\n throw new BatchOperationError('操作已取消', 'ABORTED', false, '');\r\n }\r\n\r\n const chunk = settingChunks[i];\r\n const chunkData = Object.fromEntries(chunk);\r\n \r\n const result = await this.uploadChunkWithRetry('settings', chunkData);\r\n restoredSettings += result.restoredCount;\r\n failedSettings += result.failedCount;\r\n\r\n this.onProgress({\r\n phase: 'restoring_settings',\r\n message: `正在恢复系统设置 ${restoredSettings}/${totalSettings}...`,\r\n current: restoredFiles + restoredSettings,\r\n total: totalItems,\r\n percentage: 80 + (restoredSettings / totalSettings) * 20\r\n });\r\n }\r\n\r\n // 3. 完成\r\n this.onProgress({\r\n phase: 'completed',\r\n message: '恢复完成',\r\n current: totalItems,\r\n total: totalItems,\r\n percentage: 100\r\n });\r\n\r\n return {\r\n success: true,\r\n restoredFiles,\r\n restoredSettings,\r\n failedFiles,\r\n failedSettings,\r\n backupTimestamp: backupData.timestamp\r\n };\r\n\r\n } catch (error) {\r\n const batchError = error instanceof BatchOperationError\r\n ? error\r\n : new BatchOperationError(\r\n error.message || '恢复失败',\r\n 'RESTORE_ERROR',\r\n true,\r\n '请稍后重试'\r\n );\r\n this.onError(batchError);\r\n throw batchError;\r\n }\r\n }\r\n\r\n /**\r\n * 将数组分割为多个块\r\n */\r\n splitIntoChunks(entries, chunkSize) {\r\n const chunks = [];\r\n for (let i = 0; i < entries.length; i += chunkSize) {\r\n chunks.push(entries.slice(i, i + chunkSize));\r\n }\r\n return chunks;\r\n }\r\n\r\n /**\r\n * 带重试机制的分块上传\r\n */\r\n async uploadChunkWithRetry(type, data) {\r\n let lastError;\r\n\r\n for (let attempt = 1; attempt <= this.maxRetries; attempt++) {\r\n try {\r\n return await this.uploadChunk(type, data);\r\n } catch (error) {\r\n lastError = error;\r\n\r\n if (error instanceof BatchOperationError) {\r\n if (error.code === 'AUTH_FAILED' ||\r\n error.code === 'FORBIDDEN' ||\r\n error.code === 'ABORTED') {\r\n throw error;\r\n }\r\n }\r\n\r\n if (attempt < this.maxRetries) {\r\n const delay = this.retryDelay * Math.pow(2, attempt - 1);\r\n await this.sleep(delay);\r\n }\r\n }\r\n }\r\n\r\n throw lastError;\r\n }\r\n\r\n /**\r\n * 上传单个分块\r\n */\r\n async uploadChunk(type, data) {\r\n try {\r\n const response = await fetchWithAuth('/api/manage/batch/restore/chunk', {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify({ type, data })\r\n });\r\n\r\n if (!response.ok) {\r\n let errorDetails = '';\r\n try {\r\n const errorData = await response.json();\r\n errorDetails = errorData.error || '';\r\n } catch {\r\n // 忽略 JSON 解析错误\r\n }\r\n throw this.createHttpError(response.status, errorDetails);\r\n }\r\n\r\n const result = await response.json();\r\n\r\n if (!result.success) {\r\n throw new BatchOperationError(\r\n result.error || '恢复分块失败',\r\n 'CHUNK_RESTORE_FAILED',\r\n true,\r\n '请稍后重试'\r\n );\r\n }\r\n\r\n return result;\r\n } catch (error) {\r\n if (error instanceof BatchOperationError) {\r\n throw error;\r\n }\r\n if (error instanceof TypeError && error.message.includes('fetch')) {\r\n throw new BatchOperationError(\r\n '网络连接失败',\r\n 'NETWORK_ERROR',\r\n true,\r\n '请检查网络连接后重试'\r\n );\r\n }\r\n throw new BatchOperationError(\r\n error.message || '恢复分块失败',\r\n 'CHUNK_RESTORE_FAILED',\r\n true,\r\n '请稍后重试'\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * 根据 HTTP 状态码创建错误对象\r\n */\r\n createHttpError(status, details = '') {\r\n switch (status) {\r\n case 401:\r\n return new BatchOperationError(\r\n '认证失败,请重新登录',\r\n 'AUTH_FAILED',\r\n false,\r\n '请刷新页面并重新登录'\r\n );\r\n case 403:\r\n return new BatchOperationError(\r\n '权限不足或请求被拒绝',\r\n 'FORBIDDEN',\r\n false,\r\n '请确认您有管理员权限'\r\n );\r\n case 400:\r\n return new BatchOperationError(\r\n `请求数据无效: ${details}`,\r\n 'INVALID_DATA',\r\n true,\r\n '请检查备份文件格式'\r\n );\r\n case 500:\r\n default:\r\n return new BatchOperationError(\r\n `服务器错误: ${details || status}`,\r\n 'SERVER_ERROR',\r\n true,\r\n '请稍后重试'\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * 延迟执行\r\n */\r\n sleep(ms) {\r\n return new Promise(resolve => setTimeout(resolve, ms));\r\n }\r\n\r\n /**\r\n * 取消当前操作\r\n */\r\n abort() {\r\n this.aborted = true;\r\n }\r\n}\r\n\r\nexport default RestoreProcessor;\r\n","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport \"core-js/modules/es.iterator.reduce.js\";\nimport \"core-js/modules/es.set.difference.v2.js\";\nimport \"core-js/modules/es.set.intersection.v2.js\";\nimport \"core-js/modules/es.set.is-disjoint-from.v2.js\";\nimport \"core-js/modules/es.set.is-subset-of.v2.js\";\nimport \"core-js/modules/es.set.is-superset-of.v2.js\";\nimport \"core-js/modules/es.set.symmetric-difference.v2.js\";\nimport \"core-js/modules/es.set.union.v2.js\";\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nimport packageInfo from '../../../package.json';\nimport { Doughnut, Line } from 'vue-chartjs';\nimport { Chart as ChartJS, ArcElement, Tooltip, Legend, CategoryScale, LinearScale, PointElement, LineElement, Filler } from 'chart.js';\nimport IndexRebuilder from '@/utils/indexRebuilder';\nimport BackupGenerator from '@/utils/backupGenerator';\nimport RestoreProcessor from '@/utils/restoreProcessor';\nimport DateRangeCalendar from '@/components/DateRangeCalendar.vue';\nChartJS.register(ArcElement, Tooltip, Legend, CategoryScale, LinearScale, PointElement, LineElement, Filler);\nconst DAY_MS = 24 * 60 * 60 * 1000;\nfunction padDatePart(value) {\n return String(value).padStart(2, '0');\n}\nfunction formatDateInput(date) {\n return `${date.getFullYear()}-${padDatePart(date.getMonth() + 1)}-${padDatePart(date.getDate())}`;\n}\nfunction getDefaultTrendDateRange() {\n const endDate = new Date();\n endDate.setHours(0, 0, 0, 0);\n const startDate = new Date(endDate.getTime() - 6 * DAY_MS);\n return [formatDateInput(startDate), formatDateInput(endDate)];\n}\nexport default {\n name: 'SysCogStatus',\n components: {\n Doughnut,\n Line,\n DateRangeCalendar\n },\n data() {\n return {\n loading: false,\n rebuilding: false,\n backing: false,\n restoring: false,\n indexInfo: {},\n indexInfoLoaded: false,\n indexInfoError: false,\n currentTime: new Date(),\n clockTimer: null,\n version: packageInfo.version,\n // 从package.json获取版本号\n loadErrors: {\n newest: false,\n oldest: false\n },\n trendGroupBy: 'channel',\n trendDatePickerVisible: false,\n trendDateRange: getDefaultTrendDateRange(),\n // 渠道图表颜色\n channelColors: ['#8B5CF6', '#EC4899', '#06B6D4', '#10B981', '#F59E0B', '#EF4444', '#2563EB', '#84CC16'],\n // 状态图表颜色\n typeColors: ['#10B981', '#3B82F6', '#F59E0B', '#EF4444', '#8B5CF6', '#EC4899', '#06B6D4', '#84CC16'],\n // 上传趋势折线图颜色\n trendColors: ['#2563EB', '#10B981', '#F59E0B', '#EF4444', '#8B5CF6', '#06B6D4', '#EC4899', '#84CC16', '#64748B'],\n // 批量操作进度状态\n isProcessing: false,\n processingPhase: '',\n // fetching, sorting, uploading, finalizing, building, downloading, completed\n processingProgress: {\n current: 0,\n total: 0,\n message: '',\n percentage: 0\n },\n processingError: null,\n processingStartTime: null,\n // 当前处理器实例(用于取消操作)\n currentRebuilder: null,\n currentBackupGenerator: null,\n currentRestoreProcessor: null\n };\n },\n computed: {\n currentLocale() {\n return String(this.$i18n.locale || 'zh-CN');\n },\n indexedFileCount() {\n return Number(this.indexInfo.totalFiles || 0);\n },\n uploadChannelCount() {\n return Object.keys(this.indexInfo.channelStats || {}).length;\n },\n systemHealthState() {\n if (this.indexInfoError) return 'attention';\n if (!this.indexInfoLoaded) return 'checking';\n return 'healthy';\n },\n systemHealthLabel() {\n return this.$t(`sysStatus.health${this.systemHealthState.charAt(0).toUpperCase()}${this.systemHealthState.slice(1)}`);\n },\n greetingTitle() {\n const hour = this.currentTime.getHours();\n if (hour < 5) return this.$t('sysStatus.greetingLateNight');\n if (hour < 11) return this.$t('sysStatus.greetingMorning');\n if (hour < 14) return this.$t('sysStatus.greetingNoon');\n if (hour < 18) return this.$t('sysStatus.greetingAfternoon');\n if (hour < 23) return this.$t('sysStatus.greetingEvening');\n return this.$t('sysStatus.greetingLateNight');\n },\n systemStatusSummary() {\n if (this.indexInfoError) return this.$t('sysStatus.summaryUnavailable');\n if (!this.indexInfoLoaded) return this.$t('sysStatus.summaryChecking');\n if (this.indexedFileCount === 0) return this.$t('sysStatus.summaryEmpty');\n if (this.uploadChannelCount === 0) {\n return this.$t('sysStatus.summaryIndexed', {\n files: this.indexedFileCount.toLocaleString(this.currentLocale)\n });\n }\n return this.$t('sysStatus.summaryHealthy', {\n files: this.indexedFileCount.toLocaleString(this.currentLocale),\n channels: this.uploadChannelCount.toLocaleString(this.currentLocale)\n });\n },\n currentDateLabel() {\n return new Intl.DateTimeFormat(this.currentLocale, {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n weekday: 'long'\n }).format(this.currentTime);\n },\n currentTimeLabel() {\n return new Intl.DateTimeFormat(this.currentLocale, {\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n hour12: false\n }).format(this.currentTime);\n },\n timeZoneLabel() {\n const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone || this.$t('sysStatus.localTimezone');\n const offsetMinutes = -this.currentTime.getTimezoneOffset();\n const sign = offsetMinutes >= 0 ? '+' : '-';\n const absoluteMinutes = Math.abs(offsetMinutes);\n const hours = Math.floor(absoluteMinutes / 60);\n const minutes = absoluteMinutes % 60;\n const offset = minutes === 0 ? `UTC${sign}${hours}` : `UTC${sign}${hours}:${String(minutes).padStart(2, '0')}`;\n return `${timeZone} · ${offset}`;\n },\n // 渠道分布图表数据\n channelChartData() {\n const stats = this.indexInfo.channelStats || {};\n return {\n labels: Object.keys(stats),\n datasets: [{\n data: Object.values(stats),\n backgroundColor: this.channelColors.slice(0, Object.keys(stats).length),\n borderWidth: 0\n }]\n };\n },\n // 文件状态图表数据 - 将Block映射为\"已屏蔽\",其余为\"正常\"\n typeChartData() {\n const aggregatedStats = this.aggregatedTypeStats;\n return {\n labels: Object.keys(aggregatedStats),\n datasets: [{\n data: Object.values(aggregatedStats),\n backgroundColor: this.typeColors.slice(0, Object.keys(aggregatedStats).length),\n borderWidth: 0\n }]\n };\n },\n // 聚合后的状态统计:Block -> 已屏蔽,其余 -> 正常\n aggregatedTypeStats() {\n const stats = this.indexInfo.typeStats || {};\n const aggregatedStats = {};\n for (const [status, count] of Object.entries(stats)) {\n const mappedStatus = status === 'Block' ? this.$t('sysStatus.blocked') : this.$t('sysStatus.normalStatus');\n aggregatedStats[mappedStatus] = (aggregatedStats[mappedStatus] || 0) + count;\n }\n return aggregatedStats;\n },\n // 当前趋势维度数据\n currentTrendGroup() {\n const trend = this.indexInfo.uploadTrend || {};\n const groupBy = trend.groupBy || {};\n return groupBy[this.trendGroupBy] || {\n series: []\n };\n },\n // 趋势图原始日期标签\n trendRawLabels() {\n const trend = this.indexInfo.uploadTrend || {};\n return trend.labels || [];\n },\n // 当前范围是否跨年\n trendRangeCrossesYear() {\n const years = new Set();\n this.trendRawLabels.forEach(label => {\n this.extractTrendLabelDates(label).forEach(date => years.add(date.year));\n });\n return years.size > 1;\n },\n // 用于横轴展示的短日期标签\n trendDisplayLabels() {\n return this.trendRawLabels.map(label => this.formatTrendAxisLabel(label));\n },\n // 是否存在趋势图数据\n hasTrendData() {\n const trend = this.indexInfo.uploadTrend || {};\n return (trend.labels || []).length > 0;\n },\n // 日期选择弹窗宽度保持与项目内其他弹窗一致\n trendDateDialogWidth() {\n return window.innerWidth > 768 ? '420px' : '90%';\n },\n // 上传趋势折线图数据\n uploadTrendChartData() {\n const trend = this.indexInfo.uploadTrend || {};\n const series = this.currentTrendGroup.series || [];\n const totalColor = '#F97316';\n return {\n labels: this.trendDisplayLabels,\n datasets: [{\n label: this.$t('sysStatus.totalUploads'),\n data: trend.total || [],\n borderColor: totalColor,\n backgroundColor: this.hexToRgba(totalColor, 0.1),\n pointBackgroundColor: totalColor,\n pointBorderColor: totalColor,\n borderWidth: 3,\n pointRadius: 2,\n pointHoverRadius: 5,\n tension: 0.28,\n fill: false\n }, ...series.map((item, index) => {\n const color = this.getTrendColor(index);\n return {\n label: this.formatTrendSeriesName(item),\n data: item.data || [],\n borderColor: color,\n backgroundColor: this.hexToRgba(color, 0.12),\n pointBackgroundColor: color,\n pointBorderColor: color,\n borderWidth: 2,\n pointRadius: 2,\n pointHoverRadius: 5,\n tension: 0.32,\n fill: false\n };\n })]\n };\n },\n // 折线图配置\n lineChartOptions() {\n const textColor = '#64748B';\n return {\n responsive: true,\n maintainAspectRatio: false,\n interaction: {\n mode: 'index',\n intersect: false\n },\n plugins: {\n legend: {\n display: true,\n position: 'bottom',\n labels: {\n usePointStyle: true,\n boxWidth: 8,\n boxHeight: 8,\n padding: 16,\n color: textColor\n }\n },\n tooltip: {\n backgroundColor: 'rgba(0, 0, 0, 0.8)',\n titleColor: '#fff',\n bodyColor: '#fff',\n padding: 12,\n cornerRadius: 8,\n displayColors: true,\n callbacks: {\n title: items => {\n const index = items?.[0]?.dataIndex;\n return this.trendRawLabels[index] || '';\n },\n label: context => {\n const parsed = context.parsed || {};\n const value = parsed.y !== undefined ? parsed.y : context.raw;\n return ` ${context.dataset.label}: ${Number(value || 0).toLocaleString()} ${this.$t('sysStatus.uploadsUnit')}`;\n }\n }\n }\n },\n scales: {\n x: {\n grid: {\n display: false\n },\n ticks: {\n color: textColor,\n maxTicksLimit: 8,\n autoSkip: true\n }\n },\n y: {\n beginAtZero: true,\n grid: {\n color: 'rgba(148, 163, 184, 0.18)'\n },\n ticks: {\n color: textColor,\n precision: 0,\n callback: value => Number(value).toLocaleString()\n }\n }\n }\n };\n },\n // 图表配置\n chartOptions() {\n return {\n responsive: true,\n maintainAspectRatio: true,\n cutout: '65%',\n hoverOffset: 8,\n layout: {\n padding: 10\n },\n plugins: {\n legend: {\n display: false\n },\n tooltip: {\n backgroundColor: 'rgba(0, 0, 0, 0.8)',\n titleColor: '#fff',\n bodyColor: '#fff',\n padding: 12,\n cornerRadius: 8,\n displayColors: true,\n z: 100,\n callbacks: {\n label: context => {\n const value = context.raw;\n const total = context.dataset.data.reduce((a, b) => a + b, 0);\n const percentage = (value / total * 100).toFixed(1);\n return ` ${value.toLocaleString()} (${percentage}%)`;\n }\n }\n }\n },\n animation: {\n animateRotate: true,\n animateScale: true\n }\n };\n },\n // 预计剩余时间\n estimatedTimeRemaining() {\n if (!this.isProcessing || !this.processingStartTime) return '';\n if (this.processingProgress.current === 0 || this.processingProgress.percentage === 0) return '';\n const elapsed = Date.now() - this.processingStartTime;\n const progress = this.processingProgress.percentage / 100;\n if (progress <= 0) return '';\n const totalEstimated = elapsed / progress;\n const remaining = totalEstimated - elapsed;\n if (remaining <= 0) return this.$t('sysStatus.aboutToComplete');\n const seconds = Math.ceil(remaining / 1000);\n if (seconds < 60) return this.$t('sysStatus.seconds', {\n count: seconds\n });\n const minutes = Math.ceil(seconds / 60);\n if (minutes < 60) return this.$t('sysStatus.minutes', {\n count: minutes\n });\n const hours = Math.floor(minutes / 60);\n const remainingMinutes = minutes % 60;\n return this.$t('sysStatus.hoursMinutes', {\n hours,\n minutes: remainingMinutes\n });\n },\n // 处理阶段描述\n phaseDescription() {\n const phaseMap = {\n 'fetching': this.$t('sysStatus.phaseFetching'),\n 'sorting': this.$t('sysStatus.phaseSorting'),\n 'uploading': this.$t('sysStatus.phaseUploading'),\n 'finalizing': this.$t('sysStatus.phaseFinalizing'),\n 'building': this.$t('sysStatus.phaseBuilding'),\n 'downloading': this.$t('sysStatus.phaseDownloading'),\n 'restoring_files': this.$t('sysStatus.phaseRestoringFiles'),\n 'restoring_settings': this.$t('sysStatus.phaseRestoringSettings'),\n 'completed': this.$t('sysStatus.phaseCompleted'),\n 'retrying': this.$t('sysStatus.phaseRetrying')\n };\n return phaseMap[this.processingPhase] || this.processingPhase;\n }\n },\n mounted() {\n this.fetchIndexInfo();\n this.clockTimer = window.setInterval(() => {\n this.currentTime = new Date();\n }, 1000);\n },\n beforeUnmount() {\n if (this.clockTimer) {\n window.clearInterval(this.clockTimer);\n this.clockTimer = null;\n }\n },\n methods: {\n // 获取渠道图表颜色\n getChartColor(index) {\n return this.channelColors[index % this.channelColors.length];\n },\n // 获取状态图表颜色\n getTypeChartColor(index) {\n return this.typeColors[index % this.typeColors.length];\n },\n // 获取趋势图表颜色\n getTrendColor(index) {\n return this.trendColors[index % this.trendColors.length];\n },\n // 格式化趋势序列名称\n formatTrendSeriesName(series) {\n if (series?.isOther || series?.name === '__other__') {\n return this.$t('sysStatus.otherChannels');\n }\n return series?.name || this.$t('sysStatus.unknown');\n },\n // 十六进制颜色转换为 rgba\n hexToRgba(hex, alpha) {\n const normalized = (hex || '').replace('#', '');\n if (normalized.length !== 6) {\n return `rgba(37, 99, 235, ${alpha})`;\n }\n const r = parseInt(normalized.slice(0, 2), 16);\n const g = parseInt(normalized.slice(2, 4), 16);\n const b = parseInt(normalized.slice(4, 6), 16);\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n },\n // 提取趋势标签中的日期\n extractTrendLabelDates(label) {\n const matches = String(label || '').match(/\\d{4}-\\d{2}-\\d{2}/g) || [];\n return matches.map(item => {\n const [year, month, day] = item.split('-').map(Number);\n return {\n year,\n month,\n day\n };\n });\n },\n // 横轴日期标签按范围简化,仅跨年时显示年份\n formatTrendAxisLabel(label) {\n const dates = this.extractTrendLabelDates(label);\n if (dates.length === 0) return label;\n const formatSingleDate = (date, includeYear) => {\n const monthDay = `${date.month}/${date.day}`;\n return includeYear ? `${date.year}/${monthDay}` : monthDay;\n };\n if (dates.length === 1) {\n return formatSingleDate(dates[0], this.trendRangeCrossesYear);\n }\n const [startDate, endDate] = dates;\n if (!this.trendRangeCrossesYear) {\n return `${formatSingleDate(startDate, false)}-${formatSingleDate(endDate, false)}`;\n }\n const endLabel = startDate.year === endDate.year ? formatSingleDate(endDate, false) : formatSingleDate(endDate, true);\n return `${formatSingleDate(startDate, true)}-${endLabel}`;\n },\n // 打开居中的日期范围选择弹窗\n openTrendDateDialog() {\n this.trendDatePickerVisible = true;\n },\n // 日期范围变更后重新拉取趋势数据\n handleTrendDateRangeChange(value) {\n if (!Array.isArray(value) || value.length !== 2 || !value[0] || !value[1]) {\n return;\n }\n this.trendDatePickerVisible = false;\n this.fetchIndexInfo();\n },\n // 获取趋势查询参数\n getTrendDateRangeParams() {\n if (!Array.isArray(this.trendDateRange) || this.trendDateRange.length !== 2) {\n this.trendDateRange = getDefaultTrendDateRange();\n }\n return {\n startDate: this.trendDateRange[0],\n endDate: this.trendDateRange[1]\n };\n },\n // 获取索引信息\n async fetchIndexInfo() {\n this.loading = true;\n this.indexInfoError = false;\n try {\n const {\n startDate,\n endDate\n } = this.getTrendDateRangeParams();\n const params = new URLSearchParams({\n action: 'info',\n timezoneOffset: String(new Date().getTimezoneOffset()),\n trendMaxPoints: '90',\n trendSeriesLimit: '8',\n trendStartDate: startDate,\n trendEndDate: endDate\n });\n const response = await fetchWithAuth(`/api/manage/list?${params.toString()}`, {\n method: 'GET'\n });\n if (response.ok) {\n const data = await response.json();\n this.indexInfo = data;\n this.indexInfoLoaded = true;\n } else {\n throw new Error('API请求失败');\n }\n } catch (error) {\n console.error('获取索引信息失败:', error);\n this.indexInfoError = true;\n this.$message.error(this.$t('sysStatus.fetchIndexFailed'));\n } finally {\n this.loading = false;\n }\n },\n // 重建索引 - 使用前端辅助重建流程\n async rebuildIndex() {\n if (this.isProcessing) {\n this.$message.warning(this.$t('sysStatus.operationInProgress'));\n return;\n }\n this.rebuilding = true;\n this.isProcessing = true;\n this.processingError = null;\n this.processingStartTime = Date.now();\n this.processingProgress = {\n current: 0,\n total: 0,\n message: '',\n percentage: 0\n };\n\n // 创建 IndexRebuilder 实例\n this.currentRebuilder = new IndexRebuilder({\n onProgress: progress => this.handleProgress(progress),\n onError: error => this.handleError(error)\n });\n try {\n const result = await this.currentRebuilder.rebuild();\n\n // 成功完成\n this.$message.success(this.$t('sysStatus.rebuildSuccess', {\n count: result.totalFiles.toLocaleString()\n }));\n\n // 刷新索引信息\n setTimeout(() => {\n this.fetchIndexInfo();\n }, 1000);\n } catch (error) {\n // 错误处理\n if (error.code !== 'ABORTED') {\n const errorMessage = error.suggestion ? `${error.message}。${error.suggestion}` : error.message;\n this.$message.error(errorMessage);\n this.processingError = {\n message: error.message,\n suggestion: error.suggestion,\n recoverable: error.recoverable\n };\n }\n } finally {\n this.rebuilding = false;\n this.isProcessing = false;\n this.currentRebuilder = null;\n this.processingStartTime = null;\n }\n },\n // 备份数据 - 使用前端辅助备份流程\n async backupData() {\n if (this.isProcessing) {\n this.$message.warning(this.$t('sysStatus.operationInProgress'));\n return;\n }\n this.backing = true;\n this.isProcessing = true;\n this.processingError = null;\n this.processingStartTime = Date.now();\n this.processingProgress = {\n current: 0,\n total: 0,\n message: '',\n percentage: 0\n };\n\n // 创建 BackupGenerator 实例\n this.currentBackupGenerator = new BackupGenerator({\n onProgress: progress => this.handleProgress(progress)\n });\n try {\n const result = await this.currentBackupGenerator.generateBackup();\n\n // 成功完成\n const settingsMsg = result.settingsCount > 0 ? this.$t('sysStatus.backupSuccessWithSettings', {\n fileCount: result.fileCount.toLocaleString(),\n settingsCount: result.settingsCount\n }) : this.$t('sysStatus.backupSuccess', {\n count: result.fileCount.toLocaleString()\n });\n this.$message.success(settingsMsg);\n } catch (error) {\n // 错误处理\n if (error.code !== 'ABORTED') {\n const errorMessage = error.suggestion ? `${error.message}。${error.suggestion}` : error.message;\n this.$message.error(errorMessage);\n this.processingError = {\n message: error.message,\n suggestion: error.suggestion,\n recoverable: error.recoverable\n };\n }\n } finally {\n this.backing = false;\n this.isProcessing = false;\n this.currentBackupGenerator = null;\n this.processingStartTime = null;\n }\n },\n // 选择恢复文件\n selectRestoreFile() {\n if (this.restoring) return;\n this.$refs.fileInput.click();\n },\n // 处理文件选择\n async handleFileSelect(event) {\n const file = event.target.files[0];\n if (!file) return;\n if (!file.name.endsWith('.json')) {\n this.$message.error(this.$t('sysStatus.selectJsonFile'));\n return;\n }\n\n // 确认恢复操作\n try {\n await this.$confirm(this.$t('sysStatus.restoreConfirmMessage'), this.$t('sysStatus.restoreConfirmTitle'), {\n confirmButtonText: this.$t('sysStatus.restoreConfirmOk'),\n cancelButtonText: this.$t('sysStatus.restoreConfirmCancel'),\n type: 'warning'\n });\n await this.restoreData(file);\n } catch (error) {\n if (error !== 'cancel') {\n console.error('确认恢复失败:', error);\n }\n }\n\n // 清除文件选择\n event.target.value = '';\n },\n // 恢复数据 - 使用前端辅助分批恢复流程\n async restoreData(file) {\n if (this.isProcessing) {\n this.$message.warning(this.$t('sysStatus.operationInProgress'));\n return;\n }\n this.restoring = true;\n this.isProcessing = true;\n this.processingError = null;\n this.processingStartTime = Date.now();\n this.processingProgress = {\n current: 0,\n total: 0,\n message: '',\n percentage: 0\n };\n try {\n // 解析备份文件\n const fileContent = await file.text();\n let backupData;\n try {\n backupData = JSON.parse(fileContent);\n } catch (parseError) {\n throw new Error(this.$t('sysStatus.invalidBackupFile'));\n }\n\n // 创建 RestoreProcessor 实例\n this.currentRestoreProcessor = new RestoreProcessor({\n chunkSize: 100,\n // 每批恢复 100 条\n onProgress: progress => this.handleProgress(progress),\n onError: error => this.handleError(error)\n });\n const result = await this.currentRestoreProcessor.restore(backupData);\n\n // 恢复完成,重置恢复状态\n this.restoring = false;\n this.isProcessing = false;\n this.currentRestoreProcessor = null;\n this.processingStartTime = null;\n\n // 显示恢复成功消息\n this.$message.success(this.$t('sysStatus.restoreSuccess', {\n files: result.restoredFiles,\n settings: result.restoredSettings\n }));\n\n // 短暂延迟后自动开始重建索引\n await new Promise(resolve => setTimeout(resolve, 500));\n await this.rebuildIndex();\n } catch (error) {\n console.error('恢复数据失败:', error);\n\n // 出错时重置状态\n this.restoring = false;\n this.isProcessing = false;\n this.currentRestoreProcessor = null;\n this.processingStartTime = null;\n if (error.code !== 'ABORTED') {\n const errorMessage = error.suggestion ? `${error.message}。${error.suggestion}` : error.message;\n this.$message.error(this.$t('sysStatus.restoreFailed') + ': ' + errorMessage);\n this.processingError = {\n message: error.message,\n suggestion: error.suggestion,\n recoverable: error.recoverable\n };\n }\n }\n },\n // 格式化时间\n formatTime(timestamp) {\n if (!timestamp) return this.$t('sysStatus.unknown');\n const date = new Date(timestamp);\n return date.toLocaleString('zh-CN', {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit'\n });\n },\n // 计算百分比\n getPercentage(value, total) {\n if (!total || total === 0) return 0;\n return Math.round(value / total * 100);\n },\n // 计算时间差\n getTimeAgo(timestamp) {\n if (!timestamp) return '';\n const now = Date.now();\n const diff = now - timestamp;\n const minutes = Math.floor(diff / 60000);\n const hours = Math.floor(diff / 3600000);\n const days = Math.floor(diff / 86400000);\n if (days > 0) return this.$t('sysStatus.daysAgo', {\n count: days\n });\n if (hours > 0) return this.$t('sysStatus.hoursAgo', {\n count: hours\n });\n if (minutes > 0) return this.$t('sysStatus.minutesAgo', {\n count: minutes\n });\n return this.$t('sysStatus.justNow');\n },\n // 图片加载失败处理\n handleImageError(type) {\n this.loadErrors[type] = true;\n },\n // 检查是否应该显示预览图\n isValidPreview(type, file) {\n if (this.loadErrors[type]) return false;\n if (!file?.metadata?.FileType) return false;\n return file.metadata.FileType.includes('image') || file.metadata.FileType.includes('video');\n },\n // 打开发布页面\n openReleases() {\n window.open('https://github.com/MarSeventh/CloudFlare-ImgBed/releases', '_blank');\n },\n // 判断是否为图片文件\n isImageFile(file) {\n if (!file) return false;\n // 优先通过 FileType 判断\n if (file.metadata?.FileType?.includes('image')) return true;\n // 通过文件名后缀判断\n const fileName = file.metadata?.FileName || file.id || '';\n const extension = fileName.substring(fileName.lastIndexOf('.') + 1).toLowerCase();\n const imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'ico', 'tiff', 'tif', 'avif', 'heic', 'heif'];\n return imageExtensions.includes(extension);\n },\n // 判断是否为视频文件\n isVideoFile(file) {\n if (!file) return false;\n // 优先通过 FileType 判断\n if (file.metadata?.FileType?.includes('video')) return true;\n // 通过文件名后缀判断\n const fileName = file.metadata?.FileName || file.id || '';\n const extension = fileName.substring(fileName.lastIndexOf('.') + 1).toLowerCase();\n const videoExtensions = ['mp4', 'webm', 'ogg', 'avi', 'mov', 'flv', 'wmv', 'mkv', 'm4v', '3gp', 'mpeg', 'mpg'];\n return videoExtensions.includes(extension);\n },\n // 在新窗口打开文件\n openFileInNewTab(file) {\n if (!file?.id) return;\n window.open('/file/' + file.id + '?from=admin', '_blank');\n },\n // 处理进度更新\n handleProgress(progress) {\n this.processingPhase = progress.phase;\n this.processingProgress.message = progress.message || '';\n this.processingProgress.current = progress.current || 0;\n\n // 根据不同阶段计算进度百分比\n if (progress.phase === 'fetching') {\n // 获取阶段:基于已获取的记录数估算(假设总数未知时显示已获取数量)\n this.processingProgress.total = progress.total || 0;\n // 获取阶段占总进度的 60%\n if (progress.total && progress.total > 0) {\n this.processingProgress.percentage = Math.min(60, progress.current / progress.total * 60);\n } else {\n // 未知总数时,使用对数增长模拟进度\n this.processingProgress.percentage = Math.min(50, Math.log10(progress.current + 1) * 15);\n }\n } else if (progress.phase === 'sorting') {\n // 排序阶段:占 60-70%\n this.processingProgress.percentage = 65;\n this.processingProgress.total = progress.total || this.processingProgress.total;\n } else if (progress.phase === 'uploading') {\n // 上传阶段:占 70-95%\n this.processingProgress.total = progress.total || 0;\n if (progress.total && progress.total > 0) {\n this.processingProgress.percentage = 70 + progress.current / progress.total * 25;\n }\n } else if (progress.phase === 'finalizing') {\n // 完成阶段:95-100%\n this.processingProgress.percentage = 97;\n } else if (progress.phase === 'building') {\n // 构建备份阶段:70-90%\n this.processingProgress.percentage = 80;\n } else if (progress.phase === 'downloading') {\n // 下载阶段:90-100%\n this.processingProgress.percentage = 95;\n } else if (progress.phase === 'restoring_files') {\n // 恢复文件阶段:0-80%\n this.processingProgress.total = progress.total || 0;\n this.processingProgress.percentage = progress.percentage || 0;\n } else if (progress.phase === 'restoring_settings') {\n // 恢复设置阶段:80-100%\n this.processingProgress.total = progress.total || 0;\n this.processingProgress.percentage = progress.percentage || 80;\n } else if (progress.phase === 'completed') {\n // 完成\n this.processingProgress.percentage = 100;\n } else if (progress.phase === 'retrying') {\n // 重试阶段:保持当前进度\n this.processingProgress.message = progress.message;\n }\n },\n // 处理错误\n handleError(error) {\n console.error('批量操作错误:', error);\n this.processingError = {\n message: error.message,\n suggestion: error.suggestion,\n recoverable: error.recoverable\n };\n },\n // 取消当前操作\n cancelOperation() {\n if (this.currentRebuilder) {\n this.currentRebuilder.abort();\n this.$message.info(this.$t('sysStatus.cancellingRebuild'));\n }\n if (this.currentBackupGenerator) {\n this.currentBackupGenerator.abort();\n this.$message.info(this.$t('sysStatus.cancellingRebuild'));\n }\n if (this.currentRestoreProcessor) {\n this.currentRestoreProcessor.abort();\n this.$message.info(this.$t('sysStatus.cancellingRebuild'));\n }\n },\n // 重试操作\n retryOperation() {\n this.processingError = null;\n if (this.rebuilding) {\n this.rebuilding = false;\n this.isProcessing = false;\n this.$nextTick(() => {\n this.rebuildIndex();\n });\n } else if (this.backing) {\n this.backing = false;\n this.isProcessing = false;\n this.$nextTick(() => {\n this.backupData();\n });\n }\n },\n // 关闭错误提示\n dismissError() {\n this.processingError = null;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./SysCogStatus.vue?vue&type=template&id=776bcef4&scoped=true\"\nimport script from \"./SysCogStatus.vue?vue&type=script&lang=js\"\nexport * from \"./SysCogStatus.vue?vue&type=script&lang=js\"\n\nimport \"./SysCogStatus.vue?vue&type=style&index=0&id=776bcef4&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-776bcef4\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, renderSlot as _renderSlot, createBlock as _createBlock, createCommentVNode as _createCommentVNode, vShow as _vShow, withModifiers as _withModifiers, withDirectives as _withDirectives, Transition as _Transition, withCtx as _withCtx, normalizeStyle as _normalizeStyle } from \"vue\";\nconst _hoisted_1 = [\"onClick\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_ChannelIcon = _resolveComponent(\"ChannelIcon\");\n return _openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"custom-select\", {\n 'is-open': $data.isOpen\n }]),\n style: _normalizeStyle({\n width: $props.width\n })\n }, [_createElementVNode(\"div\", {\n class: \"custom-select-trigger\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.toggleDropdown && $options.toggleDropdown(...args))\n }, [_createElementVNode(\"span\", {\n class: _normalizeClass([\"custom-select-value\", {\n 'is-placeholder': !$props.modelValue\n }])\n }, _toDisplayString($options.displayLabel), 3), _createVNode(_component_font_awesome_icon, {\n icon: \"chevron-down\",\n class: \"custom-select-arrow\"\n })]), _createVNode(_Transition, {\n name: \"dropdown-fade\"\n }, {\n default: _withCtx(() => [_withDirectives(_createElementVNode(\"div\", {\n class: \"custom-select-dropdown\",\n onClick: _cache[1] || (_cache[1] = _withModifiers(() => {}, [\"stop\"]))\n }, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.options, option => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: option.value,\n class: _normalizeClass([\"custom-select-option\", {\n 'is-selected': $props.modelValue === option.value\n }]),\n onClick: $event => $options.selectOption(option.value)\n }, [_renderSlot(_ctx.$slots, \"option\", {\n option: option\n }, () => [option.channelType ? (_openBlock(), _createBlock(_component_ChannelIcon, {\n key: 0,\n type: option.channelType,\n class: _normalizeClass(['option-icon', option.iconClass])\n }, null, 8, [\"type\", \"class\"])) : option.icon ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 1,\n icon: option.icon,\n class: _normalizeClass(['option-icon', option.iconClass])\n }, null, 8, [\"icon\", \"class\"])) : _createCommentVNode(\"\", true), _createElementVNode(\"span\", null, _toDisplayString(option.label), 1)], true)], 10, _hoisted_1);\n }), 128))], 512), [[_vShow, $data.isOpen]])]),\n _: 3\n })], 6);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.find.js\";\nimport ChannelIcon from '@/components/icons/ChannelIcon.vue';\nexport default {\n name: 'CustomSelect',\n components: {\n ChannelIcon\n },\n props: {\n modelValue: {\n type: [String, Number],\n default: ''\n },\n options: {\n type: Array,\n required: true\n // 格式: [{ value: '', label: '', icon?: '', iconClass?: '', channelType?: '' }]\n },\n placeholder: {\n type: String,\n default: ''\n },\n width: {\n type: String,\n default: '160px'\n }\n },\n emits: ['update:modelValue', 'change'],\n data() {\n return {\n isOpen: false\n };\n },\n computed: {\n resolvedPlaceholder() {\n return this.placeholder || this.$t('common.select');\n },\n displayLabel() {\n const selected = this.options.find(opt => opt.value === this.modelValue);\n return selected ? selected.label : this.resolvedPlaceholder;\n }\n },\n mounted() {\n document.addEventListener('click', this.handleClickOutside);\n },\n beforeUnmount() {\n document.removeEventListener('click', this.handleClickOutside);\n },\n methods: {\n toggleDropdown() {\n this.isOpen = !this.isOpen;\n },\n selectOption(value) {\n this.$emit('update:modelValue', value);\n this.$emit('change', value);\n this.isOpen = false;\n },\n handleClickOutside(e) {\n if (!this.$el.contains(e.target)) {\n this.isOpen = false;\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./CustomSelect.vue?vue&type=template&id=b9420432&scoped=true\"\nimport script from \"./CustomSelect.vue?vue&type=script&lang=js\"\nexport * from \"./CustomSelect.vue?vue&type=script&lang=js\"\n\nimport \"./CustomSelect.vue?vue&type=style&index=0&id=b9420432&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-b9420432\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, withModifiers as _withModifiers, normalizeClass as _normalizeClass, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"upload-settings\"\n};\nconst _hoisted_2 = {\n class: \"page-header\"\n};\nconst _hoisted_3 = {\n class: \"first-title\"\n};\nconst _hoisted_4 = {\n class: \"header-actions\"\n};\nconst _hoisted_5 = {\n class: \"group-header\"\n};\nconst _hoisted_6 = {\n class: \"group-title\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"load-balance-switch\"\n};\nconst _hoisted_8 = {\n class: \"switch-label\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"channel-cards\"\n};\nconst _hoisted_10 = [\"onMousemove\", \"onMouseleave\"];\nconst _hoisted_11 = {\n class: \"card-header\"\n};\nconst _hoisted_12 = {\n class: \"card-title\"\n};\nconst _hoisted_13 = {\n class: \"channel-name\"\n};\nconst _hoisted_14 = {\n class: \"card-body\"\n};\nconst _hoisted_15 = {\n class: \"card-info\"\n};\nconst _hoisted_16 = {\n class: \"info-item\"\n};\nconst _hoisted_17 = {\n class: \"info-text\"\n};\nconst _hoisted_18 = {\n key: 0,\n class: \"info-item\"\n};\nconst _hoisted_19 = {\n class: \"info-text\"\n};\nconst _hoisted_20 = {\n key: 1,\n class: \"info-item\"\n};\nconst _hoisted_21 = [\"title\"];\nconst _hoisted_22 = {\n class: \"info-item\"\n};\nconst _hoisted_23 = {\n class: \"info-text\"\n};\nconst _hoisted_24 = {\n key: 0,\n class: \"info-item\"\n};\nconst _hoisted_25 = [\"title\"];\nconst _hoisted_26 = {\n class: \"info-item\"\n};\nconst _hoisted_27 = {\n class: \"info-text\"\n};\nconst _hoisted_28 = {\n class: \"info-item\"\n};\nconst _hoisted_29 = {\n class: \"info-text\"\n};\nconst _hoisted_30 = {\n class: \"info-item\"\n};\nconst _hoisted_31 = {\n class: \"info-text\"\n};\nconst _hoisted_32 = {\n class: \"info-item\"\n};\nconst _hoisted_33 = [\"title\"];\nconst _hoisted_34 = {\n key: 0,\n class: \"info-item\"\n};\nconst _hoisted_35 = [\"title\"];\nconst _hoisted_36 = {\n key: 0,\n class: \"quota-mini\"\n};\nconst _hoisted_37 = {\n class: \"quota-text\"\n};\nconst _hoisted_38 = {\n class: \"card-actions\"\n};\nconst _hoisted_39 = {\n key: 1,\n class: \"empty-tip\"\n};\nconst _hoisted_40 = {\n class: \"channel-type-option\"\n};\nconst _hoisted_41 = {\n key: 0,\n class: \"form-warning\",\n style: {\n \"margin-top\": \"0\"\n }\n};\nconst _hoisted_42 = [\"innerHTML\"];\nconst _hoisted_43 = {\n class: \"form-warning\"\n};\nconst _hoisted_44 = {\n class: \"quota-label\"\n};\nconst _hoisted_45 = {\n class: \"quota-status\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_CustomSelect = _resolveComponent(\"CustomSelect\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_ChannelIcon = _resolveComponent(\"ChannelIcon\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_progress = _resolveComponent(\"el-progress\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_input_number = _resolveComponent(\"el-input-number\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _component_el_descriptions_item = _resolveComponent(\"el-descriptions-item\");\n const _component_el_descriptions = _resolveComponent(\"el-descriptions\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"h3\", _hoisted_3, [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.title')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysUpload.titleTooltip'),\n placement: \"right\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_CustomSelect, {\n modelValue: $data.channelFilter,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.channelFilter = $event),\n options: $options.filterOptions,\n placeholder: _ctx.$t('sysUpload.filterPlaceholder'),\n width: \"160px\"\n }, null, 8, [\"modelValue\", \"options\", \"placeholder\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[1] || (_cache[1] = $event => $data.showAddDialog = true),\n class: \"add-btn\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"plus\",\n style: {\n \"margin-right\": \"6px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('sysUpload.addChannel')), 1)]),\n _: 1\n })])]), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.filteredChannels, channelType => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: channelType.value,\n class: \"channel-group\"\n }, [_createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_ChannelIcon, {\n type: channelType.value,\n class: \"group-icon\"\n }, null, 8, [\"type\"]), _createElementVNode(\"span\", null, _toDisplayString(channelType.label), 1), _createVNode(_component_el_tag, {\n size: \"small\",\n type: \"info\",\n class: \"channel-count\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.getChannelList(channelType.value).length), 1)]),\n _: 2\n }, 1024)]), $options.hasLoadBalance(channelType.value) ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [_createElementVNode(\"span\", _hoisted_8, _toDisplayString(_ctx.$t('sysUpload.loadBalance')), 1), _createVNode(_component_el_switch, {\n modelValue: $options.getSettings(channelType.value).loadBalance.enabled,\n \"onUpdate:modelValue\": $event => $options.getSettings(channelType.value).loadBalance.enabled = $event,\n size: \"small\",\n onChange: $options.saveSettings\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\", \"onChange\"])])) : _createCommentVNode(\"\", true)]), $options.getChannelList(channelType.value).length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.getChannelList(channelType.value), (channel, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: channel.name || index,\n class: _normalizeClass([\"channel-card\", [channelType.value, {\n 'disabled': !channel.enabled,\n 'fixed': channel.fixed\n }]]),\n onMousemove: $event => $options.handleCardMouseMove($event, channelType.value, index),\n onMouseleave: $event => $options.handleCardMouseLeave(channelType.value, index)\n }, [_createElementVNode(\"div\", {\n class: \"card-glow\",\n ref_for: true,\n ref: `glow-${channelType.value}-${index}`\n }, null, 512), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"span\", _hoisted_13, _toDisplayString(channel.name || _ctx.$t('sysUpload.unnamedChannel')), 1), channel.fixed ? (_openBlock(), _createBlock(_component_el_tag, {\n key: 0,\n size: \"small\",\n type: \"warning\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.envVariable')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true)]), _createVNode(_component_el_switch, {\n modelValue: channel.enabled,\n \"onUpdate:modelValue\": $event => channel.enabled = $event,\n size: \"small\",\n onClick: _cache[2] || (_cache[2] = _withModifiers(() => {}, [\"stop\"])),\n onChange: $options.saveSettings\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\", \"onChange\"])]), _createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"div\", _hoisted_15, [channelType.value === 'telegram' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [_createElementVNode(\"div\", _hoisted_16, [_createVNode(_component_font_awesome_icon, {\n icon: \"robot\",\n class: \"info-icon\"\n }), _createElementVNode(\"span\", _hoisted_17, \"Bot: \" + _toDisplayString($options.maskText(channel.botToken)), 1)]), channel.chatId ? (_openBlock(), _createElementBlock(\"div\", _hoisted_18, [_createVNode(_component_font_awesome_icon, {\n icon: \"comments\",\n class: \"info-icon\"\n }), _createElementVNode(\"span\", _hoisted_19, \"Channel: \" + _toDisplayString($options.maskText(channel.chatId)), 1)])) : _createCommentVNode(\"\", true)], 64)) : channelType.value === 'cfr2' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_20, [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"info-icon\"\n }), _createElementVNode(\"span\", {\n class: \"info-text\",\n title: channel.publicUrl\n }, _toDisplayString(channel.publicUrl || _ctx.$t('sysUpload.notSet')), 9, _hoisted_21)])) : channelType.value === 's3' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 2\n }, [_createElementVNode(\"div\", _hoisted_22, [_createVNode(_component_font_awesome_icon, {\n icon: \"server\",\n class: \"info-icon\"\n }), _createElementVNode(\"span\", _hoisted_23, _toDisplayString(channel.bucketName || _ctx.$t('sysUpload.notSet')), 1)]), channel.endpoint ? (_openBlock(), _createElementBlock(\"div\", _hoisted_24, [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"info-icon\"\n }), _createElementVNode(\"span\", {\n class: \"info-text\",\n title: channel.endpoint\n }, _toDisplayString(channel.endpoint), 9, _hoisted_25)])) : _createCommentVNode(\"\", true)], 64)) : channelType.value === 'discord' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 3\n }, [_createElementVNode(\"div\", _hoisted_26, [_createVNode(_component_font_awesome_icon, {\n icon: \"robot\",\n class: \"info-icon\"\n }), _createElementVNode(\"span\", _hoisted_27, \"Bot: \" + _toDisplayString($options.maskText(channel.botToken)), 1)]), _createElementVNode(\"div\", _hoisted_28, [_createVNode(_component_font_awesome_icon, {\n icon: \"hashtag\",\n class: \"info-icon\"\n }), _createElementVNode(\"span\", _hoisted_29, \"Channel: \" + _toDisplayString($options.maskText(channel.channelId)), 1)]), channel.isNitro ? (_openBlock(), _createBlock(_component_el_tag, {\n key: 0,\n size: \"small\",\n type: \"success\"\n }, {\n default: _withCtx(() => [...(_cache[78] || (_cache[78] = [_createTextVNode(\"Nitro\", -1)]))]),\n _: 1\n })) : _createCommentVNode(\"\", true)], 64)) : channelType.value === 'huggingface' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 4\n }, [_createElementVNode(\"div\", _hoisted_30, [_createVNode(_component_font_awesome_icon, {\n icon: \"database\",\n class: \"info-icon\"\n }), _createElementVNode(\"span\", _hoisted_31, _toDisplayString(channel.repo || _ctx.$t('sysUpload.notSet')), 1)]), channel.isPrivate ? (_openBlock(), _createBlock(_component_el_tag, {\n key: 0,\n size: \"small\",\n type: \"warning\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.privateRepo')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true)], 64)) : channelType.value === 'webdav' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 5\n }, [_createElementVNode(\"div\", _hoisted_32, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder\",\n class: \"info-icon\"\n }), _createElementVNode(\"span\", {\n class: \"info-text\",\n title: channel.baseUrl\n }, _toDisplayString(channel.baseUrl || _ctx.$t('sysUpload.notSet')), 9, _hoisted_33)]), channel.publicUrl ? (_openBlock(), _createElementBlock(\"div\", _hoisted_34, [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"info-icon\"\n }), _createElementVNode(\"span\", {\n class: \"info-text\",\n title: channel.publicUrl\n }, _toDisplayString(channel.publicUrl), 9, _hoisted_35)])) : _createCommentVNode(\"\", true)], 64)) : _createCommentVNode(\"\", true)]), channel.quota?.enabled ? (_openBlock(), _createElementBlock(\"div\", _hoisted_36, [_createVNode(_component_el_progress, {\n percentage: $options.getQuotaPercentage(channel),\n status: $options.getQuotaStatus(channel),\n \"stroke-width\": 6\n }, null, 8, [\"percentage\", \"status\"]), _createElementVNode(\"span\", _hoisted_37, _toDisplayString($options.getQuotaText(channel)), 1)])) : _createCommentVNode(\"\", true)]), _createElementVNode(\"div\", _hoisted_38, [_createVNode(_component_el_button, {\n text: \"\",\n type: \"primary\",\n size: \"small\",\n onClick: $event => $options.openDetailDialog(channelType.value, index)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"eye\",\n style: {\n \"margin-right\": \"4px\"\n }\n }), _createTextVNode(_toDisplayString(_ctx.$t('sysUpload.detail')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n text: \"\",\n type: \"primary\",\n size: \"small\",\n onClick: $event => $options.openEditDialog(channelType.value, index)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"edit\",\n style: {\n \"margin-right\": \"4px\"\n }\n }), _createTextVNode(_toDisplayString(_ctx.$t('sysUpload.editBtn')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n text: \"\",\n type: \"danger\",\n size: \"small\",\n onClick: $event => $options.deleteChannel(channelType.value, index),\n disabled: channel.fixed\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\",\n style: {\n \"margin-right\": \"4px\"\n }\n }), _createTextVNode(_toDisplayString(_ctx.$t('sysUpload.deleteBtn')), 1)]),\n _: 1\n }, 8, [\"onClick\", \"disabled\"])])], 42, _hoisted_10);\n }), 128))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_39, [_createVNode(_component_font_awesome_icon, {\n icon: \"inbox\",\n class: \"empty-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('sysUpload.noChannels', {\n type: channelType.label\n })), 1)]))]);\n }), 128)), _createVNode(_component_el_dialog, {\n modelValue: $data.showAddDialog,\n \"onUpdate:modelValue\": _cache[35] || (_cache[35] = $event => $data.showAddDialog = $event),\n title: _ctx.$t('sysUpload.addDialogTitle'),\n class: \"channel-dialog\",\n \"destroy-on-close\": \"\",\n onClosed: $options.resetAddForm\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[34] || (_cache[34] = $event => $data.showAddDialog = false)\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.cancel')), 1)]),\n _: 1\n }), $data.newChannel.type !== 'cfr2' ? (_openBlock(), _createBlock(_component_el_button, {\n key: 0,\n type: \"primary\",\n onClick: $options.confirmAddChannel\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.confirmAdd')), 1)]),\n _: 1\n }, 8, [\"onClick\"])) : _createCommentVNode(\"\", true)]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $data.newChannel,\n \"label-position\": \"top\",\n ref: \"addForm\",\n rules: $options.addRules\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.channelTypeLabel'),\n prop: \"type\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $data.newChannel.type,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.newChannel.type = $event),\n placeholder: _ctx.$t('sysUpload.channelTypePlaceholder'),\n style: {\n \"width\": \"100%\"\n },\n onChange: $options.onChannelTypeChange\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.addableChannels, ch => {\n return _openBlock(), _createBlock(_component_el_option, {\n key: ch.value,\n label: ch.label,\n value: ch.value\n }, {\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_40, [_createVNode(_component_ChannelIcon, {\n type: ch.value,\n class: \"select-option-icon\"\n }, null, 8, [\"type\"]), _createElementVNode(\"span\", null, _toDisplayString(ch.label), 1)])]),\n _: 2\n }, 1032, [\"label\", \"value\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\", \"placeholder\", \"onChange\"])]),\n _: 1\n }, 8, [\"label\"]), $data.newChannel.type === 'cfr2' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_41, [_createVNode(_component_font_awesome_icon, {\n icon: \"info-circle\",\n style: {\n \"margin-right\": \"6px\"\n }\n }), _createElementVNode(\"span\", {\n innerHTML: _ctx.$t('sysUpload.r2ConfigNote')\n }, null, 8, _hoisted_42)])) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createVNode(_component_el_form_item, {\n prop: \"name\"\n }, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.channelNameLabel')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysUpload.channelNameImmutableTip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-triangle\",\n class: \"inline-warning-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.name,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $data.newChannel.name = $event),\n placeholder: _ctx.$t('sysUpload.channelNamePlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }), $data.newChannel.type === 'telegram' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.botTokenLabel'),\n prop: \"botToken\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.botToken,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $data.newChannel.botToken = $event),\n type: \"password\",\n \"show-password\": \"\",\n placeholder: _ctx.$t('sysUpload.botTokenPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.chatIdLabel'),\n prop: \"chatId\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.chatId,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.newChannel.chatId = $event),\n type: \"password\",\n \"show-password\": \"\",\n placeholder: _ctx.$t('sysUpload.chatIdPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.proxyDomain')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.proxyUrl,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = $event => $data.newChannel.proxyUrl = $event),\n placeholder: _ctx.$t('sysUpload.proxyDomainPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"])], 64)) : $data.newChannel.type === 's3' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.endpointLabel'),\n prop: \"endpoint\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.endpoint,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => $data.newChannel.endpoint = $event),\n placeholder: _ctx.$t('sysUpload.endpointPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, null, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.cdnDomain')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysUpload.cdnDomainTip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.cdnDomain,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = $event => $data.newChannel.cdnDomain = $event),\n placeholder: _ctx.$t('sysUpload.cdnDomainPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.bucketName'),\n prop: \"bucketName\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.bucketName,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $data.newChannel.bucketName = $event),\n placeholder: _ctx.$t('sysUpload.bucketNamePlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.bucketRegion'),\n prop: \"region\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.region,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => $data.newChannel.region = $event),\n placeholder: _ctx.$t('sysUpload.bucketRegionPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.accessKeyId'),\n prop: \"accessKeyId\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.accessKeyId,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = $event => $data.newChannel.accessKeyId = $event),\n type: \"password\",\n \"show-password\": \"\",\n placeholder: _ctx.$t('sysUpload.accessKeyIdPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.secretAccessKey'),\n prop: \"secretAccessKey\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.secretAccessKey,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $event => $data.newChannel.secretAccessKey = $event),\n type: \"password\",\n \"show-password\": \"\",\n placeholder: _ctx.$t('sysUpload.secretAccessKeyPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, null, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.pathStyle')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysUpload.pathStyleTip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.newChannel.pathStyle,\n \"onUpdate:modelValue\": _cache[14] || (_cache[14] = $event => $data.newChannel.pathStyle = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.quotaLimit')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.newChannel.quota.enabled,\n \"onUpdate:modelValue\": _cache[15] || (_cache[15] = $event => $data.newChannel.quota.enabled = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), $data.newChannel.quota?.enabled ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.quotaLimitGB')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $data.newChannel.quota.limitGB,\n \"onUpdate:modelValue\": _cache[16] || (_cache[16] = $event => $data.newChannel.quota.limitGB = $event),\n min: 0.1,\n step: 1,\n precision: 1\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.quotaThreshold')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $data.newChannel.quota.threshold,\n \"onUpdate:modelValue\": _cache[17] || (_cache[17] = $event => $data.newChannel.quota.threshold = $event),\n min: 50,\n max: 100,\n step: 5\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"])], 64)) : _createCommentVNode(\"\", true)], 64)) : $data.newChannel.type === 'discord' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 2\n }, [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.botTokenLabel'),\n prop: \"botToken\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.botToken,\n \"onUpdate:modelValue\": _cache[18] || (_cache[18] = $event => $data.newChannel.botToken = $event),\n type: \"password\",\n \"show-password\": \"\",\n placeholder: _ctx.$t('sysUpload.botTokenPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.channelIdLabel'),\n prop: \"channelId\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.channelId,\n \"onUpdate:modelValue\": _cache[19] || (_cache[19] = $event => $data.newChannel.channelId = $event),\n type: \"password\",\n \"show-password\": \"\",\n placeholder: _ctx.$t('sysUpload.channelIdPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.proxyDomain')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.proxyUrl,\n \"onUpdate:modelValue\": _cache[20] || (_cache[20] = $event => $data.newChannel.proxyUrl = $event),\n placeholder: _ctx.$t('sysUpload.proxyDomainPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, null, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.nitroMember')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysUpload.nitroTip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.newChannel.isNitro,\n \"onUpdate:modelValue\": _cache[21] || (_cache[21] = $event => $data.newChannel.isNitro = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }), _createElementVNode(\"div\", _hoisted_43, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-triangle\",\n style: {\n \"margin-right\": \"6px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('sysUpload.discordWarning')), 1)])], 64)) : $data.newChannel.type === 'huggingface' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 3\n }, [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.repoName'),\n prop: \"repo\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.repo,\n \"onUpdate:modelValue\": _cache[22] || (_cache[22] = $event => $data.newChannel.repo = $event),\n placeholder: _ctx.$t('sysUpload.repoNamePlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.accessToken'),\n prop: \"token\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.token,\n \"onUpdate:modelValue\": _cache[23] || (_cache[23] = $event => $data.newChannel.token = $event),\n type: \"password\",\n \"show-password\": \"\",\n placeholder: _ctx.$t('sysUpload.accessTokenPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, null, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.privateRepo')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysUpload.privateRepoTip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.newChannel.isPrivate,\n \"onUpdate:modelValue\": _cache[24] || (_cache[24] = $event => $data.newChannel.isPrivate = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n })], 64)) : $data.newChannel.type === 'webdav' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 4\n }, [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.webdavBaseUrl'),\n prop: \"baseUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.baseUrl,\n \"onUpdate:modelValue\": _cache[25] || (_cache[25] = $event => $data.newChannel.baseUrl = $event),\n placeholder: _ctx.$t('sysUpload.webdavBaseUrlPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.webdavUsername')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.username,\n \"onUpdate:modelValue\": _cache[26] || (_cache[26] = $event => $data.newChannel.username = $event),\n placeholder: _ctx.$t('sysUpload.webdavUsernamePlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.webdavPassword')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.password,\n \"onUpdate:modelValue\": _cache[27] || (_cache[27] = $event => $data.newChannel.password = $event),\n type: \"password\",\n \"show-password\": \"\",\n placeholder: _ctx.$t('sysUpload.webdavPasswordPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, null, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.publicUrl')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysUpload.webdavPublicUrlTip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.publicUrl,\n \"onUpdate:modelValue\": _cache[28] || (_cache[28] = $event => $data.newChannel.publicUrl = $event),\n placeholder: _ctx.$t('sysUpload.webdavPublicUrlPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.webdavHeaders')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.headersText,\n \"onUpdate:modelValue\": _cache[29] || (_cache[29] = $event => $data.newChannel.headersText = $event),\n type: \"textarea\",\n autosize: {\n minRows: 2\n },\n placeholder: _ctx.$t('sysUpload.webdavHeadersPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, null, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.webdavCreateDirectory')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysUpload.webdavCreateDirectoryTip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.newChannel.createDirectory,\n \"onUpdate:modelValue\": _cache[30] || (_cache[30] = $event => $data.newChannel.createDirectory = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.quotaLimit')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.newChannel.quota.enabled,\n \"onUpdate:modelValue\": _cache[31] || (_cache[31] = $event => $data.newChannel.quota.enabled = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), $data.newChannel.quota?.enabled ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.quotaLimitGB')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $data.newChannel.quota.limitGB,\n \"onUpdate:modelValue\": _cache[32] || (_cache[32] = $event => $data.newChannel.quota.limitGB = $event),\n min: 0.1,\n step: 1,\n precision: 1\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.quotaThreshold')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $data.newChannel.quota.threshold,\n \"onUpdate:modelValue\": _cache[33] || (_cache[33] = $event => $data.newChannel.quota.threshold = $event),\n min: 50,\n max: 100,\n step: 5\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"])], 64)) : _createCommentVNode(\"\", true)], 64)) : _createCommentVNode(\"\", true)], 64))]),\n _: 1\n }, 8, [\"model\", \"rules\"])]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"onClosed\"]), _createVNode(_component_el_dialog, {\n modelValue: $data.showDetailDialog,\n \"onUpdate:modelValue\": _cache[37] || (_cache[37] = $event => $data.showDetailDialog = $event),\n title: _ctx.$t('sysUpload.detailDialogTitle', {\n name: $data.currentChannel?.name || ''\n }),\n class: \"channel-dialog\",\n onClosed: $options.resetDetailData\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[36] || (_cache[36] = $event => $data.showDetailDialog = false)\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.closeBtn')), 1)]),\n _: 1\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $options.openEditFromDetail\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.editBtn')), 1)]),\n _: 1\n }, 8, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_descriptions, {\n column: 1,\n border: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.channelNameDetail')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($data.currentChannel?.name), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.channelTypeDetail')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.getChannelTypeLabel($data.currentChannelType)), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.statusLabel')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tag, {\n type: $data.currentChannel?.enabled ? 'success' : 'info'\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($data.currentChannel?.enabled ? _ctx.$t('sysUpload.enabled') : _ctx.$t('sysUpload.disabled')), 1)]),\n _: 1\n }, 8, [\"type\"])]),\n _: 1\n }, 8, [\"label\"]), $data.currentChannel?.fixed ? (_openBlock(), _createBlock(_component_el_descriptions_item, {\n key: 0,\n label: _ctx.$t('sysUpload.configSource')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tag, {\n type: \"warning\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.envVariable')), 1)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"label\"])) : _createCommentVNode(\"\", true), $data.currentChannelType === 'telegram' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.botTokenLabel')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.maskText($data.currentChannel?.botToken, 10)), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.chatIdLabel')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.maskText($data.currentChannel?.chatId, 6)), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.proxyDomain')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($data.currentChannel?.proxyUrl || _ctx.$t('sysUpload.notSet')), 1)]),\n _: 1\n }, 8, [\"label\"])], 64)) : $data.currentChannelType === 'cfr2' ? (_openBlock(), _createBlock(_component_el_descriptions_item, {\n key: 2,\n label: _ctx.$t('sysUpload.publicUrl')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n \"model-value\": $data.currentChannel?.publicUrl || _ctx.$t('sysUpload.notSet'),\n readonly: \"\"\n }, null, 8, [\"model-value\"])]),\n _: 1\n }, 8, [\"label\"])) : $data.currentChannelType === 's3' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 3\n }, [_createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.endpointLabel')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n \"model-value\": $data.currentChannel?.endpoint,\n readonly: \"\"\n }, null, 8, [\"model-value\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.cdnDomain')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n \"model-value\": $data.currentChannel?.cdnDomain || _ctx.$t('sysUpload.notSet'),\n readonly: \"\"\n }, null, 8, [\"model-value\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.bucketName')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($data.currentChannel?.bucketName), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.bucketRegion')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($data.currentChannel?.region), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.pathStyle')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($data.currentChannel?.pathStyle ? _ctx.$t('sysUpload.isPathStyle') : _ctx.$t('sysUpload.isNotPathStyle')), 1)]),\n _: 1\n }, 8, [\"label\"])], 64)) : $data.currentChannelType === 'discord' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 4\n }, [_createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.botTokenLabel')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.maskText($data.currentChannel?.botToken, 10)), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.channelIdLabel')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.maskText($data.currentChannel?.channelId, 6)), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.proxyDomain')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($data.currentChannel?.proxyUrl || _ctx.$t('sysUpload.notSet')), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.nitroMember')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($data.currentChannel?.isNitro ? _ctx.$t('sysUpload.isPathStyle') : _ctx.$t('sysUpload.isNotPathStyle')), 1)]),\n _: 1\n }, 8, [\"label\"])], 64)) : $data.currentChannelType === 'huggingface' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 5\n }, [_createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.repoName')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($data.currentChannel?.repo), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.privateRepo')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($data.currentChannel?.isPrivate ? _ctx.$t('sysUpload.isPathStyle') : _ctx.$t('sysUpload.isNotPathStyle')), 1)]),\n _: 1\n }, 8, [\"label\"])], 64)) : $data.currentChannelType === 'webdav' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 6\n }, [_createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.webdavBaseUrl')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n \"model-value\": $data.currentChannel?.baseUrl,\n readonly: \"\"\n }, null, 8, [\"model-value\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.publicUrl')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n \"model-value\": $data.currentChannel?.publicUrl || _ctx.$t('sysUpload.notSet'),\n readonly: \"\"\n }, null, 8, [\"model-value\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.webdavUsername')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($data.currentChannel?.username || _ctx.$t('sysUpload.notSet')), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.webdavHeaders')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n \"model-value\": $options.formatHeaders($data.currentChannel?.headers),\n type: \"textarea\",\n autosize: {\n minRows: 2\n },\n readonly: \"\"\n }, null, 8, [\"model-value\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.webdavCreateDirectory')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($data.currentChannel?.createDirectory !== false ? _ctx.$t('sysUpload.isPathStyle') : _ctx.$t('sysUpload.isNotPathStyle')), 1)]),\n _: 1\n }, 8, [\"label\"])], 64)) : _createCommentVNode(\"\", true), $data.currentChannel?.quota?.enabled ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 7\n }, [_createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.quotaLimit')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($data.currentChannel?.quota?.limitGB) + \" GB\", 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.quotaThreshold')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($data.currentChannel?.quota?.threshold) + \"%\", 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, null, {\n label: _withCtx(() => [_createElementVNode(\"span\", _hoisted_44, [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.currentUsage')) + \" \", 1), _createVNode(_component_el_button, {\n link: \"\",\n type: \"primary\",\n onClick: $options.refreshQuota,\n class: \"refresh-btn\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"sync-alt\",\n class: _normalizeClass({\n 'fa-spin': $data.quotaLoading\n })\n }, null, 8, [\"class\"])]),\n _: 1\n }, 8, [\"onClick\"])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_45, [_createVNode(_component_el_progress, {\n percentage: $options.getQuotaPercentage($data.currentChannel),\n status: $options.getQuotaStatus($data.currentChannel),\n \"stroke-width\": 16,\n \"text-inside\": true,\n format: () => $options.getQuotaText($data.currentChannel)\n }, null, 8, [\"percentage\", \"status\", \"format\"]), _createElementVNode(\"div\", {\n class: _normalizeClass([\"quota-info\", {\n 'quota-warning': $options.isQuotaExceeded($data.currentChannel)\n }])\n }, _toDisplayString($options.getQuotaStatusText($data.currentChannel)), 3)])]),\n _: 1\n })], 64)) : _createCommentVNode(\"\", true)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"onClosed\"]), _createVNode(_component_el_dialog, {\n modelValue: $data.showEditDialog,\n \"onUpdate:modelValue\": _cache[77] || (_cache[77] = $event => $data.showEditDialog = $event),\n title: _ctx.$t('sysUpload.editDialogTitle', {\n name: $data.editChannel?.name || ''\n }),\n class: \"channel-dialog\",\n \"destroy-on-close\": \"\",\n onClosed: $options.resetEditData\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[76] || (_cache[76] = $event => $data.showEditDialog = false)\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.cancel')), 1)]),\n _: 1\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $options.confirmEditChannel\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.saveChanges')), 1)]),\n _: 1\n }, 8, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $data.editChannel,\n \"label-position\": \"top\",\n ref: \"editForm\",\n rules: $options.editRules\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n prop: \"name\"\n }, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.channelNameLabel')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysUpload.channelNameEditDisabledTip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-triangle\",\n class: \"inline-warning-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.name,\n \"onUpdate:modelValue\": _cache[38] || (_cache[38] = $event => $data.editChannel.name = $event),\n disabled: \"\"\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.enableChannel')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.editChannel.enabled,\n \"onUpdate:modelValue\": _cache[39] || (_cache[39] = $event => $data.editChannel.enabled = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), $data.currentChannelType === 'telegram' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.botTokenLabel'),\n prop: \"botToken\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.botToken,\n \"onUpdate:modelValue\": _cache[40] || (_cache[40] = $event => $data.editChannel.botToken = $event),\n disabled: $data.editChannel.fixed,\n type: \"password\",\n \"show-password\": \"\"\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.chatIdLabel'),\n prop: \"chatId\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.chatId,\n \"onUpdate:modelValue\": _cache[41] || (_cache[41] = $event => $data.editChannel.chatId = $event),\n disabled: $data.editChannel.fixed,\n type: \"password\",\n \"show-password\": \"\"\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.proxyDomain')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.proxyUrl,\n \"onUpdate:modelValue\": _cache[42] || (_cache[42] = $event => $data.editChannel.proxyUrl = $event),\n placeholder: _ctx.$t('sysUpload.proxyDomainPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"])], 64)) : $data.currentChannelType === 'cfr2' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.publicUrl')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.publicUrl,\n \"onUpdate:modelValue\": _cache[43] || (_cache[43] = $event => $data.editChannel.publicUrl = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.quotaLimit')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.editChannel.quota.enabled,\n \"onUpdate:modelValue\": _cache[44] || (_cache[44] = $event => $data.editChannel.quota.enabled = $event),\n onChange: _cache[45] || (_cache[45] = val => $options.onQuotaEnabledChange(val, $data.editChannel))\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), $data.editChannel.quota?.enabled ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.quotaLimitGB')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $data.editChannel.quota.limitGB,\n \"onUpdate:modelValue\": _cache[46] || (_cache[46] = $event => $data.editChannel.quota.limitGB = $event),\n min: 0.1,\n step: 1,\n precision: 1\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.quotaThreshold')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $data.editChannel.quota.threshold,\n \"onUpdate:modelValue\": _cache[47] || (_cache[47] = $event => $data.editChannel.quota.threshold = $event),\n min: 50,\n max: 100,\n step: 5\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"])], 64)) : _createCommentVNode(\"\", true)], 64)) : $data.currentChannelType === 's3' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 2\n }, [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.endpointLabel'),\n prop: \"endpoint\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.endpoint,\n \"onUpdate:modelValue\": _cache[48] || (_cache[48] = $event => $data.editChannel.endpoint = $event),\n disabled: $data.editChannel.fixed\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, null, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.cdnDomain')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysUpload.cdnDomainTip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.cdnDomain,\n \"onUpdate:modelValue\": _cache[49] || (_cache[49] = $event => $data.editChannel.cdnDomain = $event),\n placeholder: _ctx.$t('sysUpload.cdnDomainPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.bucketName'),\n prop: \"bucketName\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.bucketName,\n \"onUpdate:modelValue\": _cache[50] || (_cache[50] = $event => $data.editChannel.bucketName = $event),\n disabled: $data.editChannel.fixed\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.bucketRegion'),\n prop: \"region\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.region,\n \"onUpdate:modelValue\": _cache[51] || (_cache[51] = $event => $data.editChannel.region = $event),\n disabled: $data.editChannel.fixed\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.accessKeyId'),\n prop: \"accessKeyId\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.accessKeyId,\n \"onUpdate:modelValue\": _cache[52] || (_cache[52] = $event => $data.editChannel.accessKeyId = $event),\n disabled: $data.editChannel.fixed,\n type: \"password\",\n \"show-password\": \"\"\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.secretAccessKey'),\n prop: \"secretAccessKey\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.secretAccessKey,\n \"onUpdate:modelValue\": _cache[53] || (_cache[53] = $event => $data.editChannel.secretAccessKey = $event),\n disabled: $data.editChannel.fixed,\n type: \"password\",\n \"show-password\": \"\"\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, null, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.pathStyle')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysUpload.pathStyleTip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.editChannel.pathStyle,\n \"onUpdate:modelValue\": _cache[54] || (_cache[54] = $event => $data.editChannel.pathStyle = $event),\n disabled: $data.editChannel.fixed\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.quotaLimit')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.editChannel.quota.enabled,\n \"onUpdate:modelValue\": _cache[55] || (_cache[55] = $event => $data.editChannel.quota.enabled = $event),\n onChange: _cache[56] || (_cache[56] = val => $options.onQuotaEnabledChange(val, $data.editChannel))\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), $data.editChannel.quota?.enabled ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.quotaLimitGB')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $data.editChannel.quota.limitGB,\n \"onUpdate:modelValue\": _cache[57] || (_cache[57] = $event => $data.editChannel.quota.limitGB = $event),\n min: 0.1,\n step: 1,\n precision: 1\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.quotaThreshold')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $data.editChannel.quota.threshold,\n \"onUpdate:modelValue\": _cache[58] || (_cache[58] = $event => $data.editChannel.quota.threshold = $event),\n min: 50,\n max: 100,\n step: 5\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"])], 64)) : _createCommentVNode(\"\", true)], 64)) : $data.currentChannelType === 'discord' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 3\n }, [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.botTokenLabel'),\n prop: \"botToken\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.botToken,\n \"onUpdate:modelValue\": _cache[59] || (_cache[59] = $event => $data.editChannel.botToken = $event),\n disabled: $data.editChannel.fixed,\n type: \"password\",\n \"show-password\": \"\"\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.channelIdLabel'),\n prop: \"channelId\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.channelId,\n \"onUpdate:modelValue\": _cache[60] || (_cache[60] = $event => $data.editChannel.channelId = $event),\n disabled: $data.editChannel.fixed,\n type: \"password\",\n \"show-password\": \"\"\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.proxyDomain')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.proxyUrl,\n \"onUpdate:modelValue\": _cache[61] || (_cache[61] = $event => $data.editChannel.proxyUrl = $event),\n placeholder: _ctx.$t('sysUpload.proxyDomainPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, null, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.nitroMember')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysUpload.nitroTip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.editChannel.isNitro,\n \"onUpdate:modelValue\": _cache[62] || (_cache[62] = $event => $data.editChannel.isNitro = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n })], 64)) : $data.currentChannelType === 'huggingface' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 4\n }, [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.repoName'),\n prop: \"repo\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.repo,\n \"onUpdate:modelValue\": _cache[63] || (_cache[63] = $event => $data.editChannel.repo = $event),\n disabled: $data.editChannel.fixed\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.accessToken'),\n prop: \"token\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.token,\n \"onUpdate:modelValue\": _cache[64] || (_cache[64] = $event => $data.editChannel.token = $event),\n disabled: $data.editChannel.fixed,\n type: \"password\",\n \"show-password\": \"\"\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, null, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.privateRepo')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysUpload.privateRepoTip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.editChannel.isPrivate,\n \"onUpdate:modelValue\": _cache[65] || (_cache[65] = $event => $data.editChannel.isPrivate = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n })], 64)) : $data.currentChannelType === 'webdav' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 5\n }, [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.webdavBaseUrl'),\n prop: \"baseUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.baseUrl,\n \"onUpdate:modelValue\": _cache[66] || (_cache[66] = $event => $data.editChannel.baseUrl = $event),\n disabled: $data.editChannel.fixed\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.webdavUsername')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.username,\n \"onUpdate:modelValue\": _cache[67] || (_cache[67] = $event => $data.editChannel.username = $event),\n disabled: $data.editChannel.fixed\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.webdavPassword')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.password,\n \"onUpdate:modelValue\": _cache[68] || (_cache[68] = $event => $data.editChannel.password = $event),\n disabled: $data.editChannel.fixed,\n type: \"password\",\n \"show-password\": \"\"\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, null, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.publicUrl')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysUpload.webdavPublicUrlTip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.publicUrl,\n \"onUpdate:modelValue\": _cache[69] || (_cache[69] = $event => $data.editChannel.publicUrl = $event),\n placeholder: _ctx.$t('sysUpload.webdavPublicUrlPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.webdavHeaders')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.headersText,\n \"onUpdate:modelValue\": _cache[70] || (_cache[70] = $event => $data.editChannel.headersText = $event),\n type: \"textarea\",\n autosize: {\n minRows: 2\n },\n placeholder: _ctx.$t('sysUpload.webdavHeadersPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, null, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.webdavCreateDirectory')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysUpload.webdavCreateDirectoryTip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.editChannel.createDirectory,\n \"onUpdate:modelValue\": _cache[71] || (_cache[71] = $event => $data.editChannel.createDirectory = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.quotaLimit')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.editChannel.quota.enabled,\n \"onUpdate:modelValue\": _cache[72] || (_cache[72] = $event => $data.editChannel.quota.enabled = $event),\n onChange: _cache[73] || (_cache[73] = val => $options.onQuotaEnabledChange(val, $data.editChannel))\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), $data.editChannel.quota?.enabled ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.quotaLimitGB')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $data.editChannel.quota.limitGB,\n \"onUpdate:modelValue\": _cache[74] || (_cache[74] = $event => $data.editChannel.quota.limitGB = $event),\n min: 0.1,\n step: 1,\n precision: 1\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.quotaThreshold')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $data.editChannel.quota.threshold,\n \"onUpdate:modelValue\": _cache[75] || (_cache[75] = $event => $data.editChannel.quota.threshold = $event),\n min: 50,\n max: 100,\n step: 5\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"])], 64)) : _createCommentVNode(\"\", true)], 64)) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"model\", \"rules\"])]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"onClosed\"])])), [[_directive_loading, $data.loading]]);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.find.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport \"core-js/modules/es.iterator.some.js\";\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nimport ChannelIcon from '@/components/icons/ChannelIcon.vue';\nimport CustomSelect from './CustomSelect.vue';\nexport default {\n components: {\n ChannelIcon,\n CustomSelect\n },\n data() {\n return {\n // 渠道类型筛选\n channelFilter: '',\n // 渠道类型列表\n channels: [{\n value: 'telegram',\n label: 'Telegram'\n }, {\n value: 'cfr2',\n label: 'CloudFlare R2'\n }, {\n value: 's3',\n label: 'S3'\n }, {\n value: 'discord',\n label: 'Discord'\n }, {\n value: 'huggingface',\n label: 'HuggingFace'\n }, {\n value: 'webdav',\n label: 'WebDAV'\n }],\n // 可添加的渠道类型\n addableChannels: [{\n value: 'telegram',\n label: 'Telegram'\n }, {\n value: 'cfr2',\n label: 'CloudFlare R2'\n }, {\n value: 's3',\n label: 'S3'\n }, {\n value: 'discord',\n label: 'Discord'\n }, {\n value: 'huggingface',\n label: 'HuggingFace'\n }, {\n value: 'webdav',\n label: 'WebDAV'\n }],\n // 各渠道配置\n telegramSettings: {\n loadBalance: {\n enabled: false\n },\n channels: []\n },\n cfr2Settings: {\n channels: []\n },\n s3Settings: {\n loadBalance: {\n enabled: false\n },\n channels: []\n },\n discordSettings: {\n loadBalance: {\n enabled: false\n },\n channels: []\n },\n huggingfaceSettings: {\n loadBalance: {\n enabled: false\n },\n channels: []\n },\n webdavSettings: {\n loadBalance: {\n enabled: false\n },\n channels: []\n },\n // 弹窗控制\n showAddDialog: false,\n showDetailDialog: false,\n showEditDialog: false,\n // 当前操作的渠道\n currentChannelType: '',\n currentChannelIndex: -1,\n currentChannel: null,\n editChannel: {},\n // 新增渠道表单\n newChannel: {\n type: '',\n name: '',\n enabled: true,\n // Telegram\n botToken: '',\n chatId: '',\n proxyUrl: '',\n // S3\n endpoint: '',\n cdnDomain: '',\n bucketName: '',\n region: 'auto',\n accessKeyId: '',\n secretAccessKey: '',\n pathStyle: false,\n quota: {\n enabled: false,\n limitGB: 10,\n threshold: 95\n },\n // Discord\n channelId: '',\n isNitro: false,\n // HuggingFace\n repo: '',\n token: '',\n isPrivate: false,\n // WebDAV\n baseUrl: '',\n username: '',\n password: '',\n publicUrl: '',\n headersText: '',\n createDirectory: true\n },\n // 容量统计数据\n quotaStats: {},\n quotaLoading: false,\n // 加载状态\n loading: false\n };\n },\n computed: {\n // 筛选下拉框选项\n filterOptions() {\n return [{\n value: '',\n label: this.$t('common.all')\n }, ...this.channels.map(ch => ({\n value: ch.value,\n label: ch.label,\n channelType: ch.value\n }))];\n },\n // 根据筛选条件过滤渠道类型\n filteredChannels() {\n if (!this.channelFilter) {\n return this.channels;\n }\n return this.channels.filter(ch => ch.value === this.channelFilter);\n },\n addRules() {\n return {\n type: [{\n required: true,\n message: this.$t('sysUpload.channelTypePlaceholder'),\n trigger: 'change'\n }],\n name: [{\n required: true,\n message: this.$t('sysUpload.channelNamePlaceholder'),\n trigger: 'blur'\n }, {\n pattern: /^[\\u4e00-\\u9fa5a-zA-Z0-9_-]+$/,\n message: this.$t('sysUpload.channelNamePlaceholder'),\n trigger: 'blur'\n }],\n botToken: [{\n required: true,\n message: this.$t('sysUpload.botTokenPlaceholder'),\n trigger: 'blur'\n }],\n chatId: [{\n required: true,\n message: this.$t('sysUpload.chatIdPlaceholder'),\n trigger: 'blur'\n }],\n channelId: [{\n required: true,\n message: this.$t('sysUpload.channelIdPlaceholder'),\n trigger: 'blur'\n }],\n endpoint: [{\n required: true,\n message: this.$t('sysUpload.endpointPlaceholder'),\n trigger: 'blur'\n }],\n bucketName: [{\n required: true,\n message: this.$t('sysUpload.bucketNamePlaceholder'),\n trigger: 'blur'\n }],\n region: [{\n required: true,\n message: this.$t('sysUpload.bucketRegionPlaceholder'),\n trigger: 'blur'\n }],\n accessKeyId: [{\n required: true,\n message: this.$t('sysUpload.accessKeyIdPlaceholder'),\n trigger: 'blur'\n }],\n secretAccessKey: [{\n required: true,\n message: this.$t('sysUpload.secretAccessKeyPlaceholder'),\n trigger: 'blur'\n }],\n repo: [{\n required: true,\n message: this.$t('sysUpload.repoNamePlaceholder'),\n trigger: 'blur'\n }],\n token: [{\n required: true,\n message: this.$t('sysUpload.accessTokenPlaceholder'),\n trigger: 'blur'\n }],\n baseUrl: [{\n required: true,\n message: this.$t('sysUpload.webdavBaseUrlPlaceholder'),\n trigger: 'blur'\n }]\n };\n },\n editRules() {\n return {\n name: [{\n required: true,\n message: this.$t('sysUpload.channelNamePlaceholder'),\n trigger: 'blur'\n }, {\n pattern: /^[\\u4e00-\\u9fa5a-zA-Z0-9_-]+$/,\n message: this.$t('sysUpload.channelNamePlaceholder'),\n trigger: 'blur'\n }],\n botToken: [{\n required: true,\n message: this.$t('sysUpload.botTokenPlaceholder'),\n trigger: 'blur'\n }],\n chatId: [{\n required: true,\n message: this.$t('sysUpload.chatIdPlaceholder'),\n trigger: 'blur'\n }],\n channelId: [{\n required: true,\n message: this.$t('sysUpload.channelIdPlaceholder'),\n trigger: 'blur'\n }],\n endpoint: [{\n required: true,\n message: this.$t('sysUpload.endpointPlaceholder'),\n trigger: 'blur'\n }],\n bucketName: [{\n required: true,\n message: this.$t('sysUpload.bucketNamePlaceholder'),\n trigger: 'blur'\n }],\n region: [{\n required: true,\n message: this.$t('sysUpload.bucketRegionPlaceholder'),\n trigger: 'blur'\n }],\n accessKeyId: [{\n required: true,\n message: this.$t('sysUpload.accessKeyIdPlaceholder'),\n trigger: 'blur'\n }],\n secretAccessKey: [{\n required: true,\n message: this.$t('sysUpload.secretAccessKeyPlaceholder'),\n trigger: 'blur'\n }],\n repo: [{\n required: true,\n message: this.$t('sysUpload.repoNamePlaceholder'),\n trigger: 'blur'\n }],\n token: [{\n required: true,\n message: this.$t('sysUpload.accessTokenPlaceholder'),\n trigger: 'blur'\n }],\n baseUrl: [{\n required: true,\n message: this.$t('sysUpload.webdavBaseUrlPlaceholder'),\n trigger: 'blur'\n }]\n };\n }\n },\n methods: {\n // 卡片光斑跟随鼠标\n handleCardMouseMove(event, channelType, index) {\n const card = event.currentTarget;\n const rect = card.getBoundingClientRect();\n const x = event.clientX - rect.left;\n const y = event.clientY - rect.top;\n const refKey = `glow-${channelType}-${index}`;\n const glowEl = this.$refs[refKey];\n if (glowEl && glowEl[0]) {\n glowEl[0].style.opacity = '1';\n glowEl[0].style.left = `${x}px`;\n glowEl[0].style.top = `${y}px`;\n }\n },\n handleCardMouseLeave(channelType, index) {\n const refKey = `glow-${channelType}-${index}`;\n const glowEl = this.$refs[refKey];\n if (glowEl && glowEl[0]) {\n glowEl[0].style.opacity = '0';\n }\n },\n // 获取渠道类型标签\n getChannelTypeLabel(type) {\n const channel = this.channels.find(c => c.value === type);\n return channel ? channel.label : type;\n },\n // 获取渠道列表\n getChannelList(type) {\n return this.getSettings(type)?.channels || [];\n },\n // 获取渠道设置对象\n getSettings(type) {\n const map = {\n telegram: this.telegramSettings,\n cfr2: this.cfr2Settings,\n s3: this.s3Settings,\n discord: this.discordSettings,\n huggingface: this.huggingfaceSettings,\n webdav: this.webdavSettings\n };\n return map[type];\n },\n // 是否有负载均衡选项\n hasLoadBalance(type) {\n return ['telegram', 's3', 'discord', 'huggingface', 'webdav'].includes(type);\n },\n // 文本脱敏\n maskText(text, showLength = 4) {\n if (!text) return this.$t('sysUpload.notSet');\n if (text.length <= showLength * 2) return '****';\n return text.slice(0, showLength) + '****' + text.slice(-showLength);\n },\n formatHeaders(headers) {\n if (!headers || typeof headers === 'object' && Object.keys(headers).length === 0) {\n return this.$t('sysUpload.notSet');\n }\n if (typeof headers === 'string') {\n return headers;\n }\n return JSON.stringify(headers, null, 2);\n },\n headersToText(headers) {\n if (!headers) return '';\n if (typeof headers === 'string') return headers;\n return JSON.stringify(headers, null, 2);\n },\n parseHeadersText(text) {\n if (!text || !text.trim()) return {};\n try {\n const parsed = JSON.parse(text);\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {\n return null;\n }\n return parsed;\n } catch (error) {\n return null;\n }\n },\n // 打开详情弹窗\n openDetailDialog(type, index) {\n this.currentChannelType = type;\n this.currentChannelIndex = index;\n this.currentChannel = this.getChannelList(type)[index];\n this.showDetailDialog = true;\n },\n // 打开编辑弹窗\n openEditDialog(type, index) {\n this.currentChannelType = type;\n this.currentChannelIndex = index;\n const channel = this.getChannelList(type)[index];\n this.editChannel = JSON.parse(JSON.stringify(channel));\n if (type === 'webdav') {\n this.editChannel.headersText = this.headersToText(this.editChannel.headers);\n this.editChannel.createDirectory = this.editChannel.createDirectory !== false;\n }\n // 确保 quota 对象存在\n if (!this.editChannel.quota) {\n this.editChannel.quota = {\n enabled: false,\n limitGB: 10,\n threshold: 95\n };\n }\n this.showEditDialog = true;\n },\n // 从详情页打开编辑\n openEditFromDetail() {\n this.showDetailDialog = false;\n this.openEditDialog(this.currentChannelType, this.currentChannelIndex);\n },\n // 重置添加表单\n resetAddForm() {\n this.newChannel = {\n type: '',\n name: '',\n enabled: true,\n botToken: '',\n chatId: '',\n proxyUrl: '',\n endpoint: '',\n bucketName: '',\n region: 'auto',\n accessKeyId: '',\n secretAccessKey: '',\n pathStyle: false,\n quota: {\n enabled: false,\n limitGB: 10,\n threshold: 95\n },\n channelId: '',\n isNitro: false,\n repo: '',\n token: '',\n isPrivate: false,\n baseUrl: '',\n username: '',\n password: '',\n publicUrl: '',\n headersText: '',\n createDirectory: true\n };\n },\n // 重置详情弹窗数据\n resetDetailData() {\n this.currentChannel = null;\n },\n // 重置编辑弹窗数据\n resetEditData() {\n this.editChannel = {};\n },\n // 渠道类型变更时重置表单\n onChannelTypeChange() {\n // 保留 type 和 name,重置其他字段\n const {\n type,\n name\n } = this.newChannel;\n this.newChannel = {\n type,\n name,\n enabled: true,\n botToken: '',\n chatId: '',\n proxyUrl: '',\n endpoint: '',\n cdnDomain: '',\n bucketName: '',\n region: 'auto',\n accessKeyId: '',\n secretAccessKey: '',\n pathStyle: false,\n quota: {\n enabled: false,\n limitGB: 10,\n threshold: 95\n },\n channelId: '',\n isNitro: false,\n repo: '',\n token: '',\n isPrivate: false,\n baseUrl: '',\n username: '',\n password: '',\n publicUrl: '',\n headersText: '',\n createDirectory: true\n };\n },\n // 确认添加渠道\n confirmAddChannel() {\n this.$refs.addForm.validate(valid => {\n if (!valid) return;\n const {\n type,\n name\n } = this.newChannel;\n const settings = this.getSettings(type);\n\n // 检查是否为保留名称({type}_env)\n const reservedNames = ['Telegram_env', 'R2_env', 'S3_env', 'Discord_env', 'HuggingFace_env', 'WebDAV_env'];\n if (reservedNames.includes(name)) {\n this.$message.warning(this.$t('sysUpload.reservedName'));\n return;\n }\n\n // 检查名称是否重复\n const isDuplicate = settings.channels.some(ch => ch.name === name);\n if (isDuplicate) {\n this.$message.warning(this.$t('sysUpload.duplicateName'));\n return;\n }\n let newChannelData = {\n id: settings.channels.length + 1,\n name: this.newChannel.name,\n type: type,\n savePath: 'database',\n enabled: true,\n fixed: false\n };\n\n // 根据类型添加特定字段\n if (type === 'telegram') {\n Object.assign(newChannelData, {\n botToken: this.newChannel.botToken,\n chatId: this.newChannel.chatId,\n proxyUrl: this.newChannel.proxyUrl\n });\n } else if (type === 's3') {\n Object.assign(newChannelData, {\n endpoint: this.newChannel.endpoint,\n cdnDomain: this.newChannel.cdnDomain,\n bucketName: this.newChannel.bucketName,\n region: this.newChannel.region,\n accessKeyId: this.newChannel.accessKeyId,\n secretAccessKey: this.newChannel.secretAccessKey,\n pathStyle: this.newChannel.pathStyle,\n quota: {\n ...this.newChannel.quota\n }\n });\n } else if (type === 'discord') {\n Object.assign(newChannelData, {\n botToken: this.newChannel.botToken,\n channelId: this.newChannel.channelId,\n proxyUrl: this.newChannel.proxyUrl,\n isNitro: this.newChannel.isNitro\n });\n } else if (type === 'huggingface') {\n Object.assign(newChannelData, {\n repo: this.newChannel.repo,\n token: this.newChannel.token,\n isPrivate: this.newChannel.isPrivate\n });\n } else if (type === 'webdav') {\n const headers = this.parseHeadersText(this.newChannel.headersText);\n if (headers === null) {\n this.$message.warning(this.$t('sysUpload.webdavHeadersInvalid'));\n return;\n }\n Object.assign(newChannelData, {\n baseUrl: this.newChannel.baseUrl,\n username: this.newChannel.username,\n password: this.newChannel.password,\n publicUrl: this.newChannel.publicUrl,\n headers,\n createDirectory: this.newChannel.createDirectory !== false,\n quota: {\n ...this.newChannel.quota\n }\n });\n }\n settings.channels.push(newChannelData);\n this.showAddDialog = false;\n // 自动保存全部设置\n this.saveSettings();\n });\n },\n // 确认编辑渠道\n confirmEditChannel() {\n this.$refs.editForm.validate(valid => {\n if (!valid) return;\n const settings = this.getSettings(this.currentChannelType);\n const currentIndex = this.currentChannelIndex;\n const originalName = settings.channels[currentIndex]?.name || this.editChannel.name;\n const editedChannel = {\n ...this.editChannel,\n name: originalName\n };\n if (this.currentChannelType === 'webdav') {\n const headers = this.parseHeadersText(editedChannel.headersText);\n if (headers === null) {\n this.$message.warning(this.$t('sysUpload.webdavHeadersInvalid'));\n return;\n }\n editedChannel.headers = headers;\n editedChannel.createDirectory = editedChannel.createDirectory !== false;\n delete editedChannel.headersText;\n }\n settings.channels[this.currentChannelIndex] = editedChannel;\n this.showEditDialog = false;\n // 自动保存全部设置\n this.saveSettings();\n });\n },\n // 删除渠道\n deleteChannel(type, index) {\n const channel = this.getChannelList(type)[index];\n if (channel.fixed) {\n this.$message.warning(this.$t('sysUpload.fixedChannelCannotDelete'));\n return;\n }\n this.$confirm(this.$t('sysUpload.deleteChannelConfirm'), this.$t('common.warning'), {\n confirmButtonText: this.$t('common.confirm'),\n cancelButtonText: this.$t('common.cancel'),\n type: 'warning'\n }).then(() => {\n const settings = this.getSettings(type);\n settings.channels.splice(index, 1);\n // 重新调整 id\n settings.channels.forEach((item, i) => {\n item.id = i + 1;\n });\n // 自动保存\n this.saveSettings();\n }).catch(() => {});\n },\n saveSettings() {\n // 保存设置\n const settings = {\n telegram: this.telegramSettings,\n cfr2: this.cfr2Settings,\n s3: this.s3Settings,\n discord: this.discordSettings,\n huggingface: this.huggingfaceSettings,\n webdav: this.webdavSettings\n };\n fetchWithAuth('/api/manage/sysConfig/upload', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(settings)\n }).then(() => {\n this.$message.success(this.$t('sysOthers.settingsSaved'));\n });\n },\n // 获取容量统计(重新计算)\n async refreshQuota() {\n this.quotaLoading = true;\n try {\n // 使用 POST 请求重新统计容量(会触发索引重建)\n const response = await fetchWithAuth('/api/manage/quota', {\n method: 'POST'\n });\n const data = await response.json();\n if (data.success) {\n this.quotaStats = data.channelStats || {};\n } else {\n // 如果重新统计失败,尝试获取已有数据\n const getResponse = await fetchWithAuth('/api/manage/quota');\n const getData = await getResponse.json();\n if (getData.success) {\n this.quotaStats = getData.quotaStats || {};\n }\n }\n } catch (error) {\n console.error('Failed to refresh quota stats:', error);\n } finally {\n this.quotaLoading = false;\n }\n },\n // 获取容量统计(仅读取,不重建索引)\n async loadQuotaStats() {\n try {\n const response = await fetchWithAuth('/api/manage/quota');\n const data = await response.json();\n if (data.success) {\n this.quotaStats = data.quotaStats || {};\n }\n } catch (error) {\n console.error('Failed to load quota stats:', error);\n }\n },\n // 获取渠道已用容量 (GB)\n getChannelUsedGB(channel) {\n const stats = this.quotaStats[channel.name];\n if (!stats) return 0;\n return (stats.usedMB || 0) / 1024;\n },\n // 获取容量百分比\n getQuotaPercentage(channel) {\n const usedGB = this.getChannelUsedGB(channel);\n const limitGB = channel.quota?.limitGB || 10;\n const percentage = usedGB / limitGB * 100;\n return Math.min(100, Math.round(percentage * 10) / 10);\n },\n // 获取进度条状态\n getQuotaStatus(channel) {\n const percentage = this.getQuotaPercentage(channel);\n const threshold = channel.quota?.threshold || 95;\n if (percentage >= threshold) return 'exception';\n if (percentage >= 80) return 'warning';\n return 'success';\n },\n // 获取容量文本\n getQuotaText(channel) {\n const usedGB = this.getChannelUsedGB(channel);\n const limitGB = channel.quota?.limitGB || 10;\n return `${usedGB.toFixed(2)} / ${limitGB} GB`;\n },\n // 判断是否超过阈值\n isQuotaExceeded(channel) {\n const percentage = this.getQuotaPercentage(channel);\n const threshold = channel.quota?.threshold || 95;\n return percentage >= threshold;\n },\n // 获取状态文本\n getQuotaStatusText(channel) {\n const percentage = this.getQuotaPercentage(channel);\n const threshold = channel.quota?.threshold || 95;\n if (percentage >= threshold) {\n return `⚠️ 已达到容量阈值 (${threshold}%),渠道写入已暂停`;\n }\n if (percentage >= 80) {\n return `⚡ 容量使用较高,接近阈值`;\n }\n return `✓ 容量正常`;\n },\n // 容量限制开关变化时\n async onQuotaEnabledChange(enabled, channel) {\n if (enabled && channel.name) {\n // 首次启用时,检查是否有该渠道的统计数据\n const stats = this.quotaStats[channel.name];\n if (!stats) {\n // 没有统计数据,提示用户需要重新统计\n this.$confirm(this.$t('sysUpload.quotaInitConfirm'), this.$t('sysUpload.quotaInitTitle'), {\n confirmButtonText: this.$t('sysUpload.quotaInitConfirmBtn'),\n cancelButtonText: this.$t('sysUpload.quotaInitCancelBtn'),\n type: 'info'\n }).then(async () => {\n await this.recalculateQuota();\n }).catch(() => {\n this.$message.info(this.$t('sysUpload.quotaInitLater'));\n });\n }\n }\n },\n // 重新统计容量\n async recalculateQuota() {\n this.quotaLoading = true;\n try {\n this.$message.info(this.$t('sysUpload.quotaCalculating'));\n const response = await fetchWithAuth('/api/manage/quota', {\n method: 'POST'\n });\n const data = await response.json();\n if (data.success) {\n this.quotaStats = data.channelStats || {};\n this.$message.success(this.$t('sysUpload.quotaCalculateSuccess'));\n } else {\n this.$message.error(this.$t('sysUpload.quotaCalculateError') + (data.error || ''));\n }\n } catch (error) {\n console.error('Failed to recalculate quota:', error);\n this.$message.error(this.$t('sysUpload.quotaCalculateFailed'));\n } finally {\n this.quotaLoading = false;\n }\n }\n },\n mounted() {\n this.loading = true;\n // 获取上传设置\n fetchWithAuth('/api/manage/sysConfig/upload').then(response => response.json()).then(data => {\n this.telegramSettings = data.telegram;\n // 确保 R2 渠道有 quota 默认值\n if (data.cfr2 && data.cfr2.channels) {\n data.cfr2.channels = data.cfr2.channels.map(channel => ({\n ...channel,\n quota: channel.quota || {\n enabled: false,\n limitGB: 10,\n threshold: 95\n }\n }));\n }\n this.cfr2Settings = data.cfr2;\n // 确保 S3 渠道有 quota 默认值\n if (data.s3 && data.s3.channels) {\n data.s3.channels = data.s3.channels.map(channel => ({\n ...channel,\n quota: channel.quota || {\n enabled: false,\n limitGB: 10,\n threshold: 95\n }\n }));\n }\n this.s3Settings = data.s3;\n // 确保 Discord 渠道有默认值\n if (data.discord && data.discord.channels) {\n data.discord.channels = data.discord.channels.map(channel => ({\n ...channel,\n proxyUrl: channel.proxyUrl || ''\n }));\n }\n this.discordSettings = data.discord || {\n loadBalance: {},\n channels: []\n };\n // 确保 HuggingFace 渠道有默认值\n if (data.huggingface && data.huggingface.channels) {\n data.huggingface.channels = data.huggingface.channels.map(channel => ({\n ...channel,\n isPrivate: channel.isPrivate || false\n }));\n }\n this.huggingfaceSettings = data.huggingface || {\n loadBalance: {},\n channels: []\n };\n // 确保 WebDAV 渠道有默认值\n if (data.webdav && data.webdav.channels) {\n data.webdav.channels = data.webdav.channels.map(channel => ({\n ...channel,\n username: channel.username || '',\n password: channel.password || '',\n publicUrl: channel.publicUrl || '',\n headers: channel.headers || {},\n createDirectory: channel.createDirectory !== false,\n quota: channel.quota || {\n enabled: false,\n limitGB: 10,\n threshold: 95\n }\n }));\n }\n this.webdavSettings = data.webdav || {\n loadBalance: {},\n channels: []\n };\n // 加载容量统计(仅读取,不重建索引)\n this.loadQuotaStats();\n }).finally(() => {\n this.loading = false;\n });\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./SysCogUpload.vue?vue&type=template&id=0082a519&scoped=true\"\nimport script from \"./SysCogUpload.vue?vue&type=script&lang=js\"\nexport * from \"./SysCogUpload.vue?vue&type=script&lang=js\"\n\nimport \"./SysCogUpload.vue?vue&type=style&index=0&id=0082a519&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0082a519\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, vShow as _vShow, normalizeClass as _normalizeClass, withDirectives as _withDirectives, Transition as _Transition, withCtx as _withCtx } from \"vue\";\nconst _hoisted_1 = {\n class: \"save-text\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createBlock(_Transition, {\n name: \"fade-up\"\n }, {\n default: _withCtx(() => [_withDirectives(_createElementVNode(\"div\", {\n class: _normalizeClass([\"floating-save-btn\", {\n 'is-loading': $props.loading\n }]),\n onClick: _cache[0] || (_cache[0] = (...args) => $options.handleClick && $options.handleClick(...args))\n }, [$props.loading ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"spinner\",\n spin: \"\"\n })) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 1,\n icon: \"save\"\n })), _createElementVNode(\"span\", _hoisted_1, _toDisplayString($props.loading ? _ctx.$t('floatingSave.saving') : _ctx.$t('floatingSave.save')), 1)], 2), [[_vShow, $data.visible]])]),\n _: 1\n });\n}","export default {\n name: 'FloatingSaveButton',\n emits: ['click'],\n props: {\n loading: {\n type: Boolean,\n default: false\n },\n show: {\n type: Boolean,\n default: true\n }\n },\n data() {\n return {\n visible: false\n };\n },\n watch: {\n show: {\n immediate: true,\n handler(val) {\n if (val) {\n // 延迟显示,等待 Element Plus 加载遮罩淡出动画完成\n setTimeout(() => {\n this.visible = true;\n }, 600);\n } else {\n this.visible = false;\n }\n }\n }\n },\n methods: {\n handleClick() {\n if (!this.loading) {\n this.$emit('click');\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FloatingSaveButton.vue?vue&type=template&id=9cef95d2&scoped=true\"\nimport script from \"./FloatingSaveButton.vue?vue&type=script&lang=js\"\nexport * from \"./FloatingSaveButton.vue?vue&type=script&lang=js\"\n\nimport \"./FloatingSaveButton.vue?vue&type=style&index=0&id=9cef95d2&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-9cef95d2\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, Transition as _Transition, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"security-settings\"\n};\nconst _hoisted_2 = {\n class: \"first-settings\"\n};\nconst _hoisted_3 = {\n class: \"first-title\"\n};\nconst _hoisted_4 = {\n class: \"second-title\"\n};\nconst _hoisted_5 = {\n style: {\n \"display\": \"flex\",\n \"gap\": \"8px\",\n \"width\": \"100%\"\n }\n};\nconst _hoisted_6 = {\n class: \"second-title\"\n};\nconst _hoisted_7 = {\n style: {\n \"display\": \"flex\",\n \"gap\": \"8px\",\n \"width\": \"100%\"\n }\n};\nconst _hoisted_8 = {\n class: \"second-title token-title\"\n};\nconst _hoisted_9 = {\n class: \"token-actions\"\n};\nconst _hoisted_10 = {\n class: \"token-table-container\"\n};\nconst _hoisted_11 = {\n class: \"table-cell-content\"\n};\nconst _hoisted_12 = {\n class: \"table-cell-content\"\n};\nconst _hoisted_13 = {\n class: \"token-display\"\n};\nconst _hoisted_14 = {\n class: \"table-cell-content\"\n};\nconst _hoisted_15 = {\n class: \"table-cell-content\"\n};\nconst _hoisted_16 = {\n class: \"table-cell-content\"\n};\nconst _hoisted_17 = {\n class: \"table-cell-content\"\n};\nconst _hoisted_18 = {\n class: \"table-cell-content action-buttons\"\n};\nconst _hoisted_19 = {\n class: \"first-settings\"\n};\nconst _hoisted_20 = {\n class: \"first-title\"\n};\nconst _hoisted_21 = {\n class: \"second-title\"\n};\nconst _hoisted_22 = {\n class: \"second-title\"\n};\nconst _hoisted_23 = {\n class: \"query-param-list\"\n};\nconst _hoisted_24 = {\n class: \"query-param-list\"\n};\nconst _hoisted_25 = {\n class: \"first-settings\"\n};\nconst _hoisted_26 = {\n class: \"first-title\"\n};\nconst _hoisted_27 = {\n class: \"second-title\"\n};\nconst _hoisted_28 = {\n class: \"second-title\"\n};\nconst _hoisted_29 = {\n class: \"second-title\"\n};\nconst _hoisted_30 = {\n class: \"second-title\"\n};\nconst _hoisted_31 = {\n class: \"form-item-hint\"\n};\nconst _hoisted_32 = {\n class: \"form-item-hint\"\n};\nconst _hoisted_33 = {\n style: {\n \"display\": \"flex\",\n \"gap\": \"10px\",\n \"width\": \"100%\"\n }\n};\nconst _hoisted_34 = {\n class: \"dialog-footer\"\n};\nconst _hoisted_35 = {\n style: {\n \"display\": \"flex\",\n \"gap\": \"10px\",\n \"width\": \"100%\"\n }\n};\nconst _hoisted_36 = {\n class: \"dialog-footer\"\n};\nconst _hoisted_37 = {\n class: \"token-result\"\n};\nconst _hoisted_38 = {\n style: {\n \"margin-bottom\": \"15px\",\n \"color\": \"#e6a23c\"\n }\n};\nconst _hoisted_39 = {\n class: \"dialog-footer\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_table_column = _resolveComponent(\"el-table-column\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_table = _resolveComponent(\"el-table\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_input_number = _resolveComponent(\"el-input-number\");\n const _component_FloatingSaveButton = _resolveComponent(\"FloatingSaveButton\");\n const _component_el_checkbox_group = _resolveComponent(\"el-checkbox-group\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"h3\", _hoisted_3, _toDisplayString(_ctx.$t('sysSecurity.authManagement')), 1), _createElementVNode(\"h4\", _hoisted_4, _toDisplayString(_ctx.$t('sysSecurity.userAuth')), 1), _createVNode(_component_el_form, {\n model: $data.authSettings.user,\n rules: $options.userPassRules,\n ref: \"userPassForm\",\n \"label-width\": \"120px\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.uploadPassword'),\n prop: \"authCode\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_input, {\n modelValue: $data.authSettings.user.authCode,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.authSettings.user.authCode = $event),\n type: \"password\",\n \"show-password\": \"\",\n onInput: $options.handleUserPassInput,\n autocomplete: \"new-password\",\n placeholder: $data.authSettings.user._hasPassword ? _ctx.$t('sysSecurity.passwordUnchanged') : '',\n disabled: $data.clearUserPassword\n }, null, 8, [\"modelValue\", \"onInput\", \"placeholder\", \"disabled\"]), $data.authSettings.user._hasPassword ? (_openBlock(), _createBlock(_component_el_checkbox, {\n key: 0,\n modelValue: $data.clearUserPassword,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $data.clearUserPassword = $event),\n onChange: $options.handleClearUserPassword\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.clearPassword')), 1)]),\n _: 1\n }, 8, [\"modelValue\", \"onChange\"])) : _createCommentVNode(\"\", true)])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_Transition, {\n name: \"fade-slide\",\n mode: \"out-in\"\n }, {\n default: _withCtx(() => [$data.showUserPassConfirm ? (_openBlock(), _createBlock(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.confirmPassword'),\n prop: \"confirmNewUserPassword\",\n key: \"user-confirm\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.authSettings.user.confirmNewUserPassword,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.authSettings.user.confirmNewUserPassword = $event),\n type: \"password\",\n \"show-password\": \"\",\n autocomplete: \"new-password\"\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"])) : _createCommentVNode(\"\", true)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"model\", \"rules\"]), _createElementVNode(\"h4\", _hoisted_6, _toDisplayString(_ctx.$t('sysSecurity.adminAuth')), 1), _createVNode(_component_el_form, {\n model: $data.authSettings.admin,\n rules: $options.adminPassRules,\n ref: \"adminPassForm\",\n \"label-width\": \"120px\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.adminUsername'),\n prop: \"adminUsername\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.authSettings.admin.adminUsername,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.authSettings.admin.adminUsername = $event),\n autocomplete: \"new-password\",\n disabled: $data.clearAdminPassword\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.adminPassword'),\n prop: \"adminPassword\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_el_input, {\n modelValue: $data.authSettings.admin.adminPassword,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $data.authSettings.admin.adminPassword = $event),\n type: \"password\",\n \"show-password\": \"\",\n onInput: $options.handleAdminPassInput,\n autocomplete: \"new-password\",\n placeholder: $data.authSettings.admin._hasPassword ? _ctx.$t('sysSecurity.passwordUnchanged') : '',\n disabled: $data.clearAdminPassword\n }, null, 8, [\"modelValue\", \"onInput\", \"placeholder\", \"disabled\"]), $data.authSettings.admin._hasPassword ? (_openBlock(), _createBlock(_component_el_checkbox, {\n key: 0,\n modelValue: $data.clearAdminPassword,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $data.clearAdminPassword = $event),\n onChange: $options.handleClearAdminPassword\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.clearPassword')), 1)]),\n _: 1\n }, 8, [\"modelValue\", \"onChange\"])) : _createCommentVNode(\"\", true)])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_Transition, {\n name: \"fade-slide\",\n mode: \"out-in\"\n }, {\n default: _withCtx(() => [$data.showAdminPassConfirm ? (_openBlock(), _createBlock(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.confirmPassword'),\n prop: \"confirmNewAdminPassword\",\n key: \"admin-confirm\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.authSettings.admin.confirmNewAdminPassword,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.authSettings.admin.confirmNewAdminPassword = $event),\n type: \"password\",\n \"show-password\": \"\",\n autocomplete: \"new-password\"\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"])) : _createCommentVNode(\"\", true)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"model\", \"rules\"]), _createElementVNode(\"h4\", _hoisted_8, [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.apiTokenManagement')) + \" \", 1), _createElementVNode(\"a\", _hoisted_9, [_createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: _cache[7] || (_cache[7] = $event => $data.showCreateTokenDialog = true),\n circle: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"plus\"\n })]),\n _: 1\n })])]), _createElementVNode(\"div\", _hoisted_10, [_withDirectives((_openBlock(), _createBlock(_component_el_table, {\n data: $data.apiTokens,\n class: \"token-table\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_table_column, {\n prop: \"name\",\n label: _ctx.$t('sysSecurity.tokenName'),\n \"header-align\": \"center\"\n }, {\n default: _withCtx(scope => [_createElementVNode(\"div\", _hoisted_11, _toDisplayString(scope.row.name), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_table_column, {\n prop: \"token\",\n label: _ctx.$t('sysSecurity.tokenValue'),\n \"header-align\": \"center\"\n }, {\n default: _withCtx(scope => [_createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"span\", _hoisted_13, _toDisplayString(scope.row.token), 1)])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_table_column, {\n prop: \"permissions\",\n label: _ctx.$t('sysSecurity.permissions'),\n \"header-align\": \"center\"\n }, {\n default: _withCtx(scope => [_createElementVNode(\"div\", _hoisted_14, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(scope.row.permissions, perm => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: perm,\n size: \"small\",\n class: \"permission-tag\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.getPermissionText(perm)), 1)]),\n _: 2\n }, 1024);\n }), 128))])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_table_column, {\n prop: \"createdAt\",\n label: _ctx.$t('sysSecurity.createdAt'),\n \"header-align\": \"center\"\n }, {\n default: _withCtx(scope => [_createElementVNode(\"div\", _hoisted_15, _toDisplayString($options.formatDate(scope.row.createdAt)), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_table_column, {\n label: _ctx.$t('sysSecurity.status'),\n \"header-align\": \"center\",\n width: \"90\"\n }, {\n default: _withCtx(scope => [_createElementVNode(\"div\", _hoisted_16, [_createVNode(_component_el_tag, {\n type: $options.getTokenStatus(scope.row.expiresAt).status === 'active' ? 'success' : 'danger',\n size: \"small\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.getTokenStatus(scope.row.expiresAt).label), 1)]),\n _: 2\n }, 1032, [\"type\"])])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_table_column, {\n label: _ctx.$t('sysSecurity.expiresAt'),\n \"header-align\": \"center\"\n }, {\n default: _withCtx(scope => [_createElementVNode(\"div\", _hoisted_17, _toDisplayString($options.getTokenStatus(scope.row.expiresAt).expiresText), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_table_column, {\n label: _ctx.$t('sysSecurity.operation'),\n fixed: \"right\",\n \"header-align\": \"center\"\n }, {\n default: _withCtx(scope => [_createElementVNode(\"div\", _hoisted_18, [_createVNode(_component_el_button, {\n class: \"action-button\",\n size: \"small\",\n onClick: $event => $options.editToken(scope.row)\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.editBtn')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n class: \"action-button\",\n size: \"small\",\n type: \"danger\",\n onClick: $event => $options.deleteToken(scope.row.id)\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.deleteBtn')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])]),\n _: 1\n }, 8, [\"label\"])]),\n _: 1\n }, 8, [\"data\"])), [[_directive_loading, $data.tokenLoading]])])]), _createElementVNode(\"div\", _hoisted_19, [_createElementVNode(\"h3\", _hoisted_20, _toDisplayString(_ctx.$t('sysSecurity.uploadManagement')), 1), _createElementVNode(\"h4\", _hoisted_21, [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.imageReview')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysSecurity.imageReviewTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n style: {\n \"margin-left\": \"5px\",\n \"cursor\": \"pointer\"\n }\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_form, {\n model: $data.uploadSettings.moderate,\n \"label-width\": \"120px\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.enableReview')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.uploadSettings.moderate.enabled,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => $data.uploadSettings.moderate.enabled = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.reviewChannel')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $data.uploadSettings.moderate.channel,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = $event => $data.uploadSettings.moderate.channel = $event),\n placeholder: _ctx.$t('sysSecurity.reviewChannelPlaceholder')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"moderatecontent.com\",\n value: \"moderatecontent.com\"\n }), _createVNode(_component_el_option, {\n label: \"nsfwjs\",\n value: \"nsfwjs\"\n })]),\n _: 1\n }, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), $data.uploadSettings.moderate.channel === 'moderatecontent.com' ? (_openBlock(), _createBlock(_component_el_form_item, {\n key: 0,\n label: _ctx.$t('sysSecurity.apiKey')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.uploadSettings.moderate.moderateContentApiKey,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $data.uploadSettings.moderate.moderateContentApiKey = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"])) : _createCommentVNode(\"\", true), $data.uploadSettings.moderate.channel === 'nsfwjs' ? (_openBlock(), _createBlock(_component_el_form_item, {\n key: 1,\n label: _ctx.$t('sysSecurity.apiPath')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.uploadSettings.moderate.nsfwApiPath,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => $data.uploadSettings.moderate.nsfwApiPath = $event),\n placeholder: \"https://nsfwjs.your.domain\"\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"])) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"model\"]), _createElementVNode(\"h4\", _hoisted_22, [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.ipQuery')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysSecurity.ipQueryTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n style: {\n \"margin-left\": \"5px\",\n \"cursor\": \"pointer\"\n }\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_form, {\n model: $data.uploadSettings.ipQuery,\n \"label-width\": \"120px\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.enableIpQuery')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.uploadSettings.ipQuery.enabled,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = $event => $data.uploadSettings.ipQuery.enabled = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.ipQueryChannel')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $data.uploadSettings.ipQuery.channel,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $event => $data.uploadSettings.ipQuery.channel = $event),\n placeholder: _ctx.$t('sysSecurity.ipQueryChannelPlaceholder')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: _ctx.$t('sysSecurity.customApi'),\n value: \"customApi\"\n }, null, 8, [\"label\"])]),\n _: 1\n }, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), $data.uploadSettings.ipQuery.channel === 'customApi' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.apiPath')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.uploadSettings.ipQuery.customApi.url,\n \"onUpdate:modelValue\": _cache[14] || (_cache[14] = $event => $data.uploadSettings.ipQuery.customApi.url = $event),\n placeholder: \"https://api.example.com/ip\"\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.queryParams')\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_23, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.uploadSettings.ipQuery.customApi.params, (param, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: index,\n class: \"query-param-row\"\n }, [_createVNode(_component_el_input, {\n modelValue: param.key,\n \"onUpdate:modelValue\": $event => param.key = $event,\n placeholder: _ctx.$t('sysSecurity.paramNamePlaceholder')\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\", \"placeholder\"]), _createVNode(_component_el_input, {\n modelValue: param.value,\n \"onUpdate:modelValue\": $event => param.value = $event,\n placeholder: _ctx.$t('sysSecurity.paramValuePlaceholder')\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\", \"placeholder\"]), _createVNode(_component_el_button, {\n type: \"danger\",\n plain: \"\",\n circle: \"\",\n onClick: $event => $options.removeIpQueryParam(index),\n disabled: $data.uploadSettings.ipQuery.customApi.params.length <= 1\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\", \"disabled\"])]);\n }), 128)), _createVNode(_component_el_button, {\n type: \"primary\",\n plain: \"\",\n onClick: $options.addIpQueryParam\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"plus\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('sysSecurity.addQueryParam')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, null, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.responseFields')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysSecurity.responseFieldsTip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n style: {\n \"margin-left\": \"5px\",\n \"cursor\": \"pointer\"\n }\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_24, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.uploadSettings.ipQuery.customApi.responseFields, (field, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: index,\n class: \"response-field-row\"\n }, [_createVNode(_component_el_input, {\n modelValue: $data.uploadSettings.ipQuery.customApi.responseFields[index],\n \"onUpdate:modelValue\": $event => $data.uploadSettings.ipQuery.customApi.responseFields[index] = $event,\n placeholder: _ctx.$t('sysSecurity.responseFieldPathPlaceholder')\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\", \"placeholder\"]), _createVNode(_component_el_button, {\n plain: \"\",\n circle: \"\",\n onClick: $event => $options.moveIpQueryResponseField(index, -1),\n disabled: index === 0\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-up\"\n })]),\n _: 1\n }, 8, [\"onClick\", \"disabled\"]), _createVNode(_component_el_button, {\n plain: \"\",\n circle: \"\",\n onClick: $event => $options.moveIpQueryResponseField(index, 1),\n disabled: index === $data.uploadSettings.ipQuery.customApi.responseFields.length - 1\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-down\"\n })]),\n _: 1\n }, 8, [\"onClick\", \"disabled\"]), _createVNode(_component_el_button, {\n type: \"danger\",\n plain: \"\",\n circle: \"\",\n onClick: $event => $options.removeIpQueryResponseField(index)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]);\n }), 128)), _createVNode(_component_el_button, {\n type: \"primary\",\n plain: \"\",\n onClick: $options.addIpQueryResponseField\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"plus\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('sysSecurity.addResponseField')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])]),\n _: 1\n })], 64)) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"model\"])]), _createElementVNode(\"div\", _hoisted_25, [_createElementVNode(\"h3\", _hoisted_26, _toDisplayString(_ctx.$t('sysSecurity.accessManagement')), 1), _createElementVNode(\"h4\", _hoisted_27, _toDisplayString(_ctx.$t('sysSecurity.domainFilter')), 1), _createVNode(_component_el_form, {\n model: $data.accessSettings,\n \"label-width\": \"120px\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, null, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.allowedDomains')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysSecurity.allowedDomainsTooltip'),\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n style: {\n \"margin-left\": \"5px\",\n \"cursor\": \"pointer\"\n }\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.accessSettings.allowedDomains,\n \"onUpdate:modelValue\": _cache[15] || (_cache[15] = $event => $data.accessSettings.allowedDomains = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n })]),\n _: 1\n }, 8, [\"model\"]), _createElementVNode(\"h4\", _hoisted_28, _toDisplayString(_ctx.$t('sysSecurity.whiteListMode')), 1), _createVNode(_component_el_form, {\n model: $data.accessSettings,\n rules: $options.accessRules,\n ref: \"accessForm\",\n \"label-width\": \"120px\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, null, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.enableWhiteList')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysSecurity.enableWhiteListTooltip'),\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n style: {\n \"margin-left\": \"5px\",\n \"cursor\": \"pointer\"\n }\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.accessSettings.whiteListMode,\n \"onUpdate:modelValue\": _cache[16] || (_cache[16] = $event => $data.accessSettings.whiteListMode = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n })]),\n _: 1\n }, 8, [\"model\", \"rules\"]), _createElementVNode(\"h4\", _hoisted_29, _toDisplayString(_ctx.$t('sysSecurity.imageTransform')), 1), _createVNode(_component_el_form, {\n model: $data.accessSettings,\n rules: $options.accessRules,\n ref: \"imageTransformForm\",\n \"label-width\": \"120px\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, null, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.enableImageTransform')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysSecurity.enableImageTransformTooltip'),\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n style: {\n \"margin-left\": \"5px\",\n \"cursor\": \"pointer\"\n }\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.accessSettings.imageTransformEnabled,\n \"onUpdate:modelValue\": _cache[17] || (_cache[17] = $event => $data.accessSettings.imageTransformEnabled = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }), $data.accessSettings.imageTransformEnabled ? (_openBlock(), _createBlock(_component_el_form_item, {\n key: 0,\n prop: \"imageTransformAllowedSizes\"\n }, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.imageTransformAllowedSizes')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysSecurity.imageTransformAllowedSizesHint'),\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n style: {\n \"margin-left\": \"5px\",\n \"cursor\": \"pointer\"\n }\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.accessSettings.imageTransformAllowedSizes,\n \"onUpdate:modelValue\": _cache[18] || (_cache[18] = $event => $data.accessSettings.imageTransformAllowedSizes = $event),\n placeholder: _ctx.$t('sysSecurity.imageTransformAllowedSizesPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"model\", \"rules\"]), _createElementVNode(\"h4\", _hoisted_30, _toDisplayString(_ctx.$t('sysSecurity.sessionSecurityPolicy')), 1), _createVNode(_component_el_form, {\n model: $data.accessSettings,\n \"label-width\": \"120px\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, null, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.secureMode')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysSecurity.secureModeTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n style: {\n \"margin-left\": \"5px\",\n \"cursor\": \"pointer\"\n }\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.accessSettings.sessionSecure,\n \"onUpdate:modelValue\": _cache[19] || (_cache[19] = $event => $data.accessSettings.sessionSecure = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.userSessionMaxAge'),\n prop: \"userSessionMaxAge\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $data.accessSettings.userSessionMaxAge,\n \"onUpdate:modelValue\": _cache[20] || (_cache[20] = $event => $data.accessSettings.userSessionMaxAge = $event),\n min: 1,\n max: 3650,\n step: 1,\n precision: 0,\n \"controls-position\": \"right\"\n }, null, 8, [\"modelValue\"]), _createElementVNode(\"span\", _hoisted_31, _toDisplayString(_ctx.$t('sysSecurity.sessionMaxAgeUnit')), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.adminSessionMaxAge'),\n prop: \"adminSessionMaxAge\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $data.accessSettings.adminSessionMaxAge,\n \"onUpdate:modelValue\": _cache[21] || (_cache[21] = $event => $data.accessSettings.adminSessionMaxAge = $event),\n min: 1,\n max: 3650,\n step: 1,\n precision: 0,\n \"controls-position\": \"right\"\n }, null, 8, [\"modelValue\"]), _createElementVNode(\"span\", _hoisted_32, _toDisplayString(_ctx.$t('sysSecurity.sessionMaxAgeUnit')), 1)]),\n _: 1\n }, 8, [\"label\"])]),\n _: 1\n }, 8, [\"model\"])]), _createVNode(_component_FloatingSaveButton, {\n show: !$data.loading,\n onClick: $options.saveSettings\n }, null, 8, [\"show\", \"onClick\"]), _createVNode(_component_el_dialog, {\n modelValue: $data.showCreateTokenDialog,\n \"onUpdate:modelValue\": _cache[29] || (_cache[29] = $event => $data.showCreateTokenDialog = $event),\n title: _ctx.$t('sysSecurity.createTokenTitle'),\n width: $options.dialogWidth\n }, {\n footer: _withCtx(() => [_createElementVNode(\"span\", _hoisted_34, [_createVNode(_component_el_button, {\n onClick: _cache[28] || (_cache[28] = $event => $data.showCreateTokenDialog = false)\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('common.cancel')), 1)]),\n _: 1\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $options.createToken\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.createBtn')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $data.newToken,\n rules: $options.tokenRules,\n ref: \"tokenForm\",\n \"label-width\": \"100px\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.tokenNameLabel'),\n prop: \"name\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newToken.name,\n \"onUpdate:modelValue\": _cache[22] || (_cache[22] = $event => $data.newToken.name = $event),\n placeholder: _ctx.$t('sysSecurity.tokenNamePlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.permissionsLabel'),\n prop: \"permissions\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.newToken.permissions,\n \"onUpdate:modelValue\": _cache[23] || (_cache[23] = $event => $data.newToken.permissions = $event)\n }, {\n default: _withCtx(() => [_createVNode(_component_el_checkbox, {\n label: \"upload\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.permUpload')), 1)]),\n _: 1\n }), _createVNode(_component_el_checkbox, {\n label: \"delete\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.permDelete')), 1)]),\n _: 1\n }), _createVNode(_component_el_checkbox, {\n label: \"list\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.permList')), 1)]),\n _: 1\n }), _createVNode(_component_el_checkbox, {\n label: \"manage\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.permManage')), 1)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.neverExpire')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.newToken.neverExpire,\n \"onUpdate:modelValue\": _cache[24] || (_cache[24] = $event => $data.newToken.neverExpire = $event),\n onChange: $options.onCreateNeverExpireChange\n }, null, 8, [\"modelValue\", \"onChange\"])]),\n _: 1\n }, 8, [\"label\"]), !$data.newToken.neverExpire ? (_openBlock(), _createBlock(_component_el_form_item, {\n key: 0,\n label: _ctx.$t('sysSecurity.validPeriod'),\n prop: \"expirationValue\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_33, [_createVNode(_component_el_input_number, {\n modelValue: $data.newToken.expirationValue,\n \"onUpdate:modelValue\": _cache[25] || (_cache[25] = $event => $data.newToken.expirationValue = $event),\n min: 1,\n step: 1,\n \"controls-position\": \"right\",\n style: {\n \"flex\": \"1\"\n }\n }, null, 8, [\"modelValue\"]), _createVNode(_component_el_select, {\n modelValue: $data.newToken.expirationUnit,\n \"onUpdate:modelValue\": _cache[26] || (_cache[26] = $event => $data.newToken.expirationUnit = $event),\n style: {\n \"width\": \"100px\"\n }\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.timeUnitOptions, opt => {\n return _openBlock(), _createBlock(_component_el_option, {\n key: opt.value,\n label: _ctx.$t(opt.labelKey),\n value: opt.value\n }, null, 8, [\"label\", \"value\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]),\n _: 1\n }, 8, [\"label\"])) : _createCommentVNode(\"\", true), !$data.newToken.neverExpire ? (_openBlock(), _createBlock(_component_el_form_item, {\n key: 1,\n label: _ctx.$t('sysSecurity.autoDeleteOnExpire')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.newToken.autoDelete,\n \"onUpdate:modelValue\": _cache[27] || (_cache[27] = $event => $data.newToken.autoDelete = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"])) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"model\", \"rules\"])]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"width\"]), _createVNode(_component_el_dialog, {\n modelValue: $data.showEditTokenDialog,\n \"onUpdate:modelValue\": _cache[37] || (_cache[37] = $event => $data.showEditTokenDialog = $event),\n title: _ctx.$t('sysSecurity.editTokenTitle'),\n width: $options.dialogWidth\n }, {\n footer: _withCtx(() => [_createElementVNode(\"span\", _hoisted_36, [_createVNode(_component_el_button, {\n onClick: _cache[36] || (_cache[36] = $event => $data.showEditTokenDialog = false)\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('common.cancel')), 1)]),\n _: 1\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $options.updateToken\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.updateBtn')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $data.editingToken,\n rules: $options.editTokenRules,\n ref: \"editTokenForm\",\n \"label-width\": \"100px\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.tokenNameLabel')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editingToken.name,\n \"onUpdate:modelValue\": _cache[30] || (_cache[30] = $event => $data.editingToken.name = $event),\n disabled: \"\"\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.permissionsLabel'),\n prop: \"permissions\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.editingToken.permissions,\n \"onUpdate:modelValue\": _cache[31] || (_cache[31] = $event => $data.editingToken.permissions = $event)\n }, {\n default: _withCtx(() => [_createVNode(_component_el_checkbox, {\n label: \"upload\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.permUpload')), 1)]),\n _: 1\n }), _createVNode(_component_el_checkbox, {\n label: \"delete\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.permDelete')), 1)]),\n _: 1\n }), _createVNode(_component_el_checkbox, {\n label: \"list\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.permList')), 1)]),\n _: 1\n }), _createVNode(_component_el_checkbox, {\n label: \"manage\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.permManage')), 1)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.neverExpire')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.editingToken.neverExpire,\n \"onUpdate:modelValue\": _cache[32] || (_cache[32] = $event => $data.editingToken.neverExpire = $event),\n onChange: $options.onEditNeverExpireChange\n }, null, 8, [\"modelValue\", \"onChange\"])]),\n _: 1\n }, 8, [\"label\"]), !$data.editingToken.neverExpire ? (_openBlock(), _createBlock(_component_el_form_item, {\n key: 0,\n label: _ctx.$t('sysSecurity.validPeriod'),\n prop: \"expirationValue\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_35, [_createVNode(_component_el_input_number, {\n modelValue: $data.editingToken.expirationValue,\n \"onUpdate:modelValue\": _cache[33] || (_cache[33] = $event => $data.editingToken.expirationValue = $event),\n min: 1,\n step: 1,\n \"controls-position\": \"right\",\n style: {\n \"flex\": \"1\"\n }\n }, null, 8, [\"modelValue\"]), _createVNode(_component_el_select, {\n modelValue: $data.editingToken.expirationUnit,\n \"onUpdate:modelValue\": _cache[34] || (_cache[34] = $event => $data.editingToken.expirationUnit = $event),\n style: {\n \"width\": \"100px\"\n }\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.timeUnitOptions, opt => {\n return _openBlock(), _createBlock(_component_el_option, {\n key: opt.value,\n label: _ctx.$t(opt.labelKey),\n value: opt.value\n }, null, 8, [\"label\", \"value\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]),\n _: 1\n }, 8, [\"label\"])) : _createCommentVNode(\"\", true), !$data.editingToken.neverExpire ? (_openBlock(), _createBlock(_component_el_form_item, {\n key: 1,\n label: _ctx.$t('sysSecurity.autoDeleteOnExpire')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.editingToken.autoDelete,\n \"onUpdate:modelValue\": _cache[35] || (_cache[35] = $event => $data.editingToken.autoDelete = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"])) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"model\", \"rules\"])]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"width\"]), _createVNode(_component_el_dialog, {\n modelValue: $data.showTokenResultDialog,\n \"onUpdate:modelValue\": _cache[40] || (_cache[40] = $event => $data.showTokenResultDialog = $event),\n title: _ctx.$t('sysSecurity.tokenCreatedTitle'),\n width: $options.dialogWidth\n }, {\n footer: _withCtx(() => [_createElementVNode(\"span\", _hoisted_39, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[39] || (_cache[39] = $event => $data.showTokenResultDialog = false)\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.savedBtn')), 1)]),\n _: 1\n })])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_37, [_createElementVNode(\"p\", _hoisted_38, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-triangle\",\n style: {\n \"margin-right\": \"5px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('sysSecurity.tokenCreatedWarning')), 1)]), _createVNode(_component_el_form, {\n \"label-width\": \"100px\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.tokenNameLabel')\n }, {\n default: _withCtx(() => [_createElementVNode(\"span\", null, _toDisplayString($data.createdToken.name), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.fullToken')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.createdToken.token,\n \"onUpdate:modelValue\": _cache[38] || (_cache[38] = $event => $data.createdToken.token = $event),\n readonly: \"\"\n }, {\n append: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: $options.copyToken\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.copyBtn')), 1)]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"])]),\n _: 1\n })])]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"width\"])])), [[_directive_loading, $data.loading]]);\n}","/**\r\n * Token 过期时间工具模块\r\n * 提供 Token 有效期计算、状态判定和向后兼容默认值填充功能\r\n */\r\n\r\n/**\r\n * 时间单位到毫秒的映射(月和年需要特殊处理)\r\n */\r\nconst SIMPLE_UNIT_MS = {\r\n s: 1000,\r\n m: 60 * 1000,\r\n h: 60 * 60 * 1000,\r\n d: 24 * 60 * 60 * 1000,\r\n};\r\n\r\n/**\r\n * 根据基准时间、数值和时间单位计算过期时间\r\n * @param {Date|string} baseTime - 基准时间(Date 对象或 ISO 8601 字符串)\r\n * @param {number} value - 正整数有效期数值\r\n * @param {string} unit - 时间单位:'s','m','h','d','M','Y'\r\n * @returns {string} 过期时间 ISO 8601 字符串\r\n * @throws {Error} 当 value <= 0 或 unit 无效时抛出错误\r\n */\r\nexport function computeExpiresAt(baseTime, value, unit) {\r\n if (!Number.isFinite(value) || value <= 0) {\r\n throw new Error('有效期数值必须大于 0');\r\n }\r\n\r\n const base = typeof baseTime === 'string' ? new Date(baseTime) : new Date(baseTime.getTime());\r\n\r\n if (SIMPLE_UNIT_MS[unit]) {\r\n return new Date(base.getTime() + value * SIMPLE_UNIT_MS[unit]).toISOString();\r\n }\r\n\r\n if (unit === 'M') {\r\n base.setUTCMonth(base.getUTCMonth() + value);\r\n return base.toISOString();\r\n }\r\n\r\n if (unit === 'Y') {\r\n base.setUTCFullYear(base.getUTCFullYear() + value);\r\n return base.toISOString();\r\n }\r\n\r\n throw new Error(`无效的时间单位: ${unit}`);\r\n}\r\n\r\n\r\n/**\r\n * 格式化过期时间为可读字符串\r\n * @param {string} isoString - ISO 8601 时间字符串\r\n * @returns {string} 格式化后的时间字符串\r\n */\r\nfunction formatExpiresTime(isoString) {\r\n const date = new Date(isoString);\r\n const year = date.getFullYear();\r\n const month = String(date.getMonth() + 1).padStart(2, '0');\r\n const day = String(date.getDate()).padStart(2, '0');\r\n const hours = String(date.getHours()).padStart(2, '0');\r\n const minutes = String(date.getMinutes()).padStart(2, '0');\r\n const seconds = String(date.getSeconds()).padStart(2, '0');\r\n return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;\r\n}\r\n\r\n/**\r\n * 获取 Token 的状态信息\r\n * @param {string|null} expiresAt - 过期时间 ISO 8601 字符串,null 表示永不过期\r\n * @param {Date} [now=new Date()] - 当前时间\r\n * @returns {{ status: 'active'|'expired', label: '有效'|'已过期', expiresText: string }}\r\n */\r\nexport function getTokenStatus(expiresAt, now = new Date()) {\r\n if (expiresAt === null || expiresAt === undefined) {\r\n return {\r\n status: 'active',\r\n label: '有效',\r\n expiresText: '永不过期',\r\n };\r\n }\r\n\r\n const expiresDate = new Date(expiresAt);\r\n const currentTime = now instanceof Date ? now : new Date(now);\r\n const formattedTime = formatExpiresTime(expiresAt);\r\n\r\n if (currentTime.getTime() > expiresDate.getTime()) {\r\n return {\r\n status: 'expired',\r\n label: '已过期',\r\n expiresText: formattedTime,\r\n };\r\n }\r\n\r\n return {\r\n status: 'active',\r\n label: '有效',\r\n expiresText: formattedTime,\r\n };\r\n}\r\n\r\n\r\n/**\r\n * 为缺少过期相关字段的旧 Token 数据填充默认值\r\n * @param {Object} tokenData - Token 数据对象\r\n * @returns {Object} 填充默认值后的新 Token 数据对象\r\n */\r\nexport function applyTokenDefaults(tokenData) {\r\n return {\r\n ...tokenData,\r\n expiresAt: tokenData.expiresAt ?? null,\r\n autoDelete: tokenData.autoDelete ?? false,\r\n };\r\n}\r\n","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.every.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nimport FloatingSaveButton from '@/components/FloatingSaveButton.vue';\nimport { computeExpiresAt, getTokenStatus } from '@/utils/tokenExpiration';\nexport default {\n components: {\n FloatingSaveButton\n },\n data() {\n return {\n authSettings: {\n user: {},\n admin: {}\n },\n uploadSettings: {\n moderate: {},\n ipQuery: {\n enabled: false,\n channel: 'customApi',\n customApi: {\n url: '',\n params: [{\n key: 'ip',\n value: '{ip}'\n }],\n responseFields: []\n }\n }\n },\n accessSettings: {},\n apiTokens: [],\n // API Token列表\n // 加载状态\n loading: true,\n tokenLoading: false,\n // 修改密码相关\n oriUserPassword: '',\n // 原上传密码\n oriAdminPassword: '',\n // 原管理端密码\n\n showUserPassConfirm: false,\n // 显示用户密码确认框\n showAdminPassConfirm: false,\n // 显示管理密码确认框\n clearUserPassword: false,\n // 清除用户密码开关\n clearAdminPassword: false,\n // 清除管理密码开关\n\n // Token对话框相关\n showCreateTokenDialog: false,\n showEditTokenDialog: false,\n showTokenResultDialog: false,\n timeUnitOptions: [{\n labelKey: 'sysSecurity.timeUnitSeconds',\n value: 's'\n }, {\n labelKey: 'sysSecurity.timeUnitMinutes',\n value: 'm'\n }, {\n labelKey: 'sysSecurity.timeUnitHours',\n value: 'h'\n }, {\n labelKey: 'sysSecurity.timeUnitDays',\n value: 'd'\n }, {\n labelKey: 'sysSecurity.timeUnitMonths',\n value: 'M'\n }, {\n labelKey: 'sysSecurity.timeUnitYears',\n value: 'Y'\n }],\n newToken: {\n name: '',\n owner: '',\n permissions: [],\n neverExpire: true,\n expirationValue: 1,\n expirationUnit: 'd',\n autoDelete: false\n },\n editingToken: {\n id: '',\n name: '',\n owner: '',\n permissions: [],\n neverExpire: true,\n expirationValue: 1,\n expirationUnit: 'd',\n autoDelete: false\n },\n createdToken: {\n name: '',\n token: ''\n }\n };\n },\n computed: {\n dialogWidth() {\n return window.innerWidth > 768 ? '50%' : '90%';\n },\n userPassRules() {\n return {\n authCode: [{\n validator: (rule, value, callback) => {\n const urlReservedChars = ['%', '&', '?', '#', '/'];\n const hasReservedChar = urlReservedChars.some(char => value && value.includes(char));\n if (hasReservedChar) {\n callback(new Error(this.$t('sysSecurity.passwordUrlReserved')));\n } else {\n callback();\n }\n },\n trigger: 'blur'\n }],\n confirmNewUserPassword: [{\n validator: (rule, value, callback) => {\n if (!value) {\n callback(new Error(this.$t('sysSecurity.confirmUploadPassword')));\n } else if (value !== this.authSettings.user.authCode) {\n callback(new Error(this.$t('sysSecurity.passwordMismatch')));\n } else {\n callback();\n }\n },\n trigger: 'blur'\n }]\n };\n },\n adminPassRules() {\n return {\n confirmNewAdminPassword: [{\n validator: (rule, value, callback) => {\n if (!value) {\n callback(new Error(this.$t('sysSecurity.confirmAdminPassword')));\n } else if (value !== this.authSettings.admin.adminPassword) {\n callback(new Error(this.$t('sysSecurity.passwordMismatch')));\n } else {\n callback();\n }\n },\n trigger: 'blur'\n }]\n };\n },\n accessRules() {\n const validateSessionMaxAge = (rule, value, callback) => {\n if (!Number.isInteger(value) || value < 1 || value > 3650) {\n callback(new Error(this.$t('sysSecurity.sessionMaxAgeInvalid')));\n } else {\n callback();\n }\n };\n const validateImageTransformAllowedSizes = (rule, value, callback) => {\n if (!this.accessSettings.imageTransformEnabled || !value || !value.trim()) {\n callback();\n return;\n }\n const sizes = value.split(',').map(size => size.trim().toLowerCase()).filter(Boolean);\n const valid = sizes.every(size => {\n const match = size.match(/^(auto|[1-9]\\d*)x(auto|[1-9]\\d*)$/);\n if (!match || match[1] === 'auto' && match[2] === 'auto') return false;\n return match.slice(1).every(dimension => dimension === 'auto' || Number(dimension) <= 4096);\n });\n if (!valid) {\n callback(new Error(this.$t('sysSecurity.imageTransformAllowedSizesInvalid')));\n } else {\n callback();\n }\n };\n return {\n userSessionMaxAge: [{\n validator: validateSessionMaxAge,\n trigger: 'change'\n }],\n adminSessionMaxAge: [{\n validator: validateSessionMaxAge,\n trigger: 'change'\n }],\n imageTransformAllowedSizes: [{\n validator: validateImageTransformAllowedSizes,\n trigger: ['blur', 'change']\n }]\n };\n },\n tokenRules() {\n return {\n name: [{\n required: true,\n message: this.$t('sysSecurity.tokenNameRequired'),\n trigger: 'blur'\n }],\n permissions: [{\n required: true,\n message: this.$t('sysSecurity.permissionsRequired'),\n trigger: 'change'\n }],\n expirationValue: [{\n validator: (rule, value, callback) => {\n if (!this.newToken.neverExpire && (!value || value <= 0)) {\n callback(new Error(this.$t('sysSecurity.validPeriodRequired')));\n } else {\n callback();\n }\n },\n trigger: 'blur'\n }]\n };\n },\n editTokenRules() {\n return {\n permissions: [{\n required: true,\n message: this.$t('sysSecurity.permissionsRequired'),\n trigger: 'change'\n }],\n expirationValue: [{\n validator: (rule, value, callback) => {\n if (!this.editingToken.neverExpire && (!value || value <= 0)) {\n callback(new Error(this.$t('sysSecurity.validPeriodRequired')));\n } else {\n callback();\n }\n },\n trigger: 'blur'\n }]\n };\n }\n },\n methods: {\n normalizeIpQuerySettings(settings = {}) {\n const ipQuery = settings.ipQuery || {};\n const customApi = ipQuery.customApi || {};\n const params = Array.isArray(customApi.params) && customApi.params.length > 0 ? customApi.params.map(param => ({\n key: param?.key || '',\n value: param?.value || ''\n })) : [{\n key: 'ip',\n value: '{ip}'\n }];\n const responseFields = Array.isArray(customApi.responseFields) ? customApi.responseFields.map(field => {\n if (typeof field === 'string') return field;\n return field?.path || '';\n }) : [];\n return {\n ...settings,\n moderate: settings.moderate || {},\n ipQuery: {\n enabled: ipQuery.enabled ?? false,\n channel: ipQuery.channel || 'customApi',\n customApi: {\n url: customApi.url || '',\n params,\n responseFields\n }\n }\n };\n },\n addIpQueryParam() {\n this.uploadSettings.ipQuery.customApi.params.push({\n key: '',\n value: ''\n });\n },\n removeIpQueryParam(index) {\n if (this.uploadSettings.ipQuery.customApi.params.length <= 1) return;\n this.uploadSettings.ipQuery.customApi.params.splice(index, 1);\n },\n addIpQueryResponseField() {\n this.uploadSettings.ipQuery.customApi.responseFields.push('');\n },\n removeIpQueryResponseField(index) {\n this.uploadSettings.ipQuery.customApi.responseFields.splice(index, 1);\n },\n moveIpQueryResponseField(index, direction) {\n const fields = this.uploadSettings.ipQuery.customApi.responseFields;\n const targetIndex = index + direction;\n if (targetIndex < 0 || targetIndex >= fields.length) return;\n const [field] = fields.splice(index, 1);\n fields.splice(targetIndex, 0, field);\n },\n handleUserPassInput() {\n if (this.authSettings.user.authCode !== this.oriUserPassword) {\n this.showUserPassConfirm = true;\n } else {\n this.showUserPassConfirm = false;\n }\n },\n handleAdminPassInput() {\n if (this.authSettings.admin.adminPassword !== this.oriAdminPassword) {\n this.showAdminPassConfirm = true;\n } else {\n this.showAdminPassConfirm = false;\n }\n },\n handleClearUserPassword(checked) {\n if (checked) {\n this.authSettings.user.authCode = '';\n this.showUserPassConfirm = false;\n }\n },\n handleClearAdminPassword(checked) {\n if (checked) {\n this.authSettings.admin.adminPassword = '';\n this.authSettings.admin.adminUsername = '';\n this.showAdminPassConfirm = false;\n }\n },\n // Token相关方法\n getPermissionText(permission) {\n const permissionMap = {\n 'upload': this.$t('sysSecurity.permUpload'),\n 'delete': this.$t('sysSecurity.permDelete'),\n 'list': this.$t('sysSecurity.permList'),\n 'manage': this.$t('sysSecurity.permManage')\n };\n return permissionMap[permission] || permission;\n },\n formatDate(dateString) {\n return new Date(dateString).toLocaleString('zh-CN');\n },\n async loadApiTokens() {\n this.tokenLoading = true;\n try {\n const response = await fetchWithAuth('/api/manage/apiTokens');\n const data = await response.json();\n this.apiTokens = data.tokens || [];\n } catch (error) {\n this.$message.error(this.$t('sysSecurity.tokenListFailed'));\n } finally {\n this.tokenLoading = false;\n }\n },\n createToken() {\n this.$refs.tokenForm.validate(async valid => {\n if (!valid) return;\n try {\n this.newToken.owner = 'admin'; // 默认所有Token归属管理员\n\n let expiresAt = null;\n let autoDelete = false;\n if (!this.newToken.neverExpire) {\n expiresAt = computeExpiresAt(new Date(), this.newToken.expirationValue, this.newToken.expirationUnit);\n autoDelete = this.newToken.autoDelete;\n }\n const response = await fetchWithAuth('/api/manage/apiTokens', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n name: this.newToken.name,\n owner: this.newToken.owner,\n permissions: this.newToken.permissions,\n expiresAt,\n autoDelete\n })\n });\n const data = await response.json();\n if (response.ok) {\n this.createdToken = {\n name: data.name,\n token: data.token\n };\n this.showCreateTokenDialog = false;\n this.showTokenResultDialog = true;\n this.newToken = {\n name: '',\n owner: '',\n permissions: [],\n neverExpire: true,\n expirationValue: 1,\n expirationUnit: 'd',\n autoDelete: false\n };\n await this.loadApiTokens();\n this.$message.success(this.$t('sysSecurity.tokenCreateSuccess'));\n } else {\n this.$message.error(data.error || this.$t('sysSecurity.tokenCreateFailed'));\n }\n } catch (error) {\n this.$message.error(this.$t('sysSecurity.tokenCreateFailed'));\n }\n });\n },\n editToken(token) {\n const hasExpiration = token.expiresAt !== null && token.expiresAt !== undefined;\n this.editingToken = {\n id: token.id,\n name: token.name,\n owner: token.owner,\n permissions: [...token.permissions],\n neverExpire: !hasExpiration,\n expirationValue: 1,\n expirationUnit: 'd',\n autoDelete: token.autoDelete || false\n };\n this.showEditTokenDialog = true;\n },\n updateToken() {\n this.$refs.editTokenForm.validate(async valid => {\n if (!valid) return;\n try {\n let expiresAt = null;\n let autoDelete = false;\n if (!this.editingToken.neverExpire) {\n expiresAt = computeExpiresAt(new Date(), this.editingToken.expirationValue, this.editingToken.expirationUnit);\n autoDelete = this.editingToken.autoDelete;\n }\n const response = await fetchWithAuth('/api/manage/apiTokens', {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n tokenId: this.editingToken.id,\n permissions: this.editingToken.permissions,\n expiresAt,\n autoDelete\n })\n });\n const data = await response.json();\n if (response.ok) {\n this.showEditTokenDialog = false;\n await this.loadApiTokens();\n this.$message.success(this.$t('sysSecurity.tokenUpdateSuccess'));\n } else {\n this.$message.error(data.error || this.$t('sysSecurity.tokenUpdateFailed'));\n }\n } catch (error) {\n this.$message.error(this.$t('sysSecurity.tokenUpdateFailed'));\n }\n });\n },\n async deleteToken(tokenId) {\n try {\n await this.$confirm(this.$t('sysSecurity.tokenDeleteConfirm'), this.$t('sysSecurity.tokenDeleteConfirmTitle'), {\n confirmButtonText: this.$t('sysSecurity.tokenDeleteConfirmOk'),\n cancelButtonText: this.$t('sysSecurity.tokenDeleteConfirmCancel'),\n type: 'warning'\n });\n const response = await fetchWithAuth(`/api/manage/apiTokens?id=${tokenId}`, {\n method: 'DELETE'\n });\n const data = await response.json();\n if (response.ok) {\n await this.loadApiTokens();\n this.$message.success(this.$t('sysSecurity.tokenDeleteSuccess'));\n } else {\n this.$message.error(data.error || this.$t('sysSecurity.tokenDeleteFailed'));\n }\n } catch (error) {\n if (error !== 'cancel') {\n this.$message.error(this.$t('sysSecurity.tokenDeleteFailed'));\n }\n }\n },\n async copyToken() {\n try {\n await navigator.clipboard.writeText(this.createdToken.token);\n this.$message.success(this.$t('sysSecurity.tokenCopied'));\n } catch (error) {\n this.$message.error(this.$t('sysSecurity.copyFailed'));\n }\n },\n onCreateNeverExpireChange(val) {\n if (val) {\n this.newToken.autoDelete = false;\n }\n },\n onEditNeverExpireChange(val) {\n if (val) {\n this.editingToken.autoDelete = false;\n }\n },\n getTokenStatus(expiresAt) {\n return getTokenStatus(expiresAt);\n },\n saveSettings() {\n // 所有表单的Promise数组\n let validationPromises = [];\n\n // 验证用户密码表单\n validationPromises.push(new Promise(resolve => {\n this.$refs.userPassForm.validate(valid => {\n resolve(valid);\n });\n }));\n\n // 验证管理密码表单\n validationPromises.push(new Promise(resolve => {\n this.$refs.adminPassForm.validate(valid => {\n resolve(valid);\n });\n }));\n\n // 验证会话安全策略表单\n validationPromises.push(new Promise(resolve => {\n this.$refs.accessForm.validate(valid => {\n resolve(valid);\n });\n }));\n validationPromises.push(new Promise(resolve => {\n this.$refs.imageTransformForm.validate(valid => {\n resolve(valid);\n });\n }));\n\n // 等待所有验证完成\n Promise.all(validationPromises).then(results => {\n const isValid = results.every(valid => valid);\n if (!isValid) {\n return;\n }\n\n // 验证会话有效期为 1-3650 的正整数\n if (this.accessSettings.userSessionMaxAge < 1 || !Number.isInteger(this.accessSettings.userSessionMaxAge) || this.accessSettings.userSessionMaxAge > 3650 || this.accessSettings.adminSessionMaxAge < 1 || !Number.isInteger(this.accessSettings.adminSessionMaxAge) || this.accessSettings.adminSessionMaxAge > 3650) {\n this.$message.error(this.$t('sysSecurity.sessionMaxAgeInvalid'));\n return;\n }\n const settings = {\n auth: this.authSettings,\n upload: this.uploadSettings,\n access: this.accessSettings\n };\n // 不保存确认密码相关字段\n delete settings.auth.user.confirmNewUserPassword;\n delete settings.auth.admin.confirmNewAdminPassword;\n\n // 标记清除密码\n if (this.clearUserPassword) {\n settings.auth.user._clear = true;\n settings.auth.user.authCode = '';\n }\n if (this.clearAdminPassword) {\n settings.auth.admin._clear = true;\n settings.auth.admin.adminPassword = '';\n }\n fetchWithAuth('/api/manage/sysConfig/security', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(settings)\n }).then(res => res.json()).then(data => {\n // 管理端密码变更后,当前会话已被清除,需要重新登录\n if (data.adminPasswordChanged) {\n const msg = this.$t('sysSecurity.adminPasswordChangedRelogin');\n this.$message.warning(msg);\n setTimeout(() => {\n this.$store.commit('setAdminLoggedIn', false);\n this.$router.push('/adminLogin');\n }, 1500);\n return;\n }\n this.$message.success(this.$t('sysSecurity.settingsSaved'));\n // 保存成功后重置密码字段为空(后端已处理)\n this.authSettings.user.authCode = '';\n this.authSettings.admin.adminPassword = '';\n this.oriUserPassword = '';\n this.oriAdminPassword = '';\n // 标记已有密码(如果用户刚设置了密码,且不是清除操作)\n if (settings.auth.user.authCode && !settings.auth.user._clear) {\n this.authSettings.user._hasPassword = true;\n } else if (settings.auth.user._clear) {\n this.authSettings.user._hasPassword = false;\n }\n if (settings.auth.admin.adminPassword && !settings.auth.admin._clear) {\n this.authSettings.admin._hasPassword = true;\n } else if (settings.auth.admin._clear) {\n this.authSettings.admin._hasPassword = false;\n }\n this.showUserPassConfirm = false;\n this.showAdminPassConfirm = false;\n this.clearUserPassword = false;\n this.clearAdminPassword = false;\n }).catch(() => {\n // 如果请求过程中 session 已失效导致 fetchWithAuth 跳转,忽略后续错误\n });\n });\n }\n },\n mounted() {\n this.loading = true;\n // 获取上传设置\n fetchWithAuth('/api/manage/sysConfig/security').then(response => response.json()).then(data => {\n this.authSettings = data.auth;\n this.uploadSettings = this.normalizeIpQuerySettings(data.upload);\n this.accessSettings = {\n imageTransformEnabled: false,\n imageTransformAllowedSizes: '',\n ...data.access\n };\n\n // 密码从后端返回为空(安全考虑),记录原始空值\n this.oriUserPassword = '';\n this.oriAdminPassword = '';\n this.authSettings.user.confirmNewUserPassword = '';\n this.authSettings.admin.confirmNewAdminPassword = '';\n\n // 加载API Token列表\n this.loadApiTokens();\n }).finally(() => {\n this.loading = false;\n });\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./SysCogSecurity.vue?vue&type=template&id=264510a6&scoped=true\"\nimport script from \"./SysCogSecurity.vue?vue&type=script&lang=js\"\nexport * from \"./SysCogSecurity.vue?vue&type=script&lang=js\"\n\nimport \"./SysCogSecurity.vue?vue&type=style&index=0&id=264510a6&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-264510a6\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"page-settings\"\n};\nconst _hoisted_2 = {\n class: \"first-title\"\n};\nconst _hoisted_3 = {\n key: 5,\n class: \"announcement-refresh-option\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_FloatingSaveButton = _resolveComponent(\"FloatingSaveButton\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_1, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.groupedSettings, (categoryGroup, categoryName) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: categoryName,\n class: \"first-settings\"\n }, [_createElementVNode(\"h3\", _hoisted_2, _toDisplayString(categoryName), 1), _createVNode(_component_el_form, {\n model: $data.settings,\n \"label-width\": \"150px\"\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(categoryGroup, (setting, index) => {\n return _openBlock(), _createBlock(_component_el_form_item, {\n key: setting.id,\n class: _normalizeClass({\n 'announcement-manual-height': setting.id === 'announcement' && $data.announcementManualHeight !== null\n }),\n style: _normalizeStyle(setting.id === 'announcement' && $data.announcementManualHeight !== null ? {\n '--announcement-manual-height': `${$data.announcementManualHeight}px`\n } : undefined)\n }, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString($options.localized(setting, 'label')) + \" \", 1), setting.tooltip ? (_openBlock(), _createBlock(_component_el_tooltip, {\n key: 0,\n content: $options.localized(setting, 'tooltip'),\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n style: {\n \"margin-left\": \"5px\",\n \"cursor\": \"pointer\"\n }\n })]),\n _: 1\n }, 8, [\"content\"])) : _createCommentVNode(\"\", true)]),\n default: _withCtx(() => [setting.type === 'select' ? (_openBlock(), _createBlock(_component_el_select, {\n key: 0,\n modelValue: setting.value,\n \"onUpdate:modelValue\": $event => setting.value = $event,\n disabled: setting.fixed,\n placeholder: $options.localized(setting, 'placeholder'),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(setting.options, option => {\n return _openBlock(), _createBlock(_component_el_option, {\n key: option.value,\n label: $options.localizedOption(option),\n value: option.value\n }, null, 8, [\"label\", \"value\"]);\n }), 128))]),\n _: 2\n }, 1032, [\"modelValue\", \"onUpdate:modelValue\", \"disabled\", \"placeholder\"])) : setting.type === 'channelName' ? (_openBlock(), _createBlock(_component_el_select, {\n key: 1,\n modelValue: setting.value,\n \"onUpdate:modelValue\": $event => setting.value = $event,\n disabled: !$options.currentUploadChannel || $options.currentChannelList.length === 0,\n placeholder: _ctx.$t('sysPage.channelSelectPlaceholder'),\n clearable: \"\",\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.currentChannelList, ch => {\n return _openBlock(), _createBlock(_component_el_option, {\n key: ch.name,\n label: ch.name,\n value: ch.name\n }, null, 8, [\"label\", \"value\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\", \"onUpdate:modelValue\", \"disabled\", \"placeholder\"])) : setting.type === 'boolean' ? (_openBlock(), _createBlock(_component_el_switch, {\n key: 2,\n modelValue: setting.value,\n \"onUpdate:modelValue\": $event => setting.value = $event,\n disabled: setting.fixed\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\", \"disabled\"])) : setting.type === 'textarea' ? (_openBlock(), _createBlock(_component_el_input, {\n key: 3,\n modelValue: setting.value,\n \"onUpdate:modelValue\": $event => setting.value = $event,\n type: \"textarea\",\n autosize: {\n minRows: 2,\n maxRows: setting.id === 'announcement' ? 8 : undefined\n },\n resize: \"vertical\",\n disabled: setting.fixed,\n placeholder: $options.localized(setting, 'placeholder'),\n onMousedown: $event => $options.handleAnnouncementResizeStart($event, setting)\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\", \"autosize\", \"disabled\", \"placeholder\", \"onMousedown\"])) : (_openBlock(), _createBlock(_component_el_input, {\n key: 4,\n modelValue: setting.value,\n \"onUpdate:modelValue\": $event => setting.value = $event,\n disabled: setting.fixed,\n placeholder: $options.localized(setting, 'placeholder')\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\", \"disabled\", \"placeholder\"])), setting.id === 'announcement' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [_createVNode(_component_el_checkbox, {\n modelValue: $data.refreshAnnouncement,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.refreshAnnouncement = $event)\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysPage.refreshAnnouncement')), 1)]),\n _: 1\n }, 8, [\"modelValue\"])])) : _createCommentVNode(\"\", true)]),\n _: 2\n }, 1032, [\"class\", \"style\"]);\n }), 128))]),\n _: 2\n }, 1032, [\"model\"])]);\n }), 128)), _createVNode(_component_FloatingSaveButton, {\n show: !$data.loading,\n onClick: $options.saveSettings\n }, null, 8, [\"show\", \"onClick\"])])), [[_directive_loading, $data.loading]]);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.find.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.some.js\";\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nimport axios from '@/utils/axios';\nimport FloatingSaveButton from '@/components/FloatingSaveButton.vue';\nexport default {\n components: {\n FloatingSaveButton\n },\n data() {\n return {\n settings: {\n config: []\n },\n // 加载状态\n loading: true,\n // 即使公告内容未变化,也在本次保存时刷新公告已读状态\n refreshAnnouncement: false,\n // 公告文本域手动拖拽后的高度\n announcementManualHeight: null,\n announcementResizeMouseUpHandler: null,\n // 可用渠道列表\n availableChannels: {}\n };\n },\n computed: {\n isEn() {\n return this.$i18n.locale === 'en';\n },\n // 根据category将配置项分组\n groupedSettings() {\n const grouped = {};\n if (this.settings.config) {\n this.settings.config.forEach(setting => {\n const category = this.isEn ? setting.category_en || setting.category || this.$t('sysPage.otherSettings') : setting.category || this.$t('sysPage.otherSettings');\n if (!grouped[category]) {\n grouped[category] = [];\n }\n grouped[category].push(setting);\n });\n }\n return grouped;\n },\n // 当前选择的上传渠道\n currentUploadChannel() {\n const channelSetting = this.settings.config?.find(s => s.id === 'defaultUploadChannel');\n return channelSetting?.value || '';\n },\n // 当前渠道类型对应的渠道列表\n currentChannelList() {\n return this.availableChannels[this.currentUploadChannel] || [];\n }\n },\n watch: {\n // 监听上传渠道变化,清空渠道名称(如果不在新列表中)\n currentUploadChannel(newVal, oldVal) {\n if (newVal !== oldVal) {\n const channelNameSetting = this.settings.config?.find(s => s.id === 'defaultChannelName');\n if (channelNameSetting) {\n const newChannelList = this.availableChannels[newVal] || [];\n if (!newChannelList.some(ch => ch.name === channelNameSetting.value)) {\n channelNameSetting.value = '';\n }\n }\n }\n }\n },\n methods: {\n localized(item, field) {\n if (this.isEn && item[field + '_en']) return item[field + '_en'];\n return item[field] || '';\n },\n localizedOption(option) {\n if (this.isEn && option.label_en) return option.label_en;\n return option.label;\n },\n handleAnnouncementResizeStart(event, setting) {\n if (setting.id !== 'announcement') return;\n const textarea = event.target.closest?.('textarea');\n if (!textarea) return;\n const rect = textarea.getBoundingClientRect();\n const resizeHandleSize = 24;\n const isResizeHandle = event.clientX >= rect.right - resizeHandleSize && event.clientY >= rect.bottom - resizeHandleSize;\n if (!isResizeHandle) return;\n const formItem = textarea.closest('.el-form-item');\n if (this.announcementResizeMouseUpHandler) {\n window.removeEventListener('mouseup', this.announcementResizeMouseUpHandler);\n }\n const startHeight = textarea.offsetHeight;\n textarea.style.height = `${startHeight}px`;\n formItem?.classList.remove('announcement-manual-height');\n this.announcementResizeMouseUpHandler = () => {\n const resizedHeight = textarea.offsetHeight;\n const manualHeight = Math.abs(resizedHeight - startHeight) > 1 ? resizedHeight : this.announcementManualHeight;\n if (manualHeight !== null) {\n this.announcementManualHeight = manualHeight;\n formItem?.style.setProperty('--announcement-manual-height', `${manualHeight}px`);\n formItem?.classList.add('announcement-manual-height');\n }\n this.announcementResizeMouseUpHandler = null;\n };\n window.addEventListener('mouseup', this.announcementResizeMouseUpHandler, {\n once: true\n });\n },\n saveSettings() {\n fetchWithAuth('/api/manage/sysConfig/page', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ...this.settings,\n refreshAnnouncement: this.refreshAnnouncement\n })\n }).then(() => {\n this.refreshAnnouncement = false;\n this.$message.success(this.$t('sysPage.settingsSaved'));\n });\n },\n // 获取可用渠道列表\n async fetchAvailableChannels() {\n try {\n const response = await axios.get('/api/channels');\n if (response.data) {\n this.availableChannels = response.data;\n }\n } catch (error) {\n console.error('Failed to fetch available channels:', error);\n }\n }\n },\n beforeUnmount() {\n if (this.announcementResizeMouseUpHandler) {\n window.removeEventListener('mouseup', this.announcementResizeMouseUpHandler);\n }\n },\n mounted() {\n this.loading = true;\n // 获取可用渠道列表\n this.fetchAvailableChannels();\n // 获取上传设置\n fetchWithAuth('/api/manage/sysConfig/page').then(response => response.json()).then(data => {\n this.settings = data;\n // 初始化配置项默认值,并规范化布尔类型\n if (this.settings.config) {\n this.settings.config.forEach(setting => {\n if ((setting.value === undefined || setting.value === null || setting.value === '') && setting.default !== undefined) {\n setting.value = setting.default;\n }\n if (setting.type === 'boolean') {\n // 将字符串转换为布尔值\n if (typeof setting.value === 'string') {\n setting.value = setting.value === 'true';\n }\n }\n });\n }\n }).finally(() => {\n this.loading = false;\n });\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./SysCogPage.vue?vue&type=template&id=342e4dda&scoped=true\"\nimport script from \"./SysCogPage.vue?vue&type=script&lang=js\"\nexport * from \"./SysCogPage.vue?vue&type=script&lang=js\"\n\nimport \"./SysCogPage.vue?vue&type=style&index=0&id=342e4dda&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-342e4dda\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"others-settings\"\n};\nconst _hoisted_2 = {\n class: \"first-settings\"\n};\nconst _hoisted_3 = {\n class: \"first-title\"\n};\nconst _hoisted_4 = {\n class: \"first-title\"\n};\nconst _hoisted_5 = {\n class: \"first-title\"\n};\nconst _hoisted_6 = {\n class: \"first-title\"\n};\nconst _hoisted_7 = [\"innerHTML\"];\nconst _hoisted_8 = {\n class: \"first-title\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_FloatingSaveButton = _resolveComponent(\"FloatingSaveButton\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"h3\", _hoisted_3, [_createTextVNode(_toDisplayString(_ctx.$t('sysOthers.remoteTelemetry')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysOthers.remoteTelemetryTooltip'),\n placement: \"right\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n style: {\n \"margin-left\": \"5px\",\n \"cursor\": \"pointer\"\n }\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_form, {\n model: $data.settings.telemetry,\n \"label-width\": \"120px\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysOthers.enable')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.settings.telemetry.enabled,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.settings.telemetry.enabled = $event),\n disabled: $data.settings.telemetry.fixed\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"])]),\n _: 1\n }, 8, [\"model\"]), _createElementVNode(\"h3\", _hoisted_4, [_createTextVNode(_toDisplayString(_ctx.$t('sysOthers.cloudflareApiToken')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysOthers.cloudflareApiTokenTooltip'),\n placement: \"right\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n style: {\n \"margin-left\": \"5px\",\n \"cursor\": \"pointer\"\n }\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_form, {\n model: $data.settings.cloudflareApiToken,\n \"label-width\": \"120px\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysOthers.zoneId')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.settings.cloudflareApiToken.CF_ZONE_ID,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $data.settings.cloudflareApiToken.CF_ZONE_ID = $event),\n disabled: $data.settings.cloudflareApiToken.fixed\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysOthers.accountEmail')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.settings.cloudflareApiToken.CF_EMAIL,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.settings.cloudflareApiToken.CF_EMAIL = $event),\n disabled: $data.settings.cloudflareApiToken.fixed\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: \"API Key\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.settings.cloudflareApiToken.CF_API_KEY,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.settings.cloudflareApiToken.CF_API_KEY = $event),\n disabled: $data.settings.cloudflareApiToken.fixed,\n type: \"password\",\n \"show-password\": \"\",\n autocomplete: \"new-password\"\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n })]),\n _: 1\n }, 8, [\"model\"]), _createElementVNode(\"h3\", _hoisted_5, [_createTextVNode(_toDisplayString(_ctx.$t('sysOthers.randomImageApi')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysOthers.randomImageApiTooltip'),\n placement: \"right\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n style: {\n \"margin-left\": \"5px\",\n \"cursor\": \"pointer\"\n }\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_form, {\n model: $data.settings.randomImageAPI,\n \"label-width\": \"120px\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysOthers.enable')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.settings.randomImageAPI.enabled,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $data.settings.randomImageAPI.enabled = $event),\n disabled: $data.settings.randomImageAPI.fixed\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n prop: \"randomImageAPI.allowedDir\"\n }, {\n label: _withCtx(() => [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('sysOthers.directory')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysOthers.directoryTooltip'),\n placement: \"right\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n style: {\n \"margin-left\": \"5px\",\n \"cursor\": \"pointer\"\n }\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.settings.randomImageAPI.allowedDir,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $data.settings.randomImageAPI.allowedDir = $event),\n disabled: $data.settings.randomImageAPI.fixed\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n })]),\n _: 1\n }, 8, [\"model\"]), _createElementVNode(\"h3\", _hoisted_6, [_createTextVNode(_toDisplayString(_ctx.$t('sysOthers.publicBrowse')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysOthers.publicBrowseTooltip'),\n placement: \"right\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n style: {\n \"margin-left\": \"5px\",\n \"cursor\": \"pointer\"\n }\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_form, {\n model: $data.settings.publicBrowse,\n \"label-width\": \"120px\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysOthers.enable')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.settings.publicBrowse.enabled,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.settings.publicBrowse.enabled = $event),\n disabled: $data.settings.publicBrowse.fixed\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n prop: \"publicBrowse.allowedDir\"\n }, {\n label: _withCtx(() => [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('sysOthers.openDirectory')), 1), _createVNode(_component_el_tooltip, {\n placement: \"right\",\n \"raw-content\": \"\"\n }, {\n content: _withCtx(() => [_createElementVNode(\"div\", {\n style: {\n \"max-width\": \"320px\",\n \"line-height\": \"1.6\"\n },\n innerHTML: _ctx.$t('sysOthers.openDirectoryTooltip')\n }, null, 8, _hoisted_7)]),\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n style: {\n \"margin-left\": \"5px\",\n \"cursor\": \"pointer\"\n }\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.settings.publicBrowse.allowedDir,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = $event => $data.settings.publicBrowse.allowedDir = $event),\n disabled: $data.settings.publicBrowse.fixed,\n placeholder: \"wallpaper,photos,album\"\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n })]),\n _: 1\n }, 8, [\"model\"]), _createElementVNode(\"h3\", _hoisted_8, [_createTextVNode(_toDisplayString(_ctx.$t('sysOthers.webdav')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysOthers.webdavTooltip'),\n placement: \"right\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n style: {\n \"margin-left\": \"5px\",\n \"cursor\": \"pointer\"\n }\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_form, {\n model: $data.settings.webDAV,\n \"label-width\": \"120px\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysOthers.enable')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.settings.webDAV.enabled,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => $data.settings.webDAV.enabled = $event),\n disabled: $data.settings.webDAV.fixed\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysOthers.webdavUsername')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.settings.webDAV.username,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = $event => $data.settings.webDAV.username = $event),\n disabled: $data.settings.webDAV.fixed\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysOthers.webdavPassword')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.settings.webDAV.password,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $data.settings.webDAV.password = $event),\n disabled: $data.settings.webDAV.fixed,\n type: \"password\",\n \"show-password\": \"\",\n autocomplete: \"new-password\"\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysOthers.webdavUploadChannel')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $data.settings.webDAV.uploadChannel,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => $data.settings.webDAV.uploadChannel = $event),\n disabled: $data.settings.webDAV.fixed,\n placeholder: _ctx.$t('sysOthers.webdavDefaultChannel'),\n clearable: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"Telegram\",\n value: \"telegram\"\n }), _createVNode(_component_el_option, {\n label: \"Cloudflare R2\",\n value: \"cfr2\"\n }), _createVNode(_component_el_option, {\n label: \"S3\",\n value: \"s3\"\n }), _createVNode(_component_el_option, {\n label: \"Discord\",\n value: \"discord\"\n }), _createVNode(_component_el_option, {\n label: \"HuggingFace\",\n value: \"huggingface\"\n }), _createVNode(_component_el_option, {\n label: \"WebDAV\",\n value: \"webdav\"\n })]),\n _: 1\n }, 8, [\"modelValue\", \"disabled\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), $data.settings.webDAV.uploadChannel && $options.webdavChannelList.length > 1 ? (_openBlock(), _createBlock(_component_el_form_item, {\n key: 0,\n label: _ctx.$t('sysOthers.webdavChannelName')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $data.settings.webDAV.channelName,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = $event => $data.settings.webDAV.channelName = $event),\n disabled: $data.settings.webDAV.fixed,\n placeholder: _ctx.$t('uploadSettings.autoSelect'),\n clearable: \"\"\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.webdavChannelList, ch => {\n return _openBlock(), _createBlock(_component_el_option, {\n key: ch.name,\n label: ch.name,\n value: ch.name\n }, null, 8, [\"label\", \"value\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\", \"disabled\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"])) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"model\"])]), _createVNode(_component_FloatingSaveButton, {\n show: !$data.loading,\n onClick: $options.saveSettings\n }, null, 8, [\"show\", \"onClick\"])])), [[_directive_loading, $data.loading]]);\n}","import fetchWithAuth from '@/utils/fetchWithAuth';\nimport FloatingSaveButton from '@/components/FloatingSaveButton.vue';\nexport default {\n components: {\n FloatingSaveButton\n },\n data() {\n return {\n settings: {\n telemetry: {},\n randomImageAPI: {},\n cloudflareApiToken: {},\n webDAV: {},\n publicBrowse: {}\n },\n availableChannels: {},\n // 可用渠道列表\n // 加载状态\n loading: true\n };\n },\n computed: {\n // WebDAV 当前渠道类型对应的渠道列表\n webdavChannelList() {\n const channelType = this.settings.webDAV?.uploadChannel;\n return channelType ? this.availableChannels[channelType] || [] : [];\n }\n },\n watch: {\n 'settings.webDAV.uploadChannel'() {\n // 切换渠道类型时清空指定的渠道名称\n if (this.settings.webDAV) {\n this.settings.webDAV.channelName = '';\n }\n }\n },\n methods: {\n saveSettings() {\n fetchWithAuth('/api/manage/sysConfig/others', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(this.settings)\n }).then(() => this.$message.success(this.$t('sysOthers.settingsSaved')));\n },\n async fetchAvailableChannels() {\n try {\n const response = await fetchWithAuth('/api/channels');\n if (response.ok) {\n this.availableChannels = await response.json();\n }\n } catch (error) {\n console.error('Failed to fetch available channels:', error);\n }\n }\n },\n mounted() {\n this.loading = true;\n // 获取上传设置\n fetchWithAuth('/api/manage/sysConfig/others').then(response => response.json()).then(data => {\n this.settings = data;\n }).finally(() => {\n this.loading = false;\n });\n // 获取可用渠道列表\n this.fetchAvailableChannels();\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./SysCogOthers.vue?vue&type=template&id=69ae97d8&scoped=true\"\nimport script from \"./SysCogOthers.vue?vue&type=script&lang=js\"\nexport * from \"./SysCogOthers.vue?vue&type=script&lang=js\"\n\nimport \"./SysCogOthers.vue?vue&type=style&index=0&id=69ae97d8&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-69ae97d8\"]])\n\nexport default __exports__","import \"core-js/modules/es.array.push.js\";\nimport DashboardTabs from '@/components/DashboardTabs.vue';\nimport SysConfigTabs from '@/components/config/SysConfigTabs.vue';\nimport SysCogStatus from '@/components/config/SysCogStatus.vue';\nimport SysCogUpload from '@/components/config/SysCogUpload.vue';\nimport SysCogSecurity from '@/components/config/SysCogSecurity.vue';\nimport SysCogPage from '@/components/config/SysCogPage.vue';\nimport SysCogOthers from '@/components/config/SysCogOthers.vue';\nimport backgroundManager from '@/mixins/backgroundManager';\nexport default {\n name: 'SystemConfig',\n mixins: [backgroundManager],\n data() {\n return {\n activeIndex: 'status',\n isSidebarCollapse: false\n };\n },\n watch: {\n // 监听锚点变化\n '$route.hash': {\n immediate: true,\n handler(newHash) {\n this.activeIndex = newHash.replace('#', '');\n window.scrollTo(0, 0); // 滚动到页面顶部\n }\n },\n activeIndex(newIndex) {\n // 更新锚点\n const hash = `#${newIndex}`;\n this.$router.push({\n hash\n });\n }\n },\n components: {\n DashboardTabs,\n SysConfigTabs,\n SysCogStatus,\n SysCogUpload,\n SysCogSecurity,\n SysCogPage,\n SysCogOthers\n },\n computed: {\n disableTooltip() {\n return window.innerWidth < 768;\n },\n // 根据锚点动态返回对应的组件\n currentComponent() {\n const hash = this.$route.hash.replace('#', '');\n switch (hash) {\n case 'status':\n return SysCogStatus;\n case 'upload':\n return SysCogUpload;\n case 'security':\n return SysCogSecurity;\n case 'page':\n return SysCogPage;\n case 'others':\n return SysCogOthers;\n default:\n return SysCogStatus;\n }\n }\n },\n methods: {\n handleLogout() {\n const url = process.env.NODE_ENV === 'production' ? '/api/auth/logout' : '/api/api/auth/logout';\n fetch(url, {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n authType: 'admin'\n })\n }).finally(() => {\n this.$store.commit('setAdminLoggedIn', false);\n this.$router.push('/adminLogin');\n });\n },\n // 设置默认锚点\n setDefaultHash() {\n const defaultHash = '#status'; // 默认锚点\n window.location.hash = defaultHash;\n this.activeIndex = defaultHash.replace('#', '');\n }\n },\n mounted() {\n // 初始化背景图\n this.initializeBackground('adminBkImg', '.container', false, true);\n\n // 如果 URL 中没有锚点,则设置默认锚点\n if (!window.location.hash) {\n this.setDefaultHash();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./SystemConfig.vue?vue&type=template&id=7e9e1ae0&scoped=true\"\nimport script from \"./SystemConfig.vue?vue&type=script&lang=js\"\nexport * from \"./SystemConfig.vue?vue&type=script&lang=js\"\n\nimport \"@/styles/admin-common.css?vue&type=style&index=0&id=7e9e1ae0&scoped=true&lang=css&external\"\nimport \"./SystemConfig.vue?vue&type=style&index=1&id=7e9e1ae0&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7e9e1ae0\"]])\n\nexport default __exports__","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, mergeProps as _mergeProps, createStaticVNode as _createStaticVNode } from \"vue\";\nconst _hoisted_1 = {\n key: 0,\n class: \"channel-svg-icon\",\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = {\n key: 1,\n class: \"channel-svg-icon\",\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_3 = {\n key: 2,\n class: \"channel-svg-icon\",\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"span\", _mergeProps(_ctx.$attrs, {\n class: ['channel-icon-wrapper', `channel-brand-${$props.type}`]\n }), [$props.type === 'telegram' ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [...(_cache[0] || (_cache[0] = [_createElementVNode(\"path\", {\n d: \"M417.28 795.733333 429.226667 615.253333 756.906667 320C771.413333 306.773333 753.92 300.373333 734.72 311.893333L330.24 567.466667 155.306667 512C117.76 501.333333 117.333333 475.306667 163.84 456.533333L845.226667 193.706667C876.373333 179.626667 906.24 201.386667 894.293333 249.173333L778.24 795.733333C770.133333 834.56 746.666667 843.946667 714.24 826.026667L537.6 695.466667 452.693333 777.813333C442.88 787.626667 434.773333 795.733333 417.28 795.733333Z\"\n }, null, -1)]))])) : $props.type === 'huggingface' ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_2, [...(_cache[1] || (_cache[1] = [_createStaticVNode(\"\", 9)]))])) : $props.type === 'webdav' ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_3, [...(_cache[2] || (_cache[2] = [_createElementVNode(\"path\", {\n d: \"M446.293333 810.666667C384 898.986667 262.4 921.173333 174.506667 859.733333c-87.466667-61.44-107.946667-183.893333-46.506667-273.066666a195.626667 195.626667 0 0 1 152.746667-84.48l2.133333 61.013333c-38.826667 2.986667-76.373333 23.04-100.693333 58.026667-42.666667 61.44-29.44 144.213333 29.013333 185.6 58.88 40.96 141.226667 25.173333 183.893333-35.84 13.226667-19.2 20.906667-40.106667 23.893334-61.44v-43.093334l238.08-1.706666 2.986666-4.693334c22.613333-39.253333 71.68-52.906667 110.08-30.72a81.066667 81.066667 0 0 1 29.013334 110.933334c-22.613333 38.826667-72.106667 52.48-110.506667 30.293333-17.493333-9.813333-29.866667-25.6-35.413333-43.52l-173.653334 0.853333a211.626667 211.626667 0 0 1-33.28 82.773334m310.613334-304.64c107.946667 13.226667 184.746667 110.08 171.52 216.32-13.226667 106.666667-111.36 182.186667-219.306667 168.96a197.504 197.504 0 0 1-146.346667-94.293334l52.906667-30.72a137.386667 137.386667 0 0 0 98.986667 61.866667c74.666667 8.96 140.8-41.813333 149.76-113.066667 8.96-71.253333-43.946667-136.533333-117.76-145.493333-23.04-2.56-45.226667 0.426667-65.28 7.68l-36.266667 18.773333-110.08-203.52h-9.386667a81.322667 81.322667 0 0 1-78.933333-83.2c1.28-44.373333 39.68-78.933333 84.48-77.226666 44.8 2.56 80.213333 38.826667 78.933333 83.2-0.853333 18.773333-8.106667 35.84-19.626666 49.066666l81.066666 149.76c26.453333-8.533333 55.466667-11.52 85.333334-8.106666M352 389.973333c-42.666667-100.266667 2.56-215.04 101.12-256.853333 98.986667-41.813333 213.333333 5.546667 256 105.813333 25.173333 58.453333 20.053333 122.453333-8.533333 173.653334l-52.906667-30.72c17.92-34.56 20.906667-76.8 3.84-116.48-29.013333-68.266667-106.24-101.12-172.373333-73.386667-66.56 28.16-96.426667 106.666667-67.413334 174.933333 11.946667 28.16 32 49.92 56.32 64.426667l16.64 8.96-130.986666 212.906667c1.28 2.133333 2.986667 4.693333 4.266666 8.106666 20.906667 38.826667 6.4 87.893333-32.853333 108.8-38.826667 20.906667-87.893333 5.546667-109.226667-34.56-20.906667-39.68-6.4-88.746667 32.853334-109.653333 16.64-8.96 34.986667-11.093333 52.48-7.253333l98.56-160.853334c-20.053333-18.346667-37.12-41.386667-47.786667-67.84z\"\n }, null, -1)]))])) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 3,\n icon: $options.fontAwesomeIcon\n }, null, 8, [\"icon\"]))], 16);\n}","export default {\n name: 'ChannelIcon',\n inheritAttrs: false,\n props: {\n type: {\n type: String,\n required: true\n }\n },\n computed: {\n fontAwesomeIcon() {\n const icons = {\n cfr2: ['fab', 'cloudflare'],\n s3: ['fab', 'aws'],\n discord: ['fab', 'discord']\n };\n return icons[this.type] || 'server';\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./ChannelIcon.vue?vue&type=template&id=ce6ff2ce&scoped=true\"\nimport script from \"./ChannelIcon.vue?vue&type=script&lang=js\"\nexport * from \"./ChannelIcon.vue?vue&type=script&lang=js\"\n\nimport \"./ChannelIcon.vue?vue&type=style&index=0&id=ce6ff2ce&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-ce6ff2ce\"]])\n\nexport default __exports__"],"names":["_hoisted_1","class","_hoisted_2","_hoisted_3","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","isCollapse","ref","style","sidebarStyle","menuItems","item","key","index","activeIndex","onClick","$event","handleSelect","icon","$t","titleKey","args","toggleCollapse","name","props","type","String","default","Boolean","data","expandedWidth","computed","collapsedWidth","window","innerWidth","this","width","watch","$nextTick","measureWidth","methods","$emit","checkMobile","isMobile","el","$refs","sidebar","prevWidth","prevTransition","transition","wasCollapsed","classList","contains","remove","offsetWidth","natural","scrollWidth","add","mounted","addEventListener","beforeDestroy","removeEventListener","__exports__","_component_DashboardTabs","_component_el_tooltip","_component_el_header","_component_SysConfigTabs","activeTab","disabled","disableTooltip","content","placement","handleLogout","_","isSidebarCollapse","currentComponent","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","inputStart","inputmode","startDateLabel","onChange","handleManualInput","trim","rangeSeparator","inputEnd","endDateLabel","previousMonthLabel","goToPreviousMonth","monthTitle","nextMonthLabel","goToNextMonth","weekdayLabels","weekday","calendarDays","day","isCurrentMonth","isToday","draftStart","draftEnd","isInRange","selectDay","dayOfMonth","DAY_MS","padDatePart","value","padStart","formatDateKey","date","getFullYear","getMonth","getDate","parseDateKey","match","year","Number","month","Date","setHours","shiftMonth","amount","modelValue","Array","emits","today","displayYear","displayMonth","awaitingEnd","monthStart","start","getDay","todayKey","from","length","getTime","immediate","handler","syncFromModel","startDate","endDate","displayDate","range","commitRange","startKey","endKey","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_42","_hoisted_43","_hoisted_44","_hoisted_45","_hoisted_46","_hoisted_47","_hoisted_48","_hoisted_49","_hoisted_50","_hoisted_51","_hoisted_52","_hoisted_53","_hoisted_54","_hoisted_55","_hoisted_56","_hoisted_57","_hoisted_58","_hoisted_59","_hoisted_60","_hoisted_61","_hoisted_62","_hoisted_63","_hoisted_64","_hoisted_65","_hoisted_66","_hoisted_67","_hoisted_68","_hoisted_69","_hoisted_70","_hoisted_71","_hoisted_72","_hoisted_73","_hoisted_74","_hoisted_75","_hoisted_76","_hoisted_77","_hoisted_78","_hoisted_79","_hoisted_80","_hoisted_81","_hoisted_82","_hoisted_83","_hoisted_84","_hoisted_85","_hoisted_86","_hoisted_87","_hoisted_88","_hoisted_89","_hoisted_90","_hoisted_91","_hoisted_92","_hoisted_93","_hoisted_94","_hoisted_95","_hoisted_96","_hoisted_97","_component_el_button","_component_el_radio_button","_component_el_radio_group","_component_DateRangeCalendar","_component_el_dialog","_component_Line","_component_Doughnut","_component_el_progress","_component_el_image","_directive_loading","systemHealthState","systemHealthLabel","currentDateLabel","greetingTitle","systemStatusSummary","datetime","currentTime","toISOString","currentTimeLabel","timeZoneLabel","fetchIndexInfo","indexInfo","totalFiles","toLocaleString","formatTime","lastUpdated","getTimeAgo","openReleases","version","circle","openTrendDateDialog","trendGroupBy","size","label","trendDatePickerVisible","title","trendDateDialogWidth","trendDateRange","handleTrendDateRangeChange","hasTrendData","uploadTrendChartData","options","lineChartOptions","Object","keys","channelStats","channelChartData","chartOptions","count","channel","background","getChartColor","getPercentage","typeStats","typeChartData","aggregatedTypeStats","status","getTypeChartColor","isProcessing","phaseDescription","Math","round","processingProgress","percentage","current","total","estimatedTimeRemaining","message","plain","cancelOperation","processingError","suggestion","recoverable","retryOperation","dismissError","loading","rebuilding","rebuildIndex","backing","backupData","accept","handleFileSelect","restoring","selectRestoreFile","newestFile","oldestFile","openFileInNewTab","isImageFile","loadErrors","src","id","fit","onError","handleImageError","isVideoFile","muted","loop","autoplay","metadata","FileName","TimeStamp","v","lim","l","h","max","min","p2b","n2b","b2n","n2p","map$1","A","B","C","D","E","F","a","b","c","d","e","f","hex","h1","h2","eq","isShort","r","g","hexParse","str","ret","len","alpha","hexString","undefined","HUE_RE","hsl2rgbn","s","n","k","hsv2rgbn","hwb2rgbn","w","rgb","i","hueValue","rgb2hsl","calln","isArray","map","hsl2rgb","hwb2rgb","hsv2rgb","hue","hueParse","m","exec","p1","p2","rotate","deg","hslString","x","Z","Y","X","W","V","U","T","S","R","Q","P","O","N","M","L","K","G","H","I","J","names$1","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","Xe","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Yd","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","tan","teO","tEstN","tomato","Qe","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","unpack","unpacked","tkeys","j","ok","nk","replace","parseInt","names","nameParse","transparent","toLowerCase","RGB_RE","rgbParse","rgbString","to","pow","interpolate","rgb1","rgb2","t","modHSL","ratio","tmp","clone","proto","assign","fromObject","input","functionParse","charAt","Color","constructor","_rgb","_valid","valid","obj","mix","color","weight","c1","c2","w2","p","w1","clearer","greyscale","val","opaquer","negate","lighten","darken","saturate","desaturate","noop","uid","isNullOrUndef","prototype","toString","call","slice","isObject","isNumberFinite","isFinite","finiteOrDefault","defaultValue","valueOrDefault","toPercentage","dimension","endsWith","parseFloat","toDimension","callback","fn","thisArg","apply","each","loopable","reverse","_elementsEqual","a0","a1","ilen","v0","v1","datasetIndex","source","target","create","klen","isValidKey","indexOf","_merger","tval","sval","merge","sources","merger","mergeIf","_mergerIf","hasOwnProperty","keyResolvers","o","y","_splitKey","parts","split","part","push","_getKeyResolver","resolveObjectKey","resolver","_capitalize","toUpperCase","defined","isFunction","setsEqual","has","_isClickEvent","PI","TAU","PITAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","sign","almostEquals","epsilon","abs","niceNum","roundedRange","niceRange","floor","fraction","niceFraction","_factorize","result","sqrt","sort","pop","isNonPrimitive","Symbol","toPrimitive","isNumber","isNaN","almostWhole","rounded","_setMinAndMaxByKey","array","property","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","angle","atan2","distance","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","end","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_int16Range","_isBetween","_lookup","table","cmp","mid","hi","lo","_lookupByKey","last","ti","_rlookupByKey","_filterBetween","values","arrayEvents","listenArrayEvents","listener","_chartjs","listeners","defineProperty","configurable","enumerable","forEach","method","base","res","object","unlistenArrayEvents","stub","splice","_arrayUnique","items","set","Set","requestAnimFrame","requestAnimationFrame","throttled","argsToUse","ticking","debounce","delay","timeout","clearTimeout","setTimeout","_toLeftRightCenter","align","_alignStartEnd","_textX","left","right","rtl","check","_getStartAndCountOfVisiblePoints","meta","points","animationsDisabled","pointCount","_sorted","iScale","vScale","_parsed","spanGaps","dataset","axis","minDefined","maxDefined","getUserBounds","getPixelForValue","distanceToDefinedLo","findIndex","point","distanceToDefinedHi","_scaleRangesChanged","xScale","yScale","_scaleRanges","newRanges","xmin","xmax","ymin","ymax","changed","atEdge","elasticIn","sin","elasticOut","effects","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","cos","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","isPatternOrGradient","getHoverColor","numbers","colors","applyAnimationsDefaults","defaults","duration","easing","describe","_fallback","_indexable","_scriptable","properties","active","animation","resize","show","animations","visible","hide","applyLayoutsDefaults","autoPadding","padding","top","bottom","intlCache","Map","getNumberFormat","locale","cacheKey","JSON","stringify","formatter","get","Intl","NumberFormat","formatNumber","num","format","formatters","numeric","tickValue","ticks","chart","notation","delta","maxTick","calculateDelta","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","logarithmic","remain","significand","includes","Ticks","applyScaleDefaults","display","offset","beginAtZero","bounds","clip","grace","grid","lineWidth","drawOnChartArea","drawTicks","tickLength","tickWidth","tickColor","border","dash","dashOffset","text","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkip","autoSkipPadding","labelOffset","minor","major","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","route","startsWith","overrides","descriptors","getScope$1","node","root","scope","Defaults","_descriptors","_appliers","backgroundColor","borderColor","datasets","devicePixelRatio","context","platform","getDevicePixelRatio","elements","events","font","family","lineHeight","hover","hoverBackgroundColor","ctx","hoverBorderColor","hoverColor","indexAxis","interaction","mode","intersect","includeInvisible","maintainAspectRatio","onHover","parsing","plugins","responsive","scale","scales","showLine","drawActiveElementsOnTop","override","targetScope","targetName","scopeObject","targetScopeObject","privateName","defineProperties","writable","local","appliers","toFontString","_measureText","gc","longest","string","textWidth","measureText","_longestText","arrayOfThings","cache","garbageCollect","save","jlen","thing","nestedThing","restore","gcLen","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","clearCanvas","canvas","getContext","resetTransform","clearRect","height","drawPoint","drawPointLegend","xOffset","yOffset","cornerRadius","xOffsetW","yOffsetW","pointStyle","rotation","radius","rad","translate","drawImage","beginPath","ellipse","arc","closePath","moveTo","lineTo","SQRT1_2","rect","fill","borderWidth","stroke","_isPointInArea","area","margin","clipArea","unclipArea","_steppedLineTo","previous","flip","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","setRenderOpts","opts","translation","fillStyle","textAlign","textBaseline","decorateText","line","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","strokeStyle","decorationWidth","drawBackdrop","oldColor","fillRect","renderText","lines","strokeWidth","strokeColor","backdrop","strokeText","maxWidth","fillText","addRoundedRectPath","topLeft","bottomLeft","bottomRight","topRight","LINE_HEIGHT","FONT_STYLE","toLineHeight","matches","numberOrZero","_readValueToProps","objProps","read","prop","toTRBL","toTRBLCorners","toPadding","toFont","fallback","console","warn","resolve","inputs","info","cacheable","_addGrace","minmax","change","keepZero","createContext","parentContext","_createResolver","scopes","prefixes","rootScopes","getTarget","finalRootScopes","_resolve","toStringTag","_cacheable","_scopes","_rootScopes","_getTarget","Proxy","deleteProperty","_keys","_cached","_resolveWithPrefixes","getOwnPropertyDescriptor","Reflect","getPrototypeOf","getKeysFromAllScopes","ownKeys","storage","_storage","_attachContext","proxy","subProxy","descriptorDefaults","_proxy","_context","_subProxy","_stack","setContext","receiver","_resolveWithContext","allKeys","scriptable","indexable","_allKeys","isScriptable","isIndexable","readKey","prefix","needsSubResolver","_resolveScriptable","_resolveArray","getValue","Error","join","delete","createSubResolver","arr","filter","resolveFallback","getScope","parent","addScopes","parentScopes","parentFallback","allScopes","addScopesFromKey","subGetTarget","resolveKeysFromAllScopes","_parseObjectDataRadialScale","_parsing","parsed","parse","EPSILON","getPoint","skip","getValueAxis","splineCurve","firstPoint","middlePoint","afterPoint","next","d01","d12","s01","s12","fa","fb","monotoneAdjust","deltaK","mK","pointsLen","alphaK","betaK","tauK","squaredMagnitude","pointCurrent","pointAfter","monotoneCompute","valueAxis","pointBefore","iPixel","vPixel","splineCurveMonotone","slopeDelta","capControlPoint","pt","capBezierPoints","inArea","inAreaPrev","inAreaNext","_updateBezierControlPoints","controlPoints","cubicInterpolationMode","prev","tension","_isDomSupported","document","_getParentNode","domNode","parentNode","host","parseMaxStyle","styleValue","parentProperty","valueInPixels","getComputedStyle","element","ownerDocument","defaultView","getStyle","getPropertyValue","positions","getPositionedStyle","styles","suffix","pos","useOffsetPos","shadowRoot","getCanvasPosition","touches","offsetX","offsetY","box","getBoundingClientRect","clientX","clientY","getRelativePosition","event","borderBox","boxSizing","paddings","borders","getContainerSize","maxHeight","container","containerStyle","containerBorder","containerPadding","clientWidth","clientHeight","round1","getMaximumSize","bbWidth","bbHeight","aspectRatio","margins","containerSize","maintainHeight","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","setTransform","supportsEventListenerOptions","passiveSupported","passive","readUsedSize","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","getRightToLeftAdapter","rectX","setWidth","xPlus","leftForLtr","itemWidth","getLeftToRightAdapter","_itemWidth","getRtlAdapter","overrideTextDirection","direction","original","getPropertyPriority","setProperty","prevTextDirection","restoreTextDirection","propertyFn","between","compare","normalize","normalizeSegment","getSegment","segment","startBound","endBound","_boundSegment","prevValue","inside","subStart","startIsBefore","endIsBefore","shouldStart","shouldStop","_boundSegments","segments","sub","findStartAndEnd","solidSegments","cur","stop","_computeSegments","segmentOptions","_loop","splitByStyles","completeLoop","_fullLoop","doSplitByStyles","chartContext","_chart","baseStyle","readStyle","_datasetIndex","prevStyle","addStyle","st","dir","p0","p0DataIndex","p1DataIndex","styleChanged","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","replacer","getSizeForArea","chartArea","field","getDatasetArea","getDatasetClipArea","_clip","Animator","_request","_charts","_running","_lastDate","_notify","anims","callbacks","numSteps","initial","currentStep","_refresh","_update","now","remaining","running","draw","_active","_total","tick","_getAnims","charts","complete","progress","listen","cb","reduce","acc","_duration","cancel","animator","interpolators","boolean","factor","c0","number","Animation","cfg","currentValue","_fn","_easing","_start","_target","_prop","_from","_to","_promises","update","elapsed","wait","promises","Promise","rej","resolved","Animations","config","_properties","configure","animationOptions","animatedProps","getOwnPropertyNames","option","_animateOptions","newOptions","resolveTargetOptions","_createAnimations","$shared","awaitAll","$animations","then","anim","all","scaleClip","allowedOverflow","defaultClip","toClip","getSortedDatasetIndices","filterVisible","metasets","_getSortedDatasetMetas","applyStack","stack","dsIndex","singleMode","otherValue","found","convertObjectDataToArray","iAxisKey","vAxisKey","adata","isStacked","stacked","getStackKey","indexScale","valueScale","NEGATIVE_INFINITY","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","positive","getMatchingVisibleMetas","updateStacks","controller","_cachedMeta","_stacks","iAxis","vAxis","itemStacks","_top","_bottom","visualValues","_visualValues","getFirstScaleId","shift","createDatasetContext","createDataContext","dataIndex","raw","clearStacks","isDirectUpdateMode","cloneIfNotShared","cached","shared","createStack","canStack","hidden","_stacked","DatasetController","_cachedDataOpts","getMeta","_type","_data","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","supportsDecimation","$context","_syncList","datasetElementType","dataElementType","initialize","linkScales","addElements","isPluginEnabled","updateIndex","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rid","rAxisID","iid","iAxisID","vid","vAxisID","getScaleForId","rScale","getDatasetMeta","scaleID","_getOtherScale","reset","_destroy","_dataCheck","isExtensible","buildOrUpdateElements","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","getOptionScopes","createResolver","sorted","parseArrayData","parseObjectData","parsePrimitiveData","isNotInOrderComparedToPrev","labels","getLabels","singleScale","xAxisKey","yAxisKey","getParsed","getDataElement","updateRangeFromParsed","parsedValue","NaN","getMinMax","otherScale","otherMin","otherMax","_skip","getAllParsedValues","getMaxOverflow","getLabelAndValue","getLabelForValue","resolveDatasetElementOptions","resolveDataElementOptions","_resolveElementOptions","elementType","sharing","datasetElementScopeKeys","resolveNamedOptions","freeze","_resolveAnimations","datasetAnimationScopeKeys","getSharedOptions","includeOptions","sharedOptions","_animationsDisabled","_getSharedOptions","firstOpts","previouslySharedOptions","updateSharedOptions","updateElement","_setStyle","removeHoverStyle","setHoverStyle","_removeDatasetHoverStyle","_setDatasetHoverStyle","arg1","arg2","numMeta","numData","_insertElements","_removeElements","move","updateElements","removed","_sync","_dataChanges","_onDataPush","arguments","_onDataPop","_onDataShift","_onDataSplice","newCount","_onDataUnshift","getAllScaleValues","$bar","visibleMetas","concat","computeMinSampleSize","curr","_length","updateMinAndPrev","getPixelForTick","computeFitCategoryTraits","ruler","stackCount","thickness","barThickness","categoryPercentage","barPercentage","chunk","pixels","computeFlexCategoryTraits","percent","parseFloatBar","entry","startValue","endValue","barStart","barEnd","_custom","parseValue","parseArrayOrPrimitive","isFloatBar","custom","barSign","actualBase","isHorizontal","borderProps","horizontal","setBorderSkipped","edge","borderSkipped","enableBorderRadius","parseEdge","swap","startEnd","orig","v2","setInflateAmount","inflateAmount","_defineProperty","BarController","super","bars","getBasePixel","_getRuler","vpixels","head","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","center","_getStacks","grouped","currentParsed","iScaleValue","skipNull","find","_getStackCount","_getAxisCount","_getAxis","getFirstScaleIdForIndexAxis","indexScaleId","firstScaleAxisId","_getStackIndex","_startPixel","_endPixel","baseValue","minBarLength","floating","getDataVisibility","startPixel","getPixelForDecimal","endPixel","getValueForPixel","halfGrid","getLineWidthForValue","maxBarThickness","Infinity","axisCount","axisID","axisNumber","stackIndex","rects","_index_","_value_","BubbleController","getRatioAndOffset","circumference","cutout","ratioX","ratioY","startAngle","endAngle","startX","startY","endX","endY","calcMax","calcMin","maxX","maxY","minX","minY","DoughnutController","innerRadius","outerRadius","getter","_getRotation","_getCircumference","_getRotationExtents","isDatasetVisible","arcs","spacing","getMaxBorderWidth","getMaxOffset","maxSize","chartWeight","_getRingWeight","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","calculateTotal","_getRingWeightOffset","_circumference","animateRotate","calculateCircumference","animationOpts","centerX","centerY","animateScale","metaData","borderAlign","hoverBorderWidth","hoverOffset","ringWeightOffset","legend","generateLabels","useBorderRadius","borderRadius","fontColor","lineDash","lineDashOffset","lineJoin","legendItem","toggleDataVisibility","LineController","_dataset","_decimated","animated","maxGapLength","directUpdate","pointsCount","prevParsed","nullData","lastPoint","updateControlPoints","PolarAreaController","bind","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","angleLines","circular","pointLabels","PieController","RadarController","pointPosition","getPointPositionForValue","ScatterController","registry","getElement","abstract","DateAdapterBase","members","init","formats","diff","startOf","endOf","adapters","_date","binarySearch","metaset","lookupMethod","_reversePixels","getRange","evaluateInteractionItems","position","getSortedVisibleDatasetMetas","getDistanceMetricForAxis","useX","useY","deltaX","deltaY","getIntersectItems","useFinalPosition","isPointInArea","evaluationFunc","inRange","getNearestRadialItems","getProps","getNearestCartesianItems","distanceMetric","minDistance","getCenterPoint","pointInArea","getNearestItems","getAxisItems","rangeMethod","intersectsItem","Interaction","modes","nearest","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","wrapBoxes","boxes","layoutBoxes","stackWeight","buildStacks","layouts","wrap","placed","setLayoutDims","params","vBoxMaxWidth","hBoxMaxHeight","layout","fullSize","availableWidth","availableHeight","buildLayoutBoxes","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","getPadding","newWidth","outerWidth","newHeight","outerHeight","widthChanged","heightChanged","same","other","handleMaxPadding","updatePos","getMargins","marginForPositions","fitBoxes","refitBoxes","refit","setBoxDims","placeBoxes","userPadding","addBox","_layers","z","removeBox","layoutItem","minPadding","verticalBoxes","horizontalBoxes","beforeLayout","visibleVerticalBoxCount","BasePlatform","acquireContext","releaseContext","isAttached","updateConfig","BasicPlatform","EXPANDO_KEY","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","initCanvas","renderHeight","getAttribute","renderWidth","displayWidth","displayHeight","eventListenerOptions","addListener","removeListener","fromNativeEvent","native","nodeListContains","nodeList","createAttachObserver","observer","MutationObserver","entries","trigger","addedNodes","removedNodes","observe","childList","subtree","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","listenDevicePixelRatioChanges","unlistenDevicePixelRatioChanges","createResizeObserver","ResizeObserver","contentRect","releaseObserver","disconnect","createProxyAndListen","DomPlatform","removeAttribute","setAttribute","proxies","$proxies","handlers","attach","detach","isConnected","_detectPlatform","OffscreenCanvas","Element","tooltipPosition","hasValue","final","tickOpts","determinedMaxTicks","determineMaxTicks","ticksLimit","maxTicksLimit","majorIndices","enabled","getMajorIndices","numMajorIndices","first","newTicks","skipMajors","calculateSpacing","avgMajorSpacing","_tickSize","maxScale","maxChart","_maxLength","evenMajorSpacing","getEvenSpacing","factors","ceil","majorStart","majorEnd","reverseAlign","offsetFromEdge","getTicksLimit","ticksLength","sample","numItems","increment","getPixelForGridLine","offsetGridLines","validIndex","lineValue","caches","getTickMarkLength","getTitleHeight","createScaleContext","createTickContext","titleAlign","titleArgs","titleX","titleY","positionAxisID","Scale","_margins","paddingTop","paddingBottom","paddingLeft","paddingRight","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_longestTextCache","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","suggestedMin","suggestedMax","metas","getTicks","xLabels","yLabels","getLabelItems","_computeLabelItems","beforeUpdate","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","afterAutoSkip","beforeFit","afterFit","afterUpdate","reversePixels","_alignToPixels","alignToPixels","_callHooks","notifyPlugins","beforeTickToLabelConversion","generateTickLabels","afterTickToLabelConversion","numTicks","maxLabelDiagonal","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","asin","titleOpts","gridOpts","titleHeight","tickPadding","angleRadians","labelHeight","labelWidth","_calculatePadding","_handleMargins","isRotated","labelsBelowTicks","offsetLeft","offsetRight","isFullSize","_computeLabelSizes","widths","heights","tickFont","fontString","nestedLabel","widestLabelSize","highestLabelSize","_resolveTickFontOptions","valueAt","idx","decimal","getDecimalForPixel","getBaseValue","optionTicks","rot","_computeGridLineItems","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","x2","y2","limit","step","optsAtIndex","optsAtIndexBorder","lineColor","tickBorderDash","tickBorderDashOffset","tickAndPadding","hTickAndPadding","lineCount","textOffset","_getXAxisLabelAlignment","_getYAxisLabelAlignment","halfCount","tickTextAlign","labelPadding","_computeLabelArea","drawBackground","drawGrid","drawLine","setLineDash","drawBorder","lastLineWidth","drawLabels","renderTextOptions","drawTitle","tz","gz","bz","_maxDigits","fontSize","TypedRegistry","isForType","isPrototypeOf","register","parentScope","isIChartComponent","registerDefaults","unregister","itemDefaults","defaultRoutes","routeDefaults","routes","propertyParts","sourceName","sourceScope","Registry","controllers","_typedRegistries","_each","addControllers","addPlugins","addScales","getController","_get","getPlugin","getScale","removeControllers","removeElements","removePlugins","removeScales","typedRegistry","arg","reg","_getRegistryForType","_exec","itemReg","component","camelMethod","PluginService","_init","notify","hook","_createDescriptors","descriptor","plugin","cancelable","invalidate","_oldCache","_notifyStateChanges","allPlugins","createDescriptors","previousDescriptors","some","localIds","getOpts","pluginOpts","pluginScopeKeys","getIndexAxis","datasetDefaults","datasetOptions","getAxisFromDefaultScaleID","getDefaultScaleIDFromAxis","idMatchesAxis","axisFromPosition","determineAxis","scaleOptions","getAxisFromDataset","retrieveAxisFromDatasets","boundDs","mergeScaleConfig","chartDefaults","configScales","chartIndexAxis","scaleConf","error","defaultId","defaultScaleOptions","defaultID","initOptions","initData","initConfig","keyCache","keysCached","cachedKeys","generate","addIfFound","Config","_config","_scopeCache","_resolverCache","clearCache","clear","datasetType","additionalOptionScopes","_cachedScopes","mainScope","resetCache","keyLists","chartOptionScopes","subPrefixes","getResolver","needContext","subResolver","resolverCache","hasFunction","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","onComplete","onAnimationProgress","onProgress","getCanvas","getElementById","instances","getChart","moveNumericKeys","intKey","determineLastEvent","lastEvent","inChartArea","isClick","Chart","invalidatePlugins","userConfig","initialCanvas","existingChart","_options","_aspectRatio","_metasets","_lastEvent","_listeners","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","resizeDelay","_initialize","bindEvents","_resizeBeforeDraw","_resize","newSize","newRatio","onResize","ensureScalesHaveIDs","scalesOptions","axisOptions","buildOrUpdateScales","scaleOpts","updated","isRadial","dposition","dtype","scaleType","scaleClass","hasUpdated","_updateMetasets","_destroyDatasetMeta","_removeUnreferencedMetasets","buildOrUpdateControllers","newControllers","order","ControllerClass","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","_minPadding","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","existingEvents","newEvents","unbindEvents","changes","_getUniformDataChanges","datasetCount","makeSet","changeSet","noArea","_idx","_updateDataset","layers","_drawDatasets","_drawDataset","getElementsAtEventForMode","setDatasetVisibility","_updateVisibility","_stop","destroy","toBase64Image","toDataURL","bindUserEvents","bindResponsiveEvents","_add","_remove","detached","updateHoverStyle","getActiveElements","setActiveElements","activeElements","lastActive","pluginId","replay","hoverOptions","deactivated","activated","eventFilter","_handleEvent","_getActiveElements","clipSelf","outerAngleClip","innerAngleClip","clipWidth","clipArc","pixelMargin","angleMargin","toRadiusCorners","parseBorderRadius$1","angleDelta","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","outerStart","outerEnd","innerStart","innerEnd","rThetaToXY","theta","pathArc","innerR","spacingOffset","noSpacingInnerRadius","noSpacingOuterRadius","avNogSpacingRadius","adjustedAngle","beta","angleOffset","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","outerMidAdjustedAngle","pCenter","p4","innerMidAdjustedAngle","p8","outerStartX","outerStartY","outerEndX","outerEndY","drawArc","fullCircles","inner","selfJoin","ArcElement","chartX","chartY","rAdjust","nonZeroBetween","betweenAngles","withinRadius","halfAngle","halfRadius","fix","radiusOffset","setStyle","lineCap","getLineMethod","stepped","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","outside","pathSegment","lineMethod","fastPathSegment","prevX","lastY","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","useFastPath","_getInterpolationMethod","strokePathWithCache","path","_path","Path2D","strokePathDirect","segmentMethod","usePath2D","LineElement","_points","_segments","_pointsUpdated","_interpolate","interpolated","inRange$1","hitRadius","PointElement","mouseX","mouseY","inXRange","inYRange","hoverRadius","getBarBounds","bar","half","skipOrLimit","parseBorderWidth","maxW","maxH","parseBorderRadius","maxR","enableBorder","boundingRects","outer","skipX","skipY","skipBoth","hasRadius","addNormalRectPath","inflateRect","refRect","BarElement","addRectPath","tpoints","_findSegmentEnd","_getBounds","targetSegments","tgt","subBounds","fillSources","fillSource","_getEdge","_pointsFromSegments","boundary","linePoints","_createBoundaryLine","_shouldApplyFill","_resolveTarget","propagate","visited","_decodeFill","parseFillOption","decodeTargetIndex","firstCh","_getTargetPixel","_getTargetValue","fillOption","_buildStackLine","sourcePoints","linesBelow","getLinesBelow","addPointsBelow","below","unshift","sourcePoint","postponed","findPoint","pointValue","firstValue","lastValue","simpleArc","getLineByIndex","computeBoundary","computeCircularBoundary","computeLinearBoundary","_drawfill","lineOpts","above","doFill","fillColor","clipVertical","clipHorizontal","clipY","lineLoop","clipX","notShape","clipBounds","interpolatedLineTo","targetLoop","interpolatedPoint","afterDatasetsUpdate","_args","$filler","beforeDraw","drawTime","beforeDatasetsDraw","beforeDatasetDraw","getBoxSize","labelOpts","boxHeight","boxWidth","usePointStyle","pointStyleWidth","itemHeight","itemsEqual","Legend","_added","legendHitBoxes","_hoveredItem","doughnutMode","legendItems","columnSizes","lineWidths","buildLabels","labelFont","_computeTitleHeight","_fitRows","_fitCols","hitboxes","totalHeight","row","_itemHeight","heightLimit","totalWidth","currentColWidth","currentColHeight","col","calculateItemSize","adjustHitBoxes","rtlHelper","hitbox","_draw","defaultColor","halfFontSize","cursor","drawLegendBox","drawOptions","SQRT2","yBoxTop","xBoxLeft","textDirection","realX","fontLineHeight","calculateLegendItemHeight","titleFont","titlePadding","topPaddingPlusHalfFontSize","_getLegendItemAt","hitBox","lh","handleEvent","isListened","hoveredItem","sameItem","onLeave","calculateItemWidth","calculateItemHeight","legendItemText","plugin_legend","_element","afterEvent","ci","WeakMap","positioners","average","xSet","xAverage","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","formattedValue","getTooltipSize","tooltip","body","footer","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","before","after","beforeBody","afterBody","titleSpacing","titleMarginBottom","bodyLineHeight","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineYAlign","doesNotFitWithAlign","xAlign","caret","caretSize","caretPadding","determineXAlign","yAlign","chartWidth","determineAlignment","alignX","alignY","paddingAndSize","getBackgroundPoint","alignment","getAlignedX","getBeforeAfterBodyLines","createTooltipContext","tooltipItems","overrideCallbacks","defaultCallbacks","beforeTitle","labelCount","afterTitle","beforeLabel","tooltipItem","labelColor","labelTextColor","bodyColor","labelPointStyle","afterLabel","beforeFooter","afterFooter","invokeCallbackWithFallback","Tooltip","opacity","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","getTitle","getBeforeBody","getBody","bodyItems","scoped","getAfterBody","getFooter","_createItems","itemSort","positionAndSize","backgroundPoint","external","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","titleColor","_drawColorBox","colorX","rtlColorX","yOffSet","colorY","multiKeyBackground","outerX","innerX","strokeRect","drawBody","bodyAlign","xLinePadding","fillLineOfText","bodyAlignForCalculation","textColor","drawFooter","footerAlign","footerColor","tooltipSize","quadraticCurveTo","_updateAnimationTarget","animX","animY","_willRender","hasTooltipContent","globalAlpha","positionChanged","_positionChanged","_ignoreReplayEvents","plugin_tooltip","afterInit","afterDraw","addIfString","addedLabels","findOrAddLabel","lastIndexOf","_getLabelForValue","CategoryScale","_startValue","_valueRange","_addedLabels","added","generateTicks$1","generationOptions","dataRange","MIN_SPACING","precision","maxTicks","maxDigits","includeBounds","unit","maxSpaces","rmin","rmax","countDefined","minSpacing","niceMin","niceMax","numSpaces","decimalPlaces","relativeLabelSize","LinearScaleBase","_endValue","handleTickRangeOptions","setMin","setMax","minSign","maxSign","getTickLimit","stepSize","computeTickLimit","numericGeneratorOptions","LinearScale","log10Floor","changeExponent","isMajor","tickVal","steps","rangeExp","rangeStep","startExp","generateTicks","minExp","exp","lastTick","LogarithmicScale","_zero","getTickBackdropHeight","measureLabelSize","determineLimits","fitWithPointLabels","_padding","limits","valueCount","_pointLabels","pointLabelOpts","additionalAngle","centerPointLabels","getPointLabelContext","getPointPosition","drawingArea","plFont","textSize","hLimits","vLimits","updateLimits","setCenterPoint","_pointLabelItems","buildPointLabelItems","createPointLabelItem","itemOpts","outerDistance","extra","pointLabelPosition","yForAngle","getTextAlignForAngle","leftForTextAlign","isNotOverlapped","apexesInArea","drawPointLabelBox","backdropLeft","backdropTop","backdropWidth","backdropHeight","drawPointLabels","pathRadiusLine","drawRadiusLine","gridLineOpts","createPointLabelContext","RadialLinearScale","leftMovement","rightMovement","topMovement","bottomMovement","angleMultiplier","scalingFactor","getValueForDistanceFromCenter","scaledDistance","pointLabel","distanceFromCenter","getBasePosition","getPointLabelPosition","animate","INTERVALS","millisecond","common","second","minute","hour","week","quarter","UNITS","sorter","adapter","_adapter","parser","isoWeekday","_parseOpts","determineUnitForAutoTicks","minUnit","capacity","interval","MAX_SAFE_INTEGER","determineUnitForFormatting","determineMajorUnit","addTick","time","timestamps","timestamp","setMajorTicks","majorUnit","ticksFromTimestamps","TimeScale","_unit","_majorUnit","_offsets","_normalized","displayFormats","normalized","_applyBounds","_getLabelBounds","getLabelTimestamps","timeOpts","_generate","_getLabelCapacity","initOffsets","offsetAfterAutoskip","getDecimalForValue","hasWeekday","getDataTimestamps","tooltipFormat","fmt","_tickFormatFunction","minorFormat","majorFormat","offsets","_getLabelSize","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","prevSource","nextSource","prevTarget","nextTarget","span","TimeSeriesScale","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","CommonProps","required","datasetIdKey","updateMode","A11yProps","ariaLabel","ariaDescribedby","Props","destroyDelay","compatProps","internals","attrs","toRawIfProxy","isProxy","toRaw","cloneProxy","setOptions","nextOptions","setLabels","currentData","nextLabels","setDatasets","nextDatasets","addedDatasets","nextDataset","currentDataset","cloneData","nextData","defineComponent","setup","param","expose","slots","canvasRef","chartRef","shallowRef","renderChart","clonedData","proxiedData","Chart$1","destroyChart","onMounted","onUnmounted","param1","nextOptionsProxy","nextDataProxy","prevOptionsProxy","prevDataProxy","shouldUpdate","prevOptions","prevLabels","prevDatasets","nextTick","deep","role","createTypedChart","registerables","reforwardRef","Doughnut","Line","BatchOperationError","code","ERROR_HANDLERS","details","NETWORK","ABORT","createError","Response","TypeError","BatchProcessor","batchSize","abortController","fetchAllRecords","includeValue","AbortController","allRecords","totalFetched","batchCount","signal","aborted","response","fetchBatch","records","nextCursor","phase","batchError","URLSearchParams","fetchWithAuth","errorDetails","errorData","json","success","totalProcessed","abort","isAborted","IndexRebuilder","chunkSize","maxRetries","retryDelay","sessionId","generateSessionId","fetchConfig","databaseType","rebuild","processor","sortByTimestampDescending","chunks","splitIntoChunks","uploadChunkWithRetry","finalize","timestampA","timestampB","chunkId","lastError","attempt","uploadChunk","sleep","checksum","calculateChecksum","headers","createHttpError","totalChunks","random","encoder","TextEncoder","dataBuffer","encode","crypto","subtle","hashBuffer","digest","hashArray","Uint8Array","imul","ms","BackupGenerator","generateBackup","packageInfo","fileCount","files","settings","record","fetchSettings","downloadBackup","settingsCount","blob","Blob","url","URL","createObjectURL","createElement","href","download","appendChild","click","removeChild","revokeObjectURL","RestoreProcessor","fileEntries","settingEntries","totalSettings","totalItems","restoredFiles","restoredSettings","failedFiles","failedSettings","fileChunks","chunkData","fromEntries","restoredCount","failedCount","settingChunks","backupTimestamp","formatDateInput","getDefaultTrendDateRange","components","DateRangeCalendar","indexInfoLoaded","indexInfoError","clockTimer","newest","oldest","channelColors","typeColors","trendColors","processingPhase","processingStartTime","currentRebuilder","currentBackupGenerator","currentRestoreProcessor","currentLocale","$i18n","indexedFileCount","uploadChannelCount","getHours","channels","DateTimeFormat","hour12","timeZone","resolvedOptions","offsetMinutes","getTimezoneOffset","absoluteMinutes","hours","minutes","stats","aggregatedStats","mappedStatus","currentTrendGroup","trend","uploadTrend","groupBy","series","trendRawLabels","trendRangeCrossesYear","years","extractTrendLabelDates","trendDisplayLabels","formatTrendAxisLabel","totalColor","hexToRgba","pointBackgroundColor","pointBorderColor","pointRadius","pointHoverRadius","getTrendColor","formatTrendSeriesName","toFixed","totalEstimated","seconds","remainingMinutes","phaseMap","setInterval","beforeUnmount","clearInterval","isOther","dates","formatSingleDate","includeYear","monthDay","endLabel","getTrendDateRangeParams","action","timezoneOffset","trendMaxPoints","trendSeriesLimit","trendStartDate","trendEndDate","$message","warning","handleProgress","handleError","errorMessage","settingsMsg","fileInput","file","$confirm","confirmButtonText","cancelButtonText","restoreData","fileContent","parseError","days","isValidPreview","FileType","open","fileName","extension","substring","imageExtensions","videoExtensions","_component_ChannelIcon","isOpen","toggleDropdown","displayLabel","selectOption","$slots","channelType","iconClass","ChannelIcon","placeholder","resolvedPlaceholder","selected","opt","handleClickOutside","$el","_component_CustomSelect","_component_el_tag","_component_el_switch","_component_el_option","_component_el_select","_component_el_form_item","_component_el_input","_component_el_input_number","_component_el_form","_component_el_descriptions_item","_component_el_descriptions","channelFilter","filterOptions","showAddDialog","filteredChannels","getChannelList","hasLoadBalance","getSettings","loadBalance","saveSettings","fixed","onMousemove","handleCardMouseMove","onMouseleave","handleCardMouseLeave","ref_for","maskText","botToken","chatId","publicUrl","bucketName","endpoint","channelId","isNitro","repo","isPrivate","baseUrl","quota","getQuotaPercentage","getQuotaStatus","getQuotaText","openDetailDialog","openEditDialog","deleteChannel","onClosed","resetAddForm","newChannel","confirmAddChannel","model","rules","addRules","onChannelTypeChange","addableChannels","ch","innerHTML","proxyUrl","cdnDomain","region","accessKeyId","secretAccessKey","pathStyle","limitGB","threshold","token","username","password","headersText","autosize","minRows","createDirectory","showDetailDialog","currentChannel","resetDetailData","openEditFromDetail","column","getChannelTypeLabel","currentChannelType","readonly","formatHeaders","link","refreshQuota","quotaLoading","isQuotaExceeded","getQuotaStatusText","showEditDialog","editChannel","resetEditData","confirmEditChannel","editRules","onQuotaEnabledChange","CustomSelect","telegramSettings","cfr2Settings","s3Settings","discordSettings","huggingfaceSettings","webdavSettings","currentChannelIndex","quotaStats","pattern","card","currentTarget","refKey","glowEl","telegram","cfr2","s3","discord","huggingface","webdav","showLength","headersToText","parseHeadersText","addForm","validate","reservedNames","isDuplicate","newChannelData","savePath","editForm","currentIndex","originalName","editedChannel","catch","getResponse","getData","loadQuotaStats","getChannelUsedGB","usedMB","usedGB","async","recalculateQuota","finally","handleClick","spin","_component_el_checkbox","_component_el_table_column","_component_el_table","_component_FloatingSaveButton","_component_el_checkbox_group","authSettings","user","userPassRules","authCode","onInput","handleUserPassInput","autocomplete","_hasPassword","clearUserPassword","handleClearUserPassword","showUserPassConfirm","confirmNewUserPassword","admin","adminPassRules","adminUsername","clearAdminPassword","adminPassword","handleAdminPassInput","handleClearAdminPassword","showAdminPassConfirm","confirmNewAdminPassword","showCreateTokenDialog","apiTokens","permissions","perm","getPermissionText","formatDate","createdAt","getTokenStatus","expiresAt","expiresText","editToken","deleteToken","tokenLoading","uploadSettings","moderate","moderateContentApiKey","nsfwApiPath","ipQuery","customApi","removeIpQueryParam","addIpQueryParam","responseFields","moveIpQueryResponseField","removeIpQueryResponseField","addIpQueryResponseField","accessSettings","allowedDomains","accessRules","whiteListMode","imageTransformEnabled","imageTransformAllowedSizes","sessionSecure","userSessionMaxAge","adminSessionMaxAge","dialogWidth","createToken","newToken","tokenRules","neverExpire","onCreateNeverExpireChange","expirationValue","expirationUnit","timeUnitOptions","labelKey","autoDelete","showEditTokenDialog","updateToken","editingToken","editTokenRules","onEditNeverExpireChange","showTokenResultDialog","createdToken","append","copyToken","SIMPLE_UNIT_MS","computeExpiresAt","baseTime","setUTCMonth","getUTCMonth","setUTCFullYear","getUTCFullYear","formatExpiresTime","isoString","getMinutes","getSeconds","expiresDate","formattedTime","FloatingSaveButton","oriUserPassword","oriAdminPassword","owner","validator","rule","urlReservedChars","hasReservedChar","char","validateSessionMaxAge","isInteger","validateImageTransformAllowedSizes","sizes","every","normalizeIpQuerySettings","fields","targetIndex","checked","permission","permissionMap","dateString","loadApiTokens","tokens","tokenForm","hasExpiration","editTokenForm","tokenId","navigator","clipboard","writeText","validationPromises","userPassForm","adminPassForm","accessForm","imageTransformForm","results","isValid","auth","upload","access","_clear","adminPasswordChanged","msg","$store","commit","$router","groupedSettings","categoryGroup","categoryName","setting","announcementManualHeight","localized","localizedOption","currentUploadChannel","currentChannelList","clearable","maxRows","onMousedown","handleAnnouncementResizeStart","refreshAnnouncement","announcementResizeMouseUpHandler","availableChannels","isEn","category","category_en","channelSetting","newVal","oldVal","channelNameSetting","newChannelList","label_en","textarea","closest","resizeHandleSize","isResizeHandle","formItem","startHeight","offsetHeight","resizedHeight","manualHeight","once","fetchAvailableChannels","axios","telemetry","cloudflareApiToken","CF_ZONE_ID","CF_EMAIL","CF_API_KEY","randomImageAPI","allowedDir","publicBrowse","webDAV","uploadChannel","webdavChannelList","channelName","mixins","backgroundManager","newHash","scrollTo","newIndex","hash","DashboardTabs","SysConfigTabs","SysCogStatus","SysCogUpload","SysCogSecurity","SysCogPage","SysCogOthers","$route","fetch","credentials","authType","setDefaultHash","defaultHash","location","initializeBackground","_typeof","iterator","toPropertyKey","viewBox","xmlns","$attrs","fontAwesomeIcon","inheritAttrs","icons"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"js/126.844eba4a.js","mappings":"uVACA,MAAMA,EAAa,CACjBC,MAAO,aAEHC,EAAa,CAAC,WACdC,EAAa,CACjBF,MAAO,aAEF,SAASG,EAAOC,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMC,GAA+B,QAAkB,qBACvD,OAAO,WAAc,QAAoB,MAAO,CAC9CV,OAAO,QAAgB,CAAC,oBAAqB,CAC3C,eAAgBM,EAAOK,cAEzBC,IAAK,UACLC,OAAO,QAAgBJ,EAASK,eAC/B,EAAC,QAAoB,MAAOf,EAAY,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYS,EAAMO,UAAWC,KACxH,WAAc,QAAoB,MAAO,CAC9CC,IAAKD,EAAKE,MACVlB,OAAO,QAAgB,CAAC,YAAa,CACnC,YAAaM,EAAOa,cAAgBH,EAAKE,SAE3CE,QAASC,GAAUZ,EAASa,aAAaN,EAAKE,QAC7C,EAAC,QAAaR,EAA8B,CAC7Ca,KAAMP,EAAKO,KACXvB,MAAO,aACN,KAAM,EAAG,CAAC,UAAU,QAAoB,OAAQE,GAAY,QAAiBE,EAAKoB,GAAGR,EAAKS,WAAY,IAAK,GAAIxB,KAChH,SAAS,QAAoB,MAAO,CACtCD,MAAO,gBACPoB,QAASf,EAAO,KAAOA,EAAO,GAAK,IAAIqB,IAASjB,EAASkB,gBAAkBlB,EAASkB,kBAAkBD,KACrG,EAAC,QAAahB,EAA8B,CAC7Ca,KAAMjB,EAAOK,WAAa,qBAAuB,qBAChD,KAAM,EAAG,CAAC,YAAa,EAC5B,CCjCA,OACEiB,KAAM,gBACNC,MAAO,CACLV,YAAa,CACXW,KAAMC,OACNC,QAAS,UAEXrB,WAAY,CACVmB,KAAMG,QACND,SAAS,IAGb,IAAAE,GACE,MAAO,CACLC,cAAe,KACfpB,UAAW,CAAC,CACVG,MAAO,SACPK,KAAM,YACNE,SAAU,8BACT,CACDP,MAAO,SACPK,KAAM,eACNE,SAAU,gCACT,CACDP,MAAO,WACPK,KAAM,SACNE,SAAU,kCACT,CACDP,MAAO,OACPK,KAAM,QACNE,SAAU,8BACT,CACDP,MAAO,KACPK,KAAM,WACNE,SAAU,eACT,CACDP,MAAO,SACPK,KAAM,MACNE,SAAU,gCAGhB,EACAW,SAAU,CACR,cAAAC,GACE,OAAOC,OAAOC,YAAc,IAAM,GAAK,EACzC,EACA,YAAAzB,GACE,OAAI0B,KAAK7B,WACA,CACL8B,MAAOD,KAAKH,eAAiB,MAG1BG,KAAKL,cAAgB,CAC1BM,MAAOD,KAAKL,cAAgB,MAC1B,CAAC,CACP,GAEFO,MAAO,CACL,iBACEF,KAAKG,UAAU,IAAMH,KAAKI,eAC5B,GAEFC,QAAS,CACP,cAAAlB,GACEa,KAAKM,MAAM,qBAAsBN,KAAK7B,WACxC,EACA,WAAAoC,GACE,MAAMC,EAAWV,OAAOC,YAAc,IACtCC,KAAKM,MAAM,oBAAqBE,EAClC,EACA,YAAA1B,CAAaJ,GACXsB,KAAKM,MAAM,qBAAsB5B,EACnC,EACA,YAAA0B,GACE,MAAMK,EAAKT,KAAKU,MAAMC,QACtB,IAAKF,EAAI,OAET,MAAMG,EAAYH,EAAGpC,MAAM4B,MACrBY,EAAiBJ,EAAGpC,MAAMyC,WAC1BC,EAAeN,EAAGO,UAAUC,SAAS,gBAC3CR,EAAGpC,MAAMyC,WAAa,OAClBC,GACFN,EAAGO,UAAUE,OAAO,gBAEtBT,EAAGpC,MAAM4B,MAAQ,OAEZQ,EAAGU,YACR,MAAMC,EAAUX,EAAGY,YAEnBZ,EAAGpC,MAAM4B,MAAQW,EACbG,GACFN,EAAGO,UAAUM,IAAI,gBAEdb,EAAGU,YACRV,EAAGpC,MAAMyC,WAAaD,EACtBb,KAAKL,cAAgByB,CACvB,GAEF,OAAAG,GACEvB,KAAKO,cACLP,KAAKG,UAAU,IAAMH,KAAKI,gBAC1BN,OAAO0B,iBAAiB,SAAUxB,KAAKO,YACzC,EACA,aAAAkB,GACE3B,OAAO4B,oBAAoB,SAAU1B,KAAKO,YAC5C,G,WClGF,MAAMoB,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAAShE,GAAQ,CAAC,YAAY,qBAEzF,Q,8DCRA,MAAM,EAAa,CACjBH,MAAO,aAEH,EAAa,CACjBA,MAAO,uCAEH,EAAa,CACjBA,MAAO,iBAEF,SAAS,EAAOI,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAM2D,EAA2B,IAC3B1D,GAA+B,QAAkB,qBACjD2D,EAAwB,KACxBC,EAAuB,KACvBC,EAA2B,EACjC,OAAO,WAAc,QAAoB,MAAO,EAAY,EAAC,QAAaD,EAAsB,KAAM,CACpGtC,SAAS,QAAS,IAAM,EAAC,QAAoB,MAAO,EAAY,EAAC,QAAaoC,EAA0B,CACtGI,UAAW,kBACT,QAAoB,MAAO,EAAY,EAAC,QAAaH,EAAuB,CAC9EI,SAAUhE,EAASiE,eACnBC,QAASvE,EAAKoB,GAAG,oBACjBoD,UAAW,UACV,CACD5C,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,eACNvB,MAAO,cACPoB,QAASX,EAASoE,cACjB,KAAM,EAAG,CAAC,cACbC,EAAG,GACF,EAAG,CAAC,WAAY,kBACnBA,EAAG,KACD,QAAaP,EAA0B,CACzCpD,YAAaX,EAAMW,YACnB,uBAAwBd,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAMW,YAAcE,GAChFV,WAAYH,EAAMuE,kBAClB,sBAAuB1E,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAMuE,kBAAoB1D,IACpF,KAAM,EAAG,CAAC,cAAe,iBAAiB,WAAc,SAAa,QAAyBZ,EAASuE,kBAAmB,CAC3HhF,OAAO,QAAgB,CAAC,iBAAkB,CACxC,UAAaQ,EAAMuE,sBAEpB,KAAM,EAAG,CAAC,YACf,C,8GCzCA,MAAM,EAAa,CACjB/E,MAAO,uBAEH,EAAa,CACjBA,MAAO,kBAEH,EAAa,CACjBA,MAAO,yBAEHiF,EAAa,CAAC,cACdC,EAAa,CACjBlF,MAAO,wBAEHmF,EAAa,CAAC,cACdC,EAAa,CACjBpF,MAAO,mBAEHqF,EAAa,CAAC,cACdC,EAAa,CACjBtF,MAAO,kBAEHuF,EAAc,CAAC,cACfC,EAAc,CAClBxF,MAAO,qBAEHyF,EAAc,CAClBzF,MAAO,iBAEH0F,EAAc,CAAC,WACd,SAAS,EAAOtF,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMC,GAA+B,QAAkB,qBACvD,OAAO,WAAc,QAAoB,MAAO,EAAY,EAAC,QAAoB,MAAO,EAAY,EAAC,QAAoB,MAAO,EAAY,EAAC,SAAgB,QAAoB,QAAS,CACxL,sBAAuBL,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAMmF,WAAatE,GAC9ErB,MAAO,aACP8B,KAAM,OACN8D,UAAW,UACX,aAAcnF,EAASoF,eACvBC,SAAUzF,EAAO,KAAOA,EAAO,GAAK,IAAIqB,IAASjB,EAASsF,mBAAqBtF,EAASsF,qBAAqBrE,KAC5G,KAAM,GAAIuD,GAAa,CAAC,CAAC,KAAazE,EAAMmF,gBAAY,EAAQ,CACjEK,MAAM,OACF,QAAoB,OAAQd,GAAY,QAAiBzE,EAASwF,gBAAiB,IAAI,SAAgB,QAAoB,QAAS,CACxI,sBAAuB5F,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAM0F,SAAW7E,GAC5ErB,MAAO,aACP8B,KAAM,OACN8D,UAAW,UACX,aAAcnF,EAAS0F,aACvBL,SAAUzF,EAAO,KAAOA,EAAO,GAAK,IAAIqB,IAASjB,EAASsF,mBAAqBtF,EAASsF,qBAAqBrE,KAC5G,KAAM,GAAIyD,GAAa,CAAC,CAAC,KAAa3E,EAAM0F,cAAU,EAAQ,CAC/DF,MAAM,WACE,QAAoB,MAAOZ,EAAY,EAAC,QAAoB,SAAU,CAC9EtD,KAAM,SACN9B,MAAO,eACP,aAAcS,EAAS2F,mBACvBhF,QAASf,EAAO,KAAOA,EAAO,GAAK,IAAIqB,IAASjB,EAAS4F,mBAAqB5F,EAAS4F,qBAAqB3E,KAC3G,EAAC,QAAahB,EAA8B,CAC7Ca,KAAM,kBACH,EAAG8D,IAAa,QAAoB,MAAOC,GAAY,QAAiB7E,EAAS6F,YAAa,IAAI,QAAoB,SAAU,CACnIxE,KAAM,SACN9B,MAAO,eACP,aAAcS,EAAS8F,eACvBnF,QAASf,EAAO,KAAOA,EAAO,GAAK,IAAIqB,IAASjB,EAAS+F,eAAiB/F,EAAS+F,iBAAiB9E,KACnG,EAAC,QAAahB,EAA8B,CAC7Ca,KAAM,mBACH,EAAGgE,MAAgB,QAAoB,MAAOC,EAAa,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAY/E,EAASgG,cAAeC,KACpJ,WAAc,QAAoB,OAAQ,CAC/CzF,IAAKyF,IACJ,QAAiBA,GAAU,KAC5B,SAAS,QAAoB,MAAOjB,EAAa,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYhF,EAASkG,aAAcC,KACxI,WAAc,QAAoB,SAAU,CACjD3F,IAAK2F,EAAI3F,IACTa,KAAM,SACN9B,OAAO,QAAgB,CAAC,eAAgB,CACtC,YAAa4G,EAAIC,eACjB,WAAYD,EAAIE,QAChB,iBAAkBF,EAAI3F,MAAQT,EAAMuG,WACpC,eAAgBH,EAAI3F,MAAQT,EAAMwG,SAClC,cAAevG,EAASwG,UAAUL,EAAI3F,QAExCG,QAASC,GAAUZ,EAASyG,UAAUN,EAAI3F,OACzC,QAAiB2F,EAAIO,YAAa,GAAIzB,KACvC,SACN,CClFA,MAAM0B,EAAS,MACf,SAASC,EAAYC,GACnB,OAAOvF,OAAOuF,GAAOC,SAAS,EAAG,IACnC,CACA,SAASC,EAAcC,GACrB,MAAO,GAAGA,EAAKC,iBAAiBL,EAAYI,EAAKE,WAAa,MAAMN,EAAYI,EAAKG,YACvF,CACA,SAASC,EAAaP,GACpB,GAAqB,kBAAVA,EAAoB,OAAO,KACtC,MAAMQ,EAAQR,EAAMtB,OAAO8B,MAAM,uCACjC,IAAKA,EAAO,OAAO,KACnB,MAAMC,EAAOC,OAAOF,EAAM,IACpBG,EAAQD,OAAOF,EAAM,IAAM,EAC3BlB,EAAMoB,OAAOF,EAAM,IACnBL,EAAO,IAAIS,KAAKH,EAAME,EAAOrB,GACnC,OAAIa,EAAKC,gBAAkBK,GAAQN,EAAKE,aAAeM,GAASR,EAAKG,YAAchB,EAC1E,MAETa,EAAKU,SAAS,EAAG,EAAG,EAAG,GAChBV,EACT,CACA,SAASW,EAAWX,EAAMY,GACxB,OAAO,IAAIH,KAAKT,EAAKC,cAAeD,EAAKE,WAAaU,EAAQ,EAChE,CACA,OACEzG,KAAM,oBACNC,MAAO,CACLyG,WAAY,CACVxG,KAAMyG,MACNvG,QAAS,IAAM,KAGnBwG,MAAO,CAAC,oBAAqB,UAC7B,IAAAtG,GACE,MAAMuG,EAAQ,IAAIP,KAElB,OADAO,EAAMN,SAAS,EAAG,EAAG,EAAG,GACjB,CACLO,YAAaD,EAAMf,cACnBiB,aAAcF,EAAMd,WACpBZ,WAAY,GACZC,SAAU,GACVrB,WAAY,GACZO,SAAU,GACV0C,aAAa,EAEjB,EACAxG,SAAU,CACR,kBAAAgE,GACE,OAAO5D,KAAKhB,GAAG,kCACjB,EACA,cAAA+E,GACE,OAAO/D,KAAKhB,GAAG,8BACjB,EACA,cAAAqE,GACE,OAAOrD,KAAKhB,GAAG,8BACjB,EACA,YAAA2E,GACE,OAAO3D,KAAKhB,GAAG,4BACjB,EACA,cAAAyE,GACE,OAAOzD,KAAKhB,GAAG,mCACjB,EACA,UAAA8E,GACE,OAAO9D,KAAKhB,GAAG,+BAAgC,CAC7CuG,KAAMvF,KAAKkG,YACXT,MAAOZ,EAAY7E,KAAKmG,aAAe,IAE3C,EACA,aAAAlC,GACE,MAAO,CAACjE,KAAKhB,GAAG,gCAAiCgB,KAAKhB,GAAG,gCAAiCgB,KAAKhB,GAAG,gCAAiCgB,KAAKhB,GAAG,gCAAiCgB,KAAKhB,GAAG,gCAAiCgB,KAAKhB,GAAG,gCAAiCgB,KAAKhB,GAAG,gCACxQ,EACA,YAAAmF,GACE,MAAMkC,EAAa,IAAIX,KAAK1F,KAAKkG,YAAalG,KAAKmG,aAAc,GAC3DG,EAAQ,IAAIZ,KAAK1F,KAAKkG,YAAalG,KAAKmG,aAAc,EAAIE,EAAWE,UACrEC,EAAWxB,EAAc,IAAIU,MACnC,OAAOK,MAAMU,KAAK,CAChBC,OAAQ,IACP,CAACpE,EAAG5D,KACL,MAAMuG,EAAO,IAAIS,KAAKY,EAAMK,UAAYjI,EAAQkG,GAC1CnG,EAAMuG,EAAcC,GAC1B,MAAO,CACLxG,MACAkG,WAAYM,EAAKG,UACjBf,eAAgBY,EAAKE,aAAenF,KAAKmG,aACzC7B,QAAS7F,IAAQ+H,IAGvB,GAEFtG,MAAO,CACL4F,WAAY,CACVc,WAAW,EACX,OAAAC,CAAQ/B,GACN9E,KAAK8G,cAAchC,EACrB,IAGJzE,QAAS,CACP,aAAAyG,CAAchC,GACZ,MAAMiC,EAAY1B,EAAaP,IAAQ,IACjCkC,EAAU3B,EAAaP,IAAQ,IACrC9E,KAAKuE,WAAawC,EAAY/B,EAAc+B,GAAa,GACzD/G,KAAKwE,SAAWwC,EAAUhC,EAAcgC,GAAW,GACnDhH,KAAKmD,WAAanD,KAAKuE,WACvBvE,KAAK0D,SAAW1D,KAAKwE,SACrBxE,KAAKoG,aAAc,EACnB,MAAMa,EAAcF,GAAaC,EAC7BC,IACFjH,KAAKkG,YAAce,EAAY/B,cAC/BlF,KAAKmG,aAAec,EAAY9B,WAEpC,EACA,iBAAAtB,GACE,MAAMoB,EAAOW,EAAW,IAAIF,KAAK1F,KAAKkG,YAAalG,KAAKmG,aAAc,IAAK,GAC3EnG,KAAKkG,YAAcjB,EAAKC,cACxBlF,KAAKmG,aAAelB,EAAKE,UAC3B,EACA,aAAAnB,GACE,MAAMiB,EAAOW,EAAW,IAAIF,KAAK1F,KAAKkG,YAAalG,KAAKmG,aAAc,GAAI,GAC1EnG,KAAKkG,YAAcjB,EAAKC,cACxBlF,KAAKmG,aAAelB,EAAKE,UAC3B,EACA,SAAAT,CAAUjG,GACR,IAAKuB,KAAKuE,YAAcvE,KAAKwE,WAAaxE,KAAKoG,YAM7C,OALApG,KAAKuE,WAAa9F,EAClBuB,KAAKwE,SAAW,GAChBxE,KAAKmD,WAAa1E,EAClBuB,KAAK0D,SAAW,QAChB1D,KAAKoG,aAAc,GAGrB,MAAMc,EAAQzI,EAAMuB,KAAKuE,WAAa,CAAC9F,EAAKuB,KAAKuE,YAAc,CAACvE,KAAKuE,WAAY9F,GACjFuB,KAAKuE,WAAa2C,EAAM,GACxBlH,KAAKwE,SAAW0C,EAAM,GACtBlH,KAAKmD,WAAa+D,EAAM,GACxBlH,KAAK0D,SAAWwD,EAAM,GACtBlH,KAAKoG,aAAc,EACnBpG,KAAKmH,YAAYD,EACnB,EACA,iBAAA3D,GACE,MAAMwD,EAAY1B,EAAarF,KAAKmD,YAC9B6D,EAAU3B,EAAarF,KAAK0D,UAClC,IAAKqD,IAAcC,EAAS,OAC5B,MAAMI,EAAWpC,EAAc+B,GACzBM,EAASrC,EAAcgC,GACvBE,EAAQE,GAAYC,EAAS,CAACD,EAAUC,GAAU,CAACA,EAAQD,GACjEpH,KAAKuE,WAAa2C,EAAM,GACxBlH,KAAKwE,SAAW0C,EAAM,GACtBlH,KAAKmD,WAAa+D,EAAM,GACxBlH,KAAK0D,SAAWwD,EAAM,GACtBlH,KAAKoG,aAAc,EACnBpG,KAAKkG,YAAca,EAAU7B,cAC7BlF,KAAKmG,aAAeY,EAAU5B,WAC9BnF,KAAKmH,YAAYD,EACnB,EACA,WAAAC,CAAYD,GACVlH,KAAKM,MAAM,oBAAqB4G,GAChClH,KAAKM,MAAM,SAAU4G,EACvB,EACA,SAAAzC,CAAUhG,GACR,OAAOgB,QAAQO,KAAKuE,YAAcvE,KAAKwE,UAAY/F,EAAMuB,KAAKuE,YAAc9F,EAAMuB,KAAKwE,SACzF,IC1JJ,MAAM,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAAS,GAAQ,CAAC,YAAY,qBAEzF,Q,kDCRA,MAAM,EAAa,CACjBhH,MAAO,gBAEH,EAAa,CAAC,cACd,EAAa,CACjBA,MAAO,oBAEH,EAAa,CACjBA,MAAO,sBAEH,EAAa,CACjBA,MAAO,sBACP,YAAa,UAET,GAAa,CACjBA,MAAO,oBAEH,GAAa,CACjBA,MAAO,qBAEH,GAAa,CACjBA,MAAO,sBACP,YAAa,UAET,GAAa,CACjBA,MAAO,yBAEH,GAAc,CAClBA,MAAO,4BAEH,GAAc,CAAC,YACf,GAAc,CAClBA,MAAO,wBAEH,GAAc,CAClBA,MAAO,kBAEH8J,GAAc,CAClB9J,MAAO,aAEH+J,GAAc,CAClB/J,MAAO,gBAEHgK,GAAc,CAClBhK,MAAO,cAEHiK,GAAc,CAClBjK,MAAO,cAEHkK,GAAc,CAClBlK,MAAO,iBAEHmK,GAAc,CAClBnK,MAAO,8BAEHoK,GAAc,CAClBpK,MAAO,aAEHqK,GAAc,CAClBrK,MAAO,gBAEHsK,GAAc,CAClBtK,MAAO,cAEHuK,GAAc,CAClBvK,MAAO,cAEHwK,GAAc,CAClBxK,MAAO,iBAEHyK,GAAc,CAClBzK,MAAO,aAEH0K,GAAc,CAClB1K,MAAO,gBAEH2K,GAAc,CAClB3K,MAAO,cAEH4K,GAAc,CAClB5K,MAAO,cAEH6K,GAAc,CAClB7K,MAAO,iBAEH8K,GAAc,CAClB9K,MAAO,kBAEH+K,GAAc,CAClB/K,MAAO,+BAEHgL,GAAc,CAClBhL,MAAO,mCAEHiL,GAAc,CAClBjL,MAAO,eAEHkL,GAAc,CAClBlL,MAAO,kBAEHmL,GAAc,CAClBnL,MAAO,oBAEHoL,GAAc,CAClBpL,MAAO,qCAEHqL,GAAc,CAClBpK,IAAK,EACLjB,MAAO,iCAEHsL,GAAc,CAClBrK,IAAK,EACLjB,MAAO,sBAEHuL,GAAc,CAClBvL,MAAO,cAEHwL,GAAc,CAClBxL,MAAO,gBAEHyL,GAAc,CAClBzL,MAAO,iBAEH0L,GAAc,CAClBzK,IAAK,EACLjB,MAAO,eAEH2L,GAAc,CAClB1K,IAAK,EACLjB,MAAO,uBAEH4L,GAAc,CAClB5L,MAAO,qBAEH6L,GAAc,CAClB7L,MAAO,qBAEH8L,GAAc,CAClB9L,MAAO,gBAEH+L,GAAc,CAClB/L,MAAO,gBAEHgM,GAAc,CAClBhM,MAAO,gBAEHiM,GAAc,CAClBjM,MAAO,gBAEHkM,GAAc,CAClBlM,MAAO,gBAEHmM,GAAc,CAClBnM,MAAO,kBAEHoM,GAAc,CAClBpM,MAAO,cAEHqM,GAAc,CAClBrM,MAAO,gBAEHsM,GAAc,CAClBtM,MAAO,iBAEHuM,GAAc,CAClBtL,IAAK,EACLjB,MAAO,eAEHwM,GAAc,CAClBvL,IAAK,EACLjB,MAAO,uBAEHyM,GAAc,CAClBzM,MAAO,qBAEH0M,GAAc,CAClB1M,MAAO,qBAEH2M,GAAc,CAClB3M,MAAO,gBAEH4M,GAAc,CAClB5M,MAAO,gBAEH6M,GAAc,CAClB7M,MAAO,gBAEH8M,GAAc,CAClB9M,MAAO,gBAEH+M,GAAc,CAClB/M,MAAO,gBAEHgN,GAAc,CAClBhN,MAAO,kBAEHiN,GAAc,CAClBjN,MAAO,mBAEHkN,GAAc,CAClBlN,MAAO,eAEHmN,GAAc,CAClBnN,MAAO,iBAEHoN,GAAc,CAClBpN,MAAO,kBAEHqN,GAAc,CAClBpM,IAAK,EACLjB,MAAO,sBAEHsN,GAAc,CAClBtN,MAAO,mBAEHuN,GAAc,CAClBvN,MAAO,kBAEHwN,GAAc,CAClBxN,MAAO,uBAEHyN,GAAc,CAClBzN,MAAO,oBAEH0N,GAAc,CAClBzM,IAAK,EACLjB,MAAO,kBAEH2N,GAAc,CAClB1M,IAAK,EACLjB,MAAO,iBAEH4N,GAAc,CAClB3M,IAAK,EACLjB,MAAO,oBAEH6N,GAAc,CAClB5M,IAAK,EACLjB,MAAO,mBAEH8N,GAAc,CAClB9N,MAAO,cAEH+N,GAAc,CAClB/N,MAAO,iBAEHgO,GAAc,CAClBhO,MAAO,iBAEHiO,GAAc,CAClBhN,IAAK,EACLjB,MAAO,oBAEHkO,GAAc,CAClBlO,MAAO,iBAEHmO,GAAc,CAClBlN,IAAK,EACLjB,MAAO,kBAEHoO,GAAc,CAClBpO,MAAO,mBAEHqO,GAAc,CAClBpN,IAAK,EACLjB,MAAO,qBAEHsO,GAAc,CAAC,OACfC,GAAc,CAClBtN,IAAK,EACLjB,MAAO,oBAEHwO,GAAc,CAClBxO,MAAO,oBAEHyO,GAAc,CAClBzO,MAAO,oBAEH0O,GAAc,CAClB1O,MAAO,aAEH2O,GAAc,CAClB3O,MAAO,aAEH4O,GAAc,CAAC,OACfC,GAAc,CAClB5N,IAAK,EACLjB,MAAO,oBAEH8O,GAAc,CAClB9O,MAAO,4BAEH+O,GAAc,CAClB/O,MAAO,oBAEHgP,GAAc,CAClBhP,MAAO,aAEHiP,GAAc,CAClBjP,MAAO,aAEF,SAAS,GAAOI,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMC,GAA+B,QAAkB,qBACjDwO,EAAuB,KACvBC,EAA6B,KAC7BC,EAA4B,KAC5BC,EAA+B,EAC/BC,EAAuB,KACvBC,GAAkB,QAAkB,QACpCC,GAAsB,QAAkB,YACxCC,EAAyB,KACzBpL,EAAwB,KACxBqL,EAAsB,KACtBC,EAAqB,IAC3B,OAAO,UAAiB,WAAc,QAAoB,MAAO,EAAY,EAAC,QAAoB,UAAW,CAC3G3P,OAAO,QAAgB,CAAC,cAAe,MAAMS,EAASmP,sBACtD,aAAcxP,EAAKoB,GAAG,6BACrB,EAAC,QAAoB,MAAO,EAAY,EAAC,QAAoB,MAAO,EAAY,EAAC,QAAoB,OAAQ,EAAY,CAACnB,EAAO,MAAQA,EAAO,KAAM,QAAoB,OAAQ,CACnLL,MAAO,oBACP,cAAe,QACd,MAAO,KAAK,QAAiB,KAAM,QAAiBS,EAASoP,mBAAoB,MAAM,QAAoB,OAAQ,IAAY,QAAiBpP,EAASqP,kBAAmB,MAAM,QAAoB,KAAM,IAAY,QAAiBrP,EAASsP,eAAgB,IAAI,QAAoB,IAAK,IAAY,QAAiBtP,EAASuP,qBAAsB,MAAM,QAAoB,MAAO,GAAY,EAAC,QAAoB,OAAQ,IAAa,QAAiB5P,EAAKoB,GAAG,wBAAyB,IAAI,QAAoB,OAAQ,CACrgBxB,MAAO,mBACPiQ,SAAUzP,EAAM0P,YAAYC,gBAC3B,QAAiB1P,EAAS2P,kBAAmB,EAAG,KAAc,QAAoB,OAAQ,IAAa,QAAiB3P,EAAS4P,eAAgB,MAAO,GAAI,IAAa,QAAoB,MAAO,GAAa,EAAC,QAAoB,MAAO,CAC9OrQ,MAAO,4BACPoB,QAASf,EAAO,KAAOA,EAAO,GAAK,IAAIqB,IAASjB,EAAS6P,gBAAkB7P,EAAS6P,kBAAkB5O,KACrG,EAAC,QAAoB,MAAOoI,GAAa,EAAC,QAAapJ,EAA8B,CACtFa,KAAM,gBACF,QAAoB,MAAOwI,GAAa,EAAC,QAAoB,MAAOC,IAAa,QAAiB5J,EAAKoB,GAAG,yBAA0B,IAAI,QAAoB,MAAOyI,IAAa,QAAiBzJ,EAAM+P,UAAUC,YAAYC,kBAAoB,KAAM,IAAI,QAAoB,MAAOvG,IAAa,QAAiB9J,EAAKoB,GAAG,6BAA8B,QAAQ,QAAoB,MAAO2I,GAAa,EAAC,QAAoB,MAAOC,GAAa,EAAC,QAAa1J,EAA8B,CACnea,KAAM,aACF,QAAoB,MAAO8I,GAAa,EAAC,QAAoB,MAAOC,IAAa,QAAiBlK,EAAKoB,GAAG,8BAA+B,IAAI,QAAoB,MAAO+I,IAAa,QAAiB9J,EAASiQ,WAAWlQ,EAAM+P,UAAUI,cAAe,IAAI,QAAoB,MAAOnG,IAAa,QAAiB/J,EAASmQ,WAAWpQ,EAAM+P,UAAUI,cAAe,QAAQ,QAAoB,MAAO,CAChZ3Q,MAAO,+BACPoB,QAASf,EAAO,KAAOA,EAAO,GAAK,IAAIqB,IAASjB,EAASoQ,cAAgBpQ,EAASoQ,gBAAgBnP,KACjG,EAAC,QAAoB,MAAO+I,GAAa,EAAC,QAAa/J,EAA8B,CACtFa,KAAM,mBACF,QAAoB,MAAOmJ,GAAa,EAAC,QAAoB,MAAOC,IAAa,QAAiBvK,EAAKoB,GAAG,4BAA6B,IAAI,QAAoB,MAAOoJ,GAAa,KAAM,QAAiBpK,EAAMsQ,SAAU,IAAI,QAAoB,MAAOjG,IAAa,QAAiBzK,EAAKoB,GAAG,mCAAoC,UAAU,QAAoB,MAAOsJ,GAAa,EAAC,QAAoB,MAAOC,GAAa,EAAC,QAAoB,MAAOC,GAAa,EAAC,QAAoB,MAAOC,GAAa,EAAC,QAAavK,EAA8B,CAChiBa,KAAM,gBACJ,QAAoB,OAAQ,MAAM,QAAiBnB,EAAKoB,GAAG,0BAA2B,IAAI,QAAa0N,EAAsB,CAC/HlP,MAAO,qBACP+Q,OAAQ,GACR,aAAc3Q,EAAKoB,GAAG,6BACtBJ,QAASX,EAASuQ,qBACjB,CACDhP,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,eAERuD,EAAG,GACF,EAAG,CAAC,aAAc,eAAe,QAAoB,MAAOoG,GAAa,EAAC,QAAakE,EAA2B,CACnH9G,WAAY9H,EAAMyQ,aAClB,sBAAuB5Q,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAMyQ,aAAe5P,GAChF6P,KAAM,QACNlR,MAAO,qBACP,aAAcI,EAAKoB,GAAG,iCACrB,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAamN,EAA4B,CAChEgC,MAAO,WACN,CACDnP,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB5B,EAAKoB,GAAG,4BAA6B,KAChGsD,EAAG,KACD,QAAaqK,EAA4B,CAC3CgC,MAAO,eACN,CACDnP,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB5B,EAAKoB,GAAG,4BAA6B,KAChGsD,EAAG,MAELA,EAAG,GACF,EAAG,CAAC,aAAc,oBAAoB,QAAawK,EAAsB,CAC1EhH,WAAY9H,EAAM4Q,uBAClB,sBAAuB/Q,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAM4Q,uBAAyB/P,GAC1FgQ,MAAOjR,EAAKoB,GAAG,6BACfiB,MAAOhC,EAAS6Q,qBAChBtR,MAAO,oBACP,eAAgB,GAChB,iBAAkB,IACjB,CACDgC,SAAS,QAAS,IAAM,EAAC,QAAoB,MAAOmJ,GAAa,EAAC,QAAakE,EAA8B,CAC3G/G,WAAY9H,EAAM+Q,eAClB,sBAAuBlR,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAM+Q,eAAiBlQ,GAClFyE,SAAUrF,EAAS+Q,4BAClB,KAAM,EAAG,CAAC,aAAc,iBAC3B1M,EAAG,GACF,EAAG,CAAC,aAAc,QAAS,WAAW,QAAoB,MAAOsG,GAAa,CAAE3K,EAASgR,eAEE,WAAc,QAAoB,MAAOnG,GAAa,EAAC,QAAaiE,EAAiB,CACjLrN,KAAMzB,EAASiR,qBACfC,QAASlR,EAASmR,kBACjB,KAAM,EAAG,CAAC,OAAQ,iBALuF,WAAc,QAAoB,MAAOvG,GAAa,EAAC,QAAa3K,EAA8B,CAC5Ma,KAAM,WACJ,QAAoB,OAAQ,MAAM,QAAiBnB,EAAKoB,GAAG,qBAAsB,WAG5C,QAAoB,MAAO+J,GAAa,EAAC,QAAoB,MAAOC,GAAa,EAAC,QAAa9K,EAA8B,CACpKa,KAAM,eACJ,QAAoB,OAAQ,MAAM,QAAiBnB,EAAKoB,GAAG,kCAAmC,MAAM,QAAoB,MAAOiK,GAAa,CAA4D,IAA3DoG,OAAOC,KAAKtR,EAAM+P,UAAUwB,cAAgB,CAAC,GAAG7I,SAAgB,WAAc,QAAoB,MAAOwC,GAAa,EAAC,QAAahL,EAA8B,CACjTa,KAAM,WACJ,QAAoB,OAAQ,MAAM,QAAiBnB,EAAKoB,GAAG,qBAAsB,QAAS,WAAc,QAAoB,MAAOmK,GAAa,EAAC,QAAoB,MAAOC,GAAa,EAAC,QAAa4D,EAAqB,CAC9NtN,KAAMzB,EAASuR,iBACfL,QAASlR,EAASwR,cACjB,KAAM,EAAG,CAAC,OAAQ,aAAa,QAAoB,MAAOpG,GAAa,EAAC,QAAoB,MAAOC,IAAa,QAAiBtL,EAAM+P,UAAUC,YAAYC,kBAAoB,KAAM,IAAI,QAAoB,MAAO1E,IAAa,QAAiB3L,EAAKoB,GAAG,8BAA+B,QAAQ,QAAoB,MAAOwK,GAAa,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYxL,EAAM+P,UAAUwB,aAAc,CAACG,EAAOC,EAASjR,MACzb,WAAc,QAAoB,MAAO,CAC9CD,IAAKkR,EACLnS,MAAO,eACN,EAAC,QAAoB,OAAQ,CAC9BA,MAAO,eACPa,OAAO,QAAgB,CACrBuR,WAAY3R,EAAS4R,cAAcnR,MAEpC,KAAM,IAAI,QAAoB,OAAQ+K,IAAa,QAAiBkG,GAAU,IAAI,QAAoB,OAAQjG,IAAa,QAAiBgG,EAAMzB,kBAAmB,IAAI,QAAoB,OAAQtE,IAAa,QAAiB1L,EAAS6R,cAAcJ,EAAO1R,EAAM+P,UAAUC,aAAe,IAAK,OACtS,gBAAgB,QAAoB,MAAOpE,GAAa,EAAC,QAAoB,MAAOC,GAAa,EAAC,QAAa3L,EAA8B,CAC/Ia,KAAM,cACJ,QAAoB,OAAQ,MAAM,QAAiBnB,EAAKoB,GAAG,qCAAsC,MAAM,QAAoB,MAAO8K,GAAa,CAAyD,IAAxDuF,OAAOC,KAAKtR,EAAM+P,UAAUgC,WAAa,CAAC,GAAGrJ,SAAgB,WAAc,QAAoB,MAAOqD,GAAa,EAAC,QAAa7L,EAA8B,CACjTa,KAAM,WACJ,QAAoB,OAAQ,MAAM,QAAiBnB,EAAKoB,GAAG,qBAAsB,QAAS,WAAc,QAAoB,MAAOgL,GAAa,EAAC,QAAoB,MAAOC,GAAa,EAAC,QAAa+C,EAAqB,CAC9NtN,KAAMzB,EAAS+R,cACfb,QAASlR,EAASwR,cACjB,KAAM,EAAG,CAAC,OAAQ,aAAa,QAAoB,MAAOvF,GAAa,EAAC,QAAoB,MAAOC,IAAa,QAAiBkF,OAAOC,KAAKtR,EAAM+P,UAAUgC,WAAWrJ,QAAS,IAAI,QAAoB,MAAO0D,IAAa,QAAiBxM,EAAKoB,GAAG,0BAA2B,QAAQ,QAAoB,MAAOqL,GAAa,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYpM,EAASgS,oBAAqB,CAACP,EAAOQ,EAAQxR,MAC9a,WAAc,QAAoB,MAAO,CAC9CD,IAAKyR,EACL1S,MAAO,eACN,EAAC,QAAoB,OAAQ,CAC9BA,MAAO,eACPa,OAAO,QAAgB,CACrBuR,WAAY3R,EAASkS,kBAAkBzR,MAExC,KAAM,IAAI,QAAoB,OAAQ4L,IAAa,QAAiB4F,GAAS,IAAI,QAAoB,OAAQ3F,IAAa,QAAiBmF,EAAMzB,kBAAmB,IAAI,QAAoB,OAAQzD,IAAa,QAAiBvM,EAAS6R,cAAcJ,EAAO1R,EAAM+P,UAAUC,aAAe,IAAK,OACrS,kBAAkB,QAAoB,MAAOvD,GAAa,EAAC,QAAoB,MAAOC,GAAa,EAAC,QAAoB,MAAOC,GAAa,EAAC,QAAazM,EAA8B,CAC1La,KAAM,WACJ,QAAoB,OAAQ,MAAM,QAAiBnB,EAAKoB,GAAG,gCAAiC,MAAM,QAAoB,MAAO4L,GAAa,CAAC5M,EAAMoS,eAAgB,WAAc,QAAoB,MAAOvF,GAAa,EAAC,QAAoB,MAAOC,GAAa,EAAC,QAAoB,OAAQC,IAAa,QAAiB9M,EAASoS,kBAAmB,IAAI,QAAoB,OAAQrF,IAAa,QAAiBsF,KAAKC,MAAMvS,EAAMwS,mBAAmBC,aAAe,IAAK,MAAM,QAAaxD,EAAwB,CAC1fwD,WAAYzS,EAAMwS,mBAAmBC,WACrC,eAAgB,GAChB,aAAa,EACbjT,MAAO,gBACN,KAAM,EAAG,CAAC,gBAAgB,QAAoB,MAAOyN,GAAa,CAACjN,EAAMwS,mBAAmBE,QAAU,IAAK,WAAc,QAAoB,OAAQxF,GAAa,EAAC,QAAahN,EAA8B,CAC/Ma,KAAM,cACJ,QAAiB,KAAM,QAAiBf,EAAMwS,mBAAmBE,QAAQzC,kBAAoB,IAAK,GAAIjQ,EAAMwS,mBAAmBG,MAAQ,IAAK,WAAc,QAAoB,KAAW,CAC3LlS,IAAK,GACJ,EAAC,QAAiB,OAAQ,QAAiBT,EAAMwS,mBAAmBG,MAAM1C,kBAAmB,IAAK,MAAO,QAAoB,IAAI,IAAO,QAAiB,KAAM,QAAiBrQ,EAAKoB,GAAG,sBAAuB,OAAQ,QAAoB,IAAI,GAAOf,EAAS2S,yBAA0B,WAAc,QAAoB,OAAQzF,GAAa,EAAC,QAAajN,EAA8B,CAC7Xa,KAAM,WACJ,QAAiB,KAAM,QAAiBd,EAAS2S,wBAAyB,OAAQ,QAAoB,IAAI,KAAS5S,EAAMwS,mBAAmBK,UAAW,WAAc,QAAoB,MAAOzF,IAAa,QAAiBpN,EAAMwS,mBAAmBK,SAAU,KAAM,QAAoB,IAAI,IAAO,QAAanE,EAAsB,CAC3UpN,KAAM,SACNwR,MAAO,GACPpC,KAAM,QACN9P,QAASX,EAAS8S,gBAClBvT,MAAO,cACN,CACDgC,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,WACJ,QAAiB,KAAM,QAAiBnB,EAAKoB,GAAG,8BAA+B,KACnFsD,EAAG,GACF,EAAG,CAAC,eAAiBtE,EAAMgT,kBAAmB,WAAc,QAAoB,MAAO3F,GAAa,EAAC,QAAoB,MAAOC,GAAa,EAAC,QAAapN,EAA8B,CAC1La,KAAM,4BACF,QAAoB,MAAOwM,GAAa,EAAC,QAAoB,MAAOC,IAAa,QAAiBxN,EAAMgT,gBAAgBH,SAAU,GAAI7S,EAAMgT,gBAAgBC,aAAc,WAAc,QAAoB,MAAOxF,IAAa,QAAiBzN,EAAMgT,gBAAgBC,YAAa,KAAM,QAAoB,IAAI,MAAS,QAAoB,MAAOvF,GAAa,CAAC1N,EAAMgT,gBAAgBE,cAAe,WAAc,QAAaxE,EAAsB,CAC9bjO,IAAK,EACLa,KAAM,UACNoP,KAAM,QACN9P,QAASX,EAASkT,gBACjB,CACD3R,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,UACJ,QAAiB,KAAM,QAAiBnB,EAAKoB,GAAG,oBAAqB,KACzEsD,EAAG,GACF,EAAG,CAAC,cAAe,QAAoB,IAAI,IAAO,QAAaoK,EAAsB,CACtFpN,KAAM,UACNoP,KAAM,QACN9P,QAASX,EAASmT,cACjB,CACD5R,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB5B,EAAKoB,GAAG,oBAAqB,KACxFsD,EAAG,GACF,EAAG,CAAC,mBAAoB,WAAc,QAAoB,MAAOqJ,GAAa,EAAC,QAAa9J,EAAuB,CACpHM,QAASvE,EAAKoB,GAAG,4BACjBoD,UAAW,OACV,CACD5C,SAAS,QAAS,IAAM,EAAC,QAAakN,EAAsB,CAC1DpN,KAAM,UACN+R,QAASrT,EAAMsT,WACfrP,SAAUjE,EAAMoS,aAChBxR,QAASX,EAASsT,aAClB/T,MAAO,0BACN,CACDgC,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,cACJ,QAAiB,KAAM,QAAiBf,EAAMsT,WAAa1T,EAAKoB,GAAG,wBAA0BpB,EAAKoB,GAAG,2BAA4B,KACrIsD,EAAG,GACF,EAAG,CAAC,UAAW,WAAY,cAC9BA,EAAG,GACF,EAAG,CAAC,aAAa,QAAaT,EAAuB,CACtDM,QAASvE,EAAKoB,GAAG,2BACjBoD,UAAW,OACV,CACD5C,SAAS,QAAS,IAAM,EAAC,QAAakN,EAAsB,CAC1DpN,KAAM,UACN+R,QAASrT,EAAMwT,QACfvP,SAAUjE,EAAMoS,aAChBxR,QAASX,EAASwT,WAClBjU,MAAO,yBACN,CACDgC,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,cACJ,QAAiB,KAAM,QAAiBf,EAAMwT,QAAU5T,EAAKoB,GAAG,uBAAyBpB,EAAKoB,GAAG,yBAA0B,KAC/HsD,EAAG,GACF,EAAG,CAAC,UAAW,WAAY,cAC9BA,EAAG,GACF,EAAG,CAAC,aAAa,QAAaT,EAAuB,CACtDM,QAASvE,EAAKoB,GAAG,4BACjBoD,UAAW,OACV,CACD5C,SAAS,QAAS,IAAM,EAAC,QAAoB,MAAOoM,GAAa,EAAC,QAAoB,QAAS,CAC7FtM,KAAM,OACNlB,IAAK,YACLsT,OAAQ,QACRpO,SAAUzF,EAAO,KAAOA,EAAO,GAAK,IAAIqB,IAASjB,EAAS0T,kBAAoB1T,EAAS0T,oBAAoBzS,IAC3Gb,MAAO,CACL,QAAW,SAEZ,KAAM,MAAM,QAAaqO,EAAsB,CAChDpN,KAAM,UACN+R,QAASrT,EAAM4T,UACf3P,SAAUjE,EAAMoS,aAChBxR,QAASX,EAAS4T,kBAClBrU,MAAO,0BACN,CACDgC,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,YACJ,QAAiB,KAAM,QAAiBf,EAAM4T,UAAYhU,EAAKoB,GAAG,uBAAyBpB,EAAKoB,GAAG,0BAA2B,KAClIsD,EAAG,GACF,EAAG,CAAC,UAAW,WAAY,gBAC9BA,EAAG,GACF,EAAG,CAAC,qBAAsBtE,EAAM+P,UAAU+D,YAAc9T,EAAM+P,UAAUgE,aAAc,WAAc,QAAoB,MAAOlG,GAAa,CAAC7N,EAAM+P,UAAU+D,aAAc,WAAc,QAAoB,MAAO,CACrNrT,IAAK,EACLjB,MAAO,kCACPoB,QAASf,EAAO,KAAOA,EAAO,GAAKgB,GAAUZ,EAAS+T,iBAAiBhU,EAAM+P,UAAU+D,cACtF,CAAC7T,EAASgU,YAAYjU,EAAM+P,UAAU+D,cAAgB9T,EAAMkU,WAAW,YAAa,WAAc,QAAahF,EAAqB,CACrIzO,IAAK,EACL0T,IAAK,SAAWnU,EAAM+P,UAAU+D,WAAWM,GAAK,cAChDC,IAAK,QACL7U,MAAO,gBACP8U,QAASzU,EAAO,KAAOA,EAAO,GAAKgB,GAAUZ,EAASsU,iBAAiB,YACtE,KAAM,EAAG,CAAC,SAAWtU,EAASuU,YAAYxU,EAAM+P,UAAU+D,cAAgB9T,EAAMkU,WAAW,YAAa,WAAc,QAAoB,QAAS,CACpJzT,IAAK,EACL0T,IAAK,SAAWnU,EAAM+P,UAAU+D,WAAWM,GAAK,cAChD5U,MAAO,gBACPiV,MAAO,GACPC,KAAM,GACNC,SAAU,GACVL,QAASzU,EAAO,KAAOA,EAAO,GAAKgB,GAAUZ,EAASsU,iBAAiB,YACtE,KAAM,GAAIzG,OAAiB,WAAc,QAAoB,MAAOC,GAAa,EAAC,QAAa7N,EAA8B,CAC9Ha,KAAM,WACNvB,MAAO,sBACF,QAAoB,MAAOwO,GAAa,EAAC,QAAa9N,EAA8B,CACzFa,KAAM,cACJ,QAAoB,OAAQ,MAAM,QAAiBnB,EAAKoB,GAAG,2BAA4B,MAAM,QAAoB,MAAOiN,GAAa,EAAC,QAAoB,MAAOC,IAAa,QAAiBlO,EAAM+P,UAAU+D,WAAWc,UAAUC,UAAY7U,EAAM+P,UAAU+D,WAAWM,IAAK,IAAI,QAAoB,MAAOjG,IAAa,QAAiBlO,EAASiQ,WAAWlQ,EAAM+P,UAAU+D,WAAWc,UAAUE,YAAa,SAAU,QAAoB,IAAI,GAAO9U,EAAM+P,UAAUgE,aAAc,WAAc,QAAoB,MAAO,CACrgBtT,IAAK,EACLjB,MAAO,kCACPoB,QAASf,EAAO,MAAQA,EAAO,IAAMgB,GAAUZ,EAAS+T,iBAAiBhU,EAAM+P,UAAUgE,cACxF,CAAC9T,EAASgU,YAAYjU,EAAM+P,UAAUgE,cAAgB/T,EAAMkU,WAAW,YAAa,WAAc,QAAahF,EAAqB,CACrIzO,IAAK,EACL0T,IAAK,SAAWnU,EAAM+P,UAAUgE,WAAWK,GAAK,cAChDC,IAAK,QACL7U,MAAO,gBACP8U,QAASzU,EAAO,KAAOA,EAAO,GAAKgB,GAAUZ,EAASsU,iBAAiB,YACtE,KAAM,EAAG,CAAC,SAAWtU,EAASuU,YAAYxU,EAAM+P,UAAUgE,cAAgB/T,EAAMkU,WAAW,YAAa,WAAc,QAAoB,QAAS,CACpJzT,IAAK,EACL0T,IAAK,SAAWnU,EAAM+P,UAAUgE,WAAWK,GAAK,cAChD5U,MAAO,gBACPiV,MAAO,GACPC,KAAM,GACNC,SAAU,GACVL,QAASzU,EAAO,MAAQA,EAAO,IAAMgB,GAAUZ,EAASsU,iBAAiB,YACxE,KAAM,GAAInG,OAAiB,WAAc,QAAoB,MAAOC,GAAa,EAAC,QAAanO,EAA8B,CAC9Ha,KAAM,WACNvB,MAAO,sBACF,QAAoB,MAAO8O,GAAa,EAAC,QAAapO,EAA8B,CACzFa,KAAM,gBACJ,QAAoB,OAAQ,MAAM,QAAiBnB,EAAKoB,GAAG,6BAA8B,MAAM,QAAoB,MAAOuN,GAAa,EAAC,QAAoB,MAAOC,IAAa,QAAiBxO,EAAM+P,UAAUgE,WAAWa,UAAUC,UAAY7U,EAAM+P,UAAUgE,WAAWK,IAAK,IAAI,QAAoB,MAAO3F,IAAa,QAAiBxO,EAASiQ,WAAWlQ,EAAM+P,UAAUgE,WAAWa,UAAUE,YAAa,SAAU,QAAoB,IAAI,OAAW,QAAoB,IAAI,MAAU,CAAC,CAAC3F,EAAoBnP,EAAMqT,UACtgB,C;;;;;;;ACpjBA,SAASd,GAAMwC,GACb,OAAOA,EAAI,GAAM,CACnB,CACA,MAAMC,GAAMA,CAACD,EAAGE,EAAGC,IAAM5C,KAAK6C,IAAI7C,KAAK8C,IAAIL,EAAGG,GAAID,GAClD,SAASI,GAAIN,GACX,OAAOC,GAAIzC,GAAU,KAAJwC,GAAW,EAAG,IACjC,CAIA,SAASO,GAAIP,GACX,OAAOC,GAAIzC,GAAU,IAAJwC,GAAU,EAAG,IAChC,CACA,SAASQ,GAAIR,GACX,OAAOC,GAAIzC,GAAMwC,EAAI,MAAQ,IAAK,EAAG,EACvC,CACA,SAASS,GAAIT,GACX,OAAOC,GAAIzC,GAAU,IAAJwC,GAAU,EAAG,IAChC,CAEA,MAAMU,GAAQ,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAGC,EAAG,GAAIC,EAAG,GAAIC,EAAG,GAAIC,EAAG,GAAIC,EAAG,GAAIC,EAAG,GAAIC,EAAG,GAAIC,EAAG,GAAIC,EAAG,GAAIC,EAAG,GAAIC,EAAG,GAAIC,EAAG,IACrJC,GAAM,IAAI,oBACVC,GAAKN,GAAKK,GAAQ,GAAJL,GACdO,GAAKP,GAAKK,IAAS,IAAJL,IAAa,GAAKK,GAAQ,GAAJL,GACrCQ,GAAKR,IAAW,IAAJA,IAAa,KAAY,GAAJA,GACjCS,GAAU3B,GAAK0B,GAAG1B,EAAE4B,IAAMF,GAAG1B,EAAE6B,IAAMH,GAAG1B,EAAEkB,IAAMQ,GAAG1B,EAAEiB,GAC3D,SAASa,GAASC,GAChB,IACIC,EADAC,EAAMF,EAAIpO,OAmBd,MAjBe,MAAXoO,EAAI,KACM,IAARE,GAAqB,IAARA,EACfD,EAAM,CACJJ,EAAG,IAAsB,GAAhBlB,GAAMqB,EAAI,IACnBF,EAAG,IAAsB,GAAhBnB,GAAMqB,EAAI,IACnBb,EAAG,IAAsB,GAAhBR,GAAMqB,EAAI,IACnBd,EAAW,IAARgB,EAA4B,GAAhBvB,GAAMqB,EAAI,IAAW,KAErB,IAARE,GAAqB,IAARA,IACtBD,EAAM,CACJJ,EAAGlB,GAAMqB,EAAI,KAAO,EAAIrB,GAAMqB,EAAI,IAClCF,EAAGnB,GAAMqB,EAAI,KAAO,EAAIrB,GAAMqB,EAAI,IAClCb,EAAGR,GAAMqB,EAAI,KAAO,EAAIrB,GAAMqB,EAAI,IAClCd,EAAW,IAARgB,EAAavB,GAAMqB,EAAI,KAAO,EAAIrB,GAAMqB,EAAI,IAAO,OAIrDC,CACT,CACA,MAAME,GAAQA,CAACjB,EAAGK,IAAML,EAAI,IAAMK,EAAEL,GAAK,GACzC,SAASkB,GAAUnC,GACjB,IAAIsB,EAAIK,GAAQ3B,GAAKwB,GAAKC,GAC1B,OAAOzB,EACH,IAAMsB,EAAEtB,EAAE4B,GAAKN,EAAEtB,EAAE6B,GAAKP,EAAEtB,EAAEkB,GAAKgB,GAAMlC,EAAEiB,EAAGK,QAC5Cc,CACN,CAEA,MAAMC,GAAS,+GACf,SAASC,GAASnC,EAAGoC,EAAGrC,GACtB,MAAMe,EAAIsB,EAAIhF,KAAK8C,IAAIH,EAAG,EAAIA,GACxBoB,EAAIA,CAACkB,EAAGC,GAAKD,EAAIrC,EAAI,IAAM,KAAOD,EAAIe,EAAI1D,KAAK6C,IAAI7C,KAAK8C,IAAIoC,EAAI,EAAG,EAAIA,EAAG,IAAK,GACrF,MAAO,CAACnB,EAAE,GAAIA,EAAE,GAAIA,EAAE,GACxB,CACA,SAASoB,GAASvC,EAAGoC,EAAGvC,GACtB,MAAMsB,EAAIA,CAACkB,EAAGC,GAAKD,EAAIrC,EAAI,IAAM,IAAMH,EAAIA,EAAIuC,EAAIhF,KAAK6C,IAAI7C,KAAK8C,IAAIoC,EAAG,EAAIA,EAAG,GAAI,GACnF,MAAO,CAACnB,EAAE,GAAIA,EAAE,GAAIA,EAAE,GACxB,CACA,SAASqB,GAASxC,EAAGyC,EAAG1B,GACtB,MAAM2B,EAAMP,GAASnC,EAAG,EAAG,IAC3B,IAAI2C,EAMJ,IALIF,EAAI1B,EAAI,IACV4B,EAAI,GAAKF,EAAI1B,GACb0B,GAAKE,EACL5B,GAAK4B,GAEFA,EAAI,EAAGA,EAAI,EAAGA,IACjBD,EAAIC,IAAM,EAAIF,EAAI1B,EAClB2B,EAAIC,IAAMF,EAEZ,OAAOC,CACT,CACA,SAASE,GAASnB,EAAGC,EAAGX,EAAGE,EAAGhB,GAC5B,OAAIwB,IAAMxB,GACCyB,EAAIX,GAAKE,GAAMS,EAAIX,EAAI,EAAI,GAElCW,IAAMzB,GACAc,EAAIU,GAAKR,EAAI,GAEfQ,EAAIC,GAAKT,EAAI,CACvB,CACA,SAAS4B,GAAQhD,GACf,MAAM7L,EAAQ,IACRyN,EAAI5B,EAAE4B,EAAIzN,EACV0N,EAAI7B,EAAE6B,EAAI1N,EACV+M,EAAIlB,EAAEkB,EAAI/M,EACViM,EAAM7C,KAAK6C,IAAIwB,EAAGC,EAAGX,GACrBb,EAAM9C,KAAK8C,IAAIuB,EAAGC,EAAGX,GACrBhB,GAAKE,EAAMC,GAAO,EACxB,IAAIF,EAAGoC,EAAGnB,EAOV,OANIhB,IAAQC,IACVe,EAAIhB,EAAMC,EACVkC,EAAIrC,EAAI,GAAMkB,GAAK,EAAIhB,EAAMC,GAAOe,GAAKhB,EAAMC,GAC/CF,EAAI4C,GAASnB,EAAGC,EAAGX,EAAGE,EAAGhB,GACzBD,EAAQ,GAAJA,EAAS,IAER,CAAK,EAAJA,EAAOoC,GAAK,EAAGrC,EACzB,CACA,SAAS+C,GAAM3B,EAAGL,EAAGC,EAAGC,GACtB,OACEnO,MAAMkQ,QAAQjC,GACVK,EAAEL,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAChBK,EAAEL,EAAGC,EAAGC,IACZgC,IAAI5C,GACR,CACA,SAAS6C,GAAQjD,EAAGoC,EAAGrC,GACrB,OAAO+C,GAAMX,GAAUnC,EAAGoC,EAAGrC,EAC/B,CACA,SAASmD,GAAQlD,EAAGyC,EAAG1B,GACrB,OAAO+B,GAAMN,GAAUxC,EAAGyC,EAAG1B,EAC/B,CACA,SAASoC,GAAQnD,EAAGoC,EAAGvC,GACrB,OAAOiD,GAAMP,GAAUvC,EAAGoC,EAAGvC,EAC/B,CACA,SAASuD,GAAIpD,GACX,OAAQA,EAAI,IAAM,KAAO,GAC3B,CACA,SAASqD,GAASzB,GAChB,MAAM0B,EAAIpB,GAAOqB,KAAK3B,GACtB,IACI/B,EADAiB,EAAI,IAER,IAAKwC,EACH,OAEEA,EAAE,KAAOzD,IACXiB,EAAIwC,EAAE,GAAKnD,IAAKmD,EAAE,IAAMlD,IAAKkD,EAAE,KAEjC,MAAMtD,EAAIoD,IAAKE,EAAE,IACXE,GAAMF,EAAE,GAAK,IACbG,GAAMH,EAAE,GAAK,IAQnB,OANEzD,EADW,QAATyD,EAAE,GACAJ,GAAQlD,EAAGwD,EAAIC,GACD,QAATH,EAAE,GACPH,GAAQnD,EAAGwD,EAAIC,GAEfR,GAAQjD,EAAGwD,EAAIC,GAEd,CACLhC,EAAG5B,EAAE,GACL6B,EAAG7B,EAAE,GACLkB,EAAGlB,EAAE,GACLiB,EAAGA,EAEP,CACA,SAAS4C,GAAO7D,EAAG8D,GACjB,IAAI3D,EAAI6C,GAAQhD,GAChBG,EAAE,GAAKoD,GAAIpD,EAAE,GAAK2D,GAClB3D,EAAIiD,GAAQjD,GACZH,EAAE4B,EAAIzB,EAAE,GACRH,EAAE6B,EAAI1B,EAAE,GACRH,EAAEkB,EAAIf,EAAE,EACV,CACA,SAAS4D,GAAU/D,GACjB,IAAKA,EACH,OAEF,MAAMiB,EAAI+B,GAAQhD,GACZG,EAAIc,EAAE,GACNsB,EAAI9B,GAAIQ,EAAE,IACVf,EAAIO,GAAIQ,EAAE,IAChB,OAAOjB,EAAEiB,EAAI,IACT,QAAQd,MAAMoC,OAAOrC,OAAOM,GAAIR,EAAEiB,MAClC,OAAOd,MAAMoC,OAAOrC,KAC1B,CAEA,MAAMiD,GAAM,CACXa,EAAG,OACHC,EAAG,QACHC,EAAG,KACHC,EAAG,MACHC,EAAG,KACHC,EAAG,SACHC,EAAG,QACH3D,EAAG,KACH4D,EAAG,KACHC,EAAG,KACH5D,EAAG,KACHC,EAAG,QACHC,EAAG,QACH2D,EAAG,KACHC,EAAG,WACH3D,EAAG,KACH4D,EAAG,KACHC,EAAG,KACHC,EAAG,KACHC,EAAG,KACHC,EAAG,QACH/D,EAAG,KACHgE,EAAG,KACHC,EAAG,OACHC,EAAG,KACHC,EAAG,QACHC,EAAG,MAEEC,GAAU,CACfC,OAAQ,SACRC,YAAa,SACbC,KAAM,OACNC,UAAW,SACXC,KAAM,SACNC,MAAO,SACPC,OAAQ,SACRC,MAAO,IACPC,aAAc,SACdC,GAAI,KACJC,QAAS,SACTC,KAAM,SACNC,UAAW,SACXC,OAAQ,SACRC,SAAU,SACVC,QAAS,SACTC,IAAK,SACLC,YAAa,SACbC,QAAS,SACTC,QAAS,SACTC,KAAM,OACNC,IAAK,KACLC,MAAO,OACPC,QAAS,SACTC,KAAM,SACNC,KAAM,OACNC,KAAM,SACNC,OAAQ,SACRC,QAAS,SACTC,SAAU,SACVC,OAAQ,SACRC,MAAO,SACPC,IAAK,SACLC,OAAQ,SACRC,OAAQ,SACRC,KAAM,SACNC,MAAO,SACPC,MAAO,SACPC,IAAK,OACLC,OAAQ,SACRC,OAAQ,SACRC,SAAU,OACVC,OAAQ,SACRC,OAAQ,SACRC,SAAU,SACVC,SAAU,SACVC,SAAU,SACVC,SAAU,SACVC,OAAQ,SACRC,QAAS,SACTC,UAAW,SACXC,IAAK,SACLC,OAAQ,SACRC,IAAK,SACLC,IAAK,OACLC,MAAO,SACPC,IAAK,SACLC,QAAS,SACTC,OAAQ,SACRC,QAAS,SACTC,MAAO,SACPC,KAAM,SACNC,MAAO,SACPC,OAAQ,SACRC,UAAW,SACXC,QAAS,SACTC,WAAY,SACZC,IAAK,SACLC,KAAM,SACNC,MAAO,SACPC,UAAW,SACXC,KAAM,SACNC,KAAM,SACNC,KAAM,SACNC,KAAM,SACNC,OAAQ,SACRC,OAAQ,SACRC,OAAQ,SACRC,MAAO,SACPC,MAAO,SACPC,QAAS,SACTC,IAAK,SACLC,KAAM,OACNC,QAAS,SACTC,IAAK,SACLC,OAAQ,SACRC,MAAO,SACPC,WAAY,SACZC,IAAK,KACLC,MAAO,SACPC,OAAQ,SACRC,OAAQ,SACRC,KAAM,SACNC,UAAW,OACXC,IAAK,SACLC,SAAU,SACVC,WAAY,SACZC,QAAS,SACTC,SAAU,SACVC,QAAS,SACTC,WAAY,SACZC,KAAM,KACNC,OAAQ,SACRC,KAAM,SACNC,QAAS,SACTC,MAAO,SACPC,QAAS,SACTC,KAAM,SACNC,UAAW,SACXC,OAAQ,SACRC,MAAO,SACPC,WAAY,SACZC,UAAW,SACXC,QAAS,SACTC,KAAM,SACNC,IAAK,SACLC,KAAM,SACNC,QAAS,SACTC,MAAO,SACPC,YAAa,SACbC,GAAI,SACJC,SAAU,SACVC,MAAO,SACPC,UAAW,SACXC,MAAO,SACPC,UAAW,SACXC,MAAO,SACPC,QAAS,SACTC,MAAO,SACPC,OAAQ,SACRC,MAAO,SACPC,IAAK,SACLC,KAAM,SACNC,KAAM,SACNC,KAAM,SACNC,SAAU,OACVC,OAAQ,SACRC,IAAK,SACLC,IAAK,OACLC,MAAO,SACPC,OAAQ,SACRC,GAAI,SACJC,MAAO,SACPC,IAAK,SACLC,KAAM,SACNC,UAAW,SACXC,GAAI,SACJC,MAAO,UAER,SAASC,KACP,MAAMC,EAAW,CAAC,EACZpS,EAAOD,OAAOC,KAAK8I,IACnBuJ,EAAQtS,OAAOC,KAAK4G,IAC1B,IAAIL,EAAG+L,EAAGpM,EAAGqM,EAAIC,EACjB,IAAKjM,EAAI,EAAGA,EAAIvG,EAAK5I,OAAQmP,IAAK,CAEhC,IADAgM,EAAKC,EAAKxS,EAAKuG,GACV+L,EAAI,EAAGA,EAAID,EAAMjb,OAAQkb,IAC5BpM,EAAImM,EAAMC,GACVE,EAAKA,EAAGC,QAAQvM,EAAGU,GAAIV,IAEzBA,EAAIwM,SAAS5J,GAAQyJ,GAAK,IAC1BH,EAASI,GAAM,CAACtM,GAAK,GAAK,IAAMA,GAAK,EAAI,IAAU,IAAJA,EACjD,CACA,OAAOkM,CACT,CAEA,IAAIO,GACJ,SAASC,GAAUpN,GACZmN,KACHA,GAAQR,KACRQ,GAAME,YAAc,CAAC,EAAG,EAAG,EAAG,IAEhC,MAAMnO,EAAIiO,GAAMnN,EAAIsN,eACpB,OAAOpO,GAAK,CACVW,EAAGX,EAAE,GACLY,EAAGZ,EAAE,GACLC,EAAGD,EAAE,GACLA,EAAgB,IAAbA,EAAEtN,OAAesN,EAAE,GAAK,IAE/B,CAEA,MAAMqO,GAAS,uGACf,SAASC,GAASxN,GAChB,MAAM0B,EAAI6L,GAAO5L,KAAK3B,GACtB,IACIH,EAAGC,EAAGX,EADND,EAAI,IAER,GAAKwC,EAAL,CAGA,GAAIA,EAAE,KAAO7B,EAAG,CACd,MAAM5B,GAAKyD,EAAE,GACbxC,EAAIwC,EAAE,GAAKnD,GAAIN,GAAKC,GAAQ,IAAJD,EAAS,EAAG,IACtC,CAOA,OANA4B,GAAK6B,EAAE,GACP5B,GAAK4B,EAAE,GACPvC,GAAKuC,EAAE,GACP7B,EAAI,KAAO6B,EAAE,GAAKnD,GAAIsB,GAAK3B,GAAI2B,EAAG,EAAG,MACrCC,EAAI,KAAO4B,EAAE,GAAKnD,GAAIuB,GAAK5B,GAAI4B,EAAG,EAAG,MACrCX,EAAI,KAAOuC,EAAE,GAAKnD,GAAIY,GAAKjB,GAAIiB,EAAG,EAAG,MAC9B,CACLU,EAAGA,EACHC,EAAGA,EACHX,EAAGA,EACHD,EAAGA,EAfL,CAiBF,CACA,SAASuO,GAAUxP,GACjB,OAAOA,IACLA,EAAEiB,EAAI,IACF,QAAQjB,EAAE4B,MAAM5B,EAAE6B,MAAM7B,EAAEkB,MAAMV,GAAIR,EAAEiB,MACtC,OAAOjB,EAAE4B,MAAM5B,EAAE6B,MAAM7B,EAAEkB,KAEjC,CAEA,MAAMuO,GAAKzP,GAAKA,GAAK,SAAgB,MAAJA,EAAqC,MAAzBzC,KAAKmS,IAAI1P,EAAG,EAAM,KAAe,KACxEtM,GAAOsM,GAAKA,GAAK,OAAUA,EAAI,MAAQzC,KAAKmS,KAAK1P,EAAI,MAAS,MAAO,KAC3E,SAAS2P,GAAYC,EAAMC,EAAMC,GAC/B,MAAMlO,EAAIlO,GAAK8M,GAAIoP,EAAKhO,IAClBC,EAAInO,GAAK8M,GAAIoP,EAAK/N,IAClBX,EAAIxN,GAAK8M,GAAIoP,EAAK1O,IACxB,MAAO,CACLU,EAAGrB,GAAIkP,GAAG7N,EAAIkO,GAAKpc,GAAK8M,GAAIqP,EAAKjO,IAAMA,KACvCC,EAAGtB,GAAIkP,GAAG5N,EAAIiO,GAAKpc,GAAK8M,GAAIqP,EAAKhO,IAAMA,KACvCX,EAAGX,GAAIkP,GAAGvO,EAAI4O,GAAKpc,GAAK8M,GAAIqP,EAAK3O,IAAMA,KACvCD,EAAG2O,EAAK3O,EAAI6O,GAAKD,EAAK5O,EAAI2O,EAAK3O,GAEnC,CAEA,SAAS8O,GAAO/P,EAAG8C,EAAGkN,GACpB,GAAIhQ,EAAG,CACL,IAAIiQ,EAAMjN,GAAQhD,GAClBiQ,EAAInN,GAAKvF,KAAK6C,IAAI,EAAG7C,KAAK8C,IAAI4P,EAAInN,GAAKmN,EAAInN,GAAKkN,EAAa,IAANlN,EAAU,IAAM,IACvEmN,EAAM7M,GAAQ6M,GACdjQ,EAAE4B,EAAIqO,EAAI,GACVjQ,EAAE6B,EAAIoO,EAAI,GACVjQ,EAAEkB,EAAI+O,EAAI,EACZ,CACF,CACA,SAASC,GAAMlQ,EAAGmQ,GAChB,OAAOnQ,EAAI1D,OAAO8T,OAAOD,GAAS,CAAC,EAAGnQ,GAAKA,CAC7C,CACA,SAASqQ,GAAWC,GAClB,IAAItQ,EAAI,CAAC4B,EAAG,EAAGC,EAAG,EAAGX,EAAG,EAAGD,EAAG,KAY9B,OAXIjO,MAAMkQ,QAAQoN,GACZA,EAAM3c,QAAU,IAClBqM,EAAI,CAAC4B,EAAG0O,EAAM,GAAIzO,EAAGyO,EAAM,GAAIpP,EAAGoP,EAAM,GAAIrP,EAAG,KAC3CqP,EAAM3c,OAAS,IACjBqM,EAAEiB,EAAIV,GAAI+P,EAAM,OAIpBtQ,EAAIkQ,GAAMI,EAAO,CAAC1O,EAAG,EAAGC,EAAG,EAAGX,EAAG,EAAGD,EAAG,IACvCjB,EAAEiB,EAAIV,GAAIP,EAAEiB,IAEPjB,CACT,CACA,SAASuQ,GAAcxO,GACrB,MAAsB,MAAlBA,EAAIyO,OAAO,GACNjB,GAASxN,GAEXyB,GAASzB,EAClB,CACA,MAAM0O,GACJC,WAAAA,CAAYJ,GACV,GAAIA,aAAiBG,GACnB,OAAOH,EAET,MAAM/jB,SAAc+jB,EACpB,IAAItQ,EACS,WAATzT,EACFyT,EAAIqQ,GAAWC,GACG,WAAT/jB,IACTyT,EAAI8B,GAASwO,IAAUnB,GAAUmB,IAAUC,GAAcD,IAE3DrjB,KAAK0jB,KAAO3Q,EACZ/S,KAAK2jB,SAAW5Q,CAClB,CACA,SAAI6Q,GACF,OAAO5jB,KAAK2jB,MACd,CACA,OAAI/N,GACF,IAAI7C,EAAIkQ,GAAMjjB,KAAK0jB,MAInB,OAHI3Q,IACFA,EAAEiB,EAAIT,GAAIR,EAAEiB,IAEPjB,CACT,CACA,OAAI6C,CAAIiO,GACN7jB,KAAK0jB,KAAON,GAAWS,EACzB,CACAtB,SAAAA,GACE,OAAOviB,KAAK2jB,OAASpB,GAAUviB,KAAK0jB,WAAQvO,CAC9C,CACAD,SAAAA,GACE,OAAOlV,KAAK2jB,OAASzO,GAAUlV,KAAK0jB,WAAQvO,CAC9C,CACA2B,SAAAA,GACE,OAAO9W,KAAK2jB,OAAS7M,GAAU9W,KAAK0jB,WAAQvO,CAC9C,CACA2O,GAAAA,CAAIC,EAAOC,GACT,GAAID,EAAO,CACT,MAAME,EAAKjkB,KAAK4V,IACVsO,EAAKH,EAAMnO,IACjB,IAAIuO,EACJ,MAAMC,EAAIJ,IAAWG,EAAK,GAAMH,EAC1BrO,EAAI,EAAIyO,EAAI,EACZpQ,EAAIiQ,EAAGjQ,EAAIkQ,EAAGlQ,EACdqQ,IAAO1O,EAAI3B,KAAO,EAAI2B,GAAKA,EAAI3B,IAAM,EAAI2B,EAAI3B,IAAM,GAAK,EAC9DmQ,EAAK,EAAIE,EACTJ,EAAGtP,EAAI,IAAO0P,EAAKJ,EAAGtP,EAAIwP,EAAKD,EAAGvP,EAAI,GACtCsP,EAAGrP,EAAI,IAAOyP,EAAKJ,EAAGrP,EAAIuP,EAAKD,EAAGtP,EAAI,GACtCqP,EAAGhQ,EAAI,IAAOoQ,EAAKJ,EAAGhQ,EAAIkQ,EAAKD,EAAGjQ,EAAI,GACtCgQ,EAAGjQ,EAAIoQ,EAAIH,EAAGjQ,GAAK,EAAIoQ,GAAKF,EAAGlQ,EAC/BhU,KAAK4V,IAAMqO,CACb,CACA,OAAOjkB,IACT,CACA0iB,WAAAA,CAAYqB,EAAOlB,GAIjB,OAHIkB,IACF/jB,KAAK0jB,KAAOhB,GAAY1iB,KAAK0jB,KAAMK,EAAML,KAAMb,IAE1C7iB,IACT,CACAijB,KAAAA,GACE,OAAO,IAAIO,GAAMxjB,KAAK4V,IACxB,CACAX,KAAAA,CAAMjB,GAEJ,OADAhU,KAAK0jB,KAAK1P,EAAIV,GAAIU,GACXhU,IACT,CACAskB,OAAAA,CAAQvB,GACN,MAAMnN,EAAM5V,KAAK0jB,KAEjB,OADA9N,EAAI5B,GAAK,EAAI+O,EACN/iB,IACT,CACAukB,SAAAA,GACE,MAAM3O,EAAM5V,KAAK0jB,KACXc,EAAMjU,GAAc,GAARqF,EAAIjB,EAAkB,IAARiB,EAAIhB,EAAmB,IAARgB,EAAI3B,GAEnD,OADA2B,EAAIjB,EAAIiB,EAAIhB,EAAIgB,EAAI3B,EAAIuQ,EACjBxkB,IACT,CACAykB,OAAAA,CAAQ1B,GACN,MAAMnN,EAAM5V,KAAK0jB,KAEjB,OADA9N,EAAI5B,GAAK,EAAI+O,EACN/iB,IACT,CACA0kB,MAAAA,GACE,MAAM3R,EAAI/S,KAAK0jB,KAIf,OAHA3Q,EAAE4B,EAAI,IAAM5B,EAAE4B,EACd5B,EAAE6B,EAAI,IAAM7B,EAAE6B,EACd7B,EAAEkB,EAAI,IAAMlB,EAAEkB,EACPjU,IACT,CACA2kB,OAAAA,CAAQ5B,GAEN,OADAD,GAAO9iB,KAAK0jB,KAAM,EAAGX,GACd/iB,IACT,CACA4kB,MAAAA,CAAO7B,GAEL,OADAD,GAAO9iB,KAAK0jB,KAAM,GAAIX,GACf/iB,IACT,CACA6kB,QAAAA,CAAS9B,GAEP,OADAD,GAAO9iB,KAAK0jB,KAAM,EAAGX,GACd/iB,IACT,CACA8kB,UAAAA,CAAW/B,GAET,OADAD,GAAO9iB,KAAK0jB,KAAM,GAAIX,GACf/iB,IACT,CACA4W,MAAAA,CAAOC,GAEL,OADAD,GAAO5W,KAAK0jB,KAAM7M,GACX7W,IACT;;;;;;;AC3jBK,SAAS+kB,KACJ,CAML,MAAMC,GAAO,MAClB,IAAI5S,EAAK,EACT,MAAO,IAAMA,GACd,EAHmB,GAUb,SAAS6S,GAAcngB,GAC5B,OAAiB,OAAVA,QAA4BqQ,IAAVrQ,CAC3B,CAOO,SAASmR,GAAqBnR,GACnC,GAAIiB,MAAMkQ,SAAWlQ,MAAMkQ,QAAQnR,GACjC,OAAO,EAET,MAAMxF,EAAO+P,OAAO6V,UAAUC,SAASC,KAAKtgB,GAC5C,MAAyB,YAArBxF,EAAK+lB,MAAM,EAAG,IAAuC,WAAnB/lB,EAAK+lB,OAAO,EAIpD,CAOO,SAASC,GAASxgB,GACvB,OAAiB,OAAVA,GAA4D,oBAA1CuK,OAAO6V,UAAUC,SAASC,KAAKtgB,EAC1D,CAMA,SAASygB,GAAezgB,GACtB,OAAyB,kBAAVA,GAAsBA,aAAiBU,SAAWggB,UAAU1gB,EAC7E,CAUO,SAAS2gB,GAAgB3gB,EAAgB4gB,GAC9C,OAAOH,GAAezgB,GAASA,EAAQ4gB,CACzC,CAOO,SAASC,GAAkB7gB,EAAsB4gB,GACtD,MAAwB,qBAAV5gB,EAAwB4gB,EAAe5gB,CACvD,C,MAEa8gB,GAAeA,CAAC9gB,EAAwB+gB,IAClC,kBAAV/gB,GAAsBA,EAAMghB,SAAS,KAC1CC,WAAWjhB,GAAS,KACjBA,EAAQ+gB,EAEFG,GAAcA,CAAClhB,EAAwB+gB,IACjC,kBAAV/gB,GAAsBA,EAAMghB,SAAS,KAC1CC,WAAWjhB,GAAS,IAAM+gB,GACvB/gB,EASA,SAASmhB,GACdC,EACAhnB,EACAinB,GAEA,GAAID,GAAyB,oBAAZA,EAAGd,KAClB,OAAOc,EAAGE,MAAMD,EAASjnB,EAE7B,CAuBO,SAASmnB,GACdC,EACAJ,EACAC,EACAI,GAEA,IAAI1Q,EAAWb,EAAa1F,EAC5B,GAAI2G,GAAQqQ,GAEV,GADAtR,EAAMsR,EAAS5f,OACX6f,EACF,IAAK1Q,EAAIb,EAAM,EAAGa,GAAK,EAAGA,IACxBqQ,EAAGd,KAAKe,EAASG,EAASzQ,GAAIA,QAGhC,IAAKA,EAAI,EAAGA,EAAIb,EAAKa,IACnBqQ,EAAGd,KAAKe,EAASG,EAASzQ,GAAIA,QAG7B,GAAIyP,GAASgB,GAGlB,IAFAhX,EAAOD,OAAOC,KAAKgX,GACnBtR,EAAM1F,EAAK5I,OACNmP,EAAI,EAAGA,EAAIb,EAAKa,IACnBqQ,EAAGd,KAAKe,EAASG,EAAShX,EAAKuG,IAAKvG,EAAKuG,GAG/C,CAQO,SAAS2Q,GAAeC,EAAuBC,GACpD,IAAI7Q,EAAW8Q,EAAcC,EAAqBC,EAElD,IAAKJ,IAAOC,GAAMD,EAAG/f,SAAWggB,EAAGhgB,OACjC,OAAO,EAGT,IAAKmP,EAAI,EAAG8Q,EAAOF,EAAG/f,OAAQmP,EAAI8Q,IAAQ9Q,EAIxC,GAHA+Q,EAAKH,EAAG5Q,GACRgR,EAAKH,EAAG7Q,GAEJ+Q,EAAGE,eAAiBD,EAAGC,cAAgBF,EAAGloB,QAAUmoB,EAAGnoB,MACzD,OAAO,EAIX,OAAO,CACT,CAMO,SAASukB,GAAS8D,GACvB,GAAI9Q,GAAQ8Q,GACV,OAAOA,EAAO7Q,IAAI+M,IAGpB,GAAIqC,GAASyB,GAAS,CACpB,MAAMC,EAAS3X,OAAO4X,OAAO,MACvB3X,EAAOD,OAAOC,KAAKyX,GACnBG,EAAO5X,EAAK5I,OAClB,IAAI8O,EAAI,EAER,KAAOA,EAAI0R,IAAQ1R,EACjBwR,EAAO1X,EAAKkG,IAAMyN,GAAM8D,EAAOzX,EAAKkG,KAGtC,OAAOwR,C,CAGT,OAAOD,CACT,CAEA,SAASI,GAAW1oB,GAClB,OAAmE,IAA5D,CAAC,YAAa,YAAa,eAAe2oB,QAAQ3oB,EAC3D,CAOO,SAAS4oB,GAAQ5oB,EAAauoB,EAAmBD,EAAmB5X,GACzE,IAAKgY,GAAW1oB,GACd,OAGF,MAAM6oB,EAAON,EAAOvoB,GACd8oB,EAAOR,EAAOtoB,GAEhB6mB,GAASgC,IAAShC,GAASiC,GAE7BC,GAAMF,EAAMC,EAAMpY,GAElB6X,EAAOvoB,GAAOwkB,GAAMsE,EAExB,CA0BO,SAASC,GAASR,EAAWD,EAAqB5X,GACvD,MAAMsY,EAAUxR,GAAQ8Q,GAAUA,EAAS,CAACA,GACtCJ,EAAOc,EAAQ/gB,OAErB,IAAK4e,GAAS0B,GACZ,OAAOA,EAGT7X,EAAUA,GAAW,CAAC,EACtB,MAAMuY,EAASvY,EAAQuY,QAAUL,GACjC,IAAI3W,EAEJ,IAAK,IAAImF,EAAI,EAAGA,EAAI8Q,IAAQ9Q,EAAG,CAE7B,GADAnF,EAAU+W,EAAQ5R,IACbyP,GAAS5U,GACZ,SAGF,MAAMpB,EAAOD,OAAOC,KAAKoB,GACzB,IAAK,IAAI8E,EAAI,EAAG0R,EAAO5X,EAAK5I,OAAQ8O,EAAI0R,IAAQ1R,EAC9CkS,EAAOpY,EAAKkG,GAAIwR,EAAQtW,EAASvB,EAErC,CAEA,OAAO6X,CACT,CAgBO,SAASW,GAAWX,EAAWD,GAEpC,OAAOS,GAASR,EAAQD,EAAQ,CAACW,OAAQE,IAC3C,CAMO,SAASA,GAAUnpB,EAAauoB,EAAmBD,GACxD,IAAKI,GAAW1oB,GACd,OAGF,MAAM6oB,EAAON,EAAOvoB,GACd8oB,EAAOR,EAAOtoB,GAEhB6mB,GAASgC,IAAShC,GAASiC,GAC7BI,GAAQL,EAAMC,GACJlY,OAAO6V,UAAU2C,eAAezC,KAAK4B,EAAQvoB,KACvDuoB,EAAOvoB,GAAOwkB,GAAMsE,GAExB,CAaA,MAAMO,GAAe,CAEnB,GAAI/U,GAAKA,EAETgE,EAAGgR,GAAKA,EAAEhR,EACViR,EAAGD,GAAKA,EAAEC,GAML,SAASC,GAAUxpB,GACxB,MAAMypB,EAAQzpB,EAAI0pB,MAAM,KAClB7Y,EAAiB,GACvB,IAAI0T,EAAM,GACV,IAAK,MAAMoF,KAAQF,EACjBlF,GAAOoF,EACHpF,EAAI8C,SAAS,MACf9C,EAAMA,EAAIqC,MAAM,GAAI,GAAK,KAEzB/V,EAAK+Y,KAAKrF,GACVA,EAAM,IAGV,OAAO1T,CACT,CAEA,SAASgZ,GAAgB7pB,GACvB,MAAM6Q,EAAO2Y,GAAUxpB,GACvB,OAAOolB,IACL,IAAK,MAAMrO,KAAKlG,EAAM,CACpB,GAAU,KAANkG,EAGF,MAEFqO,EAAMA,GAAOA,EAAIrO,EACnB,CACA,OAAOqO,EAEX,CAEO,SAAS0E,GAAiB1E,EAAgBplB,GAC/C,MAAM+pB,EAAWV,GAAarpB,KAASqpB,GAAarpB,GAAO6pB,GAAgB7pB,IAC3E,OAAO+pB,EAAS3E,EAClB,CAKO,SAAS4E,GAAY3T,GAC1B,OAAOA,EAAIyO,OAAO,GAAGmF,cAAgB5T,EAAIuQ,MAAM,EACjD,C,MAGasD,GAAW7jB,GAAoC,qBAAVA,EAErC8jB,GAAc9jB,GAAsE,oBAAVA,EAG1E+jB,GAAYA,CAAI7U,EAAWC,KACtC,GAAID,EAAEtF,OAASuF,EAAEvF,KACf,OAAO,EAGT,IAAK,MAAMlQ,KAAQwV,EACjB,IAAKC,EAAE6U,IAAItqB,GACT,OAAO,EAIX,OAAO,GAOF,SAASuqB,GAAc3U,GAC5B,MAAkB,YAAXA,EAAE9U,MAAiC,UAAX8U,EAAE9U,MAA+B,gBAAX8U,EAAE9U,IACzD,CCvZO,MAAM0pB,GAAK1Y,KAAK0Y,GACVC,GAAM,EAAID,GACVE,GAAQD,GAAMD,GACdG,GAAW3jB,OAAO4jB,kBAClBC,GAAcL,GAAK,IACnBM,GAAUN,GAAK,EACfO,GAAaP,GAAK,EAClBQ,GAAqB,EAALR,GAAS,EAEzBS,GAAQnZ,KAAKmZ,MACbC,GAAOpZ,KAAKoZ,KAElB,SAASC,GAAa5S,EAAWiR,EAAW4B,GACjD,OAAOtZ,KAAKuZ,IAAI9S,EAAIiR,GAAK4B,CAC3B,CAKO,SAASE,GAAQ5iB,GACtB,MAAM6iB,EAAezZ,KAAKC,MAAMrJ,GAChCA,EAAQyiB,GAAaziB,EAAO6iB,EAAc7iB,EAAQ,KAAQ6iB,EAAe7iB,EACzE,MAAM8iB,EAAY1Z,KAAKmS,IAAI,GAAInS,KAAK2Z,MAAMR,GAAMviB,KAC1CgjB,EAAWhjB,EAAQ8iB,EACnBG,EAAeD,GAAY,EAAI,EAAIA,GAAY,EAAI,EAAIA,GAAY,EAAI,EAAI,GACjF,OAAOC,EAAeH,CACxB,CAMO,SAASI,GAAWtlB,GACzB,MAAMulB,EAAmB,GACnBC,EAAOha,KAAKga,KAAKxlB,GACvB,IAAI+Q,EAEJ,IAAKA,EAAI,EAAGA,EAAIyU,EAAMzU,IAChB/Q,EAAQ+Q,IAAM,IAChBwU,EAAOhC,KAAKxS,GACZwU,EAAOhC,KAAKvjB,EAAQ+Q,IAQxB,OALIyU,KAAiB,EAAPA,IACZD,EAAOhC,KAAKiC,GAGdD,EAAOE,KAAK,CAACvW,EAAGC,IAAMD,EAAIC,GAAGuW,MACtBH,CACT,CAKA,SAASI,GAAelV,GACtB,MAAoB,kBAANA,GAAgC,kBAANA,GAAwB,OAANA,KAAgBmV,OAAOC,eAAepV,GAAK,aAAcA,GAAK,YAAaA,EACvI,CAEO,SAASqV,GAASrV,GACvB,OAAQkV,GAAelV,KAAOsV,MAAM9E,WAAWxQ,KAAiBiQ,SAASjQ,EAC3E,CAEO,SAASuV,GAAY/T,EAAW6S,GACrC,MAAMmB,EAAUza,KAAKC,MAAMwG,GAC3B,OAAOgU,EAAYnB,GAAY7S,GAAQgU,EAAUnB,GAAY7S,CAC/D,CAKO,SAASiU,GACdC,EACAjE,EACAkE,GAEA,IAAIrV,EAAW8Q,EAAc7hB,EAE7B,IAAK+Q,EAAI,EAAG8Q,EAAOsE,EAAMvkB,OAAQmP,EAAI8Q,EAAM9Q,IACzC/Q,EAAQmmB,EAAMpV,GAAGqV,GACZL,MAAM/lB,KACTkiB,EAAO5T,IAAM9C,KAAK8C,IAAI4T,EAAO5T,IAAKtO,GAClCkiB,EAAO7T,IAAM7C,KAAK6C,IAAI6T,EAAO7T,IAAKrO,GAGxC,CAEO,SAASqmB,GAAUC,GACxB,OAAOA,GAAWpC,GAAK,IACzB,CAEO,SAASqC,GAAUC,GACxB,OAAOA,GAAW,IAAMtC,GAC1B,CASO,SAASuC,GAAexU,GAC7B,IAAKwO,GAAexO,GAClB,OAEF,IAAI3C,EAAI,EACJgQ,EAAI,EACR,MAAO9T,KAAKC,MAAMwG,EAAI3C,GAAKA,IAAM2C,EAC/B3C,GAAK,GACLgQ,IAEF,OAAOA,CACT,CAGO,SAASoH,GACdC,EACAC,GAEA,MAAMC,EAAsBD,EAAW3U,EAAI0U,EAAY1U,EACjD6U,EAAsBF,EAAW1D,EAAIyD,EAAYzD,EACjD6D,EAA2Bvb,KAAKga,KAAKqB,EAAsBA,EAAsBC,EAAsBA,GAE7G,IAAIE,EAAQxb,KAAKyb,MAAMH,EAAqBD,GAM5C,OAJIG,GAAU,GAAM9C,KAClB8C,GAAS7C,IAGJ,CACL6C,QACAE,SAAUH,EAEd,CAEO,SAASI,GAAsBC,EAAYC,GAChD,OAAO7b,KAAKga,KAAKha,KAAKmS,IAAI0J,EAAIpV,EAAImV,EAAInV,EAAG,GAAKzG,KAAKmS,IAAI0J,EAAInE,EAAIkE,EAAIlE,EAAG,GACxE,CAMO,SAASoE,GAAWpY,EAAWC,GACpC,OAAQD,EAAIC,EAAIiV,IAASD,GAAMD,EACjC,CAMO,SAASqD,GAAgBrY,GAC9B,OAAQA,EAAIiV,GAAMA,IAAOA,EAC3B,CAKO,SAASqD,GAAcR,EAAexlB,EAAeimB,EAAaC,GACvE,MAAMxY,EAAIqY,GAAgBP,GACpBxW,EAAI+W,GAAgB/lB,GACpB8N,EAAIiY,GAAgBE,GACpBE,EAAeJ,GAAgB/W,EAAItB,GACnC0Y,EAAaL,GAAgBjY,EAAIJ,GACjC2Y,EAAeN,GAAgBrY,EAAIsB,GACnCsX,EAAaP,GAAgBrY,EAAII,GACvC,OAAOJ,IAAMsB,GAAKtB,IAAMI,GAAMoY,GAAyBlX,IAAMlB,GACvDqY,EAAeC,GAAcC,EAAeC,CACpD,CASO,SAASC,GAAY/nB,EAAesO,EAAaD,GACtD,OAAO7C,KAAK6C,IAAIC,EAAK9C,KAAK8C,IAAID,EAAKrO,GACrC,CAMO,SAASgoB,GAAYhoB,GAC1B,OAAO+nB,GAAY/nB,GAAQ,MAAO,MACpC,CASO,SAASioB,GAAWjoB,EAAewB,EAAeimB,EAAa3C,EAAU,MAC9E,OAAO9kB,GAASwL,KAAK8C,IAAI9M,EAAOimB,GAAO3C,GAAW9kB,GAASwL,KAAK6C,IAAI7M,EAAOimB,GAAO3C,CACpF,CC3LO,SAASoD,GACdC,EACAnoB,EACAooB,GAEAA,EAAMA,GAAA,CAASxuB,GAAUuuB,EAAMvuB,GAASoG,GACxC,IAEIqoB,EAFAC,EAAKH,EAAMvmB,OAAS,EACpB2mB,EAAK,EAGT,MAAOD,EAAKC,EAAK,EACfF,EAAOE,EAAKD,GAAO,EACfF,EAAIC,GACNE,EAAKF,EAELC,EAAKD,EAIT,MAAO,CAACE,KAAID,KACd,CAUO,MAAME,GAAeA,CAC1BL,EACAxuB,EACAqG,EACAyoB,IAEAP,GAAQC,EAAOnoB,EAAOyoB,EAClB7uB,IACA,MAAM8uB,EAAKP,EAAMvuB,GAAOD,GACxB,OAAO+uB,EAAK1oB,GAAS0oB,IAAO1oB,GAASmoB,EAAMvuB,EAAQ,GAAGD,KAASqG,GAE/DpG,GAASuuB,EAAMvuB,GAAOD,GAAOqG,GAStB2oB,GAAgBA,CAC3BR,EACAxuB,EACAqG,IAEAkoB,GAAQC,EAAOnoB,EAAOpG,GAASuuB,EAAMvuB,GAAOD,IAAQqG,GAS/C,SAAS4oB,GAAeC,EAAkBva,EAAaD,GAC5D,IAAI7M,EAAQ,EACRimB,EAAMoB,EAAOjnB,OAEjB,MAAOJ,EAAQimB,GAAOoB,EAAOrnB,GAAS8M,EACpC9M,IAEF,MAAOimB,EAAMjmB,GAASqnB,EAAOpB,EAAM,GAAKpZ,EACtCoZ,IAGF,OAAOjmB,EAAQ,GAAKimB,EAAMoB,EAAOjnB,OAC7BinB,EAAOtI,MAAM/e,EAAOimB,GACpBoB,CACN,CAEA,MAAMC,GAAc,CAAC,OAAQ,MAAO,QAAS,SAAU,WAgBhD,SAASC,GAAkB5C,EAAO6C,GACnC7C,EAAM8C,SACR9C,EAAM8C,SAASC,UAAU3F,KAAKyF,IAIhCze,OAAO4e,eAAehD,EAAO,WAAY,CACvCiD,cAAc,EACdC,YAAY,EACZrpB,MAAO,CACLkpB,UAAW,CAACF,MAIhBF,GAAYQ,QAAS3vB,IACnB,MAAM4vB,EAAS,UAAY5F,GAAYhqB,GACjC6vB,EAAOrD,EAAMxsB,GAEnB4Q,OAAO4e,eAAehD,EAAOxsB,EAAK,CAChCyvB,cAAc,EACdC,YAAY,EACZrpB,KAAAA,IAAS5F,GACP,MAAMqvB,EAAMD,EAAKlI,MAAMpmB,KAAMd,GAQ7B,OANA+rB,EAAM8C,SAASC,UAAUI,QAASI,IACF,oBAAnBA,EAAOH,IAChBG,EAAOH,MAAWnvB,KAIfqvB,CACT,MAGN,CAQO,SAASE,GAAoBxD,EAAO6C,GACzC,MAAMY,EAAOzD,EAAM8C,SACnB,IAAKW,EACH,OAGF,MAAMV,EAAYU,EAAKV,UACjBtvB,EAAQsvB,EAAU5G,QAAQ0G,IACjB,IAAXpvB,GACFsvB,EAAUW,OAAOjwB,EAAO,GAGtBsvB,EAAUtnB,OAAS,IAIvBknB,GAAYQ,QAAS3vB,WACZwsB,EAAMxsB,YAGRwsB,EAAM8C,SACf,CAKO,SAASa,GAAgBC,GAC9B,MAAMC,EAAM,IAAIC,IAAOF,GAEvB,OAAIC,EAAIpgB,OAASmgB,EAAMnoB,OACdmoB,EAGF9oB,MAAMU,KAAKqoB,EACpB,CClLa,MAAAE,GAAoB,WAC/B,MAAsB,qBAAXlvB,OACF,SAASmmB,GACd,OAAOA,GACT,EAEKnmB,OAAOmvB,qBAChB,CAPiC,GAa1B,SAASC,GACdhJ,EACAC,GAEA,IAAIgJ,EAAY,GACZC,GAAU,EAEd,OAAO,YAAYlwB,GAEjBiwB,EAAYjwB,EACPkwB,IACHA,GAAU,EACVJ,GAAiB5J,KAAKtlB,OAAQ,KAC5BsvB,GAAU,EACVlJ,EAAGE,MAAMD,EAASgJ,KAGxB,CACF,CAKO,SAASE,GAAmCnJ,EAA8BoJ,GAC/E,IAAIC,EACJ,OAAO,YAAYrwB,GAOjB,OANIowB,GACFE,aAAaD,GACbA,EAAUE,WAAWvJ,EAAIoJ,EAAOpwB,IAEhCgnB,EAAGE,MAAMpmB,KAAMd,GAEVowB,CACT,CACF,CAMO,MAAMI,GAAsBC,GAAgD,UAAVA,EAAoB,OAAmB,QAAVA,EAAkB,QAAU,SAMrHC,GAAiBA,CAACD,EAAmCrpB,EAAeimB,IAA0B,UAAVoD,EAAoBrpB,EAAkB,QAAVqpB,EAAkBpD,GAAOjmB,EAAQimB,GAAO,EAMxJsD,GAASA,CAACF,EAAoCG,EAAcC,EAAeC,KACtF,MAAMC,EAAQD,EAAM,OAAS,QAC7B,OAAOL,IAAUM,EAAQF,EAAkB,WAAVJ,GAAsBG,EAAOC,GAAS,EAAID,GAOtE,SAASI,GAAiCC,EAAqCC,EAAwBC,GAC5G,MAAMC,EAAaF,EAAO1pB,OAE1B,IAAIJ,EAAQ,EACRoJ,EAAQ4gB,EAEZ,GAAIH,EAAKI,QAAS,CAChB,MAAM,OAACC,EAAM,OAAEC,EAAA,QAAQC,GAAWP,EAC5BQ,EAAWR,EAAKS,SAAUT,EAAKS,QAAQzhB,QAAUghB,EAAKS,QAAQzhB,QAAQwhB,SAAkB,KACxFE,EAAOL,EAAOK,MACd,IAACzd,EAAG,IAAED,EAAG,WAAE2d,EAAU,WAAEC,GAAcP,EAAOQ,gBAElD,GAAIF,EAAY,CAMd,GALAxqB,EAAQgK,KAAK8C,IAEXka,GAAaoD,EAASG,EAAMzd,GAAKia,GAEjCgD,EAAqBC,EAAahD,GAAa8C,EAAQS,EAAML,EAAOS,iBAAiB7d,IAAMia,IACzFsD,EAAU,CACZ,MAAMO,EAAuBR,EAC1BrL,MAAM,EAAG/e,EAAQ,GACjBigB,UACA4K,UACCC,IAAUnM,GAAcmM,EAAMX,EAAOI,QACzCvqB,GAASgK,KAAK6C,IAAI,EAAG+d,E,CAEvB5qB,EAAQumB,GAAYvmB,EAAO,EAAGgqB,EAAa,E,CAE7C,GAAIS,EAAY,CACd,IAAIxE,EAAMjc,KAAK6C,IAEbma,GAAaoD,EAASF,EAAOK,KAAM1d,GAAK,GAAMia,GAAK,EAEnDiD,EAAqB,EAAI/C,GAAa8C,EAAQS,EAAML,EAAOS,iBAAiB9d,IAAM,GAAMia,GAAK,GAC/F,GAAIuD,EAAU,CACZ,MAAMU,EAAuBX,EAC1BrL,MAAMkH,EAAM,GACZ4E,UACCC,IAAUnM,GAAcmM,EAAMX,EAAOI,QACzCtE,GAAOjc,KAAK6C,IAAI,EAAGke,E,CAErB3hB,EAAQmd,GAAYN,EAAKjmB,EAAOgqB,GAAchqB,C,MAE9CoJ,EAAQ4gB,EAAahqB,C,CAIzB,MAAO,CAACA,QAAOoJ,QACjB,CAQO,SAAS4hB,GAAoBnB,GAClC,MAAM,OAACoB,EAAM,OAAEC,EAAA,aAAQC,GAAgBtB,EACjCuB,EAAY,CAChBC,KAAMJ,EAAOne,IACbwe,KAAML,EAAOpe,IACb0e,KAAML,EAAOpe,IACb0e,KAAMN,EAAOre,KAEf,IAAKse,EAEH,OADAtB,EAAKsB,aAAeC,GACb,EAET,MAAMK,EAAUN,EAAaE,OAASJ,EAAOne,KAC1Cqe,EAAaG,OAASL,EAAOpe,KAC7Bse,EAAaI,OAASL,EAAOpe,KAC7Bqe,EAAaK,OAASN,EAAOre,IAGhC,OADA9D,OAAO8T,OAAOsO,EAAcC,GACrBK,CACT,CChKA,MAAMC,GAAUnP,GAAoB,IAANA,GAAiB,IAANA,EACnCoP,GAAYA,CAACpP,EAAWvN,EAAW8O,KAAgB9T,KAAKmS,IAAI,EAAG,IAAMI,GAAK,IAAMvS,KAAK4hB,KAAKrP,EAAIvN,GAAK2T,GAAM7E,GACzG+N,GAAaA,CAACtP,EAAWvN,EAAW8O,IAAc9T,KAAKmS,IAAI,GAAI,GAAKI,GAAKvS,KAAK4hB,KAAKrP,EAAIvN,GAAK2T,GAAM7E,GAAK,EAOvGgO,GAAU,CACdC,OAASxP,GAAcA,EAEvByP,WAAazP,GAAcA,EAAIA,EAE/B0P,YAAc1P,IAAeA,GAAKA,EAAI,GAEtC2P,cAAgB3P,IAAgBA,GAAK,IAAO,EACxC,GAAMA,EAAIA,GACT,MAAUA,GAAMA,EAAI,GAAK,GAE9B4P,YAAc5P,GAAcA,EAAIA,EAAIA,EAEpC6P,aAAe7P,IAAeA,GAAK,GAAKA,EAAIA,EAAI,EAEhD8P,eAAiB9P,IAAgBA,GAAK,IAAO,EACzC,GAAMA,EAAIA,EAAIA,EACd,KAAQA,GAAK,GAAKA,EAAIA,EAAI,GAE9B+P,YAAc/P,GAAcA,EAAIA,EAAIA,EAAIA,EAExCgQ,aAAehQ,MAAiBA,GAAK,GAAKA,EAAIA,EAAIA,EAAI,GAEtDiQ,eAAiBjQ,IAAgBA,GAAK,IAAO,EACzC,GAAMA,EAAIA,EAAIA,EAAIA,GACjB,KAAQA,GAAK,GAAKA,EAAIA,EAAIA,EAAI,GAEnCkQ,YAAclQ,GAAcA,EAAIA,EAAIA,EAAIA,EAAIA,EAE5CmQ,aAAenQ,IAAeA,GAAK,GAAKA,EAAIA,EAAIA,EAAIA,EAAI,EAExDoQ,eAAiBpQ,IAAgBA,GAAK,IAAO,EACzC,GAAMA,EAAIA,EAAIA,EAAIA,EAAIA,EACtB,KAAQA,GAAK,GAAKA,EAAIA,EAAIA,EAAIA,EAAI,GAEtCqQ,WAAarQ,GAAuC,EAAxBvS,KAAK6iB,IAAItQ,EAAIyG,IAEzC8J,YAAcvQ,GAAcvS,KAAK4hB,IAAIrP,EAAIyG,IAEzC+J,cAAgBxQ,IAAe,IAAOvS,KAAK6iB,IAAInK,GAAKnG,GAAK,GAEzDyQ,WAAazQ,GAAqB,IAAPA,EAAY,EAAIvS,KAAKmS,IAAI,EAAG,IAAMI,EAAI,IAEjE0Q,YAAc1Q,GAAqB,IAAPA,EAAY,EAA4B,EAAvBvS,KAAKmS,IAAI,GAAI,GAAKI,GAE/D2Q,cAAgB3Q,GAAcmP,GAAOnP,GAAKA,EAAIA,EAAI,GAC9C,GAAMvS,KAAKmS,IAAI,EAAG,IAAU,EAAJI,EAAQ,IAChC,IAAyC,EAAjCvS,KAAKmS,IAAI,GAAI,IAAU,EAAJI,EAAQ,KAEvC4Q,WAAa5Q,GAAcA,GAAM,EAAKA,IAAMvS,KAAKga,KAAK,EAAIzH,EAAIA,GAAK,GAEnE6Q,YAAc7Q,GAAcvS,KAAKga,KAAK,GAAKzH,GAAK,GAAKA,GAErD8Q,cAAgB9Q,IAAgBA,GAAK,IAAO,GACvC,IAAOvS,KAAKga,KAAK,EAAIzH,EAAIA,GAAK,GAC/B,IAAOvS,KAAKga,KAAK,GAAKzH,GAAK,GAAKA,GAAK,GAEzC+Q,cAAgB/Q,GAAcmP,GAAOnP,GAAKA,EAAIoP,GAAUpP,EAAG,KAAO,IAElEgR,eAAiBhR,GAAcmP,GAAOnP,GAAKA,EAAIsP,GAAWtP,EAAG,KAAO,IAEpEiR,gBAAAA,CAAiBjR,GACf,MAAMvN,EAAI,MACJ8O,EAAI,IACV,OAAO4N,GAAOnP,GAAKA,EACjBA,EAAI,GACA,GAAMoP,GAAc,EAAJpP,EAAOvN,EAAG8O,GAC1B,GAAM,GAAM+N,GAAe,EAAJtP,EAAQ,EAAGvN,EAAG8O,EAC7C,EAEA2P,UAAAA,CAAWlR,GACT,MAAMvN,EAAI,QACV,OAAOuN,EAAIA,IAAMvN,EAAI,GAAKuN,EAAIvN,EAChC,EAEA0e,WAAAA,CAAYnR,GACV,MAAMvN,EAAI,QACV,OAAQuN,GAAK,GAAKA,IAAMvN,EAAI,GAAKuN,EAAIvN,GAAK,CAC5C,EAEA2e,aAAAA,CAAcpR,GACZ,IAAIvN,EAAI,QACR,OAAKuN,GAAK,IAAO,EACDA,EAAIA,IAAuB,GAAhBvN,GAAM,QAAeuN,EAAIvN,GAA3C,GAEF,KAAQuN,GAAK,GAAKA,IAAuB,GAAhBvN,GAAM,QAAeuN,EAAIvN,GAAK,EAChE,EAEA4e,aAAerR,GAAc,EAAIuP,GAAQ+B,cAAc,EAAItR,GAE3DsR,aAAAA,CAActR,GACZ,MAAMrM,EAAI,OACJrC,EAAI,KACV,OAAI0O,EAAK,EAAI1O,EACJqC,EAAIqM,EAAIA,EAEbA,EAAK,EAAI1O,EACJqC,GAAKqM,GAAM,IAAM1O,GAAM0O,EAAI,IAEhCA,EAAK,IAAM1O,EACNqC,GAAKqM,GAAM,KAAO1O,GAAM0O,EAAI,MAE9BrM,GAAKqM,GAAM,MAAQ1O,GAAM0O,EAAI,OACtC,EAEAuR,gBAAkBvR,GAAeA,EAAI,GACH,GAA9BuP,GAAQ8B,aAAiB,EAAJrR,GACc,GAAnCuP,GAAQ+B,cAAkB,EAAJtR,EAAQ,GAAW,ICpHxC,SAASwR,GAAoBvvB,GAClC,GAAIA,GAA0B,kBAAVA,EAAoB,CACtC,MAAMxF,EAAOwF,EAAMqgB,WACnB,MAAgB,2BAAT7lB,GAA8C,4BAATA,C,CAG9C,OAAO,CACT,CAWO,SAASykB,GAAMjf,GACpB,OAAOuvB,GAAoBvvB,GAASA,EAAQ,IAAI0e,GAAM1e,EACxD,CAKO,SAASwvB,GAAcxvB,GAC5B,OAAOuvB,GAAoBvvB,GACvBA,EACA,IAAI0e,GAAM1e,GAAO+f,SAAS,IAAKD,OAAO,IAAK1P,WACjD,CC/BA,MAAMqf,GAAU,CAAC,IAAK,IAAK,cAAe,SAAU,WAC9CC,GAAS,CAAC,QAAS,cAAe,mBAEjC,SAASC,GAAwBC,GACtCA,EAAS5F,IAAI,YAAa,CACxBQ,WAAOna,EACPwf,SAAU,IACVC,OAAQ,eACR1O,QAAI/Q,EACJ1O,UAAM0O,EACNzC,UAAMyC,EACNqN,QAAIrN,EACJ7V,UAAM6V,IAGRuf,EAASG,SAAS,YAAa,CAC7BC,WAAW,EACXC,YAAY,EACZC,YAAc51B,GAAkB,eAATA,GAAkC,eAATA,GAAkC,OAATA,IAG3Es1B,EAAS5F,IAAI,aAAc,CACzB0F,OAAQ,CACNl1B,KAAM,QACN21B,WAAYT,IAEdD,QAAS,CACPj1B,KAAM,SACN21B,WAAYV,MAIhBG,EAASG,SAAS,aAAc,CAC9BC,UAAW,cAGbJ,EAAS5F,IAAI,cAAe,CAC1BoG,OAAQ,CACNC,UAAW,CACTR,SAAU,MAGdS,OAAQ,CACND,UAAW,CACTR,SAAU,IAGdU,KAAM,CACJC,WAAY,CACVd,OAAQ,CACN/tB,KAAM,eAER8uB,QAAS,CACPj2B,KAAM,UACNq1B,SAAU,KAIhBa,KAAM,CACJF,WAAY,CACVd,OAAQ,CACNhS,GAAI,eAEN+S,QAAS,CACPj2B,KAAM,UACNs1B,OAAQ,SACR1O,GAAInT,GAAS,EAAJA,MAKnB,CCvEO,SAAS0iB,GAAqBf,GACnCA,EAAS5F,IAAI,SAAU,CACrB4G,aAAa,EACbC,QAAS,CACPC,IAAK,EACL7F,MAAO,EACP8F,OAAQ,EACR/F,KAAM,IAGZ,CCTA,MAAMgG,GAAY,IAAIC,IAEtB,SAASC,GAAgBC,EAAgB9mB,GACvCA,EAAUA,GAAW,CAAC,EACtB,MAAM+mB,EAAWD,EAASE,KAAKC,UAAUjnB,GACzC,IAAIknB,EAAYP,GAAUQ,IAAIJ,GAK9B,OAJKG,IACHA,EAAY,IAAIE,KAAKC,aAAaP,EAAQ9mB,GAC1C2mB,GAAUhH,IAAIoH,EAAUG,IAEnBA,CACT,CAEO,SAASI,GAAaC,EAAaT,EAAgB9mB,GACxD,OAAO6mB,GAAgBC,EAAQ9mB,GAASwnB,OAAOD,EACjD,CCRA,MAAME,GAAa,CAOjBjJ,MAAAA,CAAO7oB,GACL,OAAOmR,GAAQnR,GAAkCA,EAAS,GAAKA,CACjE,EAUA+xB,OAAAA,CAAQC,EAAWp4B,EAAOq4B,GACxB,GAAkB,IAAdD,EACF,MAAO,IAGT,MAAMb,EAASj2B,KAAKg3B,MAAM7nB,QAAQ8mB,OAClC,IAAIgB,EACAC,EAAQJ,EAEZ,GAAIC,EAAMrwB,OAAS,EAAG,CAEpB,MAAMywB,EAAU7mB,KAAK6C,IAAI7C,KAAKuZ,IAAIkN,EAAM,GAAGjyB,OAAQwL,KAAKuZ,IAAIkN,EAAMA,EAAMrwB,OAAS,GAAG5B,SAChFqyB,EAAU,MAAQA,EAAU,QAC9BF,EAAW,cAGbC,EAAQE,GAAeN,EAAWC,E,CAGpC,MAAMM,EAAW5N,GAAMnZ,KAAKuZ,IAAIqN,IAO1BI,EAAazM,MAAMwM,GAAY,EAAI/mB,KAAK6C,IAAI7C,KAAK8C,KAAK,EAAI9C,KAAK2Z,MAAMoN,GAAW,IAAK,GAErFloB,EAAU,CAAC8nB,WAAUM,sBAAuBD,EAAYE,sBAAuBF,GAGrF,OAFAjoB,OAAO8T,OAAOhU,EAASnP,KAAKmP,QAAQ4nB,MAAMJ,QAEnCF,GAAaK,EAAWb,EAAQ9mB,EACzC,EAWAsoB,WAAAA,CAAYX,EAAWp4B,EAAOq4B,GAC5B,GAAkB,IAAdD,EACF,MAAO,IAET,MAAMY,EAASX,EAAMr4B,GAAOi5B,aAAgBb,EAAaxmB,KAAKmS,IAAI,GAAInS,KAAK2Z,MAAMR,GAAMqN,KACvF,MAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,IAAIc,SAASF,IAAWh5B,EAAQ,GAAMq4B,EAAMrwB,OACxDkwB,GAAWC,QAAQzR,KAAKplB,KAAM82B,EAAWp4B,EAAOq4B,GAElD,EACT,GAKF,SAASK,GAAeN,EAAWC,GAGjC,IAAIG,EAAQH,EAAMrwB,OAAS,EAAIqwB,EAAM,GAAGjyB,MAAQiyB,EAAM,GAAGjyB,MAAQiyB,EAAM,GAAGjyB,MAAQiyB,EAAM,GAAGjyB,MAO3F,OAJIwL,KAAKuZ,IAAIqN,IAAU,GAAKJ,IAAcxmB,KAAK2Z,MAAM6M,KAEnDI,EAAQJ,EAAYxmB,KAAK2Z,MAAM6M,IAE1BI,CACT,CAMA,IAAAW,GAAe,CAACjB,eCnGT,SAASkB,GAAmBpD,GACjCA,EAAS5F,IAAI,QAAS,CACpBiJ,SAAS,EACTC,QAAQ,EACRzR,SAAS,EACT0R,aAAa,EASbC,OAAQ,QAERC,MAAM,EAMNC,MAAO,EAGPC,KAAM,CACJN,SAAS,EACTO,UAAW,EACXC,iBAAiB,EACjBC,WAAW,EACXC,WAAY,EACZC,UAAWA,CAAC96B,EAAMuR,IAAYA,EAAQmpB,UACtCK,UAAWA,CAAC/6B,EAAMuR,IAAYA,EAAQ4U,MACtCiU,QAAQ,GAGVY,OAAQ,CACNb,SAAS,EACTc,KAAM,GACNC,WAAY,EACZ74B,MAAO,GAIT4O,MAAO,CAELkpB,SAAS,EAGTgB,KAAM,GAGNpD,QAAS,CACPC,IAAK,EACLC,OAAQ,IAKZkB,MAAO,CACLiC,YAAa,EACbC,YAAa,GACbC,QAAQ,EACRC,gBAAiB,EACjBC,gBAAiB,GACjBzD,QAAS,EACToC,SAAS,EACTsB,UAAU,EACVC,gBAAiB,EACjBC,YAAa,EAEbtT,SAAU4R,GAAMjB,WAAWjJ,OAC3B6L,MAAO,CAAC,EACRC,MAAO,CAAC,EACR9J,MAAO,SACP+J,WAAY,OAEZC,mBAAmB,EACnBC,cAAe,4BACfC,gBAAiB,KAIrBnF,EAASoF,MAAM,cAAe,QAAS,GAAI,SAC3CpF,EAASoF,MAAM,aAAc,QAAS,GAAI,eAC1CpF,EAASoF,MAAM,eAAgB,QAAS,GAAI,eAC5CpF,EAASoF,MAAM,cAAe,QAAS,GAAI,SAE3CpF,EAASG,SAAS,QAAS,CACzBC,WAAW,EACXE,YAAc51B,IAAUA,EAAK26B,WAAW,YAAc36B,EAAK26B,WAAW,UAAqB,aAAT36B,GAAgC,WAATA,EACzG21B,WAAa31B,GAAkB,eAATA,GAAkC,mBAATA,GAAsC,SAATA,IAG9Es1B,EAASG,SAAS,SAAU,CAC1BC,UAAW,UAGbJ,EAASG,SAAS,cAAe,CAC/BG,YAAc51B,GAAkB,oBAATA,GAAuC,aAATA,EACrD21B,WAAa31B,GAAkB,oBAATA,GAE1B,C,MClGa46B,GAAY3qB,OAAO4X,OAAO,MAC1BgT,GAAc5qB,OAAO4X,OAAO,MAOzC,SAASiT,GAASC,EAAM17B,GACtB,IAAKA,EACH,OAAO07B,EAET,MAAM7qB,EAAO7Q,EAAI0pB,MAAM,KACvB,IAAK,IAAItS,EAAI,EAAGN,EAAIjG,EAAK5I,OAAQmP,EAAIN,IAAKM,EAAG,CAC3C,MAAML,EAAIlG,EAAKuG,GACfskB,EAAOA,EAAK3kB,KAAO2kB,EAAK3kB,GAAKnG,OAAO4X,OAAO,MAC7C,CACA,OAAOkT,CACT,CAEA,SAASrL,GAAIsL,EAAMC,EAAO1M,GACxB,MAAqB,kBAAV0M,EACF7S,GAAM0S,GAASE,EAAMC,GAAQ1M,GAE/BnG,GAAM0S,GAASE,EAAM,IAAKC,EACnC,CAMO,MAAMC,GACX7W,WAAAA,CAAY8W,EAAcC,GACxBx6B,KAAKm1B,eAAYhgB,EACjBnV,KAAKy6B,gBAAkB,kBACvBz6B,KAAK06B,YAAc,kBACnB16B,KAAK+jB,MAAQ,OACb/jB,KAAK26B,SAAW,CAAC,EACjB36B,KAAK46B,iBAAoBC,GAAYA,EAAQ7D,MAAM8D,SAASC,sBAC5D/6B,KAAKg7B,SAAW,CAAC,EACjBh7B,KAAKi7B,OAAS,CACZ,YACA,WACA,QACA,aACA,aAEFj7B,KAAKk7B,KAAO,CACVC,OAAQ,qDACRzsB,KAAM,GACNrQ,MAAO,SACP+8B,WAAY,IACZpX,OAAQ,MAEVhkB,KAAKq7B,MAAQ,CAAC,EACdr7B,KAAKs7B,qBAAuB,CAACC,EAAKpsB,IAAYmlB,GAAcnlB,EAAQsrB,iBACpEz6B,KAAKw7B,iBAAmB,CAACD,EAAKpsB,IAAYmlB,GAAcnlB,EAAQurB,aAChE16B,KAAKy7B,WAAa,CAACF,EAAKpsB,IAAYmlB,GAAcnlB,EAAQ4U,OAC1D/jB,KAAK07B,UAAY,IACjB17B,KAAK27B,YAAc,CACjBC,KAAM,UACNC,WAAW,EACXC,kBAAkB,GAEpB97B,KAAK+7B,qBAAsB,EAC3B/7B,KAAKg8B,QAAU,KACfh8B,KAAKpB,QAAU,KACfoB,KAAKi8B,SAAU,EACfj8B,KAAKk8B,QAAU,CAAC,EAChBl8B,KAAKm8B,YAAa,EAClBn8B,KAAKo8B,WAAQjnB,EACbnV,KAAKq8B,OAAS,CAAC,EACfr8B,KAAKs8B,UAAW,EAChBt8B,KAAKu8B,yBAA0B,EAE/Bv8B,KAAK60B,SAAS0F,GACdv6B,KAAKomB,MAAMoU,EACb,CAMA1L,GAAAA,CAAIuL,EAAO1M,GACT,OAAOmB,GAAI9uB,KAAMq6B,EAAO1M,EAC1B,CAKA2I,GAAAA,CAAI+D,GACF,OAAOH,GAASl6B,KAAMq6B,EACxB,CAMAxF,QAAAA,CAASwF,EAAO1M,GACd,OAAOmB,GAAImL,GAAaI,EAAO1M,EACjC,CAEA6O,QAAAA,CAASnC,EAAO1M,GACd,OAAOmB,GAAIkL,GAAWK,EAAO1M,EAC/B,CAmBAmM,KAAAA,CAAMO,EAAOj7B,EAAMq9B,EAAaC,GAC9B,MAAMC,EAAczC,GAASl6B,KAAMq6B,GAC7BuC,EAAoB1C,GAASl6B,KAAMy8B,GACnCI,EAAc,IAAMz9B,EAE1BiQ,OAAOytB,iBAAiBH,EAAa,CAEnC,CAACE,GAAc,CACb/3B,MAAO63B,EAAYv9B,GACnB29B,UAAU,GAGZ,CAAC39B,GAAO,CACN+uB,YAAY,EACZmI,GAAAA,GACE,MAAM0G,EAAQh9B,KAAK68B,GACb7V,EAAS4V,EAAkBF,GACjC,OAAIpX,GAAS0X,GACJ3tB,OAAO8T,OAAO,CAAC,EAAG6D,EAAQgW,GAE5BrX,GAAeqX,EAAOhW,EAC/B,EACA8H,GAAAA,CAAIhqB,GACF9E,KAAK68B,GAAe/3B,CACtB,IAGN,CAEAshB,KAAAA,CAAM6W,GACJA,EAAS7O,QAAShI,GAAUA,EAAMpmB,MACpC,EAIF,IAAA00B,GAA+B,IAAI4F,GAAS,CAC1CtF,YAAc51B,IAAUA,EAAK26B,WAAW,MACxChF,WAAa31B,GAAkB,WAATA,EACtBi8B,MAAO,CACLvG,UAAW,eAEb6G,YAAa,CACX3G,aAAa,EACbD,YAAY,IAEb,CAACN,GAAyBgB,GAAsBqC,KCtJ5C,SAASoF,GAAahC,GAC3B,OAAKA,GAAQjW,GAAciW,EAAKxsB,OAASuW,GAAciW,EAAKC,QACnD,MAGDD,EAAK78B,MAAQ68B,EAAK78B,MAAQ,IAAM,KACrC68B,EAAKlX,OAASkX,EAAKlX,OAAS,IAAM,IACnCkX,EAAKxsB,KAAO,MACZwsB,EAAKC,MACT,CAKO,SAASgC,GACd5B,EACA77B,EACA09B,EACAC,EACAC,GAEA,IAAIC,EAAY79B,EAAK49B,GAQrB,OAPKC,IACHA,EAAY79B,EAAK49B,GAAU/B,EAAIiC,YAAYF,GAAQr9B,MACnDm9B,EAAG/U,KAAKiV,IAENC,EAAYF,IACdA,EAAUE,GAELF,CACT,CASO,SAASI,GACdlC,EACAL,EACAwC,EACAC,GAEAA,EAAQA,GAAS,CAAC,EAClB,IAAIj+B,EAAOi+B,EAAMj+B,KAAOi+B,EAAMj+B,MAAQ,CAAC,EACnC09B,EAAKO,EAAMC,eAAiBD,EAAMC,gBAAkB,GAEpDD,EAAMzC,OAASA,IACjBx7B,EAAOi+B,EAAMj+B,KAAO,CAAC,EACrB09B,EAAKO,EAAMC,eAAiB,GAC5BD,EAAMzC,KAAOA,GAGfK,EAAIsC,OAEJtC,EAAIL,KAAOA,EACX,IAAImC,EAAU,EACd,MAAM1W,EAAO+W,EAAch3B,OAC3B,IAAImP,EAAW+L,EAAWkc,EAAcC,EAAwBC,EAChE,IAAKnoB,EAAI,EAAGA,EAAI8Q,EAAM9Q,IAIpB,GAHAkoB,EAAQL,EAAc7nB,QAGRV,IAAV4oB,GAAiC,OAAVA,GAAmB9nB,GAAQ8nB,IAE/C,GAAI9nB,GAAQ8nB,GAGjB,IAAKnc,EAAI,EAAGkc,EAAOC,EAAMr3B,OAAQkb,EAAIkc,EAAMlc,IACzCoc,EAAcD,EAAMnc,QAEAzM,IAAhB6oB,GAA6C,OAAhBA,GAAyB/nB,GAAQ+nB,KAChEX,EAAUF,GAAa5B,EAAK77B,EAAM09B,EAAIC,EAASW,SARnDX,EAAUF,GAAa5B,EAAK77B,EAAM09B,EAAIC,EAASU,GAcnDxC,EAAI0C,UAEJ,MAAMC,EAAQd,EAAG12B,OAAS,EAC1B,GAAIw3B,EAAQR,EAAch3B,OAAQ,CAChC,IAAKmP,EAAI,EAAGA,EAAIqoB,EAAOroB,WACdnW,EAAK09B,EAAGvnB,IAEjBunB,EAAGzO,OAAO,EAAGuP,E,CAEf,OAAOb,CACT,CAUO,SAASc,GAAYnH,EAAcoH,EAAen+B,GACvD,MAAM26B,EAAmB5D,EAAMqH,wBACzBC,EAAsB,IAAVr+B,EAAcqQ,KAAK6C,IAAIlT,EAAQ,EAAG,IAAO,EAC3D,OAAOqQ,KAAKC,OAAO6tB,EAAQE,GAAa1D,GAAoBA,EAAmB0D,CACjF,CAKO,SAASC,GAAYC,EAA4BjD,IACjDA,GAAQiD,KAIbjD,EAAMA,GAAOiD,EAAOC,WAAW,MAE/BlD,EAAIsC,OAGJtC,EAAImD,iBACJnD,EAAIoD,UAAU,EAAG,EAAGH,EAAOv+B,MAAOu+B,EAAOI,QACzCrD,EAAI0C,UACN,CASO,SAASY,GACdtD,EACApsB,EACA4H,EACAiR,GAGA8W,GAAgBvD,EAAKpsB,EAAS4H,EAAGiR,EAAG,KACtC,CAGO,SAAS8W,GACdvD,EACApsB,EACA4H,EACAiR,EACArS,GAEA,IAAIrW,EAAcy/B,EAAiBC,EAAiBtwB,EAAcuwB,EAAsBh/B,EAAei/B,EAAkBC,EACzH,MAAM9gC,EAAQ8Q,EAAQiwB,WAChBC,EAAWlwB,EAAQkwB,SACnBC,EAASnwB,EAAQmwB,OACvB,IAAIC,GAAOF,GAAY,GAAKhW,GAE5B,GAAIhrB,GAA0B,kBAAVA,IAClBiB,EAAOjB,EAAM8mB,WACA,8BAAT7lB,GAAiD,+BAATA,GAM1C,OALAi8B,EAAIsC,OACJtC,EAAIiE,UAAUzoB,EAAGiR,GACjBuT,EAAI3kB,OAAO2oB,GACXhE,EAAIkE,UAAUphC,GAAQA,EAAM4B,MAAQ,GAAI5B,EAAMugC,OAAS,EAAGvgC,EAAM4B,MAAO5B,EAAMugC,aAC7ErD,EAAI0C,UAKR,KAAIpT,MAAMyU,IAAWA,GAAU,GAA/B,CAMA,OAFA/D,EAAImE,YAEIrhC,GAEN,QACMsX,EACF4lB,EAAIoE,QAAQ5oB,EAAGiR,EAAGrS,EAAI,EAAG2pB,EAAQ,EAAG,EAAGrW,IAEvCsS,EAAIqE,IAAI7oB,EAAGiR,EAAGsX,EAAQ,EAAGrW,IAE3BsS,EAAIsE,YACJ,MACF,IAAK,WACH5/B,EAAQ0V,EAAIA,EAAI,EAAI2pB,EACpB/D,EAAIuE,OAAO/oB,EAAIzG,KAAK4hB,IAAIqN,GAAOt/B,EAAO+nB,EAAI1X,KAAK6iB,IAAIoM,GAAOD,GAC1DC,GAAO/V,GACP+R,EAAIwE,OAAOhpB,EAAIzG,KAAK4hB,IAAIqN,GAAOt/B,EAAO+nB,EAAI1X,KAAK6iB,IAAIoM,GAAOD,GAC1DC,GAAO/V,GACP+R,EAAIwE,OAAOhpB,EAAIzG,KAAK4hB,IAAIqN,GAAOt/B,EAAO+nB,EAAI1X,KAAK6iB,IAAIoM,GAAOD,GAC1D/D,EAAIsE,YACJ,MACF,IAAK,cAQHZ,EAAwB,KAATK,EACf5wB,EAAO4wB,EAASL,EAChBF,EAAUzuB,KAAK6iB,IAAIoM,EAAMhW,IAAc7a,EACvCwwB,EAAW5uB,KAAK6iB,IAAIoM,EAAMhW,KAAe5T,EAAIA,EAAI,EAAIspB,EAAevwB,GACpEswB,EAAU1uB,KAAK4hB,IAAIqN,EAAMhW,IAAc7a,EACvCywB,EAAW7uB,KAAK4hB,IAAIqN,EAAMhW,KAAe5T,EAAIA,EAAI,EAAIspB,EAAevwB,GACpE6sB,EAAIqE,IAAI7oB,EAAImoB,EAAUlX,EAAIgX,EAASC,EAAcM,EAAMvW,GAAIuW,EAAMjW,IACjEiS,EAAIqE,IAAI7oB,EAAIooB,EAAUnX,EAAI+W,EAASE,EAAcM,EAAMjW,GAASiW,GAChEhE,EAAIqE,IAAI7oB,EAAImoB,EAAUlX,EAAIgX,EAASC,EAAcM,EAAKA,EAAMjW,IAC5DiS,EAAIqE,IAAI7oB,EAAIooB,EAAUnX,EAAI+W,EAASE,EAAcM,EAAMjW,GAASiW,EAAMvW,IACtEuS,EAAIsE,YACJ,MACF,IAAK,OACH,IAAKR,EAAU,CACb3wB,EAAO4B,KAAK0vB,QAAUV,EACtBr/B,EAAQ0V,EAAIA,EAAI,EAAIjH,EACpB6sB,EAAI0E,KAAKlpB,EAAI9W,EAAO+nB,EAAItZ,EAAM,EAAIzO,EAAO,EAAIyO,GAC7C,K,CAEF6wB,GAAOhW,GAET,IAAK,UACH2V,EAAW5uB,KAAK6iB,IAAIoM,IAAQ5pB,EAAIA,EAAI,EAAI2pB,GACxCP,EAAUzuB,KAAK6iB,IAAIoM,GAAOD,EAC1BN,EAAU1uB,KAAK4hB,IAAIqN,GAAOD,EAC1BH,EAAW7uB,KAAK4hB,IAAIqN,IAAQ5pB,EAAIA,EAAI,EAAI2pB,GACxC/D,EAAIuE,OAAO/oB,EAAImoB,EAAUlX,EAAIgX,GAC7BzD,EAAIwE,OAAOhpB,EAAIooB,EAAUnX,EAAI+W,GAC7BxD,EAAIwE,OAAOhpB,EAAImoB,EAAUlX,EAAIgX,GAC7BzD,EAAIwE,OAAOhpB,EAAIooB,EAAUnX,EAAI+W,GAC7BxD,EAAIsE,YACJ,MACF,IAAK,WACHN,GAAOhW,GAET,IAAK,QACH2V,EAAW5uB,KAAK6iB,IAAIoM,IAAQ5pB,EAAIA,EAAI,EAAI2pB,GACxCP,EAAUzuB,KAAK6iB,IAAIoM,GAAOD,EAC1BN,EAAU1uB,KAAK4hB,IAAIqN,GAAOD,EAC1BH,EAAW7uB,KAAK4hB,IAAIqN,IAAQ5pB,EAAIA,EAAI,EAAI2pB,GACxC/D,EAAIuE,OAAO/oB,EAAImoB,EAAUlX,EAAIgX,GAC7BzD,EAAIwE,OAAOhpB,EAAImoB,EAAUlX,EAAIgX,GAC7BzD,EAAIuE,OAAO/oB,EAAIooB,EAAUnX,EAAI+W,GAC7BxD,EAAIwE,OAAOhpB,EAAIooB,EAAUnX,EAAI+W,GAC7B,MACF,IAAK,OACHG,EAAW5uB,KAAK6iB,IAAIoM,IAAQ5pB,EAAIA,EAAI,EAAI2pB,GACxCP,EAAUzuB,KAAK6iB,IAAIoM,GAAOD,EAC1BN,EAAU1uB,KAAK4hB,IAAIqN,GAAOD,EAC1BH,EAAW7uB,KAAK4hB,IAAIqN,IAAQ5pB,EAAIA,EAAI,EAAI2pB,GACxC/D,EAAIuE,OAAO/oB,EAAImoB,EAAUlX,EAAIgX,GAC7BzD,EAAIwE,OAAOhpB,EAAImoB,EAAUlX,EAAIgX,GAC7BzD,EAAIuE,OAAO/oB,EAAIooB,EAAUnX,EAAI+W,GAC7BxD,EAAIwE,OAAOhpB,EAAIooB,EAAUnX,EAAI+W,GAC7BQ,GAAOhW,GACP2V,EAAW5uB,KAAK6iB,IAAIoM,IAAQ5pB,EAAIA,EAAI,EAAI2pB,GACxCP,EAAUzuB,KAAK6iB,IAAIoM,GAAOD,EAC1BN,EAAU1uB,KAAK4hB,IAAIqN,GAAOD,EAC1BH,EAAW7uB,KAAK4hB,IAAIqN,IAAQ5pB,EAAIA,EAAI,EAAI2pB,GACxC/D,EAAIuE,OAAO/oB,EAAImoB,EAAUlX,EAAIgX,GAC7BzD,EAAIwE,OAAOhpB,EAAImoB,EAAUlX,EAAIgX,GAC7BzD,EAAIuE,OAAO/oB,EAAIooB,EAAUnX,EAAI+W,GAC7BxD,EAAIwE,OAAOhpB,EAAIooB,EAAUnX,EAAI+W,GAC7B,MACF,IAAK,OACHA,EAAUppB,EAAIA,EAAI,EAAIrF,KAAK6iB,IAAIoM,GAAOD,EACtCN,EAAU1uB,KAAK4hB,IAAIqN,GAAOD,EAC1B/D,EAAIuE,OAAO/oB,EAAIgoB,EAAS/W,EAAIgX,GAC5BzD,EAAIwE,OAAOhpB,EAAIgoB,EAAS/W,EAAIgX,GAC5B,MACF,IAAK,OACHzD,EAAIuE,OAAO/oB,EAAGiR,GACduT,EAAIwE,OAAOhpB,EAAIzG,KAAK6iB,IAAIoM,IAAQ5pB,EAAIA,EAAI,EAAI2pB,GAAStX,EAAI1X,KAAK4hB,IAAIqN,GAAOD,GACzE,MACF,KAAK,EACH/D,EAAIsE,YACJ,MAGJtE,EAAI2E,OACA/wB,EAAQgxB,YAAc,GACxB5E,EAAI6E,Q,CAER,CASO,SAASC,GACdjP,EACAkP,EACAC,GAIA,OAFAA,EAASA,GAAU,IAEXD,GAASlP,GAASA,EAAMra,EAAIupB,EAAKxQ,KAAOyQ,GAAUnP,EAAMra,EAAIupB,EAAKvQ,MAAQwQ,GACjFnP,EAAMpJ,EAAIsY,EAAK1K,IAAM2K,GAAUnP,EAAMpJ,EAAIsY,EAAKzK,OAAS0K,CACzD,CAEO,SAASC,GAASjF,EAA+B+E,GACtD/E,EAAIsC,OACJtC,EAAImE,YACJnE,EAAI0E,KAAKK,EAAKxQ,KAAMwQ,EAAK1K,IAAK0K,EAAKvQ,MAAQuQ,EAAKxQ,KAAMwQ,EAAKzK,OAASyK,EAAK1K,KACzE2F,EAAIpD,MACN,CAEO,SAASsI,GAAWlF,GACzBA,EAAI0C,SACN,CAKO,SAASyC,GACdnF,EACAoF,EACA3Z,EACA4Z,EACAhF,GAEA,IAAK+E,EACH,OAAOpF,EAAIwE,OAAO/Y,EAAOjQ,EAAGiQ,EAAOgB,GAErC,GAAa,WAAT4T,EAAmB,CACrB,MAAMiF,GAAYF,EAAS5pB,EAAIiQ,EAAOjQ,GAAK,EAC3CwkB,EAAIwE,OAAOc,EAAUF,EAAS3Y,GAC9BuT,EAAIwE,OAAOc,EAAU7Z,EAAOgB,EAC9B,KAAoB,UAAT4T,MAAuBgF,EAChCrF,EAAIwE,OAAOY,EAAS5pB,EAAGiQ,EAAOgB,GAE9BuT,EAAIwE,OAAO/Y,EAAOjQ,EAAG4pB,EAAS3Y,GAEhCuT,EAAIwE,OAAO/Y,EAAOjQ,EAAGiQ,EAAOgB,EAC9B,CAKO,SAAS8Y,GACdvF,EACAoF,EACA3Z,EACA4Z,GAEA,IAAKD,EACH,OAAOpF,EAAIwE,OAAO/Y,EAAOjQ,EAAGiQ,EAAOgB,GAErCuT,EAAIwF,cACFH,EAAOD,EAASK,KAAOL,EAASM,KAChCL,EAAOD,EAASO,KAAOP,EAASQ,KAChCP,EAAO5Z,EAAOia,KAAOja,EAAOga,KAC5BJ,EAAO5Z,EAAOma,KAAOna,EAAOka,KAC5Bla,EAAOjQ,EACPiQ,EAAOgB,EACX,CAEA,SAASoZ,GAAc7F,EAA+B8F,GAChDA,EAAKC,aACP/F,EAAIiE,UAAU6B,EAAKC,YAAY,GAAID,EAAKC,YAAY,IAGjDrc,GAAcoc,EAAKhC,WACtB9D,EAAI3kB,OAAOyqB,EAAKhC,UAGdgC,EAAKtd,QACPwX,EAAIgG,UAAYF,EAAKtd,OAGnBsd,EAAKG,YACPjG,EAAIiG,UAAYH,EAAKG,WAGnBH,EAAKI,eACPlG,EAAIkG,aAAeJ,EAAKI,aAE5B,CAEA,SAASC,GACPnG,EACAxkB,EACAiR,EACA2Z,EACAN,GAEA,GAAIA,EAAKO,eAAiBP,EAAKQ,UAAW,CAQxC,MAAMC,EAAUvG,EAAIiC,YAAYmE,GAC1B7R,EAAO/Y,EAAI+qB,EAAQC,sBACnBhS,EAAQhZ,EAAI+qB,EAAQE,uBACpBpM,EAAM5N,EAAI8Z,EAAQG,wBAClBpM,EAAS7N,EAAI8Z,EAAQI,yBACrBC,EAAcd,EAAKO,eAAiBhM,EAAMC,GAAU,EAAIA,EAE9D0F,EAAI6G,YAAc7G,EAAIgG,UACtBhG,EAAImE,YACJnE,EAAIjD,UAAY+I,EAAKgB,iBAAmB,EACxC9G,EAAIuE,OAAOhQ,EAAMqS,GACjB5G,EAAIwE,OAAOhQ,EAAOoS,GAClB5G,EAAI6E,Q,CAER,CAEA,SAASkC,GAAa/G,EAA+B8F,GACnD,MAAMkB,EAAWhH,EAAIgG,UAErBhG,EAAIgG,UAAYF,EAAKtd,MACrBwX,EAAIiH,SAASnB,EAAKvR,KAAMuR,EAAKzL,IAAKyL,EAAKphC,MAAOohC,EAAKzC,QACnDrD,EAAIgG,UAAYgB,CAClB,CAKO,SAASE,GACdlH,EACAxC,EACAhiB,EACAiR,EACAkT,EACAmG,EAAuB,IAEvB,MAAMqB,EAAQzsB,GAAQ8iB,GAAQA,EAAO,CAACA,GAChCqH,EAASiB,EAAKsB,YAAc,GAA0B,KAArBtB,EAAKuB,YAC5C,IAAI/sB,EAAW8rB,EAMf,IAJApG,EAAIsC,OACJtC,EAAIL,KAAOA,EAAKoC,OAChB8D,GAAc7F,EAAK8F,GAEdxrB,EAAI,EAAGA,EAAI6sB,EAAMh8B,SAAUmP,EAC9B8rB,EAAOe,EAAM7sB,GAETwrB,EAAKwB,UACPP,GAAa/G,EAAK8F,EAAKwB,UAGrBzC,IACEiB,EAAKuB,cACPrH,EAAI6G,YAAcf,EAAKuB,aAGpB3d,GAAcoc,EAAKsB,eACtBpH,EAAIjD,UAAY+I,EAAKsB,aAGvBpH,EAAIuH,WAAWnB,EAAM5qB,EAAGiR,EAAGqZ,EAAK0B,WAGlCxH,EAAIyH,SAASrB,EAAM5qB,EAAGiR,EAAGqZ,EAAK0B,UAC9BrB,GAAanG,EAAKxkB,EAAGiR,EAAG2Z,EAAMN,GAE9BrZ,GAAKxiB,OAAO01B,EAAKE,YAGnBG,EAAI0C,SACN,CAOO,SAASgF,GACd1H,EACA0E,GAEA,MAAM,EAAClpB,EAAC,EAAEiR,EAAC,EAAErS,EAAC,EAAEzC,EAAC,OAAEosB,GAAUW,EAG7B1E,EAAIqE,IAAI7oB,EAAIuoB,EAAO4D,QAASlb,EAAIsX,EAAO4D,QAAS5D,EAAO4D,QAAS,IAAMla,GAAIA,IAAI,GAG9EuS,EAAIwE,OAAOhpB,EAAGiR,EAAI9U,EAAIosB,EAAO6D,YAG7B5H,EAAIqE,IAAI7oB,EAAIuoB,EAAO6D,WAAYnb,EAAI9U,EAAIosB,EAAO6D,WAAY7D,EAAO6D,WAAYna,GAAIM,IAAS,GAG1FiS,EAAIwE,OAAOhpB,EAAIpB,EAAI2pB,EAAO8D,YAAapb,EAAI9U,GAG3CqoB,EAAIqE,IAAI7oB,EAAIpB,EAAI2pB,EAAO8D,YAAapb,EAAI9U,EAAIosB,EAAO8D,YAAa9D,EAAO8D,YAAa9Z,GAAS,GAAG,GAGhGiS,EAAIwE,OAAOhpB,EAAIpB,EAAGqS,EAAIsX,EAAO+D,UAG7B9H,EAAIqE,IAAI7oB,EAAIpB,EAAI2pB,EAAO+D,SAAUrb,EAAIsX,EAAO+D,SAAU/D,EAAO+D,SAAU,GAAI/Z,IAAS,GAGpFiS,EAAIwE,OAAOhpB,EAAIuoB,EAAO4D,QAASlb,EACjC,CCxgBA,MAAMsb,GAAc,uCACdC,GAAa,wEAcZ,SAASC,GAAa1+B,EAAwB4J,GACnD,MAAM+0B,GAAW,GAAK3+B,GAAOQ,MAAMg+B,IACnC,IAAKG,GAA0B,WAAfA,EAAQ,GACtB,OAAc,IAAP/0B,EAKT,OAFA5J,GAAS2+B,EAAQ,GAETA,EAAQ,IACd,IAAK,KACH,OAAO3+B,EACT,IAAK,IACHA,GAAS,IACT,MAKJ,OAAO4J,EAAO5J,CAChB,CAEA,MAAM4+B,GAAgB3wB,IAAgBA,GAAK,EAQpC,SAAS4wB,GAAkB7+B,EAAwCzF,GACxE,MAAM0V,EAAM,CAAC,EACP6uB,EAAWte,GAASjmB,GACpBiQ,EAAOs0B,EAAWv0B,OAAOC,KAAKjQ,GAASA,EACvCwkC,EAAOve,GAASxgB,GAClB8+B,EACEE,GAAQne,GAAe7gB,EAAMg/B,GAAOh/B,EAAMzF,EAAMykC,KAChDA,GAAQh/B,EAAMg/B,GAChB,IAAMh/B,EAEV,IAAK,MAAMg/B,KAAQx0B,EACjByF,EAAI+uB,GAAQJ,GAAaG,EAAKC,IAEhC,OAAO/uB,CACT,CAUO,SAASgvB,GAAOj/B,GACrB,OAAO6+B,GAAkB7+B,EAAO,CAAC8wB,IAAK,IAAK7F,MAAO,IAAK8F,OAAQ,IAAK/F,KAAM,KAC5E,CASO,SAASkU,GAAcl/B,GAC5B,OAAO6+B,GAAkB7+B,EAAO,CAAC,UAAW,WAAY,aAAc,eACxE,CAUO,SAASm/B,GAAUn/B,GACxB,MAAM+e,EAAMkgB,GAAOj/B,GAKnB,OAHA+e,EAAI5jB,MAAQ4jB,EAAIiM,KAAOjM,EAAIkM,MAC3BlM,EAAI+a,OAAS/a,EAAI+R,IAAM/R,EAAIgS,OAEpBhS,CACT,CAUO,SAASqgB,GAAO/0B,EAA4Bg1B,GACjDh1B,EAAUA,GAAW,CAAC,EACtBg1B,EAAWA,GAAYzP,GAASwG,KAEhC,IAAIxsB,EAAOiX,GAAexW,EAAQT,KAAMy1B,EAASz1B,MAE7B,kBAATA,IACTA,EAAOsT,SAAStT,EAAM,KAExB,IAAIrQ,EAAQsnB,GAAexW,EAAQ9Q,MAAO8lC,EAAS9lC,OAC/CA,KAAW,GAAKA,GAAOiH,MAAMi+B,MAC/Ba,QAAQC,KAAK,kCAAoChmC,EAAQ,KACzDA,OAAQ8W,GAGV,MAAM+lB,EAAO,CACXC,OAAQxV,GAAexW,EAAQgsB,OAAQgJ,EAAShJ,QAChDC,WAAYoI,GAAa7d,GAAexW,EAAQisB,WAAY+I,EAAS/I,YAAa1sB,GAClFA,OACArQ,QACA2lB,OAAQ2B,GAAexW,EAAQ6U,OAAQmgB,EAASngB,QAChDsZ,OAAQ,IAIV,OADApC,EAAKoC,OAASJ,GAAahC,GACpBA,CACT,CAaO,SAASoJ,GAAQC,EAAwB1J,EAAkBn8B,EAAgB8lC,GAChF,IACI3uB,EAAW8Q,EAAc7hB,EADzB2/B,GAAY,EAGhB,IAAK5uB,EAAI,EAAG8Q,EAAO4d,EAAO79B,OAAQmP,EAAI8Q,IAAQ9Q,EAE5C,GADA/Q,EAAQy/B,EAAO1uB,QACDV,IAAVrQ,SAGYqQ,IAAZ0lB,GAA0C,oBAAV/1B,IAClCA,EAAQA,EAAM+1B,GACd4J,GAAY,QAEAtvB,IAAVzW,GAAuBuX,GAAQnR,KACjCA,EAAQA,EAAMpG,EAAQoG,EAAM4B,QAC5B+9B,GAAY,QAEAtvB,IAAVrQ,GAIF,OAHI0/B,IAASC,IACXD,EAAKC,WAAY,GAEZ3/B,CAGb,CAQO,SAAS4/B,GAAUC,EAAuCvM,EAAwBH,GACvF,MAAM,IAAC7kB,EAAA,IAAKD,GAAOwxB,EACbC,EAAS5e,GAAYoS,GAAQjlB,EAAMC,GAAO,GAC1CyxB,EAAWA,CAAC//B,EAAexD,IAAgB22B,GAAyB,IAAVnzB,EAAc,EAAIA,EAAQxD,EAC1F,MAAO,CACL8R,IAAKyxB,EAASzxB,GAAM9C,KAAKuZ,IAAI+a,IAC7BzxB,IAAK0xB,EAAS1xB,EAAKyxB,GAEvB,CAUO,SAASE,GAAcC,EAAuBlK,GACnD,OAAOxrB,OAAO8T,OAAO9T,OAAO4X,OAAO8d,GAAgBlK,EACrD,CCnLO,SAASmK,GAIdC,EACAC,EAAW,CAAC,IACZC,EACAhB,EACAiB,EAAYA,IAAMH,EAAO,IAEzB,MAAMI,EAAkBF,GAAcF,EACd,qBAAbd,IACTA,EAAWmB,GAAS,YAAaL,IAEnC,MAAMtH,EAA6B,CACjC,CAACjT,OAAO6a,aAAc,SACtBC,YAAY,EACZC,QAASR,EACTS,YAAaL,EACbvQ,UAAWqP,EACXwB,WAAYP,EACZ5I,SAAWnC,GAAqB2K,GAAgB,CAAC3K,KAAU4K,GAASC,EAAUG,EAAiBlB,IAEjG,OAAO,IAAIyB,MAAMjI,EAAO,CAItBkI,cAAAA,CAAe7e,EAAQ8c,GAIrB,cAHO9c,EAAO8c,UACP9c,EAAO8e,aACPb,EAAO,GAAGnB,IACV,CACT,EAKAxN,GAAAA,CAAItP,EAAQ8c,GACV,OAAOiC,GAAQ/e,EAAQ8c,EACrB,IAAMkC,GAAqBlC,EAAMoB,EAAUD,EAAQje,GACvD,EAMAif,wBAAAA,CAAyBjf,EAAQ8c,GAC/B,OAAOoC,QAAQD,yBAAyBjf,EAAOye,QAAQ,GAAI3B,EAC7D,EAKAqC,cAAAA,GACE,OAAOD,QAAQC,eAAelB,EAAO,GACvC,EAKAnc,GAAAA,CAAI9B,EAAQ8c,GACV,OAAOsC,GAAqBpf,GAAQ4Q,SAASkM,EAC/C,EAKAuC,OAAAA,CAAQrf,GACN,OAAOof,GAAqBpf,EAC9B,EAKA8H,GAAAA,CAAI9H,EAAQ8c,EAAch/B,GACxB,MAAMwhC,EAAUtf,EAAOuf,WAAavf,EAAOuf,SAAWnB,KAGtD,OAFApe,EAAO8c,GAAQwC,EAAQxC,GAAQh/B,SACxBkiB,EAAO8e,OACP,CACT,GAEJ,CAUO,SAASU,GAIdC,EACA5L,EACA6L,EACAC,GAEA,MAAMhJ,EAA4B,CAChC6H,YAAY,EACZoB,OAAQH,EACRI,SAAUhM,EACViM,UAAWJ,EACXK,OAAQ,IAAIhY,IACZwL,aAAcA,GAAakM,EAAOE,GAClCK,WAAazL,GAAmBiL,GAAeC,EAAOlL,EAAKmL,EAAUC,GACrEnK,SAAWnC,GAAqBmM,GAAeC,EAAMjK,SAASnC,GAAQQ,EAAS6L,EAAUC,IAE3F,OAAO,IAAIf,MAAMjI,EAAO,CAItBkI,cAAAA,CAAe7e,EAAQ8c,GAGrB,cAFO9c,EAAO8c,UACP2C,EAAM3C,IACN,CACT,EAKAxN,GAAAA,CAAItP,EAAQ8c,EAAcmD,GACxB,OAAOlB,GAAQ/e,EAAQ8c,EACrB,IAAMoD,GAAoBlgB,EAAQ8c,EAAMmD,GAC5C,EAMAhB,wBAAAA,CAAyBjf,EAAQ8c,GAC/B,OAAO9c,EAAOuT,aAAa4M,QACvBjB,QAAQpd,IAAI2d,EAAO3C,GAAQ,CAAC3V,YAAY,EAAMD,cAAc,QAAQ/Y,EACpE+wB,QAAQD,yBAAyBQ,EAAO3C,EAC9C,EAKAqC,cAAAA,GACE,OAAOD,QAAQC,eAAeM,EAChC,EAKA3d,GAAAA,CAAI9B,EAAQ8c,GACV,OAAOoC,QAAQpd,IAAI2d,EAAO3C,EAC5B,EAKAuC,OAAAA,GACE,OAAOH,QAAQG,QAAQI,EACzB,EAKA3X,GAAAA,CAAI9H,EAAQ8c,EAAMh/B,GAGhB,OAFA2hC,EAAM3C,GAAQh/B,SACPkiB,EAAO8c,IACP,CACT,GAEJ,CAKO,SAASvJ,GACdkM,EACA/R,EAA+B,CAAC0S,YAAY,EAAMC,WAAW,IAE7D,MAAM,YAACrS,EAAcN,EAAS0S,WAAU,WAAErS,EAAaL,EAAS2S,UAAS,SAAEC,EAAW5S,EAASyS,SAAWV,EAC1G,MAAO,CACLU,QAASG,EACTF,WAAYpS,EACZqS,UAAWtS,EACXwS,aAAc3e,GAAWoM,GAAeA,EAAc,IAAMA,EAC5DwS,YAAa5e,GAAWmM,GAAcA,EAAa,IAAMA,EAE7D,CAEA,MAAM0S,GAAUA,CAACC,EAAgBtoC,IAAiBsoC,EAASA,EAASjf,GAAYrpB,GAAQA,EAClFuoC,GAAmBA,CAAC7D,EAAch/B,IAAmBwgB,GAASxgB,IAAmB,aAATg/B,IAC1C,OAAjCz0B,OAAO82B,eAAerhC,IAAmBA,EAAM2e,cAAgBpU,QAElE,SAAS02B,GACP/e,EACA8c,EACAQ,GAEA,GAAIj1B,OAAO6V,UAAU2C,eAAezC,KAAK4B,EAAQ8c,IAAkB,gBAATA,EACxD,OAAO9c,EAAO8c,GAGhB,MAAMh/B,EAAQw/B,IAGd,OADAtd,EAAO8c,GAAQh/B,EACRA,CACT,CAEA,SAASoiC,GACPlgB,EACA8c,EACAmD,GAEA,MAAM,OAACL,EAAM,SAAEC,EAAQ,UAAEC,EAAWvM,aAAcN,GAAejT,EACjE,IAAIliB,EAAQ8hC,EAAO9C,GAanB,OAVIlb,GAAW9jB,IAAUm1B,EAAYsN,aAAazD,KAChDh/B,EAAQ8iC,GAAmB9D,EAAMh/B,EAAOkiB,EAAQigB,IAE9ChxB,GAAQnR,IAAUA,EAAM4B,SAC1B5B,EAAQ+iC,GAAc/D,EAAMh/B,EAAOkiB,EAAQiT,EAAYuN,cAErDG,GAAiB7D,EAAMh/B,KAEzBA,EAAQ0hC,GAAe1hC,EAAO+hC,EAAUC,GAAaA,EAAUhD,GAAO7J,IAEjEn1B,CACT,CAEA,SAAS8iC,GACP9D,EACAgE,EACA9gB,EACAigB,GAEA,MAAM,OAACL,EAAA,SAAQC,EAAA,UAAUC,EAAS,OAAEC,GAAU/f,EAC9C,GAAI+f,EAAOje,IAAIgb,GACb,MAAM,IAAIiE,MAAM,uBAAyBhiC,MAAMU,KAAKsgC,GAAQiB,KAAK,MAAQ,KAAOlE,GAElFiD,EAAOzlC,IAAIwiC,GACX,IAAIh/B,EAAQgjC,EAASjB,EAAUC,GAAaG,GAM5C,OALAF,EAAOkB,OAAOnE,GACV6D,GAAiB7D,EAAMh/B,KAEzBA,EAAQojC,GAAkBtB,EAAOnB,QAASmB,EAAQ9C,EAAMh/B,IAEnDA,CACT,CAEA,SAAS+iC,GACP/D,EACAh/B,EACAkiB,EACAwgB,GAEA,MAAM,OAACZ,EAAM,SAAEC,EAAQ,UAAEC,EAAWvM,aAAcN,GAAejT,EAEjE,GAA8B,qBAAnB6f,EAASnoC,OAAyB8oC,EAAY1D,GACvD,OAAOh/B,EAAM+hC,EAASnoC,MAAQoG,EAAM4B,QAC/B,GAAI4e,GAASxgB,EAAM,IAAK,CAE7B,MAAMqjC,EAAMrjC,EACNmgC,EAAS2B,EAAOnB,QAAQ2C,OAAO9yB,GAAKA,IAAM6yB,GAChDrjC,EAAQ,GACR,IAAK,MAAMtG,KAAQ2pC,EAAK,CACtB,MAAM3f,EAAW0f,GAAkBjD,EAAQ2B,EAAQ9C,EAAMtlC,GACzDsG,EAAMujB,KAAKme,GAAehe,EAAUqe,EAAUC,GAAaA,EAAUhD,GAAO7J,GAC9E,C,CAEF,OAAOn1B,CACT,CAEA,SAASujC,GACPlE,EACAL,EACAh/B,GAEA,OAAO8jB,GAAWub,GAAYA,EAASL,EAAMh/B,GAASq/B,CACxD,CAEA,MAAMmE,GAAWA,CAAC7pC,EAAwB8pC,KAA8B,IAAR9pC,EAAe8pC,EAC5D,kBAAR9pC,EAAmB8pB,GAAiBggB,EAAQ9pC,QAAO0W,EAE9D,SAASqzB,GACP1Z,EACA2Z,EACAhqC,EACAiqC,EACA5jC,GAEA,IAAK,MAAMyjC,KAAUE,EAAc,CACjC,MAAMpO,EAAQiO,GAAS7pC,EAAK8pC,GAC5B,GAAIlO,EAAO,CACTvL,EAAIxtB,IAAI+4B,GACR,MAAM8J,EAAWkE,GAAgBhO,EAAMvF,UAAWr2B,EAAKqG,GACvD,GAAwB,qBAAbq/B,GAA4BA,IAAa1lC,GAAO0lC,IAAauE,EAGtE,OAAOvE,C,MAEJ,IAAc,IAAV9J,GAA6C,qBAAnBqO,GAAkCjqC,IAAQiqC,EAG7E,OAAO,IAEX,CACA,OAAO,CACT,CAEA,SAASR,GACPO,EACAjgB,EACAsb,EACAh/B,GAEA,MAAMqgC,EAAa3c,EAASkd,YACtBvB,EAAWkE,GAAgB7f,EAASsM,UAAWgP,EAAMh/B,GACrD6jC,EAAY,IAAIF,KAAiBtD,GACjCrW,EAAM,IAAIC,IAChBD,EAAIxtB,IAAIwD,GACR,IAAIrG,EAAMmqC,GAAiB9Z,EAAK6Z,EAAW7E,EAAMK,GAAYL,EAAMh/B,GACnE,OAAY,OAARrG,KAGoB,qBAAb0lC,GAA4BA,IAAaL,IAClDrlC,EAAMmqC,GAAiB9Z,EAAK6Z,EAAWxE,EAAU1lC,EAAKqG,GAC1C,OAARrG,KAICumC,GAAgBj/B,MAAMU,KAAKqoB,GAAM,CAAC,IAAKqW,EAAYhB,EACxD,IAAM0E,GAAargB,EAAUsb,EAAgBh/B,IACjD,CAEA,SAAS8jC,GACP9Z,EACA6Z,EACAlqC,EACA0lC,EACA3lC,GAEA,MAAOC,EACLA,EAAM+pC,GAAU1Z,EAAK6Z,EAAWlqC,EAAK0lC,EAAU3lC,GAEjD,OAAOC,CACT,CAEA,SAASoqC,GACPrgB,EACAsb,EACAh/B,GAEA,MAAMyjC,EAAS/f,EAASmd,aAClB7B,KAAQyE,IACZA,EAAOzE,GAAQ,CAAC,GAElB,MAAM9c,EAASuhB,EAAOzE,GACtB,OAAI7tB,GAAQ+Q,IAAW1B,GAASxgB,GAEvBA,EAEFkiB,GAAU,CAAC,CACpB,CAEA,SAASgf,GACPlC,EACAoB,EACAD,EACAwB,GAEA,IAAI3hC,EACJ,IAAK,MAAM4iC,KAAUxC,EAEnB,GADApgC,EAAQwgC,GAASmC,GAAQC,EAAQ5D,GAAOmB,GACnB,qBAAVngC,EACT,OAAO6iC,GAAiB7D,EAAMh/B,GAC1BojC,GAAkBjD,EAAQwB,EAAO3C,EAAMh/B,GACvCA,CAGV,CAEA,SAASwgC,GAAS7mC,EAAawmC,GAC7B,IAAK,MAAM5K,KAAS4K,EAAQ,CAC1B,IAAK5K,EACH,SAEF,MAAMv1B,EAAQu1B,EAAM57B,GACpB,GAAqB,qBAAVqG,EACT,OAAOA,CAEX,CACF,CAEA,SAASshC,GAAqBpf,GAC5B,IAAI1X,EAAO0X,EAAO8e,MAIlB,OAHKx2B,IACHA,EAAO0X,EAAO8e,MAAQgD,GAAyB9hB,EAAOye,UAEjDn2B,CACT,CAEA,SAASw5B,GAAyB7D,GAChC,MAAMnW,EAAM,IAAIC,IAChB,IAAK,MAAMsL,KAAS4K,EAClB,IAAK,MAAMxmC,KAAO4Q,OAAOC,KAAK+qB,GAAO+N,OAAO5yB,IAAMA,EAAEukB,WAAW,MAC7DjL,EAAIxtB,IAAI7C,GAGZ,OAAOsH,MAAMU,KAAKqoB,EACpB,CAEO,SAASia,GACd5Y,EACAzwB,EACA4G,EACAoJ,GAEA,MAAM,OAAC8gB,GAAUL,GACX,IAAC1xB,EAAM,KAAOuB,KAAKgpC,SACnBC,EAAS,IAAIljC,MAAoB2J,GACvC,IAAImG,EAAW8Q,EAAcjoB,EAAeF,EAE5C,IAAKqX,EAAI,EAAG8Q,EAAOjX,EAAOmG,EAAI8Q,IAAQ9Q,EACpCnX,EAAQmX,EAAIvP,EACZ9H,EAAOkB,EAAKhB,GACZuqC,EAAOpzB,GAAK,CACVlB,EAAG6b,EAAO0Y,MAAM3gB,GAAiB/pB,EAAMC,GAAMC,IAGjD,OAAOuqC,CACT,CClcA,MAAME,GAAU3jC,OAAO2jC,SAAW,MAG5BC,GAAWA,CAAChZ,EAAuBva,IAAmCA,EAAIua,EAAO1pB,SAAW0pB,EAAOva,GAAGwzB,MAAQjZ,EAAOva,GACrHyzB,GAAgB5N,GAAuC,MAAdA,EAAoB,IAAM,IAElE,SAAS6N,GACdC,EACAC,EACAC,EACA7mB,GAUA,MAAM8d,EAAW6I,EAAWH,KAAOI,EAAcD,EAC3C94B,EAAU+4B,EACVE,EAAOD,EAAWL,KAAOI,EAAcC,EACvCE,EAAM3d,GAAsBvb,EAASiwB,GACrCkJ,EAAM5d,GAAsB0d,EAAMj5B,GAExC,IAAIo5B,EAAMF,GAAOA,EAAMC,GACnBE,EAAMF,GAAOD,EAAMC,GAGvBC,EAAMjf,MAAMif,GAAO,EAAIA,EACvBC,EAAMlf,MAAMkf,GAAO,EAAIA,EAEvB,MAAMC,EAAKnnB,EAAIinB,EACTG,EAAKpnB,EAAIknB,EAEf,MAAO,CACLpJ,SAAU,CACR5pB,EAAGrG,EAAQqG,EAAIizB,GAAML,EAAK5yB,EAAI4pB,EAAS5pB,GACvCiR,EAAGtX,EAAQsX,EAAIgiB,GAAML,EAAK3hB,EAAI2Y,EAAS3Y,IAEzC2hB,KAAM,CACJ5yB,EAAGrG,EAAQqG,EAAIkzB,GAAMN,EAAK5yB,EAAI4pB,EAAS5pB,GACvCiR,EAAGtX,EAAQsX,EAAIiiB,GAAMN,EAAK3hB,EAAI2Y,EAAS3Y,IAG7C,CAKA,SAASkiB,GAAe9Z,EAAuB+Z,EAAkBC,GAC/D,MAAMC,EAAYja,EAAO1pB,OAEzB,IAAI4jC,EAAgBC,EAAeC,EAAcC,EAA0BC,EACvEC,EAAavB,GAAShZ,EAAQ,GAClC,IAAK,IAAIva,EAAI,EAAGA,EAAIw0B,EAAY,IAAKx0B,EACnC60B,EAAeC,EACfA,EAAavB,GAAShZ,EAAQva,EAAI,GAC7B60B,GAAiBC,IAIlBhhB,GAAawgB,EAAOt0B,GAAI,EAAGszB,IAC7BiB,EAAGv0B,GAAKu0B,EAAGv0B,EAAI,GAAK,GAItBy0B,EAASF,EAAGv0B,GAAKs0B,EAAOt0B,GACxB00B,EAAQH,EAAGv0B,EAAI,GAAKs0B,EAAOt0B,GAC3B40B,EAAmBn6B,KAAKmS,IAAI6nB,EAAQ,GAAKh6B,KAAKmS,IAAI8nB,EAAO,GACrDE,GAAoB,IAIxBD,EAAO,EAAIl6B,KAAKga,KAAKmgB,GACrBL,EAAGv0B,GAAKy0B,EAASE,EAAOL,EAAOt0B,GAC/Bu0B,EAAGv0B,EAAI,GAAK00B,EAAQC,EAAOL,EAAOt0B,KAEtC,CAEA,SAAS+0B,GAAgBxa,EAAuBga,EAAc1O,EAAuB,KACnF,MAAMmP,EAAYvB,GAAa5N,GACzB2O,EAAYja,EAAO1pB,OACzB,IAAIwwB,EAAe4T,EAAkCJ,EACjDC,EAAavB,GAAShZ,EAAQ,GAElC,IAAK,IAAIva,EAAI,EAAGA,EAAIw0B,IAAax0B,EAAG,CAIlC,GAHAi1B,EAAcJ,EACdA,EAAeC,EACfA,EAAavB,GAAShZ,EAAQva,EAAI,IAC7B60B,EACH,SAGF,MAAMK,EAASL,EAAahP,GACtBsP,EAASN,EAAaG,GACxBC,IACF5T,GAAS6T,EAASD,EAAYpP,IAAc,EAC5CgP,EAAa,MAAMhP,KAAeqP,EAAS7T,EAC3CwT,EAAa,MAAMG,KAAeG,EAAS9T,EAAQkT,EAAGv0B,IAEpD80B,IACFzT,GAASyT,EAAWjP,GAAaqP,GAAU,EAC3CL,EAAa,MAAMhP,KAAeqP,EAAS7T,EAC3CwT,EAAa,MAAMG,KAAeG,EAAS9T,EAAQkT,EAAGv0B,GAE1D,CACF,CAQO,SAASo1B,GAAoB7a,EAAuBsL,EAAuB,KAChF,MAAMmP,EAAYvB,GAAa5N,GACzB2O,EAAYja,EAAO1pB,OACnByjC,EAAmBpkC,MAAMskC,GAAWnK,KAAK,GACzCkK,EAAerkC,MAAMskC,GAG3B,IAAIx0B,EAAGi1B,EAAkCJ,EACrCC,EAAavB,GAAShZ,EAAQ,GAElC,IAAKva,EAAI,EAAGA,EAAIw0B,IAAax0B,EAI3B,GAHAi1B,EAAcJ,EACdA,EAAeC,EACfA,EAAavB,GAAShZ,EAAQva,EAAI,GAC7B60B,EAAL,CAIA,GAAIC,EAAY,CACd,MAAMO,EAAaP,EAAWjP,GAAagP,EAAahP,GAGxDyO,EAAOt0B,GAAoB,IAAfq1B,GAAoBP,EAAWE,GAAaH,EAAaG,IAAcK,EAAa,C,CAElGd,EAAGv0B,GAAMi1B,EACJH,EACEjhB,GAAKygB,EAAOt0B,EAAI,MAAQ6T,GAAKygB,EAAOt0B,IAAO,GACzCs0B,EAAOt0B,EAAI,GAAKs0B,EAAOt0B,IAAM,EAFpBs0B,EAAOt0B,EAAI,GADNs0B,EAAOt0B,E,CAMhCq0B,GAAe9Z,EAAQ+Z,EAAQC,GAE/BQ,GAAgBxa,EAAQga,EAAI1O,EAC9B,CAEA,SAASyP,GAAgBC,EAAYh4B,EAAaD,GAChD,OAAO7C,KAAK6C,IAAI7C,KAAK8C,IAAIg4B,EAAIj4B,GAAMC,EACrC,CAEA,SAASi4B,GAAgBjb,EAAuBkQ,GAC9C,IAAIzqB,EAAG8Q,EAAMyK,EAAOka,EAAQC,EACxBC,EAAanL,GAAejQ,EAAO,GAAIkQ,GAC3C,IAAKzqB,EAAI,EAAG8Q,EAAOyJ,EAAO1pB,OAAQmP,EAAI8Q,IAAQ9Q,EAC5C01B,EAAaD,EACbA,EAASE,EACTA,EAAa31B,EAAI8Q,EAAO,GAAK0Z,GAAejQ,EAAOva,EAAI,GAAIyqB,GACtDgL,IAGLla,EAAQhB,EAAOva,GACX01B,IACFna,EAAM4P,KAAOmK,GAAgB/Z,EAAM4P,KAAMV,EAAKxQ,KAAMwQ,EAAKvQ,OACzDqB,EAAM8P,KAAOiK,GAAgB/Z,EAAM8P,KAAMZ,EAAK1K,IAAK0K,EAAKzK,SAEtD2V,IACFpa,EAAM6P,KAAOkK,GAAgB/Z,EAAM6P,KAAMX,EAAKxQ,KAAMwQ,EAAKvQ,OACzDqB,EAAM+P,KAAOgK,GAAgB/Z,EAAM+P,KAAMb,EAAK1K,IAAK0K,EAAKzK,SAG9D,CAKO,SAAS4V,GACdrb,EACAjhB,EACAmxB,EACA5tB,EACAgpB,GAEA,IAAI7lB,EAAW8Q,EAAcyK,EAAoBsa,EAOjD,GAJIv8B,EAAQwhB,WACVP,EAASA,EAAOgY,OAAQgD,IAAQA,EAAG/B,OAGE,aAAnCl6B,EAAQw8B,uBACVV,GAAoB7a,EAAQsL,OACvB,CACL,IAAIkQ,EAAOl5B,EAAO0d,EAAOA,EAAO1pB,OAAS,GAAK0pB,EAAO,GACrD,IAAKva,EAAI,EAAG8Q,EAAOyJ,EAAO1pB,OAAQmP,EAAI8Q,IAAQ9Q,EAC5Cub,EAAQhB,EAAOva,GACf61B,EAAgBnC,GACdqC,EACAxa,EACAhB,EAAO9f,KAAK8C,IAAIyC,EAAI,EAAG8Q,GAAQjU,EAAO,EAAI,IAAMiU,GAChDxX,EAAQ08B,SAEVza,EAAM4P,KAAO0K,EAAc/K,SAAS5pB,EACpCqa,EAAM8P,KAAOwK,EAAc/K,SAAS3Y,EACpCoJ,EAAM6P,KAAOyK,EAAc/B,KAAK5yB,EAChCqa,EAAM+P,KAAOuK,EAAc/B,KAAK3hB,EAChC4jB,EAAOxa,C,CAIPjiB,EAAQk8B,iBACVA,GAAgBjb,EAAQkQ,EAE5B,CCtNO,SAASwL,KACd,MAAyB,qBAAXhsC,QAA8C,qBAAbisC,QACjD,CAKO,SAASC,GAAeC,GAC7B,IAAI1D,EAAS0D,EAAQC,WAIrB,OAHI3D,GAAgC,wBAAtBA,EAAOpjB,aACnBojB,EAAUA,EAAsB4D,MAE3B5D,CACT,CAOA,SAAS6D,GAAcC,EAA6BlS,EAAmBmS,GACrE,IAAIC,EAYJ,MAX0B,kBAAfF,GACTE,EAAgBvqB,SAASqqB,EAAY,KAEJ,IAA7BA,EAAWjlB,QAAQ,OAErBmlB,EAAgBA,EAAiB,IAAOpS,EAAK+R,WAAWI,KAG1DC,EAAgBF,EAGXE,CACT,CAEA,MAAMC,GAAoBC,GACxBA,EAAQC,cAAcC,YAAYH,iBAAiBC,EAAS,MAEvD,SAASG,GAASnsC,EAAiByqB,GACxC,OAAOshB,GAAiB/rC,GAAIosC,iBAAiB3hB,EAC/C,CAEA,MAAM4hB,GAAY,CAAC,MAAO,QAAS,SAAU,QAC7C,SAASC,GAAmBC,EAA6B3uC,EAAe4uC,GACtE,MAAM5iB,EAAS,CAAC,EAChB4iB,EAASA,EAAS,IAAMA,EAAS,GACjC,IAAK,IAAIp3B,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,MAAMq3B,EAAMJ,GAAUj3B,GACtBwU,EAAO6iB,GAAOnnB,WAAWinB,EAAO3uC,EAAQ,IAAM6uC,EAAMD,KAAY,CAClE,CAGA,OAFA5iB,EAAOpqB,MAAQoqB,EAAOyF,KAAOzF,EAAO0F,MACpC1F,EAAOuU,OAASvU,EAAOuL,IAAMvL,EAAOwL,OAC7BxL,CACT,CAEA,MAAM8iB,GAAeA,CAACp2B,EAAWiR,EAAWhB,KACzCjQ,EAAI,GAAKiR,EAAI,MAAQhB,IAAWA,EAAwBomB,YAO3D,SAASC,GACPj5B,EACAoqB,GAMA,MAAM8O,EAAUl5B,EAAkBk5B,QAC5BvmB,EAAUumB,GAAWA,EAAQ5mC,OAAS4mC,EAAQ,GAAKl5B,GACnD,QAACm5B,EAAA,QAASC,GAAWzmB,EAC3B,IACIhQ,EAAGiR,EADHylB,GAAM,EAEV,GAAIN,GAAaI,EAASC,EAASp5B,EAAE4S,QACnCjQ,EAAIw2B,EACJvlB,EAAIwlB,MACC,CACL,MAAMvN,EAAOzB,EAAOkP,wBACpB32B,EAAIgQ,EAAO4mB,QAAU1N,EAAKnQ,KAC1B9H,EAAIjB,EAAO6mB,QAAU3N,EAAKrK,IAC1B6X,GAAM,C,CAER,MAAO,CAAC12B,IAAGiR,IAAGylB,MAChB,CASO,SAASI,GACdC,EACA9W,GAEA,GAAI,WAAY8W,EACd,OAAOA,EAGT,MAAM,OAACtP,EAAA,wBAAQH,GAA2BrH,EACpC34B,EAAQmuC,GAAiBhO,GACzBuP,EAAgC,eAApB1vC,EAAM2vC,UAClBC,EAAWlB,GAAmB1uC,EAAO,WACrC6vC,EAAUnB,GAAmB1uC,EAAO,SAAU,UAC9C,EAAC0Y,EAAA,EAAGiR,EAAA,IAAGylB,GAAOJ,GAAkBS,EAAOtP,GACvCO,EAAUkP,EAASne,MAAQ2d,GAAOS,EAAQpe,MAC1CkP,EAAUiP,EAASrY,KAAO6X,GAAOS,EAAQtY,KAE/C,IAAI,MAAC31B,EAAA,OAAO2+B,GAAU5H,EAKtB,OAJI+W,IACF9tC,GAASguC,EAAShuC,MAAQiuC,EAAQjuC,MAClC2+B,GAAUqP,EAASrP,OAASsP,EAAQtP,QAE/B,CACL7nB,EAAGzG,KAAKC,OAAOwG,EAAIgoB,GAAW9+B,EAAQu+B,EAAOv+B,MAAQo+B,GACrDrW,EAAG1X,KAAKC,OAAOyX,EAAIgX,GAAWJ,EAASJ,EAAOI,OAASP,GAE3D,CAEA,SAAS8P,GAAiB3P,EAA2Bv+B,EAAe2+B,GAClE,IAAImE,EAAkBqL,EAEtB,QAAcj5B,IAAVlV,QAAkCkV,IAAXypB,EAAsB,CAC/C,MAAMyP,EAAY7P,GAAUwN,GAAexN,GAC3C,GAAK6P,EAGE,CACL,MAAMpO,EAAOoO,EAAUX,wBACjBY,EAAiB9B,GAAiB6B,GAClCE,EAAkBxB,GAAmBuB,EAAgB,SAAU,SAC/DE,EAAmBzB,GAAmBuB,EAAgB,WAC5DruC,EAAQggC,EAAKhgC,MAAQuuC,EAAiBvuC,MAAQsuC,EAAgBtuC,MAC9D2+B,EAASqB,EAAKrB,OAAS4P,EAAiB5P,OAAS2P,EAAgB3P,OACjEmE,EAAWqJ,GAAckC,EAAevL,SAAUsL,EAAW,eAC7DD,EAAYhC,GAAckC,EAAeF,UAAWC,EAAW,e,MAV/DpuC,EAAQu+B,EAAOiQ,YACf7P,EAASJ,EAAOkQ,Y,CAYpB,MAAO,CACLzuC,QACA2+B,SACAmE,SAAUA,GAAY5Z,GACtBilB,UAAWA,GAAajlB,GAE5B,CAEA,MAAMwlB,GAAU57B,GAAczC,KAAKC,MAAU,GAAJwC,GAAU,GAG5C,SAAS67B,GACdpQ,EACAqQ,EACAC,EACAC,GAEA,MAAM1wC,EAAQmuC,GAAiBhO,GACzBwQ,EAAUjC,GAAmB1uC,EAAO,UACpC0kC,EAAWqJ,GAAc/tC,EAAM0kC,SAAUvE,EAAQ,gBAAkBrV,GACnEilB,EAAYhC,GAAc/tC,EAAM+vC,UAAW5P,EAAQ,iBAAmBrV,GACtE8lB,EAAgBd,GAAiB3P,EAAQqQ,EAASC,GACxD,IAAI,MAAC7uC,EAAA,OAAO2+B,GAAUqQ,EAEtB,GAAwB,gBAApB5wC,EAAM2vC,UAA6B,CACrC,MAAME,EAAUnB,GAAmB1uC,EAAO,SAAU,SAC9C4vC,EAAWlB,GAAmB1uC,EAAO,WAC3C4B,GAASguC,EAAShuC,MAAQiuC,EAAQjuC,MAClC2+B,GAAUqP,EAASrP,OAASsP,EAAQtP,M,CAEtC3+B,EAAQqQ,KAAK6C,IAAI,EAAGlT,EAAQ+uC,EAAQ/uC,OACpC2+B,EAAStuB,KAAK6C,IAAI,EAAG47B,EAAc9uC,EAAQ8uC,EAAcnQ,EAASoQ,EAAQpQ,QAC1E3+B,EAAQ0uC,GAAOr+B,KAAK8C,IAAInT,EAAO8iC,EAAUkM,EAAclM,WACvDnE,EAAS+P,GAAOr+B,KAAK8C,IAAIwrB,EAAQwP,EAAWa,EAAcb,YACtDnuC,IAAU2+B,IAGZA,EAAS+P,GAAO1uC,EAAQ,IAG1B,MAAMivC,OAA6B/5B,IAAZ05B,QAAsC15B,IAAb25B,EAOhD,OALII,GAAkBH,GAAeE,EAAcrQ,QAAUA,EAASqQ,EAAcrQ,SAClFA,EAASqQ,EAAcrQ,OACvB3+B,EAAQ0uC,GAAOr+B,KAAK2Z,MAAM2U,EAASmQ,KAG9B,CAAC9uC,QAAO2+B,SACjB,CAQO,SAASuQ,GACdnY,EACAoY,EACAC,GAEA,MAAMC,EAAaF,GAAc,EAC3BG,EAAeZ,GAAO3X,EAAM4H,OAAS0Q,GACrCE,EAAcb,GAAO3X,EAAM/2B,MAAQqvC,GAExCtY,EAAuB4H,OAAS+P,GAAO3X,EAAM4H,QAC7C5H,EAAuB/2B,MAAQ0uC,GAAO3X,EAAM/2B,OAE7C,MAAMu+B,EAASxH,EAAMwH,OAUrB,OALIA,EAAOngC,QAAUgxC,IAAgB7Q,EAAOngC,MAAMugC,SAAWJ,EAAOngC,MAAM4B,SACxEu+B,EAAOngC,MAAMugC,OAAS,GAAG5H,EAAM4H,WAC/BJ,EAAOngC,MAAM4B,MAAQ,GAAG+2B,EAAM/2B,YAG5B+2B,EAAMqH,0BAA4BiR,GAC/B9Q,EAAOI,SAAW2Q,GAClB/Q,EAAOv+B,QAAUuvC,KACrBxY,EAAuBqH,wBAA0BiR,EAClD9Q,EAAOI,OAAS2Q,EAChB/Q,EAAOv+B,MAAQuvC,EACfxY,EAAMuE,IAAIkU,aAAaH,EAAY,EAAG,EAAGA,EAAY,EAAG,IACjD,EAGX,CAOa,MAAAI,GAAgC,WAC3C,IAAIC,GAAmB,EACvB,IACE,MAAMxgC,EAAU,CACd,WAAIygC,GAEF,OADAD,GAAmB,GACZ,CACT,GAGE7D,OACFhsC,OAAO0B,iBAAiB,OAAQ,KAAM2N,GACtCrP,OAAO4B,oBAAoB,OAAQ,KAAMyN,GAE7C,CAAE,MAAOiF,G,CAGT,OAAOu7B,CACT,CAlB6C,GA8BtC,SAASE,GACdpD,EACAvhB,GAEA,MAAMpmB,EAAQ8nC,GAASH,EAASvhB,GAC1BuY,EAAU3+B,GAASA,EAAMQ,MAAM,qBACrC,OAAOm+B,GAAWA,EAAQ,QAAKtuB,CACjC,CCtRO,SAAS26B,GAAap5B,EAAWC,EAAWkM,EAAW+Y,GAC5D,MAAO,CACL7kB,EAAGL,EAAGK,EAAI8L,GAAKlM,EAAGI,EAAIL,EAAGK,GACzBiR,EAAGtR,EAAGsR,EAAInF,GAAKlM,EAAGqR,EAAItR,EAAGsR,GAE7B,CAKO,SAAS+nB,GACdr5B,EACAC,EACAkM,EAAW+Y,GAEX,MAAO,CACL7kB,EAAGL,EAAGK,EAAI8L,GAAKlM,EAAGI,EAAIL,EAAGK,GACzBiR,EAAY,WAAT4T,EAAoB/Y,EAAI,GAAMnM,EAAGsR,EAAIrR,EAAGqR,EAC9B,UAAT4T,EAAmB/Y,EAAI,EAAInM,EAAGsR,EAAIrR,EAAGqR,EACnCnF,EAAI,EAAIlM,EAAGqR,EAAItR,EAAGsR,EAE5B,CAKO,SAASgoB,GAAqBt5B,EAAiBC,EAAiBkM,EAAW+Y,GAChF,MAAMqU,EAAM,CAACl5B,EAAGL,EAAGuqB,KAAMjZ,EAAGtR,EAAGyqB,MACzB+O,EAAM,CAACn5B,EAAGJ,EAAGqqB,KAAMhZ,EAAGrR,EAAGuqB,MACzBltB,EAAI87B,GAAap5B,EAAIu5B,EAAKptB,GAC1B5O,EAAI67B,GAAaG,EAAKC,EAAKrtB,GAC3B3O,EAAI47B,GAAaI,EAAKv5B,EAAIkM,GAC1B1O,EAAI27B,GAAa97B,EAAGC,EAAG4O,GACvBzO,EAAI07B,GAAa77B,EAAGC,EAAG2O,GAC7B,OAAOitB,GAAa37B,EAAGC,EAAGyO,EAC5B,CChCA,MAAMstB,GAAwB,SAASC,EAAenwC,GACpD,MAAO,CACL8W,CAAAA,CAAEA,GACA,OAAOq5B,EAAQA,EAAQnwC,EAAQ8W,CACjC,EACAs5B,QAAAA,CAAS16B,GACP1V,EAAQ0V,CACV,EACA6rB,SAAAA,CAAU7R,GACR,MAAc,WAAVA,EACKA,EAEQ,UAAVA,EAAoB,OAAS,OACtC,EACA2gB,KAAAA,CAAMv5B,EAAGjS,GACP,OAAOiS,EAAIjS,CACb,EACAyrC,UAAAA,CAAWx5B,EAAGy5B,GACZ,OAAOz5B,EAAIy5B,CACb,EAEJ,EAEMC,GAAwB,WAC5B,MAAO,CACL15B,CAAAA,CAAEA,GACA,OAAOA,CACT,EACAs5B,QAAAA,CAAS16B,GAAI,EAEb6rB,SAAAA,CAAU7R,GACR,OAAOA,CACT,EACA2gB,KAAAA,CAAMv5B,EAAGjS,GACP,OAAOiS,EAAIjS,CACb,EACAyrC,UAAAA,CAAWx5B,EAAG25B,GACZ,OAAO35B,CACT,EAEJ,EAEO,SAAS45B,GAAc3gB,EAAcogB,EAAenwC,GACzD,OAAO+vB,EAAMmgB,GAAsBC,EAAOnwC,GAASwwC,IACrD,CAEO,SAASG,GAAsBrV,EAA+BsV,GACnE,IAAIxyC,EAA4ByyC,EACd,QAAdD,GAAqC,QAAdA,IACzBxyC,EAAQk9B,EAAIiD,OAAOngC,MACnByyC,EAAW,CACTzyC,EAAMwuC,iBAAiB,aACvBxuC,EAAM0yC,oBAAoB,cAG5B1yC,EAAM2yC,YAAY,YAAaH,EAAW,aACzCtV,EAAiD0V,kBAAoBH,EAE1E,CAEO,SAASI,GAAqB3V,EAA+BuV,QACjD37B,IAAb27B,WACMvV,EAAiD0V,kBACzD1V,EAAIiD,OAAOngC,MAAM2yC,YAAY,YAAaF,EAAS,GAAIA,EAAS,IAEpE,CC/DA,SAASK,GAAWjmB,GAClB,MAAiB,UAAbA,EACK,CACLkmB,QAAS9kB,GACT+kB,QAASjlB,GACTklB,UAAWjlB,IAGR,CACL+kB,QAASrkB,GACTskB,QAASA,CAACr9B,EAAGC,IAAMD,EAAIC,EACvBq9B,UAAWv6B,GAAKA,EAEpB,CAEA,SAASw6B,IAAiB,MAACjrC,EAAK,IAAEimB,EAAG,MAAE7c,EAAK,KAAEgD,EAAI,MAAErU,IAClD,MAAO,CACLiI,MAAOA,EAAQoJ,EACf6c,IAAKA,EAAM7c,EACXgD,KAAMA,IAAS6Z,EAAMjmB,EAAQ,GAAKoJ,IAAU,EAC5CrR,QAEJ,CAEA,SAASmzC,GAAWC,EAASrhB,EAAQ8H,GACnC,MAAM,SAAChN,EAAU5kB,MAAOorC,EAAYnlB,IAAKolB,GAAYzZ,GAC/C,QAACkZ,EAAO,UAAEE,GAAaH,GAAWjmB,GAClCxb,EAAQ0gB,EAAO1pB,OAErB,IACImP,EAAG8Q,GADH,MAACrgB,EAAK,IAAEimB,EAAA,KAAK7Z,GAAQ++B,EAGzB,GAAI/+B,EAAM,CAGR,IAFApM,GAASoJ,EACT6c,GAAO7c,EACFmG,EAAI,EAAG8Q,EAAOjX,EAAOmG,EAAI8Q,IAAQ9Q,EAAG,CACvC,IAAKu7B,EAAQE,EAAUlhB,EAAO9pB,EAAQoJ,GAAOwb,IAAYwmB,EAAYC,GACnE,MAEFrrC,IACAimB,GACF,CACAjmB,GAASoJ,EACT6c,GAAO7c,C,CAMT,OAHI6c,EAAMjmB,IACRimB,GAAO7c,GAEF,CAACpJ,QAAOimB,MAAK7Z,OAAMrU,MAAOozC,EAAQpzC,MAC3C,CAgBO,SAASuzC,GAAcH,EAASrhB,EAAQ8H,GAC7C,IAAKA,EACH,MAAO,CAACuZ,GAGV,MAAM,SAACvmB,EAAU5kB,MAAOorC,EAAYnlB,IAAKolB,GAAYzZ,EAC/CxoB,EAAQ0gB,EAAO1pB,QACf,QAAC2qC,EAAA,QAASD,EAAA,UAASE,GAAaH,GAAWjmB,IAC3C,MAAC5kB,EAAA,IAAOimB,EAAA,KAAK7Z,EAAA,MAAMrU,GAASmzC,GAAWC,EAASrhB,EAAQ8H,GAExD7N,EAAS,GACf,IAEIvlB,EAAOssB,EAAOygB,EAFdC,GAAS,EACTC,EAAW,KAGf,MAAMC,EAAgBA,IAAMZ,EAAQM,EAAYG,EAAW/sC,IAA6C,IAAnCusC,EAAQK,EAAYG,GACnFI,EAAcA,IAAmC,IAA7BZ,EAAQM,EAAU7sC,IAAgBssC,EAAQO,EAAUE,EAAW/sC,GACnFotC,EAAcA,IAAMJ,GAAUE,IAC9BG,EAAaA,KAAOL,GAAUG,IAEpC,IAAK,IAAIp8B,EAAIvP,EAAOslC,EAAOtlC,EAAOuP,GAAK0W,IAAO1W,EAC5Cub,EAAQhB,EAAOva,EAAInG,GAEf0hB,EAAMiY,OAIVvkC,EAAQwsC,EAAUlgB,EAAMlG,IAEpBpmB,IAAU+sC,IAIdC,EAASV,EAAQtsC,EAAO4sC,EAAYC,GAEnB,OAAbI,GAAqBG,MACvBH,EAA0C,IAA/BV,EAAQvsC,EAAO4sC,GAAoB77B,EAAI+1B,GAGnC,OAAbmG,GAAqBI,MACvB9nB,EAAOhC,KAAKkpB,GAAiB,CAACjrC,MAAOyrC,EAAUxlB,IAAK1W,EAAGnD,OAAMhD,QAAOrR,WACpE0zC,EAAW,MAEbnG,EAAO/1B,EACPg8B,EAAY/sC,IAOd,OAJiB,OAAbitC,GACF1nB,EAAOhC,KAAKkpB,GAAiB,CAACjrC,MAAOyrC,EAAUxlB,MAAK7Z,OAAMhD,QAAOrR,WAG5DgsB,CACT,CAYO,SAAS+nB,GAAezQ,EAAMzJ,GACnC,MAAM7N,EAAS,GACTgoB,EAAW1Q,EAAK0Q,SAEtB,IAAK,IAAIx8B,EAAI,EAAGA,EAAIw8B,EAAS3rC,OAAQmP,IAAK,CACxC,MAAMy8B,EAAMV,GAAcS,EAASx8B,GAAI8rB,EAAKvR,OAAQ8H,GAChDoa,EAAI5rC,QACN2jB,EAAOhC,QAAQiqB,EAEnB,CACA,OAAOjoB,CACT,CAKA,SAASkoB,GAAgBniB,EAAQ1gB,EAAOgD,EAAMie,GAC5C,IAAIrqB,EAAQ,EACRimB,EAAM7c,EAAQ,EAElB,GAAIgD,IAASie,EAEX,MAAOrqB,EAAQoJ,IAAU0gB,EAAO9pB,GAAO+iC,KACrC/iC,IAKJ,MAAOA,EAAQoJ,GAAS0gB,EAAO9pB,GAAO+iC,KACpC/iC,IAIFA,GAASoJ,EAELgD,IAEF6Z,GAAOjmB,GAGT,MAAOimB,EAAMjmB,GAAS8pB,EAAO7D,EAAM7c,GAAO25B,KACxC9c,IAMF,OAFAA,GAAO7c,EAEA,CAACpJ,QAAOimB,MACjB,CASA,SAASimB,GAAcpiB,EAAQ9pB,EAAO6M,EAAKT,GACzC,MAAMhD,EAAQ0gB,EAAO1pB,OACf2jB,EAAS,GACf,IAEIkC,EAFAgB,EAAOjnB,EACPslC,EAAOxb,EAAO9pB,GAGlB,IAAKimB,EAAMjmB,EAAQ,EAAGimB,GAAOpZ,IAAOoZ,EAAK,CACvC,MAAMkmB,EAAMriB,EAAO7D,EAAM7c,GACrB+iC,EAAIpJ,MAAQoJ,EAAIC,KACb9G,EAAKvC,OACR32B,GAAO,EACP2X,EAAOhC,KAAK,CAAC/hB,MAAOA,EAAQoJ,EAAO6c,KAAMA,EAAM,GAAK7c,EAAOgD,SAE3DpM,EAAQinB,EAAOklB,EAAIC,KAAOnmB,EAAM,OAGlCgB,EAAOhB,EACHqf,EAAKvC,OACP/iC,EAAQimB,IAGZqf,EAAO6G,CACT,CAMA,OAJa,OAATllB,GACFlD,EAAOhC,KAAK,CAAC/hB,MAAOA,EAAQoJ,EAAO6c,IAAKgB,EAAO7d,EAAOgD,SAGjD2X,CACT,CAUO,SAASsoB,GAAiBhR,EAAMiR,GACrC,MAAMxiB,EAASuR,EAAKvR,OACdO,EAAWgR,EAAKxyB,QAAQwhB,SACxBjhB,EAAQ0gB,EAAO1pB,OAErB,IAAKgJ,EACH,MAAO,GAGT,MAAMgD,IAASivB,EAAKkR,OACd,MAACvsC,EAAA,IAAOimB,GAAOgmB,GAAgBniB,EAAQ1gB,EAAOgD,EAAMie,GAE1D,IAAiB,IAAbA,EACF,OAAOmiB,GAAcnR,EAAM,CAAC,CAACr7B,QAAOimB,MAAK7Z,SAAQ0d,EAAQwiB,GAG3D,MAAMz/B,EAAMoZ,EAAMjmB,EAAQimB,EAAM7c,EAAQ6c,EAClCwmB,IAAiBpR,EAAKqR,WAAuB,IAAV1sC,GAAeimB,IAAQ7c,EAAQ,EACxE,OAAOojC,GAAcnR,EAAM6Q,GAAcpiB,EAAQ9pB,EAAO6M,EAAK4/B,GAAe3iB,EAAQwiB,EACtF,CAQA,SAASE,GAAcnR,EAAM0Q,EAAUjiB,EAAQwiB,GAC7C,OAAKA,GAAmBA,EAAe5L,YAAe5W,EAG/C6iB,GAAgBtR,EAAM0Q,EAAUjiB,EAAQwiB,GAFtCP,CAGX,CASA,SAASY,GAAgBtR,EAAM0Q,EAAUjiB,EAAQwiB,GAC/C,MAAMM,EAAevR,EAAKwR,OAAO1U,aAC3B2U,EAAYC,GAAU1R,EAAKxyB,UAC1BmkC,cAAexsB,EAAc3X,SAAS,SAACwhB,IAAagR,EACrDjyB,EAAQ0gB,EAAO1pB,OACf2jB,EAAS,GACf,IAAIkpB,EAAYH,EACZ9sC,EAAQ+rC,EAAS,GAAG/rC,MACpBuP,EAAIvP,EAER,SAASktC,EAASl+B,EAAGlB,EAAGnB,EAAGwgC,GACzB,MAAMC,EAAM/iB,GAAY,EAAI,EAC5B,GAAIrb,IAAMlB,EAAV,CAIAkB,GAAK5F,EACL,MAAO0gB,EAAO9a,EAAI5F,GAAO25B,KACvB/zB,GAAKo+B,EAEP,MAAOtjB,EAAOhc,EAAI1E,GAAO25B,KACvBj1B,GAAKs/B,EAEHp+B,EAAI5F,IAAU0E,EAAI1E,IACpB2a,EAAOhC,KAAK,CAAC/hB,MAAOgP,EAAI5F,EAAO6c,IAAKnY,EAAI1E,EAAOgD,KAAMO,EAAG5U,MAAOo1C,IAC/DF,EAAYE,EACZntC,EAAQ8N,EAAI1E,E,CAEhB,CAEA,IAAK,MAAM+hC,KAAWY,EAAU,CAC9B/rC,EAAQqqB,EAAWrqB,EAAQmrC,EAAQnrC,MACnC,IACIjI,EADAutC,EAAOxb,EAAO9pB,EAAQoJ,GAE1B,IAAKmG,EAAIvP,EAAQ,EAAGuP,GAAK47B,EAAQllB,IAAK1W,IAAK,CACzC,MAAMu1B,EAAKhb,EAAOva,EAAInG,GACtBrR,EAAQg1C,GAAUT,EAAe5L,WAAWlC,GAAcoO,EAAc,CACtE5zC,KAAM,UACNq0C,GAAI/H,EACJl1B,GAAI00B,EACJwI,aAAc/9B,EAAI,GAAKnG,EACvBmkC,YAAah+B,EAAInG,EACjBoX,mBAEEgtB,GAAaz1C,EAAOk1C,IACtBC,EAASltC,EAAOuP,EAAI,EAAG47B,EAAQ/+B,KAAM6gC,GAEvC3H,EAAOR,EACPmI,EAAYl1C,CACd,CACIiI,EAAQuP,EAAI,GACd29B,EAASltC,EAAOuP,EAAI,EAAG47B,EAAQ/+B,KAAM6gC,EAEzC,CAEA,OAAOlpB,CACT,CAEA,SAASgpB,GAAUlkC,GACjB,MAAO,CACLsrB,gBAAiBtrB,EAAQsrB,gBACzBsZ,eAAgB5kC,EAAQ4kC,eACxBC,WAAY7kC,EAAQ6kC,WACpBC,iBAAkB9kC,EAAQ8kC,iBAC1BC,gBAAiB/kC,EAAQ+kC,gBACzB/T,YAAahxB,EAAQgxB,YACrBzF,YAAavrB,EAAQurB,YAEzB,CAEA,SAASoZ,GAAaz1C,EAAOk1C,GAC3B,IAAKA,EACH,OAAO,EAET,MAAM5V,EAAQ,GACRwW,EAAW,SAAS11C,EAAKqG,GAC7B,OAAKuvB,GAAoBvvB,IAGpB64B,EAAM/F,SAAS9yB,IAClB64B,EAAMtV,KAAKvjB,GAEN64B,EAAMvW,QAAQtiB,IALZA,CAMX,EACA,OAAOqxB,KAAKC,UAAU/3B,EAAO81C,KAAche,KAAKC,UAAUmd,EAAWY,EACvE,CCzWA,SAASC,GAAehY,EAAciY,EAAsBC,GAC1D,OAAOlY,EAAMjtB,QAAQgpB,KAAOiE,EAAMkY,GAASD,EAAUC,EACvD,CAEA,SAASC,GAAepkB,EAAiBkkB,GACvC,MAAM,OAAC9iB,EAAA,OAAQC,GAAUrB,EACzB,OAAIoB,GAAUC,EACL,CACL1B,KAAMskB,GAAe7iB,EAAQ8iB,EAAW,QACxCtkB,MAAOqkB,GAAe7iB,EAAQ8iB,EAAW,SACzCze,IAAKwe,GAAe5iB,EAAQ6iB,EAAW,OACvCxe,OAAQue,GAAe5iB,EAAQ6iB,EAAW,WAGvCA,CACT,CAEO,SAASG,GAAmBxd,EAAc7G,GAC/C,MAAMgI,EAAOhI,EAAKskB,MAClB,GAAItc,EAAKl2B,SACP,OAAO,EAET,MAAMq+B,EAAOiU,GAAepkB,EAAM6G,EAAMqd,WAExC,MAAO,CACLvkB,MAAoB,IAAdqI,EAAKrI,KAAiB,EAAIwQ,EAAKxQ,OAAsB,IAAdqI,EAAKrI,KAAgB,EAAIqI,EAAKrI,MAC3EC,OAAsB,IAAfoI,EAAKpI,MAAkBiH,EAAM/2B,MAAQqgC,EAAKvQ,QAAwB,IAAfoI,EAAKpI,MAAiB,EAAIoI,EAAKpI,OACzF6F,KAAkB,IAAbuC,EAAKvC,IAAgB,EAAI0K,EAAK1K,MAAoB,IAAbuC,EAAKvC,IAAe,EAAIuC,EAAKvC,KACvEC,QAAwB,IAAhBsC,EAAKtC,OAAmBmB,EAAM4H,OAAS0B,EAAKzK,SAA0B,IAAhBsC,EAAKtC,OAAkB,EAAIsC,EAAKtC,QAElG;;;;;;;ACrBO,MAAM6e,GACXjxB,WAAAA,GACEzjB,KAAK20C,SAAW,KAChB30C,KAAK40C,QAAU,IAAI7e,IACnB/1B,KAAK60C,UAAW,EAChB70C,KAAK80C,eAAY3/B,CACnB,CAKA4/B,OAAAA,CAAQ/d,EAAOge,EAAO/vC,EAAM3F,GAC1B,MAAM21C,EAAYD,EAAMhnB,UAAU1uB,GAC5B41C,EAAWF,EAAMrgB,SAEvBsgB,EAAU7mB,QAAQlI,GAAMA,EAAG,CACzB8Q,QACAme,QAASH,EAAMG,QACfD,WACAE,YAAa9kC,KAAK8C,IAAInO,EAAO+vC,EAAM1uC,MAAO4uC,KAE9C,CAKAG,QAAAA,GACMr1C,KAAK20C,WAGT30C,KAAK60C,UAAW,EAEhB70C,KAAK20C,SAAW3lB,GAAiB5J,KAAKtlB,OAAQ,KAC5CE,KAAKs1C,UACLt1C,KAAK20C,SAAW,KAEZ30C,KAAK60C,UACP70C,KAAKq1C,aAGX,CAKAC,OAAAA,CAAQrwC,EAAOS,KAAK6vC,OAClB,IAAIC,EAAY,EAEhBx1C,KAAK40C,QAAQxmB,QAAQ,CAAC4mB,EAAOhe,KAC3B,IAAKge,EAAMS,UAAYT,EAAMnmB,MAAMnoB,OACjC,OAEF,MAAMmoB,EAAQmmB,EAAMnmB,MACpB,IAEIrwB,EAFAqX,EAAIgZ,EAAMnoB,OAAS,EACnBgvC,GAAO,EAGX,KAAO7/B,GAAK,IAAKA,EACfrX,EAAOqwB,EAAMhZ,GAETrX,EAAKm3C,SACHn3C,EAAKo3C,OAASZ,EAAMrgB,WAGtBqgB,EAAMrgB,SAAWn2B,EAAKo3C,QAExBp3C,EAAKq3C,KAAK5wC,GACVywC,GAAO,IAIP7mB,EAAMhZ,GAAKgZ,EAAMA,EAAMnoB,OAAS,GAChCmoB,EAAMrE,OAINkrB,IACF1e,EAAM0e,OACN11C,KAAK+0C,QAAQ/d,EAAOge,EAAO/vC,EAAM,aAG9B4pB,EAAMnoB,SACTsuC,EAAMS,SAAU,EAChBz1C,KAAK+0C,QAAQ/d,EAAOge,EAAO/vC,EAAM,YACjC+vC,EAAMG,SAAU,GAGlBK,GAAa3mB,EAAMnoB,SAGrB1G,KAAK80C,UAAY7vC,EAEC,IAAduwC,IACFx1C,KAAK60C,UAAW,EAEpB,CAKAiB,SAAAA,CAAU9e,GACR,MAAM+e,EAAS/1C,KAAK40C,QACpB,IAAII,EAAQe,EAAOzf,IAAIU,GAavB,OAZKge,IACHA,EAAQ,CACNS,SAAS,EACTN,SAAS,EACTtmB,MAAO,GACPb,UAAW,CACTgoB,SAAU,GACVC,SAAU,KAGdF,EAAOjnB,IAAIkI,EAAOge,IAEbA,CACT,CAOAkB,MAAAA,CAAOlf,EAAO8W,EAAOqI,GACnBn2C,KAAK81C,UAAU9e,GAAOhJ,UAAU8f,GAAOzlB,KAAK8tB,EAC9C,CAOA70C,GAAAA,CAAI01B,EAAOnI,GACJA,GAAUA,EAAMnoB,QAGrB1G,KAAK81C,UAAU9e,GAAOnI,MAAMxG,QAAQwG,EACtC,CAMA/F,GAAAA,CAAIkO,GACF,OAAOh3B,KAAK81C,UAAU9e,GAAOnI,MAAMnoB,OAAS,CAC9C,CAMAJ,KAAAA,CAAM0wB,GACJ,MAAMge,EAAQh1C,KAAK40C,QAAQte,IAAIU,GAC1Bge,IAGLA,EAAMS,SAAU,EAChBT,EAAM1uC,MAAQZ,KAAK6vC,MACnBP,EAAMrgB,SAAWqgB,EAAMnmB,MAAMunB,OAAO,CAACC,EAAK5D,IAAQniC,KAAK6C,IAAIkjC,EAAK5D,EAAI6D,WAAY,GAChFt2C,KAAKq1C,WACP,CAEAI,OAAAA,CAAQze,GACN,IAAKh3B,KAAK60C,SACR,OAAO,EAET,MAAMG,EAAQh1C,KAAK40C,QAAQte,IAAIU,GAC/B,SAAKge,GAAUA,EAAMS,SAAYT,EAAMnmB,MAAMnoB,OAI/C,CAMAgsC,IAAAA,CAAK1b,GACH,MAAMge,EAAQh1C,KAAK40C,QAAQte,IAAIU,GAC/B,IAAKge,IAAUA,EAAMnmB,MAAMnoB,OACzB,OAEF,MAAMmoB,EAAQmmB,EAAMnmB,MACpB,IAAIhZ,EAAIgZ,EAAMnoB,OAAS,EAEvB,KAAOmP,GAAK,IAAKA,EACfgZ,EAAMhZ,GAAG0gC,SAEXvB,EAAMnmB,MAAQ,GACd7uB,KAAK+0C,QAAQ/d,EAAOge,EAAOtvC,KAAK6vC,MAAO,WACzC,CAMAr0C,MAAAA,CAAO81B,GACL,OAAOh3B,KAAK40C,QAAQ3M,OAAOjR,EAC7B,EAIF,IAAAwf,GAA+B,IAAI9B,GCjNnC,MAAMvyB,GAAc,cACds0B,GAAgB,CACpBC,OAAAA,CAAQjwC,EAAM+b,EAAIm0B,GAChB,OAAOA,EAAS,GAAMn0B,EAAK/b,CAC7B,EAMAsd,KAAAA,CAAMtd,EAAM+b,EAAIm0B,GACd,MAAMC,EAAK7yB,GAAatd,GAAQ0b,IAC1B8B,EAAK2yB,EAAGhzB,OAASG,GAAavB,GAAML,IAC1C,OAAO8B,GAAMA,EAAGL,MACZK,EAAGH,IAAI8yB,EAAID,GAAQzhC,YACnBsN,CACN,EACAq0B,MAAAA,CAAOpwC,EAAM+b,EAAIm0B,GACf,OAAOlwC,GAAQ+b,EAAK/b,GAAQkwC,CAC9B,GAGa,MAAMG,GACnBrzB,WAAAA,CAAYszB,EAAK/vB,EAAQ8c,EAAMthB,GAC7B,MAAMw0B,EAAehwB,EAAO8c,GAE5BthB,EAAK8hB,GAAQ,CAACyS,EAAIv0B,GAAIA,EAAIw0B,EAAcD,EAAItwC,OAC5C,MAAMA,EAAO69B,GAAQ,CAACyS,EAAItwC,KAAMuwC,EAAcx0B,IAE9CxiB,KAAK21C,SAAU,EACf31C,KAAKi3C,IAAMF,EAAI7wB,IAAMuwB,GAAcM,EAAIz3C,aAAemH,GACtDzG,KAAKk3C,QAAU9kB,GAAQ2kB,EAAIniB,SAAWxC,GAAQC,OAC9CryB,KAAKm3C,OAAS7mC,KAAK2Z,MAAMvkB,KAAK6vC,OAASwB,EAAIznB,OAAS,IACpDtvB,KAAKs2C,UAAYt2C,KAAK41C,OAAStlC,KAAK2Z,MAAM8sB,EAAIpiB,UAC9C30B,KAAK6yC,QAAUkE,EAAIrkC,KACnB1S,KAAKo3C,QAAUpwB,EACfhnB,KAAKq3C,MAAQvT,EACb9jC,KAAKs3C,MAAQ7wC,EACbzG,KAAKu3C,IAAM/0B,EACXxiB,KAAKw3C,eAAYriC,CACnB,CAEA+f,MAAAA,GACE,OAAOl1B,KAAK21C,OACd,CAEA8B,MAAAA,CAAOV,EAAKv0B,EAAIvd,GACd,GAAIjF,KAAK21C,QAAS,CAChB31C,KAAK+0C,SAAQ,GAEb,MAAMiC,EAAeh3C,KAAKo3C,QAAQp3C,KAAKq3C,OACjCK,EAAUzyC,EAAOjF,KAAKm3C,OACtBzf,EAAS13B,KAAKs2C,UAAYoB,EAChC13C,KAAKm3C,OAASlyC,EACdjF,KAAKs2C,UAAYhmC,KAAK2Z,MAAM3Z,KAAK6C,IAAIukB,EAAQqf,EAAIpiB,WACjD30B,KAAK41C,QAAU8B,EACf13C,KAAK6yC,QAAUkE,EAAIrkC,KACnB1S,KAAKu3C,IAAMjT,GAAQ,CAACyS,EAAIv0B,GAAIA,EAAIw0B,EAAcD,EAAItwC,OAClDzG,KAAKs3C,MAAQhT,GAAQ,CAACyS,EAAItwC,KAAMuwC,EAAcx0B,G,CAElD,CAEA+zB,MAAAA,GACMv2C,KAAK21C,UAEP31C,KAAK61C,KAAKnwC,KAAK6vC,OACfv1C,KAAK21C,SAAU,EACf31C,KAAK+0C,SAAQ,GAEjB,CAEAc,IAAAA,CAAK5wC,GACH,MAAMyyC,EAAUzyC,EAAOjF,KAAKm3C,OACtBxiB,EAAW30B,KAAKs2C,UAChBxS,EAAO9jC,KAAKq3C,MACZ5wC,EAAOzG,KAAKs3C,MACZ5kC,EAAO1S,KAAK6yC,MACZrwB,EAAKxiB,KAAKu3C,IAChB,IAAIZ,EAIJ,GAFA32C,KAAK21C,QAAUlvC,IAAS+b,IAAO9P,GAASglC,EAAU/iB,IAE7C30B,KAAK21C,QAGR,OAFA31C,KAAKo3C,QAAQtT,GAAQthB,OACrBxiB,KAAK+0C,SAAQ,GAIX2C,EAAU,EACZ13C,KAAKo3C,QAAQtT,GAAQr9B,GAIvBkwC,EAAUe,EAAU/iB,EAAY,EAChCgiB,EAASjkC,GAAQikC,EAAS,EAAI,EAAIA,EAASA,EAC3CA,EAAS32C,KAAKk3C,QAAQ5mC,KAAK8C,IAAI,EAAG9C,KAAK6C,IAAI,EAAGwjC,KAE9C32C,KAAKo3C,QAAQtT,GAAQ9jC,KAAKi3C,IAAIxwC,EAAM+b,EAAIm0B,GAC1C,CAEAgB,IAAAA,GACE,MAAMC,EAAW53C,KAAKw3C,YAAcx3C,KAAKw3C,UAAY,IACrD,OAAO,IAAIK,QAAQ,CAACtpB,EAAKupB,KACvBF,EAASvvB,KAAK,CAACkG,MAAKupB,SAExB,CAEA/C,OAAAA,CAAQgD,GACN,MAAM1pB,EAAS0pB,EAAW,MAAQ,MAC5BH,EAAW53C,KAAKw3C,WAAa,GACnC,IAAK,IAAI3hC,EAAI,EAAGA,EAAI+hC,EAASlxC,OAAQmP,IACnC+hC,EAAS/hC,GAAGwY,IAEhB,EChHa,MAAM2pB,GACnBv0B,WAAAA,CAAYuT,EAAOihB,GACjBj4C,KAAKmzC,OAASnc,EACdh3B,KAAKk4C,YAAc,IAAIniB,IACvB/1B,KAAKm4C,UAAUF,EACjB,CAEAE,SAAAA,CAAUF,GACR,IAAK3yB,GAAS2yB,GACZ,OAGF,MAAMG,EAAmB/oC,OAAOC,KAAKolB,GAASS,WACxCkjB,EAAgBr4C,KAAKk4C,YAE3B7oC,OAAOipC,oBAAoBL,GAAQ7pB,QAAQ3vB,IACzC,MAAMs4C,EAAMkB,EAAOx5C,GACnB,IAAK6mB,GAASyxB,GACZ,OAEF,MAAMgB,EAAW,CAAC,EAClB,IAAK,MAAMQ,KAAUH,EACnBL,EAASQ,GAAUxB,EAAIwB,IAGxBtiC,GAAQ8gC,EAAI9hB,aAAe8hB,EAAI9hB,YAAc,CAACx2B,IAAM2vB,QAAS0V,IACxDA,IAASrlC,GAAQ45C,EAAcvvB,IAAIgb,IACrCuU,EAAcvpB,IAAIgV,EAAMiU,MAIhC,CAMAS,eAAAA,CAAgBxxB,EAAQ2G,GACtB,MAAM8qB,EAAa9qB,EAAOxe,QACpBA,EAAUupC,GAAqB1xB,EAAQyxB,GAC7C,IAAKtpC,EACH,MAAO,GAGT,MAAMmmB,EAAat1B,KAAK24C,kBAAkBxpC,EAASspC,GAYnD,OAXIA,EAAWG,SAIbC,GAAS7xB,EAAO7X,QAAQ2pC,YAAaL,GAAYM,KAAK,KACpD/xB,EAAO7X,QAAUspC,GAChB,QAKEnjB,CACT,CAKAqjB,iBAAAA,CAAkB3xB,EAAQ2G,GACxB,MAAM0qB,EAAgBr4C,KAAKk4C,YACrB5iB,EAAa,GACbmgB,EAAUzuB,EAAO8xB,cAAgB9xB,EAAO8xB,YAAc,CAAC,GACvDz5C,EAAQgQ,OAAOC,KAAKqe,GACpB1oB,EAAOS,KAAK6vC,MAClB,IAAI1/B,EAEJ,IAAKA,EAAIxW,EAAMqH,OAAS,EAAGmP,GAAK,IAAKA,EAAG,CACtC,MAAMiuB,EAAOzkC,EAAMwW,GACnB,GAAuB,MAAnBiuB,EAAKvgB,OAAO,GACd,SAGF,GAAa,YAATugB,EAAoB,CACtBxO,EAAWjN,QAAQroB,KAAKw4C,gBAAgBxxB,EAAQ2G,IAChD,Q,CAEF,MAAM7oB,EAAQ6oB,EAAOmW,GACrB,IAAI3O,EAAYsgB,EAAQ3R,GACxB,MAAMiT,EAAMsB,EAAc/hB,IAAIwN,GAE9B,GAAI3O,EAAW,CACb,GAAI4hB,GAAO5hB,EAAUD,SAAU,CAE7BC,EAAUsiB,OAAOV,EAAKjyC,EAAOG,GAC7B,Q,CAEAkwB,EAAUohB,Q,CAGTQ,GAAQA,EAAIpiB,UAMjB8gB,EAAQ3R,GAAQ3O,EAAY,IAAI2hB,GAAUC,EAAK/vB,EAAQ8c,EAAMh/B,GAC7DwwB,EAAWjN,KAAK8M,IALdnO,EAAO8c,GAAQh/B,CAMnB,CACA,OAAOwwB,CACT,CASAmiB,MAAAA,CAAOzwB,EAAQ2G,GACb,GAA8B,IAA1B3tB,KAAKk4C,YAAYxpC,KAGnB,YADAW,OAAO8T,OAAO6D,EAAQ2G,GAIxB,MAAM2H,EAAat1B,KAAK24C,kBAAkB3xB,EAAQ2G,GAElD,OAAI2H,EAAW5uB,QACb8vC,GAASl1C,IAAItB,KAAKmzC,OAAQ7d,IACnB,QAFT,CAIF,EAGF,SAASujB,GAASvjB,EAAYL,GAC5B,MAAMwgB,EAAU,GACVnmC,EAAOD,OAAOC,KAAK2lB,GACzB,IAAK,IAAIpf,EAAI,EAAGA,EAAIvG,EAAK5I,OAAQmP,IAAK,CACpC,MAAMmjC,EAAO1jB,EAAWhmB,EAAKuG,IACzBmjC,GAAQA,EAAK9jB,UACfugB,EAAQptB,KAAK2wB,EAAKrB,OAEtB,CAEA,OAAOE,QAAQoB,IAAIxD,EACrB,CAEA,SAASiD,GAAqB1xB,EAAQyxB,GACpC,IAAKA,EACH,OAEF,IAAItpC,EAAU6X,EAAO7X,QACrB,GAAKA,EASL,OALIA,EAAQypC,UAGV5xB,EAAO7X,QAAUA,EAAUE,OAAO8T,OAAO,CAAC,EAAGhU,EAAS,CAACypC,SAAS,EAAOE,YAAa,CAAC,KAEhF3pC,EARL6X,EAAO7X,QAAUspC,CASrB,CCtJA,SAASS,GAAU9c,EAAO+c,GACxB,MAAM9X,EAAOjF,GAASA,EAAMjtB,SAAW,CAAC,EAClCoX,EAAU8a,EAAK9a,QACfnT,OAAmB+B,IAAbksB,EAAKjuB,IAAoB+lC,EAAkB,EACjDhmC,OAAmBgC,IAAbksB,EAAKluB,IAAoBgmC,EAAkB,EACvD,MAAO,CACL7yC,MAAOigB,EAAUpT,EAAMC,EACvBmZ,IAAKhG,EAAUnT,EAAMD,EAEzB,CAEA,SAASimC,GAAY7nB,EAAQC,EAAQ2nB,GACnC,IAAwB,IAApBA,EACF,OAAO,EAET,MAAMpiC,EAAImiC,GAAU3nB,EAAQ4nB,GACtBnxB,EAAIkxB,GAAU1nB,EAAQ2nB,GAE5B,MAAO,CACLvjB,IAAK5N,EAAEuE,IACPwD,MAAOhZ,EAAEwV,IACTsJ,OAAQ7N,EAAE1hB,MACVwpB,KAAM/Y,EAAEzQ,MAEZ,CAEA,SAAS+yC,GAAOv0C,GACd,IAAI+d,EAAGlO,EAAGV,EAAGhB,EAWb,OATIqS,GAASxgB,IACX+d,EAAI/d,EAAM8wB,IACVjhB,EAAI7P,EAAMirB,MACV9b,EAAInP,EAAM+wB,OACV5iB,EAAInO,EAAMgrB,MAEVjN,EAAIlO,EAAIV,EAAIhB,EAAInO,EAGX,CACL8wB,IAAK/S,EACLkN,MAAOpb,EACPkhB,OAAQ5hB,EACR6b,KAAM7c,EACNhR,UAAoB,IAAV6C,EAEd,CAEA,SAASw0C,GAAwBtiB,EAAOuiB,GACtC,MAAMjqC,EAAO,GACPkqC,EAAWxiB,EAAMyiB,uBAAuBF,GAC9C,IAAI1jC,EAAG8Q,EAEP,IAAK9Q,EAAI,EAAG8Q,EAAO6yB,EAAS9yC,OAAQmP,EAAI8Q,IAAQ9Q,EAC9CvG,EAAK+Y,KAAKmxB,EAAS3jC,GAAGnX,OAExB,OAAO4Q,CACT,CAEA,SAASoqC,GAAWC,EAAO70C,EAAO80C,EAASzqC,EAAU,CAAC,GACpD,MAAMG,EAAOqqC,EAAMrqC,KACbuqC,EAA8B,WAAjB1qC,EAAQysB,KAC3B,IAAI/lB,EAAG8Q,EAAMG,EAAcgzB,EAE3B,GAAc,OAAVh1C,EACF,OAGF,IAAIi1C,GAAQ,EACZ,IAAKlkC,EAAI,EAAG8Q,EAAOrX,EAAK5I,OAAQmP,EAAI8Q,IAAQ9Q,EAAG,CAE7C,GADAiR,GAAgBxX,EAAKuG,GACjBiR,IAAiB8yB,EAAS,CAE5B,GADAG,GAAQ,EACJ5qC,EAAQ8pC,IACV,SAEF,K,CAEFa,EAAaH,EAAMhsB,OAAO7G,GACtBvB,GAASu0B,KAAgBD,GAAyB,IAAV/0C,GAAe4kB,GAAK5kB,KAAW4kB,GAAKowB,MAC9Eh1C,GAASg1C,EAEb,CAEA,OAAKC,GAAU5qC,EAAQ8pC,IAIhBn0C,EAHE,CAIX,CAEA,SAASk1C,GAAyBt6C,EAAMywB,GACtC,MAAM,OAACK,EAAA,OAAQC,GAAUN,EACnB8pB,EAA2B,MAAhBzpB,EAAOK,KAAe,IAAM,IACvCqpB,EAA2B,MAAhBzpB,EAAOI,KAAe,IAAM,IACvCvhB,EAAOD,OAAOC,KAAK5P,GACnBy6C,EAAQ,IAAIp0C,MAAMuJ,EAAK5I,QAC7B,IAAImP,EAAG8Q,EAAMloB,EACb,IAAKoX,EAAI,EAAG8Q,EAAOrX,EAAK5I,OAAQmP,EAAI8Q,IAAQ9Q,EAC1CpX,EAAM6Q,EAAKuG,GACXskC,EAAMtkC,GAAK,CACT,CAACokC,GAAWx7C,EACZ,CAACy7C,GAAWx6C,EAAKjB,IAGrB,OAAO07C,CACT,CAEA,SAASC,GAAUhe,EAAOjM,GACxB,MAAMkqB,EAAUje,GAASA,EAAMjtB,QAAQkrC,QACvC,OAAOA,QAAwBllC,IAAZklC,QAAwCllC,IAAfgb,EAAKwpB,KACnD,CAEA,SAASW,GAAYC,EAAYC,EAAYrqB,GAC3C,MAAO,GAAGoqB,EAAWnoC,MAAMooC,EAAWpoC,MAAM+d,EAAKwpB,OAASxpB,EAAK7wB,MACjE,CAEA,SAAS0xB,GAAcoL,GACrB,MAAM,IAAChpB,EAAG,IAAED,EAAG,WAAE2d,EAAU,WAAEC,GAAcqL,EAAMpL,gBACjD,MAAO,CACL5d,IAAK0d,EAAa1d,EAAM5N,OAAOi1C,kBAC/BtnC,IAAK4d,EAAa5d,EAAM3N,OAAO4jB,kBAEnC,CAEA,SAASsxB,GAAiBC,EAAQC,EAAUC,GAC1C,MAAMC,EAAWH,EAAOC,KAAcD,EAAOC,GAAY,CAAC,GAC1D,OAAOE,EAASD,KAAgBC,EAASD,GAAc,CAAC,EAC1D,CAEA,SAASE,GAAoBpB,EAAOlpB,EAAQuqB,EAAU17C,GACpD,IAAK,MAAM6wB,KAAQM,EAAOwqB,wBAAwB37C,GAAMinB,UAAW,CACjE,MAAMzhB,EAAQ60C,EAAMxpB,EAAKzxB,OACzB,GAAIs8C,GAAal2C,EAAQ,IAAQk2C,GAAYl2C,EAAQ,EACnD,OAAOqrB,EAAKzxB,KAEhB,CAEA,OAAO,IACT,CAEA,SAASw8C,GAAaC,EAAYlS,GAChC,MAAM,MAACjS,EAAOokB,YAAajrB,GAAQgrB,EAC7BR,EAAS3jB,EAAMqkB,UAAYrkB,EAAMqkB,QAAU,CAAC,IAC5C,OAAC7qB,EAAA,OAAQC,EAAQ/xB,MAAOooB,GAAgBqJ,EACxCmrB,EAAQ9qB,EAAOK,KACf0qB,EAAQ9qB,EAAOI,KACfpyB,EAAM67C,GAAY9pB,EAAQC,EAAQN,GAClCxJ,EAAOsiB,EAAOviC,OACpB,IAAIizC,EAEJ,IAAK,IAAI9jC,EAAI,EAAGA,EAAI8Q,IAAQ9Q,EAAG,CAC7B,MAAMrX,EAAOyqC,EAAOpzB,IACb,CAACylC,GAAQ58C,EAAO,CAAC68C,GAAQz2C,GAAStG,EACnCg9C,EAAah9C,EAAK68C,UAAY78C,EAAK68C,QAAU,CAAC,GACpD1B,EAAQ6B,EAAWD,GAASb,GAAiBC,EAAQl8C,EAAKC,GAC1Di7C,EAAM7yB,GAAgBhiB,EAEtB60C,EAAM8B,KAAOV,GAAoBpB,EAAOlpB,GAAQ,EAAMN,EAAK7wB,MAC3Dq6C,EAAM+B,QAAUX,GAAoBpB,EAAOlpB,GAAQ,EAAON,EAAK7wB,MAE/D,MAAMq8C,EAAehC,EAAMiC,gBAAkBjC,EAAMiC,cAAgB,CAAC,GACpED,EAAa70B,GAAgBhiB,CAC/B,CACF,CAEA,SAAS+2C,GAAgB7kB,EAAOnG,GAC9B,MAAMwL,EAASrF,EAAMqF,OACrB,OAAOhtB,OAAOC,KAAK+sB,GAAQ+L,OAAO3pC,GAAO49B,EAAO59B,GAAKoyB,OAASA,GAAMirB,OACtE,CAEA,SAASC,GAAqBxT,EAAQ7pC,GACpC,OAAOomC,GAAcyD,EACnB,CACErT,QAAQ,EACRtE,aAASzb,EACT2R,aAAcpoB,EACdA,QACAk9B,KAAM,UACNt8B,KAAM,WAGZ,CAEA,SAAS08C,GAAkBzT,EAAQ7pC,EAAO+tC,GACxC,OAAO3H,GAAcyD,EAAQ,CAC3BrT,QAAQ,EACR+mB,UAAWv9C,EACXuqC,YAAQ9zB,EACR+mC,SAAK/mC,EACLs3B,UACA/tC,QACAk9B,KAAM,UACNt8B,KAAM,QAEV,CAEA,SAAS68C,GAAYhsB,EAAMtB,GAEzB,MAAM/H,EAAeqJ,EAAKgrB,WAAWz8C,MAC/BmyB,EAAOV,EAAKM,QAAUN,EAAKM,OAAOI,KACxC,GAAKA,EAAL,CAIAhC,EAAQA,GAASsB,EAAKO,QACtB,IAAK,MAAMuY,KAAUpa,EAAO,CAC1B,MAAM8rB,EAAS1R,EAAOoS,QACtB,IAAKV,QAA2BxlC,IAAjBwlC,EAAO9pB,SAAsD1b,IAA/BwlC,EAAO9pB,GAAM/J,GACxD,cAEK6zB,EAAO9pB,GAAM/J,QACe3R,IAA/BwlC,EAAO9pB,GAAM+qB,oBAA4EzmC,IAA7CwlC,EAAO9pB,GAAM+qB,cAAc90B,WAClE6zB,EAAO9pB,GAAM+qB,cAAc90B,EAEtC,C,CACF,CAEA,MAAMs1B,GAAsBxgB,GAAkB,UAATA,GAA6B,SAATA,EACnDygB,GAAmBA,CAACC,EAAQC,IAAWA,EAASD,EAASjtC,OAAO8T,OAAO,CAAC,EAAGm5B,GAC3EE,GAAcA,CAACC,EAAUtsB,EAAM6G,IAAUylB,IAAatsB,EAAKusB,QAAUvsB,EAAKwsB,UAC3E,CAACrtC,KAAMgqC,GAAwBtiB,GAAO,GAAOrJ,OAAQ,MAE3C,MAAMivB,GAqBnBn5B,WAAAA,CAAYuT,EAAOlQ,GACjB9mB,KAAKg3B,MAAQA,EACbh3B,KAAKpC,KAAOo5B,EAAMuE,IAClBv7B,KAAKtB,MAAQooB,EACb9mB,KAAK68C,gBAAkB,CAAC,EACxB78C,KAAKo7C,YAAcp7C,KAAK88C,UACxB98C,KAAK+8C,MAAQ/8C,KAAKo7C,YAAY97C,KAC9BU,KAAKmP,aAAUgG,EAEfnV,KAAKgpC,UAAW,EAChBhpC,KAAKg9C,WAAQ7nC,EACbnV,KAAKi9C,iBAAc9nC,EACnBnV,KAAKk9C,oBAAiB/nC,EACtBnV,KAAKm9C,gBAAahoC,EAClBnV,KAAKo9C,gBAAajoC,EAClBnV,KAAKq9C,qBAAsB,EAC3Br9C,KAAKs9C,oBAAqB,EAC1Bt9C,KAAKu9C,cAAWpoC,EAChBnV,KAAKw9C,UAAY,GACjBx9C,KAAKy9C,8BAAgCA,mBACrCz9C,KAAK09C,2BAA6BA,gBAElC19C,KAAK29C,YACP,CAEAA,UAAAA,GACE,MAAMxtB,EAAOnwB,KAAKo7C,YAClBp7C,KAAKm4C,YACLn4C,KAAK49C,aACLztB,EAAKwsB,SAAWvC,GAAUjqB,EAAKM,OAAQN,GACvCnwB,KAAK69C,cAED79C,KAAKmP,QAAQ+wB,OAASlgC,KAAKg3B,MAAM8mB,gBAAgB,WACnD1Z,QAAQC,KAAK,qKAEjB,CAEA0Z,WAAAA,CAAYj3B,GACN9mB,KAAKtB,QAAUooB,GACjBq1B,GAAYn8C,KAAKo7C,aAEnBp7C,KAAKtB,MAAQooB,CACf,CAEA82B,UAAAA,GACE,MAAM5mB,EAAQh3B,KAAKg3B,MACb7G,EAAOnwB,KAAKo7C,YACZxqB,EAAU5wB,KAAKg+C,aAEfC,EAAWA,CAACptB,EAAM9Z,EAAGiR,EAAGrT,IAAe,MAATkc,EAAe9Z,EAAa,MAAT8Z,EAAelc,EAAIqT,EAEpEk2B,EAAM/tB,EAAKguB,QAAUx4B,GAAeiL,EAAQutB,QAAStC,GAAgB7kB,EAAO,MAC5EonB,EAAMjuB,EAAKkuB,QAAU14B,GAAeiL,EAAQytB,QAASxC,GAAgB7kB,EAAO,MAC5EsnB,EAAMnuB,EAAKouB,QAAU54B,GAAeiL,EAAQ2tB,QAAS1C,GAAgB7kB,EAAO,MAC5E0E,EAAYvL,EAAKuL,UACjB8iB,EAAMruB,EAAKsuB,QAAUR,EAASviB,EAAWwiB,EAAKE,EAAKE,GACnDI,EAAMvuB,EAAKwuB,QAAUV,EAASviB,EAAW0iB,EAAKF,EAAKI,GACzDnuB,EAAKoB,OAASvxB,KAAK4+C,cAAcV,GACjC/tB,EAAKqB,OAASxxB,KAAK4+C,cAAcR,GACjCjuB,EAAK0uB,OAAS7+C,KAAK4+C,cAAcN,GACjCnuB,EAAKK,OAASxwB,KAAK4+C,cAAcJ,GACjCruB,EAAKM,OAASzwB,KAAK4+C,cAAcF,EACnC,CAEAV,UAAAA,GACE,OAAOh+C,KAAKg3B,MAAMt3B,KAAKi7B,SAAS36B,KAAKtB,MACvC,CAEAo+C,OAAAA,GACE,OAAO98C,KAAKg3B,MAAM8nB,eAAe9+C,KAAKtB,MACxC,CAMAkgD,aAAAA,CAAcG,GACZ,OAAO/+C,KAAKg3B,MAAMqF,OAAO0iB,EAC3B,CAKAC,cAAAA,CAAe5iB,GACb,MAAMjM,EAAOnwB,KAAKo7C,YAClB,OAAOhf,IAAUjM,EAAKK,OAClBL,EAAKM,OACLN,EAAKK,MACX,CAEAyuB,KAAAA,GACEj/C,KAAKs1C,QAAQ,QACf,CAKA4J,QAAAA,GACE,MAAM/uB,EAAOnwB,KAAKo7C,YACdp7C,KAAKg9C,OACPvuB,GAAoBzuB,KAAKg9C,MAAOh9C,MAE9BmwB,EAAKwsB,UACPR,GAAYhsB,EAEhB,CAKAgvB,UAAAA,GACE,MAAMvuB,EAAU5wB,KAAKg+C,aACft+C,EAAOkxB,EAAQlxB,OAASkxB,EAAQlxB,KAAO,IACvCs9C,EAAQh9C,KAAKg9C,MAMnB,GAAI13B,GAAS5lB,GAAO,CAClB,MAAMywB,EAAOnwB,KAAKo7C,YAClBp7C,KAAKg9C,MAAQhD,GAAyBt6C,EAAMywB,E,MACvC,GAAI6sB,IAAUt9C,EAAM,CACzB,GAAIs9C,EAAO,CAETvuB,GAAoBuuB,EAAOh9C,MAE3B,MAAMmwB,EAAOnwB,KAAKo7C,YAClBe,GAAYhsB,GACZA,EAAKO,QAAU,E,CAEbhxB,GAAQ2P,OAAO+vC,aAAa1/C,IAC9BmuB,GAAkBnuB,EAAMM,MAE1BA,KAAKw9C,UAAY,GACjBx9C,KAAKg9C,MAAQt9C,C,CAEjB,CAEAm+C,WAAAA,GACE,MAAM1tB,EAAOnwB,KAAKo7C,YAElBp7C,KAAKm/C,aAEDn/C,KAAKy9C,qBACPttB,EAAKS,QAAU,IAAI5wB,KAAKy9C,mBAE5B,CAEA4B,qBAAAA,CAAsBC,GACpB,MAAMnvB,EAAOnwB,KAAKo7C,YACZxqB,EAAU5wB,KAAKg+C,aACrB,IAAIuB,GAAe,EAEnBv/C,KAAKm/C,aAGL,MAAMK,EAAarvB,EAAKwsB,SACxBxsB,EAAKwsB,SAAWvC,GAAUjqB,EAAKM,OAAQN,GAGnCA,EAAKwpB,QAAU/oB,EAAQ+oB,QACzB4F,GAAe,EAEfpD,GAAYhsB,GACZA,EAAKwpB,MAAQ/oB,EAAQ+oB,OAKvB35C,KAAKy/C,gBAAgBH,IAGjBC,GAAgBC,IAAervB,EAAKwsB,YACtCzB,GAAal7C,KAAMmwB,EAAKO,SACxBP,EAAKwsB,SAAWvC,GAAUjqB,EAAKM,OAAQN,GAE3C,CAMAgoB,SAAAA,GACE,MAAMF,EAASj4C,KAAKg3B,MAAMihB,OACpByH,EAAYzH,EAAO0H,iBAAiB3/C,KAAK+8C,OACzC9X,EAASgT,EAAO2H,gBAAgB5/C,KAAKg+C,aAAc0B,GAAW,GACpE1/C,KAAKmP,QAAU8oC,EAAO4H,eAAe5a,EAAQjlC,KAAKy+B,cAClDz+B,KAAKgpC,SAAWhpC,KAAKmP,QAAQ8sB,QAC7Bj8B,KAAK68C,gBAAkB,CAAC,CAC1B,CAMA3T,KAAAA,CAAM5iC,EAAOoJ,GACX,MAAO0rC,YAAajrB,EAAM6sB,MAAOt9C,GAAQM,MACnC,OAACwwB,EAAA,SAAQmsB,GAAYxsB,EACrBmrB,EAAQ9qB,EAAOK,KAErB,IAEIhb,EAAG48B,EAAKxJ,EAFR6W,EAAmB,IAAVx5C,GAAeoJ,IAAUhQ,EAAKgH,QAAgBypB,EAAKI,QAC5Dqb,EAAOtlC,EAAQ,GAAK6pB,EAAKO,QAAQpqB,EAAQ,GAG7C,IAAsB,IAAlBtG,KAAKgpC,SACP7Y,EAAKO,QAAUhxB,EACfywB,EAAKI,SAAU,EACf0Y,EAASvpC,MACJ,CAEHupC,EADEhzB,GAAQvW,EAAK4G,IACNtG,KAAK+/C,eAAe5vB,EAAMzwB,EAAM4G,EAAOoJ,GACvC4V,GAAS5lB,EAAK4G,IACdtG,KAAKggD,gBAAgB7vB,EAAMzwB,EAAM4G,EAAOoJ,GAExC1P,KAAKigD,mBAAmB9vB,EAAMzwB,EAAM4G,EAAOoJ,GAGtD,MAAMwwC,EAA6BA,IAAqB,OAAfzN,EAAI6I,IAAoB1P,GAAQ6G,EAAI6I,GAAS1P,EAAK0P,GAC3F,IAAKzlC,EAAI,EAAGA,EAAInG,IAASmG,EACvBsa,EAAKO,QAAQ7a,EAAIvP,GAASmsC,EAAMxJ,EAAOpzB,GACnCiqC,IACEI,MACFJ,GAAS,GAEXlU,EAAO6G,GAGXtiB,EAAKI,QAAUuvB,C,CAGbnD,GACFzB,GAAal7C,KAAMipC,EAEvB,CAaAgX,kBAAAA,CAAmB9vB,EAAMzwB,EAAM4G,EAAOoJ,GACpC,MAAM,OAAC8gB,EAAA,OAAQC,GAAUN,EACnBmrB,EAAQ9qB,EAAOK,KACf0qB,EAAQ9qB,EAAOI,KACfsvB,EAAS3vB,EAAO4vB,YAChBC,EAAc7vB,IAAWC,EACzBwY,EAAS,IAAIljC,MAAM2J,GACzB,IAAImG,EAAG8Q,EAAMjoB,EAEb,IAAKmX,EAAI,EAAG8Q,EAAOjX,EAAOmG,EAAI8Q,IAAQ9Q,EACpCnX,EAAQmX,EAAIvP,EACZ2iC,EAAOpzB,GAAK,CACV,CAACylC,GAAQ+E,GAAe7vB,EAAO0Y,MAAMiX,EAAOzhD,GAAQA,GACpD,CAAC68C,GAAQ9qB,EAAOyY,MAAMxpC,EAAKhB,GAAQA,IAGvC,OAAOuqC,CACT,CAaA8W,cAAAA,CAAe5vB,EAAMzwB,EAAM4G,EAAOoJ,GAChC,MAAM,OAAC6hB,EAAA,OAAQC,GAAUrB,EACnB8Y,EAAS,IAAIljC,MAAM2J,GACzB,IAAImG,EAAG8Q,EAAMjoB,EAAOF,EAEpB,IAAKqX,EAAI,EAAG8Q,EAAOjX,EAAOmG,EAAI8Q,IAAQ9Q,EACpCnX,EAAQmX,EAAIvP,EACZ9H,EAAOkB,EAAKhB,GACZuqC,EAAOpzB,GAAK,CACVkB,EAAGwa,EAAO2X,MAAM1qC,EAAK,GAAIE,GACzBspB,EAAGwJ,EAAO0X,MAAM1qC,EAAK,GAAIE,IAG7B,OAAOuqC,CACT,CAaA+W,eAAAA,CAAgB7vB,EAAMzwB,EAAM4G,EAAOoJ,GACjC,MAAM,OAAC6hB,EAAA,OAAQC,GAAUrB,GACnB,SAACmwB,EAAW,aAAKC,EAAW,KAAOvgD,KAAKgpC,SACxCC,EAAS,IAAIljC,MAAM2J,GACzB,IAAImG,EAAG8Q,EAAMjoB,EAAOF,EAEpB,IAAKqX,EAAI,EAAG8Q,EAAOjX,EAAOmG,EAAI8Q,IAAQ9Q,EACpCnX,EAAQmX,EAAIvP,EACZ9H,EAAOkB,EAAKhB,GACZuqC,EAAOpzB,GAAK,CACVkB,EAAGwa,EAAO2X,MAAM3gB,GAAiB/pB,EAAM8hD,GAAW5hD,GAClDspB,EAAGwJ,EAAO0X,MAAM3gB,GAAiB/pB,EAAM+hD,GAAW7hD,IAGtD,OAAOuqC,CACT,CAKAuX,SAAAA,CAAU9hD,GACR,OAAOsB,KAAKo7C,YAAY1qB,QAAQhyB,EAClC,CAKA+hD,cAAAA,CAAe/hD,GACb,OAAOsB,KAAKo7C,YAAY17C,KAAKhB,EAC/B,CAKAg7C,UAAAA,CAAWtd,EAAO6M,EAAQrN,GACxB,MAAM5E,EAAQh3B,KAAKg3B,MACb7G,EAAOnwB,KAAKo7C,YACZt2C,EAAQmkC,EAAO7M,EAAMvL,MACrB8oB,EAAQ,CACZrqC,KAAMgqC,GAAwBtiB,GAAO,GACrCrJ,OAAQsb,EAAOoS,QAAQjf,EAAMvL,MAAM+qB,eAErC,OAAOlC,GAAWC,EAAO70C,EAAOqrB,EAAKzxB,MAAO,CAACk9B,QAC/C,CAKA8kB,qBAAAA,CAAsBx5C,EAAOk1B,EAAO6M,EAAQ0Q,GAC1C,MAAMgH,EAAc1X,EAAO7M,EAAMvL,MACjC,IAAI/rB,EAAwB,OAAhB67C,EAAuBC,IAAMD,EACzC,MAAMhzB,EAASgsB,GAAS1Q,EAAOoS,QAAQjf,EAAMvL,MACzC8oB,GAAShsB,IACXgsB,EAAMhsB,OAASA,EACf7oB,EAAQ40C,GAAWC,EAAOgH,EAAa3gD,KAAKo7C,YAAY18C,QAE1DwI,EAAMkM,IAAM9C,KAAK8C,IAAIlM,EAAMkM,IAAKtO,GAChCoC,EAAMiM,IAAM7C,KAAK6C,IAAIjM,EAAMiM,IAAKrO,EAClC,CAKA+7C,SAAAA,CAAUzkB,EAAOqgB,GACf,MAAMtsB,EAAOnwB,KAAKo7C,YACZ1qB,EAAUP,EAAKO,QACfovB,EAAS3vB,EAAKI,SAAW6L,IAAUjM,EAAKK,OACxC7J,EAAO+J,EAAQhqB,OACfo6C,EAAa9gD,KAAKg/C,eAAe5iB,GACjCud,EAAQ6C,GAAYC,EAAUtsB,EAAMnwB,KAAKg3B,OACzC9vB,EAAQ,CAACkM,IAAK5N,OAAO4jB,kBAAmBjW,IAAK3N,OAAOi1C,oBACnDrnC,IAAK2tC,EAAU5tC,IAAK6tC,GAAYhwB,GAAc8vB,GACrD,IAAIjrC,EAAGozB,EAEP,SAASgY,IACPhY,EAASvY,EAAQ7a,GACjB,MAAMikC,EAAa7Q,EAAO6X,EAAWjwB,MACrC,OAAQtL,GAAS0jB,EAAO7M,EAAMvL,QAAUkwB,EAAWjH,GAAckH,EAAWlH,CAC9E,CAEA,IAAKjkC,EAAI,EAAGA,EAAI8Q,IAAQ9Q,EACtB,IAAIorC,MAGJjhD,KAAK0gD,sBAAsBx5C,EAAOk1B,EAAO6M,EAAQ0Q,GAC7CmG,GAEF,MAGJ,GAAIA,EAEF,IAAKjqC,EAAI8Q,EAAO,EAAG9Q,GAAK,IAAKA,EAC3B,IAAIorC,IAAJ,CAGAjhD,KAAK0gD,sBAAsBx5C,EAAOk1B,EAAO6M,EAAQ0Q,GACjD,K,CAGJ,OAAOzyC,CACT,CAEAg6C,kBAAAA,CAAmB9kB,GACjB,MAAM6M,EAASjpC,KAAKo7C,YAAY1qB,QAC1B/C,EAAS,GACf,IAAI9X,EAAG8Q,EAAM7hB,EAEb,IAAK+Q,EAAI,EAAG8Q,EAAOsiB,EAAOviC,OAAQmP,EAAI8Q,IAAQ9Q,EAC5C/Q,EAAQmkC,EAAOpzB,GAAGumB,EAAMvL,MACpBtL,GAASzgB,IACX6oB,EAAOtF,KAAKvjB,GAGhB,OAAO6oB,CACT,CAMAwzB,cAAAA,GACE,OAAO,CACT,CAKAC,gBAAAA,CAAiB1iD,GACf,MAAMyxB,EAAOnwB,KAAKo7C,YACZ5qB,EAASL,EAAKK,OACdC,EAASN,EAAKM,OACdwY,EAASjpC,KAAKwgD,UAAU9hD,GAC9B,MAAO,CACLiQ,MAAO6hB,EAAS,GAAKA,EAAO6wB,iBAAiBpY,EAAOzY,EAAOK,OAAS,GACpE/rB,MAAO2rB,EAAS,GAAKA,EAAO4wB,iBAAiBpY,EAAOxY,EAAOI,OAAS,GAExE,CAKAykB,OAAAA,CAAQ1Z,GACN,MAAMzL,EAAOnwB,KAAKo7C,YAClBp7C,KAAKy3C,OAAO7b,GAAQ,WACpBzL,EAAKskB,MAAQ4E,GAAO1zB,GAAe3lB,KAAKmP,QAAQgpB,KAAMihB,GAAYjpB,EAAKoB,OAAQpB,EAAKqB,OAAQxxB,KAAKmhD,mBACnG,CAKA1J,MAAAA,CAAO7b,GAAO,CAEd8Z,IAAAA,GACE,MAAMna,EAAMv7B,KAAKpC,KACXo5B,EAAQh3B,KAAKg3B,MACb7G,EAAOnwB,KAAKo7C,YACZpgB,EAAW7K,EAAKzwB,MAAQ,GACxB4gC,EAAOtJ,EAAMqd,UACbnf,EAAS,GACT5uB,EAAQtG,KAAKm9C,YAAc,EAC3BztC,EAAQ1P,KAAKo9C,YAAepiB,EAASt0B,OAASJ,EAC9Ci2B,EAA0Bv8B,KAAKmP,QAAQotB,wBAC7C,IAAI1mB,EAMJ,IAJIsa,EAAKS,SACPT,EAAKS,QAAQ8kB,KAAKna,EAAK+E,EAAMh6B,EAAOoJ,GAGjCmG,EAAIvP,EAAOuP,EAAIvP,EAAQoJ,IAASmG,EAAG,CACtC,MAAM42B,EAAUzR,EAASnlB,GACrB42B,EAAQiQ,SAGRjQ,EAAQvX,QAAUqH,EACpBrH,EAAO7M,KAAKokB,GAEZA,EAAQiJ,KAAKna,EAAK+E,GAEtB,CAEA,IAAKzqB,EAAI,EAAGA,EAAIqf,EAAOxuB,SAAUmP,EAC/Bqf,EAAOrf,GAAG6/B,KAAKna,EAAK+E,EAExB,CASAsM,QAAAA,CAASluC,EAAOw2B,GACd,MAAM0G,EAAO1G,EAAS,SAAW,UACjC,YAAiB/f,IAAVzW,GAAuBsB,KAAKo7C,YAAYxqB,QAC3C5wB,KAAKshD,6BAA6B1lB,GAClC57B,KAAKuhD,0BAA0B7iD,GAAS,EAAGk9B,EACjD,CAKA6C,UAAAA,CAAW//B,EAAOw2B,EAAQ0G,GACxB,MAAMhL,EAAU5wB,KAAKg+C,aACrB,IAAInjB,EACJ,GAAIn8B,GAAS,GAAKA,EAAQsB,KAAKo7C,YAAY17C,KAAKgH,OAAQ,CACtD,MAAM+lC,EAAUzsC,KAAKo7C,YAAY17C,KAAKhB,GACtCm8B,EAAU4R,EAAQ8Q,WACf9Q,EAAQ8Q,SAAWvB,GAAkBh8C,KAAKy+B,aAAc//B,EAAO+tC,IAClE5R,EAAQoO,OAASjpC,KAAKwgD,UAAU9hD,GAChCm8B,EAAQqhB,IAAMtrB,EAAQlxB,KAAKhB,GAC3Bm8B,EAAQn8B,MAAQm8B,EAAQohB,UAAYv9C,C,MAEpCm8B,EAAU76B,KAAKu9C,WACZv9C,KAAKu9C,SAAWxB,GAAqB/7C,KAAKg3B,MAAMyH,aAAcz+B,KAAKtB,QACtEm8B,EAAQjK,QAAUA,EAClBiK,EAAQn8B,MAAQm8B,EAAQ/T,aAAe9mB,KAAKtB,MAK9C,OAFAm8B,EAAQ3F,SAAWA,EACnB2F,EAAQe,KAAOA,EACRf,CACT,CAMAymB,4BAAAA,CAA6B1lB,GAC3B,OAAO57B,KAAKwhD,uBAAuBxhD,KAAKy9C,mBAAmBrrC,GAAIwpB,EACjE,CAOA2lB,yBAAAA,CAA0B7iD,EAAOk9B,GAC/B,OAAO57B,KAAKwhD,uBAAuBxhD,KAAK09C,gBAAgBtrC,GAAIwpB,EAAMl9B,EACpE,CAKA8iD,sBAAAA,CAAuBC,EAAa7lB,EAAO,UAAWl9B,GACpD,MAAMw2B,EAAkB,WAAT0G,EACT+B,EAAQ39B,KAAK68C,gBACb3mB,EAAWurB,EAAc,IAAM7lB,EAC/B0gB,EAAS3e,EAAMzH,GACfwrB,EAAU1hD,KAAKq9C,qBAAuB10B,GAAQjqB,GACpD,GAAI49C,EACF,OAAOD,GAAiBC,EAAQoF,GAElC,MAAMzJ,EAASj4C,KAAKg3B,MAAMihB,OACpByH,EAAYzH,EAAO0J,wBAAwB3hD,KAAK+8C,MAAO0E,GACvDvc,EAAWhQ,EAAS,CAAC,GAAGusB,SAAoB,QAASA,EAAa,IAAM,CAACA,EAAa,IACtFxc,EAASgT,EAAO2H,gBAAgB5/C,KAAKg+C,aAAc0B,GACnDz9B,EAAQ5S,OAAOC,KAAKolB,GAASsG,SAASymB,IAGtC5mB,EAAUA,IAAM76B,KAAKy+B,WAAW//B,EAAOw2B,EAAQ0G,GAC/CjO,EAASsqB,EAAO2J,oBAAoB3c,EAAQhjB,EAAO4Y,EAASqK,GAalE,OAXIvX,EAAOirB,UAGTjrB,EAAOirB,QAAU8I,EAKjB/jB,EAAMzH,GAAY7mB,OAAOwyC,OAAOxF,GAAiB1uB,EAAQ+zB,KAGpD/zB,CACT,CAMAm0B,kBAAAA,CAAmBpjD,EAAOoC,EAAYo0B,GACpC,MAAM8B,EAAQh3B,KAAKg3B,MACb2G,EAAQ39B,KAAK68C,gBACb3mB,EAAW,aAAap1B,IACxBw7C,EAAS3e,EAAMzH,GACrB,GAAIomB,EACF,OAAOA,EAET,IAAIntC,EACJ,IAAgC,IAA5B6nB,EAAM7nB,QAAQgmB,UAAqB,CACrC,MAAM8iB,EAASj4C,KAAKg3B,MAAMihB,OACpByH,EAAYzH,EAAO8J,0BAA0B/hD,KAAK+8C,MAAOj8C,GACzDmkC,EAASgT,EAAO2H,gBAAgB5/C,KAAKg+C,aAAc0B,GACzDvwC,EAAU8oC,EAAO4H,eAAe5a,EAAQjlC,KAAKy+B,WAAW//B,EAAOw2B,EAAQp0B,G,CAEzE,MAAMw0B,EAAa,IAAI0iB,GAAWhhB,EAAO7nB,GAAWA,EAAQmmB,YAI5D,OAHInmB,GAAWA,EAAQq2B,aACrB7H,EAAMzH,GAAY7mB,OAAOwyC,OAAOvsB,IAE3BA,CACT,CAMA0sB,gBAAAA,CAAiB7yC,GACf,GAAKA,EAAQypC,QAGb,OAAO54C,KAAKk9C,iBAAmBl9C,KAAKk9C,eAAiB7tC,OAAO8T,OAAO,CAAC,EAAGhU,GACzE,CAMA8yC,cAAAA,CAAermB,EAAMsmB,GACnB,OAAQA,GAAiB9F,GAAmBxgB,IAAS57B,KAAKg3B,MAAMmrB,mBAClE,CAKAC,iBAAAA,CAAkB97C,EAAOs1B,GACvB,MAAMymB,EAAYriD,KAAKuhD,0BAA0Bj7C,EAAOs1B,GAClD0mB,EAA0BtiD,KAAKk9C,eAC/BgF,EAAgBliD,KAAKgiD,iBAAiBK,GACtCJ,EAAiBjiD,KAAKiiD,eAAermB,EAAMsmB,IAAmBA,IAAkBI,EAEtF,OADAtiD,KAAKuiD,oBAAoBL,EAAetmB,EAAMymB,GACvC,CAACH,gBAAeD,iBACzB,CAMAO,aAAAA,CAAc/V,EAAS/tC,EAAOu2B,EAAY2G,GACpCwgB,GAAmBxgB,GACrBvsB,OAAO8T,OAAOspB,EAASxX,GAEvBj1B,KAAK8hD,mBAAmBpjD,EAAOk9B,GAAM6b,OAAOhL,EAASxX,EAEzD,CAMAstB,mBAAAA,CAAoBL,EAAetmB,EAAM6c,GACnCyJ,IAAkB9F,GAAmBxgB,IACvC57B,KAAK8hD,wBAAmB3sC,EAAWymB,GAAM6b,OAAOyK,EAAezJ,EAEnE,CAKAgK,SAAAA,CAAUhW,EAAS/tC,EAAOk9B,EAAM1G,GAC9BuX,EAAQvX,OAASA,EACjB,MAAM/lB,EAAUnP,KAAK4sC,SAASluC,EAAOw2B,GACrCl1B,KAAK8hD,mBAAmBpjD,EAAOk9B,EAAM1G,GAAQuiB,OAAOhL,EAAS,CAG3Dt9B,SAAW+lB,GAAUl1B,KAAKgiD,iBAAiB7yC,IAAaA,GAE5D,CAEAuzC,gBAAAA,CAAiBjW,EAAS3lB,EAAcpoB,GACtCsB,KAAKyiD,UAAUhW,EAAS/tC,EAAO,UAAU,EAC3C,CAEAikD,aAAAA,CAAclW,EAAS3lB,EAAcpoB,GACnCsB,KAAKyiD,UAAUhW,EAAS/tC,EAAO,UAAU,EAC3C,CAKAkkD,wBAAAA,GACE,MAAMnW,EAAUzsC,KAAKo7C,YAAYxqB,QAE7B6b,GACFzsC,KAAKyiD,UAAUhW,OAASt3B,EAAW,UAAU,EAEjD,CAKA0tC,qBAAAA,GACE,MAAMpW,EAAUzsC,KAAKo7C,YAAYxqB,QAE7B6b,GACFzsC,KAAKyiD,UAAUhW,OAASt3B,EAAW,UAAU,EAEjD,CAKAsqC,eAAAA,CAAgBH,GACd,MAAM5/C,EAAOM,KAAKg9C,MACZhiB,EAAWh7B,KAAKo7C,YAAY17C,KAGlC,IAAK,MAAO2uB,EAAQy0B,EAAMC,KAAS/iD,KAAKw9C,UACtCx9C,KAAKquB,GAAQy0B,EAAMC,GAErB/iD,KAAKw9C,UAAY,GAEjB,MAAMwF,EAAUhoB,EAASt0B,OACnBu8C,EAAUvjD,EAAKgH,OACfgJ,EAAQY,KAAK8C,IAAI6vC,EAASD,GAE5BtzC,GAKF1P,KAAKkpC,MAAM,EAAGx5B,GAGZuzC,EAAUD,EACZhjD,KAAKkjD,gBAAgBF,EAASC,EAAUD,EAAS1D,GACxC2D,EAAUD,GACnBhjD,KAAKmjD,gBAAgBF,EAASD,EAAUC,EAE5C,CAKAC,eAAAA,CAAgB58C,EAAOoJ,EAAO4vC,GAAmB,GAC/C,MAAMnvB,EAAOnwB,KAAKo7C,YACZ17C,EAAOywB,EAAKzwB,KACZ6sB,EAAMjmB,EAAQoJ,EACpB,IAAImG,EAEJ,MAAMutC,EAAQjb,IAEZ,IADAA,EAAIzhC,QAAUgJ,EACTmG,EAAIsyB,EAAIzhC,OAAS,EAAGmP,GAAK0W,EAAK1W,IACjCsyB,EAAItyB,GAAKsyB,EAAItyB,EAAInG,IAKrB,IAFA0zC,EAAK1jD,GAEAmW,EAAIvP,EAAOuP,EAAI0W,IAAO1W,EACzBnW,EAAKmW,GAAK,IAAI7V,KAAK09C,gBAGjB19C,KAAKgpC,UACPoa,EAAKjzB,EAAKO,SAEZ1wB,KAAKkpC,MAAM5iC,EAAOoJ,GAEd4vC,GACFt/C,KAAKqjD,eAAe3jD,EAAM4G,EAAOoJ,EAAO,QAE5C,CAEA2zC,cAAAA,CAAe5W,EAASnmC,EAAOoJ,EAAOksB,GAAO,CAK7CunB,eAAAA,CAAgB78C,EAAOoJ,GACrB,MAAMygB,EAAOnwB,KAAKo7C,YAClB,GAAIp7C,KAAKgpC,SAAU,CACjB,MAAMsa,EAAUnzB,EAAKO,QAAQ/B,OAAOroB,EAAOoJ,GACvCygB,EAAKwsB,UACPR,GAAYhsB,EAAMmzB,E,CAGtBnzB,EAAKzwB,KAAKivB,OAAOroB,EAAOoJ,EAC1B,CAKA6zC,KAAAA,CAAMrkD,GACJ,GAAIc,KAAKgpC,SACPhpC,KAAKw9C,UAAUn1B,KAAKnpB,OACf,CACL,MAAOmvB,EAAQy0B,EAAMC,GAAQ7jD,EAC7Bc,KAAKquB,GAAQy0B,EAAMC,E,CAErB/iD,KAAKg3B,MAAMwsB,aAAan7B,KAAK,CAACroB,KAAKtB,SAAUQ,GAC/C,CAEAukD,WAAAA,GACE,MAAM/zC,EAAQg0C,UAAUh9C,OACxB1G,KAAKujD,MAAM,CAAC,kBAAmBvjD,KAAKg+C,aAAat+C,KAAKgH,OAASgJ,EAAOA,GACxE,CAEAi0C,UAAAA,GACE3jD,KAAKujD,MAAM,CAAC,kBAAmBvjD,KAAKo7C,YAAY17C,KAAKgH,OAAS,EAAG,GACnE,CAEAk9C,YAAAA,GACE5jD,KAAKujD,MAAM,CAAC,kBAAmB,EAAG,GACpC,CAEAM,aAAAA,CAAcv9C,EAAOoJ,GACfA,GACF1P,KAAKujD,MAAM,CAAC,kBAAmBj9C,EAAOoJ,IAExC,MAAMo0C,EAAWJ,UAAUh9C,OAAS,EAChCo9C,GACF9jD,KAAKujD,MAAM,CAAC,kBAAmBj9C,EAAOw9C,GAE1C,CAEAC,cAAAA,GACE/jD,KAAKujD,MAAM,CAAC,kBAAmB,EAAGG,UAAUh9C,QAC9C,EC7iCF,SAASs9C,GAAkB5nB,EAAO98B,GAChC,IAAK88B,EAAMv+B,OAAOomD,KAAM,CACtB,MAAMC,EAAe9nB,EAAM6e,wBAAwB37C,GACnD,IAAIquB,EAAS,GAEb,IAAK,IAAI9X,EAAI,EAAG8Q,EAAOu9B,EAAax9C,OAAQmP,EAAI8Q,EAAM9Q,IACpD8X,EAASA,EAAOw2B,OAAOD,EAAaruC,GAAGslC,WAAW+F,mBAAmB9kB,IAEvEA,EAAMv+B,OAAOomD,KAAOr1B,GAAajB,EAAOpD,KAAK,CAACvW,EAAGC,IAAMD,EAAIC,G,CAE7D,OAAOmoB,EAAMv+B,OAAOomD,IACtB,CAMA,SAASG,GAAqBj0B,GAC5B,MAAMiM,EAAQjM,EAAKK,OACb7C,EAASq2B,GAAkB5nB,EAAOjM,EAAK7wB,MAC7C,IACIuW,EAAG8Q,EAAM09B,EAAMzY,EADfx4B,EAAMgpB,EAAMkoB,QAEhB,MAAMC,EAAmBA,KACV,QAATF,IAA4B,QAAVA,IAIlB17B,GAAQijB,KAEVx4B,EAAM9C,KAAK8C,IAAIA,EAAK9C,KAAKuZ,IAAIw6B,EAAOzY,IAASx4B,IAE/Cw4B,EAAOyY,IAGT,IAAKxuC,EAAI,EAAG8Q,EAAOgH,EAAOjnB,OAAQmP,EAAI8Q,IAAQ9Q,EAC5CwuC,EAAOjoB,EAAMnL,iBAAiBtD,EAAO9X,IACrC0uC,IAIF,IADA3Y,OAAOz2B,EACFU,EAAI,EAAG8Q,EAAOyV,EAAMrF,MAAMrwB,OAAQmP,EAAI8Q,IAAQ9Q,EACjDwuC,EAAOjoB,EAAMooB,gBAAgB3uC,GAC7B0uC,IAGF,OAAOnxC,CACT,CAQA,SAASqxC,GAAyB/lD,EAAOgmD,EAAOv1C,EAASw1C,GACvD,MAAMC,EAAYz1C,EAAQ01C,aAC1B,IAAIn2C,EAAMqU,EAaV,OAXIkC,GAAc2/B,IAChBl2C,EAAOg2C,EAAMtxC,IAAMjE,EAAQ21C,mBAC3B/hC,EAAQ5T,EAAQ41C,gBAKhBr2C,EAAOk2C,EAAYD,EACnB5hC,EAAQ,GAGH,CACLiiC,MAAOt2C,EAAOi2C,EACd5hC,QACAzc,MAAOo+C,EAAMO,OAAOvmD,GAAUgQ,EAAO,EAEzC,CAQA,SAASw2C,GAA0BxmD,EAAOgmD,EAAOv1C,EAASw1C,GACxD,MAAMM,EAASP,EAAMO,OACfZ,EAAOY,EAAOvmD,GACpB,IAAIktC,EAAOltC,EAAQ,EAAIumD,EAAOvmD,EAAQ,GAAK,KACvCirC,EAAOjrC,EAAQumD,EAAOv+C,OAAS,EAAIu+C,EAAOvmD,EAAQ,GAAK,KAC3D,MAAMymD,EAAUh2C,EAAQ21C,mBAEX,OAATlZ,IAGFA,EAAOyY,GAAiB,OAAT1a,EAAgB+a,EAAMn4B,IAAMm4B,EAAMp+C,MAAQqjC,EAAO0a,IAGrD,OAAT1a,IAEFA,EAAO0a,EAAOA,EAAOzY,GAGvB,MAAMtlC,EAAQ+9C,GAAQA,EAAO/zC,KAAK8C,IAAIw4B,EAAMjC,IAAS,EAAIwb,EACnDz2C,EAAO4B,KAAKuZ,IAAI8f,EAAOiC,GAAQ,EAAIuZ,EAEzC,MAAO,CACLH,MAAOt2C,EAAOi2C,EACd5hC,MAAO5T,EAAQ41C,cACfz+C,QAEJ,CAEA,SAAS8+C,GAAcC,EAAO7mD,EAAMiyB,EAAQ5a,GAC1C,MAAMyvC,EAAa70B,EAAOyY,MAAMmc,EAAM,GAAIxvC,GACpC0vC,EAAW90B,EAAOyY,MAAMmc,EAAM,GAAIxvC,GAClCzC,EAAM9C,KAAK8C,IAAIkyC,EAAYC,GAC3BpyC,EAAM7C,KAAK6C,IAAImyC,EAAYC,GACjC,IAAIC,EAAWpyC,EACXqyC,EAAStyC,EAET7C,KAAKuZ,IAAIzW,GAAO9C,KAAKuZ,IAAI1W,KAC3BqyC,EAAWryC,EACXsyC,EAASryC,GAKX5U,EAAKiyB,EAAOI,MAAQ40B,EAEpBjnD,EAAKknD,QAAU,CACbF,WACAC,SACAn/C,MAAOg/C,EACP/4B,IAAKg5B,EACLnyC,MACAD,MAEJ,CAEA,SAASwyC,GAAWN,EAAO7mD,EAAMiyB,EAAQ5a,GAMvC,OALII,GAAQovC,GACVD,GAAcC,EAAO7mD,EAAMiyB,EAAQ5a,GAEnCrX,EAAKiyB,EAAOI,MAAQJ,EAAOyY,MAAMmc,EAAOxvC,GAEnCrX,CACT,CAEA,SAASonD,GAAsBz1B,EAAMzwB,EAAM4G,EAAOoJ,GAChD,MAAM8gB,EAASL,EAAKK,OACdC,EAASN,EAAKM,OACd0vB,EAAS3vB,EAAO4vB,YAChBC,EAAc7vB,IAAWC,EACzBwY,EAAS,GACf,IAAIpzB,EAAG8Q,EAAMnoB,EAAM6mD,EAEnB,IAAKxvC,EAAIvP,EAAOqgB,EAAOrgB,EAAQoJ,EAAOmG,EAAI8Q,IAAQ9Q,EAChDwvC,EAAQ3lD,EAAKmW,GACbrX,EAAO,CAAC,EACRA,EAAKgyB,EAAOK,MAAQwvB,GAAe7vB,EAAO0Y,MAAMiX,EAAOtqC,GAAIA,GAC3DozB,EAAO5gB,KAAKs9B,GAAWN,EAAO7mD,EAAMiyB,EAAQ5a,IAE9C,OAAOozB,CACT,CAEA,SAAS4c,GAAWC,GAClB,OAAOA,QAA8B3wC,IAApB2wC,EAAON,eAA4CrwC,IAAlB2wC,EAAOL,MAC3D,CAEA,SAASM,GAAQr3C,EAAM+hB,EAAQu1B,GAC7B,OAAa,IAATt3C,EACKgb,GAAKhb,IAEN+hB,EAAOw1B,eAAiB,GAAK,IAAMx1B,EAAOrd,KAAO4yC,EAAa,GAAK,EAC7E,CAEA,SAASE,GAAYjxB,GACnB,IAAI1O,EAASjgB,EAAOimB,EAAKqJ,EAAKC,EAiB9B,OAhBIZ,EAAWkxB,YACb5/B,EAAU0O,EAAW3G,KAAO2G,EAAWle,EACvCzQ,EAAQ,OACRimB,EAAM,UAENhG,EAAU0O,EAAW3G,KAAO2G,EAAWjN,EACvC1hB,EAAQ,SACRimB,EAAM,OAEJhG,GACFqP,EAAM,MACNC,EAAS,UAETD,EAAM,QACNC,EAAS,OAEJ,CAACvvB,QAAOimB,MAAKhG,UAASqP,MAAKC,SACpC,CAEA,SAASuwB,GAAiBnxB,EAAY9lB,EAASwqC,EAAOj7C,GACpD,IAAI2nD,EAAOl3C,EAAQm3C,cACnB,MAAM/3B,EAAM,CAAC,EAEb,IAAK83B,EAEH,YADApxB,EAAWqxB,cAAgB/3B,GAI7B,IAAa,IAAT83B,EAEF,YADApxB,EAAWqxB,cAAgB,CAAC1wB,KAAK,EAAM7F,OAAO,EAAM8F,QAAQ,EAAM/F,MAAM,IAI1E,MAAM,MAACxpB,EAAA,IAAOimB,EAAA,QAAKhG,EAAA,IAASqP,EAAA,OAAKC,GAAUqwB,GAAYjxB,GAE1C,WAAToxB,GAAqB1M,IACvB1kB,EAAWsxB,oBAAqB,GAC3B5M,EAAM8B,MAAQ,KAAO/8C,EACxB2nD,EAAOzwB,GACG+jB,EAAM+B,SAAW,KAAOh9C,EAClC2nD,EAAOxwB,GAEPtH,EAAIi4B,GAAU3wB,EAAQvvB,EAAOimB,EAAKhG,KAAY,EAC9C8/B,EAAOzwB,IAIXrH,EAAIi4B,GAAUH,EAAM//C,EAAOimB,EAAKhG,KAAY,EAC5C0O,EAAWqxB,cAAgB/3B,CAC7B,CAEA,SAASi4B,GAAUH,EAAMryC,EAAGC,EAAGsS,GAO7B,OANIA,GACF8/B,EAAOI,GAAKJ,EAAMryC,EAAGC,GACrBoyC,EAAOK,GAASL,EAAMpyC,EAAGD,IAEzBqyC,EAAOK,GAASL,EAAMryC,EAAGC,GAEpBoyC,CACT,CAEA,SAASI,GAAKE,EAAM9/B,EAAI+/B,GACtB,OAAOD,IAAS9/B,EAAK+/B,EAAKD,IAASC,EAAK//B,EAAK8/B,CAC/C,CAEA,SAASD,GAAS3zC,EAAGzM,EAAOimB,GAC1B,MAAa,UAANxZ,EAAgBzM,EAAc,QAANyM,EAAcwZ,EAAMxZ,CACrD,CAEA,SAAS8zC,GAAiB5xB,GAAY,cAAC6xB,GAAgB/jC,GACrDkS,EAAW6xB,cAAkC,SAAlBA,EACb,IAAV/jC,EAAc,IAAO,EACrB+jC,CACN,EDqzBAC,EAAAA,GAAAA,GA30BqBnK,GAAA,WAKD,CAAC,IAAEmK,EAAAA,GAAAA,GALFnK,GAAA,qBAUS,OAAImK,EAAAA,GAAAA,GAVbnK,GAAA,kBAeM,MCSZ,MAAMoK,WAAsBpK,GAgDzCqD,kBAAAA,CAAmB9vB,EAAMzwB,EAAM4G,EAAOoJ,GACpC,OAAOk2C,GAAsBz1B,EAAMzwB,EAAM4G,EAAOoJ,EAClD,CAOAqwC,cAAAA,CAAe5vB,EAAMzwB,EAAM4G,EAAOoJ,GAChC,OAAOk2C,GAAsBz1B,EAAMzwB,EAAM4G,EAAOoJ,EAClD,CAOAswC,eAAAA,CAAgB7vB,EAAMzwB,EAAM4G,EAAOoJ,GACjC,MAAM,OAAC8gB,EAAA,OAAQC,GAAUN,GACnB,SAACmwB,EAAW,aAAKC,EAAW,KAAOvgD,KAAKgpC,SACxCiR,EAA2B,MAAhBzpB,EAAOK,KAAeyvB,EAAWC,EAC5CrG,EAA2B,MAAhBzpB,EAAOI,KAAeyvB,EAAWC,EAC5CtX,EAAS,GACf,IAAIpzB,EAAG8Q,EAAMnoB,EAAMqlB,EACnB,IAAKhO,EAAIvP,EAAOqgB,EAAOrgB,EAAQoJ,EAAOmG,EAAI8Q,IAAQ9Q,EAChDgO,EAAMnkB,EAAKmW,GACXrX,EAAO,CAAC,EACRA,EAAKgyB,EAAOK,MAAQL,EAAO0Y,MAAM3gB,GAAiB1E,EAAKo2B,GAAWpkC,GAClEozB,EAAO5gB,KAAKs9B,GAAWp9B,GAAiB1E,EAAKq2B,GAAW17C,EAAMiyB,EAAQ5a,IAExE,OAAOozB,CACT,CAKAyX,qBAAAA,CAAsBx5C,EAAOk1B,EAAO6M,EAAQ0Q,GAC1CsN,MAAMvG,sBAAsBx5C,EAAOk1B,EAAO6M,EAAQ0Q,GAClD,MAAMmM,EAAS7c,EAAOyc,QAClBI,GAAU1pB,IAAUp8B,KAAKo7C,YAAY3qB,SAEvCvpB,EAAMkM,IAAM9C,KAAK8C,IAAIlM,EAAMkM,IAAK0yC,EAAO1yC,KACvClM,EAAMiM,IAAM7C,KAAK6C,IAAIjM,EAAMiM,IAAK2yC,EAAO3yC,KAE3C,CAMAguC,cAAAA,GACE,OAAO,CACT,CAKAC,gBAAAA,CAAiB1iD,GACf,MAAMyxB,EAAOnwB,KAAKo7C,aACZ,OAAC5qB,EAAA,OAAQC,GAAUN,EACnB8Y,EAASjpC,KAAKwgD,UAAU9hD,GACxBonD,EAAS7c,EAAOyc,QAChB5gD,EAAQ+gD,GAAWC,GACrB,IAAMA,EAAOx/C,MAAQ,KAAOw/C,EAAOv5B,IAAM,IACzC,GAAKkE,EAAO4wB,iBAAiBpY,EAAOxY,EAAOI,OAE/C,MAAO,CACLliB,MAAO,GAAK6hB,EAAO6wB,iBAAiBpY,EAAOzY,EAAOK,OAClD/rB,QAEJ,CAEA64C,UAAAA,GACE39C,KAAKq9C,qBAAsB,EAE3B4J,MAAMtJ,aAEN,MAAMxtB,EAAOnwB,KAAKo7C,YAClBjrB,EAAKwpB,MAAQ35C,KAAKg+C,aAAarE,KACjC,CAEAlC,MAAAA,CAAO7b,GACL,MAAMzL,EAAOnwB,KAAKo7C,YAClBp7C,KAAKqjD,eAAelzB,EAAKzwB,KAAM,EAAGywB,EAAKzwB,KAAKgH,OAAQk1B,EACtD,CAEAynB,cAAAA,CAAe6D,EAAM5gD,EAAOoJ,EAAOksB,GACjC,MAAMqjB,EAAiB,UAATrjB,GACR,MAACl9B,EAAO08C,aAAa,OAAC3qB,IAAWzwB,KACjCsuB,EAAOmC,EAAO02B,eACdhB,EAAa11B,EAAOw1B,eACpBvB,EAAQ1kD,KAAKonD,aACb,cAAClF,EAAa,eAAED,GAAkBjiD,KAAKoiD,kBAAkB97C,EAAOs1B,GAEtE,IAAK,IAAI/lB,EAAIvP,EAAOuP,EAAIvP,EAAQoJ,EAAOmG,IAAK,CAC1C,MAAMozB,EAASjpC,KAAKwgD,UAAU3qC,GACxBwxC,EAAUpI,GAASh6B,GAAcgkB,EAAOxY,EAAOI,OAAS,CAACvC,OAAMg5B,KAAMh5B,GAAQtuB,KAAKunD,yBAAyB1xC,GAC3G2xC,EAAUxnD,KAAKynD,yBAAyB5xC,EAAG6uC,GAC3C/K,GAAS1Q,EAAOoS,SAAW,CAAC,GAAG5qB,EAAOI,MAEtCoE,EAAa,CACjBkxB,aACA73B,KAAM+4B,EAAQ/4B,KACdi4B,oBAAqB5M,GAASkM,GAAW5c,EAAOyc,UAAahnD,IAAUi7C,EAAM8B,MAAQ/8C,IAAUi7C,EAAM+B,QACrG3kC,EAAGovC,EAAakB,EAAQC,KAAOE,EAAQE,OACvC1/B,EAAGm+B,EAAaqB,EAAQE,OAASL,EAAQC,KACzC1oB,OAAQunB,EAAaqB,EAAQ94C,KAAO4B,KAAKuZ,IAAIw9B,EAAQ34C,MACrDzO,MAAOkmD,EAAa71C,KAAKuZ,IAAIw9B,EAAQ34C,MAAQ84C,EAAQ94C,MAGnDuzC,IACFhtB,EAAW9lB,QAAU+yC,GAAiBliD,KAAKuhD,0BAA0B1rC,EAAGqxC,EAAKrxC,GAAGqf,OAAS,SAAW0G,IAEtG,MAAMzsB,EAAU8lB,EAAW9lB,SAAW+3C,EAAKrxC,GAAG1G,QAC9Ci3C,GAAiBnxB,EAAY9lB,EAASwqC,EAAOj7C,GAC7CmoD,GAAiB5xB,EAAY9lB,EAASu1C,EAAM3hC,OAC5C/iB,KAAKwiD,cAAc0E,EAAKrxC,GAAIA,EAAGof,EAAY2G,EAC7C,CACF,CASA+rB,UAAAA,CAAWp6B,EAAM0uB,GACf,MAAM,OAACzrB,GAAUxwB,KAAKo7C,YAChB5B,EAAWhpB,EAAOyqB,wBAAwBj7C,KAAK+8C,OAClD3U,OAAOjY,GAAQA,EAAKgrB,WAAWhsC,QAAQy4C,SACpCvN,EAAU7pB,EAAOrhB,QAAQkrC,QACzBM,EAAS,GACTkN,EAAgB7nD,KAAKo7C,YAAYD,WAAWqF,UAAUvE,GACtD6L,EAAcD,GAAiBA,EAAcr3B,EAAOK,MAEpDk3B,EAAY53B,IAChB,MAAM8Y,EAAS9Y,EAAKO,QAAQs3B,KAAKxpD,GAAQA,EAAKgyB,EAAOK,QAAUi3B,GACzDtjC,EAAMykB,GAAUA,EAAO9Y,EAAKM,OAAOI,MAEzC,GAAI5L,GAAcT,IAAQqG,MAAMrG,GAC9B,OAAO,GAIX,IAAK,MAAM2L,KAAQqpB,EACjB,SAAkBrkC,IAAd8mC,IAA2B8L,EAAS53B,QASxB,IAAZkqB,IAAqD,IAAhCM,EAAOvzB,QAAQ+I,EAAKwpB,aAClCxkC,IAAZklC,QAAwCllC,IAAfgb,EAAKwpB,QAC3BgB,EAAOtyB,KAAK8H,EAAKwpB,OAEfxpB,EAAKzxB,QAAU6uB,GACjB,MAWJ,OAJKotB,EAAOj0C,QACVi0C,EAAOtyB,UAAKlT,GAGPwlC,CACT,CAMAsN,cAAAA,CAAevpD,GACb,OAAOsB,KAAK2nD,gBAAWxyC,EAAWzW,GAAOgI,MAC3C,CAEAwhD,aAAAA,GACE,OAAOloD,KAAKmoD,WAAWzhD,MACzB,CAEA0hD,2BAAAA,GACE,MAAM/rB,EAASr8B,KAAKg3B,MAAMqF,OACpBgsB,EAAeroD,KAAKg3B,MAAM7nB,QAAQusB,UACxC,OAAOrsB,OAAOC,KAAK+sB,GAAQ+L,OAAO3pC,GAAO49B,EAAO59B,GAAKoyB,OAASw3B,GAAcvM,OAC9E,CAEAqM,QAAAA,GACE,MAAMt3B,EAAO,CAAC,EACRy3B,EAAmBtoD,KAAKooD,8BAC9B,IAAK,MAAMx3B,KAAW5wB,KAAKg3B,MAAMt3B,KAAKi7B,SACpC9J,EAAKlL,GAC8B,MAAjC3lB,KAAKg3B,MAAM7nB,QAAQusB,UAAoB9K,EAAQutB,QAAUvtB,EAAQytB,QAASiK,KACvE,EAEP,OAAOj5C,OAAOC,KAAKuhB,EACrB,CAUA03B,cAAAA,CAAezhC,EAAc1nB,EAAM68C,GACjC,MAAMtB,EAAS36C,KAAK2nD,WAAW7gC,EAAcm1B,GACvCv9C,OAAkByW,IAAV/V,EACVu7C,EAAOvzB,QAAQhoB,IACd,EAEL,OAAmB,IAAXV,EACJi8C,EAAOj0C,OAAS,EAChBhI,CACN,CAKA0oD,SAAAA,GACE,MAAM/lB,EAAOrhC,KAAKmP,QACZghB,EAAOnwB,KAAKo7C,YACZ5qB,EAASL,EAAKK,OACdy0B,EAAS,GACf,IAAIpvC,EAAG8Q,EAEP,IAAK9Q,EAAI,EAAG8Q,EAAOwJ,EAAKzwB,KAAKgH,OAAQmP,EAAI8Q,IAAQ9Q,EAC/CovC,EAAO58B,KAAKmI,EAAOS,iBAAiBjxB,KAAKwgD,UAAU3qC,GAAG2a,EAAOK,MAAOhb,IAGtE,MAAMgvC,EAAexjB,EAAKwjB,aACpBzxC,EAAMyxC,GAAgBT,GAAqBj0B,GAEjD,MAAO,CACL/c,MACA6xC,SACA3+C,MAAOkqB,EAAOg4B,YACdj8B,IAAKiE,EAAOi4B,UACZ9D,WAAY3kD,KAAKioD,iBACjB7rB,MAAO5L,EACPo3B,QAASvmB,EAAKumB,QAEd7kC,MAAO8hC,EAAe,EAAIxjB,EAAKyjB,mBAAqBzjB,EAAK0jB,cAE7D,CAMAwC,wBAAAA,CAAyB7oD,GACvB,MAAO08C,aAAa,OAAC3qB,EAAA,SAAQksB,EAAUj+C,MAAOooB,GAAe3X,SAAUmf,KAAMo6B,EAAS,aAAEC,IAAiB3oD,KACnGgmD,EAAa0C,GAAa,EAC1Bzf,EAASjpC,KAAKwgD,UAAU9hD,GACxBonD,EAAS7c,EAAOyc,QAChBkD,EAAW/C,GAAWC,GAC5B,IAGIwB,EAAM54C,EAHN5J,EAAQmkC,EAAOxY,EAAOI,MACtBvqB,EAAQ,EACRI,EAASi2C,EAAW38C,KAAK05C,WAAWjpB,EAAQwY,EAAQ0T,GAAY73C,EAGhE4B,IAAW5B,IACbwB,EAAQI,EAAS5B,EACjB4B,EAAS5B,GAGP8jD,IACF9jD,EAAQghD,EAAON,SACf9+C,EAASo/C,EAAOL,OAASK,EAAON,SAElB,IAAV1gD,GAAe4kB,GAAK5kB,KAAW4kB,GAAKo8B,EAAOL,UAC7Cn/C,EAAQ,GAEVA,GAASxB,GAGX,MAAMwgD,EAAcrgC,GAAcyjC,IAAeE,EAAuBtiD,EAAZoiD,EAC5D,IAAIp6B,EAAOmC,EAAOQ,iBAAiBq0B,GAWnC,GAREgC,EADEtnD,KAAKg3B,MAAM6xB,kBAAkBnqD,GACxB+xB,EAAOQ,iBAAiB3qB,EAAQI,GAGhC4nB,EAGT5f,EAAO44C,EAAOh5B,EAEVhe,KAAKuZ,IAAInb,GAAQi6C,EAAc,CACjCj6C,EAAOq3C,GAAQr3C,EAAM+hB,EAAQu1B,GAAc2C,EACvC7jD,IAAUkhD,IACZ13B,GAAQ5f,EAAO,GAEjB,MAAMo6C,EAAar4B,EAAOs4B,mBAAmB,GACvCC,EAAWv4B,EAAOs4B,mBAAmB,GACrC31C,EAAM9C,KAAK8C,IAAI01C,EAAYE,GAC3B71C,EAAM7C,KAAK6C,IAAI21C,EAAYE,GACjC16B,EAAOhe,KAAK6C,IAAI7C,KAAK8C,IAAIkb,EAAMnb,GAAMC,GACrCk0C,EAAOh5B,EAAO5f,EAEViuC,IAAaiM,IAEf3f,EAAOoS,QAAQ5qB,EAAOI,MAAM+qB,cAAc90B,GAAgB2J,EAAOw4B,iBAAiB3B,GAAQ72B,EAAOw4B,iBAAiB36B,G,CAItH,GAAIA,IAASmC,EAAOQ,iBAAiB+0B,GAAa,CAChD,MAAMkD,EAAWx/B,GAAKhb,GAAQ+hB,EAAO04B,qBAAqBnD,GAAc,EACxE13B,GAAQ46B,EACRx6C,GAAQw6C,C,CAGV,MAAO,CACLx6C,OACA4f,OACAg5B,OACAI,OAAQJ,EAAO54C,EAAO,EAE1B,CAKA+4C,wBAAAA,CAAyB/oD,EAAOgmD,GAC9B,MAAMtoB,EAAQsoB,EAAMtoB,MACdjtB,EAAUnP,KAAKmP,QACf44C,EAAW54C,EAAQ44C,SACnBqB,EAAkBzjC,GAAexW,EAAQi6C,gBAAiBC,KAChE,IAAI3B,EAAQh5C,EACZ,MAAM46C,EAAYtpD,KAAKkoD,gBACvB,GAAIxD,EAAMkD,QAAS,CACjB,MAAMjD,EAAaoD,EAAW/nD,KAAKioD,eAAevpD,GAASgmD,EAAMC,WAC3Dz9C,EAAiC,SAAzBiI,EAAQ01C,aAClBK,GAA0BxmD,EAAOgmD,EAAOv1C,EAASw1C,EAAa2E,GAC9D7E,GAAyB/lD,EAAOgmD,EAAOv1C,EAASw1C,EAAa2E,GAC3DC,EAA0C,MAAjCvpD,KAAKg3B,MAAM7nB,QAAQusB,UAAoB17B,KAAKg+C,aAAaG,QAAUn+C,KAAKg+C,aAAaK,QAC9FmL,EAAaxpD,KAAKmoD,WAAW/gC,QAAQzB,GAAe4jC,EAAQvpD,KAAKooD,gCACjEqB,EAAazpD,KAAKuoD,eAAevoD,KAAKtB,MAAOsB,KAAKo7C,YAAYzB,MAAOoO,EAAWrpD,OAAQyW,GAAaq0C,EAC3G9B,EAASxgD,EAAMZ,MAASY,EAAM89C,MAAQyE,EAAeviD,EAAM89C,MAAQ,EACnEt2C,EAAO4B,KAAK8C,IAAIg2C,EAAiBliD,EAAM89C,MAAQ99C,EAAM6b,M,MAGrD2kC,EAAStrB,EAAMnL,iBAAiBjxB,KAAKwgD,UAAU9hD,GAAO09B,EAAMvL,MAAOnyB,GACnEgQ,EAAO4B,KAAK8C,IAAIg2C,EAAiB1E,EAAMtxC,IAAMsxC,EAAM3hC,OAIrD,MAAO,CACLuL,KAAMo5B,EAASh5C,EAAO,EACtB44C,KAAMI,EAASh5C,EAAO,EACtBg5C,SACAh5C,OAEJ,CAEAgnC,IAAAA,GACE,MAAMvlB,EAAOnwB,KAAKo7C,YACZ3qB,EAASN,EAAKM,OACdi5B,EAAQv5B,EAAKzwB,KACbinB,EAAO+iC,EAAMhjD,OACnB,IAAImP,EAAI,EAER,KAAOA,EAAI8Q,IAAQ9Q,EACsB,OAAnC7V,KAAKwgD,UAAU3qC,GAAG4a,EAAOI,OAAmB64B,EAAM7zC,GAAG6mC,QACvDgN,EAAM7zC,GAAG6/B,KAAK11C,KAAKpC,KAGzB,GAEFmpD,EAAAA,GAAAA,GAxaqBC,GAAsB,KAE7B,QAAMD,EAAAA,GAAAA,GAFCC,GAAsB,WAOvB,CAChBvJ,oBAAoB,EACpBC,gBAAiB,MAEjBoH,mBAAoB,GACpBC,cAAe,GACf6C,SAAS,EAETtyB,WAAY,CACVf,QAAS,CACPj1B,KAAM,SACN21B,WAAY,CAAC,IAAK,IAAK,OAAQ,QAAS,eAG5C8xB,EAAAA,GAAAA,GArBiBC,GAAsB,YA0BtB,CACjB3qB,OAAQ,CACNstB,QAAS,CACPrqD,KAAM,WACN04B,QAAQ,EACRK,KAAM,CACJL,QAAQ,IAGZ4xB,QAAS,CACPtqD,KAAM,SACN24B,aAAa,MCnSN,MAAM4xB,WAAyBjN,GAiC5Ce,UAAAA,GACE39C,KAAKq9C,qBAAsB,EAC3B4J,MAAMtJ,YACR,CAMAsC,kBAAAA,CAAmB9vB,EAAMzwB,EAAM4G,EAAOoJ,GACpC,MAAMu5B,EAASge,MAAMhH,mBAAmB9vB,EAAMzwB,EAAM4G,EAAOoJ,GAC3D,IAAK,IAAImG,EAAI,EAAGA,EAAIozB,EAAOviC,OAAQmP,IACjCozB,EAAOpzB,GAAG6vC,QAAU1lD,KAAKuhD,0BAA0B1rC,EAAIvP,GAAOg5B,OAEhE,OAAO2J,CACT,CAMA8W,cAAAA,CAAe5vB,EAAMzwB,EAAM4G,EAAOoJ,GAChC,MAAMu5B,EAASge,MAAMlH,eAAe5vB,EAAMzwB,EAAM4G,EAAOoJ,GACvD,IAAK,IAAImG,EAAI,EAAGA,EAAIozB,EAAOviC,OAAQmP,IAAK,CACtC,MAAMrX,EAAOkB,EAAK4G,EAAQuP,GAC1BozB,EAAOpzB,GAAG6vC,QAAU//B,GAAennB,EAAK,GAAIwB,KAAKuhD,0BAA0B1rC,EAAIvP,GAAOg5B,OACxF,CACA,OAAO2J,CACT,CAMA+W,eAAAA,CAAgB7vB,EAAMzwB,EAAM4G,EAAOoJ,GACjC,MAAMu5B,EAASge,MAAMjH,gBAAgB7vB,EAAMzwB,EAAM4G,EAAOoJ,GACxD,IAAK,IAAImG,EAAI,EAAGA,EAAIozB,EAAOviC,OAAQmP,IAAK,CACtC,MAAMrX,EAAOkB,EAAK4G,EAAQuP,GAC1BozB,EAAOpzB,GAAG6vC,QAAU//B,GAAennB,GAAQA,EAAKmW,IAAMnW,EAAKmW,EAAG3U,KAAKuhD,0BAA0B1rC,EAAIvP,GAAOg5B,OAC1G,CACA,OAAO2J,CACT,CAKAkY,cAAAA,GACE,MAAMzhD,EAAOM,KAAKo7C,YAAY17C,KAE9B,IAAIyT,EAAM,EACV,IAAK,IAAI0C,EAAInW,EAAKgH,OAAS,EAAGmP,GAAK,IAAKA,EACtC1C,EAAM7C,KAAK6C,IAAIA,EAAKzT,EAAKmW,GAAGnH,KAAK1O,KAAKuhD,0BAA0B1rC,IAAM,GAExE,OAAO1C,EAAM,GAAKA,CACpB,CAKAiuC,gBAAAA,CAAiB1iD,GACf,MAAMyxB,EAAOnwB,KAAKo7C,YACZ+E,EAASngD,KAAKg3B,MAAMt3B,KAAKygD,QAAU,IACnC,OAAC5uB,EAAA,OAAQC,GAAUrB,EACnB8Y,EAASjpC,KAAKwgD,UAAU9hD,GACxBqY,EAAIwa,EAAO8vB,iBAAiBpY,EAAOlyB,GACnCiR,EAAIwJ,EAAO6vB,iBAAiBpY,EAAOjhB,GACnCrT,EAAIs0B,EAAOyc,QAEjB,MAAO,CACL/2C,MAAOwxC,EAAOzhD,IAAU,GACxBoG,MAAO,IAAMiS,EAAI,KAAOiR,GAAKrT,EAAI,KAAOA,EAAI,IAAM,IAEtD,CAEA8iC,MAAAA,CAAO7b,GACL,MAAMxL,EAASpwB,KAAKo7C,YAAY17C,KAGhCM,KAAKqjD,eAAejzB,EAAQ,EAAGA,EAAO1pB,OAAQk1B,EAChD,CAEAynB,cAAAA,CAAejzB,EAAQ9pB,EAAOoJ,EAAOksB,GACnC,MAAMqjB,EAAiB,UAATrjB,GACR,OAACpL,EAAA,OAAQC,GAAUzwB,KAAKo7C,aACxB,cAAC8G,EAAa,eAAED,GAAkBjiD,KAAKoiD,kBAAkB97C,EAAOs1B,GAChE0f,EAAQ9qB,EAAOK,KACf0qB,EAAQ9qB,EAAOI,KAErB,IAAK,IAAIhb,EAAIvP,EAAOuP,EAAIvP,EAAQoJ,EAAOmG,IAAK,CAC1C,MAAMub,EAAQhB,EAAOva,GACfozB,GAAUgW,GAASj/C,KAAKwgD,UAAU3qC,GAClCof,EAAa,CAAC,EACd8V,EAAS9V,EAAWqmB,GAAS2D,EAAQzuB,EAAOu4B,mBAAmB,IAAOv4B,EAAOS,iBAAiBgY,EAAOqS,IACrGtQ,EAAS/V,EAAWsmB,GAAS0D,EAAQxuB,EAAO02B,eAAiB12B,EAAOQ,iBAAiBgY,EAAOsS,IAElGtmB,EAAWoU,KAAOxe,MAAMkgB,IAAWlgB,MAAMmgB,GAErCiX,IACFhtB,EAAW9lB,QAAU+yC,GAAiBliD,KAAKuhD,0BAA0B1rC,EAAGub,EAAM8D,OAAS,SAAW0G,GAE9FqjB,IACFhqB,EAAW9lB,QAAQmwB,OAAS,IAIhCt/B,KAAKwiD,cAAcpxB,EAAOvb,EAAGof,EAAY2G,EAC3C,CACF,CAOA2lB,yBAAAA,CAA0B7iD,EAAOk9B,GAC/B,MAAMqN,EAASjpC,KAAKwgD,UAAU9hD,GAC9B,IAAIivB,EAASs5B,MAAM1F,0BAA0B7iD,EAAOk9B,GAGhDjO,EAAOirB,UACTjrB,EAASte,OAAO8T,OAAO,CAAC,EAAGwK,EAAQ,CAACirB,SAAS,KAI/C,MAAMtZ,EAAS3R,EAAO2R,OAMtB,MALa,WAAT1D,IACFjO,EAAO2R,OAAS,GAElB3R,EAAO2R,QAAU3Z,GAAesjB,GAAUA,EAAOyc,QAASpmB,GAEnD3R,CACT,EC9JF,SAASm8B,GAAkBzqB,EAAU0qB,EAAeC,GAClD,IAAIC,EAAS,EACTC,EAAS,EACT3c,EAAU,EACVC,EAAU,EAEd,GAAIuc,EAAgB9gC,GAAK,CACvB,MAAMkhC,EAAa9qB,EACb+qB,EAAWD,EAAaJ,EACxBM,EAAS/5C,KAAK6iB,IAAIg3B,GAClBG,EAASh6C,KAAK4hB,IAAIi4B,GAClBI,EAAOj6C,KAAK6iB,IAAIi3B,GAChBI,EAAOl6C,KAAK4hB,IAAIk4B,GAChBK,EAAUA,CAAC3+B,EAAO9X,EAAGC,IAAMqY,GAAcR,EAAOq+B,EAAYC,GAAU,GAAQ,EAAI95C,KAAK6C,IAAIa,EAAGA,EAAIg2C,EAAQ/1C,EAAGA,EAAI+1C,GACjHU,EAAUA,CAAC5+B,EAAO9X,EAAGC,IAAMqY,GAAcR,EAAOq+B,EAAYC,GAAU,IAAS,EAAI95C,KAAK8C,IAAIY,EAAGA,EAAIg2C,EAAQ/1C,EAAGA,EAAI+1C,GAClHW,EAAOF,EAAQ,EAAGJ,EAAQE,GAC1BK,EAAOH,EAAQnhC,GAASghC,EAAQE,GAChCK,EAAOH,EAAQ1hC,GAAIqhC,EAAQE,GAC3BO,EAAOJ,EAAQ1hC,GAAKM,GAASghC,EAAQE,GAC3CP,GAAUU,EAAOE,GAAQ,EACzBX,GAAUU,EAAOE,GAAQ,EACzBvd,IAAYod,EAAOE,GAAQ,EAC3Brd,IAAYod,EAAOE,GAAQ,C,CAE7B,MAAO,CAACb,SAAQC,SAAQ3c,UAASC,UACnC,EDsIAuZ,EAAAA,GAAAA,GArKqB8C,GAAyB,KAEhC,WAAS9C,EAAAA,GAAAA,GAFF8C,GAAyB,WAO1B,CAChBpM,oBAAoB,EACpBC,gBAAiB,QAEjBpoB,WAAY,CACVf,QAAS,CACPj1B,KAAM,SACN21B,WAAY,CAAC,IAAK,IAAK,cAAe,eAG1C8xB,EAAAA,GAAAA,GAjBiB8C,GAAyB,YAsBzB,CACjBxtB,OAAQ,CACNtlB,EAAG,CACDzX,KAAM,UAER0oB,EAAG,CACD1oB,KAAM,aCKC,MAAMyrD,WAA2BnO,GA6F9Cn5B,WAAAA,CAAYuT,EAAOlQ,GACjBmgC,MAAMjwB,EAAOlQ,GAEb9mB,KAAKq9C,qBAAsB,EAC3Br9C,KAAKgrD,iBAAc71C,EACnBnV,KAAKirD,iBAAc91C,EACnBnV,KAAKutC,aAAUp4B,EACfnV,KAAKwtC,aAAUr4B,CACjB,CAEAyoC,UAAAA,GAAc,CAKd1U,KAAAA,CAAM5iC,EAAOoJ,GACX,MAAMhQ,EAAOM,KAAKg+C,aAAat+C,KACzBywB,EAAOnwB,KAAKo7C,YAElB,IAAsB,IAAlBp7C,KAAKgpC,SACP7Y,EAAKO,QAAUhxB,MACV,CACL,IAOImW,EAAG8Q,EAPHukC,EAAUr1C,IAAOnW,EAAKmW,GAE1B,GAAIyP,GAAS5lB,EAAK4G,IAAS,CACzB,MAAM,IAAC7H,EAAM,SAAWuB,KAAKgpC,SAC7BkiB,EAAUr1C,IAAO0S,GAAiB7oB,EAAKmW,GAAIpX,E,CAI7C,IAAKoX,EAAIvP,EAAOqgB,EAAOrgB,EAAQoJ,EAAOmG,EAAI8Q,IAAQ9Q,EAChDsa,EAAKO,QAAQ7a,GAAKq1C,EAAOr1C,E,CAG/B,CAKAs1C,YAAAA,GACE,OAAOhgC,GAAUnrB,KAAKmP,QAAQkwB,SAAW,GAC3C,CAKA+rB,iBAAAA,GACE,OAAOjgC,GAAUnrB,KAAKmP,QAAQ46C,cAChC,CAMAsB,mBAAAA,GACE,IAAIj4C,EAAM6V,GACN9V,GAAO8V,GAEX,IAAK,IAAIpT,EAAI,EAAGA,EAAI7V,KAAKg3B,MAAMt3B,KAAKi7B,SAASj0B,SAAUmP,EACrD,GAAI7V,KAAKg3B,MAAMs0B,iBAAiBz1C,IAAM7V,KAAKg3B,MAAM8nB,eAAejpC,GAAGvW,OAASU,KAAK+8C,MAAO,CACtF,MAAM5B,EAAan7C,KAAKg3B,MAAM8nB,eAAejpC,GAAGslC,WAC1C9b,EAAW8b,EAAWgQ,eACtBpB,EAAgB5O,EAAWiQ,oBAEjCh4C,EAAM9C,KAAK8C,IAAIA,EAAKisB,GACpBlsB,EAAM7C,KAAK6C,IAAIA,EAAKksB,EAAW0qB,E,CAInC,MAAO,CACL1qB,SAAUjsB,EACV22C,cAAe52C,EAAMC,EAEzB,CAKAqkC,MAAAA,CAAO7b,GACL,MAAM5E,EAAQh3B,KAAKg3B,OACb,UAACqd,GAAard,EACd7G,EAAOnwB,KAAKo7C,YACZmQ,EAAOp7B,EAAKzwB,KACZ8rD,EAAUxrD,KAAKyrD,oBAAsBzrD,KAAK0rD,aAAaH,GAAQvrD,KAAKmP,QAAQq8C,QAC5EG,EAAUr7C,KAAK6C,KAAK7C,KAAK8C,IAAIihC,EAAUp0C,MAAOo0C,EAAUzV,QAAU4sB,GAAW,EAAG,GAChFxB,EAAS15C,KAAK8C,IAAIwS,GAAa5lB,KAAKmP,QAAQ66C,OAAQ2B,GAAU,GAC9DC,EAAc5rD,KAAK6rD,eAAe7rD,KAAKtB,QAKvC,cAACqrD,EAAA,SAAe1qB,GAAYr/B,KAAKqrD,uBACjC,OAACpB,EAAA,OAAQC,EAAA,QAAQ3c,EAAA,QAASC,GAAWsc,GAAkBzqB,EAAU0qB,EAAeC,GAChFjnB,GAAYsR,EAAUp0C,MAAQurD,GAAWvB,EACzC7b,GAAaiG,EAAUzV,OAAS4sB,GAAWtB,EAC3C4B,EAAYx7C,KAAK6C,IAAI7C,KAAK8C,IAAI2vB,EAAUqL,GAAa,EAAG,GACxD6c,EAAcjlC,GAAYhmB,KAAKmP,QAAQmwB,OAAQwsB,GAC/Cd,EAAc16C,KAAK6C,IAAI83C,EAAcjB,EAAQ,GAC7C+B,GAAgBd,EAAcD,GAAehrD,KAAKgsD,gCACxDhsD,KAAKutC,QAAUA,EAAU0d,EACzBjrD,KAAKwtC,QAAUA,EAAUyd,EAEzB96B,EAAKxf,MAAQ3Q,KAAKisD,iBAElBjsD,KAAKirD,YAAcA,EAAcc,EAAe/rD,KAAKksD,qBAAqBlsD,KAAKtB,OAC/EsB,KAAKgrD,YAAc16C,KAAK6C,IAAInT,KAAKirD,YAAcc,EAAeH,EAAa,GAE3E5rD,KAAKqjD,eAAekI,EAAM,EAAGA,EAAK7kD,OAAQk1B,EAC5C,CAKAuwB,cAAAA,CAAet2C,EAAGopC,GAChB,MAAM5d,EAAOrhC,KAAKmP,QACZghB,EAAOnwB,KAAKo7C,YACZ2O,EAAgB/pD,KAAKorD,oBAC3B,OAAInM,GAAU5d,EAAKlM,UAAUi3B,gBAAmBpsD,KAAKg3B,MAAM6xB,kBAAkBhzC,IAA0B,OAApBsa,EAAKO,QAAQ7a,IAAesa,EAAKzwB,KAAKmW,GAAG6mC,OACnH,EAEF18C,KAAKqsD,uBAAuBl8B,EAAKO,QAAQ7a,GAAKk0C,EAAgB9gC,GACvE,CAEAo6B,cAAAA,CAAekI,EAAMjlD,EAAOoJ,EAAOksB,GACjC,MAAMqjB,EAAiB,UAATrjB,EACR5E,EAAQh3B,KAAKg3B,MACbqd,EAAYrd,EAAMqd,UAClBhT,EAAOrK,EAAM7nB,QACbm9C,EAAgBjrB,EAAKlM,UACrBo3B,GAAWlY,EAAUvkB,KAAOukB,EAAUtkB,OAAS,EAC/Cy8B,GAAWnY,EAAUze,IAAMye,EAAUxe,QAAU,EAC/C42B,EAAexN,GAASqN,EAAcG,aACtCzB,EAAcyB,EAAe,EAAIzsD,KAAKgrD,YACtCC,EAAcwB,EAAe,EAAIzsD,KAAKirD,aACtC,cAAC/I,EAAa,eAAED,GAAkBjiD,KAAKoiD,kBAAkB97C,EAAOs1B,GACtE,IACI/lB,EADAs0C,EAAanqD,KAAKmrD,eAGtB,IAAKt1C,EAAI,EAAGA,EAAIvP,IAASuP,EACvBs0C,GAAcnqD,KAAKmsD,eAAet2C,EAAGopC,GAGvC,IAAKppC,EAAIvP,EAAOuP,EAAIvP,EAAQoJ,IAASmG,EAAG,CACtC,MAAMk0C,EAAgB/pD,KAAKmsD,eAAet2C,EAAGopC,GACvCrf,EAAM2rB,EAAK11C,GACXof,EAAa,CACjBle,EAAGw1C,EAAUvsD,KAAKutC,QAClBvlB,EAAGwkC,EAAUxsD,KAAKwtC,QAClB2c,aACAC,SAAUD,EAAaJ,EACvBA,gBACAkB,cACAD,eAEE/I,IACFhtB,EAAW9lB,QAAU+yC,GAAiBliD,KAAKuhD,0BAA0B1rC,EAAG+pB,EAAI1K,OAAS,SAAW0G,IAElGuuB,GAAcJ,EAEd/pD,KAAKwiD,cAAc5iB,EAAK/pB,EAAGof,EAAY2G,EACzC,CACF,CAEAqwB,cAAAA,GACE,MAAM97B,EAAOnwB,KAAKo7C,YACZsR,EAAWv8B,EAAKzwB,KACtB,IACImW,EADAlF,EAAQ,EAGZ,IAAKkF,EAAI,EAAGA,EAAI62C,EAAShmD,OAAQmP,IAAK,CACpC,MAAM/Q,EAAQqrB,EAAKO,QAAQ7a,GACb,OAAV/Q,GAAmB+lB,MAAM/lB,KAAU9E,KAAKg3B,MAAM6xB,kBAAkBhzC,IAAO62C,EAAS72C,GAAG6mC,SACrF/rC,GAASL,KAAKuZ,IAAI/kB,GAEtB,CAEA,OAAO6L,CACT,CAEA07C,sBAAAA,CAAuBvnD,GACrB,MAAM6L,EAAQ3Q,KAAKo7C,YAAYzqC,MAC/B,OAAIA,EAAQ,IAAMka,MAAM/lB,GACfmkB,IAAO3Y,KAAKuZ,IAAI/kB,GAAS6L,GAE3B,CACT,CAEAywC,gBAAAA,CAAiB1iD,GACf,MAAMyxB,EAAOnwB,KAAKo7C,YACZpkB,EAAQh3B,KAAKg3B,MACbmpB,EAASnpB,EAAMt3B,KAAKygD,QAAU,GAC9Br7C,EAAQ2xB,GAAatG,EAAKO,QAAQhyB,GAAQs4B,EAAM7nB,QAAQ8mB,QAE9D,MAAO,CACLtnB,MAAOwxC,EAAOzhD,IAAU,GACxBoG,QAEJ,CAEA2mD,iBAAAA,CAAkBF,GAChB,IAAIp4C,EAAM,EACV,MAAM6jB,EAAQh3B,KAAKg3B,MACnB,IAAInhB,EAAG8Q,EAAMwJ,EAAMgrB,EAAYhsC,EAE/B,IAAKo8C,EAEH,IAAK11C,EAAI,EAAG8Q,EAAOqQ,EAAMt3B,KAAKi7B,SAASj0B,OAAQmP,EAAI8Q,IAAQ9Q,EACzD,GAAImhB,EAAMs0B,iBAAiBz1C,GAAI,CAC7Bsa,EAAO6G,EAAM8nB,eAAejpC,GAC5B01C,EAAOp7B,EAAKzwB,KACZy7C,EAAahrB,EAAKgrB,WAClB,K,CAKN,IAAKoQ,EACH,OAAO,EAGT,IAAK11C,EAAI,EAAG8Q,EAAO4kC,EAAK7kD,OAAQmP,EAAI8Q,IAAQ9Q,EAC1C1G,EAAUgsC,EAAWoG,0BAA0B1rC,GACnB,UAAxB1G,EAAQw9C,cACVx5C,EAAM7C,KAAK6C,IAAIA,EAAKhE,EAAQgxB,aAAe,EAAGhxB,EAAQy9C,kBAAoB,IAG9E,OAAOz5C,CACT,CAEAu4C,YAAAA,CAAaH,GACX,IAAIp4C,EAAM,EAEV,IAAK,IAAI0C,EAAI,EAAG8Q,EAAO4kC,EAAK7kD,OAAQmP,EAAI8Q,IAAQ9Q,EAAG,CACjD,MAAM1G,EAAUnP,KAAKuhD,0BAA0B1rC,GAC/C1C,EAAM7C,KAAK6C,IAAIA,EAAKhE,EAAQ6oB,QAAU,EAAG7oB,EAAQ09C,aAAe,EAClE,CACA,OAAO15C,CACT,CAMA+4C,oBAAAA,CAAqBplC,GACnB,IAAIgmC,EAAmB,EAEvB,IAAK,IAAIj3C,EAAI,EAAGA,EAAIiR,IAAgBjR,EAC9B7V,KAAKg3B,MAAMs0B,iBAAiBz1C,KAC9Bi3C,GAAoB9sD,KAAK6rD,eAAeh2C,IAI5C,OAAOi3C,CACT,CAKAjB,cAAAA,CAAe/kC,GACb,OAAOxW,KAAK6C,IAAIwS,GAAe3lB,KAAKg3B,MAAMt3B,KAAKi7B,SAAS7T,GAAc9C,OAAQ,GAAI,EACpF,CAMAgoC,6BAAAA,GACE,OAAOhsD,KAAKksD,qBAAqBlsD,KAAKg3B,MAAMt3B,KAAKi7B,SAASj0B,SAAW,CACvE,GACFqgD,EAAAA,GAAAA,GA1WqBgE,GAA2B,KAElC,aAAWhE,EAAAA,GAAAA,GAFJgE,GAA2B,WAO5B,CAChBtN,oBAAoB,EACpBC,gBAAiB,MACjBvoB,UAAW,CAETi3B,eAAe,EAEfK,cAAc,GAEhBn3B,WAAY,CACVf,QAAS,CACPj1B,KAAM,SACN21B,WAAY,CAAC,gBAAiB,WAAY,cAAe,cAAe,aAAc,IAAK,IAAK,SAAU,cAAe,aAI7H+0B,OAAQ,MAGR3qB,SAAU,EAGV0qB,cAAe,IAGfzqB,OAAQ,OAGRksB,QAAS,EAET9vB,UAAW,OACXqrB,EAAAA,GAAAA,GAtCiBgE,GAA2B,cAwCzB,CACnB/1B,YAAc51B,GAAkB,YAATA,EACvB21B,WAAa31B,GAAkB,YAATA,IAAuBA,EAAK26B,WAAW,gBAAkB36B,EAAK26B,WAAW,sBAC/FgtB,EAAAA,GAAAA,GA3CiBgE,GAA2B,YAgD3B,CACjBhc,YAAa,EAGb7S,QAAS,CACP6wB,OAAQ,CACN5M,OAAQ,CACN6M,cAAAA,CAAeh2B,GACb,MAAMt3B,EAAOs3B,EAAMt3B,MACZygD,QAAQ,WAAC/gB,EAAA,UAAYoC,EAAA,MAAWzd,EAAK,gBAAEkpC,EAAA,aAAiBC,IAAiBl2B,EAAM+1B,OAAO59C,QAC7F,OAAIzP,EAAKygD,OAAOz5C,QAAUhH,EAAKi7B,SAASj0B,OAC/BhH,EAAKygD,OAAOjqC,IAAI,CAACvH,EAAOkH,KAC7B,MAAMsa,EAAO6G,EAAM8nB,eAAe,GAC5BzgD,EAAQ8xB,EAAKgrB,WAAWvO,SAAS/2B,GAEvC,MAAO,CACLkjB,KAAMpqB,EACN4yB,UAAWljC,EAAMo8B,gBACjB0yB,UAAWppC,EACX24B,QAAS1lB,EAAM6xB,kBAAkBhzC,GACjCu3C,SAAU/uD,EAAM21C,WAChBqZ,eAAgBhvD,EAAM41C,iBACtBqZ,SAAUjvD,EAAM61C,gBAChB5b,UAAWj6B,EAAM8hC,YACjBiC,YAAa/jC,EAAMq8B,YACnB8G,UAAWA,EACXpC,WAAYA,EACZ8tB,aAAcD,IAAoBC,GAAgB7uD,EAAM6uD,cAExDxuD,MAAOmX,KAIN,EACT,GAGFjX,OAAAA,CAAQwV,EAAGm5C,EAAYR,GACrBA,EAAO/1B,MAAMw2B,qBAAqBD,EAAW7uD,OAC7CquD,EAAO/1B,MAAMygB,QACf,MCvHO,MAAMgW,WAAuB7Q,GA6B1Ce,UAAAA,GACE39C,KAAKq9C,qBAAsB,EAC3Br9C,KAAKs9C,oBAAqB,EAC1B2J,MAAMtJ,YACR,CAEAlG,MAAAA,CAAO7b,GACL,MAAMzL,EAAOnwB,KAAKo7C,aACXxqB,QAAS+Q,EAAMjiC,KAAM0wB,EAAS,GAAE,SAAEs9B,GAAYv9B,EAE/CE,EAAqBrwB,KAAKg3B,MAAMmrB,oBACtC,IAAI,MAAC77C,EAAA,MAAOoJ,GAASwgB,GAAiCC,EAAMC,EAAQC,GAEpErwB,KAAKm9C,WAAa72C,EAClBtG,KAAKo9C,WAAa1tC,EAEd4hB,GAAoBnB,KACtB7pB,EAAQ,EACRoJ,EAAQ0gB,EAAO1pB,QAIjBi7B,EAAKwR,OAASnzC,KAAKg3B,MACnB2K,EAAK2R,cAAgBtzC,KAAKtB,MAC1BijC,EAAKgsB,aAAeD,EAASC,WAC7BhsB,EAAKvR,OAASA,EAEd,MAAMjhB,EAAUnP,KAAKshD,6BAA6B1lB,GAC7C57B,KAAKmP,QAAQmtB,WAChBntB,EAAQgxB,YAAc,GAExBhxB,EAAQsiC,QAAUzxC,KAAKmP,QAAQsiC,QAC/BzxC,KAAKwiD,cAAc7gB,OAAMxsB,EAAW,CAClCy4C,UAAWv9B,EACXlhB,WACCysB,GAGH57B,KAAKqjD,eAAejzB,EAAQ9pB,EAAOoJ,EAAOksB,EAC5C,CAEAynB,cAAAA,CAAejzB,EAAQ9pB,EAAOoJ,EAAOksB,GACnC,MAAMqjB,EAAiB,UAATrjB,GACR,OAACpL,EAAA,OAAQC,EAAA,SAAQksB,EAAA,SAAU+Q,GAAY1tD,KAAKo7C,aAC5C,cAAC8G,EAAa,eAAED,GAAkBjiD,KAAKoiD,kBAAkB97C,EAAOs1B,GAChE0f,EAAQ9qB,EAAOK,KACf0qB,EAAQ9qB,EAAOI,MACf,SAACF,EAAA,QAAU8gB,GAAWzxC,KAAKmP,QAC3B0+C,EAAejjC,GAAS+F,GAAYA,EAAWnrB,OAAO4jB,kBACtD0kC,EAAe9tD,KAAKg3B,MAAMmrB,qBAAuBlD,GAAkB,SAATrjB,EAC1DrP,EAAMjmB,EAAQoJ,EACdq+C,EAAc39B,EAAO1pB,OAC3B,IAAIsnD,EAAa1nD,EAAQ,GAAKtG,KAAKwgD,UAAUl6C,EAAQ,GAErD,IAAK,IAAIuP,EAAI,EAAGA,EAAIk4C,IAAel4C,EAAG,CACpC,MAAMub,EAAQhB,EAAOva,GACfof,EAAa64B,EAAe18B,EAAQ,GAE1C,GAAIvb,EAAIvP,GAASuP,GAAK0W,EAAK,CACzB0I,EAAWoU,MAAO,EAClB,Q,CAGF,MAAMJ,EAASjpC,KAAKwgD,UAAU3qC,GACxBo4C,EAAWhpC,GAAcgkB,EAAOsS,IAChCxQ,EAAS9V,EAAWqmB,GAAS9qB,EAAOS,iBAAiBgY,EAAOqS,GAAQzlC,GACpEm1B,EAAS/V,EAAWsmB,GAAS0D,GAASgP,EAAWx9B,EAAO02B,eAAiB12B,EAAOQ,iBAAiB0rB,EAAW38C,KAAK05C,WAAWjpB,EAAQwY,EAAQ0T,GAAY1T,EAAOsS,GAAQ1lC,GAE7Kof,EAAWoU,KAAOxe,MAAMkgB,IAAWlgB,MAAMmgB,IAAWijB,EACpDh5B,EAAWyd,KAAO78B,EAAI,GAAKvF,KAAMuZ,IAAIof,EAAOqS,GAAS0S,EAAW1S,IAAWuS,EACvEpc,IACFxc,EAAWgU,OAASA,EACpBhU,EAAWinB,IAAMwR,EAAShuD,KAAKmW,IAG7BosC,IACFhtB,EAAW9lB,QAAU+yC,GAAiBliD,KAAKuhD,0BAA0B1rC,EAAGub,EAAM8D,OAAS,SAAW0G,IAG/FkyB,GACH9tD,KAAKwiD,cAAcpxB,EAAOvb,EAAGof,EAAY2G,GAG3CoyB,EAAa/kB,CACf,CACF,CAKAkY,cAAAA,GACE,MAAMhxB,EAAOnwB,KAAKo7C,YACZxqB,EAAUT,EAAKS,QACfgI,EAAShI,EAAQzhB,SAAWyhB,EAAQzhB,QAAQgxB,aAAe,EAC3DzgC,EAAOywB,EAAKzwB,MAAQ,GAC1B,IAAKA,EAAKgH,OACR,OAAOkyB,EAET,MAAM4Q,EAAa9pC,EAAK,GAAGgP,KAAK1O,KAAKuhD,0BAA0B,IACzD2M,EAAYxuD,EAAKA,EAAKgH,OAAS,GAAGgI,KAAK1O,KAAKuhD,0BAA0B7hD,EAAKgH,OAAS,IAC1F,OAAO4J,KAAK6C,IAAIylB,EAAQ4Q,EAAY0kB,GAAa,CACnD,CAEAxY,IAAAA,GACE,MAAMvlB,EAAOnwB,KAAKo7C,YAClBjrB,EAAKS,QAAQu9B,oBAAoBnuD,KAAKg3B,MAAMqd,UAAWlkB,EAAKK,OAAOK,MACnEo2B,MAAMvR,MACR,GACFqR,EAAAA,GAAAA,GAzIqB0G,GAAuB,KAE9B,SAAO1G,EAAAA,GAAAA,GAFA0G,GAAuB,WAOxB,CAChBhQ,mBAAoB,OACpBC,gBAAiB,QAEjBphB,UAAU,EACV3L,UAAU,KACVo2B,EAAAA,GAAAA,GAbiB0G,GAAuB,YAkBvB,CACjBpxB,OAAQ,CACNstB,QAAS,CACPrqD,KAAM,YAERsqD,QAAS,CACPtqD,KAAM,aC1BC,MAAM8uD,WAA4BxR,GAoF/Cn5B,WAAAA,CAAYuT,EAAOlQ,GACjBmgC,MAAMjwB,EAAOlQ,GAEb9mB,KAAKgrD,iBAAc71C,EACnBnV,KAAKirD,iBAAc91C,CACrB,CAEAisC,gBAAAA,CAAiB1iD,GACf,MAAMyxB,EAAOnwB,KAAKo7C,YACZpkB,EAAQh3B,KAAKg3B,MACbmpB,EAASnpB,EAAMt3B,KAAKygD,QAAU,GAC9Br7C,EAAQ2xB,GAAatG,EAAKO,QAAQhyB,GAAOiW,EAAGqiB,EAAM7nB,QAAQ8mB,QAEhE,MAAO,CACLtnB,MAAOwxC,EAAOzhD,IAAU,GACxBoG,QAEJ,CAEAk7C,eAAAA,CAAgB7vB,EAAMzwB,EAAM4G,EAAOoJ,GACjC,OAAOq5B,GAA4BslB,KAAKruD,KAAjC+oC,CAAuC5Y,EAAMzwB,EAAM4G,EAAOoJ,EACnE,CAEA+nC,MAAAA,CAAO7b,GACL,MAAM2vB,EAAOvrD,KAAKo7C,YAAY17C,KAE9BM,KAAKsuD,gBACLtuD,KAAKqjD,eAAekI,EAAM,EAAGA,EAAK7kD,OAAQk1B,EAC5C,CAKAilB,SAAAA,GACE,MAAM1wB,EAAOnwB,KAAKo7C,YACZl0C,EAAQ,CAACkM,IAAK5N,OAAO4jB,kBAAmBjW,IAAK3N,OAAOi1C,mBAgB1D,OAdAtqB,EAAKzwB,KAAK0uB,QAAQ,CAACqe,EAAS/tC,KAC1B,MAAMuqC,EAASjpC,KAAKwgD,UAAU9hD,GAAOiW,GAEhCkW,MAAMoe,IAAWjpC,KAAKg3B,MAAM6xB,kBAAkBnqD,KAC7CuqC,EAAS/hC,EAAMkM,MACjBlM,EAAMkM,IAAM61B,GAGVA,EAAS/hC,EAAMiM,MACjBjM,EAAMiM,IAAM81B,MAKX/hC,CACT,CAKAonD,aAAAA,GACE,MAAMt3B,EAAQh3B,KAAKg3B,MACbqd,EAAYrd,EAAMqd,UAClBhT,EAAOrK,EAAM7nB,QACbo/C,EAAUj+C,KAAK8C,IAAIihC,EAAUtkB,MAAQskB,EAAUvkB,KAAMukB,EAAUxe,OAASwe,EAAUze,KAElFq1B,EAAc36C,KAAK6C,IAAIo7C,EAAU,EAAG,GACpCvD,EAAc16C,KAAK6C,IAAIkuB,EAAKmtB,iBAAmBvD,EAAe,IAAQ5pB,EAAKmtB,iBAAoB,EAAG,GAClGzC,GAAgBd,EAAcD,GAAeh0B,EAAMy3B,yBAEzDzuD,KAAKirD,YAAcA,EAAec,EAAe/rD,KAAKtB,MACtDsB,KAAKgrD,YAAchrD,KAAKirD,YAAcc,CACxC,CAEA1I,cAAAA,CAAekI,EAAMjlD,EAAOoJ,EAAOksB,GACjC,MAAMqjB,EAAiB,UAATrjB,EACR5E,EAAQh3B,KAAKg3B,MACbqK,EAAOrK,EAAM7nB,QACbm9C,EAAgBjrB,EAAKlM,UACrBiH,EAAQp8B,KAAKo7C,YAAYyD,OACzB0N,EAAUnwB,EAAMsyB,QAChBlC,EAAUpwB,EAAMuyB,QAChBC,EAAoBxyB,EAAMyyB,cAAc,GAAK,GAAM7lC,GACzD,IACInT,EADAiW,EAAQ8iC,EAGZ,MAAME,EAAe,IAAM9uD,KAAK+uD,uBAEhC,IAAKl5C,EAAI,EAAGA,EAAIvP,IAASuP,EACvBiW,GAAS9rB,KAAKgvD,cAAcn5C,EAAG+lB,EAAMkzB,GAEvC,IAAKj5C,EAAIvP,EAAOuP,EAAIvP,EAAQoJ,EAAOmG,IAAK,CACtC,MAAM+pB,EAAM2rB,EAAK11C,GACjB,IAAIs0C,EAAar+B,EACbs+B,EAAWt+B,EAAQ9rB,KAAKgvD,cAAcn5C,EAAG+lB,EAAMkzB,GAC/C7D,EAAcj0B,EAAM6xB,kBAAkBhzC,GAAKumB,EAAM6yB,8BAA8BjvD,KAAKwgD,UAAU3qC,GAAGlB,GAAK,EAC1GmX,EAAQs+B,EAEJnL,IACEqN,EAAcG,eAChBxB,EAAc,GAEZqB,EAAcF,gBAChBjC,EAAaC,EAAWwE,IAI5B,MAAM35B,EAAa,CACjBle,EAAGw1C,EACHvkC,EAAGwkC,EACHxB,YAAa,EACbC,cACAd,aACAC,WACAj7C,QAASnP,KAAKuhD,0BAA0B1rC,EAAG+pB,EAAI1K,OAAS,SAAW0G,IAGrE57B,KAAKwiD,cAAc5iB,EAAK/pB,EAAGof,EAAY2G,EACzC,CACF,CAEAmzB,oBAAAA,GACE,MAAM5+B,EAAOnwB,KAAKo7C,YAClB,IAAI1rC,EAAQ,EAQZ,OANAygB,EAAKzwB,KAAK0uB,QAAQ,CAACqe,EAAS/tC,MACrBmsB,MAAM7qB,KAAKwgD,UAAU9hD,GAAOiW,IAAM3U,KAAKg3B,MAAM6xB,kBAAkBnqD,IAClEgR,MAIGA,CACT,CAKAs/C,aAAAA,CAActwD,EAAOk9B,EAAMkzB,GACzB,OAAO9uD,KAAKg3B,MAAM6xB,kBAAkBnqD,GAChCysB,GAAUnrB,KAAKuhD,0BAA0B7iD,EAAOk9B,GAAM9P,OAASgjC,GAC/D,CACN,GACF/H,EAAAA,GAAAA,GA/NqBqH,GAA4B,KAEnC,cAAYrH,EAAAA,GAAAA,GAFLqH,GAA4B,WAO7B,CAChB1Q,gBAAiB,MACjBvoB,UAAW,CACTi3B,eAAe,EACfK,cAAc,GAEhBn3B,WAAY,CACVf,QAAS,CACPj1B,KAAM,SACN21B,WAAY,CAAC,IAAK,IAAK,aAAc,WAAY,cAAe,iBAGpEyG,UAAW,IACXyuB,WAAY,KACZpD,EAAAA,GAAAA,GArBiBqH,GAA4B,YA0B5B,CACjBrf,YAAa,EAEb7S,QAAS,CACP6wB,OAAQ,CACN5M,OAAQ,CACN6M,cAAAA,CAAeh2B,GACb,MAAMt3B,EAAOs3B,EAAMt3B,KACnB,GAAIA,EAAKygD,OAAOz5C,QAAUhH,EAAKi7B,SAASj0B,OAAQ,CAC9C,MAAOy5C,QAAQ,WAAC/gB,EAAA,MAAYrb,IAAUiT,EAAM+1B,OAAO59C,QAEnD,OAAOzP,EAAKygD,OAAOjqC,IAAI,CAACvH,EAAOkH,KAC7B,MAAMsa,EAAO6G,EAAM8nB,eAAe,GAC5BzgD,EAAQ8xB,EAAKgrB,WAAWvO,SAAS/2B,GAEvC,MAAO,CACLkjB,KAAMpqB,EACN4yB,UAAWljC,EAAMo8B,gBACjB2H,YAAa/jC,EAAMq8B,YACnByyB,UAAWppC,EACXuU,UAAWj6B,EAAM8hC,YACjBf,WAAYA,EACZsd,QAAS1lB,EAAM6xB,kBAAkBhzC,GAGjCnX,MAAOmX,I,CAIb,MAAO,EACT,GAGFjX,OAAAA,CAAQwV,EAAGm5C,EAAYR,GACrBA,EAAO/1B,MAAMw2B,qBAAqBD,EAAW7uD,OAC7CquD,EAAO/1B,MAAMygB,QACf,IAIJpb,OAAQ,CACN1nB,EAAG,CACDrV,KAAM,eACN4vD,WAAY,CACVn3B,SAAS,GAEXE,aAAa,EACbI,KAAM,CACJ82B,UAAU,GAEZC,YAAa,CACXr3B,SAAS,GAEXoyB,WAAY,MC/EL,MAAMkF,WAAsBtE,KAoB3ChE,EAAAA,GAAAA,GApBqBsI,GAAsB,KAE7B,QAAMtI,EAAAA,GAAAA,GAFCsI,GAAsB,WAOvB,CAEhBrF,OAAQ,EAGR3qB,SAAU,EAGV0qB,cAAe,IAGfzqB,OAAQ,SClBG,MAAMgwB,WAAwB1S,GAmC3CwE,gBAAAA,CAAiB1iD,GACf,MAAM+xB,EAASzwB,KAAKo7C,YAAY3qB,OAC1BwY,EAASjpC,KAAKwgD,UAAU9hD,GAE9B,MAAO,CACLiQ,MAAO8hB,EAAO2vB,YAAY1hD,GAC1BoG,MAAO,GAAK2rB,EAAO4wB,iBAAiBpY,EAAOxY,EAAOI,OAEtD,CAEAmvB,eAAAA,CAAgB7vB,EAAMzwB,EAAM4G,EAAOoJ,GACjC,OAAOq5B,GAA4BslB,KAAKruD,KAAjC+oC,CAAuC5Y,EAAMzwB,EAAM4G,EAAOoJ,EACnE,CAEA+nC,MAAAA,CAAO7b,GACL,MAAMzL,EAAOnwB,KAAKo7C,YACZzZ,EAAOxR,EAAKS,QACZR,EAASD,EAAKzwB,MAAQ,GACtBygD,EAAShwB,EAAKK,OAAO4vB,YAK3B,GAFAze,EAAKvR,OAASA,EAED,WAATwL,EAAmB,CACrB,MAAMzsB,EAAUnP,KAAKshD,6BAA6B1lB,GAC7C57B,KAAKmP,QAAQmtB,WAChBntB,EAAQgxB,YAAc,GAGxB,MAAMlL,EAAa,CACjB4d,OAAO,EACPG,UAAWmN,EAAOz5C,SAAW0pB,EAAO1pB,OACpCyI,WAGFnP,KAAKwiD,cAAc7gB,OAAMxsB,EAAW8f,EAAY2G,E,CAIlD57B,KAAKqjD,eAAejzB,EAAQ,EAAGA,EAAO1pB,OAAQk1B,EAChD,CAEAynB,cAAAA,CAAejzB,EAAQ9pB,EAAOoJ,EAAOksB,GACnC,MAAMQ,EAAQp8B,KAAKo7C,YAAYyD,OACzBI,EAAiB,UAATrjB,EAEd,IAAK,IAAI/lB,EAAIvP,EAAOuP,EAAIvP,EAAQoJ,EAAOmG,IAAK,CAC1C,MAAMub,EAAQhB,EAAOva,GACf1G,EAAUnP,KAAKuhD,0BAA0B1rC,EAAGub,EAAM8D,OAAS,SAAW0G,GACtE2zB,EAAgBnzB,EAAMozB,yBAAyB35C,EAAG7V,KAAKwgD,UAAU3qC,GAAGlB,GAEpEoC,EAAIkoC,EAAQ7iB,EAAMsyB,QAAUa,EAAcx4C,EAC1CiR,EAAIi3B,EAAQ7iB,EAAMuyB,QAAUY,EAAcvnC,EAE1CiN,EAAa,CACjBle,IACAiR,IACA8D,MAAOyjC,EAAczjC,MACrBud,KAAMxe,MAAM9T,IAAM8T,MAAM7C,GACxB7Y,WAGFnP,KAAKwiD,cAAcpxB,EAAOvb,EAAGof,EAAY2G,EAC3C,CACF,GACFmrB,EAAAA,GAAAA,GApGqBuI,GAAwB,KAE/B,UAAQvI,EAAAA,GAAAA,GAFDuI,GAAwB,WAOzB,CAChB7R,mBAAoB,OACpBC,gBAAiB,QACjBhiB,UAAW,IACXY,UAAU,EACVtB,SAAU,CACR2G,KAAM,CACJzB,KAAM,aAGV6mB,EAAAA,GAAAA,GAjBiBuI,GAAwB,YAsBxB,CACjBvgB,YAAa,EAEb1S,OAAQ,CACN1nB,EAAG,CACDrV,KAAM,mBCzBC,MAAMmwD,WAA0B7S,GAoC7CwE,gBAAAA,CAAiB1iD,GACf,MAAMyxB,EAAOnwB,KAAKo7C,YACZ+E,EAASngD,KAAKg3B,MAAMt3B,KAAKygD,QAAU,IACnC,OAAC5uB,EAAA,OAAQC,GAAUrB,EACnB8Y,EAASjpC,KAAKwgD,UAAU9hD,GACxBqY,EAAIwa,EAAO8vB,iBAAiBpY,EAAOlyB,GACnCiR,EAAIwJ,EAAO6vB,iBAAiBpY,EAAOjhB,GAEzC,MAAO,CACLrZ,MAAOwxC,EAAOzhD,IAAU,GACxBoG,MAAO,IAAMiS,EAAI,KAAOiR,EAAI,IAEhC,CAEAyvB,MAAAA,CAAO7b,GACL,MAAMzL,EAAOnwB,KAAKo7C,aACX17C,KAAM0wB,EAAS,IAAMD,EAEtBE,EAAqBrwB,KAAKg3B,MAAMmrB,oBACtC,IAAI,MAAC77C,EAAA,MAAOoJ,GAASwgB,GAAiCC,EAAMC,EAAQC,GAUpE,GARArwB,KAAKm9C,WAAa72C,EAClBtG,KAAKo9C,WAAa1tC,EAEd4hB,GAAoBnB,KACtB7pB,EAAQ,EACRoJ,EAAQ0gB,EAAO1pB,QAGb1G,KAAKmP,QAAQmtB,SAAU,CAGpBt8B,KAAKy9C,oBACRz9C,KAAK69C,cAEP,MAAOjtB,QAAS+Q,EAAA,SAAM+rB,GAAYv9B,EAGlCwR,EAAKwR,OAASnzC,KAAKg3B,MACnB2K,EAAK2R,cAAgBtzC,KAAKtB,MAC1BijC,EAAKgsB,aAAeD,EAASC,WAC7BhsB,EAAKvR,OAASA,EAEd,MAAMjhB,EAAUnP,KAAKshD,6BAA6B1lB,GAClDzsB,EAAQsiC,QAAUzxC,KAAKmP,QAAQsiC,QAC/BzxC,KAAKwiD,cAAc7gB,OAAMxsB,EAAW,CAClCy4C,UAAWv9B,EACXlhB,WACCysB,EACL,MAAW57B,KAAKy9C,4BAEPttB,EAAKS,QACZ5wB,KAAKy9C,oBAAqB,GAI5Bz9C,KAAKqjD,eAAejzB,EAAQ9pB,EAAOoJ,EAAOksB,EAC5C,CAEAiiB,WAAAA,GACE,MAAM,SAACvhB,GAAYt8B,KAAKmP,SAEnBnP,KAAKy9C,oBAAsBnhB,IAC9Bt8B,KAAKy9C,mBAAqBz9C,KAAKg3B,MAAM04B,SAASC,WAAW,SAG3D1I,MAAMpJ,aACR,CAEAwF,cAAAA,CAAejzB,EAAQ9pB,EAAOoJ,EAAOksB,GACnC,MAAMqjB,EAAiB,UAATrjB,GACR,OAACpL,EAAA,OAAQC,EAAA,SAAQksB,EAAA,SAAU+Q,GAAY1tD,KAAKo7C,YAC5CiH,EAAYriD,KAAKuhD,0BAA0Bj7C,EAAOs1B,GAClDsmB,EAAgBliD,KAAKgiD,iBAAiBK,GACtCJ,EAAiBjiD,KAAKiiD,eAAermB,EAAMsmB,GAC3C5G,EAAQ9qB,EAAOK,KACf0qB,EAAQ9qB,EAAOI,MACf,SAACF,EAAA,QAAU8gB,GAAWzxC,KAAKmP,QAC3B0+C,EAAejjC,GAAS+F,GAAYA,EAAWnrB,OAAO4jB,kBACtD0kC,EAAe9tD,KAAKg3B,MAAMmrB,qBAAuBlD,GAAkB,SAATrjB,EAChE,IAAIoyB,EAAa1nD,EAAQ,GAAKtG,KAAKwgD,UAAUl6C,EAAQ,GAErD,IAAK,IAAIuP,EAAIvP,EAAOuP,EAAIvP,EAAQoJ,IAASmG,EAAG,CAC1C,MAAMub,EAAQhB,EAAOva,GACfozB,EAASjpC,KAAKwgD,UAAU3qC,GACxBof,EAAa64B,EAAe18B,EAAQ,GACpC68B,EAAWhpC,GAAcgkB,EAAOsS,IAChCxQ,EAAS9V,EAAWqmB,GAAS9qB,EAAOS,iBAAiBgY,EAAOqS,GAAQzlC,GACpEm1B,EAAS/V,EAAWsmB,GAAS0D,GAASgP,EAAWx9B,EAAO02B,eAAiB12B,EAAOQ,iBAAiB0rB,EAAW38C,KAAK05C,WAAWjpB,EAAQwY,EAAQ0T,GAAY1T,EAAOsS,GAAQ1lC,GAE7Kof,EAAWoU,KAAOxe,MAAMkgB,IAAWlgB,MAAMmgB,IAAWijB,EACpDh5B,EAAWyd,KAAO78B,EAAI,GAAKvF,KAAMuZ,IAAIof,EAAOqS,GAAS0S,EAAW1S,IAAWuS,EACvEpc,IACFxc,EAAWgU,OAASA,EACpBhU,EAAWinB,IAAMwR,EAAShuD,KAAKmW,IAG7BosC,IACFhtB,EAAW9lB,QAAU+yC,GAAiBliD,KAAKuhD,0BAA0B1rC,EAAGub,EAAM8D,OAAS,SAAW0G,IAG/FkyB,GACH9tD,KAAKwiD,cAAcpxB,EAAOvb,EAAGof,EAAY2G,GAG3CoyB,EAAa/kB,CACf,CAEAjpC,KAAKuiD,oBAAoBL,EAAetmB,EAAMymB,EAChD,CAKAlB,cAAAA,GACE,MAAMhxB,EAAOnwB,KAAKo7C,YACZ17C,EAAOywB,EAAKzwB,MAAQ,GAE1B,IAAKM,KAAKmP,QAAQmtB,SAAU,CAC1B,IAAInpB,EAAM,EACV,IAAK,IAAI0C,EAAInW,EAAKgH,OAAS,EAAGmP,GAAK,IAAKA,EACtC1C,EAAM7C,KAAK6C,IAAIA,EAAKzT,EAAKmW,GAAGnH,KAAK1O,KAAKuhD,0BAA0B1rC,IAAM,GAExE,OAAO1C,EAAM,GAAKA,C,CAGpB,MAAMyd,EAAUT,EAAKS,QACfgI,EAAShI,EAAQzhB,SAAWyhB,EAAQzhB,QAAQgxB,aAAe,EAEjE,IAAKzgC,EAAKgH,OACR,OAAOkyB,EAGT,MAAM4Q,EAAa9pC,EAAK,GAAGgP,KAAK1O,KAAKuhD,0BAA0B,IACzD2M,EAAYxuD,EAAKA,EAAKgH,OAAS,GAAGgI,KAAK1O,KAAKuhD,0BAA0B7hD,EAAKgH,OAAS,IAC1F,OAAO4J,KAAK6C,IAAIylB,EAAQ4Q,EAAY0kB,GAAa,CACnD,GACFnH,EAAAA,GAAAA,GA7KqB0I,GAA0B,KAEjC,YAAU1I,EAAAA,GAAAA,GAFH0I,GAA0B,WAO3B,CAChBhS,oBAAoB,EACpBC,gBAAiB,QACjBphB,UAAU,EACV4D,MAAM,KACN6mB,EAAAA,GAAAA,GAZiB0I,GAA0B,YAiB1B,CAEjB9zB,YAAa,CACXC,KAAM,SAGRS,OAAQ,CACNtlB,EAAG,CACDzX,KAAM,UAER0oB,EAAG,CACD1oB,KAAM,aC+Bd,SAASswD,KACP,MAAM,IAAI7nB,MAAM,kFAClB,CAQA,MAAM8nB,GAYJ,eAAOrzB,CACLszB,GAEAzgD,OAAO8T,OAAO0sC,GAAgB3qC,UAAW4qC,EAC3C,CAIArsC,WAAAA,CAAYtU,IAAqB43C,EAAAA,GAAAA,GAAA,uBAC/B/mD,KAAKmP,QAAUA,GAAW,CAAC,CAC7B,CAGA4gD,IAAAA,GAAQ,CAERC,OAAAA,GACE,OAAOJ,IACT,CAEA1mB,KAAAA,GACE,OAAO0mB,IACT,CAEAj5B,MAAAA,GACE,OAAOi5B,IACT,CAEAtuD,GAAAA,GACE,OAAOsuD,IACT,CAEAK,IAAAA,GACE,OAAOL,IACT,CAEAM,OAAAA,GACE,OAAON,IACT,CAEAO,KAAAA,GACE,OAAOP,IACT,EAGF,IAAAQ,GAAe,CACbC,MAAOR,IC9GT,SAASS,GAAaC,EAAS1/B,EAAM/rB,EAAO+2B,GAC1C,MAAM,WAACsf,EAAU,KAAEz7C,EAAA,QAAM6wB,GAAWggC,EAC9B//B,EAAS2qB,EAAWC,YAAY5qB,OAChCG,EAAW4/B,EAAQ3/B,SAAU2/B,EAAQ3/B,QAAQzhB,QAAUohD,EAAQ3/B,QAAQzhB,QAAQwhB,SAAkB,KAEvG,GAAIH,GAAUK,IAASL,EAAOK,MAAiB,MAATA,GAAgBN,GAAW7wB,EAAKgH,OAAQ,CAC5E,MAAM8pD,EAAehgC,EAAOigC,eAAiBhjC,GAAgBH,GAC7D,IAAKuO,EAAW,CACd,MAAMxR,EAASmmC,EAAa9wD,EAAMmxB,EAAM/rB,GACxC,GAAI6rB,EAAU,CACZ,MAAM,OAACF,GAAU0qB,EAAWC,aACtB,QAAC1qB,GAAW6/B,EAEZr/B,EAAuBR,EAC1BrL,MAAM,EAAGgF,EAAOgD,GAAK,GACrB9G,UACA4K,UACCC,IAAUnM,GAAcmM,EAAMX,EAAOI,QACzCxG,EAAOgD,IAAM/c,KAAK6C,IAAI,EAAG+d,GAEzB,MAAMG,EAAuBX,EAC1BrL,MAAMgF,EAAO+C,IACb+D,UACCC,IAAUnM,GAAcmM,EAAMX,EAAOI,QACzCxG,EAAO+C,IAAM9c,KAAK6C,IAAI,EAAGke,E,CAE3B,OAAOhH,C,CACF,GAAI8wB,EAAW+B,eAAgB,CAIpC,MAAMz8C,EAAKf,EAAK,GACVwH,EAA+B,oBAAhBzG,EAAGiwD,UAA2BjwD,EAAGiwD,SAAS7/B,GAC/D,GAAI3pB,EAAO,CACT,MAAMZ,EAAQkqD,EAAa9wD,EAAMmxB,EAAM/rB,EAAQoC,GACzCqlB,EAAMikC,EAAa9wD,EAAMmxB,EAAM/rB,EAAQoC,GAC7C,MAAO,CAACmmB,GAAI/mB,EAAM+mB,GAAID,GAAIb,EAAIa,G,GAKpC,MAAO,CAACC,GAAI,EAAGD,GAAI1tB,EAAKgH,OAAS,EACnC,CAUA,SAASiqD,GAAyB35B,EAAOnG,EAAM+/B,EAAU/pD,EAASg1B,GAChE,MAAM2d,EAAWxiB,EAAM65B,+BACjB/rD,EAAQ8rD,EAAS//B,GACvB,IAAK,IAAIhb,EAAI,EAAG8Q,EAAO6yB,EAAS9yC,OAAQmP,EAAI8Q,IAAQ9Q,EAAG,CACrD,MAAM,MAACnX,EAAA,KAAOgB,GAAQ85C,EAAS3jC,IACzB,GAACwX,EAAA,GAAID,GAAMkjC,GAAa9W,EAAS3jC,GAAIgb,EAAM/rB,EAAO+2B,GACxD,IAAK,IAAIja,EAAIyL,EAAIzL,GAAKwL,IAAMxL,EAAG,CAC7B,MAAM6qB,EAAU/sC,EAAKkiB,GAChB6qB,EAAQpD,MACXxiC,EAAQ4lC,EAAS/tC,EAAOkjB,EAE5B,CACF,CACF,CAOA,SAASkvC,GAAyBjgC,GAChC,MAAMkgC,GAA8B,IAAvBlgC,EAAKzJ,QAAQ,KACpB4pC,GAA8B,IAAvBngC,EAAKzJ,QAAQ,KAE1B,OAAO,SAAS8E,EAAKC,GACnB,MAAM8kC,EAASF,EAAOzgD,KAAKuZ,IAAIqC,EAAInV,EAAIoV,EAAIpV,GAAK,EAC1Cm6C,EAASF,EAAO1gD,KAAKuZ,IAAIqC,EAAIlE,EAAImE,EAAInE,GAAK,EAChD,OAAO1X,KAAKga,KAAKha,KAAKmS,IAAIwuC,EAAQ,GAAK3gD,KAAKmS,IAAIyuC,EAAQ,GAC1D,CACF,CAWA,SAASC,GAAkBn6B,EAAO45B,EAAU//B,EAAMugC,EAAkBt1B,GAClE,MAAMjN,EAAQ,GAEd,IAAKiN,IAAqB9E,EAAMq6B,cAAcT,GAC5C,OAAO/hC,EAGT,MAAMyiC,EAAiB,SAAS7kB,EAAS3lB,EAAcpoB,IAChDo9B,GAAqBuE,GAAeoM,EAASzV,EAAMqd,UAAW,KAG/D5H,EAAQ8kB,QAAQX,EAAS75C,EAAG65C,EAAS5oC,EAAGopC,IAC1CviC,EAAMxG,KAAK,CAACokB,UAAS3lB,eAAcpoB,SAEvC,EAGA,OADAiyD,GAAyB35B,EAAOnG,EAAM+/B,EAAUU,GAAgB,GACzDziC,CACT,CAUA,SAAS2iC,GAAsBx6B,EAAO45B,EAAU//B,EAAMugC,GACpD,IAAIviC,EAAQ,GAEZ,SAASyiC,EAAe7kB,EAAS3lB,EAAcpoB,GAC7C,MAAM,WAACyrD,EAAA,SAAYC,GAAY3d,EAAQglB,SAAS,CAAC,aAAc,YAAaL,IACtE,MAACtlC,GAASN,GAAkBihB,EAAS,CAAC11B,EAAG65C,EAAS75C,EAAGiR,EAAG4oC,EAAS5oC,IAEnEsE,GAAcR,EAAOq+B,EAAYC,IACnCv7B,EAAMxG,KAAK,CAACokB,UAAS3lB,eAAcpoB,SAEvC,CAGA,OADAiyD,GAAyB35B,EAAOnG,EAAM+/B,EAAUU,GACzCziC,CACT,CAYA,SAAS6iC,GAAyB16B,EAAO45B,EAAU//B,EAAMgL,EAAWu1B,EAAkBt1B,GACpF,IAAIjN,EAAQ,GACZ,MAAM8iC,EAAiBb,GAAyBjgC,GAChD,IAAI+gC,EAAcpsD,OAAO4jB,kBAEzB,SAASkoC,EAAe7kB,EAAS3lB,EAAcpoB,GAC7C,MAAM6yD,EAAU9kB,EAAQ8kB,QAAQX,EAAS75C,EAAG65C,EAAS5oC,EAAGopC,GACxD,GAAIv1B,IAAc01B,EAChB,OAGF,MAAM7J,EAASjb,EAAQolB,eAAeT,GAChCU,IAAgBh2B,GAAoB9E,EAAMq6B,cAAc3J,GAC9D,IAAKoK,IAAgBP,EACnB,OAGF,MAAMvlC,EAAW2lC,EAAef,EAAUlJ,GACtC17B,EAAW4lC,GACb/iC,EAAQ,CAAC,CAAC4d,UAAS3lB,eAAcpoB,UACjCkzD,EAAc5lC,GACLA,IAAa4lC,GAEtB/iC,EAAMxG,KAAK,CAACokB,UAAS3lB,eAAcpoB,SAEvC,CAGA,OADAiyD,GAAyB35B,EAAOnG,EAAM+/B,EAAUU,GACzCziC,CACT,CAYA,SAASkjC,GAAgB/6B,EAAO45B,EAAU//B,EAAMgL,EAAWu1B,EAAkBt1B,GAC3E,OAAKA,GAAqB9E,EAAMq6B,cAAcT,GAI9B,MAAT//B,GAAiBgL,EAEpB61B,GAAyB16B,EAAO45B,EAAU//B,EAAMgL,EAAWu1B,EAAkBt1B,GAD7E01B,GAAsBx6B,EAAO45B,EAAU//B,EAAMugC,GAJxC,EAMX,CAWA,SAASY,GAAah7B,EAAO45B,EAAU//B,EAAMgL,EAAWu1B,GACtD,MAAMviC,EAAQ,GACRojC,EAAuB,MAATphC,EAAe,WAAa,WAChD,IAAIqhC,GAAiB,EAWrB,OATAvB,GAAyB35B,EAAOnG,EAAM+/B,EAAU,CAACnkB,EAAS3lB,EAAcpoB,KAClE+tC,EAAQwlB,IAAgBxlB,EAAQwlB,GAAarB,EAAS//B,GAAOugC,KAC/DviC,EAAMxG,KAAK,CAACokB,UAAS3lB,eAAcpoB,UACnCwzD,EAAiBA,GAAkBzlB,EAAQ8kB,QAAQX,EAAS75C,EAAG65C,EAAS5oC,EAAGopC,MAM3Ev1B,IAAcq2B,EACT,GAEFrjC,CACT,CAMA,IAAAsjC,GAAe,CAEbxB,4BAGAyB,MAAO,CAYL1zD,KAAAA,CAAMs4B,EAAO5iB,EAAGjF,EAASiiD,GACvB,MAAMR,EAAW/iB,GAAoBz5B,EAAG4iB,GAElCnG,EAAO1hB,EAAQ0hB,MAAQ,IACvBiL,EAAmB3sB,EAAQ2sB,mBAAoB,EAC/CjN,EAAQ1f,EAAQ0sB,UAClBs1B,GAAkBn6B,EAAO45B,EAAU//B,EAAMugC,EAAkBt1B,GAC3Di2B,GAAgB/6B,EAAO45B,EAAU//B,GAAM,EAAOugC,EAAkBt1B,GAC9Dd,EAAW,GAEjB,OAAKnM,EAAMnoB,QAIXswB,EAAM65B,+BAA+BziC,QAAS+B,IAC5C,MAAMzxB,EAAQmwB,EAAM,GAAGnwB,MACjB+tC,EAAUtc,EAAKzwB,KAAKhB,GAGtB+tC,IAAYA,EAAQpD,MACtBrO,EAAS3S,KAAK,CAACokB,UAAS3lB,aAAcqJ,EAAKzxB,MAAOA,YAI/Cs8B,GAbE,EAcX,EAYApK,OAAAA,CAAQoG,EAAO5iB,EAAGjF,EAASiiD,GACzB,MAAMR,EAAW/iB,GAAoBz5B,EAAG4iB,GAClCnG,EAAO1hB,EAAQ0hB,MAAQ,KACvBiL,EAAmB3sB,EAAQ2sB,mBAAoB,EACrD,IAAIjN,EAAQ1f,EAAQ0sB,UAChBs1B,GAAkBn6B,EAAO45B,EAAU//B,EAAMugC,EAAkBt1B,GAC7Di2B,GAAgB/6B,EAAO45B,EAAU//B,GAAM,EAAOugC,EAAkBt1B,GAElE,GAAIjN,EAAMnoB,OAAS,EAAG,CACpB,MAAMogB,EAAe+H,EAAM,GAAG/H,aACxBpnB,EAAOs3B,EAAM8nB,eAAeh4B,GAAcpnB,KAChDmvB,EAAQ,GACR,IAAK,IAAIhZ,EAAI,EAAGA,EAAInW,EAAKgH,SAAUmP,EACjCgZ,EAAMxG,KAAK,CAACokB,QAAS/sC,EAAKmW,GAAIiR,eAAcpoB,MAAOmX,G,CAIvD,OAAOgZ,CACT,EAYAuC,KAAAA,CAAM4F,EAAO5iB,EAAGjF,EAASiiD,GACvB,MAAMR,EAAW/iB,GAAoBz5B,EAAG4iB,GAClCnG,EAAO1hB,EAAQ0hB,MAAQ,KACvBiL,EAAmB3sB,EAAQ2sB,mBAAoB,EACrD,OAAOq1B,GAAkBn6B,EAAO45B,EAAU//B,EAAMugC,EAAkBt1B,EACpE,EAWAu2B,OAAAA,CAAQr7B,EAAO5iB,EAAGjF,EAASiiD,GACzB,MAAMR,EAAW/iB,GAAoBz5B,EAAG4iB,GAClCnG,EAAO1hB,EAAQ0hB,MAAQ,KACvBiL,EAAmB3sB,EAAQ2sB,mBAAoB,EACrD,OAAOi2B,GAAgB/6B,EAAO45B,EAAU//B,EAAM1hB,EAAQ0sB,UAAWu1B,EAAkBt1B,EACrF,EAWA/kB,CAAAA,CAAEigB,EAAO5iB,EAAGjF,EAASiiD,GACnB,MAAMR,EAAW/iB,GAAoBz5B,EAAG4iB,GACxC,OAAOg7B,GAAah7B,EAAO45B,EAAU,IAAKzhD,EAAQ0sB,UAAWu1B,EAC/D,EAWAppC,CAAAA,CAAEgP,EAAO5iB,EAAGjF,EAASiiD,GACnB,MAAMR,EAAW/iB,GAAoBz5B,EAAG4iB,GACxC,OAAOg7B,GAAah7B,EAAO45B,EAAU,IAAKzhD,EAAQ0sB,UAAWu1B,EAC/D,ICzXJ,MAAMkB,GAAmB,CAAC,OAAQ,MAAO,QAAS,UAElD,SAASC,GAAiBtnC,EAAO2lC,GAC/B,OAAO3lC,EAAMmd,OAAOr1B,GAAKA,EAAEm6B,MAAQ0jB,EACrC,CAEA,SAAS4B,GAA4BvnC,EAAO4F,GAC1C,OAAO5F,EAAMmd,OAAOr1B,IAA0C,IAArCu/C,GAAiBlrC,QAAQrU,EAAEm6B,MAAen6B,EAAE06B,IAAI5c,OAASA,EACpF,CAEA,SAAS4hC,GAAaxnC,EAAO1E,GAC3B,OAAO0E,EAAMV,KAAK,CAACvW,EAAGC,KACpB,MAAM2S,EAAKL,EAAUtS,EAAID,EACnB6S,EAAKN,EAAUvS,EAAIC,EACzB,OAAO2S,EAAG5C,SAAW6C,EAAG7C,OACtB4C,EAAGloB,MAAQmoB,EAAGnoB,MACdkoB,EAAG5C,OAAS6C,EAAG7C,QAErB,CAEA,SAAS0uC,GAAUC,GACjB,MAAMC,EAAc,GACpB,IAAI/8C,EAAG8Q,EAAM8mB,EAAKP,EAAKyM,EAAOkZ,EAE9B,IAAKh9C,EAAI,EAAG8Q,GAAQgsC,GAAS,IAAIjsD,OAAQmP,EAAI8Q,IAAQ9Q,EACnD43B,EAAMklB,EAAM98C,KACV+6C,SAAU1jB,EAAK/9B,SAAUwqC,QAAOkZ,cAAc,IAAMplB,GACtDmlB,EAAYvqC,KAAK,CACf3pB,MAAOmX,EACP43B,MACAP,MACAiZ,WAAY1Y,EAAIwY,eAChBjiC,OAAQypB,EAAIzpB,OACZ21B,MAAOA,GAAUzM,EAAMyM,EACvBkZ,gBAGJ,OAAOD,CACT,CAEA,SAASE,GAAYC,GACnB,MAAMpY,EAAS,CAAC,EAChB,IAAK,MAAMqY,KAAQD,EAAS,CAC1B,MAAM,MAACpZ,EAAK,IAAEzM,EAAA,YAAK2lB,GAAeG,EAClC,IAAKrZ,IAAU2Y,GAAiB16B,SAASsV,GACvC,SAEF,MAAMnG,EAAS4T,EAAOhB,KAAWgB,EAAOhB,GAAS,CAACjqC,MAAO,EAAGujD,OAAQ,EAAGjvC,OAAQ,EAAGtV,KAAM,IACxFq4B,EAAOr3B,QACPq3B,EAAO/iB,QAAU6uC,CACnB,CACA,OAAOlY,CACT,CAKA,SAASuY,GAAcH,EAASI,GAC9B,MAAMxY,EAASmY,GAAYC,IACrB,aAACK,EAAA,cAAcC,GAAiBF,EACtC,IAAIt9C,EAAG8Q,EAAM2sC,EACb,IAAKz9C,EAAI,EAAG8Q,EAAOosC,EAAQrsD,OAAQmP,EAAI8Q,IAAQ9Q,EAAG,CAChDy9C,EAASP,EAAQl9C,GACjB,MAAM,SAAC09C,GAAYD,EAAO7lB,IACpBkM,EAAQgB,EAAO2Y,EAAO3Z,OACtBhD,EAASgD,GAAS2Z,EAAOT,YAAclZ,EAAM31B,OAC/CsvC,EAAOnN,YACTmN,EAAOrzD,MAAQ02C,EAASA,EAASyc,EAAeG,GAAYJ,EAAOK,eACnEF,EAAO10B,OAASy0B,IAEhBC,EAAOrzD,MAAQmzD,EACfE,EAAO10B,OAAS+X,EAASA,EAAS0c,EAAgBE,GAAYJ,EAAOM,gBAEzE,CACA,OAAO9Y,CACT,CAEA,SAAS+Y,GAAiBf,GACxB,MAAMC,EAAcF,GAAUC,GACxBY,EAAWd,GAAaG,EAAYxqB,OAAO4qB,GAAQA,EAAKvlB,IAAI8lB,WAAW,GACvEzjC,EAAO2iC,GAAaF,GAAiBK,EAAa,SAAS,GAC3D7iC,EAAQ0iC,GAAaF,GAAiBK,EAAa,UACnDh9B,EAAM68B,GAAaF,GAAiBK,EAAa,QAAQ,GACzD/8B,EAAS48B,GAAaF,GAAiBK,EAAa,WACpDe,EAAmBnB,GAA4BI,EAAa,KAC5DgB,EAAiBpB,GAA4BI,EAAa,KAEhE,MAAO,CACLW,WACAM,WAAY/jC,EAAKq0B,OAAOvuB,GACxBk+B,eAAgB/jC,EAAMo0B,OAAOyP,GAAgBzP,OAAOtuB,GAAQsuB,OAAOwP,GACnEtf,UAAWke,GAAiBK,EAAa,aACzCmB,SAAUjkC,EAAKq0B,OAAOp0B,GAAOo0B,OAAOyP,GACpCzN,WAAYvwB,EAAIuuB,OAAOtuB,GAAQsuB,OAAOwP,GAE1C,CAEA,SAASK,GAAeC,EAAY5f,EAAWrgC,EAAGC,GAChD,OAAO3D,KAAK6C,IAAI8gD,EAAWjgD,GAAIqgC,EAAUrgC,IAAM1D,KAAK6C,IAAI8gD,EAAWhgD,GAAIogC,EAAUpgC,GACnF,CAEA,SAASigD,GAAiBD,EAAYE,GACpCF,EAAWr+B,IAAMtlB,KAAK6C,IAAI8gD,EAAWr+B,IAAKu+B,EAAWv+B,KACrDq+B,EAAWnkC,KAAOxf,KAAK6C,IAAI8gD,EAAWnkC,KAAMqkC,EAAWrkC,MACvDmkC,EAAWp+B,OAASvlB,KAAK6C,IAAI8gD,EAAWp+B,OAAQs+B,EAAWt+B,QAC3Do+B,EAAWlkC,MAAQzf,KAAK6C,IAAI8gD,EAAWlkC,MAAOokC,EAAWpkC,MAC3D,CAEA,SAASqkC,GAAW/f,EAAW8e,EAAQG,EAAQ3Y,GAC7C,MAAM,IAACzN,EAAA,IAAKO,GAAO6lB,EACbW,EAAa5f,EAAU4f,WAG7B,IAAK3uC,GAAS4nB,GAAM,CACdomB,EAAO5kD,OAET2lC,EAAUnH,IAAQomB,EAAO5kD,MAE3B,MAAMirC,EAAQgB,EAAO2Y,EAAO3Z,QAAU,CAACjrC,KAAM,EAAGgB,MAAO,GACvDiqC,EAAMjrC,KAAO4B,KAAK6C,IAAIwmC,EAAMjrC,KAAM4kD,EAAOnN,WAAa1Y,EAAI7O,OAAS6O,EAAIxtC,OACvEqzD,EAAO5kD,KAAOirC,EAAMjrC,KAAOirC,EAAMjqC,MACjC2kC,EAAUnH,IAAQomB,EAAO5kD,I,CAGvB++B,EAAI4mB,YACNH,GAAiBD,EAAYxmB,EAAI4mB,cAGnC,MAAMC,EAAWhkD,KAAK6C,IAAI,EAAGggD,EAAOoB,WAAaP,GAAeC,EAAY5f,EAAW,OAAQ,UACzFmgB,EAAYlkD,KAAK6C,IAAI,EAAGggD,EAAOsB,YAAcT,GAAeC,EAAY5f,EAAW,MAAO,WAC1FqgB,EAAeJ,IAAajgB,EAAU1+B,EACtCg/C,EAAgBH,IAAcngB,EAAUnhC,EAK9C,OAJAmhC,EAAU1+B,EAAI2+C,EACdjgB,EAAUnhC,EAAIshD,EAGPlB,EAAOnN,WACV,CAACyO,KAAMF,EAAcG,MAAOF,GAC5B,CAACC,KAAMD,EAAeE,MAAOH,EACnC,CAEA,SAASI,GAAiBzgB,GACxB,MAAM4f,EAAa5f,EAAU4f,WAE7B,SAASc,EAAU7nB,GACjB,MAAMtI,EAASt0B,KAAK6C,IAAI8gD,EAAW/mB,GAAOmH,EAAUnH,GAAM,GAE1D,OADAmH,EAAUnH,IAAQtI,EACXA,CACT,CACAyP,EAAUrsB,GAAK+sC,EAAU,OACzB1gB,EAAUt9B,GAAKg+C,EAAU,QACzBA,EAAU,SACVA,EAAU,SACZ,CAEA,SAASC,GAAW7O,EAAY9R,GAC9B,MAAM4f,EAAa5f,EAAU4f,WAE7B,SAASgB,EAAmBnoB,GAC1B,MAAMvM,EAAS,CAACzQ,KAAM,EAAG8F,IAAK,EAAG7F,MAAO,EAAG8F,OAAQ,GAInD,OAHAiX,EAAU1e,QAAS8e,IACjB3M,EAAO2M,GAAO58B,KAAK6C,IAAIkhC,EAAUnH,GAAM+mB,EAAW/mB,MAE7C3M,CACT,CAEA,OACI00B,EADG9O,EACgB,CAAC,OAAQ,SACT,CAAC,MAAO,UACjC,CAEA,SAAS+O,GAASvC,EAAOte,EAAW8e,EAAQxY,GAC1C,MAAMwa,EAAa,GACnB,IAAIt/C,EAAG8Q,EAAM2sC,EAAQ7lB,EAAK2nB,EAAOrjC,EAEjC,IAAKlc,EAAI,EAAG8Q,EAAOgsC,EAAMjsD,OAAQ0uD,EAAQ,EAAGv/C,EAAI8Q,IAAQ9Q,EAAG,CACzDy9C,EAASX,EAAM98C,GACf43B,EAAM6lB,EAAO7lB,IAEbA,EAAIgK,OACF6b,EAAOrzD,OAASo0C,EAAU1+B,EAC1B29C,EAAO10B,QAAUyV,EAAUnhC,EAC3B8hD,GAAW1B,EAAOnN,WAAY9R,IAEhC,MAAM,KAACugB,EAAA,MAAMC,GAAST,GAAW/f,EAAW8e,EAAQG,EAAQ3Y,GAI5Dya,GAASR,GAAQO,EAAWzuD,OAG5BqrB,EAAUA,GAAW8iC,EAEhBpnB,EAAI8lB,UACP4B,EAAW9sC,KAAKirC,EAEpB,CAEA,OAAO8B,GAASF,GAASC,EAAY9gB,EAAW8e,EAAQxY,IAAW5oB,CACrE,CAEA,SAASsjC,GAAW5nB,EAAK3d,EAAM8F,EAAK31B,EAAO2+B,GACzC6O,EAAI7X,IAAMA,EACV6X,EAAI3d,KAAOA,EACX2d,EAAI1d,MAAQD,EAAO7vB,EACnBwtC,EAAI5X,OAASD,EAAMgJ,EACnB6O,EAAIxtC,MAAQA,EACZwtC,EAAI7O,OAASA,CACf,CAEA,SAAS02B,GAAW3C,EAAOte,EAAW8e,EAAQxY,GAC5C,MAAM4a,EAAcpC,EAAOx9B,QAC3B,IAAI,EAAC5e,EAAA,EAAGiR,GAAKqsB,EAEb,IAAK,MAAMif,KAAUX,EAAO,CAC1B,MAAMllB,EAAM6lB,EAAO7lB,IACbkM,EAAQgB,EAAO2Y,EAAO3Z,QAAU,CAACjqC,MAAO,EAAGujD,OAAQ,EAAGjvC,OAAQ,GAC9DA,EAASsvC,EAAQT,YAAclZ,EAAM31B,QAAW,EACtD,GAAIsvC,EAAOnN,WAAY,CACrB,MAAMlmD,EAAQo0C,EAAU1+B,EAAIqO,EACtB4a,EAAS+a,EAAMjrC,MAAQ++B,EAAI7O,OAC7BjW,GAAQgxB,EAAMrzC,SAChB0hB,EAAI2xB,EAAMrzC,OAERmnC,EAAI8lB,SACN8B,GAAW5nB,EAAK8nB,EAAYzlC,KAAM9H,EAAGmrC,EAAOoB,WAAagB,EAAYxlC,MAAQwlC,EAAYzlC,KAAM8O,GAE/Fy2B,GAAW5nB,EAAK4G,EAAUvkB,KAAO6pB,EAAMsZ,OAAQjrC,EAAG/nB,EAAO2+B,GAE3D+a,EAAMrzC,MAAQ0hB,EACd2xB,EAAMsZ,QAAUhzD,EAChB+nB,EAAIylB,EAAI5X,M,KACH,CACL,MAAM+I,EAASyV,EAAUnhC,EAAI8Q,EACvB/jB,EAAQ05C,EAAMjrC,MAAQ++B,EAAIxtC,MAC5B0oB,GAAQgxB,EAAMrzC,SAChByQ,EAAI4iC,EAAMrzC,OAERmnC,EAAI8lB,SACN8B,GAAW5nB,EAAK12B,EAAGw+C,EAAY3/B,IAAK31B,EAAOkzD,EAAOsB,YAAcc,EAAY1/B,OAAS0/B,EAAY3/B,KAEjGy/B,GAAW5nB,EAAK12B,EAAGs9B,EAAUze,IAAM+jB,EAAMsZ,OAAQhzD,EAAO2+B,GAE1D+a,EAAMrzC,MAAQyQ,EACd4iC,EAAMsZ,QAAUr0B,EAChB7nB,EAAI02B,EAAI1d,K,CAEZ,CAEAskB,EAAUt9B,EAAIA,EACds9B,EAAUrsB,EAAIA,CAChB,CAwBA,IAAA+qC,GAAe,CAQbyC,MAAAA,CAAOx+B,EAAOx4B,GACPw4B,EAAM27B,QACT37B,EAAM27B,MAAQ,IAIhBn0D,EAAK+0D,SAAW/0D,EAAK+0D,WAAY,EACjC/0D,EAAKoyD,SAAWpyD,EAAKoyD,UAAY,MACjCpyD,EAAKwlB,OAASxlB,EAAKwlB,QAAU,EAE7BxlB,EAAKi3D,QAAUj3D,EAAKi3D,SAAW,WAC7B,MAAO,CAAC,CACNC,EAAG,EACHhgB,IAAAA,CAAKrB,GACH71C,EAAKk3C,KAAKrB,EACZ,GAEJ,EAEArd,EAAM27B,MAAMtqC,KAAK7pB,EACnB,EAOAm3D,SAAAA,CAAU3+B,EAAO4+B,GACf,MAAMl3D,EAAQs4B,EAAM27B,MAAQ37B,EAAM27B,MAAMvrC,QAAQwuC,IAAe,GAChD,IAAXl3D,GACFs4B,EAAM27B,MAAMhkC,OAAOjwB,EAAO,EAE9B,EAQAy5C,SAAAA,CAAUnhB,EAAOx4B,EAAM2Q,GACrB3Q,EAAK+0D,SAAWpkD,EAAQokD,SACxB/0D,EAAKoyD,SAAWzhD,EAAQyhD,SACxBpyD,EAAKwlB,OAAS7U,EAAQ6U,MACxB,EAUAyzB,MAAAA,CAAOzgB,EAAO/2B,EAAO2+B,EAAQi3B,GAC3B,IAAK7+B,EACH,OAGF,MAAMrB,EAAUsO,GAAUjN,EAAM7nB,QAAQmkD,OAAO39B,SACzC69B,EAAiBljD,KAAK6C,IAAIlT,EAAQ01B,EAAQ11B,MAAO,GACjDwzD,EAAkBnjD,KAAK6C,IAAIyrB,EAASjJ,EAAQiJ,OAAQ,GACpD+zB,EAAQe,GAAiB18B,EAAM27B,OAC/BmD,EAAgBnD,EAAMoB,SACtBgC,EAAkBpD,EAAMxM,WAI9B9/B,GAAK2Q,EAAM27B,MAAOllB,IACgB,oBAArBA,EAAIuoB,cACbvoB,EAAIuoB,iBA+BR,MAAMC,EAA0BH,EAAc1f,OAAO,CAACzlC,EAAOqiD,IAC3DA,EAAKvlB,IAAIt+B,UAAwC,IAA7B6jD,EAAKvlB,IAAIt+B,QAAQ4oB,QAAoBpnB,EAAQA,EAAQ,EAAG,IAAM,EAE9EwiD,EAAS9jD,OAAOwyC,OAAO,CAC3B0S,WAAYt0D,EACZw0D,YAAa71B,EACbjJ,UACA69B,iBACAC,kBACAL,aAAcI,EAAiB,EAAIyC,EACnC5C,cAAeI,EAAkB,IAE7BQ,EAAa5kD,OAAO8T,OAAO,CAAC,EAAGwS,GACrCu+B,GAAiBD,EAAYhwB,GAAU4xB,IACvC,MAAMxhB,EAAYhlC,OAAO8T,OAAO,CAC9B8wC,aACAt+C,EAAG69C,EACHtgD,EAAGugD,EACH18C,EAAG4e,EAAQ7F,KACX9H,EAAG2N,EAAQC,KACVD,GAEGglB,EAASuY,GAAc4C,EAAc3R,OAAO4R,GAAkB5C,GAGpE+B,GAASvC,EAAMY,SAAUlf,EAAW8e,EAAQxY,GAG5Cua,GAASY,EAAezhB,EAAW8e,EAAQxY,GAGvCua,GAASa,EAAiB1hB,EAAW8e,EAAQxY,IAE/Cua,GAASY,EAAezhB,EAAW8e,EAAQxY,GAG7Cma,GAAiBzgB,GAGjBihB,GAAW3C,EAAMkB,WAAYxf,EAAW8e,EAAQxY,GAGhDtG,EAAUt9B,GAAKs9B,EAAU1+B,EACzB0+B,EAAUrsB,GAAKqsB,EAAUnhC,EAEzBoiD,GAAW3C,EAAMmB,eAAgBzf,EAAW8e,EAAQxY,GAEpD3jB,EAAMqd,UAAY,CAChBvkB,KAAMukB,EAAUvkB,KAChB8F,IAAKye,EAAUze,IACf7F,MAAOskB,EAAUvkB,KAAOukB,EAAU1+B,EAClCkgB,OAAQwe,EAAUze,IAAMye,EAAUnhC,EAClC0rB,OAAQyV,EAAUnhC,EAClBjT,MAAOo0C,EAAU1+B,GAInB0Q,GAAKssC,EAAMte,UAAYif,IACrB,MAAM7lB,EAAM6lB,EAAO7lB,IACnBp+B,OAAO8T,OAAOsqB,EAAKzW,EAAMqd,WACzB5G,EAAIgK,OAAOpD,EAAU1+B,EAAG0+B,EAAUnhC,EAAG,CAAC4c,KAAM,EAAG8F,IAAK,EAAG7F,MAAO,EAAG8F,OAAQ,KAE7E,GC7ba,MAAMqgC,GAOnBC,cAAAA,CAAe33B,EAAQuQ,GAAc,CAQrCqnB,cAAAA,CAAev7B,GACb,OAAO,CACT,CASAr5B,gBAAAA,CAAiBw1B,EAAO13B,EAAMwuB,GAAW,CAQzCpsB,mBAAAA,CAAoBs1B,EAAO13B,EAAMwuB,GAAW,CAK5CiN,mBAAAA,GACE,OAAO,CACT,CASA6T,cAAAA,CAAenC,EAASxsC,EAAO2+B,EAAQmQ,GAGrC,OAFA9uC,EAAQqQ,KAAK6C,IAAI,EAAGlT,GAASwsC,EAAQxsC,OACrC2+B,EAASA,GAAU6N,EAAQ7N,OACpB,CACL3+B,QACA2+B,OAAQtuB,KAAK6C,IAAI,EAAG47B,EAAcz+B,KAAK2Z,MAAMhqB,EAAQ8uC,GAAenQ,GAExE,CAMAy3B,UAAAA,CAAW73B,GACT,OAAO,CACT,CAMA83B,YAAAA,CAAare,GAEb,ECrEa,MAAMse,WAAsBL,GACzCC,cAAAA,CAAe33D,GAIb,OAAOA,GAAQA,EAAKigC,YAAcjgC,EAAKigC,WAAW,OAAS,IAC7D,CACA63B,YAAAA,CAAare,GACXA,EAAO9oC,QAAQgmB,WAAY,CAC7B,ECRF,MAAMqhC,GAAc,WAOdC,GAAc,CAClBC,WAAY,YACZC,UAAW,YACXC,SAAU,UACVC,aAAc,aACdC,YAAa,YACbC,YAAa,YACbC,UAAW,UACXC,aAAc,WACdC,WAAY,YAGRC,GAAgBryD,GAAmB,OAAVA,GAA4B,KAAVA,EAQjD,SAASsyD,GAAW54B,EAAQuQ,GAC1B,MAAM1wC,EAAQmgC,EAAOngC,MAIfg5D,EAAe74B,EAAO84B,aAAa,UACnCC,EAAc/4B,EAAO84B,aAAa,SAsBxC,GAnBA94B,EAAOg4B,IAAe,CACpBrhB,QAAS,CACPvW,OAAQy4B,EACRp3D,MAAOs3D,EACPl5D,MAAO,CACL05B,QAAS15B,EAAM05B,QACf6G,OAAQvgC,EAAMugC,OACd3+B,MAAO5B,EAAM4B,SAQnB5B,EAAM05B,QAAU15B,EAAM05B,SAAW,QAEjC15B,EAAM2vC,UAAY3vC,EAAM2vC,WAAa,aAEjCmpB,GAAcI,GAAc,CAC9B,MAAMC,EAAe3nB,GAAarR,EAAQ,cACrBrpB,IAAjBqiD,IACFh5B,EAAOv+B,MAAQu3D,E,CAInB,GAAIL,GAAcE,GAChB,GAA4B,KAAxB74B,EAAOngC,MAAMugC,OAIfJ,EAAOI,OAASJ,EAAOv+B,OAAS8uC,GAAe,OAC1C,CACL,MAAM0oB,EAAgB5nB,GAAarR,EAAQ,eACrBrpB,IAAlBsiD,IACFj5B,EAAOI,OAAS64B,E,CAKtB,OAAOj5B,CACT,CAIA,MAAMk5B,KAAuBhoB,IAA+B,CAACE,SAAS,GAEtE,SAAS+nB,GAAYx9B,EAAM76B,EAAMwuB,GAC3BqM,GACFA,EAAK34B,iBAAiBlC,EAAMwuB,EAAU4pC,GAE1C,CAEA,SAASE,GAAe5gC,EAAO13B,EAAMwuB,GAC/BkJ,GAASA,EAAMwH,QACjBxH,EAAMwH,OAAO98B,oBAAoBpC,EAAMwuB,EAAU4pC,GAErD,CAEA,SAASG,GAAgB/pB,EAAO9W,GAC9B,MAAM13B,EAAOm3D,GAAY3oB,EAAMxuC,OAASwuC,EAAMxuC,MACxC,EAACyX,EAAC,EAAEiR,GAAK6lB,GAAoBC,EAAO9W,GAC1C,MAAO,CACL13B,OACA03B,QACA8gC,OAAQhqB,EACR/2B,OAAS5B,IAAN4B,EAAkBA,EAAI,KACzBiR,OAAS7S,IAAN6S,EAAkBA,EAAI,KAE7B,CAEA,SAAS+vC,GAAiBC,EAAUx5B,GAClC,IAAK,MAAMrE,KAAQ69B,EACjB,GAAI79B,IAASqE,GAAUrE,EAAKl5B,SAASu9B,GACnC,OAAO,CAGb,CAEA,SAASy5B,GAAqBjhC,EAAO13B,EAAMwuB,GACzC,MAAM0Q,EAASxH,EAAMwH,OACf05B,EAAW,IAAIC,iBAAiBC,IACpC,IAAIC,GAAU,EACd,IAAK,MAAMhT,KAAS+S,EAClBC,EAAUA,GAAWN,GAAiB1S,EAAMiT,WAAY95B,GACxD65B,EAAUA,IAAYN,GAAiB1S,EAAMkT,aAAc/5B,GAEzD65B,GACFvqC,MAIJ,OADAoqC,EAASM,QAAQzsB,SAAU,CAAC0sB,WAAW,EAAMC,SAAS,IAC/CR,CACT,CAEA,SAASS,GAAqB3hC,EAAO13B,EAAMwuB,GACzC,MAAM0Q,EAASxH,EAAMwH,OACf05B,EAAW,IAAIC,iBAAiBC,IACpC,IAAIC,GAAU,EACd,IAAK,MAAMhT,KAAS+S,EAClBC,EAAUA,GAAWN,GAAiB1S,EAAMkT,aAAc/5B,GAC1D65B,EAAUA,IAAYN,GAAiB1S,EAAMiT,WAAY95B,GAEvD65B,GACFvqC,MAIJ,OADAoqC,EAASM,QAAQzsB,SAAU,CAAC0sB,WAAW,EAAMC,SAAS,IAC/CR,CACT,CAEA,MAAMU,GAAqB,IAAI7iC,IAC/B,IAAI8iC,GAAsB,EAE1B,SAASC,KACP,MAAMC,EAAMj5D,OAAO86B,iBACfm+B,IAAQF,KAGZA,GAAsBE,EACtBH,GAAmBxqC,QAAQ,CAACgH,EAAQ4B,KAC9BA,EAAMqH,0BAA4B06B,GACpC3jC,MAGN,CAEA,SAAS4jC,GAA8BhiC,EAAO5B,GACvCwjC,GAAmBlqD,MACtB5O,OAAO0B,iBAAiB,SAAUs3D,IAEpCF,GAAmB9pC,IAAIkI,EAAO5B,EAChC,CAEA,SAAS6jC,GAAgCjiC,GACvC4hC,GAAmB3wB,OAAOjR,GACrB4hC,GAAmBlqD,MACtB5O,OAAO4B,oBAAoB,SAAUo3D,GAEzC,CAEA,SAASI,GAAqBliC,EAAO13B,EAAMwuB,GACzC,MAAM0Q,EAASxH,EAAMwH,OACf6P,EAAY7P,GAAUwN,GAAexN,GAC3C,IAAK6P,EACH,OAEF,MAAMjZ,EAASlG,GAAU,CAACjvB,EAAO2+B,KAC/B,MAAMjpB,EAAI04B,EAAUI,YACpB3gB,EAAS7tB,EAAO2+B,GACZjpB,EAAI04B,EAAUI,aAQhB3gB,KAEDhuB,QAGGo4D,EAAW,IAAIiB,eAAef,IAClC,MAAM/S,EAAQ+S,EAAQ,GAChBn4D,EAAQolD,EAAM+T,YAAYn5D,MAC1B2+B,EAASymB,EAAM+T,YAAYx6B,OAInB,IAAV3+B,GAA0B,IAAX2+B,GAGnBxJ,EAAOn1B,EAAO2+B,KAKhB,OAHAs5B,EAASM,QAAQnqB,GACjB2qB,GAA8BhiC,EAAO5B,GAE9B8iC,CACT,CAEA,SAASmB,GAAgBriC,EAAO13B,EAAM44D,GAChCA,GACFA,EAASoB,aAEE,WAATh6D,GACF25D,GAAgCjiC,EAEpC,CAEA,SAASuiC,GAAqBviC,EAAO13B,EAAMwuB,GACzC,MAAM0Q,EAASxH,EAAMwH,OACfiI,EAAQvX,GAAW4e,IAIL,OAAd9W,EAAMuE,KACRzN,EAAS+pC,GAAgB/pB,EAAO9W,KAEjCA,GAIH,OAFA2gC,GAAYn5B,EAAQl/B,EAAMmnC,GAEnBA,CACT,CAMe,MAAM+yB,WAAoBtD,GAOvCC,cAAAA,CAAe33B,EAAQuQ,GAIrB,MAAMlU,EAAU2D,GAAUA,EAAOC,YAAcD,EAAOC,WAAW,MASjE,OAAI5D,GAAWA,EAAQ2D,SAAWA,GAGhC44B,GAAW54B,EAAQuQ,GACZlU,GAGF,IACT,CAKAu7B,cAAAA,CAAev7B,GACb,MAAM2D,EAAS3D,EAAQ2D,OACvB,IAAKA,EAAOg4B,IACV,OAAO,EAGT,MAAMrhB,EAAU3W,EAAOg4B,IAAarhB,QACpC,CAAC,SAAU,SAAS/mB,QAAS0V,IAC3B,MAAMh/B,EAAQqwC,EAAQrR,GAClB7e,GAAcngB,GAChB05B,EAAOi7B,gBAAgB31B,GAEvBtF,EAAOk7B,aAAa51B,EAAMh/B,KAI9B,MAAMzG,EAAQ82C,EAAQ92C,OAAS,CAAC,EAahC,OAZAgR,OAAOC,KAAKjR,GAAO+vB,QAAS3vB,IAC1B+/B,EAAOngC,MAAMI,GAAOJ,EAAMI,KAQ5B+/B,EAAOv+B,MAAQu+B,EAAOv+B,aAEfu+B,EAAOg4B,KACP,CACT,CAQAh1D,gBAAAA,CAAiBw1B,EAAO13B,EAAMwuB,GAE5B9tB,KAAK0B,oBAAoBs1B,EAAO13B,GAEhC,MAAMq6D,EAAU3iC,EAAM4iC,WAAa5iC,EAAM4iC,SAAW,CAAC,GAC/CC,EAAW,CACfC,OAAQ7B,GACR8B,OAAQpB,GACRvjC,OAAQ8jC,IAEJryD,EAAUgzD,EAASv6D,IAASi6D,GAClCI,EAAQr6D,GAAQuH,EAAQmwB,EAAO13B,EAAMwuB,EACvC,CAOApsB,mBAAAA,CAAoBs1B,EAAO13B,GACzB,MAAMq6D,EAAU3iC,EAAM4iC,WAAa5iC,EAAM4iC,SAAW,CAAC,GAC/CnzB,EAAQkzB,EAAQr6D,GAEtB,IAAKmnC,EACH,OAGF,MAAMozB,EAAW,CACfC,OAAQT,GACRU,OAAQV,GACRjkC,OAAQikC,IAEJxyD,EAAUgzD,EAASv6D,IAASs4D,GAClC/wD,EAAQmwB,EAAO13B,EAAMmnC,GACrBkzB,EAAQr6D,QAAQ6V,CAClB,CAEA4lB,mBAAAA,GACE,OAAOj7B,OAAO86B,gBAChB,CAQAgU,cAAAA,CAAepQ,EAAQv+B,EAAO2+B,EAAQmQ,GACpC,OAAOH,GAAepQ,EAAQv+B,EAAO2+B,EAAQmQ,EAC/C,CAKAsnB,UAAAA,CAAW73B,GACT,MAAM6P,EAAY7P,GAAUwN,GAAexN,GAC3C,SAAU6P,IAAaA,EAAU2rB,YACnC,EC9XK,SAASC,GAAgBz7B,GAC9B,OAAKsN,MAAiD,qBAApBouB,iBAAmC17B,aAAkB07B,gBAC9E3D,GAEFiD,EACT,CCLe,MAAMW,GAAA12C,WAAAA,IAAAsjC,EAAAA,GAAAA,GAAA,kBAAAA,EAAAA,GAAAA,GAAA,kBAAAA,EAAAA,GAAAA,GAAA,eAOV,IAAKA,EAAAA,GAAAA,GAAA,wBAAAA,EAAAA,GAAAA,GAAA,2BAIdqT,eAAAA,CAAgBhJ,GACd,MAAM,EAACr6C,EAAA,EAAGiR,GAAKhoB,KAAKyxD,SAAS,CAAC,IAAK,KAAML,GACzC,MAAO,CAACr6C,IAAGiR,IACb,CAEAqyC,QAAAA,GACE,OAAOzvC,GAAS5qB,KAAK+W,IAAM6T,GAAS5qB,KAAKgoB,EAC3C,CASAypC,QAAAA,CAASpyD,EAAiBi7D,GACxB,MAAMtlB,EAAQh1C,KAAK84C,YACnB,IAAKwhB,IAAUtlB,EAEb,OAAOh1C,KAET,MAAM+U,EAA+B,CAAC,EAItC,OAHA1V,EAAM+uB,QAAS0V,IACb/uB,EAAI+uB,GAAQkR,EAAMlR,IAASkR,EAAMlR,GAAM5O,SAAW8f,EAAMlR,GAAMyT,IAAMv3C,KAAK8jC,KAEpE/uB,CACT,EC3BK,SAASskB,GAAS+C,EAAOrF,GAC9B,MAAMwjC,EAAWn+B,EAAMjtB,QAAQ4nB,MACzByjC,EAAqBC,GAAkBr+B,GACvCs+B,EAAapqD,KAAK8C,IAAImnD,EAASI,eAAiBH,EAAoBA,GACpEI,EAAeL,EAAS9gC,MAAMohC,QAAUC,GAAgB/jC,GAAS,GACjEgkC,EAAkBH,EAAal0D,OAC/Bs0D,EAAQJ,EAAa,GACrBrtC,EAAOqtC,EAAaG,EAAkB,GACtCE,EAAW,GAGjB,GAAIF,EAAkBL,EAEpB,OADAQ,GAAWnkC,EAAOkkC,EAAUL,EAAcG,EAAkBL,GACrDO,EAGT,MAAMzP,EAAU2P,GAAiBP,EAAc7jC,EAAO2jC,GAEtD,GAAIK,EAAkB,EAAG,CACvB,IAAIllD,EAAG8Q,EACP,MAAMy0C,EAAkBL,EAAkB,EAAIzqD,KAAKC,OAAOgd,EAAOytC,IAAUD,EAAkB,IAAM,KAEnG,IADA1xB,GAAKtS,EAAOkkC,EAAUzP,EAASvmC,GAAcm2C,GAAmB,EAAIJ,EAAQI,EAAiBJ,GACxFnlD,EAAI,EAAG8Q,EAAOo0C,EAAkB,EAAGllD,EAAI8Q,EAAM9Q,IAChDwzB,GAAKtS,EAAOkkC,EAAUzP,EAASoP,EAAa/kD,GAAI+kD,EAAa/kD,EAAI,IAGnE,OADAwzB,GAAKtS,EAAOkkC,EAAUzP,EAASj+B,EAAMtI,GAAcm2C,GAAmBrkC,EAAMrwB,OAAS6mB,EAAO6tC,GACrFH,C,CAGT,OADA5xB,GAAKtS,EAAOkkC,EAAUzP,GACfyP,CACT,CAEA,SAASR,GAAkBr+B,GACzB,MAAMpE,EAASoE,EAAMjtB,QAAQ6oB,OACvBS,EAAa2D,EAAMi/B,YACnBC,EAAWl/B,EAAMkoB,QAAU7rB,GAAcT,EAAS,EAAI,GACtDujC,EAAWn/B,EAAMo/B,WAAa/iC,EACpC,OAAOnoB,KAAK2Z,MAAM3Z,KAAK8C,IAAIkoD,EAAUC,GACvC,CAOA,SAASJ,GAAiBP,EAAc7jC,EAAO2jC,GAC7C,MAAMe,EAAmBC,GAAed,GAClCpP,EAAUz0B,EAAMrwB,OAASg0D,EAI/B,IAAKe,EACH,OAAOnrD,KAAK6C,IAAIq4C,EAAS,GAG3B,MAAMmQ,EAAUvxC,GAAWqxC,GAC3B,IAAK,IAAI5lD,EAAI,EAAG8Q,EAAOg1C,EAAQj1D,OAAS,EAAGmP,EAAI8Q,EAAM9Q,IAAK,CACxD,MAAM8gC,EAASglB,EAAQ9lD,GACvB,GAAI8gC,EAAS6U,EACX,OAAO7U,CAEX,CACA,OAAOrmC,KAAK6C,IAAIq4C,EAAS,EAC3B,CAKA,SAASsP,GAAgB/jC,GACvB,MAAM1M,EAAS,GACf,IAAIxU,EAAG8Q,EACP,IAAK9Q,EAAI,EAAG8Q,EAAOoQ,EAAMrwB,OAAQmP,EAAI8Q,EAAM9Q,IACrCkhB,EAAMlhB,GAAG4jB,OACXpP,EAAOhC,KAAKxS,GAGhB,OAAOwU,CACT,CAQA,SAAS6wC,GAAWnkC,EAAOkkC,EAAUL,EAAcpP,GACjD,IAEI31C,EAFAnG,EAAQ,EACRi6B,EAAOixB,EAAa,GAIxB,IADApP,EAAUl7C,KAAKsrD,KAAKpQ,GACf31C,EAAI,EAAGA,EAAIkhB,EAAMrwB,OAAQmP,IACxBA,IAAM8zB,IACRsxB,EAAS5yC,KAAK0O,EAAMlhB,IACpBnG,IACAi6B,EAAOixB,EAAalrD,EAAQ87C,GAGlC,CASA,SAASniB,GAAKtS,EAAOkkC,EAAUzP,EAASqQ,EAAYC,GAClD,MAAMx1D,EAAQqf,GAAek2C,EAAY,GACnCtvC,EAAMjc,KAAK8C,IAAIuS,GAAem2C,EAAU/kC,EAAMrwB,QAASqwB,EAAMrwB,QACnE,IACIA,EAAQmP,EAAG8zB,EADXj6B,EAAQ,EAGZ87C,EAAUl7C,KAAKsrD,KAAKpQ,GAChBsQ,IACFp1D,EAASo1D,EAAWD,EACpBrQ,EAAU9kD,EAAS4J,KAAK2Z,MAAMvjB,EAAS8kD,IAGzC7hB,EAAOrjC,EAEP,MAAOqjC,EAAO,EACZj6B,IACAi6B,EAAOr5B,KAAKC,MAAMjK,EAAQoJ,EAAQ87C,GAGpC,IAAK31C,EAAIvF,KAAK6C,IAAI7M,EAAO,GAAIuP,EAAI0W,EAAK1W,IAChCA,IAAM8zB,IACRsxB,EAAS5yC,KAAK0O,EAAMlhB,IACpBnG,IACAi6B,EAAOr5B,KAAKC,MAAMjK,EAAQoJ,EAAQ87C,GAGxC,CAMA,SAASkQ,GAAevzB,GACtB,MAAMnzB,EAAMmzB,EAAIzhC,OAChB,IAAImP,EAAGo6C,EAEP,GAAIj7C,EAAM,EACR,OAAO,EAGT,IAAKi7C,EAAO9nB,EAAI,GAAItyB,EAAI,EAAGA,EAAIb,IAAOa,EACpC,GAAIsyB,EAAItyB,GAAKsyB,EAAItyB,EAAI,KAAOo6C,EAC1B,OAAO,EAGX,OAAOA,CACT,ED7HAlJ,EAAAA,GAAAA,GAvCqBoT,GAAA,WAED,CAAC,IAAEpT,EAAAA,GAAAA,GAFFoT,GAAA,qBAGIhlD,GEAzB,MAAM4mD,GAAgBpsC,GAAoB,SAAVA,EAAmB,QAAoB,UAAVA,EAAoB,OAASA,EACpFqsC,GAAiBA,CAAC5/B,EAAOiqB,EAAMruB,IAAoB,QAATquB,GAA2B,SAATA,EAAkBjqB,EAAMiqB,GAAQruB,EAASoE,EAAMiqB,GAAQruB,EACnHikC,GAAgBA,CAACC,EAAavB,IAAkBrqD,KAAK8C,IAAIunD,GAAiBuB,EAAaA,GAY7F,SAASC,GAAOh0B,EAAKi0B,GACnB,MAAM/xC,EAAS,GACTgyC,EAAYl0B,EAAIzhC,OAAS01D,EACzBpnD,EAAMmzB,EAAIzhC,OAChB,IAAImP,EAAI,EAER,KAAOA,EAAIb,EAAKa,GAAKwmD,EACnBhyC,EAAOhC,KAAK8f,EAAI73B,KAAK2Z,MAAMpU,KAE7B,OAAOwU,CACT,CAOA,SAASiyC,GAAoBlgC,EAAO19B,EAAO69D,GACzC,MAAM71D,EAAS01B,EAAMrF,MAAMrwB,OACrB81D,EAAalsD,KAAK8C,IAAI1U,EAAOgI,EAAS,GACtCJ,EAAQ81B,EAAMosB,YACdj8B,EAAM6P,EAAMqsB,UACZ7+B,EAAU,KAChB,IACIoO,EADAykC,EAAYrgC,EAAMooB,gBAAgBgY,GAGtC,KAAID,IAEAvkC,EADa,IAAXtxB,EACO4J,KAAK6C,IAAIspD,EAAYn2D,EAAOimB,EAAMkwC,GACxB,IAAV/9D,GACC09B,EAAMooB,gBAAgB,GAAKiY,GAAa,GAExCA,EAAYrgC,EAAMooB,gBAAgBgY,EAAa,IAAM,EAEjEC,GAAaD,EAAa99D,EAAQs5B,GAAUA,EAGxCykC,EAAYn2D,EAAQsjB,GAAW6yC,EAAYlwC,EAAM3C,IAIvD,OAAO6yC,CACT,CAMA,SAAS7+B,GAAe8+B,EAAQh2D,GAC9B2f,GAAKq2C,EAAS/+B,IACZ,MAAMP,EAAKO,EAAMP,GACXc,EAAQd,EAAG12B,OAAS,EAC1B,IAAImP,EACJ,GAAIqoB,EAAQx3B,EAAQ,CAClB,IAAKmP,EAAI,EAAGA,EAAIqoB,IAASroB,SAChB8nB,EAAMj+B,KAAK09B,EAAGvnB,IAEvBunB,EAAGzO,OAAO,EAAGuP,E,GAGnB,CAKA,SAASy+B,GAAkBxtD,GACzB,OAAOA,EAAQqpB,UAAYrpB,EAAQspB,WAAa,CAClD,CAKA,SAASmkC,GAAeztD,EAASg1B,GAC/B,IAAKh1B,EAAQ4oB,QACX,OAAO,EAGT,MAAMmD,EAAOgJ,GAAO/0B,EAAQ+rB,KAAMiJ,GAC5BxO,EAAUsO,GAAU90B,EAAQwmB,SAC5B+M,EAAQzsB,GAAQ9G,EAAQ4pB,MAAQ5pB,EAAQ4pB,KAAKryB,OAAS,EAE5D,OAAOg8B,EAASxH,EAAKE,WAAczF,EAAQiJ,MAC7C,CAEA,SAASi+B,GAAmBt0B,EAAQnM,GAClC,OAAO0I,GAAcyD,EAAQ,CAC3BnM,QACA98B,KAAM,SAEV,CAEA,SAASw9D,GAAkBv0B,EAAQ7pC,EAAOm3C,GACxC,OAAO/Q,GAAcyD,EAAQ,CAC3BsN,OACAn3C,QACAY,KAAM,QAEV,CAEA,SAASy9D,GAAWptC,EAAOihC,EAAUrqC,GAEnC,IAAIxR,EAAM2a,GAAmBC,GAI7B,OAHIpJ,GAAyB,UAAbqqC,IAA2BrqC,GAAwB,UAAbqqC,KACpD77C,EAAMgnD,GAAahnD,IAEdA,CACT,CAEA,SAASioD,GAAU5gC,EAAOpE,EAAQ44B,EAAUjhC,GAC1C,MAAM,IAACiG,EAAG,KAAE9F,EAAI,OAAE+F,EAAM,MAAE9F,EAAK,MAAEiH,GAASoF,GACpC,UAACiY,EAAA,OAAWhY,GAAUrF,EAC5B,IACI+L,EAAUk6B,EAAQC,EADlB79B,EAAW,EAEf,MAAMT,EAAS/I,EAASD,EAClB31B,EAAQ8vB,EAAQD,EAEtB,GAAIsM,EAAM6pB,eAAgB,CAGxB,GAFAgX,EAASrtC,GAAeD,EAAOG,EAAMC,GAEjCzK,GAASsrC,GAAW,CACtB,MAAMuM,EAAiB9tD,OAAOC,KAAKshD,GAAU,GACvC9rD,EAAQ8rD,EAASuM,GACvBD,EAAS7gC,EAAO8gC,GAAgBlsC,iBAAiBnsB,GAAS85B,EAAS5G,C,MAEnEklC,EADsB,WAAbtM,GACCvc,EAAUxe,OAASwe,EAAUze,KAAO,EAAIgJ,EAAS5G,EAElDgkC,GAAe5/B,EAAOw0B,EAAU54B,GAE3C+K,EAAWhT,EAAQD,C,KACd,CACL,GAAIxK,GAASsrC,GAAW,CACtB,MAAMuM,EAAiB9tD,OAAOC,KAAKshD,GAAU,GACvC9rD,EAAQ8rD,EAASuM,GACvBF,EAAS5gC,EAAO8gC,GAAgBlsC,iBAAiBnsB,GAAS7E,EAAQ+3B,C,MAElEilC,EADsB,WAAbrM,GACCvc,EAAUvkB,KAAOukB,EAAUtkB,OAAS,EAAI9vB,EAAQ+3B,EAEjDgkC,GAAe5/B,EAAOw0B,EAAU54B,GAE3CklC,EAASttC,GAAeD,EAAOkG,EAAQD,GACvCyJ,EAAwB,SAAbuxB,GAAuBtnC,GAAUA,E,CAE9C,MAAO,CAAC2zC,SAAQC,SAAQn6B,WAAU1D,WACpC,CAEe,MAAM+9B,WAAcjD,GAGjC12C,WAAAA,CAAYszB,GACVkQ,QAGAjnD,KAAKoS,GAAK2kC,EAAI3kC,GAEdpS,KAAKV,KAAOy3C,EAAIz3C,KAEhBU,KAAKmP,aAAUgG,EAEfnV,KAAKu7B,IAAMwb,EAAIxb,IAEfv7B,KAAKg3B,MAAQ+f,EAAI/f,MAIjBh3B,KAAK41B,SAAMzgB,EAEXnV,KAAK61B,YAAS1gB,EAEdnV,KAAK8vB,UAAO3a,EAEZnV,KAAK+vB,WAAQ5a,EAEbnV,KAAKC,WAAQkV,EAEbnV,KAAK4+B,YAASzpB,EACdnV,KAAKq9D,SAAW,CACdvtC,KAAM,EACNC,MAAO,EACP6F,IAAK,EACLC,OAAQ,GAGV71B,KAAK+iC,cAAW5tB,EAEhBnV,KAAKouC,eAAYj5B,EAEjBnV,KAAKs9D,gBAAanoD,EAElBnV,KAAKu9D,mBAAgBpoD,EAErBnV,KAAKw9D,iBAAcroD,EAEnBnV,KAAKy9D,kBAAetoD,EAIpBnV,KAAK6wB,UAAO1b,EAEZnV,KAAK09D,mBAAgBvoD,EACrBnV,KAAKoT,SAAM+B,EACXnV,KAAKmT,SAAMgC,EACXnV,KAAK29D,YAASxoD,EAEdnV,KAAK+2B,MAAQ,GAEb/2B,KAAK49D,eAAiB,KAEtB59D,KAAK69D,YAAc,KAEnB79D,KAAK89D,YAAc,KACnB99D,KAAKskD,QAAU,EACftkD,KAAKw7D,WAAa,EAClBx7D,KAAK+9D,kBAAoB,CAAC,EAE1B/9D,KAAKwoD,iBAAcrzC,EAEnBnV,KAAKyoD,eAAYtzC,EACjBnV,KAAKywD,gBAAiB,EACtBzwD,KAAKg+D,cAAW7oD,EAChBnV,KAAKi+D,cAAW9oD,EAChBnV,KAAKk+D,mBAAgB/oD,EACrBnV,KAAKm+D,mBAAgBhpD,EACrBnV,KAAKo+D,aAAe,EACpBp+D,KAAKq+D,aAAe,EACpBr+D,KAAKnC,OAAS,CAAC,EACfmC,KAAKs+D,mBAAoB,EACzBt+D,KAAKu9C,cAAWpoC,CAClB,CAMA46C,IAAAA,CAAK5gD,GACHnP,KAAKmP,QAAUA,EAAQ63B,WAAWhnC,KAAKy+B,cAEvCz+B,KAAK6wB,KAAO1hB,EAAQ0hB,KAGpB7wB,KAAKi+D,SAAWj+D,KAAKkpC,MAAM/5B,EAAQiE,KACnCpT,KAAKg+D,SAAWh+D,KAAKkpC,MAAM/5B,EAAQgE,KACnCnT,KAAKm+D,cAAgBn+D,KAAKkpC,MAAM/5B,EAAQovD,cACxCv+D,KAAKk+D,cAAgBl+D,KAAKkpC,MAAM/5B,EAAQqvD,aAC1C,CAQAt1B,KAAAA,CAAMgT,EAAKx9C,GACT,OAAOw9C,CACT,CAOAlrB,aAAAA,GACE,IAAI,SAACitC,EAAQ,SAAED,EAAQ,cAAEG,EAAA,cAAeD,GAAiBl+D,KAKzD,OAJAi+D,EAAWx4C,GAAgBw4C,EAAUz4D,OAAO4jB,mBAC5C40C,EAAWv4C,GAAgBu4C,EAAUx4D,OAAOi1C,mBAC5C0jB,EAAgB14C,GAAgB04C,EAAe34D,OAAO4jB,mBACtD80C,EAAgBz4C,GAAgBy4C,EAAe14D,OAAOi1C,mBAC/C,CACLrnC,IAAKqS,GAAgBw4C,EAAUE,GAC/BhrD,IAAKsS,GAAgBu4C,EAAUE,GAC/BptC,WAAYvL,GAAS04C,GACrBltC,WAAYxL,GAASy4C,GAEzB,CAQAnd,SAAAA,CAAUpE,GACR,IACIv1C,GADA,IAACkM,EAAA,IAAKD,EAAA,WAAK2d,EAAA,WAAYC,GAAc/wB,KAAKgxB,gBAG9C,GAAIF,GAAcC,EAChB,MAAO,CAAC3d,MAAKD,OAGf,MAAMsrD,EAAQz+D,KAAKi7C,0BACnB,IAAK,IAAIplC,EAAI,EAAG8Q,EAAO83C,EAAM/3D,OAAQmP,EAAI8Q,IAAQ9Q,EAC/C3O,EAAQu3D,EAAM5oD,GAAGslC,WAAW0F,UAAU7gD,KAAMy8C,GACvC3rB,IACH1d,EAAM9C,KAAK8C,IAAIA,EAAKlM,EAAMkM,MAEvB2d,IACH5d,EAAM7C,KAAK6C,IAAIA,EAAKjM,EAAMiM,MAQ9B,OAHAC,EAAM2d,GAAc3d,EAAMD,EAAMA,EAAMC,EACtCD,EAAM2d,GAAc1d,EAAMD,EAAMC,EAAMD,EAE/B,CACLC,IAAKqS,GAAgBrS,EAAKqS,GAAgBtS,EAAKC,IAC/CD,IAAKsS,GAAgBtS,EAAKsS,GAAgBrS,EAAKD,IAEnD,CAOAkhD,UAAAA,GACE,MAAO,CACLvkC,KAAM9vB,KAAKw9D,aAAe,EAC1B5nC,IAAK51B,KAAKs9D,YAAc,EACxBvtC,MAAO/vB,KAAKy9D,cAAgB,EAC5B5nC,OAAQ71B,KAAKu9D,eAAiB,EAElC,CAOAmB,QAAAA,GACE,OAAO1+D,KAAK+2B,KACd,CAKAqpB,SAAAA,GACE,MAAM1gD,EAAOM,KAAKg3B,MAAMt3B,KACxB,OAAOM,KAAKmP,QAAQgxC,SAAWngD,KAAKimD,eAAiBvmD,EAAKi/D,QAAUj/D,EAAKk/D,UAAYl/D,EAAKygD,QAAU,EACtG,CAKA0e,aAAAA,CAAcxqB,EAAYr0C,KAAKg3B,MAAMqd,WACnC,MAAMxlB,EAAQ7uB,KAAK69D,cAAgB79D,KAAK69D,YAAc79D,KAAK8+D,mBAAmBzqB,IAC9E,OAAOxlB,CACT,CAGAmnC,YAAAA,GACEh2D,KAAKnC,OAAS,CAAC,EACfmC,KAAKs+D,mBAAoB,CAC3B,CAMAS,YAAAA,GACE94C,GAAKjmB,KAAKmP,QAAQ4vD,aAAc,CAAC/+D,MACnC,CAUAy3C,MAAAA,CAAO1U,EAAUqL,EAAWY,GAC1B,MAAM,YAAC/W,EAAW,MAAEG,EAAOrB,MAAOwjC,GAAYv6D,KAAKmP,QAC7C6vD,EAAazE,EAASyE,WAG5Bh/D,KAAK++D,eAGL/+D,KAAK+iC,SAAWA,EAChB/iC,KAAKouC,UAAYA,EACjBpuC,KAAKq9D,SAAWruB,EAAU3/B,OAAO8T,OAAO,CACtC2M,KAAM,EACNC,MAAO,EACP6F,IAAK,EACLC,OAAQ,GACPmZ,GAEHhvC,KAAK+2B,MAAQ,KACb/2B,KAAK89D,YAAc,KACnB99D,KAAK49D,eAAiB,KACtB59D,KAAK69D,YAAc,KAGnB79D,KAAKi/D,sBACLj/D,KAAKk/D,gBACLl/D,KAAKm/D,qBAELn/D,KAAKw7D,WAAax7D,KAAKimD,eACnBjmD,KAAKC,MAAQ+uC,EAAQlf,KAAOkf,EAAQjf,MACpC/vB,KAAK4+B,OAASoQ,EAAQpZ,IAAMoZ,EAAQnZ,OAGnC71B,KAAKs+D,oBACRt+D,KAAKo/D,mBACLp/D,KAAKq/D,sBACLr/D,KAAKs/D,kBACLt/D,KAAK29D,OAASj5B,GAAU1kC,KAAMo4B,EAAOH,GACrCj4B,KAAKs+D,mBAAoB,GAG3Bt+D,KAAKu/D,mBAELv/D,KAAK+2B,MAAQ/2B,KAAKw/D,cAAgB,GAGlCx/D,KAAKy/D,kBAIL,MAAMC,EAAkBV,EAAah/D,KAAK+2B,MAAMrwB,OAChD1G,KAAK2/D,sBAAsBD,EAAkBvD,GAAOn8D,KAAK+2B,MAAOioC,GAAch/D,KAAK+2B,OAMnF/2B,KAAKm4C,YAGLn4C,KAAK4/D,+BACL5/D,KAAK6/D,yBACL7/D,KAAK8/D,8BAGDvF,EAASxiC,UAAYwiC,EAASlhC,UAAgC,SAApBkhC,EAASxzC,UACrD/mB,KAAK+2B,MAAQsC,GAASr5B,KAAMA,KAAK+2B,OACjC/2B,KAAK89D,YAAc,KACnB99D,KAAK+/D,iBAGHL,GAEF1/D,KAAK2/D,sBAAsB3/D,KAAK+2B,OAGlC/2B,KAAKggE,YACLhgE,KAAKqS,MACLrS,KAAKigE,WAILjgE,KAAKkgE,aACP,CAKA/nB,SAAAA,GACE,IACI2Q,EAAYE,EADZmX,EAAgBngE,KAAKmP,QAAQoX,QAG7BvmB,KAAKimD,gBACP6C,EAAa9oD,KAAK8vB,KAClBk5B,EAAWhpD,KAAK+vB,QAEhB+4B,EAAa9oD,KAAK41B,IAClBozB,EAAWhpD,KAAK61B,OAEhBsqC,GAAiBA,GAEnBngE,KAAKwoD,YAAcM,EACnB9oD,KAAKyoD,UAAYO,EACjBhpD,KAAKywD,eAAiB0P,EACtBngE,KAAKskD,QAAU0E,EAAWF,EAC1B9oD,KAAKogE,eAAiBpgE,KAAKmP,QAAQkxD,aACrC,CAEAH,WAAAA,GACEj6C,GAAKjmB,KAAKmP,QAAQ+wD,YAAa,CAAClgE,MAClC,CAIAi/D,mBAAAA,GACEh5C,GAAKjmB,KAAKmP,QAAQ8vD,oBAAqB,CAACj/D,MAC1C,CACAk/D,aAAAA,GAEMl/D,KAAKimD,gBAEPjmD,KAAKC,MAAQD,KAAK+iC,SAClB/iC,KAAK8vB,KAAO,EACZ9vB,KAAK+vB,MAAQ/vB,KAAKC,QAElBD,KAAK4+B,OAAS5+B,KAAKouC,UAGnBpuC,KAAK41B,IAAM,EACX51B,KAAK61B,OAAS71B,KAAK4+B,QAIrB5+B,KAAKw9D,YAAc,EACnBx9D,KAAKs9D,WAAa,EAClBt9D,KAAKy9D,aAAe,EACpBz9D,KAAKu9D,cAAgB,CACvB,CACA4B,kBAAAA,GACEl5C,GAAKjmB,KAAKmP,QAAQgwD,mBAAoB,CAACn/D,MACzC,CAEAsgE,UAAAA,CAAWlhE,GACTY,KAAKg3B,MAAMupC,cAAcnhE,EAAMY,KAAKy+B,cACpCxY,GAAKjmB,KAAKmP,QAAQ/P,GAAO,CAACY,MAC5B,CAGAo/D,gBAAAA,GACEp/D,KAAKsgE,WAAW,mBAClB,CACAjB,mBAAAA,GAAuB,CACvBC,eAAAA,GACEt/D,KAAKsgE,WAAW,kBAClB,CAGAf,gBAAAA,GACEv/D,KAAKsgE,WAAW,mBAClB,CAIAd,UAAAA,GACE,MAAO,EACT,CACAC,eAAAA,GACEz/D,KAAKsgE,WAAW,kBAClB,CAEAE,2BAAAA,GACEv6C,GAAKjmB,KAAKmP,QAAQqxD,4BAA6B,CAACxgE,MAClD,CAKAygE,kBAAAA,CAAmB1pC,GACjB,MAAMwjC,EAAWv6D,KAAKmP,QAAQ4nB,MAC9B,IAAIlhB,EAAG8Q,EAAMkvB,EACb,IAAKhgC,EAAI,EAAG8Q,EAAOoQ,EAAMrwB,OAAQmP,EAAI8Q,EAAM9Q,IACzCggC,EAAO9e,EAAMlhB,GACbggC,EAAKlnC,MAAQsX,GAAKs0C,EAASt0C,SAAU,CAAC4vB,EAAK/wC,MAAO+Q,EAAGkhB,GAAQ/2B,KAEjE,CACA0gE,0BAAAA,GACEz6C,GAAKjmB,KAAKmP,QAAQuxD,2BAA4B,CAAC1gE,MACjD,CAIA4/D,4BAAAA,GACE35C,GAAKjmB,KAAKmP,QAAQywD,6BAA8B,CAAC5/D,MACnD,CACA6/D,sBAAAA,GACE,MAAM1wD,EAAUnP,KAAKmP,QACforD,EAAWprD,EAAQ4nB,MACnB4pC,EAAW1E,GAAcj8D,KAAK+2B,MAAMrwB,OAAQyI,EAAQ4nB,MAAM4jC,eAC1D3hC,EAAcuhC,EAASvhC,aAAe,EACtCC,EAAcshC,EAASthC,YAC7B,IACIP,EAAW0V,EAAWwyB,EADtBlD,EAAgB1kC,EAGpB,IAAKh5B,KAAK6gE,eAAiBtG,EAASxiC,SAAWiB,GAAeC,GAAe0nC,GAAY,IAAM3gE,KAAKimD,eAElG,YADAjmD,KAAK09D,cAAgB1kC,GAIvB,MAAM8nC,EAAa9gE,KAAK+gE,iBAClBC,EAAgBF,EAAWG,OAAOhhE,MAClCihE,EAAiBJ,EAAWK,QAAQviC,OAIpCmE,EAAWlW,GAAY7sB,KAAKg3B,MAAM/2B,MAAQ+gE,EAAe,EAAGhhE,KAAK+iC,UACvErK,EAAYvpB,EAAQ6oB,OAASh4B,KAAK+iC,SAAW49B,EAAW59B,GAAY49B,EAAW,GAG3EK,EAAgB,EAAItoC,IACtBA,EAAYqK,GAAY49B,GAAYxxD,EAAQ6oB,OAAS,GAAM,IAC3DoW,EAAYpuC,KAAKouC,UAAYuuB,GAAkBxtD,EAAQkpB,MACvDkiC,EAAS5kC,QAAUinC,GAAeztD,EAAQN,MAAO7O,KAAKg3B,MAAM7nB,QAAQ+rB,MACpE0lC,EAAmBtwD,KAAKga,KAAK02C,EAAgBA,EAAgBE,EAAiBA,GAC9ExD,EAAgBryC,GAAU/a,KAAK8C,IAC7B9C,KAAK8wD,KAAKv0C,IAAai0C,EAAWK,QAAQviC,OAAS,GAAKlG,GAAY,EAAG,IACvEpoB,KAAK8wD,KAAKv0C,GAAYuhB,EAAYwyB,GAAmB,EAAG,IAAMtwD,KAAK8wD,KAAKv0C,GAAYq0C,EAAiBN,GAAmB,EAAG,MAE7HlD,EAAgBptD,KAAK6C,IAAI6lB,EAAa1oB,KAAK8C,IAAI6lB,EAAaykC,KAG9D19D,KAAK09D,cAAgBA,CACvB,CACAoC,2BAAAA,GACE75C,GAAKjmB,KAAKmP,QAAQ2wD,4BAA6B,CAAC9/D,MAClD,CACA+/D,aAAAA,GAAiB,CAIjBC,SAAAA,GACE/5C,GAAKjmB,KAAKmP,QAAQ6wD,UAAW,CAAChgE,MAChC,CACAqS,GAAAA,GAEE,MAAMk8C,EAAU,CACdtuD,MAAO,EACP2+B,OAAQ,IAGJ,MAAC5H,EAAO7nB,SAAU4nB,MAAOwjC,EAAU1rD,MAAOwyD,EAAWhpC,KAAMipC,IAAathE,KACxE+3B,EAAU/3B,KAAK6gE,aACf5a,EAAejmD,KAAKimD,eAE1B,GAAIluB,EAAS,CACX,MAAMwpC,EAAc3E,GAAeyE,EAAWrqC,EAAM7nB,QAAQ+rB,MAU5D,GATI+qB,GACFsI,EAAQtuD,MAAQD,KAAK+iC,SACrBwrB,EAAQ3vB,OAAS+9B,GAAkB2E,GAAYC,IAE/ChT,EAAQ3vB,OAAS5+B,KAAKouC,UACtBmgB,EAAQtuD,MAAQ08D,GAAkB2E,GAAYC,GAI5ChH,EAASxiC,SAAW/3B,KAAK+2B,MAAMrwB,OAAQ,CACzC,MAAM,MAACs0D,EAAA,KAAOztC,EAAA,OAAM0zC,EAAA,QAAQE,GAAWnhE,KAAK+gE,iBACtCS,EAAiC,EAAnBjH,EAAS5kC,QACvB8rC,EAAet2C,GAAUnrB,KAAK09D,eAC9BvqC,EAAM7iB,KAAK6iB,IAAIsuC,GACfvvC,EAAM5hB,KAAK4hB,IAAIuvC,GAErB,GAAIxb,EAAc,CAEhB,MAAMyb,EAAcnH,EAASrhC,OAAS,EAAIhH,EAAM+uC,EAAOhhE,MAAQkzB,EAAMguC,EAAQviC,OAC7E2vB,EAAQ3vB,OAAStuB,KAAK8C,IAAIpT,KAAKouC,UAAWmgB,EAAQ3vB,OAAS8iC,EAAcF,E,KACpE,CAGL,MAAMG,EAAapH,EAASrhC,OAAS,EAAI/F,EAAM8tC,EAAOhhE,MAAQiyB,EAAMivC,EAAQviC,OAE5E2vB,EAAQtuD,MAAQqQ,KAAK8C,IAAIpT,KAAK+iC,SAAUwrB,EAAQtuD,MAAQ0hE,EAAaH,E,CAEvExhE,KAAK4hE,kBAAkB5G,EAAOztC,EAAM2E,EAAKiB,E,EAI7CnzB,KAAK6hE,iBAED5b,GACFjmD,KAAKC,MAAQD,KAAKskD,QAAUttB,EAAM/2B,MAAQD,KAAKq9D,SAASvtC,KAAO9vB,KAAKq9D,SAASttC,MAC7E/vB,KAAK4+B,OAAS2vB,EAAQ3vB,SAEtB5+B,KAAKC,MAAQsuD,EAAQtuD,MACrBD,KAAK4+B,OAAS5+B,KAAKskD,QAAUttB,EAAM4H,OAAS5+B,KAAKq9D,SAASznC,IAAM51B,KAAKq9D,SAASxnC,OAElF,CAEA+rC,iBAAAA,CAAkB5G,EAAOztC,EAAM2E,EAAKiB,GAClC,MAAO4D,OAAO,MAACpH,EAAA,QAAOgG,GAAQ,SAAEi7B,GAAY5wD,KAAKmP,QAC3C2yD,EAAmC,IAAvB9hE,KAAK09D,cACjBqE,EAAgC,QAAbnR,GAAoC,MAAd5wD,KAAK6wB,KAEpD,GAAI7wB,KAAKimD,eAAgB,CACvB,MAAM+b,EAAahiE,KAAKwkD,gBAAgB,GAAKxkD,KAAK8vB,KAC5CmyC,EAAcjiE,KAAK+vB,MAAQ/vB,KAAKwkD,gBAAgBxkD,KAAK+2B,MAAMrwB,OAAS,GAC1E,IAAI82D,EAAc,EACdC,EAAe,EAIfqE,EACEC,GACFvE,EAAcrqC,EAAM6nC,EAAM/6D,MAC1Bw9D,EAAevrC,EAAM3E,EAAKqR,SAE1B4+B,EAActrC,EAAM8oC,EAAMp8B,OAC1B6+B,EAAetqC,EAAM5F,EAAKttB,OAET,UAAV0vB,EACT8tC,EAAelwC,EAAKttB,MACD,QAAV0vB,EACT6tC,EAAcxC,EAAM/6D,MACD,UAAV0vB,IACT6tC,EAAcxC,EAAM/6D,MAAQ,EAC5Bw9D,EAAelwC,EAAKttB,MAAQ,GAI9BD,KAAKw9D,YAAcltD,KAAK6C,KAAKqqD,EAAcwE,EAAarsC,GAAW31B,KAAKC,OAASD,KAAKC,MAAQ+hE,GAAa,GAC3GhiE,KAAKy9D,aAAentD,KAAK6C,KAAKsqD,EAAewE,EAActsC,GAAW31B,KAAKC,OAASD,KAAKC,MAAQgiE,GAAc,E,KAC1G,CACL,IAAI3E,EAAa/vC,EAAKqR,OAAS,EAC3B2+B,EAAgBvC,EAAMp8B,OAAS,EAErB,UAAVjP,GACF2tC,EAAa,EACbC,EAAgBvC,EAAMp8B,QACH,QAAVjP,IACT2tC,EAAa/vC,EAAKqR,OAClB2+B,EAAgB,GAGlBv9D,KAAKs9D,WAAaA,EAAa3nC,EAC/B31B,KAAKu9D,cAAgBA,EAAgB5nC,C,CAEzC,CAMAksC,cAAAA,GACM7hE,KAAKq9D,WACPr9D,KAAKq9D,SAASvtC,KAAOxf,KAAK6C,IAAInT,KAAKw9D,YAAax9D,KAAKq9D,SAASvtC,MAC9D9vB,KAAKq9D,SAASznC,IAAMtlB,KAAK6C,IAAInT,KAAKs9D,WAAYt9D,KAAKq9D,SAASznC,KAC5D51B,KAAKq9D,SAASttC,MAAQzf,KAAK6C,IAAInT,KAAKy9D,aAAcz9D,KAAKq9D,SAASttC,OAChE/vB,KAAKq9D,SAASxnC,OAASvlB,KAAK6C,IAAInT,KAAKu9D,cAAev9D,KAAKq9D,SAASxnC,QAEtE,CAEAoqC,QAAAA,GACEh6C,GAAKjmB,KAAKmP,QAAQ8wD,SAAU,CAACjgE,MAC/B,CAMAimD,YAAAA,GACE,MAAM,KAACp1B,EAAA,SAAM+/B,GAAY5wD,KAAKmP,QAC9B,MAAoB,QAAbyhD,GAAmC,WAAbA,GAAkC,MAAT//B,CACxD,CAIAqxC,UAAAA,GACE,OAAOliE,KAAKmP,QAAQokD,QACtB,CAMAoM,qBAAAA,CAAsB5oC,GAMpB,IAAIlhB,EAAG8Q,EACP,IANA3mB,KAAKwgE,8BAELxgE,KAAKygE,mBAAmB1pC,GAInBlhB,EAAI,EAAG8Q,EAAOoQ,EAAMrwB,OAAQmP,EAAI8Q,EAAM9Q,IACrCoP,GAAc8R,EAAMlhB,GAAGlH,SACzBooB,EAAMpI,OAAO9Y,EAAG,GAChB8Q,IACA9Q,KAIJ7V,KAAK0gE,4BACP,CAMAK,cAAAA,GACE,IAAID,EAAa9gE,KAAK89D,YAEtB,IAAKgD,EAAY,CACf,MAAM9B,EAAah/D,KAAKmP,QAAQ4nB,MAAMioC,WACtC,IAAIjoC,EAAQ/2B,KAAK+2B,MACbioC,EAAajoC,EAAMrwB,SACrBqwB,EAAQolC,GAAOplC,EAAOioC,IAGxBh/D,KAAK89D,YAAcgD,EAAa9gE,KAAKmiE,mBAAmBprC,EAAOA,EAAMrwB,OAAQ1G,KAAKmP,QAAQ4nB,MAAM4jC,c,CAGlG,OAAOmG,CACT,CAQAqB,kBAAAA,CAAmBprC,EAAOrwB,EAAQi0D,GAChC,MAAM,IAACp/B,EAAKwiC,kBAAmBrB,GAAU18D,KACnCoiE,EAAS,GACTC,EAAU,GACVhG,EAAY/rD,KAAK2Z,MAAMvjB,EAASu1D,GAAcv1D,EAAQi0D,IAC5D,IAEI9kD,EAAG+L,EAAGkc,EAAMnvB,EAAO2zD,EAAUC,EAAY5kC,EAAOvC,EAAYn7B,EAAO2+B,EAAQ4jC,EAF3EC,EAAkB,EAClBC,EAAmB,EAGvB,IAAK7sD,EAAI,EAAGA,EAAInP,EAAQmP,GAAKwmD,EAAW,CAQtC,GAPA1tD,EAAQooB,EAAMlhB,GAAGlH,MACjB2zD,EAAWtiE,KAAK2iE,wBAAwB9sD,GACxC0lB,EAAIL,KAAOqnC,EAAaD,EAAShlC,OACjCK,EAAQ++B,EAAO6F,GAAc7F,EAAO6F,IAAe,CAAC7iE,KAAM,CAAC,EAAG09B,GAAI,IAClEhC,EAAaknC,EAASlnC,WACtBn7B,EAAQ2+B,EAAS,EAEZ3Z,GAActW,IAAWsH,GAAQtH,IAG/B,GAAIsH,GAAQtH,GAEjB,IAAKiT,EAAI,EAAGkc,EAAOnvB,EAAMjI,OAAQkb,EAAIkc,IAAQlc,EAC3C4gD,EAAqC7zD,EAAMiT,GAEtCqD,GAAcu9C,IAAiBvsD,GAAQusD,KAC1CviE,EAAQk9B,GAAa5B,EAAKoC,EAAMj+B,KAAMi+B,EAAMP,GAAIn9B,EAAOuiE,GACvD5jC,GAAUxD,QATdn7B,EAAQk9B,GAAa5B,EAAKoC,EAAMj+B,KAAMi+B,EAAMP,GAAIn9B,EAAO0O,GACvDiwB,EAASxD,EAYXgnC,EAAO/5C,KAAKpoB,GACZoiE,EAAQh6C,KAAKuW,GACb6jC,EAAkBnyD,KAAK6C,IAAIlT,EAAOwiE,GAClCC,EAAmBpyD,KAAK6C,IAAIyrB,EAAQ8jC,EACtC,CACA9kC,GAAe8+B,EAAQh2D,GAEvB,MAAMu6D,EAASmB,EAAOh7C,QAAQq7C,GACxBtB,EAAUkB,EAAQj7C,QAAQs7C,GAE1BE,EAAWC,IAAA,CAAU5iE,MAAOmiE,EAAOS,IAAQ,EAAGjkC,OAAQyjC,EAAQQ,IAAQ,IAE5E,MAAO,CACL7H,MAAO4H,EAAQ,GACfr1C,KAAMq1C,EAAQl8D,EAAS,GACvBu6D,OAAQ2B,EAAQ3B,GAChBE,QAASyB,EAAQzB,GACjBiB,SACAC,UAEJ,CAOAhhB,gBAAAA,CAAiBv8C,GACf,OAAOA,CACT,CASAmsB,gBAAAA,CAAiBnsB,EAAOpG,GACtB,OAAOkiD,GACT,CAQAqI,gBAAAA,CAAiB7qB,GAAQ,CAQzBomB,eAAAA,CAAgB9lD,GACd,MAAMq4B,EAAQ/2B,KAAK+2B,MACnB,OAAIr4B,EAAQ,GAAKA,EAAQq4B,EAAMrwB,OAAS,EAC/B,KAEF1G,KAAKixB,iBAAiB8F,EAAMr4B,GAAOoG,MAC5C,CAQAikD,kBAAAA,CAAmB+Z,GACb9iE,KAAKywD,iBACPqS,EAAU,EAAIA,GAGhB,MAAM1kC,EAAQp+B,KAAKwoD,YAAcsa,EAAU9iE,KAAKskD,QAChD,OAAOx3B,GAAY9sB,KAAKogE,eAAiBjiC,GAAYn+B,KAAKg3B,MAAOoH,EAAO,GAAKA,EAC/E,CAMA2kC,kBAAAA,CAAmB3kC,GACjB,MAAM0kC,GAAW1kC,EAAQp+B,KAAKwoD,aAAexoD,KAAKskD,QAClD,OAAOtkD,KAAKywD,eAAiB,EAAIqS,EAAUA,CAC7C,CAOA3b,YAAAA,GACE,OAAOnnD,KAAKixB,iBAAiBjxB,KAAKgjE,eACpC,CAKAA,YAAAA,GACE,MAAM,IAAC5vD,EAAG,IAAED,GAAOnT,KAEnB,OAAOoT,EAAM,GAAKD,EAAM,EAAIA,EAC1BC,EAAM,GAAKD,EAAM,EAAIC,EACrB,CACJ,CAKAqrB,UAAAA,CAAW//B,GACT,MAAMq4B,EAAQ/2B,KAAK+2B,OAAS,GAE5B,GAAIr4B,GAAS,GAAKA,EAAQq4B,EAAMrwB,OAAQ,CACtC,MAAMmvC,EAAO9e,EAAMr4B,GACnB,OAAOm3C,EAAK0H,WACb1H,EAAK0H,SAAWuf,GAAkB98D,KAAKy+B,aAAc//B,EAAOm3C,G,CAE7D,OAAO71C,KAAKu9C,WACZv9C,KAAKu9C,SAAWsf,GAAmB78D,KAAKg3B,MAAMyH,aAAcz+B,MAC9D,CAMAq7D,SAAAA,GACE,MAAM4H,EAAcjjE,KAAKmP,QAAQ4nB,MAG3BmsC,EAAM/3C,GAAUnrB,KAAK09D,eACrBvqC,EAAM7iB,KAAKuZ,IAAIvZ,KAAK6iB,IAAI+vC,IACxBhxC,EAAM5hB,KAAKuZ,IAAIvZ,KAAK4hB,IAAIgxC,IAExBpC,EAAa9gE,KAAK+gE,iBAClBprC,EAAUstC,EAAY3pC,iBAAmB,EACzC3jB,EAAImrD,EAAaA,EAAWG,OAAOhhE,MAAQ01B,EAAU,EACrDziB,EAAI4tD,EAAaA,EAAWK,QAAQviC,OAASjJ,EAAU,EAG7D,OAAO31B,KAAKimD,eACR/yC,EAAIigB,EAAMxd,EAAIuc,EAAMvc,EAAIwd,EAAMjgB,EAAIgf,EAClChf,EAAIgf,EAAMvc,EAAIwd,EAAMjgB,EAAIigB,EAAMxd,EAAIuc,CACxC,CAMA2uC,UAAAA,GACE,MAAM9oC,EAAU/3B,KAAKmP,QAAQ4oB,QAE7B,MAAgB,SAAZA,IACOA,EAGJ/3B,KAAKi7C,0BAA0Bv0C,OAAS,CACjD,CAKAy8D,qBAAAA,CAAsB9uB,GACpB,MAAMxjB,EAAO7wB,KAAK6wB,KACZmG,EAAQh3B,KAAKg3B,MACb7nB,EAAUnP,KAAKmP,SACf,KAACkpB,EAAI,SAAEu4B,EAAA,OAAUh4B,GAAUzpB,EAC3B6oB,EAASK,EAAKL,OACdiuB,EAAejmD,KAAKimD,eACpBlvB,EAAQ/2B,KAAK+2B,MACbmlC,EAAcnlC,EAAMrwB,QAAUsxB,EAAS,EAAI,GAC3CorC,EAAKzG,GAAkBtkC,GACvBxJ,EAAQ,GAERw0C,EAAazqC,EAAOoO,WAAWhnC,KAAKy+B,cACpC6kC,EAAYD,EAAWtrC,QAAUsrC,EAAWpjE,MAAQ,EACpDsjE,EAAgBD,EAAY,EAC5BE,EAAmB,SAASplC,GAChC,OAAOD,GAAYnH,EAAOoH,EAAOklC,EACnC,EACA,IAAIG,EAAa5tD,EAAG4mD,EAAWiH,EAC3BC,EAAKC,EAAKC,EAAKC,EAAKC,EAAIC,EAAIC,EAAIC,EAEpC,GAAiB,QAAbtT,EACF6S,EAAcD,EAAiBxjE,KAAK61B,QACpC+tC,EAAM5jE,KAAK61B,OAASutC,EACpBU,EAAML,EAAcF,EACpBS,EAAKR,EAAiBnvB,EAAUze,KAAO2tC,EACvCW,EAAK7vB,EAAUxe,YACV,GAAiB,WAAb+6B,EACT6S,EAAcD,EAAiBxjE,KAAK41B,KACpCouC,EAAK3vB,EAAUze,IACfsuC,EAAKV,EAAiBnvB,EAAUxe,QAAU0tC,EAC1CK,EAAMH,EAAcF,EACpBO,EAAM9jE,KAAK41B,IAAMwtC,OACZ,GAAiB,SAAbxS,EACT6S,EAAcD,EAAiBxjE,KAAK+vB,OACpC4zC,EAAM3jE,KAAK+vB,MAAQqzC,EACnBS,EAAMJ,EAAcF,EACpBQ,EAAKP,EAAiBnvB,EAAUvkB,MAAQyzC,EACxCU,EAAK5vB,EAAUtkB,WACV,GAAiB,UAAb6gC,EACT6S,EAAcD,EAAiBxjE,KAAK8vB,MACpCi0C,EAAK1vB,EAAUvkB,KACfm0C,EAAKT,EAAiBnvB,EAAUtkB,OAASwzC,EACzCI,EAAMF,EAAcF,EACpBM,EAAM7jE,KAAK8vB,KAAOszC,OACb,GAAa,MAATvyC,EAAc,CACvB,GAAiB,WAAb+/B,EACF6S,EAAcD,GAAkBnvB,EAAUze,IAAMye,EAAUxe,QAAU,EAAI,SACnE,GAAIvQ,GAASsrC,GAAW,CAC7B,MAAMuM,EAAiB9tD,OAAOC,KAAKshD,GAAU,GACvC9rD,EAAQ8rD,EAASuM,GACvBsG,EAAcD,EAAiBxjE,KAAKg3B,MAAMqF,OAAO8gC,GAAgBlsC,iBAAiBnsB,G,CAGpFk/D,EAAK3vB,EAAUze,IACfsuC,EAAK7vB,EAAUxe,OACf+tC,EAAMH,EAAcF,EACpBO,EAAMF,EAAMR,C,MACP,GAAa,MAATvyC,EAAc,CACvB,GAAiB,WAAb+/B,EACF6S,EAAcD,GAAkBnvB,EAAUvkB,KAAOukB,EAAUtkB,OAAS,QAC/D,GAAIzK,GAASsrC,GAAW,CAC7B,MAAMuM,EAAiB9tD,OAAOC,KAAKshD,GAAU,GACvC9rD,EAAQ8rD,EAASuM,GACvBsG,EAAcD,EAAiBxjE,KAAKg3B,MAAMqF,OAAO8gC,GAAgBlsC,iBAAiBnsB,G,CAGpF6+D,EAAMF,EAAcF,EACpBM,EAAMF,EAAMP,EACZW,EAAK1vB,EAAUvkB,KACfm0C,EAAK5vB,EAAUtkB,K,CAGjB,MAAMo0C,EAAQx+C,GAAexW,EAAQ4nB,MAAM4jC,cAAeuB,GACpDkI,EAAO9zD,KAAK6C,IAAI,EAAG7C,KAAKsrD,KAAKM,EAAciI,IACjD,IAAKtuD,EAAI,EAAGA,EAAIqmD,EAAarmD,GAAKuuD,EAAM,CACtC,MAAMvpC,EAAU76B,KAAKy+B,WAAW5oB,GAC1BwuD,EAAchsC,EAAK2O,WAAWnM,GAC9BypC,EAAoB1rC,EAAOoO,WAAWnM,GAEtCvC,EAAY+rC,EAAY/rC,UACxBisC,EAAYF,EAAYtgD,MACxBiwB,EAAaswB,EAAkBzrC,MAAQ,GACvCob,EAAmBqwB,EAAkBxrC,WAErCJ,EAAY2rC,EAAY3rC,UACxBC,EAAY0rC,EAAY1rC,UACxB6rC,EAAiBH,EAAYG,gBAAkB,GAC/CC,EAAuBJ,EAAYI,qBAEzChI,EAAYH,GAAoBt8D,KAAM6V,EAAGmiB,QAGvB7iB,IAAdsnD,IAIJiH,EAAmBvlC,GAAYnH,EAAOylC,EAAWnkC,GAE7C2tB,EACF0d,EAAME,EAAME,EAAKE,EAAKP,EAEtBE,EAAME,EAAME,EAAKE,EAAKR,EAGxB70C,EAAMxG,KAAK,CACTs7C,MACAC,MACAC,MACAC,MACAC,KACAC,KACAC,KACAC,KACAjkE,MAAOq4B,EACPvU,MAAOwgD,EACPvwB,aACAC,mBACAvb,YACAC,YACA6rC,iBACAC,yBAEJ,CAKA,OAHAzkE,KAAKo+D,aAAelC,EACpBl8D,KAAKq+D,aAAeoF,EAEb50C,CACT,CAKAiwC,kBAAAA,CAAmBzqB,GACjB,MAAMxjB,EAAO7wB,KAAK6wB,KACZ1hB,EAAUnP,KAAKmP,SACf,SAACyhD,EAAU75B,MAAOksC,GAAe9zD,EACjC82C,EAAejmD,KAAKimD,eACpBlvB,EAAQ/2B,KAAK+2B,OACb,MAACpH,EAAA,WAAO+J,EAAA,QAAY/D,EAAO,OAAEuD,GAAU+pC,EACvCG,EAAKzG,GAAkBxtD,EAAQkpB,MAC/BqsC,EAAiBtB,EAAKztC,EACtBgvC,EAAkBzrC,GAAUvD,EAAU+uC,EACtCrlC,GAAYlU,GAAUnrB,KAAK09D,eAC3B7uC,EAAQ,GACd,IAAIhZ,EAAG8Q,EAAMkvB,EAAMlnC,EAAOoI,EAAGiR,EAAGwZ,EAAWpD,EAAOlD,EAAME,EAAYwpC,EAAWC,EAC3EpjC,EAAe,SAEnB,GAAiB,QAAbmvB,EACF5oC,EAAIhoB,KAAK61B,OAAS8uC,EAClBnjC,EAAYxhC,KAAK8kE,+BACZ,GAAiB,WAAblU,EACT5oC,EAAIhoB,KAAK41B,IAAM+uC,EACfnjC,EAAYxhC,KAAK8kE,+BACZ,GAAiB,SAAblU,EAAqB,CAC9B,MAAM77C,EAAM/U,KAAK+kE,wBAAwB3B,GACzC5hC,EAAYzsB,EAAIysB,UAChBzqB,EAAIhC,EAAIgC,C,MACH,GAAiB,UAAb65C,EAAsB,CAC/B,MAAM77C,EAAM/U,KAAK+kE,wBAAwB3B,GACzC5hC,EAAYzsB,EAAIysB,UAChBzqB,EAAIhC,EAAIgC,C,MACH,GAAa,MAAT8Z,EAAc,CACvB,GAAiB,WAAb+/B,EACF5oC,GAAMqsB,EAAUze,IAAMye,EAAUxe,QAAU,EAAK6uC,OAC1C,GAAIp/C,GAASsrC,GAAW,CAC7B,MAAMuM,EAAiB9tD,OAAOC,KAAKshD,GAAU,GACvC9rD,EAAQ8rD,EAASuM,GACvBn1C,EAAIhoB,KAAKg3B,MAAMqF,OAAO8gC,GAAgBlsC,iBAAiBnsB,GAAS4/D,C,CAElEljC,EAAYxhC,KAAK8kE,yB,MACZ,GAAa,MAATj0C,EAAc,CACvB,GAAiB,WAAb+/B,EACF75C,GAAMs9B,EAAUvkB,KAAOukB,EAAUtkB,OAAS,EAAK20C,OAC1C,GAAIp/C,GAASsrC,GAAW,CAC7B,MAAMuM,EAAiB9tD,OAAOC,KAAKshD,GAAU,GACvC9rD,EAAQ8rD,EAASuM,GACvBpmD,EAAI/W,KAAKg3B,MAAMqF,OAAO8gC,GAAgBlsC,iBAAiBnsB,E,CAEzD08B,EAAYxhC,KAAK+kE,wBAAwB3B,GAAI5hC,S,CAGlC,MAAT3Q,IACY,UAAVlB,EACF8R,EAAe,MACI,QAAV9R,IACT8R,EAAe,WAInB,MAAMq/B,EAAa9gE,KAAK+gE,iBACxB,IAAKlrD,EAAI,EAAG8Q,EAAOoQ,EAAMrwB,OAAQmP,EAAI8Q,IAAQ9Q,EAAG,CAC9CggC,EAAO9e,EAAMlhB,GACblH,EAAQknC,EAAKlnC,MAEb,MAAM01D,EAAcpB,EAAYj8B,WAAWhnC,KAAKy+B,WAAW5oB,IAC3DuoB,EAAQp+B,KAAKwkD,gBAAgB3uC,GAAKotD,EAAY1pC,YAC9C2B,EAAOl7B,KAAK2iE,wBAAwB9sD,GACpCulB,EAAaF,EAAKE,WAClBwpC,EAAY3uD,GAAQtH,GAASA,EAAMjI,OAAS,EAC5C,MAAMs+D,EAAYJ,EAAY,EACxB7gD,EAAQsgD,EAAYtgD,MACpB6e,EAAcyhC,EAAYjrC,gBAC1BuJ,EAAc0hC,EAAYlrC,gBAChC,IA4CI0J,EA5CAoiC,EAAgBzjC,EA8CpB,GA5CIykB,GACFlvC,EAAIqnB,EAEc,UAAdoD,IAEAyjC,EADEpvD,IAAM8Q,EAAO,EACE3mB,KAAKmP,QAAQoX,QAAoB,OAAV,QACzB,IAAN1Q,EACQ7V,KAAKmP,QAAQoX,QAAmB,QAAT,OAExB,UAMhBs+C,EAFa,QAAbjU,EACiB,SAAfl3B,GAAsC,IAAb2F,GACbulC,EAAYxpC,EAAaA,EAAa,EAC5B,WAAf1B,GACKonC,EAAWK,QAAQviC,OAAS,EAAIomC,EAAY5pC,EAAaA,GAEzD0lC,EAAWK,QAAQviC,OAASxD,EAAa,EAItC,SAAf1B,GAAsC,IAAb2F,EACdjE,EAAa,EACF,WAAf1B,EACIonC,EAAWK,QAAQviC,OAAS,EAAIomC,EAAY5pC,EAE5C0lC,EAAWK,QAAQviC,OAASgmC,EAAYxpC,EAGrDlC,IACF2rC,IAAe,GAEA,IAAbxlC,GAAmBglC,EAAY1qC,oBACjC5iB,GAAKqkB,EAAc,EAAK9qB,KAAK4hB,IAAImN,MAGnCrX,EAAIoW,EACJymC,GAAc,EAAID,GAAaxpC,EAAa,GAK1CipC,EAAY1qC,kBAAmB,CACjC,MAAMurC,EAAejhC,GAAUogC,EAAYxqC,iBACrC+E,EAASkiC,EAAWuB,QAAQxsD,GAC5B5V,EAAQ6gE,EAAWsB,OAAOvsD,GAEhC,IAAI+f,EAAMivC,EAAaK,EAAatvC,IAChC9F,EAAO,EAAIo1C,EAAap1C,KAE5B,OAAQ2R,GACR,IAAK,SACH7L,GAAOgJ,EAAS,EAChB,MACF,IAAK,SACHhJ,GAAOgJ,EACP,MAKF,OAAQ4C,GACR,IAAK,SACH1R,GAAQ7vB,EAAQ,EAChB,MACF,IAAK,QACH6vB,GAAQ7vB,EACR,MACF,IAAK,QACC4V,IAAM8Q,EAAO,EACfmJ,GAAQ7vB,EACC4V,EAAI,IACbia,GAAQ7vB,EAAQ,GAElB,MAKF4iC,EAAW,CACT/S,OACA8F,MACA31B,MAAOA,EAAQilE,EAAajlE,MAC5B2+B,OAAQA,EAASsmC,EAAatmC,OAE9B7a,MAAOsgD,EAAYzqC,c,CAIvB/K,EAAMxG,KAAK,CACT1Z,QACAusB,OACA2pC,aACA11D,QAAS,CACPkwB,WACAtb,QACA6e,cACAD,cACAnB,UAAWyjC,EACXxjC,eACAH,YAAa,CAACvqB,EAAGiR,GACjB6a,aAGN,CAEA,OAAOhU,CACT,CAEAi2C,uBAAAA,GACE,MAAM,SAAClU,EAAA,MAAU75B,GAAS/2B,KAAKmP,QACzBkwB,GAAYlU,GAAUnrB,KAAK09D,eAEjC,GAAIr+B,EACF,MAAoB,QAAbuxB,EAAqB,OAAS,QAGvC,IAAIjhC,EAAQ,SAUZ,MARoB,UAAhBoH,EAAMpH,MACRA,EAAQ,OACiB,QAAhBoH,EAAMpH,MACfA,EAAQ,QACiB,UAAhBoH,EAAMpH,QACfA,EAAQ,SAGHA,CACT,CAEAo1C,uBAAAA,CAAwB3B,GACtB,MAAM,SAACxS,EAAU75B,OAAO,WAAC2C,EAAA,OAAYR,EAAA,QAAQvD,IAAY31B,KAAKmP,QACxD2xD,EAAa9gE,KAAK+gE,iBAClB2D,EAAiBtB,EAAKztC,EACtBsrC,EAASH,EAAWG,OAAOhhE,MAEjC,IAAIuhC,EACAzqB,EA0DJ,MAxDiB,SAAb65C,EACE13B,GACFniB,EAAI/W,KAAK+vB,MAAQ4F,EAEE,SAAf+D,EACF8H,EAAY,OACY,WAAf9H,GACT8H,EAAY,SACZzqB,GAAMkqD,EAAS,IAEfz/B,EAAY,QACZzqB,GAAKkqD,KAGPlqD,EAAI/W,KAAK+vB,MAAQ20C,EAEE,SAAfhrC,EACF8H,EAAY,QACY,WAAf9H,GACT8H,EAAY,SACZzqB,GAAMkqD,EAAS,IAEfz/B,EAAY,OACZzqB,EAAI/W,KAAK8vB,OAGS,UAAb8gC,EACL13B,GACFniB,EAAI/W,KAAK8vB,KAAO6F,EAEG,SAAf+D,EACF8H,EAAY,QACY,WAAf9H,GACT8H,EAAY,SACZzqB,GAAMkqD,EAAS,IAEfz/B,EAAY,OACZzqB,GAAKkqD,KAGPlqD,EAAI/W,KAAK8vB,KAAO40C,EAEG,SAAfhrC,EACF8H,EAAY,OACY,WAAf9H,GACT8H,EAAY,SACZzqB,GAAKkqD,EAAS,IAEdz/B,EAAY,QACZzqB,EAAI/W,KAAK+vB,QAIbyR,EAAY,QAGP,CAACA,YAAWzqB,IACrB,CAKAouD,iBAAAA,GACE,GAAInlE,KAAKmP,QAAQ4nB,MAAMmC,OACrB,OAGF,MAAMlC,EAAQh3B,KAAKg3B,MACb45B,EAAW5wD,KAAKmP,QAAQyhD,SAE9B,MAAiB,SAAbA,GAAoC,UAAbA,EAClB,CAACh7B,IAAK,EAAG9F,KAAM9vB,KAAK8vB,KAAM+F,OAAQmB,EAAM4H,OAAQ7O,MAAO/vB,KAAK+vB,OAClD,QAAb6gC,GAAmC,WAAbA,EACnB,CAACh7B,IAAK51B,KAAK41B,IAAK9F,KAAM,EAAG+F,OAAQ71B,KAAK61B,OAAQ9F,MAAOiH,EAAM/2B,YADlE,CAGJ,CAKAmlE,cAAAA,GACE,MAAM,IAAC7pC,EAAKpsB,SAAS,gBAACsrB,GAAgB,KAAE3K,EAAI,IAAE8F,EAAA,MAAK31B,EAAA,OAAO2+B,GAAU5+B,KAChEy6B,IACFc,EAAIsC,OACJtC,EAAIgG,UAAY9G,EAChBc,EAAIiH,SAAS1S,EAAM8F,EAAK31B,EAAO2+B,GAC/BrD,EAAI0C,UAER,CAEAkrB,oBAAAA,CAAqBrkD,GACnB,MAAMuzB,EAAOr4B,KAAKmP,QAAQkpB,KAC1B,IAAKr4B,KAAK6gE,eAAiBxoC,EAAKN,QAC9B,OAAO,EAET,MAAMhB,EAAQ/2B,KAAK+2B,MACbr4B,EAAQq4B,EAAM5F,UAAUtO,GAAKA,EAAE/d,QAAUA,GAC/C,GAAIpG,GAAS,EAAG,CACd,MAAM2iC,EAAOhJ,EAAK2O,WAAWhnC,KAAKy+B,WAAW//B,IAC7C,OAAO2iC,EAAK/I,S,CAEd,OAAO,CACT,CAKA+sC,QAAAA,CAAShxB,GACP,MAAMhc,EAAOr4B,KAAKmP,QAAQkpB,KACpBkD,EAAMv7B,KAAKu7B,IACX1M,EAAQ7uB,KAAK49D,iBAAmB59D,KAAK49D,eAAiB59D,KAAKmjE,sBAAsB9uB,IACvF,IAAIx+B,EAAG8Q,EAEP,MAAM2+C,EAAWA,CAAC5uD,EAAIC,EAAItY,KACnBA,EAAM4B,OAAU5B,EAAM0lB,QAG3BwX,EAAIsC,OACJtC,EAAIjD,UAAYj6B,EAAM4B,MACtBs7B,EAAI6G,YAAc/jC,EAAM0lB,MACxBwX,EAAIgqC,YAAYlnE,EAAM21C,YAAc,IACpCzY,EAAI8xB,eAAiBhvD,EAAM41C,iBAE3B1Y,EAAImE,YACJnE,EAAIuE,OAAOppB,EAAGK,EAAGL,EAAGsR,GACpBuT,EAAIwE,OAAOppB,EAAGI,EAAGJ,EAAGqR,GACpBuT,EAAI6E,SACJ7E,EAAI0C,YAGN,GAAI5F,EAAKN,QACP,IAAKliB,EAAI,EAAG8Q,EAAOkI,EAAMnoB,OAAQmP,EAAI8Q,IAAQ9Q,EAAG,CAC9C,MAAMrX,EAAOqwB,EAAMhZ,GAEfwiB,EAAKE,iBACP+sC,EACE,CAACvuD,EAAGvY,EAAKulE,GAAI/7C,EAAGxpB,EAAKwlE,IACrB,CAACjtD,EAAGvY,EAAKylE,GAAIj8C,EAAGxpB,EAAK0lE,IACrB1lE,GAIA65B,EAAKG,WACP8sC,EACE,CAACvuD,EAAGvY,EAAKmlE,IAAK37C,EAAGxpB,EAAKolE,KACtB,CAAC7sD,EAAGvY,EAAKqlE,IAAK77C,EAAGxpB,EAAKslE,KACtB,CACE//C,MAAOvlB,EAAKm6B,UACZ14B,MAAOzB,EAAKk6B,UACZsb,WAAYx1C,EAAKgmE,eACjBvwB,iBAAkBz1C,EAAKimE,sBAI/B,CAEJ,CAKAe,UAAAA,GACE,MAAM,MAACxuC,EAAA,IAAOuE,EAAKpsB,SAAS,OAACypB,EAAM,KAAEP,IAASr4B,KACxCqjE,EAAazqC,EAAOoO,WAAWhnC,KAAKy+B,cACpC6kC,EAAY1qC,EAAOb,QAAUsrC,EAAWpjE,MAAQ,EACtD,IAAKqjE,EACH,OAEF,MAAMmC,EAAgBptC,EAAK2O,WAAWhnC,KAAKy+B,WAAW,IAAInG,UACpDmrC,EAAczjE,KAAKq+D,aACzB,IAAI0F,EAAIE,EAAID,EAAIE,EAEZlkE,KAAKimD,gBACP8d,EAAK5lC,GAAYnH,EAAOh3B,KAAK8vB,KAAMwzC,GAAaA,EAAY,EAC5DW,EAAK9lC,GAAYnH,EAAOh3B,KAAK+vB,MAAO01C,GAAiBA,EAAgB,EACrEzB,EAAKE,EAAKT,IAEVO,EAAK7lC,GAAYnH,EAAOh3B,KAAK41B,IAAK0tC,GAAaA,EAAY,EAC3DY,EAAK/lC,GAAYnH,EAAOh3B,KAAK61B,OAAQ4vC,GAAiBA,EAAgB,EACtE1B,EAAKE,EAAKR,GAEZloC,EAAIsC,OACJtC,EAAIjD,UAAY+qC,EAAWpjE,MAC3Bs7B,EAAI6G,YAAcihC,EAAWt/C,MAE7BwX,EAAImE,YACJnE,EAAIuE,OAAOikC,EAAIC,GACfzoC,EAAIwE,OAAOkkC,EAAIC,GACf3oC,EAAI6E,SAEJ7E,EAAI0C,SACN,CAKAynC,UAAAA,CAAWrxB,GACT,MAAM4uB,EAAcjjE,KAAKmP,QAAQ4nB,MAEjC,IAAKksC,EAAYlrC,QACf,OAGF,MAAMwD,EAAMv7B,KAAKu7B,IAEX+E,EAAOtgC,KAAKmlE,oBACd7kC,GACFE,GAASjF,EAAK+E,GAGhB,MAAMzR,EAAQ7uB,KAAK6+D,cAAcxqB,GACjC,IAAK,MAAM71C,KAAQqwB,EAAO,CACxB,MAAM82C,EAAoBnnE,EAAK2Q,QACzBmzD,EAAW9jE,EAAK08B,KAChBvsB,EAAQnQ,EAAKmQ,MACbqZ,EAAIxpB,EAAKqmE,WACfpiC,GAAWlH,EAAK5sB,EAAO,EAAGqZ,EAAGs6C,EAAUqD,EACzC,CAEIrlC,GACFG,GAAWlF,EAEf,CAKAqqC,SAAAA,GACE,MAAM,IAACrqC,EAAKpsB,SAAS,SAACyhD,EAAQ,MAAE/hD,EAAK,QAAE0X,IAAYvmB,KAEnD,IAAK6O,EAAMkpB,QACT,OAGF,MAAMmD,EAAOgJ,GAAOr1B,EAAMqsB,MACpBvF,EAAUsO,GAAUp1B,EAAM8mB,SAC1BhG,EAAQ9gB,EAAM8gB,MACpB,IAAIqI,EAASkD,EAAKE,WAAa,EAEd,WAAbw1B,GAAsC,WAAbA,GAAyBtrC,GAASsrC,IAC7D54B,GAAUrC,EAAQE,OACd5f,GAAQpH,EAAMkqB,QAChBf,GAAUkD,EAAKE,YAAcvsB,EAAMkqB,KAAKryB,OAAS,KAGnDsxB,GAAUrC,EAAQC,IAGpB,MAAM,OAACqnC,EAAA,OAAQC,EAAA,SAAQn6B,EAAQ,SAAE1D,GAAY29B,GAAUh9D,KAAMg4B,EAAQ44B,EAAUjhC,GAE/E8S,GAAWlH,EAAK1sB,EAAMkqB,KAAM,EAAG,EAAGmC,EAAM,CACtCnX,MAAOlV,EAAMkV,MACbgf,WACA1D,WACAmC,UAAWu7B,GAAWptC,EAAOihC,EAAUrqC,GACvCkb,aAAc,SACdH,YAAa,CAAC27B,EAAQC,IAE1B,CAEAxnB,IAAAA,CAAKrB,GACEr0C,KAAK6gE,eAIV7gE,KAAKolE,iBACLplE,KAAKqlE,SAAShxB,GACdr0C,KAAKwlE,aACLxlE,KAAK4lE,YACL5lE,KAAK0lE,WAAWrxB,GAClB,CAMAohB,OAAAA,GACE,MAAMp0B,EAAOrhC,KAAKmP,QACZ02D,EAAKxkC,EAAKtK,OAASsK,EAAKtK,MAAM2+B,GAAK,EACnCoQ,EAAKngD,GAAe0b,EAAKhJ,MAAQgJ,EAAKhJ,KAAKq9B,GAAI,GAC/CqQ,EAAKpgD,GAAe0b,EAAKzI,QAAUyI,EAAKzI,OAAO88B,EAAG,GAExD,OAAK11D,KAAK6gE,cAAgB7gE,KAAK01C,OAAS0nB,GAAMl4C,UAAUwwB,KAUjD,CAAC,CACNggB,EAAGoQ,EACHpwB,KAAOrB,IACLr0C,KAAKolE,iBACLplE,KAAKqlE,SAAShxB,GACdr0C,KAAK4lE,cAEN,CACDlQ,EAAGqQ,EACHrwB,KAAMA,KACJ11C,KAAKwlE,eAEN,CACD9P,EAAGmQ,EACHnwB,KAAOrB,IACLr0C,KAAK0lE,WAAWrxB,MAvBX,CAAC,CACNqhB,EAAGmQ,EACHnwB,KAAOrB,IACLr0C,KAAK01C,KAAKrB,KAuBlB,CAOA4G,uBAAAA,CAAwB37C,GACtB,MAAMm/D,EAAQz+D,KAAKg3B,MAAM65B,+BACnBtH,EAASvpD,KAAK6wB,KAAO,SACrBxG,EAAS,GACf,IAAIxU,EAAG8Q,EAEP,IAAK9Q,EAAI,EAAG8Q,EAAO83C,EAAM/3D,OAAQmP,EAAI8Q,IAAQ9Q,EAAG,CAC9C,MAAMsa,EAAOsuC,EAAM5oD,GACfsa,EAAKo5B,KAAYvpD,KAAKoS,IAAQ9S,GAAQ6wB,EAAK7wB,OAASA,GACtD+qB,EAAOhC,KAAK8H,EAEhB,CACA,OAAO9F,CACT,CAOAs4C,uBAAAA,CAAwBjkE,GACtB,MAAM2iC,EAAOrhC,KAAKmP,QAAQ4nB,MAAMiQ,WAAWhnC,KAAKy+B,WAAW//B,IAC3D,OAAOwlC,GAAO7C,EAAKnG,KACrB,CAKA8qC,UAAAA,GACE,MAAMC,EAAWjmE,KAAK2iE,wBAAwB,GAAGvnC,WACjD,OAAQp7B,KAAKimD,eAAiBjmD,KAAKC,MAAQD,KAAK4+B,QAAUqnC,CAC5D,ECrqDa,MAAMC,GACnBziD,WAAAA,CAAYnkB,EAAM+6B,EAAOmC,GACvBx8B,KAAKV,KAAOA,EACZU,KAAKq6B,MAAQA,EACbr6B,KAAKw8B,SAAWA,EAChBx8B,KAAK6uB,MAAQxf,OAAO4X,OAAO,KAC7B,CAEAk/C,SAAAA,CAAU7mE,GACR,OAAO+P,OAAO6V,UAAUkhD,cAAchhD,KAAKplB,KAAKV,KAAK4lB,UAAW5lB,EAAK4lB,UACvE,CAMAmhD,QAAAA,CAAS7nE,GACP,MAAM0kB,EAAQ7T,OAAO82B,eAAe3nC,GACpC,IAAI8nE,EAEAC,GAAkBrjD,KAEpBojD,EAActmE,KAAKqmE,SAASnjD,IAG9B,MAAM2L,EAAQ7uB,KAAK6uB,MACbzc,EAAK5T,EAAK4T,GACVioB,EAAQr6B,KAAKq6B,MAAQ,IAAMjoB,EAEjC,IAAKA,EACH,MAAM,IAAI21B,MAAM,2BAA6BvpC,GAG/C,OAAI4T,KAAMyc,IAKVA,EAAMzc,GAAM5T,EACZgoE,GAAiBhoE,EAAM67B,EAAOisC,GAC1BtmE,KAAKw8B,UACP9H,GAAS8H,SAASh+B,EAAK4T,GAAI5T,EAAKw7B,YANzBK,CAUX,CAMA/D,GAAAA,CAAIlkB,GACF,OAAOpS,KAAK6uB,MAAMzc,EACpB,CAKAq0D,UAAAA,CAAWjoE,GACT,MAAMqwB,EAAQ7uB,KAAK6uB,MACbzc,EAAK5T,EAAK4T,GACVioB,EAAQr6B,KAAKq6B,MAEfjoB,KAAMyc,UACDA,EAAMzc,GAGXioB,GAASjoB,KAAMsiB,GAAS2F,YACnB3F,GAAS2F,GAAOjoB,GACnBpS,KAAKw8B,iBACAxC,GAAU5nB,GAGvB,EAGF,SAASo0D,GAAiBhoE,EAAM67B,EAAOisC,GAErC,MAAMI,EAAel/C,GAAMnY,OAAO4X,OAAO,MAAO,CAC9Cq/C,EAAc5xC,GAAS4B,IAAIgwC,GAAe,CAAC,EAC3C5xC,GAAS4B,IAAI+D,GACb77B,EAAKk2B,WAGPA,GAAS5F,IAAIuL,EAAOqsC,GAEhBloE,EAAKmoE,eACPC,GAAcvsC,EAAO77B,EAAKmoE,eAGxBnoE,EAAKy7B,aACPvF,GAASG,SAASwF,EAAO77B,EAAKy7B,YAElC,CAEA,SAAS2sC,GAAcvsC,EAAOwsC,GAC5Bx3D,OAAOC,KAAKu3D,GAAQz4C,QAAQlD,IAC1B,MAAM47C,EAAgB57C,EAAS/C,MAAM,KAC/B4+C,EAAaD,EAAct8C,MAC3Bw8C,EAAc,CAAC3sC,GAAO8pB,OAAO2iB,GAAe9+B,KAAK,KACjD9f,EAAQ2+C,EAAO37C,GAAU/C,MAAM,KAC/BuU,EAAaxU,EAAMsC,MACnBiS,EAAcvU,EAAM8f,KAAK,KAC/BtT,GAASoF,MAAMktC,EAAaD,EAAYtqC,EAAaC,IAEzD,CAEA,SAAS6pC,GAAkBrjD,GACzB,MAAO,OAAQA,GAAS,aAAcA,CACxC,CC1GO,MAAM+jD,GACXxjD,WAAAA,GACEzjB,KAAKknE,YAAc,IAAIhB,GAActpB,GAAmB,YAAY,GACpE58C,KAAKg7B,SAAW,IAAIkrC,GAAc/L,GAAS,YAC3Cn6D,KAAKk8B,QAAU,IAAIgqC,GAAc72D,OAAQ,WACzCrP,KAAKq8B,OAAS,IAAI6pC,GAAc9I,GAAO,UAGvCp9D,KAAKmnE,iBAAmB,CAACnnE,KAAKknE,YAAalnE,KAAKq8B,OAAQr8B,KAAKg7B,SAC/D,CAKA15B,GAAAA,IAAOpC,GACLc,KAAKonE,MAAM,WAAYloE,EACzB,CAEAgC,MAAAA,IAAUhC,GACRc,KAAKonE,MAAM,aAAcloE,EAC3B,CAKAmoE,cAAAA,IAAkBnoE,GAChBc,KAAKonE,MAAM,WAAYloE,EAAMc,KAAKknE,YACpC,CAKArpB,WAAAA,IAAe3+C,GACbc,KAAKonE,MAAM,WAAYloE,EAAMc,KAAKg7B,SACpC,CAKAssC,UAAAA,IAAcpoE,GACZc,KAAKonE,MAAM,WAAYloE,EAAMc,KAAKk8B,QACpC,CAKAqrC,SAAAA,IAAaroE,GACXc,KAAKonE,MAAM,WAAYloE,EAAMc,KAAKq8B,OACpC,CAMAmrC,aAAAA,CAAcp1D,GACZ,OAAOpS,KAAKynE,KAAKr1D,EAAIpS,KAAKknE,YAAa,aACzC,CAMAvX,UAAAA,CAAWv9C,GACT,OAAOpS,KAAKynE,KAAKr1D,EAAIpS,KAAKg7B,SAAU,UACtC,CAMA0sC,SAAAA,CAAUt1D,GACR,OAAOpS,KAAKynE,KAAKr1D,EAAIpS,KAAKk8B,QAAS,SACrC,CAMAyrC,QAAAA,CAASv1D,GACP,OAAOpS,KAAKynE,KAAKr1D,EAAIpS,KAAKq8B,OAAQ,QACpC,CAKAurC,iBAAAA,IAAqB1oE,GACnBc,KAAKonE,MAAM,aAAcloE,EAAMc,KAAKknE,YACtC,CAKAW,cAAAA,IAAkB3oE,GAChBc,KAAKonE,MAAM,aAAcloE,EAAMc,KAAKg7B,SACtC,CAKA8sC,aAAAA,IAAiB5oE,GACfc,KAAKonE,MAAM,aAAcloE,EAAMc,KAAKk8B,QACtC,CAKA6rC,YAAAA,IAAgB7oE,GACdc,KAAKonE,MAAM,aAAcloE,EAAMc,KAAKq8B,OACtC,CAKA+qC,KAAAA,CAAM/4C,EAAQnvB,EAAM8oE,GAClB,IAAI9oE,GAAMkvB,QAAQ65C,IAChB,MAAMC,EAAMF,GAAiBhoE,KAAKmoE,oBAAoBF,GAClDD,GAAiBE,EAAI/B,UAAU8B,IAASC,IAAQloE,KAAKk8B,SAAW+rC,EAAI71D,GACtEpS,KAAKooE,MAAM/5C,EAAQ65C,EAAKD,GAMxB5hD,GAAK4hD,EAAKzpE,IAOR,MAAM6pE,EAAUL,GAAiBhoE,KAAKmoE,oBAAoB3pE,GAC1DwB,KAAKooE,MAAM/5C,EAAQg6C,EAAS7pE,MAIpC,CAKA4pE,KAAAA,CAAM/5C,EAAQqhC,EAAU4Y,GACtB,MAAMC,EAAc9/C,GAAY4F,GAChCpI,GAAKqiD,EAAU,SAAWC,GAAc,GAAID,GAC5C5Y,EAASrhC,GAAQi6C,GACjBriD,GAAKqiD,EAAU,QAAUC,GAAc,GAAID,EAC7C,CAKAH,mBAAAA,CAAoB7oE,GAClB,IAAK,IAAIuW,EAAI,EAAGA,EAAI7V,KAAKmnE,iBAAiBzgE,OAAQmP,IAAK,CACrD,MAAMqyD,EAAMloE,KAAKmnE,iBAAiBtxD,GAClC,GAAIqyD,EAAI/B,UAAU7mE,GAChB,OAAO4oE,CAEX,CAEA,OAAOloE,KAAKk8B,OACd,CAKAurC,IAAAA,CAAKr1D,EAAI41D,EAAe1oE,GACtB,MAAMd,EAAOwpE,EAAc1xC,IAAIlkB,GAC/B,QAAa+C,IAAT3W,EACF,MAAM,IAAIupC,MAAM,IAAM31B,EAAK,yBAA2B9S,EAAO,KAE/D,OAAOd,CACT,EAKF,IAAAkxD,GAA+B,IAAIuX,GCtKpB,MAAMuB,GACnB/kD,WAAAA,GACEzjB,KAAKyoE,WAAQtzD,CACf,CAYAuzD,MAAAA,CAAO1xC,EAAO2xC,EAAMzpE,EAAMkpC,GAMxB,GALa,eAATugC,IACF3oE,KAAKyoE,MAAQzoE,KAAK4oE,mBAAmB5xC,GAAO,GAC5Ch3B,KAAK+0C,QAAQ/0C,KAAKyoE,MAAOzxC,EAAO,iBAGf7hB,IAAfnV,KAAKyoE,MACP,OAGF,MAAMxuC,EAAcmO,EAASpoC,KAAKu6B,aAAavD,GAAOoR,OAAOA,GAAUpoC,KAAKu6B,aAAavD,GACnF3M,EAASrqB,KAAK+0C,QAAQ9a,EAAajD,EAAO2xC,EAAMzpE,GAOtD,MALa,iBAATypE,IACF3oE,KAAK+0C,QAAQ9a,EAAajD,EAAO,QACjCh3B,KAAK+0C,QAAQ/0C,KAAKyoE,MAAOzxC,EAAO,aAChCh3B,KAAKyoE,WAAQtzD,GAERkV,CACT,CAKA0qB,OAAAA,CAAQ9a,EAAajD,EAAO2xC,EAAMzpE,GAChCA,EAAOA,GAAQ,CAAC,EAChB,IAAK,MAAM2pE,KAAc5uC,EAAa,CACpC,MAAM6uC,EAASD,EAAWC,OACpBz6C,EAASy6C,EAAOH,GAChBxV,EAAS,CAACn8B,EAAO93B,EAAM2pE,EAAW15D,SACxC,IAA6C,IAAzC8W,GAAaoI,EAAQ8kC,EAAQ2V,IAAqB5pE,EAAK6pE,WACzD,OAAO,CAEX,CAEA,OAAO,CACT,CAEAC,UAAAA,GAMO/jD,GAAcjlB,KAAKnC,UACtBmC,KAAKipE,UAAYjpE,KAAKnC,OACtBmC,KAAKnC,YAASsX,EAElB,CAMAolB,YAAAA,CAAavD,GACX,GAAIh3B,KAAKnC,OACP,OAAOmC,KAAKnC,OAGd,MAAMo8B,EAAcj6B,KAAKnC,OAASmC,KAAK4oE,mBAAmB5xC,GAI1D,OAFAh3B,KAAKkpE,oBAAoBlyC,GAElBiD,CACT,CAEA2uC,kBAAAA,CAAmB5xC,EAAOiiB,GACxB,MAAMhB,EAASjhB,GAASA,EAAMihB,OACxB9oC,EAAUwW,GAAesyB,EAAO9oC,SAAW8oC,EAAO9oC,QAAQ+sB,QAAS,CAAC,GACpEA,EAAUitC,GAAWlxB,GAE3B,OAAmB,IAAZ9oC,GAAsB8pC,EAAWmwB,GAAkBpyC,EAAOkF,EAAS/sB,EAAS8pC,GAAhD,EACrC,CAMAiwB,mBAAAA,CAAoBlyC,GAClB,MAAMqyC,EAAsBrpE,KAAKipE,WAAa,GACxChvC,EAAcj6B,KAAKnC,OACnBoyD,EAAOA,CAACj8C,EAAGC,IAAMD,EAAEo0B,OAAOrxB,IAAM9C,EAAEq1D,KAAKthD,GAAKjR,EAAE+xD,OAAO12D,KAAO4V,EAAE8gD,OAAO12D,KAC3EpS,KAAK+0C,QAAQkb,EAAKoZ,EAAqBpvC,GAAcjD,EAAO,QAC5Dh3B,KAAK+0C,QAAQkb,EAAKh2B,EAAaovC,GAAsBryC,EAAO,QAC9D,EAMF,SAASmyC,GAAWlxB,GAClB,MAAMsxB,EAAW,CAAC,EACZrtC,EAAU,GACV5sB,EAAOD,OAAOC,KAAKogD,GAASxzB,QAAQrN,OAC1C,IAAK,IAAIhZ,EAAI,EAAGA,EAAIvG,EAAK5I,OAAQmP,IAC/BqmB,EAAQ7T,KAAKqnC,GAASgY,UAAUp4D,EAAKuG,KAGvC,MAAMmnB,EAAQib,EAAO/b,SAAW,GAChC,IAAK,IAAIrmB,EAAI,EAAGA,EAAImnB,EAAMt2B,OAAQmP,IAAK,CACrC,MAAMizD,EAAS9rC,EAAMnnB,IAEY,IAA7BqmB,EAAQ9U,QAAQ0hD,KAClB5sC,EAAQ7T,KAAKygD,GACbS,EAAST,EAAO12D,KAAM,EAE1B,CAEA,MAAO,CAAC8pB,UAASqtC,WACnB,CAEA,SAASC,GAAQr6D,EAAS8pC,GACxB,OAAKA,IAAmB,IAAZ9pC,GAGI,IAAZA,EACK,CAAC,EAEHA,EALE,IAMX,CAEA,SAASi6D,GAAkBpyC,GAAO,QAACkF,EAAO,SAAEqtC,GAAWp6D,EAAS8pC,GAC9D,MAAM5uB,EAAS,GACTwQ,EAAU7D,EAAMyH,aAEtB,IAAK,MAAMqqC,KAAU5sC,EAAS,CAC5B,MAAM9pB,EAAK02D,EAAO12D,GACZivB,EAAOmoC,GAAQr6D,EAAQiD,GAAK6mC,GACrB,OAAT5X,GAGJhX,EAAOhC,KAAK,CACVygD,SACA35D,QAASs6D,GAAWzyC,EAAMihB,OAAQ,CAAC6wB,SAAQ9rC,MAAOusC,EAASn3D,IAAMivB,EAAMxG,IAE3E,CAEA,OAAOxQ,CACT,CAEA,SAASo/C,GAAWxxB,GAAQ,OAAC6wB,EAAM,MAAE9rC,GAAQqE,EAAMxG,GACjD,MAAMvrB,EAAO2oC,EAAOyxB,gBAAgBZ,GAC9B7jC,EAASgT,EAAO2H,gBAAgBve,EAAM/xB,GAK5C,OAJI0tB,GAAS8rC,EAAOp0C,UAElBuQ,EAAO5c,KAAKygD,EAAOp0C,UAEdujB,EAAO4H,eAAe5a,EAAQpK,EAAS,CAAC,IAAK,CAElDuM,YAAY,EACZC,WAAW,EACXF,SAAS,GAEb,CCvLO,SAASwiC,GAAarqE,EAAM6P,GACjC,MAAMy6D,EAAkBl1C,GAASiG,SAASr7B,IAAS,CAAC,EAC9CuqE,GAAkB16D,EAAQwrB,UAAY,CAAC,GAAGr7B,IAAS,CAAC,EAC1D,OAAOuqE,EAAenuC,WAAavsB,EAAQusB,WAAakuC,EAAgBluC,WAAa,GACvF,CAEA,SAASouC,GAA0B13D,EAAIspB,GACrC,IAAI7K,EAAOze,EAMX,MALW,YAAPA,EACFye,EAAO6K,EACS,YAAPtpB,IACTye,EAAqB,MAAd6K,EAAoB,IAAM,KAE5B7K,CACT,CAEA,SAASk5C,GAA0Bl5C,EAAM6K,GACvC,OAAO7K,IAAS6K,EAAY,UAAY,SAC1C,CAEA,SAASsuC,GAAc53D,GACrB,GAAW,MAAPA,GAAqB,MAAPA,GAAqB,MAAPA,EAC9B,OAAOA,CAEX,CAEA,SAAS63D,GAAiBrZ,GACxB,MAAiB,QAAbA,GAAmC,WAAbA,EACjB,IAEQ,SAAbA,GAAoC,UAAbA,EAClB,SADT,CAGF,CAEO,SAASsZ,GAAc93D,KAAO+3D,GACnC,GAAIH,GAAc53D,GAChB,OAAOA,EAET,IAAK,MAAMivB,KAAQ8oC,EAAc,CAC/B,MAAMt5C,EAAOwQ,EAAKxQ,MACbo5C,GAAiB5oC,EAAKuvB,WACtBx+C,EAAG1L,OAAS,GAAKsjE,GAAc53D,EAAG,GAAGgQ,eAC1C,GAAIyO,EACF,OAAOA,CAEX,CACA,MAAM,IAAIkX,MAAM,6BAA6B31B,uDAC/C,CAEA,SAASg4D,GAAmBh4D,EAAIye,EAAMD,GACpC,GAAIA,EAAQC,EAAO,YAAcze,EAC/B,MAAO,CAACye,OAEZ,CAEA,SAASw5C,GAAyBj4D,EAAI6lC,GACpC,GAAIA,EAAOv4C,MAAQu4C,EAAOv4C,KAAKi7B,SAAU,CACvC,MAAM2vC,EAAUryB,EAAOv4C,KAAKi7B,SAASyN,OAAQj0B,GAAMA,EAAEgqC,UAAY/rC,GAAM+B,EAAEkqC,UAAYjsC,GACrF,GAAIk4D,EAAQ5jE,OACV,OAAO0jE,GAAmBh4D,EAAI,IAAKk4D,EAAQ,KAAOF,GAAmBh4D,EAAI,IAAKk4D,EAAQ,G,CAG1F,MAAO,CAAC,CACV,CAEA,SAASC,GAAiBtyB,EAAQ9oC,GAChC,MAAMq7D,EAAgBxwC,GAAUie,EAAO34C,OAAS,CAAC+8B,OAAQ,CAAC,GACpDouC,EAAet7D,EAAQktB,QAAU,CAAC,EAClCquC,EAAiBf,GAAa1xB,EAAO34C,KAAM6P,GAC3CktB,EAAShtB,OAAO4X,OAAO,MAqC7B,OAlCA5X,OAAOC,KAAKm7D,GAAcr8C,QAAQhc,IAChC,MAAMu4D,EAAYF,EAAar4D,GAC/B,IAAKkT,GAASqlD,GACZ,OAAOvmC,QAAQwmC,MAAM,0CAA0Cx4D,KAEjE,GAAIu4D,EAAU/jC,OACZ,OAAOxC,QAAQC,KAAK,kDAAkDjyB,KAExE,MAAMye,EAAOq5C,GAAc93D,EAAIu4D,EAAWN,GAAyBj4D,EAAI6lC,GAASvjB,GAAS2H,OAAOsuC,EAAUrrE,OACpGurE,EAAYd,GAA0Bl5C,EAAM65C,GAC5CI,EAAsBN,EAAcnuC,QAAU,CAAC,EACrDA,EAAOjqB,GAAMuV,GAAQtY,OAAO4X,OAAO,MAAO,CAAC,CAAC4J,QAAO85C,EAAWG,EAAoBj6C,GAAOi6C,EAAoBD,OAI/G5yB,EAAOv4C,KAAKi7B,SAASvM,QAAQwC,IAC3B,MAAMtxB,EAAOsxB,EAAQtxB,MAAQ24C,EAAO34C,KAC9Bo8B,EAAY9K,EAAQ8K,WAAaiuC,GAAarqE,EAAM6P,GACpDy6D,EAAkB5vC,GAAU16B,IAAS,CAAC,EACtCwrE,EAAsBlB,EAAgBvtC,QAAU,CAAC,EACvDhtB,OAAOC,KAAKw7D,GAAqB18C,QAAQ28C,IACvC,MAAMl6C,EAAOi5C,GAA0BiB,EAAWrvC,GAC5CtpB,EAAKwe,EAAQC,EAAO,WAAaA,EACvCwL,EAAOjqB,GAAMiqB,EAAOjqB,IAAO/C,OAAO4X,OAAO,MACzCU,GAAQ0U,EAAOjqB,GAAK,CAAC,CAACye,QAAO45C,EAAar4D,GAAK04D,EAAoBC,SAKvE17D,OAAOC,KAAK+sB,GAAQjO,QAAQ3vB,IAC1B,MAAM29B,EAAQC,EAAO59B,GACrBkpB,GAAQyU,EAAO,CAAC1H,GAAS2H,OAAOD,EAAM98B,MAAOo1B,GAAS0H,UAGjDC,CACT,CAEA,SAAS2uC,GAAY/yB,GACnB,MAAM9oC,EAAU8oC,EAAO9oC,UAAY8oC,EAAO9oC,QAAU,CAAC,GAErDA,EAAQ+sB,QAAUvW,GAAexW,EAAQ+sB,QAAS,CAAC,GACnD/sB,EAAQktB,OAASkuC,GAAiBtyB,EAAQ9oC,EAC5C,CAEA,SAAS87D,GAASvrE,GAIhB,OAHAA,EAAOA,GAAQ,CAAC,EAChBA,EAAKi7B,SAAWj7B,EAAKi7B,UAAY,GACjCj7B,EAAKygD,OAASzgD,EAAKygD,QAAU,GACtBzgD,CACT,CAEA,SAASwrE,GAAWjzB,GAMlB,OALAA,EAASA,GAAU,CAAC,EACpBA,EAAOv4C,KAAOurE,GAAShzB,EAAOv4C,MAE9BsrE,GAAY/yB,GAELA,CACT,CAEA,MAAMkzB,GAAW,IAAIp1C,IACfq1C,GAAa,IAAIr8C,IAEvB,SAASs8C,GAAWn1C,EAAUo1C,GAC5B,IAAIh8D,EAAO67D,GAAS70C,IAAIJ,GAMxB,OALK5mB,IACHA,EAAOg8D,IACPH,GAASr8C,IAAIoH,EAAU5mB,GACvB87D,GAAW9pE,IAAIgO,IAEVA,CACT,CAEA,MAAMi8D,GAAaA,CAACz8C,EAAKjL,EAAKplB,KAC5B,MAAM4iC,EAAO9Y,GAAiB1E,EAAKplB,QACtB0W,IAATksB,GACFvS,EAAIxtB,IAAI+/B,IAIG,MAAMmqC,GACnB/nD,WAAAA,CAAYw0B,GACVj4C,KAAKyrE,QAAUP,GAAWjzB,GAC1Bj4C,KAAK0rE,YAAc,IAAI31C,IACvB/1B,KAAK2rE,eAAiB,IAAI51C,GAC5B,CAEA,YAAI+E,GACF,OAAO96B,KAAKyrE,QAAQ3wC,QACtB,CAEA,QAAIx7B,GACF,OAAOU,KAAKyrE,QAAQnsE,IACtB,CAEA,QAAIA,CAAKA,GACPU,KAAKyrE,QAAQnsE,KAAOA,CACtB,CAEA,QAAII,GACF,OAAOM,KAAKyrE,QAAQ/rE,IACtB,CAEA,QAAIA,CAAKA,GACPM,KAAKyrE,QAAQ/rE,KAAOurE,GAASvrE,EAC/B,CAEA,WAAIyP,GACF,OAAOnP,KAAKyrE,QAAQt8D,OACtB,CAEA,WAAIA,CAAQA,GACVnP,KAAKyrE,QAAQt8D,QAAUA,CACzB,CAEA,WAAI+sB,GACF,OAAOl8B,KAAKyrE,QAAQvvC,OACtB,CAEAub,MAAAA,GACE,MAAMQ,EAASj4C,KAAKyrE,QACpBzrE,KAAK4rE,aACLZ,GAAY/yB,EACd,CAEA2zB,UAAAA,GACE5rE,KAAK0rE,YAAYG,QACjB7rE,KAAK2rE,eAAeE,OACtB,CAQAlsB,gBAAAA,CAAiBmsB,GACf,OAAOT,GAAWS,EAChB,IAAM,CAAC,CACL,YAAYA,IACZ,KAEN,CASA/pB,yBAAAA,CAA0B+pB,EAAahrE,GACrC,OAAOuqE,GAAW,GAAGS,gBAA0BhrE,IAC7C,IAAM,CACJ,CACE,YAAYgrE,iBAA2BhrE,IACvC,eAAeA,KAGjB,CACE,YAAYgrE,IACZ,KAGR,CAUAnqB,uBAAAA,CAAwBmqB,EAAarqB,GACnC,OAAO4pB,GAAW,GAAGS,KAAerqB,IAClC,IAAM,CAAC,CACL,YAAYqqB,cAAwBrqB,IACpC,YAAYqqB,IACZ,YAAYrqB,IACZ,KAEN,CAOAioB,eAAAA,CAAgBZ,GACd,MAAM12D,EAAK02D,EAAO12D,GACZ9S,EAAOU,KAAKV,KAClB,OAAO+rE,GAAW,GAAG/rE,YAAe8S,IAClC,IAAM,CAAC,CACL,WAAWA,OACR02D,EAAOiD,wBAA0B,KAE1C,CAKAC,aAAAA,CAAcC,EAAWC,GACvB,MAAMR,EAAc1rE,KAAK0rE,YACzB,IAAI/tC,EAAQ+tC,EAAYp1C,IAAI21C,GAK5B,OAJKtuC,IAASuuC,IACZvuC,EAAQ,IAAI5H,IACZ21C,EAAY58C,IAAIm9C,EAAWtuC,IAEtBA,CACT,CAQAiiB,eAAAA,CAAgBqsB,EAAWE,EAAUD,GACnC,MAAM,QAAC/8D,EAAO,KAAE7P,GAAQU,KAClB29B,EAAQ39B,KAAKgsE,cAAcC,EAAWC,GACtC5vB,EAAS3e,EAAMrH,IAAI61C,GACzB,GAAI7vB,EACF,OAAOA,EAGT,MAAMrX,EAAS,IAAIlW,IAEnBo9C,EAAS/9C,QAAQ9e,IACX28D,IACFhnC,EAAO3jC,IAAI2qE,GACX38D,EAAK8e,QAAQ3vB,GAAO8sE,GAAWtmC,EAAQgnC,EAAWxtE,KAEpD6Q,EAAK8e,QAAQ3vB,GAAO8sE,GAAWtmC,EAAQ91B,EAAS1Q,IAChD6Q,EAAK8e,QAAQ3vB,GAAO8sE,GAAWtmC,EAAQjL,GAAU16B,IAAS,CAAC,EAAGb,IAC9D6Q,EAAK8e,QAAQ3vB,GAAO8sE,GAAWtmC,EAAQvQ,GAAUj2B,IACjD6Q,EAAK8e,QAAQ3vB,GAAO8sE,GAAWtmC,EAAQhL,GAAax7B,MAGtD,MAAMwsB,EAAQllB,MAAMU,KAAKw+B,GAOzB,OANqB,IAAjBha,EAAMvkB,QACRukB,EAAM5C,KAAKhZ,OAAO4X,OAAO,OAEvBmkD,GAAWtiD,IAAIqjD,IACjBxuC,EAAM7O,IAAIq9C,EAAUlhD,GAEfA,CACT,CAMAmhD,iBAAAA,GACE,MAAM,QAACj9D,EAAO,KAAE7P,GAAQU,KAExB,MAAO,CACLmP,EACA6qB,GAAU16B,IAAS,CAAC,EACpBo1B,GAASiG,SAASr7B,IAAS,CAAC,EAC5B,CAACA,QACDo1B,GACAuF,GAEJ,CASA2nB,mBAAAA,CAAoB3c,EAAQhjB,EAAO4Y,EAASqK,EAAW,CAAC,KACtD,MAAM7a,EAAS,CAACuuB,SAAS,IACnB,SAACpwB,EAAQ,YAAE6jD,GAAeC,GAAYtsE,KAAK2rE,eAAgB1mC,EAAQC,GACzE,IAAI/1B,EAAUqZ,EACd,GAAI+jD,GAAY/jD,EAAUvG,GAAQ,CAChCoI,EAAOuuB,SAAU,EACjB/d,EAAUjS,GAAWiS,GAAWA,IAAYA,EAE5C,MAAM2xC,EAAcxsE,KAAK6/C,eAAe5a,EAAQpK,EAASwxC,GACzDl9D,EAAUq3B,GAAehe,EAAUqS,EAAS2xC,E,CAG9C,IAAK,MAAM1oC,KAAQ7hB,EACjBoI,EAAOyZ,GAAQ30B,EAAQ20B,GAEzB,OAAOzZ,CACT,CAQAw1B,cAAAA,CAAe5a,EAAQpK,EAASqK,EAAW,CAAC,IAAKyB,GAC/C,MAAM,SAACne,GAAY8jD,GAAYtsE,KAAK2rE,eAAgB1mC,EAAQC,GAC5D,OAAO5f,GAASuV,GACZ2L,GAAehe,EAAUqS,OAAS1lB,EAAWwxB,GAC7Cne,CACN,EAGF,SAAS8jD,GAAYG,EAAexnC,EAAQC,GAC1C,IAAIvH,EAAQ8uC,EAAcn2C,IAAI2O,GACzBtH,IACHA,EAAQ,IAAI5H,IACZ02C,EAAc39C,IAAImW,EAAQtH,IAE5B,MAAMzH,EAAWgP,EAAS8C,OAC1B,IAAIsU,EAAS3e,EAAMrH,IAAIJ,GACvB,IAAKomB,EAAQ,CACX,MAAM9zB,EAAWwc,GAAgBC,EAAQC,GACzCoX,EAAS,CACP9zB,WACA6jD,YAAannC,EAASkD,OAAOhkB,IAAMA,EAAEhC,cAAcwV,SAAS,WAE9D+F,EAAM7O,IAAIoH,EAAUomB,E,CAEtB,OAAOA,CACT,CAEA,MAAMowB,GAAc5nE,GAASwgB,GAASxgB,IACjCuK,OAAOipC,oBAAoBxzC,GAAOwkE,KAAM7qE,GAAQmqB,GAAW9jB,EAAMrG,KAEtE,SAAS8tE,GAAY9lC,EAAOxkB,GAC1B,MAAM,aAACslB,EAAY,YAAEC,GAAejN,GAAakM,GAEjD,IAAK,MAAM3C,KAAQ7hB,EAAO,CACxB,MAAMmlB,EAAaG,EAAazD,GAC1BuD,EAAYG,EAAY1D,GACxBh/B,GAASuiC,GAAaD,IAAeX,EAAM3C,GACjD,GAAKsD,IAAexe,GAAW9jB,IAAU4nE,GAAY5nE,KAC/CuiC,GAAapxB,GAAQnR,GACzB,OAAO,CAEX,CACA,OAAO,CACT,C,eC9YA,MAAM6nE,GAAkB,CAAC,MAAO,SAAU,OAAQ,QAAS,aAC3D,SAASC,GAAqBhc,EAAU//B,GACtC,MAAoB,QAAb+/B,GAAmC,WAAbA,IAAiE,IAAvC+b,GAAgBvlD,QAAQwpC,IAA6B,MAAT//B,CACrG,CAEA,SAASg8C,GAAcC,EAAIC,GACzB,OAAO,SAAS/4D,EAAGC,GACjB,OAAOD,EAAE84D,KAAQ74D,EAAE64D,GACf94D,EAAE+4D,GAAM94D,EAAE84D,GACV/4D,EAAE84D,GAAM74D,EAAE64D,EAChB,CACF,CAEA,SAASE,GAAqBnyC,GAC5B,MAAM7D,EAAQ6D,EAAQ7D,MAChBohB,EAAmBphB,EAAM7nB,QAAQgmB,UAEvC6B,EAAMupC,cAAc,eACpBt6C,GAAamyB,GAAoBA,EAAiB60B,WAAY,CAACpyC,GAAU7D,EAC3E,CAEA,SAASk2C,GAAoBryC,GAC3B,MAAM7D,EAAQ6D,EAAQ7D,MAChBohB,EAAmBphB,EAAM7nB,QAAQgmB,UACvClP,GAAamyB,GAAoBA,EAAiB+0B,WAAY,CAACtyC,GAAU7D,EAC3E,CAMA,SAASo2C,GAAU5uE,GAYjB,OAXIstC,MAAqC,kBAATttC,EAC9BA,EAAOutC,SAASshC,eAAe7uE,GACtBA,GAAQA,EAAKkI,SAEtBlI,EAAOA,EAAK,IAGVA,GAAQA,EAAKggC,SAEfhgC,EAAOA,EAAKggC,QAEPhgC,CACT,CAEA,MAAM8uE,GAAY,CAAC,EACbC,GAAY9uE,IAChB,MAAM+/B,EAAS4uC,GAAU3uE,GACzB,OAAO4Q,OAAOse,OAAO2/C,IAAWllC,OAAQl0B,GAAMA,EAAEsqB,SAAWA,GAAQhU,OAGrE,SAASgjD,GAAgB3pD,EAAKvd,EAAO88C,GACnC,MAAM9zC,EAAOD,OAAOC,KAAKuU,GACzB,IAAK,MAAMplB,KAAO6Q,EAAM,CACtB,MAAMm+D,GAAUhvE,EAChB,GAAIgvE,GAAUnnE,EAAO,CACnB,MAAMxB,EAAQ+e,EAAIplB,UACXolB,EAAIplB,IACP2kD,EAAO,GAAKqqB,EAASnnE,KACvBud,EAAI4pD,EAASrqB,GAAQt+C,E,CAG3B,CACF,CASA,SAAS4oE,GAAmBt5D,EAAGu5D,EAAWC,EAAaC,GACrD,OAAKD,GAA0B,aAAXx5D,EAAE9U,KAGlBuuE,EACKF,EAEFv5D,EALE,IAMX,CAEA,MAAM05D,GASJ,eAAOzH,IAAYx3C,GACjB6gC,GAASpuD,OAAOutB,GAChBk/C,IACF,CAEA,iBAAOtH,IAAc53C,GACnB6gC,GAASxuD,UAAU2tB,GACnBk/C,IACF,CAGAtqD,WAAAA,CAAYjlB,EAAMwvE,GAChB,MAAM/1B,EAASj4C,KAAKi4C,OAAS,IAAIuzB,GAAOwC,GAClCC,EAAgBb,GAAU5uE,GAC1B0vE,EAAgBX,GAASU,GAC/B,GAAIC,EACF,MAAM,IAAInmC,MACR,4CAA+CmmC,EAAc97D,GAA7D,kDACgD87D,EAAc1vC,OAAOpsB,GAAK,oBAI9E,MAAMjD,EAAU8oC,EAAO4H,eAAe5H,EAAOm0B,oBAAqBpsE,KAAKy+B,cAEvEz+B,KAAK86B,SAAW,IAAKmd,EAAOnd,UAAYm/B,GAAgBgU,IACxDjuE,KAAK86B,SAASw7B,aAAare,GAE3B,MAAMpd,EAAU76B,KAAK86B,SAASq7B,eAAe8X,EAAe9+D,EAAQ4/B,aAC9DvQ,EAAS3D,GAAWA,EAAQ2D,OAC5BI,EAASJ,GAAUA,EAAOI,OAC1B3+B,EAAQu+B,GAAUA,EAAOv+B,MAE/BD,KAAKoS,GAAK4S,KACVhlB,KAAKu7B,IAAMV,EACX76B,KAAKw+B,OAASA,EACdx+B,KAAKC,MAAQA,EACbD,KAAK4+B,OAASA,EACd5+B,KAAKmuE,SAAWh/D,EAIhBnP,KAAKouE,aAAepuE,KAAK+uC,YACzB/uC,KAAKy1D,QAAU,GACfz1D,KAAKquE,UAAY,GACjBruE,KAAKq7C,aAAUlmC,EACfnV,KAAK2yD,MAAQ,GACb3yD,KAAKq+B,6BAA0BlpB,EAC/BnV,KAAKq0C,eAAYl/B,EACjBnV,KAAK21C,QAAU,GACf31C,KAAKsuE,gBAAan5D,EAClBnV,KAAKuuE,WAAa,CAAC,EAEnBvuE,KAAKwuE,0BAAuBr5D,EAC5BnV,KAAKyuE,gBAAkB,GACvBzuE,KAAKq8B,OAAS,CAAC,EACfr8B,KAAK0uE,SAAW,IAAIlG,GACpBxoE,KAAK45D,SAAW,CAAC,EACjB55D,KAAK2uE,eAAiB,CAAC,EACvB3uE,KAAK4uE,UAAW,EAChB5uE,KAAKmiD,yBAAsBhtC,EAC3BnV,KAAKu9C,cAAWpoC,EAChBnV,KAAK6uE,UAAYx/C,GAASuM,GAAQ57B,KAAKy3C,OAAO7b,GAAOzsB,EAAQ2/D,aAAe,GAC5E9uE,KAAKwjD,aAAe,GAGpB8pB,GAAUttE,KAAKoS,IAAMpS,KAEhB66B,GAAY2D,GASjBgY,GAASN,OAAOl2C,KAAM,WAAYgtE,IAClCx2B,GAASN,OAAOl2C,KAAM,WAAYktE,IAElCltE,KAAK+uE,cACD/uE,KAAK4uE,UACP5uE,KAAKy3C,UATLrT,QAAQwmC,MAAM,oEAWlB,CAEA,eAAI77B,GACF,MAAO5/B,SAAS,YAAC4/B,EAAW,oBAAEhT,GAAoB,MAAE97B,EAAA,OAAO2+B,EAAM,aAAEwvC,GAAgBpuE,KACnF,OAAKilB,GAAc8pB,GAKfhT,GAAuBqyC,EAElBA,EAIFxvC,EAAS3+B,EAAQ2+B,EAAS,KATxBmQ,CAUX,CAEA,QAAIrvC,GACF,OAAOM,KAAKi4C,OAAOv4C,IACrB,CAEA,QAAIA,CAAKA,GACPM,KAAKi4C,OAAOv4C,KAAOA,CACrB,CAEA,WAAIyP,GACF,OAAOnP,KAAKmuE,QACd,CAEA,WAAIh/D,CAAQA,GACVnP,KAAKi4C,OAAO9oC,QAAUA,CACxB,CAEA,YAAIugD,GACF,OAAOA,EACT,CAKAqf,WAAAA,GAeE,OAbA/uE,KAAKugE,cAAc,cAEfvgE,KAAKmP,QAAQgtB,WACfn8B,KAAKo1B,SAEL+Z,GAAYnvC,KAAMA,KAAKmP,QAAQyrB,kBAGjC56B,KAAKgvE,aAGLhvE,KAAKugE,cAAc,aAEZvgE,IACT,CAEA6rE,KAAAA,GAEE,OADAttC,GAAYv+B,KAAKw+B,OAAQx+B,KAAKu7B,KACvBv7B,IACT,CAEA0yC,IAAAA,GAEE,OADA8D,GAAS9D,KAAK1yC,MACPA,IACT,CAOAo1B,MAAAA,CAAOn1B,EAAO2+B,GACP4X,GAASf,QAAQz1C,MAGpBA,KAAKivE,kBAAoB,CAAChvE,QAAO2+B,UAFjC5+B,KAAKkvE,QAAQjvE,EAAO2+B,EAIxB,CAEAswC,OAAAA,CAAQjvE,EAAO2+B,GACb,MAAMzvB,EAAUnP,KAAKmP,QACfqvB,EAASx+B,KAAKw+B,OACduQ,EAAc5/B,EAAQ4sB,qBAAuB/7B,KAAK+uC,YAClDogC,EAAUnvE,KAAK86B,SAAS8T,eAAepQ,EAAQv+B,EAAO2+B,EAAQmQ,GAC9DqgC,EAAWjgE,EAAQyrB,kBAAoB56B,KAAK86B,SAASC,sBACrDa,EAAO57B,KAAKC,MAAQ,SAAW,SAErCD,KAAKC,MAAQkvE,EAAQlvE,MACrBD,KAAK4+B,OAASuwC,EAAQvwC,OACtB5+B,KAAKouE,aAAepuE,KAAK+uC,YACpBI,GAAYnvC,KAAMovE,GAAU,KAIjCpvE,KAAKugE,cAAc,SAAU,CAAC7xD,KAAMygE,IAEpClpD,GAAa9W,EAAQkgE,SAAU,CAACrvE,KAAMmvE,GAAUnvE,MAE5CA,KAAK4uE,UACH5uE,KAAK6uE,UAAUjzC,IAEjB57B,KAAKrC,SAGX,CAEA2xE,mBAAAA,GACE,MAAMngE,EAAUnP,KAAKmP,QACfogE,EAAgBpgE,EAAQktB,QAAU,CAAC,EAEzChW,GAAKkpD,EAAe,CAACC,EAAajmB,KAChCimB,EAAYp9D,GAAKm3C,GAErB,CAKAkmB,mBAAAA,GACE,MAAMtgE,EAAUnP,KAAKmP,QACfugE,EAAYvgE,EAAQktB,OACpBA,EAASr8B,KAAKq8B,OACdszC,EAAUtgE,OAAOC,KAAK+sB,GAAQ+Z,OAAO,CAACvyB,EAAKzR,KAC/CyR,EAAIzR,IAAM,EACHyR,GACN,CAAC,GACJ,IAAIgL,EAAQ,GAER6gD,IACF7gD,EAAQA,EAAMs1B,OACZ90C,OAAOC,KAAKogE,GAAWx5D,IAAK9D,IAC1B,MAAM+3D,EAAeuF,EAAUt9D,GACzBye,EAAOq5C,GAAc93D,EAAI+3D,GACzByF,EAAoB,MAAT/+C,EACXo1B,EAAwB,MAATp1B,EACrB,MAAO,CACL1hB,QAASg7D,EACT0F,UAAWD,EAAW,YAAc3pB,EAAe,SAAW,OAC9D6pB,MAAOF,EAAW,eAAiB3pB,EAAe,WAAa,cAMvE5/B,GAAKwI,EAAQrwB,IACX,MAAM2rE,EAAe3rE,EAAK2Q,QACpBiD,EAAK+3D,EAAa/3D,GAClBye,EAAOq5C,GAAc93D,EAAI+3D,GACzB4F,EAAYpqD,GAAewkD,EAAa7qE,KAAMd,EAAKsxE,YAE3B36D,IAA1Bg1D,EAAavZ,UAA0Bgc,GAAqBzC,EAAavZ,SAAU//B,KAAU+7C,GAAqBpuE,EAAKqxE,aACzH1F,EAAavZ,SAAWpyD,EAAKqxE,WAG/BF,EAAQv9D,IAAM,EACd,IAAIgqB,EAAQ,KACZ,GAAIhqB,KAAMiqB,GAAUA,EAAOjqB,GAAI9S,OAASywE,EACtC3zC,EAAQC,EAAOjqB,OACV,CACL,MAAM49D,EAAatgB,GAASiY,SAASoI,GACrC3zC,EAAQ,IAAI4zC,EAAW,CACrB59D,KACA9S,KAAMywE,EACNx0C,IAAKv7B,KAAKu7B,IACVvE,MAAOh3B,OAETq8B,EAAOD,EAAMhqB,IAAMgqB,C,CAGrBA,EAAM2zB,KAAKoa,EAAch7D,KAG3BkX,GAAKspD,EAAS,CAACM,EAAY79D,KACpB69D,UACI5zC,EAAOjqB,KAIlBiU,GAAKgW,EAASD,IACZ22B,GAAQ5a,UAAUn4C,KAAMo8B,EAAOA,EAAMjtB,SACrC4jD,GAAQyC,OAAOx1D,KAAMo8B,IAEzB,CAKA8zC,eAAAA,GACE,MAAM12B,EAAWx5C,KAAKquE,UAChBprB,EAAUjjD,KAAKN,KAAKi7B,SAASj0B,OAC7Bs8C,EAAUxJ,EAAS9yC,OAGzB,GADA8yC,EAASjvB,KAAK,CAACvW,EAAGC,IAAMD,EAAEtV,MAAQuV,EAAEvV,OAChCskD,EAAUC,EAAS,CACrB,IAAK,IAAIptC,EAAIotC,EAASptC,EAAImtC,IAAWntC,EACnC7V,KAAKmwE,oBAAoBt6D,GAE3B2jC,EAAS7qB,OAAOs0B,EAASD,EAAUC,E,CAErCjjD,KAAKyuE,gBAAkBj1B,EAASn0B,MAAM,GAAGkF,KAAKsiD,GAAc,QAAS,SACvE,CAKAuD,2BAAAA,GACE,MAAO/B,UAAW70B,EAAU95C,MAAM,SAACi7B,IAAa36B,KAC5Cw5C,EAAS9yC,OAASi0B,EAASj0B,eACtB1G,KAAKq7C,QAEd7B,EAASprB,QAAQ,CAAC+B,EAAMzxB,KACmC,IAArDi8B,EAASyN,OAAOrxB,GAAKA,IAAMoZ,EAAKu9B,UAAUhnD,QAC5C1G,KAAKmwE,oBAAoBzxE,IAG/B,CAEA2xE,wBAAAA,GACE,MAAMC,EAAiB,GACjB31C,EAAW36B,KAAKN,KAAKi7B,SAC3B,IAAI9kB,EAAG8Q,EAIP,IAFA3mB,KAAKowE,8BAEAv6D,EAAI,EAAG8Q,EAAOgU,EAASj0B,OAAQmP,EAAI8Q,EAAM9Q,IAAK,CACjD,MAAM+a,EAAU+J,EAAS9kB,GACzB,IAAIsa,EAAOnwB,KAAK8+C,eAAejpC,GAC/B,MAAMvW,EAAOsxB,EAAQtxB,MAAQU,KAAKi4C,OAAO34C,KAazC,GAXI6wB,EAAK7wB,MAAQ6wB,EAAK7wB,OAASA,IAC7BU,KAAKmwE,oBAAoBt6D,GACzBsa,EAAOnwB,KAAK8+C,eAAejpC,IAE7Bsa,EAAK7wB,KAAOA,EACZ6wB,EAAKuL,UAAY9K,EAAQ8K,WAAaiuC,GAAarqE,EAAMU,KAAKmP,SAC9DghB,EAAKogD,MAAQ3/C,EAAQ2/C,OAAS,EAC9BpgD,EAAKzxB,MAAQmX,EACbsa,EAAKxhB,MAAQ,GAAKiiB,EAAQjiB,MAC1BwhB,EAAKoF,QAAUv1B,KAAKsrD,iBAAiBz1C,GAEjCsa,EAAKgrB,WACPhrB,EAAKgrB,WAAW4C,YAAYloC,GAC5Bsa,EAAKgrB,WAAWyC,iBACX,CACL,MAAM4yB,EAAkB9gB,GAAS8X,cAAcloE,IACzC,mBAACm+C,EAAA,gBAAoBC,GAAmBhpB,GAASiG,SAASr7B,GAChE+P,OAAO8T,OAAOqtD,EAAiB,CAC7B9yB,gBAAiBgS,GAASC,WAAWjS,GACrCD,mBAAoBA,GAAsBiS,GAASC,WAAWlS,KAEhEttB,EAAKgrB,WAAa,IAAIq1B,EAAgBxwE,KAAM6V,GAC5Cy6D,EAAejoD,KAAK8H,EAAKgrB,W,CAE7B,CAGA,OADAn7C,KAAKkwE,kBACEI,CACT,CAMAG,cAAAA,GACEpqD,GAAKrmB,KAAKN,KAAKi7B,SAAU,CAAC/J,EAAS9J,KACjC9mB,KAAK8+C,eAAeh4B,GAAcq0B,WAAW8D,SAC5Cj/C,KACL,CAKAi/C,KAAAA,GACEj/C,KAAKywE,iBACLzwE,KAAKugE,cAAc,QACrB,CAEA9oB,MAAAA,CAAO7b,GACL,MAAMqc,EAASj4C,KAAKi4C,OAEpBA,EAAOR,SACP,MAAMtoC,EAAUnP,KAAKmuE,SAAWl2B,EAAO4H,eAAe5H,EAAOm0B,oBAAqBpsE,KAAKy+B,cACjFiyC,EAAgB1wE,KAAKmiD,qBAAuBhzC,EAAQgmB,UAU1D,GARAn1B,KAAK2wE,gBACL3wE,KAAK4wE,sBACL5wE,KAAK6wE,uBAIL7wE,KAAK0uE,SAAS1F,cAEuD,IAAjEhpE,KAAKugE,cAAc,eAAgB,CAAC3kC,OAAMmtC,YAAY,IACxD,OAIF,MAAMuH,EAAiBtwE,KAAKqwE,2BAE5BrwE,KAAKugE,cAAc,wBAGnB,IAAI1K,EAAa,EACjB,IAAK,IAAIhgD,EAAI,EAAG8Q,EAAO3mB,KAAKN,KAAKi7B,SAASj0B,OAAQmP,EAAI8Q,EAAM9Q,IAAK,CAC/D,MAAM,WAACslC,GAAcn7C,KAAK8+C,eAAejpC,GACnCopC,GAASyxB,IAAyD,IAAxCJ,EAAelpD,QAAQ+zB,GAGvDA,EAAWkE,sBAAsBJ,GACjC4W,EAAavlD,KAAK6C,KAAKgoC,EAAWgG,iBAAkB0U,EACtD,CACAA,EAAa71D,KAAK8wE,YAAc3hE,EAAQmkD,OAAO59B,YAAcmgC,EAAa,EAC1E71D,KAAK+wE,cAAclb,GAGd6a,GAGHrqD,GAAKiqD,EAAiBn1B,IACpBA,EAAW8D,UAIfj/C,KAAKgxE,gBAAgBp1C,GAGrB57B,KAAKugE,cAAc,cAAe,CAAC3kC,SAEnC57B,KAAKy1D,QAAQlrC,KAAKsiD,GAAc,IAAK,SAGrC,MAAM,QAACl3B,EAAO,WAAE24B,GAActuE,KAC1BsuE,EACFtuE,KAAKixE,cAAc3C,GAAY,GACtB34B,EAAQjvC,QACjB1G,KAAKkxE,mBAAmBv7B,EAASA,GAAS,GAG5C31C,KAAKrC,QACP,CAKAgzE,aAAAA,GACEtqD,GAAKrmB,KAAKq8B,OAASD,IACjB22B,GAAQ4C,UAAU31D,KAAMo8B,KAG1Bp8B,KAAKsvE,sBACLtvE,KAAKyvE,qBACP,CAKAmB,mBAAAA,GACE,MAAMzhE,EAAUnP,KAAKmP,QACfgiE,EAAiB,IAAIpiD,IAAI1f,OAAOC,KAAKtP,KAAKuuE,aAC1C6C,EAAY,IAAIriD,IAAI5f,EAAQ8rB,QAE7BpS,GAAUsoD,EAAgBC,MAAgBpxE,KAAKwuE,uBAAyBr/D,EAAQgtB,aAEnFn8B,KAAKqxE,eACLrxE,KAAKgvE,aAET,CAKA6B,oBAAAA,GACE,MAAM,eAAClC,GAAkB3uE,KACnBsxE,EAAUtxE,KAAKuxE,0BAA4B,GACjD,IAAK,MAAM,OAACljD,EAAM,MAAE/nB,EAAA,MAAOoJ,KAAU4hE,EAAS,CAC5C,MAAMluB,EAAkB,oBAAX/0B,GAAgC3e,EAAQA,EACrD89D,GAAgBmB,EAAgBroE,EAAO88C,EACzC,CACF,CAKAmuB,sBAAAA,GACE,MAAM/tB,EAAexjD,KAAKwjD,aAC1B,IAAKA,IAAiBA,EAAa98C,OACjC,OAGF1G,KAAKwjD,aAAe,GACpB,MAAMguB,EAAexxE,KAAKN,KAAKi7B,SAASj0B,OAClC+qE,EAAW5O,GAAQ,IAAI9zC,IAC3By0B,EACGpb,OAAOl0B,GAAKA,EAAE,KAAO2uD,GACrB3sD,IAAI,CAAChC,EAAG2B,IAAMA,EAAI,IAAM3B,EAAEya,OAAO,GAAGqZ,KAAK,OAGxC0pC,EAAYD,EAAQ,GAC1B,IAAK,IAAI57D,EAAI,EAAGA,EAAI27D,EAAc37D,IAChC,IAAKgT,GAAU6oD,EAAWD,EAAQ57D,IAChC,OAGJ,OAAO9P,MAAMU,KAAKirE,GACfx7D,IAAIhC,GAAKA,EAAEiU,MAAM,MACjBjS,IAAIlC,IAAA,CAAOqa,OAAQra,EAAE,GAAI1N,OAAQ0N,EAAE,GAAItE,OAAQsE,EAAE,KACtD,CAOA+8D,aAAAA,CAAclb,GACZ,IAA+D,IAA3D71D,KAAKugE,cAAc,eAAgB,CAACwI,YAAY,IAClD,OAGFhW,GAAQtb,OAAOz3C,KAAMA,KAAKC,MAAOD,KAAK4+B,OAAQi3B,GAE9C,MAAMv1B,EAAOtgC,KAAKq0C,UACZs9B,EAASrxC,EAAKrgC,OAAS,GAAKqgC,EAAK1B,QAAU,EAEjD5+B,KAAKy1D,QAAU,GACfpvC,GAAKrmB,KAAK2yD,MAAQllB,IACZkkC,GAA2B,cAAjBlkC,EAAImjB,WAOdnjB,EAAI0K,WACN1K,EAAI0K,YAENn4C,KAAKy1D,QAAQptC,QAAQolB,EAAIgoB,aACxBz1D,MAEHA,KAAKy1D,QAAQrnC,QAAQ,CAAC5vB,EAAME,KAC1BF,EAAKozE,KAAOlzE,IAGdsB,KAAKugE,cAAc,cACrB,CAOAyQ,eAAAA,CAAgBp1C,GACd,IAA6E,IAAzE57B,KAAKugE,cAAc,uBAAwB,CAAC3kC,OAAMmtC,YAAY,IAAlE,CAIA,IAAK,IAAIlzD,EAAI,EAAG8Q,EAAO3mB,KAAKN,KAAKi7B,SAASj0B,OAAQmP,EAAI8Q,IAAQ9Q,EAC5D7V,KAAK8+C,eAAejpC,GAAGslC,WAAWhD,YAGpC,IAAK,IAAItiC,EAAI,EAAG8Q,EAAO3mB,KAAKN,KAAKi7B,SAASj0B,OAAQmP,EAAI8Q,IAAQ9Q,EAC5D7V,KAAK6xE,eAAeh8D,EAAG+S,GAAWgT,GAAQA,EAAK,CAAC9U,aAAcjR,IAAM+lB,GAGtE57B,KAAKugE,cAAc,sBAAuB,CAAC3kC,Q,CAC7C,CAOAi2C,cAAAA,CAAenzE,EAAOk9B,GACpB,MAAMzL,EAAOnwB,KAAK8+C,eAAepgD,GAC3BQ,EAAO,CAACixB,OAAMzxB,QAAOk9B,OAAMmtC,YAAY,IAEW,IAApD/oE,KAAKugE,cAAc,sBAAuBrhE,KAI9CixB,EAAKgrB,WAAW7F,QAAQ1Z,GAExB18B,EAAK6pE,YAAa,EAClB/oE,KAAKugE,cAAc,qBAAsBrhE,GAC3C,CAEAvB,MAAAA,IACiE,IAA3DqC,KAAKugE,cAAc,eAAgB,CAACwI,YAAY,MAIhDvyB,GAAS1tB,IAAI9oB,MACXA,KAAK4uE,WAAap4B,GAASf,QAAQz1C,OACrCw2C,GAASlwC,MAAMtG,OAGjBA,KAAK01C,OACLs3B,GAAqB,CAACh2C,MAAOh3B,QAEjC,CAEA01C,IAAAA,GACE,IAAI7/B,EACJ,GAAI7V,KAAKivE,kBAAmB,CAC1B,MAAM,MAAChvE,EAAA,OAAO2+B,GAAU5+B,KAAKivE,kBAE7BjvE,KAAKivE,kBAAoB,KACzBjvE,KAAKkvE,QAAQjvE,EAAO2+B,E,CAItB,GAFA5+B,KAAK6rE,QAED7rE,KAAKC,OAAS,GAAKD,KAAK4+B,QAAU,EACpC,OAGF,IAA6D,IAAzD5+B,KAAKugE,cAAc,aAAc,CAACwI,YAAY,IAChD,OAMF,MAAM+I,EAAS9xE,KAAKy1D,QACpB,IAAK5/C,EAAI,EAAGA,EAAIi8D,EAAOprE,QAAUorE,EAAOj8D,GAAG6/C,GAAK,IAAK7/C,EACnDi8D,EAAOj8D,GAAG6/B,KAAK11C,KAAKq0C,WAMtB,IAHAr0C,KAAK+xE,gBAGEl8D,EAAIi8D,EAAOprE,SAAUmP,EAC1Bi8D,EAAOj8D,GAAG6/B,KAAK11C,KAAKq0C,WAGtBr0C,KAAKugE,cAAc,YACrB,CAKA9mB,sBAAAA,CAAuBF,GACrB,MAAMC,EAAWx5C,KAAKyuE,gBAChBpkD,EAAS,GACf,IAAIxU,EAAG8Q,EAEP,IAAK9Q,EAAI,EAAG8Q,EAAO6yB,EAAS9yC,OAAQmP,EAAI8Q,IAAQ9Q,EAAG,CACjD,MAAMsa,EAAOqpB,EAAS3jC,GACjB0jC,IAAiBppB,EAAKoF,SACzBlL,EAAOhC,KAAK8H,EAEhB,CAEA,OAAO9F,CACT,CAMAwmC,4BAAAA,GACE,OAAO7wD,KAAKy5C,wBAAuB,EACrC,CAOAs4B,aAAAA,GACE,IAAqE,IAAjE/xE,KAAKugE,cAAc,qBAAsB,CAACwI,YAAY,IACxD,OAGF,MAAMvvB,EAAWx5C,KAAK6wD,+BACtB,IAAK,IAAIh7C,EAAI2jC,EAAS9yC,OAAS,EAAGmP,GAAK,IAAKA,EAC1C7V,KAAKgyE,aAAax4B,EAAS3jC,IAG7B7V,KAAKugE,cAAc,oBACrB,CAOAyR,YAAAA,CAAa7hD,GACX,MAAMoL,EAAMv7B,KAAKu7B,IACXr8B,EAAO,CACXixB,OACAzxB,MAAOyxB,EAAKzxB,MACZqqE,YAAY,GAGR5wC,EAAOqc,GAAmBx0C,KAAMmwB,IAEgB,IAAlDnwB,KAAKugE,cAAc,oBAAqBrhE,KAIxCi5B,GACFqI,GAASjF,EAAKpD,GAGhBhI,EAAKgrB,WAAWzF,OAEZvd,GACFsI,GAAWlF,GAGbr8B,EAAK6pE,YAAa,EAClB/oE,KAAKugE,cAAc,mBAAoBrhE,GACzC,CAOAmyD,aAAAA,CAAcjgC,GACZ,OAAOiP,GAAejP,EAAOpxB,KAAKq0C,UAAWr0C,KAAK8wE,YACpD,CAEAmB,yBAAAA,CAA0B79D,EAAGwnB,EAAMzsB,EAASiiD,GAC1C,MAAM/iC,EAAS8jC,GAAYC,MAAMx2B,GACjC,MAAsB,oBAAXvN,EACFA,EAAOruB,KAAMoU,EAAGjF,EAASiiD,GAG3B,EACT,CAEAtS,cAAAA,CAAeh4B,GACb,MAAM8J,EAAU5wB,KAAKN,KAAKi7B,SAAS7T,GAC7B0yB,EAAWx5C,KAAKquE,UACtB,IAAIl+C,EAAOqpB,EAASpR,OAAOrxB,GAAKA,GAAKA,EAAE22C,WAAa98B,GAASpG,MAoB7D,OAlBK2F,IACHA,EAAO,CACL7wB,KAAM,KACNI,KAAM,GACNkxB,QAAS,KACTuqB,WAAY,KACZuB,OAAQ,KACRyB,QAAS,KACTE,QAAS,KACTkyB,MAAO3/C,GAAWA,EAAQ2/C,OAAS,EACnC7xE,MAAOooB,EACP4mC,SAAU98B,EACVF,QAAS,GACTH,SAAS,GAEXipB,EAASnxB,KAAK8H,IAGTA,CACT,CAEAsO,UAAAA,GACE,OAAOz+B,KAAKu9C,WAAav9C,KAAKu9C,SAAWzY,GAAc,KAAM,CAAC9N,MAAOh3B,KAAMV,KAAM,UACnF,CAEAmvD,sBAAAA,GACE,OAAOzuD,KAAK6wD,+BAA+BnqD,MAC7C,CAEA4kD,gBAAAA,CAAiBxkC,GACf,MAAM8J,EAAU5wB,KAAKN,KAAKi7B,SAAS7T,GACnC,IAAK8J,EACH,OAAO,EAGT,MAAMT,EAAOnwB,KAAK8+C,eAAeh4B,GAIjC,MAA8B,mBAAhBqJ,EAAKusB,QAAwBvsB,EAAKusB,QAAU9rB,EAAQ8rB,MACpE,CAEAw1B,oBAAAA,CAAqBprD,EAAcyO,GACjC,MAAMpF,EAAOnwB,KAAK8+C,eAAeh4B,GACjCqJ,EAAKusB,QAAUnnB,CACjB,CAEAi4B,oBAAAA,CAAqB9uD,GACnBsB,KAAK2uE,eAAejwE,IAAUsB,KAAK2uE,eAAejwE,EACpD,CAEAmqD,iBAAAA,CAAkBnqD,GAChB,OAAQsB,KAAK2uE,eAAejwE,EAC9B,CAKAyzE,iBAAAA,CAAkBrrD,EAAcm1B,EAAW1mB,GACzC,MAAMqG,EAAOrG,EAAU,OAAS,OAC1BpF,EAAOnwB,KAAK8+C,eAAeh4B,GAC3BkuB,EAAQ7kB,EAAKgrB,WAAW2G,wBAAmB3sC,EAAWymB,GAExDjT,GAAQszB,IACV9rB,EAAKzwB,KAAKu8C,GAAWS,QAAUnnB,EAC/Bv1B,KAAKy3C,WAELz3C,KAAKkyE,qBAAqBprD,EAAcyO,GAExCyf,EAAMyC,OAAOtnB,EAAM,CAACoF,YACpBv1B,KAAKy3C,OAAQlc,GAAQA,EAAIzU,eAAiBA,EAAe8U,OAAOzmB,GAEpE,CAEAqgB,IAAAA,CAAK1O,EAAcm1B,GACjBj8C,KAAKmyE,kBAAkBrrD,EAAcm1B,GAAW,EAClD,CAEA5mB,IAAAA,CAAKvO,EAAcm1B,GACjBj8C,KAAKmyE,kBAAkBrrD,EAAcm1B,GAAW,EAClD,CAKAk0B,mBAAAA,CAAoBrpD,GAClB,MAAMqJ,EAAOnwB,KAAKquE,UAAUvnD,GACxBqJ,GAAQA,EAAKgrB,YACfhrB,EAAKgrB,WAAW+D,kBAEXl/C,KAAKquE,UAAUvnD,EACxB,CAEAsrD,KAAAA,GACE,IAAIv8D,EAAG8Q,EAIP,IAHA3mB,KAAK0yC,OACL8D,GAASt1C,OAAOlB,MAEX6V,EAAI,EAAG8Q,EAAO3mB,KAAKN,KAAKi7B,SAASj0B,OAAQmP,EAAI8Q,IAAQ9Q,EACxD7V,KAAKmwE,oBAAoBt6D,EAE7B,CAEAw8D,OAAAA,GACEryE,KAAKugE,cAAc,iBACnB,MAAM,OAAC/hC,EAAM,IAAEjD,GAAOv7B,KAEtBA,KAAKoyE,QACLpyE,KAAKi4C,OAAO2zB,aAERptC,IACFx+B,KAAKqxE,eACL9yC,GAAYC,EAAQjD,GACpBv7B,KAAK86B,SAASs7B,eAAe76B,GAC7Bv7B,KAAKw+B,OAAS,KACdx+B,KAAKu7B,IAAM,aAGN+xC,GAAUttE,KAAKoS,IAEtBpS,KAAKugE,cAAc,eACrB,CAEA+R,aAAAA,IAAiBpzE,GACf,OAAOc,KAAKw+B,OAAO+zC,aAAarzE,EAClC,CAKA8vE,UAAAA,GACEhvE,KAAKwyE,iBACDxyE,KAAKmP,QAAQgtB,WACfn8B,KAAKyyE,uBAELzyE,KAAK4uE,UAAW,CAEpB,CAKA4D,cAAAA,GACE,MAAMxkD,EAAYhuB,KAAKuuE,WACjBzzC,EAAW96B,KAAK86B,SAEhB43C,EAAOA,CAACpzE,EAAMwuB,KAClBgN,EAASt5B,iBAAiBxB,KAAMV,EAAMwuB,GACtCE,EAAU1uB,GAAQwuB,GAGdA,EAAWA,CAAC1Z,EAAG2C,EAAGiR,KACtB5T,EAAEm5B,QAAUx2B,EACZ3C,EAAEo5B,QAAUxlB,EACZhoB,KAAKixE,cAAc78D,IAGrBiS,GAAKrmB,KAAKmP,QAAQ8rB,OAAS37B,GAASozE,EAAKpzE,EAAMwuB,GACjD,CAKA2kD,oBAAAA,GACOzyE,KAAKwuE,uBACRxuE,KAAKwuE,qBAAuB,CAAC,GAE/B,MAAMxgD,EAAYhuB,KAAKwuE,qBACjB1zC,EAAW96B,KAAK86B,SAEhB43C,EAAOA,CAACpzE,EAAMwuB,KAClBgN,EAASt5B,iBAAiBxB,KAAMV,EAAMwuB,GACtCE,EAAU1uB,GAAQwuB,GAEd6kD,EAAUA,CAACrzE,EAAMwuB,KACjBE,EAAU1uB,KACZw7B,EAASp5B,oBAAoB1B,KAAMV,EAAMwuB,UAClCE,EAAU1uB,KAIfwuB,EAAWA,CAAC7tB,EAAO2+B,KACnB5+B,KAAKw+B,QACPx+B,KAAKo1B,OAAOn1B,EAAO2+B,IAIvB,IAAIg0C,EACJ,MAAMhE,EAAWA,KACf+D,EAAQ,SAAU/D,GAElB5uE,KAAK4uE,UAAW,EAChB5uE,KAAKo1B,SAELs9C,EAAK,SAAU5kD,GACf4kD,EAAK,SAAUE,IAGjBA,EAAWA,KACT5yE,KAAK4uE,UAAW,EAEhB+D,EAAQ,SAAU7kD,GAGlB9tB,KAAKoyE,QACLpyE,KAAKkvE,QAAQ,EAAG,GAEhBwD,EAAK,SAAU9D,IAGb9zC,EAASu7B,WAAWr2D,KAAKw+B,QAC3BowC,IAEAgE,GAEJ,CAKAvB,YAAAA,GACEhrD,GAAKrmB,KAAKuuE,WAAY,CAACzgD,EAAUxuB,KAC/BU,KAAK86B,SAASp5B,oBAAoB1B,KAAMV,EAAMwuB,KAEhD9tB,KAAKuuE,WAAa,CAAC,EAEnBloD,GAAKrmB,KAAKwuE,qBAAsB,CAAC1gD,EAAUxuB,KACzCU,KAAK86B,SAASp5B,oBAAoB1B,KAAMV,EAAMwuB,KAEhD9tB,KAAKwuE,0BAAuBr5D,CAC9B,CAEA09D,gBAAAA,CAAiBhkD,EAAO+M,EAAMi/B,GAC5B,MAAMnzB,EAASmzB,EAAU,MAAQ,SACjC,IAAI1qC,EAAM3xB,EAAMqX,EAAG8Q,EAOnB,IALa,YAATiV,IACFzL,EAAOnwB,KAAK8+C,eAAejwB,EAAM,GAAG/H,cACpCqJ,EAAKgrB,WAAW,IAAMzT,EAAS,wBAG5B7xB,EAAI,EAAG8Q,EAAOkI,EAAMnoB,OAAQmP,EAAI8Q,IAAQ9Q,EAAG,CAC9CrX,EAAOqwB,EAAMhZ,GACb,MAAMslC,EAAa38C,GAAQwB,KAAK8+C,eAAetgD,EAAKsoB,cAAcq0B,WAC9DA,GACFA,EAAWzT,EAAS,cAAclpC,EAAKiuC,QAASjuC,EAAKsoB,aAActoB,EAAKE,MAE5E,CACF,CAMAo0E,iBAAAA,GACE,OAAO9yE,KAAK21C,SAAW,EACzB,CAMAo9B,iBAAAA,CAAkBC,GAChB,MAAMC,EAAajzE,KAAK21C,SAAW,GAC7BzgB,EAAS89C,EAAe98D,IAAI,EAAE4Q,eAAcpoB,YAChD,MAAMyxB,EAAOnwB,KAAK8+C,eAAeh4B,GACjC,IAAKqJ,EACH,MAAM,IAAI4X,MAAM,6BAA+BjhB,GAGjD,MAAO,CACLA,eACA2lB,QAAStc,EAAKzwB,KAAKhB,GACnBA,WAGEqzB,GAAWvL,GAAe0O,EAAQ+9C,GAEpClhD,IACF/xB,KAAK21C,QAAUzgB,EAEfl1B,KAAKsuE,WAAa,KAClBtuE,KAAKkxE,mBAAmBh8C,EAAQ+9C,GAEpC,CAWA1S,aAAAA,CAAcoI,EAAMzpE,EAAMkpC,GACxB,OAAOpoC,KAAK0uE,SAAShG,OAAO1oE,KAAM2oE,EAAMzpE,EAAMkpC,EAChD,CAOA0V,eAAAA,CAAgBo1B,GACd,OAA6E,IAAtElzE,KAAK0uE,SAAS7wE,OAAOuqC,OAAOhkB,GAAKA,EAAE0kD,OAAO12D,KAAO8gE,GAAUxsE,MACpE,CAKAwqE,kBAAAA,CAAmBh8C,EAAQ+9C,EAAYE,GACrC,MAAMC,EAAepzE,KAAKmP,QAAQksB,MAC5B40B,EAAOA,CAACj8C,EAAGC,IAAMD,EAAEo0B,OAAOrxB,IAAM9C,EAAEq1D,KAAKthD,GAAKjR,EAAE+P,eAAiBkB,EAAElB,cAAgB/P,EAAErY,QAAUspB,EAAEtpB,QAC/F20E,EAAcpjB,EAAKgjB,EAAY/9C,GAC/Bo+C,EAAYH,EAASj+C,EAAS+6B,EAAK/6B,EAAQ+9C,GAE7CI,EAAY3sE,QACd1G,KAAK6yE,iBAAiBQ,EAAaD,EAAax3C,MAAM,GAGpD03C,EAAU5sE,QAAU0sE,EAAax3C,MACnC57B,KAAK6yE,iBAAiBS,EAAWF,EAAax3C,MAAM,EAExD,CAKAq1C,aAAAA,CAAc78D,EAAG++D,GACf,MAAMj0E,EAAO,CACX4uC,MAAO15B,EACP++D,SACApK,YAAY,EACZ6E,YAAa5tE,KAAKqxD,cAAcj9C,IAE5Bm/D,EAAezK,IAAYA,EAAO35D,QAAQ8rB,QAAUj7B,KAAKmP,QAAQ8rB,QAAQrD,SAASxjB,EAAE0jD,OAAOx4D,MAEjG,IAA6D,IAAzDU,KAAKugE,cAAc,cAAerhE,EAAMq0E,GAC1C,OAGF,MAAMxhD,EAAU/xB,KAAKwzE,aAAap/D,EAAG++D,EAAQj0E,EAAK0uE,aASlD,OAPA1uE,EAAK6pE,YAAa,EAClB/oE,KAAKugE,cAAc,aAAcrhE,EAAMq0E,IAEnCxhD,GAAW7yB,EAAK6yB,UAClB/xB,KAAKrC,SAGAqC,IACT,CAUAwzE,YAAAA,CAAap/D,EAAG++D,EAAQvF,GACtB,MAAOj4B,QAASs9B,EAAa,GAAE,QAAE9jE,GAAWnP,KAetCoxD,EAAmB+hB,EACnBj+C,EAASl1B,KAAKyzE,mBAAmBr/D,EAAG6+D,EAAYrF,EAAaxc,GAC7Dyc,EAAU9kD,GAAc3U,GACxBu5D,EAAYD,GAAmBt5D,EAAGpU,KAAKsuE,WAAYV,EAAaC,GAElED,IAGF5tE,KAAKsuE,WAAa,KAGlBroD,GAAa9W,EAAQ6sB,QAAS,CAAC5nB,EAAG8gB,EAAQl1B,MAAOA,MAE7C6tE,GACF5nD,GAAa9W,EAAQvQ,QAAS,CAACwV,EAAG8gB,EAAQl1B,MAAOA,OAIrD,MAAM+xB,GAAWvL,GAAe0O,EAAQ+9C,GAQxC,OAPIlhD,GAAWohD,KACbnzE,KAAK21C,QAAUzgB,EACfl1B,KAAKkxE,mBAAmBh8C,EAAQ+9C,EAAYE,IAG9CnzE,KAAKsuE,WAAaX,EAEX57C,CACT,CAUA0hD,kBAAAA,CAAmBr/D,EAAG6+D,EAAYrF,EAAaxc,GAC7C,GAAe,aAAXh9C,EAAE9U,KACJ,MAAO,GAGT,IAAKsuE,EAEH,OAAOqF,EAGT,MAAMG,EAAepzE,KAAKmP,QAAQksB,MAClC,OAAOr7B,KAAKiyE,0BAA0B79D,EAAGg/D,EAAax3C,KAAMw3C,EAAchiB,EAC5E,EAIF,SAAS2c,KACP,OAAO1nD,GAAKynD,GAAMR,UAAYt2C,GAAUA,EAAM03C,SAAS1F,aACzD,CC5uCA,SAAS0K,GAASn4C,EAA+BkR,EAAqB2d,GACpE,MAAM,WAACD,EAAA,EAAYpzC,EAAA,EAAGiR,EAAA,YAAGijC,EAAA,YAAaD,EAAA,QAAa77C,GAAWs9B,GACxD,YAACtM,EAAA,gBAAa+T,GAAmB/kC,EACjCwkE,EAAiBrjE,KAAK8C,IAAI+sB,EAAc8qB,EAAa5+B,GAAgB89B,EAAaC,IAIxF,GAHA7uB,EAAImE,YACJnE,EAAIqE,IAAI7oB,EAAGiR,EAAGijC,EAAc9qB,EAAc,EAAGgqB,EAAawpB,EAAiB,EAAGvpB,EAAWupB,EAAiB,GAEtG3oB,EAAc,EAAG,CACnB,MAAM4oB,EAAiBtjE,KAAK8C,IAAI+sB,EAAc6qB,EAAa3+B,GAAgB89B,EAAaC,IACxF7uB,EAAIqE,IAAI7oB,EAAGiR,EAAGgjC,EAAc7qB,EAAc,EAAGiqB,EAAWwpB,EAAiB,EAAGzpB,EAAaypB,EAAiB,GAAG,E,KACxG,CACL,MAAMC,EAAYvjE,KAAK8C,IAAI+sB,EAAc,EAAG8qB,EAAc5+B,GAAgB89B,EAAaC,IAEvF,GAAwB,UAApBlW,EACF3Y,EAAIqE,IAAI7oB,EAAGiR,EAAG6rD,EAAWzpB,EAAWphC,GAAK,EAAGmhC,EAAanhC,GAAK,GAAG,QAC5D,GAAwB,UAApBkrB,EAA6B,CACtC,MAAMv/B,EAAI,EAAIk/D,EAAYA,EACpBtpB,GAAQ51C,EAAIrE,KAAK6iB,IAAIi3B,EAAWphC,GAAK,GAAKjS,EAC1CyzC,GAAQ71C,EAAIrE,KAAK4hB,IAAIk4B,EAAWphC,GAAK,GAAKhB,EAC1CqiC,EAAS11C,EAAIrE,KAAK6iB,IAAIg3B,EAAanhC,GAAK,GAAKjS,EAC7CuzC,EAAS31C,EAAIrE,KAAK4hB,IAAIi4B,EAAanhC,GAAK,GAAKhB,EACnDuT,EAAIwE,OAAOwqB,EAAMC,GACjBjvB,EAAIwE,OAAOsqB,EAAQC,E,EAGvB/uB,EAAIsE,YAEJtE,EAAIuE,OAAO,EAAG,GACdvE,EAAI0E,KAAK,EAAG,EAAG1E,EAAIiD,OAAOv+B,MAAOs7B,EAAIiD,OAAOI,QAE5CrD,EAAIpD,KAAK,UACX,CAGA,SAAS27C,GAAQv4C,EAA+BkR,EAAqB2d,GACnE,MAAM,WAACD,EAAA,YAAY4pB,EAAA,EAAah9D,EAAA,EAAGiR,EAAA,YAAGijC,EAAA,YAAaD,GAAeve,EAClE,IAAIunC,EAAcD,EAAc9oB,EAIhC1vB,EAAImE,YACJnE,EAAIqE,IAAI7oB,EAAGiR,EAAGijC,EAAad,EAAa6pB,EAAa5pB,EAAW4pB,GAC5DhpB,EAAc+oB,GAChBC,EAAcD,EAAc/oB,EAC5BzvB,EAAIqE,IAAI7oB,EAAGiR,EAAGgjC,EAAaZ,EAAW4pB,EAAa7pB,EAAa6pB,GAAa,IAE7Ez4C,EAAIqE,IAAI7oB,EAAGiR,EAAG+rD,EAAa3pB,EAAW9gC,GAAS6gC,EAAa7gC,IAE9DiS,EAAIsE,YACJtE,EAAIpD,MACN,CAEA,SAAS87C,GAAgBnvE,GACvB,OAAO6+B,GAAkB7+B,EAAO,CAAC,aAAc,WAAY,aAAc,YAC3E,CAKA,SAASovE,GAAkBt0C,EAAiBorB,EAAqBC,EAAqBkpB,GACpF,MAAMpsD,EAAIksD,GAAgBr0C,EAAIzwB,QAAQ+9C,cAChCknB,GAAiBnpB,EAAcD,GAAe,EAC9CqpB,EAAa/jE,KAAK8C,IAAIghE,EAAeD,EAAanpB,EAAc,GAShEspB,EAAqB9vD,IACzB,MAAM+vD,GAAiBtpB,EAAc36C,KAAK8C,IAAIghE,EAAe5vD,IAAQ2vD,EAAa,EAClF,OAAOtnD,GAAYrI,EAAK,EAAGlU,KAAK8C,IAAIghE,EAAeG,KAGrD,MAAO,CACLC,WAAYF,EAAkBvsD,EAAEysD,YAChCC,SAAUH,EAAkBvsD,EAAE0sD,UAC9BC,WAAY7nD,GAAY9E,EAAE2sD,WAAY,EAAGL,GACzCM,SAAU9nD,GAAY9E,EAAE4sD,SAAU,EAAGN,GAEzC,CAKA,SAASO,GAAWjgE,EAAWkgE,EAAe99D,EAAWiR,GACvD,MAAO,CACLjR,EAAGA,EAAIpC,EAAIrE,KAAK6iB,IAAI0hD,GACpB7sD,EAAGA,EAAIrT,EAAIrE,KAAK4hB,IAAI2iD,GAExB,CAiBA,SAASC,GACPv5C,EACAkR,EACAzU,EACAwzB,EACAj/B,EACA4iC,GAEA,MAAM,EAACp4C,EAAA,EAAGiR,EAAGmiC,WAAY7jD,EAAK,YAAEytE,EAAa/oB,YAAa+pB,GAAUtoC,EAE9Dwe,EAAc36C,KAAK6C,IAAIs5B,EAAQwe,YAAcO,EAAUxzB,EAAS+7C,EAAa,GAC7E/oB,EAAc+pB,EAAS,EAAIA,EAASvpB,EAAUxzB,EAAS+7C,EAAc,EAE3E,IAAIiB,EAAgB,EACpB,MAAM//D,EAAQsX,EAAMjmB,EAEpB,GAAIklD,EAAS,CAIX,MAAMypB,EAAuBF,EAAS,EAAIA,EAASvpB,EAAU,EACvD0pB,EAAuBjqB,EAAc,EAAIA,EAAcO,EAAU,EACjE2pB,GAAsBF,EAAuBC,GAAwB,EACrEE,EAAuC,IAAvBD,EAA2BlgE,EAASkgE,GAAuBA,EAAqB3pB,GAAWv2C,EACjH+/D,GAAiB//D,EAAQmgE,GAAiB,C,CAG5C,MAAMC,EAAO/kE,KAAK6C,IAAI,KAAO8B,EAAQg2C,EAAcjzB,EAAShP,IAAMiiC,EAC5DqqB,GAAergE,EAAQogE,GAAQ,EAC/BlrB,EAAa7jD,EAAQgvE,EAAcN,EACnC5qB,EAAW79B,EAAM+oD,EAAcN,GAC/B,WAACR,EAAA,SAAYC,EAAA,WAAUC,EAAU,SAAEC,GAAYT,GAAkBznC,EAASue,EAAaC,EAAab,EAAWD,GAE/GorB,EAA2BtqB,EAAcupB,EACzCgB,EAAyBvqB,EAAcwpB,EACvCgB,EAA0BtrB,EAAaqqB,EAAae,EACpDG,EAAwBtrB,EAAWqqB,EAAWe,EAE9CG,EAA2B3qB,EAAc0pB,EACzCkB,EAAyB5qB,EAAc2pB,EACvCkB,EAA0B1rB,EAAauqB,EAAaiB,EACpDG,EAAwB1rB,EAAWuqB,EAAWiB,EAIpD,GAFAr6C,EAAImE,YAEAyvB,EAAU,CAEZ,MAAM4mB,GAAyBN,EAA0BC,GAAyB,EAKlF,GAJAn6C,EAAIqE,IAAI7oB,EAAGiR,EAAGijC,EAAawqB,EAAyBM,GACpDx6C,EAAIqE,IAAI7oB,EAAGiR,EAAGijC,EAAa8qB,EAAuBL,GAG9CjB,EAAW,EAAG,CAChB,MAAMuB,EAAUpB,GAAWY,EAAwBE,EAAuB3+D,EAAGiR,GAC7EuT,EAAIqE,IAAIo2C,EAAQj/D,EAAGi/D,EAAQhuD,EAAGysD,EAAUiB,EAAuBtrB,EAAW9gC,G,CAI5E,MAAM2sD,EAAKrB,GAAWgB,EAAwBxrB,EAAUrzC,EAAGiR,GAI3D,GAHAuT,EAAIwE,OAAOk2C,EAAGl/D,EAAGk/D,EAAGjuD,GAGhB2sD,EAAW,EAAG,CAChB,MAAMqB,EAAUpB,GAAWgB,EAAwBE,EAAuB/+D,EAAGiR,GAC7EuT,EAAIqE,IAAIo2C,EAAQj/D,EAAGi/D,EAAQhuD,EAAG2sD,EAAUvqB,EAAW9gC,GAASwsD,EAAwBxlE,KAAK0Y,G,CAI3F,MAAMktD,GAA0B9rB,EAAYuqB,EAAW3pB,GAAiBb,EAAcuqB,EAAa1pB,IAAiB,EAKpH,GAJAzvB,EAAIqE,IAAI7oB,EAAGiR,EAAGgjC,EAAaZ,EAAYuqB,EAAW3pB,EAAckrB,GAAuB,GACvF36C,EAAIqE,IAAI7oB,EAAGiR,EAAGgjC,EAAakrB,EAAuB/rB,EAAcuqB,EAAa1pB,GAAc,GAGvF0pB,EAAa,EAAG,CAClB,MAAMsB,EAAUpB,GAAWe,EAA0BE,EAAyB9+D,EAAGiR,GACjFuT,EAAIqE,IAAIo2C,EAAQj/D,EAAGi/D,EAAQhuD,EAAG0sD,EAAYmB,EAA0BvlE,KAAK0Y,GAAImhC,EAAa7gC,G,CAI5F,MAAM6sD,EAAKvB,GAAWW,EAA0BprB,EAAYpzC,EAAGiR,GAI/D,GAHAuT,EAAIwE,OAAOo2C,EAAGp/D,EAAGo/D,EAAGnuD,GAGhBwsD,EAAa,EAAG,CAClB,MAAMwB,EAAUpB,GAAWW,EAA0BE,EAAyB1+D,EAAGiR,GACjFuT,EAAIqE,IAAIo2C,EAAQj/D,EAAGi/D,EAAQhuD,EAAGwsD,EAAYrqB,EAAa7gC,GAASmsD,E,MAE7D,CACLl6C,EAAIuE,OAAO/oB,EAAGiR,GAEd,MAAMouD,EAAc9lE,KAAK6iB,IAAIsiD,GAA2BxqB,EAAcl0C,EAChEs/D,EAAc/lE,KAAK4hB,IAAIujD,GAA2BxqB,EAAcjjC,EACtEuT,EAAIwE,OAAOq2C,EAAaC,GAExB,MAAMC,EAAYhmE,KAAK6iB,IAAIuiD,GAAyBzqB,EAAcl0C,EAC5Dw/D,EAAYjmE,KAAK4hB,IAAIwjD,GAAyBzqB,EAAcjjC,EAClEuT,EAAIwE,OAAOu2C,EAAWC,E,CAGxBh7C,EAAIsE,WACN,CAEA,SAAS22C,GACPj7C,EACAkR,EACAzU,EACAwzB,EACA2D,GAEA,MAAM,YAACsnB,EAAW,WAAEtsB,EAAA,cAAYJ,GAAiBtd,EACjD,IAAI2d,EAAW3d,EAAQ2d,SACvB,GAAIqsB,EAAa,CACf3B,GAAQv5C,EAAKkR,EAASzU,EAAQwzB,EAASpB,EAAU+E,GACjD,IAAK,IAAIt5C,EAAI,EAAGA,EAAI4gE,IAAe5gE,EACjC0lB,EAAI2E,OAEDrV,MAAMk/B,KACTK,EAAWD,GAAcJ,EAAgB9gC,IAAOA,I,CAKpD,OAFA6rD,GAAQv5C,EAAKkR,EAASzU,EAAQwzB,EAASpB,EAAU+E,GACjD5zB,EAAI2E,OACGkqB,CACT,CAEA,SAASob,GACPjqC,EACAkR,EACAzU,EACAwzB,EACA2D,GAEA,MAAM,YAACsnB,EAAA,WAAatsB,EAAA,cAAYJ,EAAa,QAAE56C,GAAWs9B,GACpD,YAACtM,EAAW,gBAAE+T,EAAe,WAAEF,EAAU,iBAAEC,EAAgB,aAAEiZ,GAAgB/9C,EAC7EunE,EAAgC,UAAxBvnE,EAAQw9C,YAEtB,IAAKxsB,EACH,OAGF5E,EAAIgqC,YAAYvxB,GAAc,IAC9BzY,EAAI8xB,eAAiBpZ,EAEjByiC,GACFn7C,EAAIjD,UAA0B,EAAd6H,EAChB5E,EAAI+xB,SAAWpZ,GAAmB,UAElC3Y,EAAIjD,UAAY6H,EAChB5E,EAAI+xB,SAAWpZ,GAAmB,SAGpC,IAAIkW,EAAW3d,EAAQ2d,SACvB,GAAIqsB,EAAa,CACf3B,GAAQv5C,EAAKkR,EAASzU,EAAQwzB,EAASpB,EAAU+E,GACjD,IAAK,IAAIt5C,EAAI,EAAGA,EAAI4gE,IAAe5gE,EACjC0lB,EAAI6E,SAEDvV,MAAMk/B,KACTK,EAAWD,GAAcJ,EAAgB9gC,IAAOA,I,CAIhDytD,GACF5C,GAAQv4C,EAAKkR,EAAS2d,GAGpBj7C,EAAQwnE,UAAYvsB,EAAWD,GAAcnhC,IAAuB,IAAjBkkC,GAA0C,UAApBhZ,GAC3Ew/B,GAASn4C,EAAKkR,EAAS2d,GAGpBqsB,IACH3B,GAAQv5C,EAAKkR,EAASzU,EAAQwzB,EAASpB,EAAU+E,GACjD5zB,EAAI6E,SAER,ED48BA2mB,EAAAA,GAAAA,GAvoCM+mB,GAAA,WAEcp5C,KAASqyB,EAAAA,GAAAA,GAFvB+mB,GAAA,YAGeR,KAAUvmB,EAAAA,GAAAA,GAHzB+mB,GAAA,YAIe9zC,KAAU+sB,EAAAA,GAAAA,GAJzB+mB,GAAA,WAKcpe,KAAS3I,EAAAA,GAAAA,GALvB+mB,GAAA,UAMax/D,KAAQy4C,EAAAA,GAAAA,GANrB+mB,GAAA,WAOcP,IC8LL,MAAMqJ,WAAmBzc,GAoCtC12C,WAAAA,CAAYszB,GACVkQ,SAAKF,EAAAA,GAAAA,GAAC,KAAD,yBAAAA,EAAAA,GAAAA,GAAC,KAAD,oBAAAA,EAAAA,GAAAA,GAAC,KAAD,uBAAAA,EAAAA,GAAAA,GAAC,KAAD,uBAAAA,EAAAA,GAAAA,GAAC,KAAD,uBAAAA,EAAAA,GAAAA,GAAC,KAAD,uBAAAA,EAAAA,GAAAA,GAAC,KAAD,qBAEL/mD,KAAKmP,aAAUgG,EACfnV,KAAK+pD,mBAAgB50C,EACrBnV,KAAKmqD,gBAAah1C,EAClBnV,KAAKoqD,cAAWj1C,EAChBnV,KAAKgrD,iBAAc71C,EACnBnV,KAAKirD,iBAAc91C,EACnBnV,KAAK+zE,YAAc,EACnB/zE,KAAKy2E,YAAc,EAEf1/B,GACF1nC,OAAO8T,OAAOnjB,KAAM+2C,EAExB,CAEAwa,OAAAA,CAAQslB,EAAgBC,EAAgB1lB,GACtC,MAAMhgC,EAAQpxB,KAAKyxD,SAAS,CAAC,IAAK,KAAML,IAClC,MAACtlC,EAAK,SAAEE,GAAYR,GAAkB4F,EAAO,CAACra,EAAG8/D,EAAQ7uD,EAAG8uD,KAC5D,WAAC3sB,EAAA,SAAYC,EAAA,YAAUY,EAAW,YAAEC,EAAW,cAAElB,GAAiB/pD,KAAKyxD,SAAS,CACpF,aACA,WACA,cACA,cACA,iBACCL,GACG2lB,GAAW/2E,KAAKmP,QAAQq8C,QAAUxrD,KAAKmP,QAAQgxB,aAAe,EAC9DgsB,EAAiBxmC,GAAeokC,EAAeK,EAAWD,GAC1D6sB,EAAiB1qD,GAAcR,EAAOq+B,EAAYC,IAAaD,IAAeC,EAC9E6sB,EAAgB9qB,GAAkBljC,IAAO+tD,EACzCE,EAAenqD,GAAWf,EAAUg/B,EAAc+rB,EAAS9rB,EAAc8rB,GAE/E,OAAQE,GAAiBC,CAC3B,CAEArlB,cAAAA,CAAeT,GACb,MAAM,EAACr6C,EAAC,EAAEiR,EAAC,WAAEmiC,EAAA,SAAYC,EAAA,YAAUY,EAAA,YAAaC,GAAejrD,KAAKyxD,SAAS,CAC3E,IACA,IACA,aACA,WACA,cACA,eACCL,IACG,OAACp5B,EAAA,QAAQwzB,GAAWxrD,KAAKmP,QACzBgoE,GAAahtB,EAAaC,GAAY,EACtCgtB,GAAcpsB,EAAcC,EAAcO,EAAUxzB,GAAU,EACpE,MAAO,CACLjhB,EAAGA,EAAIzG,KAAK6iB,IAAIgkD,GAAaC,EAC7BpvD,EAAGA,EAAI1X,KAAK4hB,IAAIilD,GAAaC,EAEjC,CAEAhd,eAAAA,CAAgBhJ,GACd,OAAOpxD,KAAK6xD,eAAeT,EAC7B,CAEA1b,IAAAA,CAAKna,GACH,MAAM,QAACpsB,EAAO,cAAE46C,GAAiB/pD,KAC3Bg4B,GAAU7oB,EAAQ6oB,QAAU,GAAK,EACjCwzB,GAAWr8C,EAAQq8C,SAAW,GAAK,EACnC2D,EAAWhgD,EAAQggD,SAIzB,GAHAnvD,KAAK+zE,YAAuC,UAAxB5kE,EAAQw9C,YAA2B,IAAO,EAC9D3sD,KAAKy2E,YAAc1sB,EAAgB9gC,GAAM3Y,KAAK2Z,MAAM8/B,EAAgB9gC,IAAO,EAErD,IAAlB8gC,GAAuB/pD,KAAKgrD,YAAc,GAAKhrD,KAAKirD,YAAc,EACpE,OAGF1vB,EAAIsC,OAEJ,MAAMs5C,GAAan3E,KAAKmqD,WAAanqD,KAAKoqD,UAAY,EACtD7uB,EAAIiE,UAAUlvB,KAAK6iB,IAAIgkD,GAAan/C,EAAQ1nB,KAAK4hB,IAAIilD,GAAan/C,GAClE,MAAMq/C,EAAM,EAAI/mE,KAAK4hB,IAAI5hB,KAAK8C,IAAI4V,GAAI+gC,GAAiB,IACjDutB,EAAet/C,EAASq/C,EAE9B97C,EAAIgG,UAAYpyB,EAAQsrB,gBACxBc,EAAI6G,YAAcjzB,EAAQurB,YAE1B87C,GAAQj7C,EAAKv7B,KAAMs3E,EAAc9rB,EAAS2D,GAC1CqW,GAAWjqC,EAAKv7B,KAAMs3E,EAAc9rB,EAAS2D,GAE7C5zB,EAAI0C,SACN,ECxZF,SAASs5C,GAASh8C,EAAKpsB,EAAS9Q,EAAQ8Q,GACtCosB,EAAIi8C,QAAU7xD,GAAetnB,EAAM01C,eAAgB5kC,EAAQ4kC,gBAC3DxY,EAAIgqC,YAAY5/C,GAAetnB,EAAM21C,WAAY7kC,EAAQ6kC,aACzDzY,EAAI8xB,eAAiB1nC,GAAetnB,EAAM41C,iBAAkB9kC,EAAQ8kC,kBACpE1Y,EAAI+xB,SAAW3nC,GAAetnB,EAAM61C,gBAAiB/kC,EAAQ+kC,iBAC7D3Y,EAAIjD,UAAY3S,GAAetnB,EAAM8hC,YAAahxB,EAAQgxB,aAC1D5E,EAAI6G,YAAczc,GAAetnB,EAAMq8B,YAAavrB,EAAQurB,YAC9D,CAEA,SAASqF,GAAOxE,EAAKoF,EAAU3Z,GAC7BuU,EAAIwE,OAAO/Y,EAAOjQ,EAAGiQ,EAAOgB,EAC9B,CAKA,SAASyvD,GAActoE,GACrB,OAAIA,EAAQuoE,QACHh3C,GAGLvxB,EAAQ08B,SAA8C,aAAnC18B,EAAQw8B,uBACtB7K,GAGFf,EACT,CAEA,SAAS43C,GAASvnD,EAAQqhB,EAAS0hB,EAAS,IAC1C,MAAMzjD,EAAQ0gB,EAAO1pB,QACdJ,MAAOsxE,EAAc,EAAGrrD,IAAKsrD,EAAYnoE,EAAQ,GAAKyjD,GACtD7sD,MAAOwxE,EAAcvrD,IAAKwrD,GAActmC,EACzCnrC,EAAQgK,KAAK6C,IAAIykE,EAAaE,GAC9BvrD,EAAMjc,KAAK8C,IAAIykE,EAAWE,GAC1BC,EAAUJ,EAAcE,GAAgBD,EAAYC,GAAgBF,EAAcG,GAAcF,EAAYE,EAElH,MAAO,CACLroE,QACApJ,QACAoM,KAAM++B,EAAQ/+B,KACdiU,KAAM4F,EAAMjmB,IAAU0xE,EAAUtoE,EAAQ6c,EAAMjmB,EAAQimB,EAAMjmB,EAEhE,CAiBA,SAAS2xE,GAAY18C,EAAKoG,EAAM8P,EAAS0hB,GACvC,MAAM,OAAC/iC,EAAA,QAAQjhB,GAAWwyB,GACpB,MAACjyB,EAAA,MAAOpJ,EAAA,KAAOoM,EAAA,KAAMiU,GAAQgxD,GAASvnD,EAAQqhB,EAAS0hB,GACvD+kB,EAAaT,GAActoE,GAEjC,IACI0G,EAAGub,EAAOwa,GADV,KAACwX,GAAO,EAAI,QAAE78B,GAAW4sC,GAAU,CAAC,EAGxC,IAAKt9C,EAAI,EAAGA,GAAK8Q,IAAQ9Q,EACvBub,EAAQhB,GAAQ9pB,GAASigB,EAAUI,EAAO9Q,EAAIA,IAAMnG,GAEhD0hB,EAAMiY,OAGC+Z,GACT7nB,EAAIuE,OAAO1O,EAAMra,EAAGqa,EAAMpJ,GAC1Bo7B,GAAO,GAEP80B,EAAW38C,EAAKqQ,EAAMxa,EAAO7K,EAASpX,EAAQuoE,SAGhD9rC,EAAOxa,GAQT,OALI1e,IACF0e,EAAQhB,GAAQ9pB,GAASigB,EAAUI,EAAO,IAAMjX,GAChDwoE,EAAW38C,EAAKqQ,EAAMxa,EAAO7K,EAASpX,EAAQuoE,YAGvChlE,CACX,CAiBA,SAASylE,GAAgB58C,EAAKoG,EAAM8P,EAAS0hB,GAC3C,MAAM/iC,EAASuR,EAAKvR,QACd,MAAC1gB,EAAK,MAAEpJ,EAAK,KAAEqgB,GAAQgxD,GAASvnD,EAAQqhB,EAAS0hB,IACjD,KAAC/P,GAAO,EAAI,QAAE78B,GAAW4sC,GAAU,CAAC,EAC1C,IAEIt9C,EAAGub,EAAOgnD,EAAOttB,EAAMF,EAAMytB,EAF7BC,EAAO,EACPC,EAAS,EAGb,MAAMC,EAAc95E,IAAW4H,GAASigB,EAAUI,EAAOjoB,EAAQA,IAAUgR,EACrE+oE,EAAQA,KACR3tB,IAASF,IAEXrvB,EAAIwE,OAAOu4C,EAAM1tB,GACjBrvB,EAAIwE,OAAOu4C,EAAMxtB,GAGjBvvB,EAAIwE,OAAOu4C,EAAMD,KASrB,IALIj1B,IACFhyB,EAAQhB,EAAOooD,EAAW,IAC1Bj9C,EAAIuE,OAAO1O,EAAMra,EAAGqa,EAAMpJ,IAGvBnS,EAAI,EAAGA,GAAK8Q,IAAQ9Q,EAAG,CAG1B,GAFAub,EAAQhB,EAAOooD,EAAW3iE,IAEtBub,EAAMiY,KAER,SAGF,MAAMtyB,EAAIqa,EAAMra,EACViR,EAAIoJ,EAAMpJ,EACV0wD,EAAa,EAAJ3hE,EAEX2hE,IAAWN,GAETpwD,EAAI8iC,EACNA,EAAO9iC,EACEA,EAAI4iC,IACbA,EAAO5iC,GAGTswD,GAAQC,EAASD,EAAOvhE,KAAOwhE,IAE/BE,IAGAl9C,EAAIwE,OAAOhpB,EAAGiR,GAEdowD,EAAQM,EACRH,EAAS,EACTztB,EAAOF,EAAO5iC,GAGhBqwD,EAAQrwD,CACV,CACAywD,GACF,CAOA,SAASE,GAAkBh3C,GACzB,MAAMN,EAAOM,EAAKxyB,QACZ6kC,EAAa3S,EAAK2S,YAAc3S,EAAK2S,WAAWttC,OAChDkyE,GAAej3C,EAAKgsB,aAAehsB,EAAKkR,QAAUxR,EAAKwK,SAA2C,aAAhCxK,EAAKsK,yBAA0CtK,EAAKq2C,UAAY1jC,EACxI,OAAO4kC,EAAcT,GAAkBF,EACzC,CAKA,SAASY,GAAwB1pE,GAC/B,OAAIA,EAAQuoE,QACH3nC,GAGL5gC,EAAQ08B,SAA8C,aAAnC18B,EAAQw8B,uBACtBqE,GAGFF,EACT,CAEA,SAASgpC,GAAoBv9C,EAAKoG,EAAMr7B,EAAOoJ,GAC7C,IAAIqpE,EAAOp3C,EAAKq3C,MACXD,IACHA,EAAOp3C,EAAKq3C,MAAQ,IAAIC,OACpBt3C,EAAKo3C,KAAKA,EAAMzyE,EAAOoJ,IACzBqpE,EAAKl5C,aAGT03C,GAASh8C,EAAKoG,EAAKxyB,SACnBosB,EAAI6E,OAAO24C,EACb,CAEA,SAASG,GAAiB39C,EAAKoG,EAAMr7B,EAAOoJ,GAC1C,MAAM,SAAC2iC,EAAA,QAAUljC,GAAWwyB,EACtBw3C,EAAgBR,GAAkBh3C,GAExC,IAAK,MAAM8P,KAAWY,EACpBklC,GAASh8C,EAAKpsB,EAASsiC,EAAQpzC,OAC/Bk9B,EAAImE,YACAy5C,EAAc59C,EAAKoG,EAAM8P,EAAS,CAACnrC,QAAOimB,IAAKjmB,EAAQoJ,EAAQ,KACjE6rB,EAAIsE,YAENtE,EAAI6E,QAER,ED8LA2mB,EAAAA,GAAAA,GAzHqB6vB,GAAmB,KAE1B,QAAM7vB,EAAAA,GAAAA,GAFC6vB,GAAmB,WAIpB,CAChBjqB,YAAa,SACbjyB,YAAa,OACbsZ,WAAY,GACZC,iBAAkB,EAClBC,qBAAiB/+B,EACjB+3C,aAAc,EACd/sB,YAAa,EACbnI,OAAQ,EACRwzB,QAAS,EACT1/B,WAAO3W,EACPg6C,UAAU,EACVwnB,UAAU,KACV5vB,EAAAA,GAAAA,GAjBiB6vB,GAAmB,gBAmBf,CACrBn8C,gBAAiB,qBACjBssB,EAAAA,GAAAA,GArBiB6vB,GAAmB,cAuBjB,CACnB5hD,aAAa,EACbD,WAAa31B,GAAkB,eAATA,IC5F1B,MAAMg6E,GAA8B,oBAAXH,OAEzB,SAASvjC,GAAKna,EAAKoG,EAAMr7B,EAAOoJ,GAC1B0pE,KAAcz3C,EAAKxyB,QAAQsiC,QAC7BqnC,GAAoBv9C,EAAKoG,EAAMr7B,EAAOoJ,GAEtCwpE,GAAiB39C,EAAKoG,EAAMr7B,EAAOoJ,EAEvC,CAEe,MAAM2pE,WAAoBlf,GAoCvC12C,WAAAA,CAAYszB,GACVkQ,QAEAjnD,KAAK4tD,UAAW,EAChB5tD,KAAKmP,aAAUgG,EACfnV,KAAKmzC,YAASh+B,EACdnV,KAAK6yC,WAAQ19B,EACbnV,KAAKgzC,eAAY79B,EACjBnV,KAAKg5E,WAAQ7jE,EACbnV,KAAKs5E,aAAUnkE,EACfnV,KAAKu5E,eAAYpkE,EACjBnV,KAAK2tD,YAAa,EAClB3tD,KAAKw5E,gBAAiB,EACtBx5E,KAAKszC,mBAAgBn+B,EAEjB4hC,GACF1nC,OAAO8T,OAAOnjB,KAAM+2C,EAExB,CAEAoX,mBAAAA,CAAoB9Z,EAAW3Y,GAC7B,MAAMvsB,EAAUnP,KAAKmP,QACrB,IAAKA,EAAQ08B,SAA8C,aAAnC18B,EAAQw8B,0BAA2Cx8B,EAAQuoE,UAAY13E,KAAKw5E,eAAgB,CAClH,MAAM9mE,EAAOvD,EAAQwhB,SAAW3wB,KAAK6yC,MAAQ7yC,KAAKgzC,UAClDvH,GAA2BzrC,KAAKs5E,QAASnqE,EAASklC,EAAW3hC,EAAMgpB,GACnE17B,KAAKw5E,gBAAiB,C,CAE1B,CAEA,UAAIppD,CAAOA,GACTpwB,KAAKs5E,QAAUlpD,SACRpwB,KAAKu5E,iBACLv5E,KAAKg5E,MACZh5E,KAAKw5E,gBAAiB,CACxB,CAEA,UAAIppD,GACF,OAAOpwB,KAAKs5E,OACd,CAEA,YAAIjnC,GACF,OAAOryC,KAAKu5E,YAAcv5E,KAAKu5E,UAAY5mC,GAAiB3yC,KAAMA,KAAKmP,QAAQsiC,SACjF,CAMAupB,KAAAA,GACE,MAAM3oB,EAAWryC,KAAKqyC,SAChBjiB,EAASpwB,KAAKowB,OACpB,OAAOiiB,EAAS3rC,QAAU0pB,EAAOiiB,EAAS,GAAG/rC,MAC/C,CAMAinB,IAAAA,GACE,MAAM8kB,EAAWryC,KAAKqyC,SAChBjiB,EAASpwB,KAAKowB,OACd1gB,EAAQ2iC,EAAS3rC,OACvB,OAAOgJ,GAAS0gB,EAAOiiB,EAAS3iC,EAAQ,GAAG6c,IAC7C,CASA7J,WAAAA,CAAY0O,EAAOlG,GACjB,MAAM/b,EAAUnP,KAAKmP,QACfrK,EAAQssB,EAAMlG,GACdkF,EAASpwB,KAAKowB,OACdiiB,EAAWD,GAAepyC,KAAM,CAACkrB,WAAU5kB,MAAOxB,EAAOynB,IAAKznB,IAEpE,IAAKutC,EAAS3rC,OACZ,OAGF,MAAM2jB,EAAS,GACTovD,EAAeZ,GAAwB1pE,GAC7C,IAAI0G,EAAG8Q,EACP,IAAK9Q,EAAI,EAAG8Q,EAAO0rB,EAAS3rC,OAAQmP,EAAI8Q,IAAQ9Q,EAAG,CACjD,MAAM,MAACvP,EAAA,IAAOimB,GAAO8lB,EAASx8B,GACxBa,EAAK0Z,EAAO9pB,GACZqQ,EAAKyZ,EAAO7D,GAClB,GAAI7V,IAAOC,EAAI,CACb0T,EAAOhC,KAAK3R,GACZ,Q,CAEF,MAAMmM,EAAIvS,KAAKuZ,KAAK/kB,EAAQ4R,EAAGwU,KAAcvU,EAAGuU,GAAYxU,EAAGwU,KACzDwuD,EAAeD,EAAa/iE,EAAIC,EAAIkM,EAAG1T,EAAQuoE,SACrDgC,EAAaxuD,GAAYkG,EAAMlG,GAC/Bb,EAAOhC,KAAKqxD,EACd,CACA,OAAyB,IAAlBrvD,EAAO3jB,OAAe2jB,EAAO,GAAKA,CAC3C,CAgBA4tD,WAAAA,CAAY18C,EAAKkW,EAAS0hB,GACxB,MAAMgmB,EAAgBR,GAAkB34E,MACxC,OAAOm5E,EAAc59C,EAAKv7B,KAAMyxC,EAAS0hB,EAC3C,CASA4lB,IAAAA,CAAKx9C,EAAKj1B,EAAOoJ,GACf,MAAM2iC,EAAWryC,KAAKqyC,SAChB8mC,EAAgBR,GAAkB34E,MACxC,IAAI0S,EAAO1S,KAAK6yC,MAEhBvsC,EAAQA,GAAS,EACjBoJ,EAAQA,GAAU1P,KAAKowB,OAAO1pB,OAASJ,EAEvC,IAAK,MAAMmrC,KAAWY,EACpB3/B,GAAQymE,EAAc59C,EAAKv7B,KAAMyxC,EAAS,CAACnrC,QAAOimB,IAAKjmB,EAAQoJ,EAAQ,IAEzE,QAASgD,CACX,CASAgjC,IAAAA,CAAKna,EAAK8Y,EAAW/tC,EAAOoJ,GAC1B,MAAMP,EAAUnP,KAAKmP,SAAW,CAAC,EAC3BihB,EAASpwB,KAAKowB,QAAU,GAE1BA,EAAO1pB,QAAUyI,EAAQgxB,cAC3B5E,EAAIsC,OAEJ6X,GAAKna,EAAKv7B,KAAMsG,EAAOoJ,GAEvB6rB,EAAI0C,WAGFj+B,KAAK4tD,WAEP5tD,KAAKw5E,gBAAiB,EACtBx5E,KAAKg5E,WAAQ7jE,EAEjB,ECjbF,SAASwkE,GAAQl5E,EAAkBysC,EAAarc,EAAiBugC,GAC/D,MAAMjiD,EAAU1O,EAAG0O,SACZ,CAAC0hB,GAAO/rB,GAASrE,EAAGgxD,SAAS,CAAC5gC,GAAOugC,GAE5C,OAAQ9gD,KAAKuZ,IAAIqjB,EAAMpoC,GAASqK,EAAQmwB,OAASnwB,EAAQyqE,SAC3D,ED6aA7yB,EAAAA,GAAAA,GA1MqBsyB,GAAoB,KAE3B,SAAOtyB,EAAAA,GAAAA,GAFAsyB,GAAoB,WAOrB,CAChBtlC,eAAgB,OAChBC,WAAY,GACZC,iBAAkB,EAClBC,gBAAiB,QACjB/T,YAAa,EACbkL,iBAAiB,EACjBM,uBAAwB,UACxBzL,MAAM,EACNvP,UAAU,EACV+mD,SAAS,EACT7rC,QAAS,KACTkb,EAAAA,GAAAA,GAnBiBsyB,GAAoB,gBAwBhB,CACrB5+C,gBAAiB,kBACjBC,YAAa,iBACbqsB,EAAAA,GAAAA,GA3BiBsyB,GAAoB,cA8BlB,CACnBrkD,aAAa,EACbD,WAAa31B,GAAkB,eAATA,GAAkC,SAATA,IC/PpC,MAAMy6E,WAAqB1f,GA6BxC12C,WAAAA,CAAYszB,GACVkQ,SAAKF,EAAAA,GAAAA,GAAC,KAAD,kBAAAA,EAAAA,GAAAA,GAAC,KAAD,gBAAAA,EAAAA,GAAAA,GAAC,KAAD,eAEL/mD,KAAKmP,aAAUgG,EACfnV,KAAKipC,YAAS9zB,EACdnV,KAAKqpC,UAAOl0B,EACZnV,KAAK0yC,UAAOv9B,EAER4hC,GACF1nC,OAAO8T,OAAOnjB,KAAM+2C,EAExB,CAEAwa,OAAAA,CAAQuoB,EAAgBC,EAAgB3oB,GACtC,MAAMjiD,EAAUnP,KAAKmP,SACf,EAAC4H,EAAA,EAAGiR,GAAKhoB,KAAKyxD,SAAS,CAAC,IAAK,KAAML,GACzC,OAAS9gD,KAAKmS,IAAIq3D,EAAS/iE,EAAG,GAAKzG,KAAKmS,IAAIs3D,EAAS/xD,EAAG,GAAM1X,KAAKmS,IAAItT,EAAQyqE,UAAYzqE,EAAQmwB,OAAQ,EAC7G,CAEA06C,QAAAA,CAASF,EAAgB1oB,GACvB,OAAOuoB,GAAQ35E,KAAM85E,EAAQ,IAAK1oB,EACpC,CAEA6oB,QAAAA,CAASF,EAAgB3oB,GACvB,OAAOuoB,GAAQ35E,KAAM+5E,EAAQ,IAAK3oB,EACpC,CAEAS,cAAAA,CAAeT,GACb,MAAM,EAACr6C,EAAA,EAAGiR,GAAKhoB,KAAKyxD,SAAS,CAAC,IAAK,KAAML,GACzC,MAAO,CAACr6C,IAAGiR,IACb,CAEAtZ,IAAAA,CAAKS,GACHA,EAAUA,GAAWnP,KAAKmP,SAAW,CAAC,EACtC,IAAImwB,EAASnwB,EAAQmwB,QAAU,EAC/BA,EAAShvB,KAAK6C,IAAImsB,EAAQA,GAAUnwB,EAAQ+qE,aAAe,GAC3D,MAAM/5C,EAAcb,GAAUnwB,EAAQgxB,aAAe,EACrD,OAAgC,GAAxBb,EAASa,EACnB,CAEAuV,IAAAA,CAAKna,EAA+B+E,GAClC,MAAMnxB,EAAUnP,KAAKmP,QAEjBnP,KAAKqpC,MAAQl6B,EAAQmwB,OAAS,KAAQe,GAAergC,KAAMsgC,EAAMtgC,KAAK0O,KAAKS,GAAW,KAI1FosB,EAAI6G,YAAcjzB,EAAQurB,YAC1Ba,EAAIjD,UAAYnpB,EAAQgxB,YACxB5E,EAAIgG,UAAYpyB,EAAQsrB,gBACxBoE,GAAUtD,EAAKpsB,EAASnP,KAAK+W,EAAG/W,KAAKgoB,GACvC,CAEA0oC,QAAAA,GACE,MAAMvhD,EAAUnP,KAAKmP,SAAW,CAAC,EAEjC,OAAOA,EAAQmwB,OAASnwB,EAAQyqE,SAClC,EC3FF,SAASO,GAAaC,EAAKhpB,GACzB,MAAM,EAACr6C,EAAC,EAAEiR,EAAC,KAAEsG,EAAA,MAAMruB,EAAA,OAAO2+B,GAAmCw7C,EAAI3oB,SAAS,CAAC,IAAK,IAAK,OAAQ,QAAS,UAAWL,GAEjH,IAAIthC,EAAMC,EAAO6F,EAAKC,EAAQwkD,EAgB9B,OAdID,EAAIj0B,YACNk0B,EAAOz7C,EAAS,EAChB9O,EAAOxf,KAAK8C,IAAI2D,EAAGuX,GACnByB,EAAQzf,KAAK6C,IAAI4D,EAAGuX,GACpBsH,EAAM5N,EAAIqyD,EACVxkD,EAAS7N,EAAIqyD,IAEbA,EAAOp6E,EAAQ,EACf6vB,EAAO/Y,EAAIsjE,EACXtqD,EAAQhZ,EAAIsjE,EACZzkD,EAAMtlB,KAAK8C,IAAI4U,EAAGsG,GAClBuH,EAASvlB,KAAK6C,IAAI6U,EAAGsG,IAGhB,CAACwB,OAAM8F,MAAK7F,QAAO8F,SAC5B,CAEA,SAASykD,GAAYjxC,EAAMvkC,EAAOsO,EAAKD,GACrC,OAAOk2B,EAAO,EAAIxc,GAAY/nB,EAAOsO,EAAKD,EAC5C,CAEA,SAASonE,GAAiBH,EAAKI,EAAMC,GACnC,MAAM31E,EAAQs1E,EAAIjrE,QAAQgxB,YACpBkJ,EAAO+wC,EAAI9zB,cACXv+B,EAAIgc,GAAOj/B,GAEjB,MAAO,CACL+d,EAAGy3D,GAAYjxC,EAAKzT,IAAK7N,EAAE6N,IAAK,EAAG6kD,GACnC9lE,EAAG2lE,GAAYjxC,EAAKtZ,MAAOhI,EAAEgI,MAAO,EAAGyqD,GACvCvmE,EAAGqmE,GAAYjxC,EAAKxT,OAAQ9N,EAAE8N,OAAQ,EAAG4kD,GACzCxnE,EAAGqnE,GAAYjxC,EAAKvZ,KAAM/H,EAAE+H,KAAM,EAAG0qD,GAEzC,CAEA,SAASE,GAAkBN,EAAKI,EAAMC,GACpC,MAAM,mBAACl0B,GAAsB6zB,EAAI3oB,SAAS,CAAC,uBACrC3sD,EAAQs1E,EAAIjrE,QAAQ+9C,aACpBnlC,EAAIic,GAAcl/B,GAClB61E,EAAOrqE,KAAK8C,IAAIonE,EAAMC,GACtBpxC,EAAO+wC,EAAI9zB,cAIXs0B,EAAer0B,GAAsBjhC,GAASxgB,GAEpD,MAAO,CACLo+B,QAASo3C,IAAaM,GAAgBvxC,EAAKzT,KAAOyT,EAAKvZ,KAAM/H,EAAEmb,QAAS,EAAGy3C,GAC3Et3C,SAAUi3C,IAAaM,GAAgBvxC,EAAKzT,KAAOyT,EAAKtZ,MAAOhI,EAAEsb,SAAU,EAAGs3C,GAC9Ex3C,WAAYm3C,IAAaM,GAAgBvxC,EAAKxT,QAAUwT,EAAKvZ,KAAM/H,EAAEob,WAAY,EAAGw3C,GACpFv3C,YAAak3C,IAAaM,GAAgBvxC,EAAKxT,QAAUwT,EAAKtZ,MAAOhI,EAAEqb,YAAa,EAAGu3C,GAE3F,CAEA,SAASE,GAAcT,GACrB,MAAMliD,EAASiiD,GAAaC,GACtBn6E,EAAQi4B,EAAOnI,MAAQmI,EAAOpI,KAC9B8O,EAAS1G,EAAOrC,OAASqC,EAAOtC,IAChCgD,EAAS2hD,GAAiBH,EAAKn6E,EAAQ,EAAG2+B,EAAS,GACnDU,EAASo7C,GAAkBN,EAAKn6E,EAAQ,EAAG2+B,EAAS,GAE1D,MAAO,CACLk8C,MAAO,CACL/jE,EAAGmhB,EAAOpI,KACV9H,EAAGkQ,EAAOtC,IACVjgB,EAAG1V,EACHiT,EAAG0rB,EACHU,UAEFo3C,MAAO,CACL3/D,EAAGmhB,EAAOpI,KAAO8I,EAAO3lB,EACxB+U,EAAGkQ,EAAOtC,IAAMgD,EAAO/V,EACvBlN,EAAG1V,EAAQ24B,EAAO3lB,EAAI2lB,EAAOjkB,EAC7BzB,EAAG0rB,EAAShG,EAAO/V,EAAI+V,EAAO3kB,EAC9BqrB,OAAQ,CACN4D,QAAS5yB,KAAK6C,IAAI,EAAGmsB,EAAO4D,QAAU5yB,KAAK6C,IAAIylB,EAAO/V,EAAG+V,EAAO3lB,IAChEowB,SAAU/yB,KAAK6C,IAAI,EAAGmsB,EAAO+D,SAAW/yB,KAAK6C,IAAIylB,EAAO/V,EAAG+V,EAAOjkB,IAClEwuB,WAAY7yB,KAAK6C,IAAI,EAAGmsB,EAAO6D,WAAa7yB,KAAK6C,IAAIylB,EAAO3kB,EAAG2kB,EAAO3lB,IACtEmwB,YAAa9yB,KAAK6C,IAAI,EAAGmsB,EAAO8D,YAAc9yB,KAAK6C,IAAIylB,EAAO3kB,EAAG2kB,EAAOjkB,MAIhF,CAEA,SAAS48C,GAAQ6oB,EAAKrjE,EAAGiR,EAAGopC,GAC1B,MAAM2pB,EAAc,OAANhkE,EACRikE,EAAc,OAANhzD,EACRizD,EAAWF,GAASC,EACpB9iD,EAASkiD,IAAQa,GAAYd,GAAaC,EAAKhpB,GAErD,OAAOl5B,IACH6iD,GAAShuD,GAAWhW,EAAGmhB,EAAOpI,KAAMoI,EAAOnI,UAC3CirD,GAASjuD,GAAW/E,EAAGkQ,EAAOtC,IAAKsC,EAAOrC,QAChD,CAEA,SAASqlD,GAAU57C,GACjB,OAAOA,EAAO4D,SAAW5D,EAAO+D,UAAY/D,EAAO6D,YAAc7D,EAAO8D,WAC1E,CAOA,SAAS+3C,GAAkB5/C,EAAK0E,GAC9B1E,EAAI0E,KAAKA,EAAKlpB,EAAGkpB,EAAKjY,EAAGiY,EAAKtqB,EAAGsqB,EAAK/sB,EACxC,CAEA,SAASkoE,GAAYn7C,EAAMp6B,EAAQw1E,EAAU,IAC3C,MAAMtkE,EAAIkpB,EAAKlpB,IAAMskE,EAAQtkE,GAAKlR,EAAS,EACrCmiB,EAAIiY,EAAKjY,IAAMqzD,EAAQrzD,GAAKniB,EAAS,EACrC8P,GAAKsqB,EAAKlpB,EAAIkpB,EAAKtqB,IAAM0lE,EAAQtkE,EAAIskE,EAAQ1lE,EAAI9P,EAAS,GAAKkR,EAC/D7D,GAAK+sB,EAAKjY,EAAIiY,EAAK/sB,IAAMmoE,EAAQrzD,EAAIqzD,EAAQnoE,EAAIrN,EAAS,GAAKmiB,EACrE,MAAO,CACLjR,EAAGkpB,EAAKlpB,EAAIA,EACZiR,EAAGiY,EAAKjY,EAAIA,EACZrS,EAAGsqB,EAAKtqB,EAAIA,EACZzC,EAAG+sB,EAAK/sB,EAAIA,EACZosB,OAAQW,EAAKX,OAEjB,EDhCAynB,EAAAA,GAAAA,GAvFqB8yB,GAAqB,KAE5B,UAMZ9yB,EAAAA,GAAAA,GARmB8yB,GAAqB,WAWtB,CAChB15C,YAAa,EACby5C,UAAW,EACXhtB,iBAAkB,EAClBstB,YAAa,EACb96C,WAAY,SACZE,OAAQ,EACRD,SAAU,KAGZ0nB,EAAAA,GAAAA,GArBmB8yB,GAAqB,gBAwBjB,CACrBp/C,gBAAiB,kBACjBC,YAAa,gBC+FF,MAAM4gD,WAAmBnhB,GAuBtC12C,WAAAA,CAAYszB,GACVkQ,QAEAjnD,KAAKmP,aAAUgG,EACfnV,KAAKmmD,gBAAahxC,EAClBnV,KAAKsuB,UAAOnZ,EACZnV,KAAKC,WAAQkV,EACbnV,KAAK4+B,YAASzpB,EACdnV,KAAK8mD,mBAAgB3xC,EAEjB4hC,GACF1nC,OAAO8T,OAAOnjB,KAAM+2C,EAExB,CAEArB,IAAAA,CAAKna,GACH,MAAM,cAACurB,EAAe33C,SAAS,YAACurB,EAAA,gBAAaD,IAAoBz6B,MAC3D,MAAC02E,EAAK,MAAEoE,GAASD,GAAc76E,MAC/Bu7E,EAAcL,GAAUJ,EAAMx7C,QAAU2D,GAAqBk4C,GAEnE5/C,EAAIsC,OAEAi9C,EAAMnlE,IAAM+gE,EAAM/gE,GAAKmlE,EAAM5nE,IAAMwjE,EAAMxjE,IAC3CqoB,EAAImE,YACJ67C,EAAYhgD,EAAK6/C,GAAYN,EAAOh0B,EAAe4vB,IACnDn7C,EAAIpD,OACJojD,EAAYhgD,EAAK6/C,GAAY1E,GAAQ5vB,EAAeg0B,IACpDv/C,EAAIgG,UAAY7G,EAChBa,EAAI2E,KAAK,YAGX3E,EAAImE,YACJ67C,EAAYhgD,EAAK6/C,GAAY1E,EAAO5vB,IACpCvrB,EAAIgG,UAAY9G,EAChBc,EAAI2E,OAEJ3E,EAAI0C,SACN,CAEAszB,OAAAA,CAAQuoB,EAAQC,EAAQ3oB,GACtB,OAAOG,GAAQvxD,KAAM85E,EAAQC,EAAQ3oB,EACvC,CAEA4oB,QAAAA,CAASF,EAAQ1oB,GACf,OAAOG,GAAQvxD,KAAM85E,EAAQ,KAAM1oB,EACrC,CAEA6oB,QAAAA,CAASF,EAAQ3oB,GACf,OAAOG,GAAQvxD,KAAM,KAAM+5E,EAAQ3oB,EACrC,CAEAS,cAAAA,CAAeT,GACb,MAAM,EAACr6C,EAAA,EAAGiR,EAAA,KAAGsG,EAAI,WAAE63B,GAAuCnmD,KAAKyxD,SAAS,CAAC,IAAK,IAAK,OAAQ,cAAeL,GAC1G,MAAO,CACLr6C,EAAGovC,GAAcpvC,EAAIuX,GAAQ,EAAIvX,EACjCiR,EAAGm+B,EAAan+B,GAAKA,EAAIsG,GAAQ,EAErC,CAEAoiC,QAAAA,CAAS7/B,GACP,MAAgB,MAATA,EAAe7wB,KAAKC,MAAQ,EAAID,KAAK4+B,OAAS,CACvD,GACFmoB,EAAAA,GAAAA,GArFqBu0B,GAAmB,KAE1B,QAAMv0B,EAAAA,GAAAA,GAFCu0B,GAAmB,WAOpB,CAChBh1B,cAAe,QACfnmB,YAAa,EACb+sB,aAAc,EACdpG,cAAe,OACf1nB,gBAAYjqB,KACZ4xC,EAAAA,GAAAA,GAbiBu0B,GAAmB,gBAkBf,CACrB7gD,gBAAiB,kBACjBC,YAAa,gBC9JV,SAAS6+C,GAAU53C,EAAM3a,EAAQkE,GACtC,MAAMmnB,EAAW1Q,EAAK0Q,SAChBjiB,EAASuR,EAAKvR,OACdorD,EAAUx0D,EAAOoJ,OACjBlI,EAAQ,GAEd,IAAK,MAAMupB,KAAWY,EAAU,CAC9B,IAAI,MAAC/rC,EAAA,IAAOimB,GAAOklB,EACnBllB,EAAMkvD,GAAgBn1E,EAAOimB,EAAK6D,GAElC,MAAM8H,EAASwjD,GAAWxwD,EAAUkF,EAAO9pB,GAAQ8pB,EAAO7D,GAAMklB,EAAQ/+B,MAExE,IAAKsU,EAAOqrB,SAAU,CAGpBnqB,EAAMG,KAAK,CACTtB,OAAQ0qB,EACRzqB,OAAQkR,EACR5xB,MAAO8pB,EAAO9pB,GACdimB,IAAK6D,EAAO7D,KAEd,Q,CAIF,MAAMovD,EAAiBvpC,GAAeprB,EAAQkR,GAE9C,IAAK,MAAM0jD,KAAOD,EAAgB,CAChC,MAAME,EAAYH,GAAWxwD,EAAUswD,EAAQI,EAAIt1E,OAAQk1E,EAAQI,EAAIrvD,KAAMqvD,EAAIlpE,MAC3EopE,EAAclqC,GAAcH,EAASrhB,EAAQyrD,GAEnD,IAAK,MAAME,KAAcD,EACvB5zD,EAAMG,KAAK,CACTtB,OAAQg1D,EACR/0D,OAAQ40D,EACRt1E,MAAO,CACL,CAAC4kB,GAAW8wD,GAAS9jD,EAAQ2jD,EAAW,QAASvrE,KAAK6C,MAExDoZ,IAAK,CACH,CAACrB,GAAW8wD,GAAS9jD,EAAQ2jD,EAAW,MAAOvrE,KAAK8C,OAI5D,CACF,CACA,OAAO8U,CACT,CAEO,SAASwzD,GAAWxwD,EAAU8vC,EAAOztC,EAAM7a,GAChD,GAAIA,EACF,OAEF,IAAIpM,EAAQ00D,EAAM9vC,GACdqB,EAAMgB,EAAKrC,GAMf,MAJiB,UAAbA,IACF5kB,EAAQ+lB,GAAgB/lB,GACxBimB,EAAMF,GAAgBE,IAEjB,CAACrB,WAAU5kB,QAAOimB,MAC3B,CAEO,SAAS0vD,GAAoBC,EAAUv6C,GAC5C,MAAM,EAAC5qB,EAAI,KAAI,EAAEiR,EAAI,MAAQk0D,GAAY,CAAC,EACpCC,EAAax6C,EAAKvR,OAClBA,EAAS,GAaf,OAZAuR,EAAK0Q,SAASjkB,QAAQ,EAAE9nB,QAAOimB,UAC7BA,EAAMkvD,GAAgBn1E,EAAOimB,EAAK4vD,GAClC,MAAMnhB,EAAQmhB,EAAW71E,GACnBinB,EAAO4uD,EAAW5vD,GACd,OAANvE,GACFoI,EAAO/H,KAAK,CAACtR,EAAGikD,EAAMjkD,EAAGiR,MACzBoI,EAAO/H,KAAK,CAACtR,EAAGwW,EAAKxW,EAAGiR,OACT,OAANjR,IACTqZ,EAAO/H,KAAK,CAACtR,IAAGiR,EAAGgzC,EAAMhzC,IACzBoI,EAAO/H,KAAK,CAACtR,IAAGiR,EAAGuF,EAAKvF,OAGrBoI,CACT,CAEO,SAASqrD,GAAgBn1E,EAAOimB,EAAK6D,GAC1C,KAAM7D,EAAMjmB,EAAOimB,IAAO,CACxB,MAAM6E,EAAQhB,EAAO7D,GACrB,IAAK1B,MAAMuG,EAAMra,KAAO8T,MAAMuG,EAAMpJ,GAClC,KAEJ,CACA,OAAOuE,CACT,CAEA,SAASyvD,GAAShoE,EAAGC,EAAG6vB,EAAM5d,GAC5B,OAAIlS,GAAKC,EACAiS,EAAGlS,EAAE8vB,GAAO7vB,EAAE6vB,IAEhB9vB,EAAIA,EAAE8vB,GAAQ7vB,EAAIA,EAAE6vB,GAAQ,CACrC,CCnFO,SAASs4C,GAAoBF,EAAUv6C,GAC5C,IAAIvR,EAAS,GACTyiB,GAAQ,EAUZ,OARI58B,GAAQimE,IACVrpC,GAAQ,EAERziB,EAAS8rD,GAET9rD,EAAS6rD,GAAoBC,EAAUv6C,GAGlCvR,EAAO1pB,OAAS,IAAI2yE,GAAY,CACrCjpD,SACAjhB,QAAS,CAAC08B,QAAS,GACnBgH,QACAG,UAAWH,IACR,IACP,CAEO,SAASwpC,GAAiBt1D,GAC/B,OAAOA,IAA0B,IAAhBA,EAAOmZ,IAC1B,CC5BO,SAASo8C,GAAe70D,EAAS/oB,EAAO69E,GAC7C,MAAMx1D,EAASU,EAAQ/oB,GACvB,IAAIwhC,EAAOnZ,EAAOmZ,KAClB,MAAMs8C,EAAU,CAAC99E,GACjB,IAAIsoB,EAEJ,IAAKu1D,EACH,OAAOr8C,EAGT,OAAgB,IAATA,IAA6C,IAA3Bs8C,EAAQp1D,QAAQ8Y,GAAc,CACrD,IAAK3a,GAAS2a,GACZ,OAAOA,EAIT,GADAlZ,EAASS,EAAQyY,IACZlZ,EACH,OAAO,EAGT,GAAIA,EAAOuO,QACT,OAAO2K,EAGTs8C,EAAQn0D,KAAK6X,GACbA,EAAOlZ,EAAOkZ,IAChB,CAEA,OAAO,CACT,CAOO,SAASu8C,GAAY96C,EAAMjjC,EAAOgR,GAEvC,MAAMwwB,EAAOw8C,GAAgB/6C,GAE7B,GAAIrc,GAAS4a,GACX,OAAOrV,MAAMqV,EAAKp7B,QAAiBo7B,EAGrC,IAAIlZ,EAASjB,WAAWma,GAExB,OAAI3a,GAASyB,IAAW1W,KAAK2Z,MAAMjD,KAAYA,EACtC21D,GAAkBz8C,EAAK,GAAIxhC,EAAOsoB,EAAQtX,GAG5C,CAAC,SAAU,QAAS,MAAO,QAAS,SAAS0X,QAAQ8Y,IAAS,GAAKA,CAC5E,CAEA,SAASy8C,GAAkBC,EAASl+E,EAAOsoB,EAAQtX,GAKjD,MAJgB,MAAZktE,GAA+B,MAAZA,IACrB51D,EAAStoB,EAAQsoB,KAGfA,IAAWtoB,GAASsoB,EAAS,GAAKA,GAAUtX,IAIzCsX,CACT,CAOO,SAAS61D,GAAgB38C,EAAM9D,GACpC,IAAIgC,EAAQ,KAWZ,MAVa,UAAT8B,EACF9B,EAAQhC,EAAMvG,OACI,QAATqK,EACT9B,EAAQhC,EAAMxG,IACLtQ,GAAS4a,GAElB9B,EAAQhC,EAAMnL,iBAAiBiP,EAAKp7B,OAC3Bs3B,EAAM+qB,eACf/oB,EAAQhC,EAAM+qB,gBAET/oB,CACT,CAQO,SAAS0+C,GAAgB58C,EAAM9D,EAAOkpB,GAC3C,IAAIxgD,EAYJ,OATEA,EADW,UAATo7B,EACMolB,EACU,QAATplB,EACD9D,EAAMjtB,QAAQoX,QAAU6V,EAAMhpB,IAAMgpB,EAAMjpB,IACzCmS,GAAS4a,GAEVA,EAAKp7B,MAELs3B,EAAM4mC,eAETl+D,CACT,CAKA,SAAS43E,GAAgB/6C,GACvB,MAAMxyB,EAAUwyB,EAAKxyB,QACf4tE,EAAa5tE,EAAQ+wB,KAC3B,IAAIA,EAAOva,GAAeo3D,GAAcA,EAAW/1D,OAAQ+1D,GAM3D,YAJa5nE,IAAT+qB,IACFA,IAAS/wB,EAAQsrB,kBAGN,IAATyF,GAA2B,OAATA,KAIT,IAATA,EACK,SAEFA,EACT,CC1HO,SAAS88C,GAAgBj2D,GAC9B,MAAM,MAACqV,EAAK,MAAE19B,EAAA,KAAOijC,GAAQ5a,EACvBqJ,EAAS,GACTiiB,EAAW1Q,EAAK0Q,SAChB4qC,EAAet7C,EAAKvR,OACpB8sD,EAAaC,GAAc/gD,EAAO19B,GACxCw+E,EAAW70D,KAAK+zD,GAAoB,CAACrlE,EAAG,KAAMiR,EAAGoU,EAAMvG,QAAS8L,IAEhE,IAAK,IAAI9rB,EAAI,EAAGA,EAAIw8B,EAAS3rC,OAAQmP,IAAK,CACxC,MAAM47B,EAAUY,EAASx8B,GACzB,IAAK,IAAI+L,EAAI6vB,EAAQnrC,MAAOsb,GAAK6vB,EAAQllB,IAAK3K,IAC5Cw7D,GAAehtD,EAAQ6sD,EAAar7D,GAAIs7D,EAE5C,CACA,OAAO,IAAI7D,GAAY,CAACjpD,SAAQjhB,QAAS,CAAC,GAC5C,CAOA,SAASguE,GAAc/gD,EAAO19B,GAC5B,MAAM2+E,EAAQ,GACR5e,EAAQriC,EAAM6e,wBAAwB,QAE5C,IAAK,IAAIplC,EAAI,EAAGA,EAAI4oD,EAAM/3D,OAAQmP,IAAK,CACrC,MAAMsa,EAAOsuC,EAAM5oD,GACnB,GAAIsa,EAAKzxB,QAAUA,EACjB,MAEGyxB,EAAKusB,QACR2gC,EAAMC,QAAQntD,EAAKS,QAEvB,CACA,OAAOysD,CACT,CAOA,SAASD,GAAehtD,EAAQmtD,EAAaL,GAC3C,MAAMM,EAAY,GAClB,IAAK,IAAI57D,EAAI,EAAGA,EAAIs7D,EAAWx2E,OAAQkb,IAAK,CAC1C,MAAM+f,EAAOu7C,EAAWt7D,IAClB,MAACo5C,EAAK,KAAEztC,EAAI,MAAE6D,GAASqsD,GAAU97C,EAAM47C,EAAa,KAE1D,MAAKnsD,GAAU4pC,GAASztC,GAGxB,GAAIytC,EAEFwiB,EAAUF,QAAQlsD,QAGlB,GADAhB,EAAO/H,KAAK+I,IACP7D,EAEH,KAGN,CACA6C,EAAO/H,QAAQm1D,EACjB,CAQA,SAASC,GAAU97C,EAAM47C,EAAaryD,GACpC,MAAMkG,EAAQuQ,EAAKjf,YAAY66D,EAAaryD,GAC5C,IAAKkG,EACH,MAAO,CAAC,EAGV,MAAMssD,EAAatsD,EAAMlG,GACnBmnB,EAAW1Q,EAAK0Q,SAChB8pC,EAAax6C,EAAKvR,OACxB,IAAI4qC,GAAQ,EACRztC,GAAO,EACX,IAAK,IAAI1X,EAAI,EAAGA,EAAIw8B,EAAS3rC,OAAQmP,IAAK,CACxC,MAAM47B,EAAUY,EAASx8B,GACnB8nE,EAAaxB,EAAW1qC,EAAQnrC,OAAO4kB,GACvC0yD,EAAYzB,EAAW1qC,EAAQllB,KAAKrB,GAC1C,GAAI6B,GAAW2wD,EAAYC,EAAYC,GAAY,CACjD5iB,EAAQ0iB,IAAeC,EACvBpwD,EAAOmwD,IAAeE,EACtB,K,CAEJ,CACA,MAAO,CAAC5iB,QAAOztC,OAAM6D,QACvB,CCzGO,MAAMysD,GACXp6D,WAAAA,CAAY4d,GACVrhC,KAAK+W,EAAIsqB,EAAKtqB,EACd/W,KAAKgoB,EAAIqZ,EAAKrZ,EACdhoB,KAAKs/B,OAAS+B,EAAK/B,MACrB,CAEA24C,WAAAA,CAAY18C,EAAKrD,EAAQmJ,GACvB,MAAM,EAACtqB,EAAA,EAAGiR,EAAA,OAAGsX,GAAUt/B,KAGvB,OAFAk4B,EAASA,GAAU,CAAC5xB,MAAO,EAAGimB,IAAKtD,IACnCsS,EAAIqE,IAAI7oB,EAAGiR,EAAGsX,EAAQpH,EAAO3L,IAAK2L,EAAO5xB,OAAO,IACxC+6B,EAAKnJ,MACf,CAEAxV,WAAAA,CAAY0O,GACV,MAAM,EAACra,EAAA,EAAGiR,EAAA,OAAGsX,GAAUt/B,KACjB8rB,EAAQsF,EAAMtF,MACpB,MAAO,CACL/U,EAAGA,EAAIzG,KAAK6iB,IAAIrH,GAASwT,EACzBtX,EAAGA,EAAI1X,KAAK4hB,IAAIpG,GAASwT,EACzBxT,QAEJ,ECbK,SAAS6Z,GAAW5e,GACzB,MAAM,MAACiQ,EAAK,KAAEkJ,EAAA,KAAMyB,GAAQ5a,EAE5B,GAAIxB,GAAS2a,GACX,OAAO49C,GAAe9mD,EAAOkJ,GAG/B,GAAa,UAATA,EACF,OAAO88C,GAAgBj2D,GAGzB,GAAa,UAATmZ,EACF,OAAO,EAGT,MAAMg8C,EAAW6B,GAAgBh3D,GAEjC,OAAIm1D,aAAoB2B,GACf3B,EAGFE,GAAoBF,EAAUv6C,EACvC,CAMA,SAASm8C,GAAe9mD,EAAOt4B,GAC7B,MAAMyxB,EAAO6G,EAAM8nB,eAAepgD,GAC5B62B,EAAUpF,GAAQ6G,EAAMs0B,iBAAiB5sD,GAC/C,OAAO62B,EAAUpF,EAAKS,QAAU,IAClC,CAEA,SAASmtD,GAAgBh3D,GACvB,MAAMqV,EAAQrV,EAAOqV,OAAS,CAAC,EAE/B,OAAIA,EAAMozB,yBACDwuB,GAAwBj3D,GAE1Bk3D,GAAsBl3D,EAC/B,CAGA,SAASk3D,GAAsBl3D,GAC7B,MAAM,MAACqV,EAAQ,QAAI8D,GAAQnZ,EACrBqX,EAAQy+C,GAAgB38C,EAAM9D,GAEpC,GAAI7W,GAAS6Y,GAAQ,CACnB,MAAM+nB,EAAa/pB,EAAM6pB,eAEzB,MAAO,CACLlvC,EAAGovC,EAAa/nB,EAAQ,KACxBpW,EAAGm+B,EAAa,KAAO/nB,E,CAI3B,OAAO,IACT,CAEA,SAAS4/C,GAAwBj3D,GAC/B,MAAM,MAACqV,EAAA,KAAO8D,GAAQnZ,EAChB5X,EAAUitB,EAAMjtB,QAChBzI,EAAS01B,EAAMgkB,YAAY15C,OAC3BJ,EAAQ6I,EAAQoX,QAAU6V,EAAMjpB,IAAMipB,EAAMhpB,IAC5CtO,EAAQg4E,GAAgB58C,EAAM9D,EAAO91B,GACrC0gB,EAAS,GAEf,GAAI7X,EAAQkpB,KAAK82B,SAAU,CACzB,MAAMzH,EAAStrB,EAAMozB,yBAAyB,EAAGlpD,GACjD,OAAO,IAAIu3E,GAAU,CACnB9mE,EAAG2wC,EAAO3wC,EACViR,EAAG0/B,EAAO1/B,EACVsX,OAAQlD,EAAM6yB,8BAA8BnqD,I,CAIhD,IAAK,IAAI+Q,EAAI,EAAGA,EAAInP,IAAUmP,EAC5BmR,EAAOqB,KAAK+T,EAAMozB,yBAAyB35C,EAAG/Q,IAEhD,OAAOkiB,CACT,CCzFO,SAASk3D,GAAU3iD,EAAKxU,EAAQuZ,GACrC,MAAMtZ,EAAS2e,GAAW5e,IACpB,MAACiQ,EAAK,MAAEt4B,EAAK,KAAEijC,EAAI,MAAEvF,EAAK,KAAEvL,GAAQ9J,EACpCo3D,EAAWx8C,EAAKxyB,QAChB4tE,EAAaoB,EAASj+C,KACtBnc,EAAQo6D,EAAS1jD,iBACjB,MAAC2jD,EAAQr6D,EAAK,MAAEs5D,EAAQt5D,GAASg5D,GAAc,CAAC,EAChD5sD,EAAO6G,EAAM8nB,eAAepgD,GAC5By5B,EAAOqc,GAAmBxd,EAAO7G,GACnCnJ,GAAU2a,EAAKvR,OAAO1pB,SACxB85B,GAASjF,EAAK+E,GACd+9C,GAAO9iD,EAAK,CAACoG,OAAM3a,SAAQo3D,QAAOf,QAAO/8C,OAAMlE,QAAOvL,OAAMsH,SAC5DsI,GAAWlF,GAEf,CAEA,SAAS8iD,GAAO9iD,EAAKwb,GACnB,MAAM,KAACpV,EAAA,OAAM3a,EAAA,MAAQo3D,EAAK,MAAEf,EAAK,KAAE/8C,EAAA,MAAMlE,EAAA,KAAOjE,GAAQ4e,EAClD7rB,EAAWyW,EAAKkR,MAAQ,QAAUkE,EAAIlmB,KAE5C0K,EAAIsC,OAEJ,IAAIygD,EAAYjB,EACZA,IAAUe,IACK,MAAblzD,GACFqzD,GAAahjD,EAAKvU,EAAQsZ,EAAK1K,KAC/BsK,GAAK3E,EAAK,CAACoG,OAAM3a,SAAQjD,MAAOq6D,EAAOhiD,QAAOlR,WAAUiN,SACxDoD,EAAI0C,UACJ1C,EAAIsC,OACJ0gD,GAAahjD,EAAKvU,EAAQsZ,EAAKzK,SACT,MAAb3K,IACTszD,GAAejjD,EAAKvU,EAAQsZ,EAAKxQ,MACjCoQ,GAAK3E,EAAK,CAACoG,OAAM3a,SAAQjD,MAAOs5D,EAAOjhD,QAAOlR,WAAUiN,SACxDoD,EAAI0C,UACJ1C,EAAIsC,OACJ2gD,GAAejjD,EAAKvU,EAAQsZ,EAAKvQ,OACjCuuD,EAAYF,IAGhBl+C,GAAK3E,EAAK,CAACoG,OAAM3a,SAAQjD,MAAOu6D,EAAWliD,QAAOlR,WAAUiN,SAE5DoD,EAAI0C,SACN,CAEA,SAASsgD,GAAahjD,EAAKvU,EAAQy3D,GACjC,MAAM,SAACpsC,EAAA,OAAUjiB,GAAUpJ,EAC3B,IAAIg0C,GAAQ,EACR0jB,GAAW,EAEfnjD,EAAImE,YACJ,IAAK,MAAM+R,KAAWY,EAAU,CAC9B,MAAM,MAAC/rC,EAAA,IAAOimB,GAAOklB,EACfjI,EAAapZ,EAAO9pB,GACpB4nD,EAAY99B,EAAOqrD,GAAgBn1E,EAAOimB,EAAK6D,IACjD4qC,GACFz/B,EAAIuE,OAAO0J,EAAWzyB,EAAGyyB,EAAWxhB,GACpCgzC,GAAQ,IAERz/B,EAAIwE,OAAOyJ,EAAWzyB,EAAG0nE,GACzBljD,EAAIwE,OAAOyJ,EAAWzyB,EAAGyyB,EAAWxhB,IAEtC02D,IAAa13D,EAAOixD,YAAY18C,EAAKkW,EAAS,CAAC2R,KAAMs7B,IACjDA,EACFnjD,EAAIsE,YAEJtE,EAAIwE,OAAOmuB,EAAUn3C,EAAG0nE,EAE5B,CAEAljD,EAAIwE,OAAO/Y,EAAOg0C,QAAQjkD,EAAG0nE,GAC7BljD,EAAIsE,YACJtE,EAAIpD,MACN,CAEA,SAASqmD,GAAejjD,EAAKvU,EAAQ23D,GACnC,MAAM,SAACtsC,EAAA,OAAUjiB,GAAUpJ,EAC3B,IAAIg0C,GAAQ,EACR0jB,GAAW,EAEfnjD,EAAImE,YACJ,IAAK,MAAM+R,KAAWY,EAAU,CAC9B,MAAM,MAAC/rC,EAAA,IAAOimB,GAAOklB,EACfjI,EAAapZ,EAAO9pB,GACpB4nD,EAAY99B,EAAOqrD,GAAgBn1E,EAAOimB,EAAK6D,IACjD4qC,GACFz/B,EAAIuE,OAAO0J,EAAWzyB,EAAGyyB,EAAWxhB,GACpCgzC,GAAQ,IAERz/B,EAAIwE,OAAO4+C,EAAOn1C,EAAWxhB,GAC7BuT,EAAIwE,OAAOyJ,EAAWzyB,EAAGyyB,EAAWxhB,IAEtC02D,IAAa13D,EAAOixD,YAAY18C,EAAKkW,EAAS,CAAC2R,KAAMs7B,IACjDA,EACFnjD,EAAIsE,YAEJtE,EAAIwE,OAAO4+C,EAAOzwB,EAAUlmC,EAEhC,CAEAuT,EAAIwE,OAAO4+C,EAAO33D,EAAOg0C,QAAQhzC,GACjCuT,EAAIsE,YACJtE,EAAIpD,MACN,CAEA,SAAS+H,GAAK3E,EAAKwb,GACjB,MAAM,KAACpV,EAAA,OAAM3a,EAAA,SAAQkE,EAAA,MAAUnH,EAAA,MAAOqY,EAAA,KAAOjE,GAAQ4e,EAC/C1E,EAAWknC,GAAU53C,EAAM3a,EAAQkE,GAEzC,IAAK,MAAOnE,OAAQ5U,EAAK6U,OAAQ40D,EAAG,MAAEt1E,EAAK,IAAEimB,KAAQ8lB,EAAU,CAC7D,MAAOh0C,OAAO,gBAACo8B,EAAkB1W,GAAS,CAAC,GAAK5R,EAC1CysE,GAAsB,IAAX53D,EAEjBuU,EAAIsC,OACJtC,EAAIgG,UAAY9G,EAEhBokD,GAAWtjD,EAAKa,EAAOjE,EAAMymD,GAAYlD,GAAWxwD,EAAU5kB,EAAOimB,IAErEgP,EAAImE,YAEJ,MAAMg/C,IAAa/8C,EAAKs2C,YAAY18C,EAAKppB,GAEzC,IAAIO,EACJ,GAAIksE,EAAU,CACRF,EACFnjD,EAAIsE,YAEJi/C,GAAmBvjD,EAAKvU,EAAQuF,EAAKrB,GAGvC,MAAM6zD,IAAe/3D,EAAOixD,YAAY18C,EAAKqgD,EAAK,CAACx4B,KAAMs7B,EAAUn4D,SAAS,IAC5E7T,EAAOgsE,GAAYK,EACdrsE,GACHosE,GAAmBvjD,EAAKvU,EAAQ1gB,EAAO4kB,E,CAI3CqQ,EAAIsE,YACJtE,EAAI2E,KAAKxtB,EAAO,UAAY,WAE5B6oB,EAAI0C,SACN,CACF,CAEA,SAAS4gD,GAAWtjD,EAAKa,EAAOjE,EAAMD,GACpC,MAAMmc,EAAYjY,EAAMpF,MAAMqd,WACxB,SAACnpB,EAAA,MAAU5kB,EAAA,IAAOimB,GAAO2L,GAAU,CAAC,EAE1C,GAAiB,MAAbhN,GAAiC,MAAbA,EAAkB,CACxC,IAAI4E,EAAM8F,EAAK7F,EAAO8F,EAEL,MAAb3K,GACF4E,EAAOxpB,EACPsvB,EAAMye,EAAUze,IAChB7F,EAAQxD,EACRsJ,EAASwe,EAAUxe,SAEnB/F,EAAOukB,EAAUvkB,KACjB8F,EAAMtvB,EACNypB,EAAQskB,EAAUtkB,MAClB8F,EAAStJ,GAGXgP,EAAImE,YAEAvH,IACFrI,EAAOxf,KAAK6C,IAAI2c,EAAMqI,EAAKrI,MAC3BC,EAAQzf,KAAK8C,IAAI2c,EAAOoI,EAAKpI,OAC7B6F,EAAMtlB,KAAK6C,IAAIyiB,EAAKuC,EAAKvC,KACzBC,EAASvlB,KAAK8C,IAAIyiB,EAAQsC,EAAKtC,SAGjC0F,EAAI0E,KAAKnQ,EAAM8F,EAAK7F,EAAQD,EAAM+F,EAASD,GAC3C2F,EAAIpD,M,CAER,CAEA,SAAS2mD,GAAmBvjD,EAAKvU,EAAQoK,EAAOlG,GAC9C,MAAM8zD,EAAoBh4D,EAAOtE,YAAY0O,EAAOlG,GAChD8zD,GACFzjD,EAAIwE,OAAOi/C,EAAkBjoE,EAAGioE,EAAkBh3D,EAEtD,CC9KA,IAAAtpB,GAAe,CACb0T,GAAI,SAEJ6sE,mBAAAA,CAAoBjoD,EAAOkoD,EAAO/vE,GAChC,MAAMO,GAASsnB,EAAMt3B,KAAKi7B,UAAY,IAAIj0B,OACpC+gB,EAAU,GAChB,IAAI0I,EAAMta,EAAG8rB,EAAM5a,EAEnB,IAAKlR,EAAI,EAAGA,EAAInG,IAASmG,EACvBsa,EAAO6G,EAAM8nB,eAAejpC,GAC5B8rB,EAAOxR,EAAKS,QACZ7J,EAAS,KAEL4a,GAAQA,EAAKxyB,SAAWwyB,aAAgB03C,KAC1CtyD,EAAS,CACPwO,QAASyB,EAAMs0B,iBAAiBz1C,GAChCnX,MAAOmX,EACPqqB,KAAMu8C,GAAY96C,EAAM9rB,EAAGnG,GAC3BsnB,QACAnG,KAAMV,EAAKgrB,WAAWhsC,QAAQusB,UAC9BU,MAAOjM,EAAKM,OACZkR,SAIJxR,EAAKgvD,QAAUp4D,EACfU,EAAQY,KAAKtB,GAGf,IAAKlR,EAAI,EAAGA,EAAInG,IAASmG,EACvBkR,EAASU,EAAQ5R,GACZkR,IAA0B,IAAhBA,EAAOmZ,OAItBnZ,EAAOmZ,KAAOo8C,GAAe70D,EAAS5R,EAAG1G,EAAQotE,WAErD,EAEA6C,UAAAA,CAAWpoD,EAAOkoD,EAAO/vE,GACvB,MAAMumC,EAA4B,eAArBvmC,EAAQkwE,SACf7lC,EAAWxiB,EAAM65B,+BACjBvwB,EAAOtJ,EAAMqd,UACnB,IAAK,IAAIx+B,EAAI2jC,EAAS9yC,OAAS,EAAGmP,GAAK,IAAKA,EAAG,CAC7C,MAAMkR,EAASyyB,EAAS3jC,GAAGspE,QACtBp4D,IAILA,EAAO4a,KAAKwsB,oBAAoB7tB,EAAMvZ,EAAO8J,MACzC6kB,GAAQ3uB,EAAOmZ,MACjBg+C,GAAUlnD,EAAMuE,IAAKxU,EAAQuZ,GAEjC,CACF,EAEAg/C,kBAAAA,CAAmBtoD,EAAOkoD,EAAO/vE,GAC/B,GAAyB,uBAArBA,EAAQkwE,SACV,OAGF,MAAM7lC,EAAWxiB,EAAM65B,+BACvB,IAAK,IAAIh7C,EAAI2jC,EAAS9yC,OAAS,EAAGmP,GAAK,IAAKA,EAAG,CAC7C,MAAMkR,EAASyyB,EAAS3jC,GAAGspE,QAEvB9C,GAAiBt1D,IACnBm3D,GAAUlnD,EAAMuE,IAAKxU,EAAQiQ,EAAMqd,UAEvC,CACF,EAEAkrC,iBAAAA,CAAkBvoD,EAAO93B,EAAMiQ,GAC7B,MAAM4X,EAAS7nB,EAAKixB,KAAKgvD,QAEpB9C,GAAiBt1D,IAAgC,sBAArB5X,EAAQkwE,UAIzCnB,GAAUlnD,EAAMuE,IAAKxU,EAAQiQ,EAAMqd,UACrC,EAEA3f,SAAU,CACR6nD,WAAW,EACX8C,SAAU,sBCvEd,MAAMG,GAAaA,CAACC,EAAWxZ,KAC7B,IAAI,UAACyZ,EAAYzZ,EAAA,SAAU0Z,EAAW1Z,GAAYwZ,EAOlD,OALIA,EAAUG,gBACZF,EAAYpvE,KAAK8C,IAAIssE,EAAWzZ,GAChC0Z,EAAWF,EAAUI,iBAAmBvvE,KAAK8C,IAAIusE,EAAU1Z,IAGtD,CACL0Z,WACAD,YACAI,WAAYxvE,KAAK6C,IAAI8yD,EAAUyZ,KAI7BK,GAAaA,CAAC/rE,EAAGC,IAAY,OAAND,GAAoB,OAANC,GAAcD,EAAE8S,eAAiB7S,EAAE6S,cAAgB9S,EAAEtV,QAAUuV,EAAEvV,MAErG,MAAMshF,WAAe7lB,GAK1B12C,WAAAA,CAAYw0B,GACVgP,QAEAjnD,KAAKigF,QAAS,EAGdjgF,KAAKkgF,eAAiB,GAKtBlgF,KAAKmgF,aAAe,KAGpBngF,KAAKogF,cAAe,EAEpBpgF,KAAKg3B,MAAQihB,EAAOjhB,MACpBh3B,KAAKmP,QAAU8oC,EAAO9oC,QACtBnP,KAAKu7B,IAAM0c,EAAO1c,IAClBv7B,KAAKqgF,iBAAclrE,EACnBnV,KAAKsgF,iBAAcnrE,EACnBnV,KAAKugF,gBAAaprE,EAClBnV,KAAKouC,eAAYj5B,EACjBnV,KAAK+iC,cAAW5tB,EAChBnV,KAAK41B,SAAMzgB,EACXnV,KAAK61B,YAAS1gB,EACdnV,KAAK8vB,UAAO3a,EACZnV,KAAK+vB,WAAQ5a,EACbnV,KAAK4+B,YAASzpB,EACdnV,KAAKC,WAAQkV,EACbnV,KAAKq9D,cAAWloD,EAChBnV,KAAK4wD,cAAWz7C,EAChBnV,KAAKgkB,YAAS7O,EACdnV,KAAKuzD,cAAWp+C,CAClB,CAEAsiC,MAAAA,CAAO1U,EAAUqL,EAAWY,GAC1BhvC,KAAK+iC,SAAWA,EAChB/iC,KAAKouC,UAAYA,EACjBpuC,KAAKq9D,SAAWruB,EAEhBhvC,KAAKk/D,gBACLl/D,KAAKwgF,cACLxgF,KAAKqS,KACP,CAEA6sD,aAAAA,GACMl/D,KAAKimD,gBACPjmD,KAAKC,MAAQD,KAAK+iC,SAClB/iC,KAAK8vB,KAAO9vB,KAAKq9D,SAASvtC,KAC1B9vB,KAAK+vB,MAAQ/vB,KAAKC,QAElBD,KAAK4+B,OAAS5+B,KAAKouC,UACnBpuC,KAAK41B,IAAM51B,KAAKq9D,SAASznC,IACzB51B,KAAK61B,OAAS71B,KAAK4+B,OAEvB,CAEA4hD,WAAAA,GACE,MAAMf,EAAYz/E,KAAKmP,QAAQgxC,QAAU,CAAC,EAC1C,IAAIkgC,EAAcp6D,GAAKw5D,EAAUzyB,eAAgB,CAAChtD,KAAKg3B,OAAQh3B,OAAS,GAEpEy/E,EAAUr3C,SACZi4C,EAAcA,EAAYj4C,OAAQ5pC,GAASihF,EAAUr3C,OAAO5pC,EAAMwB,KAAKg3B,MAAMt3B,QAG3E+/E,EAAUl1D,OACZ81D,EAAcA,EAAY91D,KAAK,CAACvW,EAAGC,IAAMwrE,EAAUl1D,KAAKvW,EAAGC,EAAGjU,KAAKg3B,MAAMt3B,QAGvEM,KAAKmP,QAAQoX,SACf85D,EAAY95D,UAGdvmB,KAAKqgF,YAAcA,CACrB,CAEAhuE,GAAAA,GACE,MAAM,QAAClD,EAAO,IAAEosB,GAAOv7B,KAMvB,IAAKmP,EAAQ4oB,QAEX,YADA/3B,KAAKC,MAAQD,KAAK4+B,OAAS,GAI7B,MAAM6gD,EAAYtwE,EAAQgxC,OACpBsgC,EAAYv8C,GAAOu7C,EAAUvkD,MAC7B+qC,EAAWwa,EAAU/xE,KACrB6yD,EAAcvhE,KAAK0gF,uBACnB,SAACf,EAAQ,WAAEG,GAAcN,GAAWC,EAAWxZ,GAErD,IAAIhmE,EAAO2+B,EAEXrD,EAAIL,KAAOulD,EAAUnjD,OAEjBt9B,KAAKimD,gBACPhmD,EAAQD,KAAK+iC,SACbnE,EAAS5+B,KAAK2gF,SAASpf,EAAa0E,EAAU0Z,EAAUG,GAAc,KAEtElhD,EAAS5+B,KAAKouC,UACdnuC,EAAQD,KAAK4gF,SAASrf,EAAakf,EAAWd,EAAUG,GAAc,IAGxE9/E,KAAKC,MAAQqQ,KAAK8C,IAAInT,EAAOkP,EAAQ4zB,UAAY/iC,KAAK+iC,UACtD/iC,KAAK4+B,OAAStuB,KAAK8C,IAAIwrB,EAAQzvB,EAAQi/B,WAAapuC,KAAKouC,UAC3D,CAKAuyC,QAAAA,CAASpf,EAAa0E,EAAU0Z,EAAUG,GACxC,MAAM,IAACvkD,EAAG,SAAEwH,EAAU5zB,SAAUgxC,QAAQ,QAACxqB,KAAa31B,KAChD6gF,EAAW7gF,KAAKkgF,eAAiB,GAEjCK,EAAavgF,KAAKugF,WAAa,CAAC,GAChCnlD,EAAa0kD,EAAanqD,EAChC,IAAImrD,EAAcvf,EAElBhmC,EAAIiG,UAAY,OAChBjG,EAAIkG,aAAe,SAEnB,IAAIs/C,GAAO,EACPnrD,GAAOwF,EAgBX,OAfAp7B,KAAKqgF,YAAYjyD,QAAQ,CAACm/B,EAAY13C,KACpC,MAAM26B,EAAYmvC,EAAY1Z,EAAW,EAAK1qC,EAAIiC,YAAY+vB,EAAWx0B,MAAM94B,OAErE,IAAN4V,GAAW0qE,EAAWA,EAAW75E,OAAS,GAAK8pC,EAAY,EAAI7a,EAAUoN,KAC3E+9C,GAAe1lD,EACfmlD,EAAWA,EAAW75E,QAAUmP,EAAI,EAAI,EAAI,IAAM,EAClD+f,GAAOwF,EACP2lD,KAGFF,EAAShrE,GAAK,CAACia,KAAM,EAAG8F,MAAKmrD,MAAK9gF,MAAOuwC,EAAW5R,OAAQkhD,GAE5DS,EAAWA,EAAW75E,OAAS,IAAM8pC,EAAY7a,IAG5CmrD,CACT,CAEAF,QAAAA,CAASrf,EAAakf,EAAWd,EAAUqB,GACzC,MAAM,IAACzlD,EAAG,UAAE6S,EAAWj/B,SAAUgxC,QAAQ,QAACxqB,KAAa31B,KACjD6gF,EAAW7gF,KAAKkgF,eAAiB,GACjCI,EAActgF,KAAKsgF,YAAc,GACjCW,EAAc7yC,EAAYmzB,EAEhC,IAAI2f,EAAavrD,EACbwrD,EAAkB,EAClBC,EAAmB,EAEnBtxD,EAAO,EACPuxD,EAAM,EAyBV,OAvBArhF,KAAKqgF,YAAYjyD,QAAQ,CAACm/B,EAAY13C,KACpC,MAAM,UAAC26B,EAAS,WAAEsvC,GAAcwB,GAAkB3B,EAAUc,EAAWllD,EAAKgyB,EAAYyzB,GAGpFnrE,EAAI,GAAKurE,EAAmBtB,EAAa,EAAInqD,EAAUsrD,IACzDC,GAAcC,EAAkBxrD,EAChC2qD,EAAYj4D,KAAK,CAACpoB,MAAOkhF,EAAiBviD,OAAQwiD,IAClDtxD,GAAQqxD,EAAkBxrD,EAC1B0rD,IACAF,EAAkBC,EAAmB,GAIvCP,EAAShrE,GAAK,CAACia,OAAM8F,IAAKwrD,EAAkBC,MAAKphF,MAAOuwC,EAAW5R,OAAQkhD,GAG3EqB,EAAkB7wE,KAAK6C,IAAIguE,EAAiB3wC,GAC5C4wC,GAAoBtB,EAAanqD,IAGnCurD,GAAcC,EACdb,EAAYj4D,KAAK,CAACpoB,MAAOkhF,EAAiBviD,OAAQwiD,IAE3CF,CACT,CAEAK,cAAAA,GACE,IAAKvhF,KAAKmP,QAAQ4oB,QAChB,OAEF,MAAMwpC,EAAcvhE,KAAK0gF,uBAClBR,eAAgBW,EAAU1xE,SAAS,MAACwgB,EAAOwwB,QAAQ,QAACxqB,GAAQ,IAAE3F,IAAQhwB,KACvEwhF,EAAY7wC,GAAc3gB,EAAKhwB,KAAK8vB,KAAM9vB,KAAKC,OACrD,GAAID,KAAKimD,eAAgB,CACvB,IAAI86B,EAAM,EACNjxD,EAAOF,GAAeD,EAAO3vB,KAAK8vB,KAAO6F,EAAS31B,KAAK+vB,MAAQ/vB,KAAKugF,WAAWQ,IACnF,IAAK,MAAMU,KAAUZ,EACfE,IAAQU,EAAOV,MACjBA,EAAMU,EAAOV,IACbjxD,EAAOF,GAAeD,EAAO3vB,KAAK8vB,KAAO6F,EAAS31B,KAAK+vB,MAAQ/vB,KAAKugF,WAAWQ,KAEjFU,EAAO7rD,KAAO51B,KAAK41B,IAAM2rC,EAAc5rC,EACvC8rD,EAAO3xD,KAAO0xD,EAAUjxC,WAAWixC,EAAUzqE,EAAE+Y,GAAO2xD,EAAOxhF,OAC7D6vB,GAAQ2xD,EAAOxhF,MAAQ01B,C,KAEpB,CACL,IAAI0rD,EAAM,EACNzrD,EAAMhG,GAAeD,EAAO3vB,KAAK41B,IAAM2rC,EAAc5rC,EAAS31B,KAAK61B,OAAS71B,KAAKsgF,YAAYe,GAAKziD,QACtG,IAAK,MAAM6iD,KAAUZ,EACfY,EAAOJ,MAAQA,IACjBA,EAAMI,EAAOJ,IACbzrD,EAAMhG,GAAeD,EAAO3vB,KAAK41B,IAAM2rC,EAAc5rC,EAAS31B,KAAK61B,OAAS71B,KAAKsgF,YAAYe,GAAKziD,SAEpG6iD,EAAO7rD,IAAMA,EACb6rD,EAAO3xD,MAAQ9vB,KAAK8vB,KAAO6F,EAC3B8rD,EAAO3xD,KAAO0xD,EAAUjxC,WAAWixC,EAAUzqE,EAAE0qE,EAAO3xD,MAAO2xD,EAAOxhF,OACpE21B,GAAO6rD,EAAO7iD,OAASjJ,C,CAG7B,CAEAswB,YAAAA,GACE,MAAiC,QAA1BjmD,KAAKmP,QAAQyhD,UAAgD,WAA1B5wD,KAAKmP,QAAQyhD,QACzD,CAEAlb,IAAAA,GACE,GAAI11C,KAAKmP,QAAQ4oB,QAAS,CACxB,MAAMwD,EAAMv7B,KAAKu7B,IACjBiF,GAASjF,EAAKv7B,MAEdA,KAAK0hF,QAELjhD,GAAWlF,E,CAEf,CAKAmmD,KAAAA,GACE,MAAOvyE,QAASkyB,EAAA,YAAMi/C,EAAA,WAAaC,EAAA,IAAYhlD,GAAOv7B,MAChD,MAAC2vB,EAAOwwB,OAAQs/B,GAAap+C,EAC7BsgD,EAAejtD,GAAS3Q,MACxBy9D,EAAY7wC,GAActP,EAAKrR,IAAKhwB,KAAK8vB,KAAM9vB,KAAKC,OACpDwgF,EAAYv8C,GAAOu7C,EAAUvkD,OAC7B,QAACvF,GAAW8pD,EACZxZ,EAAWwa,EAAU/xE,KACrBkzE,EAAe3b,EAAW,EAChC,IAAI4b,EAEJ7hF,KAAK4lE,YAGLrqC,EAAIiG,UAAYggD,EAAUhgD,UAAU,QACpCjG,EAAIkG,aAAe,SACnBlG,EAAIjD,UAAY,GAChBiD,EAAIL,KAAOulD,EAAUnjD,OAErB,MAAM,SAACqiD,EAAA,UAAUD,EAAA,WAAWI,GAAcN,GAAWC,EAAWxZ,GAG1D6b,EAAgB,SAAS/qE,EAAGiR,EAAGulC,GACnC,GAAI1iC,MAAM80D,IAAaA,GAAY,GAAK90D,MAAM60D,IAAcA,EAAY,EACtE,OAIFnkD,EAAIsC,OAEJ,MAAMvF,EAAY3S,GAAe4nC,EAAWj1B,UAAW,GAUvD,GATAiD,EAAIgG,UAAY5b,GAAe4nC,EAAWhsB,UAAWogD,GACrDpmD,EAAIi8C,QAAU7xD,GAAe4nC,EAAWiqB,QAAS,QACjDj8C,EAAI8xB,eAAiB1nC,GAAe4nC,EAAWF,eAAgB,GAC/D9xB,EAAI+xB,SAAW3nC,GAAe4nC,EAAWD,SAAU,SACnD/xB,EAAIjD,UAAYA,EAChBiD,EAAI6G,YAAczc,GAAe4nC,EAAWnrB,YAAau/C,GAEzDpmD,EAAIgqC,YAAY5/C,GAAe4nC,EAAWH,SAAU,KAEhDqyB,EAAUG,cAAe,CAG3B,MAAMmC,EAAc,CAClBziD,OAAQogD,EAAYpvE,KAAK0xE,MAAQ,EACjC5iD,WAAYmuB,EAAWnuB,WACvBC,SAAUkuB,EAAWluB,SACrBc,YAAa7H,GAETi0B,EAAUi1B,EAAUlxC,MAAMv5B,EAAG4oE,EAAW,GACxCnzB,EAAUxkC,EAAI45D,EAGpB9iD,GAAgBvD,EAAKwmD,EAAax1B,EAASC,EAASizB,EAAUI,iBAAmBF,E,KAC5E,CAGL,MAAMsC,EAAUj6D,EAAI1X,KAAK6C,KAAK8yD,EAAWyZ,GAAa,EAAG,GACnDwC,EAAWV,EAAUjxC,WAAWx5B,EAAG4oE,GACnCzyB,EAAelpB,GAAcupB,EAAWL,cAE9C3xB,EAAImE,YAEArwB,OAAOse,OAAOu/B,GAAcoc,KAAKv2D,GAAW,IAANA,GACxCkwB,GAAmB1H,EAAK,CACtBxkB,EAAGmrE,EACHl6D,EAAGi6D,EACHtsE,EAAGgqE,EACHzsE,EAAGwsE,EACHpgD,OAAQ4tB,IAGV3xB,EAAI0E,KAAKiiD,EAAUD,EAAStC,EAAUD,GAGxCnkD,EAAI2E,OACc,IAAd5H,GACFiD,EAAI6E,Q,CAIR7E,EAAI0C,SACN,EAEM+E,EAAW,SAASjsB,EAAGiR,EAAGulC,GAC9B9qB,GAAWlH,EAAKgyB,EAAWx0B,KAAMhiB,EAAGiR,EAAK83D,EAAa,EAAIW,EAAW,CACnE7+C,cAAe2rB,EAAW7Q,OAC1Blb,UAAWggD,EAAUhgD,UAAU+rB,EAAW/rB,YAE9C,EAGMykB,EAAejmD,KAAKimD,eACpBsb,EAAcvhE,KAAK0gF,sBAEvBmB,EADE57B,EACO,CACPlvC,EAAG6Y,GAAeD,EAAO3vB,KAAK8vB,KAAO6F,EAAS31B,KAAK+vB,MAAQwwD,EAAW,IACtEv4D,EAAGhoB,KAAK41B,IAAMD,EAAU4rC,EACxB5/B,KAAM,GAGC,CACP5qB,EAAG/W,KAAK8vB,KAAO6F,EACf3N,EAAG4H,GAAeD,EAAO3vB,KAAK41B,IAAM2rC,EAAc5rC,EAAS31B,KAAK61B,OAASyqD,EAAY,GAAG1hD,QACxF+C,KAAM,GAIViP,GAAsB5wC,KAAKu7B,IAAK8F,EAAK8gD,eAErC,MAAM/mD,EAAa0kD,EAAanqD,EAChC31B,KAAKqgF,YAAYjyD,QAAQ,CAACm/B,EAAY13C,KACpC0lB,EAAI6G,YAAcmrB,EAAWJ,UAC7B5xB,EAAIgG,UAAYgsB,EAAWJ,UAE3B,MAAM5vB,EAAYhC,EAAIiC,YAAY+vB,EAAWx0B,MAAM94B,MAC7CuhC,EAAYggD,EAAUhgD,UAAU+rB,EAAW/rB,YAAc+rB,EAAW/rB,UAAYi+C,EAAUj+C,YAC1FvhC,EAAQ0/E,EAAWiC,EAAerkD,EACxC,IAAIxmB,EAAI8qE,EAAO9qE,EACXiR,EAAI65D,EAAO75D,EAEfw5D,EAAUnxC,SAASrwC,KAAKC,OAEpBgmD,EACEpwC,EAAI,GAAKkB,EAAI9W,EAAQ01B,EAAU31B,KAAK+vB,QACtC/H,EAAI65D,EAAO75D,GAAKoT,EAChBymD,EAAOlgD,OACP5qB,EAAI8qE,EAAO9qE,EAAI6Y,GAAeD,EAAO3vB,KAAK8vB,KAAO6F,EAAS31B,KAAK+vB,MAAQwwD,EAAWsB,EAAOlgD,QAElF9rB,EAAI,GAAKmS,EAAIoT,EAAap7B,KAAK61B,SACxC9e,EAAI8qE,EAAO9qE,EAAIA,EAAIupE,EAAYuB,EAAOlgD,MAAM1hC,MAAQ01B,EACpDksD,EAAOlgD,OACP3Z,EAAI65D,EAAO75D,EAAI4H,GAAeD,EAAO3vB,KAAK41B,IAAM2rC,EAAc5rC,EAAS31B,KAAK61B,OAASyqD,EAAYuB,EAAOlgD,MAAM/C,SAGhH,MAAMwjD,EAAQZ,EAAUzqE,EAAEA,GAS1B,GAPA+qE,EAAcM,EAAOp6D,EAAGulC,GAExBx2C,EAAI8Y,GAAO2R,EAAWzqB,EAAI4oE,EAAWiC,EAAc37B,EAAelvC,EAAI9W,EAAQD,KAAK+vB,MAAOsR,EAAKrR,KAG/FgT,EAASw+C,EAAUzqE,EAAEA,GAAIiR,EAAGulC,GAExBtH,EACF47B,EAAO9qE,GAAK9W,EAAQ01B,OACf,GAA+B,kBAApB43B,EAAWx0B,KAAmB,CAC9C,MAAMspD,EAAiB5B,EAAUrlD,WACjCymD,EAAO75D,GAAKs6D,GAA0B/0B,EAAY80B,GAAkB1sD,C,MAEpEksD,EAAO75D,GAAKoT,IAIhB8V,GAAqBlxC,KAAKu7B,IAAK8F,EAAK8gD,cACtC,CAKAvc,SAAAA,GACE,MAAMvkC,EAAOrhC,KAAKmP,QACZkyD,EAAYhgC,EAAKxyB,MACjB0zE,EAAYr+C,GAAOm9B,EAAUnmC,MAC7BsnD,EAAev+C,GAAUo9B,EAAU1rC,SAEzC,IAAK0rC,EAAUtpC,QACb,OAGF,MAAMypD,EAAY7wC,GAActP,EAAKrR,IAAKhwB,KAAK8vB,KAAM9vB,KAAKC,OACpDs7B,EAAMv7B,KAAKu7B,IACXq1B,EAAWyQ,EAAUzQ,SACrBgxB,EAAeW,EAAU7zE,KAAO,EAChC+zE,EAA6BD,EAAa5sD,IAAMgsD,EACtD,IAAI55D,EAIA8H,EAAO9vB,KAAK8vB,KACZiT,EAAW/iC,KAAKC,MAEpB,GAAID,KAAKimD,eAEPljB,EAAWzyB,KAAK6C,OAAOnT,KAAKugF,YAC5Bv4D,EAAIhoB,KAAK41B,IAAM6sD,EACf3yD,EAAOF,GAAeyR,EAAK1R,MAAOG,EAAM9vB,KAAK+vB,MAAQgT,OAChD,CAEL,MAAMqL,EAAYpuC,KAAKsgF,YAAYlqC,OAAO,CAACC,EAAK3nC,IAAS4B,KAAK6C,IAAIkjC,EAAK3nC,EAAKkwB,QAAS,GACrF5W,EAAIy6D,EAA6B7yD,GAAeyR,EAAK1R,MAAO3vB,KAAK41B,IAAK51B,KAAK61B,OAASuY,EAAY/M,EAAK8e,OAAOxqB,QAAU31B,KAAK0gF,sB,CAK7H,MAAM3pE,EAAI6Y,GAAeghC,EAAU9gC,EAAMA,EAAOiT,GAGhDxH,EAAIiG,UAAYggD,EAAUhgD,UAAU9R,GAAmBkhC,IACvDr1B,EAAIkG,aAAe,SACnBlG,EAAI6G,YAAci/B,EAAUt9C,MAC5BwX,EAAIgG,UAAY8/B,EAAUt9C,MAC1BwX,EAAIL,KAAOqnD,EAAUjlD,OAErBmF,GAAWlH,EAAK8lC,EAAUtoC,KAAMhiB,EAAGiR,EAAGu6D,EACxC,CAKA7B,mBAAAA,GACE,MAAMrf,EAAYrhE,KAAKmP,QAAQN,MACzB0zE,EAAYr+C,GAAOm9B,EAAUnmC,MAC7BsnD,EAAev+C,GAAUo9B,EAAU1rC,SACzC,OAAO0rC,EAAUtpC,QAAUwqD,EAAUnnD,WAAaonD,EAAa5jD,OAAS,CAC1E,CAKA8jD,gBAAAA,CAAiB3rE,EAAGiR,GAClB,IAAInS,EAAG8sE,EAAQC,EAEf,GAAI71D,GAAWhW,EAAG/W,KAAK8vB,KAAM9vB,KAAK+vB,QAC7BhD,GAAW/E,EAAGhoB,KAAK41B,IAAK51B,KAAK61B,QAGhC,IADA+sD,EAAK5iF,KAAKkgF,eACLrqE,EAAI,EAAGA,EAAI+sE,EAAGl8E,SAAUmP,EAG3B,GAFA8sE,EAASC,EAAG/sE,GAERkX,GAAWhW,EAAG4rE,EAAO7yD,KAAM6yD,EAAO7yD,KAAO6yD,EAAO1iF,QAC/C8sB,GAAW/E,EAAG26D,EAAO/sD,IAAK+sD,EAAO/sD,IAAM+sD,EAAO/jD,QAEjD,OAAO5+B,KAAKqgF,YAAYxqE,GAK9B,OAAO,IACT,CAMAgtE,WAAAA,CAAYzuE,GACV,MAAMitB,EAAOrhC,KAAKmP,QAClB,IAAK2zE,GAAW1uE,EAAE9U,KAAM+hC,GACtB,OAIF,MAAM0hD,EAAc/iF,KAAK0iF,iBAAiBtuE,EAAE2C,EAAG3C,EAAE4T,GAEjD,GAAe,cAAX5T,EAAE9U,MAAmC,aAAX8U,EAAE9U,KAAqB,CACnD,MAAMqhC,EAAW3gC,KAAKmgF,aAChB6C,EAAWjD,GAAWp/C,EAAUoiD,GAClCpiD,IAAaqiD,GACf/8D,GAAKob,EAAK4hD,QAAS,CAAC7uE,EAAGusB,EAAU3gC,MAAOA,MAG1CA,KAAKmgF,aAAe4C,EAEhBA,IAAgBC,GAClB/8D,GAAKob,EAAKrF,QAAS,CAAC5nB,EAAG2uE,EAAa/iF,MAAOA,KAE/C,MAAW+iF,GACT98D,GAAKob,EAAKziC,QAAS,CAACwV,EAAG2uE,EAAa/iF,MAAOA,KAE/C,EAGF,SAASshF,GAAkB3B,EAAUc,EAAWllD,EAAKgyB,EAAYyzB,GAC/D,MAAMxwC,EAAY0yC,GAAmB31B,EAAYoyB,EAAUc,EAAWllD,GAChEukD,EAAaqD,GAAoBnC,EAAazzB,EAAYkzB,EAAUrlD,YAC1E,MAAO,CAACoV,YAAWsvC,aACrB,CAEA,SAASoD,GAAmB31B,EAAYoyB,EAAUc,EAAWllD,GAC3D,IAAI6nD,EAAiB71B,EAAWx0B,KAIhC,OAHIqqD,GAA4C,kBAAnBA,IAC3BA,EAAiBA,EAAehtC,OAAO,CAACpiC,EAAGC,IAAMD,EAAEtN,OAASuN,EAAEvN,OAASsN,EAAIC,IAEtE0rE,EAAYc,EAAU/xE,KAAO,EAAK6sB,EAAIiC,YAAY4lD,GAAgBnjF,KAC3E,CAEA,SAASkjF,GAAoBnC,EAAazzB,EAAY80B,GACpD,IAAIvC,EAAakB,EAIjB,MAH+B,kBAApBzzB,EAAWx0B,OACpB+mD,EAAawC,GAA0B/0B,EAAY80B,IAE9CvC,CACT,CAEA,SAASwC,GAA0B/0B,EAAY80B,GAC7C,MAAM3gB,EAAcnU,EAAWx0B,KAAOw0B,EAAWx0B,KAAKryB,OAAS,EAC/D,OAAO27E,EAAiB3gB,CAC1B,CAEA,SAASohB,GAAWxjF,EAAM+hC,GACxB,QAAc,cAAT/hC,GAAiC,aAATA,IAAyB+hC,EAAKrF,UAAWqF,EAAK4hD,aAGvE5hD,EAAKziC,SAAqB,UAATU,GAA6B,YAATA,EAI3C,CAEA,IAAA+jF,GAAe,CACbjxE,GAAI,SAMJkxE,SAAUtD,GAEV15E,KAAAA,CAAM0wB,EAAOkoD,EAAO/vE,GAClB,MAAM49C,EAAS/1B,EAAM+1B,OAAS,IAAIizB,GAAO,CAACzkD,IAAKvE,EAAMuE,IAAKpsB,UAAS6nB,UACnE+7B,GAAQ5a,UAAUnhB,EAAO+1B,EAAQ59C,GACjC4jD,GAAQyC,OAAOx+B,EAAO+1B,EACxB,EAEAra,IAAAA,CAAK1b,GACH+7B,GAAQ4C,UAAU3+B,EAAOA,EAAM+1B,eACxB/1B,EAAM+1B,MACf,EAKAgS,YAAAA,CAAa/nC,EAAOkoD,EAAO/vE,GACzB,MAAM49C,EAAS/1B,EAAM+1B,OACrBgG,GAAQ5a,UAAUnhB,EAAO+1B,EAAQ59C,GACjC49C,EAAO59C,QAAUA,CACnB,EAIA+wD,WAAAA,CAAYlpC,GACV,MAAM+1B,EAAS/1B,EAAM+1B,OACrBA,EAAOyzB,cACPzzB,EAAOw0B,gBACT,EAGAgC,UAAAA,CAAWvsD,EAAO93B,GACXA,EAAKi0E,QACRn8C,EAAM+1B,OAAO81B,YAAY3jF,EAAK4uC,MAElC,EAEApZ,SAAU,CACRqD,SAAS,EACT64B,SAAU,MACVjhC,MAAO,SACP4jC,UAAU,EACVhtC,SAAS,EACTvC,OAAQ,IAGRplB,OAAAA,CAAQwV,EAAGm5C,EAAYR,GACrB,MAAMruD,EAAQ6uD,EAAWzmC,aACnB08D,EAAKz2B,EAAO/1B,MACdwsD,EAAGl4B,iBAAiB5sD,IACtB8kF,EAAGhuD,KAAK92B,GACR6uD,EAAW7Q,QAAS,IAEpB8mC,EAAGnuD,KAAK32B,GACR6uD,EAAW7Q,QAAS,EAExB,EAEA1gB,QAAS,KACTinD,QAAS,KAET9iC,OAAQ,CACNp8B,MAAQwX,GAAQA,EAAIvE,MAAM7nB,QAAQ4U,MAClC47D,SAAU,GACVhqD,QAAS,GAYTq3B,cAAAA,CAAeh2B,GACb,MAAM2D,EAAW3D,EAAMt3B,KAAKi7B,UACrBwlB,QAAQ,cAACy/B,EAAA,WAAexgD,EAAU,UAAEoC,EAAA,MAAWzd,EAAA,gBAAOkpC,EAAe,aAAEC,IAAiBl2B,EAAM+1B,OAAO59C,QAE5G,OAAO6nB,EAAMyiB,yBAAyBvjC,IAAKia,IACzC,MAAM9xB,EAAQ8xB,EAAKgrB,WAAWvO,SAASgzC,EAAgB,OAAIzqE,GACrDgrB,EAAc8D,GAAU5lC,EAAM8hC,aAEpC,MAAO,CACLpH,KAAM4B,EAASxK,EAAKzxB,OAAOiQ,MAC3B4yB,UAAWljC,EAAMo8B,gBACjB0yB,UAAWppC,EACX24B,QAASvsB,EAAKoF,QACdiiD,QAASn5E,EAAM01C,eACfqZ,SAAU/uD,EAAM21C,WAChBqZ,eAAgBhvD,EAAM41C,iBACtBqZ,SAAUjvD,EAAM61C,gBAChB5b,WAAY6H,EAAYlgC,MAAQkgC,EAAYvB,QAAU,EACtDwD,YAAa/jC,EAAMq8B,YACnB0E,WAAYA,GAAc/gC,EAAM+gC,WAChCC,SAAUhhC,EAAMghC,SAChBmC,UAAWA,GAAanjC,EAAMmjC,UAC9B0rB,aAAcD,IAAoBC,GAAgB7uD,EAAM6uD,cAGxDpmC,aAAcqJ,EAAKzxB,QAEpBsB,KACL,GAGF6O,MAAO,CACLkV,MAAQwX,GAAQA,EAAIvE,MAAM7nB,QAAQ4U,MAClCgU,SAAS,EACT64B,SAAU,SACV73B,KAAM,KAIVkB,YAAa,CACXjF,YAAc51B,IAAUA,EAAK26B,WAAW,MACxComB,OAAQ,CACNnrB,YAAc51B,IAAU,CAAC,iBAAkB,SAAU,QAAQw4B,SAASx4B,MCzsBhE,IAAIqkF,QCahB,MAAMC,GAAc,CAIlBC,OAAAA,CAAQ90D,GACN,IAAKA,EAAMnoB,OACT,OAAO,EAGT,IAAImP,EAAGb,EACH4uE,EAAO,IAAI70D,IACX/G,EAAI,EACJtY,EAAQ,EAEZ,IAAKmG,EAAI,EAAGb,EAAM6Z,EAAMnoB,OAAQmP,EAAIb,IAAOa,EAAG,CAC5C,MAAMpV,EAAKouB,EAAMhZ,GAAG42B,QACpB,GAAIhsC,GAAMA,EAAG45D,WAAY,CACvB,MAAMntB,EAAMzsC,EAAG25D,kBACfwpB,EAAKtiF,IAAI4rC,EAAIn2B,GACbiR,GAAKklB,EAAIllB,IACPtY,C,CAEN,CAGA,GAAc,IAAVA,GAA6B,IAAdk0E,EAAKl1E,KACtB,OAAO,EAGT,MAAMm1E,EAAW,IAAID,GAAMxtC,OAAO,CAACpiC,EAAGC,IAAMD,EAAIC,GAAK2vE,EAAKl1E,KAE1D,MAAO,CACLqI,EAAG8sE,EACH77D,EAAGA,EAAItY,EAEX,EAKA2iD,OAAAA,CAAQxjC,EAAOi1D,GACb,IAAKj1D,EAAMnoB,OACT,OAAO,EAGT,IAGImP,EAAGb,EAAK+uE,EAHRhtE,EAAI+sE,EAAc/sE,EAClBiR,EAAI87D,EAAc97D,EAClB4pC,EAAcpsD,OAAO4jB,kBAGzB,IAAKvT,EAAI,EAAGb,EAAM6Z,EAAMnoB,OAAQmP,EAAIb,IAAOa,EAAG,CAC5C,MAAMpV,EAAKouB,EAAMhZ,GAAG42B,QACpB,GAAIhsC,GAAMA,EAAG45D,WAAY,CACvB,MAAM3S,EAASjnD,EAAGoxD,iBACZ19C,EAAI8X,GAAsB63D,EAAep8B,GAE3CvzC,EAAIy9C,IACNA,EAAcz9C,EACd4vE,EAAiBtjF,E,CAGvB,CAEA,GAAIsjF,EAAgB,CAClB,MAAMC,EAAKD,EAAe3pB,kBAC1BrjD,EAAIitE,EAAGjtE,EACPiR,EAAIg8D,EAAGh8D,C,CAGT,MAAO,CACLjR,IACAiR,IAEJ,GAIF,SAASi8D,GAAa31D,EAAM41D,GAU1B,OATIA,IACEjuE,GAAQiuE,GAEVn+E,MAAMmf,UAAUmD,KAAKjC,MAAMkI,EAAM41D,GAEjC51D,EAAKjG,KAAK67D,IAIP51D,CACT,CAQA,SAAS61D,GAAcrvE,GACrB,OAAoB,kBAARA,GAAoBA,aAAevV,SAAWuV,EAAIsS,QAAQ,OAAS,EACtEtS,EAAIqT,MAAM,MAEZrT,CACT,CASA,SAASsvE,GAAkBptD,EAAOx4B,GAChC,MAAM,QAACiuC,EAAO,aAAE3lB,EAAA,MAAcpoB,GAASF,EACjC28C,EAAankB,EAAM8nB,eAAeh4B,GAAcq0B,YAChD,MAACxsC,EAAA,MAAO7J,GAASq2C,EAAWiG,iBAAiB1iD,GAEnD,MAAO,CACLs4B,QACAroB,QACAs6B,OAAQkS,EAAWqF,UAAU9hD,GAC7Bw9C,IAAKllB,EAAMt3B,KAAKi7B,SAAS7T,GAAcpnB,KAAKhB,GAC5C2lF,eAAgBv/E,EAChB8rB,QAASuqB,EAAW6C,aACpB/B,UAAWv9C,EACXooB,eACA2lB,UAEJ,CAKA,SAAS63C,GAAeC,EAASp1E,GAC/B,MAAMosB,EAAMgpD,EAAQvtD,MAAMuE,KACpB,KAACipD,EAAI,OAAEC,EAAA,MAAQ51E,GAAS01E,GACxB,SAAC5E,EAAA,UAAUD,GAAavwE,EACxBu1E,EAAWxgD,GAAO/0B,EAAQu1E,UAC1BnC,EAAYr+C,GAAO/0B,EAAQozE,WAC3BoC,EAAazgD,GAAO/0B,EAAQw1E,YAC5BC,EAAiB/1E,EAAMnI,OACvBm+E,EAAkBJ,EAAO/9E,OACzBo+E,EAAoBN,EAAK99E,OAEzBivB,EAAUsO,GAAU90B,EAAQwmB,SAClC,IAAIiJ,EAASjJ,EAAQiJ,OACjB3+B,EAAQ,EAGR8kF,EAAqBP,EAAKpuC,OAAO,CAAC1mC,EAAOs1E,IAAat1E,EAAQs1E,EAASC,OAAOv+E,OAASs+E,EAAStiD,MAAMh8B,OAASs+E,EAASE,MAAMx+E,OAAQ,GAQ1I,GAPAq+E,GAAsBR,EAAQY,WAAWz+E,OAAS69E,EAAQa,UAAU1+E,OAEhEk+E,IACFhmD,GAAUgmD,EAAiBrC,EAAUnnD,YACnCwpD,EAAiB,GAAKz1E,EAAQk2E,aAC/Bl2E,EAAQm2E,mBAEPP,EAAoB,CAEtB,MAAMQ,EAAiBp2E,EAAQq2E,cAAgBl1E,KAAK6C,IAAIusE,EAAWgF,EAAStpD,YAAcspD,EAAStpD,WACnGwD,GAAUkmD,EAAoBS,GAC5BR,EAAqBD,GAAqBJ,EAAStpD,YACnD2pD,EAAqB,GAAK51E,EAAQs2E,W,CAElCZ,IACFjmD,GAAUzvB,EAAQu2E,gBACjBb,EAAkBF,EAAWvpD,YAC5BypD,EAAkB,GAAK11E,EAAQw2E,eAInC,IAAIC,EAAe,EACnB,MAAMC,EAAe,SAASlkD,GAC5B1hC,EAAQqQ,KAAK6C,IAAIlT,EAAOs7B,EAAIiC,YAAYmE,GAAM1hC,MAAQ2lF,EACxD,EA+BA,OA7BArqD,EAAIsC,OAEJtC,EAAIL,KAAOqnD,EAAUjlD,OACrBjX,GAAKk+D,EAAQ11E,MAAOg3E,GAGpBtqD,EAAIL,KAAOwpD,EAASpnD,OACpBjX,GAAKk+D,EAAQY,WAAWhhC,OAAOogC,EAAQa,WAAYS,GAGnDD,EAAez2E,EAAQq2E,cAAiB7F,EAAW,EAAIxwE,EAAQglD,WAAc,EAC7E9tC,GAAKm+D,EAAOQ,IACV3+D,GAAK2+D,EAASC,OAAQY,GACtBx/D,GAAK2+D,EAAStiD,MAAOmjD,GACrBx/D,GAAK2+D,EAASE,MAAOW,KAIvBD,EAAe,EAGfrqD,EAAIL,KAAOypD,EAAWrnD,OACtBjX,GAAKk+D,EAAQE,OAAQoB,GAErBtqD,EAAI0C,UAGJh+B,GAAS01B,EAAQ11B,MAEV,CAACA,QAAO2+B,SACjB,CAEA,SAASknD,GAAgB9uD,EAAOtoB,GAC9B,MAAM,EAACsZ,EAAA,OAAG4W,GAAUlwB,EAEpB,OAAIsZ,EAAI4W,EAAS,EACR,MACE5W,EAAKgP,EAAM4H,OAASA,EAAS,EAC/B,SAEF,QACT,CAEA,SAASmnD,GAAoBC,EAAQhvD,EAAO7nB,EAAST,GACnD,MAAM,EAACqI,EAAA,MAAG9W,GAASyO,EACbu3E,EAAQ92E,EAAQ+2E,UAAY/2E,EAAQg3E,aAC1C,MAAe,SAAXH,GAAqBjvE,EAAI9W,EAAQgmF,EAAQjvD,EAAM/2B,QAIpC,UAAX+lF,GAAsBjvE,EAAI9W,EAAQgmF,EAAQ,QAA9C,EAGF,CAEA,SAASG,GAAgBpvD,EAAO7nB,EAAST,EAAM23E,GAC7C,MAAM,EAACtvE,EAAA,MAAG9W,GAASyO,GACZzO,MAAOqmF,EAAYjyC,WAAW,KAACvkB,EAAI,MAAEC,IAAUiH,EACtD,IAAIgvD,EAAS,SAcb,MAZe,WAAXK,EACFL,EAASjvE,IAAM+Y,EAAOC,GAAS,EAAI,OAAS,QACnChZ,GAAK9W,EAAQ,EACtB+lF,EAAS,OACAjvE,GAAKuvE,EAAarmF,EAAQ,IACnC+lF,EAAS,SAGPD,GAAoBC,EAAQhvD,EAAO7nB,EAAST,KAC9Cs3E,EAAS,UAGJA,CACT,CAKA,SAASO,GAAmBvvD,EAAO7nB,EAAST,GAC1C,MAAM23E,EAAS33E,EAAK23E,QAAUl3E,EAAQk3E,QAAUP,GAAgB9uD,EAAOtoB,GAEvE,MAAO,CACLs3E,OAAQt3E,EAAKs3E,QAAU72E,EAAQ62E,QAAUI,GAAgBpvD,EAAO7nB,EAAST,EAAM23E,GAC/EA,SAEJ,CAEA,SAASG,GAAO93E,EAAMs3E,GACpB,IAAI,EAACjvE,EAAA,MAAG9W,GAASyO,EAMjB,MALe,UAAXs3E,EACFjvE,GAAK9W,EACe,WAAX+lF,IACTjvE,GAAM9W,EAAQ,GAET8W,CACT,CAEA,SAAS0vE,GAAO/3E,EAAM23E,EAAQK,GAE5B,IAAI,EAAC1+D,EAAA,OAAG4W,GAAUlwB,EAQlB,MAPe,QAAX23E,EACFr+D,GAAK0+D,EAEL1+D,GADoB,WAAXq+D,EACJznD,EAAS8nD,EAER9nD,EAAS,EAEV5W,CACT,CAKA,SAAS2+D,GAAmBx3E,EAAST,EAAMk4E,EAAW5vD,GACpD,MAAM,UAACkvD,EAAS,aAAEC,EAAA,aAAclnD,GAAgB9vB,GAC1C,OAAC62E,EAAA,OAAQK,GAAUO,EACnBF,EAAiBR,EAAYC,GAC7B,QAACjjD,EAAO,SAAEG,EAAQ,WAAEF,EAAA,YAAYC,GAAeY,GAAc/E,GAEnE,IAAIloB,EAAIyvE,GAAO93E,EAAMs3E,GACrB,MAAMh+D,EAAIy+D,GAAO/3E,EAAM23E,EAAQK,GAc/B,MAZe,WAAXL,EACa,SAAXL,EACFjvE,GAAK2vE,EACe,UAAXV,IACTjvE,GAAK2vE,GAEa,SAAXV,EACTjvE,GAAKzG,KAAK6C,IAAI+vB,EAASC,GAAc+iD,EACjB,UAAXF,IACTjvE,GAAKzG,KAAK6C,IAAIkwB,EAAUD,GAAe8iD,GAGlC,CACLnvE,EAAG8V,GAAY9V,EAAG,EAAGigB,EAAM/2B,MAAQyO,EAAKzO,OACxC+nB,EAAG6E,GAAY7E,EAAG,EAAGgP,EAAM4H,OAASlwB,EAAKkwB,QAE7C,CAEA,SAASioD,GAAYtC,EAAS50D,EAAOxgB,GACnC,MAAMwmB,EAAUsO,GAAU90B,EAAQwmB,SAElC,MAAiB,WAAVhG,EACH40D,EAAQxtE,EAAIwtE,EAAQtkF,MAAQ,EAClB,UAAV0vB,EACE40D,EAAQxtE,EAAIwtE,EAAQtkF,MAAQ01B,EAAQ5F,MACpCw0D,EAAQxtE,EAAI4e,EAAQ7F,IAC5B,CAKA,SAASg3D,GAAwB7gE,GAC/B,OAAOg+D,GAAa,GAAIE,GAAcl+D,GACxC,CAEA,SAAS8gE,GAAqBx+C,EAAQg8C,EAASyC,GAC7C,OAAOliD,GAAcyD,EAAQ,CAC3Bg8C,UACAyC,eACA1nF,KAAM,WAEV,CAEA,SAAS2nF,GAAkBhyC,EAAWpa,GACpC,MAAM2B,EAAW3B,GAAWA,EAAQjK,SAAWiK,EAAQjK,QAAQ2zD,SAAW1pD,EAAQjK,QAAQ2zD,QAAQtvC,UAClG,OAAOzY,EAAWyY,EAAUzY,SAASA,GAAYyY,CACnD,CAEA,MAAMiyC,GAAmB,CAEvBC,YAAapiE,GACblW,KAAAA,CAAMm4E,GACJ,GAAIA,EAAatgF,OAAS,EAAG,CAC3B,MAAMlI,EAAOwoF,EAAa,GACpB7mC,EAAS3hD,EAAKw4B,MAAMt3B,KAAKygD,OACzBinC,EAAajnC,EAASA,EAAOz5C,OAAS,EAE5C,GAAI1G,MAAQA,KAAKmP,SAAiC,YAAtBnP,KAAKmP,QAAQysB,KACvC,OAAOp9B,EAAKoyB,QAAQjiB,OAAS,GACxB,GAAInQ,EAAKmQ,MACd,OAAOnQ,EAAKmQ,MACP,GAAIy4E,EAAa,GAAK5oF,EAAKy9C,UAAYmrC,EAC5C,OAAOjnC,EAAO3hD,EAAKy9C,U,CAIvB,MAAO,EACT,EACAorC,WAAYtiE,GAGZogE,WAAYpgE,GAGZuiE,YAAaviE,GACbpW,KAAAA,CAAM44E,GACJ,GAAIvnF,MAAQA,KAAKmP,SAAiC,YAAtBnP,KAAKmP,QAAQysB,KACvC,OAAO2rD,EAAY54E,MAAQ,KAAO44E,EAAYlD,gBAAkBkD,EAAYlD,eAG9E,IAAI11E,EAAQ44E,EAAY32D,QAAQjiB,OAAS,GAErCA,IACFA,GAAS,MAEX,MAAM7J,EAAQyiF,EAAYlD,eAI1B,OAHKp/D,GAAcngB,KACjB6J,GAAS7J,GAEJ6J,CACT,EACA64E,UAAAA,CAAWD,GACT,MAAMp3D,EAAOo3D,EAAYvwD,MAAM8nB,eAAeyoC,EAAYzgE,cACpD3X,EAAUghB,EAAKgrB,WAAWvO,SAAS26C,EAAYtrC,WACrD,MAAO,CACLvhB,YAAavrB,EAAQurB,YACrBD,gBAAiBtrB,EAAQsrB,gBACzB0F,YAAahxB,EAAQgxB,YACrB6T,WAAY7kC,EAAQ6kC,WACpBC,iBAAkB9kC,EAAQ8kC,iBAC1BiZ,aAAc,EAElB,EACAu6B,cAAAA,GACE,OAAOznF,KAAKmP,QAAQu4E,SACtB,EACAC,eAAAA,CAAgBJ,GACd,MAAMp3D,EAAOo3D,EAAYvwD,MAAM8nB,eAAeyoC,EAAYzgE,cACpD3X,EAAUghB,EAAKgrB,WAAWvO,SAAS26C,EAAYtrC,WACrD,MAAO,CACL7c,WAAYjwB,EAAQiwB,WACpBC,SAAUlwB,EAAQkwB,SAEtB,EACAuoD,WAAY7iE,GAGZqgE,UAAWrgE,GAGX8iE,aAAc9iE,GACd0/D,OAAQ1/D,GACR+iE,YAAa/iE,IAYf,SAASgjE,GAA2B9yC,EAAW71C,EAAMm8B,EAAK0sC,GACxD,MAAM59C,EAAS4qB,EAAU71C,GAAMgmB,KAAKmW,EAAK0sC,GAEzC,MAAsB,qBAAX59C,EACF68D,GAAiB9nF,GAAMgmB,KAAKmW,EAAK0sC,GAGnC59C,CACT,CAEO,MAAM29D,WAAgB7tB,GAO3B12C,WAAAA,CAAYw0B,GACVgP,QAEAjnD,KAAKioF,QAAU,EACfjoF,KAAK21C,QAAU,GACf31C,KAAKkoF,oBAAiB/yE,EACtBnV,KAAKmoF,WAAQhzE,EACbnV,KAAKooF,uBAAoBjzE,EACzBnV,KAAKqoF,cAAgB,GACrBroF,KAAK84C,iBAAc3jC,EACnBnV,KAAKu9C,cAAWpoC,EAChBnV,KAAKg3B,MAAQihB,EAAOjhB,MACpBh3B,KAAKmP,QAAU8oC,EAAO9oC,QACtBnP,KAAKsoF,gBAAanzE,EAClBnV,KAAK6O,WAAQsG,EACbnV,KAAKmlF,gBAAahwE,EAClBnV,KAAKwkF,UAAOrvE,EACZnV,KAAKolF,eAAYjwE,EACjBnV,KAAKykF,YAAStvE,EACdnV,KAAKgmF,YAAS7wE,EACdnV,KAAKqmF,YAASlxE,EACdnV,KAAK+W,OAAI5B,EACTnV,KAAKgoB,OAAI7S,EACTnV,KAAK4+B,YAASzpB,EACdnV,KAAKC,WAAQkV,EACbnV,KAAKuoF,YAASpzE,EACdnV,KAAKwoF,YAASrzE,EAGdnV,KAAKyoF,iBAActzE,EACnBnV,KAAK0oF,sBAAmBvzE,EACxBnV,KAAK2oF,qBAAkBxzE,CACzB,CAEAwoC,UAAAA,CAAWxuC,GACTnP,KAAKmP,QAAUA,EACfnP,KAAKooF,uBAAoBjzE,EACzBnV,KAAKu9C,cAAWpoC,CAClB,CAKA2sC,kBAAAA,GACE,MAAMxF,EAASt8C,KAAKooF,kBAEpB,GAAI9rC,EACF,OAAOA,EAGT,MAAMtlB,EAAQh3B,KAAKg3B,MACb7nB,EAAUnP,KAAKmP,QAAQ63B,WAAWhnC,KAAKy+B,cACvC4C,EAAOlyB,EAAQ0rD,SAAW7jC,EAAM7nB,QAAQgmB,WAAahmB,EAAQmmB,WAC7DA,EAAa,IAAI0iB,GAAWh4C,KAAKg3B,MAAOqK,GAK9C,OAJIA,EAAKmE,aACPxlC,KAAKooF,kBAAoB/4E,OAAOwyC,OAAOvsB,IAGlCA,CACT,CAKAmJ,UAAAA,GACE,OAAOz+B,KAAKu9C,WACZv9C,KAAKu9C,SAAWwpC,GAAqB/mF,KAAKg3B,MAAMyH,aAAcz+B,KAAMA,KAAKqoF,eAC3E,CAEAO,QAAAA,CAAS/tD,EAAS1rB,GAChB,MAAM,UAAC8lC,GAAa9lC,EAEdg4E,EAAcY,GAA2B9yC,EAAW,cAAej1C,KAAM66B,GACzEhsB,EAAQk5E,GAA2B9yC,EAAW,QAASj1C,KAAM66B,GAC7DwsD,EAAaU,GAA2B9yC,EAAW,aAAcj1C,KAAM66B,GAE7E,IAAI6H,EAAQ,GAKZ,OAJAA,EAAQuhD,GAAavhD,EAAOyhD,GAAcgD,IAC1CzkD,EAAQuhD,GAAavhD,EAAOyhD,GAAct1E,IAC1C6zB,EAAQuhD,GAAavhD,EAAOyhD,GAAckD,IAEnC3kD,CACT,CAEAmmD,aAAAA,CAAc7B,EAAc73E,GAC1B,OAAO23E,GACLiB,GAA2B54E,EAAQ8lC,UAAW,aAAcj1C,KAAMgnF,GAEtE,CAEA8B,OAAAA,CAAQ9B,EAAc73E,GACpB,MAAM,UAAC8lC,GAAa9lC,EACd45E,EAAY,GAgBlB,OAdA1iE,GAAK2gE,EAAensD,IAClB,MAAMmqD,EAAW,CACfC,OAAQ,GACRviD,MAAO,GACPwiD,MAAO,IAEH8D,EAAS/B,GAAkBhyC,EAAWpa,GAC5CopD,GAAae,EAASC,OAAQd,GAAc4D,GAA2BiB,EAAQ,cAAehpF,KAAM66B,KACpGopD,GAAae,EAAStiD,MAAOqlD,GAA2BiB,EAAQ,QAAShpF,KAAM66B,IAC/EopD,GAAae,EAASE,MAAOf,GAAc4D,GAA2BiB,EAAQ,aAAchpF,KAAM66B,KAElGkuD,EAAU1gE,KAAK28D,KAGV+D,CACT,CAEAE,YAAAA,CAAajC,EAAc73E,GACzB,OAAO23E,GACLiB,GAA2B54E,EAAQ8lC,UAAW,YAAaj1C,KAAMgnF,GAErE,CAGAkC,SAAAA,CAAUlC,EAAc73E,GACtB,MAAM,UAAC8lC,GAAa9lC,EAEd04E,EAAeE,GAA2B9yC,EAAW,eAAgBj1C,KAAMgnF,GAC3EvC,EAASsD,GAA2B9yC,EAAW,SAAUj1C,KAAMgnF,GAC/Dc,EAAcC,GAA2B9yC,EAAW,cAAej1C,KAAMgnF,GAE/E,IAAItkD,EAAQ,GAKZ,OAJAA,EAAQuhD,GAAavhD,EAAOyhD,GAAc0D,IAC1CnlD,EAAQuhD,GAAavhD,EAAOyhD,GAAcM,IAC1C/hD,EAAQuhD,GAAavhD,EAAOyhD,GAAc2D,IAEnCplD,CACT,CAKAymD,YAAAA,CAAah6E,GACX,MAAM+lB,EAASl1B,KAAK21C,QACdj2C,EAAOM,KAAKg3B,MAAMt3B,KAClB+oF,EAAc,GACdC,EAAmB,GACnBC,EAAkB,GACxB,IACI9yE,EAAGb,EADHgyE,EAAe,GAGnB,IAAKnxE,EAAI,EAAGb,EAAMkgB,EAAOxuB,OAAQmP,EAAIb,IAAOa,EAC1CmxE,EAAa3+D,KAAK+7D,GAAkBpkF,KAAKg3B,MAAO9B,EAAOrf,KAyBzD,OArBI1G,EAAQi5B,SACV4+C,EAAeA,EAAa5+C,OAAO,CAACqE,EAAS/tC,EAAOusB,IAAU9b,EAAQi5B,OAAOqE,EAAS/tC,EAAOusB,EAAOvrB,KAIlGyP,EAAQi6E,WACVpC,EAAeA,EAAaz8D,KAAK,CAACvW,EAAGC,IAAM9E,EAAQi6E,SAASp1E,EAAGC,EAAGvU,KAIpE2mB,GAAK2gE,EAAensD,IAClB,MAAMmuD,EAAS/B,GAAkB93E,EAAQ8lC,UAAWpa,GACpD4tD,EAAYpgE,KAAK0/D,GAA2BiB,EAAQ,aAAchpF,KAAM66B,IACxE6tD,EAAiBrgE,KAAK0/D,GAA2BiB,EAAQ,kBAAmBhpF,KAAM66B,IAClF8tD,EAAgBtgE,KAAK0/D,GAA2BiB,EAAQ,iBAAkBhpF,KAAM66B,MAGlF76B,KAAKyoF,YAAcA,EACnBzoF,KAAK0oF,iBAAmBA,EACxB1oF,KAAK2oF,gBAAkBA,EACvB3oF,KAAKsoF,WAAatB,EACXA,CACT,CAEAvvC,MAAAA,CAAO1lB,EAASohD,GACd,MAAMhkE,EAAUnP,KAAKmP,QAAQ63B,WAAWhnC,KAAKy+B,cACvCvJ,EAASl1B,KAAK21C,QACpB,IAAI1gB,EACA+xD,EAAe,GAEnB,GAAK9xD,EAAOxuB,OAML,CACL,MAAMkqD,EAAW8yB,GAAYv0E,EAAQyhD,UAAUxrC,KAAKplB,KAAMk1B,EAAQl1B,KAAKkoF,gBACvElB,EAAehnF,KAAKmpF,aAAah6E,GAEjCnP,KAAK6O,MAAQ7O,KAAK4oF,SAAS5B,EAAc73E,GACzCnP,KAAKmlF,WAAanlF,KAAK6oF,cAAc7B,EAAc73E,GACnDnP,KAAKwkF,KAAOxkF,KAAK8oF,QAAQ9B,EAAc73E,GACvCnP,KAAKolF,UAAYplF,KAAKipF,aAAajC,EAAc73E,GACjDnP,KAAKykF,OAASzkF,KAAKkpF,UAAUlC,EAAc73E,GAE3C,MAAMT,EAAO1O,KAAKmoF,MAAQ7D,GAAetkF,KAAMmP,GACzCk6E,EAAkBh6E,OAAO8T,OAAO,CAAC,EAAGytC,EAAUliD,GAC9Ck4E,EAAYL,GAAmBvmF,KAAKg3B,MAAO7nB,EAASk6E,GACpDC,EAAkB3C,GAAmBx3E,EAASk6E,EAAiBzC,EAAW5mF,KAAKg3B,OAErFh3B,KAAKgmF,OAASY,EAAUZ,OACxBhmF,KAAKqmF,OAASO,EAAUP,OAExBpxD,EAAa,CACXgzD,QAAS,EACTlxE,EAAGuyE,EAAgBvyE,EACnBiR,EAAGshE,EAAgBthE,EACnB/nB,MAAOyO,EAAKzO,MACZ2+B,OAAQlwB,EAAKkwB,OACb2pD,OAAQ33B,EAAS75C,EACjByxE,OAAQ53B,EAAS5oC,E,MA9BE,IAAjBhoB,KAAKioF,UACPhzD,EAAa,CACXgzD,QAAS,IAgCfjoF,KAAKqoF,cAAgBrB,EACrBhnF,KAAKu9C,cAAWpoC,EAEZ8f,GACFj1B,KAAK8hD,qBAAqBrK,OAAOz3C,KAAMi1B,GAGrClD,GAAW5iB,EAAQo6E,UACrBp6E,EAAQo6E,SAASnkE,KAAKplB,KAAM,CAACg3B,MAAOh3B,KAAKg3B,MAAOutD,QAASvkF,KAAMmzE,UAEnE,CAEAqW,SAAAA,CAAUC,EAAcluD,EAAK7sB,EAAMS,GACjC,MAAMu6E,EAAgB1pF,KAAK2pF,iBAAiBF,EAAc/6E,EAAMS,GAEhEosB,EAAIwE,OAAO2pD,EAAc3lB,GAAI2lB,EAAc1lB,IAC3CzoC,EAAIwE,OAAO2pD,EAAczlB,GAAIylB,EAAcxlB,IAC3C3oC,EAAIwE,OAAO2pD,EAAcE,GAAIF,EAAcG,GAC7C,CAEAF,gBAAAA,CAAiBF,EAAc/6E,EAAMS,GACnC,MAAM,OAAC62E,EAAM,OAAEK,GAAUrmF,MACnB,UAACkmF,EAAA,aAAWjnD,GAAgB9vB,GAC5B,QAAC+zB,EAAO,SAAEG,EAAQ,WAAEF,EAAA,YAAYC,GAAeY,GAAc/E,IAC5DloB,EAAG+yE,EAAK9hE,EAAG+hE,GAAON,GACnB,MAACxpF,EAAA,OAAO2+B,GAAUlwB,EACxB,IAAIq1D,EAAIE,EAAI2lB,EAAI5lB,EAAIE,EAAI2lB,EAgDxB,MA9Ce,WAAXxD,GACFniB,EAAK6lB,EAAOnrD,EAAS,EAEN,SAAXonD,GACFjiB,EAAK+lB,EACL7lB,EAAKF,EAAKmiB,EAGVliB,EAAKE,EAAKgiB,EACV2D,EAAK3lB,EAAKgiB,IAEVniB,EAAK+lB,EAAM7pF,EACXgkE,EAAKF,EAAKmiB,EAGVliB,EAAKE,EAAKgiB,EACV2D,EAAK3lB,EAAKgiB,GAGZ0D,EAAK7lB,IAGHE,EADa,SAAX+hB,EACG8D,EAAMx5E,KAAK6C,IAAI+vB,EAASC,GAAe+iD,EACxB,UAAXF,EACJ8D,EAAM7pF,EAAQqQ,KAAK6C,IAAIkwB,EAAUD,GAAe8iD,EAEhDlmF,KAAKuoF,OAGG,QAAXlC,GACFriB,EAAK+lB,EACL7lB,EAAKF,EAAKkiB,EAGVniB,EAAKE,EAAKiiB,EACV0D,EAAK3lB,EAAKiiB,IAEVliB,EAAK+lB,EAAMnrD,EACXslC,EAAKF,EAAKkiB,EAGVniB,EAAKE,EAAKiiB,EACV0D,EAAK3lB,EAAKiiB,GAEZ2D,EAAK7lB,GAEA,CAACD,KAAIE,KAAI2lB,KAAI5lB,KAAIE,KAAI2lB,KAC9B,CAEAjkB,SAAAA,CAAUx6B,EAAI7P,EAAKpsB,GACjB,MAAMN,EAAQ7O,KAAK6O,MACbnI,EAASmI,EAAMnI,OACrB,IAAI67E,EAAW8C,EAAcxvE,EAE7B,GAAInP,EAAQ,CACV,MAAM86E,EAAY7wC,GAAcxhC,EAAQ6gB,IAAKhwB,KAAK+W,EAAG/W,KAAKC,OAa1D,IAXAmrC,EAAGr0B,EAAI8vE,GAAY7mF,KAAMmP,EAAQ4tD,WAAY5tD,GAE7CosB,EAAIiG,UAAYggD,EAAUhgD,UAAUryB,EAAQ4tD,YAC5CxhC,EAAIkG,aAAe,SAEnB8gD,EAAYr+C,GAAO/0B,EAAQozE,WAC3B8C,EAAel2E,EAAQk2E,aAEvB9pD,EAAIgG,UAAYpyB,EAAQ66E,WACxBzuD,EAAIL,KAAOqnD,EAAUjlD,OAEhBznB,EAAI,EAAGA,EAAInP,IAAUmP,EACxB0lB,EAAIyH,SAASn0B,EAAMgH,GAAI2rE,EAAUzqE,EAAEq0B,EAAGr0B,GAAIq0B,EAAGpjB,EAAIu6D,EAAUnnD,WAAa,GACxEgQ,EAAGpjB,GAAKu6D,EAAUnnD,WAAaiqD,EAE3BxvE,EAAI,IAAMnP,IACZ0kC,EAAGpjB,GAAK7Y,EAAQm2E,kBAAoBD,E,CAI5C,CAKA4E,aAAAA,CAAc1uD,EAAK6P,EAAIv1B,EAAG2rE,EAAWryE,GACnC,MAAMq4E,EAAaxnF,KAAKyoF,YAAY5yE,GAC9B8xE,EAAkB3nF,KAAK0oF,iBAAiB7yE,IACxC,UAAC6pE,EAAA,SAAWC,GAAYxwE,EACxBu1E,EAAWxgD,GAAO/0B,EAAQu1E,UAC1BwF,EAASrD,GAAY7mF,KAAM,OAAQmP,GACnCg7E,EAAY3I,EAAUzqE,EAAEmzE,GACxBE,EAAU1K,EAAYgF,EAAStpD,YAAcspD,EAAStpD,WAAaskD,GAAa,EAAI,EACpF2K,EAASj/C,EAAGpjB,EAAIoiE,EAEtB,GAAIj7E,EAAQywE,cAAe,CACzB,MAAMmC,EAAc,CAClBziD,OAAQhvB,KAAK8C,IAAIusE,EAAUD,GAAa,EACxCtgD,WAAYuoD,EAAgBvoD,WAC5BC,SAAUsoD,EAAgBtoD,SAC1Bc,YAAa,GAITosB,EAAUi1B,EAAUjxC,WAAW45C,EAAWxK,GAAYA,EAAW,EACjEnzB,EAAU69B,EAAS3K,EAAY,EAGrCnkD,EAAI6G,YAAcjzB,EAAQm7E,mBAC1B/uD,EAAIgG,UAAYpyB,EAAQm7E,mBACxBzrD,GAAUtD,EAAKwmD,EAAax1B,EAASC,GAGrCjxB,EAAI6G,YAAcolD,EAAW9sD,YAC7Ba,EAAIgG,UAAYimD,EAAW/sD,gBAC3BoE,GAAUtD,EAAKwmD,EAAax1B,EAASC,E,KAChC,CAELjxB,EAAIjD,UAAYhT,GAASkiE,EAAWrnD,aAAe7vB,KAAK6C,OAAO9D,OAAOse,OAAO65D,EAAWrnD,cAAiBqnD,EAAWrnD,aAAe,EACnI5E,EAAI6G,YAAcolD,EAAW9sD,YAC7Ba,EAAIgqC,YAAYiiB,EAAWxzC,YAAc,IACzCzY,EAAI8xB,eAAiBm6B,EAAWvzC,kBAAoB,EAGpD,MAAMs2C,EAAS/I,EAAUjxC,WAAW45C,EAAWxK,GACzC6K,EAAShJ,EAAUjxC,WAAWixC,EAAUlxC,MAAM65C,EAAW,GAAIxK,EAAW,GACxEzyB,EAAelpB,GAAcwjD,EAAWt6B,cAE1C79C,OAAOse,OAAOu/B,GAAcoc,KAAKv2D,GAAW,IAANA,IACxCwoB,EAAImE,YACJnE,EAAIgG,UAAYpyB,EAAQm7E,mBACxBrnD,GAAmB1H,EAAK,CACtBxkB,EAAGwzE,EACHviE,EAAGqiE,EACH10E,EAAGgqE,EACHzsE,EAAGwsE,EACHpgD,OAAQ4tB,IAEV3xB,EAAI2E,OACJ3E,EAAI6E,SAGJ7E,EAAIgG,UAAYimD,EAAW/sD,gBAC3Bc,EAAImE,YACJuD,GAAmB1H,EAAK,CACtBxkB,EAAGyzE,EACHxiE,EAAGqiE,EAAS,EACZ10E,EAAGgqE,EAAW,EACdzsE,EAAGwsE,EAAY,EACfpgD,OAAQ4tB,IAEV3xB,EAAI2E,SAGJ3E,EAAIgG,UAAYpyB,EAAQm7E,mBACxB/uD,EAAIiH,SAAS+nD,EAAQF,EAAQ1K,EAAUD,GACvCnkD,EAAIkvD,WAAWF,EAAQF,EAAQ1K,EAAUD,GAEzCnkD,EAAIgG,UAAYimD,EAAW/sD,gBAC3Bc,EAAIiH,SAASgoD,EAAQH,EAAS,EAAG1K,EAAW,EAAGD,EAAY,G,CAK/DnkD,EAAIgG,UAAYvhC,KAAK2oF,gBAAgB9yE,EACvC,CAEA60E,QAAAA,CAASt/C,EAAI7P,EAAKpsB,GAChB,MAAM,KAACq1E,GAAQxkF,MACT,YAACylF,EAAA,UAAakF,EAAA,cAAWnF,EAAA,UAAe9F,EAAA,SAAWC,EAAA,WAAUxrB,GAAchlD,EAC3Eu1E,EAAWxgD,GAAO/0B,EAAQu1E,UAChC,IAAIa,EAAiBb,EAAStpD,WAC1BwvD,EAAe,EAEnB,MAAMpJ,EAAY7wC,GAAcxhC,EAAQ6gB,IAAKhwB,KAAK+W,EAAG/W,KAAKC,OAEpD4qF,EAAiB,SAASlpD,GAC9BpG,EAAIyH,SAASrB,EAAM6/C,EAAUzqE,EAAEq0B,EAAGr0B,EAAI6zE,GAAex/C,EAAGpjB,EAAIu9D,EAAiB,GAC7En6C,EAAGpjB,GAAKu9D,EAAiBE,CAC3B,EAEMqF,EAA0BtJ,EAAUhgD,UAAUmpD,GACpD,IAAI3F,EAAU+F,EAAWroD,EAAO7sB,EAAG+L,EAAG+E,EAAMmX,EAiB5C,IAfAvC,EAAIiG,UAAYmpD,EAChBpvD,EAAIkG,aAAe,SACnBlG,EAAIL,KAAOwpD,EAASpnD,OAEpB8N,EAAGr0B,EAAI8vE,GAAY7mF,KAAM8qF,EAAyB37E,GAGlDosB,EAAIgG,UAAYpyB,EAAQu4E,UACxBrhE,GAAKrmB,KAAKmlF,WAAY0F,GAEtBD,EAAepF,GAA6C,UAA5BsF,EACd,WAAdH,EAA0BhL,EAAW,EAAIxrB,EAAewrB,EAAW,EAAIxrB,EACvE,EAGCt+C,EAAI,EAAG8Q,EAAO69D,EAAK99E,OAAQmP,EAAI8Q,IAAQ9Q,EAAG,CAc7C,IAbAmvE,EAAWR,EAAK3uE,GAChBk1E,EAAY/qF,KAAK2oF,gBAAgB9yE,GAEjC0lB,EAAIgG,UAAYwpD,EAChB1kE,GAAK2+D,EAASC,OAAQ4F,GAEtBnoD,EAAQsiD,EAAStiD,MAEb8iD,GAAiB9iD,EAAMh8B,SACzB1G,KAAKiqF,cAAc1uD,EAAK6P,EAAIv1B,EAAG2rE,EAAWryE,GAC1Co2E,EAAiBj1E,KAAK6C,IAAIuxE,EAAStpD,WAAYskD,IAG5C99D,EAAI,EAAGkc,EAAO4E,EAAMh8B,OAAQkb,EAAIkc,IAAQlc,EAC3CipE,EAAenoD,EAAM9gB,IAErB2jE,EAAiBb,EAAStpD,WAG5B/U,GAAK2+D,EAASE,MAAO2F,EACvB,CAGAD,EAAe,EACfrF,EAAiBb,EAAStpD,WAG1B/U,GAAKrmB,KAAKolF,UAAWyF,GACrBz/C,EAAGpjB,GAAKy9D,CACV,CAEAuF,UAAAA,CAAW5/C,EAAI7P,EAAKpsB,GAClB,MAAMs1E,EAASzkF,KAAKykF,OACd/9E,EAAS+9E,EAAO/9E,OACtB,IAAIi+E,EAAY9uE,EAEhB,GAAInP,EAAQ,CACV,MAAM86E,EAAY7wC,GAAcxhC,EAAQ6gB,IAAKhwB,KAAK+W,EAAG/W,KAAKC,OAa1D,IAXAmrC,EAAGr0B,EAAI8vE,GAAY7mF,KAAMmP,EAAQ87E,YAAa97E,GAC9Ci8B,EAAGpjB,GAAK7Y,EAAQu2E,gBAEhBnqD,EAAIiG,UAAYggD,EAAUhgD,UAAUryB,EAAQ87E,aAC5C1vD,EAAIkG,aAAe,SAEnBkjD,EAAazgD,GAAO/0B,EAAQw1E,YAE5BppD,EAAIgG,UAAYpyB,EAAQ+7E,YACxB3vD,EAAIL,KAAOypD,EAAWrnD,OAEjBznB,EAAI,EAAGA,EAAInP,IAAUmP,EACxB0lB,EAAIyH,SAASyhD,EAAO5uE,GAAI2rE,EAAUzqE,EAAEq0B,EAAGr0B,GAAIq0B,EAAGpjB,EAAI28D,EAAWvpD,WAAa,GAC1EgQ,EAAGpjB,GAAK28D,EAAWvpD,WAAajsB,EAAQw2E,a,CAG9C,CAEAvgB,cAAAA,CAAeh6B,EAAI7P,EAAK4vD,EAAah8E,GACnC,MAAM,OAAC62E,EAAM,OAAEK,GAAUrmF,MACnB,EAAC+W,EAAA,EAAGiR,GAAKojB,GACT,MAACnrC,EAAA,OAAO2+B,GAAUusD,GAClB,QAACjoD,EAAA,SAASG,EAAA,WAAUF,EAAA,YAAYC,GAAeY,GAAc70B,EAAQ8vB,cAE3E1D,EAAIgG,UAAYpyB,EAAQsrB,gBACxBc,EAAI6G,YAAcjzB,EAAQurB,YAC1Ba,EAAIjD,UAAYnpB,EAAQgxB,YAExB5E,EAAImE,YACJnE,EAAIuE,OAAO/oB,EAAImsB,EAASlb,GACT,QAAXq+D,GACFrmF,KAAKwpF,UAAUp+C,EAAI7P,EAAK4vD,EAAah8E,GAEvCosB,EAAIwE,OAAOhpB,EAAI9W,EAAQojC,EAAUrb,GACjCuT,EAAI6vD,iBAAiBr0E,EAAI9W,EAAO+nB,EAAGjR,EAAI9W,EAAO+nB,EAAIqb,GACnC,WAAXgjD,GAAkC,UAAXL,GACzBhmF,KAAKwpF,UAAUp+C,EAAI7P,EAAK4vD,EAAah8E,GAEvCosB,EAAIwE,OAAOhpB,EAAI9W,EAAO+nB,EAAI4W,EAASwE,GACnC7H,EAAI6vD,iBAAiBr0E,EAAI9W,EAAO+nB,EAAI4W,EAAQ7nB,EAAI9W,EAAQmjC,EAAapb,EAAI4W,GAC1D,WAAXynD,GACFrmF,KAAKwpF,UAAUp+C,EAAI7P,EAAK4vD,EAAah8E,GAEvCosB,EAAIwE,OAAOhpB,EAAIosB,EAAYnb,EAAI4W,GAC/BrD,EAAI6vD,iBAAiBr0E,EAAGiR,EAAI4W,EAAQ7nB,EAAGiR,EAAI4W,EAASuE,GACrC,WAAXkjD,GAAkC,SAAXL,GACzBhmF,KAAKwpF,UAAUp+C,EAAI7P,EAAK4vD,EAAah8E,GAEvCosB,EAAIwE,OAAOhpB,EAAGiR,EAAIkb,GAClB3H,EAAI6vD,iBAAiBr0E,EAAGiR,EAAGjR,EAAImsB,EAASlb,GACxCuT,EAAIsE,YAEJtE,EAAI2E,OAEA/wB,EAAQgxB,YAAc,GACxB5E,EAAI6E,QAER,CAMAirD,sBAAAA,CAAuBl8E,GACrB,MAAM6nB,EAAQh3B,KAAKg3B,MACbge,EAAQh1C,KAAK84C,YACbwyC,EAAQt2C,GAASA,EAAMj+B,EACvBw0E,EAAQv2C,GAASA,EAAMhtB,EAC7B,GAAIsjE,GAASC,EAAO,CAClB,MAAM36B,EAAW8yB,GAAYv0E,EAAQyhD,UAAUxrC,KAAKplB,KAAMA,KAAK21C,QAAS31C,KAAKkoF,gBAC7E,IAAKt3B,EACH,OAEF,MAAMliD,EAAO1O,KAAKmoF,MAAQ7D,GAAetkF,KAAMmP,GACzCk6E,EAAkBh6E,OAAO8T,OAAO,CAAC,EAAGytC,EAAU5wD,KAAKmoF,OACnDvB,EAAYL,GAAmBvvD,EAAO7nB,EAASk6E,GAC/Cj4D,EAAQu1D,GAAmBx3E,EAASk6E,EAAiBzC,EAAW5vD,GAClEs0D,EAAM/zC,MAAQnmB,EAAMra,GAAKw0E,EAAMh0C,MAAQnmB,EAAMpJ,IAC/ChoB,KAAKgmF,OAASY,EAAUZ,OACxBhmF,KAAKqmF,OAASO,EAAUP,OACxBrmF,KAAKC,MAAQyO,EAAKzO,MAClBD,KAAK4+B,OAASlwB,EAAKkwB,OACnB5+B,KAAKuoF,OAAS33B,EAAS75C,EACvB/W,KAAKwoF,OAAS53B,EAAS5oC,EACvBhoB,KAAK8hD,qBAAqBrK,OAAOz3C,KAAMoxB,G,CAG7C,CAMAo6D,WAAAA,GACE,QAASxrF,KAAKioF,OAChB,CAEAvyC,IAAAA,CAAKna,GACH,MAAMpsB,EAAUnP,KAAKmP,QAAQ63B,WAAWhnC,KAAKy+B,cAC7C,IAAIwpD,EAAUjoF,KAAKioF,QAEnB,IAAKA,EACH,OAGFjoF,KAAKqrF,uBAAuBl8E,GAE5B,MAAMg8E,EAAc,CAClBlrF,MAAOD,KAAKC,MACZ2+B,OAAQ5+B,KAAK4+B,QAETwM,EAAK,CACTr0B,EAAG/W,KAAK+W,EACRiR,EAAGhoB,KAAKgoB,GAIVigE,EAAU33E,KAAKuZ,IAAIo+D,GAAW,KAAO,EAAIA,EAEzC,MAAMtyD,EAAUsO,GAAU90B,EAAQwmB,SAG5B81D,EAAoBzrF,KAAK6O,MAAMnI,QAAU1G,KAAKmlF,WAAWz+E,QAAU1G,KAAKwkF,KAAK99E,QAAU1G,KAAKolF,UAAU1+E,QAAU1G,KAAKykF,OAAO/9E,OAE9HyI,EAAQ0rD,SAAW4wB,IACrBlwD,EAAIsC,OACJtC,EAAImwD,YAAczD,EAGlBjoF,KAAKolE,eAAeh6B,EAAI7P,EAAK4vD,EAAah8E,GAE1CyhC,GAAsBrV,EAAKpsB,EAAQgzE,eAEnC/2C,EAAGpjB,GAAK2N,EAAQC,IAGhB51B,KAAK4lE,UAAUx6B,EAAI7P,EAAKpsB,GAGxBnP,KAAK0qF,SAASt/C,EAAI7P,EAAKpsB,GAGvBnP,KAAKgrF,WAAW5/C,EAAI7P,EAAKpsB,GAEzB+hC,GAAqB3V,EAAKpsB,EAAQgzE,eAElC5mD,EAAI0C,UAER,CAMA60C,iBAAAA,GACE,OAAO9yE,KAAK21C,SAAW,EACzB,CAOAo9B,iBAAAA,CAAkBC,EAAgB8Q,GAChC,MAAM7Q,EAAajzE,KAAK21C,QAClBzgB,EAAS89C,EAAe98D,IAAI,EAAE4Q,eAAcpoB,YAChD,MAAMyxB,EAAOnwB,KAAKg3B,MAAM8nB,eAAeh4B,GAEvC,IAAKqJ,EACH,MAAM,IAAI4X,MAAM,kCAAoCjhB,GAGtD,MAAO,CACLA,eACA2lB,QAAStc,EAAKzwB,KAAKhB,GACnBA,WAGEqzB,GAAWvL,GAAeysD,EAAY/9C,GACtCy2D,EAAkB3rF,KAAK4rF,iBAAiB12D,EAAQ4uD,IAElD/xD,GAAW45D,KACb3rF,KAAK21C,QAAUzgB,EACfl1B,KAAKkoF,eAAiBpE,EACtB9jF,KAAK6rF,qBAAsB,EAC3B7rF,KAAKy3C,QAAO,GAEhB,CASAorC,WAAAA,CAAYzuE,EAAG++D,EAAQvF,GAAc,GACnC,GAAIuF,GAAUnzE,KAAK6rF,oBACjB,OAAO,EAET7rF,KAAK6rF,qBAAsB,EAE3B,MAAM18E,EAAUnP,KAAKmP,QACf8jE,EAAajzE,KAAK21C,SAAW,GAC7BzgB,EAASl1B,KAAKyzE,mBAAmBr/D,EAAG6+D,EAAYE,EAAQvF,GAKxD+d,EAAkB3rF,KAAK4rF,iBAAiB12D,EAAQ9gB,GAGhD2d,EAAUohD,IAAW3sD,GAAe0O,EAAQ+9C,IAAe0Y,EAgBjE,OAbI55D,IACF/xB,KAAK21C,QAAUzgB,GAEX/lB,EAAQ0rD,SAAW1rD,EAAQo6E,YAC7BvpF,KAAKkoF,eAAiB,CACpBnxE,EAAG3C,EAAE2C,EACLiR,EAAG5T,EAAE4T,GAGPhoB,KAAKy3C,QAAO,EAAM07B,KAIfphD,CACT,CAWA0hD,kBAAAA,CAAmBr/D,EAAG6+D,EAAYE,EAAQvF,GACxC,MAAMz+D,EAAUnP,KAAKmP,QAErB,GAAe,aAAXiF,EAAE9U,KACJ,MAAO,GAGT,IAAKsuE,EAGH,OAAOqF,EAAW7qC,OAAOvyB,GACvB7V,KAAKg3B,MAAMt3B,KAAKi7B,SAAS9kB,EAAEiR,oBACiD3R,IAA5EnV,KAAKg3B,MAAM8nB,eAAejpC,EAAEiR,cAAcq0B,WAAWqF,UAAU3qC,EAAEnX,QAKrE,MAAMw2B,EAASl1B,KAAKg3B,MAAMi7C,0BAA0B79D,EAAGjF,EAAQysB,KAAMzsB,EAASgkE,GAM9E,OAJIhkE,EAAQoX,SACV2O,EAAO3O,UAGF2O,CACT,CASA02D,gBAAAA,CAAiB12D,EAAQ9gB,GACvB,MAAM,OAACm0E,EAAA,OAAQC,EAAA,QAAQr5E,GAAWnP,KAC5B4wD,EAAW8yB,GAAYv0E,EAAQyhD,UAAUxrC,KAAKplB,KAAMk1B,EAAQ9gB,GAClE,OAAoB,IAAbw8C,IAAuB23B,IAAW33B,EAAS75C,GAAKyxE,IAAW53B,EAAS5oC,EAC7E,GACD++B,EAAAA,GAAAA,GA5vBYihC,GAAgB,cAKNtE,IAyvBvB,IAAAoI,GAAe,CACb15E,GAAI,UACJkxE,SAAU0E,GACVtE,eAEAqI,SAAAA,CAAU/0D,EAAOkoD,EAAO/vE,GAClBA,IACF6nB,EAAMutD,QAAU,IAAIyD,GAAQ,CAAChxD,QAAO7nB,YAExC,EAEA4vD,YAAAA,CAAa/nC,EAAOkoD,EAAO/vE,GACrB6nB,EAAMutD,SACRvtD,EAAMutD,QAAQ5mC,WAAWxuC,EAE7B,EAEA8vC,KAAAA,CAAMjoB,EAAOkoD,EAAO/vE,GACd6nB,EAAMutD,SACRvtD,EAAMutD,QAAQ5mC,WAAWxuC,EAE7B,EAEA68E,SAAAA,CAAUh1D,GACR,MAAMutD,EAAUvtD,EAAMutD,QAEtB,GAAIA,GAAWA,EAAQiH,cAAe,CACpC,MAAMtsF,EAAO,CACXqlF,WAGF,IAA8E,IAA1EvtD,EAAMupC,cAAc,oBAAqB,IAAIrhE,EAAM6pE,YAAY,IACjE,OAGFwb,EAAQ7uC,KAAK1e,EAAMuE,KAEnBvE,EAAMupC,cAAc,mBAAoBrhE,E,CAE5C,EAEAqkF,UAAAA,CAAWvsD,EAAO93B,GAChB,GAAI83B,EAAMutD,QAAS,CAEjB,MAAMnzB,EAAmBlyD,EAAKi0E,OAC1Bn8C,EAAMutD,QAAQ1B,YAAY3jF,EAAK4uC,MAAOsjB,EAAkBlyD,EAAK0uE,eAE/D1uE,EAAK6yB,SAAU,E,CAGrB,EAEA2C,SAAU,CACRmmC,SAAS,EACT0uB,SAAU,KACV34B,SAAU,UACVn2B,gBAAiB,kBACjBuvD,WAAY,OACZzH,UAAW,CACTv+D,OAAQ,QAEVqhE,aAAc,EACdC,kBAAmB,EACnBvoB,WAAY,OACZ2qB,UAAW,OACXjC,YAAa,EACbf,SAAU,CAAC,EAEXiG,UAAW,OACXO,YAAa,OACbvF,cAAe,EACfD,gBAAiB,EACjBf,WAAY,CACV3gE,OAAQ,QAEVinE,YAAa,OACbt1D,QAAS,EACTwwD,aAAc,EACdD,UAAW,EACXjnD,aAAc,EACdygD,UAAWA,CAACnkD,EAAK8F,IAASA,EAAKqjD,SAASh2E,KACxCixE,SAAUA,CAACpkD,EAAK8F,IAASA,EAAKqjD,SAASh2E,KACvC47E,mBAAoB,OACpB9E,eAAe,EACfrxB,WAAY,EACZz5B,YAAa,gBACbyF,YAAa,EACbhL,UAAW,CACTR,SAAU,IACVC,OAAQ,gBAEVU,WAAY,CACVf,QAAS,CACPj1B,KAAM,SACN21B,WAAY,CAAC,IAAK,IAAK,QAAS,SAAU,SAAU,WAEtDgzD,QAAS,CACPrzD,OAAQ,SACRD,SAAU,MAGdsgB,UAAWiyC,IAGbvgB,cAAe,CACb+d,SAAU,OACVC,WAAY,OACZpC,UAAW,QAGbtoD,YAAa,CACXjF,YAAc51B,GAAkB,WAATA,GAA8B,aAATA,GAAgC,aAATA,EACnE21B,YAAY,EACZkgB,UAAW,CACTjgB,aAAa,EACbD,YAAY,GAEdI,UAAW,CACTL,WAAW,GAEbQ,WAAY,CACVR,UAAW,cAKfi3C,uBAAwB,CAAC,gBCj0C3B,MAAMkgB,GAAcA,CAAC9rC,EAAQjE,EAAKx9C,EAAOwtF,KACpB,kBAARhwC,GACTx9C,EAAQyhD,EAAO93B,KAAK6zB,GAAO,EAC3BgwC,EAAY5O,QAAQ,CAAC5+E,QAAOiQ,MAAOutC,KAC1BrxB,MAAMqxB,KACfx9C,EAAQ,MAEHA,GAGT,SAASytF,GAAehsC,EAAQjE,EAAKx9C,EAAOwtF,GAC1C,MAAMlxB,EAAQ7a,EAAO/4B,QAAQ80B,GAC7B,IAAe,IAAX8e,EACF,OAAOixB,GAAY9rC,EAAQjE,EAAKx9C,EAAOwtF,GAEzC,MAAM3+D,EAAO4yB,EAAOisC,YAAYlwC,GAChC,OAAO8e,IAAUztC,EAAO7uB,EAAQs8D,CAClC,CAEA,MAAMwB,GAAaA,CAAC99D,EAAOyU,IAAkB,OAAVzU,EAAiB,KAAOmuB,GAAYvc,KAAKC,MAAM7R,GAAQ,EAAGyU,GAE7F,SAASk5E,GAAkBvnF,GACzB,MAAMq7C,EAASngD,KAAKogD,YAEpB,OAAIt7C,GAAS,GAAKA,EAAQq7C,EAAOz5C,OACxBy5C,EAAOr7C,GAETA,CACT,CAEe,MAAMwnF,WAAsBlvB,GAazC35C,WAAAA,CAAYszB,GACVkQ,MAAMlQ,GAGN/2C,KAAKusF,iBAAcp3E,EACnBnV,KAAKwsF,YAAc,EACnBxsF,KAAKysF,aAAe,EACtB,CAEA18B,IAAAA,CAAKoa,GACH,MAAMuiB,EAAQ1sF,KAAKysF,aACnB,GAAIC,EAAMhmF,OAAQ,CAChB,MAAMy5C,EAASngD,KAAKogD,YACpB,IAAK,MAAM,MAAC1hD,EAAA,MAAOiQ,KAAU+9E,EACvBvsC,EAAOzhD,KAAWiQ,GACpBwxC,EAAOxxB,OAAOjwB,EAAO,GAGzBsB,KAAKysF,aAAe,E,CAEtBxlC,MAAM8I,KAAKoa,EACb,CAEAjhC,KAAAA,CAAMgT,EAAKx9C,GACT,GAAIumB,GAAci3B,GAChB,OAAO,KAET,MAAMiE,EAASngD,KAAKogD,YAGpB,OAFA1hD,EAAQ8mB,SAAS9mB,IAAUyhD,EAAOzhD,KAAWw9C,EAAMx9C,EAC/CytF,GAAehsC,EAAQjE,EAAKv2B,GAAejnB,EAAOw9C,GAAMl8C,KAAKysF,cAC1DjwB,GAAW99D,EAAOyhD,EAAOz5C,OAAS,EAC3C,CAEA24D,mBAAAA,GACE,MAAM,WAACvuC,EAAA,WAAYC,GAAc/wB,KAAKgxB,gBACtC,IAAI,IAAC5d,EAAG,IAAED,GAAOnT,KAAK6gD,WAAU,GAEJ,UAAxB7gD,KAAKmP,QAAQ+oB,SACVpH,IACH1d,EAAM,GAEH2d,IACH5d,EAAMnT,KAAKogD,YAAY15C,OAAS,IAIpC1G,KAAKoT,IAAMA,EACXpT,KAAKmT,IAAMA,CACb,CAEAqsD,UAAAA,GACE,MAAMpsD,EAAMpT,KAAKoT,IACXD,EAAMnT,KAAKmT,IACX6kB,EAASh4B,KAAKmP,QAAQ6oB,OACtBjB,EAAQ,GACd,IAAIopB,EAASngD,KAAKogD,YAGlBD,EAAkB,IAAT/sC,GAAcD,IAAQgtC,EAAOz5C,OAAS,EAAKy5C,EAASA,EAAO96B,MAAMjS,EAAKD,EAAM,GAErFnT,KAAKwsF,YAAcl8E,KAAK6C,IAAIgtC,EAAOz5C,QAAUsxB,EAAS,EAAI,GAAI,GAC9Dh4B,KAAKusF,YAAcvsF,KAAKoT,KAAO4kB,EAAS,GAAM,GAE9C,IAAK,IAAIlzB,EAAQsO,EAAKtO,GAASqO,EAAKrO,IAClCiyB,EAAM1O,KAAK,CAACvjB,UAEd,OAAOiyB,CACT,CAEAsqB,gBAAAA,CAAiBv8C,GACf,OAAOunF,GAAkBjnE,KAAKplB,KAAM8E,EACtC,CAKAqzC,SAAAA,GACE8O,MAAM9O,YAEDn4C,KAAKimD,iBAERjmD,KAAKywD,gBAAkBzwD,KAAKywD,eAEhC,CAGAx/B,gBAAAA,CAAiBnsB,GAKf,MAJqB,kBAAVA,IACTA,EAAQ9E,KAAKkpC,MAAMpkC,IAGJ,OAAVA,EAAiB87C,IAAM5gD,KAAK+oD,oBAAoBjkD,EAAQ9E,KAAKusF,aAAevsF,KAAKwsF,YAC1F,CAIAhoC,eAAAA,CAAgB9lD,GACd,MAAMq4B,EAAQ/2B,KAAK+2B,MACnB,OAAIr4B,EAAQ,GAAKA,EAAQq4B,EAAMrwB,OAAS,EAC/B,KAEF1G,KAAKixB,iBAAiB8F,EAAMr4B,GAAOoG,MAC5C,CAEAmkD,gBAAAA,CAAiB7qB,GACf,OAAO9tB,KAAKC,MAAMvQ,KAAKusF,YAAcvsF,KAAK+iE,mBAAmB3kC,GAASp+B,KAAKwsF,YAC7E,CAEArlC,YAAAA,GACE,OAAOnnD,KAAK61B,MACd,ECpIF,SAAS82D,GAAcC,EAAmBC,GACxC,MAAM91D,EAAQ,GAKR+1D,EAAc,OACd,OAAC50D,EAAM,KAAEksC,EAAA,IAAMhxD,EAAA,IAAKD,EAAG,UAAE45E,EAAA,MAAWr9E,EAAA,SAAOs9E,EAAQ,UAAEC,EAAA,cAAWC,GAAiBN,EACjFO,EAAO/oB,GAAQ,EACfgpB,EAAYJ,EAAW,GACtB55E,IAAKi6E,EAAMl6E,IAAKm6E,GAAQT,EACzB/7D,GAAc7L,GAAc7R,GAC5B2d,GAAc9L,GAAc9R,GAC5Bo6E,GAAgBtoE,GAAcvV,GAC9B89E,GAAcF,EAAOD,IAASJ,EAAY,GAChD,IACIt2C,EAAQ82C,EAASC,EAASC,EAD1BniC,EAAU1hC,IAASwjE,EAAOD,GAAQD,EAAYD,GAAQA,EAK1D,GAAI3hC,EAAUshC,IAAgBh8D,IAAeC,EAC3C,MAAO,CAAC,CAACjsB,MAAOuoF,GAAO,CAACvoF,MAAOwoF,IAGjCK,EAAYr9E,KAAKsrD,KAAK0xB,EAAO9hC,GAAWl7C,KAAK2Z,MAAMojE,EAAO7hC,GACtDmiC,EAAYP,IAEd5hC,EAAU1hC,GAAQ6jE,EAAYniC,EAAU4hC,EAAYD,GAAQA,GAGzDloE,GAAc8nE,KAEjBp2C,EAASrmC,KAAKmS,IAAI,GAAIsqE,GACtBvhC,EAAUl7C,KAAKsrD,KAAKpQ,EAAU7U,GAAUA,GAG3B,UAAXze,GACFu1D,EAAUn9E,KAAK2Z,MAAMojE,EAAO7hC,GAAWA,EACvCkiC,EAAUp9E,KAAKsrD,KAAK0xB,EAAO9hC,GAAWA,IAEtCiiC,EAAUJ,EACVK,EAAUJ,GAGRx8D,GAAcC,GAAcqzC,GAAQt5C,IAAa3X,EAAMC,GAAOgxD,EAAM5Y,EAAU,MAKhFmiC,EAAYr9E,KAAKC,MAAMD,KAAK8C,KAAKD,EAAMC,GAAOo4C,EAASwhC,IACvDxhC,GAAWr4C,EAAMC,GAAOu6E,EACxBF,EAAUr6E,EACVs6E,EAAUv6E,GACDo6E,GAITE,EAAU38D,EAAa1d,EAAMq6E,EAC7BC,EAAU38D,EAAa5d,EAAMu6E,EAC7BC,EAAYj+E,EAAQ,EACpB87C,GAAWkiC,EAAUD,GAAWE,IAGhCA,GAAaD,EAAUD,GAAWjiC,EAIhCmiC,EADEhkE,GAAagkE,EAAWr9E,KAAKC,MAAMo9E,GAAYniC,EAAU,KAC/Cl7C,KAAKC,MAAMo9E,GAEXr9E,KAAKsrD,KAAK+xB,IAM1B,MAAMC,EAAgBt9E,KAAK6C,IACzBoY,GAAeigC,GACfjgC,GAAekiE,IAEjB92C,EAASrmC,KAAKmS,IAAI,GAAIwC,GAAc8nE,GAAaa,EAAgBb,GACjEU,EAAUn9E,KAAKC,MAAMk9E,EAAU92C,GAAUA,EACzC+2C,EAAUp9E,KAAKC,MAAMm9E,EAAU/2C,GAAUA,EAEzC,IAAI/0B,EAAI,EAiBR,IAhBIkP,IACEo8D,GAAiBO,IAAYr6E,GAC/B2jB,EAAM1O,KAAK,CAACvjB,MAAOsO,IAEfq6E,EAAUr6E,GACZwO,IAGE+H,GAAarZ,KAAKC,OAAOk9E,EAAU7rE,EAAI4pC,GAAW7U,GAAUA,EAAQvjC,EAAKy6E,GAAkBz6E,EAAKo6E,EAAYZ,KAC9GhrE,KAEO6rE,EAAUr6E,GACnBwO,KAIGA,EAAI+rE,IAAa/rE,EAAG,CACzB,MAAMkV,EAAYxmB,KAAKC,OAAOk9E,EAAU7rE,EAAI4pC,GAAW7U,GAAUA,EACjE,GAAI5lB,GAAc+F,EAAY3jB,EAC5B,MAEF4jB,EAAM1O,KAAK,CAACvjB,MAAOgyB,GACrB,CAaA,OAXI/F,GAAcm8D,GAAiBQ,IAAYv6E,EAEzC4jB,EAAMrwB,QAAUijB,GAAaoN,EAAMA,EAAMrwB,OAAS,GAAG5B,MAAOqO,EAAK06E,GAAkB16E,EAAKq6E,EAAYZ,IACtG71D,EAAMA,EAAMrwB,OAAS,GAAG5B,MAAQqO,EAEhC4jB,EAAM1O,KAAK,CAACvjB,MAAOqO,IAEX4d,GAAc28D,IAAYv6E,GACpC4jB,EAAM1O,KAAK,CAACvjB,MAAO4oF,IAGd32D,CACT,CAEA,SAAS82D,GAAkB/oF,EAAO0oF,GAAY,WAACrnC,EAAU,YAAEntB,IACzD,MAAMuG,EAAMpU,GAAU6N,GAChBjW,GAASojC,EAAa71C,KAAK4hB,IAAIqN,GAAOjvB,KAAK6iB,IAAIoM,KAAS,KACxD74B,EAAS,IAAO8mF,GAAc,GAAK1oF,GAAO4B,OAChD,OAAO4J,KAAK8C,IAAIo6E,EAAazqE,EAAOrc,EACtC,EDMAqgD,EAAAA,GAAAA,GA5HqBulC,GAAsB,KAE7B,aAAWvlC,EAAAA,GAAAA,GAFJulC,GAAsB,WAOvB,CAChBv1D,MAAO,CACL9Q,SAAUomE,MC+GD,MAAMyB,WAAwB1wB,GAE3C35C,WAAAA,CAAYszB,GACVkQ,MAAMlQ,GAGN/2C,KAAKsG,WAAQ6O,EAEbnV,KAAKusB,SAAMpX,EAEXnV,KAAKusF,iBAAcp3E,EAEnBnV,KAAK+tF,eAAY54E,EACjBnV,KAAKwsF,YAAc,CACrB,CAEAtjD,KAAAA,CAAMgT,EAAKx9C,GACT,OAAIumB,GAAci3B,KAGE,kBAARA,GAAoBA,aAAe12C,UAAYggB,UAAU02B,GAF5D,MAMDA,CACV,CAEA8xC,sBAAAA,GACE,MAAM,YAAC/1D,GAAej4B,KAAKmP,SACrB,WAAC2hB,EAAA,WAAYC,GAAc/wB,KAAKgxB,gBACtC,IAAI,IAAC5d,EAAG,IAAED,GAAOnT,KAEjB,MAAMiuF,EAASl7E,GAAMK,EAAM0d,EAAa1d,EAAML,EACxCm7E,EAASn7E,GAAMI,EAAM4d,EAAa5d,EAAMJ,EAE9C,GAAIklB,EAAa,CACf,MAAMk2D,EAAUzkE,GAAKtW,GACfg7E,EAAU1kE,GAAKvW,GAEjBg7E,EAAU,GAAKC,EAAU,EAC3BF,EAAO,GACEC,EAAU,GAAKC,EAAU,GAClCH,EAAO,E,CAIX,GAAI76E,IAAQD,EAAK,CACf,IAAI6kB,EAAiB,IAAR7kB,EAAY,EAAI7C,KAAKuZ,IAAU,IAAN1W,GAEtC+6E,EAAO/6E,EAAM6kB,GAERC,GACHg2D,EAAO76E,EAAM4kB,E,CAGjBh4B,KAAKoT,IAAMA,EACXpT,KAAKmT,IAAMA,CACb,CAEAk7E,YAAAA,GACE,MAAM9zB,EAAWv6D,KAAKmP,QAAQ4nB,MAE9B,IACIi2D,GADA,cAACryB,EAAA,SAAe2zB,GAAY/zB,EAkBhC,OAfI+zB,GACFtB,EAAW18E,KAAKsrD,KAAK57D,KAAKmT,IAAMm7E,GAAYh+E,KAAK2Z,MAAMjqB,KAAKoT,IAAMk7E,GAAY,EAC1EtB,EAAW,MACb5oD,QAAQC,KAAK,UAAUrkC,KAAKoS,sBAAsBk8E,mCAA0CtB,8BAC5FA,EAAW,OAGbA,EAAWhtF,KAAKuuF,mBAChB5zB,EAAgBA,GAAiB,IAG/BA,IACFqyB,EAAW18E,KAAK8C,IAAIunD,EAAeqyB,IAG9BA,CACT,CAKAuB,gBAAAA,GACE,OAAO/oF,OAAO4jB,iBAChB,CAEAo2C,UAAAA,GACE,MAAMn+B,EAAOrhC,KAAKmP,QACZorD,EAAWl5B,EAAKtK,MAMtB,IAAIi2D,EAAWhtF,KAAKquF,eACpBrB,EAAW18E,KAAK6C,IAAI,EAAG65E,GAEvB,MAAMwB,EAA0B,CAC9BxB,WACA90D,OAAQmJ,EAAKnJ,OACb9kB,IAAKiuB,EAAKjuB,IACVD,IAAKkuB,EAAKluB,IACV45E,UAAWxyB,EAASwyB,UACpB3oB,KAAM7J,EAAS+zB,SACf5+E,MAAO6qD,EAAS7qD,MAChBu9E,UAAWjtF,KAAKgmE,aAChB7f,WAAYnmD,KAAKimD,eACjBjtB,YAAauhC,EAASvhC,aAAe,EACrCk0D,eAA0C,IAA3B3yB,EAAS2yB,eAEpBL,EAAY7sF,KAAK29D,QAAU39D,KAC3B+2B,EAAQ41D,GAAc6B,EAAyB3B,GAkBrD,MAdoB,UAAhBxrD,EAAKnJ,QACPlN,GAAmB+L,EAAO/2B,KAAM,SAG9BqhC,EAAK9a,SACPwQ,EAAMxQ,UAENvmB,KAAKsG,MAAQtG,KAAKmT,IAClBnT,KAAKusB,IAAMvsB,KAAKoT,MAEhBpT,KAAKsG,MAAQtG,KAAKoT,IAClBpT,KAAKusB,IAAMvsB,KAAKmT,KAGX4jB,CACT,CAKAohB,SAAAA,GACE,MAAMphB,EAAQ/2B,KAAK+2B,MACnB,IAAIzwB,EAAQtG,KAAKoT,IACbmZ,EAAMvsB,KAAKmT,IAIf,GAFA8zC,MAAM9O,YAEFn4C,KAAKmP,QAAQ6oB,QAAUjB,EAAMrwB,OAAQ,CACvC,MAAMsxB,GAAUzL,EAAMjmB,GAASgK,KAAK6C,IAAI4jB,EAAMrwB,OAAS,EAAG,GAAK,EAC/DJ,GAAS0xB,EACTzL,GAAOyL,C,CAETh4B,KAAKusF,YAAcjmF,EACnBtG,KAAK+tF,UAAYxhE,EACjBvsB,KAAKwsF,YAAcjgE,EAAMjmB,CAC3B,CAEA+6C,gBAAAA,CAAiBv8C,GACf,OAAO2xB,GAAa3xB,EAAO9E,KAAKg3B,MAAM7nB,QAAQ8mB,OAAQj2B,KAAKmP,QAAQ4nB,MAAMJ,OAC3E,EClTa,MAAM83D,WAAoBX,GAcvCzuB,mBAAAA,GACE,MAAM,IAACjsD,EAAG,IAAED,GAAOnT,KAAK6gD,WAAU,GAElC7gD,KAAKoT,IAAMmS,GAASnS,GAAOA,EAAM,EACjCpT,KAAKmT,IAAMoS,GAASpS,GAAOA,EAAM,EAGjCnT,KAAKguF,wBACP,CAMAO,gBAAAA,GACE,MAAMpoC,EAAanmD,KAAKimD,eAClBv/C,EAASy/C,EAAanmD,KAAKC,MAAQD,KAAK4+B,OACxC5F,EAAc7N,GAAUnrB,KAAKmP,QAAQ4nB,MAAMiC,aAC3CjW,GAASojC,EAAa71C,KAAK4hB,IAAI8G,GAAe1oB,KAAK6iB,IAAI6F,KAAiB,KACxEspC,EAAWtiE,KAAK2iE,wBAAwB,GAC9C,OAAOryD,KAAKsrD,KAAKl1D,EAAS4J,KAAK8C,IAAI,GAAIkvD,EAASlnC,WAAarY,GAC/D,CAGAkO,gBAAAA,CAAiBnsB,GACf,OAAiB,OAAVA,EAAiB87C,IAAM5gD,KAAK+oD,oBAAoBjkD,EAAQ9E,KAAKusF,aAAevsF,KAAKwsF,YAC1F,CAEAvjC,gBAAAA,CAAiB7qB,GACf,OAAOp+B,KAAKusF,YAAcvsF,KAAK+iE,mBAAmB3kC,GAASp+B,KAAKwsF,WAClE,GACFzlC,EAAAA,GAAAA,GA7CqB0nC,GAAoB,KAE3B,WAAS1nC,EAAAA,GAAAA,GAFF0nC,GAAoB,WAOrB,CAChB13D,MAAO,CACL9Q,SAAU4R,GAAMjB,WAAWC,WCPjC,MAAM63D,GAAa37E,GAAKzC,KAAK2Z,MAAMR,GAAM1W,IACnC47E,GAAiBA,CAAC57E,EAAGyD,IAAMlG,KAAKmS,IAAI,GAAIisE,GAAW37E,GAAKyD,GAE9D,SAASo4E,GAAQC,GACf,MAAMn3D,EAASm3D,EAAWv+E,KAAKmS,IAAI,GAAIisE,GAAWG,IAClD,OAAkB,IAAXn3D,CACT,CAEA,SAASo3D,GAAM17E,EAAKD,EAAK47E,GACvB,MAAMC,EAAY1+E,KAAKmS,IAAI,GAAIssE,GACzBzoF,EAAQgK,KAAK2Z,MAAM7W,EAAM47E,GACzBziE,EAAMjc,KAAKsrD,KAAKzoD,EAAM67E,GAC5B,OAAOziE,EAAMjmB,CACf,CAEA,SAAS2oF,GAAS77E,EAAKD,GACrB,MAAMjM,EAAQiM,EAAMC,EACpB,IAAI27E,EAAWL,GAAWxnF,GAC1B,MAAO4nF,GAAM17E,EAAKD,EAAK47E,GAAY,GACjCA,IAEF,MAAOD,GAAM17E,EAAKD,EAAK47E,GAAY,GACjCA,IAEF,OAAOz+E,KAAK8C,IAAI27E,EAAUL,GAAWt7E,GACvC,CASA,SAAS87E,GAActC,GAAmB,IAACx5E,EAAG,IAAED,IAC9CC,EAAMqS,GAAgBmnE,EAAkBx5E,IAAKA,GAC7C,MAAM2jB,EAAQ,GACRo4D,EAAST,GAAWt7E,GAC1B,IAAIg8E,EAAMH,GAAS77E,EAAKD,GACpB45E,EAAYqC,EAAM,EAAI9+E,KAAKmS,IAAI,GAAInS,KAAKuZ,IAAIulE,IAAQ,EACxD,MAAMd,EAAWh+E,KAAKmS,IAAI,GAAI2sE,GACxB9gE,EAAO6gE,EAASC,EAAM9+E,KAAKmS,IAAI,GAAI0sE,GAAU,EAC7C7oF,EAAQgK,KAAKC,OAAO6C,EAAMkb,GAAQy+D,GAAaA,EAC/C/0D,EAAS1nB,KAAK2Z,OAAO7W,EAAMkb,GAAQggE,EAAW,IAAMA,EAAW,GACrE,IAAI32D,EAAcrnB,KAAK2Z,OAAO3jB,EAAQ0xB,GAAU1nB,KAAKmS,IAAI,GAAI2sE,IACzDtqF,EAAQ2gB,GAAgBmnE,EAAkBx5E,IAAK9C,KAAKC,OAAO+d,EAAO0J,EAASL,EAAcrnB,KAAKmS,IAAI,GAAI2sE,IAAQrC,GAAaA,GAC/H,MAAOjoF,EAAQqO,EACb4jB,EAAM1O,KAAK,CAACvjB,QAAO20B,MAAOm1D,GAAQ9pF,GAAQ6yB,gBACtCA,GAAe,GACjBA,EAAcA,EAAc,GAAK,GAAK,GAEtCA,IAEEA,GAAe,KACjBy3D,IACAz3D,EAAc,EACdo1D,EAAYqC,GAAO,EAAI,EAAIrC,GAE7BjoF,EAAQwL,KAAKC,OAAO+d,EAAO0J,EAASL,EAAcrnB,KAAKmS,IAAI,GAAI2sE,IAAQrC,GAAaA,EAEtF,MAAMsC,EAAW5pE,GAAgBmnE,EAAkBz5E,IAAKrO,GAGxD,OAFAiyB,EAAM1O,KAAK,CAACvjB,MAAOuqF,EAAU51D,MAAOm1D,GAAQS,GAAW13D,gBAEhDZ,CACT,CAEe,MAAMu4D,WAAyBlyB,GAiB5C35C,WAAAA,CAAYszB,GACVkQ,MAAMlQ,GAGN/2C,KAAKsG,WAAQ6O,EAEbnV,KAAKusB,SAAMpX,EAEXnV,KAAKusF,iBAAcp3E,EACnBnV,KAAKwsF,YAAc,CACrB,CAEAtjD,KAAAA,CAAMgT,EAAKx9C,GACT,MAAMoG,EAAQgpF,GAAgB5oE,UAAUgkB,MAAM9iB,MAAMpmB,KAAM,CAACk8C,EAAKx9C,IAChE,GAAc,IAAVoG,EAIJ,OAAOygB,GAASzgB,IAAUA,EAAQ,EAAIA,EAAQ,KAH5C9E,KAAKuvF,OAAQ,CAIjB,CAEAlwB,mBAAAA,GACE,MAAM,IAACjsD,EAAG,IAAED,GAAOnT,KAAK6gD,WAAU,GAElC7gD,KAAKoT,IAAMmS,GAASnS,GAAO9C,KAAK6C,IAAI,EAAGC,GAAO,KAC9CpT,KAAKmT,IAAMoS,GAASpS,GAAO7C,KAAK6C,IAAI,EAAGA,GAAO,KAE1CnT,KAAKmP,QAAQ8oB,cACfj4B,KAAKuvF,OAAQ,GAKXvvF,KAAKuvF,OAASvvF,KAAKoT,MAAQpT,KAAKm+D,gBAAkB54C,GAASvlB,KAAKi+D,YAClEj+D,KAAKoT,IAAMA,IAAQu7E,GAAe3uF,KAAKoT,IAAK,GAAKu7E,GAAe3uF,KAAKoT,KAAM,GAAKu7E,GAAe3uF,KAAKoT,IAAK,IAG3GpT,KAAKguF,wBACP,CAEAA,sBAAAA,GACE,MAAM,WAACl9D,EAAA,WAAYC,GAAc/wB,KAAKgxB,gBACtC,IAAI5d,EAAMpT,KAAKoT,IACXD,EAAMnT,KAAKmT,IAEf,MAAM86E,EAASl7E,GAAMK,EAAM0d,EAAa1d,EAAML,EACxCm7E,EAASn7E,GAAMI,EAAM4d,EAAa5d,EAAMJ,EAE1CK,IAAQD,IACNC,GAAO,GACT66E,EAAO,GACPC,EAAO,MAEPD,EAAOU,GAAev7E,GAAM,IAC5B86E,EAAOS,GAAex7E,EAAK,MAG3BC,GAAO,GACT66E,EAAOU,GAAex7E,GAAM,IAE1BA,GAAO,GAET+6E,EAAOS,GAAev7E,EAAK,IAG7BpT,KAAKoT,IAAMA,EACXpT,KAAKmT,IAAMA,CACb,CAEAqsD,UAAAA,GACE,MAAMn+B,EAAOrhC,KAAKmP,QAEZy9E,EAAoB,CACxBx5E,IAAKpT,KAAKi+D,SACV9qD,IAAKnT,KAAKg+D,UAENjnC,EAAQm4D,GAActC,EAAmB5sF,MAkB/C,MAdoB,UAAhBqhC,EAAKnJ,QACPlN,GAAmB+L,EAAO/2B,KAAM,SAG9BqhC,EAAK9a,SACPwQ,EAAMxQ,UAENvmB,KAAKsG,MAAQtG,KAAKmT,IAClBnT,KAAKusB,IAAMvsB,KAAKoT,MAEhBpT,KAAKsG,MAAQtG,KAAKoT,IAClBpT,KAAKusB,IAAMvsB,KAAKmT,KAGX4jB,CACT,CAMAsqB,gBAAAA,CAAiBv8C,GACf,YAAiBqQ,IAAVrQ,EACH,IACA2xB,GAAa3xB,EAAO9E,KAAKg3B,MAAM7nB,QAAQ8mB,OAAQj2B,KAAKmP,QAAQ4nB,MAAMJ,OACxE,CAKAwhB,SAAAA,GACE,MAAM7xC,EAAQtG,KAAKoT,IAEnB6zC,MAAM9O,YAENn4C,KAAKusF,YAAc9iE,GAAMnjB,GACzBtG,KAAKwsF,YAAc/iE,GAAMzpB,KAAKmT,KAAOsW,GAAMnjB,EAC7C,CAEA2qB,gBAAAA,CAAiBnsB,GAIf,YAHcqQ,IAAVrQ,GAAiC,IAAVA,IACzBA,EAAQ9E,KAAKoT,KAED,OAAVtO,GAAkB+lB,MAAM/lB,GACnB87C,IAEF5gD,KAAK+oD,mBAAmBjkD,IAAU9E,KAAKoT,IAC1C,GACCqW,GAAM3kB,GAAS9E,KAAKusF,aAAevsF,KAAKwsF,YAC/C,CAEAvjC,gBAAAA,CAAiB7qB,GACf,MAAM0kC,EAAU9iE,KAAK+iE,mBAAmB3kC,GACxC,OAAO9tB,KAAKmS,IAAI,GAAIziB,KAAKusF,YAAczpB,EAAU9iE,KAAKwsF,YACxD,ECxNF,SAASgD,GAAsBnuD,GAC7B,MAAMk5B,EAAWl5B,EAAKtK,MAEtB,GAAIwjC,EAASxiC,SAAWsJ,EAAKtJ,QAAS,CACpC,MAAMpC,EAAUsO,GAAUs2B,EAAS1gC,iBACnC,OAAOlU,GAAe40C,EAASr/B,MAAQq/B,EAASr/B,KAAKxsB,KAAMgmB,GAASwG,KAAKxsB,MAAQinB,EAAQiJ,M,CAE3F,OAAO,CACT,CAEA,SAAS6wD,GAAiBl0D,EAAKL,EAAMvsB,GAEnC,OADAA,EAAQsH,GAAQtH,GAASA,EAAQ,CAACA,GAC3B,CACLgH,EAAG8nB,GAAalC,EAAKL,EAAKoC,OAAQ3uB,GAClCuE,EAAGvE,EAAMjI,OAASw0B,EAAKE,WAE3B,CAEA,SAASs0D,GAAgB5jE,EAAOohB,EAAKx+B,EAAM0E,EAAKD,GAC9C,OAAI2Y,IAAU1Y,GAAO0Y,IAAU3Y,EACtB,CACL7M,MAAO4mC,EAAOx+B,EAAO,EACrB6d,IAAK2gB,EAAOx+B,EAAO,GAEZod,EAAQ1Y,GAAO0Y,EAAQ3Y,EACzB,CACL7M,MAAO4mC,EAAMx+B,EACb6d,IAAK2gB,GAIF,CACL5mC,MAAO4mC,EACP3gB,IAAK2gB,EAAMx+B,EAEf,CAKA,SAASihF,GAAmBvzD,GA8B1B,MAAMuqB,EAAO,CACX1zC,EAAGmpB,EAAMtM,KAAOsM,EAAMwzD,SAAS9/D,KAC/Bnb,EAAGynB,EAAMrM,MAAQqM,EAAMwzD,SAAS7/D,MAChClN,EAAGuZ,EAAMxG,IAAMwG,EAAMwzD,SAASh6D,IAC9B3hB,EAAGmoB,EAAMvG,OAASuG,EAAMwzD,SAAS/5D,QAE7Bg6D,EAASxgF,OAAO8T,OAAO,CAAC,EAAGwjC,GAC3Bma,EAAa,GACbnrC,EAAU,GACVm6D,EAAa1zD,EAAM2zD,aAAarpF,OAChCspF,EAAiB5zD,EAAMjtB,QAAQigD,YAC/B6gC,EAAkBD,EAAeE,kBAAoBlnE,GAAK8mE,EAAa,EAE7E,IAAK,IAAIj6E,EAAI,EAAGA,EAAIi6E,EAAYj6E,IAAK,CACnC,MAAMwrB,EAAO2uD,EAAehpD,WAAW5K,EAAM+zD,qBAAqBt6E,IAClE8f,EAAQ9f,GAAKwrB,EAAK1L,QAClB,MAAM45B,EAAgBnzB,EAAMg0D,iBAAiBv6E,EAAGumB,EAAMi0D,YAAc16D,EAAQ9f,GAAIo6E,GAC1EK,EAASpsD,GAAO7C,EAAKnG,MACrBq1D,EAAWd,GAAiBrzD,EAAMb,IAAK+0D,EAAQl0D,EAAM2zD,aAAal6E,IACxEirD,EAAWjrD,GAAK06E,EAEhB,MAAM9uB,EAAep1C,GAAgB+P,EAAMyyB,cAAch5C,GAAKo6E,GACxDnkE,EAAQxb,KAAKC,MAAM8a,GAAUo2C,IAC7B+uB,EAAUd,GAAgB5jE,EAAOyjC,EAAcx4C,EAAGw5E,EAAS56E,EAAG,EAAG,KACjE86E,EAAUf,GAAgB5jE,EAAOyjC,EAAcvnC,EAAGuoE,EAASr9E,EAAG,GAAI,KACxEw9E,GAAab,EAAQlpC,EAAM8a,EAAc+uB,EAASC,EACpD,CAEAr0D,EAAMu0D,eACJhqC,EAAK1zC,EAAI48E,EAAO58E,EAChB48E,EAAOl7E,EAAIgyC,EAAKhyC,EAChBgyC,EAAK9jC,EAAIgtE,EAAOhtE,EAChBgtE,EAAO57E,EAAI0yC,EAAK1yC,GAIlBmoB,EAAMw0D,iBAAmBC,GAAqBz0D,EAAO0kC,EAAYnrC,EACnE,CAEA,SAAS+6D,GAAab,EAAQlpC,EAAM76B,EAAO0kE,EAASC,GAClD,MAAMv+D,EAAM5hB,KAAKuZ,IAAIvZ,KAAK4hB,IAAIpG,IACxBqH,EAAM7iB,KAAKuZ,IAAIvZ,KAAK6iB,IAAIrH,IAC9B,IAAI/U,EAAI,EACJiR,EAAI,EACJwoE,EAAQlqF,MAAQqgD,EAAK1zC,GACvB8D,GAAK4vC,EAAK1zC,EAAIu9E,EAAQlqF,OAAS4rB,EAC/B29D,EAAO58E,EAAI3C,KAAK8C,IAAIy8E,EAAO58E,EAAG0zC,EAAK1zC,EAAI8D,IAC9By5E,EAAQjkE,IAAMo6B,EAAKhyC,IAC5BoC,GAAKy5E,EAAQjkE,IAAMo6B,EAAKhyC,GAAKud,EAC7B29D,EAAOl7E,EAAIrE,KAAK6C,IAAI08E,EAAOl7E,EAAGgyC,EAAKhyC,EAAIoC,IAErC05E,EAAQnqF,MAAQqgD,EAAK9jC,GACvBmF,GAAK2+B,EAAK9jC,EAAI4tE,EAAQnqF,OAAS6sB,EAC/B08D,EAAOhtE,EAAIvS,KAAK8C,IAAIy8E,EAAOhtE,EAAG8jC,EAAK9jC,EAAImF,IAC9ByoE,EAAQlkE,IAAMo6B,EAAK1yC,IAC5B+T,GAAKyoE,EAAQlkE,IAAMo6B,EAAK1yC,GAAKkf,EAC7B08D,EAAO57E,EAAI3D,KAAK6C,IAAI08E,EAAO57E,EAAG0yC,EAAK1yC,EAAI+T,GAE3C,CAEA,SAAS8oE,GAAqB10D,EAAO19B,EAAOqyF,GAC1C,MAAMC,EAAgB50D,EAAMi0D,aACtB,MAACY,EAAA,gBAAOhB,EAAA,QAAiBt6D,EAAO,KAAEjnB,GAAQqiF,EAC1CG,EAAqB90D,EAAMg0D,iBAAiB1xF,EAAOsyF,EAAgBC,EAAQt7D,EAASs6D,GACpFnkE,EAAQxb,KAAKC,MAAM8a,GAAUgB,GAAgB6kE,EAAmBplE,MAAQxC,MACxEtB,EAAImpE,GAAUD,EAAmBlpE,EAAGtZ,EAAKwE,EAAG4Y,GAC5C0V,EAAY4vD,GAAqBtlE,GACjCgE,EAAOuhE,GAAiBH,EAAmBn6E,EAAGrI,EAAKiH,EAAG6rB,GAC5D,MAAO,CAELjM,SAAS,EAGTxe,EAAGm6E,EAAmBn6E,EACtBiR,IAGAwZ,YAGA1R,OACA8F,IAAK5N,EACL+H,MAAOD,EAAOphB,EAAKiH,EACnBkgB,OAAQ7N,EAAItZ,EAAKwE,EAErB,CAEA,SAASo+E,GAAgB9yF,EAAM8hC,GAC7B,IAAKA,EACH,OAAO,EAET,MAAM,KAACxQ,EAAA,IAAM8F,EAAA,MAAK7F,EAAK,OAAE8F,GAAUr3B,EAC7B+yF,EAAelxD,GAAe,CAACtpB,EAAG+Y,EAAM9H,EAAG4N,GAAM0K,IAASD,GAAe,CAACtpB,EAAG+Y,EAAM9H,EAAG6N,GAASyK,IACnGD,GAAe,CAACtpB,EAAGgZ,EAAO/H,EAAG4N,GAAM0K,IAASD,GAAe,CAACtpB,EAAGgZ,EAAO/H,EAAG6N,GAASyK,GACpF,OAAQixD,CACV,CAEA,SAASV,GAAqBz0D,EAAO0kC,EAAYnrC,GAC/C,MAAM9G,EAAQ,GACRihE,EAAa1zD,EAAM2zD,aAAarpF,OAChC26B,EAAOjF,EAAMjtB,SACb,kBAAC+gF,EAAiB,QAAEn4D,GAAWsJ,EAAK+tB,YACpC2hC,EAAW,CACfE,MAAOzB,GAAsBnuD,GAAQ,EACrC4uD,gBAAiBC,EAAoBlnE,GAAK8mE,EAAa,GAEzD,IAAIxvD,EAEJ,IAAK,IAAIzqB,EAAI,EAAGA,EAAIi6E,EAAYj6E,IAAK,CACnCk7E,EAASp7D,QAAUA,EAAQ9f,GAC3Bk7E,EAASriF,KAAOoyD,EAAWjrD,GAE3B,MAAMrX,EAAOsyF,GAAqB10D,EAAOvmB,EAAGk7E,GAC5CliE,EAAMxG,KAAK7pB,GACK,SAAZu5B,IACFv5B,EAAK+2B,QAAU+7D,GAAgB9yF,EAAM8hC,GACjC9hC,EAAK+2B,UACP+K,EAAO9hC,GAGb,CACA,OAAOqwB,CACT,CAEA,SAASuiE,GAAqBtlE,GAC5B,OAAc,IAAVA,GAAyB,MAAVA,EACV,SACEA,EAAQ,IACV,OAGF,OACT,CAEA,SAASulE,GAAiBt6E,EAAGpB,EAAGga,GAM9B,MALc,UAAVA,EACF5Y,GAAKpB,EACc,WAAVga,IACT5Y,GAAMpB,EAAI,GAELoB,CACT,CAEA,SAASo6E,GAAUnpE,EAAG9U,EAAG4Y,GAMvB,OALc,KAAVA,GAA0B,MAAVA,EAClB9D,GAAM9U,EAAI,GACD4Y,EAAQ,KAAOA,EAAQ,MAChC9D,GAAK9U,GAEA8U,CACT,CAEA,SAASwpE,GAAkBj2D,EAAK8F,EAAM7iC,GACpC,MAAM,KAACsxB,EAAA,IAAM8F,EAAA,MAAK7F,EAAK,OAAE8F,GAAUr3B,GAC7B,cAACo7B,GAAiByH,EAExB,IAAKpc,GAAc2U,GAAgB,CACjC,MAAMszB,EAAelpB,GAAc3C,EAAK6rB,cAClCv3B,EAAUsO,GAAU5C,EAAKxH,iBAC/B0B,EAAIgG,UAAY3H,EAEhB,MAAM63D,EAAe3hE,EAAO6F,EAAQ7F,KAC9B4hE,EAAc97D,EAAMD,EAAQC,IAC5B+7D,EAAgB5hE,EAAQD,EAAO6F,EAAQ11B,MACvC2xF,EAAiB/7D,EAASD,EAAMD,EAAQiJ,OAE1CvvB,OAAOse,OAAOu/B,GAAcoc,KAAKv2D,GAAW,IAANA,IACxCwoB,EAAImE,YACJuD,GAAmB1H,EAAK,CACtBxkB,EAAG06E,EACHzpE,EAAG0pE,EACH/7E,EAAGg8E,EACHz+E,EAAG0+E,EACHtyD,OAAQ4tB,IAEV3xB,EAAI2E,QAEJ3E,EAAIiH,SAASivD,EAAcC,EAAaC,EAAeC,E,CAG7D,CAEA,SAASC,GAAgBz1D,EAAOgrD,GAC9B,MAAM,IAAC7rD,EAAKpsB,SAAS,YAACigD,IAAgBhzB,EAEtC,IAAK,IAAIvmB,EAAIuxE,EAAa,EAAGvxE,GAAK,EAAGA,IAAK,CACxC,MAAMrX,EAAO49B,EAAMw0D,iBAAiB/6E,GACpC,IAAKrX,EAAK+2B,QAER,SAEF,MAAM8uC,EAAcjV,EAAYpoB,WAAW5K,EAAM+zD,qBAAqBt6E,IACtE27E,GAAkBj2D,EAAK8oC,EAAa7lE,GACpC,MAAM8xF,EAASpsD,GAAOmgC,EAAYnpC,OAC5B,EAACnkB,EAAC,EAAEiR,EAAA,UAAGwZ,GAAahjC,EAE1BikC,GACElH,EACAa,EAAM2zD,aAAal6E,GACnBkB,EACAiR,EAAKsoE,EAAOl1D,WAAa,EACzBk1D,EACA,CACEvsE,MAAOsgD,EAAYtgD,MACnByd,UAAWA,EACXC,aAAc,UAGpB,CACF,CAEA,SAASqwD,GAAe11D,EAAOkD,EAAQ6vB,EAAUi4B,GAC/C,MAAM,IAAC7rD,GAAOa,EACd,GAAI+yB,EAEF5zB,EAAIqE,IAAIxD,EAAMsyB,QAAStyB,EAAMuyB,QAASrvB,EAAQ,EAAGrW,QAC5C,CAEL,IAAIsmC,EAAgBnzB,EAAMg0D,iBAAiB,EAAG9wD,GAC9C/D,EAAIuE,OAAOyvB,EAAcx4C,EAAGw4C,EAAcvnC,GAE1C,IAAK,IAAInS,EAAI,EAAGA,EAAIuxE,EAAYvxE,IAC9B05C,EAAgBnzB,EAAMg0D,iBAAiBv6E,EAAGypB,GAC1C/D,EAAIwE,OAAOwvB,EAAcx4C,EAAGw4C,EAAcvnC,E,CAGhD,CAEA,SAAS+pE,GAAe31D,EAAO41D,EAAc1yD,EAAQ8nD,EAAY/jB,GAC/D,MAAM9nC,EAAMa,EAAMb,IACZ4zB,EAAW6iC,EAAa7iC,UAExB,MAACprC,EAAA,UAAOuU,GAAa05D,GAErB7iC,IAAai4B,IAAgBrjE,IAAUuU,GAAagH,EAAS,IAInE/D,EAAIsC,OACJtC,EAAI6G,YAAcre,EAClBwX,EAAIjD,UAAYA,EAChBiD,EAAIgqC,YAAYlC,EAAWxqC,MAAQ,IACnC0C,EAAI8xB,eAAiBgW,EAAWvqC,WAEhCyC,EAAImE,YACJoyD,GAAe11D,EAAOkD,EAAQ6vB,EAAUi4B,GACxC7rD,EAAIsE,YACJtE,EAAI6E,SACJ7E,EAAI0C,UACN,CAEA,SAASg0D,GAAwB1pD,EAAQ7pC,EAAOiQ,GAC9C,OAAOm2B,GAAcyD,EAAQ,CAC3B55B,QACAjQ,QACAY,KAAM,cAEV,ED9GAynD,EAAAA,GAAAA,GAxJqBuoC,GAAyB,KAEhC,gBAAcvoC,EAAAA,GAAAA,GAFPuoC,GAAyB,WAO1B,CAChBv4D,MAAO,CACL9Q,SAAU4R,GAAMjB,WAAWa,YAC3BgC,MAAO,CACLohC,SAAS,MC6PF,MAAMq3B,WAA0BpE,GA0E7CrqE,WAAAA,CAAYszB,GACVkQ,MAAMlQ,GAGN/2C,KAAK0uD,aAAUv5C,EAEfnV,KAAK2uD,aAAUx5C,EAEfnV,KAAKqwF,iBAAcl7E,EAEnBnV,KAAK+vF,aAAe,GACpB/vF,KAAK4wF,iBAAmB,EAC1B,CAEA1xB,aAAAA,GAEE,MAAMvpC,EAAU31B,KAAK4vF,SAAW3rD,GAAUurD,GAAsBxvF,KAAKmP,SAAW,GAC1EwG,EAAI3V,KAAKC,MAAQD,KAAK+iC,SAAWpN,EAAQ11B,MACzCiT,EAAIlT,KAAK4+B,OAAS5+B,KAAKouC,UAAYzY,EAAQiJ,OACjD5+B,KAAK0uD,QAAUp+C,KAAK2Z,MAAMjqB,KAAK8vB,KAAOna,EAAI,EAAIggB,EAAQ7F,MACtD9vB,KAAK2uD,QAAUr+C,KAAK2Z,MAAMjqB,KAAK41B,IAAM1iB,EAAI,EAAIyiB,EAAQC,KACrD51B,KAAKqwF,YAAc//E,KAAK2Z,MAAM3Z,KAAK8C,IAAIuC,EAAGzC,GAAK,EACjD,CAEAmsD,mBAAAA,GACE,MAAM,IAACjsD,EAAG,IAAED,GAAOnT,KAAK6gD,WAAU,GAElC7gD,KAAKoT,IAAMmS,GAASnS,KAASyX,MAAMzX,GAAOA,EAAM,EAChDpT,KAAKmT,IAAMoS,GAASpS,KAAS0X,MAAM1X,GAAOA,EAAM,EAGhDnT,KAAKguF,wBACP,CAMAO,gBAAAA,GACE,OAAOj+E,KAAKsrD,KAAK57D,KAAKqwF,YAAcb,GAAsBxvF,KAAKmP,SACjE,CAEAsxD,kBAAAA,CAAmB1pC,GACjB+2D,GAAgB5oE,UAAUu7C,mBAAmBr7C,KAAKplB,KAAM+2B,GAGxD/2B,KAAK+vF,aAAe/vF,KAAKogD,YACtBlqC,IAAI,CAACpR,EAAOpG,KACX,MAAMiQ,EAAQsX,GAAajmB,KAAKmP,QAAQigD,YAAYnpC,SAAU,CAACnhB,EAAOpG,GAAQsB,MAC9E,OAAO2O,GAAmB,IAAVA,EAAcA,EAAQ,KAEvCy5B,OAAO,CAACr1B,EAAG8C,IAAM7V,KAAKg3B,MAAM6xB,kBAAkBhzC,GACnD,CAEAxD,GAAAA,GACE,MAAMgvB,EAAOrhC,KAAKmP,QAEdkyB,EAAKtJ,SAAWsJ,EAAK+tB,YAAYr3B,QACnC43D,GAAmB3vF,MAEnBA,KAAK2wF,eAAe,EAAG,EAAG,EAAG,EAEjC,CAEAA,cAAAA,CAAewB,EAAcC,EAAeC,EAAaC,GACvDtyF,KAAK0uD,SAAWp+C,KAAK2Z,OAAOkoE,EAAeC,GAAiB,GAC5DpyF,KAAK2uD,SAAWr+C,KAAK2Z,OAAOooE,EAAcC,GAAkB,GAC5DtyF,KAAKqwF,aAAe//E,KAAK8C,IAAIpT,KAAKqwF,YAAc,EAAG//E,KAAK6C,IAAIg/E,EAAcC,EAAeC,EAAaC,GACxG,CAEAzjC,aAAAA,CAAcnwD,GACZ,MAAM6zF,EAAkBtpE,IAAOjpB,KAAK+vF,aAAarpF,QAAU,GACrDyjD,EAAanqD,KAAKmP,QAAQg7C,YAAc,EAE9C,OAAO99B,GAAgB3tB,EAAQ6zF,EAAkBpnE,GAAUg/B,GAC7D,CAEA8E,6BAAAA,CAA8BnqD,GAC5B,GAAImgB,GAAcngB,GAChB,OAAO87C,IAIT,MAAM4xC,EAAgBxyF,KAAKqwF,aAAerwF,KAAKmT,IAAMnT,KAAKoT,KAC1D,OAAIpT,KAAKmP,QAAQoX,SACPvmB,KAAKmT,IAAMrO,GAAS0tF,GAEtB1tF,EAAQ9E,KAAKoT,KAAOo/E,CAC9B,CAEAC,6BAAAA,CAA8BzmE,GAC5B,GAAI/G,GAAc+G,GAChB,OAAO40B,IAGT,MAAM8xC,EAAiB1mE,GAAYhsB,KAAKqwF,aAAerwF,KAAKmT,IAAMnT,KAAKoT,MACvE,OAAOpT,KAAKmP,QAAQoX,QAAUvmB,KAAKmT,IAAMu/E,EAAiB1yF,KAAKoT,IAAMs/E,CACvE,CAEAvC,oBAAAA,CAAqBzxF,GACnB,MAAM0wD,EAAcpvD,KAAK+vF,cAAgB,GAEzC,GAAIrxF,GAAS,GAAKA,EAAQ0wD,EAAY1oD,OAAQ,CAC5C,MAAMisF,EAAavjC,EAAY1wD,GAC/B,OAAOuzF,GAAwBjyF,KAAKy+B,aAAc//B,EAAOi0F,E,CAE7D,CAEAvC,gBAAAA,CAAiB1xF,EAAOk0F,EAAoB3C,EAAkB,GAC5D,MAAMnkE,EAAQ9rB,KAAK6uD,cAAcnwD,GAAS4qB,GAAU2mE,EACpD,MAAO,CACLl5E,EAAGzG,KAAK6iB,IAAIrH,GAAS8mE,EAAqB5yF,KAAK0uD,QAC/C1mC,EAAG1X,KAAK4hB,IAAIpG,GAAS8mE,EAAqB5yF,KAAK2uD,QAC/C7iC,QAEJ,CAEA0jC,wBAAAA,CAAyB9wD,EAAOoG,GAC9B,OAAO9E,KAAKowF,iBAAiB1xF,EAAOsB,KAAKivD,8BAA8BnqD,GACzE,CAEA+tF,eAAAA,CAAgBn0F,GACd,OAAOsB,KAAKwvD,yBAAyB9wD,GAAS,EAAGsB,KAAKgjE,eACxD,CAEA8vB,qBAAAA,CAAsBp0F,GACpB,MAAM,KAACoxB,EAAA,IAAM8F,EAAA,MAAK7F,EAAK,OAAE8F,GAAU71B,KAAK4wF,iBAAiBlyF,GACzD,MAAO,CACLoxB,OACA8F,MACA7F,QACA8F,SAEJ,CAKAuvC,cAAAA,GACE,MAAM,gBAAC3qC,EAAiBpC,MAAM,SAAC82B,IAAanvD,KAAKmP,QACjD,GAAIsrB,EAAiB,CACnB,MAAMc,EAAMv7B,KAAKu7B,IACjBA,EAAIsC,OACJtC,EAAImE,YACJoyD,GAAe9xF,KAAMA,KAAKivD,8BAA8BjvD,KAAK+tF,WAAY5+B,EAAUnvD,KAAK+vF,aAAarpF,QACrG60B,EAAIsE,YACJtE,EAAIgG,UAAY9G,EAChBc,EAAI2E,OACJ3E,EAAI0C,S,CAER,CAKAonC,QAAAA,GACE,MAAM9pC,EAAMv7B,KAAKu7B,IACX8F,EAAOrhC,KAAKmP,SACZ,WAAC+/C,EAAU,KAAE72B,EAAA,OAAMO,GAAUyI,EAC7B+lD,EAAapnF,KAAK+vF,aAAarpF,OAErC,IAAImP,EAAGmiB,EAAQ44B,EAmBf,GAjBIvvB,EAAK+tB,YAAYr3B,SACnB85D,GAAgB7xF,KAAMonF,GAGpB/uD,EAAKN,SACP/3B,KAAK+2B,MAAM3I,QAAQ,CAACynB,EAAMn3C,KACxB,GAAc,IAAVA,GAA0B,IAAVA,GAAesB,KAAKoT,IAAM,EAAI,CAChD4kB,EAASh4B,KAAKivD,8BAA8BpZ,EAAK/wC,OACjD,MAAM+1B,EAAU76B,KAAKy+B,WAAW//B,GAC1B2lE,EAAchsC,EAAK2O,WAAWnM,GAC9BypC,EAAoB1rC,EAAOoO,WAAWnM,GAE5Ck3D,GAAe/xF,KAAMqkE,EAAarsC,EAAQovD,EAAY9iB,E,IAKxDpV,EAAWn3B,QAAS,CAGtB,IAFAwD,EAAIsC,OAEChoB,EAAIuxE,EAAa,EAAGvxE,GAAK,EAAGA,IAAK,CACpC,MAAMwuD,EAAcnV,EAAWloB,WAAWhnC,KAAKmwF,qBAAqBt6E,KAC9D,MAACkO,EAAA,UAAOuU,GAAa+rC,EAEtB/rC,GAAcvU,IAInBwX,EAAIjD,UAAYA,EAChBiD,EAAI6G,YAAcre,EAElBwX,EAAIgqC,YAAYlB,EAAYrwB,YAC5BzY,EAAI8xB,eAAiBgX,EAAYpwB,iBAEjCjc,EAASh4B,KAAKivD,8BAA8B5tB,EAAK9a,QAAUvmB,KAAKoT,IAAMpT,KAAKmT,KAC3Ey9C,EAAW5wD,KAAKowF,iBAAiBv6E,EAAGmiB,GACpCuD,EAAImE,YACJnE,EAAIuE,OAAO9/B,KAAK0uD,QAAS1uD,KAAK2uD,SAC9BpzB,EAAIwE,OAAO6wB,EAAS75C,EAAG65C,EAAS5oC,GAChCuT,EAAI6E,SACN,CAEA7E,EAAI0C,S,CAER,CAKAunC,UAAAA,GAAc,CAKdE,UAAAA,GACE,MAAMnqC,EAAMv7B,KAAKu7B,IACX8F,EAAOrhC,KAAKmP,QACZorD,EAAWl5B,EAAKtK,MAEtB,IAAKwjC,EAASxiC,QACZ,OAGF,MAAMoyB,EAAanqD,KAAK6uD,cAAc,GACtC,IAAI72B,EAAQ/3B,EAEZs7B,EAAIsC,OACJtC,EAAIiE,UAAUx/B,KAAK0uD,QAAS1uD,KAAK2uD,SACjCpzB,EAAI3kB,OAAOuzC,GACX5uB,EAAIiG,UAAY,SAChBjG,EAAIkG,aAAe,SAEnBzhC,KAAK+2B,MAAM3I,QAAQ,CAACynB,EAAMn3C,KACxB,GAAe,IAAVA,GAAesB,KAAKoT,KAAO,IAAOiuB,EAAK9a,QAC1C,OAGF,MAAM89C,EAAc9J,EAASvzB,WAAWhnC,KAAKy+B,WAAW//B,IAClD4jE,EAAWp+B,GAAOmgC,EAAYnpC,MAGpC,GAFAlD,EAASh4B,KAAKivD,8BAA8BjvD,KAAK+2B,MAAMr4B,GAAOoG,OAE1Du/D,EAAY1qC,kBAAmB,CACjC4B,EAAIL,KAAOonC,EAAShlC,OACpBr9B,EAAQs7B,EAAIiC,YAAYqY,EAAKlnC,OAAO1O,MACpCs7B,EAAIgG,UAAY8iC,EAAYzqC,cAE5B,MAAMjE,EAAUsO,GAAUogC,EAAYxqC,iBACtC0B,EAAIiH,UACDviC,EAAQ,EAAI01B,EAAQ7F,MACpBkI,EAASsqC,EAAS5zD,KAAO,EAAIinB,EAAQC,IACtC31B,EAAQ01B,EAAQ11B,MAChBqiE,EAAS5zD,KAAOinB,EAAQiJ,O,CAI5B6D,GAAWlH,EAAKsa,EAAKlnC,MAAO,GAAIqpB,EAAQsqC,EAAU,CAChDv+C,MAAOsgD,EAAYtgD,MACnB6e,YAAayhC,EAAYjrC,gBACzBuJ,YAAa0hC,EAAYlrC,oBAI7BoC,EAAI0C,SACN,CAKA2nC,SAAAA,GAAa,GACf7e,EAAAA,GAAAA,GA1VqBmrC,GAA0B,KAEjC,iBAAenrC,EAAAA,GAAAA,GAFRmrC,GAA0B,WAO3B,CAChBn6D,SAAS,EAGTg7D,SAAS,EACTniC,SAAU,YAEV1B,WAAY,CACVn3B,SAAS,EACTO,UAAW,EACX0b,WAAY,GACZC,iBAAkB,GAGpB5b,KAAM,CACJ82B,UAAU,GAGZhF,WAAY,EAGZpzB,MAAO,CAEL4C,mBAAmB,EAEnB1T,SAAU4R,GAAMjB,WAAWC,SAG7Bu4B,YAAa,CACXx1B,mBAAezkB,EAGf0kB,gBAAiB,EAGjB9B,SAAS,EAGTmD,KAAM,CACJxsB,KAAM,IAIRuX,QAAAA,CAAStX,GACP,OAAOA,CACT,EAGAgnB,QAAS,EAGTu6D,mBAAmB,MAErBnpC,EAAAA,GAAAA,GA5DiBmrC,GAA0B,gBA8DtB,CACrB,mBAAoB,cACpB,oBAAqB,QACrB,cAAe,WACfnrC,EAAAA,GAAAA,GAlEiBmrC,GAA0B,cAoExB,CACnBhjC,WAAY,CACVp6B,UAAW,UCxYjB,MAAMk+D,GAAY,CAChBC,YAAa,CAACC,QAAQ,EAAMxkF,KAAM,EAAGogF,MAAO,KAC5CqE,OAAQ,CAACD,QAAQ,EAAMxkF,KAAM,IAAMogF,MAAO,IAC1CsE,OAAQ,CAACF,QAAQ,EAAMxkF,KAAM,IAAOogF,MAAO,IAC3CuE,KAAM,CAACH,QAAQ,EAAMxkF,KAAM,KAASogF,MAAO,IAC3C1qF,IAAK,CAAC8uF,QAAQ,EAAMxkF,KAAM,MAAUogF,MAAO,IAC3CwE,KAAM,CAACJ,QAAQ,EAAOxkF,KAAM,OAAWogF,MAAO,GAC9CrpF,MAAO,CAACytF,QAAQ,EAAMxkF,KAAM,OAASogF,MAAO,IAC5CyE,QAAS,CAACL,QAAQ,EAAOxkF,KAAM,OAASogF,MAAO,GAC/CvpF,KAAM,CAAC2tF,QAAQ,EAAMxkF,KAAM,SAMvB8kF,GAA6CnkF,OAAOC,KAAK0jF,IAM/D,SAASS,GAAOz/E,EAAGC,GACjB,OAAOD,EAAIC,CACb,CAOA,SAASi1B,GAAM9M,EAAO/Y,GACpB,GAAI4B,GAAc5B,GAChB,OAAO,KAGT,MAAMqwE,EAAUt3D,EAAMu3D,UAChB,OAACC,EAAA,MAAQrjF,EAAA,WAAOsjF,GAAcz3D,EAAM03D,WAC1C,IAAIhvF,EAAQue,EAaZ,MAXsB,oBAAXuwE,IACT9uF,EAAQ8uF,EAAO9uF,IAIZygB,GAASzgB,KACZA,EAA0B,kBAAX8uF,EACXF,EAAQxqD,MAAMpkC,EAAO8uF,GACrBF,EAAQxqD,MAAMpkC,IAGN,OAAVA,EACK,MAGLyL,IACFzL,EAAkB,SAAVyL,IAAqBqa,GAASipE,KAA8B,IAAfA,EAEjDH,EAAQxjC,QAAQprD,EAAOyL,GADvBmjF,EAAQxjC,QAAQprD,EAAO,UAAW+uF,KAIhC/uF,EACV,CAUA,SAASivF,GAA0BC,EAAS5gF,EAAKD,EAAK8gF,GACpD,MAAMttE,EAAO6sE,GAAM9sF,OAEnB,IAAK,IAAImP,EAAI29E,GAAMpsE,QAAQ4sE,GAAUn+E,EAAI8Q,EAAO,IAAK9Q,EAAG,CACtD,MAAMq+E,EAAWlB,GAAUQ,GAAM39E,IAC3B8gC,EAASu9C,EAASpF,MAAQoF,EAASpF,MAAQtpF,OAAO2uF,iBAExD,GAAID,EAAShB,QAAU5iF,KAAKsrD,MAAMzoD,EAAMC,IAAQujC,EAASu9C,EAASxlF,QAAUulF,EAC1E,OAAOT,GAAM39E,EAEjB,CAEA,OAAO29E,GAAM7sE,EAAO,EACtB,CAWA,SAASytE,GAA2Bh4D,EAAOukC,EAAUqzB,EAAS5gF,EAAKD,GACjE,IAAK,IAAI0C,EAAI29E,GAAM9sF,OAAS,EAAGmP,GAAK29E,GAAMpsE,QAAQ4sE,GAAUn+E,IAAK,CAC/D,MAAMs3E,EAAOqG,GAAM39E,GACnB,GAAIm9E,GAAU7F,GAAM+F,QAAU92D,EAAMu3D,SAAS1jC,KAAK98C,EAAKC,EAAK+5E,IAASxsB,EAAW,EAC9E,OAAOwsB,CAEX,CAEA,OAAOqG,GAAMQ,EAAUR,GAAMpsE,QAAQ4sE,GAAW,EAClD,CAMA,SAASK,GAAmBlH,GAC1B,IAAK,IAAIt3E,EAAI29E,GAAMpsE,QAAQ+lE,GAAQ,EAAGxmE,EAAO6sE,GAAM9sF,OAAQmP,EAAI8Q,IAAQ9Q,EACrE,GAAIm9E,GAAUQ,GAAM39E,IAAIq9E,OACtB,OAAOM,GAAM39E,EAGnB,CAOA,SAASy+E,GAAQv9D,EAAOw9D,EAAMC,GAC5B,GAAKA,GAEE,GAAIA,EAAW9tF,OAAQ,CAC5B,MAAM,GAAC2mB,EAAE,GAAED,GAAMJ,GAAQwnE,EAAYD,GAC/BE,EAAYD,EAAWnnE,IAAOknE,EAAOC,EAAWnnE,GAAMmnE,EAAWpnE,GACvE2J,EAAM09D,IAAa,C,OAJnB19D,EAAMw9D,IAAQ,CAMlB,CASA,SAASG,GAAct4D,EAAOrF,EAAO7gB,EAAKy+E,GACxC,MAAMjB,EAAUt3D,EAAMu3D,SAChB34B,GAAS04B,EAAQxjC,QAAQn5B,EAAM,GAAGjyB,MAAO6vF,GACzCpnE,EAAOwJ,EAAMA,EAAMrwB,OAAS,GAAG5B,MACrC,IAAI20B,EAAO/6B,EAEX,IAAK+6B,EAAQuhC,EAAOvhC,GAASlM,EAAMkM,GAASi6D,EAAQpyF,IAAIm4B,EAAO,EAAGk7D,GAChEj2F,EAAQwX,EAAIujB,GACR/6B,GAAS,IACXq4B,EAAMr4B,GAAO+6B,OAAQ,GAGzB,OAAO1C,CACT,CAQA,SAAS69D,GAAoBx4D,EAAOzO,EAAQgnE,GAC1C,MAAM59D,EAAQ,GAER7gB,EAAM,CAAC,EACPyQ,EAAOgH,EAAOjnB,OACpB,IAAImP,EAAG/Q,EAEP,IAAK+Q,EAAI,EAAGA,EAAI8Q,IAAQ9Q,EACtB/Q,EAAQ6oB,EAAO9X,GACfK,EAAIpR,GAAS+Q,EAEbkhB,EAAM1O,KAAK,CACTvjB,QACA20B,OAAO,IAMX,OAAiB,IAAT9S,GAAeguE,EAAqBD,GAAct4D,EAAOrF,EAAO7gB,EAAKy+E,GAAzC59D,CACtC,CAEe,MAAM89D,WAAkBz3B,GAgDrC35C,WAAAA,CAAYpkB,GACV4nD,MAAM5nD,GAGNW,KAAKnC,OAAS,CACZ6B,KAAM,GACNygD,OAAQ,GACRlH,IAAK,IAIPj5C,KAAK80F,MAAQ,MAEb90F,KAAK+0F,gBAAa5/E,EAClBnV,KAAKg1F,SAAW,CAAC,EACjBh1F,KAAKi1F,aAAc,EACnBj1F,KAAK8zF,gBAAa3+E,CACpB,CAEA46C,IAAAA,CAAK2f,EAAWruC,EAAO,IACrB,MAAMkzD,EAAO7kB,EAAU6kB,OAAS7kB,EAAU6kB,KAAO,CAAC,GAE5Cb,EAAU1zF,KAAK2zF,SAAW,IAAIvjC,GAASC,MAAMqf,EAAUtf,SAASnrD,MAEtEyuF,EAAQ3jC,KAAK1uB,GAMb1Z,GAAQ4sE,EAAKW,eAAgBxB,EAAQ1jC,WAErChwD,KAAK8zF,WAAa,CAChBF,OAAQW,EAAKX,OACbrjF,MAAOgkF,EAAKhkF,MACZsjF,WAAYU,EAAKV,YAGnB5sC,MAAM8I,KAAK2f,GAEX1vE,KAAKi1F,YAAc5zD,EAAK8zD,UAC1B,CAOAjsD,KAAAA,CAAMgT,EAAKx9C,GACT,YAAYyW,IAAR+mC,EACK,KAEFhT,GAAMlpC,KAAMk8C,EACrB,CAEA8Z,YAAAA,GACE/O,MAAM+O,eACNh2D,KAAKnC,OAAS,CACZ6B,KAAM,GACNygD,OAAQ,GACRlH,IAAK,GAET,CAEAomB,mBAAAA,GACE,MAAMlwD,EAAUnP,KAAKmP,QACfukF,EAAU1zF,KAAK2zF,SACfxG,EAAOh+E,EAAQolF,KAAKpH,MAAQ,MAElC,IAAI,IAAC/5E,EAAA,IAAKD,EAAA,WAAK2d,EAAA,WAAYC,GAAc/wB,KAAKgxB,gBAK9C,SAASokE,EAAal9D,GACfpH,GAAejG,MAAMqN,EAAO9kB,OAC/BA,EAAM9C,KAAK8C,IAAIA,EAAK8kB,EAAO9kB,MAExB2d,GAAelG,MAAMqN,EAAO/kB,OAC/BA,EAAM7C,KAAK6C,IAAIA,EAAK+kB,EAAO/kB,KAE/B,CAGK2d,GAAeC,IAElBqkE,EAAap1F,KAAKq1F,mBAIK,UAAnBlmF,EAAQ+oB,QAA+C,WAAzB/oB,EAAQ4nB,MAAMhQ,QAC9CquE,EAAap1F,KAAK6gD,WAAU,KAIhCztC,EAAMmS,GAASnS,KAASyX,MAAMzX,GAAOA,GAAOsgF,EAAQxjC,QAAQxqD,KAAK6vC,MAAO43C,GACxEh6E,EAAMoS,GAASpS,KAAS0X,MAAM1X,GAAOA,GAAOugF,EAAQvjC,MAAMzqD,KAAK6vC,MAAO43C,GAAQ,EAG9EntF,KAAKoT,IAAM9C,KAAK8C,IAAIA,EAAKD,EAAM,GAC/BnT,KAAKmT,IAAM7C,KAAK6C,IAAIC,EAAM,EAAGD,EAC/B,CAKAkiF,eAAAA,GACE,MAAMltD,EAAMnoC,KAAKs1F,qBACjB,IAAIliF,EAAM5N,OAAO4jB,kBACbjW,EAAM3N,OAAOi1C,kBAMjB,OAJItS,EAAIzhC,SACN0M,EAAM+0B,EAAI,GACVh1B,EAAMg1B,EAAIA,EAAIzhC,OAAS,IAElB,CAAC0M,MAAKD,MACf,CAKAqsD,UAAAA,GACE,MAAMrwD,EAAUnP,KAAKmP,QACfomF,EAAWpmF,EAAQolF,KACnBh6B,EAAWprD,EAAQ4nB,MACnBy9D,EAAiC,WAApBj6B,EAASxzC,OAAsB/mB,KAAKs1F,qBAAuBt1F,KAAKw1F,YAE5D,UAAnBrmF,EAAQ+oB,QAAsBs8D,EAAW9tF,SAC3C1G,KAAKoT,IAAMpT,KAAKi+D,UAAYu2B,EAAW,GACvCx0F,KAAKmT,IAAMnT,KAAKg+D,UAAYw2B,EAAWA,EAAW9tF,OAAS,IAG7D,MAAM0M,EAAMpT,KAAKoT,IACXD,EAAMnT,KAAKmT,IAEX4jB,EAAQrJ,GAAe8mE,EAAYphF,EAAKD,GAgB9C,OAXAnT,KAAK80F,MAAQS,EAASpI,OAAS5yB,EAASlhC,SACpC06D,GAA0BwB,EAASvB,QAASh0F,KAAKoT,IAAKpT,KAAKmT,IAAKnT,KAAKy1F,kBAAkBriF,IACvFghF,GAA2Bp0F,KAAM+2B,EAAMrwB,OAAQ6uF,EAASvB,QAASh0F,KAAKoT,IAAKpT,KAAKmT,MACpFnT,KAAK+0F,WAAcx6B,EAAS9gC,MAAMohC,SAA0B,SAAf76D,KAAK80F,MAC9CT,GAAmBr0F,KAAK80F,YADyC3/E,EAErEnV,KAAK01F,YAAYlB,GAEbrlF,EAAQoX,SACVwQ,EAAMxQ,UAGDquE,GAAoB50F,KAAM+2B,EAAO/2B,KAAK+0F,WAC/C,CAEAh1B,aAAAA,GAGM//D,KAAKmP,QAAQwmF,qBACf31F,KAAK01F,YAAY11F,KAAK+2B,MAAM7gB,IAAI2/B,IAASA,EAAK/wC,OAElD,CAUA4wF,WAAAA,CAAYlB,EAAa,IACvB,IAEIx5B,EAAOztC,EAFPjnB,EAAQ,EACRimB,EAAM,EAGNvsB,KAAKmP,QAAQ6oB,QAAUw8D,EAAW9tF,SACpCs0D,EAAQh7D,KAAK41F,mBAAmBpB,EAAW,IAEzCluF,EADwB,IAAtBkuF,EAAW9tF,OACL,EAAIs0D,GAEHh7D,KAAK41F,mBAAmBpB,EAAW,IAAMx5B,GAAS,EAE7DztC,EAAOvtB,KAAK41F,mBAAmBpB,EAAWA,EAAW9tF,OAAS,IAE5D6lB,EADwB,IAAtBioE,EAAW9tF,OACP6mB,GAECA,EAAOvtB,KAAK41F,mBAAmBpB,EAAWA,EAAW9tF,OAAS,KAAO,GAGhF,MAAMy9D,EAAQqwB,EAAW9tF,OAAS,EAAI,GAAM,IAC5CJ,EAAQumB,GAAYvmB,EAAO,EAAG69D,GAC9B53C,EAAMM,GAAYN,EAAK,EAAG43C,GAE1BnkE,KAAKg1F,SAAW,CAAC1uF,QAAOimB,MAAKoqB,OAAQ,GAAKrwC,EAAQ,EAAIimB,GACxD,CASAipE,SAAAA,GACE,MAAM9B,EAAU1zF,KAAK2zF,SACfvgF,EAAMpT,KAAKoT,IACXD,EAAMnT,KAAKmT,IACXhE,EAAUnP,KAAKmP,QACfomF,EAAWpmF,EAAQolF,KAEnB/6D,EAAQ+7D,EAASpI,MAAQ4G,GAA0BwB,EAASvB,QAAS5gF,EAAKD,EAAKnT,KAAKy1F,kBAAkBriF,IACtGk7E,EAAW3oE,GAAexW,EAAQ4nB,MAAMu3D,SAAU,GAClDpqF,EAAoB,SAAVs1B,GAAmB+7D,EAAS1B,WACtCgC,EAAajrE,GAAS1mB,KAAwB,IAAZA,EAClC6yB,EAAQ,CAAC,EACf,IACIw9D,EAAM7kF,EADNsrD,EAAQ5nD,EAYZ,GARIyiF,IACF76B,GAAS04B,EAAQxjC,QAAQ8K,EAAO,UAAW92D,IAI7C82D,GAAS04B,EAAQxjC,QAAQ8K,EAAO66B,EAAa,MAAQr8D,GAGjDk6D,EAAQzjC,KAAK98C,EAAKC,EAAKomB,GAAS,IAAS80D,EAC3C,MAAM,IAAIvmD,MAAM30B,EAAM,QAAUD,EAAM,uCAAyCm7E,EAAW,IAAM90D,GAGlG,MAAMg7D,EAAsC,SAAzBrlF,EAAQ4nB,MAAMhQ,QAAqB/mB,KAAK81F,oBAC3D,IAAKvB,EAAOv5B,EAAOtrD,EAAQ,EAAG6kF,EAAOphF,EAAKohF,GAAQb,EAAQpyF,IAAIizF,EAAMjG,EAAU90D,GAAQ9pB,IACpF4kF,GAAQv9D,EAAOw9D,EAAMC,GAQvB,OALID,IAASphF,GAA0B,UAAnBhE,EAAQ+oB,QAAgC,IAAVxoB,GAChD4kF,GAAQv9D,EAAOw9D,EAAMC,GAIhBnlF,OAAOC,KAAKynB,GAAOxM,KAAKkpE,IAAQv9E,IAAIa,IAAMA,EACnD,CAMAsqC,gBAAAA,CAAiBv8C,GACf,MAAM4uF,EAAU1zF,KAAK2zF,SACf4B,EAAWv1F,KAAKmP,QAAQolF,KAE9B,OAAIgB,EAASQ,cACJrC,EAAQ/8D,OAAO7xB,EAAOywF,EAASQ,eAEjCrC,EAAQ/8D,OAAO7xB,EAAOywF,EAASL,eAAeznF,SACvD,CAOAkpB,MAAAA,CAAO7xB,EAAO6xB,GACZ,MAAMxnB,EAAUnP,KAAKmP,QACf6gD,EAAU7gD,EAAQolF,KAAKW,eACvB/H,EAAOntF,KAAK80F,MACZkB,EAAMr/D,GAAUq5B,EAAQm9B,GAC9B,OAAOntF,KAAK2zF,SAASh9D,OAAO7xB,EAAOkxF,EACrC,CAWAC,mBAAAA,CAAoB1B,EAAM71F,EAAOq4B,EAAOJ,GACtC,MAAMxnB,EAAUnP,KAAKmP,QACfknB,EAAYlnB,EAAQ4nB,MAAM9Q,SAEhC,GAAIoQ,EACF,OAAOpQ,GAAKoQ,EAAW,CAACk+D,EAAM71F,EAAOq4B,GAAQ/2B,MAG/C,MAAMgwD,EAAU7gD,EAAQolF,KAAKW,eACvB/H,EAAOntF,KAAK80F,MACZH,EAAY30F,KAAK+0F,WACjBmB,EAAc/I,GAAQn9B,EAAQm9B,GAC9BgJ,EAAcxB,GAAa3kC,EAAQ2kC,GACnC9+C,EAAO9e,EAAMr4B,GACb+6B,EAAQk7D,GAAawB,GAAetgD,GAAQA,EAAKpc,MAEvD,OAAOz5B,KAAK2zF,SAASh9D,OAAO49D,EAAM59D,IAAW8C,EAAQ08D,EAAcD,GACrE,CAKAz1B,kBAAAA,CAAmB1pC,GACjB,IAAIlhB,EAAG8Q,EAAMkvB,EAEb,IAAKhgC,EAAI,EAAG8Q,EAAOoQ,EAAMrwB,OAAQmP,EAAI8Q,IAAQ9Q,EAC3CggC,EAAO9e,EAAMlhB,GACbggC,EAAKlnC,MAAQ3O,KAAKi2F,oBAAoBpgD,EAAK/wC,MAAO+Q,EAAGkhB,EAEzD,CAMA6+D,kBAAAA,CAAmB9wF,GACjB,OAAiB,OAAVA,EAAiB87C,KAAO97C,EAAQ9E,KAAKoT,MAAQpT,KAAKmT,IAAMnT,KAAKoT,IACtE,CAMA6d,gBAAAA,CAAiBnsB,GACf,MAAMsxF,EAAUp2F,KAAKg1F,SACf9nD,EAAMltC,KAAK41F,mBAAmB9wF,GACpC,OAAO9E,KAAK+oD,oBAAoBqtC,EAAQ9vF,MAAQ4mC,GAAOkpD,EAAQz/C,OACjE,CAMAsS,gBAAAA,CAAiB7qB,GACf,MAAMg4D,EAAUp2F,KAAKg1F,SACf9nD,EAAMltC,KAAK+iE,mBAAmB3kC,GAASg4D,EAAQz/C,OAASy/C,EAAQ7pE,IACtE,OAAOvsB,KAAKoT,IAAM85B,GAAOltC,KAAKmT,IAAMnT,KAAKoT,IAC3C,CAOAijF,aAAAA,CAAc1nF,GACZ,MAAM2nF,EAAYt2F,KAAKmP,QAAQ4nB,MACzBw/D,EAAiBv2F,KAAKu7B,IAAIiC,YAAY7uB,GAAO1O,MAC7C6rB,EAAQX,GAAUnrB,KAAKimD,eAAiBqwC,EAAUr9D,YAAcq9D,EAAUt9D,aAC1Ew9D,EAAclmF,KAAK6iB,IAAIrH,GACvB2qE,EAAcnmF,KAAK4hB,IAAIpG,GACvB4qE,EAAe12F,KAAK2iE,wBAAwB,GAAGj0D,KAErD,MAAO,CACLiH,EAAI4gF,EAAiBC,EAAgBE,EAAeD,EACpDvjF,EAAIqjF,EAAiBE,EAAgBC,EAAeF,EAExD,CAOAf,iBAAAA,CAAkBkB,GAChB,MAAMpB,EAAWv1F,KAAKmP,QAAQolF,KACxBW,EAAiBK,EAASL,eAG1Bv+D,EAASu+D,EAAeK,EAASpI,OAAS+H,EAAejC,YACzD2D,EAAe52F,KAAKi2F,oBAAoBU,EAAa,EAAG/B,GAAoB50F,KAAM,CAAC22F,GAAc32F,KAAK+0F,YAAap+D,GACnHjoB,EAAO1O,KAAKq2F,cAAcO,GAG1B3C,EAAW3jF,KAAK2Z,MAAMjqB,KAAKimD,eAAiBjmD,KAAKC,MAAQyO,EAAKiH,EAAI3V,KAAK4+B,OAASlwB,EAAKwE,GAAK,EAChG,OAAO+gF,EAAW,EAAIA,EAAW,CACnC,CAKA6B,iBAAAA,GACE,IACIjgF,EAAG8Q,EADH6tE,EAAax0F,KAAKnC,OAAO6B,MAAQ,GAGrC,GAAI80F,EAAW9tF,OACb,OAAO8tF,EAGT,MAAM/1B,EAAQz+D,KAAKi7C,0BAEnB,GAAIj7C,KAAKi1F,aAAex2B,EAAM/3D,OAC5B,OAAQ1G,KAAKnC,OAAO6B,KAAO++D,EAAM,GAAGtjB,WAAW+F,mBAAmBlhD,MAGpE,IAAK6V,EAAI,EAAG8Q,EAAO83C,EAAM/3D,OAAQmP,EAAI8Q,IAAQ9Q,EAC3C2+E,EAAaA,EAAWrwC,OAAOsa,EAAM5oD,GAAGslC,WAAW+F,mBAAmBlhD,OAGxE,OAAQA,KAAKnC,OAAO6B,KAAOM,KAAKsxC,UAAUkjD,EAC5C,CAKAc,kBAAAA,GACE,MAAMd,EAAax0F,KAAKnC,OAAOsiD,QAAU,GACzC,IAAItqC,EAAG8Q,EAEP,GAAI6tE,EAAW9tF,OACb,OAAO8tF,EAGT,MAAMr0C,EAASngD,KAAKogD,YACpB,IAAKvqC,EAAI,EAAG8Q,EAAOw5B,EAAOz5C,OAAQmP,EAAI8Q,IAAQ9Q,EAC5C2+E,EAAWnsE,KAAK6gB,GAAMlpC,KAAMmgD,EAAOtqC,KAGrC,OAAQ7V,KAAKnC,OAAOsiD,OAASngD,KAAKi1F,YAAcT,EAAax0F,KAAKsxC,UAAUkjD,EAC9E,CAMAljD,SAAAA,CAAU3jB,GAER,OAAOiB,GAAajB,EAAOpD,KAAKkpE,IAClC,ECtpBF,SAAS/wE,GAAYuK,EAAOzI,EAAK+B,GAC/B,IAEIswE,EAAYC,EAAYC,EAAYC,EAFpC3pE,EAAK,EACLD,EAAKH,EAAMvmB,OAAS,EAEpB6f,GACE/B,GAAOyI,EAAMI,GAAI6f,KAAO1oB,GAAOyI,EAAMG,GAAI8f,OACzC7f,KAAID,MAAME,GAAaL,EAAO,MAAOzI,MAEvC0oB,IAAK2pD,EAAYtC,KAAMwC,GAAc9pE,EAAMI,MAC3C6f,IAAK4pD,EAAYvC,KAAMyC,GAAc/pE,EAAMG,MAEzC5I,GAAOyI,EAAMI,GAAIknE,MAAQ/vE,GAAOyI,EAAMG,GAAImnE,QAC1ClnE,KAAID,MAAME,GAAaL,EAAO,OAAQzI,MAExC+vE,KAAMsC,EAAY3pD,IAAK6pD,GAAc9pE,EAAMI,MAC3CknE,KAAMuC,EAAY5pD,IAAK8pD,GAAc/pE,EAAMG,KAG/C,MAAM6pE,EAAOH,EAAaD,EAC1B,OAAOI,EAAOF,GAAcC,EAAaD,IAAevyE,EAAMqyE,GAAcI,EAAOF,CACrF,EDmoBAhwC,EAAAA,GAAAA,GA5dqB8tC,GAAkB,KAEzB,SAAO9tC,EAAAA,GAAAA,GAFA8tC,GAAkB,WAOnB,CAQhB38D,OAAQ,OAERk4B,SAAU,CAAC,EACXmkC,KAAM,CACJX,QAAQ,EACRzG,MAAM,EACN58E,OAAO,EACPsjF,YAAY,EACZG,QAAS,cACTkB,eAAgB,CAAC,GAEnBn+D,MAAO,CASLhQ,OAAQ,OAERd,UAAU,EAEVwT,MAAO,CACLohC,SAAS,MC7MjB,MAAMq8B,WAAwBrC,GAY5BpxE,WAAAA,CAAYpkB,GACV4nD,MAAM5nD,GAGNW,KAAKm3F,OAAS,GAEdn3F,KAAKo3F,aAAUjiF,EAEfnV,KAAKq3F,iBAAcliF,CACrB,CAKAugF,WAAAA,GACE,MAAMlB,EAAax0F,KAAKs3F,yBAClBrqE,EAAQjtB,KAAKm3F,OAASn3F,KAAKu3F,iBAAiB/C,GAClDx0F,KAAKo3F,QAAU10E,GAAYuK,EAAOjtB,KAAKoT,KACvCpT,KAAKq3F,YAAc30E,GAAYuK,EAAOjtB,KAAKmT,KAAOnT,KAAKo3F,QACvDnwC,MAAMyuC,YAAYlB,EACpB,CAaA+C,gBAAAA,CAAiB/C,GACf,MAAM,IAACphF,EAAG,IAAED,GAAOnT,KACb6uB,EAAQ,GACR5B,EAAQ,GACd,IAAIpX,EAAG8Q,EAAMilB,EAAMyY,EAAM1a,EAEzB,IAAK9zB,EAAI,EAAG8Q,EAAO6tE,EAAW9tF,OAAQmP,EAAI8Q,IAAQ9Q,EAChDwuC,EAAOmwC,EAAW3+E,GACdwuC,GAAQjxC,GAAOixC,GAAQlxC,GACzB0b,EAAMxG,KAAKg8B,GAIf,GAAIx1B,EAAMnoB,OAAS,EAEjB,MAAO,CACL,CAAC6tF,KAAMnhF,EAAK85B,IAAK,GACjB,CAACqnD,KAAMphF,EAAK+5B,IAAK,IAIrB,IAAKr3B,EAAI,EAAG8Q,EAAOkI,EAAMnoB,OAAQmP,EAAI8Q,IAAQ9Q,EAC3C8zB,EAAO9a,EAAMhZ,EAAI,GACjB+1B,EAAO/c,EAAMhZ,EAAI,GACjBwuC,EAAOx1B,EAAMhZ,GAGTvF,KAAKC,OAAOo5B,EAAOiC,GAAQ,KAAOyY,GACpCp3B,EAAM5E,KAAK,CAACksE,KAAMlwC,EAAMnX,IAAKr3B,GAAK8Q,EAAO,KAG7C,OAAOsG,CACT,CAQAuoE,SAAAA,GACE,MAAMpiF,EAAMpT,KAAKoT,IACXD,EAAMnT,KAAKmT,IACjB,IAAIqhF,EAAavtC,MAAM6uC,oBAOvB,OANKtB,EAAW58D,SAASxkB,IAASohF,EAAW9tF,QAC3C8tF,EAAW7lE,OAAO,EAAG,EAAGvb,GAErBohF,EAAW58D,SAASzkB,IAA8B,IAAtBqhF,EAAW9tF,QAC1C8tF,EAAWnsE,KAAKlV,GAEXqhF,EAAWjqE,KAAK,CAACvW,EAAGC,IAAMD,EAAIC,EACvC,CAOAqjF,sBAAAA,GACE,IAAI9C,EAAax0F,KAAKnC,OAAOo7C,KAAO,GAEpC,GAAIu7C,EAAW9tF,OACb,OAAO8tF,EAGT,MAAM90F,EAAOM,KAAK81F,oBACZnnF,EAAQ3O,KAAKs1F,qBAUnB,OANEd,EAHE90F,EAAKgH,QAAUiI,EAAMjI,OAGV1G,KAAKsxC,UAAU5xC,EAAKykD,OAAOx1C,IAE3BjP,EAAKgH,OAAShH,EAAOiP,EAEpC6lF,EAAax0F,KAAKnC,OAAOo7C,IAAMu7C,EAExBA,CACT,CAMAoB,kBAAAA,CAAmB9wF,GACjB,OAAQ4d,GAAY1iB,KAAKm3F,OAAQryF,GAAS9E,KAAKo3F,SAAWp3F,KAAKq3F,WACjE,CAMApuC,gBAAAA,CAAiB7qB,GACf,MAAMg4D,EAAUp2F,KAAKg1F,SACflyB,EAAU9iE,KAAK+iE,mBAAmB3kC,GAASg4D,EAAQz/C,OAASy/C,EAAQ7pE,IAC1E,OAAO7J,GAAY1iB,KAAKm3F,OAAQr0B,EAAU9iE,KAAKq3F,YAAcr3F,KAAKo3F,SAAS,EAC7E,GACFrwC,EAAAA,GAAAA,GA7IMmwC,GAAwB,KAEhB,eAAanwC,EAAAA,GAAAA,GAFrBmwC,GAAwB,WAOVrC,GAAUngE,U,gBC/BvB,MAAM8iE,GAAc,CACzB93F,KAAM,CACJJ,KAAM+P,OACNooF,UAAU,GAEZtoF,QAAS,CACP7P,KAAM+P,OACN7P,QAASA,KAAA,CAAQ,IAEnB08B,QAAS,CACP58B,KAAMyG,MACNvG,QAASA,IAAM,IAEjBk4F,aAAc,CACZp4F,KAAMC,OACNC,QAAS,SAEXm4F,WAAY,CACVr4F,KAAMC,OACNC,aAAS2V,IAIAyiF,GAAY,CACvBC,UAAW,CACTv4F,KAAMC,QAERu4F,gBAAiB,CACfx4F,KAAMC,SAIGw4F,GAAQ,CACnBz4F,KAAM,CACJA,KAAMC,OACNk4F,UAAU,GAEZO,aAAc,CACZ14F,KAAMkG,OACNhG,QAAS,MAERg4F,MACAI,ICzCQK,GACI,MAAf3pF,EAAAA,GAAQ,GACJ,CAA6B4pF,EAAc74F,IACzCgQ,OAAO8T,OAAO+0E,EAAW,CAAEC,MAAO94F,IACpC,CAA6B64F,EAAc74F,IACzCgQ,OAAO8T,OAAO+0E,EAAW74F,GAE1B,SAAS+4F,GAAgBv0E,GAC9B,OAAOw0E,EAAAA,GAAAA,IAAQx0E,IAAOy0E,EAAAA,GAAAA,IAAMz0E,GAAOA,CACrC,CAEO,SAAS00E,GAA6B10E,GAAQ,IAAA1R,EAAAuxC,UAAAh9C,OAAA,YAAAg9C,UAAA,GAAAA,UAAA,GAAM7/B,EACzD,OAAOw0E,EAAAA,GAAAA,IAAQlmF,GAAO,IAAIyzB,MAAM/hB,EAAK,IAAMA,CAC7C,CAEO,SAAS20E,GAIdxhE,EAAoCyhE,GACpC,MAAMtpF,EAAU6nB,EAAM7nB,QAElBA,GAAWspF,GACbppF,OAAO8T,OAAOhU,EAASspF,EAE3B,CAEO,SAASC,GAKdC,EACAC,GAEAD,EAAYx4C,OAASy4C,CACvB,CAEO,SAASC,GAKdF,EACAG,EACApB,GAEA,MAAMqB,EAA8C,GAEpDJ,EAAYh+D,SAAWm+D,EAAa5iF,IACjC8iF,IAEC,MAAMC,EAAiBN,EAAYh+D,SAASqtB,KACzCp3B,GACCA,EAAQ8mE,KAAkBsB,EAAYtB,IAI1C,OACGuB,GACAD,EAAYt5F,OACbq5F,EAAcnhE,SAASqhE,IAKzBF,EAAc1wE,KAAK4wE,GAEnB5pF,OAAO8T,OAAO81E,EAAgBD,GAEvBC,GAPE,IAAKD,IAUpB,CAEO,SAASE,GAIdx5F,EAAuCg4F,GACvC,MAAMyB,EAA4C,CAChDh5C,OAAQ,GACRxlB,SAAU,IAMZ,OAHA+9D,GAAUS,EAAUz5F,EAAKygD,QACzB04C,GAAYM,EAAUz5F,EAAKi7B,SAAU+8D,GAE9ByB,CACT,CC3EO,MAAMrrB,IAAQsrB,EAAAA,EAAAA,IAAgB,CACnC/5F,MAAO04F,GACPsB,KAAAA,CAAMh6F,EAAOi6F,GAAA,WAAEC,EAAM,MAAEC,GAAVF,EACX,MAAMG,GAAYr7F,EAAAA,GAAAA,IAA8B,MAC1Cs7F,GAAWC,EAAAA,GAAAA,IAA2B,MAE5CJ,EAAO,CAAEviE,MAAO0iE,IAEhB,MAAME,EAAcA,KAClB,IAAKH,EAAU30F,MAAO,OAEtB,MAAM,KAAExF,EAAI,KAAEI,EAAI,QAAEyP,EAAO,QAAE+sB,EAAO,aAAEw7D,GAAiBr4F,EACjDw6F,EAAaX,GAAUx5F,EAAMg4F,GAC7BoC,EAAcvB,GAAWsB,EAAYn6F,GAE3Cg6F,EAAS50F,MAAQ,IAAIi1F,GAAQN,EAAU30F,MAAO,CAC5CxF,OACAI,KAAMo6F,EACN3qF,QAAS,IAAKA,GACd+sB,aAIE89D,EAAeA,KACnB,MAAMhjE,GAAQshE,EAAAA,GAAAA,IAAMoB,EAAS50F,OAEzBkyB,IACE33B,EAAM24F,aAAe,EACvBvoE,WAAW,KACTuH,EAAMq7C,UACNqnB,EAAS50F,MAAQ,MAChBzF,EAAM24F,eAEThhE,EAAMq7C,UACNqnB,EAAS50F,MAAQ,QAKjB2yC,EAAUzgB,IACdA,EAAMygB,OAAOp4C,EAAMs4F,aAyDrB,OAtDAsC,EAAAA,EAAAA,IAAUL,IAEVM,EAAAA,EAAAA,IAAYF,IAEZ95F,EAAAA,EAAAA,IACE,CAAC,IAAMb,EAAM8P,QAAS,IAAM9P,EAAMK,MAClC,CAGK45F,EAAAa,KAFH,IAACC,EAAkBC,GACnBf,GAACgB,EAAkBC,GAAcJ,EAEjC,MAAMnjE,GAAQshE,EAAAA,GAAAA,IAAMoB,EAAS50F,OAE7B,IAAKkyB,EACH,OAGF,IAAIwjE,GAAe,EAEnB,GAAIJ,EAAkB,CACpB,MAAM3B,EAAcL,GAAagC,GAC3BK,EAAcrC,GAAakC,GAE7B7B,GAAeA,IAAgBgC,IACjCjC,GAAWxhE,EAAOyhE,GAClB+B,GAAe,E,CAInB,GAAIH,EAAe,CACjB,MAAMzB,EAAaR,GAAaiC,EAAcl6C,QACxCu6C,EAAatC,GAAamC,EAAcp6C,QACxC24C,EAAeV,GAAaiC,EAAc1/D,UAC1CggE,EAAevC,GAAamC,EAAc5/D,UAE5Ci+D,IAAe8B,IACjBhC,GAAU1hE,EAAMihB,OAAOv4C,KAAMk5F,GAC7B4B,GAAe,GAGb1B,GAAgBA,IAAiB6B,IACnC9B,GAAY7hE,EAAMihB,OAAOv4C,KAAMo5F,EAAcz5F,EAAMq4F,cACnD8C,GAAe,E,CAIfA,IACFI,EAAAA,EAAAA,IAAS,KACPnjD,EAAOzgB,MAIb,CAAE6jE,MAAM,IAGH,KACE3nF,EAAAA,EAAAA,GACL,SACA,CACE4nF,KAAM,MACN,aAAcz7F,EAAMw4F,UACpB,mBAAoBx4F,EAAMy4F,gBAC1B15F,IAAKq7F,GAEP,EAACvmF,EAAAA,EAAAA,GAAE,IAAK,CAAC,EAAG,CAACsmF,EAAMh6F,QAAUg6F,EAAMh6F,UAAY,MAGrD,IClHK,SAASu7F,GAKdz7F,EACA07F,GAIA,OAFAjB,GAAQ1zB,SAAS20B,IAEV5B,EAAAA,EAAAA,IAAgB,CACrB/5F,MAAOm4F,GACP6B,KAAAA,CAAMh6F,EAAOi6F,G,IAAA,OAAEC,GAAFD,EACX,MAAMl7F,GAAMu7F,EAAAA,GAAAA,IAA2B,MACjCsB,EAAgBvB,IACpBt7F,EAAI0G,MAAQ40F,GAAU1iE,OAKxB,OAFAuiE,EAAO,CAAEviE,MAAO54B,IAET,KACE8U,EAAAA,EAAAA,GACL46D,GACAmqB,GACE,CACE75F,IAAK68F,GAEP,CACE37F,UACGD,IAKb,GAEJ,C,MAWa67F,GAA2BH,GACtC,WACAhwC,IAGWowC,GAAuBJ,GAAiB,OAAQttC,I,6CC1DtD,MAAM2tC,WAA4BrzD,MACvCtkB,WAAAA,CAAY5S,EAASwqF,EAAMnqF,GAAc,EAAOD,EAAa,IAC3Dg2C,MAAMp2C,GACN7Q,KAAKZ,KAAO,sBACZY,KAAKq7F,KAAOA,EACZr7F,KAAKkR,YAAcA,EACnBlR,KAAKiR,WAAaA,CACpB,EAOF,MAAMqqF,GAAiB,CACrB,IAAK,IAAM,IAAIF,GACb,aACA,eACA,EACA,cAEF,IAAK,IAAM,IAAIA,GACb,aACA,aACA,EACA,cAEF,IAAMG,GAAY,IAAIH,GACpB,WAAWG,IACX,gBACA,EACA,cAEF,IAAK,IAAM,IAAIH,GACb,UACA,gBACA,EACA,sBAEFI,QAASA,IAAM,IAAIJ,GACjB,SACA,iBACA,EACA,cAEFK,MAAOA,IAAM,IAAIL,GACf,QACA,WACA,EACA,KAUJ,SAASM,GAAY9wB,EAAO2wB,EAAU,IAEpC,GAAmB,eAAf3wB,EAAMxrE,KACR,OAAOk8F,GAAeG,QAIxB,GAAI7wB,aAAiB+wB,UAAa/wB,GAAiC,kBAAjBA,EAAM16D,OAAsB,CAC5E,MAAMrJ,EAAUy0F,GAAe1wB,EAAM16D,QACrC,OAAIrJ,EACKA,EAAQ00F,GAEV,IAAIH,GACT,SAASxwB,EAAM16D,SACf,cACA,EACA,QAEJ,CAGA,OAAI06D,aAAiBgxB,WAAahxB,EAAM/5D,QAAQ+mB,SAAS,SAChD0jE,GAAeE,UAIjB,IAAIJ,GACTxwB,EAAM/5D,SAAW,OACjB,iBACA,EACA,QAEJ,CAOA,MAAMgrF,GAQJp4E,WAAAA,CAAYtU,EAAU,CAAC,GACrBnP,KAAK87F,UAAY3sF,EAAQ2sF,WAAa,IACtC97F,KAAKmtE,WAAah+D,EAAQg+D,YAAc,MAAS,GACjDntE,KAAKsS,QAAUnD,EAAQmD,SAAW,MAAS,GAC3CtS,KAAK+7F,gBAAkB,IACzB,CAUA,qBAAMC,CAAgBC,GAAe,GAEnCj8F,KAAK+7F,gBAAkB,IAAIG,gBAC3B,MAAMC,EAAa,GACnB,IAAIta,EAAS,KACTua,EAAe,EACfC,EAAa,EAEjB,IACE,EAAG,CAED,GAAIr8F,KAAK+7F,gBAAgBO,OAAOC,QAC9B,MAIF,MAAMC,QAAiBx8F,KAAKy8F,WAAW5a,EAAQoa,GAG/CE,EAAW9zE,QAAQm0E,EAASE,SAC5B7a,EAAS2a,EAASG,WAClBP,GAAgBI,EAASE,QAAQh2F,OACjC21F,IAGAr8F,KAAKmtE,WAAW,CACdyvB,MAAO,WACPlsF,QAAS0rF,EACTC,WAAYA,EACZxrF,QAAS,OAAOurF,YAGpB,OAASva,IAAW7hF,KAAK+7F,gBAAgBO,OAAOC,SAGhD,GAAIv8F,KAAK+7F,gBAAgBO,OAAOC,QAC9B,MAAMjB,GAAeG,QAGvB,OAAOU,CACT,CAAE,MAAOvxB,GAEP,MAAMiyB,EAAajyB,aAAiBwwB,GAChCxwB,EACA8wB,GAAY9wB,GAEhB,MADA5qE,KAAKsS,QAAQuqF,GACPA,CACR,CACF,CAUA,gBAAMJ,CAAW5a,EAAQoa,GAEvB,MAAM9oC,EAAS,IAAI2pC,gBACfjb,GACF1uB,EAAOrkC,IAAI,SAAU+yD,GAEnBoa,GACF9oC,EAAOrkC,IAAI,eAAgB,QAE7BqkC,EAAOrkC,IAAI,QAASvvB,OAAOS,KAAK87F,YAEhC,IAEE,MAAMU,QAAiBO,EAAAA,GAAAA,GACrB,0BAA0B5pC,IAC1B,CAAEmpC,OAAQt8F,KAAK+7F,gBAAgBO,SAIjC,IAAKE,EAAS36E,GAAI,CAChB,IAAIm7E,EAAe,GACnB,IACE,MAAMC,QAAkBT,EAASU,OACjCF,EAAeC,EAAUryB,OAAS,EACpC,CAAE,MACA,CAEF,MAAM8wB,GAAYc,EAAUQ,EAC9B,CAGA,MAAMt9F,QAAa88F,EAASU,OAG5B,IAAKx9F,EAAKy9F,QACR,MAAM,IAAI/B,GACR17F,EAAKkrE,OAAS,OACd,aACA,EACA,SAIJ,MAAO,CACL8xB,QAASh9F,EAAKg9F,SAAW,GACzBC,WAAYj9F,EAAKi9F,YAAc,KAC/BS,eAAgB19F,EAAK09F,gBAAkB,EAE3C,CAAE,MAAOxyB,GAEP,GAAIA,aAAiBwwB,GACnB,MAAMxwB,EAGR,MAAM8wB,GAAY9wB,EACpB,CACF,CAMAyyB,KAAAA,GACMr9F,KAAK+7F,iBACP/7F,KAAK+7F,gBAAgBsB,OAEzB,CAMAC,SAAAA,GACE,QAAOt9F,KAAK+7F,iBAAkB/7F,KAAK+7F,gBAAgBO,OAAOC,OAC5D,CAMAt9C,KAAAA,GACEj/C,KAAK+7F,gBAAkB,IACzB,EAGF,UCvQA,MAAMwB,GAUJ95E,WAAAA,CAAYtU,EAAU,CAAC,GACrBnP,KAAKw9F,UAAYruF,EAAQquF,WAAa,KACtCx9F,KAAKy9F,WAAatuF,EAAQsuF,YAAc,EACxCz9F,KAAK09F,WAAavuF,EAAQuuF,YAAc,IACxC19F,KAAKmtE,WAAah+D,EAAQg+D,YAAc,MAAS,GACjDntE,KAAKsS,QAAUnD,EAAQmD,SAAW,MAAS,GAC3CtS,KAAK29F,UAAY39F,KAAK49F,oBACtB59F,KAAKu8F,SAAU,CACjB,CAMA,iBAAMsB,GACJ,IACE,MAAMrB,QAAiBO,EAAAA,GAAAA,GAAc,kCACrC,IAAKP,EAAS36E,GACZ,MAAM,IAAIkmB,MAAM,UAElB,MAAM1d,QAAemyE,EAASU,OAC9B,GAAI7yE,EAAO8yE,QACT,MAAO,CACLK,UAAWnzE,EAAOmzE,WAAa,IAC/BM,aAAczzE,EAAOyzE,cAAgB,WAGzC,MAAM,IAAI/1D,MAAM1d,EAAOugD,OAAS,SAClC,CAAE,MAAOA,GAGP,OADAxmC,QAAQC,KAAK,+CAAgDumC,GACtD,CAAE4yB,UAAW,IAAKM,aAAc,UACzC,CACF,CAeA,aAAMC,GACJ/9F,KAAKu8F,SAAU,EAEf,IAEE,IAAKv8F,KAAKw9F,UAAW,CACnB,MAAMvlD,QAAej4C,KAAK69F,cAC1B79F,KAAKw9F,UAAYvlD,EAAOulD,SAC1B,CAGAx9F,KAAKmtE,WAAW,CACdyvB,MAAO,WACP/rF,QAAS,YACTH,QAAS,IAGX,MAAMstF,EAAY,IAAInC,GAAe,CACnC1uB,WAAa/oD,GAAMpkB,KAAKmtE,WAAW,IAAK/oD,EAAGw4E,MAAO,aAClDtqF,QAAU8B,GAAMpU,KAAKsS,QAAQ8B,KAGzBsoF,QAAgBsB,EAAUhC,iBAAgB,GAEhD,GAAIh8F,KAAKu8F,QACP,MAAM,IAAInB,GAAoB,QAAS,WAAW,EAAO,IAa3D,GATAp7F,KAAKmtE,WAAW,CACdyvB,MAAO,UACP/rF,QAAS,UACTH,QAAS,EACTC,MAAO+rF,EAAQh2F,SAGjB1G,KAAKi+F,0BAA0BvB,GAE3B18F,KAAKu8F,QACP,MAAM,IAAInB,GAAoB,QAAS,WAAW,EAAO,IAI3D,MAAM8C,EAASl+F,KAAKm+F,gBAAgBzB,GAEpC,IAAK,IAAI7mF,EAAI,EAAGA,EAAIqoF,EAAOx3F,OAAQmP,IAAK,CACtC,GAAI7V,KAAKu8F,QACP,MAAM,IAAInB,GAAoB,QAAS,WAAW,EAAO,UAIrDp7F,KAAKo+F,qBAAqBF,EAAOroF,GAAIA,GAE3C7V,KAAKmtE,WAAW,CACdyvB,MAAO,YACPlsF,QAASmF,EAAI,EACblF,MAAOutF,EAAOx3F,OACdmK,QAAS,UAAUgF,EAAI,KAAKqoF,EAAOx3F,aAEvC,CAmBA,OAhBA1G,KAAKmtE,WAAW,CACdyvB,MAAO,aACP/rF,QAAS,YACTH,QAASwtF,EAAOx3F,OAChBiK,MAAOutF,EAAOx3F,eAGV1G,KAAKq+F,SAASH,EAAOx3F,OAAQg2F,EAAQh2F,QAE3C1G,KAAKmtE,WAAW,CACdyvB,MAAO,YACP/rF,QAAS,YAAY6rF,EAAQh2F,aAC7BgK,QAASgsF,EAAQh2F,OACjBiK,MAAO+rF,EAAQh2F,SAGV,CAAEy2F,SAAS,EAAMnvF,WAAY0uF,EAAQh2F,OAC9C,CAAE,MAAOkkE,GACP,MAAMiyB,EAAajyB,aAAiBwwB,GAChCxwB,EACA,IAAIwwB,GACFxwB,EAAM/5D,SAAW,SACjB,iBACA,EACA,SAGN,MADA7Q,KAAKsS,QAAQuqF,GACPA,CACR,CACF,CAOAoB,yBAAAA,CAA0BvB,GACxBA,EAAQnyE,KAAK,CAACvW,EAAGC,KACf,MAAMqqF,EAActqF,EAAEpB,UAAYoB,EAAEpB,SAASE,WAAc,EACrDyrF,EAActqF,EAAErB,UAAYqB,EAAErB,SAASE,WAAc,EAC3D,OAAOyrF,EAAaD,GAExB,CAQAH,eAAAA,CAAgBzB,GACd,MAAMwB,EAAS,GACf,IAAK,IAAIroF,EAAI,EAAGA,EAAI6mF,EAAQh2F,OAAQmP,GAAK7V,KAAKw9F,UAC5CU,EAAO71E,KAAKq0E,EAAQr3E,MAAMxP,EAAGA,EAAI7V,KAAKw9F,YAExC,OAAOU,CACT,CAUA,0BAAME,CAAqBp5C,EAAOw5C,GAChC,IAAIC,EAEJ,IAAK,IAAIC,EAAU,EAAGA,GAAW1+F,KAAKy9F,WAAYiB,IAChD,IACE,aAAa1+F,KAAK2+F,YAAY35C,EAAOw5C,EACvC,CAAE,MAAO5zB,GAIP,GAHA6zB,EAAY7zB,EAGRA,aAAiBwwB,KACA,gBAAfxwB,EAAMywB,MACS,cAAfzwB,EAAMywB,MACS,YAAfzwB,EAAMywB,MACR,MAAMzwB,EAKV,GAAI8zB,EAAU1+F,KAAKy9F,WAAY,CAE7B,MAAMnuE,EAAQtvB,KAAK09F,WAAaptF,KAAKmS,IAAI,EAAGi8E,EAAU,SAChD1+F,KAAK4+F,MAAMtvE,GAEjBtvB,KAAKmtE,WAAW,CACdyvB,MAAO,WACP/rF,QAAS,MAAM2tF,EAAU,gBAAgBE,KAAW1+F,KAAKy9F,iBACzD/sF,QAAS8tF,EACTE,QAASA,GAEb,CACF,CAIF,MAAMD,aAAqBrD,GACvBqD,EACA,IAAIrD,GACF,MAAMoD,EAAU,cAAcx+F,KAAKy9F,eACnC,uBACA,EACA,iBAER,CAUA,iBAAMkB,CAAY35C,EAAOw5C,GACvB,MAAMK,QAAiB7+F,KAAK8+F,kBAAkB95C,GAE9C,IACE,MAAMw3C,QAAiBO,EAAAA,GAAAA,GAAc,gCAAiC,CACpE1uE,OAAQ,OACR0wE,QAAS,CAAE,eAAgB,oBAC3Bva,KAAMruD,KAAKC,UAAU,CACnBooE,QAASj/F,OAAOi/F,GAChBb,UAAW39F,KAAK29F,UAChBj+F,KAAMslD,EACN65C,eAIJ,IAAKrC,EAAS36E,GAAI,CAChB,IAAIm7E,EAAe,GACnB,IACE,MAAMC,QAAkBT,EAASU,OACjCF,EAAeC,EAAUryB,OAAS,EACpC,CAAE,MACA,CAEF,MAAM5qE,KAAKg/F,gBAAgBxC,EAAStsF,OAAQ8sF,EAC9C,CAEA,MAAM3yE,QAAemyE,EAASU,OAE9B,IAAK7yE,EAAO8yE,QACV,MAAM,IAAI/B,GACR/wE,EAAOugD,OAAS,SAChB,uBACA,EACA,SAIJ,OAAOvgD,CACT,CAAE,MAAOugD,GACP,GAAIA,aAAiBwwB,GACnB,MAAMxwB,EAGR,GAAIA,aAAiBgxB,WAAahxB,EAAM/5D,QAAQ+mB,SAAS,SACvD,MAAM,IAAIwjE,GACR,SACA,iBACA,EACA,cAGJ,MAAM,IAAIA,GACRxwB,EAAM/5D,SAAW,SACjB,uBACA,EACA,QAEJ,CACF,CAUA,cAAMwtF,CAASY,EAAajxF,GAC1B,IACE,MAAMwuF,QAAiBO,EAAAA,GAAAA,GAAc,mCAAoC,CACvE1uE,OAAQ,OACR0wE,QAAS,CAAE,eAAgB,oBAC3Bva,KAAMruD,KAAKC,UAAU,CACnBunE,UAAW39F,KAAK29F,UAChBsB,cACAjxF,iBAIJ,IAAKwuF,EAAS36E,GAAI,CAChB,IAAIm7E,EAAe,GACnB,IACE,MAAMC,QAAkBT,EAASU,OACjCF,EAAeC,EAAUryB,OAAS,EACpC,CAAE,MACA,CAEF,MAAM5qE,KAAKg/F,gBAAgBxC,EAAStsF,OAAQ8sF,EAC9C,CAEA,MAAM3yE,QAAemyE,EAASU,OAE9B,IAAK7yE,EAAO8yE,QACV,MAAM,IAAI/B,GACR/wE,EAAOugD,OAAS,SAChB,mBACA,EACA,SAIJ,OAAOvgD,CACT,CAAE,MAAOugD,GACP,GAAIA,aAAiBwwB,GACnB,MAAMxwB,EAER,MAAM,IAAIwwB,GACRxwB,EAAM/5D,SAAW,SACjB,mBACA,EACA,QAEJ,CACF,CAOA+sF,iBAAAA,GACE,MAAO,WAAWl4F,KAAK6vC,SAASjlC,KAAK4uF,SAAS/5E,SAAS,IAAIE,MAAM,IACnE,CAQA,uBAAMy5E,CAAkBp/F,GACpB,MAAMq5B,EAAO5C,KAAKC,UAAU12B,GACtBy/F,EAAU,IAAIC,YACdC,EAAaF,EAAQG,OAAOvmE,GAIlC,GAAsB,qBAAXwmE,QAA0BA,OAAOC,OAAQ,CAClD,MAAMC,QAAmBF,OAAOC,OAAOE,OAAO,UAAWL,GACnDM,EAAY55F,MAAMU,KAAK,IAAIm5F,WAAWH,IAC5C,OAAOE,EAAUzpF,IAAIjC,GAAKA,EAAEkR,SAAS,IAAIpgB,SAAS,EAAG,MAAMijC,KAAK,GAClE,CAGA,IAAIzzB,EAAK,WACLC,EAAK,WACT,IAAK,IAAIqB,EAAI,EAAGA,EAAIwpF,EAAW34F,OAAQmP,IACrCtB,EAAKjE,KAAKuvF,KAAKtrF,EAAK8qF,EAAWxpF,GAAI,YAAgB,EACnDrB,EAAKlE,KAAKuvF,KAAKrrF,EAAK6qF,EAAWxpF,GAAI,YAAuB,EAE5D,OAAOtB,EAAG4Q,SAAS,IAAIpgB,SAAS,EAAG,KAAOyP,EAAG2Q,SAAS,IAAIpgB,SAAS,EAAG,IACxE,CAUFi6F,eAAAA,CAAgB9uF,EAAQqrF,EAAU,IAChC,OAAQrrF,GACN,KAAK,IACH,OAAO,IAAIkrF,GACT,aACA,eACA,EACA,cAEJ,KAAK,IACH,OAAO,IAAIA,GACT,aACA,aACA,EACA,cAEJ,KAAK,IACH,OAAO,IAAIA,GACT,WAAWG,IACX,gBACA,EACA,cAEJ,KAAK,IACH,OAAO,IAAIH,GACT,QACA,qBACA,EACA,aAEJ,KAAK,IACH,OAAO,IAAIA,GACT,QACA,mBACA,EACA,aAEJ,KAAK,IACL,QACE,OAAO,IAAIA,GACT,UAAUG,GAAWrrF,IACrB,gBACA,EACA,SAGR,CAQA0uF,KAAAA,CAAMkB,GACJ,OAAO,IAAIjoD,QAAQvT,GAAW7U,WAAW6U,EAASw7D,GACpD,CAKAzC,KAAAA,GACEr9F,KAAKu8F,SAAU,CACjB,CAMAt9C,KAAAA,GACEj/C,KAAKu8F,SAAU,EACfv8F,KAAK29F,UAAY39F,KAAK49F,mBACxB,EAGF,UC1dA,MAAMmC,GAMJt8E,WAAAA,CAAYtU,EAAU,CAAC,GACrBnP,KAAKmtE,WAAah+D,EAAQg+D,YAAc,MAAS,GACjDntE,KAAKg+F,UAAY,IACnB,CAcA,oBAAMgC,GAEJhgG,KAAKg+F,UAAY,IAAInC,GAAe,CAClC1uB,WAAa/oD,GAAMpkB,KAAKmtE,WAAW,IAAK/oD,EAAGw4E,MAAO,eAGpD,MAAMF,QAAgB18F,KAAKg+F,UAAUhC,iBAAgB,GAGrDh8F,KAAKmtE,WAAW,CAAEyvB,MAAO,WAAY/rF,QAAS,gBAE9C,MAAMY,EAAa,CACjBgjF,UAAW/uF,KAAK6vC,MAChBjnC,QAAS2xF,GAAAA,GACTvgG,KAAM,CACJwgG,UAAWxD,EAAQh2F,OACnBy5F,MAAO,CAAC,EACRC,SAAU,CAAC,IAKf,IAAK,MAAMC,KAAU3D,EACnBjrF,EAAW/R,KAAKygG,MAAME,EAAOjuF,IAAM,CACjCQ,SAAUytF,EAAOztF,SACjB9N,MAAOu7F,EAAOv7F,OAAS,MAK3B,MAAMs7F,QAAiBpgG,KAAKsgG,gBAC5B7uF,EAAW/R,KAAK0gG,SAAWA,EAG3BpgG,KAAKmtE,WAAW,CAAEyvB,MAAO,cAAe/rF,QAAS,cACjD7Q,KAAKugG,eAAe9uF,GAEpB,MAAM+uF,EAAgBnxF,OAAOC,KAAK8wF,GAAU15F,OAC5C,MAAO,CAAEy2F,SAAS,EAAM+C,UAAWxD,EAAQh2F,OAAQ85F,gBACrD,CAOA,mBAAMF,GACJ,IACE,MAAM9D,QAAiBO,EAAAA,GAAAA,GAAc,8BACrC,IAAKP,EAAS36E,GAEZ,OADAuiB,QAAQC,KAAK,4BAA6Bm4D,EAAStsF,QAC5C,CAAC,EAEV,MAAMxQ,QAAa88F,EAASU,OAE5B,OAAOx9F,EAAK0gG,UAAY,CAAC,CAC3B,CAAE,MAAOx1B,GAEP,OADAxmC,QAAQC,KAAK,4BAA6BumC,GACnC,CAAC,CACV,CACF,CAOA21B,cAAAA,CAAe7gG,GAEb,MAAMw9F,EAAO/mE,KAAKC,UAAU12B,EAAM,KAAM,GAGlC+gG,EAAO,IAAIC,KAAK,CAACxD,GAAO,CAAE59F,KAAM,qBAGhCqhG,EAAMC,IAAIC,gBAAgBJ,GAG1BzsF,EAAI+3B,SAAS+0D,cAAc,KACjC9sF,EAAE+sF,KAAOJ,EAET3sF,EAAEgtF,SAAW,kBAAiB,IAAIt7F,MAAOiI,cAAcwa,MAAM,KAAK,UAGlE4jB,SAASy4C,KAAKyc,YAAYjtF,GAC1BA,EAAEktF,QAGFn1D,SAASy4C,KAAK2c,YAAYntF,GAC1B4sF,IAAIQ,gBAAgBT,EACtB,CAKAtD,KAAAA,GACMr9F,KAAKg+F,WACPh+F,KAAKg+F,UAAUX,OAEnB,CAMAC,SAAAA,GACE,QAAOt9F,KAAKg+F,WAAYh+F,KAAKg+F,UAAUV,WACzC,EAGF,UCzIA,MAAM+D,GAUJ59E,WAAAA,CAAYtU,EAAU,CAAC,GACrBnP,KAAKw9F,UAAYruF,EAAQquF,WAAa,GACtCx9F,KAAKy9F,WAAatuF,EAAQsuF,YAAc,EACxCz9F,KAAK09F,WAAavuF,EAAQuuF,YAAc,IACxC19F,KAAKmtE,WAAah+D,EAAQg+D,YAAc,MAAS,GACjDntE,KAAKsS,QAAUnD,EAAQmD,SAAW,MAAS,GAC3CtS,KAAKu8F,SAAU,CACjB,CAQA,aAAMt+D,CAAQxsB,GAIZ,GAHAzR,KAAKu8F,SAAU,GAGV9qF,IAAeA,EAAW/R,KAC7B,MAAM,IAAI07F,GACR,WACA,kBACA,EACA,cAIJ,MAAM,MAAE+E,EAAQ,CAAC,EAAC,SAAEC,EAAW,CAAC,GAAM3uF,EAAW/R,KAC3C4hG,EAAcjyF,OAAO+oD,QAAQ+nC,GAC7BoB,EAAiBlyF,OAAO+oD,QAAQgoC,GAEhCpyF,EAAaszF,EAAY56F,OACzB86F,EAAgBD,EAAe76F,OAC/B+6F,EAAazzF,EAAawzF,EAEhC,IAAIE,EAAgB,EAChBC,EAAmB,EACnBC,EAAc,EACdC,EAAiB,EAErB,IAEE7hG,KAAKmtE,WAAW,CACdyvB,MAAO,kBACP/rF,QAAS,cACTH,QAAS,EACTC,MAAO8wF,IAGT,MAAMK,EAAa9hG,KAAKm+F,gBAAgBmD,EAAathG,KAAKw9F,WAE1D,IAAK,IAAI3nF,EAAI,EAAGA,EAAIisF,EAAWp7F,OAAQmP,IAAK,CAC1C,GAAI7V,KAAKu8F,QACP,MAAM,IAAInB,GAAoB,QAAS,WAAW,EAAO,IAG3D,MAAMp2C,EAAQ88C,EAAWjsF,GACnBksF,EAAY1yF,OAAO2yF,YAAYh9C,GAE/B36B,QAAerqB,KAAKo+F,qBAAqB,QAAS2D,GACxDL,GAAiBr3E,EAAO43E,cACxBL,GAAev3E,EAAO63E,YAEtBliG,KAAKmtE,WAAW,CACdyvB,MAAO,kBACP/rF,QAAS,YAAY6wF,KAAiB1zF,OACtC0C,QAASgxF,EACT/wF,MAAO8wF,EACPhxF,WAAaixF,EAAgBD,EAAc,IAE/C,CAGAzhG,KAAKmtE,WAAW,CACdyvB,MAAO,qBACP/rF,QAAS,cACTH,QAASgxF,EACT/wF,MAAO8wF,IAGT,MAAMU,EAAgBniG,KAAKm+F,gBAAgBoD,EAAgBvhG,KAAKw9F,WAEhE,IAAK,IAAI3nF,EAAI,EAAGA,EAAIssF,EAAcz7F,OAAQmP,IAAK,CAC7C,GAAI7V,KAAKu8F,QACP,MAAM,IAAInB,GAAoB,QAAS,WAAW,EAAO,IAG3D,MAAMp2C,EAAQm9C,EAActsF,GACtBksF,EAAY1yF,OAAO2yF,YAAYh9C,GAE/B36B,QAAerqB,KAAKo+F,qBAAqB,WAAY2D,GAC3DJ,GAAoBt3E,EAAO43E,cAC3BJ,GAAkBx3E,EAAO63E,YAEzBliG,KAAKmtE,WAAW,CACdyvB,MAAO,qBACP/rF,QAAS,YAAY8wF,KAAoBH,OACzC9wF,QAASgxF,EAAgBC,EACzBhxF,MAAO8wF,EACPhxF,WAAY,GAAMkxF,EAAmBH,EAAiB,IAE1D,CAWA,OARAxhG,KAAKmtE,WAAW,CACdyvB,MAAO,YACP/rF,QAAS,OACTH,QAAS+wF,EACT9wF,MAAO8wF,EACPhxF,WAAY,MAGP,CACL0sF,SAAS,EACTuE,gBACAC,mBACAC,cACAC,iBACAO,gBAAiB3wF,EAAWgjF,UAGhC,CAAE,MAAO7pB,GACP,MAAMiyB,EAAajyB,aAAiBwwB,GAChCxwB,EACA,IAAIwwB,GACFxwB,EAAM/5D,SAAW,OACjB,iBACA,EACA,SAGN,MADA7Q,KAAKsS,QAAQuqF,GACPA,CACR,CACF,CAKAsB,eAAAA,CAAgB/lC,EAASolC,GACvB,MAAMU,EAAS,GACf,IAAK,IAAIroF,EAAI,EAAGA,EAAIuiD,EAAQ1xD,OAAQmP,GAAK2nF,EACvCU,EAAO71E,KAAK+vC,EAAQ/yC,MAAMxP,EAAGA,EAAI2nF,IAEnC,OAAOU,CACT,CAKA,0BAAME,CAAqB9+F,EAAMI,GAC/B,IAAI++F,EAEJ,IAAK,IAAIC,EAAU,EAAGA,GAAW1+F,KAAKy9F,WAAYiB,IAChD,IACE,aAAa1+F,KAAK2+F,YAAYr/F,EAAMI,EACtC,CAAE,MAAOkrE,GAGP,GAFA6zB,EAAY7zB,EAERA,aAAiBwwB,KACA,gBAAfxwB,EAAMywB,MACS,cAAfzwB,EAAMywB,MACS,YAAfzwB,EAAMywB,MACR,MAAMzwB,EAIV,GAAI8zB,EAAU1+F,KAAKy9F,WAAY,CAC7B,MAAMnuE,EAAQtvB,KAAK09F,WAAaptF,KAAKmS,IAAI,EAAGi8E,EAAU,SAChD1+F,KAAK4+F,MAAMtvE,EACnB,CACF,CAGF,MAAMmvE,CACR,CAKA,iBAAME,CAAYr/F,EAAMI,GACtB,IACE,MAAM88F,QAAiBO,EAAAA,GAAAA,GAAc,kCAAmC,CACtE1uE,OAAQ,OACR0wE,QAAS,CAAE,eAAgB,oBAC3Bva,KAAMruD,KAAKC,UAAU,CAAE92B,OAAMI,WAG/B,IAAK88F,EAAS36E,GAAI,CAChB,IAAIm7E,EAAe,GACnB,IACE,MAAMC,QAAkBT,EAASU,OACjCF,EAAeC,EAAUryB,OAAS,EACpC,CAAE,MACA,CAEF,MAAM5qE,KAAKg/F,gBAAgBxC,EAAStsF,OAAQ8sF,EAC9C,CAEA,MAAM3yE,QAAemyE,EAASU,OAE9B,IAAK7yE,EAAO8yE,QACV,MAAM,IAAI/B,GACR/wE,EAAOugD,OAAS,SAChB,wBACA,EACA,SAIJ,OAAOvgD,CACT,CAAE,MAAOugD,GACP,GAAIA,aAAiBwwB,GACnB,MAAMxwB,EAER,GAAIA,aAAiBgxB,WAAahxB,EAAM/5D,QAAQ+mB,SAAS,SACvD,MAAM,IAAIwjE,GACR,SACA,iBACA,EACA,cAGJ,MAAM,IAAIA,GACRxwB,EAAM/5D,SAAW,SACjB,wBACA,EACA,QAEJ,CACF,CAKAmuF,eAAAA,CAAgB9uF,EAAQqrF,EAAU,IAChC,OAAQrrF,GACN,KAAK,IACH,OAAO,IAAIkrF,GACT,aACA,eACA,EACA,cAEJ,KAAK,IACH,OAAO,IAAIA,GACT,aACA,aACA,EACA,cAEJ,KAAK,IACH,OAAO,IAAIA,GACT,WAAWG,IACX,gBACA,EACA,aAEJ,KAAK,IACL,QACE,OAAO,IAAIH,GACT,UAAUG,GAAWrrF,IACrB,gBACA,EACA,SAGR,CAKA0uF,KAAAA,CAAMkB,GACJ,OAAO,IAAIjoD,QAAQvT,GAAW7U,WAAW6U,EAASw7D,GACpD,CAKAzC,KAAAA,GACEr9F,KAAKu8F,SAAU,CACjB,EAGF,UC/RAzuB,GAAQzH,SAASuQ,GAAY,GAAS,GAAQ0V,GAAemC,GAAa5U,GAAcR,GAAa,IACrG,MAAM,GAAS,MACf,SAAS,GAAYv0E,GACnB,OAAOvF,OAAOuF,GAAOC,SAAS,EAAG,IACnC,CACA,SAASs9F,GAAgBp9F,GACvB,MAAO,GAAGA,EAAKC,iBAAiB,GAAYD,EAAKE,WAAa,MAAM,GAAYF,EAAKG,YACvF,CACA,SAASk9F,KACP,MAAMt7F,EAAU,IAAItB,KACpBsB,EAAQrB,SAAS,EAAG,EAAG,EAAG,GAC1B,MAAMoB,EAAY,IAAIrB,KAAKsB,EAAQL,UAAY,EAAI,IACnD,MAAO,CAAC07F,GAAgBt7F,GAAYs7F,GAAgBr7F,GACtD,CACA,QACE5H,KAAM,eACNmjG,WAAY,CACVrH,SAAQ,GACRC,KAAI,GACJqH,kBAAiB,GAEnB,IAAA9iG,GACE,MAAO,CACL2R,SAAS,EACTC,YAAY,EACZE,SAAS,EACTI,WAAW,EACX7D,UAAW,CAAC,EACZ00F,iBAAiB,EACjBC,gBAAgB,EAChBh1F,YAAa,IAAIhI,KACjBi9F,WAAY,KACZr0F,QAAS,MAET4D,WAAY,CACV0wF,QAAQ,EACRC,QAAQ,GAEVp0F,aAAc,UACdG,wBAAwB,EACxBG,eAAgBuzF,KAEhBQ,cAAe,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAE7FC,WAAY,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAE1FC,YAAa,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAEtG5yF,cAAc,EACd6yF,gBAAiB,GAEjBzyF,mBAAoB,CAClBE,QAAS,EACTC,MAAO,EACPE,QAAS,GACTJ,WAAY,GAEdO,gBAAiB,KACjBkyF,oBAAqB,KAErBC,iBAAkB,KAClBC,uBAAwB,KACxBC,wBAAyB,KAE7B,EACAzjG,SAAU,CACR,aAAA0jG,GACE,OAAO/jG,OAAOS,KAAKujG,MAAMttE,QAAU,QACrC,EACA,gBAAAutE,GACE,OAAOh+F,OAAOxF,KAAK+N,UAAUC,YAAc,EAC7C,EACA,kBAAAy1F,GACE,OAAOp0F,OAAOC,KAAKtP,KAAK+N,UAAUwB,cAAgB,CAAC,GAAG7I,MACxD,EACA,iBAAA0G,GACE,OAAIpN,KAAK0iG,eAAuB,YAC3B1iG,KAAKyiG,gBACH,UAD2B,UAEpC,EACA,iBAAAp1F,GACE,OAAOrN,KAAKhB,GAAG,mBAAmBgB,KAAKoN,kBAAkBmW,OAAO,GAAGmF,gBAAgB1oB,KAAKoN,kBAAkBiY,MAAM,KAClH,EACA,aAAA9X,GACE,MAAM8lF,EAAOrzF,KAAK0N,YAAYg2F,WAC9B,OAAIrQ,EAAO,EAAUrzF,KAAKhB,GAAG,+BACzBq0F,EAAO,GAAWrzF,KAAKhB,GAAG,6BAC1Bq0F,EAAO,GAAWrzF,KAAKhB,GAAG,0BAC1Bq0F,EAAO,GAAWrzF,KAAKhB,GAAG,+BAC1Bq0F,EAAO,GAAWrzF,KAAKhB,GAAG,6BACvBgB,KAAKhB,GAAG,8BACjB,EACA,mBAAAwO,GACE,OAAIxN,KAAK0iG,eAAuB1iG,KAAKhB,GAAG,gCACnCgB,KAAKyiG,gBACoB,IAA1BziG,KAAKwjG,iBAA+BxjG,KAAKhB,GAAG,0BAChB,IAA5BgB,KAAKyjG,mBACAzjG,KAAKhB,GAAG,2BAA4B,CACzCmhG,MAAOngG,KAAKwjG,iBAAiBv1F,eAAejO,KAAKsjG,iBAG9CtjG,KAAKhB,GAAG,2BAA4B,CACzCmhG,MAAOngG,KAAKwjG,iBAAiBv1F,eAAejO,KAAKsjG,eACjDK,SAAU3jG,KAAKyjG,mBAAmBx1F,eAAejO,KAAKsjG,iBATtBtjG,KAAKhB,GAAG,4BAW5C,EACA,gBAAAsO,GACE,OAAO,IAAIipB,KAAKqtE,eAAe5jG,KAAKsjG,cAAe,CACjD/9F,KAAM,UACNE,MAAO,OACPrB,IAAK,UACLF,QAAS,SACRyyB,OAAO32B,KAAK0N,YACjB,EACA,gBAAAE,GACE,OAAO,IAAI2oB,KAAKqtE,eAAe5jG,KAAKsjG,cAAe,CACjDjQ,KAAM,UACND,OAAQ,UACRD,OAAQ,UACR0Q,QAAQ,IACPltE,OAAO32B,KAAK0N,YACjB,EACA,aAAAG,GACE,MAAMi2F,EAAWvtE,KAAKqtE,iBAAiBG,kBAAkBD,UAAY9jG,KAAKhB,GAAG,2BACvEglG,GAAiBhkG,KAAK0N,YAAYu2F,oBAClCv6E,EAAOs6E,GAAiB,EAAI,IAAM,IAClCE,EAAkB5zF,KAAKuZ,IAAIm6E,GAC3BG,EAAQ7zF,KAAK2Z,MAAMi6E,EAAkB,IACrCE,EAAUF,EAAkB,GAC5BlsE,EAAqB,IAAZosE,EAAgB,MAAM16E,IAAOy6E,IAAU,MAAMz6E,IAAOy6E,KAAS5kG,OAAO6kG,GAASr/F,SAAS,EAAG,OACxG,MAAO,GAAG++F,OAAc9rE,GAC1B,EAEA,gBAAAxoB,GACE,MAAM60F,EAAQrkG,KAAK+N,UAAUwB,cAAgB,CAAC,EAC9C,MAAO,CACL4wC,OAAQ9wC,OAAOC,KAAK+0F,GACpB1pE,SAAU,CAAC,CACTj7B,KAAM2P,OAAOse,OAAO02E,GACpB5pE,gBAAiBz6B,KAAK8iG,cAAcz9E,MAAM,EAAGhW,OAAOC,KAAK+0F,GAAO39F,QAChEy5B,YAAa,IAGnB,EAEA,aAAAnwB,GACE,MAAMs0F,EAAkBtkG,KAAKiQ,oBAC7B,MAAO,CACLkwC,OAAQ9wC,OAAOC,KAAKg1F,GACpB3pE,SAAU,CAAC,CACTj7B,KAAM2P,OAAOse,OAAO22E,GACpB7pE,gBAAiBz6B,KAAK+iG,WAAW19E,MAAM,EAAGhW,OAAOC,KAAKg1F,GAAiB59F,QACvEy5B,YAAa,IAGnB,EAEA,mBAAAlwB,GACE,MAAMo0F,EAAQrkG,KAAK+N,UAAUgC,WAAa,CAAC,EACrCu0F,EAAkB,CAAC,EACzB,IAAK,MAAOp0F,EAAQR,KAAUL,OAAO+oD,QAAQisC,GAAQ,CACnD,MAAME,EAA0B,UAAXr0F,EAAqBlQ,KAAKhB,GAAG,qBAAuBgB,KAAKhB,GAAG,0BACjFslG,EAAgBC,IAAiBD,EAAgBC,IAAiB,GAAK70F,CACzE,CACA,OAAO40F,CACT,EAEA,iBAAAE,GACE,MAAMC,EAAQzkG,KAAK+N,UAAU22F,aAAe,CAAC,EACvCC,EAAUF,EAAME,SAAW,CAAC,EAClC,OAAOA,EAAQ3kG,KAAKyO,eAAiB,CACnCm2F,OAAQ,GAEZ,EAEA,cAAAC,GACE,MAAMJ,EAAQzkG,KAAK+N,UAAU22F,aAAe,CAAC,EAC7C,OAAOD,EAAMtkD,QAAU,EACzB,EAEA,qBAAA2kD,GACE,MAAMC,EAAQ,IAAIh2E,IAIlB,OAHA/uB,KAAK6kG,eAAez2E,QAAQzf,IAC1B3O,KAAKglG,uBAAuBr2F,GAAOyf,QAAQnpB,GAAQ8/F,EAAMzjG,IAAI2D,EAAKM,SAE7Dw/F,EAAMr2F,KAAO,CACtB,EAEA,kBAAAu2F,GACE,OAAOjlG,KAAK6kG,eAAe3uF,IAAIvH,GAAS3O,KAAKklG,qBAAqBv2F,GACpE,EAEA,YAAAM,GACE,MAAMw1F,EAAQzkG,KAAK+N,UAAU22F,aAAe,CAAC,EAC7C,OAAQD,EAAMtkD,QAAU,IAAIz5C,OAAS,CACvC,EAEA,oBAAAoI,GACE,OAAOhP,OAAOC,WAAa,IAAM,QAAU,KAC7C,EAEA,oBAAAmP,GACE,MAAMu1F,EAAQzkG,KAAK+N,UAAU22F,aAAe,CAAC,EACvCE,EAAS5kG,KAAKwkG,kBAAkBI,QAAU,GAC1CO,EAAa,UACnB,MAAO,CACLhlD,OAAQngD,KAAKilG,mBACbtqE,SAAU,CAAC,CACThsB,MAAO3O,KAAKhB,GAAG,0BACfU,KAAM+kG,EAAM9zF,OAAS,GACrB+pB,YAAayqE,EACb1qE,gBAAiBz6B,KAAKolG,UAAUD,EAAY,IAC5CE,qBAAsBF,EACtBG,iBAAkBH,EAClBhlE,YAAa,EACbolE,YAAa,EACbC,iBAAkB,EAClB35D,QAAS,IACT3L,MAAM,MACF0kE,EAAO1uF,IAAI,CAAC1X,EAAME,KACtB,MAAMqlB,EAAQ/jB,KAAKylG,cAAc/mG,GACjC,MAAO,CACLiQ,MAAO3O,KAAK0lG,sBAAsBlnG,GAClCkB,KAAMlB,EAAKkB,MAAQ,GACnBg7B,YAAa3W,EACb0W,gBAAiBz6B,KAAKolG,UAAUrhF,EAAO,KACvCshF,qBAAsBthF,EACtBuhF,iBAAkBvhF,EAClBoc,YAAa,EACbolE,YAAa,EACbC,iBAAkB,EAClB35D,QAAS,IACT3L,MAAM,MAId,EAEA,gBAAA9wB,GACE,MAAM27E,EAAY,UAClB,MAAO,CACL5uD,YAAY,EACZJ,qBAAqB,EACrBJ,YAAa,CACXC,KAAM,QACNC,WAAW,GAEbK,QAAS,CACP6wB,OAAQ,CACNh1B,SAAS,EACT64B,SAAU,SACVzQ,OAAQ,CACNy/B,eAAe,EACfD,SAAU,EACVD,UAAW,EACX/pD,QAAS,GACT5R,MAAOgnE,IAGXxG,QAAS,CACP9pD,gBAAiB,qBACjBuvD,WAAY,OACZtC,UAAW,OACX/xD,QAAS,GACTsJ,aAAc,EACdumD,eAAe,EACfvwC,UAAW,CACTpmC,MAAOggB,IACL,MAAMnwB,EAAQmwB,IAAQ,IAAIotB,UAC1B,OAAOj8C,KAAK6kG,eAAenmG,IAAU,IAEvCiQ,MAAOksB,IACL,MAAMoO,EAASpO,EAAQoO,QAAU,CAAC,EAC5BnkC,OAAqBqQ,IAAb8zB,EAAOjhB,EAAkBihB,EAAOjhB,EAAI6S,EAAQqhB,IAC1D,MAAO,IAAIrhB,EAAQjK,QAAQjiB,UAAUnJ,OAAOV,GAAS,GAAGmJ,oBAAoBjO,KAAKhB,GAAG,+BAK5Fq9B,OAAQ,CACNtlB,EAAG,CACDshB,KAAM,CACJN,SAAS,GAEXhB,MAAO,CACLhT,MAAOgnE,EACPpwB,cAAe,EACfthC,UAAU,IAGdrR,EAAG,CACDiQ,aAAa,EACbI,KAAM,CACJtU,MAAO,6BAETgT,MAAO,CACLhT,MAAOgnE,EACPgC,UAAW,EACX9mE,SAAUnhB,GAASU,OAAOV,GAAOmJ,oBAK3C,EAEA,YAAAwB,GACE,MAAO,CACL0sB,YAAY,EACZJ,qBAAqB,EACrBiuB,OAAQ,MACR6C,YAAa,EACbyG,OAAQ,CACN39B,QAAS,IAEXuG,QAAS,CACP6wB,OAAQ,CACNh1B,SAAS,GAEXwsD,QAAS,CACP9pD,gBAAiB,qBACjBuvD,WAAY,OACZtC,UAAW,OACX/xD,QAAS,GACTsJ,aAAc,EACdumD,eAAe,EACf9vB,EAAG,IACHzgB,UAAW,CACTtmC,MAAOksB,IACL,MAAM/1B,EAAQ+1B,EAAQqhB,IAChBvrC,EAAQkqB,EAAQjK,QAAQlxB,KAAK02C,OAAO,CAACpiC,EAAGC,IAAMD,EAAIC,EAAG,GACrDxD,GAAc3L,EAAQ6L,EAAQ,KAAKg1F,QAAQ,GACjD,MAAO,IAAI7gG,EAAMmJ,qBAAqBwC,UAK9C0kB,UAAW,CACTi3B,eAAe,EACfK,cAAc,GAGpB,EAEA,sBAAA77C,GACE,IAAK5Q,KAAKoQ,eAAiBpQ,KAAKkjG,oBAAqB,MAAO,GAC5D,GAAwC,IAApCljG,KAAKwQ,mBAAmBE,SAAwD,IAAvC1Q,KAAKwQ,mBAAmBC,WAAkB,MAAO,GAC9F,MAAMinC,EAAUhyC,KAAK6vC,MAAQv1C,KAAKkjG,oBAC5BjtD,EAAWj2C,KAAKwQ,mBAAmBC,WAAa,IACtD,GAAIwlC,GAAY,EAAG,MAAO,GAC1B,MAAM2vD,EAAiBluD,EAAUzB,EAC3BT,EAAYowD,EAAiBluD,EACnC,GAAIlC,GAAa,EAAG,OAAOx1C,KAAKhB,GAAG,6BACnC,MAAM6mG,EAAUv1F,KAAKsrD,KAAKpmB,EAAY,KACtC,GAAIqwD,EAAU,GAAI,OAAO7lG,KAAKhB,GAAG,oBAAqB,CACpD0Q,MAAOm2F,IAET,MAAMzB,EAAU9zF,KAAKsrD,KAAKiqC,EAAU,IACpC,GAAIzB,EAAU,GAAI,OAAOpkG,KAAKhB,GAAG,oBAAqB,CACpD0Q,MAAO00F,IAET,MAAMD,EAAQ7zF,KAAK2Z,MAAMm6E,EAAU,IAC7B0B,EAAmB1B,EAAU,GACnC,OAAOpkG,KAAKhB,GAAG,yBAA0B,CACvCmlG,QACAC,QAAS0B,GAEb,EAEA,gBAAAz1F,GACE,MAAM01F,EAAW,CACf,SAAY/lG,KAAKhB,GAAG,2BACpB,QAAWgB,KAAKhB,GAAG,0BACnB,UAAagB,KAAKhB,GAAG,4BACrB,WAAcgB,KAAKhB,GAAG,6BACtB,SAAYgB,KAAKhB,GAAG,2BACpB,YAAegB,KAAKhB,GAAG,8BACvB,gBAAmBgB,KAAKhB,GAAG,iCAC3B,mBAAsBgB,KAAKhB,GAAG,oCAC9B,UAAagB,KAAKhB,GAAG,4BACrB,SAAYgB,KAAKhB,GAAG,4BAEtB,OAAO+mG,EAAS/lG,KAAKijG,kBAAoBjjG,KAAKijG,eAChD,GAEF,OAAA1hG,GACEvB,KAAK8N,iBACL9N,KAAK2iG,WAAa7iG,OAAOkmG,YAAY,KACnChmG,KAAK0N,YAAc,IAAIhI,MACtB,IACL,EACA,aAAAugG,GACMjmG,KAAK2iG,aACP7iG,OAAOomG,cAAclmG,KAAK2iG,YAC1B3iG,KAAK2iG,WAAa,KAEtB,EACAtiG,QAAS,CAEP,aAAAwP,CAAcnR,GACZ,OAAOsB,KAAK8iG,cAAcpkG,EAAQsB,KAAK8iG,cAAcp8F,OACvD,EAEA,iBAAAyJ,CAAkBzR,GAChB,OAAOsB,KAAK+iG,WAAWrkG,EAAQsB,KAAK+iG,WAAWr8F,OACjD,EAEA,aAAA++F,CAAc/mG,GACZ,OAAOsB,KAAKgjG,YAAYtkG,EAAQsB,KAAKgjG,YAAYt8F,OACnD,EAEA,qBAAAg/F,CAAsBd,GACpB,OAAIA,GAAQuB,SAA4B,cAAjBvB,GAAQxlG,KACtBY,KAAKhB,GAAG,2BAEV4lG,GAAQxlG,MAAQY,KAAKhB,GAAG,oBACjC,EAEA,SAAAomG,CAAU9wF,EAAKW,GACb,MAAMkgF,GAAc7gF,GAAO,IAAIyN,QAAQ,IAAK,IAC5C,GAA0B,IAAtBozE,EAAWzuF,OACb,MAAO,qBAAqBuO,KAE9B,MAAMN,EAAIqN,SAASmzE,EAAW9vE,MAAM,EAAG,GAAI,IACrCzQ,EAAIoN,SAASmzE,EAAW9vE,MAAM,EAAG,GAAI,IACrCpR,EAAI+N,SAASmzE,EAAW9vE,MAAM,EAAG,GAAI,IAC3C,MAAO,QAAQ1Q,MAAMC,MAAMX,MAAMgB,IACnC,EAEA,sBAAA+vF,CAAuBr2F,GACrB,MAAM80B,EAAUlkC,OAAOoP,GAAS,IAAIrJ,MAAM,uBAAyB,GACnE,OAAOm+B,EAAQvtB,IAAI1X,IACjB,MAAO+G,EAAME,EAAOrB,GAAO5F,EAAK2pB,MAAM,KAAKjS,IAAI1Q,QAC/C,MAAO,CACLD,OACAE,QACArB,QAGN,EAEA,oBAAA8gG,CAAqBv2F,GACnB,MAAMy3F,EAAQpmG,KAAKglG,uBAAuBr2F,GAC1C,GAAqB,IAAjBy3F,EAAM1/F,OAAc,OAAOiI,EAC/B,MAAM03F,EAAmB,CAACphG,EAAMqhG,KAC9B,MAAMC,EAAW,GAAGthG,EAAKQ,SAASR,EAAKb,MACvC,OAAOkiG,EAAc,GAAGrhG,EAAKM,QAAQghG,IAAaA,GAEpD,GAAqB,IAAjBH,EAAM1/F,OACR,OAAO2/F,EAAiBD,EAAM,GAAIpmG,KAAK8kG,uBAEzC,MAAO/9F,EAAWC,GAAWo/F,EAC7B,IAAKpmG,KAAK8kG,sBACR,MAAO,GAAGuB,EAAiBt/F,GAAW,MAAUs/F,EAAiBr/F,GAAS,KAE5E,MAAMw/F,EAAWz/F,EAAUxB,OAASyB,EAAQzB,KAAO8gG,EAAiBr/F,GAAS,GAASq/F,EAAiBr/F,GAAS,GAChH,MAAO,GAAGq/F,EAAiBt/F,GAAW,MAASy/F,GACjD,EAEA,mBAAAh4F,GACExO,KAAK4O,wBAAyB,CAChC,EAEA,0BAAAI,CAA2BlK,GACpBiB,MAAMkQ,QAAQnR,IAA2B,IAAjBA,EAAM4B,QAAiB5B,EAAM,IAAOA,EAAM,KAGvE9E,KAAK4O,wBAAyB,EAC9B5O,KAAK8N,iBACP,EAEA,uBAAA24F,GAIE,OAHK1gG,MAAMkQ,QAAQjW,KAAK+O,iBAAkD,IAA/B/O,KAAK+O,eAAerI,SAC7D1G,KAAK+O,eAAiBuzF,MAEjB,CACLv7F,UAAW/G,KAAK+O,eAAe,GAC/B/H,QAAShH,KAAK+O,eAAe,GAEjC,EAEA,oBAAMjB,GACJ9N,KAAKqR,SAAU,EACfrR,KAAK0iG,gBAAiB,EACtB,IACE,MAAM,UACJ37F,EAAS,QACTC,GACEhH,KAAKymG,0BACHtzC,EAAS,IAAI2pC,gBAAgB,CACjC4J,OAAQ,OACRC,eAAgBpnG,QAAO,IAAImG,MAAOu+F,qBAClC2C,eAAgB,KAChBC,iBAAkB,IAClBC,eAAgB//F,EAChBggG,aAAc//F,IAEVw1F,QAAiB,EAAAO,GAAA,GAAc,oBAAoB5pC,EAAOhuC,aAAc,CAC5EkJ,OAAQ,QAEV,IAAImuE,EAAS36E,GAKX,MAAM,IAAIkmB,MAAM,WALD,CACf,MAAMroC,QAAa88F,EAASU,OAC5Bl9F,KAAK+N,UAAYrO,EACjBM,KAAKyiG,iBAAkB,CACzB,CAGF,CAAE,MAAO73B,GACPxmC,QAAQwmC,MAAM,YAAaA,GAC3B5qE,KAAK0iG,gBAAiB,EACtB1iG,KAAKgnG,SAASp8B,MAAM5qE,KAAKhB,GAAG,8BAC9B,CAAE,QACAgB,KAAKqR,SAAU,CACjB,CACF,EAEA,kBAAME,GACJ,GAAIvR,KAAKoQ,aACPpQ,KAAKgnG,SAASC,QAAQjnG,KAAKhB,GAAG,sCADhC,CAIAgB,KAAKsR,YAAa,EAClBtR,KAAKoQ,cAAe,EACpBpQ,KAAKgR,gBAAkB,KACvBhR,KAAKkjG,oBAAsBx9F,KAAK6vC,MAChCv1C,KAAKwQ,mBAAqB,CACxBE,QAAS,EACTC,MAAO,EACPE,QAAS,GACTJ,WAAY,GAIdzQ,KAAKmjG,iBAAmB,IAAI,GAAe,CACzCh2B,WAAYl3B,GAAYj2C,KAAKknG,eAAejxD,GAC5C3jC,QAASs4D,GAAS5qE,KAAKmnG,YAAYv8B,KAErC,IACE,MAAMvgD,QAAerqB,KAAKmjG,iBAAiBpF,UAG3C/9F,KAAKgnG,SAAS7J,QAAQn9F,KAAKhB,GAAG,2BAA4B,CACxD0Q,MAAO2a,EAAOrc,WAAWC,oBAI3BwhB,WAAW,KACTzvB,KAAK8N,kBACJ,IACL,CAAE,MAAO88D,GAEP,GAAmB,YAAfA,EAAMywB,KAAoB,CAC5B,MAAM+L,EAAex8B,EAAM35D,WAAa,GAAG25D,EAAM/5D,WAAW+5D,EAAM35D,aAAe25D,EAAM/5D,QACvF7Q,KAAKgnG,SAASp8B,MAAMw8B,GACpBpnG,KAAKgR,gBAAkB,CACrBH,QAAS+5D,EAAM/5D,QACfI,WAAY25D,EAAM35D,WAClBC,YAAa05D,EAAM15D,YAEvB,CACF,CAAE,QACAlR,KAAKsR,YAAa,EAClBtR,KAAKoQ,cAAe,EACpBpQ,KAAKmjG,iBAAmB,KACxBnjG,KAAKkjG,oBAAsB,IAC7B,CA7CA,CA8CF,EAEA,gBAAMzxF,GACJ,GAAIzR,KAAKoQ,aACPpQ,KAAKgnG,SAASC,QAAQjnG,KAAKhB,GAAG,sCADhC,CAIAgB,KAAKwR,SAAU,EACfxR,KAAKoQ,cAAe,EACpBpQ,KAAKgR,gBAAkB,KACvBhR,KAAKkjG,oBAAsBx9F,KAAK6vC,MAChCv1C,KAAKwQ,mBAAqB,CACxBE,QAAS,EACTC,MAAO,EACPE,QAAS,GACTJ,WAAY,GAIdzQ,KAAKojG,uBAAyB,IAAI,GAAgB,CAChDj2B,WAAYl3B,GAAYj2C,KAAKknG,eAAejxD,KAE9C,IACE,MAAM5rB,QAAerqB,KAAKojG,uBAAuBpD,iBAG3CqH,EAAch9E,EAAOm2E,cAAgB,EAAIxgG,KAAKhB,GAAG,sCAAuC,CAC5FkhG,UAAW71E,EAAO61E,UAAUjyF,iBAC5BuyF,cAAen2E,EAAOm2E,gBACnBxgG,KAAKhB,GAAG,0BAA2B,CACtC0Q,MAAO2a,EAAO61E,UAAUjyF,mBAE1BjO,KAAKgnG,SAAS7J,QAAQkK,EACxB,CAAE,MAAOz8B,GAEP,GAAmB,YAAfA,EAAMywB,KAAoB,CAC5B,MAAM+L,EAAex8B,EAAM35D,WAAa,GAAG25D,EAAM/5D,WAAW+5D,EAAM35D,aAAe25D,EAAM/5D,QACvF7Q,KAAKgnG,SAASp8B,MAAMw8B,GACpBpnG,KAAKgR,gBAAkB,CACrBH,QAAS+5D,EAAM/5D,QACfI,WAAY25D,EAAM35D,WAClBC,YAAa05D,EAAM15D,YAEvB,CACF,CAAE,QACAlR,KAAKwR,SAAU,EACfxR,KAAKoQ,cAAe,EACpBpQ,KAAKojG,uBAAyB,KAC9BpjG,KAAKkjG,oBAAsB,IAC7B,CA3CA,CA4CF,EAEA,iBAAArxF,GACM7R,KAAK4R,WACT5R,KAAKU,MAAM4mG,UAAUpG,OACvB,EAEA,sBAAMvvF,CAAiBm8B,GACrB,MAAMy5D,EAAOz5D,EAAM9mB,OAAOm5E,MAAM,GAChC,GAAKoH,EACL,GAAKA,EAAKnoG,KAAK0mB,SAAS,SAAxB,CAMA,UACQ9lB,KAAKwnG,SAASxnG,KAAKhB,GAAG,mCAAoCgB,KAAKhB,GAAG,iCAAkC,CACxGyoG,kBAAmBznG,KAAKhB,GAAG,8BAC3B0oG,iBAAkB1nG,KAAKhB,GAAG,kCAC1BM,KAAM,kBAEFU,KAAK2nG,YAAYJ,EACzB,CAAE,MAAO38B,GACO,WAAVA,GACFxmC,QAAQwmC,MAAM,UAAWA,EAE7B,CAGA98B,EAAM9mB,OAAOliB,MAAQ,EAjBrB,MAFE9E,KAAKgnG,SAASp8B,MAAM5qE,KAAKhB,GAAG,4BAoBhC,EAEA,iBAAM2oG,CAAYJ,GAChB,GAAIvnG,KAAKoQ,aACPpQ,KAAKgnG,SAASC,QAAQjnG,KAAKhB,GAAG,sCADhC,CAIAgB,KAAK4R,WAAY,EACjB5R,KAAKoQ,cAAe,EACpBpQ,KAAKgR,gBAAkB,KACvBhR,KAAKkjG,oBAAsBx9F,KAAK6vC,MAChCv1C,KAAKwQ,mBAAqB,CACxBE,QAAS,EACTC,MAAO,EACPE,QAAS,GACTJ,WAAY,GAEd,IAEE,MAAMm3F,QAAoBL,EAAKxuE,OAC/B,IAAItnB,EACJ,IACEA,EAAa0kB,KAAK+S,MAAM0+D,EAC1B,CAAE,MAAOC,GACP,MAAM,IAAI9/D,MAAM/nC,KAAKhB,GAAG,+BAC1B,CAGAgB,KAAKqjG,wBAA0B,IAAI,GAAiB,CAClD7F,UAAW,IAEXrwB,WAAYl3B,GAAYj2C,KAAKknG,eAAejxD,GAC5C3jC,QAASs4D,GAAS5qE,KAAKmnG,YAAYv8B,KAErC,MAAMvgD,QAAerqB,KAAKqjG,wBAAwBplE,QAAQxsB,GAG1DzR,KAAK4R,WAAY,EACjB5R,KAAKoQ,cAAe,EACpBpQ,KAAKqjG,wBAA0B,KAC/BrjG,KAAKkjG,oBAAsB,KAG3BljG,KAAKgnG,SAAS7J,QAAQn9F,KAAKhB,GAAG,2BAA4B,CACxDmhG,MAAO91E,EAAOq3E,cACdtB,SAAU/1E,EAAOs3E,0BAIb,IAAI9pD,QAAQvT,GAAW7U,WAAW6U,EAAS,YAC3CtkC,KAAKuR,cACb,CAAE,MAAOq5D,GAQP,GAPAxmC,QAAQwmC,MAAM,UAAWA,GAGzB5qE,KAAK4R,WAAY,EACjB5R,KAAKoQ,cAAe,EACpBpQ,KAAKqjG,wBAA0B,KAC/BrjG,KAAKkjG,oBAAsB,KACR,YAAft4B,EAAMywB,KAAoB,CAC5B,MAAM+L,EAAex8B,EAAM35D,WAAa,GAAG25D,EAAM/5D,WAAW+5D,EAAM35D,aAAe25D,EAAM/5D,QACvF7Q,KAAKgnG,SAASp8B,MAAM5qE,KAAKhB,GAAG,2BAA6B,KAAOooG,GAChEpnG,KAAKgR,gBAAkB,CACrBH,QAAS+5D,EAAM/5D,QACfI,WAAY25D,EAAM35D,WAClBC,YAAa05D,EAAM15D,YAEvB,CACF,CA9DA,CA+DF,EAEA,UAAAhD,CAAWumF,GACT,IAAKA,EAAW,OAAOz0F,KAAKhB,GAAG,qBAC/B,MAAMiG,EAAO,IAAIS,KAAK+uF,GACtB,OAAOxvF,EAAKgJ,eAAe,QAAS,CAClC1I,KAAM,UACNE,MAAO,UACPrB,IAAK,UACLivF,KAAM,UACND,OAAQ,WAEZ,EAEA,aAAAtjF,CAAchL,EAAO6L,GACnB,OAAKA,GAAmB,IAAVA,EACPL,KAAKC,MAAMzL,EAAQ6L,EAAQ,KADA,CAEpC,EAEA,UAAAvC,CAAWqmF,GACT,IAAKA,EAAW,MAAO,GACvB,MAAMl/C,EAAM7vC,KAAK6vC,MACX0a,EAAO1a,EAAMk/C,EACb2P,EAAU9zF,KAAK2Z,MAAMgmC,EAAO,KAC5Bk0C,EAAQ7zF,KAAK2Z,MAAMgmC,EAAO,MAC1B63C,EAAOx3F,KAAK2Z,MAAMgmC,EAAO,OAC/B,OAAI63C,EAAO,EAAU9nG,KAAKhB,GAAG,oBAAqB,CAChD0Q,MAAOo4F,IAEL3D,EAAQ,EAAUnkG,KAAKhB,GAAG,qBAAsB,CAClD0Q,MAAOy0F,IAELC,EAAU,EAAUpkG,KAAKhB,GAAG,uBAAwB,CACtD0Q,MAAO00F,IAEFpkG,KAAKhB,GAAG,oBACjB,EAEA,gBAAAuT,CAAiBjT,GACfU,KAAKkS,WAAW5S,IAAQ,CAC1B,EAEA,cAAAyoG,CAAezoG,EAAMioG,GACnB,OAAIvnG,KAAKkS,WAAW5S,OACfioG,GAAM30F,UAAUo1F,WACdT,EAAK30F,SAASo1F,SAASpwE,SAAS,UAAY2vE,EAAK30F,SAASo1F,SAASpwE,SAAS,UACrF,EAEA,YAAAvpB,GACEvO,OAAOmoG,KAAK,2DAA4D,SAC1E,EAEA,WAAAh2F,CAAYs1F,GACV,IAAKA,EAAM,OAAO,EAElB,GAAIA,EAAK30F,UAAUo1F,UAAUpwE,SAAS,SAAU,OAAO,EAEvD,MAAMswE,EAAWX,EAAK30F,UAAUC,UAAY00F,EAAKn1F,IAAM,GACjD+1F,EAAYD,EAASE,UAAUF,EAAS9b,YAAY,KAAO,GAAGhqE,cAC9DimF,EAAkB,CAAC,MAAO,OAAQ,MAAO,MAAO,MAAO,OAAQ,MAAO,MAAO,OAAQ,MAAO,OAAQ,OAAQ,QAClH,OAAOA,EAAgBzwE,SAASuwE,EAClC,EAEA,WAAA31F,CAAY+0F,GACV,IAAKA,EAAM,OAAO,EAElB,GAAIA,EAAK30F,UAAUo1F,UAAUpwE,SAAS,SAAU,OAAO,EAEvD,MAAMswE,EAAWX,EAAK30F,UAAUC,UAAY00F,EAAKn1F,IAAM,GACjD+1F,EAAYD,EAASE,UAAUF,EAAS9b,YAAY,KAAO,GAAGhqE,cAC9DkmF,EAAkB,CAAC,MAAO,OAAQ,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,OACxG,OAAOA,EAAgB1wE,SAASuwE,EAClC,EAEA,gBAAAn2F,CAAiBu1F,GACVA,GAAMn1F,IACXtS,OAAOmoG,KAAK,SAAWV,EAAKn1F,GAAK,cAAe,SAClD,EAEA,cAAA80F,CAAejxD,GACbj2C,KAAKijG,gBAAkBhtD,EAAS2mD,MAChC58F,KAAKwQ,mBAAmBK,QAAUolC,EAASplC,SAAW,GACtD7Q,KAAKwQ,mBAAmBE,QAAUulC,EAASvlC,SAAW,EAG/B,aAAnBulC,EAAS2mD,OAEX58F,KAAKwQ,mBAAmBG,MAAQslC,EAAStlC,OAAS,EAE9CslC,EAAStlC,OAASslC,EAAStlC,MAAQ,EACrC3Q,KAAKwQ,mBAAmBC,WAAaH,KAAK8C,IAAI,GAAI6iC,EAASvlC,QAAUulC,EAAStlC,MAAQ,IAGtF3Q,KAAKwQ,mBAAmBC,WAAaH,KAAK8C,IAAI,GAAuC,GAAnC9C,KAAKmZ,MAAMwsB,EAASvlC,QAAU,KAEtD,YAAnBulC,EAAS2mD,OAElB58F,KAAKwQ,mBAAmBC,WAAa,GACrCzQ,KAAKwQ,mBAAmBG,MAAQslC,EAAStlC,OAAS3Q,KAAKwQ,mBAAmBG,OAC9C,cAAnBslC,EAAS2mD,OAElB58F,KAAKwQ,mBAAmBG,MAAQslC,EAAStlC,OAAS,EAC9CslC,EAAStlC,OAASslC,EAAStlC,MAAQ,IACrC3Q,KAAKwQ,mBAAmBC,WAAa,GAAKwlC,EAASvlC,QAAUulC,EAAStlC,MAAQ,KAEpD,eAAnBslC,EAAS2mD,MAElB58F,KAAKwQ,mBAAmBC,WAAa,GACT,aAAnBwlC,EAAS2mD,MAElB58F,KAAKwQ,mBAAmBC,WAAa,GACT,gBAAnBwlC,EAAS2mD,MAElB58F,KAAKwQ,mBAAmBC,WAAa,GACT,oBAAnBwlC,EAAS2mD,OAElB58F,KAAKwQ,mBAAmBG,MAAQslC,EAAStlC,OAAS,EAClD3Q,KAAKwQ,mBAAmBC,WAAawlC,EAASxlC,YAAc,GAChC,uBAAnBwlC,EAAS2mD,OAElB58F,KAAKwQ,mBAAmBG,MAAQslC,EAAStlC,OAAS,EAClD3Q,KAAKwQ,mBAAmBC,WAAawlC,EAASxlC,YAAc,IAChC,cAAnBwlC,EAAS2mD,MAElB58F,KAAKwQ,mBAAmBC,WAAa,IACT,aAAnBwlC,EAAS2mD,QAElB58F,KAAKwQ,mBAAmBK,QAAUolC,EAASplC,QAE/C,EAEA,WAAAs2F,CAAYv8B,GACVxmC,QAAQwmC,MAAM,UAAWA,GACzB5qE,KAAKgR,gBAAkB,CACrBH,QAAS+5D,EAAM/5D,QACfI,WAAY25D,EAAM35D,WAClBC,YAAa05D,EAAM15D,YAEvB,EAEA,eAAAH,GACM/Q,KAAKmjG,mBACPnjG,KAAKmjG,iBAAiB9F,QACtBr9F,KAAKgnG,SAASxiE,KAAKxkC,KAAKhB,GAAG,iCAEzBgB,KAAKojG,yBACPpjG,KAAKojG,uBAAuB/F,QAC5Br9F,KAAKgnG,SAASxiE,KAAKxkC,KAAKhB,GAAG,iCAEzBgB,KAAKqjG,0BACPrjG,KAAKqjG,wBAAwBhG,QAC7Br9F,KAAKgnG,SAASxiE,KAAKxkC,KAAKhB,GAAG,gCAE/B,EAEA,cAAAmS,GACEnR,KAAKgR,gBAAkB,KACnBhR,KAAKsR,YACPtR,KAAKsR,YAAa,EAClBtR,KAAKoQ,cAAe,EACpBpQ,KAAKG,UAAU,KACbH,KAAKuR,kBAEEvR,KAAKwR,UACdxR,KAAKwR,SAAU,EACfxR,KAAKoQ,cAAe,EACpBpQ,KAAKG,UAAU,KACbH,KAAKyR,eAGX,EAEA,YAAAL,GACEpR,KAAKgR,gBAAkB,IACzB,ICr4BJ,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,wMCRA,MAAM,GAAa,CAAC,WACb,SAAS,GAAOpT,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMC,GAA+B,QAAkB,qBACjDqqG,EAAyB,KAC/B,OAAO,WAAc,QAAoB,MAAO,CAC9C/qG,OAAO,QAAgB,CAAC,gBAAiB,CACvC,UAAWQ,EAAMwqG,UAEnBnqG,OAAO,QAAgB,CACrB4B,MAAOnC,EAAOmC,SAEf,EAAC,QAAoB,MAAO,CAC7BzC,MAAO,wBACPoB,QAASf,EAAO,KAAOA,EAAO,GAAK,IAAIqB,IAASjB,EAASwqG,gBAAkBxqG,EAASwqG,kBAAkBvpG,KACrG,EAAC,QAAoB,OAAQ,CAC9B1B,OAAO,QAAgB,CAAC,sBAAuB,CAC7C,kBAAmBM,EAAOgI,gBAE3B,QAAiB7H,EAASyqG,cAAe,IAAI,QAAaxqG,EAA8B,CACzFa,KAAM,eACNvB,MAAO,2BACH,QAAa,KAAa,CAC9B4B,KAAM,iBACL,CACDI,SAAS,QAAS,IAAM,EAAC,SAAgB,QAAoB,MAAO,CAClEhC,MAAO,yBACPoB,QAASf,EAAO,KAAOA,EAAO,IAAK,QAAe,OAAU,CAAC,WAC5D,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYC,EAAOqR,QAASopC,KAC/E,WAAc,QAAoB,MAAO,CAC9C95C,IAAK85C,EAAOzzC,MACZtH,OAAO,QAAgB,CAAC,uBAAwB,CAC9C,cAAeM,EAAOgI,aAAeyyC,EAAOzzC,SAE9ClG,QAASC,GAAUZ,EAAS0qG,aAAapwD,EAAOzzC,QAC/C,EAAC,QAAYlH,EAAKgrG,OAAQ,SAAU,CACrCrwD,OAAQA,GACP,IAAM,CAACA,EAAOswD,cAAe,WAAc,QAAaN,EAAwB,CACjF9pG,IAAK,EACLa,KAAMi5C,EAAOswD,YACbrrG,OAAO,QAAgB,CAAC,cAAe+6C,EAAOuwD,aAC7C,KAAM,EAAG,CAAC,OAAQ,WAAavwD,EAAOx5C,OAAQ,WAAc,QAAab,EAA8B,CACxGO,IAAK,EACLM,KAAMw5C,EAAOx5C,KACbvB,OAAO,QAAgB,CAAC,cAAe+6C,EAAOuwD,aAC7C,KAAM,EAAG,CAAC,OAAQ,YAAa,QAAoB,IAAI,IAAO,QAAoB,OAAQ,MAAM,QAAiBvwD,EAAO5pC,OAAQ,KAAK,IAAQ,GAAI,MAClJ,OAAQ,KAAM,CAAC,CAAC,KAAQ3Q,EAAMwqG,YAClClmG,EAAG,KACA,EACP,CC9CA,QACElD,KAAM,eACNmjG,WAAY,CACVwG,YAAW,MAEb1pG,MAAO,CACLyG,WAAY,CACVxG,KAAM,CAACC,OAAQiG,QACfhG,QAAS,IAEX2P,QAAS,CACP7P,KAAMyG,MACN0xF,UAAU,GAGZuR,YAAa,CACX1pG,KAAMC,OACNC,QAAS,IAEXS,MAAO,CACLX,KAAMC,OACNC,QAAS,UAGbwG,MAAO,CAAC,oBAAqB,UAC7B,IAAAtG,GACE,MAAO,CACL8oG,QAAQ,EAEZ,EACA5oG,SAAU,CACR,mBAAAqpG,GACE,OAAOjpG,KAAKgpG,aAAehpG,KAAKhB,GAAG,gBACrC,EACA,YAAA0pG,GACE,MAAMQ,EAAWlpG,KAAKmP,QAAQ64C,KAAKmhD,GAAOA,EAAIrkG,QAAU9E,KAAK8F,YAC7D,OAAOojG,EAAWA,EAASv6F,MAAQ3O,KAAKipG,mBAC1C,GAEF,OAAA1nG,GACEwqC,SAASvqC,iBAAiB,QAASxB,KAAKopG,mBAC1C,EACA,aAAAnD,GACEl6D,SAASrqC,oBAAoB,QAAS1B,KAAKopG,mBAC7C,EACA/oG,QAAS,CACP,cAAAooG,GACEzoG,KAAKwoG,QAAUxoG,KAAKwoG,MACtB,EACA,YAAAG,CAAa7jG,GACX9E,KAAKM,MAAM,oBAAqBwE,GAChC9E,KAAKM,MAAM,SAAUwE,GACrB9E,KAAKwoG,QAAS,CAChB,EACA,kBAAAY,CAAmBh1F,GACZpU,KAAKqpG,IAAIpoG,SAASmT,EAAE4S,UACvBhnB,KAAKwoG,QAAS,EAElB,ICtDJ,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,UCRA,MAAM,GAAa,CACjBhrG,MAAO,mBAEH,GAAa,CACjBA,MAAO,eAEH,GAAa,CACjBA,MAAO,eAEH,GAAa,CACjBA,MAAO,kBAEH,GAAa,CACjBA,MAAO,gBAEH,GAAa,CACjBA,MAAO,eAEH,GAAa,CACjBiB,IAAK,EACLjB,MAAO,uBAEH,GAAa,CACjBA,MAAO,gBAEH,GAAa,CACjBiB,IAAK,EACLjB,MAAO,iBAEH,GAAc,CAAC,cAAe,gBAC9B,GAAc,CAClBA,MAAO,eAEH,GAAc,CAClBA,MAAO,cAEH,GAAc,CAClBA,MAAO,gBAEH,GAAc,CAClBA,MAAO,aAEH,GAAc,CAClBA,MAAO,aAEH,GAAc,CAClBA,MAAO,aAEH,GAAc,CAClBA,MAAO,aAEH,GAAc,CAClBiB,IAAK,EACLjB,MAAO,aAEH,GAAc,CAClBA,MAAO,aAEH,GAAc,CAClBiB,IAAK,EACLjB,MAAO,aAEH,GAAc,CAAC,SACf,GAAc,CAClBA,MAAO,aAEH,GAAc,CAClBA,MAAO,aAEH,GAAc,CAClBiB,IAAK,EACLjB,MAAO,aAEH,GAAc,CAAC,SACf,GAAc,CAClBA,MAAO,aAEH,GAAc,CAClBA,MAAO,aAEH,GAAc,CAClBA,MAAO,aAEH,GAAc,CAClBA,MAAO,aAEH,GAAc,CAClBA,MAAO,aAEH,GAAc,CAClBA,MAAO,aAEH,GAAc,CAClBA,MAAO,aAEH,GAAc,CAAC,SACf,GAAc,CAClBiB,IAAK,EACLjB,MAAO,aAEH,GAAc,CAAC,SACf,GAAc,CAClBiB,IAAK,EACLjB,MAAO,cAEH,GAAc,CAClBA,MAAO,cAEH,GAAc,CAClBA,MAAO,gBAEH,GAAc,CAClBiB,IAAK,EACLjB,MAAO,aAEH,GAAc,CAClBA,MAAO,uBAEH,GAAc,CAClBiB,IAAK,EACLjB,MAAO,eACPa,MAAO,CACL,aAAc,MAGZ,GAAc,CAAC,aACf,GAAc,CAClBb,MAAO,gBAEH,GAAc,CAClBA,MAAO,eAEH,GAAc,CAClBA,MAAO,gBAEF,SAAS,GAAOI,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMC,GAA+B,QAAkB,qBACjD2D,EAAwB,KACxBynG,EAA0B,GAC1B58F,EAAuB,KACvB67F,EAAyB,KACzBgB,EAAoB,KACpBC,EAAuB,MACvBv8F,EAAyB,KACzBw8F,EAAuB,MACvBC,EAAuB,MACvBC,EAA0B,MAC1BC,EAAsB,MACtBC,EAA6B,MAC7BC,EAAqB,MACrBh9F,EAAuB,KACvBi9F,EAAkC,MAClCC,EAA6B,MAC7B78F,EAAqB,IAC3B,OAAO,UAAiB,WAAc,QAAoB,MAAO,GAAY,EAAC,QAAoB,MAAO,GAAY,EAAC,QAAoB,KAAM,GAAY,EAAC,SAAiB,QAAiBvP,EAAKoB,GAAG,oBAAsB,IAAK,IAAI,QAAa6C,EAAuB,CACxQM,QAASvE,EAAKoB,GAAG,0BACjBoD,UAAW,SACV,CACD5C,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,kBACNvB,MAAO,gBAET8E,EAAG,GACF,EAAG,CAAC,eAAe,QAAoB,MAAO,GAAY,EAAC,QAAagnG,EAAyB,CAClGxjG,WAAY9H,EAAMisG,cAClB,sBAAuBpsG,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAMisG,cAAgBprG,GACjFsQ,QAASlR,EAASisG,cAClBlB,YAAaprG,EAAKoB,GAAG,+BACrBiB,MAAO,SACN,KAAM,EAAG,CAAC,aAAc,UAAW,iBAAiB,QAAayM,EAAsB,CACxFpN,KAAM,UACNV,QAASf,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAMmsG,eAAgB,GACnE3sG,MAAO,WACN,CACDgC,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,OACNV,MAAO,CACL,eAAgB,UAEhB,QAAiB,KAAM,QAAiBT,EAAKoB,GAAG,yBAA0B,KAC9EsD,EAAG,UACI,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYrE,EAASmsG,iBAAkBvB,KAC9F,WAAc,QAAoB,MAAO,CAC9CpqG,IAAKoqG,EAAY/jG,MACjBtH,MAAO,iBACN,EAAC,QAAoB,MAAO,GAAY,EAAC,QAAoB,MAAO,GAAY,EAAC,QAAa+qG,EAAwB,CACvHjpG,KAAMupG,EAAY/jG,MAClBtH,MAAO,cACN,KAAM,EAAG,CAAC,UAAU,QAAoB,OAAQ,MAAM,QAAiBqrG,EAAYl6F,OAAQ,IAAI,QAAa46F,EAAmB,CAChI76F,KAAM,QACNpP,KAAM,OACN9B,MAAO,iBACN,CACDgC,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBvB,EAASosG,eAAexB,EAAY/jG,OAAO4B,QAAS,KAC/GpE,EAAG,GACF,QAASrE,EAASqsG,eAAezB,EAAY/jG,SAAU,WAAc,QAAoB,MAAO,GAAY,EAAC,QAAoB,OAAQ,IAAY,QAAiBlH,EAAKoB,GAAG,0BAA2B,IAAI,QAAawqG,EAAsB,CACjP1jG,WAAY7H,EAASssG,YAAY1B,EAAY/jG,OAAO0lG,YAAY3vC,QAChE,sBAAuBh8D,GAAUZ,EAASssG,YAAY1B,EAAY/jG,OAAO0lG,YAAY3vC,QAAUh8D,EAC/F6P,KAAM,QACNpL,SAAUrF,EAASwsG,cAClB,KAAM,EAAG,CAAC,aAAc,sBAAuB,iBAAkB,QAAoB,IAAI,KAASxsG,EAASosG,eAAexB,EAAY/jG,OAAO4B,OAAS,IAAK,WAAc,QAAoB,MAAO,GAAY,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYzI,EAASosG,eAAexB,EAAY/jG,OAAQ,CAAC6K,EAASjR,MACrU,WAAc,QAAoB,MAAO,CAC9CD,IAAKkR,EAAQvQ,MAAQV,EACrBlB,OAAO,QAAgB,CAAC,eAAgB,CAACqrG,EAAY/jG,MAAO,CAC1D,UAAa6K,EAAQkrD,QACrB,MAASlrD,EAAQ+6F,UAEnBC,YAAa9rG,GAAUZ,EAAS2sG,oBAAoB/rG,EAAQgqG,EAAY/jG,MAAOpG,GAC/EmsG,aAAchsG,GAAUZ,EAAS6sG,qBAAqBjC,EAAY/jG,MAAOpG,IACxE,EAAC,QAAoB,MAAO,CAC7BlB,MAAO,YACPutG,SAAS,EACT3sG,IAAK,QAAQyqG,EAAY/jG,SAASpG,KACjC,KAAM,MAAM,QAAoB,MAAO,GAAa,EAAC,QAAoB,MAAO,GAAa,EAAC,QAAoB,OAAQ,IAAa,QAAiBiR,EAAQvQ,MAAQxB,EAAKoB,GAAG,6BAA8B,GAAI2Q,EAAQ+6F,QAAS,WAAc,QAAanB,EAAmB,CAClR9qG,IAAK,EACLiQ,KAAM,QACNpP,KAAM,WACL,CACDE,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB5B,EAAKoB,GAAG,0BAA2B,KAC9FsD,EAAG,MACC,QAAoB,IAAI,MAAS,QAAaknG,EAAsB,CACxE1jG,WAAY6J,EAAQkrD,QACpB,sBAAuBh8D,GAAU8Q,EAAQkrD,QAAUh8D,EACnD6P,KAAM,QACN9P,QAASf,EAAO,KAAOA,EAAO,IAAK,QAAe,OAAU,CAAC,UAC7DyF,SAAUrF,EAASwsG,cAClB,KAAM,EAAG,CAAC,aAAc,sBAAuB,gBAAgB,QAAoB,MAAO,GAAa,EAAC,QAAoB,MAAO,GAAa,CAAuB,aAAtB5B,EAAY/jG,QAAwB,WAAc,QAAoB,KAAW,CACnOrG,IAAK,GACJ,EAAC,QAAoB,MAAO,GAAa,EAAC,QAAaP,EAA8B,CACtFa,KAAM,QACNvB,MAAO,eACL,QAAoB,OAAQ,GAAa,SAAU,QAAiBS,EAAS+sG,SAASr7F,EAAQs7F,WAAY,KAAMt7F,EAAQu7F,SAAU,WAAc,QAAoB,MAAO,GAAa,EAAC,QAAahtG,EAA8B,CACtOa,KAAM,WACNvB,MAAO,eACL,QAAoB,OAAQ,GAAa,aAAc,QAAiBS,EAAS+sG,SAASr7F,EAAQu7F,SAAU,OAAQ,QAAoB,IAAI,IAAQ,KAA6B,SAAtBrC,EAAY/jG,QAAoB,WAAc,QAAoB,MAAO,GAAa,EAAC,QAAa5G,EAA8B,CAC/Ra,KAAM,OACNvB,MAAO,eACL,QAAoB,OAAQ,CAC9BA,MAAO,YACPqR,MAAOc,EAAQw7F,YACd,QAAiBx7F,EAAQw7F,WAAavtG,EAAKoB,GAAG,qBAAsB,EAAG,OAAwC,OAAtB6pG,EAAY/jG,QAAkB,WAAc,QAAoB,KAAW,CACrKrG,IAAK,GACJ,EAAC,QAAoB,MAAO,GAAa,EAAC,QAAaP,EAA8B,CACtFa,KAAM,SACNvB,MAAO,eACL,QAAoB,OAAQ,IAAa,QAAiBmS,EAAQy7F,YAAcxtG,EAAKoB,GAAG,qBAAsB,KAAM2Q,EAAQ07F,WAAY,WAAc,QAAoB,MAAO,GAAa,EAAC,QAAantG,EAA8B,CAC5Oa,KAAM,OACNvB,MAAO,eACL,QAAoB,OAAQ,CAC9BA,MAAO,YACPqR,MAAOc,EAAQ07F,WACd,QAAiB17F,EAAQ07F,UAAW,EAAG,QAAkB,QAAoB,IAAI,IAAQ,KAA6B,YAAtBxC,EAAY/jG,QAAuB,WAAc,QAAoB,KAAW,CACjLrG,IAAK,GACJ,EAAC,QAAoB,MAAO,GAAa,EAAC,QAAaP,EAA8B,CACtFa,KAAM,QACNvB,MAAO,eACL,QAAoB,OAAQ,GAAa,SAAU,QAAiBS,EAAS+sG,SAASr7F,EAAQs7F,WAAY,MAAM,QAAoB,MAAO,GAAa,EAAC,QAAa/sG,EAA8B,CACtMa,KAAM,UACNvB,MAAO,eACL,QAAoB,OAAQ,GAAa,aAAc,QAAiBS,EAAS+sG,SAASr7F,EAAQ27F,YAAa,KAAM37F,EAAQ47F,UAAW,WAAc,QAAahC,EAAmB,CACxL9qG,IAAK,EACLiQ,KAAM,QACNpP,KAAM,WACL,CACDE,SAAS,QAAS,IAAM,IAAK3B,EAAO,MAAQA,EAAO,IAAM,EAAC,QAAiB,SAAU,OACrFyE,EAAG,MACC,QAAoB,IAAI,IAAQ,KAA6B,gBAAtBumG,EAAY/jG,QAA2B,WAAc,QAAoB,KAAW,CAC/HrG,IAAK,GACJ,EAAC,QAAoB,MAAO,GAAa,EAAC,QAAaP,EAA8B,CACtFa,KAAM,WACNvB,MAAO,eACL,QAAoB,OAAQ,IAAa,QAAiBmS,EAAQ67F,MAAQ5tG,EAAKoB,GAAG,qBAAsB,KAAM2Q,EAAQ87F,YAAa,WAAc,QAAalC,EAAmB,CACnL9qG,IAAK,EACLiQ,KAAM,QACNpP,KAAM,WACL,CACDE,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB5B,EAAKoB,GAAG,0BAA2B,KAC9FsD,EAAG,MACC,QAAoB,IAAI,IAAQ,KAA6B,WAAtBumG,EAAY/jG,QAAsB,WAAc,QAAoB,KAAW,CAC1HrG,IAAK,GACJ,EAAC,QAAoB,MAAO,GAAa,EAAC,QAAaP,EAA8B,CACtFa,KAAM,SACNvB,MAAO,eACL,QAAoB,OAAQ,CAC9BA,MAAO,YACPqR,MAAOc,EAAQ+7F,UACd,QAAiB/7F,EAAQ+7F,SAAW9tG,EAAKoB,GAAG,qBAAsB,EAAG,MAAgB2Q,EAAQw7F,YAAa,WAAc,QAAoB,MAAO,GAAa,EAAC,QAAajtG,EAA8B,CAC7Ma,KAAM,OACNvB,MAAO,eACL,QAAoB,OAAQ,CAC9BA,MAAO,YACPqR,MAAOc,EAAQw7F,YACd,QAAiBx7F,EAAQw7F,WAAY,EAAG,QAAkB,QAAoB,IAAI,IAAQ,MAAO,QAAoB,IAAI,KAASx7F,EAAQg8F,OAAO9wC,UAAW,WAAc,QAAoB,MAAO,GAAa,EAAC,QAAa5tD,EAAwB,CACzPwD,WAAYxS,EAAS2tG,mBAAmBj8F,GACxCO,OAAQjS,EAAS4tG,eAAel8F,GAChC,eAAgB,GACf,KAAM,EAAG,CAAC,aAAc,YAAY,QAAoB,OAAQ,IAAa,QAAiB1R,EAAS6tG,aAAan8F,IAAW,OAAQ,QAAoB,IAAI,MAAS,QAAoB,MAAO,GAAa,EAAC,QAAajD,EAAsB,CACrPqsB,KAAM,GACNz5B,KAAM,UACNoP,KAAM,QACN9P,QAASC,GAAUZ,EAAS8tG,iBAAiBlD,EAAY/jG,MAAOpG,IAC/D,CACDc,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,MACNV,MAAO,CACL,eAAgB,UAEhB,SAAiB,QAAiBT,EAAKoB,GAAG,qBAAsB,KACpEsD,EAAG,GACF,EAAG,CAAC,aAAa,QAAaoK,EAAsB,CACrDqsB,KAAM,GACNz5B,KAAM,UACNoP,KAAM,QACN9P,QAASC,GAAUZ,EAAS+tG,eAAenD,EAAY/jG,MAAOpG,IAC7D,CACDc,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,OACNV,MAAO,CACL,eAAgB,UAEhB,SAAiB,QAAiBT,EAAKoB,GAAG,sBAAuB,KACrEsD,EAAG,GACF,EAAG,CAAC,aAAa,QAAaoK,EAAsB,CACrDqsB,KAAM,GACNz5B,KAAM,SACNoP,KAAM,QACN9P,QAASC,GAAUZ,EAASguG,cAAcpD,EAAY/jG,MAAOpG,GAC7DuD,SAAU0N,EAAQ+6F,OACjB,CACDlrG,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,YACNV,MAAO,CACL,eAAgB,UAEhB,SAAiB,QAAiBT,EAAKoB,GAAG,wBAAyB,KACvEsD,EAAG,GACF,EAAG,CAAC,UAAW,gBAAiB,GAAI,MACrC,WAAY,WAAc,QAAoB,MAAO,GAAa,EAAC,QAAapE,EAA8B,CAChHa,KAAM,QACNvB,MAAO,gBACL,QAAoB,OAAQ,MAAM,QAAiBI,EAAKoB,GAAG,uBAAwB,CACrFM,KAAMupG,EAAYl6F,SACf,UACH,OAAO,QAAa7B,EAAsB,CAC5ChH,WAAY9H,EAAMmsG,cAClB,sBAAuBtsG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMmsG,cAAgBtrG,GACnFgQ,MAAOjR,EAAKoB,GAAG,4BACfxB,MAAO,iBACP,mBAAoB,GACpB0uG,SAAUjuG,EAASkuG,cAClB,CACD1nB,QAAQ,QAAS,IAAM,EAAC,QAAa/3E,EAAsB,CACzD9N,QAASf,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMmsG,eAAgB,IACpE,CACD3qG,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB5B,EAAKoB,GAAG,qBAAsB,KACzFsD,EAAG,IACyB,SAA1BtE,EAAMouG,WAAW9sG,OAAmB,WAAc,QAAaoN,EAAsB,CACvFjO,IAAK,EACLa,KAAM,UACNV,QAASX,EAASouG,mBACjB,CACD7sG,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB5B,EAAKoB,GAAG,yBAA0B,KAC7FsD,EAAG,GACF,EAAG,CAAC,cAAe,QAAoB,IAAI,KAC9C9C,SAAS,QAAS,IAAM,EAAC,QAAasqG,EAAoB,CACxDwC,MAAOtuG,EAAMouG,WACb,iBAAkB,MAClBhuG,IAAK,UACLmuG,MAAOtuG,EAASuuG,UACf,CACDhtG,SAAS,QAAS,IAAM,EAAC,QAAamqG,EAAyB,CAC7Dh7F,MAAO/Q,EAAKoB,GAAG,8BACf8kC,KAAM,QACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAakqG,EAAsB,CAC1D5jG,WAAY9H,EAAMouG,WAAW9sG,KAC7B,sBAAuBzB,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAMouG,WAAW9sG,KAAOT,GACnFmqG,YAAaprG,EAAKoB,GAAG,oCACrBX,MAAO,CACL,MAAS,QAEXiF,SAAUrF,EAASwuG,qBAClB,CACDjtG,SAAS,QAAS,IAAM,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYxB,EAAM0uG,gBAAiBC,KAC3G,WAAc,QAAalD,EAAsB,CACtDhrG,IAAKkuG,EAAG7nG,MACR6J,MAAOg+F,EAAGh+F,MACV7J,MAAO6nG,EAAG7nG,OACT,CACDtF,SAAS,QAAS,IAAM,EAAC,QAAoB,OAAQ,GAAa,EAAC,QAAa+oG,EAAwB,CACtGjpG,KAAMqtG,EAAG7nG,MACTtH,MAAO,sBACN,KAAM,EAAG,CAAC,UAAU,QAAoB,OAAQ,MAAM,QAAiBmvG,EAAGh+F,OAAQ,OACrFrM,EAAG,GACF,KAAM,CAAC,QAAS,YACjB,QACJA,EAAG,GACF,EAAG,CAAC,aAAc,cAAe,eACpCA,EAAG,GACF,EAAG,CAAC,UAAqC,SAA1BtE,EAAMouG,WAAW9sG,OAAmB,WAAc,QAAoB,MAAO,GAAa,EAAC,QAAapB,EAA8B,CACtJa,KAAM,cACNV,MAAO,CACL,eAAgB,UAEhB,QAAoB,OAAQ,CAC9BuuG,UAAWhvG,EAAKoB,GAAG,2BAClB,KAAM,EAAG,SAAmB,WAAc,QAAoB,KAAW,CAC1EP,IAAK,GACJ,EAAC,QAAakrG,EAAyB,CACxC7lE,KAAM,QACL,CACDn1B,OAAO,QAAS,IAAM,EAAC,SAAiB,QAAiB/Q,EAAKoB,GAAG,+BAAiC,IAAK,IAAI,QAAa6C,EAAuB,CAC7IM,QAASvE,EAAKoB,GAAG,qCACjBoD,UAAW,OACV,CACD5C,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,uBACNvB,MAAO,0BAET8E,EAAG,GACF,EAAG,CAAC,cACP9C,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMouG,WAAWhtG,KAC7B,sBAAuBvB,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAMouG,WAAWhtG,KAAOP,GACnFmqG,YAAaprG,EAAKoB,GAAG,qCACpB,KAAM,EAAG,CAAC,aAAc,kBAC3BsD,EAAG,IACyB,aAA1BtE,EAAMouG,WAAW9sG,OAAuB,WAAc,QAAoB,KAAW,CACvFb,IAAK,GACJ,EAAC,QAAakrG,EAAyB,CACxCh7F,MAAO/Q,EAAKoB,GAAG,2BACf8kC,KAAM,YACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMouG,WAAWnB,SAC7B,sBAAuBptG,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAMouG,WAAWnB,SAAWpsG,GACvFS,KAAM,WACN,gBAAiB,GACjB0pG,YAAaprG,EAAKoB,GAAG,kCACpB,KAAM,EAAG,CAAC,aAAc,kBAC3BsD,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,yBACf8kC,KAAM,UACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMouG,WAAWlB,OAC7B,sBAAuBrtG,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAMouG,WAAWlB,OAASrsG,GACrFS,KAAM,WACN,gBAAiB,GACjB0pG,YAAaprG,EAAKoB,GAAG,gCACpB,KAAM,EAAG,CAAC,aAAc,kBAC3BsD,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,0BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMouG,WAAWS,SAC7B,sBAAuBhvG,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAMouG,WAAWS,SAAWhuG,GACvFmqG,YAAaprG,EAAKoB,GAAG,qCACpB,KAAM,EAAG,CAAC,aAAc,kBAC3BsD,EAAG,GACF,EAAG,CAAC,WAAY,KAAiC,OAA1BtE,EAAMouG,WAAW9sG,OAAiB,WAAc,QAAoB,KAAW,CACvGb,IAAK,GACJ,EAAC,QAAakrG,EAAyB,CACxCh7F,MAAO/Q,EAAKoB,GAAG,2BACf8kC,KAAM,YACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMouG,WAAWf,SAC7B,sBAAuBxtG,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAMouG,WAAWf,SAAWxsG,GACvFmqG,YAAaprG,EAAKoB,GAAG,kCACpB,KAAM,EAAG,CAAC,aAAc,kBAC3BsD,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,KAAM,CAC5Dh7F,OAAO,QAAS,IAAM,EAAC,SAAiB,QAAiB/Q,EAAKoB,GAAG,wBAA0B,IAAK,IAAI,QAAa6C,EAAuB,CACtIM,QAASvE,EAAKoB,GAAG,0BACjBoD,UAAW,OACV,CACD5C,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,kBACNvB,MAAO,uBAET8E,EAAG,GACF,EAAG,CAAC,cACP9C,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMouG,WAAWU,UAC7B,sBAAuBjvG,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAMouG,WAAWU,UAAYjuG,GACxFmqG,YAAaprG,EAAKoB,GAAG,mCACpB,KAAM,EAAG,CAAC,aAAc,kBAC3BsD,EAAG,KACD,QAAaqnG,EAAyB,CACxCh7F,MAAO/Q,EAAKoB,GAAG,wBACf8kC,KAAM,cACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMouG,WAAWhB,WAC7B,sBAAuBvtG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMouG,WAAWhB,WAAavsG,GAC3FmqG,YAAaprG,EAAKoB,GAAG,oCACpB,KAAM,EAAG,CAAC,aAAc,kBAC3BsD,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,0BACf8kC,KAAM,UACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMouG,WAAWW,OAC7B,sBAAuBlvG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMouG,WAAWW,OAASluG,GACvFmqG,YAAaprG,EAAKoB,GAAG,sCACpB,KAAM,EAAG,CAAC,aAAc,kBAC3BsD,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,yBACf8kC,KAAM,eACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMouG,WAAWY,YAC7B,sBAAuBnvG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMouG,WAAWY,YAAcnuG,GAC5FS,KAAM,WACN,gBAAiB,GACjB0pG,YAAaprG,EAAKoB,GAAG,qCACpB,KAAM,EAAG,CAAC,aAAc,kBAC3BsD,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,6BACf8kC,KAAM,mBACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMouG,WAAWa,gBAC7B,sBAAuBpvG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMouG,WAAWa,gBAAkBpuG,GAChGS,KAAM,WACN,gBAAiB,GACjB0pG,YAAaprG,EAAKoB,GAAG,yCACpB,KAAM,EAAG,CAAC,aAAc,kBAC3BsD,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,KAAM,CAC5Dh7F,OAAO,QAAS,IAAM,EAAC,SAAiB,QAAiB/Q,EAAKoB,GAAG,wBAA0B,IAAK,IAAI,QAAa6C,EAAuB,CACtIM,QAASvE,EAAKoB,GAAG,0BACjBoD,UAAW,OACV,CACD5C,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,kBACNvB,MAAO,uBAET8E,EAAG,GACF,EAAG,CAAC,cACP9C,SAAS,QAAS,IAAM,EAAC,QAAagqG,EAAsB,CAC1D1jG,WAAY9H,EAAMouG,WAAWc,UAC7B,sBAAuBrvG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMouG,WAAWc,UAAYruG,IACzF,KAAM,EAAG,CAAC,iBACbyD,EAAG,KACD,QAAaqnG,EAAyB,CACxCh7F,MAAO/Q,EAAKoB,GAAG,yBACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAagqG,EAAsB,CAC1D1jG,WAAY9H,EAAMouG,WAAWT,MAAM9wC,QACnC,sBAAuBh9D,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMouG,WAAWT,MAAM9wC,QAAUh8D,IAC7F,KAAM,EAAG,CAAC,iBACbyD,EAAG,GACF,EAAG,CAAC,UAAWtE,EAAMouG,WAAWT,OAAO9wC,UAAW,WAAc,QAAoB,KAAW,CAChGp8D,IAAK,GACJ,EAAC,QAAakrG,EAAyB,CACxCh7F,MAAO/Q,EAAKoB,GAAG,2BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaqqG,EAA4B,CAChE/jG,WAAY9H,EAAMouG,WAAWT,MAAMwB,QACnC,sBAAuBtvG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMouG,WAAWT,MAAMwB,QAAUtuG,GAC9FuU,IAAK,GACLgxD,KAAM,EACN2oB,UAAW,GACV,KAAM,EAAG,CAAC,iBACbzqF,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,6BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaqqG,EAA4B,CAChE/jG,WAAY9H,EAAMouG,WAAWT,MAAMyB,UACnC,sBAAuBvvG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMouG,WAAWT,MAAMyB,UAAYvuG,GAChGuU,IAAK,GACLD,IAAK,IACLixD,KAAM,GACL,KAAM,EAAG,CAAC,iBACb9hE,EAAG,GACF,EAAG,CAAC,WAAY,MAAO,QAAoB,IAAI,IAAQ,KAAiC,YAA1BtE,EAAMouG,WAAW9sG,OAAsB,WAAc,QAAoB,KAAW,CACnJb,IAAK,GACJ,EAAC,QAAakrG,EAAyB,CACxCh7F,MAAO/Q,EAAKoB,GAAG,2BACf8kC,KAAM,YACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMouG,WAAWnB,SAC7B,sBAAuBptG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMouG,WAAWnB,SAAWpsG,GACzFS,KAAM,WACN,gBAAiB,GACjB0pG,YAAaprG,EAAKoB,GAAG,kCACpB,KAAM,EAAG,CAAC,aAAc,kBAC3BsD,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,4BACf8kC,KAAM,aACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMouG,WAAWd,UAC7B,sBAAuBztG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMouG,WAAWd,UAAYzsG,GAC1FS,KAAM,WACN,gBAAiB,GACjB0pG,YAAaprG,EAAKoB,GAAG,mCACpB,KAAM,EAAG,CAAC,aAAc,kBAC3BsD,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,0BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMouG,WAAWS,SAC7B,sBAAuBhvG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMouG,WAAWS,SAAWhuG,GACzFmqG,YAAaprG,EAAKoB,GAAG,qCACpB,KAAM,EAAG,CAAC,aAAc,kBAC3BsD,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,KAAM,CAC5Dh7F,OAAO,QAAS,IAAM,EAAC,SAAiB,QAAiB/Q,EAAKoB,GAAG,0BAA4B,IAAK,IAAI,QAAa6C,EAAuB,CACxIM,QAASvE,EAAKoB,GAAG,sBACjBoD,UAAW,OACV,CACD5C,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,kBACNvB,MAAO,uBAET8E,EAAG,GACF,EAAG,CAAC,cACP9C,SAAS,QAAS,IAAM,EAAC,QAAagqG,EAAsB,CAC1D1jG,WAAY9H,EAAMouG,WAAWb,QAC7B,sBAAuB1tG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMouG,WAAWb,QAAU1sG,IACvF,KAAM,EAAG,CAAC,iBACbyD,EAAG,KACD,QAAoB,MAAO,GAAa,EAAC,QAAapE,EAA8B,CACtFa,KAAM,uBACNV,MAAO,CACL,eAAgB,UAEhB,QAAiB,KAAM,QAAiBT,EAAKoB,GAAG,6BAA8B,MAAO,KAAiC,gBAA1BhB,EAAMouG,WAAW9sG,OAA0B,WAAc,QAAoB,KAAW,CACtLb,IAAK,GACJ,EAAC,QAAakrG,EAAyB,CACxCh7F,MAAO/Q,EAAKoB,GAAG,sBACf8kC,KAAM,QACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMouG,WAAWZ,KAC7B,sBAAuB3tG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMouG,WAAWZ,KAAO3sG,GACrFmqG,YAAaprG,EAAKoB,GAAG,kCACpB,KAAM,EAAG,CAAC,aAAc,kBAC3BsD,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,yBACf8kC,KAAM,SACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMouG,WAAWiB,MAC7B,sBAAuBxvG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMouG,WAAWiB,MAAQxuG,GACtFS,KAAM,WACN,gBAAiB,GACjB0pG,YAAaprG,EAAKoB,GAAG,qCACpB,KAAM,EAAG,CAAC,aAAc,kBAC3BsD,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,KAAM,CAC5Dh7F,OAAO,QAAS,IAAM,EAAC,SAAiB,QAAiB/Q,EAAKoB,GAAG,0BAA4B,IAAK,IAAI,QAAa6C,EAAuB,CACxIM,QAASvE,EAAKoB,GAAG,4BACjBoD,UAAW,OACV,CACD5C,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,kBACNvB,MAAO,uBAET8E,EAAG,GACF,EAAG,CAAC,cACP9C,SAAS,QAAS,IAAM,EAAC,QAAagqG,EAAsB,CAC1D1jG,WAAY9H,EAAMouG,WAAWX,UAC7B,sBAAuB5tG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMouG,WAAWX,UAAY5sG,IACzF,KAAM,EAAG,CAAC,iBACbyD,EAAG,KACA,KAAiC,WAA1BtE,EAAMouG,WAAW9sG,OAAqB,WAAc,QAAoB,KAAW,CAC7Fb,IAAK,GACJ,EAAC,QAAakrG,EAAyB,CACxCh7F,MAAO/Q,EAAKoB,GAAG,2BACf8kC,KAAM,WACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMouG,WAAWV,QAC7B,sBAAuB7tG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMouG,WAAWV,QAAU7sG,GACxFmqG,YAAaprG,EAAKoB,GAAG,uCACpB,KAAM,EAAG,CAAC,aAAc,kBAC3BsD,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,6BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMouG,WAAWkB,SAC7B,sBAAuBzvG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMouG,WAAWkB,SAAWzuG,GACzFmqG,YAAaprG,EAAKoB,GAAG,wCACpB,KAAM,EAAG,CAAC,aAAc,kBAC3BsD,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,6BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMouG,WAAWmB,SAC7B,sBAAuB1vG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMouG,WAAWmB,SAAW1uG,GACzFS,KAAM,WACN,gBAAiB,GACjB0pG,YAAaprG,EAAKoB,GAAG,wCACpB,KAAM,EAAG,CAAC,aAAc,kBAC3BsD,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,KAAM,CAC5Dh7F,OAAO,QAAS,IAAM,EAAC,SAAiB,QAAiB/Q,EAAKoB,GAAG,wBAA0B,IAAK,IAAI,QAAa6C,EAAuB,CACtIM,QAASvE,EAAKoB,GAAG,gCACjBoD,UAAW,OACV,CACD5C,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,kBACNvB,MAAO,uBAET8E,EAAG,GACF,EAAG,CAAC,cACP9C,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMouG,WAAWjB,UAC7B,sBAAuBttG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMouG,WAAWjB,UAAYtsG,GAC1FmqG,YAAaprG,EAAKoB,GAAG,yCACpB,KAAM,EAAG,CAAC,aAAc,kBAC3BsD,EAAG,KACD,QAAaqnG,EAAyB,CACxCh7F,MAAO/Q,EAAKoB,GAAG,4BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMouG,WAAWoB,YAC7B,sBAAuB3vG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMouG,WAAWoB,YAAc3uG,GAC5FS,KAAM,WACNmuG,SAAU,CACRC,QAAS,GAEX1E,YAAaprG,EAAKoB,GAAG,uCACpB,KAAM,EAAG,CAAC,aAAc,kBAC3BsD,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,KAAM,CAC5Dh7F,OAAO,QAAS,IAAM,EAAC,SAAiB,QAAiB/Q,EAAKoB,GAAG,oCAAsC,IAAK,IAAI,QAAa6C,EAAuB,CAClJM,QAASvE,EAAKoB,GAAG,sCACjBoD,UAAW,OACV,CACD5C,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,kBACNvB,MAAO,uBAET8E,EAAG,GACF,EAAG,CAAC,cACP9C,SAAS,QAAS,IAAM,EAAC,QAAagqG,EAAsB,CAC1D1jG,WAAY9H,EAAMouG,WAAWuB,gBAC7B,sBAAuB9vG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMouG,WAAWuB,gBAAkB9uG,IAC/F,KAAM,EAAG,CAAC,iBACbyD,EAAG,KACD,QAAaqnG,EAAyB,CACxCh7F,MAAO/Q,EAAKoB,GAAG,yBACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAagqG,EAAsB,CAC1D1jG,WAAY9H,EAAMouG,WAAWT,MAAM9wC,QACnC,sBAAuBh9D,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMouG,WAAWT,MAAM9wC,QAAUh8D,IAC7F,KAAM,EAAG,CAAC,iBACbyD,EAAG,GACF,EAAG,CAAC,UAAWtE,EAAMouG,WAAWT,OAAO9wC,UAAW,WAAc,QAAoB,KAAW,CAChGp8D,IAAK,GACJ,EAAC,QAAakrG,EAAyB,CACxCh7F,MAAO/Q,EAAKoB,GAAG,2BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaqqG,EAA4B,CAChE/jG,WAAY9H,EAAMouG,WAAWT,MAAMwB,QACnC,sBAAuBtvG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMouG,WAAWT,MAAMwB,QAAUtuG,GAC9FuU,IAAK,GACLgxD,KAAM,EACN2oB,UAAW,GACV,KAAM,EAAG,CAAC,iBACbzqF,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,6BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaqqG,EAA4B,CAChE/jG,WAAY9H,EAAMouG,WAAWT,MAAMyB,UACnC,sBAAuBvvG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMouG,WAAWT,MAAMyB,UAAYvuG,GAChGuU,IAAK,GACLD,IAAK,IACLixD,KAAM,GACL,KAAM,EAAG,CAAC,iBACb9hE,EAAG,GACF,EAAG,CAAC,WAAY,MAAO,QAAoB,IAAI,IAAQ,MAAO,QAAoB,IAAI,IAAQ,OACjGA,EAAG,GACF,EAAG,CAAC,QAAS,YAChBA,EAAG,GACF,EAAG,CAAC,aAAc,QAAS,cAAc,QAAawK,EAAsB,CAC7EhH,WAAY9H,EAAM4vG,iBAClB,sBAAuB/vG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM4vG,iBAAmB/uG,GACtFgQ,MAAOjR,EAAKoB,GAAG,8BAA+B,CAC5CI,KAAMpB,EAAM6vG,gBAAgBzuG,MAAQ,KAEtC5B,MAAO,iBACP0uG,SAAUjuG,EAAS6vG,iBAClB,CACDrpB,QAAQ,QAAS,IAAM,EAAC,QAAa/3E,EAAsB,CACzD9N,QAASf,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM4vG,kBAAmB,IACvE,CACDpuG,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB5B,EAAKoB,GAAG,uBAAwB,KAC3FsD,EAAG,KACD,QAAaoK,EAAsB,CACrCpN,KAAM,UACNV,QAASX,EAAS8vG,oBACjB,CACDvuG,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB5B,EAAKoB,GAAG,sBAAuB,KAC1FsD,EAAG,GACF,EAAG,CAAC,cACP9C,SAAS,QAAS,IAAM,EAAC,QAAawqG,EAA4B,CAChEgE,OAAQ,EACRp1E,OAAQ,IACP,CACDp5B,SAAS,QAAS,IAAM,EAAC,QAAauqG,EAAiC,CACrEp7F,MAAO/Q,EAAKoB,GAAG,gCACd,CACDQ,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBxB,EAAM6vG,gBAAgBzuG,MAAO,KACxFkD,EAAG,GACF,EAAG,CAAC,WAAW,QAAaynG,EAAiC,CAC9Dp7F,MAAO/Q,EAAKoB,GAAG,gCACd,CACDQ,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBvB,EAASgwG,oBAAoBjwG,EAAMkwG,qBAAsB,KACpH5rG,EAAG,GACF,EAAG,CAAC,WAAW,QAAaynG,EAAiC,CAC9Dp7F,MAAO/Q,EAAKoB,GAAG,0BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAa+pG,EAAmB,CACvDjqG,KAAMtB,EAAM6vG,gBAAgBhzC,QAAU,UAAY,QACjD,CACDr7D,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBxB,EAAM6vG,gBAAgBhzC,QAAUj9D,EAAKoB,GAAG,qBAAuBpB,EAAKoB,GAAG,uBAAwB,KAC1JsD,EAAG,GACF,EAAG,CAAC,WACPA,EAAG,GACF,EAAG,CAAC,UAAWtE,EAAM6vG,gBAAgBnD,QAAS,WAAc,QAAaX,EAAiC,CAC3GtrG,IAAK,EACLkQ,MAAO/Q,EAAKoB,GAAG,2BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAa+pG,EAAmB,CACvDjqG,KAAM,WACL,CACDE,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB5B,EAAKoB,GAAG,0BAA2B,KAC9FsD,EAAG,MAELA,EAAG,GACF,EAAG,CAAC,YAAa,QAAoB,IAAI,GAAoC,aAA7BtE,EAAMkwG,qBAAqC,WAAc,QAAoB,KAAW,CACzIzvG,IAAK,GACJ,EAAC,QAAasrG,EAAiC,CAChDp7F,MAAO/Q,EAAKoB,GAAG,4BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBvB,EAAS+sG,SAAShtG,EAAM6vG,gBAAgB5C,SAAU,KAAM,KACnH3oG,EAAG,GACF,EAAG,CAAC,WAAW,QAAaynG,EAAiC,CAC9Dp7F,MAAO/Q,EAAKoB,GAAG,0BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBvB,EAAS+sG,SAAShtG,EAAM6vG,gBAAgB3C,OAAQ,IAAK,KAChH5oG,EAAG,GACF,EAAG,CAAC,WAAW,QAAaynG,EAAiC,CAC9Dp7F,MAAO/Q,EAAKoB,GAAG,0BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBxB,EAAM6vG,gBAAgBhB,UAAYjvG,EAAKoB,GAAG,qBAAsB,KAC3HsD,EAAG,GACF,EAAG,CAAC,WAAY,KAAoC,SAA7BtE,EAAMkwG,qBAAiC,WAAc,QAAanE,EAAiC,CAC3HtrG,IAAK,EACLkQ,MAAO/Q,EAAKoB,GAAG,wBACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD,cAAe5rG,EAAM6vG,gBAAgB1C,WAAavtG,EAAKoB,GAAG,oBAC1DmvG,SAAU,IACT,KAAM,EAAG,CAAC,kBACb7rG,EAAG,GACF,EAAG,CAAC,WAA0C,OAA7BtE,EAAMkwG,qBAA+B,WAAc,QAAoB,KAAW,CACpGzvG,IAAK,GACJ,EAAC,QAAasrG,EAAiC,CAChDp7F,MAAO/Q,EAAKoB,GAAG,4BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD,cAAe5rG,EAAM6vG,gBAAgBxC,SACrC8C,SAAU,IACT,KAAM,EAAG,CAAC,kBACb7rG,EAAG,GACF,EAAG,CAAC,WAAW,QAAaynG,EAAiC,CAC9Dp7F,MAAO/Q,EAAKoB,GAAG,wBACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD,cAAe5rG,EAAM6vG,gBAAgBf,WAAalvG,EAAKoB,GAAG,oBAC1DmvG,SAAU,IACT,KAAM,EAAG,CAAC,kBACb7rG,EAAG,GACF,EAAG,CAAC,WAAW,QAAaynG,EAAiC,CAC9Dp7F,MAAO/Q,EAAKoB,GAAG,yBACd,CACDQ,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBxB,EAAM6vG,gBAAgBzC,YAAa,KAC9F9oG,EAAG,GACF,EAAG,CAAC,WAAW,QAAaynG,EAAiC,CAC9Dp7F,MAAO/Q,EAAKoB,GAAG,2BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBxB,EAAM6vG,gBAAgBd,QAAS,KAC1FzqG,EAAG,GACF,EAAG,CAAC,WAAW,QAAaynG,EAAiC,CAC9Dp7F,MAAO/Q,EAAKoB,GAAG,wBACd,CACDQ,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBxB,EAAM6vG,gBAAgBX,UAAYtvG,EAAKoB,GAAG,yBAA2BpB,EAAKoB,GAAG,6BAA8B,KACtKsD,EAAG,GACF,EAAG,CAAC,WAAY,KAAoC,YAA7BtE,EAAMkwG,qBAAoC,WAAc,QAAoB,KAAW,CAC/GzvG,IAAK,GACJ,EAAC,QAAasrG,EAAiC,CAChDp7F,MAAO/Q,EAAKoB,GAAG,4BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBvB,EAAS+sG,SAAShtG,EAAM6vG,gBAAgB5C,SAAU,KAAM,KACnH3oG,EAAG,GACF,EAAG,CAAC,WAAW,QAAaynG,EAAiC,CAC9Dp7F,MAAO/Q,EAAKoB,GAAG,6BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBvB,EAAS+sG,SAAShtG,EAAM6vG,gBAAgBvC,UAAW,IAAK,KACnHhpG,EAAG,GACF,EAAG,CAAC,WAAW,QAAaynG,EAAiC,CAC9Dp7F,MAAO/Q,EAAKoB,GAAG,0BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBxB,EAAM6vG,gBAAgBhB,UAAYjvG,EAAKoB,GAAG,qBAAsB,KAC3HsD,EAAG,GACF,EAAG,CAAC,WAAW,QAAaynG,EAAiC,CAC9Dp7F,MAAO/Q,EAAKoB,GAAG,0BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBxB,EAAM6vG,gBAAgBtC,QAAU3tG,EAAKoB,GAAG,yBAA2BpB,EAAKoB,GAAG,6BAA8B,KACpKsD,EAAG,GACF,EAAG,CAAC,WAAY,KAAoC,gBAA7BtE,EAAMkwG,qBAAwC,WAAc,QAAoB,KAAW,CACnHzvG,IAAK,GACJ,EAAC,QAAasrG,EAAiC,CAChDp7F,MAAO/Q,EAAKoB,GAAG,uBACd,CACDQ,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBxB,EAAM6vG,gBAAgBrC,MAAO,KACxFlpG,EAAG,GACF,EAAG,CAAC,WAAW,QAAaynG,EAAiC,CAC9Dp7F,MAAO/Q,EAAKoB,GAAG,0BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBxB,EAAM6vG,gBAAgBpC,UAAY7tG,EAAKoB,GAAG,yBAA2BpB,EAAKoB,GAAG,6BAA8B,KACtKsD,EAAG,GACF,EAAG,CAAC,WAAY,KAAoC,WAA7BtE,EAAMkwG,qBAAmC,WAAc,QAAoB,KAAW,CAC9GzvG,IAAK,GACJ,EAAC,QAAasrG,EAAiC,CAChDp7F,MAAO/Q,EAAKoB,GAAG,4BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD,cAAe5rG,EAAM6vG,gBAAgBnC,QACrCyC,SAAU,IACT,KAAM,EAAG,CAAC,kBACb7rG,EAAG,GACF,EAAG,CAAC,WAAW,QAAaynG,EAAiC,CAC9Dp7F,MAAO/Q,EAAKoB,GAAG,wBACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD,cAAe5rG,EAAM6vG,gBAAgB1C,WAAavtG,EAAKoB,GAAG,oBAC1DmvG,SAAU,IACT,KAAM,EAAG,CAAC,kBACb7rG,EAAG,GACF,EAAG,CAAC,WAAW,QAAaynG,EAAiC,CAC9Dp7F,MAAO/Q,EAAKoB,GAAG,6BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBxB,EAAM6vG,gBAAgBP,UAAY1vG,EAAKoB,GAAG,qBAAsB,KAC3HsD,EAAG,GACF,EAAG,CAAC,WAAW,QAAaynG,EAAiC,CAC9Dp7F,MAAO/Q,EAAKoB,GAAG,4BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD,cAAe3rG,EAASmwG,cAAcpwG,EAAM6vG,gBAAgB9O,SAC5Dz/F,KAAM,WACNmuG,SAAU,CACRC,QAAS,GAEXS,SAAU,IACT,KAAM,EAAG,CAAC,kBACb7rG,EAAG,GACF,EAAG,CAAC,WAAW,QAAaynG,EAAiC,CAC9Dp7F,MAAO/Q,EAAKoB,GAAG,oCACd,CACDQ,SAAS,QAAS,IAAM,EAAC,SAAiB,SAA2D,IAA1CxB,EAAM6vG,gBAAgBF,gBAA4B/vG,EAAKoB,GAAG,yBAA2BpB,EAAKoB,GAAG,6BAA8B,KACtLsD,EAAG,GACF,EAAG,CAAC,WAAY,MAAO,QAAoB,IAAI,GAAOtE,EAAM6vG,gBAAgBlC,OAAO9wC,UAAW,WAAc,QAAoB,KAAW,CAC5Ip8D,IAAK,GACJ,EAAC,QAAasrG,EAAiC,CAChDp7F,MAAO/Q,EAAKoB,GAAG,yBACd,CACDQ,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBxB,EAAM6vG,gBAAgBlC,OAAOwB,SAAW,MAAO,KAC1G7qG,EAAG,GACF,EAAG,CAAC,WAAW,QAAaynG,EAAiC,CAC9Dp7F,MAAO/Q,EAAKoB,GAAG,6BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBxB,EAAM6vG,gBAAgBlC,OAAOyB,WAAa,IAAK,KAC1G9qG,EAAG,GACF,EAAG,CAAC,WAAW,QAAaynG,EAAiC,KAAM,CACpEp7F,OAAO,QAAS,IAAM,EAAC,QAAoB,OAAQ,GAAa,EAAC,SAAiB,QAAiB/Q,EAAKoB,GAAG,2BAA6B,IAAK,IAAI,QAAa0N,EAAsB,CAClL2hG,KAAM,GACN/uG,KAAM,UACNV,QAASX,EAASqwG,aAClB9wG,MAAO,eACN,CACDgC,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,WACNvB,OAAO,QAAgB,CACrB,UAAWQ,EAAMuwG,gBAElB,KAAM,EAAG,CAAC,YACbjsG,EAAG,GACF,EAAG,CAAC,gBACP9C,SAAS,QAAS,IAAM,EAAC,QAAoB,MAAO,GAAa,EAAC,QAAayN,EAAwB,CACrGwD,WAAYxS,EAAS2tG,mBAAmB5tG,EAAM6vG,gBAC9C39F,OAAQjS,EAAS4tG,eAAe7tG,EAAM6vG,gBACtC,eAAgB,GAChB,eAAe,EACfl3E,OAAQ,IAAM14B,EAAS6tG,aAAa9tG,EAAM6vG,iBACzC,KAAM,EAAG,CAAC,aAAc,SAAU,YAAY,QAAoB,MAAO,CAC1ErwG,OAAO,QAAgB,CAAC,aAAc,CACpC,gBAAiBS,EAASuwG,gBAAgBxwG,EAAM6vG,qBAEjD,QAAiB5vG,EAASwwG,mBAAmBzwG,EAAM6vG,iBAAkB,OACxEvrG,EAAG,KACA,MAAO,QAAoB,IAAI,KACpCA,EAAG,MAELA,EAAG,GACF,EAAG,CAAC,aAAc,QAAS,cAAc,QAAawK,EAAsB,CAC7EhH,WAAY9H,EAAM0wG,eAClB,sBAAuB7wG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM0wG,eAAiB7vG,GACpFgQ,MAAOjR,EAAKoB,GAAG,4BAA6B,CAC1CI,KAAMpB,EAAM2wG,aAAavvG,MAAQ,KAEnC5B,MAAO,iBACP,mBAAoB,GACpB0uG,SAAUjuG,EAAS2wG,eAClB,CACDnqB,QAAQ,QAAS,IAAM,EAAC,QAAa/3E,EAAsB,CACzD9N,QAASf,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM0wG,gBAAiB,IACrE,CACDlvG,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB5B,EAAKoB,GAAG,qBAAsB,KACzFsD,EAAG,KACD,QAAaoK,EAAsB,CACrCpN,KAAM,UACNV,QAASX,EAAS4wG,oBACjB,CACDrvG,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB5B,EAAKoB,GAAG,0BAA2B,KAC9FsD,EAAG,GACF,EAAG,CAAC,cACP9C,SAAS,QAAS,IAAM,EAAC,QAAasqG,EAAoB,CACxDwC,MAAOtuG,EAAM2wG,YACb,iBAAkB,MAClBvwG,IAAK,WACLmuG,MAAOtuG,EAAS6wG,WACf,CACDtvG,SAAS,QAAS,IAAM,EAAC,QAAamqG,EAAyB,CAC7D7lE,KAAM,QACL,CACDn1B,OAAO,QAAS,IAAM,EAAC,SAAiB,QAAiB/Q,EAAKoB,GAAG,+BAAiC,IAAK,IAAI,QAAa6C,EAAuB,CAC7IM,QAASvE,EAAKoB,GAAG,wCACjBoD,UAAW,OACV,CACD5C,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,uBACNvB,MAAO,0BAET8E,EAAG,GACF,EAAG,CAAC,cACP9C,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAM2wG,YAAYvvG,KAC9B,sBAAuBvB,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM2wG,YAAYvvG,KAAOP,GACtFoD,SAAU,IACT,KAAM,EAAG,CAAC,iBACbK,EAAG,KACD,QAAaqnG,EAAyB,CACxCh7F,MAAO/Q,EAAKoB,GAAG,4BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAagqG,EAAsB,CAC1D1jG,WAAY9H,EAAM2wG,YAAY9zC,QAC9B,sBAAuBh9D,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM2wG,YAAY9zC,QAAUh8D,IACxF,KAAM,EAAG,CAAC,iBACbyD,EAAG,GACF,EAAG,CAAC,UAAwC,aAA7BtE,EAAMkwG,qBAAqC,WAAc,QAAoB,KAAW,CACxGzvG,IAAK,GACJ,EAAC,QAAakrG,EAAyB,CACxCh7F,MAAO/Q,EAAKoB,GAAG,2BACf8kC,KAAM,YACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAM2wG,YAAY1D,SAC9B,sBAAuBptG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM2wG,YAAY1D,SAAWpsG,GAC1FoD,SAAUjE,EAAM2wG,YAAYjE,MAC5BprG,KAAM,WACN,gBAAiB,IAChB,KAAM,EAAG,CAAC,aAAc,eAC3BgD,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,yBACf8kC,KAAM,UACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAM2wG,YAAYzD,OAC9B,sBAAuBrtG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM2wG,YAAYzD,OAASrsG,GACxFoD,SAAUjE,EAAM2wG,YAAYjE,MAC5BprG,KAAM,WACN,gBAAiB,IAChB,KAAM,EAAG,CAAC,aAAc,eAC3BgD,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,0BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAM2wG,YAAY9B,SAC9B,sBAAuBhvG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM2wG,YAAY9B,SAAWhuG,GAC1FmqG,YAAaprG,EAAKoB,GAAG,qCACpB,KAAM,EAAG,CAAC,aAAc,kBAC3BsD,EAAG,GACF,EAAG,CAAC,WAAY,KAAoC,SAA7BtE,EAAMkwG,qBAAiC,WAAc,QAAoB,KAAW,CAC5GzvG,IAAK,GACJ,EAAC,QAAakrG,EAAyB,CACxCh7F,MAAO/Q,EAAKoB,GAAG,wBACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAM2wG,YAAYxD,UAC9B,sBAAuBttG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM2wG,YAAYxD,UAAYtsG,IAC1F,KAAM,EAAG,CAAC,iBACbyD,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,yBACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAagqG,EAAsB,CAC1D1jG,WAAY9H,EAAM2wG,YAAYhD,MAAM9wC,QACpC,sBAAuBh9D,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM2wG,YAAYhD,MAAM9wC,QAAUh8D,GAC/FyE,SAAUzF,EAAO,MAAQA,EAAO,IAAM2mB,GAAOvmB,EAAS8wG,qBAAqBvqF,EAAKxmB,EAAM2wG,eACrF,KAAM,EAAG,CAAC,iBACbrsG,EAAG,GACF,EAAG,CAAC,UAAWtE,EAAM2wG,YAAYhD,OAAO9wC,UAAW,WAAc,QAAoB,KAAW,CACjGp8D,IAAK,GACJ,EAAC,QAAakrG,EAAyB,CACxCh7F,MAAO/Q,EAAKoB,GAAG,2BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaqqG,EAA4B,CAChE/jG,WAAY9H,EAAM2wG,YAAYhD,MAAMwB,QACpC,sBAAuBtvG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM2wG,YAAYhD,MAAMwB,QAAUtuG,GAC/FuU,IAAK,GACLgxD,KAAM,EACN2oB,UAAW,GACV,KAAM,EAAG,CAAC,iBACbzqF,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,6BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaqqG,EAA4B,CAChE/jG,WAAY9H,EAAM2wG,YAAYhD,MAAMyB,UACpC,sBAAuBvvG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM2wG,YAAYhD,MAAMyB,UAAYvuG,GACjGuU,IAAK,GACLD,IAAK,IACLixD,KAAM,GACL,KAAM,EAAG,CAAC,iBACb9hE,EAAG,GACF,EAAG,CAAC,WAAY,MAAO,QAAoB,IAAI,IAAQ,KAAoC,OAA7BtE,EAAMkwG,qBAA+B,WAAc,QAAoB,KAAW,CACjJzvG,IAAK,GACJ,EAAC,QAAakrG,EAAyB,CACxCh7F,MAAO/Q,EAAKoB,GAAG,2BACf8kC,KAAM,YACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAM2wG,YAAYtD,SAC9B,sBAAuBxtG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM2wG,YAAYtD,SAAWxsG,GAC1FoD,SAAUjE,EAAM2wG,YAAYjE,OAC3B,KAAM,EAAG,CAAC,aAAc,eAC3BpoG,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,KAAM,CAC5Dh7F,OAAO,QAAS,IAAM,EAAC,SAAiB,QAAiB/Q,EAAKoB,GAAG,wBAA0B,IAAK,IAAI,QAAa6C,EAAuB,CACtIM,QAASvE,EAAKoB,GAAG,0BACjBoD,UAAW,OACV,CACD5C,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,kBACNvB,MAAO,uBAET8E,EAAG,GACF,EAAG,CAAC,cACP9C,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAM2wG,YAAY7B,UAC9B,sBAAuBjvG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM2wG,YAAY7B,UAAYjuG,GAC3FmqG,YAAaprG,EAAKoB,GAAG,mCACpB,KAAM,EAAG,CAAC,aAAc,kBAC3BsD,EAAG,KACD,QAAaqnG,EAAyB,CACxCh7F,MAAO/Q,EAAKoB,GAAG,wBACf8kC,KAAM,cACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAM2wG,YAAYvD,WAC9B,sBAAuBvtG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM2wG,YAAYvD,WAAavsG,GAC5FoD,SAAUjE,EAAM2wG,YAAYjE,OAC3B,KAAM,EAAG,CAAC,aAAc,eAC3BpoG,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,0BACf8kC,KAAM,UACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAM2wG,YAAY5B,OAC9B,sBAAuBlvG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM2wG,YAAY5B,OAASluG,GACxFoD,SAAUjE,EAAM2wG,YAAYjE,OAC3B,KAAM,EAAG,CAAC,aAAc,eAC3BpoG,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,yBACf8kC,KAAM,eACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAM2wG,YAAY3B,YAC9B,sBAAuBnvG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM2wG,YAAY3B,YAAcnuG,GAC7FoD,SAAUjE,EAAM2wG,YAAYjE,MAC5BprG,KAAM,WACN,gBAAiB,IAChB,KAAM,EAAG,CAAC,aAAc,eAC3BgD,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,6BACf8kC,KAAM,mBACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAM2wG,YAAY1B,gBAC9B,sBAAuBpvG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM2wG,YAAY1B,gBAAkBpuG,GACjGoD,SAAUjE,EAAM2wG,YAAYjE,MAC5BprG,KAAM,WACN,gBAAiB,IAChB,KAAM,EAAG,CAAC,aAAc,eAC3BgD,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,KAAM,CAC5Dh7F,OAAO,QAAS,IAAM,EAAC,SAAiB,QAAiB/Q,EAAKoB,GAAG,wBAA0B,IAAK,IAAI,QAAa6C,EAAuB,CACtIM,QAASvE,EAAKoB,GAAG,0BACjBoD,UAAW,OACV,CACD5C,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,kBACNvB,MAAO,uBAET8E,EAAG,GACF,EAAG,CAAC,cACP9C,SAAS,QAAS,IAAM,EAAC,QAAagqG,EAAsB,CAC1D1jG,WAAY9H,EAAM2wG,YAAYzB,UAC9B,sBAAuBrvG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM2wG,YAAYzB,UAAYruG,GAC3FoD,SAAUjE,EAAM2wG,YAAYjE,OAC3B,KAAM,EAAG,CAAC,aAAc,eAC3BpoG,EAAG,KACD,QAAaqnG,EAAyB,CACxCh7F,MAAO/Q,EAAKoB,GAAG,yBACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAagqG,EAAsB,CAC1D1jG,WAAY9H,EAAM2wG,YAAYhD,MAAM9wC,QACpC,sBAAuBh9D,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM2wG,YAAYhD,MAAM9wC,QAAUh8D,GAC/FyE,SAAUzF,EAAO,MAAQA,EAAO,IAAM2mB,GAAOvmB,EAAS8wG,qBAAqBvqF,EAAKxmB,EAAM2wG,eACrF,KAAM,EAAG,CAAC,iBACbrsG,EAAG,GACF,EAAG,CAAC,UAAWtE,EAAM2wG,YAAYhD,OAAO9wC,UAAW,WAAc,QAAoB,KAAW,CACjGp8D,IAAK,GACJ,EAAC,QAAakrG,EAAyB,CACxCh7F,MAAO/Q,EAAKoB,GAAG,2BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaqqG,EAA4B,CAChE/jG,WAAY9H,EAAM2wG,YAAYhD,MAAMwB,QACpC,sBAAuBtvG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM2wG,YAAYhD,MAAMwB,QAAUtuG,GAC/FuU,IAAK,GACLgxD,KAAM,EACN2oB,UAAW,GACV,KAAM,EAAG,CAAC,iBACbzqF,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,6BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaqqG,EAA4B,CAChE/jG,WAAY9H,EAAM2wG,YAAYhD,MAAMyB,UACpC,sBAAuBvvG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM2wG,YAAYhD,MAAMyB,UAAYvuG,GACjGuU,IAAK,GACLD,IAAK,IACLixD,KAAM,GACL,KAAM,EAAG,CAAC,iBACb9hE,EAAG,GACF,EAAG,CAAC,WAAY,MAAO,QAAoB,IAAI,IAAQ,KAAoC,YAA7BtE,EAAMkwG,qBAAoC,WAAc,QAAoB,KAAW,CACtJzvG,IAAK,GACJ,EAAC,QAAakrG,EAAyB,CACxCh7F,MAAO/Q,EAAKoB,GAAG,2BACf8kC,KAAM,YACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAM2wG,YAAY1D,SAC9B,sBAAuBptG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM2wG,YAAY1D,SAAWpsG,GAC1FoD,SAAUjE,EAAM2wG,YAAYjE,MAC5BprG,KAAM,WACN,gBAAiB,IAChB,KAAM,EAAG,CAAC,aAAc,eAC3BgD,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,4BACf8kC,KAAM,aACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAM2wG,YAAYrD,UAC9B,sBAAuBztG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM2wG,YAAYrD,UAAYzsG,GAC3FoD,SAAUjE,EAAM2wG,YAAYjE,MAC5BprG,KAAM,WACN,gBAAiB,IAChB,KAAM,EAAG,CAAC,aAAc,eAC3BgD,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,0BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAM2wG,YAAY9B,SAC9B,sBAAuBhvG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM2wG,YAAY9B,SAAWhuG,GAC1FmqG,YAAaprG,EAAKoB,GAAG,qCACpB,KAAM,EAAG,CAAC,aAAc,kBAC3BsD,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,KAAM,CAC5Dh7F,OAAO,QAAS,IAAM,EAAC,SAAiB,QAAiB/Q,EAAKoB,GAAG,0BAA4B,IAAK,IAAI,QAAa6C,EAAuB,CACxIM,QAASvE,EAAKoB,GAAG,sBACjBoD,UAAW,OACV,CACD5C,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,kBACNvB,MAAO,uBAET8E,EAAG,GACF,EAAG,CAAC,cACP9C,SAAS,QAAS,IAAM,EAAC,QAAagqG,EAAsB,CAC1D1jG,WAAY9H,EAAM2wG,YAAYpD,QAC9B,sBAAuB1tG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM2wG,YAAYpD,QAAU1sG,IACxF,KAAM,EAAG,CAAC,iBACbyD,EAAG,KACA,KAAoC,gBAA7BtE,EAAMkwG,qBAAwC,WAAc,QAAoB,KAAW,CACrGzvG,IAAK,GACJ,EAAC,QAAakrG,EAAyB,CACxCh7F,MAAO/Q,EAAKoB,GAAG,sBACf8kC,KAAM,QACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAM2wG,YAAYnD,KAC9B,sBAAuB3tG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM2wG,YAAYnD,KAAO3sG,GACtFoD,SAAUjE,EAAM2wG,YAAYjE,OAC3B,KAAM,EAAG,CAAC,aAAc,eAC3BpoG,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,yBACf8kC,KAAM,SACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAM2wG,YAAYtB,MAC9B,sBAAuBxvG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM2wG,YAAYtB,MAAQxuG,GACvFoD,SAAUjE,EAAM2wG,YAAYjE,MAC5BprG,KAAM,WACN,gBAAiB,IAChB,KAAM,EAAG,CAAC,aAAc,eAC3BgD,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,KAAM,CAC5Dh7F,OAAO,QAAS,IAAM,EAAC,SAAiB,QAAiB/Q,EAAKoB,GAAG,0BAA4B,IAAK,IAAI,QAAa6C,EAAuB,CACxIM,QAASvE,EAAKoB,GAAG,4BACjBoD,UAAW,OACV,CACD5C,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,kBACNvB,MAAO,uBAET8E,EAAG,GACF,EAAG,CAAC,cACP9C,SAAS,QAAS,IAAM,EAAC,QAAagqG,EAAsB,CAC1D1jG,WAAY9H,EAAM2wG,YAAYlD,UAC9B,sBAAuB5tG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM2wG,YAAYlD,UAAY5sG,IAC1F,KAAM,EAAG,CAAC,iBACbyD,EAAG,KACA,KAAoC,WAA7BtE,EAAMkwG,qBAAmC,WAAc,QAAoB,KAAW,CAChGzvG,IAAK,GACJ,EAAC,QAAakrG,EAAyB,CACxCh7F,MAAO/Q,EAAKoB,GAAG,2BACf8kC,KAAM,WACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAM2wG,YAAYjD,QAC9B,sBAAuB7tG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM2wG,YAAYjD,QAAU7sG,GACzFoD,SAAUjE,EAAM2wG,YAAYjE,OAC3B,KAAM,EAAG,CAAC,aAAc,eAC3BpoG,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,6BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAM2wG,YAAYrB,SAC9B,sBAAuBzvG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM2wG,YAAYrB,SAAWzuG,GAC1FoD,SAAUjE,EAAM2wG,YAAYjE,OAC3B,KAAM,EAAG,CAAC,aAAc,eAC3BpoG,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,6BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAM2wG,YAAYpB,SAC9B,sBAAuB1vG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM2wG,YAAYpB,SAAW1uG,GAC1FoD,SAAUjE,EAAM2wG,YAAYjE,MAC5BprG,KAAM,WACN,gBAAiB,IAChB,KAAM,EAAG,CAAC,aAAc,eAC3BgD,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,KAAM,CAC5Dh7F,OAAO,QAAS,IAAM,EAAC,SAAiB,QAAiB/Q,EAAKoB,GAAG,wBAA0B,IAAK,IAAI,QAAa6C,EAAuB,CACtIM,QAASvE,EAAKoB,GAAG,gCACjBoD,UAAW,OACV,CACD5C,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,kBACNvB,MAAO,uBAET8E,EAAG,GACF,EAAG,CAAC,cACP9C,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAM2wG,YAAYxD,UAC9B,sBAAuBttG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM2wG,YAAYxD,UAAYtsG,GAC3FmqG,YAAaprG,EAAKoB,GAAG,yCACpB,KAAM,EAAG,CAAC,aAAc,kBAC3BsD,EAAG,KACD,QAAaqnG,EAAyB,CACxCh7F,MAAO/Q,EAAKoB,GAAG,4BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAM2wG,YAAYnB,YAC9B,sBAAuB3vG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM2wG,YAAYnB,YAAc3uG,GAC7FS,KAAM,WACNmuG,SAAU,CACRC,QAAS,GAEX1E,YAAaprG,EAAKoB,GAAG,uCACpB,KAAM,EAAG,CAAC,aAAc,kBAC3BsD,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,KAAM,CAC5Dh7F,OAAO,QAAS,IAAM,EAAC,SAAiB,QAAiB/Q,EAAKoB,GAAG,oCAAsC,IAAK,IAAI,QAAa6C,EAAuB,CAClJM,QAASvE,EAAKoB,GAAG,sCACjBoD,UAAW,OACV,CACD5C,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,kBACNvB,MAAO,uBAET8E,EAAG,GACF,EAAG,CAAC,cACP9C,SAAS,QAAS,IAAM,EAAC,QAAagqG,EAAsB,CAC1D1jG,WAAY9H,EAAM2wG,YAAYhB,gBAC9B,sBAAuB9vG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM2wG,YAAYhB,gBAAkB9uG,IAChG,KAAM,EAAG,CAAC,iBACbyD,EAAG,KACD,QAAaqnG,EAAyB,CACxCh7F,MAAO/Q,EAAKoB,GAAG,yBACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAagqG,EAAsB,CAC1D1jG,WAAY9H,EAAM2wG,YAAYhD,MAAM9wC,QACpC,sBAAuBh9D,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM2wG,YAAYhD,MAAM9wC,QAAUh8D,GAC/FyE,SAAUzF,EAAO,MAAQA,EAAO,IAAM2mB,GAAOvmB,EAAS8wG,qBAAqBvqF,EAAKxmB,EAAM2wG,eACrF,KAAM,EAAG,CAAC,iBACbrsG,EAAG,GACF,EAAG,CAAC,UAAWtE,EAAM2wG,YAAYhD,OAAO9wC,UAAW,WAAc,QAAoB,KAAW,CACjGp8D,IAAK,GACJ,EAAC,QAAakrG,EAAyB,CACxCh7F,MAAO/Q,EAAKoB,GAAG,2BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaqqG,EAA4B,CAChE/jG,WAAY9H,EAAM2wG,YAAYhD,MAAMwB,QACpC,sBAAuBtvG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM2wG,YAAYhD,MAAMwB,QAAUtuG,GAC/FuU,IAAK,GACLgxD,KAAM,EACN2oB,UAAW,GACV,KAAM,EAAG,CAAC,iBACbzqF,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,6BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaqqG,EAA4B,CAChE/jG,WAAY9H,EAAM2wG,YAAYhD,MAAMyB,UACpC,sBAAuBvvG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM2wG,YAAYhD,MAAMyB,UAAYvuG,GACjGuU,IAAK,GACLD,IAAK,IACLixD,KAAM,GACL,KAAM,EAAG,CAAC,iBACb9hE,EAAG,GACF,EAAG,CAAC,WAAY,MAAO,QAAoB,IAAI,IAAQ,MAAO,QAAoB,IAAI,KACzFA,EAAG,GACF,EAAG,CAAC,QAAS,YAChBA,EAAG,GACF,EAAG,CAAC,aAAc,QAAS,gBAAiB,CAAC,CAAC6K,EAAoBnP,EAAMqT,UAC7E,CCv8CA,QACEkxF,WAAY,CACVwG,YAAW,KACXiG,aAAY,IAEd,IAAAtvG,GACE,MAAO,CAELuqG,cAAe,GAEftG,SAAU,CAAC,CACT7+F,MAAO,WACP6J,MAAO,YACN,CACD7J,MAAO,OACP6J,MAAO,iBACN,CACD7J,MAAO,KACP6J,MAAO,MACN,CACD7J,MAAO,UACP6J,MAAO,WACN,CACD7J,MAAO,cACP6J,MAAO,eACN,CACD7J,MAAO,SACP6J,MAAO,WAGT+9F,gBAAiB,CAAC,CAChB5nG,MAAO,WACP6J,MAAO,YACN,CACD7J,MAAO,OACP6J,MAAO,iBACN,CACD7J,MAAO,KACP6J,MAAO,MACN,CACD7J,MAAO,UACP6J,MAAO,WACN,CACD7J,MAAO,cACP6J,MAAO,eACN,CACD7J,MAAO,SACP6J,MAAO,WAGTsgG,iBAAkB,CAChBzE,YAAa,CACX3vC,SAAS,GAEX8oC,SAAU,IAEZuL,aAAc,CACZvL,SAAU,IAEZwL,WAAY,CACV3E,YAAa,CACX3vC,SAAS,GAEX8oC,SAAU,IAEZyL,gBAAiB,CACf5E,YAAa,CACX3vC,SAAS,GAEX8oC,SAAU,IAEZ0L,oBAAqB,CACnB7E,YAAa,CACX3vC,SAAS,GAEX8oC,SAAU,IAEZ2L,eAAgB,CACd9E,YAAa,CACX3vC,SAAS,GAEX8oC,SAAU,IAGZwG,eAAe,EACfyD,kBAAkB,EAClBc,gBAAgB,EAEhBR,mBAAoB,GACpBqB,qBAAsB,EACtB1B,eAAgB,KAChBc,YAAa,CAAC,EAEdvC,WAAY,CACV9sG,KAAM,GACNF,KAAM,GACNy7D,SAAS,EAETowC,SAAU,GACVC,OAAQ,GACR2B,SAAU,GAEVxB,SAAU,GACVyB,UAAW,GACX1B,WAAY,GACZ2B,OAAQ,OACRC,YAAa,GACbC,gBAAiB,GACjBC,WAAW,EACXvB,MAAO,CACL9wC,SAAS,EACTsyC,QAAS,GACTC,UAAW,IAGb9B,UAAW,GACXC,SAAS,EAETC,KAAM,GACN6B,MAAO,GACP5B,WAAW,EAEXC,QAAS,GACT4B,SAAU,GACVC,SAAU,GACVpC,UAAW,GACXqC,YAAa,GACbG,iBAAiB,GAGnB6B,WAAY,CAAC,EACbjB,cAAc,EAEdl9F,SAAS,EAEb,EACAzR,SAAU,CAER,aAAAsqG,GACE,MAAO,CAAC,CACNplG,MAAO,GACP6J,MAAO3O,KAAKhB,GAAG,kBACXgB,KAAK2jG,SAASztF,IAAIy2F,IAAM,CAC5B7nG,MAAO6nG,EAAG7nG,MACV6J,MAAOg+F,EAAGh+F,MACVk6F,YAAa8D,EAAG7nG,SAEpB,EAEA,gBAAAslG,GACE,OAAKpqG,KAAKiqG,cAGHjqG,KAAK2jG,SAASv7D,OAAOukE,GAAMA,EAAG7nG,QAAU9E,KAAKiqG,eAF3CjqG,KAAK2jG,QAGhB,EACA,QAAA6I,GACE,MAAO,CACLltG,KAAM,CAAC,CACLm4F,UAAU,EACV5mF,QAAS7Q,KAAKhB,GAAG,oCACjBq5D,QAAS,WAEXj5D,KAAM,CAAC,CACLq4F,UAAU,EACV5mF,QAAS7Q,KAAKhB,GAAG,oCACjBq5D,QAAS,QACR,CACDo3C,QAAS,gCACT5+F,QAAS7Q,KAAKhB,GAAG,oCACjBq5D,QAAS,SAEX4yC,SAAU,CAAC,CACTxT,UAAU,EACV5mF,QAAS7Q,KAAKhB,GAAG,iCACjBq5D,QAAS,SAEX6yC,OAAQ,CAAC,CACPzT,UAAU,EACV5mF,QAAS7Q,KAAKhB,GAAG,+BACjBq5D,QAAS,SAEXizC,UAAW,CAAC,CACV7T,UAAU,EACV5mF,QAAS7Q,KAAKhB,GAAG,kCACjBq5D,QAAS,SAEXgzC,SAAU,CAAC,CACT5T,UAAU,EACV5mF,QAAS7Q,KAAKhB,GAAG,iCACjBq5D,QAAS,SAEX+yC,WAAY,CAAC,CACX3T,UAAU,EACV5mF,QAAS7Q,KAAKhB,GAAG,mCACjBq5D,QAAS,SAEX00C,OAAQ,CAAC,CACPtV,UAAU,EACV5mF,QAAS7Q,KAAKhB,GAAG,qCACjBq5D,QAAS,SAEX20C,YAAa,CAAC,CACZvV,UAAU,EACV5mF,QAAS7Q,KAAKhB,GAAG,oCACjBq5D,QAAS,SAEX40C,gBAAiB,CAAC,CAChBxV,UAAU,EACV5mF,QAAS7Q,KAAKhB,GAAG,wCACjBq5D,QAAS,SAEXmzC,KAAM,CAAC,CACL/T,UAAU,EACV5mF,QAAS7Q,KAAKhB,GAAG,iCACjBq5D,QAAS,SAEXg1C,MAAO,CAAC,CACN5V,UAAU,EACV5mF,QAAS7Q,KAAKhB,GAAG,oCACjBq5D,QAAS,SAEXqzC,QAAS,CAAC,CACRjU,UAAU,EACV5mF,QAAS7Q,KAAKhB,GAAG,sCACjBq5D,QAAS,SAGf,EACA,SAAAy2C,GACE,MAAO,CACL1vG,KAAM,CAAC,CACLq4F,UAAU,EACV5mF,QAAS7Q,KAAKhB,GAAG,oCACjBq5D,QAAS,QACR,CACDo3C,QAAS,gCACT5+F,QAAS7Q,KAAKhB,GAAG,oCACjBq5D,QAAS,SAEX4yC,SAAU,CAAC,CACTxT,UAAU,EACV5mF,QAAS7Q,KAAKhB,GAAG,iCACjBq5D,QAAS,SAEX6yC,OAAQ,CAAC,CACPzT,UAAU,EACV5mF,QAAS7Q,KAAKhB,GAAG,+BACjBq5D,QAAS,SAEXizC,UAAW,CAAC,CACV7T,UAAU,EACV5mF,QAAS7Q,KAAKhB,GAAG,kCACjBq5D,QAAS,SAEXgzC,SAAU,CAAC,CACT5T,UAAU,EACV5mF,QAAS7Q,KAAKhB,GAAG,iCACjBq5D,QAAS,SAEX+yC,WAAY,CAAC,CACX3T,UAAU,EACV5mF,QAAS7Q,KAAKhB,GAAG,mCACjBq5D,QAAS,SAEX00C,OAAQ,CAAC,CACPtV,UAAU,EACV5mF,QAAS7Q,KAAKhB,GAAG,qCACjBq5D,QAAS,SAEX20C,YAAa,CAAC,CACZvV,UAAU,EACV5mF,QAAS7Q,KAAKhB,GAAG,oCACjBq5D,QAAS,SAEX40C,gBAAiB,CAAC,CAChBxV,UAAU,EACV5mF,QAAS7Q,KAAKhB,GAAG,wCACjBq5D,QAAS,SAEXmzC,KAAM,CAAC,CACL/T,UAAU,EACV5mF,QAAS7Q,KAAKhB,GAAG,iCACjBq5D,QAAS,SAEXg1C,MAAO,CAAC,CACN5V,UAAU,EACV5mF,QAAS7Q,KAAKhB,GAAG,oCACjBq5D,QAAS,SAEXqzC,QAAS,CAAC,CACRjU,UAAU,EACV5mF,QAAS7Q,KAAKhB,GAAG,sCACjBq5D,QAAS,SAGf,GAEFh4D,QAAS,CAEP,mBAAAuqG,CAAoB98D,EAAO+6D,EAAanqG,GACtC,MAAMgxG,EAAO5hE,EAAM6hE,cACb1vE,EAAOyvE,EAAKhiE,wBACZ32B,EAAI+2B,EAAMH,QAAU1N,EAAKnQ,KACzB9H,EAAI8lB,EAAMF,QAAU3N,EAAKrK,IACzBg6E,EAAS,QAAQ/G,KAAenqG,IAChCmxG,EAAS7vG,KAAKU,MAAMkvG,GACtBC,GAAUA,EAAO,KACnBA,EAAO,GAAGxxG,MAAM4pF,QAAU,IAC1B4nB,EAAO,GAAGxxG,MAAMyxB,KAAO,GAAG/Y,MAC1B84F,EAAO,GAAGxxG,MAAMu3B,IAAM,GAAG5N,MAE7B,EACA,oBAAA8iF,CAAqBjC,EAAanqG,GAChC,MAAMkxG,EAAS,QAAQ/G,KAAenqG,IAChCmxG,EAAS7vG,KAAKU,MAAMkvG,GACtBC,GAAUA,EAAO,KACnBA,EAAO,GAAGxxG,MAAM4pF,QAAU,IAE9B,EAEA,mBAAAgmB,CAAoB3uG,GAClB,MAAMqQ,EAAU3P,KAAK2jG,SAAS37C,KAAK9zC,GAAKA,EAAEpP,QAAUxF,GACpD,OAAOqQ,EAAUA,EAAQhB,MAAQrP,CACnC,EAEA,cAAA+qG,CAAe/qG,GACb,OAAOU,KAAKuqG,YAAYjrG,IAAOqkG,UAAY,EAC7C,EAEA,WAAA4G,CAAYjrG,GACV,MAAM4W,EAAM,CACV45F,SAAU9vG,KAAKivG,iBACfc,KAAM/vG,KAAKkvG,aACXc,GAAIhwG,KAAKmvG,WACTc,QAASjwG,KAAKovG,gBACdc,YAAalwG,KAAKqvG,oBAClBc,OAAQnwG,KAAKsvG,gBAEf,OAAOp5F,EAAI5W,EACb,EAEA,cAAAgrG,CAAehrG,GACb,MAAO,CAAC,WAAY,KAAM,UAAW,cAAe,UAAUs4B,SAASt4B,EACzE,EAEA,QAAA0rG,CAASjyE,EAAMq3E,EAAa,GAC1B,OAAKr3E,EACDA,EAAKryB,QAAuB,EAAb0pG,EAAuB,OACnCr3E,EAAK1T,MAAM,EAAG+qF,GAAc,OAASr3E,EAAK1T,OAAO+qF,GAFtCpwG,KAAKhB,GAAG,mBAG5B,EACA,aAAAovG,CAAcrP,GACZ,OAAKA,GAA8B,kBAAZA,GAAwD,IAAhC1vF,OAAOC,KAAKyvF,GAASr4F,OAC3D1G,KAAKhB,GAAG,oBAEM,kBAAZ+/F,EACFA,EAEF5oE,KAAKC,UAAU2oE,EAAS,KAAM,EACvC,EACA,aAAAsR,CAActR,GACZ,OAAKA,EACkB,kBAAZA,EAA6BA,EACjC5oE,KAAKC,UAAU2oE,EAAS,KAAM,GAFhB,EAGvB,EACA,gBAAAuR,CAAiBv3E,GACf,IAAKA,IAASA,EAAKv1B,OAAQ,MAAO,CAAC,EACnC,IACE,MAAMylC,EAAS9S,KAAK+S,MAAMnQ,GAC1B,OAAKkQ,GAA4B,kBAAXA,GAAuBljC,MAAMkQ,QAAQgzB,GAClD,KAEFA,CACT,CAAE,MAAO2hC,GACP,OAAO,IACT,CACF,EAEA,gBAAAmhC,CAAiBzsG,EAAMZ,GACrBsB,KAAKkuG,mBAAqB5uG,EAC1BU,KAAKuvG,oBAAsB7wG,EAC3BsB,KAAK6tG,eAAiB7tG,KAAKqqG,eAAe/qG,GAAMZ,GAChDsB,KAAK4tG,kBAAmB,CAC1B,EAEA,cAAA5B,CAAe1sG,EAAMZ,GACnBsB,KAAKkuG,mBAAqB5uG,EAC1BU,KAAKuvG,oBAAsB7wG,EAC3B,MAAMiR,EAAU3P,KAAKqqG,eAAe/qG,GAAMZ,GAC1CsB,KAAK2uG,YAAcx4E,KAAK+S,MAAM/S,KAAKC,UAAUzmB,IAChC,WAATrQ,IACFU,KAAK2uG,YAAYnB,YAAcxtG,KAAKqwG,cAAcrwG,KAAK2uG,YAAY5P,SACnE/+F,KAAK2uG,YAAYhB,iBAAuD,IAArC3tG,KAAK2uG,YAAYhB,iBAGjD3tG,KAAK2uG,YAAYhD,QACpB3rG,KAAK2uG,YAAYhD,MAAQ,CACvB9wC,SAAS,EACTsyC,QAAS,GACTC,UAAW,KAGfptG,KAAK0uG,gBAAiB,CACxB,EAEA,kBAAAX,GACE/tG,KAAK4tG,kBAAmB,EACxB5tG,KAAKgsG,eAAehsG,KAAKkuG,mBAAoBluG,KAAKuvG,oBACpD,EAEA,YAAApD,GACEnsG,KAAKosG,WAAa,CAChB9sG,KAAM,GACNF,KAAM,GACNy7D,SAAS,EACTowC,SAAU,GACVC,OAAQ,GACR2B,SAAU,GACVxB,SAAU,GACVD,WAAY,GACZ2B,OAAQ,OACRC,YAAa,GACbC,gBAAiB,GACjBC,WAAW,EACXvB,MAAO,CACL9wC,SAAS,EACTsyC,QAAS,GACTC,UAAW,IAEb9B,UAAW,GACXC,SAAS,EACTC,KAAM,GACN6B,MAAO,GACP5B,WAAW,EACXC,QAAS,GACT4B,SAAU,GACVC,SAAU,GACVpC,UAAW,GACXqC,YAAa,GACbG,iBAAiB,EAErB,EAEA,eAAAG,GACE9tG,KAAK6tG,eAAiB,IACxB,EAEA,aAAAe,GACE5uG,KAAK2uG,YAAc,CAAC,CACtB,EAEA,mBAAAlC,GAEE,MAAM,KACJntG,EAAI,KACJF,GACEY,KAAKosG,WACTpsG,KAAKosG,WAAa,CAChB9sG,OACAF,OACAy7D,SAAS,EACTowC,SAAU,GACVC,OAAQ,GACR2B,SAAU,GACVxB,SAAU,GACVyB,UAAW,GACX1B,WAAY,GACZ2B,OAAQ,OACRC,YAAa,GACbC,gBAAiB,GACjBC,WAAW,EACXvB,MAAO,CACL9wC,SAAS,EACTsyC,QAAS,GACTC,UAAW,IAEb9B,UAAW,GACXC,SAAS,EACTC,KAAM,GACN6B,MAAO,GACP5B,WAAW,EACXC,QAAS,GACT4B,SAAU,GACVC,SAAU,GACVpC,UAAW,GACXqC,YAAa,GACbG,iBAAiB,EAErB,EAEA,iBAAAtB,GACErsG,KAAKU,MAAM6vG,QAAQC,SAAS5sF,IAC1B,IAAKA,EAAO,OACZ,MAAM,KACJtkB,EAAI,KACJF,GACEY,KAAKosG,WACHhM,EAAWpgG,KAAKuqG,YAAYjrG,GAG5BmxG,EAAgB,CAAC,eAAgB,SAAU,SAAU,cAAe,kBAAmB,cAC7F,GAAIA,EAAc74E,SAASx4B,GAEzB,YADAY,KAAKgnG,SAASC,QAAQjnG,KAAKhB,GAAG,2BAKhC,MAAM0xG,EAActQ,EAASuD,SAASr6B,KAAKqjC,GAAMA,EAAGvtG,OAASA,GAC7D,GAAIsxG,EAEF,YADA1wG,KAAKgnG,SAASC,QAAQjnG,KAAKhB,GAAG,4BAGhC,IAAI2xG,EAAiB,CACnBv+F,GAAIguF,EAASuD,SAASj9F,OAAS,EAC/BtH,KAAMY,KAAKosG,WAAWhtG,KACtBE,KAAMA,EACNsxG,SAAU,WACV/1C,SAAS,EACT6vC,OAAO,GAIT,GAAa,aAATprG,EACF+P,OAAO8T,OAAOwtF,EAAgB,CAC5B1F,SAAUjrG,KAAKosG,WAAWnB,SAC1BC,OAAQlrG,KAAKosG,WAAWlB,OACxB2B,SAAU7sG,KAAKosG,WAAWS,gBAEvB,GAAa,OAATvtG,EACT+P,OAAO8T,OAAOwtF,EAAgB,CAC5BtF,SAAUrrG,KAAKosG,WAAWf,SAC1ByB,UAAW9sG,KAAKosG,WAAWU,UAC3B1B,WAAYprG,KAAKosG,WAAWhB,WAC5B2B,OAAQ/sG,KAAKosG,WAAWW,OACxBC,YAAahtG,KAAKosG,WAAWY,YAC7BC,gBAAiBjtG,KAAKosG,WAAWa,gBACjCC,UAAWltG,KAAKosG,WAAWc,UAC3BvB,MAAO,IACF3rG,KAAKosG,WAAWT,cAGlB,GAAa,YAATrsG,EACT+P,OAAO8T,OAAOwtF,EAAgB,CAC5B1F,SAAUjrG,KAAKosG,WAAWnB,SAC1BK,UAAWtrG,KAAKosG,WAAWd,UAC3BuB,SAAU7sG,KAAKosG,WAAWS,SAC1BtB,QAASvrG,KAAKosG,WAAWb,eAEtB,GAAa,gBAATjsG,EACT+P,OAAO8T,OAAOwtF,EAAgB,CAC5BnF,KAAMxrG,KAAKosG,WAAWZ,KACtB6B,MAAOrtG,KAAKosG,WAAWiB,MACvB5B,UAAWzrG,KAAKosG,WAAWX,iBAExB,GAAa,WAATnsG,EAAmB,CAC5B,MAAMy/F,EAAU/+F,KAAKswG,iBAAiBtwG,KAAKosG,WAAWoB,aACtD,GAAgB,OAAZzO,EAEF,YADA/+F,KAAKgnG,SAASC,QAAQjnG,KAAKhB,GAAG,mCAGhCqQ,OAAO8T,OAAOwtF,EAAgB,CAC5BjF,QAAS1rG,KAAKosG,WAAWV,QACzB4B,SAAUttG,KAAKosG,WAAWkB,SAC1BC,SAAUvtG,KAAKosG,WAAWmB,SAC1BpC,UAAWnrG,KAAKosG,WAAWjB,UAC3BpM,UACA4O,iBAAqD,IAApC3tG,KAAKosG,WAAWuB,gBACjChC,MAAO,IACF3rG,KAAKosG,WAAWT,QAGzB,CACAvL,EAASuD,SAASt7E,KAAKsoF,GACvB3wG,KAAKmqG,eAAgB,EAErBnqG,KAAKyqG,gBAET,EAEA,kBAAAoE,GACE7uG,KAAKU,MAAMmwG,SAASL,SAAS5sF,IAC3B,IAAKA,EAAO,OACZ,MAAMw8E,EAAWpgG,KAAKuqG,YAAYvqG,KAAKkuG,oBACjC4C,EAAe9wG,KAAKuvG,oBACpBwB,EAAe3Q,EAASuD,SAASmN,IAAe1xG,MAAQY,KAAK2uG,YAAYvvG,KACzE4xG,EAAgB,IACjBhxG,KAAK2uG,YACRvvG,KAAM2xG,GAER,GAAgC,WAA5B/wG,KAAKkuG,mBAAiC,CACxC,MAAMnP,EAAU/+F,KAAKswG,iBAAiBU,EAAcxD,aACpD,GAAgB,OAAZzO,EAEF,YADA/+F,KAAKgnG,SAASC,QAAQjnG,KAAKhB,GAAG,mCAGhCgyG,EAAcjS,QAAUA,EACxBiS,EAAcrD,iBAAoD,IAAlCqD,EAAcrD,uBACvCqD,EAAcxD,WACvB,CACApN,EAASuD,SAAS3jG,KAAKuvG,qBAAuByB,EAC9ChxG,KAAK0uG,gBAAiB,EAEtB1uG,KAAKyqG,gBAET,EAEA,aAAAwB,CAAc3sG,EAAMZ,GAClB,MAAMiR,EAAU3P,KAAKqqG,eAAe/qG,GAAMZ,GACtCiR,EAAQ+6F,MACV1qG,KAAKgnG,SAASC,QAAQjnG,KAAKhB,GAAG,uCAGhCgB,KAAKwnG,SAASxnG,KAAKhB,GAAG,kCAAmCgB,KAAKhB,GAAG,kBAAmB,CAClFyoG,kBAAmBznG,KAAKhB,GAAG,kBAC3B0oG,iBAAkB1nG,KAAKhB,GAAG,iBAC1BM,KAAM,YACLy5C,KAAK,KACN,MAAMqnD,EAAWpgG,KAAKuqG,YAAYjrG,GAClC8gG,EAASuD,SAASh1E,OAAOjwB,EAAO,GAEhC0hG,EAASuD,SAASv1E,QAAQ,CAAC5vB,EAAMqX,KAC/BrX,EAAK4T,GAAKyD,EAAI,IAGhB7V,KAAKyqG,iBACJwG,MAAM,OACX,EACA,YAAAxG,GAEE,MAAMrK,EAAW,CACf0P,SAAU9vG,KAAKivG,iBACfc,KAAM/vG,KAAKkvG,aACXc,GAAIhwG,KAAKmvG,WACTc,QAASjwG,KAAKovG,gBACdc,YAAalwG,KAAKqvG,oBAClBc,OAAQnwG,KAAKsvG,iBAEf,EAAAvS,GAAA,GAAc,+BAAgC,CAC5C1uE,OAAQ,OACR0wE,QAAS,CACP,eAAgB,oBAElBva,KAAMruD,KAAKC,UAAUgqE,KACpBrnD,KAAK,KACN/4C,KAAKgnG,SAAS7J,QAAQn9F,KAAKhB,GAAG,6BAElC,EAEA,kBAAMsvG,GACJtuG,KAAKuuG,cAAe,EACpB,IAEE,MAAM/R,QAAiB,EAAAO,GAAA,GAAc,oBAAqB,CACxD1uE,OAAQ,SAEJ3uB,QAAa88F,EAASU,OAC5B,GAAIx9F,EAAKy9F,QACPn9F,KAAKwvG,WAAa9vG,EAAK6P,cAAgB,CAAC,MACnC,CAEL,MAAM2hG,QAAoB,EAAAnU,GAAA,GAAc,qBAClCoU,QAAgBD,EAAYhU,OAC9BiU,EAAQhU,UACVn9F,KAAKwvG,WAAa2B,EAAQ3B,YAAc,CAAC,EAE7C,CACF,CAAE,MAAO5kC,GACPxmC,QAAQwmC,MAAM,iCAAkCA,EAClD,CAAE,QACA5qE,KAAKuuG,cAAe,CACtB,CACF,EAEA,oBAAM6C,GACJ,IACE,MAAM5U,QAAiB,EAAAO,GAAA,GAAc,qBAC/Br9F,QAAa88F,EAASU,OACxBx9F,EAAKy9F,UACPn9F,KAAKwvG,WAAa9vG,EAAK8vG,YAAc,CAAC,EAE1C,CAAE,MAAO5kC,GACPxmC,QAAQwmC,MAAM,8BAA+BA,EAC/C,CACF,EAEA,gBAAAymC,CAAiB1hG,GACf,MAAM00F,EAAQrkG,KAAKwvG,WAAW7/F,EAAQvQ,MACtC,OAAKilG,GACGA,EAAMiN,QAAU,GAAK,KADV,CAErB,EAEA,kBAAA1F,CAAmBj8F,GACjB,MAAM4hG,EAASvxG,KAAKqxG,iBAAiB1hG,GAC/Bw9F,EAAUx9F,EAAQg8F,OAAOwB,SAAW,GACpC18F,EAAa8gG,EAASpE,EAAU,IACtC,OAAO78F,KAAK8C,IAAI,IAAK9C,KAAKC,MAAmB,GAAbE,GAAmB,GACrD,EAEA,cAAAo7F,CAAel8F,GACb,MAAMc,EAAazQ,KAAK4rG,mBAAmBj8F,GACrCy9F,EAAYz9F,EAAQg8F,OAAOyB,WAAa,GAC9C,OAAI38F,GAAc28F,EAAkB,YAChC38F,GAAc,GAAW,UACtB,SACT,EAEA,YAAAq7F,CAAan8F,GACX,MAAM4hG,EAASvxG,KAAKqxG,iBAAiB1hG,GAC/Bw9F,EAAUx9F,EAAQg8F,OAAOwB,SAAW,GAC1C,MAAO,GAAGoE,EAAO5L,QAAQ,QAAQwH,MACnC,EAEA,eAAAqB,CAAgB7+F,GACd,MAAMc,EAAazQ,KAAK4rG,mBAAmBj8F,GACrCy9F,EAAYz9F,EAAQg8F,OAAOyB,WAAa,GAC9C,OAAO38F,GAAc28F,CACvB,EAEA,kBAAAqB,CAAmB9+F,GACjB,MAAMc,EAAazQ,KAAK4rG,mBAAmBj8F,GACrCy9F,EAAYz9F,EAAQg8F,OAAOyB,WAAa,GAC9C,OAAI38F,GAAc28F,EACT,eAAeA,cAEpB38F,GAAc,GACT,gBAEF,QACT,EAEA,0BAAMs+F,CAAqBl0C,EAASlrD,GAClC,GAAIkrD,GAAWlrD,EAAQvQ,KAAM,CAE3B,MAAMilG,EAAQrkG,KAAKwvG,WAAW7/F,EAAQvQ,MACjCilG,GAEHrkG,KAAKwnG,SAASxnG,KAAKhB,GAAG,8BAA+BgB,KAAKhB,GAAG,4BAA6B,CACxFyoG,kBAAmBznG,KAAKhB,GAAG,iCAC3B0oG,iBAAkB1nG,KAAKhB,GAAG,gCAC1BM,KAAM,SACLy5C,KAAKy4D,gBACAxxG,KAAKyxG,qBACVR,MAAM,KACPjxG,KAAKgnG,SAASxiE,KAAKxkC,KAAKhB,GAAG,8BAGjC,CACF,EAEA,sBAAMyyG,GACJzxG,KAAKuuG,cAAe,EACpB,IACEvuG,KAAKgnG,SAASxiE,KAAKxkC,KAAKhB,GAAG,+BAC3B,MAAMw9F,QAAiB,EAAAO,GAAA,GAAc,oBAAqB,CACxD1uE,OAAQ,SAEJ3uB,QAAa88F,EAASU,OACxBx9F,EAAKy9F,SACPn9F,KAAKwvG,WAAa9vG,EAAK6P,cAAgB,CAAC,EACxCvP,KAAKgnG,SAAS7J,QAAQn9F,KAAKhB,GAAG,qCAE9BgB,KAAKgnG,SAASp8B,MAAM5qE,KAAKhB,GAAG,kCAAoCU,EAAKkrE,OAAS,IAElF,CAAE,MAAOA,GACPxmC,QAAQwmC,MAAM,+BAAgCA,GAC9C5qE,KAAKgnG,SAASp8B,MAAM5qE,KAAKhB,GAAG,kCAC9B,CAAE,QACAgB,KAAKuuG,cAAe,CACtB,CACF,GAEF,OAAAhtG,GACEvB,KAAKqR,SAAU,GAEf,EAAA0rF,GAAA,GAAc,gCAAgChkD,KAAKyjD,GAAYA,EAASU,QAAQnkD,KAAKr5C,IACnFM,KAAKivG,iBAAmBvvG,EAAKowG,SAEzBpwG,EAAKqwG,MAAQrwG,EAAKqwG,KAAKpM,WACzBjkG,EAAKqwG,KAAKpM,SAAWjkG,EAAKqwG,KAAKpM,SAASztF,IAAIvG,IAAW,IAClDA,EACHg8F,MAAOh8F,EAAQg8F,OAAS,CACtB9wC,SAAS,EACTsyC,QAAS,GACTC,UAAW,QAIjBptG,KAAKkvG,aAAexvG,EAAKqwG,KAErBrwG,EAAKswG,IAAMtwG,EAAKswG,GAAGrM,WACrBjkG,EAAKswG,GAAGrM,SAAWjkG,EAAKswG,GAAGrM,SAASztF,IAAIvG,IAAW,IAC9CA,EACHg8F,MAAOh8F,EAAQg8F,OAAS,CACtB9wC,SAAS,EACTsyC,QAAS,GACTC,UAAW,QAIjBptG,KAAKmvG,WAAazvG,EAAKswG,GAEnBtwG,EAAKuwG,SAAWvwG,EAAKuwG,QAAQtM,WAC/BjkG,EAAKuwG,QAAQtM,SAAWjkG,EAAKuwG,QAAQtM,SAASztF,IAAIvG,IAAW,IACxDA,EACHk9F,SAAUl9F,EAAQk9F,UAAY,OAGlC7sG,KAAKovG,gBAAkB1vG,EAAKuwG,SAAW,CACrCzF,YAAa,CAAC,EACd7G,SAAU,IAGRjkG,EAAKwwG,aAAexwG,EAAKwwG,YAAYvM,WACvCjkG,EAAKwwG,YAAYvM,SAAWjkG,EAAKwwG,YAAYvM,SAASztF,IAAIvG,IAAW,IAChEA,EACH87F,UAAW97F,EAAQ87F,YAAa,MAGpCzrG,KAAKqvG,oBAAsB3vG,EAAKwwG,aAAe,CAC7C1F,YAAa,CAAC,EACd7G,SAAU,IAGRjkG,EAAKywG,QAAUzwG,EAAKywG,OAAOxM,WAC7BjkG,EAAKywG,OAAOxM,SAAWjkG,EAAKywG,OAAOxM,SAASztF,IAAIvG,IAAW,IACtDA,EACH29F,SAAU39F,EAAQ29F,UAAY,GAC9BC,SAAU59F,EAAQ49F,UAAY,GAC9BpC,UAAWx7F,EAAQw7F,WAAa,GAChCpM,QAASpvF,EAAQovF,SAAW,CAAC,EAC7B4O,iBAA6C,IAA5Bh+F,EAAQg+F,gBACzBhC,MAAOh8F,EAAQg8F,OAAS,CACtB9wC,SAAS,EACTsyC,QAAS,GACTC,UAAW,QAIjBptG,KAAKsvG,eAAiB5vG,EAAKywG,QAAU,CACnC3F,YAAa,CAAC,EACd7G,SAAU,IAGZ3jG,KAAKoxG,mBACJM,QAAQ,KACT1xG,KAAKqR,SAAU,GAEnB,GCj1BF,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,qBCRA,MAAM,GAAa,CAAC,cACd,GAAa,CACjB7T,MAAO,aAEF,SAAS,GAAOI,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMC,GAA+B,QAAkB,qBACvD,OAAO,WAAc,QAAa,KAAa,CAC7CkB,KAAM,WACL,CACDI,SAAS,QAAS,IAAM,EAAC,SAAgB,QAAoB,MAAO,CAClEhC,OAAO,QAAgB,CAAC,oBAAqB,CAC3C,aAAcM,EAAOuT,WAEvBzS,QAASf,EAAO,KAAOA,EAAO,GAAK,IAAIqB,IAASjB,EAAS0zG,aAAe1zG,EAAS0zG,eAAezyG,KAC/F,CAACpB,EAAO8zG,QAAS,WAAc,QAAoB,OAAQ,CAC5DnzG,IAAK,EACLjB,MAAO,cACPs9F,KAAM,MACN,aAAcl9F,EAAKoB,GAAG,yBACrB,KAAM,EAAG,MAAe,QAAoB,IAAI,GAAOlB,EAAOuT,UAAW,WAAc,QAAanT,EAA8B,CACnIO,IAAK,EACLM,KAAM,UACN8yG,KAAM,QACD,WAAc,QAAa3zG,EAA8B,CAC9DO,IAAK,EACLM,KAAM,WACH,QAAoB,OAAQ,IAAY,QAAiBjB,EAAOuT,QAAUzT,EAAKoB,GAAG,uBAAyBpB,EAAKoB,GAAG,sBAAuB,IAAK,GAAI,CAAC,CAAC,KAAQhB,EAAMu3B,aACxKjzB,EAAG,GAEP,CC9BA,QACElD,KAAM,qBACN4G,MAAO,CAAC,SACR3G,MAAO,CACLuyG,MAAO,CACLtyG,KAAMG,QACND,SAAS,GAEX6R,QAAS,CACP/R,KAAMG,QACND,SAAS,GAEX61B,KAAM,CACJ/1B,KAAMG,QACND,SAAS,IAGb,IAAAE,GACE,MAAO,CACL61B,SAAS,EACTu8E,gBAAiB,KAErB,EACA5xG,MAAO,CACLm1B,KAAM,CACJzuB,WAAW,EACX,OAAAC,CAAQ2d,GACNgL,aAAaxvB,KAAK8xG,iBACdttF,EAEFxkB,KAAK8xG,gBAAkBriF,WAAW,KAChCzvB,KAAKu1B,SAAU,GACd,KAEHv1B,KAAKu1B,SAAU,CAEnB,IAGJ,aAAA0wE,GACEz2E,aAAaxvB,KAAK8xG,gBACpB,EACAzxG,QAAS,CACP,WAAAsxG,GACO3xG,KAAKqR,SACRrR,KAAKM,MAAM,QAEf,ICxCJ,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,sCCRA,MAAM,GAAa,CACjB9C,MAAO,qBAEH,GAAa,CACjBA,MAAO,kBAEH,GAAa,CACjBA,MAAO,eAEH,GAAa,CACjBA,MAAO,gBAEH,GAAa,CACjBa,MAAO,CACL,QAAW,OACX,IAAO,MACP,MAAS,SAGP,GAAa,CACjBb,MAAO,gBAEH,GAAa,CACjBa,MAAO,CACL,QAAW,OACX,IAAO,MACP,MAAS,SAGP,GAAa,CACjBb,MAAO,4BAEH,GAAa,CACjBA,MAAO,iBAEH,GAAc,CAClBA,MAAO,yBAEH,GAAc,CAClBA,MAAO,sBAEH,GAAc,CAClBA,MAAO,sBAEH,GAAc,CAClBA,MAAO,iBAEH,GAAc,CAClBA,MAAO,sBAEH,GAAc,CAClBA,MAAO,sBAEH,GAAc,CAClBA,MAAO,sBAEH,GAAc,CAClBA,MAAO,sBAEH,GAAc,CAClBA,MAAO,qCAEH,GAAc,CAClBA,MAAO,kBAEH,GAAc,CAClBA,MAAO,eAEH,GAAc,CAClBA,MAAO,gBAEH,GAAc,CAClBA,MAAO,gBAEH,GAAc,CAClBA,MAAO,oBAEH,GAAc,CAClBA,MAAO,oBAEH,GAAc,CAClBA,MAAO,kBAEH,GAAc,CAClBA,MAAO,eAEH,GAAc,CAClBA,MAAO,gBAEH,GAAc,CAClBA,MAAO,gBAEH,GAAc,CAClBA,MAAO,gBAEH,GAAc,CAClBA,MAAO,gBAEH,GAAc,CAClBA,MAAO,kBAEH,GAAc,CAClBA,MAAO,kBAEH,GAAc,CAClBa,MAAO,CACL,QAAW,OACX,IAAO,OACP,MAAS,SAGP,GAAc,CAClBb,MAAO,iBAEH,GAAc,CAClBa,MAAO,CACL,QAAW,OACX,IAAO,OACP,MAAS,SAGP,GAAc,CAClBb,MAAO,iBAEH,GAAc,CAClBA,MAAO,gBAEH,GAAc,CAClBa,MAAO,CACL,gBAAiB,OACjB,MAAS,YAGP,GAAc,CAClBb,MAAO,iBAEF,SAAS,GAAOI,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAM2rG,EAAsB,MACtBmI,EAAyB,MACzBpI,EAA0B,MAC1BG,EAAqB,MACrB5rG,GAA+B,QAAkB,qBACjDwO,EAAuB,KACvBslG,EAA6B,MAC7BzI,EAAoB,KACpB0I,EAAsB,MACtBpwG,EAAwB,KACxB2nG,EAAuB,MACvBC,EAAuB,MACvBC,EAAuB,MACvBG,EAA6B,MAC7BqI,EAAgC,GAChCC,EAA+B,MAC/BrlG,EAAuB,KACvBK,EAAqB,IAC3B,OAAO,UAAiB,WAAc,QAAoB,MAAO,GAAY,EAAC,QAAoB,MAAO,GAAY,EAAC,QAAoB,KAAM,IAAY,QAAiBvP,EAAKoB,GAAG,+BAAgC,IAAI,QAAoB,KAAM,IAAY,QAAiBpB,EAAKoB,GAAG,yBAA0B,IAAI,QAAa8qG,EAAoB,CACrVwC,MAAOtuG,EAAMo0G,aAAaC,KAC1BpwG,SAAUjE,EAAMs0G,OAChB/F,MAAOtuG,EAASs0G,cAChBn0G,IAAK,eACL,cAAe,SACd,CACDoB,SAAS,QAAS,IAAM,EAAC,QAAamqG,EAAyB,CAC7Dh7F,MAAO/Q,EAAKoB,GAAG,8BACf8kC,KAAM,YACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAoB,MAAO,GAAY,EAAC,QAAaoqG,EAAqB,CACjG9jG,WAAY9H,EAAMo0G,aAAaC,KAAKG,SACpC,sBAAuB30G,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAMo0G,aAAaC,KAAKG,SAAW3zG,GAC9FS,KAAM,WACN,gBAAiB,GACjBmzG,QAASx0G,EAASy0G,oBAClBC,aAAc,eACd3J,YAAahrG,EAAMo0G,aAAaC,KAAKO,aAAeh1G,EAAKoB,GAAG,iCAAmC,GAC/FiD,SAAUjE,EAAM60G,mBACf,KAAM,EAAG,CAAC,aAAc,UAAW,cAAe,aAAc70G,EAAMo0G,aAAaC,KAAKO,eAAgB,WAAc,QAAab,EAAwB,CAC5JtzG,IAAK,EACLqH,WAAY9H,EAAM60G,kBAClB,sBAAuBh1G,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAM60G,kBAAoBh0G,GACrFyE,SAAUrF,EAAS60G,yBAClB,CACDtzG,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB5B,EAAKoB,GAAG,8BAA+B,KAClGsD,EAAG,GACF,EAAG,CAAC,aAAc,eAAgB,QAAoB,IAAI,OAC7DA,EAAG,GACF,EAAG,CAAC,WAAW,QAAa,KAAa,CAC1ClD,KAAM,aACNw8B,KAAM,UACL,CACDp8B,SAAS,QAAS,IAAM,CAACxB,EAAM+0G,sBAAuB,WAAc,QAAapJ,EAAyB,CACxGh7F,MAAO/Q,EAAKoB,GAAG,+BACf8kC,KAAM,yBACNrlC,IAAK,gBACJ,CACDe,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMo0G,aAAaC,KAAKW,uBACpC,sBAAuBn1G,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAMo0G,aAAaC,KAAKW,uBAAyBn0G,GAC5GS,KAAM,WACN,gBAAiB,GACjBqzG,aAAc,gBACb,KAAM,EAAG,CAAC,iBACbrwG,EAAG,GACF,EAAG,CAAC,YAAa,QAAoB,IAAI,KAC5CA,EAAG,MAELA,EAAG,GACF,EAAG,CAAC,QAAS,WAAY,WAAW,QAAoB,KAAM,IAAY,QAAiB1E,EAAKoB,GAAG,0BAA2B,IAAI,QAAa8qG,EAAoB,CACpKwC,MAAOtuG,EAAMo0G,aAAaa,MAC1BhxG,SAAUjE,EAAMs0G,OAChB/F,MAAOtuG,EAASi1G,eAChB90G,IAAK,gBACL,cAAe,SACd,CACDoB,SAAS,QAAS,IAAM,EAAC,QAAamqG,EAAyB,CAC7Dh7F,MAAO/Q,EAAKoB,GAAG,6BACf8kC,KAAM,iBACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMo0G,aAAaa,MAAME,cACrC,sBAAuBt1G,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAMo0G,aAAaa,MAAME,cAAgBt0G,GACpG8zG,aAAc,eACd1wG,SAAUjE,EAAMo1G,oBACf,KAAM,EAAG,CAAC,aAAc,eAC3B9wG,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,6BACf8kC,KAAM,iBACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAoB,MAAO,GAAY,EAAC,QAAaoqG,EAAqB,CACjG9jG,WAAY9H,EAAMo0G,aAAaa,MAAMI,cACrC,sBAAuBx1G,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAMo0G,aAAaa,MAAMI,cAAgBx0G,GACpGS,KAAM,WACN,gBAAiB,GACjBmzG,QAASx0G,EAASq1G,qBAClBX,aAAc,eACd3J,YAAahrG,EAAMo0G,aAAaa,MAAML,aAAeh1G,EAAKoB,GAAG,iCAAmC,GAChGiD,SAAUjE,EAAMo1G,oBACf,KAAM,EAAG,CAAC,aAAc,UAAW,cAAe,aAAcp1G,EAAMo0G,aAAaa,MAAML,eAAgB,WAAc,QAAab,EAAwB,CAC7JtzG,IAAK,EACLqH,WAAY9H,EAAMo1G,mBAClB,sBAAuBv1G,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAMo1G,mBAAqBv0G,GACtFyE,SAAUrF,EAASs1G,0BAClB,CACD/zG,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB5B,EAAKoB,GAAG,8BAA+B,KAClGsD,EAAG,GACF,EAAG,CAAC,aAAc,eAAgB,QAAoB,IAAI,OAC7DA,EAAG,GACF,EAAG,CAAC,WAAW,QAAa,KAAa,CAC1ClD,KAAM,aACNw8B,KAAM,UACL,CACDp8B,SAAS,QAAS,IAAM,CAACxB,EAAMw1G,uBAAwB,WAAc,QAAa7J,EAAyB,CACzGh7F,MAAO/Q,EAAKoB,GAAG,+BACf8kC,KAAM,0BACNrlC,IAAK,iBACJ,CACDe,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMo0G,aAAaa,MAAMQ,wBACrC,sBAAuB51G,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAMo0G,aAAaa,MAAMQ,wBAA0B50G,GAC9GS,KAAM,WACN,gBAAiB,GACjBqzG,aAAc,gBACb,KAAM,EAAG,CAAC,iBACbrwG,EAAG,GACF,EAAG,CAAC,YAAa,QAAoB,IAAI,KAC5CA,EAAG,MAELA,EAAG,GACF,EAAG,CAAC,QAAS,WAAY,WAAW,QAAoB,KAAM,GAAY,EAAC,SAAiB,QAAiB1E,EAAKoB,GAAG,mCAAqC,IAAK,IAAI,QAAoB,IAAK,GAAY,EAAC,QAAa0N,EAAsB,CAC7OpN,KAAM,UACNoP,KAAM,QACN9P,QAASf,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAM01G,uBAAwB,GAC3EnlG,OAAQ,IACP,CACD/O,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,WAERuD,EAAG,SACG,QAAoB,MAAO,GAAa,EAAC,UAAiB,WAAc,QAAa2vG,EAAqB,CAChHvyG,KAAM1B,EAAM21G,UACZn2G,MAAO,eACN,CACDgC,SAAS,QAAS,IAAM,EAAC,QAAawyG,EAA4B,CAChEluE,KAAM,OACNn1B,MAAO/Q,EAAKoB,GAAG,yBACf,eAAgB,UACf,CACDQ,SAAS,QAAS66B,GAAS,EAAC,QAAoB,MAAO,IAAa,QAAiBA,EAAM0mD,IAAI3hF,MAAO,KACtGkD,EAAG,GACF,EAAG,CAAC,WAAW,QAAa0vG,EAA4B,CACzDluE,KAAM,QACNn1B,MAAO/Q,EAAKoB,GAAG,0BACf,eAAgB,UACf,CACDQ,SAAS,QAAS66B,GAAS,EAAC,QAAoB,MAAO,GAAa,EAAC,QAAoB,OAAQ,IAAa,QAAiBA,EAAM0mD,IAAIssB,OAAQ,OACjJ/qG,EAAG,GACF,EAAG,CAAC,WAAW,QAAa0vG,EAA4B,CACzDluE,KAAM,cACNn1B,MAAO/Q,EAAKoB,GAAG,2BACf,eAAgB,UACf,CACDQ,SAAS,QAAS66B,GAAS,EAAC,QAAoB,MAAO,GAAa,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYA,EAAM0mD,IAAI6yB,YAAaC,KACvJ,WAAc,QAAatK,EAAmB,CACnD9qG,IAAKo1G,EACLnlG,KAAM,QACNlR,MAAO,kBACN,CACDgC,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBvB,EAAS61G,kBAAkBD,IAAQ,KAC9FvxG,EAAG,GACF,QACD,UACJA,EAAG,GACF,EAAG,CAAC,WAAW,QAAa0vG,EAA4B,CACzDluE,KAAM,YACNn1B,MAAO/Q,EAAKoB,GAAG,yBACf,eAAgB,UACf,CACDQ,SAAS,QAAS66B,GAAS,EAAC,QAAoB,MAAO,IAAa,QAAiBp8B,EAAS81G,WAAW15E,EAAM0mD,IAAIizB,YAAa,KAChI1xG,EAAG,GACF,EAAG,CAAC,WAAW,QAAa0vG,EAA4B,CACzDrjG,MAAO/Q,EAAKoB,GAAG,sBACf,eAAgB,SAChBiB,MAAO,MACN,CACDT,SAAS,QAAS66B,GAAS,EAAC,QAAoB,MAAO,GAAa,EAAC,QAAakvE,EAAmB,CACnGjqG,KAA8D,WAAxDrB,EAASg2G,eAAe55E,EAAM0mD,IAAImzB,WAAWhkG,OAAsB,UAAY,SACrFxB,KAAM,SACL,CACDlP,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBvB,EAASg2G,eAAe55E,EAAM0mD,IAAImzB,WAAWvlG,OAAQ,KAChHrM,EAAG,GACF,KAAM,CAAC,aACVA,EAAG,GACF,EAAG,CAAC,WAAW,QAAa0vG,EAA4B,CACzDrjG,MAAO/Q,EAAKoB,GAAG,yBACf,eAAgB,UACf,CACDQ,SAAS,QAAS66B,GAAS,EAAC,QAAoB,MAAO,IAAa,QAAiBp8B,EAASg2G,eAAe55E,EAAM0mD,IAAImzB,WAAWC,aAAc,KAChJ7xG,EAAG,GACF,EAAG,CAAC,WAAW,QAAa0vG,EAA4B,CACzDrjG,MAAO/Q,EAAKoB,GAAG,yBACf0rG,MAAO,QACP,eAAgB,UACf,CACDlrG,SAAS,QAAS66B,GAAS,EAAC,QAAoB,MAAO,GAAa,EAAC,QAAa3tB,EAAsB,CACtGlP,MAAO,gBACPkR,KAAM,QACN9P,QAASC,GAAUZ,EAASm2G,UAAU/5E,EAAM0mD,MAC3C,CACDvhF,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB5B,EAAKoB,GAAG,wBAAyB,KAC5FsD,EAAG,GACF,EAAG,CAAC,aAAa,QAAaoK,EAAsB,CACrDlP,MAAO,gBACPkR,KAAM,QACNpP,KAAM,SACNV,QAASC,GAAUZ,EAASo2G,YAAYh6E,EAAM0mD,IAAI3uE,KACjD,CACD5S,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB5B,EAAKoB,GAAG,0BAA2B,KAC9FsD,EAAG,GACF,EAAG,CAAC,gBACPA,EAAG,GACF,EAAG,CAAC,YACPA,EAAG,GACF,EAAG,CAAC,UAAW,CAAC,CAAC6K,EAAoBnP,EAAMs2G,qBAAqB,QAAoB,MAAO,GAAa,EAAC,QAAoB,KAAM,IAAa,QAAiB12G,EAAKoB,GAAG,iCAAkC,IAAI,QAAoB,KAAM,GAAa,EAAC,SAAiB,QAAiBpB,EAAKoB,GAAG,4BAA8B,IAAK,IAAI,QAAa6C,EAAuB,CAC7WM,QAASvE,EAAKoB,GAAG,kCACjBoD,UAAW,OACV,CACD5C,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,kBACNV,MAAO,CACL,cAAe,MACf,OAAU,eAGdiE,EAAG,GACF,EAAG,CAAC,eAAe,QAAawnG,EAAoB,CACrDwC,MAAOtuG,EAAMu2G,eAAeC,SAC5B,cAAe,QACfvyG,SAAUjE,EAAMs0G,QACf,CACD9yG,SAAS,QAAS,IAAM,EAAC,QAAamqG,EAAyB,CAC7Dh7F,MAAO/Q,EAAKoB,GAAG,6BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAagqG,EAAsB,CAC1D1jG,WAAY9H,EAAMu2G,eAAeC,SAAS35C,QAC1C,sBAAuBh9D,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAMu2G,eAAeC,SAAS35C,QAAUh8D,IAClG,KAAM,EAAG,CAAC,iBACbyD,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,8BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAakqG,EAAsB,CAC1D5jG,WAAY9H,EAAMu2G,eAAeC,SAAS7kG,QAC1C,sBAAuB9R,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAMu2G,eAAeC,SAAS7kG,QAAU9Q,GACnGmqG,YAAaprG,EAAKoB,GAAG,yCACpB,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaiqG,EAAsB,CAC1D96F,MAAO,sBACP7J,MAAO,yBACL,QAAa2kG,EAAsB,CACrC96F,MAAO,SACP7J,MAAO,aAETxC,EAAG,GACF,EAAG,CAAC,aAAc,kBACrBA,EAAG,GACF,EAAG,CAAC,UAAqD,wBAA1CtE,EAAMu2G,eAAeC,SAAS7kG,UAAqC,WAAc,QAAag6F,EAAyB,CACvIlrG,IAAK,EACLkQ,MAAO/Q,EAAKoB,GAAG,uBACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMu2G,eAAeC,SAASC,sBAC1C,sBAAuB52G,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMu2G,eAAeC,SAASC,sBAAwB51G,IAClH,KAAM,EAAG,CAAC,iBACbyD,EAAG,GACF,EAAG,CAAC,YAAa,QAAoB,IAAI,GAAiD,WAA1CtE,EAAMu2G,eAAeC,SAAS7kG,UAAwB,WAAc,QAAag6F,EAAyB,CAC3JlrG,IAAK,EACLkQ,MAAO/Q,EAAKoB,GAAG,wBACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMu2G,eAAeC,SAASE,YAC1C,sBAAuB72G,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMu2G,eAAeC,SAASE,YAAc71G,GACzGmqG,YAAa,8BACZ,KAAM,EAAG,CAAC,iBACb1mG,EAAG,GACF,EAAG,CAAC,YAAa,QAAoB,IAAI,KAC5CA,EAAG,GACF,EAAG,CAAC,QAAS,cAAc,QAAoB,KAAM,GAAa,EAAC,SAAiB,QAAiB1E,EAAKoB,GAAG,wBAA0B,IAAK,IAAI,QAAa6C,EAAuB,CACrLM,QAASvE,EAAKoB,GAAG,8BACjBoD,UAAW,OACV,CACD5C,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,kBACNV,MAAO,CACL,cAAe,MACf,OAAU,eAGdiE,EAAG,GACF,EAAG,CAAC,eAAe,QAAawnG,EAAoB,CACrDwC,MAAOtuG,EAAMu2G,eAAeI,QAC5B,cAAe,QACf1yG,SAAUjE,EAAMs0G,QACf,CACD9yG,SAAS,QAAS,IAAM,EAAC,QAAamqG,EAAyB,CAC7Dh7F,MAAO/Q,EAAKoB,GAAG,8BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAagqG,EAAsB,CAC1D1jG,WAAY9H,EAAMu2G,eAAeI,QAAQ95C,QACzC,sBAAuBh9D,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMu2G,eAAeI,QAAQ95C,QAAUh8D,IACnG,KAAM,EAAG,CAAC,iBACbyD,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,+BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAakqG,EAAsB,CAC1D5jG,WAAY9H,EAAMu2G,eAAeI,QAAQhlG,QACzC,sBAAuB9R,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMu2G,eAAeI,QAAQhlG,QAAU9Q,GACpGmqG,YAAaprG,EAAKoB,GAAG,0CACpB,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaiqG,EAAsB,CAC1D96F,MAAO/Q,EAAKoB,GAAG,yBACf8F,MAAO,aACN,KAAM,EAAG,CAAC,YACbxC,EAAG,GACF,EAAG,CAAC,aAAc,kBACrBA,EAAG,GACF,EAAG,CAAC,UAAoD,cAAzCtE,EAAMu2G,eAAeI,QAAQhlG,UAA2B,WAAc,QAAoB,KAAW,CACrHlR,IAAK,GACJ,EAAC,QAAakrG,EAAyB,CACxCh7F,MAAO/Q,EAAKoB,GAAG,wBACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMu2G,eAAeI,QAAQC,UAAUjU,IACnD,sBAAuB9iG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMu2G,eAAeI,QAAQC,UAAUjU,IAAM9hG,GAC1GmqG,YAAa,8BACZ,KAAM,EAAG,CAAC,iBACb1mG,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,4BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAoB,MAAO,GAAa,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYxB,EAAMu2G,eAAeI,QAAQC,UAAUzhD,OAAQ,CAACmmC,EAAO56F,MACpL,WAAc,QAAoB,MAAO,CAC9CD,IAAKC,EACLlB,MAAO,mBACN,EAAC,QAAaosG,EAAqB,CACpC9jG,WAAYwzF,EAAM76F,IAClB,sBAAuBI,GAAUy6F,EAAM76F,IAAMI,EAC7CmqG,YAAaprG,EAAKoB,GAAG,qCACpB,KAAM,EAAG,CAAC,aAAc,sBAAuB,iBAAiB,QAAa4qG,EAAqB,CACnG9jG,WAAYwzF,EAAMx0F,MAClB,sBAAuBjG,GAAUy6F,EAAMx0F,MAAQjG,EAC/CmqG,YAAaprG,EAAKoB,GAAG,sCACpB,KAAM,EAAG,CAAC,aAAc,sBAAuB,iBAAiB,QAAa0N,EAAsB,CACpGpN,KAAM,SACNwR,MAAO,GACPvC,OAAQ,GACR3P,QAASC,GAAUZ,EAAS42G,mBAAmBn2G,GAC/CuD,SAAUjE,EAAMu2G,eAAeI,QAAQC,UAAUzhD,OAAOzsD,QAAU,GACjE,CACDlH,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,gBAERuD,EAAG,GACF,EAAG,CAAC,UAAW,iBAChB,OAAO,QAAaoK,EAAsB,CAC5CpN,KAAM,UACNwR,MAAO,GACPlS,QAASX,EAAS62G,iBACjB,CACDt1G,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,UACJ,QAAoB,OAAQ,MAAM,QAAiBnB,EAAKoB,GAAG,8BAA+B,KAC9FsD,EAAG,GACF,EAAG,CAAC,gBACPA,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,KAAM,CAC5Dh7F,OAAO,QAAS,IAAM,EAAC,SAAiB,QAAiB/Q,EAAKoB,GAAG,+BAAiC,IAAK,IAAI,QAAa6C,EAAuB,CAC7IM,QAASvE,EAAKoB,GAAG,iCACjBoD,UAAW,OACV,CACD5C,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,kBACNV,MAAO,CACL,cAAe,MACf,OAAU,eAGdiE,EAAG,GACF,EAAG,CAAC,cACP9C,SAAS,QAAS,IAAM,EAAC,QAAoB,MAAO,GAAa,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYxB,EAAMu2G,eAAeI,QAAQC,UAAUG,eAAgB,CAACzgE,EAAO51C,MAC5L,WAAc,QAAoB,MAAO,CAC9CD,IAAKC,EACLlB,MAAO,sBACN,EAAC,QAAaosG,EAAqB,CACpC9jG,WAAY9H,EAAMu2G,eAAeI,QAAQC,UAAUG,eAAer2G,GAClE,sBAAuBG,GAAUb,EAAMu2G,eAAeI,QAAQC,UAAUG,eAAer2G,GAASG,EAChGmqG,YAAaprG,EAAKoB,GAAG,6CACpB,KAAM,EAAG,CAAC,aAAc,sBAAuB,iBAAiB,QAAa0N,EAAsB,CACpGoE,MAAO,GACPvC,OAAQ,GACR3P,QAASC,GAAUZ,EAAS+2G,yBAAyBt2G,GAAQ,GAC7DuD,SAAoB,IAAVvD,GACT,CACDc,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,eAERuD,EAAG,GACF,EAAG,CAAC,UAAW,cAAc,QAAaoK,EAAsB,CACjEoE,MAAO,GACPvC,OAAQ,GACR3P,QAASC,GAAUZ,EAAS+2G,yBAAyBt2G,EAAO,GAC5DuD,SAAUvD,IAAUV,EAAMu2G,eAAeI,QAAQC,UAAUG,eAAeruG,OAAS,GAClF,CACDlH,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,iBAERuD,EAAG,GACF,EAAG,CAAC,UAAW,cAAc,QAAaoK,EAAsB,CACjEpN,KAAM,SACNwR,MAAO,GACPvC,OAAQ,GACR3P,QAASC,GAAUZ,EAASg3G,2BAA2Bv2G,IACtD,CACDc,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,gBAERuD,EAAG,GACF,EAAG,CAAC,gBACL,OAAO,QAAaoK,EAAsB,CAC5CpN,KAAM,UACNwR,MAAO,GACPlS,QAASX,EAASi3G,yBACjB,CACD11G,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,UACJ,QAAoB,OAAQ,MAAM,QAAiBnB,EAAKoB,GAAG,iCAAkC,KACjGsD,EAAG,GACF,EAAG,CAAC,gBACPA,EAAG,KACA,MAAO,QAAoB,IAAI,KACpCA,EAAG,GACF,EAAG,CAAC,QAAS,gBAAgB,QAAoB,MAAO,GAAa,EAAC,QAAoB,KAAM,IAAa,QAAiB1E,EAAKoB,GAAG,iCAAkC,IAAI,QAAoB,KAAM,IAAa,QAAiBpB,EAAKoB,GAAG,6BAA8B,IAAI,QAAa8qG,EAAoB,CAChTwC,MAAOtuG,EAAMm3G,eACb,cAAe,QACflzG,SAAUjE,EAAMs0G,QACf,CACD9yG,SAAS,QAAS,IAAM,EAAC,QAAamqG,EAAyB,KAAM,CACnEh7F,OAAO,QAAS,IAAM,EAAC,SAAiB,QAAiB/Q,EAAKoB,GAAG,+BAAiC,IAAK,IAAI,QAAa6C,EAAuB,CAC7IM,QAASvE,EAAKoB,GAAG,qCACjBoD,UAAW,MACX,cAAe,IACd,CACD5C,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,kBACNV,MAAO,CACL,cAAe,MACf,OAAU,eAGdiE,EAAG,GACF,EAAG,CAAC,cACP9C,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMm3G,eAAeC,eACjC,sBAAuBv3G,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMm3G,eAAeC,eAAiBv2G,IAClG,KAAM,EAAG,CAAC,iBACbyD,EAAG,MAELA,EAAG,GACF,EAAG,CAAC,QAAS,cAAc,QAAoB,KAAM,IAAa,QAAiB1E,EAAKoB,GAAG,8BAA+B,IAAI,QAAa8qG,EAAoB,CAChKwC,MAAOtuG,EAAMm3G,eACb5I,MAAOtuG,EAASo3G,YAChBj3G,IAAK,aACL,cAAe,QACf6D,SAAUjE,EAAMs0G,QACf,CACD9yG,SAAS,QAAS,IAAM,EAAC,QAAamqG,EAAyB,KAAM,CACnEh7F,OAAO,QAAS,IAAM,EAAC,SAAiB,QAAiB/Q,EAAKoB,GAAG,gCAAkC,IAAK,IAAI,QAAa6C,EAAuB,CAC9IM,QAASvE,EAAKoB,GAAG,sCACjBoD,UAAW,MACX,cAAe,IACd,CACD5C,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,kBACNV,MAAO,CACL,cAAe,MACf,OAAU,eAGdiE,EAAG,GACF,EAAG,CAAC,cACP9C,SAAS,QAAS,IAAM,EAAC,QAAagqG,EAAsB,CAC1D1jG,WAAY9H,EAAMm3G,eAAeG,cACjC,sBAAuBz3G,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMm3G,eAAeG,cAAgBz2G,IACjG,KAAM,EAAG,CAAC,iBACbyD,EAAG,MAELA,EAAG,GACF,EAAG,CAAC,QAAS,QAAS,cAAc,QAAoB,KAAM,IAAa,QAAiB1E,EAAKoB,GAAG,+BAAgC,IAAI,QAAa8qG,EAAoB,CAC1KwC,MAAOtuG,EAAMm3G,eACb5I,MAAOtuG,EAASo3G,YAChBj3G,IAAK,qBACL,cAAe,QACf6D,SAAUjE,EAAMs0G,QACf,CACD9yG,SAAS,QAAS,IAAM,EAAC,QAAamqG,EAAyB,KAAM,CACnEh7F,OAAO,QAAS,IAAM,EAAC,SAAiB,QAAiB/Q,EAAKoB,GAAG,qCAAuC,IAAK,IAAI,QAAa6C,EAAuB,CACnJM,QAASvE,EAAKoB,GAAG,2CACjBoD,UAAW,MACX,cAAe,IACd,CACD5C,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,kBACNV,MAAO,CACL,cAAe,MACf,OAAU,eAGdiE,EAAG,GACF,EAAG,CAAC,cACP9C,SAAS,QAAS,IAAM,EAAC,QAAagqG,EAAsB,CAC1D1jG,WAAY9H,EAAMm3G,eAAeI,sBACjC,sBAAuB13G,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMm3G,eAAeI,sBAAwB12G,IACzG,KAAM,EAAG,CAAC,iBACbyD,EAAG,IACDtE,EAAMm3G,eAAeI,wBAAyB,WAAc,QAAa5L,EAAyB,CACpGlrG,IAAK,EACLqlC,KAAM,8BACL,CACDn1B,OAAO,QAAS,IAAM,EAAC,SAAiB,QAAiB/Q,EAAKoB,GAAG,2CAA6C,IAAK,IAAI,QAAa6C,EAAuB,CACzJM,QAASvE,EAAKoB,GAAG,8CACjBoD,UAAW,MACX,cAAe,IACd,CACD5C,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,kBACNV,MAAO,CACL,cAAe,MACf,OAAU,eAGdiE,EAAG,GACF,EAAG,CAAC,cACP9C,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMm3G,eAAeK,2BACjC,sBAAuB33G,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMm3G,eAAeK,2BAA6B32G,GAC/GmqG,YAAaprG,EAAKoB,GAAG,sDACpB,KAAM,EAAG,CAAC,aAAc,kBAC3BsD,EAAG,MACC,QAAoB,IAAI,KAC9BA,EAAG,GACF,EAAG,CAAC,QAAS,QAAS,cAAc,QAAoB,KAAM,IAAa,QAAiB1E,EAAKoB,GAAG,sCAAuC,IAAI,QAAa8qG,EAAoB,CACjLwC,MAAOtuG,EAAMm3G,eACb,cAAe,QACflzG,SAAUjE,EAAMs0G,QACf,CACD9yG,SAAS,QAAS,IAAM,EAAC,QAAamqG,EAAyB,KAAM,CACnEh7F,OAAO,QAAS,IAAM,EAAC,SAAiB,QAAiB/Q,EAAKoB,GAAG,2BAA6B,IAAK,IAAI,QAAa6C,EAAuB,CACzIM,QAASvE,EAAKoB,GAAG,iCACjBoD,UAAW,OACV,CACD5C,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,kBACNV,MAAO,CACL,cAAe,MACf,OAAU,eAGdiE,EAAG,GACF,EAAG,CAAC,cACP9C,SAAS,QAAS,IAAM,EAAC,QAAagqG,EAAsB,CAC1D1jG,WAAY9H,EAAMm3G,eAAeM,cACjC,sBAAuB53G,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMm3G,eAAeM,cAAgB52G,IACjG,KAAM,EAAG,CAAC,iBACbyD,EAAG,KACD,QAAaqnG,EAAyB,CACxCh7F,MAAO/Q,EAAKoB,GAAG,iCACf8kC,KAAM,qBACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAaqqG,EAA4B,CAChE/jG,WAAY9H,EAAMm3G,eAAeO,kBACjC,sBAAuB73G,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMm3G,eAAeO,kBAAoB72G,GACtGuU,IAAK,EACLD,IAAK,KACLixD,KAAM,EACN2oB,UAAW,EACX,oBAAqB,SACpB,KAAM,EAAG,CAAC,gBAAgB,QAAoB,OAAQ,IAAa,QAAiBnvF,EAAKoB,GAAG,kCAAmC,KAClIsD,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,kCACf8kC,KAAM,sBACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAaqqG,EAA4B,CAChE/jG,WAAY9H,EAAMm3G,eAAeQ,mBACjC,sBAAuB93G,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMm3G,eAAeQ,mBAAqB92G,GACvGuU,IAAK,EACLD,IAAK,KACLixD,KAAM,EACN2oB,UAAW,EACX,oBAAqB,SACpB,KAAM,EAAG,CAAC,gBAAgB,QAAoB,OAAQ,IAAa,QAAiBnvF,EAAKoB,GAAG,kCAAmC,KAClIsD,EAAG,GACF,EAAG,CAAC,YACPA,EAAG,GACF,EAAG,CAAC,QAAS,gBAAgB,QAAa4vG,EAA+B,CAC1E78E,MAAOr3B,EAAMqT,QACbA,QAASrT,EAAMs0G,OACfV,MAAOh0G,EAAKg4G,kBACZh3G,QAASX,EAASwsG,cACjB,KAAM,EAAG,CAAC,OAAQ,UAAW,QAAS,aAAa,QAAa39F,EAAsB,CACvFhH,WAAY9H,EAAM01G,sBAClB,sBAAuB71G,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM01G,sBAAwB70G,GAC3FgQ,MAAOjR,EAAKoB,GAAG,gCACfiB,MAAOhC,EAAS43G,aACf,CACDpxB,QAAQ,QAAS,IAAM,EAAC,QAAoB,OAAQ,GAAa,EAAC,QAAa/3E,EAAsB,CACnG9N,QAASf,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM01G,uBAAwB,IAC5E,CACDl0G,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB5B,EAAKoB,GAAG,kBAAmB,KACtFsD,EAAG,KACD,QAAaoK,EAAsB,CACrCpN,KAAM,UACNV,QAASX,EAAS63G,aACjB,CACDt2G,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB5B,EAAKoB,GAAG,0BAA2B,KAC9FsD,EAAG,GACF,EAAG,CAAC,gBACP9C,SAAS,QAAS,IAAM,EAAC,QAAasqG,EAAoB,CACxDwC,MAAOtuG,EAAM+3G,SACbxJ,MAAOtuG,EAAS+3G,WAChB53G,IAAK,YACL,cAAe,SACd,CACDoB,SAAS,QAAS,IAAM,EAAC,QAAamqG,EAAyB,CAC7Dh7F,MAAO/Q,EAAKoB,GAAG,8BACf8kC,KAAM,QACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAM+3G,SAAS32G,KAC3B,sBAAuBvB,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM+3G,SAAS32G,KAAOP,GACnFmqG,YAAaprG,EAAKoB,GAAG,qCACpB,KAAM,EAAG,CAAC,aAAc,kBAC3BsD,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,gCACf8kC,KAAM,eACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAa2yG,EAA8B,CAClErsG,WAAY9H,EAAM+3G,SAASnC,YAC3B,sBAAuB/1G,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM+3G,SAASnC,YAAc/0G,IACzF,CACDW,SAAS,QAAS,IAAM,EAAC,QAAauyG,EAAwB,CAC5DpjG,MAAO,UACN,CACDnP,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB5B,EAAKoB,GAAG,2BAA4B,KAC/FsD,EAAG,KACD,QAAayvG,EAAwB,CACvCpjG,MAAO,UACN,CACDnP,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB5B,EAAKoB,GAAG,2BAA4B,KAC/FsD,EAAG,KACD,QAAayvG,EAAwB,CACvCpjG,MAAO,QACN,CACDnP,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB5B,EAAKoB,GAAG,yBAA0B,KAC7FsD,EAAG,KACD,QAAayvG,EAAwB,CACvCpjG,MAAO,UACN,CACDnP,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB5B,EAAKoB,GAAG,2BAA4B,KAC/FsD,EAAG,MAELA,EAAG,GACF,EAAG,CAAC,iBACPA,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,4BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAagqG,EAAsB,CAC1D1jG,WAAY9H,EAAM+3G,SAASE,YAC3B,sBAAuBp4G,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM+3G,SAASE,YAAcp3G,GAC1FyE,SAAUrF,EAASi4G,2BAClB,KAAM,EAAG,CAAC,aAAc,eAC3B5zG,EAAG,GACF,EAAG,CAAC,UAAYtE,EAAM+3G,SAASE,aA+Bd,QAAoB,IAAI,KA/BK,WAAc,QAAatM,EAAyB,CACnGlrG,IAAK,EACLkQ,MAAO/Q,EAAKoB,GAAG,2BACf8kC,KAAM,mBACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAoB,MAAO,GAAa,EAAC,QAAaqqG,EAA4B,CACzG/jG,WAAY9H,EAAM+3G,SAASI,gBAC3B,sBAAuBt4G,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM+3G,SAASI,gBAAkBt3G,GAC9FuU,IAAK,EACLgxD,KAAM,EACN,oBAAqB,QACrB/lE,MAAO,CACL,KAAQ,MAET,KAAM,EAAG,CAAC,gBAAgB,QAAaqrG,EAAsB,CAC9D5jG,WAAY9H,EAAM+3G,SAASK,eAC3B,sBAAuBv4G,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM+3G,SAASK,eAAiBv3G,GAC7FR,MAAO,CACL,MAAS,UAEV,CACDmB,SAAS,QAAS,IAAM,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYxB,EAAMq4G,gBAAiBlN,KAC3G,WAAc,QAAaM,EAAsB,CACtDhrG,IAAK0qG,EAAIrkG,MACT6J,MAAO/Q,EAAKoB,GAAGmqG,EAAImN,UACnBxxG,MAAOqkG,EAAIrkG,OACV,KAAM,EAAG,CAAC,QAAS,YACpB,QACJxC,EAAG,GACF,EAAG,CAAC,mBACPA,EAAG,GACF,EAAG,CAAC,WAA6CtE,EAAM+3G,SAASE,aAS/C,QAAoB,IAAI,KATsC,WAAc,QAAatM,EAAyB,CACpIlrG,IAAK,EACLkQ,MAAO/Q,EAAKoB,GAAG,mCACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAagqG,EAAsB,CAC1D1jG,WAAY9H,EAAM+3G,SAASQ,WAC3B,sBAAuB14G,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM+3G,SAASQ,WAAa13G,IACxF,KAAM,EAAG,CAAC,iBACbyD,EAAG,GACF,EAAG,CAAC,aACPA,EAAG,GACF,EAAG,CAAC,QAAS,YAChBA,EAAG,GACF,EAAG,CAAC,aAAc,QAAS,WAAW,QAAawK,EAAsB,CAC1EhH,WAAY9H,EAAMw4G,oBAClB,sBAAuB34G,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMw4G,oBAAsB33G,GACzFgQ,MAAOjR,EAAKoB,GAAG,8BACfiB,MAAOhC,EAAS43G,aACf,CACDpxB,QAAQ,QAAS,IAAM,EAAC,QAAoB,OAAQ,GAAa,EAAC,QAAa/3E,EAAsB,CACnG9N,QAASf,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMw4G,qBAAsB,IAC1E,CACDh3G,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB5B,EAAKoB,GAAG,kBAAmB,KACtFsD,EAAG,KACD,QAAaoK,EAAsB,CACrCpN,KAAM,UACNV,QAASX,EAASw4G,aACjB,CACDj3G,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB5B,EAAKoB,GAAG,0BAA2B,KAC9FsD,EAAG,GACF,EAAG,CAAC,gBACP9C,SAAS,QAAS,IAAM,EAAC,QAAasqG,EAAoB,CACxDwC,MAAOtuG,EAAM04G,aACbnK,MAAOtuG,EAAS04G,eAChBv4G,IAAK,gBACL,cAAe,SACd,CACDoB,SAAS,QAAS,IAAM,EAAC,QAAamqG,EAAyB,CAC7Dh7F,MAAO/Q,EAAKoB,GAAG,+BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAM04G,aAAat3G,KAC/B,sBAAuBvB,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM04G,aAAat3G,KAAOP,GACvFoD,SAAU,IACT,KAAM,EAAG,CAAC,iBACbK,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,gCACf8kC,KAAM,eACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAa2yG,EAA8B,CAClErsG,WAAY9H,EAAM04G,aAAa9C,YAC/B,sBAAuB/1G,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM04G,aAAa9C,YAAc/0G,IAC7F,CACDW,SAAS,QAAS,IAAM,EAAC,QAAauyG,EAAwB,CAC5DpjG,MAAO,UACN,CACDnP,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB5B,EAAKoB,GAAG,2BAA4B,KAC/FsD,EAAG,KACD,QAAayvG,EAAwB,CACvCpjG,MAAO,UACN,CACDnP,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB5B,EAAKoB,GAAG,2BAA4B,KAC/FsD,EAAG,KACD,QAAayvG,EAAwB,CACvCpjG,MAAO,QACN,CACDnP,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB5B,EAAKoB,GAAG,yBAA0B,KAC7FsD,EAAG,KACD,QAAayvG,EAAwB,CACvCpjG,MAAO,UACN,CACDnP,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB5B,EAAKoB,GAAG,2BAA4B,KAC/FsD,EAAG,MAELA,EAAG,GACF,EAAG,CAAC,iBACPA,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,4BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAagqG,EAAsB,CAC1D1jG,WAAY9H,EAAM04G,aAAaT,YAC/B,sBAAuBp4G,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM04G,aAAaT,YAAcp3G,GAC9FyE,SAAUrF,EAAS24G,yBAClB,KAAM,EAAG,CAAC,aAAc,eAC3Bt0G,EAAG,GACF,EAAG,CAAC,UAAYtE,EAAM04G,aAAaT,aA+BlB,QAAoB,IAAI,KA/BS,WAAc,QAAatM,EAAyB,CACvGlrG,IAAK,EACLkQ,MAAO/Q,EAAKoB,GAAG,2BACf8kC,KAAM,mBACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAoB,MAAO,GAAa,EAAC,QAAaqqG,EAA4B,CACzG/jG,WAAY9H,EAAM04G,aAAaP,gBAC/B,sBAAuBt4G,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM04G,aAAaP,gBAAkBt3G,GAClGuU,IAAK,EACLgxD,KAAM,EACN,oBAAqB,QACrB/lE,MAAO,CACL,KAAQ,MAET,KAAM,EAAG,CAAC,gBAAgB,QAAaqrG,EAAsB,CAC9D5jG,WAAY9H,EAAM04G,aAAaN,eAC/B,sBAAuBv4G,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM04G,aAAaN,eAAiBv3G,GACjGR,MAAO,CACL,MAAS,UAEV,CACDmB,SAAS,QAAS,IAAM,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYxB,EAAMq4G,gBAAiBlN,KAC3G,WAAc,QAAaM,EAAsB,CACtDhrG,IAAK0qG,EAAIrkG,MACT6J,MAAO/Q,EAAKoB,GAAGmqG,EAAImN,UACnBxxG,MAAOqkG,EAAIrkG,OACV,KAAM,EAAG,CAAC,QAAS,YACpB,QACJxC,EAAG,GACF,EAAG,CAAC,mBACPA,EAAG,GACF,EAAG,CAAC,WAA6CtE,EAAM04G,aAAaT,aASnD,QAAoB,IAAI,KAT0C,WAAc,QAAatM,EAAyB,CACxIlrG,IAAK,EACLkQ,MAAO/Q,EAAKoB,GAAG,mCACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAagqG,EAAsB,CAC1D1jG,WAAY9H,EAAM04G,aAAaH,WAC/B,sBAAuB14G,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM04G,aAAaH,WAAa13G,IAC5F,KAAM,EAAG,CAAC,iBACbyD,EAAG,GACF,EAAG,CAAC,aACPA,EAAG,GACF,EAAG,CAAC,QAAS,YAChBA,EAAG,GACF,EAAG,CAAC,aAAc,QAAS,WAAW,QAAawK,EAAsB,CAC1EhH,WAAY9H,EAAM64G,sBAClB,sBAAuBh5G,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM64G,sBAAwBh4G,GAC3FgQ,MAAOjR,EAAKoB,GAAG,iCACfiB,MAAOhC,EAAS43G,aACf,CACDpxB,QAAQ,QAAS,IAAM,EAAC,QAAoB,OAAQ,GAAa,EAAC,QAAa/3E,EAAsB,CACnGpN,KAAM,UACNV,QAASf,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM64G,uBAAwB,IAC5E,CACDr3G,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB5B,EAAKoB,GAAG,yBAA0B,KAC7FsD,EAAG,QAEL9C,SAAS,QAAS,IAAM,EAAC,QAAoB,MAAO,GAAa,EAAC,QAAoB,IAAK,GAAa,EAAC,QAAatB,EAA8B,CAClJa,KAAM,uBACNV,MAAO,CACL,eAAgB,UAEhB,QAAiB,KAAM,QAAiBT,EAAKoB,GAAG,oCAAqC,MAAM,QAAa8qG,EAAoB,CAC9H,cAAe,SACd,CACDtqG,SAAS,QAAS,IAAM,EAAC,QAAamqG,EAAyB,CAC7Dh7F,MAAO/Q,EAAKoB,GAAG,+BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAoB,OAAQ,MAAM,QAAiBxB,EAAM84G,aAAa13G,MAAO,KACtGkD,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,0BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAM84G,aAAazJ,MAC/B,sBAAuBxvG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAM84G,aAAazJ,MAAQxuG,GACxFsvG,SAAU,IACT,CACD4I,QAAQ,QAAS,IAAM,EAAC,QAAarqG,EAAsB,CACzD9N,QAASX,EAAS+4G,WACjB,CACDx3G,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB5B,EAAKoB,GAAG,wBAAyB,KAC5FsD,EAAG,GACF,EAAG,CAAC,cACPA,EAAG,GACF,EAAG,CAAC,iBACPA,EAAG,GACF,EAAG,CAAC,YACPA,EAAG,QAELA,EAAG,GACF,EAAG,CAAC,aAAc,QAAS,aAAc,CAAC,CAAC6K,EAAoBnP,EAAMqT,UAC1E,C,SCngCA,MAAM4lG,GAAiB,CACrB3hG,EAAG,IACHkB,EAAG,IACHtD,EAAG,KACHiB,EAAG,OAWE,SAAS+iG,GAAiBC,EAAUryG,EAAOqoF,GAChD,IAAK3nF,OAAOggB,SAAS1gB,IAAUA,GAAS,EACtC,MAAM,IAAIijC,MAAM,eAGlB,MAAMzZ,EAA2B,kBAAb6oF,EAAwB,IAAIzxG,KAAKyxG,GAAY,IAAIzxG,KAAKyxG,EAASxwG,WAEnF,GAAIswG,GAAe9pB,GACjB,OAAO,IAAIznF,KAAK4oB,EAAK3nB,UAAY7B,EAAQmyG,GAAe9pB,IAAOx/E,cAGjE,GAAa,MAATw/E,EAEF,OADA7+D,EAAK8oF,YAAY9oF,EAAK+oF,cAAgBvyG,GAC/BwpB,EAAK3gB,cAGd,GAAa,MAATw/E,EAEF,OADA7+D,EAAKgpF,eAAehpF,EAAKipF,iBAAmBzyG,GACrCwpB,EAAK3gB,cAGd,MAAM,IAAIo6B,MAAM,YAAYolD,IAC9B,CAQA,SAASqqB,GAAkBC,GACzB,MAAMxyG,EAAO,IAAIS,KAAK+xG,GAChBlyG,EAAON,EAAKC,cACZO,EAAQlG,OAAO0F,EAAKE,WAAa,GAAGJ,SAAS,EAAG,KAChDX,EAAM7E,OAAO0F,EAAKG,WAAWL,SAAS,EAAG,KACzCo/F,EAAQ5kG,OAAO0F,EAAKy+F,YAAY3+F,SAAS,EAAG,KAC5Cq/F,EAAU7kG,OAAO0F,EAAKyyG,cAAc3yG,SAAS,EAAG,KAChD8gG,EAAUtmG,OAAO0F,EAAK0yG,cAAc5yG,SAAS,EAAG,KACtD,MAAO,GAAGQ,KAAQE,KAASrB,KAAO+/F,KAASC,KAAWyB,GACxD,CAQO,SAASoO,GAAeC,EAAW3+D,EAAM,IAAI7vC,MAClD,GAAkB,OAAdwuG,QAAoC/+F,IAAd++F,EACxB,MAAO,CACLhkG,OAAQ,SACRvB,MAAO,KACPwlG,YAAa,QAIjB,MAAMyD,EAAc,IAAIlyG,KAAKwuG,GACvBxmG,EAAc6nC,aAAe7vC,KAAO6vC,EAAM,IAAI7vC,KAAK6vC,GACnDsiE,EAAgBL,GAAkBtD,GAExC,OAAIxmG,EAAY/G,UAAYixG,EAAYjxG,UAC/B,CACLuJ,OAAQ,UACRvB,MAAO,MACPwlG,YAAa0D,GAIV,CACL3nG,OAAQ,SACRvB,MAAO,KACPwlG,YAAa0D,EAEjB,CChGO,SAASC,GAAiB1X,GAC7B,OAAOjqE,KAAKC,UAAUgqE,EAAU,CAAC2X,EAAMjzG,IAC/BA,GAA0B,kBAAVA,IAAuBiB,MAAMkQ,QAAQnR,GAC9CuK,OAAO2yF,YAAY3yF,OAAOC,KAAKxK,GAAOylB,OAAOrU,IAAIzX,GAAO,CAACA,EAAKqG,EAAMrG,MAExEqG,EAEf,CAEA,QACIpF,IAAAA,GACI,MAAO,CAAEs4G,sBAAuB,KACpC,EACAp4G,SAAU,CACNg2G,iBAAAA,GACI,OAAsC,OAA/B51G,KAAKg4G,uBACLF,GAAiB93G,KAAKi4G,oBAAsBj4G,KAAKg4G,qBAC5D,GAEJ33G,QAAS,CACL63G,iBAAAA,CAAkB9X,EAAWpgG,KAAKi4G,kBAC9Bj4G,KAAKg4G,sBAAwBF,GAAiB1X,EAClD,ICbR,IACE+X,OAAQ,CAACC,IACT7V,WAAY,CACV8V,mBAAkB,IAEpB,IAAA34G,GACE,MAAO,CACL0yG,aAAc,CACZC,KAAM,CAAC,EACPY,MAAO,CAAC,GAEVsB,eAAgB,CACdC,SAAU,CAAC,EACXG,QAAS,CACP95C,SAAS,EACTlrD,QAAS,YACTilG,UAAW,CACTjU,IAAK,GACLxtC,OAAQ,CAAC,CACP10D,IAAK,KACLqG,MAAO,SAETiwG,eAAgB,MAItBI,eAAgB,CAAC,EACjBxB,UAAW,GAGXtiG,SAAS,EACTihG,QAAQ,EACRgC,cAAc,EAEdgE,gBAAiB,GAEjBC,iBAAkB,GAGlBxF,qBAAqB,EAErBS,sBAAsB,EAEtBX,mBAAmB,EAEnBO,oBAAoB,EAIpBM,uBAAuB,EACvB8C,qBAAqB,EACrBK,uBAAuB,EACvBR,gBAAiB,CAAC,CAChBC,SAAU,8BACVxxG,MAAO,KACN,CACDwxG,SAAU,8BACVxxG,MAAO,KACN,CACDwxG,SAAU,4BACVxxG,MAAO,KACN,CACDwxG,SAAU,2BACVxxG,MAAO,KACN,CACDwxG,SAAU,6BACVxxG,MAAO,KACN,CACDwxG,SAAU,4BACVxxG,MAAO,MAETixG,SAAU,CACR32G,KAAM,GACNo5G,MAAO,GACP5E,YAAa,GACbqC,aAAa,EACbE,gBAAiB,EACjBC,eAAgB,IAChBG,YAAY,GAEdG,aAAc,CACZtkG,GAAI,GACJhT,KAAM,GACNo5G,MAAO,GACP5E,YAAa,GACbqC,aAAa,EACbE,gBAAiB,EACjBC,eAAgB,IAChBG,YAAY,GAEdO,aAAc,CACZ13G,KAAM,GACNiuG,MAAO,IAGb,EACAztG,SAAU,CACR,gBAAAq4G,GACE,MAAO,CACLQ,KAAM,CACJpG,KAAM,CACJG,SAAUxyG,KAAKoyG,aAAaC,KAAKG,UAEnCS,MAAO,CACLE,cAAenzG,KAAKoyG,aAAaa,MAAME,cACvCE,cAAerzG,KAAKoyG,aAAaa,MAAMI,gBAG3CqF,OAAQ14G,KAAKu0G,eACboE,OAAQ34G,KAAKm1G,eACbtC,kBAAmB7yG,KAAK6yG,kBACxBO,mBAAoBpzG,KAAKozG,mBAE7B,EACA,WAAAyC,GACE,OAAO/1G,OAAOC,WAAa,IAAM,MAAQ,KAC3C,EACA,aAAAwyG,GACE,MAAO,CACLC,SAAU,CAAC,CACToG,UAAW,CAACC,EAAM/zG,EAAOmhB,KACvB,MAAM6yF,EAAmB,CAAC,IAAK,IAAK,IAAK,IAAK,KACxCC,EAAkBD,EAAiBxvC,KAAK0vC,GAAQl0G,GAASA,EAAM8yB,SAASohF,IAC1ED,EACF9yF,EAAS,IAAI8hB,MAAM/nC,KAAKhB,GAAG,qCAE3BinB,KAGJoyC,QAAS,SAEX26C,uBAAwB,CAAC,CACvB4F,UAAW,CAACC,EAAM/zG,EAAOmhB,KAClBnhB,EAEMA,IAAU9E,KAAKoyG,aAAaC,KAAKG,SAC1CvsF,EAAS,IAAI8hB,MAAM/nC,KAAKhB,GAAG,kCAE3BinB,IAJAA,EAAS,IAAI8hB,MAAM/nC,KAAKhB,GAAG,wCAO/Bq5D,QAAS,SAGf,EACA,cAAA66C,GACE,MAAO,CACLO,wBAAyB,CAAC,CACxBmF,UAAW,CAACC,EAAM/zG,EAAOmhB,KAClBnhB,EAEMA,IAAU9E,KAAKoyG,aAAaa,MAAMI,cAC3CptF,EAAS,IAAI8hB,MAAM/nC,KAAKhB,GAAG,kCAE3BinB,IAJAA,EAAS,IAAI8hB,MAAM/nC,KAAKhB,GAAG,uCAO/Bq5D,QAAS,SAGf,EACA,WAAAg9C,GACE,MAAM4D,EAAwB,CAACJ,EAAM/zG,EAAOmhB,MACrCzgB,OAAO0zG,UAAUp0G,IAAUA,EAAQ,GAAKA,EAAQ,KACnDmhB,EAAS,IAAI8hB,MAAM/nC,KAAKhB,GAAG,sCAE3BinB,KAGEkzF,EAAqC,CAACN,EAAM/zG,EAAOmhB,KACvD,IAAKjmB,KAAKm1G,eAAeI,wBAA0BzwG,IAAUA,EAAMtB,OAEjE,YADAyiB,IAGF,MAAMmzF,EAAQt0G,EAAMqjB,MAAM,KAAKjS,IAAIxH,GAAQA,EAAKlL,OAAO4e,eAAegmB,OAAO3oC,SACvEmkB,EAAQw1F,EAAMC,MAAM3qG,IACxB,MAAMpJ,EAAQoJ,EAAKpJ,MAAM,qCACzB,SAAKA,GAAsB,SAAbA,EAAM,IAA8B,SAAbA,EAAM,KACpCA,EAAM+f,MAAM,GAAGg0F,MAAMxzF,GAA2B,SAAdA,GAAwBrgB,OAAOqgB,IAAc,QAEnFjC,EAGHqC,IAFAA,EAAS,IAAI8hB,MAAM/nC,KAAKhB,GAAG,oDAK/B,MAAO,CACL02G,kBAAmB,CAAC,CAClBkD,UAAWK,EACX5gD,QAAS,WAEXs9C,mBAAoB,CAAC,CACnBiD,UAAWK,EACX5gD,QAAS,WAEXm9C,2BAA4B,CAAC,CAC3BoD,UAAWO,EACX9gD,QAAS,CAAC,OAAQ,YAGxB,EACA,UAAA29C,GACE,MAAO,CACL52G,KAAM,CAAC,CACLq4F,UAAU,EACV5mF,QAAS7Q,KAAKhB,GAAG,iCACjBq5D,QAAS,SAEXu7C,YAAa,CAAC,CACZnc,UAAU,EACV5mF,QAAS7Q,KAAKhB,GAAG,mCACjBq5D,QAAS,WAEX89C,gBAAiB,CAAC,CAChByC,UAAW,CAACC,EAAM/zG,EAAOmhB,KAClBjmB,KAAK+1G,SAASE,aAAiBnxG,KAASA,GAAS,GAGpDmhB,IAFAA,EAAS,IAAI8hB,MAAM/nC,KAAKhB,GAAG,sCAK/Bq5D,QAAS,SAGf,EACA,cAAAs+C,GACE,MAAO,CACL/C,YAAa,CAAC,CACZnc,UAAU,EACV5mF,QAAS7Q,KAAKhB,GAAG,mCACjBq5D,QAAS,WAEX89C,gBAAiB,CAAC,CAChByC,UAAW,CAACC,EAAM/zG,EAAOmhB,KAClBjmB,KAAK02G,aAAaT,aAAiBnxG,KAASA,GAAS,GAGxDmhB,IAFAA,EAAS,IAAI8hB,MAAM/nC,KAAKhB,GAAG,sCAK/Bq5D,QAAS,SAGf,GAEFh4D,QAAS,CACP,wBAAAi5G,CAAyBlZ,EAAW,CAAC,GACnC,MAAMuU,EAAUvU,EAASuU,SAAW,CAAC,EAC/BC,EAAYD,EAAQC,WAAa,CAAC,EAClCzhD,EAASptD,MAAMkQ,QAAQ2+F,EAAUzhD,SAAWyhD,EAAUzhD,OAAOzsD,OAAS,EAAIkuG,EAAUzhD,OAAOj9C,IAAIojF,IAAS,CAC5G76F,IAAK66F,GAAO76F,KAAO,GACnBqG,MAAOw0F,GAAOx0F,OAAS,MACnB,CAAC,CACLrG,IAAK,KACLqG,MAAO,SAEHiwG,EAAiBhvG,MAAMkQ,QAAQ2+F,EAAUG,gBAAkBH,EAAUG,eAAe7+F,IAAIo+B,GACvE,kBAAVA,EAA2BA,EAC/BA,GAAOykC,MAAQ,IACnB,GACL,MAAO,IACFqnB,EACHoU,SAAUpU,EAASoU,UAAY,CAAC,EAChCG,QAAS,CACP95C,QAAS85C,EAAQ95C,UAAW,EAC5BlrD,QAASglG,EAAQhlG,SAAW,YAC5BilG,UAAW,CACTjU,IAAKiU,EAAUjU,KAAO,GACtBxtC,SACA4hD,mBAIR,EACA,eAAAD,GACE90G,KAAKu0G,eAAeI,QAAQC,UAAUzhD,OAAO9qC,KAAK,CAChD5pB,IAAK,GACLqG,MAAO,IAEX,EACA,kBAAA+vG,CAAmBn2G,GACbsB,KAAKu0G,eAAeI,QAAQC,UAAUzhD,OAAOzsD,QAAU,GAC3D1G,KAAKu0G,eAAeI,QAAQC,UAAUzhD,OAAOxkC,OAAOjwB,EAAO,EAC7D,EACA,uBAAAw2G,GACEl1G,KAAKu0G,eAAeI,QAAQC,UAAUG,eAAe1sF,KAAK,GAC5D,EACA,0BAAA4sF,CAA2Bv2G,GACzBsB,KAAKu0G,eAAeI,QAAQC,UAAUG,eAAepmF,OAAOjwB,EAAO,EACrE,EACA,wBAAAs2G,CAAyBt2G,EAAOmyC,GAC9B,MAAM0oE,EAASv5G,KAAKu0G,eAAeI,QAAQC,UAAUG,eAC/CyE,EAAc96G,EAAQmyC,EAC5B,GAAI2oE,EAAc,GAAKA,GAAeD,EAAO7yG,OAAQ,OACrD,MAAO4tC,GAASilE,EAAO5qF,OAAOjwB,EAAO,GACrC66G,EAAO5qF,OAAO6qF,EAAa,EAAGllE,EAChC,EACA,mBAAAo+D,GACM1yG,KAAKoyG,aAAaC,KAAKG,WAAaxyG,KAAKs4G,gBAC3Ct4G,KAAK+yG,qBAAsB,EAE3B/yG,KAAK+yG,qBAAsB,CAE/B,EACA,oBAAAO,GACMtzG,KAAKoyG,aAAaa,MAAMI,gBAAkBrzG,KAAKu4G,iBACjDv4G,KAAKwzG,sBAAuB,EAE5BxzG,KAAKwzG,sBAAuB,CAEhC,EACA,uBAAAV,CAAwB2G,GAClBA,IACFz5G,KAAKoyG,aAAaC,KAAKG,SAAW,GAClCxyG,KAAK+yG,qBAAsB,EAE/B,EACA,wBAAAQ,CAAyBkG,GACnBA,IACFz5G,KAAKoyG,aAAaa,MAAMI,cAAgB,GACxCrzG,KAAKoyG,aAAaa,MAAME,cAAgB,GACxCnzG,KAAKwzG,sBAAuB,EAEhC,EAEA,iBAAAM,CAAkB4F,GAChB,MAAMC,EAAgB,CACpB,OAAU35G,KAAKhB,GAAG,0BAClB,OAAUgB,KAAKhB,GAAG,0BAClB,KAAQgB,KAAKhB,GAAG,wBAChB,OAAUgB,KAAKhB,GAAG,2BAEpB,OAAO26G,EAAcD,IAAeA,CACtC,EACA,UAAA3F,CAAW6F,GACT,OAAO,IAAIl0G,KAAKk0G,GAAY3rG,eAAe,QAC7C,EACA,mBAAM4rG,GACJ75G,KAAKs0G,cAAe,EACpB,IACE,MAAM9X,QAAiB,EAAAO,GAAA,GAAc,yBAC/Br9F,QAAa88F,EAASU,OAC5Bl9F,KAAK2zG,UAAYj0G,EAAKo6G,QAAU,EAClC,CAAE,MAAOlvC,GACP5qE,KAAKgnG,SAASp8B,MAAM5qE,KAAKhB,GAAG,+BAC9B,CAAE,QACAgB,KAAKs0G,cAAe,CACtB,CACF,EACA,WAAAwB,GACE91G,KAAKU,MAAMq5G,UAAUvJ,SAASgB,UAC5B,GAAK5tF,EACL,IACE5jB,KAAK+1G,SAASyC,MAAQ,QAEtB,IAAItE,EAAY,KACZqC,GAAa,EACZv2G,KAAK+1G,SAASE,cACjB/B,EAAYgD,GAAiB,IAAIxxG,KAAQ1F,KAAK+1G,SAASI,gBAAiBn2G,KAAK+1G,SAASK,gBACtFG,EAAav2G,KAAK+1G,SAASQ,YAE7B,MAAM/Z,QAAiB,EAAAO,GAAA,GAAc,wBAAyB,CAC5D1uE,OAAQ,OACR0wE,QAAS,CACP,eAAgB,oBAElBva,KAAMruD,KAAKC,UAAU,CACnBh3B,KAAMY,KAAK+1G,SAAS32G,KACpBo5G,MAAOx4G,KAAK+1G,SAASyC,MACrB5E,YAAa5zG,KAAK+1G,SAASnC,YAC3BM,YACAqC,iBAGE72G,QAAa88F,EAASU,OACxBV,EAAS36E,IACX7hB,KAAK82G,aAAe,CAClB13G,KAAMM,EAAKN,KACXiuG,MAAO3tG,EAAK2tG,OAEdrtG,KAAK0zG,uBAAwB,EAC7B1zG,KAAK62G,uBAAwB,EAC7B72G,KAAK+1G,SAAW,CACd32G,KAAM,GACNo5G,MAAO,GACP5E,YAAa,GACbqC,aAAa,EACbE,gBAAiB,EACjBC,eAAgB,IAChBG,YAAY,SAERv2G,KAAK65G,gBACX75G,KAAKgnG,SAAS7J,QAAQn9F,KAAKhB,GAAG,oCAE9BgB,KAAKgnG,SAASp8B,MAAMlrE,EAAKkrE,OAAS5qE,KAAKhB,GAAG,iCAE9C,CAAE,MAAO4rE,GACP5qE,KAAKgnG,SAASp8B,MAAM5qE,KAAKhB,GAAG,iCAC9B,GAEJ,EACA,SAAAo1G,CAAU/G,GACR,MAAM2M,EAAoC,OAApB3M,EAAM6G,gBAA0C/+F,IAApBk4F,EAAM6G,UACxDl0G,KAAK02G,aAAe,CAClBtkG,GAAIi7F,EAAMj7F,GACVhT,KAAMiuG,EAAMjuG,KACZo5G,MAAOnL,EAAMmL,MACb5E,YAAa,IAAIvG,EAAMuG,aACvBqC,aAAc+D,EACd7D,gBAAiB,EACjBC,eAAgB,IAChBG,WAAYlJ,EAAMkJ,aAAc,GAElCv2G,KAAKw2G,qBAAsB,CAC7B,EACA,WAAAC,GACEz2G,KAAKU,MAAMu5G,cAAczJ,SAASgB,UAChC,GAAK5tF,EACL,IACE,IAAIswF,EAAY,KACZqC,GAAa,EACZv2G,KAAK02G,aAAaT,cACrB/B,EAAYgD,GAAiB,IAAIxxG,KAAQ1F,KAAK02G,aAAaP,gBAAiBn2G,KAAK02G,aAAaN,gBAC9FG,EAAav2G,KAAK02G,aAAaH,YAEjC,MAAM/Z,QAAiB,EAAAO,GAAA,GAAc,wBAAyB,CAC5D1uE,OAAQ,MACR0wE,QAAS,CACP,eAAgB,oBAElBva,KAAMruD,KAAKC,UAAU,CACnB8jF,QAASl6G,KAAK02G,aAAatkG,GAC3BwhG,YAAa5zG,KAAK02G,aAAa9C,YAC/BM,YACAqC,iBAGE72G,QAAa88F,EAASU,OACxBV,EAAS36E,IACX7hB,KAAKw2G,qBAAsB,QACrBx2G,KAAK65G,gBACX75G,KAAKgnG,SAAS7J,QAAQn9F,KAAKhB,GAAG,oCAE9BgB,KAAKgnG,SAASp8B,MAAMlrE,EAAKkrE,OAAS5qE,KAAKhB,GAAG,iCAE9C,CAAE,MAAO4rE,GACP5qE,KAAKgnG,SAASp8B,MAAM5qE,KAAKhB,GAAG,iCAC9B,GAEJ,EACA,iBAAMq1G,CAAY6F,GAChB,UACQl6G,KAAKwnG,SAASxnG,KAAKhB,GAAG,kCAAmCgB,KAAKhB,GAAG,uCAAwC,CAC7GyoG,kBAAmBznG,KAAKhB,GAAG,oCAC3B0oG,iBAAkB1nG,KAAKhB,GAAG,wCAC1BM,KAAM,YAER,MAAMk9F,QAAiB,EAAAO,GAAA,GAAc,4BAA4Bmd,IAAW,CAC1E7rF,OAAQ,WAEJ3uB,QAAa88F,EAASU,OACxBV,EAAS36E,UACL7hB,KAAK65G,gBACX75G,KAAKgnG,SAAS7J,QAAQn9F,KAAKhB,GAAG,oCAE9BgB,KAAKgnG,SAASp8B,MAAMlrE,EAAKkrE,OAAS5qE,KAAKhB,GAAG,iCAE9C,CAAE,MAAO4rE,GACO,WAAVA,GACF5qE,KAAKgnG,SAASp8B,MAAM5qE,KAAKhB,GAAG,iCAEhC,CACF,EACA,eAAMg4G,GACJ,UACQmD,UAAUC,UAAUC,UAAUr6G,KAAK82G,aAAazJ,OACtDrtG,KAAKgnG,SAAS7J,QAAQn9F,KAAKhB,GAAG,2BAChC,CAAE,MAAO4rE,GACP5qE,KAAKgnG,SAASp8B,MAAM5qE,KAAKhB,GAAG,0BAC9B,CACF,EACA,yBAAAk3G,CAA0B1xF,GACpBA,IACFxkB,KAAK+1G,SAASQ,YAAa,EAE/B,EACA,uBAAAK,CAAwBpyF,GAClBA,IACFxkB,KAAK02G,aAAaH,YAAa,EAEnC,EACA,cAAAtC,CAAeC,GACb,OAAOD,GAAeC,EACxB,EACA,YAAAzJ,GACE,GAAIzqG,KAAKsyG,OAAQ,OACjBtyG,KAAKsyG,QAAS,EAEd,IAAIgI,EAAqB,GA6BzB,OA1BAA,EAAmBjyF,KAAK,IAAIwvB,QAAQvT,IAClCtkC,KAAKU,MAAM65G,aAAa/J,SAAS5sF,IAC/B0gB,EAAQ1gB,QAKZ02F,EAAmBjyF,KAAK,IAAIwvB,QAAQvT,IAClCtkC,KAAKU,MAAM85G,cAAchK,SAAS5sF,IAChC0gB,EAAQ1gB,QAKZ02F,EAAmBjyF,KAAK,IAAIwvB,QAAQvT,IAClCtkC,KAAKU,MAAM+5G,WAAWjK,SAAS5sF,IAC7B0gB,EAAQ1gB,QAGZ02F,EAAmBjyF,KAAK,IAAIwvB,QAAQvT,IAClCtkC,KAAKU,MAAMg6G,mBAAmBlK,SAAS5sF,IACrC0gB,EAAQ1gB,QAKLi0B,QAAQoB,IAAIqhE,GAAoBvhE,KAAK4hE,IAC1C,MAAMC,EAAUD,EAAQtB,MAAMz1F,GAASA,GACvC,IAAKg3F,EACH,OAIF,GAAI56G,KAAKm1G,eAAeO,kBAAoB,IAAMlwG,OAAO0zG,UAAUl5G,KAAKm1G,eAAeO,oBAAsB11G,KAAKm1G,eAAeO,kBAAoB,MAAQ11G,KAAKm1G,eAAeQ,mBAAqB,IAAMnwG,OAAO0zG,UAAUl5G,KAAKm1G,eAAeQ,qBAAuB31G,KAAKm1G,eAAeQ,mBAAqB,KAE/S,YADA31G,KAAKgnG,SAASp8B,MAAM5qE,KAAKhB,GAAG,qCAG9B,MAAMohG,EAAWjqE,KAAK+S,MAAM/S,KAAKC,UAAU,CACzCqiF,KAAMz4G,KAAKoyG,aACXsG,OAAQ14G,KAAKu0G,eACboE,OAAQ34G,KAAKm1G,kBAef,cAZO/U,EAASqY,KAAKpG,KAAKW,8BACnB5S,EAASqY,KAAKxF,MAAMQ,wBAGvBzzG,KAAK6yG,oBACPzS,EAASqY,KAAKpG,KAAKwI,QAAS,EAC5Bza,EAASqY,KAAKpG,KAAKG,SAAW,IAE5BxyG,KAAKozG,qBACPhT,EAASqY,KAAKxF,MAAM4H,QAAS,EAC7Bza,EAASqY,KAAKxF,MAAMI,cAAgB,KAE/B,EAAAtW,GAAA,GAAc,iCAAkC,CACrD1uE,OAAQ,OACR0wE,QAAS,CACP,eAAgB,oBAElBva,KAAMruD,KAAKC,UAAUgqE,KACpBrnD,KAAKxqB,IACN,IAAKA,EAAI1M,GAAI,MAAM,IAAIkmB,MAAM/nC,KAAKhB,GAAG,wBACrC,OAAOuvB,EAAI2uE,SACVnkD,KAAKr5C,IAEN,GAAIA,EAAKo7G,qBAAsB,CAC7B96G,KAAKk4G,oBACL,MAAM6C,EAAM/6G,KAAKhB,GAAG,2CAMpB,OALAgB,KAAKgnG,SAASC,QAAQ8T,QACtBtrF,WAAW,KACTzvB,KAAKg7G,OAAOC,OAAO,oBAAoB,GACvCj7G,KAAKk7G,QAAQ7yF,KAAK,gBACjB,KAEL,CACAroB,KAAKgnG,SAAS7J,QAAQn9F,KAAKhB,GAAG,8BAE9BgB,KAAKoyG,aAAaC,KAAKG,SAAW,GAClCxyG,KAAKoyG,aAAaa,MAAMI,cAAgB,GACxCrzG,KAAKoyG,aAAaC,KAAKW,uBAAyB,GAChDhzG,KAAKoyG,aAAaa,MAAMQ,wBAA0B,GAClDzzG,KAAKs4G,gBAAkB,GACvBt4G,KAAKu4G,iBAAmB,GAEpBnY,EAASqY,KAAKpG,KAAKG,WAAapS,EAASqY,KAAKpG,KAAKwI,OACrD76G,KAAKoyG,aAAaC,KAAKO,cAAe,EAC7BxS,EAASqY,KAAKpG,KAAKwI,SAC5B76G,KAAKoyG,aAAaC,KAAKO,cAAe,GAEpCxS,EAASqY,KAAKxF,MAAMI,gBAAkBjT,EAASqY,KAAKxF,MAAM4H,OAC5D76G,KAAKoyG,aAAaa,MAAML,cAAe,EAC9BxS,EAASqY,KAAKxF,MAAM4H,SAC7B76G,KAAKoyG,aAAaa,MAAML,cAAe,GAEzC5yG,KAAK+yG,qBAAsB,EAC3B/yG,KAAKwzG,sBAAuB,EAC5BxzG,KAAK6yG,mBAAoB,EACzB7yG,KAAKozG,oBAAqB,EAC1BpzG,KAAKk4G,wBAENjH,MAAM,KACPjxG,KAAKgnG,SAASp8B,MAAM5qE,KAAKhB,GAAG,0BAC3B0yG,QAAQ,KACT1xG,KAAKsyG,QAAS,GAElB,GAEF,OAAA/wG,GACEvB,KAAKqR,SAAU,GAEf,EAAA0rF,GAAA,GAAc,kCAAkChkD,KAAKyjD,GAAYA,EAASU,QAAQnkD,KAAKy4D,UACrFxxG,KAAKoyG,aAAe1yG,EAAK+4G,KACzBz4G,KAAKu0G,eAAiBv0G,KAAKs5G,yBAAyB55G,EAAKg5G,QACzD14G,KAAKm1G,eAAiB,CACpBI,uBAAuB,EACvBC,2BAA4B,MACzB91G,EAAKi5G,QAIV34G,KAAKs4G,gBAAkB,GACvBt4G,KAAKu4G,iBAAmB,GACxBv4G,KAAKoyG,aAAaC,KAAKW,uBAAyB,GAChDhzG,KAAKoyG,aAAaa,MAAMQ,wBAA0B,SAC5CzzG,KAAKG,YACXH,KAAKk4G,oBAGLl4G,KAAK65G,kBACJnI,QAAQ,KACT1xG,KAAKqR,SAAU,GAEnB,GC5nBF,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,UCRA,MAAM,GAAa,CACjB7T,MAAO,iBAEH,GAAa,CACjBA,MAAO,eAEH,GAAa,CACjBiB,IAAK,EACLjB,MAAO,+BAEF,SAAS,GAAOI,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMC,GAA+B,QAAkB,qBACjD2D,EAAwB,KACxB4nG,EAAuB,MACvBC,EAAuB,MACvBF,EAAuB,MACvBI,EAAsB,MACtBmI,EAAyB,MACzBpI,EAA0B,MAC1BG,EAAqB,MACrBoI,EAAgC,GAChC/kG,EAAqB,IAC3B,OAAO,UAAiB,WAAc,QAAoB,MAAO,GAAY,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYlP,EAASk9G,gBAAiB,CAACC,EAAeC,MACnL,WAAc,QAAoB,MAAO,CAC9C58G,IAAK48G,EACL79G,MAAO,kBACN,EAAC,QAAoB,KAAM,IAAY,QAAiB69G,GAAe,IAAI,QAAavR,EAAoB,CAC7GwC,MAAOtuG,EAAMoiG,SACb,cAAe,SACd,CACD5gG,SAAS,QAAS,IAAM,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAY47G,EAAe,CAACE,EAAS58G,MAC7G,WAAc,QAAairG,EAAyB,CACzDlrG,IAAK68G,EAAQlpG,GACb5U,OAAO,QAAgB,CACrB,6BAA6C,iBAAf89G,EAAQlpG,IAA4D,OAAnCpU,EAAMu9G,2BAEvEl9G,OAAO,QAA+B,iBAAfi9G,EAAQlpG,IAA4D,OAAnCpU,EAAMu9G,yBAAoC,CAChG,+BAAgC,GAAGv9G,EAAMu9G,mCACvCpmG,IACH,CACDxG,OAAO,QAAS,IAAM,EAAC,SAAiB,QAAiB1Q,EAASu9G,UAAUF,EAAS,UAAY,IAAK,GAAIA,EAAQ/2B,UAAW,WAAc,QAAa1iF,EAAuB,CAC7KpD,IAAK,EACL0D,QAASlE,EAASu9G,UAAUF,EAAS,WACrCl5G,UAAW,MACX,cAAe,IACd,CACD5C,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,kBACNV,MAAO,CACL,cAAe,MACf,OAAU,eAGdiE,EAAG,GACF,EAAG,CAAC,cAAe,QAAoB,IAAI,KAC9C9C,SAAS,QAAS,IAAM,CAAkB,WAAjB87G,EAAQh8G,OAAqB,WAAc,QAAaoqG,EAAsB,CACrGjrG,IAAK,EACLqH,WAAYw1G,EAAQx2G,MACpB,sBAAuBjG,GAAUy8G,EAAQx2G,MAAQjG,EACjDoD,SAAUq5G,EAAQ5Q,MAClB1B,YAAa/qG,EAASu9G,UAAUF,EAAS,eACzCj9G,MAAO,CACL,MAAS,SAEV,CACDmB,SAAS,QAAS,IAAM,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAY87G,EAAQnsG,QAASopC,KACrG,WAAc,QAAakxD,EAAsB,CACtDhrG,IAAK85C,EAAOzzC,MACZ6J,MAAO1Q,EAASw9G,gBAAgBljE,GAChCzzC,MAAOyzC,EAAOzzC,OACb,KAAM,EAAG,CAAC,QAAS,YACpB,QACJxC,EAAG,GACF,KAAM,CAAC,aAAc,sBAAuB,WAAY,iBAAoC,gBAAjBg5G,EAAQh8G,OAA0B,WAAc,QAAaoqG,EAAsB,CAC/JjrG,IAAK,EACLqH,WAAYw1G,EAAQx2G,MACpB,sBAAuBjG,GAAUy8G,EAAQx2G,MAAQjG,EACjDoD,UAAWhE,EAASy9G,sBAA+D,IAAvCz9G,EAAS09G,mBAAmBj1G,OACxEsiG,YAAaprG,EAAKoB,GAAG,oCACrB48G,UAAW,GACXv9G,MAAO,CACL,MAAS,SAEV,CACDmB,SAAS,QAAS,IAAM,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYvB,EAAS09G,mBAAoBhP,KACjH,WAAc,QAAalD,EAAsB,CACtDhrG,IAAKkuG,EAAGvtG,KACRuP,MAAOg+F,EAAGvtG,KACV0F,MAAO6nG,EAAGvtG,MACT,KAAM,EAAG,CAAC,QAAS,YACpB,QACJkD,EAAG,GACF,EAAG,CAAC,aAAc,sBAAuB,WAAY,iBAAoC,YAAjBg5G,EAAQh8G,OAAsB,WAAc,QAAakqG,EAAsB,CACxJ/qG,IAAK,EACLqH,WAAYw1G,EAAQx2G,MACpB,sBAAuBjG,GAAUy8G,EAAQx2G,MAAQjG,EACjDoD,SAAUq5G,EAAQ5Q,OACjB,KAAM,EAAG,CAAC,aAAc,sBAAuB,cAAiC,aAAjB4Q,EAAQh8G,OAAuB,WAAc,QAAasqG,EAAqB,CAC/InrG,IAAK,EACLqH,WAAYw1G,EAAQx2G,MACpB,sBAAuBjG,GAAUy8G,EAAQx2G,MAAQjG,EACjDS,KAAM,WACNmuG,SAAU,CACRC,QAAS,EACTmO,QAAwB,iBAAfP,EAAQlpG,GAAwB,OAAI+C,GAE/CigB,OAAQ,WACRnzB,SAAUq5G,EAAQ5Q,MAClB1B,YAAa/qG,EAASu9G,UAAUF,EAAS,eACzCQ,YAAaj9G,GAAUZ,EAAS89G,8BAA8Bl9G,EAAQy8G,IACrE,KAAM,EAAG,CAAC,aAAc,sBAAuB,WAAY,WAAY,cAAe,mBAAoB,WAAc,QAAa1R,EAAqB,CAC3JnrG,IAAK,EACLqH,WAAYw1G,EAAQx2G,MACpB,sBAAuBjG,GAAUy8G,EAAQx2G,MAAQjG,EACjDoD,SAAUq5G,EAAQ5Q,MAClB1B,YAAa/qG,EAASu9G,UAAUF,EAAS,gBACxC,KAAM,EAAG,CAAC,aAAc,sBAAuB,WAAY,iBAAiC,iBAAfA,EAAQlpG,KAAyB,WAAc,QAAoB,MAAO,GAAY,EAAC,QAAa2/F,EAAwB,CAC1MjsG,WAAY9H,EAAMg+G,oBAClB,sBAAuBn+G,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAMg+G,oBAAsBn9G,IACtF,CACDW,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB5B,EAAKoB,GAAG,gCAAiC,KACpGsD,EAAG,GACF,EAAG,CAAC,mBAAoB,QAAoB,IAAI,KACnDA,EAAG,GACF,KAAM,CAAC,QAAS,YACjB,QACJA,EAAG,GACF,KAAM,CAAC,cACR,OAAO,QAAa4vG,EAA+B,CACrD78E,MAAOr3B,EAAMqT,QACbA,QAASrT,EAAMs0G,OACfV,MAAOh0G,EAAKg4G,kBACZh3G,QAASX,EAASwsG,cACjB,KAAM,EAAG,CAAC,OAAQ,UAAW,QAAS,eAAgB,CAAC,CAACt9F,EAAoBnP,EAAMqT,UACvF,C,cC7HA,IACE8mG,OAAQ,CAACC,IACT7V,WAAY,CACV8V,mBAAkB,IAEpB,IAAA34G,GACE,MAAO,CACL0gG,SAAU,CACRnoD,OAAQ,IAGV5mC,SAAS,EACTihG,QAAQ,EAER0J,qBAAqB,EAErBT,yBAA0B,KAC1BU,iCAAkC,KAElCC,kBAAmB,CAAC,EAExB,EACAt8G,SAAU,CACR,gBAAAq4G,GACE,MAAO,CACLhgE,OAAQj4C,KAAKogG,SAASnoD,OAAO/hC,IAAI,EAC/B9D,KACAtN,YACI,CACJsN,KACAtN,WAEFk3G,oBAAqBh8G,KAAKg8G,oBAE9B,EACA,IAAAG,GACE,MAA6B,OAAtBn8G,KAAKujG,MAAMttE,MACpB,EAEA,eAAAklF,GACE,MAAMvzD,EAAU,CAAC,EAUjB,OATI5nD,KAAKogG,SAASnoD,QAChBj4C,KAAKogG,SAASnoD,OAAO7pB,QAAQktF,IAC3B,MAAMc,EAAWp8G,KAAKm8G,KAAOb,EAAQe,aAAef,EAAQc,UAAYp8G,KAAKhB,GAAG,yBAA2Bs8G,EAAQc,UAAYp8G,KAAKhB,GAAG,yBAClI4oD,EAAQw0D,KACXx0D,EAAQw0D,GAAY,IAEtBx0D,EAAQw0D,GAAU/zF,KAAKizF,KAGpB1zD,CACT,EAEA,oBAAA8zD,GACE,MAAMY,EAAiBt8G,KAAKogG,SAASnoD,QAAQ+P,KAAK1yC,GAAc,yBAATA,EAAElD,IACzD,OAAOkqG,GAAgBx3G,OAAS,EAClC,EAEA,kBAAA62G,GACE,OAAO37G,KAAKk8G,kBAAkBl8G,KAAK07G,uBAAyB,EAC9D,GAEFx7G,MAAO,CAEL,oBAAAw7G,CAAqBa,EAAQC,GAC3B,IAAKx8G,KAAKqR,SAAWkrG,IAAWC,EAAQ,CACtC,MAAMC,EAAqBz8G,KAAKogG,SAASnoD,QAAQ+P,KAAK1yC,GAAc,uBAATA,EAAElD,IAC7D,GAAIqqG,EAAoB,CACtB,MAAMC,EAAiB18G,KAAKk8G,kBAAkBK,IAAW,GACpDG,EAAepzC,KAAKqjC,GAAMA,EAAGvtG,OAASq9G,EAAmB33G,SAC5D23G,EAAmB33G,MAAQ,GAE/B,CACF,CACF,GAEFzE,QAAS,CACP,SAAAm7G,CAAUh9G,EAAM81C,GACd,OAAIt0C,KAAKm8G,MAAQ39G,EAAK81C,EAAQ,OAAe91C,EAAK81C,EAAQ,OACnD91C,EAAK81C,IAAU,EACxB,EACA,eAAAmnE,CAAgBljE,GACd,OAAIv4C,KAAKm8G,MAAQ5jE,EAAOokE,SAAiBpkE,EAAOokE,SACzCpkE,EAAO5pC,KAChB,EACA,6BAAAotG,CAA8BjuE,EAAOwtE,GACnC,GAAmB,iBAAfA,EAAQlpG,GAAuB,OACnC,MAAMwqG,EAAW9uE,EAAM9mB,OAAO61F,UAAU,YACxC,IAAKD,EAAU,OACf,MAAM38E,EAAO28E,EAASlvE,wBAChBovE,EAAmB,GACnBC,EAAiBjvE,EAAMH,SAAW1N,EAAKlQ,MAAQ+sF,GAAoBhvE,EAAMF,SAAW3N,EAAKpK,OAASinF,EACxG,IAAKC,EAAgB,OACrB,MAAMC,EAAWJ,EAASC,QAAQ,iBAC9B78G,KAAKi8G,kCACPn8G,OAAO4B,oBAAoB,UAAW1B,KAAKi8G,kCAE7C,MAAMgB,EAAcL,EAASM,aAC7BN,EAASv+G,MAAMugC,OAAS,GAAGq+E,MAC3BD,GAAUh8G,UAAUE,OAAO,8BAC3BlB,KAAKi8G,iCAAmC,KACtC,MAAMkB,EAAgBP,EAASM,aACzBE,EAAe9sG,KAAKuZ,IAAIszF,EAAgBF,GAAe,EAAIE,EAAgBn9G,KAAKu7G,yBACjE,OAAjB6B,IACFp9G,KAAKu7G,yBAA2B6B,EAChCJ,GAAU3+G,MAAM2yC,YAAY,+BAAgC,GAAGosE,OAC/DJ,GAAUh8G,UAAUM,IAAI,+BAE1BtB,KAAKi8G,iCAAmC,MAE1Cn8G,OAAO0B,iBAAiB,UAAWxB,KAAKi8G,iCAAkC,CACxEoB,MAAM,GAEV,EACA,kBAAM5S,GACJ,GAAIzqG,KAAKsyG,OAAQ,OACjB,MAAMgL,EAAYnnF,KAAK+S,MAAM/S,KAAKC,UAAU,IACvCp2B,KAAKogG,SACR4b,oBAAqBh8G,KAAKg8G,uBAE5Bh8G,KAAKsyG,QAAS,EACd,IACE,MAAM9V,QAAiB,EAAAO,GAAA,GAAc,6BAA8B,CACjE1uE,OAAQ,OACR0wE,QAAS,CACP,eAAgB,oBAElBva,KAAMruD,KAAKC,UAAUknF,KAEvB,IAAK9gB,EAAS36E,GAAI,MAAM,IAAIkmB,MAAM/nC,KAAKhB,GAAG,wBACtCgB,KAAKg8G,sBAAwBsB,EAAUtB,sBAAqBh8G,KAAKg8G,qBAAsB,GAC3Fh8G,KAAKk4G,kBAAkB,CACrBjgE,OAAQqlE,EAAUrlE,OAAO/hC,IAAI,EAC3B9D,KACAtN,YACI,CACJsN,KACAtN,WAEFk3G,qBAAqB,IAEvBh8G,KAAKgnG,SAAS7J,QAAQn9F,KAAKhB,GAAG,yBAChC,CAAE,MACAgB,KAAKgnG,SAASp8B,MAAM5qE,KAAKhB,GAAG,uBAC9B,CAAE,QACAgB,KAAKsyG,QAAS,CAChB,CACF,EAEA,4BAAMiL,GACJ,IACE,MAAM/gB,QAAiBghB,GAAA,EAAMlnF,IAAI,iBAC7BkmE,EAAS98F,OACXM,KAAKk8G,kBAAoB1f,EAAS98F,KAEtC,CAAE,MAAOkrE,GACPxmC,QAAQwmC,MAAM,sCAAuCA,EACvD,CACF,GAEF,aAAAq7B,GACMjmG,KAAKi8G,kCACPn8G,OAAO4B,oBAAoB,UAAW1B,KAAKi8G,iCAE/C,EACA,OAAA16G,GACEvB,KAAKqR,SAAU,EAEfrR,KAAKu9G,0BAEL,EAAAxgB,GAAA,GAAc,8BAA8BhkD,KAAKyjD,GAAYA,EAASU,QAAQnkD,KAAKy4D,UACjFxxG,KAAKogG,SAAW1gG,EAEZM,KAAKogG,SAASnoD,QAChBj4C,KAAKogG,SAASnoD,OAAO7pB,QAAQktF,SACJnmG,IAAlBmmG,EAAQx2G,OAAyC,OAAlBw2G,EAAQx2G,OAAoC,KAAlBw2G,EAAQx2G,YAAqCqQ,IAApBmmG,EAAQ97G,UAC7F87G,EAAQx2G,MAAQw2G,EAAQ97G,SAEL,YAAjB87G,EAAQh8G,MAEmB,kBAAlBg8G,EAAQx2G,QACjBw2G,EAAQx2G,MAA0B,SAAlBw2G,EAAQx2G,eAK1B9E,KAAKG,YACXH,KAAKk4G,sBACJxG,QAAQ,KACT1xG,KAAKqR,SAAU,GAEnB,GClMF,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,UCRA,MAAM,GAAa,CACjB7T,MAAO,mBAEH,GAAa,CACjBA,MAAO,kBAEH,GAAa,CACjBA,MAAO,eAEH,GAAa,CACjBA,MAAO,eAEH,GAAa,CACjBA,MAAO,eAEH,GAAa,CACjBA,MAAO,eAEH,GAAa,CAAC,aACd,GAAa,CACjBA,MAAO,eAEF,SAAS,GAAOI,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMC,GAA+B,QAAkB,qBACjD2D,EAAwB,KACxB2nG,EAAuB,MACvBG,EAA0B,MAC1BG,EAAqB,MACrBF,EAAsB,MACtBH,EAAuB,MACvBC,EAAuB,MACvBwI,EAAgC,GAChC/kG,EAAqB,IAC3B,OAAO,UAAiB,WAAc,QAAoB,MAAO,GAAY,EAAC,QAAoB,MAAO,GAAY,EAAC,QAAoB,KAAM,GAAY,EAAC,SAAiB,QAAiBvP,EAAKoB,GAAG,8BAAgC,IAAK,IAAI,QAAa6C,EAAuB,CAClRM,QAASvE,EAAKoB,GAAG,oCACjBoD,UAAW,SACV,CACD5C,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,kBACNV,MAAO,CACL,cAAe,MACf,OAAU,eAGdiE,EAAG,GACF,EAAG,CAAC,eAAe,QAAawnG,EAAoB,CACrDwC,MAAOtuG,EAAMoiG,SAASqd,UACtB,cAAe,SACd,CACDj+G,SAAS,QAAS,IAAM,EAAC,QAAamqG,EAAyB,CAC7Dh7F,MAAO/Q,EAAKoB,GAAG,qBACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAagqG,EAAsB,CAC1D1jG,WAAY9H,EAAMoiG,SAASqd,UAAU5iD,QACrC,sBAAuBh9D,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAMoiG,SAASqd,UAAU5iD,QAAUh8D,GAC9FoD,SAAUjE,EAAMoiG,SAASqd,UAAU/S,OAClC,KAAM,EAAG,CAAC,aAAc,eAC3BpoG,EAAG,GACF,EAAG,CAAC,YACPA,EAAG,GACF,EAAG,CAAC,WAAW,QAAoB,KAAM,GAAY,EAAC,SAAiB,QAAiB1E,EAAKoB,GAAG,iCAAmC,IAAK,IAAI,QAAa6C,EAAuB,CACjLM,QAASvE,EAAKoB,GAAG,uCACjBoD,UAAW,QACX,cAAe,IACd,CACD5C,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,kBACNV,MAAO,CACL,cAAe,MACf,OAAU,eAGdiE,EAAG,GACF,EAAG,CAAC,eAAe,QAAawnG,EAAoB,CACrDwC,MAAOtuG,EAAMoiG,SAASsd,mBACtB,cAAe,SACd,CACDl+G,SAAS,QAAS,IAAM,EAAC,QAAamqG,EAAyB,CAC7Dh7F,MAAO/Q,EAAKoB,GAAG,qBACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMoiG,SAASsd,mBAAmBC,WAC9C,sBAAuB9/G,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAMoiG,SAASsd,mBAAmBC,WAAa9+G,GAC1GoD,SAAUjE,EAAMoiG,SAASsd,mBAAmBhT,OAC3C,KAAM,EAAG,CAAC,aAAc,eAC3BpoG,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,2BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMoiG,SAASsd,mBAAmBE,SAC9C,sBAAuB//G,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAMoiG,SAASsd,mBAAmBE,SAAW/+G,GACxGoD,SAAUjE,EAAMoiG,SAASsd,mBAAmBhT,OAC3C,KAAM,EAAG,CAAC,aAAc,eAC3BpoG,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO,WACN,CACDnP,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMoiG,SAASsd,mBAAmBG,WAC9C,sBAAuBhgH,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAMoiG,SAASsd,mBAAmBG,WAAah/G,GAC1GoD,SAAUjE,EAAMoiG,SAASsd,mBAAmBhT,MAC5CprG,KAAM,WACN,gBAAiB,GACjBqzG,aAAc,gBACb,KAAM,EAAG,CAAC,aAAc,eAC3BrwG,EAAG,MAELA,EAAG,GACF,EAAG,CAAC,WAAW,QAAoB,KAAM,GAAY,EAAC,SAAiB,QAAiB1E,EAAKoB,GAAG,6BAA+B,IAAK,IAAI,QAAa6C,EAAuB,CAC7KM,QAASvE,EAAKoB,GAAG,mCACjBoD,UAAW,SACV,CACD5C,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,kBACNV,MAAO,CACL,cAAe,MACf,OAAU,eAGdiE,EAAG,GACF,EAAG,CAAC,eAAe,QAAawnG,EAAoB,CACrDwC,MAAOtuG,EAAMoiG,SAAS0d,eACtB,cAAe,SACd,CACDt+G,SAAS,QAAS,IAAM,EAAC,QAAamqG,EAAyB,CAC7Dh7F,MAAO/Q,EAAKoB,GAAG,qBACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAagqG,EAAsB,CAC1D1jG,WAAY9H,EAAMoiG,SAAS0d,eAAejjD,QAC1C,sBAAuBh9D,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAMoiG,SAAS0d,eAAejjD,QAAUh8D,GACnGoD,SAAUjE,EAAMoiG,SAAS0d,eAAepT,OACvC,KAAM,EAAG,CAAC,aAAc,eAC3BpoG,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtD7lE,KAAM,6BACL,CACDn1B,OAAO,QAAS,IAAM,EAAC,QAAoB,OAAQ,MAAM,QAAiB/Q,EAAKoB,GAAG,wBAAyB,IAAI,QAAa6C,EAAuB,CACjJM,QAASvE,EAAKoB,GAAG,8BACjBoD,UAAW,QACX,cAAe,IACd,CACD5C,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,kBACNV,MAAO,CACL,cAAe,MACf,OAAU,eAGdiE,EAAG,GACF,EAAG,CAAC,cACP9C,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMoiG,SAAS0d,eAAeC,WAC1C,sBAAuBlgH,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAMoiG,SAAS0d,eAAeC,WAAal/G,GACtGoD,SAAUjE,EAAMoiG,SAAS0d,eAAepT,OACvC,KAAM,EAAG,CAAC,aAAc,eAC3BpoG,EAAG,MAELA,EAAG,GACF,EAAG,CAAC,WAAW,QAAoB,KAAM,GAAY,EAAC,SAAiB,QAAiB1E,EAAKoB,GAAG,2BAA6B,IAAK,IAAI,QAAa6C,EAAuB,CAC3KM,QAASvE,EAAKoB,GAAG,iCACjBoD,UAAW,QACX,cAAe,IACd,CACD5C,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,kBACNV,MAAO,CACL,cAAe,MACf,OAAU,eAGdiE,EAAG,GACF,EAAG,CAAC,eAAe,QAAawnG,EAAoB,CACrDwC,MAAOtuG,EAAMoiG,SAAS4d,aACtB,cAAe,SACd,CACDx+G,SAAS,QAAS,IAAM,EAAC,QAAamqG,EAAyB,CAC7Dh7F,MAAO/Q,EAAKoB,GAAG,qBACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAagqG,EAAsB,CAC1D1jG,WAAY9H,EAAMoiG,SAAS4d,aAAanjD,QACxC,sBAAuBh9D,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAMoiG,SAAS4d,aAAanjD,QAAUh8D,GACjGoD,SAAUjE,EAAMoiG,SAAS4d,aAAatT,OACrC,KAAM,EAAG,CAAC,aAAc,eAC3BpoG,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtD7lE,KAAM,2BACL,CACDn1B,OAAO,QAAS,IAAM,EAAC,QAAoB,OAAQ,MAAM,QAAiB/Q,EAAKoB,GAAG,4BAA6B,IAAI,QAAa6C,EAAuB,CACrJO,UAAW,QACX,cAAe,IACd,CACDD,SAAS,QAAS,IAAM,EAAC,QAAoB,MAAO,CAClD9D,MAAO,CACL,YAAa,QACb,cAAe,OAEjBuuG,UAAWhvG,EAAKoB,GAAG,mCAClB,KAAM,EAAG,MACZQ,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,kBACNV,MAAO,CACL,cAAe,MACf,OAAU,eAGdiE,EAAG,MAEL9C,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMoiG,SAAS4d,aAAaD,WACxC,sBAAuBlgH,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAMoiG,SAAS4d,aAAaD,WAAal/G,GACpGoD,SAAUjE,EAAMoiG,SAAS4d,aAAatT,MACtC1B,YAAa,0BACZ,KAAM,EAAG,CAAC,aAAc,eAC3B1mG,EAAG,MAELA,EAAG,GACF,EAAG,CAAC,WAAW,QAAoB,KAAM,GAAY,EAAC,SAAiB,QAAiB1E,EAAKoB,GAAG,qBAAuB,IAAK,IAAI,QAAa6C,EAAuB,CACrKM,QAASvE,EAAKoB,GAAG,2BACjBoD,UAAW,QACX,cAAe,IACd,CACD5C,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,kBACNV,MAAO,CACL,cAAe,MACf,OAAU,eAGdiE,EAAG,GACF,EAAG,CAAC,eAAe,QAAawnG,EAAoB,CACrDwC,MAAOtuG,EAAMoiG,SAAS6d,OACtB,cAAe,SACd,CACDz+G,SAAS,QAAS,IAAM,EAAC,QAAamqG,EAAyB,CAC7Dh7F,MAAO/Q,EAAKoB,GAAG,qBACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAagqG,EAAsB,CAC1D1jG,WAAY9H,EAAMoiG,SAAS6d,OAAOpjD,QAClC,sBAAuBh9D,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAMoiG,SAAS6d,OAAOpjD,QAAUh8D,GAC3FoD,SAAUjE,EAAMoiG,SAAS6d,OAAOvT,OAC/B,KAAM,EAAG,CAAC,aAAc,eAC3BpoG,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,6BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMoiG,SAAS6d,OAAO3Q,SAClC,sBAAuBzvG,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAMoiG,SAAS6d,OAAO3Q,SAAWzuG,GAC5FoD,SAAUjE,EAAMoiG,SAAS6d,OAAOvT,OAC/B,KAAM,EAAG,CAAC,aAAc,eAC3BpoG,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,6BACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMoiG,SAAS6d,OAAO1Q,SAClC,sBAAuB1vG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMoiG,SAAS6d,OAAO1Q,SAAW1uG,GAC9FoD,SAAUjE,EAAMoiG,SAAS6d,OAAOvT,MAChCprG,KAAM,WACN,gBAAiB,GACjBqzG,aAAc,gBACb,KAAM,EAAG,CAAC,aAAc,eAC3BrwG,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,kCACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAakqG,EAAsB,CAC1D5jG,WAAY9H,EAAMoiG,SAAS6d,OAAOC,cAClC,sBAAuBrgH,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMoiG,SAAS6d,OAAOC,cAAgBr/G,GACnGoD,SAAUjE,EAAMoiG,SAAS6d,OAAOvT,MAChC1B,YAAaprG,EAAKoB,GAAG,kCACrB48G,UAAW,IACV,CACDp8G,SAAS,QAAS,IAAM,EAAC,QAAaiqG,EAAsB,CAC1D96F,MAAO,WACP7J,MAAO,cACL,QAAa2kG,EAAsB,CACrC96F,MAAO,gBACP7J,MAAO,UACL,QAAa2kG,EAAsB,CACrC96F,MAAO,KACP7J,MAAO,QACL,QAAa2kG,EAAsB,CACrC96F,MAAO,UACP7J,MAAO,aACL,QAAa2kG,EAAsB,CACrC96F,MAAO,cACP7J,MAAO,iBACL,QAAa2kG,EAAsB,CACrC96F,MAAO,SACP7J,MAAO,aAETxC,EAAG,GACF,EAAG,CAAC,aAAc,WAAY,kBACjCA,EAAG,GACF,EAAG,CAAC,UAAWtE,EAAMoiG,SAAS6d,OAAOC,eAAiBjgH,EAASkgH,kBAAkBz3G,OAAS,IAAK,WAAc,QAAaijG,EAAyB,CACpJlrG,IAAK,EACLkQ,MAAO/Q,EAAKoB,GAAG,gCACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAakqG,EAAsB,CAC1D5jG,WAAY9H,EAAMoiG,SAAS6d,OAAOG,YAClC,sBAAuBvgH,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMoiG,SAAS6d,OAAOG,YAAcv/G,GACjGoD,SAAUjE,EAAMoiG,SAAS6d,OAAOvT,MAChC1B,YAAaprG,EAAKoB,GAAG,6BACrB48G,UAAW,IACV,CACDp8G,SAAS,QAAS,IAAM,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYvB,EAASkgH,kBAAmBxR,KAChH,WAAc,QAAalD,EAAsB,CACtDhrG,IAAKkuG,EAAGvtG,KACRuP,MAAOg+F,EAAGvtG,KACV0F,MAAO6nG,EAAGvtG,MACT,KAAM,EAAG,CAAC,QAAS,YACpB,QACJkD,EAAG,GACF,EAAG,CAAC,aAAc,WAAY,kBACjCA,EAAG,GACF,EAAG,CAAC,YAAa,QAAoB,IAAI,KAC5CA,EAAG,GACF,EAAG,CAAC,aAAa,QAAa4vG,EAA+B,CAC9D78E,MAAOr3B,EAAMqT,QACbA,QAASrT,EAAMs0G,OACfV,MAAOh0G,EAAKg4G,kBACZh3G,QAASX,EAASwsG,cACjB,KAAM,EAAG,CAAC,OAAQ,UAAW,QAAS,eAAgB,CAAC,CAACt9F,EAAoBnP,EAAMqT,UACvF,CCnUA,QACE8mG,OAAQ,CAACC,IACT7V,WAAY,CACV8V,mBAAkB,IAEpB,IAAA34G,GACE,MAAO,CACL0gG,SAAU,CACRqd,UAAW,CAAC,EACZK,eAAgB,CAAC,EACjBJ,mBAAoB,CAAC,EACrBO,OAAQ,CAAC,EACTD,aAAc,CAAC,GAEjB9B,kBAAmB,CAAC,EAGpB7qG,SAAS,EACTihG,QAAQ,EAEZ,EACA1yG,SAAU,CACR,gBAAAq4G,GACE,OAAOj4G,KAAKogG,QACd,EAEA,iBAAA+d,GACE,MAAMtV,EAAc7oG,KAAKogG,SAAS6d,QAAQC,cAC1C,OAAOrV,GAAc7oG,KAAKk8G,kBAAkBrT,IAAqB,EACnE,GAEF3oG,MAAO,CACL,mCAEOF,KAAKqR,SAAWrR,KAAKogG,SAAS6d,SACjCj+G,KAAKogG,SAAS6d,OAAOG,YAAc,GAEvC,GAEF/9G,QAAS,CACP,kBAAMoqG,GACJ,GAAIzqG,KAAKsyG,OAAQ,OACjB,MAAMgL,EAAYnnF,KAAK+S,MAAM/S,KAAKC,UAAUp2B,KAAKogG,WACjDpgG,KAAKsyG,QAAS,EACd,IACE,MAAM9V,QAAiB,EAAAO,GAAA,GAAc,+BAAgC,CACnE1uE,OAAQ,OACR0wE,QAAS,CACP,eAAgB,oBAElBva,KAAMruD,KAAKC,UAAUknF,KAEvB,IAAK9gB,EAAS36E,GAAI,MAAM,IAAIkmB,MAAM/nC,KAAKhB,GAAG,wBAC1CgB,KAAKk4G,kBAAkBoF,GACvBt9G,KAAKgnG,SAAS7J,QAAQn9F,KAAKhB,GAAG,2BAChC,CAAE,MACAgB,KAAKgnG,SAASp8B,MAAM5qE,KAAKhB,GAAG,uBAC9B,CAAE,QACAgB,KAAKsyG,QAAS,CAChB,CACF,EACA,4BAAMiL,GACJ,IACE,MAAM/gB,QAAiB,EAAAO,GAAA,GAAc,iBACjCP,EAAS36E,KACX7hB,KAAKk8G,wBAA0B1f,EAASU,OAE5C,CAAE,MAAOtyB,GACPxmC,QAAQwmC,MAAM,sCAAuCA,EACvD,CACF,GAEF,OAAArpE,GACEvB,KAAKqR,SAAU,GAEf,EAAA0rF,GAAA,GAAc,gCAAgChkD,KAAKyjD,GAAYA,EAASU,QAAQnkD,KAAKy4D,UACnFxxG,KAAKogG,SAAW1gG,QACVM,KAAKG,YACXH,KAAKk4G,sBACJxG,QAAQ,KACT1xG,KAAKqR,SAAU,IAGjBrR,KAAKu9G,wBACP,GChFF,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,qBCRA,MAAM,GAAa,CACjB//G,MAAO,eAEH,GAAa,CACjBiB,IAAK,EACLjB,MAAO,kBAEH,GAAa,CACjBA,MAAO,eAEH,GAAa,CACjBA,MAAO,kBAEH,GAAa,CACjBA,MAAO,kBAEH,GAAa,CACjBA,MAAO,gBAEH,GAAa,CACjBiB,IAAK,EACLjB,MAAO,cAEH,GAAa,CACjBA,MAAO,cAEH,GAAa,CACjBA,MAAO,eAEH,GAAc,CAClBiB,IAAK,EACLjB,MAAO,kBAEH,GAAc,CAClBA,MAAO,eAEH,GAAc,CAClBA,MAAO,cAEH,GAAc,CAClBA,MAAO,aAEH,GAAc,CAClBA,MAAO,aAEH,GAAc,CAAC,SACf,GAAc,CAClBA,MAAO,aAEH,GAAc,CAClBA,MAAO,gBAEH,GAAc,CAClBA,MAAO,kBAEH,GAAc,CAClBA,MAAO,gBAEH,GAAc,CAClBiB,IAAK,EACLjB,MAAO,cAEH,GAAc,CAClBA,MAAO,cAEH,GAAc,CAClBA,MAAO,eAEH,GAAc,CAClBiB,IAAK,EACLjB,MAAO,kBAEH,GAAc,CAClBA,MAAO,eAEH,GAAc,CAClBA,MAAO,cAEH,GAAc,CAClBA,MAAO,sBAEH,GAAc,CAClBA,MAAO,aAEH,GAAc,CAClBA,MAAO,aAEH,GAAc,CAClBA,MAAO,gBAEH,GAAc,CAClBA,MAAO,eAEH,GAAc,CAClBA,MAAO,eAEH,GAAc,CAClBA,MAAO,kBAEF,SAAS,GAAOI,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMurG,EAAuB,MACvBG,EAA0B,MAC1BE,EAA6B,MAC7BC,EAAqB,MACrB5rG,GAA+B,QAAkB,qBACjDqrG,EAAoB,KACpB78F,EAAuB,KACvB7K,EAAwB,KACxB+nG,EAAsB,MACtBH,EAAuB,MACvBC,EAAuB,MACvBwI,EAAgC,GAChCmM,EAAsB,MACtBtM,EAAyB,MACzBjlG,EAAuB,KACvBK,EAAqB,IAC3B,OAAO,UAAiB,WAAc,QAAoB,MAAO,GAAY,CAACnP,EAAMoiG,WAAY,WAAc,QAAoB,MAAO,GAAY,EAAC,QAAoB,KAAM,IAAY,QAAiBxiG,EAAKoB,GAAG,kBAAmB,IAAI,QAAoB,UAAW,GAAY,EAAC,QAAa8qG,EAAoB,CACvT,cAAe,QACf7nG,SAAUjE,EAAMs0G,QACf,CACD9yG,SAAS,QAAS,IAAM,EAAC,QAAamqG,EAAyB,CAC7Dh7F,MAAO/Q,EAAKoB,GAAG,iBACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAagqG,EAAsB,CAC1D1jG,WAAY9H,EAAMoiG,SAASvlC,QAC3B,sBAAuBh9D,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAMoiG,SAASvlC,QAAUh8D,IACnF,KAAM,EAAG,CAAC,iBACbyD,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,kBACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaqqG,EAA4B,CAChE/jG,WAAY9H,EAAMoiG,SAASke,UAAUC,kBACrC,sBAAuB1gH,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAMoiG,SAASke,UAAUC,kBAAoB1/G,GACxGuU,IAAK,IACLD,IAAK,IACLixD,KAAM,KACL,KAAM,EAAG,CAAC,iBACb9hE,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,oBACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaqqG,EAA4B,CAChE/jG,WAAY9H,EAAMoiG,SAASke,UAAUE,aACrC,sBAAuB3gH,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAMoiG,SAASke,UAAUE,aAAe3/G,GACnGuU,IAAK,EACLD,IAAK,GACJ,KAAM,EAAG,CAAC,iBACb7Q,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,sBACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaqqG,EAA4B,CAChE/jG,WAAY9H,EAAMoiG,SAASke,UAAUG,YACrC,sBAAuB5gH,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAMoiG,SAASke,UAAUG,YAAc5/G,GAClGuU,IAAK,EACLD,IAAK,GACJ,KAAM,EAAG,CAAC,iBACb7Q,EAAG,GACF,EAAG,CAAC,YACPA,EAAG,GACF,EAAG,CAAC,cAAc,QAAoB,MAAO,GAAY,EAAC,QAAoB,MAAO,GAAY,EAAC,QAAoB,KAAM,KAAM,EAAC,QAAapE,EAA8B,CAC/Ka,KAAM,YACJ,SAAiB,QAAiBnB,EAAKoB,GAAG,oBAAqB,IAAI,QAAauqG,EAAmB,CACrG76F,KAAM,QACNpP,KAAM,QACL,CACDE,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBxB,EAAMoiG,SAASse,UAAUh4G,QAAS,KAC7FpE,EAAG,OACC,QAAaoK,EAAsB,CACvCpN,KAAM,UACNoP,KAAM,QACNzM,SAAUjE,EAAMs0G,UAAYt0G,EAAM2gH,SAAW3gH,EAAMoiG,SAASse,UAAUh4G,QAAU,EAChF9H,QAASf,EAAO,KAAOA,EAAO,GAAKgB,GAAUZ,EAAS2gH,iBACrD,CACDp/G,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,UACJ,SAAiB,QAAiBnB,EAAKoB,GAAG,sBAAuB,KACrEsD,EAAG,GACF,EAAG,CAAC,eAAiBtE,EAAMoiG,SAASse,UAAUh4G,SAYvB,WAAc,QAAoB,MAAO,GAAa,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAY1I,EAAMoiG,SAASse,UAAWG,KACtK,WAAc,QAAoB,UAAW,CAClDpgH,IAAKogH,EAASzsG,GACd5U,OAAO,QAAgB,CAAC,gBAAiB,CACvCyE,UAAW48G,EAAShkD,YAErB,EAAC,QAAoB,MAAO,GAAa,EAAC,QAAoB,OAAQ,IAAa,QAAiBgkD,EAASz/G,MAAQy/G,EAASzsG,IAAK,IAAI,QAAao3F,EAAsB,CAC3K1jG,WAAY+4G,EAAShkD,QACrB,sBAAuBh8D,GAAUggH,EAAShkD,QAAUh8D,EACpD6P,KAAM,QACNzM,SAAUjE,EAAMs0G,UAAYt0G,EAAM2gH,QAClC,aAAc/gH,EAAKoB,GAAG,kBACrB,KAAM,EAAG,CAAC,aAAc,sBAAuB,WAAY,kBAAkB,QAAoB,MAAO,GAAa,EAAC,QAAoB,MAAO,GAAa,EAAC,QAAad,EAA8B,CAC3Ma,KAAM,UACJ,QAAoB,OAAQ,CAC9B8P,MAAOgwG,EAASnT,UACf,QAAiBmT,EAASnT,SAAU,EAAG,OAAgB,QAAoB,MAAO,GAAa,EAAC,QAAaxtG,EAA8B,CAC5Ia,KAAM,gBACJ,QAAoB,OAAQ,MAAM,QAAiBd,EAAS6gH,WAAWD,IAAY,QAAQ,QAAoB,MAAO,GAAa,EAAC,QAAanyG,EAAsB,CACzKpN,KAAM,UACNy5B,KAAM,GACNrqB,KAAM,QACNzM,SAAUjE,EAAMs0G,UAAYt0G,EAAM2gH,QAClC//G,QAASC,GAAUZ,EAAS2gH,aAAaC,IACxC,CACDr/G,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,UACJ,SAAiB,QAAiBnB,EAAKoB,GAAG,eAAgB,KAC9DsD,EAAG,GACF,EAAG,CAAC,WAAY,aAAa,QAAaoK,EAAsB,CACjEpN,KAAM,SACNy5B,KAAM,GACNrqB,KAAM,QACNzM,SAAUjE,EAAMs0G,UAAYt0G,EAAM2gH,QAClC//G,QAASC,GAAUZ,EAAS8gH,eAAeF,EAASzsG,KACnD,CACD5S,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,eACJ,SAAiB,QAAiBnB,EAAKoB,GAAG,iBAAkB,KAChEsD,EAAG,GACF,EAAG,CAAC,WAAY,eAAgB,KACjC,WArDuD,WAAc,QAAoB,MAAO,GAAY,EAAC,QAAoB,OAAQ,GAAY,EAAC,QAAapE,EAA8B,CACnMa,KAAM,cACF,QAAoB,OAAQ,IAAY,QAAiBnB,EAAKoB,GAAG,sBAAuB,IAAI,QAAa0N,EAAsB,CACnIpN,KAAM,UACNwR,MAAO,GACP7O,SAAUjE,EAAMs0G,OAChB1zG,QAASf,EAAO,KAAOA,EAAO,GAAKgB,GAAUZ,EAAS2gH,iBACrD,CACDp/G,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,UACJ,SAAiB,QAAiBnB,EAAKoB,GAAG,sBAAuB,KACrEsD,EAAG,GACF,EAAG,CAAC,mBAyCS,QAAoB,MAAO,GAAa,EAAC,QAAoB,MAAO,GAAa,EAAC,QAAoB,KAAM,KAAM,EAAC,QAAapE,EAA8B,CAC5Ka,KAAM,WACJ,SAAiB,QAAiBnB,EAAKoB,GAAG,iBAAkB,IAAI,QAAauqG,EAAmB,CAClG76F,KAAM,QACNpP,KAAM,QACL,CACDE,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBxB,EAAMoiG,SAAS4e,OAAOt4G,QAAS,KAC1FpE,EAAG,OACC,QAAaoK,EAAsB,CACvCpN,KAAM,UACNoP,KAAM,QACNzM,SAAUjE,EAAMs0G,UAAYt0G,EAAM2gH,UAAY3gH,EAAMoiG,SAASse,UAAUh4G,QAAU1I,EAAMoiG,SAAS4e,OAAOt4G,QAAU,GACjH9H,QAASf,EAAO,KAAOA,EAAO,GAAKgB,GAAUZ,EAASghH,cACrD,CACDz/G,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,UACJ,SAAiB,QAAiBnB,EAAKoB,GAAG,mBAAoB,KAClEsD,EAAG,GACF,EAAG,CAAC,eAAiBtE,EAAMoiG,SAAS4e,OAAOt4G,SAYpB,WAAc,QAAoB,MAAO,GAAa,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAY1I,EAAMoiG,SAAS4e,OAAQ1S,KACnK,WAAc,QAAoB,UAAW,CAClD7tG,IAAK6tG,EAAMl6F,GACX5U,OAAO,QAAgB,CAAC,gBAAiB,CACvCyE,UAAWhE,EAASihH,iBAAiB5S,OAEtC,EAAC,QAAoB,MAAO,GAAa,EAAC,QAAoB,OAAQ,IAAa,QAAiBA,EAAMA,OAAQ,IAAI,QAAoB,MAAO,GAAa,EAAC,QAAa/C,EAAmB,CAChM76F,KAAM,QACNpP,KAAM,QACL,CACDE,SAAS,QAAS,IAAM,IAAK3B,EAAO,MAAQA,EAAO,IAAM,EAAC,QAAiB,QAAS,OACpFyE,EAAG,IACDgqG,EAAM6S,SAAU,WAAc,QAAa5V,EAAmB,CAChE9qG,IAAK,EACLiQ,KAAM,SACL,CACDlP,SAAS,QAAS,IAAM,IAAK3B,EAAO,MAAQA,EAAO,IAAM,EAAC,QAAiB,OAAQ,OACnFyE,EAAG,MACC,QAAoB,IAAI,QAAW,QAAoB,MAAO,GAAa,EAAC,QAAoB,MAAO,GAAa,EAAC,QAAapE,EAA8B,CACpKa,KAAM,YACJ,QAAoB,OAAQ,MAAM,QAAiBd,EAASmhH,aAAa9S,EAAM+S,aAAc,QAAQ,QAAoB,MAAO,GAAa,EAAC,QAAa3yG,EAAsB,CACnLpN,KAAM,UACNy5B,KAAM,GACNrqB,KAAM,QACN2C,QAASrT,EAAM2gH,UAAYrS,EAAMl6F,GACjCnQ,SAAUjE,EAAMs0G,UAAYt0G,EAAM2gH,UAAY1gH,EAASihH,iBAAiB5S,GACxE1tG,QAASC,GAAUZ,EAASqhH,UAAUhT,IACrC,CACD9sG,SAAS,QAAS,IAAM,CAACxB,EAAM2gH,UAAYrS,EAAMl6F,KAAM,WAAc,QAAalU,EAA8B,CAC9GO,IAAK,EACLM,KAAM,WACF,QAAoB,IAAI,IAAO,SAAiB,QAAiBnB,EAAKoB,GAAG,eAAgB,KAC/FsD,EAAG,GACF,KAAM,CAAC,UAAW,WAAY,aAAa,QAAaoK,EAAsB,CAC/EpN,KAAM,UACNy5B,KAAM,GACNrqB,KAAM,QACNzM,SAAUjE,EAAMs0G,UAAYt0G,EAAM2gH,QAClC//G,QAASC,GAAUZ,EAASghH,UAAU3S,IACrC,CACD9sG,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,UACJ,SAAiB,QAAiBnB,EAAKoB,GAAG,eAAgB,KAC9DsD,EAAG,GACF,EAAG,CAAC,WAAY,aAAa,QAAaoK,EAAsB,CACjEpN,KAAM,SACNy5B,KAAM,GACNrqB,KAAM,QACNzM,SAAUjE,EAAMs0G,UAAYt0G,EAAM2gH,QAClC//G,QAASC,GAAUZ,EAASshH,YAAYjT,EAAMl6F,KAC7C,CACD5S,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,eACJ,SAAiB,QAAiBnB,EAAKoB,GAAG,iBAAkB,KAChEsD,EAAG,GACF,EAAG,CAAC,WAAY,eAAgB,KACjC,WApEoD,WAAc,QAAoB,MAAO,GAAa,EAAC,QAAoB,OAAQ,GAAa,EAAC,QAAapE,EAA8B,CAClMa,KAAM,aACF,QAAoB,OAAQ,IAAa,QAAiBnB,EAAKoB,GAAG,mBAAoB,IAAI,QAAa0N,EAAsB,CACjIpN,KAAM,UACNwR,MAAO,GACP7O,SAAUjE,EAAMs0G,SAAWt0G,EAAMoiG,SAASse,UAAUh4G,OACpD9H,QAASf,EAAO,KAAOA,EAAO,GAAKgB,GAAUZ,EAASghH,cACrD,CACDz/G,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,UACJ,SAAiB,QAAiBnB,EAAKoB,GAAG,mBAAoB,KAClEsD,EAAG,GACF,EAAG,CAAC,qBAwDW,QAAoB,KAAM,IAAa,QAAiB1E,EAAKoB,GAAG,kBAAmB,IAAI,QAAa8qG,EAAoB,CACxI,cAAe,QACftsG,MAAO,cACPyE,SAAUjE,EAAMs0G,QACf,CACD9yG,SAAS,QAAS,IAAM,EAAC,QAAamqG,EAAyB,KAAM,CACnEh7F,OAAO,QAAS,IAAM,EAAC,SAAiB,QAAiB/Q,EAAKoB,GAAG,oBAAsB,IAAK,IAAI,QAAa6C,EAAuB,CAClIO,UAAW,SACV,CACDD,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBvE,EAAKoB,GAAG,qBAAuB,IAAK,GAAInB,EAAO,MAAQA,EAAO,KAAM,QAAoB,OAAQ,KAAM,wCAAyC,MAC1M2B,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,kBACNvB,MAAO,gBAET8E,EAAG,MAEL9C,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMwhH,OAClB,sBAAuB3hH,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAMwhH,OAAS3gH,GAC1ES,KAAM,WACNmgH,KAAM,EACNC,UAAW,OACX,kBAAmB,IAClB,KAAM,EAAG,CAAC,gBAAgB,QAAahzG,EAAsB,CAC9DlP,MAAO,eACPoB,QAASf,EAAO,KAAOA,EAAO,GAAKgB,GAAUb,EAAMwhH,OAASxhH,EAAM2hH,gBACjE,CACDngH,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB5B,EAAKoB,GAAG,sBAAuB,KAC1FsD,EAAG,MAELA,EAAG,MAELA,EAAG,GACF,EAAG,CAAC,cAAc,QAAoB,KAAM,IAAa,QAAiB1E,EAAKoB,GAAG,kBAAmB,IAAI,QAAa8qG,EAAoB,CAC3IwC,MAAOruG,EAAS2hH,QAChB,cAAe,QACf39G,SAAUjE,EAAMs0G,QACf,CACD9yG,SAAS,QAAS,IAAM,EAAC,QAAamqG,EAAyB,CAC7Dh7F,MAAO/Q,EAAKoB,GAAG,wBACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAagqG,EAAsB,CAC1D1jG,WAAY7H,EAAS2hH,QAAQ/kD,QAC7B,sBAAuBh9D,EAAO,MAAQA,EAAO,IAAMgB,GAAUZ,EAAS2hH,QAAQ/kD,QAAUh8D,IACvF,KAAM,EAAG,CAAC,iBACbyD,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,oBACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAakqG,EAAsB,CAC1D5jG,WAAY7H,EAAS2hH,QAAQC,QAC7B,sBAAuBhiH,EAAO,MAAQA,EAAO,IAAMgB,GAAUZ,EAAS2hH,QAAQC,QAAUhhH,IACvF,CACDW,SAAS,QAAS,IAAM,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYvB,EAAS6hH,aAActpG,KAC3G,WAAc,QAAaizF,EAAsB,CACtDhrG,IAAK+X,EAAEpE,GACPzD,MAAO,GAAG6H,EAAE81F,OAAS91F,EAAEpE,QAAQnU,EAASmhH,aAAa5oG,EAAE6oG,cACvDv6G,MAAO0R,EAAEpE,GACTnQ,UAAWhE,EAASihH,iBAAiB1oG,IACpC,KAAM,EAAG,CAAC,QAAS,QAAS,eAC7B,QACJlU,EAAG,GACF,EAAG,CAAC,iBACPA,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,mBACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAakqG,EAAsB,CAC1D5jG,WAAY7H,EAAS2hH,QAAQG,SAC7B,sBAAuBliH,EAAO,MAAQA,EAAO,IAAMgB,GAAUZ,EAAS2hH,QAAQG,SAAWlhH,IACxF,CACDW,SAAS,QAAS,IAAM,EAAC,QAAaiqG,EAAsB,CAC1D96F,MAAO,KACP7J,MAAO,WACL,QAAa2kG,EAAsB,CACrC96F,MAAO,UACP7J,MAAO,SAETxC,EAAG,GACF,EAAG,CAAC,iBACPA,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,kBACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaqqG,EAA4B,CAChE/jG,WAAY7H,EAAS2hH,QAAQI,QAC7B,sBAAuBniH,EAAO,MAAQA,EAAO,IAAMgB,GAAUZ,EAAS2hH,QAAQI,QAAUnhH,GACxFuU,IAAK,EACLD,IAAK,IACJ,KAAM,EAAG,CAAC,iBACb7Q,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,KAAM,CAC5Dh7F,OAAO,QAAS,IAAM,EAAC,SAAiB,QAAiB/Q,EAAKoB,GAAG,qBAAsB,IAAI,QAAa6C,EAAuB,CAC7HM,QAASvE,EAAKoB,GAAG,wBACjBoD,UAAW,SACV,CACD5C,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,kBACNvB,MAAO,gBAET8E,EAAG,GACF,EAAG,CAAC,cACP9C,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMiiH,WAClB,sBAAuBpiH,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMiiH,WAAaphH,GAChFS,KAAM,WACNmgH,KAAM,GACL,KAAM,EAAG,CAAC,iBACbn9G,EAAG,MAELA,EAAG,GACF,EAAG,CAAC,QAAS,cAAc,QAAa4vG,EAA+B,CACxE78E,MAAOr3B,EAAMqT,UAAYrT,EAAMkiH,wBAA0BliH,EAAMmiH,mBAC/D9uG,QAASrT,EAAMs0G,OACfV,MAAOh0G,EAAKg4G,kBACZh3G,QAASX,EAAS4/B,MACjB,KAAM,EAAG,CAAC,OAAQ,UAAW,QAAS,eAAiB7/B,EAAMoiH,YAAa,WAAc,QAAa/B,EAAqB,CAC3H5/G,IAAK,EACLoQ,MAAO7Q,EAAMoiH,UACb9gH,KAAM,QACN+gH,UAAU,GACT,KAAM,EAAG,CAAC,YAAa,QAAoB,IAAI,IAAO,QAAavzG,EAAsB,CAC1FhH,WAAY9H,EAAMkiH,sBAClB,sBAAuBriH,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMkiH,sBAAwBrhH,GAC3FgQ,MAAOjR,EAAKoB,GAAGhB,EAAMsiH,gBAAkB,qBAAuB,qBAC9DrgH,MAAO,mBACPzC,MAAO,YACP,mBAAoB,GACpB0uG,SAAUruG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMuiH,cAAgB,OACrE,CACD97B,QAAQ,QAAS,IAAM,EAAC,QAAa/3E,EAAsB,CACzD9N,QAASf,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMkiH,uBAAwB,IAC5E,CACD1gH,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB5B,EAAKoB,GAAG,iBAAkB,KACrFsD,EAAG,KACD,QAAaoK,EAAsB,CACrCpN,KAAM,UACNV,QAASX,EAASuiH,iBACjB,CACDhhH,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB5B,EAAKoB,GAAGhB,EAAMsiH,gBAAkB,gBAAkB,qBAAsB,KACnIh+G,EAAG,GACF,EAAG,CAAC,cACP9C,SAAS,QAAS,IAAM,CAACxB,EAAMuiH,gBAAiB,WAAc,QAAazW,EAAoB,CAC7FrrG,IAAK,EACLL,IAAK,eACLkuG,MAAOtuG,EAAMuiH,cACbhU,MAAOtuG,EAASwiH,cAChB,iBAAkB,MAClBjjH,MAAO,eACN,CACDgC,SAAS,QAAS,IAAM,EAAC,QAAamqG,EAAyB,CAC7Dh7F,MAAO/Q,EAAKoB,GAAG,cACf8kC,KAAM,QACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMuiH,cAAcnhH,KAChC,sBAAuBvB,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMuiH,cAAcnhH,KAAOP,GACxF6gH,UAAW,OACV,KAAM,EAAG,CAAC,iBACbp9G,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,mBACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD,cAAe,2BACf3nG,SAAU,OAEZK,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO,WACPm1B,KAAM,WACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMuiH,cAAc7U,QAChC,sBAAuB7tG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMuiH,cAAc7U,QAAU7sG,GAC3FmqG,YAAa,yBACb0W,UAAW,OACV,KAAM,EAAG,CAAC,iBACbp9G,EAAG,KACD,QAAaqnG,EAAyB,CACxC7lE,KAAM,SACNtmC,MAAO,iBACN,CACDmR,OAAO,QAAS,IAAM,CAAC9Q,EAAO,MAAQA,EAAO,KAAM,QAAiB,WAAY,KAAK,QAAagE,EAAuB,CACvHM,QAASvE,EAAKoB,GAAG,wBACjBoD,UAAW,OACV,CACD5C,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,kBACNvB,MAAO,gBAET8E,EAAG,GACF,EAAG,CAAC,cACP9C,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMuiH,cAAcG,OAChC,sBAAuB7iH,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMuiH,cAAcG,OAAS7hH,GAC1FS,KAAM,WACN,gBAAiB,GACjBqzG,aAAc,eACd3J,YAAahrG,EAAMuiH,cAAcI,WAAWC,WAAahjH,EAAKoB,GAAG,sBAAwBpB,EAAKoB,GAAG,kBACjG0gH,UAAW,OACXz9G,UAAWjE,EAAM6iH,qBAAuB7iH,EAAMuiH,cAAcO,aAC3D,KAAM,EAAG,CAAC,aAAc,cAAe,eAC1Cx+G,EAAG,IACDtE,EAAMsiH,iBAAmBtiH,EAAMuiH,cAAcI,WAAWC,aAAc,WAAc,QAAajX,EAAyB,CAC5HlrG,IAAK,EACLqlC,KAAM,eACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAauyG,EAAwB,CAC5DjsG,WAAY9H,EAAMuiH,cAAcO,YAChC,sBAAuBjjH,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMuiH,cAAcO,YAAcjiH,GAC/FoD,UAAWjE,EAAM6iH,qBAChB,CACDrhH,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB5B,EAAKoB,GAAG,mBAAoB,KACvFsD,EAAG,GACF,EAAG,CAAC,aAAc,eACrBA,EAAG,MACC,QAAoB,IAAI,IAAO,QAAaqnG,EAAyB,CACzEh7F,MAAO/Q,EAAKoB,GAAG,kBACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAagqG,EAAsB,CAC1D1jG,WAAY9H,EAAMuiH,cAAc1lD,QAChC,sBAAuBh9D,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMuiH,cAAc1lD,QAAUh8D,IAC1F,KAAM,EAAG,CAAC,iBACbyD,EAAG,GACF,EAAG,CAAC,YACPA,EAAG,GACF,EAAG,CAAC,QAAS,YAAa,QAAoB,IAAI,KACrDA,EAAG,GACF,EAAG,CAAC,aAAc,WAAW,QAAawK,EAAsB,CACjEhH,WAAY9H,EAAMmiH,mBAClB,sBAAuBtiH,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMmiH,mBAAqBthH,GACxFgQ,MAAOjR,EAAKoB,GAAGhB,EAAM+iH,aAAe,kBAAoB,kBACxD9gH,MAAO,mBACPzC,MAAO,YACP,mBAAoB,GACpB0uG,SAAUruG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMgjH,WAAa,OAClE,CACDv8B,QAAQ,QAAS,IAAM,EAAC,QAAa/3E,EAAsB,CACzD9N,QAASf,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMmiH,oBAAqB,IACzE,CACD3gH,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB5B,EAAKoB,GAAG,iBAAkB,KACrFsD,EAAG,KACD,QAAaoK,EAAsB,CACrCpN,KAAM,UACNV,QAASX,EAASgjH,cACjB,CACDzhH,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB5B,EAAKoB,GAAGhB,EAAM+iH,aAAe,gBAAkB,qBAAsB,KAChIz+G,EAAG,GACF,EAAG,CAAC,cACP9C,SAAS,QAAS,IAAM,CAACxB,EAAMgjH,aAAc,WAAc,QAAalX,EAAoB,CAC1FrrG,IAAK,EACLL,IAAK,YACLkuG,MAAOtuG,EAAMgjH,WACbzU,MAAOtuG,EAASijH,WAChB,iBAAkB,MAClB1jH,MAAO,eACN,CACDgC,SAAS,QAAS,IAAM,EAAC,QAAamqG,EAAyB,CAC7Dh7F,MAAO/Q,EAAKoB,GAAG,kBACf8kC,KAAM,cACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAakqG,EAAsB,CAC1D5jG,WAAY9H,EAAMgjH,WAAW3B,WAC7B,sBAAuBxhH,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMgjH,WAAW3B,WAAaxgH,IAC1F,CACDW,SAAS,QAAS,IAAM,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYxB,EAAMoiG,SAASse,UAAWt6F,KAC9G,WAAc,QAAaqlF,EAAsB,CACtDhrG,IAAK2lB,EAAEhS,GACPzD,MAAOyV,EAAEhlB,MAAQglB,EAAEhS,GACnBtN,MAAOsf,EAAEhS,IACR,KAAM,EAAG,CAAC,QAAS,YACpB,QACJ9P,EAAG,GACF,EAAG,CAAC,iBACPA,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,mBACf8kC,KAAM,SACL,CACDtkC,SAAS,QAAS,IAAM,EAAC,QAAaoqG,EAAqB,CACzD9jG,WAAY9H,EAAMgjH,WAAW1U,MAC7B,sBAAuBzuG,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMgjH,WAAW1U,MAAQztG,GACtF6gH,UAAW,OACV,KAAM,EAAG,CAAC,iBACbp9G,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,CACtDh7F,MAAO/Q,EAAKoB,GAAG,iBACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAagqG,EAAsB,CAC1D1jG,WAAY9H,EAAMgjH,WAAW7B,OAC7B,sBAAuBthH,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMgjH,WAAW7B,OAAStgH,IACtF,KAAM,EAAG,CAAC,iBACbyD,EAAG,GACF,EAAG,CAAC,WAAW,QAAaqnG,EAAyB,KAAM,CAC5Dh7F,OAAO,QAAS,IAAM,EAAC,SAAiB,QAAiB/Q,EAAKoB,GAAG,mBAAoB,IAAI,QAAa6C,EAAuB,CAC3HO,UAAW,OACV,CACDD,SAAS,QAAS,IAAM,EAAC,QAAoB,OAAQ,IAAa,QAAiBvE,EAAKoB,GAAG,uBAAwB,KACnHQ,SAAS,QAAS,IAAM,EAAC,QAAatB,EAA8B,CAClEa,KAAM,kBACNvB,MAAO,gBAET8E,EAAG,MAEL9C,SAAS,QAAS,IAAM,EAAC,QAAakqG,EAAsB,CAC1D5jG,WAAY9H,EAAMgjH,WAAWG,iBAC7B,sBAAuBtjH,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMgjH,WAAWG,iBAAmBtiH,IAChG,CACDW,SAAS,QAAS,IAAM,EAAC,QAAaiqG,EAAsB,CAC1D96F,MAAO/Q,EAAKoB,GAAG,oBACf8F,MAAO,QACN,KAAM,EAAG,CAAC,WAAW,QAAa2kG,EAAsB,CACzD96F,MAAO/Q,EAAKoB,GAAG,0BACf8F,MAAO,QACN,KAAM,EAAG,CAAC,YACbxC,EAAG,GACF,EAAG,CAAC,iBACPA,EAAG,KACD,QAAaqnG,EAAyB,CACxCh7F,MAAO/Q,EAAKoB,GAAG,uBACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAaqqG,EAA4B,CAChE/jG,WAAY9H,EAAMgjH,WAAWI,gBAC7B,sBAAuBvjH,EAAO,MAAQA,EAAO,IAAMgB,GAAUb,EAAMgjH,WAAWI,gBAAkBviH,GAChGuU,IAAK,GACLD,IAAK,MACJ,KAAM,EAAG,CAAC,iBACb7Q,EAAG,GACF,EAAG,CAAC,YACPA,EAAG,GACF,EAAG,CAAC,QAAS,YAAa,QAAoB,IAAI,KACrDA,EAAG,GACF,EAAG,CAAC,aAAc,aAAc,CAAC,CAAC6K,EAAoBnP,EAAMqT,UACjE,C,gBCpoBA,MAAMgwG,GAAY,wBACZC,GAAQ55E,GAAUA,GAAU65E,WAAWhiB,QAAQiiB,eAAez/F,QAAQ,KAAM,KAAOrc,KAAK6vC,MAAMpwB,SAAS,IAAM7U,KAAK4uF,SAAS/5E,SAAS,IAAIE,MAAM,IACpJ,QACE8yF,OAAQ,CAACC,IACTh5G,KAAM,WACNmjG,WAAY,CACV8V,mBAAkB,IAEpB,IAAA34G,GACE,MAAO,CACL0gG,SAAU,KACV/uF,SAAS,EACTihG,QAAQ,EACRqM,QAAS,GACTyB,UAAW,GACXZ,OAAQ,GACRG,cAAe,GACfM,WAAY,GACZY,qBAAqB,EACrBX,uBAAuB,EACvBC,oBAAoB,EACpBI,cAAe,KACfS,WAAY,KACZV,iBAAiB,EACjBS,cAAc,EAElB,EACAnhH,SAAU,CACR,gBAAAq4G,GACE,OAAOj4G,KAAKogG,SAAWpgG,KAAKyhH,UAAY,IAC1C,EACA,OAAA7B,GACE,OAAO5/G,KAAKogG,SAASshB,aAAa,aACpC,EACA,YAAA5B,GACE,OAAO9/G,KAAKogG,UAAU4e,OAAO52E,OAAOkkE,GAASA,EAAM6S,SAAW,EAChE,EACA,qBAAAwC,GACE,OAAO3hH,KAAK8/G,aAAa13E,OAAOkkE,GAAStsG,KAAKk/G,iBAAiB5S,GACjE,EACA,aAAAmU,GACE,MAAO,CACLrhH,KAAM,CAACY,KAAK4hH,aAAa5hH,KAAKhB,GAAG,gBACjC0sG,QAAS,CAAC1rG,KAAK4hH,aAAa,YAAa,CACvChJ,UAAW,CAACiJ,EAAO/8G,EAAOmhB,KACxB,IACE,MAAM06E,EAAM,IAAIC,IAAI97F,GACpB,IAAK,CAAC,SAAU,SAAS8yB,SAAS+oE,EAAImhB,WAAanhB,EAAI2M,UAAY3M,EAAI4M,UAAY5M,EAAIohB,QAAUphB,EAAIqhB,KAAM,MAAM,IAAIj6E,MACrH9hB,GACF,CAAE,MACAA,EAAS,IAAI8hB,MAAM/nC,KAAKhB,GAAG,qBAC7B,GAEFq5D,QAAS,SAEXqoD,OAAQ,CAAC,CACP9H,UAAW,CAACiJ,EAAO/8G,EAAOmhB,IACnBjmB,KAAK6gH,oBACL7gH,KAAKugH,eAAeI,WAAWC,YAAe5gH,KAAKugH,eAAeO,aAAgBh8G,GAAOtB,YAC9FyiB,IAD6GA,EAAS,IAAI8hB,MAAM/nC,KAAKhB,GAAG,oBADlGinB,EAAS,IAAI8hB,MAAM/nC,KAAKhB,GAAG,0BAInEq5D,QAAS,SAGf,EACA,UAAA6oD,GACE,MAAO,CACL7B,WAAY,CAACr/G,KAAK4hH,aAAa5hH,KAAKhB,GAAG,oBACvCstG,MAAO,CAACtsG,KAAK4hH,aAAa5hH,KAAKhB,GAAG,qBAEtC,GAEFkB,MAAO,CACL,qBAAAyhH,GACE3hH,KAAKiiH,kBACP,GAEF,aAAM1gH,GACJ,IACEvB,KAAKkiH,gBAAgB,SAAQ,4BAC/B,CAAE,MAAOt3C,GACP5qE,KAAKogH,UAAYpgH,KAAKmiH,UAAUv3C,EAClC,CAAE,QACA5qE,KAAKqR,SAAU,CACjB,CACF,EACAhR,QAAS,CACP,SAAA8hH,CAAUv3C,GACR,OAAO,SAAYA,EAAO5qE,KAAKhB,GAAIgB,KAAKoiH,IAC1C,EACA,SAAAF,CAAUjqE,GACRj4C,KAAK6gH,oBAAsB5oE,EAAO4oE,oBAClC7gH,KAAK2/G,cAAgB1nE,EAAOvjB,SAAS2tF,UACrCriH,KAAKw/G,OAASvnE,EAAOqqE,gBAAgBjB,KAAYkB,UAAYviH,KAAK2/G,cAClE3/G,KAAKigH,WAAahoE,EAAOypE,aAAa,cAAcc,cAAcx6E,KAAK,MACvEhoC,KAAKogG,SAAWnoD,EAChBj4C,KAAKk4G,mBACP,EACA,OAAAuJ,GACE,MAAMxpE,EAAS9hB,KAAK+S,MAAM/S,KAAKC,UAAUp2B,KAAKogG,WAO9C,OANAnoD,EAAOqqE,gBAAkBtiH,KAAKw/G,SAAWx/G,KAAK2/G,cAAgB,CAAC,EAAI,CACjE,CAAC0B,IAAY,CACXkB,SAAUviH,KAAKw/G,SAGnBvnE,EAAOypE,aAAa,cAAcc,cAAgBxiH,KAAKigH,WAAW93F,MAAM,UAAUjS,IAAIusG,GAAOA,EAAIj/G,QAAQ4kC,OAAO3oC,SACzGw4C,CACT,EACA,YAAA2pE,CAAattE,GACX,MAAO,CACLmjD,UAAU,EACVirB,YAAY,EACZ7xG,QAAS7Q,KAAKhB,GAAG,iBAAkB,CACjCs1C,UAEF+jB,QAAS,OAEb,EACA,YAAA+mD,CAAahtG,GACX,OAAOpS,KAAKogG,SAASse,UAAU12D,KAAK62D,GAAYA,EAASzsG,KAAOA,IAAKhT,MAAQgT,CAC/E,EACA,gBAAA8sG,CAAiB5S,GACf,OAAOtsG,KAAKogG,UAAUse,UAAUp1C,KAAKu1C,GAAYA,EAASzsG,KAAOk6F,EAAM+S,YAAcR,EAAShkD,WAAY,CAC5G,EACA,gBAAAonD,GACE,IAAKjiH,KAAKogG,UAAYpgG,KAAK2hH,sBAAsBr4C,KAAKgjC,GAASA,EAAMl6F,KAAOpS,KAAK4/G,QAAQC,SAAU,OACnG,MAAM8C,IAAqB3iH,KAAK4/G,QAAQC,QACxC7/G,KAAK4/G,QAAQC,QAAU7/G,KAAK2hH,sBAAsB,IAAIvvG,IAAM,IACvDpS,KAAK4/G,QAAQC,SAAW8C,IAAkB3iH,KAAK4/G,QAAQ/kD,SAAU,EACxE,EACA,UAAAikD,CAAWD,GACT,GAAIA,EAASiC,YAAa,OAAO9gH,KAAKhB,GAAG,0BACzC,MAAMP,EAAMogH,EAAS6B,QAAQl9G,OAC7B,OAAI/E,EAAYA,EAAIiI,OAAS,EAAI,GAAGjI,EAAI4mB,MAAM,EAAG,WAAW5mB,EAAI4mB,OAAO,KAAO,SACvEw5F,EAAS8B,WAAWiC,YAAc/D,EAAS8B,WAAWC,WAAa,SAAW5gH,KAAKhB,GAAG,0BAC/F,EACA,YAAA4/G,CAAaC,GACP7+G,KAAKsyG,QAAUtyG,KAAK2+G,UAAYE,GAAY7+G,KAAKogG,SAASse,UAAUh4G,QAAU,IAClF1G,KAAKsgH,kBAAoBzB,EACzB7+G,KAAKugH,cAAgB1B,EAAW1oF,KAAK+S,MAAM/S,KAAKC,UAAUyoF,IAAa,CACrEzsG,GAAIkvG,GAAM,aACVliH,KAAM,GACN0iH,SAAU,oBACVpW,QAAS,GACT7wC,SAAS,EACT8lD,WAAY,CACV55F,OAAQ,SACR65F,YAAY,IAGhB5gH,KAAKugH,cAAcI,WAAa,CAC9B55F,OAAQ,SACR65F,WAAsD,WAA1C5gH,KAAKugH,cAAcI,YAAY55F,UAAyB/mB,KAAKugH,cAAcI,WAAWC,WAClGgC,UAAW5iH,KAAKugH,cAAcI,YAAYiC,WAAa,IAEzD5iH,KAAKkgH,uBAAwB,EAC/B,EACA,qBAAMM,GACJ,UAAYxgH,KAAKU,MAAMmiH,aAAarS,WAAWS,MAAM,KAAM,GAAS,OACpE,MAAM4N,EAAW1oF,KAAK+S,MAAM/S,KAAKC,UAAUp2B,KAAKugH,gBAChD1B,EAASz/G,KAAOy/G,EAASz/G,KAAKoE,OAC9Bq7G,EAASnT,QAAUmT,EAASnT,QAAQloG,OACpC,MAAM9E,EAAQsB,KAAKogG,SAASse,UAAUvtF,UAAU3yB,GAAQA,EAAK4T,KAAOysG,EAASzsG,IACzE1T,EAAQ,EAAGsB,KAAKogG,SAASse,UAAUr2F,KAAKw2F,GAAe7+G,KAAKogG,SAASse,UAAU/vF,OAAOjwB,EAAO,EAAGmgH,GACpG7+G,KAAKkgH,uBAAwB,CAC/B,EACA,cAAAnB,CAAe3sG,GACTpS,KAAKogG,SAAS4e,OAAO11C,KAAKgjC,GAASA,EAAM+S,aAAejtG,GAC1DpS,KAAKgnG,SAASC,QAAQjnG,KAAKhB,GAAG,wBAGhCgB,KAAKogG,SAASse,UAAY1+G,KAAKogG,SAASse,UAAUt2E,OAAOy2E,GAAYA,EAASzsG,KAAOA,EACvF,EACA,SAAA6sG,CAAU3S,GACJtsG,KAAKsyG,QAAUtyG,KAAK2+G,UAAY3+G,KAAKogG,SAASse,UAAUh4G,SAAW4lG,GAAStsG,KAAKogG,SAAS4e,OAAOt4G,QAAU,KAC/G1G,KAAK+gH,eAAiBzU,EACtBtsG,KAAKghH,WAAa1U,EAAQn2E,KAAK+S,MAAM/S,KAAKC,UAAUk2E,IAAU,CAC5Dl6F,GAAIkvG,GAAM,UACVjC,WAAYr/G,KAAKogG,SAASse,UAAU,GAAGtsG,GACvCk6F,MAAO,GACP6S,QAAQ,EACRgC,iBAAkB,OAClBC,gBAAiB,KAEnBphH,KAAKmgH,oBAAqB,EAC5B,EACA,kBAAMc,GACJ,UAAYjhH,KAAKU,MAAMoiH,UAAUtS,WAAWS,MAAM,KAAM,GAAS,OACjE,MAAM3E,EAAQn2E,KAAK+S,MAAM/S,KAAKC,UAAUp2B,KAAKghH,aAC7C1U,EAAMA,MAAQA,EAAMA,MAAM9oG,OAC1B,MAAM9E,EAAQsB,KAAKogG,SAAS4e,OAAO7tF,UAAU3yB,GAAQA,EAAK4T,KAAOk6F,EAAMl6F,IACnE1T,EAAQ,EAAGsB,KAAKogG,SAAS4e,OAAO32F,KAAKikF,GAAYtsG,KAAKogG,SAAS4e,OAAOrwF,OAAOjwB,EAAO,EAAG4tG,GAC3FtsG,KAAKiiH,mBACLjiH,KAAKmgH,oBAAqB,CAC5B,EACA,WAAAZ,CAAYntG,GACVpS,KAAKogG,SAAS4e,OAASh/G,KAAKogG,SAAS4e,OAAO52E,OAAOkkE,GAASA,EAAMl6F,KAAOA,GACzEpS,KAAKiiH,kBACP,EACA,UAAMpkF,GACJ,IAAI79B,KAAKsyG,OAAT,CACAtyG,KAAKsyG,QAAS,EACd,IACEtyG,KAAKkiH,gBAAgB,SAAQ,2BAA4B,CACvD7zF,OAAQ,OACR0wE,QAAS,CACP,eAAgB,oBAElBva,KAAMruD,KAAKC,UAAUp2B,KAAKyhH,cAE5BzhH,KAAKgnG,SAAS7J,QAAQn9F,KAAKhB,GAAG,eAChC,CAAE,MAAO4rE,GACP5qE,KAAKgnG,SAASp8B,MAAM5qE,KAAKmiH,UAAUv3C,GACrC,CAAE,QACA5qE,KAAKsyG,QAAS,CAChB,CAfuB,CAgBzB,EACA,eAAMgN,CAAUhT,GACd,IAAItsG,KAAKsyG,SAAUtyG,KAAK2+G,SAAY3+G,KAAKk/G,iBAAiB5S,GAA1D,CACAtsG,KAAK2+G,QAAUrS,EAAMl6F,GACrB,IACE,MAAMiY,QAAe,SAAQ,sBAAuB,CAClDgE,OAAQ,OACR0wE,QAAS,CACP,eAAgB,oBAElBva,KAAMruD,KAAKC,UAAU,CACnB6hB,OAAQj4C,KAAKyhH,UACb5B,QAASvT,EAAMl6F,OAGnBpS,KAAKgnG,SAAS7J,QAAQn9F,KAAKhB,GAAG,oBAAqB,CACjD8gG,GAAIz1E,EAAO04F,YAEf,CAAE,MAAOn4C,GACP5qE,KAAKgnG,SAASp8B,MAAM5qE,KAAKmiH,UAAUv3C,GACrC,CAAE,QACA5qE,KAAK2+G,QAAU,EACjB,CApBwE,CAqB1E,ICjPJ,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,YCCA,IACEv/G,KAAM,eACN+4G,OAAQ,CAAC6K,GAAA,GACT,IAAAtjH,GACE,MAAO,CACLf,YAAa,SACb4D,mBAAmB,EAEvB,EACArC,MAAO,CAEL,cAAe,CACb0G,WAAW,EACX,OAAAC,CAAQo8G,GACNjjH,KAAKrB,YAAcskH,EAAQlhG,QAAQ,IAAK,IACxCjiB,OAAOojH,SAAS,EAAG,EACrB,GAEF,WAAAvkH,CAAYwkH,GAEV,MAAMnB,EAAO,IAAImB,IACjBnjH,KAAKk7G,QAAQ7yF,KAAK,CAChB25F,QAEJ,GAEFzf,WAAY,CACV6gB,cAAa,IACbC,cAAa,EACbC,aAAY,GACZC,aAAY,GACZC,eAAc,GACdC,WAAU,GACVC,aAAY,GACZC,SAAQ,IAEV/jH,SAAU,CACR,cAAAsC,GACE,OAAOpC,OAAOC,WAAa,GAC7B,EAEA,gBAAAyC,GACE,MAAMw/G,EAAOhiH,KAAK4jH,OAAO5B,KAAKjgG,QAAQ,IAAK,IAC3C,OAAQigG,GACN,IAAK,SACH,OAAOsB,GACT,IAAK,SACH,OAAOC,GACT,IAAK,WACH,OAAOC,GACT,IAAK,OACH,OAAOC,GACT,IAAK,SACH,OAAOC,GACT,IAAK,KACH,OAAOC,GACT,QACE,OAAOL,GAEb,GAEFjjH,QAAS,CACP,YAAAgC,GACE,MAAMs+F,EAA8C,mBACpDkjB,MAAMljB,EAAK,CACTtyE,OAAQ,OACRy1F,YAAa,UACb/kB,QAAS,CACP,eAAgB,oBAElBva,KAAMruD,KAAKC,UAAU,CACnB2tF,SAAU,YAEXrS,QAAQ,KACT1xG,KAAKg7G,OAAOC,OAAO,oBAAoB,GACvCj7G,KAAKk7G,QAAQ7yF,KAAK,gBAEtB,EAEA,cAAA27F,GACE,MAAMC,EAAc,UACpBnkH,OAAOokH,SAASlC,KAAOiC,EACvBjkH,KAAKrB,YAAcslH,EAAYliG,QAAQ,IAAK,GAC9C,GAEF,OAAAxgB,GAEEvB,KAAKmkH,qBAAqB,aAAc,cAAc,GAAO,GAGxDrkH,OAAOokH,SAASlC,MACnBhiH,KAAKgkH,gBAET,GC/FF,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,GAAQ,CAAC,YAAY,qBAEzF,S,kdCRO,MAAMI,EAAoB,OAC3BC,EAAqB,SAC3B,SAASC,EAAWhoB,GAChB,GAAIA,GAAQC,QAAS,MAAM,IAAIgoB,aAAa,YAAa,aAC7D,CAEO,SAASC,EAAY55C,EAAOprC,EAAWilF,GAC1C,MAAMppB,EAAOzwB,GAAOywB,MAAQzwB,GAAO/5D,QAC7BpS,EAAM,YAAY48F,IAClBxqF,EAAU4zG,EAAehmH,GACzB+gC,EAAU/gC,EAAK,CAAEyR,OAAQ06D,EAAM2wB,SAASrrF,QAAU06D,EAAM16D,SACxDsvB,EAAU,0BACV+7D,EAAU,CAAC,OAAQ,OAAQ,aAAanzD,OAAOkM,GAASs2B,GAAO2wB,UAAUjnD,IAC1Ep+B,IAAIo+B,GAAS,GAAG9U,EAAU,YAAY8U,SAAas2B,EAAM2wB,QAAQjnD,MACtE,OAAOinD,EAAQ70F,OAAS,GAAGmK,MAAY0qF,EAAQvzD,KAAK,SAAWn3B,CACnE,CAEA,MAAM6zG,EAAc95C,IAAS,CAAGywB,KAAMzwB,EAAMywB,MAAQzwB,EAAM/5D,QAASA,QAAS+5D,EAAM/5D,WAAa+5D,EAAM2wB,QAAU,CAAEA,QAAS3wB,EAAM2wB,SAAY,CAAC,IAEtIiW,eAAemT,EAAQhkB,EAAKxxF,EAAU,CAAC,GAC1C,MAAMqtF,QAAiBO,EAAAA,EAAAA,GAAc4D,EAAKxxF,GAC1C,IAAIzP,EACJ,IAAMA,QAAa88F,EAASU,MAAQ,CACpC,MACI,MAAMtyB,EAAQ,IAAI7iC,MAAM,QAAQy0D,EAAStsF,UAGzC,MAFA06D,EAAMywB,KAA2B,MAApBmB,EAAStsF,OAAiB,gBAAkBssF,EAAS36E,GAAK,mBAAqB,aAC5F+oD,EAAM2wB,QAAU,CAAErrF,OAAQssF,EAAStsF,QAC7B06D,CACV,CACA,IAAKlrE,GAAwB,kBAATA,GAAqBqG,MAAMkQ,QAAQvW,GAAO,CAC1D,MAAMkrE,EAAQ,IAAI7iC,MAAM,oBAExB,MADA6iC,EAAMywB,KAAO,mBACPzwB,CACV,CACA,IAAK4xB,EAAS36E,GAAI,CACd,MAAM+oD,EAAQ,IAAI7iC,MAAMroC,EAAKkrE,OAAO/5D,SAAWnR,EAAKmR,SAAW,QAAQ2rF,EAAStsF,UAGhF,MAFA06D,EAAMywB,KAAO37F,EAAKkrE,OAAOywB,OAA6B,MAApBmB,EAAStsF,OAAiB,gBAAkB,cAC9E06D,EAAM2wB,QAAU,CAAErrF,OAAQssF,EAAStsF,UAAWxQ,EAAKkrE,OAAO2wB,SACpD3wB,CACV,CACA,OAAOlrE,CACX,CAEO8xG,eAAeoT,EAAiBrd,EAAMjL,GACzCgoB,EAAWhoB,GACX,MAAMh9F,EAAOioG,EAAK30F,UAAUo1F,UAAU5lF,cACtC,GAAI9iB,IAAS,CAAC,aAAc,YAAa,aAAc,aAAc,aAAas4B,SAASt4B,GAAO,MAAM,IAAIyoC,MAAM,qBAClH,GAAIviC,OAAO+hG,EAAK30F,UAAUiyG,eAAiBR,EAAoB,MAAM,IAAIt8E,MAAM,mBAC/E,MAAMgxC,EAAOwuB,EAAKnoG,KAAK+oB,MAAM,KAAKjS,IAAI4uG,oBAAoB98E,KAAK,KACzDw0D,QAAiBO,EAAAA,EAAAA,GAAc,SAAShkB,IAAQ,CAAEujB,WACxD,IAAKE,EAAS36E,GAAI,CACd,MAAM+oD,EAAQ,IAAI7iC,MAAM,QAAQy0D,EAAStsF,UAGzC,MAFA06D,EAAMywB,KAAO,qBACbzwB,EAAM2wB,QAAU,CAAErrF,OAAQssF,EAAStsF,QAC7B06D,CACV,CACA,GAAIplE,OAAOg3F,EAASuC,QAAQzoE,IAAI,mBAAqB+tF,EAEjD,YADM7nB,EAAShY,MAAMjuC,UACf,IAAIxO,MAAM,mBAEpB,MAAMg9E,EAASvoB,EAAShY,KAAKwgC,YACvB9mB,EAAS,GACf,IAAIxvF,EAAO,EACX,IACI,MAAO,EAAM,CACT41G,EAAWhoB,GACX,MAAM,MAAEx3F,EAAK,KAAEmgH,SAAeF,EAAOlhF,OACrC,GAAIohF,EAAM,MAEV,GADAv2G,GAAQ5J,EAAMogH,WACVx2G,EAAO21G,EAA6C,YAAjBU,EAAOxuE,SAAgB,IAAIxO,MAAM,mBACxEm2D,EAAO71E,KAAKvjB,EAChB,CACJ,CAAE,QAAUigH,EAAOI,aAAe,CAClC,MAAM1kB,EAAO,IAAIC,KAAKxC,EAAQ,CAAE5+F,KAAMk9F,EAASuC,QAAQzoE,IAAI,iBAAmBh3B,IAE9E,IAAI8lH,EAAOC,EADXf,EAAWhoB,GAEX,IACqC,oBAAtBgpB,kBAAkCF,QAAcE,kBAAkB7kB,IAEzE4kB,EAAYzkB,IAAIC,gBAAgBJ,GAChC2kB,EAAQ,IAAIG,YACN,IAAI1tE,QAAQ,CAACvT,EAASkhF,KACxBJ,EAAMK,OAASnhF,EACf8gF,EAAMM,QAAU,IAAMF,EAAO,IAAIz9E,MAAM,sBACvCq9E,EAAMjzG,IAAMkzG,KAGpBf,EAAWhoB,GACX,MAAMr8F,EAAQmlH,EAAMnlH,OAASmlH,EAAMO,aAC7B/mF,EAASwmF,EAAMxmF,QAAUwmF,EAAMQ,cACrC,IAAK3lH,IAAU2+B,EAAQ,MAAM,IAAImJ,MAAM,qBACvC,MAAMvJ,EAASuN,SAAS+0D,cAAc,UAChC1kE,EAAQ9rB,KAAK8C,IAAI,EAAG,IAAM9C,KAAK6C,IAAIlT,EAAO2+B,IAChDJ,EAAOv+B,MAAQqQ,KAAK6C,IAAI,EAAG7C,KAAKC,MAAMtQ,EAAQm8B,IAC9CoC,EAAOI,OAAStuB,KAAK6C,IAAI,EAAG7C,KAAKC,MAAMquB,EAASxC,IAChD,MAAMvB,EAAU2D,EAAOC,WAAW,MAClC5D,EAAQ0G,UAAY,UACpB1G,EAAQ2H,SAAS,EAAG,EAAGhE,EAAOv+B,MAAOu+B,EAAOI,QAC5C/D,EAAQ4E,UAAU2lF,EAAO,EAAG,EAAG5mF,EAAOv+B,MAAOu+B,EAAOI,QACpD,IAAK,MAAMinF,IAAW,CAAC,GAAK,GAAK,IAAM,CACnCvB,EAAWhoB,GACX,MAAMwpB,QAAgB,IAAIjuE,QAAQvT,GAAW9F,EAAOunF,OAAOzhF,EAAS,aAAcuhF,IAClF,GAAIC,GAAWA,EAAQp3G,MAAQ01G,IAAsB0B,EAAQp3G,MAAQ,QAA0B,KAAZm3G,GAAkB,OAAOC,CAChH,CACA,MAAM,IAAI/9E,MAAM,oBACpB,CAAE,MAAO6iC,GACL,GAAI0xB,GAAQC,SAA0B,eAAf3xB,EAAMxrE,MAA2C,sBAAlBwrE,EAAM/5D,QAAiC,MAAM+5D,EACnG,MAAM,IAAI7iC,MAAM,oBACpB,CAAE,QACEq9E,GAAOY,UACHX,GAAWzkB,IAAIQ,gBAAgBikB,EACvC,CACJ,CAEO7T,eAAeyU,EAAuB9lB,GAAO,OAAE7D,EAAM,UAAER,EAAY,EAAC,SAAEoqB,EAAQ,QAAEC,EAAUvB,GAAqB,CAAC,GACnH9oB,EAAYxrF,KAAK6C,IAAI,EAAG7C,KAAK8C,IAAI,EAAG0oF,IACpC,MAAM6e,EAAU,GAChB,IAAK,IAAIr0G,EAAQ,EAAGA,EAAQ65F,EAAMz5F,OAAQJ,GAASw1F,EAAW,CAC1DwoB,EAAWhoB,GACX,MAAM8pB,EAAW,GAEjB,IAAK,MAAM7e,KAAQpH,EAAM96E,MAAM/e,EAAOA,EAAQw1F,GAC1C,IAAMsqB,EAAS/9F,KAAK,CAAEk/E,OAAM6d,YAAae,EAAQ5e,EAAMjL,IAAY,CACnE,MAAO1xB,GACH,GAAI0xB,GAAQC,SAA0B,eAAf3xB,EAAMxrE,KAAuB,MAAMwrE,EAC1D,MAAMvgD,EAAS,CAAEg8F,OAAQ9e,EAAKnoG,KAAMwrE,MAAO85C,EAAY95C,IACvD+vC,EAAQtyF,KAAKgC,GAAS67F,IAAW77F,EACrC,CAGJ,GADAi6F,EAAWhoB,IACN8pB,EAAS1/G,OAAQ,SACtB,MAAM4/G,EAAO,IAAIC,SACjBD,EAAKvP,OAAO,QAAS5gF,KAAKC,UAAUgwF,EAASlwG,IAAI1X,IAAQ,CAAG6nH,OAAQ7nH,EAAK+oG,KAAKnoG,UAC9EgnH,EAASh4F,QAAQ,CAAC5vB,EAAME,IAAU4nH,EAAKvP,OAAO,QAAQr4G,IAASF,EAAK4mH,MAAO,gBAC3E,IACI,MAAM1lH,QAAailH,EAAQ,sBAAuB,CAAEt2F,OAAQ,OAAQm2D,KAAM8hC,EAAMhqB,WAEhF,GADAgoB,EAAWhoB,IACNv2F,MAAMkQ,QAAQvW,EAAKi7G,UAAYj7G,EAAKi7G,QAAQj0G,SAAW0/G,EAAS1/G,OAAQ,MAAM,IAAIqhC,MAAM,oBAC7F,IAAK,IAAIrpC,EAAQ,EAAGA,EAAQ0nH,EAAS1/G,OAAQhI,IAAS,CAClD,MAAM2rB,EAAS3qB,EAAKi7G,QAAQj8G,GAC5B,IAAK2rB,GAAUA,EAAOg8F,SAAWD,EAAS1nH,GAAO6oG,KAAKnoG,OAAUirB,EAAOugD,SAAW7kE,MAAMkQ,QAAQoU,EAAOm8F,OAASn8F,EAAOm8F,KAAKl9C,KAAKm5C,GAAsB,kBAARA,KAAsB,iBAAiBgE,KAAKp8F,EAAOq8F,iBAAmB,MAAM,IAAI3+E,MAAM,mBACzO,CACA,IAAK,MAAM1d,KAAU3qB,EAAKi7G,QAAWA,EAAQtyF,KAAKgC,GAAS67F,IAAW77F,EAC1E,CAAE,MAAOugD,GACL,GAAI0xB,GAAQC,SAA0B,eAAf3xB,EAAMxrE,KAAuB,MAAMwrE,EAC1D,IAAK,MAAMpsE,KAAQ4nH,EAAU,CACzB,MAAM/7F,EAAS,CAAEg8F,OAAQ7nH,EAAK+oG,KAAKnoG,KAAMwrE,MAAO85C,EAAY95C,IAC5D+vC,EAAQtyF,KAAKgC,GAAS67F,IAAW77F,EACrC,CACJ,CACJ,CACA,OAAOswF,CACX,CAEOnJ,eAAemV,EAAoB93F,EAAOq3F,GAC7C,MAAMvL,EAAU,GAChB,IAAK,IAAIr0G,EAAQ,EAAGA,EAAQuoB,EAAMnoB,OAAQJ,GAAS,GAAI,CACnD,MAAMsgH,EAAQ/3F,EAAMxJ,MAAM/e,EAAOA,EAAQ,IACzC,IACI,MAAM5G,QAAailH,EAAQ,yBAA0B,CACjDt2F,OAAQ,OAAQ0wE,QAAS,CAAE,eAAgB,oBAC3Cva,KAAMruD,KAAKC,UAAU,CAAEvH,MAAO+3F,MAElC,IAAK7gH,MAAMkQ,QAAQvW,EAAKi7G,UAAYj7G,EAAKi7G,QAAQj0G,SAAWkgH,EAAMlgH,QAAUhH,EAAKi7G,QAAQrxC,KAAK,CAACj/C,EAAQ3rB,KAAW2rB,GAAUA,EAAOg8F,SAAWO,EAAMloH,GAAO2nH,QAAkC,mBAAjBh8F,EAAOw8F,OAAwBx8F,EAAOw8F,SAAW9gH,MAAMkQ,QAAQoU,EAAOm8F,OAASn8F,EAAOm8F,KAAKl9C,KAAKm5C,GAAsB,kBAARA,KACtR,MAAM,IAAI16E,MAAM,oBAEpB,IAAK,MAAM1d,KAAU3qB,EAAKi7G,QAAWA,EAAQtyF,KAAKgC,GAAS67F,IAAW77F,EAC1E,CAAE,MAAOugD,GACL,IAAK,MAAMpsE,KAAQooH,EAAO,CACtB,MAAMv8F,EAAS,CAAEg8F,OAAQ7nH,EAAK6nH,OAAQQ,OAAO,EAAOj8C,MAAO85C,EAAY95C,IACvE+vC,EAAQtyF,KAAKgC,GAAS67F,IAAW77F,EACrC,CACJ,CACJ,CACA,OAAOswF,CACX,C,wBCjLA,SAASmM,EAAQ/+F,GAGf,OAAO++F,EAAU,mBAAqBp8F,QAAU,iBAAmBA,OAAOq8F,SAAW,SAAUh/F,GAC7F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAK,mBAAqB2C,QAAU3C,EAAEtE,cAAgBiH,QAAU3C,IAAM2C,OAAOxF,UAAY,gBAAkB6C,CACpH,EAAG++F,EAAQ/+F,EACb,CCPA,SAAS4C,EAAY9H,EAAGlO,GACtB,GAAI,UAAYmyG,EAAQjkG,KAAOA,EAAG,OAAOA,EACzC,IAAIzO,EAAIyO,EAAE6H,OAAOC,aACjB,QAAI,IAAWvW,EAAG,CAChB,IAAIyB,EAAIzB,EAAEgR,KAAKvC,EAAGlO,GAAK,WACvB,GAAI,UAAYmyG,EAAQjxG,GAAI,OAAOA,EACnC,MAAM,IAAI+lF,UAAU,+CACtB,CACA,OAAQ,WAAajnF,EAAIpV,OAASiG,QAAQqd,EAC5C,CCRA,SAASmkG,EAAcnkG,GACrB,IAAIhN,EAAI8U,EAAY9H,EAAG,UACvB,MAAO,UAAYikG,EAAQjxG,GAAKA,EAAIA,EAAI,EAC1C,CCJA,SAASkxC,EAAgB3yC,EAAGO,EAAGkO,GAC7B,OAAQlO,EAAIqyG,EAAcryG,MAAOP,EAAI/E,OAAO4e,eAAe7Z,EAAGO,EAAG,CAC/D7P,MAAO+d,EACPsL,YAAY,EACZD,cAAc,EACd6O,UAAU,IACP3oB,EAAEO,GAAKkO,EAAGzO,CACjB,C,sGCPA,MAAM7W,EAAa,CACjBkB,IAAK,EACLjB,MAAO,mBACPypH,QAAS,gBACTC,MAAO,8BAEHzpH,EAAa,CACjBgB,IAAK,EACLjB,MAAO,mBACPypH,QAAS,gBACTC,MAAO,8BAEHxpH,EAAa,CACjBe,IAAK,EACLjB,MAAO,mBACPypH,QAAS,gBACTC,MAAO,8BAEF,SAASvpH,EAAOC,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMC,GAA+B,QAAkB,qBACvD,OAAO,WAAc,QAAoB,QAAQ,QAAYN,EAAKupH,OAAQ,CACxE3pH,MAAO,CAAC,uBAAwB,iBAAiBM,EAAOwB,UACtD,CAAiB,aAAhBxB,EAAOwB,OAAuB,WAAc,QAAoB,MAAO/B,EAAY,IAAKM,EAAO,KAAOA,EAAO,GAAK,EAAC,QAAoB,OAAQ,CAClJsW,EAAG,kdACF,MAAO,QAA2B,gBAAhBrW,EAAOwB,OAA0B,WAAc,QAAoB,MAAO7B,EAAY,IAAKI,EAAO,KAAOA,EAAO,GAAK,EAAC,QAAmB,o8QAAy+Q,QAA2B,WAAhBC,EAAOwB,OAAqB,WAAc,QAAoB,MAAO5B,EAAY,IAAKG,EAAO,KAAOA,EAAO,GAAK,EAAC,QAAoB,OAAQ,CAC7xRsW,EAAG,ymEACF,MAAO,UAAY,WAAc,QAAajW,EAA8B,CAC7EO,IAAK,EACLM,KAAMd,EAASmpH,iBACd,KAAM,EAAG,CAAC,WAAY,GAC3B,CC/BA,OACEhoH,KAAM,cACNioH,cAAc,EACdhoH,MAAO,CACLC,KAAM,CACJA,KAAMC,OACNk4F,UAAU,IAGd73F,SAAU,CACR,eAAAwnH,GACE,MAAME,EAAQ,CACZvX,KAAM,CAAC,MAAO,cACdC,GAAI,CAAC,MAAO,OACZC,QAAS,CAAC,MAAO,YAEnB,OAAOqX,EAAMtnH,KAAKV,OAAS,QAC7B,I,WCVJ,MAAMqC,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAAShE,GAAQ,CAAC,YAAY,qBAEzF,O","sources":["webpack://sanyue_imghub/./src/components/config/SysConfigTabs.vue?e4e4","webpack://sanyue_imghub/./src/components/config/SysConfigTabs.vue","webpack://sanyue_imghub/./src/components/config/SysConfigTabs.vue?cf73","webpack://sanyue_imghub/./src/views/SystemConfig.vue?b46f","webpack://sanyue_imghub/./src/components/DateRangeCalendar.vue?f721","webpack://sanyue_imghub/./src/components/DateRangeCalendar.vue","webpack://sanyue_imghub/./src/components/DateRangeCalendar.vue?7c9a","webpack://sanyue_imghub/./src/components/config/SysCogStatus.vue?9c77","webpack://sanyue_imghub/./node_modules/@kurkle/color/dist/color.esm.js","webpack://sanyue_imghub/../../src/helpers/helpers.core.ts","webpack://sanyue_imghub/../../src/helpers/helpers.math.ts","webpack://sanyue_imghub/../../src/helpers/helpers.collection.ts","webpack://sanyue_imghub/../../src/helpers/helpers.extras.ts","webpack://sanyue_imghub/../../src/helpers/helpers.easing.ts","webpack://sanyue_imghub/../../src/helpers/helpers.color.ts","webpack://sanyue_imghub/../../src/core/core.animations.defaults.js","webpack://sanyue_imghub/../../src/core/core.layouts.defaults.js","webpack://sanyue_imghub/../../src/helpers/helpers.intl.ts","webpack://sanyue_imghub/../../src/core/core.ticks.js","webpack://sanyue_imghub/../../src/core/core.scale.defaults.js","webpack://sanyue_imghub/../../src/core/core.defaults.js","webpack://sanyue_imghub/../../src/helpers/helpers.canvas.ts","webpack://sanyue_imghub/../../src/helpers/helpers.options.ts","webpack://sanyue_imghub/../../src/helpers/helpers.config.ts","webpack://sanyue_imghub/../../src/helpers/helpers.curve.ts","webpack://sanyue_imghub/../../src/helpers/helpers.dom.ts","webpack://sanyue_imghub/../../src/helpers/helpers.interpolation.ts","webpack://sanyue_imghub/../../src/helpers/helpers.rtl.ts","webpack://sanyue_imghub/../../src/helpers/helpers.segment.js","webpack://sanyue_imghub/../../src/helpers/helpers.dataset.ts","webpack://sanyue_imghub/../src/core/core.animator.js","webpack://sanyue_imghub/../src/core/core.animation.js","webpack://sanyue_imghub/../src/core/core.animations.js","webpack://sanyue_imghub/../src/core/core.datasetController.js","webpack://sanyue_imghub/../src/controllers/controller.bar.js","webpack://sanyue_imghub/../src/controllers/controller.bubble.js","webpack://sanyue_imghub/../src/controllers/controller.doughnut.js","webpack://sanyue_imghub/../src/controllers/controller.line.js","webpack://sanyue_imghub/../src/controllers/controller.polarArea.js","webpack://sanyue_imghub/../src/controllers/controller.pie.js","webpack://sanyue_imghub/../src/controllers/controller.radar.js","webpack://sanyue_imghub/../src/controllers/controller.scatter.js","webpack://sanyue_imghub/../src/core/core.adapters.ts","webpack://sanyue_imghub/../src/core/core.interaction.js","webpack://sanyue_imghub/../src/core/core.layouts.js","webpack://sanyue_imghub/../src/platform/platform.base.js","webpack://sanyue_imghub/../src/platform/platform.basic.js","webpack://sanyue_imghub/../src/platform/platform.dom.js","webpack://sanyue_imghub/../src/platform/index.js","webpack://sanyue_imghub/../src/core/core.element.ts","webpack://sanyue_imghub/../src/core/core.scale.autoskip.js","webpack://sanyue_imghub/../src/core/core.scale.js","webpack://sanyue_imghub/../src/core/core.typedRegistry.js","webpack://sanyue_imghub/../src/core/core.registry.js","webpack://sanyue_imghub/../src/core/core.plugins.js","webpack://sanyue_imghub/../src/core/core.config.js","webpack://sanyue_imghub/../src/core/core.controller.js","webpack://sanyue_imghub/../src/elements/element.arc.ts","webpack://sanyue_imghub/../src/elements/element.line.js","webpack://sanyue_imghub/../src/elements/element.point.ts","webpack://sanyue_imghub/../src/elements/element.bar.js","webpack://sanyue_imghub/../src/plugins/plugin.filler/filler.segment.js","webpack://sanyue_imghub/../src/plugins/plugin.filler/filler.helper.js","webpack://sanyue_imghub/../src/plugins/plugin.filler/filler.options.js","webpack://sanyue_imghub/../src/plugins/plugin.filler/filler.target.stack.js","webpack://sanyue_imghub/../src/plugins/plugin.filler/simpleArc.js","webpack://sanyue_imghub/../src/plugins/plugin.filler/filler.target.js","webpack://sanyue_imghub/../src/plugins/plugin.filler/filler.drawing.js","webpack://sanyue_imghub/../src/plugins/plugin.filler/index.js","webpack://sanyue_imghub/../src/plugins/plugin.legend.js","webpack://sanyue_imghub/../src/plugins/plugin.subtitle.js","webpack://sanyue_imghub/../src/plugins/plugin.tooltip.js","webpack://sanyue_imghub/../src/scales/scale.category.js","webpack://sanyue_imghub/../src/scales/scale.linearbase.js","webpack://sanyue_imghub/../src/scales/scale.linear.js","webpack://sanyue_imghub/../src/scales/scale.logarithmic.js","webpack://sanyue_imghub/../src/scales/scale.radialLinear.js","webpack://sanyue_imghub/../src/scales/scale.time.js","webpack://sanyue_imghub/../src/scales/scale.timeseries.js","webpack://sanyue_imghub/../src/props.ts","webpack://sanyue_imghub/../src/utils.ts","webpack://sanyue_imghub/../src/chart.ts","webpack://sanyue_imghub/../src/typedCharts.ts","webpack://sanyue_imghub/./src/utils/batchProcessor.js","webpack://sanyue_imghub/./src/utils/indexRebuilder.js","webpack://sanyue_imghub/./src/utils/backupGenerator.js","webpack://sanyue_imghub/./src/utils/restoreProcessor.js","webpack://sanyue_imghub/./src/components/config/SysCogStatus.vue","webpack://sanyue_imghub/./src/components/config/SysCogStatus.vue?ce78","webpack://sanyue_imghub/./src/components/config/CustomSelect.vue?189e","webpack://sanyue_imghub/./src/components/config/CustomSelect.vue","webpack://sanyue_imghub/./src/components/config/CustomSelect.vue?1e7e","webpack://sanyue_imghub/./src/components/config/SysCogUpload.vue?f46d","webpack://sanyue_imghub/./src/components/config/SysCogUpload.vue","webpack://sanyue_imghub/./src/components/config/SysCogUpload.vue?a7b6","webpack://sanyue_imghub/./src/components/FloatingSaveButton.vue?4185","webpack://sanyue_imghub/./src/components/FloatingSaveButton.vue","webpack://sanyue_imghub/./src/components/FloatingSaveButton.vue?45e6","webpack://sanyue_imghub/./src/components/config/SysCogSecurity.vue?5b0a","webpack://sanyue_imghub/./src/utils/tokenExpiration.js","webpack://sanyue_imghub/./src/mixins/unsavedSettings.js","webpack://sanyue_imghub/./src/components/config/SysCogSecurity.vue","webpack://sanyue_imghub/./src/components/config/SysCogSecurity.vue?3739","webpack://sanyue_imghub/./src/components/config/SysCogPage.vue?ce58","webpack://sanyue_imghub/./src/components/config/SysCogPage.vue","webpack://sanyue_imghub/./src/components/config/SysCogPage.vue?4209","webpack://sanyue_imghub/./src/components/config/SysCogOthers.vue?4890","webpack://sanyue_imghub/./src/components/config/SysCogOthers.vue","webpack://sanyue_imghub/./src/components/config/SysCogOthers.vue?780f","webpack://sanyue_imghub/./src/components/config/SysCogAI.vue?0f1d","webpack://sanyue_imghub/./src/components/config/SysCogAI.vue","webpack://sanyue_imghub/./src/components/config/SysCogAI.vue?b6ab","webpack://sanyue_imghub/./src/views/SystemConfig.vue","webpack://sanyue_imghub/./src/views/SystemConfig.vue?d269","webpack://sanyue_imghub/./src/utils/aiTags.js","webpack://sanyue_imghub/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://sanyue_imghub/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://sanyue_imghub/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://sanyue_imghub/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://sanyue_imghub/./src/components/icons/ChannelIcon.vue?3436","webpack://sanyue_imghub/./src/components/icons/ChannelIcon.vue","webpack://sanyue_imghub/./src/components/icons/ChannelIcon.vue?8c05"],"sourcesContent":["import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle } from \"vue\";\nconst _hoisted_1 = {\n class: \"menu-list\"\n};\nconst _hoisted_2 = [\"onClick\"];\nconst _hoisted_3 = {\n class: \"menu-text\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"sidebar-container\", {\n 'is-collapsed': $props.isCollapse\n }]),\n ref: \"sidebar\",\n style: _normalizeStyle($options.sidebarStyle)\n }, [_createElementVNode(\"div\", _hoisted_1, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.menuItems, item => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: item.index,\n class: _normalizeClass([\"menu-item\", {\n 'is-active': $props.activeIndex === item.index\n }]),\n onClick: $event => $options.handleSelect(item.index)\n }, [_createVNode(_component_font_awesome_icon, {\n icon: item.icon,\n class: \"menu-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_3, _toDisplayString(_ctx.$t(item.titleKey)), 1)], 10, _hoisted_2);\n }), 128))]), _createElementVNode(\"div\", {\n class: \"toggle-button\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.toggleCollapse && $options.toggleCollapse(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: $props.isCollapse ? 'angle-double-right' : 'angle-double-left'\n }, null, 8, [\"icon\"])])], 6);\n}","export default {\n name: 'SysConfigTabs',\n props: {\n activeIndex: {\n type: String,\n default: 'status'\n },\n isCollapse: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n expandedWidth: null,\n menuItems: [{\n index: 'status',\n icon: 'chart-bar',\n titleKey: 'sysConfigTabs.systemStatus'\n }, {\n index: 'upload',\n icon: 'cloud-upload',\n titleKey: 'sysConfigTabs.uploadSettings'\n }, {\n index: 'security',\n icon: 'shield',\n titleKey: 'sysConfigTabs.securitySettings'\n }, {\n index: 'page',\n icon: 'pager',\n titleKey: 'sysConfigTabs.pageSettings'\n }, {\n index: 'ai',\n icon: 'comments',\n titleKey: 'sysAI.title'\n }, {\n index: 'others',\n icon: 'cog',\n titleKey: 'sysConfigTabs.otherSettings'\n }]\n };\n },\n computed: {\n collapsedWidth() {\n return window.innerWidth <= 768 ? 50 : 56;\n },\n sidebarStyle() {\n if (this.isCollapse) {\n return {\n width: this.collapsedWidth + 'px'\n };\n }\n return this.expandedWidth ? {\n width: this.expandedWidth + 'px'\n } : {};\n }\n },\n watch: {\n '$i18n.locale'() {\n this.$nextTick(() => this.measureWidth());\n }\n },\n methods: {\n toggleCollapse() {\n this.$emit('update:isCollapse', !this.isCollapse);\n },\n checkMobile() {\n const isMobile = window.innerWidth <= 768;\n this.$emit('update:isCollapse', isMobile);\n },\n handleSelect(index) {\n this.$emit('update:activeIndex', index);\n },\n measureWidth() {\n const el = this.$refs.sidebar;\n if (!el) return;\n // Temporarily expand to measure natural content width\n const prevWidth = el.style.width;\n const prevTransition = el.style.transition;\n const wasCollapsed = el.classList.contains('is-collapsed');\n el.style.transition = 'none';\n if (wasCollapsed) {\n el.classList.remove('is-collapsed');\n }\n el.style.width = 'auto';\n // Force reflow to apply changes\n void el.offsetWidth;\n const natural = el.scrollWidth;\n // Restore original state\n el.style.width = prevWidth;\n if (wasCollapsed) {\n el.classList.add('is-collapsed');\n }\n void el.offsetWidth;\n el.style.transition = prevTransition;\n this.expandedWidth = natural;\n }\n },\n mounted() {\n this.checkMobile();\n this.$nextTick(() => this.measureWidth());\n window.addEventListener('resize', this.checkMobile);\n },\n beforeDestroy() {\n window.removeEventListener('resize', this.checkMobile);\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./SysConfigTabs.vue?vue&type=template&id=0f5a14b0&scoped=true\"\nimport script from \"./SysConfigTabs.vue?vue&type=script&lang=js\"\nexport * from \"./SysConfigTabs.vue?vue&type=script&lang=js\"\n\nimport \"./SysConfigTabs.vue?vue&type=style&index=0&id=0f5a14b0&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0f5a14b0\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, resolveDynamicComponent as _resolveDynamicComponent, normalizeClass as _normalizeClass, openBlock as _openBlock, createBlock as _createBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"container\"\n};\nconst _hoisted_2 = {\n class: \"header-content admin-header-content\"\n};\nconst _hoisted_3 = {\n class: \"header-action\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_DashboardTabs = _resolveComponent(\"DashboardTabs\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_header = _resolveComponent(\"el-header\");\n const _component_SysConfigTabs = _resolveComponent(\"SysConfigTabs\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_header, null, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createVNode(_component_DashboardTabs, {\n activeTab: \"systemConfig\"\n }), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('sysConfig.logout'),\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"sign-out-alt\",\n class: \"header-icon\",\n onClick: $options.handleLogout\n }, null, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])])]),\n _: 1\n }), _createVNode(_component_SysConfigTabs, {\n activeIndex: $data.activeIndex,\n \"onUpdate:activeIndex\": _cache[0] || (_cache[0] = $event => $data.activeIndex = $event),\n isCollapse: $data.isSidebarCollapse,\n \"onUpdate:isCollapse\": _cache[1] || (_cache[1] = $event => $data.isSidebarCollapse = $event)\n }, null, 8, [\"activeIndex\", \"isCollapse\"]), (_openBlock(), _createBlock(_resolveDynamicComponent($options.currentComponent), {\n class: _normalizeClass(['main-container', {\n 'collapsed': $data.isSidebarCollapse\n }])\n }, null, 8, [\"class\"]))]);\n}","import { vModelText as _vModelText, createElementVNode as _createElementVNode, withDirectives as _withDirectives, toDisplayString as _toDisplayString, resolveComponent as _resolveComponent, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass } from \"vue\";\nconst _hoisted_1 = {\n class: \"date-range-calendar\"\n};\nconst _hoisted_2 = {\n class: \"selected-range\"\n};\nconst _hoisted_3 = {\n class: \"selected-range-inputs\"\n};\nconst _hoisted_4 = [\"aria-label\"];\nconst _hoisted_5 = {\n class: \"date-range-separator\"\n};\nconst _hoisted_6 = [\"aria-label\"];\nconst _hoisted_7 = {\n class: \"calendar-header\"\n};\nconst _hoisted_8 = [\"aria-label\"];\nconst _hoisted_9 = {\n class: \"calendar-title\"\n};\nconst _hoisted_10 = [\"aria-label\"];\nconst _hoisted_11 = {\n class: \"calendar-weekdays\"\n};\nconst _hoisted_12 = {\n class: \"calendar-grid\"\n};\nconst _hoisted_13 = [\"onClick\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"div\", _hoisted_3, [_withDirectives(_createElementVNode(\"input\", {\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.inputStart = $event),\n class: \"date-input\",\n type: \"text\",\n inputmode: \"numeric\",\n \"aria-label\": $options.startDateLabel,\n onChange: _cache[1] || (_cache[1] = (...args) => $options.handleManualInput && $options.handleManualInput(...args))\n }, null, 40, _hoisted_4), [[_vModelText, $data.inputStart, void 0, {\n trim: true\n }]]), _createElementVNode(\"span\", _hoisted_5, _toDisplayString($options.rangeSeparator), 1), _withDirectives(_createElementVNode(\"input\", {\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.inputEnd = $event),\n class: \"date-input\",\n type: \"text\",\n inputmode: \"numeric\",\n \"aria-label\": $options.endDateLabel,\n onChange: _cache[3] || (_cache[3] = (...args) => $options.handleManualInput && $options.handleManualInput(...args))\n }, null, 40, _hoisted_6), [[_vModelText, $data.inputEnd, void 0, {\n trim: true\n }]])])]), _createElementVNode(\"div\", _hoisted_7, [_createElementVNode(\"button\", {\n type: \"button\",\n class: \"calendar-nav\",\n \"aria-label\": $options.previousMonthLabel,\n onClick: _cache[4] || (_cache[4] = (...args) => $options.goToPreviousMonth && $options.goToPreviousMonth(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"chevron-left\"\n })], 8, _hoisted_8), _createElementVNode(\"div\", _hoisted_9, _toDisplayString($options.monthTitle), 1), _createElementVNode(\"button\", {\n type: \"button\",\n class: \"calendar-nav\",\n \"aria-label\": $options.nextMonthLabel,\n onClick: _cache[5] || (_cache[5] = (...args) => $options.goToNextMonth && $options.goToNextMonth(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"chevron-right\"\n })], 8, _hoisted_10)]), _createElementVNode(\"div\", _hoisted_11, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.weekdayLabels, weekday => {\n return _openBlock(), _createElementBlock(\"span\", {\n key: weekday\n }, _toDisplayString(weekday), 1);\n }), 128))]), _createElementVNode(\"div\", _hoisted_12, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.calendarDays, day => {\n return _openBlock(), _createElementBlock(\"button\", {\n key: day.key,\n type: \"button\",\n class: _normalizeClass([\"calendar-day\", {\n 'is-muted': !day.isCurrentMonth,\n 'is-today': day.isToday,\n 'is-range-start': day.key === $data.draftStart,\n 'is-range-end': day.key === $data.draftEnd,\n 'is-in-range': $options.isInRange(day.key)\n }]),\n onClick: $event => $options.selectDay(day.key)\n }, _toDisplayString(day.dayOfMonth), 11, _hoisted_13);\n }), 128))])]);\n}","const DAY_MS = 24 * 60 * 60 * 1000;\nfunction padDatePart(value) {\n return String(value).padStart(2, '0');\n}\nfunction formatDateKey(date) {\n return `${date.getFullYear()}-${padDatePart(date.getMonth() + 1)}-${padDatePart(date.getDate())}`;\n}\nfunction parseDateKey(value) {\n if (typeof value !== 'string') return null;\n const match = value.trim().match(/^(\\d{4})[-/](\\d{1,2})[-/](\\d{1,2})$/);\n if (!match) return null;\n const year = Number(match[1]);\n const month = Number(match[2]) - 1;\n const day = Number(match[3]);\n const date = new Date(year, month, day);\n if (date.getFullYear() !== year || date.getMonth() !== month || date.getDate() !== day) {\n return null;\n }\n date.setHours(0, 0, 0, 0);\n return date;\n}\nfunction shiftMonth(date, amount) {\n return new Date(date.getFullYear(), date.getMonth() + amount, 1);\n}\nexport default {\n name: 'DateRangeCalendar',\n props: {\n modelValue: {\n type: Array,\n default: () => []\n }\n },\n emits: ['update:modelValue', 'change'],\n data() {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n return {\n displayYear: today.getFullYear(),\n displayMonth: today.getMonth(),\n draftStart: '',\n draftEnd: '',\n inputStart: '',\n inputEnd: '',\n awaitingEnd: false\n };\n },\n computed: {\n previousMonthLabel() {\n return this.$t('dateRangeCalendar.previousMonth');\n },\n nextMonthLabel() {\n return this.$t('dateRangeCalendar.nextMonth');\n },\n startDateLabel() {\n return this.$t('dateRangeCalendar.startDate');\n },\n endDateLabel() {\n return this.$t('dateRangeCalendar.endDate');\n },\n rangeSeparator() {\n return this.$t('dateRangeCalendar.rangeSeparator');\n },\n monthTitle() {\n return this.$t('dateRangeCalendar.monthTitle', {\n year: this.displayYear,\n month: padDatePart(this.displayMonth + 1)\n });\n },\n weekdayLabels() {\n return [this.$t('dateRangeCalendar.weekdaySun'), this.$t('dateRangeCalendar.weekdayMon'), this.$t('dateRangeCalendar.weekdayTue'), this.$t('dateRangeCalendar.weekdayWed'), this.$t('dateRangeCalendar.weekdayThu'), this.$t('dateRangeCalendar.weekdayFri'), this.$t('dateRangeCalendar.weekdaySat')];\n },\n calendarDays() {\n const monthStart = new Date(this.displayYear, this.displayMonth, 1);\n const start = new Date(this.displayYear, this.displayMonth, 1 - monthStart.getDay());\n const todayKey = formatDateKey(new Date());\n return Array.from({\n length: 42\n }, (_, index) => {\n const date = new Date(start.getTime() + index * DAY_MS);\n const key = formatDateKey(date);\n return {\n key,\n dayOfMonth: date.getDate(),\n isCurrentMonth: date.getMonth() === this.displayMonth,\n isToday: key === todayKey\n };\n });\n }\n },\n watch: {\n modelValue: {\n immediate: true,\n handler(value) {\n this.syncFromModel(value);\n }\n }\n },\n methods: {\n syncFromModel(value) {\n const startDate = parseDateKey(value?.[0]);\n const endDate = parseDateKey(value?.[1]);\n this.draftStart = startDate ? formatDateKey(startDate) : '';\n this.draftEnd = endDate ? formatDateKey(endDate) : '';\n this.inputStart = this.draftStart;\n this.inputEnd = this.draftEnd;\n this.awaitingEnd = false;\n const displayDate = startDate || endDate;\n if (displayDate) {\n this.displayYear = displayDate.getFullYear();\n this.displayMonth = displayDate.getMonth();\n }\n },\n goToPreviousMonth() {\n const date = shiftMonth(new Date(this.displayYear, this.displayMonth, 1), -1);\n this.displayYear = date.getFullYear();\n this.displayMonth = date.getMonth();\n },\n goToNextMonth() {\n const date = shiftMonth(new Date(this.displayYear, this.displayMonth, 1), 1);\n this.displayYear = date.getFullYear();\n this.displayMonth = date.getMonth();\n },\n selectDay(key) {\n if (!this.draftStart || this.draftEnd || !this.awaitingEnd) {\n this.draftStart = key;\n this.draftEnd = '';\n this.inputStart = key;\n this.inputEnd = '';\n this.awaitingEnd = true;\n return;\n }\n const range = key < this.draftStart ? [key, this.draftStart] : [this.draftStart, key];\n this.draftStart = range[0];\n this.draftEnd = range[1];\n this.inputStart = range[0];\n this.inputEnd = range[1];\n this.awaitingEnd = false;\n this.commitRange(range);\n },\n handleManualInput() {\n const startDate = parseDateKey(this.inputStart);\n const endDate = parseDateKey(this.inputEnd);\n if (!startDate || !endDate) return;\n const startKey = formatDateKey(startDate);\n const endKey = formatDateKey(endDate);\n const range = startKey <= endKey ? [startKey, endKey] : [endKey, startKey];\n this.draftStart = range[0];\n this.draftEnd = range[1];\n this.inputStart = range[0];\n this.inputEnd = range[1];\n this.awaitingEnd = false;\n this.displayYear = startDate.getFullYear();\n this.displayMonth = startDate.getMonth();\n this.commitRange(range);\n },\n commitRange(range) {\n this.$emit('update:modelValue', range);\n this.$emit('change', range);\n },\n isInRange(key) {\n return Boolean(this.draftStart && this.draftEnd && key > this.draftStart && key < this.draftEnd);\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DateRangeCalendar.vue?vue&type=template&id=5fbe496c&scoped=true\"\nimport script from \"./DateRangeCalendar.vue?vue&type=script&lang=js\"\nexport * from \"./DateRangeCalendar.vue?vue&type=script&lang=js\"\n\nimport \"./DateRangeCalendar.vue?vue&type=style&index=0&id=5fbe496c&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5fbe496c\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, normalizeStyle as _normalizeStyle, createBlock as _createBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"status-panel\"\n};\nconst _hoisted_2 = [\"aria-label\"];\nconst _hoisted_3 = {\n class: \"status-hero-copy\"\n};\nconst _hoisted_4 = {\n class: \"status-hero-kicker\"\n};\nconst _hoisted_5 = {\n class: \"system-health-badge\",\n \"aria-live\": \"polite\"\n};\nconst _hoisted_6 = {\n class: \"status-hero-date\"\n};\nconst _hoisted_7 = {\n class: \"status-hero-title\"\n};\nconst _hoisted_8 = {\n class: \"status-hero-summary\",\n \"aria-live\": \"polite\"\n};\nconst _hoisted_9 = {\n class: \"status-hero-time-card\"\n};\nconst _hoisted_10 = {\n class: \"status-hero-time-caption\"\n};\nconst _hoisted_11 = [\"datetime\"];\nconst _hoisted_12 = {\n class: \"status-hero-timezone\"\n};\nconst _hoisted_13 = {\n class: \"overview-cards\"\n};\nconst _hoisted_14 = {\n class: \"card-icon\"\n};\nconst _hoisted_15 = {\n class: \"card-content\"\n};\nconst _hoisted_16 = {\n class: \"card-title\"\n};\nconst _hoisted_17 = {\n class: \"card-value\"\n};\nconst _hoisted_18 = {\n class: \"card-subtitle\"\n};\nconst _hoisted_19 = {\n class: \"overview-card index-status\"\n};\nconst _hoisted_20 = {\n class: \"card-icon\"\n};\nconst _hoisted_21 = {\n class: \"card-content\"\n};\nconst _hoisted_22 = {\n class: \"card-title\"\n};\nconst _hoisted_23 = {\n class: \"card-value\"\n};\nconst _hoisted_24 = {\n class: \"card-subtitle\"\n};\nconst _hoisted_25 = {\n class: \"card-icon\"\n};\nconst _hoisted_26 = {\n class: \"card-content\"\n};\nconst _hoisted_27 = {\n class: \"card-title\"\n};\nconst _hoisted_28 = {\n class: \"card-value\"\n};\nconst _hoisted_29 = {\n class: \"card-subtitle\"\n};\nconst _hoisted_30 = {\n class: \"charts-section\"\n};\nconst _hoisted_31 = {\n class: \"chart-card trend-chart-card\"\n};\nconst _hoisted_32 = {\n class: \"chart-header trend-chart-header\"\n};\nconst _hoisted_33 = {\n class: \"chart-title\"\n};\nconst _hoisted_34 = {\n class: \"trend-controls\"\n};\nconst _hoisted_35 = {\n class: \"trend-date-panel\"\n};\nconst _hoisted_36 = {\n class: \"chart-content trend-chart-content\"\n};\nconst _hoisted_37 = {\n key: 0,\n class: \"empty-state trend-empty-state\"\n};\nconst _hoisted_38 = {\n key: 1,\n class: \"line-chart-wrapper\"\n};\nconst _hoisted_39 = {\n class: \"chart-card\"\n};\nconst _hoisted_40 = {\n class: \"chart-header\"\n};\nconst _hoisted_41 = {\n class: \"chart-content\"\n};\nconst _hoisted_42 = {\n key: 0,\n class: \"empty-state\"\n};\nconst _hoisted_43 = {\n key: 1,\n class: \"pie-chart-container\"\n};\nconst _hoisted_44 = {\n class: \"pie-chart-wrapper\"\n};\nconst _hoisted_45 = {\n class: \"chart-center-text\"\n};\nconst _hoisted_46 = {\n class: \"center-value\"\n};\nconst _hoisted_47 = {\n class: \"center-label\"\n};\nconst _hoisted_48 = {\n class: \"chart-legend\"\n};\nconst _hoisted_49 = {\n class: \"legend-label\"\n};\nconst _hoisted_50 = {\n class: \"legend-value\"\n};\nconst _hoisted_51 = {\n class: \"legend-percent\"\n};\nconst _hoisted_52 = {\n class: \"chart-card\"\n};\nconst _hoisted_53 = {\n class: \"chart-header\"\n};\nconst _hoisted_54 = {\n class: \"chart-content\"\n};\nconst _hoisted_55 = {\n key: 0,\n class: \"empty-state\"\n};\nconst _hoisted_56 = {\n key: 1,\n class: \"pie-chart-container\"\n};\nconst _hoisted_57 = {\n class: \"pie-chart-wrapper\"\n};\nconst _hoisted_58 = {\n class: \"chart-center-text\"\n};\nconst _hoisted_59 = {\n class: \"center-value\"\n};\nconst _hoisted_60 = {\n class: \"center-label\"\n};\nconst _hoisted_61 = {\n class: \"chart-legend\"\n};\nconst _hoisted_62 = {\n class: \"legend-label\"\n};\nconst _hoisted_63 = {\n class: \"legend-value\"\n};\nconst _hoisted_64 = {\n class: \"legend-percent\"\n};\nconst _hoisted_65 = {\n class: \"actions-section\"\n};\nconst _hoisted_66 = {\n class: \"action-card\"\n};\nconst _hoisted_67 = {\n class: \"action-header\"\n};\nconst _hoisted_68 = {\n class: \"action-content\"\n};\nconst _hoisted_69 = {\n key: 0,\n class: \"progress-container\"\n};\nconst _hoisted_70 = {\n class: \"progress-header\"\n};\nconst _hoisted_71 = {\n class: \"progress-phase\"\n};\nconst _hoisted_72 = {\n class: \"progress-percentage\"\n};\nconst _hoisted_73 = {\n class: \"progress-details\"\n};\nconst _hoisted_74 = {\n key: 0,\n class: \"progress-count\"\n};\nconst _hoisted_75 = {\n key: 1,\n class: \"progress-time\"\n};\nconst _hoisted_76 = {\n key: 0,\n class: \"progress-message\"\n};\nconst _hoisted_77 = {\n key: 1,\n class: \"error-container\"\n};\nconst _hoisted_78 = {\n class: \"error-icon\"\n};\nconst _hoisted_79 = {\n class: \"error-content\"\n};\nconst _hoisted_80 = {\n class: \"error-message\"\n};\nconst _hoisted_81 = {\n key: 0,\n class: \"error-suggestion\"\n};\nconst _hoisted_82 = {\n class: \"error-actions\"\n};\nconst _hoisted_83 = {\n key: 2,\n class: \"action-buttons\"\n};\nconst _hoisted_84 = {\n class: \"restore-section\"\n};\nconst _hoisted_85 = {\n key: 0,\n class: \"file-info-section\"\n};\nconst _hoisted_86 = [\"src\"];\nconst _hoisted_87 = {\n key: 2,\n class: \"card-bg-fallback\"\n};\nconst _hoisted_88 = {\n class: \"file-card-header\"\n};\nconst _hoisted_89 = {\n class: \"info-card-footer\"\n};\nconst _hoisted_90 = {\n class: \"file-name\"\n};\nconst _hoisted_91 = {\n class: \"file-meta\"\n};\nconst _hoisted_92 = [\"src\"];\nconst _hoisted_93 = {\n key: 2,\n class: \"card-bg-fallback\"\n};\nconst _hoisted_94 = {\n class: \"file-card-header warning\"\n};\nconst _hoisted_95 = {\n class: \"info-card-footer\"\n};\nconst _hoisted_96 = {\n class: \"file-name\"\n};\nconst _hoisted_97 = {\n class: \"file-meta\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_radio_button = _resolveComponent(\"el-radio-button\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_DateRangeCalendar = _resolveComponent(\"DateRangeCalendar\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _component_Line = _resolveComponent(\"Line\");\n const _component_Doughnut = _resolveComponent(\"Doughnut\");\n const _component_el_progress = _resolveComponent(\"el-progress\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_image = _resolveComponent(\"el-image\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"section\", {\n class: _normalizeClass([\"status-hero\", `is-${$options.systemHealthState}`]),\n \"aria-label\": _ctx.$t('sysStatus.systemOverview')\n }, [_createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createElementVNode(\"span\", _hoisted_5, [_cache[12] || (_cache[12] = _createElementVNode(\"span\", {\n class: \"system-health-dot\",\n \"aria-hidden\": \"true\"\n }, null, -1)), _createTextVNode(\" \" + _toDisplayString($options.systemHealthLabel), 1)]), _createElementVNode(\"span\", _hoisted_6, _toDisplayString($options.currentDateLabel), 1)]), _createElementVNode(\"h1\", _hoisted_7, _toDisplayString($options.greetingTitle), 1), _createElementVNode(\"p\", _hoisted_8, _toDisplayString($options.systemStatusSummary), 1)]), _createElementVNode(\"div\", _hoisted_9, [_createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('sysStatus.localTime')), 1), _createElementVNode(\"time\", {\n class: \"status-hero-time\",\n datetime: $data.currentTime.toISOString()\n }, _toDisplayString($options.currentTimeLabel), 9, _hoisted_11), _createElementVNode(\"span\", _hoisted_12, _toDisplayString($options.timeZoneLabel), 1)])], 10, _hoisted_2), _createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"div\", {\n class: \"overview-card total-files\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.fetchIndexInfo && $options.fetchIndexInfo(...args))\n }, [_createElementVNode(\"div\", _hoisted_14, [_createVNode(_component_font_awesome_icon, {\n icon: \"database\"\n })]), _createElementVNode(\"div\", _hoisted_15, [_createElementVNode(\"div\", _hoisted_16, _toDisplayString(_ctx.$t('sysStatus.totalFiles')), 1), _createElementVNode(\"div\", _hoisted_17, _toDisplayString($data.indexInfo.totalFiles?.toLocaleString() || '0'), 1), _createElementVNode(\"div\", _hoisted_18, _toDisplayString(_ctx.$t('sysStatus.clickToRefresh')), 1)])]), _createElementVNode(\"div\", _hoisted_19, [_createElementVNode(\"div\", _hoisted_20, [_createVNode(_component_font_awesome_icon, {\n icon: \"clock\"\n })]), _createElementVNode(\"div\", _hoisted_21, [_createElementVNode(\"div\", _hoisted_22, _toDisplayString(_ctx.$t('sysStatus.indexUpdateTime')), 1), _createElementVNode(\"div\", _hoisted_23, _toDisplayString($options.formatTime($data.indexInfo.lastUpdated)), 1), _createElementVNode(\"div\", _hoisted_24, _toDisplayString($options.getTimeAgo($data.indexInfo.lastUpdated)), 1)])]), _createElementVNode(\"div\", {\n class: \"overview-card system-version\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.openReleases && $options.openReleases(...args))\n }, [_createElementVNode(\"div\", _hoisted_25, [_createVNode(_component_font_awesome_icon, {\n icon: \"code-branch\"\n })]), _createElementVNode(\"div\", _hoisted_26, [_createElementVNode(\"div\", _hoisted_27, _toDisplayString(_ctx.$t('sysStatus.systemVersion')), 1), _createElementVNode(\"div\", _hoisted_28, \"v\" + _toDisplayString($data.version), 1), _createElementVNode(\"div\", _hoisted_29, _toDisplayString(_ctx.$t('sysStatus.clickToViewChangelog')), 1)])])]), _createElementVNode(\"div\", _hoisted_30, [_createElementVNode(\"div\", _hoisted_31, [_createElementVNode(\"div\", _hoisted_32, [_createElementVNode(\"div\", _hoisted_33, [_createVNode(_component_font_awesome_icon, {\n icon: \"chart-line\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('sysStatus.uploadTrend')), 1), _createVNode(_component_el_button, {\n class: \"trend-calendar-btn\",\n circle: \"\",\n \"aria-label\": _ctx.$t('sysStatus.selectDateRange'),\n onClick: $options.openTrendDateDialog\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"calendar\"\n })]),\n _: 1\n }, 8, [\"aria-label\", \"onClick\"])]), _createElementVNode(\"div\", _hoisted_34, [_createVNode(_component_el_radio_group, {\n modelValue: $data.trendGroupBy,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.trendGroupBy = $event),\n size: \"small\",\n class: \"trend-group-switch\",\n \"aria-label\": _ctx.$t('sysStatus.uploadTrendGroupBy')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio_button, {\n label: \"channel\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysStatus.byChannelType')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio_button, {\n label: \"channelName\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysStatus.byChannelName')), 1)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\", \"aria-label\"])])]), _createVNode(_component_el_dialog, {\n modelValue: $data.trendDatePickerVisible,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $data.trendDatePickerVisible = $event),\n title: _ctx.$t('sysStatus.selectDateRange'),\n width: $options.trendDateDialogWidth,\n class: \"trend-date-dialog\",\n \"align-center\": \"\",\n \"append-to-body\": \"\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_35, [_createVNode(_component_DateRangeCalendar, {\n modelValue: $data.trendDateRange,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.trendDateRange = $event),\n onChange: $options.handleTrendDateRangeChange\n }, null, 8, [\"modelValue\", \"onChange\"])])]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"width\"]), _createElementVNode(\"div\", _hoisted_36, [!$options.hasTrendData ? (_openBlock(), _createElementBlock(\"div\", _hoisted_37, [_createVNode(_component_font_awesome_icon, {\n icon: \"inbox\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('sysStatus.noData')), 1)])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_38, [_createVNode(_component_Line, {\n data: $options.uploadTrendChartData,\n options: $options.lineChartOptions\n }, null, 8, [\"data\", \"options\"])]))])]), _createElementVNode(\"div\", _hoisted_39, [_createElementVNode(\"div\", _hoisted_40, [_createVNode(_component_font_awesome_icon, {\n icon: \"share-alt\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('sysStatus.channelDistribution')), 1)]), _createElementVNode(\"div\", _hoisted_41, [Object.keys($data.indexInfo.channelStats || {}).length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_42, [_createVNode(_component_font_awesome_icon, {\n icon: \"inbox\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('sysStatus.noData')), 1)])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_43, [_createElementVNode(\"div\", _hoisted_44, [_createVNode(_component_Doughnut, {\n data: $options.channelChartData,\n options: $options.chartOptions\n }, null, 8, [\"data\", \"options\"]), _createElementVNode(\"div\", _hoisted_45, [_createElementVNode(\"div\", _hoisted_46, _toDisplayString($data.indexInfo.totalFiles?.toLocaleString() || '0'), 1), _createElementVNode(\"div\", _hoisted_47, _toDisplayString(_ctx.$t('sysStatus.totalFilesLabel')), 1)])]), _createElementVNode(\"div\", _hoisted_48, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.indexInfo.channelStats, (count, channel, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: channel,\n class: \"legend-item\"\n }, [_createElementVNode(\"span\", {\n class: \"legend-color\",\n style: _normalizeStyle({\n background: $options.getChartColor(index)\n })\n }, null, 4), _createElementVNode(\"span\", _hoisted_49, _toDisplayString(channel), 1), _createElementVNode(\"span\", _hoisted_50, _toDisplayString(count.toLocaleString()), 1), _createElementVNode(\"span\", _hoisted_51, _toDisplayString($options.getPercentage(count, $data.indexInfo.totalFiles)) + \"%\", 1)]);\n }), 128))])]))])]), _createElementVNode(\"div\", _hoisted_52, [_createElementVNode(\"div\", _hoisted_53, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-alt\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('sysStatus.fileStatusDistribution')), 1)]), _createElementVNode(\"div\", _hoisted_54, [Object.keys($data.indexInfo.typeStats || {}).length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_55, [_createVNode(_component_font_awesome_icon, {\n icon: \"inbox\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('sysStatus.noData')), 1)])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_56, [_createElementVNode(\"div\", _hoisted_57, [_createVNode(_component_Doughnut, {\n data: $options.typeChartData,\n options: $options.chartOptions\n }, null, 8, [\"data\", \"options\"]), _createElementVNode(\"div\", _hoisted_58, [_createElementVNode(\"div\", _hoisted_59, _toDisplayString(Object.keys($data.indexInfo.typeStats).length), 1), _createElementVNode(\"div\", _hoisted_60, _toDisplayString(_ctx.$t('sysStatus.statusTypes')), 1)])]), _createElementVNode(\"div\", _hoisted_61, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.aggregatedTypeStats, (count, status, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: status,\n class: \"legend-item\"\n }, [_createElementVNode(\"span\", {\n class: \"legend-color\",\n style: _normalizeStyle({\n background: $options.getTypeChartColor(index)\n })\n }, null, 4), _createElementVNode(\"span\", _hoisted_62, _toDisplayString(status), 1), _createElementVNode(\"span\", _hoisted_63, _toDisplayString(count.toLocaleString()), 1), _createElementVNode(\"span\", _hoisted_64, _toDisplayString($options.getPercentage(count, $data.indexInfo.totalFiles)) + \"%\", 1)]);\n }), 128))])]))])])]), _createElementVNode(\"div\", _hoisted_65, [_createElementVNode(\"div\", _hoisted_66, [_createElementVNode(\"div\", _hoisted_67, [_createVNode(_component_font_awesome_icon, {\n icon: \"tools\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('sysStatus.systemMaintenance')), 1)]), _createElementVNode(\"div\", _hoisted_68, [$data.isProcessing ? (_openBlock(), _createElementBlock(\"div\", _hoisted_69, [_createElementVNode(\"div\", _hoisted_70, [_createElementVNode(\"span\", _hoisted_71, _toDisplayString($options.phaseDescription), 1), _createElementVNode(\"span\", _hoisted_72, _toDisplayString(Math.round($data.processingProgress.percentage)) + \"%\", 1)]), _createVNode(_component_el_progress, {\n percentage: $data.processingProgress.percentage,\n \"stroke-width\": 12,\n \"show-text\": false,\n class: \"progress-bar\"\n }, null, 8, [\"percentage\"]), _createElementVNode(\"div\", _hoisted_73, [$data.processingProgress.current > 0 ? (_openBlock(), _createElementBlock(\"span\", _hoisted_74, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-alt\"\n }), _createTextVNode(\" \" + _toDisplayString($data.processingProgress.current.toLocaleString()) + \" \", 1), $data.processingProgress.total > 0 ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [_createTextVNode(\" / \" + _toDisplayString($data.processingProgress.total.toLocaleString()), 1)], 64)) : _createCommentVNode(\"\", true), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('sysStatus.records')), 1)])) : _createCommentVNode(\"\", true), $options.estimatedTimeRemaining ? (_openBlock(), _createElementBlock(\"span\", _hoisted_75, [_createVNode(_component_font_awesome_icon, {\n icon: \"clock\"\n }), _createTextVNode(\" \" + _toDisplayString($options.estimatedTimeRemaining), 1)])) : _createCommentVNode(\"\", true)]), $data.processingProgress.message ? (_openBlock(), _createElementBlock(\"div\", _hoisted_76, _toDisplayString($data.processingProgress.message), 1)) : _createCommentVNode(\"\", true), _createVNode(_component_el_button, {\n type: \"danger\",\n plain: \"\",\n size: \"small\",\n onClick: $options.cancelOperation,\n class: \"cancel-btn\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"times\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('sysStatus.cancelOperation')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : $data.processingError ? (_openBlock(), _createElementBlock(\"div\", _hoisted_77, [_createElementVNode(\"div\", _hoisted_78, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-triangle\"\n })]), _createElementVNode(\"div\", _hoisted_79, [_createElementVNode(\"div\", _hoisted_80, _toDisplayString($data.processingError.message), 1), $data.processingError.suggestion ? (_openBlock(), _createElementBlock(\"div\", _hoisted_81, _toDisplayString($data.processingError.suggestion), 1)) : _createCommentVNode(\"\", true)]), _createElementVNode(\"div\", _hoisted_82, [$data.processingError.recoverable ? (_openBlock(), _createBlock(_component_el_button, {\n key: 0,\n type: \"primary\",\n size: \"small\",\n onClick: $options.retryOperation\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('sysStatus.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])) : _createCommentVNode(\"\", true), _createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n onClick: $options.dismissError\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysStatus.close')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_83, [_createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysStatus.rebuildTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n type: \"primary\",\n loading: $data.rebuilding,\n disabled: $data.isProcessing,\n onClick: $options.rebuildIndex,\n class: \"action-btn rebuild-btn\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"sync-alt\"\n }), _createTextVNode(\" \" + _toDisplayString($data.rebuilding ? _ctx.$t('sysStatus.rebuilding') : _ctx.$t('sysStatus.rebuildIndex')), 1)]),\n _: 1\n }, 8, [\"loading\", \"disabled\", \"onClick\"])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysStatus.backupTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n type: \"success\",\n loading: $data.backing,\n disabled: $data.isProcessing,\n onClick: $options.backupData,\n class: \"action-btn backup-btn\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"download\"\n }), _createTextVNode(\" \" + _toDisplayString($data.backing ? _ctx.$t('sysStatus.backingUp') : _ctx.$t('sysStatus.backupData')), 1)]),\n _: 1\n }, 8, [\"loading\", \"disabled\", \"onClick\"])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysStatus.restoreTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_84, [_createElementVNode(\"input\", {\n type: \"file\",\n ref: \"fileInput\",\n accept: \".json\",\n onChange: _cache[5] || (_cache[5] = (...args) => $options.handleFileSelect && $options.handleFileSelect(...args)),\n style: {\n \"display\": \"none\"\n }\n }, null, 544), _createVNode(_component_el_button, {\n type: \"warning\",\n loading: $data.restoring,\n disabled: $data.isProcessing,\n onClick: $options.selectRestoreFile,\n class: \"action-btn restore-btn\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"upload\"\n }), _createTextVNode(\" \" + _toDisplayString($data.restoring ? _ctx.$t('sysStatus.restoring') : _ctx.$t('sysStatus.restoreData')), 1)]),\n _: 1\n }, 8, [\"loading\", \"disabled\", \"onClick\"])])]),\n _: 1\n }, 8, [\"content\"])]))])])]), $data.indexInfo.newestFile || $data.indexInfo.oldestFile ? (_openBlock(), _createElementBlock(\"div\", _hoisted_85, [$data.indexInfo.newestFile ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"file-info-card info-card-newest\",\n onClick: _cache[8] || (_cache[8] = $event => $options.openFileInNewTab($data.indexInfo.newestFile))\n }, [$options.isImageFile($data.indexInfo.newestFile) && !$data.loadErrors['newest'] ? (_openBlock(), _createBlock(_component_el_image, {\n key: 0,\n src: '/file/' + $data.indexInfo.newestFile.id + '?from=admin',\n fit: \"cover\",\n class: \"card-bg-media\",\n onError: _cache[6] || (_cache[6] = $event => $options.handleImageError('newest'))\n }, null, 8, [\"src\"])) : $options.isVideoFile($data.indexInfo.newestFile) && !$data.loadErrors['newest'] ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n src: '/file/' + $data.indexInfo.newestFile.id + '?from=admin',\n class: \"card-bg-media\",\n muted: \"\",\n loop: \"\",\n autoplay: \"\",\n onError: _cache[7] || (_cache[7] = $event => $options.handleImageError('newest'))\n }, null, 40, _hoisted_86)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_87, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-alt\",\n class: \"fallback-icon\"\n })])), _createElementVNode(\"div\", _hoisted_88, [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-up\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('sysStatus.latestUpload')), 1)]), _createElementVNode(\"div\", _hoisted_89, [_createElementVNode(\"div\", _hoisted_90, _toDisplayString($data.indexInfo.newestFile.metadata?.FileName || $data.indexInfo.newestFile.id), 1), _createElementVNode(\"div\", _hoisted_91, _toDisplayString($options.formatTime($data.indexInfo.newestFile.metadata?.TimeStamp)), 1)])])) : _createCommentVNode(\"\", true), $data.indexInfo.oldestFile ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"file-info-card info-card-oldest\",\n onClick: _cache[11] || (_cache[11] = $event => $options.openFileInNewTab($data.indexInfo.oldestFile))\n }, [$options.isImageFile($data.indexInfo.oldestFile) && !$data.loadErrors['oldest'] ? (_openBlock(), _createBlock(_component_el_image, {\n key: 0,\n src: '/file/' + $data.indexInfo.oldestFile.id + '?from=admin',\n fit: \"cover\",\n class: \"card-bg-media\",\n onError: _cache[9] || (_cache[9] = $event => $options.handleImageError('oldest'))\n }, null, 8, [\"src\"])) : $options.isVideoFile($data.indexInfo.oldestFile) && !$data.loadErrors['oldest'] ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n src: '/file/' + $data.indexInfo.oldestFile.id + '?from=admin',\n class: \"card-bg-media\",\n muted: \"\",\n loop: \"\",\n autoplay: \"\",\n onError: _cache[10] || (_cache[10] = $event => $options.handleImageError('oldest'))\n }, null, 40, _hoisted_92)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_93, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-alt\",\n class: \"fallback-icon\"\n })])), _createElementVNode(\"div\", _hoisted_94, [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-down\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('sysStatus.earliestUpload')), 1)]), _createElementVNode(\"div\", _hoisted_95, [_createElementVNode(\"div\", _hoisted_96, _toDisplayString($data.indexInfo.oldestFile.metadata?.FileName || $data.indexInfo.oldestFile.id), 1), _createElementVNode(\"div\", _hoisted_97, _toDisplayString($options.formatTime($data.indexInfo.oldestFile.metadata?.TimeStamp)), 1)])])) : _createCommentVNode(\"\", true)])) : _createCommentVNode(\"\", true)])), [[_directive_loading, $data.loading]]);\n}","/*!\n * @kurkle/color v0.3.4\n * https://github.com/kurkle/color#readme\n * (c) 2024 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction b2p(v) {\n return lim(round(v / 2.55), 0, 100);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\n\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map$1[str[1]] * 17,\n g: 255 & map$1[str[2]] * 17,\n b: 255 & map$1[str[3]] * 17,\n a: len === 5 ? map$1[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map$1[str[1]] << 4 | map$1[str[2]],\n g: map$1[str[3]] << 4 | map$1[str[4]],\n b: map$1[str[5]] << 4 | map$1[str[6]],\n a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n };\n }\n }\n return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v\n ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n : undefined;\n}\n\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return ((g - b) / d) + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h, s, d;\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (\n Array.isArray(a)\n ? f(a[0], a[1], a[2])\n : f(a, b, c)\n ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return;\n }\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n if (m[1] === 'hwb') {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === 'hsv') {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\nfunction rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\nfunction hslString(v) {\n if (!v) {\n return;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255\n ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n : `hsl(${h}, ${s}%, ${l}%)`;\n}\n\nconst map = {\n\tx: 'dark',\n\tZ: 'light',\n\tY: 're',\n\tX: 'blu',\n\tW: 'gr',\n\tV: 'medium',\n\tU: 'slate',\n\tA: 'ee',\n\tT: 'ol',\n\tS: 'or',\n\tB: 'ra',\n\tC: 'lateg',\n\tD: 'ights',\n\tR: 'in',\n\tQ: 'turquois',\n\tE: 'hi',\n\tP: 'ro',\n\tO: 'al',\n\tN: 'le',\n\tM: 'de',\n\tL: 'yello',\n\tF: 'en',\n\tK: 'ch',\n\tG: 'arks',\n\tH: 'ea',\n\tI: 'ightg',\n\tJ: 'wh'\n};\nconst names$1 = {\n\tOiceXe: 'f0f8ff',\n\tantiquewEte: 'faebd7',\n\taqua: 'ffff',\n\taquamarRe: '7fffd4',\n\tazuY: 'f0ffff',\n\tbeige: 'f5f5dc',\n\tbisque: 'ffe4c4',\n\tblack: '0',\n\tblanKedOmond: 'ffebcd',\n\tXe: 'ff',\n\tXeviTet: '8a2be2',\n\tbPwn: 'a52a2a',\n\tburlywood: 'deb887',\n\tcaMtXe: '5f9ea0',\n\tKartYuse: '7fff00',\n\tKocTate: 'd2691e',\n\tcSO: 'ff7f50',\n\tcSnflowerXe: '6495ed',\n\tcSnsilk: 'fff8dc',\n\tcrimson: 'dc143c',\n\tcyan: 'ffff',\n\txXe: '8b',\n\txcyan: '8b8b',\n\txgTMnPd: 'b8860b',\n\txWay: 'a9a9a9',\n\txgYF: '6400',\n\txgYy: 'a9a9a9',\n\txkhaki: 'bdb76b',\n\txmagFta: '8b008b',\n\txTivegYF: '556b2f',\n\txSange: 'ff8c00',\n\txScEd: '9932cc',\n\txYd: '8b0000',\n\txsOmon: 'e9967a',\n\txsHgYF: '8fbc8f',\n\txUXe: '483d8b',\n\txUWay: '2f4f4f',\n\txUgYy: '2f4f4f',\n\txQe: 'ced1',\n\txviTet: '9400d3',\n\tdAppRk: 'ff1493',\n\tdApskyXe: 'bfff',\n\tdimWay: '696969',\n\tdimgYy: '696969',\n\tdodgerXe: '1e90ff',\n\tfiYbrick: 'b22222',\n\tflSOwEte: 'fffaf0',\n\tfoYstWAn: '228b22',\n\tfuKsia: 'ff00ff',\n\tgaRsbSo: 'dcdcdc',\n\tghostwEte: 'f8f8ff',\n\tgTd: 'ffd700',\n\tgTMnPd: 'daa520',\n\tWay: '808080',\n\tgYF: '8000',\n\tgYFLw: 'adff2f',\n\tgYy: '808080',\n\thoneyMw: 'f0fff0',\n\thotpRk: 'ff69b4',\n\tRdianYd: 'cd5c5c',\n\tRdigo: '4b0082',\n\tivSy: 'fffff0',\n\tkhaki: 'f0e68c',\n\tlavFMr: 'e6e6fa',\n\tlavFMrXsh: 'fff0f5',\n\tlawngYF: '7cfc00',\n\tNmoncEffon: 'fffacd',\n\tZXe: 'add8e6',\n\tZcSO: 'f08080',\n\tZcyan: 'e0ffff',\n\tZgTMnPdLw: 'fafad2',\n\tZWay: 'd3d3d3',\n\tZgYF: '90ee90',\n\tZgYy: 'd3d3d3',\n\tZpRk: 'ffb6c1',\n\tZsOmon: 'ffa07a',\n\tZsHgYF: '20b2aa',\n\tZskyXe: '87cefa',\n\tZUWay: '778899',\n\tZUgYy: '778899',\n\tZstAlXe: 'b0c4de',\n\tZLw: 'ffffe0',\n\tlime: 'ff00',\n\tlimegYF: '32cd32',\n\tlRF: 'faf0e6',\n\tmagFta: 'ff00ff',\n\tmaPon: '800000',\n\tVaquamarRe: '66cdaa',\n\tVXe: 'cd',\n\tVScEd: 'ba55d3',\n\tVpurpN: '9370db',\n\tVsHgYF: '3cb371',\n\tVUXe: '7b68ee',\n\tVsprRggYF: 'fa9a',\n\tVQe: '48d1cc',\n\tVviTetYd: 'c71585',\n\tmidnightXe: '191970',\n\tmRtcYam: 'f5fffa',\n\tmistyPse: 'ffe4e1',\n\tmoccasR: 'ffe4b5',\n\tnavajowEte: 'ffdead',\n\tnavy: '80',\n\tTdlace: 'fdf5e6',\n\tTive: '808000',\n\tTivedBb: '6b8e23',\n\tSange: 'ffa500',\n\tSangeYd: 'ff4500',\n\tScEd: 'da70d6',\n\tpOegTMnPd: 'eee8aa',\n\tpOegYF: '98fb98',\n\tpOeQe: 'afeeee',\n\tpOeviTetYd: 'db7093',\n\tpapayawEp: 'ffefd5',\n\tpHKpuff: 'ffdab9',\n\tperu: 'cd853f',\n\tpRk: 'ffc0cb',\n\tplum: 'dda0dd',\n\tpowMrXe: 'b0e0e6',\n\tpurpN: '800080',\n\tYbeccapurpN: '663399',\n\tYd: 'ff0000',\n\tPsybrown: 'bc8f8f',\n\tPyOXe: '4169e1',\n\tsaddNbPwn: '8b4513',\n\tsOmon: 'fa8072',\n\tsandybPwn: 'f4a460',\n\tsHgYF: '2e8b57',\n\tsHshell: 'fff5ee',\n\tsiFna: 'a0522d',\n\tsilver: 'c0c0c0',\n\tskyXe: '87ceeb',\n\tUXe: '6a5acd',\n\tUWay: '708090',\n\tUgYy: '708090',\n\tsnow: 'fffafa',\n\tsprRggYF: 'ff7f',\n\tstAlXe: '4682b4',\n\ttan: 'd2b48c',\n\tteO: '8080',\n\ttEstN: 'd8bfd8',\n\ttomato: 'ff6347',\n\tQe: '40e0d0',\n\tviTet: 'ee82ee',\n\tJHt: 'f5deb3',\n\twEte: 'ffffff',\n\twEtesmoke: 'f5f5f5',\n\tLw: 'ffff00',\n\tLwgYF: '9acd32'\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names$1);\n const tkeys = Object.keys(map);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map[k]);\n }\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\n\nlet names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const a = names[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\n\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return;\n }\n if (m[7] !== r) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n r: r,\n g: g,\n b: b,\n a: a\n };\n}\nfunction rgbString(v) {\n return v && (\n v.a < 255\n ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n : `rgb(${v.r}, ${v.g}, ${v.b})`\n );\n}\n\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\n };\n}\n\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n var v = {r: 0, g: 0, b: 0, a: 255};\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {r: input[0], g: input[1], b: input[2], a: 255};\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\nclass Color {\n constructor(input) {\n if (input instanceof Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === 'object') {\n v = fromObject(input);\n } else if (type === 'string') {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n get valid() {\n return this._valid;\n }\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n mix(color, weight) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n let w2;\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n clone() {\n return new Color(this.rgb);\n }\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n greyscale() {\n const rgb = this._rgb;\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\n\nfunction index_esm(input) {\n return new Color(input);\n}\n\nexport { Color, b2n, b2p, index_esm as default, hexParse, hexString, hsl2rgb, hslString, hsv2rgb, hueParse, hwb2rgb, lim, n2b, n2p, nameParse, p2b, rgb2hsl, rgbParse, rgbString, rotate, round };\n","/**\n * @namespace Chart.helpers\n */\n\nimport type {AnyObject} from '../types/basic.js';\nimport type {ActiveDataPoint, ChartEvent} from '../types/index.js';\n\n/**\n * An empty function that can be used, for example, for optional callback.\n */\nexport function noop() {\n /* noop */\n}\n\n/**\n * Returns a unique id, sequentially generated from a global variable.\n */\nexport const uid = (() => {\n let id = 0;\n return () => id++;\n})();\n\n/**\n * Returns true if `value` is neither null nor undefined, else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */\nexport function isNullOrUndef(value: unknown): value is null | undefined {\n return value === null || value === undefined;\n}\n\n/**\n * Returns true if `value` is an array (including typed arrays), else returns false.\n * @param value - The value to test.\n * @function\n */\nexport function isArray(value: unknown): value is T[] {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n return true;\n }\n return false;\n}\n\n/**\n * Returns true if `value` is an object (excluding null), else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */\nexport function isObject(value: unknown): value is AnyObject {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\n\n/**\n * Returns true if `value` is a finite number, else returns false\n * @param value - The value to test.\n */\nfunction isNumberFinite(value: unknown): value is number {\n return (typeof value === 'number' || value instanceof Number) && isFinite(+value);\n}\nexport {\n isNumberFinite as isFinite,\n};\n\n/**\n * Returns `value` if finite, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is not finite.\n */\nexport function finiteOrDefault(value: unknown, defaultValue: number) {\n return isNumberFinite(value) ? value : defaultValue;\n}\n\n/**\n * Returns `value` if defined, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is undefined.\n */\nexport function valueOrDefault(value: T | undefined, defaultValue: T) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\n\nexport const toPercentage = (value: number | string, dimension: number) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100\n : +value / dimension;\n\nexport const toDimension = (value: number | string, dimension: number) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100 * dimension\n : +value;\n\n/**\n * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n * @param fn - The function to call.\n * @param args - The arguments with which `fn` should be called.\n * @param [thisArg] - The value of `this` provided for the call to `fn`.\n */\nexport function callback R, TA, R>(\n fn: T | undefined,\n args: unknown[],\n thisArg?: TA\n): R | undefined {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\n\n/**\n * Note(SB) for performance sake, this method should only be used when loopable type\n * is unknown or in none intensive code (not called often and small loopable). Else\n * it's preferable to use a regular for() loop and save extra function calls.\n * @param loopable - The object or array to be iterated.\n * @param fn - The function to call for each item.\n * @param [thisArg] - The value of `this` provided for the call to `fn`.\n * @param [reverse] - If true, iterates backward on the loopable.\n */\nexport function each(\n loopable: Record,\n fn: (this: TA, v: T, i: string) => void,\n thisArg?: TA,\n reverse?: boolean\n): void;\nexport function each(\n loopable: T[],\n fn: (this: TA, v: T, i: number) => void,\n thisArg?: TA,\n reverse?: boolean\n): void;\nexport function each(\n loopable: T[] | Record,\n fn: (this: TA, v: T, i: any) => void,\n thisArg?: TA,\n reverse?: boolean\n) {\n let i: number, len: number, keys: string[];\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for (i = len - 1; i >= 0; i--) {\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\n\n/**\n * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n * @param a0 - The array to compare\n * @param a1 - The array to compare\n * @private\n */\nexport function _elementsEqual(a0: ActiveDataPoint[], a1: ActiveDataPoint[]) {\n let i: number, ilen: number, v0: ActiveDataPoint, v1: ActiveDataPoint;\n\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Returns a deep copy of `source` without keeping references on objects and arrays.\n * @param source - The value to clone.\n */\nexport function clone(source: T): T {\n if (isArray(source)) {\n return source.map(clone) as unknown as T;\n }\n\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n\n for (; k < klen; ++k) {\n target[keys[k]] = clone(source[keys[k]]);\n }\n\n return target;\n }\n\n return source;\n}\n\nfunction isValidKey(key: string) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\n\n/**\n * The default merger when Chart.helpers.merge is called without merger option.\n * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\n * @private\n */\nexport function _merger(key: string, target: AnyObject, source: AnyObject, options: AnyObject) {\n if (!isValidKey(key)) {\n return;\n }\n\n const tval = target[key];\n const sval = source[key];\n\n if (isObject(tval) && isObject(sval)) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n merge(tval, sval, options);\n } else {\n target[key] = clone(sval);\n }\n}\n\nexport interface MergeOptions {\n merger?: (key: string, target: AnyObject, source: AnyObject, options?: AnyObject) => void;\n}\n\n/**\n * Recursively deep copies `source` properties into `target` with the given `options`.\n * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n * @param target - The target object in which all sources are merged into.\n * @param source - Object(s) to merge into `target`.\n * @param [options] - Merging options:\n * @param [options.merger] - The merge method (key, target, source, options)\n * @returns The `target` object.\n */\nexport function merge(target: T, source: [], options?: MergeOptions): T;\nexport function merge(target: T, source: S1, options?: MergeOptions): T & S1;\nexport function merge(target: T, source: [S1], options?: MergeOptions): T & S1;\nexport function merge(target: T, source: [S1, S2], options?: MergeOptions): T & S1 & S2;\nexport function merge(target: T, source: [S1, S2, S3], options?: MergeOptions): T & S1 & S2 & S3;\nexport function merge(\n target: T,\n source: [S1, S2, S3, S4],\n options?: MergeOptions\n): T & S1 & S2 & S3 & S4;\nexport function merge(target: T, source: AnyObject[], options?: MergeOptions): AnyObject;\nexport function merge(target: T, source: AnyObject[], options?: MergeOptions): AnyObject {\n const sources = isArray(source) ? source : [source];\n const ilen = sources.length;\n\n if (!isObject(target)) {\n return target as AnyObject;\n }\n\n options = options || {};\n const merger = options.merger || _merger;\n let current: AnyObject;\n\n for (let i = 0; i < ilen; ++i) {\n current = sources[i];\n if (!isObject(current)) {\n continue;\n }\n\n const keys = Object.keys(current);\n for (let k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, current, options as AnyObject);\n }\n }\n\n return target;\n}\n\n/**\n * Recursively deep copies `source` properties into `target` *only* if not defined in target.\n * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n * @param target - The target object in which all sources are merged into.\n * @param source - Object(s) to merge into `target`.\n * @returns The `target` object.\n */\nexport function mergeIf(target: T, source: []): T;\nexport function mergeIf(target: T, source: S1): T & S1;\nexport function mergeIf(target: T, source: [S1]): T & S1;\nexport function mergeIf(target: T, source: [S1, S2]): T & S1 & S2;\nexport function mergeIf(target: T, source: [S1, S2, S3]): T & S1 & S2 & S3;\nexport function mergeIf(target: T, source: [S1, S2, S3, S4]): T & S1 & S2 & S3 & S4;\nexport function mergeIf(target: T, source: AnyObject[]): AnyObject;\nexport function mergeIf(target: T, source: AnyObject[]): AnyObject {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return merge(target, source, {merger: _mergerIf});\n}\n\n/**\n * Merges source[key] in target[key] only if target[key] is undefined.\n * @private\n */\nexport function _mergerIf(key: string, target: AnyObject, source: AnyObject) {\n if (!isValidKey(key)) {\n return;\n }\n\n const tval = target[key];\n const sval = source[key];\n\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone(sval);\n }\n}\n\n/**\n * @private\n */\nexport function _deprecated(scope: string, value: unknown, previous: string, current: string) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous +\n '\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\n\n// resolveObjectKey resolver cache\nconst keyResolvers = {\n // Chart.helpers.core resolveObjectKey should resolve empty key to root object\n '': v => v,\n // default resolvers\n x: o => o.x,\n y: o => o.y\n};\n\n/**\n * @private\n */\nexport function _splitKey(key: string) {\n const parts = key.split('.');\n const keys: string[] = [];\n let tmp = '';\n for (const part of parts) {\n tmp += part;\n if (tmp.endsWith('\\\\')) {\n tmp = tmp.slice(0, -1) + '.';\n } else {\n keys.push(tmp);\n tmp = '';\n }\n }\n return keys;\n}\n\nfunction _getKeyResolver(key: string) {\n const keys = _splitKey(key);\n return obj => {\n for (const k of keys) {\n if (k === '') {\n // For backward compatibility:\n // Chart.helpers.core resolveObjectKey should break at empty key\n break;\n }\n obj = obj && obj[k];\n }\n return obj;\n };\n}\n\nexport function resolveObjectKey(obj: AnyObject, key: string): any {\n const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n return resolver(obj);\n}\n\n/**\n * @private\n */\nexport function _capitalize(str: string) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\n\nexport const defined = (value: unknown) => typeof value !== 'undefined';\n\nexport const isFunction = (value: unknown): value is (...args: any[]) => any => typeof value === 'function';\n\n// Adapted from https://stackoverflow.com/questions/31128855/comparing-ecma6-sets-for-equality#31129384\nexport const setsEqual = (a: Set, b: Set) => {\n if (a.size !== b.size) {\n return false;\n }\n\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n\n return true;\n};\n\n/**\n * @param e - The event\n * @private\n */\nexport function _isClickEvent(e: ChartEvent) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n","import type {Point} from '../types/geometric.js';\nimport {isFinite as isFiniteNumber} from './helpers.core.js';\n\n/**\n * @alias Chart.helpers.math\n * @namespace\n */\n\nexport const PI = Math.PI;\nexport const TAU = 2 * PI;\nexport const PITAU = TAU + PI;\nexport const INFINITY = Number.POSITIVE_INFINITY;\nexport const RAD_PER_DEG = PI / 180;\nexport const HALF_PI = PI / 2;\nexport const QUARTER_PI = PI / 4;\nexport const TWO_THIRDS_PI = PI * 2 / 3;\n\nexport const log10 = Math.log10;\nexport const sign = Math.sign;\n\nexport function almostEquals(x: number, y: number, epsilon: number) {\n return Math.abs(x - y) < epsilon;\n}\n\n/**\n * Implementation of the nice number algorithm used in determining where axis labels will go\n */\nexport function niceNum(range: number) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\n\n/**\n * Returns an array of factors sorted from 1 to sqrt(value)\n * @private\n */\nexport function _factorize(value: number) {\n const result: number[] = [];\n const sqrt = Math.sqrt(value);\n let i: number;\n\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) { // if value is a square number\n result.push(sqrt);\n }\n\n result.sort((a, b) => a - b).pop();\n return result;\n}\n\n/**\n * Verifies that attempting to coerce n to string or number won't throw a TypeError.\n */\nfunction isNonPrimitive(n: unknown) {\n return typeof n === 'symbol' || (typeof n === 'object' && n !== null && !(Symbol.toPrimitive in n || 'toString' in n || 'valueOf' in n));\n}\n\nexport function isNumber(n: unknown): n is number {\n return !isNonPrimitive(n) && !isNaN(parseFloat(n as string)) && isFinite(n as number);\n}\n\nexport function almostWhole(x: number, epsilon: number) {\n const rounded = Math.round(x);\n return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\n\n/**\n * @private\n */\nexport function _setMinAndMaxByKey(\n array: Record[],\n target: { min: number, max: number },\n property: string\n) {\n let i: number, ilen: number, value: number;\n\n for (i = 0, ilen = array.length; i < ilen; i++) {\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\n\nexport function toRadians(degrees: number) {\n return degrees * (PI / 180);\n}\n\nexport function toDegrees(radians: number) {\n return radians * (180 / PI);\n}\n\n/**\n * Returns the number of decimal places\n * i.e. the number of digits after the decimal point, of the value of this Number.\n * @param x - A number.\n * @returns The number of decimal places.\n * @private\n */\nexport function _decimalPlaces(x: number) {\n if (!isFiniteNumber(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n return p;\n}\n\n// Gets the angle from vertical upright to the point about a centre.\nexport function getAngleFromPoint(\n centrePoint: Point,\n anglePoint: Point\n) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n\n if (angle < (-0.5 * PI)) {\n angle += TAU; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n }\n\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\n\nexport function distanceBetweenPoints(pt1: Point, pt2: Point) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\n\n/**\n * Shortest distance between angles, in either direction.\n * @private\n */\nexport function _angleDiff(a: number, b: number) {\n return (a - b + PITAU) % TAU - PI;\n}\n\n/**\n * Normalize angle to be between 0 and 2*PI\n * @private\n */\nexport function _normalizeAngle(a: number) {\n return (a % TAU + TAU) % TAU;\n}\n\n/**\n * @private\n */\nexport function _angleBetween(angle: number, start: number, end: number, sameAngleIsFullCircle?: boolean) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || (sameAngleIsFullCircle && s === e)\n || (angleToStart > angleToEnd && startToAngle < endToAngle);\n}\n\n/**\n * Limit `value` between `min` and `max`\n * @param value\n * @param min\n * @param max\n * @private\n */\nexport function _limitValue(value: number, min: number, max: number) {\n return Math.max(min, Math.min(max, value));\n}\n\n/**\n * @param {number} value\n * @private\n */\nexport function _int16Range(value: number) {\n return _limitValue(value, -32768, 32767);\n}\n\n/**\n * @param value\n * @param start\n * @param end\n * @param [epsilon]\n * @private\n */\nexport function _isBetween(value: number, start: number, end: number, epsilon = 1e-6) {\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n","import {_capitalize} from './helpers.core.js';\n\n/**\n * Binary search\n * @param table - the table search. must be sorted!\n * @param value - value to find\n * @param cmp\n * @private\n */\nexport function _lookup(\n table: number[],\n value: number,\n cmp?: (value: number) => boolean\n): {lo: number, hi: number};\nexport function _lookup(\n table: T[],\n value: number,\n cmp: (value: number) => boolean\n): {lo: number, hi: number};\nexport function _lookup(\n table: unknown[],\n value: number,\n cmp?: (value: number) => boolean\n) {\n cmp = cmp || ((index) => table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid: number;\n\n while (hi - lo > 1) {\n mid = (lo + hi) >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n\n return {lo, hi};\n}\n\n/**\n * Binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @param last - lookup last index\n * @private\n */\nexport const _lookupByKey = (\n table: Record[],\n key: string,\n value: number,\n last?: boolean\n) =>\n _lookup(table, value, last\n ? index => {\n const ti = table[index][key];\n return ti < value || ti === value && table[index + 1][key] === value;\n }\n : index => table[index][key] < value);\n\n/**\n * Reverse binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @private\n */\nexport const _rlookupByKey = (\n table: Record[],\n key: string,\n value: number\n) =>\n _lookup(table, value, index => table[index][key] >= value);\n\n/**\n * Return subset of `values` between `min` and `max` inclusive.\n * Values are assumed to be in sorted order.\n * @param values - sorted array of values\n * @param min - min value\n * @param max - max value\n */\nexport function _filterBetween(values: number[], min: number, max: number) {\n let start = 0;\n let end = values.length;\n\n while (start < end && values[start] < min) {\n start++;\n }\n while (end > start && values[end - 1] > max) {\n end--;\n }\n\n return start > 0 || end < values.length\n ? values.slice(start, end)\n : values;\n}\n\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'] as const;\n\nexport interface ArrayListener {\n _onDataPush?(...item: T[]): void;\n _onDataPop?(): void;\n _onDataShift?(): void;\n _onDataSplice?(index: number, deleteCount: number, ...items: T[]): void;\n _onDataUnshift?(...item: T[]): void;\n}\n\n/**\n * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\n * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\n * called on the '_onData*' callbacks (e.g. _onDataPush, etc.) with same arguments.\n */\nexport function listenArrayEvents(array: T[], listener: ArrayListener): void;\nexport function listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n\n arrayEvents.forEach((key) => {\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value(...args) {\n const res = base.apply(this, args);\n\n array._chartjs.listeners.forEach((object) => {\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n\n return res;\n }\n });\n });\n}\n\n\n/**\n * Removes the given array event listener and cleanup extra attached properties (such as\n * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\n */\nexport function unlistenArrayEvents(array: T[], listener: ArrayListener): void;\nexport function unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n\n if (listeners.length > 0) {\n return;\n }\n\n arrayEvents.forEach((key) => {\n delete array[key];\n });\n\n delete array._chartjs;\n}\n\n/**\n * @param items\n */\nexport function _arrayUnique(items: T[]) {\n const set = new Set(items);\n\n if (set.size === items.length) {\n return items;\n }\n\n return Array.from(set);\n}\n","import type {ChartMeta, PointElement} from '../types/index.js';\n\nimport {_limitValue} from './helpers.math.js';\nimport {_lookupByKey} from './helpers.collection.js';\nimport {isNullOrUndef} from './helpers.core.js';\n\nexport function fontString(pixelSize: number, fontStyle: string, fontFamily: string) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\n\n/**\n* Request animation polyfill\n*/\nexport const requestAnimFrame = (function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}());\n\n/**\n * Throttles calling `fn` once per animation frame\n * Latest arguments are used on the actual call\n */\nexport function throttled>(\n fn: (...args: TArgs) => void,\n thisArg: any,\n) {\n let argsToUse = [] as TArgs;\n let ticking = false;\n\n return function(...args: TArgs) {\n // Save the args for use later\n argsToUse = args;\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, () => {\n ticking = false;\n fn.apply(thisArg, argsToUse);\n });\n }\n };\n}\n\n/**\n * Debounces calling `fn` for `delay` ms\n */\nexport function debounce>(fn: (...args: TArgs) => void, delay: number) {\n let timeout;\n return function(...args: TArgs) {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\n\n/**\n * Converts 'start' to 'left', 'end' to 'right' and others to 'center'\n * @private\n */\nexport const _toLeftRightCenter = (align: 'start' | 'end' | 'center') => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\n\n/**\n * Returns `start`, `end` or `(start + end) / 2` depending on `align`. Defaults to `center`\n * @private\n */\nexport const _alignStartEnd = (align: 'start' | 'end' | 'center', start: number, end: number) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\n\n/**\n * Returns `left`, `right` or `(left + right) / 2` depending on `align`. Defaults to `left`\n * @private\n */\nexport const _textX = (align: 'left' | 'right' | 'center', left: number, right: number, rtl: boolean) => {\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\n\n/**\n * Return start and count of visible points.\n * @private\n */\nexport function _getStartAndCountOfVisiblePoints(meta: ChartMeta<'line' | 'scatter'>, points: PointElement[], animationsDisabled: boolean) {\n const pointCount = points.length;\n\n let start = 0;\n let count = pointCount;\n\n if (meta._sorted) {\n const {iScale, vScale, _parsed} = meta;\n const spanGaps = meta.dataset ? meta.dataset.options ? meta.dataset.options.spanGaps : null : null;\n const axis = iScale.axis;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n\n if (minDefined) {\n start = Math.min(\n // @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, axis, min).lo,\n // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo);\n if (spanGaps) {\n const distanceToDefinedLo = (_parsed\n .slice(0, start + 1)\n .reverse()\n .findIndex(\n point => !isNullOrUndef(point[vScale.axis])));\n start -= Math.max(0, distanceToDefinedLo);\n }\n start = _limitValue(start, 0, pointCount - 1);\n }\n if (maxDefined) {\n let end = Math.max(\n // @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, iScale.axis, max, true).hi + 1,\n // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1);\n if (spanGaps) {\n const distanceToDefinedHi = (_parsed\n .slice(end - 1)\n .findIndex(\n point => !isNullOrUndef(point[vScale.axis])));\n end += Math.max(0, distanceToDefinedHi);\n }\n count = _limitValue(end, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n\n return {start, count};\n}\n\n/**\n * Checks if the scale ranges have changed.\n * @param {object} meta - dataset meta.\n * @returns {boolean}\n * @private\n */\nexport function _scaleRangesChanged(meta) {\n const {xScale, yScale, _scaleRanges} = meta;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min\n\t\t|| _scaleRanges.xmax !== xScale.max\n\t\t|| _scaleRanges.ymin !== yScale.min\n\t\t|| _scaleRanges.ymax !== yScale.max;\n\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\n","import {PI, TAU, HALF_PI} from './helpers.math.js';\n\nconst atEdge = (t: number) => t === 0 || t === 1;\nconst elasticIn = (t: number, s: number, p: number) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t: number, s: number, p: number) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\n\n/**\n * Easing functions adapted from Robert Penner's easing equations.\n * @namespace Chart.helpers.easing.effects\n * @see http://www.robertpenner.com/easing/\n */\nconst effects = {\n linear: (t: number) => t,\n\n easeInQuad: (t: number) => t * t,\n\n easeOutQuad: (t: number) => -t * (t - 2),\n\n easeInOutQuad: (t: number) => ((t /= 0.5) < 1)\n ? 0.5 * t * t\n : -0.5 * ((--t) * (t - 2) - 1),\n\n easeInCubic: (t: number) => t * t * t,\n\n easeOutCubic: (t: number) => (t -= 1) * t * t + 1,\n\n easeInOutCubic: (t: number) => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t\n : 0.5 * ((t -= 2) * t * t + 2),\n\n easeInQuart: (t: number) => t * t * t * t,\n\n easeOutQuart: (t: number) => -((t -= 1) * t * t * t - 1),\n\n easeInOutQuart: (t: number) => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t\n : -0.5 * ((t -= 2) * t * t * t - 2),\n\n easeInQuint: (t: number) => t * t * t * t * t,\n\n easeOutQuint: (t: number) => (t -= 1) * t * t * t * t + 1,\n\n easeInOutQuint: (t: number) => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t * t\n : 0.5 * ((t -= 2) * t * t * t * t + 2),\n\n easeInSine: (t: number) => -Math.cos(t * HALF_PI) + 1,\n\n easeOutSine: (t: number) => Math.sin(t * HALF_PI),\n\n easeInOutSine: (t: number) => -0.5 * (Math.cos(PI * t) - 1),\n\n easeInExpo: (t: number) => (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)),\n\n easeOutExpo: (t: number) => (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1,\n\n easeInOutExpo: (t: number) => atEdge(t) ? t : t < 0.5\n ? 0.5 * Math.pow(2, 10 * (t * 2 - 1))\n : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n\n easeInCirc: (t: number) => (t >= 1) ? t : -(Math.sqrt(1 - t * t) - 1),\n\n easeOutCirc: (t: number) => Math.sqrt(1 - (t -= 1) * t),\n\n easeInOutCirc: (t: number) => ((t /= 0.5) < 1)\n ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n\n easeInElastic: (t: number) => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n\n easeOutElastic: (t: number) => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n\n easeInOutElastic(t: number) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t :\n t < 0.5\n ? 0.5 * elasticIn(t * 2, s, p)\n : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n\n easeInBack(t: number) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n\n easeOutBack(t: number) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n\n easeInOutBack(t: number) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n },\n\n easeInBounce: (t: number) => 1 - effects.easeOutBounce(1 - t),\n\n easeOutBounce(t: number) {\n const m = 7.5625;\n const d = 2.75;\n if (t < (1 / d)) {\n return m * t * t;\n }\n if (t < (2 / d)) {\n return m * (t -= (1.5 / d)) * t + 0.75;\n }\n if (t < (2.5 / d)) {\n return m * (t -= (2.25 / d)) * t + 0.9375;\n }\n return m * (t -= (2.625 / d)) * t + 0.984375;\n },\n\n easeInOutBounce: (t: number) => (t < 0.5)\n ? effects.easeInBounce(t * 2) * 0.5\n : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5,\n} as const;\n\nexport type EasingFunction = keyof typeof effects\n\nexport default effects;\n","import {Color} from '@kurkle/color';\n\nexport function isPatternOrGradient(value: unknown): value is CanvasPattern | CanvasGradient {\n if (value && typeof value === 'object') {\n const type = value.toString();\n return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n }\n\n return false;\n}\n\nexport function color(value: CanvasGradient): CanvasGradient;\nexport function color(value: CanvasPattern): CanvasPattern;\nexport function color(\n value:\n | string\n | { r: number; g: number; b: number; a: number }\n | [number, number, number]\n | [number, number, number, number]\n): Color;\nexport function color(value) {\n return isPatternOrGradient(value) ? value : new Color(value);\n}\n\nexport function getHoverColor(value: CanvasGradient): CanvasGradient;\nexport function getHoverColor(value: CanvasPattern): CanvasPattern;\nexport function getHoverColor(value: string): string;\nexport function getHoverColor(value) {\n return isPatternOrGradient(value)\n ? value\n : new Color(value).saturate(0.5).darken(0.1).hexString();\n}\n","const numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\n\nexport function applyAnimationsDefaults(defaults) {\n defaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined,\n });\n\n defaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn',\n });\n\n defaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n },\n });\n\n defaults.describe('animations', {\n _fallback: 'animation',\n });\n\n defaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0 // show immediately\n },\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: v => v | 0 // for keeping the dataset visible all the way through the animation\n },\n }\n }\n });\n}\n","export function applyLayoutsDefaults(defaults) {\n defaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n });\n}\n","\nconst intlCache = new Map();\n\nfunction getNumberFormat(locale: string, options?: Intl.NumberFormatOptions) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\n\nexport function formatNumber(num: number, locale: string, options?: Intl.NumberFormatOptions) {\n return getNumberFormat(locale, options).format(num);\n}\n","import {isArray} from '../helpers/helpers.core.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\nimport {log10} from '../helpers/helpers.math.js';\n\n/**\n * Namespace to hold formatters for different types of ticks\n * @namespace Chart.Ticks.formatters\n */\nconst formatters = {\n /**\n * Formatter for value labels\n * @method Chart.Ticks.formatters.values\n * @param value the value to display\n * @return {string|string[]} the label to display\n */\n values(value) {\n return isArray(value) ? /** @type {string[]} */ (value) : '' + value;\n },\n\n /**\n * Formatter for numeric ticks\n * @method Chart.Ticks.formatters.numeric\n * @param tickValue {number} the value to be formatted\n * @param index {number} the position of the tickValue parameter in the ticks array\n * @param ticks {object[]} the list of ticks being converted\n * @return {string} string representation of the tickValue parameter\n */\n numeric(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0'; // never show decimal places for 0\n }\n\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue; // This is used when there are less than 2 ticks as the tick interval.\n\n if (ticks.length > 1) {\n // all ticks are small or there huge numbers; use scientific notation\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n\n delta = calculateDelta(tickValue, ticks);\n }\n\n const logDelta = log10(Math.abs(delta));\n\n // When datasets have values approaching Number.MAX_VALUE, the tick calculations might result in\n // infinity and eventually NaN. Passing NaN for minimumFractionDigits or maximumFractionDigits\n // will make the number formatter throw. So instead we check for isNaN and use a fallback value.\n //\n // toFixed has a max of 20 decimal places\n const numDecimal = isNaN(logDelta) ? 1 : Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n\n const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\n Object.assign(options, this.options.ticks.format);\n\n return formatNumber(tickValue, locale, options);\n },\n\n\n /**\n * Formatter for logarithmic ticks\n * @method Chart.Ticks.formatters.logarithmic\n * @param tickValue {number} the value to be formatted\n * @param index {number} the position of the tickValue parameter in the ticks array\n * @param ticks {object[]} the list of ticks being converted\n * @return {string} string representation of the tickValue parameter\n */\n logarithmic(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = ticks[index].significand || (tickValue / (Math.pow(10, Math.floor(log10(tickValue)))));\n if ([1, 2, 3, 5, 10, 15].includes(remain) || index > 0.8 * ticks.length) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n\n};\n\n\nfunction calculateDelta(tickValue, ticks) {\n // Figure out how many digits to show\n // The space between the first two ticks might be smaller than normal spacing\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n\n // If we have a number like 2.5 as the delta, figure out how many decimal places we need\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n // not an integer\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\n\n/**\n * Namespace to hold static tick generation functions\n * @namespace Chart.Ticks\n */\nexport default {formatters};\n","import Ticks from './core.ticks.js';\n\nexport function applyScaleDefaults(defaults) {\n defaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n\n /**\n * Scale boundary strategy (bypassed by min/max time options)\n * - `data`: make sure data are fully visible, ticks outside are removed\n * - `ticks`: make sure ticks are fully visible, data outside are truncated\n * @see https://github.com/chartjs/Chart.js/pull/4556\n * @since 3.0.0\n */\n bounds: 'ticks',\n\n clip: true,\n\n /**\n * Addition grace added to max and reduced from min data value.\n * @since 3.0.0\n */\n grace: 0,\n\n // grid line settings\n grid: {\n display: true,\n lineWidth: 1,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options) => options.lineWidth,\n tickColor: (_ctx, options) => options.color,\n offset: false,\n },\n\n border: {\n display: true,\n dash: [],\n dashOffset: 0.0,\n width: 1\n },\n\n // scale title\n title: {\n // display property\n display: false,\n\n // actual label\n text: '',\n\n // top/bottom padding\n padding: {\n top: 4,\n bottom: 4\n }\n },\n\n // label settings\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n // We pass through arrays to be rendered as multiline labels, we convert Others to strings here.\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2,\n }\n });\n\n defaults.route('scale.ticks', 'color', '', 'color');\n defaults.route('scale.grid', 'color', '', 'borderColor');\n defaults.route('scale.border', 'color', '', 'borderColor');\n defaults.route('scale.title', 'color', '', 'color');\n\n defaults.describe('scale', {\n _fallback: false,\n _scriptable: (name) => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: (name) => name !== 'borderDash' && name !== 'tickBorderDash' && name !== 'dash',\n });\n\n defaults.describe('scales', {\n _fallback: 'scale',\n });\n\n defaults.describe('scale.ticks', {\n _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n _indexable: (name) => name !== 'backdropPadding',\n });\n}\n","import {getHoverColor} from '../helpers/helpers.color.js';\nimport {isObject, merge, valueOrDefault} from '../helpers/helpers.core.js';\nimport {applyAnimationsDefaults} from './core.animations.defaults.js';\nimport {applyLayoutsDefaults} from './core.layouts.defaults.js';\nimport {applyScaleDefaults} from './core.scale.defaults.js';\n\nexport const overrides = Object.create(null);\nexport const descriptors = Object.create(null);\n\n/**\n * @param {object} node\n * @param {string} key\n * @return {object}\n */\nfunction getScope(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for (let i = 0, n = keys.length; i < n; ++i) {\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\n\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope(root, scope), values);\n }\n return merge(getScope(root, ''), scope);\n}\n\n/**\n * Please use the module's default export which provides a singleton instance\n * Note: class is exported for typedoc\n */\nexport class Defaults {\n constructor(_descriptors, _appliers) {\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = [\n 'mousemove',\n 'mouseout',\n 'click',\n 'touchstart',\n 'touchmove'\n ];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options) => getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true,\n includeInvisible: false\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n\n this.describe(_descriptors);\n this.apply(_appliers);\n }\n\n /**\n\t * @param {string|object} scope\n\t * @param {object} [values]\n\t */\n set(scope, values) {\n return set(this, scope, values);\n }\n\n /**\n\t * @param {string} scope\n\t */\n get(scope) {\n return getScope(this, scope);\n }\n\n /**\n\t * @param {string|object} scope\n\t * @param {object} [values]\n\t */\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n\n override(scope, values) {\n return set(overrides, scope, values);\n }\n\n /**\n\t * Routes the named defaults to fallback to another scope/name.\n\t * This routing is useful when those target values, like defaults.color, are changed runtime.\n\t * If the values would be copied, the runtime change would not take effect. By routing, the\n\t * fallback is evaluated at each access, so its always up to date.\n\t *\n\t * Example:\n\t *\n\t * \tdefaults.route('elements.arc', 'backgroundColor', '', 'color')\n\t * - reads the backgroundColor from defaults.color when undefined locally\n\t *\n\t * @param {string} scope Scope this route applies to.\n\t * @param {string} name Property name that should be routed to different namespace when not defined here.\n\t * @param {string} targetScope The namespace where those properties should be routed to.\n\t * Empty string ('') is the root of defaults.\n\t * @param {string} targetName The target name in the target scope the property should be routed to.\n\t */\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope(this, scope);\n const targetScopeObject = getScope(this, targetScope);\n const privateName = '_' + name;\n\n Object.defineProperties(scopeObject, {\n // A private property is defined to hold the actual value, when this property is set in its scope (set in the setter)\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n // The actual property is defined as getter/setter so we can do the routing when value is not locally set.\n [name]: {\n enumerable: true,\n get() {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set(value) {\n this[privateName] = value;\n }\n }\n });\n }\n\n apply(appliers) {\n appliers.forEach((apply) => apply(this));\n }\n}\n\n// singleton instance\nexport default /* #__PURE__ */ new Defaults({\n _scriptable: (name) => !name.startsWith('on'),\n _indexable: (name) => name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false,\n }\n}, [applyAnimationsDefaults, applyLayoutsDefaults, applyScaleDefaults]);\n","import type {\n Chart,\n Point,\n FontSpec,\n CanvasFontSpec,\n PointStyle,\n RenderTextOpts,\n BackdropOptions\n} from '../types/index.js';\nimport type {\n TRBL,\n SplinePoint,\n RoundedRect,\n TRBLCorners\n} from '../types/geometric.js';\nimport {isArray, isNullOrUndef} from './helpers.core.js';\nimport {PI, TAU, HALF_PI, QUARTER_PI, TWO_THIRDS_PI, RAD_PER_DEG} from './helpers.math.js';\n\n/**\n * Converts the given font object into a CSS font string.\n * @param font - A font object.\n * @return The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\n * @private\n */\nexport function toFontString(font: FontSpec) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n\n return (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\n\n/**\n * @private\n */\nexport function _measureText(\n ctx: CanvasRenderingContext2D,\n data: Record,\n gc: string[],\n longest: number,\n string: string\n) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\n\ntype Thing = string | undefined | null\ntype Things = (Thing | Thing[])[]\n\n/**\n * @private\n */\n// eslint-disable-next-line complexity\nexport function _longestText(\n ctx: CanvasRenderingContext2D,\n font: string,\n arrayOfThings: Things,\n cache?: {data?: Record, garbageCollect?: string[], font?: string}\n) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n\n ctx.save();\n\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i: number, j: number, jlen: number, thing: Thing | Thing[], nestedThing: Thing | Thing[];\n for (i = 0; i < ilen; i++) {\n thing = arrayOfThings[i];\n\n // Undefined strings and arrays should not be measured\n if (thing !== undefined && thing !== null && !isArray(thing)) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n // if it is an array lets measure each element\n // to do maybe simplify this function a bit so we can do this more recursively?\n for (j = 0, jlen = thing.length; j < jlen; j++) {\n nestedThing = thing[j];\n // Undefined strings and arrays should not be measured\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n\n ctx.restore();\n\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for (i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\n\n/**\n * Returns the aligned pixel value to avoid anti-aliasing blur\n * @param chart - The chart instance.\n * @param pixel - A pixel value.\n * @param width - The width of the element.\n * @returns The aligned pixel value.\n * @private\n */\nexport function _alignPixel(chart: Chart, pixel: number, width: number) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\n\n/**\n * Clears the entire canvas.\n */\nexport function clearCanvas(canvas?: HTMLCanvasElement, ctx?: CanvasRenderingContext2D) {\n if (!ctx && !canvas) {\n return;\n }\n\n ctx = ctx || canvas.getContext('2d');\n\n ctx.save();\n // canvas.width and canvas.height do not consider the canvas transform,\n // while clearRect does\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\n\nexport interface DrawPointOptions {\n pointStyle: PointStyle;\n rotation?: number;\n radius: number;\n borderWidth: number;\n}\n\nexport function drawPoint(\n ctx: CanvasRenderingContext2D,\n options: DrawPointOptions,\n x: number,\n y: number\n) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n drawPointLegend(ctx, options, x, y, null);\n}\n\n// eslint-disable-next-line complexity\nexport function drawPointLegend(\n ctx: CanvasRenderingContext2D,\n options: DrawPointOptions,\n x: number,\n y: number,\n w: number\n) {\n let type: string, xOffset: number, yOffset: number, size: number, cornerRadius: number, width: number, xOffsetW: number, yOffsetW: number;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n\n ctx.beginPath();\n\n switch (style) {\n // Default includes circle\n default:\n if (w) {\n ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n } else {\n ctx.arc(x, y, radius, 0, TAU);\n }\n ctx.closePath();\n break;\n case 'triangle':\n width = w ? w / 2 : radius;\n ctx.moveTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n // NOTE: the rounded rect implementation changed to use `arc` instead of\n // `quadraticCurveTo` since it generates better results when rect is\n // almost a circle. 0.516 (instead of 0.5) produces results with visually\n // closer proportion to the previous impl and it is inscribed in the\n // circle with `radius`. For more details, see the following PRs:\n // https://github.com/chartjs/Chart.js/issues/5597\n // https://github.com/chartjs/Chart.js/issues/5858\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n xOffsetW = Math.cos(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n yOffsetW = Math.sin(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n ctx.arc(x - xOffsetW, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffsetW, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffsetW, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffsetW, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n width = w ? w / 2 : size;\n ctx.rect(x - width, y - size, 2 * width, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n /* falls through */\n case 'rectRot':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n /* falls through */\n case 'cross':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'star':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n rad += QUARTER_PI;\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'line':\n xOffset = w ? w / 2 : Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * (w ? w / 2 : radius), y + Math.sin(rad) * radius);\n break;\n case false:\n ctx.closePath();\n break;\n }\n\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\n\n/**\n * Returns true if the point is inside the rectangle\n * @param point - The point to test\n * @param area - The rectangle\n * @param margin - allowed margin\n * @private\n */\nexport function _isPointInArea(\n point: Point,\n area: TRBL,\n margin?: number\n) {\n margin = margin || 0.5; // margin - default is to match rounded decimals\n\n return !area || (point && point.x > area.left - margin && point.x < area.right + margin &&\n\t\tpoint.y > area.top - margin && point.y < area.bottom + margin);\n}\n\nexport function clipArea(ctx: CanvasRenderingContext2D, area: TRBL) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\n\nexport function unclipArea(ctx: CanvasRenderingContext2D) {\n ctx.restore();\n}\n\n/**\n * @private\n */\nexport function _steppedLineTo(\n ctx: CanvasRenderingContext2D,\n previous: Point,\n target: Point,\n flip?: boolean,\n mode?: string\n) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\n\n/**\n * @private\n */\nexport function _bezierCurveTo(\n ctx: CanvasRenderingContext2D,\n previous: SplinePoint,\n target: SplinePoint,\n flip?: boolean\n) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(\n flip ? previous.cp1x : previous.cp2x,\n flip ? previous.cp1y : previous.cp2y,\n flip ? target.cp2x : target.cp1x,\n flip ? target.cp2y : target.cp1y,\n target.x,\n target.y);\n}\n\nfunction setRenderOpts(ctx: CanvasRenderingContext2D, opts: RenderTextOpts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\n\nfunction decorateText(\n ctx: CanvasRenderingContext2D,\n x: number,\n y: number,\n line: string,\n opts: RenderTextOpts\n) {\n if (opts.strikethrough || opts.underline) {\n /**\n * Now that IE11 support has been dropped, we can use more\n * of the TextMetrics object. The actual bounding boxes\n * are unflagged in Chrome, Firefox, Edge, and Safari so they\n * can be safely used.\n * See https://developer.mozilla.org/en-US/docs/Web/API/TextMetrics#Browser_compatibility\n */\n const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\n\nfunction drawBackdrop(ctx: CanvasRenderingContext2D, opts: BackdropOptions) {\n const oldColor = ctx.fillStyle;\n\n ctx.fillStyle = opts.color as string;\n ctx.fillRect(opts.left, opts.top, opts.width, opts.height);\n ctx.fillStyle = oldColor;\n}\n\n/**\n * Render text onto the canvas\n */\nexport function renderText(\n ctx: CanvasRenderingContext2D,\n text: string | string[],\n x: number,\n y: number,\n font: CanvasFontSpec,\n opts: RenderTextOpts = {}\n) {\n const lines = isArray(text) ? text : [text];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i: number, line: string;\n\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n\n for (i = 0; i < lines.length; ++i) {\n line = lines[i];\n\n if (opts.backdrop) {\n drawBackdrop(ctx, opts.backdrop);\n }\n\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n\n y += Number(font.lineHeight);\n }\n\n ctx.restore();\n}\n\n/**\n * Add a path of a rectangle with rounded corners to the current sub-path\n * @param ctx - Context\n * @param rect - Bounding rect\n */\nexport function addRoundedRectPath(\n ctx: CanvasRenderingContext2D,\n rect: RoundedRect & { radius: TRBLCorners }\n) {\n const {x, y, w, h, radius} = rect;\n\n // top left arc\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, 1.5 * PI, PI, true);\n\n // line from top left to bottom left\n ctx.lineTo(x, y + h - radius.bottomLeft);\n\n // bottom left arc\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n\n // line from bottom left to bottom right\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n\n // bottom right arc\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n\n // line from bottom right to top right\n ctx.lineTo(x + w, y + radius.topRight);\n\n // top right arc\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n\n // line from top right to top left\n ctx.lineTo(x + radius.topLeft, y);\n}\n","import defaults from '../core/core.defaults.js';\nimport {isArray, isObject, toDimension, valueOrDefault} from './helpers.core.js';\nimport {toFontString} from './helpers.canvas.js';\nimport type {ChartArea, FontSpec, Point} from '../types/index.js';\nimport type {TRBL, TRBLCorners} from '../types/geometric.js';\n\nconst LINE_HEIGHT = /^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/;\nconst FONT_STYLE = /^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;\n\n/**\n * @alias Chart.helpers.options\n * @namespace\n */\n/**\n * Converts the given line height `value` in pixels for a specific font `size`.\n * @param value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n * @param size - The font size (in pixels) used to resolve relative `value`.\n * @returns The effective line height in pixels (size * 1.2 if value is invalid).\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n * @since 2.7.0\n */\nexport function toLineHeight(value: number | string, size: number): number {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n\n value = +matches[2];\n\n switch (matches[3]) {\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n default:\n break;\n }\n\n return size * value;\n}\n\nconst numberOrZero = (v: unknown) => +v || 0;\n\n/**\n * @param value\n * @param props\n */\nexport function _readValueToProps(value: number | Record, props: K[]): Record;\nexport function _readValueToProps(value: number | Record, props: Record): Record;\nexport function _readValueToProps(value: number | Record, props: string[] | Record) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value)\n ? objProps\n ? prop => valueOrDefault(value[prop], value[props[prop]])\n : prop => value[prop]\n : () => value;\n\n for (const prop of keys) {\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\n\n/**\n * Converts the given value into a TRBL object.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left)\n * @since 3.0.0\n */\nexport function toTRBL(value: number | TRBL | Point) {\n return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\n\n/**\n * Converts the given value into a TRBL corners object (similar with css border-radius).\n * @param value - If a number, set the value to all TRBL corner components,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * @returns The TRBL corner values (topLeft, topRight, bottomLeft, bottomRight)\n * @since 3.0.0\n */\nexport function toTRBLCorners(value: number | TRBLCorners) {\n return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\n\n/**\n * Converts the given value into a padding object with pre-computed width/height.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left, width, height)\n * @since 2.7.0\n */\nexport function toPadding(value?: number | TRBL): ChartArea {\n const obj = toTRBL(value) as ChartArea;\n\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n\n return obj;\n}\n\n/**\n * Parses font options and returns the font object.\n * @param options - A object that contains font options to be parsed.\n * @param fallback - A object that contains fallback font options.\n * @return The font object.\n * @private\n */\n\nexport function toFont(options: Partial, fallback?: Partial) {\n options = options || {};\n fallback = fallback || defaults.font as FontSpec;\n\n let size = valueOrDefault(options.size, fallback.size);\n\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = undefined;\n }\n\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n\n font.string = toFontString(font);\n return font;\n}\n\n/**\n * Evaluates the given `inputs` sequentially and returns the first defined value.\n * @param inputs - An array of values, falling back to the last value.\n * @param context - If defined and the current value is a function, the value\n * is called with `context` as first argument and the result becomes the new input.\n * @param index - If defined and the current value is an array, the value\n * at `index` become the new input.\n * @param info - object to return information about resolution in\n * @param info.cacheable - Will be set to `false` if option is not cacheable.\n * @since 2.7.0\n */\nexport function resolve(inputs: Array, context?: object, index?: number, info?: { cacheable: boolean }) {\n let cacheable = true;\n let i: number, ilen: number, value: unknown;\n\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\n\n/**\n * @param minmax\n * @param grace\n * @param beginAtZero\n * @private\n */\nexport function _addGrace(minmax: { min: number; max: number; }, grace: number | string, beginAtZero: boolean) {\n const {min, max} = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value: number, add: number) => beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\n\n/**\n * Create a context inheriting parentContext\n * @param parentContext\n * @param context\n * @returns\n */\nexport function createContext(parentContext: null, context: T): T;\nexport function createContext(parentContext: P, context: T): P & T;\nexport function createContext(parentContext: object, context: object) {\n return Object.assign(Object.create(parentContext), context);\n}\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport type {AnyObject} from '../types/basic.js';\nimport type {ChartMeta} from '../types/index.js';\nimport type {\n ResolverObjectKey,\n ResolverCache,\n ResolverProxy,\n DescriptorDefaults,\n Descriptor,\n ContextCache,\n ContextProxy\n} from './helpers.config.types.js';\nimport {isArray, isFunction, isObject, resolveObjectKey, _capitalize} from './helpers.core.js';\n\nexport * from './helpers.config.types.js';\n\n/**\n * Creates a Proxy for resolving raw values for options.\n * @param scopes - The option scopes to look for values, in resolution order\n * @param prefixes - The prefixes for values, in resolution order.\n * @param rootScopes - The root option scopes\n * @param fallback - Parent scopes fallback\n * @param getTarget - callback for getting the target for changed values\n * @returns Proxy\n * @private\n */\nexport function _createResolver<\n T extends AnyObject[] = AnyObject[],\n R extends AnyObject[] = T\n>(\n scopes: T,\n prefixes = [''],\n rootScopes?: R,\n fallback?: ResolverObjectKey,\n getTarget = () => scopes[0]\n) {\n const finalRootScopes = rootScopes || scopes;\n if (typeof fallback === 'undefined') {\n fallback = _resolve('_fallback', scopes);\n }\n const cache: ResolverCache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: finalRootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope: AnyObject) => _createResolver([scope, ...scopes], prefixes, finalRootScopes, fallback),\n };\n return new Proxy(cache, {\n /**\n * A trap for the delete operator.\n */\n deleteProperty(target, prop: string) {\n delete target[prop]; // remove from cache\n delete target._keys; // remove cached keys\n delete scopes[0][prop]; // remove from top level scope\n return true;\n },\n\n /**\n * A trap for getting property values.\n */\n get(target, prop: string) {\n return _cached(target, prop,\n () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n\n /**\n * A trap for Object.getOwnPropertyDescriptor.\n * Also used by Object.hasOwnProperty.\n */\n getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n\n /**\n * A trap for Object.getPrototypeOf.\n */\n getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n\n /**\n * A trap for the in operator.\n */\n has(target, prop: string) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n\n /**\n * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n */\n ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n\n /**\n * A trap for setting property values.\n */\n set(target, prop: string, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value; // set to top level scope + cache\n delete target._keys; // remove cached keys\n return true;\n }\n }) as ResolverProxy;\n}\n\n/**\n * Returns an Proxy for resolving option values with context.\n * @param proxy - The Proxy returned by `_createResolver`\n * @param context - Context object for scriptable/indexable options\n * @param subProxy - The proxy provided for scriptable options\n * @param descriptorDefaults - Defaults for descriptors\n * @private\n */\nexport function _attachContext<\n T extends AnyObject[] = AnyObject[],\n R extends AnyObject[] = T\n>(\n proxy: ResolverProxy,\n context: AnyObject,\n subProxy?: ResolverProxy,\n descriptorDefaults?: DescriptorDefaults\n) {\n const cache: ContextCache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: (ctx: AnyObject) => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: (scope: AnyObject) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n /**\n * A trap for the delete operator.\n */\n deleteProperty(target, prop) {\n delete target[prop]; // remove from cache\n delete proxy[prop]; // remove from proxy\n return true;\n },\n\n /**\n * A trap for getting property values.\n */\n get(target, prop: string, receiver) {\n return _cached(target, prop,\n () => _resolveWithContext(target, prop, receiver));\n },\n\n /**\n * A trap for Object.getOwnPropertyDescriptor.\n * Also used by Object.hasOwnProperty.\n */\n getOwnPropertyDescriptor(target, prop) {\n return target._descriptors.allKeys\n ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined\n : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n\n /**\n * A trap for Object.getPrototypeOf.\n */\n getPrototypeOf() {\n return Reflect.getPrototypeOf(proxy);\n },\n\n /**\n * A trap for the in operator.\n */\n has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n\n /**\n * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n */\n ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n\n /**\n * A trap for setting property values.\n */\n set(target, prop, value) {\n proxy[prop] = value; // set to proxy\n delete target[prop]; // remove from cache\n return true;\n }\n }) as ContextProxy;\n}\n\n/**\n * @private\n */\nexport function _descriptors(\n proxy: ResolverCache,\n defaults: DescriptorDefaults = {scriptable: true, indexable: true}\n): Descriptor {\n const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n };\n}\n\nconst readKey = (prefix: string, name: string) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop: string, value: unknown) => isObject(value) && prop !== 'adapters' &&\n (Object.getPrototypeOf(value) === null || value.constructor === Object);\n\nfunction _cached(\n target: AnyObject,\n prop: string,\n resolve: () => unknown\n) {\n if (Object.prototype.hasOwnProperty.call(target, prop) || prop === 'constructor') {\n return target[prop];\n }\n\n const value = resolve();\n // cache the resolved value\n target[prop] = value;\n return value;\n}\n\nfunction _resolveWithContext(\n target: ContextCache,\n prop: string,\n receiver: AnyObject\n) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n let value = _proxy[prop]; // resolve from proxy\n\n // resolve with context\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n // if the resolved value is an object, create a sub resolver for it\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\n\nfunction _resolveScriptable(\n prop: string,\n getValue: (ctx: AnyObject, sub: AnyObject) => unknown,\n target: ContextCache,\n receiver: AnyObject\n) {\n const {_proxy, _context, _subProxy, _stack} = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n let value = getValue(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n // When scriptable option returns an object, create a resolver on that.\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\n\nfunction _resolveArray(\n prop: string,\n value: unknown[],\n target: ContextCache,\n isIndexable: (key: string) => boolean\n) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n\n if (typeof _context.index !== 'undefined' && isIndexable(prop)) {\n return value[_context.index % value.length];\n } else if (isObject(value[0])) {\n // Array of objects, return array or resolvers\n const arr = value;\n const scopes = _proxy._scopes.filter(s => s !== arr);\n value = [];\n for (const item of arr) {\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\n\nfunction resolveFallback(\n fallback: ResolverObjectKey | ((prop: ResolverObjectKey, value: unknown) => ResolverObjectKey),\n prop: ResolverObjectKey,\n value: unknown\n) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\n\nconst getScope = (key: ResolverObjectKey, parent: AnyObject) => key === true ? parent\n : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\n\nfunction addScopes(\n set: Set,\n parentScopes: AnyObject[],\n key: ResolverObjectKey,\n parentFallback: ResolverObjectKey,\n value: unknown\n) {\n for (const parent of parentScopes) {\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (typeof fallback !== 'undefined' && fallback !== key && fallback !== parentFallback) {\n // When we reach the descriptor that defines a new _fallback, return that.\n // The fallback will resume to that new scope.\n return fallback;\n }\n } else if (scope === false && typeof parentFallback !== 'undefined' && key !== parentFallback) {\n // Fallback to `false` results to `false`, when falling back to different key.\n // For example `interaction` from `hover` or `plugins.tooltip` and `animation` from `animations`\n return null;\n }\n }\n return false;\n}\n\nfunction createSubResolver(\n parentScopes: AnyObject[],\n resolver: ResolverCache,\n prop: ResolverObjectKey,\n value: unknown\n) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [...parentScopes, ...rootScopes];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (typeof fallback !== 'undefined' && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [''], rootScopes, fallback,\n () => subGetTarget(resolver, prop as string, value));\n}\n\nfunction addScopesFromKey(\n set: Set,\n allScopes: AnyObject[],\n key: ResolverObjectKey,\n fallback: ResolverObjectKey,\n item: unknown\n) {\n while (key) {\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\n\nfunction subGetTarget(\n resolver: ResolverCache,\n prop: string,\n value: unknown\n) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n // For array of objects, the object is used to store updated values\n return value;\n }\n return target || {};\n}\n\nfunction _resolveWithPrefixes(\n prop: string,\n prefixes: string[],\n scopes: AnyObject[],\n proxy: ResolverProxy\n) {\n let value: unknown;\n for (const prefix of prefixes) {\n value = _resolve(readKey(prefix, prop), scopes);\n if (typeof value !== 'undefined') {\n return needsSubResolver(prop, value)\n ? createSubResolver(scopes, proxy, prop, value)\n : value;\n }\n }\n}\n\nfunction _resolve(key: string, scopes: AnyObject[]) {\n for (const scope of scopes) {\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (typeof value !== 'undefined') {\n return value;\n }\n }\n}\n\nfunction getKeysFromAllScopes(target: ResolverCache) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\n\nfunction resolveKeysFromAllScopes(scopes: AnyObject[]) {\n const set = new Set();\n for (const scope of scopes) {\n for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n set.add(key);\n }\n }\n return Array.from(set);\n}\n\nexport function _parseObjectDataRadialScale(\n meta: ChartMeta<'line' | 'scatter'>,\n data: AnyObject[],\n start: number,\n count: number\n) {\n const {iScale} = meta;\n const {key = 'r'} = this._parsing;\n const parsed = new Array<{r: unknown}>(count);\n let i: number, ilen: number, index: number, item: AnyObject;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n r: iScale.parse(resolveObjectKey(item, key), index)\n };\n }\n return parsed;\n}\n","import {almostEquals, distanceBetweenPoints, sign} from './helpers.math.js';\nimport {_isPointInArea} from './helpers.canvas.js';\nimport type {ChartArea} from '../types/index.js';\nimport type {SplinePoint} from '../types/geometric.js';\n\nconst EPSILON = Number.EPSILON || 1e-14;\n\ntype OptionalSplinePoint = SplinePoint | false\nconst getPoint = (points: SplinePoint[], i: number): OptionalSplinePoint => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis: 'x' | 'y') => indexAxis === 'x' ? 'y' : 'x';\n\nexport function splineCurve(\n firstPoint: SplinePoint,\n middlePoint: SplinePoint,\n afterPoint: SplinePoint,\n t: number\n): {\n previous: SplinePoint\n next: SplinePoint\n } {\n // Props to Rob Spencer at scaled innovation for his post on splining between points\n // http://scaledinnovation.com/analytics/splines/aboutSplines.html\n\n // This function must also respect \"skipped\" points\n\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n\n // If all points are the same, s01 & s02 will be inf\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n\n const fa = t * s01; // scaling factor for triangle Ta\n const fb = t * s12;\n\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\n\n/**\n * Adjust tangents to ensure monotonic properties\n */\nfunction monotoneAdjust(points: SplinePoint[], deltaK: number[], mK: number[]) {\n const pointsLen = points.length;\n\n let alphaK: number, betaK: number, tauK: number, squaredMagnitude: number, pointCurrent: OptionalSplinePoint;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\n\nfunction monotoneCompute(points: SplinePoint[], mK: number[], indexAxis: 'x' | 'y' = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta: number, pointBefore: OptionalSplinePoint, pointCurrent: OptionalSplinePoint;\n let pointAfter = getPoint(points, 0);\n\n for (let i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\n\n/**\n * This function calculates Bézier control points in a similar way than |splineCurve|,\n * but preserves monotonicity of the provided data and ensures no local extremums are added\n * between the dataset discrete points due to the interpolation.\n * See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n */\nexport function splineCurveMonotone(points: SplinePoint[], indexAxis: 'x' | 'y' = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK: number[] = Array(pointsLen).fill(0);\n const mK: number[] = Array(pointsLen);\n\n // Calculate slopes (deltaK) and initialize tangents (mK)\n let i, pointBefore: OptionalSplinePoint, pointCurrent: OptionalSplinePoint;\n let pointAfter = getPoint(points, 0);\n\n for (i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n\n // In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i]\n : !pointAfter ? deltaK[i - 1]\n : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0\n : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n\n monotoneAdjust(points, deltaK, mK);\n\n monotoneCompute(points, mK, indexAxis);\n}\n\nfunction capControlPoint(pt: number, min: number, max: number) {\n return Math.max(Math.min(pt, max), min);\n}\n\nfunction capBezierPoints(points: SplinePoint[], area: ChartArea) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\n\n/**\n * @private\n */\nexport function _updateBezierControlPoints(\n points: SplinePoint[],\n options,\n area: ChartArea,\n loop: boolean,\n indexAxis: 'x' | 'y'\n) {\n let i: number, ilen: number, point: SplinePoint, controlPoints: ReturnType;\n\n // Only consider points that are drawn in case the spanGaps option is used\n if (options.spanGaps) {\n points = points.filter((pt) => !pt.skip);\n }\n\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n point = points[i];\n controlPoints = splineCurve(\n prev,\n point,\n points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen],\n options.tension\n );\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n","import type {ChartArea, Scale} from '../types/index.js';\nimport type PrivateChart from '../core/core.controller.js';\nimport type {Chart, ChartEvent} from '../types.js';\nimport {INFINITY} from './helpers.math.js';\n\n/**\n * @private\n */\nexport function _isDomSupported(): boolean {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\n/**\n * @private\n */\nexport function _getParentNode(domNode: HTMLCanvasElement): HTMLCanvasElement {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = (parent as ShadowRoot).host;\n }\n return parent as HTMLCanvasElement;\n}\n\n/**\n * convert max-width/max-height values that may be percentages into a number\n * @private\n */\n\nfunction parseMaxStyle(styleValue: string | number, node: HTMLElement, parentProperty: string) {\n let valueInPixels: number;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n\n if (styleValue.indexOf('%') !== -1) {\n // percentage * size in dimension\n valueInPixels = (valueInPixels / 100) * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n\n return valueInPixels;\n}\n\nconst getComputedStyle = (element: HTMLElement): CSSStyleDeclaration =>\n element.ownerDocument.defaultView.getComputedStyle(element, null);\n\nexport function getStyle(el: HTMLElement, property: string): string {\n return getComputedStyle(el).getPropertyValue(property);\n}\n\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles: CSSStyleDeclaration, style: string, suffix?: string): ChartArea {\n const result = {} as ChartArea;\n suffix = suffix ? '-' + suffix : '';\n for (let i = 0; i < 4; i++) {\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\n\nconst useOffsetPos = (x: number, y: number, target: HTMLElement | EventTarget) =>\n (x > 0 || y > 0) && (!target || !(target as HTMLElement).shadowRoot);\n\n/**\n * @param e\n * @param canvas\n * @returns Canvas position\n */\nfunction getCanvasPosition(\n e: Event | TouchEvent | MouseEvent,\n canvas: HTMLCanvasElement\n): {\n x: number;\n y: number;\n box: boolean;\n } {\n const touches = (e as TouchEvent).touches;\n const source = (touches && touches.length ? touches[0] : e) as MouseEvent;\n const {offsetX, offsetY} = source as MouseEvent;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {x, y, box};\n}\n\n/**\n * Gets an event's x, y coordinates, relative to the chart area\n * @param event\n * @param chart\n * @returns x and y coordinates of the event\n */\n\nexport function getRelativePosition(\n event: Event | ChartEvent | TouchEvent | MouseEvent,\n chart: Chart | PrivateChart\n): { x: number; y: number } {\n if ('native' in event) {\n return event;\n }\n\n const {canvas, currentDevicePixelRatio} = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const {x, y, box} = getCanvasPosition(event, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n\n let {width, height} = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\n\nfunction getContainerSize(canvas: HTMLCanvasElement, width: number, height: number): Partial {\n let maxWidth: number, maxHeight: number;\n\n if (width === undefined || height === undefined) {\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect(); // this is the border box of the container\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\n\nconst round1 = (v: number) => Math.round(v * 10) / 10;\n\n// eslint-disable-next-line complexity\nexport function getMaximumSize(\n canvas: HTMLCanvasElement,\n bbWidth?: number,\n bbHeight?: number,\n aspectRatio?: number\n): { width: number; height: number } {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let {width, height} = containerSize;\n\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? width / aspectRatio : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n // https://github.com/chartjs/Chart.js/issues/4659\n // If the canvas has width, but no height, default to aspectRatio of 2 (canvas default)\n height = round1(width / 2);\n }\n\n const maintainHeight = bbWidth !== undefined || bbHeight !== undefined;\n\n if (maintainHeight && aspectRatio && containerSize.height && height > containerSize.height) {\n height = containerSize.height;\n width = round1(Math.floor(height * aspectRatio));\n }\n\n return {width, height};\n}\n\n/**\n * @param chart\n * @param forceRatio\n * @param forceStyle\n * @returns True if the canvas context size or transformation has changed.\n */\nexport function retinaScale(\n chart: Chart | PrivateChart,\n forceRatio: number,\n forceStyle?: boolean\n): boolean | void {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = round1(chart.height * pixelRatio);\n const deviceWidth = round1(chart.width * pixelRatio);\n\n (chart as PrivateChart).height = round1(chart.height);\n (chart as PrivateChart).width = round1(chart.width);\n\n const canvas = chart.canvas;\n\n // If no style has been set on the canvas, the render size is used as display size,\n // making the chart visually bigger, so let's enforce it to the \"correct\" values.\n // See https://github.com/chartjs/Chart.js/issues/3575\n if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n\n if (chart.currentDevicePixelRatio !== pixelRatio\n || canvas.height !== deviceHeight\n || canvas.width !== deviceWidth) {\n (chart as PrivateChart).currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\n\n/**\n * Detects support for options object argument in addEventListener.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n * @private\n */\nexport const supportsEventListenerOptions = (function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive() { // This function will be called when the browser attempts to access the passive property.\n passiveSupported = true;\n return false;\n }\n } as EventListenerOptions;\n\n if (_isDomSupported()) {\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n }\n } catch (e) {\n // continue regardless of error\n }\n return passiveSupported;\n}());\n\n/**\n * The \"used\" size is the final value of a dimension property after all calculations have\n * been performed. This method uses the computed style of `element` but returns undefined\n * if the computed style is not expressed in pixels. That can happen in some cases where\n * `element` has a size relative to its parent and this last one is not yet displayed,\n * for example because of `display: none` on a parent node.\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\n * @returns Size in pixels or undefined if unknown.\n */\n\nexport function readUsedSize(\n element: HTMLElement,\n property: 'width' | 'height'\n): number | undefined {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n","import type {Point, SplinePoint} from '../types/geometric.js';\n\n/**\n * @private\n */\nexport function _pointInLine(p1: Point, p2: Point, t: number, mode?) { // eslint-disable-line @typescript-eslint/no-unused-vars\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\n\n/**\n * @private\n */\nexport function _steppedInterpolation(\n p1: Point,\n p2: Point,\n t: number, mode: 'middle' | 'after' | unknown\n) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y\n : mode === 'after' ? t < 1 ? p1.y : p2.y\n : t > 0 ? p2.y : p1.y\n };\n}\n\n/**\n * @private\n */\nexport function _bezierInterpolation(p1: SplinePoint, p2: SplinePoint, t: number, mode?) { // eslint-disable-line @typescript-eslint/no-unused-vars\n const cp1 = {x: p1.cp2x, y: p1.cp2y};\n const cp2 = {x: p2.cp1x, y: p2.cp1y};\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\n","export interface RTLAdapter {\n x(x: number): number;\n setWidth(w: number): void;\n textAlign(align: 'center' | 'left' | 'right'): 'center' | 'left' | 'right';\n xPlus(x: number, value: number): number;\n leftForLtr(x: number, itemWidth: number): number;\n}\n\nconst getRightToLeftAdapter = function(rectX: number, width: number): RTLAdapter {\n return {\n x(x) {\n return rectX + rectX + width - x;\n },\n setWidth(w) {\n width = w;\n },\n textAlign(align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus(x, value) {\n return x - value;\n },\n leftForLtr(x, itemWidth) {\n return x - itemWidth;\n },\n };\n};\n\nconst getLeftToRightAdapter = function(): RTLAdapter {\n return {\n x(x) {\n return x;\n },\n setWidth(w) { // eslint-disable-line no-unused-vars\n },\n textAlign(align) {\n return align;\n },\n xPlus(x, value) {\n return x + value;\n },\n leftForLtr(x, _itemWidth) { // eslint-disable-line @typescript-eslint/no-unused-vars\n return x;\n },\n };\n};\n\nexport function getRtlAdapter(rtl: boolean, rectX: number, width: number) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\n\nexport function overrideTextDirection(ctx: CanvasRenderingContext2D, direction: 'ltr' | 'rtl') {\n let style: CSSStyleDeclaration, original: [string, string];\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [\n style.getPropertyValue('direction'),\n style.getPropertyPriority('direction'),\n ];\n\n style.setProperty('direction', direction, 'important');\n (ctx as { prevTextDirection?: [string, string] }).prevTextDirection = original;\n }\n}\n\nexport function restoreTextDirection(ctx: CanvasRenderingContext2D, original?: [string, string]) {\n if (original !== undefined) {\n delete (ctx as { prevTextDirection?: [string, string] }).prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n","import {_angleBetween, _angleDiff, _isBetween, _normalizeAngle} from './helpers.math.js';\nimport {createContext} from './helpers.options.js';\nimport {isPatternOrGradient} from './helpers.color.js';\n\n/**\n * @typedef { import('../elements/element.line.js').default } LineElement\n * @typedef { import('../elements/element.point.js').default } PointElement\n * @typedef {{start: number, end: number, loop: boolean, style?: any}} Segment\n */\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle,\n };\n }\n return {\n between: _isBetween,\n compare: (a, b) => a - b,\n normalize: x => x\n };\n}\n\nfunction normalizeSegment({start, end, count, loop, style}) {\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\n\nfunction getSegment(segment, points, bounds) {\n const {property, start: startBound, end: endBound} = bounds;\n const {between, normalize} = propertyFn(property);\n const count = points.length;\n // eslint-disable-next-line prefer-const\n let {start, end, loop} = segment;\n let i, ilen;\n\n if (loop) {\n start += count;\n end += count;\n for (i = 0, ilen = count; i < ilen; ++i) {\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n\n if (end < start) {\n end += count;\n }\n return {start, end, loop, style: segment.style};\n}\n\n/**\n * Returns the sub-segment(s) of a line segment that fall in the given bounds\n * @param {object} segment\n * @param {number} segment.start - start index of the segment, referring the points array\n * @param {number} segment.end - end index of the segment, referring the points array\n * @param {boolean} segment.loop - indicates that the segment is a loop\n * @param {object} [segment.style] - segment style\n * @param {PointElement[]} points - the points that this segment refers to\n * @param {object} [bounds]\n * @param {string} bounds.property - the property of a `PointElement` we are bounding. `x`, `y` or `angle`.\n * @param {number} bounds.start - start value of the property\n * @param {number} bounds.end - end value of the property\n * @private\n **/\nexport function _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [segment];\n }\n\n const {property, start: startBound, end: endBound} = bounds;\n const count = points.length;\n const {compare, between, normalize} = propertyFn(property);\n const {start, end, loop, style} = getSegment(segment, points, bounds);\n\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n\n const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = () => inside || startIsBefore();\n const shouldStop = () => !inside || endIsBefore();\n\n for (let i = start, prev = start; i <= end; ++i) {\n point = points[i % count];\n\n if (point.skip) {\n continue;\n }\n\n value = normalize(point[property]);\n\n if (value === prevValue) {\n continue;\n }\n\n inside = between(value, startBound, endBound);\n\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({start: subStart, end: i, loop, count, style}));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n\n if (subStart !== null) {\n result.push(normalizeSegment({start: subStart, end, loop, count, style}));\n }\n\n return result;\n}\n\n\n/**\n * Returns the segments of the line that are inside given bounds\n * @param {LineElement} line\n * @param {object} [bounds]\n * @param {string} bounds.property - the property we are bounding with. `x`, `y` or `angle`.\n * @param {number} bounds.start - start value of the `property`\n * @param {number} bounds.end - end value of the `property`\n * @private\n */\nexport function _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n\n for (let i = 0; i < segments.length; i++) {\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\n\n/**\n * Find start and end index of a line.\n */\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n\n if (loop && !spanGaps) {\n // loop and not spanning gaps, first find a gap to start from\n while (start < count && !points[start].skip) {\n start++;\n }\n }\n\n // find first non skipped point (after the first gap possibly)\n while (start < count && points[start].skip) {\n start++;\n }\n\n // if we looped to count, start needs to be 0\n start %= count;\n\n if (loop) {\n // loop will go past count, if start > 0\n end += start;\n }\n\n while (end > start && points[end % count].skip) {\n end--;\n }\n\n // end could be more than count, normalize\n end %= count;\n\n return {start, end};\n}\n\n/**\n * Compute solid segments from Points, when spanGaps === false\n * @param {PointElement[]} points - the points\n * @param {number} start - start index\n * @param {number} max - max index (can go past count on a loop)\n * @param {boolean} loop - boolean indicating that this would be a loop if no gaps are found\n */\nfunction solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n\n for (end = start + 1; end <= max; ++end) {\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({start: start % count, end: (end - 1) % count, loop});\n // @ts-ignore\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n\n if (last !== null) {\n result.push({start: start % count, end: last % count, loop});\n }\n\n return result;\n}\n\n/**\n * Compute the continuous segments that define the whole line\n * There can be skipped points within a segment, if spanGaps is true.\n * @param {LineElement} line\n * @param {object} [segmentOptions]\n * @return {Segment[]}\n * @private\n */\nexport function _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n\n if (!count) {\n return [];\n }\n\n const loop = !!line._loop;\n const {start, end} = findStartAndEnd(points, count, loop, spanGaps);\n\n if (spanGaps === true) {\n return splitByStyles(line, [{start, end, loop}], points, segmentOptions);\n }\n\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\n\n/**\n * @param {Segment[]} segments\n * @param {PointElement[]} points\n * @param {object} [segmentOptions]\n * @return {Segment[]}\n */\nfunction splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\n\n/**\n * @param {LineElement} line\n * @param {Segment[]} segments\n * @param {PointElement[]} points\n * @param {object} [segmentOptions]\n * @return {Segment[]}\n */\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const {_datasetIndex: datasetIndex, options: {spanGaps}} = line;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n // Style can not start/end on a skipped point, adjust indices accordingly\n s += count;\n while (points[s % count].skip) {\n s -= dir;\n }\n while (points[e % count].skip) {\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({start: s % count, end: e % count, loop: l, style: st});\n prevStyle = st;\n start = e % count;\n }\n }\n\n for (const segment of segments) {\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for (i = start + 1; i <= segment.end; i++) {\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n\n return result;\n}\n\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\n\nfunction styleChanged(style, prevStyle) {\n if (!prevStyle) {\n return false;\n }\n const cache = [];\n const replacer = function(key, value) {\n if (!isPatternOrGradient(value)) {\n return value;\n }\n if (!cache.includes(value)) {\n cache.push(value);\n }\n return cache.indexOf(value);\n };\n return JSON.stringify(style, replacer) !== JSON.stringify(prevStyle, replacer);\n}\n","import type {Chart, ChartArea, ChartMeta, Scale, TRBL} from '../types/index.js';\n\nfunction getSizeForArea(scale: Scale, chartArea: ChartArea, field: keyof ChartArea) {\n return scale.options.clip ? scale[field] : chartArea[field];\n}\n\nfunction getDatasetArea(meta: ChartMeta, chartArea: ChartArea): TRBL {\n const {xScale, yScale} = meta;\n if (xScale && yScale) {\n return {\n left: getSizeForArea(xScale, chartArea, 'left'),\n right: getSizeForArea(xScale, chartArea, 'right'),\n top: getSizeForArea(yScale, chartArea, 'top'),\n bottom: getSizeForArea(yScale, chartArea, 'bottom')\n };\n }\n return chartArea;\n}\n\nexport function getDatasetClipArea(chart: Chart, meta: ChartMeta): TRBL | false {\n const clip = meta._clip;\n if (clip.disabled) {\n return false;\n }\n const area = getDatasetArea(meta, chart.chartArea);\n\n return {\n left: clip.left === false ? 0 : area.left - (clip.left === true ? 0 : clip.left),\n right: clip.right === false ? chart.width : area.right + (clip.right === true ? 0 : clip.right),\n top: clip.top === false ? 0 : area.top - (clip.top === true ? 0 : clip.top),\n bottom: clip.bottom === false ? chart.height : area.bottom + (clip.bottom === true ? 0 : clip.bottom)\n };\n}\n","import {requestAnimFrame} from '../helpers/helpers.extras.js';\n\n/**\n * @typedef { import('./core.animation.js').default } Animation\n * @typedef { import('./core.controller.js').default } Chart\n */\n\n/**\n * Please use the module's default export which provides a singleton instance\n * Note: class is export for typedoc\n */\nexport class Animator {\n constructor() {\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n\n /**\n\t * @private\n\t */\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n\n callbacks.forEach(fn => fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n\n /**\n\t * @private\n\t */\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n\n this._request = requestAnimFrame.call(window, () => {\n this._update();\n this._request = null;\n\n if (this._running) {\n this._refresh();\n }\n });\n }\n\n /**\n\t * @private\n\t */\n _update(date = Date.now()) {\n let remaining = 0;\n\n this._charts.forEach((anims, chart) => {\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n\n for (; i >= 0; --i) {\n item = items[i];\n\n if (item._active) {\n if (item._total > anims.duration) {\n // if the animation has been updated and its duration prolonged,\n // update to total duration of current animations run (for progress event)\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n // Remove the item by replacing it with last item and removing the last\n // A lot faster than splice.\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n\n remaining += items.length;\n });\n\n this._lastDate = date;\n\n if (remaining === 0) {\n this._running = false;\n }\n }\n\n /**\n\t * @private\n\t */\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n\n /**\n\t * @param {Chart} chart\n\t * @param {string} event - event name\n\t * @param {Function} cb - callback\n\t */\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n\n /**\n\t * Add animations\n\t * @param {Chart} chart\n\t * @param {Animation[]} items - animations\n\t */\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n\n /**\n\t * Counts number of active animations for the chart\n\t * @param {Chart} chart\n\t */\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n\n /**\n\t * Start animating (all charts)\n\t * @param {Chart} chart\n\t */\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n\n /**\n\t * Stop all animations for the chart\n\t * @param {Chart} chart\n\t */\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n\n for (; i >= 0; --i) {\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n\n /**\n\t * Remove chart from Animator\n\t * @param {Chart} chart\n\t */\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\n\n// singleton instance\nexport default /* #__PURE__ */ new Animator();\n","import effects from '../helpers/helpers.easing.js';\nimport {resolve} from '../helpers/helpers.options.js';\nimport {color as helpersColor} from '../helpers/helpers.color.js';\n\nconst transparent = 'transparent';\nconst interpolators = {\n boolean(from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n /**\n * @param {string} from\n * @param {string} to\n * @param {number} factor\n */\n color(from, to, factor) {\n const c0 = helpersColor(from || transparent);\n const c1 = c0.valid && helpersColor(to || transparent);\n return c1 && c1.valid\n ? c1.mix(c0, factor).hexString()\n : to;\n },\n number(from, to, factor) {\n return from + (to - from) * factor;\n }\n};\n\nexport default class Animation {\n constructor(cfg, target, prop, to) {\n const currentValue = target[prop];\n\n to = resolve([cfg.to, to, currentValue, cfg.from]);\n const from = resolve([cfg.from, currentValue, to]);\n\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n\n active() {\n return this._active;\n }\n\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n this._from = resolve([cfg.from, currentValue, to]);\n }\n }\n\n cancel() {\n if (this._active) {\n // update current evaluated value, for smoother animations\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n\n this._active = from !== to && (loop || (elapsed < duration));\n\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n\n factor = (elapsed / duration) % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n\n this._target[prop] = this._fn(from, to, factor);\n }\n\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej) => {\n promises.push({res, rej});\n });\n }\n\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for (let i = 0; i < promises.length; i++) {\n promises[i][method]();\n }\n }\n}\n","import animator from './core.animator.js';\nimport Animation from './core.animation.js';\nimport defaults from './core.defaults.js';\nimport {isArray, isObject} from '../helpers/helpers.core.js';\n\nexport default class Animations {\n constructor(chart, config) {\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n\n const animationOptions = Object.keys(defaults.animation);\n const animatedProps = this._properties;\n\n Object.getOwnPropertyNames(config).forEach(key => {\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions) {\n resolved[option] = cfg[option];\n }\n\n (isArray(cfg.properties) && cfg.properties || [key]).forEach((prop) => {\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n\n /**\n\t * Utility to handle animation of `options`.\n\t * @private\n\t */\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n // Going to shared options:\n // After all animations are done, assign the shared options object to the element\n // So any new updates to the shared options are observed\n awaitAll(target.options.$animations, newOptions).then(() => {\n target.options = newOptions;\n }, () => {\n // rejected, noop\n });\n }\n\n return animations;\n }\n\n /**\n\t * @private\n\t */\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n\n for (i = props.length - 1; i >= 0; --i) {\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n\n if (animation) {\n if (cfg && animation.active()) {\n // There is an existing active animation, let's update that\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n // not animated, set directly to new value\n target[prop] = value;\n continue;\n }\n\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n\n\n /**\n\t * Update `target` properties to new values, using configured animations\n\t * @param {object} target - object to update\n\t * @param {object} values - new target properties\n\t * @returns {boolean|undefined} - `true` if animations were started\n\t **/\n update(target, values) {\n if (this._properties.size === 0) {\n // Nothing is animated, just apply the new values.\n Object.assign(target, values);\n return;\n }\n\n const animations = this._createAnimations(target, values);\n\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\n\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for (let i = 0; i < keys.length; i++) {\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n // @ts-ignore\n return Promise.all(running);\n}\n\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n // Going from shared options to distinct one:\n // Create new options object containing the old shared values and start updating that.\n target.options = options = Object.assign({}, options, {$shared: false, $animations: {}});\n }\n return options;\n}\n","import Animations from './core.animations.js';\nimport defaults from './core.defaults.js';\nimport {isArray, isFinite, isObject, valueOrDefault, resolveObjectKey, defined} from '../helpers/helpers.core.js';\nimport {listenArrayEvents, unlistenArrayEvents} from '../helpers/helpers.collection.js';\nimport {createContext, sign} from '../helpers/index.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef { import('./core.scale.js').default } Scale\n */\n\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\n\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\n\nfunction toClip(value) {\n let t, r, b, l;\n\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\n\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n keys.push(metasets[i].index);\n }\n return keys;\n}\n\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n\n if (value === null) {\n return;\n }\n\n let found = false;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n found = true;\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isFinite(otherValue) && (singleMode || (value === 0 || sign(value) === sign(otherValue)))) {\n value += otherValue;\n }\n }\n\n if (!found && !options.all) {\n return 0;\n }\n\n return value;\n}\n\nfunction convertObjectDataToArray(data, meta) {\n const {iScale, vScale} = meta;\n const iAxisKey = iScale.axis === 'x' ? 'x' : 'y';\n const vAxisKey = vScale.axis === 'x' ? 'x' : 'y';\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n adata[i] = {\n [iAxisKey]: key,\n [vAxisKey]: data[key]\n };\n }\n return adata;\n}\n\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || (stacked === undefined && meta.stack !== undefined);\n}\n\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\n\nfunction getUserBounds(scale) {\n const {min, max, minDefined, maxDefined} = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\n\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\n\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n const value = stack[meta.index];\n if ((positive && value > 0) || (!positive && value < 0)) {\n return meta.index;\n }\n }\n\n return null;\n}\n\nfunction updateStacks(controller, parsed) {\n const {chart, _cachedMeta: meta} = controller;\n const stacks = chart._stacks || (chart._stacks = {}); // map structure is {stackKey: {datasetIndex: value}}\n const {iScale, vScale, index: datasetIndex} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n\n for (let i = 0; i < ilen; ++i) {\n const item = parsed[i];\n const {[iAxis]: index, [vAxis]: value} = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n\n const visualValues = stack._visualValues || (stack._visualValues = {});\n visualValues[datasetIndex] = value;\n }\n}\n\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\n\nfunction createDatasetContext(parent, index) {\n return createContext(parent,\n {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n }\n );\n}\n\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\n\nfunction clearStacks(meta, items) {\n // Not using meta.index here, because it might be already updated if the dataset changed location\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n\n items = items || meta._parsed;\n for (const parsed of items) {\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n if (stacks[axis]._visualValues !== undefined && stacks[axis]._visualValues[datasetIndex] !== undefined) {\n delete stacks[axis]._visualValues[datasetIndex];\n }\n }\n}\n\nconst isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked\n && {keys: getSortedDatasetIndices(chart, true), values: null};\n\nexport default class DatasetController {\n\n /**\n * @type {any}\n */\n static defaults = {};\n\n /**\n * Element type used to generate a meta dataset (e.g. Chart.element.LineElement).\n */\n static datasetElementType = null;\n\n /**\n * Element type used to generate a meta data (e.g. Chart.element.PointElement).\n */\n static dataElementType = null;\n\n /**\n\t * @param {Chart} chart\n\t * @param {number} datasetIndex\n\t */\n constructor(chart, datasetIndex) {\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n /** @type {boolean | object} */\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.supportsDecimation = false;\n this.$context = undefined;\n this._syncList = [];\n this.datasetElementType = new.target.datasetElementType;\n this.dataElementType = new.target.dataElementType;\n\n this.initialize();\n }\n\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n\n if (this.options.fill && !this.chart.isPluginEnabled('filler')) {\n console.warn(\"Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options\");\n }\n }\n\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n\n const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n\n /**\n\t * @param {string} scaleID\n\t * @return {Scale}\n\t */\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n\n /**\n\t * @private\n\t */\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale\n ? meta.vScale\n : meta.iScale;\n }\n\n reset() {\n this._update('reset');\n }\n\n /**\n\t * @private\n\t */\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n\n /**\n\t * @private\n\t */\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n\n // In order to correctly handle data addition/deletion animation (and thus simulate\n // real-time charts), we need to monitor these data modifications and synchronize\n // the internal metadata accordingly.\n\n if (isObject(data)) {\n const meta = this._cachedMeta;\n this._data = convertObjectDataToArray(data, meta);\n } else if (_data !== data) {\n if (_data) {\n // This case happens when the user replaced the data array instance.\n unlistenArrayEvents(_data, this);\n // Discard old parsed data and stacks\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n\n addElements() {\n const meta = this._cachedMeta;\n\n this._dataCheck();\n\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n\n this._dataCheck();\n\n // make sure cached _stacked status is current\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n\n // detect change in stack option\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n // remove values from old stack\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n\n // Re-sync meta data in case the user replaced the data array or if we missed\n // any updates and so make sure that we handle number of datapoints changing.\n this._resyncElements(resetNewElements);\n\n // if stack changed, update stack values for the whole dataset\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n meta._stacked = isStacked(meta.vScale, meta);\n }\n }\n\n /**\n\t * Merges user-supplied and default dataset-level options\n\t * @private\n\t */\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n\n /**\n\t * @param {number} start\n\t * @param {number} count\n\t */\n parse(start, count) {\n const {_cachedMeta: meta, _data: data} = this;\n const {iScale, _stacked} = meta;\n const iAxis = iScale.axis;\n\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n\n const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]);\n for (i = 0; i < count; ++i) {\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n\n /**\n\t * Parse array of primitive values\n\t * @param {object} meta - dataset meta\n\t * @param {array} data - data array. Example [1,3,4]\n\t * @param {number} start - start index\n\t * @param {number} count - number of items to parse\n\t * @returns {object} parsed item - item containing index and a parsed value\n\t * for each scale id.\n\t * Example: {xScale0: 0, yScale0: 1}\n\t * @protected\n\t */\n parsePrimitiveData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n\n /**\n\t * Parse array of arrays\n\t * @param {object} meta - dataset meta\n\t * @param {array} data - data array. Example [[1,2],[3,4]]\n\t * @param {number} start - start index\n\t * @param {number} count - number of items to parse\n\t * @returns {object} parsed item - item containing index and a parsed value\n\t * for each scale id.\n\t * Example: {x: 0, y: 1}\n\t * @protected\n\t */\n parseArrayData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n\n /**\n\t * Parse array of objects\n\t * @param {object} meta - dataset meta\n\t * @param {array} data - data array. Example [{x:1, y:5}, {x:2, y:10}]\n\t * @param {number} start - start index\n\t * @param {number} count - number of items to parse\n\t * @returns {object} parsed item - item containing index and a parsed value\n\t * for each scale id. _custom is optional\n\t * Example: {xScale0: 0, yScale0: 1, _custom: {r: 10, foo: 'bar'}}\n\t * @protected\n\t */\n parseObjectData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n\n /**\n\t * @protected\n\t */\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n\n /**\n\t * @protected\n\t */\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n\n /**\n\t * @protected\n\t */\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]._visualValues\n };\n return applyStack(stack, value, meta.index, {mode});\n }\n\n /**\n\t * @protected\n\t */\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n\n /**\n\t * @protected\n\t */\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n const {min: otherMin, max: otherMax} = getUserBounds(otherScale);\n let i, parsed;\n\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n\n for (i = 0; i < ilen; ++i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n // if the data is sorted, we don't need to check further from this end of array\n break;\n }\n }\n if (sorted) {\n // in the sorted case, find first non-skipped value from other end of array\n for (i = ilen - 1; i >= 0; --i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n\n for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n value = parsed[i][scale.axis];\n if (isFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n\n /**\n\t * @return {number|boolean}\n\t * @protected\n\t */\n getMaxOverflow() {\n return false;\n }\n\n /**\n\t * @protected\n\t */\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n\n /**\n\t * @private\n\t */\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n\n /**\n\t * @param {string} mode\n\t */\n update(mode) {} // eslint-disable-line no-unused-vars\n\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || (elements.length - start);\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n\n for (i = start; i < start + count; ++i) {\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n\n for (i = 0; i < active.length; ++i) {\n active[i].draw(ctx, area);\n }\n }\n\n /**\n\t * Returns a set of predefined style properties that should be used to represent the dataset\n\t * or the data if the index is specified\n\t * @param {number} index - data index\n\t * @param {boolean} [active] - true if hover\n\t * @return {object} style object\n\t */\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset\n ? this.resolveDatasetElementOptions(mode)\n : this.resolveDataElementOptions(index || 0, mode);\n }\n\n /**\n\t * @protected\n\t */\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context ||\n (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context ||\n (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n\n /**\n\t * @param {string} [mode]\n\t * @protected\n\t */\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n\n /**\n\t * @param {number} index\n\t * @param {string} [mode]\n\t * @protected\n\t */\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n\n /**\n\t * @private\n\t */\n _resolveElementOptions(elementType, mode = 'default', index) {\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n // context is provided as a function, and is called only if needed,\n // so we don't create a context for each element if not needed.\n const context = () => this.getContext(index, active, mode);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n\n if (values.$shared) {\n // `$shared` indicates this set of options can be shared between multiple elements.\n // Sharing is used to reduce number of properties to change during animation.\n values.$shared = sharing;\n\n // We cache options by `mode`, which can be 'active' for example. This enables us\n // to have the 'active' element options and 'default' options to switch between\n // when interacting.\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n\n return values;\n }\n\n\n /**\n\t * @private\n\t */\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n\n /**\n\t * Utility for getting the options object shared between elements\n\t * @protected\n\t */\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n\n /**\n\t * Utility for determining if `options` should be included in the updated properties\n\t * @protected\n\t */\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n\n /**\n * @todo v4, rename to getSharedOptions and remove excess functions\n */\n _getSharedOptions(start, mode) {\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const previouslySharedOptions = this._sharedOptions;\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions) || (sharedOptions !== previouslySharedOptions);\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n return {sharedOptions, includeOptions};\n }\n\n /**\n\t * Utility for updating an element with new properties, using animations when appropriate.\n\t * @protected\n\t */\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n\n /**\n\t * Utility to animate the shared options, that are potentially affecting multiple elements.\n\t * @protected\n\t */\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n\n /**\n\t * @private\n\t */\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n // When going from active to inactive, we need to update to the shared options.\n // This way the once hovered element will end up with the same original shared options instance, after animation.\n options: (!active && this.getSharedOptions(options)) || options\n });\n }\n\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n\n /**\n\t * @private\n\t */\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n\n /**\n\t * @private\n\t */\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n\n /**\n\t * @private\n\t */\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n\n // Apply changes detected through array listeners\n for (const [method, arg1, arg2] of this._syncList) {\n this[method](arg1, arg2);\n }\n this._syncList = [];\n\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n\n if (count) {\n // TODO: It is not optimal to always parse the old data\n // This is done because we are not detecting direct assignments:\n // chart.data.datasets[0].data[5] = 10;\n // chart.data.datasets[0].data[5].y = 10;\n this.parse(0, count);\n }\n\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n\n /**\n\t * @private\n\t */\n _insertElements(start, count, resetNewElements = true) {\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n\n const move = (arr) => {\n arr.length += count;\n for (i = arr.length - 1; i >= end; i--) {\n arr[i] = arr[i - count];\n }\n };\n move(data);\n\n for (i = start; i < end; ++i) {\n data[i] = new this.dataElementType();\n }\n\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n\n updateElements(element, start, count, mode) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * @private\n\t */\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n\n /**\n\t * @private\n */\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const [method, arg1, arg2] = args;\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([this.index, ...args]);\n }\n\n _onDataPush() {\n const count = arguments.length;\n this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n }\n\n _onDataPop() {\n this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n }\n\n _onDataShift() {\n this._sync(['_removeElements', 0, 1]);\n }\n\n _onDataSplice(start, count) {\n if (count) {\n this._sync(['_removeElements', start, count]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync(['_insertElements', start, newCount]);\n }\n }\n\n _onDataUnshift() {\n this._sync(['_insertElements', 0, arguments.length]);\n }\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {\n _arrayUnique, isArray, isNullOrUndef,\n valueOrDefault, resolveObjectKey, sign, defined\n} from '../helpers/index.js';\n\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n\n for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n }\n return scale._cache.$bar;\n}\n\n/**\n * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\n * @private\n */\nfunction computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = () => {\n if (curr === 32767 || curr === -32768) {\n // Ignore truncated pixels\n return;\n }\n if (defined(prev)) {\n // curr - prev === 0 is ignored\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n\n for (i = 0, ilen = values.length; i < ilen; ++i) {\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n\n prev = undefined;\n for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n\n return min;\n}\n\n/**\n * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\n * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\n * mode currently always generates bars equally sized (until we introduce scriptable options?).\n * @private\n */\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n // When bar thickness is enforced, category and bar percentages are ignored.\n // Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\n // and deprecate barPercentage since this value is ignored when thickness is absolute.\n size = thickness * stackCount;\n ratio = 1;\n }\n\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - (size / 2)\n };\n}\n\n/**\n * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\n * percentage options are 1), based on the previous and following categories. This mode\n * generates bars with different widths when data are not evenly spaced.\n * @private\n */\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n\n if (prev === null) {\n // first data: its size is double based on the next point or,\n // if it's also the last data, we use the scale size.\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n\n if (next === null) {\n // last data: its size is also double based on the previous point.\n next = curr + curr - prev;\n }\n\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\n\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n\n // Store `barEnd` (furthest away from origin) as parsed value,\n // to make stacking straight forward\n item[vScale.axis] = barEnd;\n\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\n\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\n\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n\n for (i = start, ilen = start + count; i < ilen; ++i) {\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\n\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\n\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\n\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {start, end, reverse, top, bottom};\n}\n\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n\n if (edge === true) {\n properties.borderSkipped = {top: true, right: true, bottom: true, left: true};\n return;\n }\n\n const {start, end, reverse, top, bottom} = borderProps(properties);\n\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\n\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\n\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\n\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\n\nfunction setInflateAmount(properties, {inflateAmount}, ratio) {\n properties.inflateAmount = inflateAmount === 'auto'\n ? ratio === 1 ? 0.33 : 0\n : inflateAmount;\n}\n\nexport default class BarController extends DatasetController {\n\n static id = 'bar';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'base', 'width', 'height']\n }\n }\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true,\n }\n }\n };\n\n\n /**\n\t * Overriding primitive data parsing since we support mixed primitive/array\n\t * data for float bars\n\t * @protected\n\t */\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n\n /**\n\t * Overriding array data parsing since we support mixed primitive/array\n\t * data for float bars\n\t * @protected\n\t */\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n\n /**\n\t * Overriding object data parsing since we support mixed primitive/array\n\t * value-scale data for float bars\n\t * @protected\n\t */\n parseObjectData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n\n /**\n\t * @protected\n\t */\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n // float bar: only one end of the bar is considered by `super`\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n\n /**\n\t * @return {number|boolean}\n\t * @protected\n\t */\n getMaxOverflow() {\n return 0;\n }\n\n /**\n\t * @protected\n\t */\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {iScale, vScale} = meta;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom)\n ? '[' + custom.start + ', ' + custom.end + ']'\n : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n\n initialize() {\n this.enableOptionSharing = true;\n\n super.initialize();\n\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const {index, _cachedMeta: {vScale}} = this;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n\n for (let i = start; i < start + count; i++) {\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {base, head: base} : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || (index === stack._top || index === stack._bottom),\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n\n /**\n\t * Returns the stacks based on groups and bar visibility.\n\t * @param {number} [last] - The dataset index\n\t * @param {number} [dataIndex] - The data index of the ruler\n\t * @returns {string[]} The list of stack IDs\n\t * @private\n\t */\n _getStacks(last, dataIndex) {\n const {iScale} = this._cachedMeta;\n const metasets = iScale.getMatchingVisibleMetas(this._type)\n .filter(meta => meta.controller.options.grouped);\n const stacked = iScale.options.stacked;\n const stacks = [];\n const currentParsed = this._cachedMeta.controller.getParsed(dataIndex);\n const iScaleValue = currentParsed && currentParsed[iScale.axis];\n\n const skipNull = (meta) => {\n const parsed = meta._parsed.find(item => item[iScale.axis] === iScaleValue);\n const val = parsed && parsed[meta.vScale.axis];\n\n if (isNullOrUndef(val) || isNaN(val)) {\n return true;\n }\n };\n\n for (const meta of metasets) {\n if (dataIndex !== undefined && skipNull(meta)) {\n continue;\n }\n\n // stacked | meta.stack\n // | found | not found | undefined\n // false | x | x | x\n // true | | x |\n // undefined | | x | x\n if (stacked === false || stacks.indexOf(meta.stack) === -1 ||\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\n stacks.push(meta.stack);\n }\n if (meta.index === last) {\n break;\n }\n }\n\n // No stacks? that means there is no visible data. Let's still initialize an `undefined`\n // stack where possible invisible bars will be located.\n // https://github.com/chartjs/Chart.js/issues/6368\n if (!stacks.length) {\n stacks.push(undefined);\n }\n\n return stacks;\n }\n\n /**\n\t * Returns the effective number of stacks based on groups and bar visibility.\n\t * @private\n\t */\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n\n _getAxisCount() {\n return this._getAxis().length;\n }\n\n getFirstScaleIdForIndexAxis() {\n const scales = this.chart.scales;\n const indexScaleId = this.chart.options.indexAxis;\n return Object.keys(scales).filter(key => scales[key].axis === indexScaleId).shift();\n }\n\n _getAxis() {\n const axis = {};\n const firstScaleAxisId = this.getFirstScaleIdForIndexAxis();\n for (const dataset of this.chart.data.datasets) {\n axis[valueOrDefault(\n this.chart.options.indexAxis === 'x' ? dataset.xAxisID : dataset.yAxisID, firstScaleAxisId\n )] = true;\n }\n return Object.keys(axis);\n }\n\n /**\n\t * Returns the stack index for the given dataset based on groups and bar visibility.\n\t * @param {number} [datasetIndex] - The dataset index\n\t * @param {string} [name] - The stack name to find\n * @param {number} [dataIndex]\n\t * @returns {number} The stack index\n\t * @private\n\t */\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = (name !== undefined)\n ? stacks.indexOf(name)\n : -1; // indexOf returns -1 if element is not present\n\n return (index === -1)\n ? stacks.length - 1\n : index;\n }\n\n /**\n\t * @private\n\t */\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n\n for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n // bar thickness ratio used for non-grouped bars\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n\n /**\n\t * Note: pixel values are not clamped to the scale area.\n\t * @private\n\t */\n _calculateBarValuePixels(index) {\n const {_cachedMeta: {vScale, _stacked, index: datasetIndex}, options: {base: baseValue, minBarLength}} = this;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n\n if (length !== value) {\n start = length - value;\n length = value;\n }\n\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n // bars crossing origin are not stacked\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n // When not visible, no height\n head = base;\n }\n\n size = head - base;\n\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n const startPixel = vScale.getPixelForDecimal(0);\n const endPixel = vScale.getPixelForDecimal(1);\n const min = Math.min(startPixel, endPixel);\n const max = Math.max(startPixel, endPixel);\n base = Math.max(Math.min(base, max), min);\n head = base + size;\n\n if (_stacked && !floating) {\n // visual data coordinates after applying minBarLength\n parsed._stacks[vScale.axis]._visualValues[datasetIndex] = vScale.getValueForPixel(head) - vScale.getValueForPixel(base);\n }\n }\n\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n\n /**\n\t * @private\n\t */\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n const axisCount = this._getAxisCount();\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex'\n ? computeFlexCategoryTraits(index, ruler, options, stackCount * axisCount)\n : computeFitCategoryTraits(index, ruler, options, stackCount * axisCount);\n const axisID = this.chart.options.indexAxis === 'x' ? this.getDataset().xAxisID : this.getDataset().yAxisID;\n const axisNumber = this._getAxis().indexOf(valueOrDefault(axisID, this.getFirstScaleIdForIndexAxis()));\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined) + axisNumber;\n center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n // For non-grouped bar charts, exact pixel values are used\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n\n\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n\n for (; i < ilen; ++i) {\n if (this.getParsed(i)[vScale.axis] !== null && !rects[i].hidden) {\n rects[i].draw(this._ctx);\n }\n }\n }\n\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {valueOrDefault} from '../helpers/helpers.core.js';\n\nexport default class BubbleController extends DatasetController {\n\n static id = 'bubble';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'borderWidth', 'radius']\n }\n }\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n };\n\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n\n /**\n\t * Parse array of primitive values\n\t * @protected\n\t */\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n\n /**\n\t * Parse array of arrays\n\t * @protected\n\t */\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n\n /**\n\t * Parse array of objects\n\t * @protected\n\t */\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n\n /**\n\t * @protected\n\t */\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n\n /**\n\t * @protected\n\t */\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const {xScale, yScale} = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n\n update(mode) {\n const points = this._cachedMeta.data;\n\n // Update Points\n this.updateElements(points, 0, points.length, mode);\n }\n\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale} = this._cachedMeta;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n\n if (reset) {\n properties.options.radius = 0;\n }\n }\n\n this.updateElement(point, i, properties, mode);\n }\n }\n\n /**\n\t * @param {number} index\n\t * @param {string} [mode]\n\t * @protected\n\t */\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n\n // In case values were cached (and thus frozen), we need to clone the values\n if (values.$shared) {\n values = Object.assign({}, values, {$shared: false});\n }\n\n // Custom radius resolution\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n\n return values;\n }\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {isObject, resolveObjectKey, toPercentage, toDimension, valueOrDefault} from '../helpers/helpers.core.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\nimport {toRadians, PI, TAU, HALF_PI, _angleBetween} from '../helpers/helpers.math.js';\n\n/**\n * @typedef { import('../core/core.controller.js').default } Chart\n */\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n // If the chart's circumference isn't a full circle, calculate size as a ratio of the width/height of the arc\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {ratioX, ratioY, offsetX, offsetY};\n}\n\nexport default class DoughnutController extends DatasetController {\n\n static id = 'doughnut';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n // Boolean - Whether we animate the rotation of the Doughnut\n animateRotate: true,\n // Boolean - Whether we animate scaling the Doughnut from the centre\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n },\n },\n // The percentage of the chart that we cut out of the middle.\n cutout: '50%',\n\n // The rotation of the chart, where the first data arc begins.\n rotation: 0,\n\n // The total circumference of the chart.\n circumference: 360,\n\n // The outer radius of the chart\n radius: '100%',\n\n // Spacing between arcs\n spacing: 0,\n\n indexAxis: 'r',\n };\n\n static descriptors = {\n _scriptable: (name) => name !== 'spacing',\n _indexable: (name) => name !== 'spacing' && !name.startsWith('borderDash') && !name.startsWith('hoverBorderDash'),\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n aspectRatio: 1,\n\n // Need to override these to give a nice default\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n const {labels: {pointStyle, textAlign, color, useBorderRadius, borderRadius}} = chart.legend.options;\n if (data.labels.length && data.datasets.length) {\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n\n return {\n text: label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !chart.getDataVisibility(i),\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: style.borderWidth,\n strokeStyle: style.borderColor,\n textAlign: textAlign,\n pointStyle: pointStyle,\n borderRadius: useBorderRadius && (borderRadius || style.borderRadius),\n // Extra data used for toggling the correct item\n index: i\n };\n });\n }\n return [];\n }\n },\n\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n }\n };\n\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n\n linkScales() {}\n\n /**\n\t * Override data parsing, since we are not using scales\n\t */\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = (i) => +data[i];\n\n if (isObject(data[start])) {\n const {key = 'value'} = this._parsing;\n getter = (i) => +resolveObjectKey(data[i], key);\n }\n\n let i, ilen;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n meta._parsed[i] = getter(i);\n }\n }\n }\n\n /**\n\t * @private\n\t */\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n\n /**\n\t * @private\n\t */\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n\n /**\n\t * Get the maximal rotation & circumference extents\n\t * across all visible datasets.\n\t */\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n\n for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n if (this.chart.isDatasetVisible(i) && this.chart.getDatasetMeta(i).type === this._type) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n\n return {\n rotation: min,\n circumference: max - min,\n };\n }\n\n /**\n\t * @param {string} mode\n\t */\n update(mode) {\n const chart = this.chart;\n const {chartArea} = chart;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n\n // Compute the maximal rotation & circumference limits.\n // If we only consider our dataset, this can cause problems when two datasets\n // are both less than a circle with different rotations (starting angles)\n const {circumference, rotation} = this._getRotationExtents();\n const {ratioX, ratioY, offsetX, offsetY} = getRatioAndOffset(rotation, circumference, cutout);\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n\n meta.total = this.calculateTotal();\n\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n\n /**\n * @private\n */\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if ((reset && opts.animation.animateRotate) || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n let startAngle = this._getRotation();\n let i;\n\n for (i = 0; i < start; ++i) {\n startAngle += this._circumference(i, reset);\n }\n\n for (i = start; i < start + count; ++i) {\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n\n this.updateElement(arc, i, properties, mode);\n }\n }\n\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n\n for (i = 0; i < metaData.length; i++) {\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n\n return total;\n }\n\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n\n return {\n label: labels[index] || '',\n value,\n };\n }\n\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n\n if (!arcs) {\n // Find the outmost visible dataset\n for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n\n if (!arcs) {\n return 0;\n }\n\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n\n getMaxOffset(arcs) {\n let max = 0;\n\n for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n\n /**\n\t * Get radius length offset of the dataset in relation to the visible datasets weights. This allows determining the inner and outer radius correctly\n\t * @private\n\t */\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n\n for (let i = 0; i < datasetIndex; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n\n return ringWeightOffset;\n }\n\n /**\n\t * @private\n\t */\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n\n /**\n\t * Returns the sum of all visible data set weights.\n\t * @private\n\t */\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {isNullOrUndef} from '../helpers/index.js';\nimport {isNumber} from '../helpers/helpers.math.js';\nimport {_getStartAndCountOfVisiblePoints, _scaleRangesChanged} from '../helpers/helpers.extras.js';\n\nexport default class LineController extends DatasetController {\n\n static id = 'line';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n\n showLine: true,\n spanGaps: false,\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n scales: {\n _index_: {\n type: 'category',\n },\n _value_: {\n type: 'linear',\n },\n }\n };\n\n initialize() {\n this.enableOptionSharing = true;\n this.supportsDecimation = true;\n super.initialize();\n }\n\n update(mode) {\n const meta = this._cachedMeta;\n const {dataset: line, data: points = [], _dataset} = meta;\n // @ts-ignore\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n\n this._drawStart = start;\n this._drawCount = count;\n\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n\n // Update Line\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n\n // Update Points\n this.updateElements(points, start, count, mode);\n }\n\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n const end = start + count;\n const pointsCount = points.length;\n let prevParsed = start > 0 && this.getParsed(start - 1);\n\n for (let i = 0; i < pointsCount; ++i) {\n const point = points[i];\n const properties = directUpdate ? point : {};\n\n if (i < start || i >= end) {\n properties.skip = true;\n continue;\n }\n\n const parsed = this.getParsed(i);\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n\n prevParsed = parsed;\n }\n }\n\n /**\n\t * @protected\n\t */\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {toRadians, PI, formatNumber, _parseObjectDataRadialScale} from '../helpers/index.js';\n\nexport default class PolarAreaController extends DatasetController {\n\n static id = 'polarArea';\n\n /**\n * @type {any}\n */\n static defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n },\n },\n indexAxis: 'r',\n startAngle: 0,\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n aspectRatio: 1,\n\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle, color}} = chart.legend.options;\n\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n\n // Extra data used for toggling the correct item\n index: i\n };\n });\n }\n return [];\n }\n },\n\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n },\n\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n };\n\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n\n return {\n label: labels[index] || '',\n value,\n };\n }\n\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n\n update(mode) {\n const arcs = this._cachedMeta.data;\n\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n\n /**\n * @protected\n */\n getMinMax() {\n const meta = this._cachedMeta;\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n\n meta.data.forEach((element, index) => {\n const parsed = this.getParsed(index).r;\n\n if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n if (parsed < range.min) {\n range.min = parsed;\n }\n\n if (parsed > range.max) {\n range.max = parsed;\n }\n }\n });\n\n return range;\n }\n\n /**\n\t * @private\n\t */\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? (outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n\n this.outerRadius = outerRadius - (radiusLength * this.index);\n this.innerRadius = this.outerRadius - radiusLength;\n }\n\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n\n const defaultAngle = 360 / this.countVisibleElements();\n\n for (i = 0; i < start; ++i) {\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for (i = start; i < start + count; i++) {\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n angle = endAngle;\n\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n\n this.updateElement(arc, i, properties, mode);\n }\n }\n\n countVisibleElements() {\n const meta = this._cachedMeta;\n let count = 0;\n\n meta.data.forEach((element, index) => {\n if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n\n return count;\n }\n\n /**\n\t * @private\n\t */\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index)\n ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n : 0;\n }\n}\n","import DoughnutController from './controller.doughnut.js';\n\n// Pie charts are Doughnut chart with different defaults\nexport default class PieController extends DoughnutController {\n\n static id = 'pie';\n\n /**\n * @type {any}\n */\n static defaults = {\n // The percentage of the chart that we cut out of the middle.\n cutout: 0,\n\n // The rotation of the chart, where the first data arc begins.\n rotation: 0,\n\n // The total circumference of the chart.\n circumference: 360,\n\n // The outer radius of the chart\n radius: '100%'\n };\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {_parseObjectDataRadialScale} from '../helpers/index.js';\n\nexport default class RadarController extends DatasetController {\n\n static id = 'radar';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n },\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n aspectRatio: 1,\n\n scales: {\n r: {\n type: 'radialLinear',\n }\n }\n };\n\n /**\n\t * @protected\n\t */\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n\n // Update Line\n line.points = points;\n // In resize mode only point locations change, so no need to set the points or options.\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n\n this.updateElement(line, undefined, properties, mode);\n }\n\n // Update Points\n this.updateElements(points, 0, points.length, mode);\n }\n\n updateElements(points, start, count, mode) {\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n\n this.updateElement(point, i, properties, mode);\n }\n }\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {isNullOrUndef} from '../helpers/index.js';\nimport {isNumber} from '../helpers/helpers.math.js';\nimport {_getStartAndCountOfVisiblePoints, _scaleRangesChanged} from '../helpers/helpers.extras.js';\n\nexport default class ScatterController extends DatasetController {\n\n static id = 'scatter';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n showLine: false,\n fill: false\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n\n interaction: {\n mode: 'point'\n },\n\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n };\n\n /**\n\t * @protected\n\t */\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const {xScale, yScale} = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + ')'\n };\n }\n\n update(mode) {\n const meta = this._cachedMeta;\n const {data: points = []} = meta;\n // @ts-ignore\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n\n this._drawStart = start;\n this._drawCount = count;\n\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n\n if (this.options.showLine) {\n\n // https://github.com/chartjs/Chart.js/issues/11333\n if (!this.datasetElementType) {\n this.addElements();\n }\n const {dataset: line, _dataset} = meta;\n\n // Update Line\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n\n const options = this.resolveDatasetElementOptions(mode);\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n } else if (this.datasetElementType) {\n // https://github.com/chartjs/Chart.js/issues/11333\n delete meta.dataset;\n this.datasetElementType = false;\n }\n\n // Update Points\n this.updateElements(points, start, count, mode);\n }\n\n addElements() {\n const {showLine} = this.options;\n\n if (!this.datasetElementType && showLine) {\n this.datasetElementType = this.chart.registry.getElement('line');\n }\n\n super.addElements();\n }\n\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n\n prevParsed = parsed;\n }\n\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n\n /**\n\t * @protected\n\t */\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const data = meta.data || [];\n\n if (!this.options.showLine) {\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n\n if (!data.length) {\n return border;\n }\n\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n}\n","/**\n * @namespace Chart._adapters\n * @since 2.8.0\n * @private\n */\n\nimport type {AnyObject} from '../types/basic.js';\nimport type {ChartOptions} from '../types/index.js';\n\nexport type TimeUnit = 'millisecond' | 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year';\n\nexport interface DateAdapter {\n readonly options: T;\n /**\n * Will called with chart options after adapter creation.\n */\n init(this: DateAdapter, chartOptions: ChartOptions): void;\n /**\n * Returns a map of time formats for the supported formatting units defined\n * in Unit as well as 'datetime' representing a detailed date/time string.\n */\n formats(this: DateAdapter): Record;\n /**\n * Parses the given `value` and return the associated timestamp.\n * @param value - the value to parse (usually comes from the data)\n * @param [format] - the expected data format\n */\n parse(this: DateAdapter, value: unknown, format?: string): number | null;\n /**\n * Returns the formatted date in the specified `format` for a given `timestamp`.\n * @param timestamp - the timestamp to format\n * @param format - the date/time token\n */\n format(this: DateAdapter, timestamp: number, format: string): string;\n /**\n * Adds the specified `amount` of `unit` to the given `timestamp`.\n * @param timestamp - the input timestamp\n * @param amount - the amount to add\n * @param unit - the unit as string\n */\n add(this: DateAdapter, timestamp: number, amount: number, unit: TimeUnit): number;\n /**\n * Returns the number of `unit` between the given timestamps.\n * @param a - the input timestamp (reference)\n * @param b - the timestamp to subtract\n * @param unit - the unit as string\n */\n diff(this: DateAdapter, a: number, b: number, unit: TimeUnit): number;\n /**\n * Returns start of `unit` for the given `timestamp`.\n * @param timestamp - the input timestamp\n * @param unit - the unit as string\n * @param [weekday] - the ISO day of the week with 1 being Monday\n * and 7 being Sunday (only needed if param *unit* is `isoWeek`).\n */\n startOf(this: DateAdapter, timestamp: number, unit: TimeUnit | 'isoWeek', weekday?: number | boolean): number;\n /**\n * Returns end of `unit` for the given `timestamp`.\n * @param timestamp - the input timestamp\n * @param unit - the unit as string\n */\n endOf(this: DateAdapter, timestamp: number, unit: TimeUnit): number;\n}\n\nfunction abstract(): T {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\n\n/**\n * Date adapter (current used by the time scale)\n * @namespace Chart._adapters._date\n * @memberof Chart._adapters\n * @private\n */\nclass DateAdapterBase implements DateAdapter {\n\n /**\n * Override default date adapter methods.\n * Accepts type parameter to define options type.\n * @example\n * Chart._adapters._date.override<{myAdapterOption: string}>({\n * init() {\n * console.log(this.options.myAdapterOption);\n * }\n * })\n */\n static override(\n members: Partial, 'options'>>\n ) {\n Object.assign(DateAdapterBase.prototype, members);\n }\n\n readonly options: AnyObject;\n\n constructor(options?: AnyObject) {\n this.options = options || {};\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n init() {}\n\n formats(): Record {\n return abstract();\n }\n\n parse(): number | null {\n return abstract();\n }\n\n format(): string {\n return abstract();\n }\n\n add(): number {\n return abstract();\n }\n\n diff(): number {\n return abstract();\n }\n\n startOf(): number {\n return abstract();\n }\n\n endOf(): number {\n return abstract();\n }\n}\n\nexport default {\n _date: DateAdapterBase as {\n new (options?: AnyObject): DateAdapter;\n override(\n members: Partial, 'options'>>\n ): void;\n }\n};\n","import {_lookupByKey, _rlookupByKey} from '../helpers/helpers.collection.js';\nimport {getRelativePosition} from '../helpers/helpers.dom.js';\nimport {_angleBetween, getAngleFromPoint} from '../helpers/helpers.math.js';\nimport {_isPointInArea, isNullOrUndef} from '../helpers/index.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef {{axis?: string, intersect?: boolean, includeInvisible?: boolean}} InteractionOptions\n * @typedef {{datasetIndex: number, index: number, element: import('./core.element.js').default}} InteractionItem\n * @typedef { import('../types/index.js').Point } Point\n */\n\n/**\n * Helper function to do binary search when possible\n * @param {object} metaset - the dataset meta\n * @param {string} axis - the axis mode. x|y|xy|r\n * @param {number} value - the value to find\n * @param {boolean} [intersect] - should the element intersect\n * @returns {{lo:number, hi:number}} indices to search data array between\n */\nfunction binarySearch(metaset, axis, value, intersect) {\n const {controller, data, _sorted} = metaset;\n const iScale = controller._cachedMeta.iScale;\n const spanGaps = metaset.dataset ? metaset.dataset.options ? metaset.dataset.options.spanGaps : null : null;\n\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n const result = lookupMethod(data, axis, value);\n if (spanGaps) {\n const {vScale} = controller._cachedMeta;\n const {_parsed} = metaset;\n\n const distanceToDefinedLo = (_parsed\n .slice(0, result.lo + 1)\n .reverse()\n .findIndex(\n point => !isNullOrUndef(point[vScale.axis])));\n result.lo -= Math.max(0, distanceToDefinedLo);\n\n const distanceToDefinedHi = (_parsed\n .slice(result.hi)\n .findIndex(\n point => !isNullOrUndef(point[vScale.axis])));\n result.hi += Math.max(0, distanceToDefinedHi);\n }\n return result;\n } else if (controller._sharedOptions) {\n // _sharedOptions indicates that each element has equal options -> equal proportions\n // So we can do a ranged binary search based on the range of first element and\n // be confident to get the full range of indices that can intersect with the value.\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {lo: start.lo, hi: end.hi};\n }\n }\n }\n // Default to all elements, when binary search can not be used.\n return {lo: 0, hi: data.length - 1};\n}\n\n/**\n * Helper function to select candidate elements for interaction\n * @param {Chart} chart - the chart\n * @param {string} axis - the axis mode. x|y|xy|r\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {function} handler - the callback to execute for each visible item\n * @param {boolean} [intersect] - consider intersecting items\n */\nfunction evaluateInteractionItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n const {index, data} = metasets[i];\n const {lo, hi} = binarySearch(metasets[i], axis, value, intersect);\n for (let j = lo; j <= hi; ++j) {\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\n\n/**\n * Get a distance metric function for two points based on the\n * axis mode setting\n * @param {string} axis - the axis mode. x|y|xy|r\n */\nfunction getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n\n return function(pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\n\n/**\n * Helper function to get the items that intersect the event position\n * @param {Chart} chart - the chart\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axis mode. x|y|xy|r\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @param {boolean} [includeInvisible] - include invisible points that are outside of the chart area\n * @return {InteractionItem[]} the nearest items\n */\nfunction getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n const items = [];\n\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n\n const evaluationFunc = function(element, datasetIndex, index) {\n if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n return;\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({element, datasetIndex, index});\n }\n };\n\n evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\n\n/**\n * Helper function to get the items nearest to the event position for a radial chart\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axes along which to measure distance\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @return {InteractionItem[]} the nearest items\n */\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n\n function evaluationFunc(element, datasetIndex, index) {\n const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n const {angle} = getAngleFromPoint(element, {x: position.x, y: position.y});\n\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({element, datasetIndex, index});\n }\n }\n\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\n\n/**\n * Helper function to get the items nearest to the event position for a cartesian chart\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axes along which to measure distance\n * @param {boolean} [intersect] - if true, only consider items that intersect the position\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @param {boolean} [includeInvisible] - include invisible points that are outside of the chart area\n * @return {InteractionItem[]} the nearest items\n */\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n if (!pointInArea && !inRange) {\n return;\n }\n\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [{element, datasetIndex, index}];\n minDistance = distance;\n } else if (distance === minDistance) {\n // Can have multiple items at the same distance in which case we sort by size\n items.push({element, datasetIndex, index});\n }\n }\n\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\n\n/**\n * Helper function to get the items nearest to the event position considering all visible items in the chart\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axes along which to measure distance\n * @param {boolean} [intersect] - if true, only consider items that intersect the position\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @param {boolean} [includeInvisible] - include invisible points that are outside of the chart area\n * @return {InteractionItem[]} the nearest items\n */\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n\n return axis === 'r' && !intersect\n ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\n\n/**\n * Helper function to get the items matching along the given X or Y axis\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axis to match\n * @param {boolean} [intersect] - if true, only consider items that intersect the position\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @return {InteractionItem[]} the nearest items\n */\nfunction getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n const items = [];\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n\n evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index) => {\n if (element[rangeMethod] && element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({element, datasetIndex, index});\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n\n // If we want to trigger on an intersect and we don't have any items\n // that intersect the position, return nothing\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\n\n/**\n * Contains interaction related functions\n * @namespace Chart.Interaction\n */\nexport default {\n // Part of the public API to facilitate developers creating their own modes\n evaluateInteractionItems,\n\n // Helper function for different modes\n modes: {\n /**\n\t\t * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item\n\t\t * @function Chart.Interaction.modes.index\n\t\t * @since v2.4.0\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n index(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n // Default axis for index mode is 'x' to match old behaviour\n const axis = options.axis || 'x';\n const includeInvisible = options.includeInvisible || false;\n const items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible)\n : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n const elements = [];\n\n if (!items.length) {\n return [];\n }\n\n chart.getSortedVisibleDatasetMetas().forEach((meta) => {\n const index = items[0].index;\n const element = meta.data[index];\n\n // don't count items that are skipped (null data)\n if (element && !element.skip) {\n elements.push({element, datasetIndex: meta.index, index});\n }\n });\n\n return elements;\n },\n\n /**\n\t\t * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect is false, we find the nearest item and return the items in that dataset\n\t\t * @function Chart.Interaction.modes.dataset\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n dataset(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n let items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) :\n getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for (let i = 0; i < data.length; ++i) {\n items.push({element: data[i], datasetIndex, index: i});\n }\n }\n\n return items;\n },\n\n /**\n\t\t * Point mode returns all elements that hit test based on the event position\n\t\t * of the event\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n point(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n },\n\n /**\n\t\t * nearest mode returns the element closest to the point\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n nearest(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n },\n\n /**\n\t\t * x mode returns the elements that hit-test at the current x coordinate\n\t\t * @function Chart.Interaction.modes.x\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n x(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n },\n\n /**\n\t\t * y mode returns the elements that hit-test at the current y coordinate\n\t\t * @function Chart.Interaction.modes.y\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n y(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n }\n }\n};\n","import {defined, each, isObject} from '../helpers/helpers.core.js';\nimport {toPadding} from '../helpers/helpers.options.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n */\n\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\n\nfunction filterByPosition(array, position) {\n return array.filter(v => v.pos === position);\n}\n\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\n\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b) => {\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ?\n v0.index - v1.index :\n v0.weight - v1.weight;\n });\n}\n\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n\n for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n box = boxes[i];\n ({position: pos, options: {stack, stackWeight = 1}} = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && (pos + stack),\n stackWeight\n });\n }\n return layoutBoxes;\n}\n\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts) {\n const {stack, pos, stackWeight} = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {count: 0, placed: 0, weight: 0, size: 0});\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\n\n/**\n * store dimensions used instead of available chartArea in fitBoxes\n **/\nfunction setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const {vBoxMaxWidth, hBoxMaxHeight} = params;\n let i, ilen, layout;\n for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n layout = layouts[i];\n const {fullSize} = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\n\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\n\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\n\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\n\nfunction updateDims(chartArea, params, layout, stacks) {\n const {pos, box} = layout;\n const maxPadding = chartArea.maxPadding;\n\n // dynamically placed boxes size is not considered\n if (!isObject(pos)) {\n if (layout.size) {\n // this layout was already counted for, lets first reduce old size\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {size: 0, count: 1};\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n\n // return booleans on the changes per direction\n return layout.horizontal\n ? {same: widthChanged, other: heightChanged}\n : {same: heightChanged, other: widthChanged};\n}\n\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\n\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n\n function marginForPositions(positions) {\n const margin = {left: 0, top: 0, right: 0, bottom: 0};\n positions.forEach((pos) => {\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n\n return horizontal\n ? marginForPositions(['left', 'right'])\n : marginForPositions(['top', 'bottom']);\n}\n\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n\n for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n\n box.update(\n layout.width || chartArea.w,\n layout.height || chartArea.h,\n getMargins(layout.horizontal, chartArea)\n );\n const {same, other} = updateDims(chartArea, params, layout, stacks);\n\n // Dimensions changed and there were non full width boxes before this\n // -> we have to refit those\n refit |= same && refitBoxes.length;\n\n // Chart area changed in the opposite direction\n changed = changed || other;\n\n if (!box.fullSize) { // fullSize boxes don't need to be re-fitted in any case\n refitBoxes.push(layout);\n }\n }\n\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\n\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\n\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let {x, y} = chartArea;\n\n for (const layout of boxes) {\n const box = layout.box;\n const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1};\n const weight = (layout.stackWeight / stack.weight) || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height = chartArea.h * weight;\n const width = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n }\n stack.start = x;\n stack.placed += height;\n x = box.right;\n }\n }\n\n chartArea.x = x;\n chartArea.y = y;\n}\n\n/**\n * @interface LayoutItem\n * @typedef {object} LayoutItem\n * @prop {string} position - The position of the item in the chart layout. Possible values are\n * 'left', 'top', 'right', 'bottom', and 'chartArea'\n * @prop {number} weight - The weight used to sort the item. Higher weights are further away from the chart area\n * @prop {boolean} fullSize - if true, and the item is horizontal, then push vertical boxes down\n * @prop {function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\n * @prop {function} update - Takes two parameters: width and height. Returns size of item\n * @prop {function} draw - Draws the element\n * @prop {function} [getPadding] - Returns an object with padding on the edges\n * @prop {number} width - Width of item. Must be valid after update()\n * @prop {number} height - Height of item. Must be valid after update()\n * @prop {number} left - Left edge of the item. Set by layout system and cannot be used in update\n * @prop {number} top - Top edge of the item. Set by layout system and cannot be used in update\n * @prop {number} right - Right edge of the item. Set by layout system and cannot be used in update\n * @prop {number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\n */\n\n// The layout service is very self explanatory. It's responsible for the layout within a chart.\n// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\n// It is this service's responsibility of carrying out that layout.\nexport default {\n\n /**\n\t * Register a box to a chart.\n\t * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\n\t * @param {Chart} chart - the chart to use\n\t * @param {LayoutItem} item - the item to add to be laid out\n\t */\n addBox(chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n\n // initialize item with default values\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n // @ts-ignore\n item._layers = item._layers || function() {\n return [{\n z: 0,\n draw(chartArea) {\n item.draw(chartArea);\n }\n }];\n };\n\n chart.boxes.push(item);\n },\n\n /**\n\t * Remove a layoutItem from a chart\n\t * @param {Chart} chart - the chart to remove the box from\n\t * @param {LayoutItem} layoutItem - the item to remove from the layout\n\t */\n removeBox(chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n\n /**\n\t * Sets (or updates) options on the given `item`.\n\t * @param {Chart} chart - the chart in which the item lives (or will be added to)\n\t * @param {LayoutItem} item - the item to configure with the given options\n\t * @param {object} options - the new item options.\n\t */\n configure(chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n\n /**\n\t * Fits boxes of the given chart into the given size by having each box measure itself\n\t * then running a fitting algorithm\n\t * @param {Chart} chart - the chart\n\t * @param {number} width - the width to fit into\n\t * @param {number} height - the height to fit into\n * @param {number} minPadding - minimum padding required for each side of chart area\n\t */\n update(chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n\n // Before any changes are made, notify boxes that an update is about to being\n // This is used to clear any cached data (e.g. scale limits)\n each(chart.boxes, box => {\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n\n // Essentially we now have any number of boxes on each of the 4 sides.\n // Our canvas looks like the following.\n // The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\n // B1 is the bottom axis\n // There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\n // These locations are single-box locations only, when trying to register a chartArea location that is already taken,\n // an error will be thrown.\n //\n // |----------------------------------------------------|\n // | T1 (Full Width) |\n // |----------------------------------------------------|\n // | | | T2 | |\n // | |----|-------------------------------------|----|\n // | | | C1 | | C2 | |\n // | | |----| |----| |\n // | | | | |\n // | L1 | L2 | ChartArea (C0) | R1 |\n // | | | | |\n // | | |----| |----| |\n // | | | C3 | | C4 | |\n // | |----|-------------------------------------|----|\n // | | | B1 | |\n // |----------------------------------------------------|\n // | B2 (Full Width) |\n // |----------------------------------------------------|\n //\n\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) =>\n wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n\n // First fit the fullSize boxes, to reduce probability of re-fitting.\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n\n // Then fit vertical boxes\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n\n // Then fit horizontal boxes\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n // if the area changed, re-fit vertical boxes\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n\n handleMaxPadding(chartArea);\n\n // Finally place the boxes to correct coordinates\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n\n // Move to opposite side of chart\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w,\n };\n\n // Finally update boxes in chartArea (radial scale for example)\n each(boxes.chartArea, (layout) => {\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {left: 0, top: 0, right: 0, bottom: 0});\n });\n }\n};\n","\n/**\n * @typedef { import('../core/core.controller.js').default } Chart\n */\n\n/**\n * Abstract class that allows abstracting platform dependencies away from the chart.\n */\nexport default class BasePlatform {\n /**\n\t * Called at chart construction time, returns a context2d instance implementing\n\t * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}.\n\t * @param {HTMLCanvasElement} canvas - The canvas from which to acquire context (platform specific)\n\t * @param {number} [aspectRatio] - The chart options\n\t */\n acquireContext(canvas, aspectRatio) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * Called at chart destruction time, releases any resources associated to the context\n\t * previously returned by the acquireContext() method.\n\t * @param {CanvasRenderingContext2D} context - The context2d instance\n\t * @returns {boolean} true if the method succeeded, else false\n\t */\n releaseContext(context) { // eslint-disable-line no-unused-vars\n return false;\n }\n\n /**\n\t * Registers the specified listener on the given chart.\n\t * @param {Chart} chart - Chart from which to listen for event\n\t * @param {string} type - The ({@link ChartEvent}) type to listen for\n\t * @param {function} listener - Receives a notification (an object that implements\n\t * the {@link ChartEvent} interface) when an event of the specified type occurs.\n\t */\n addEventListener(chart, type, listener) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * Removes the specified listener previously registered with addEventListener.\n\t * @param {Chart} chart - Chart from which to remove the listener\n\t * @param {string} type - The ({@link ChartEvent}) type to remove\n\t * @param {function} listener - The listener function to remove from the event target.\n\t */\n removeEventListener(chart, type, listener) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * @returns {number} the current devicePixelRatio of the device this platform is connected to.\n\t */\n getDevicePixelRatio() {\n return 1;\n }\n\n /**\n\t * Returns the maximum size in pixels of given canvas element.\n\t * @param {HTMLCanvasElement} element\n\t * @param {number} [width] - content width of parent element\n\t * @param {number} [height] - content height of parent element\n\t * @param {number} [aspectRatio] - aspect ratio to maintain\n\t */\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n\n /**\n\t * @param {HTMLCanvasElement} canvas\n\t * @returns {boolean} true if the canvas is attached to the platform, false if not.\n\t */\n isAttached(canvas) { // eslint-disable-line no-unused-vars\n return true;\n }\n\n /**\n * Updates config with platform specific requirements\n * @param {import('../core/core.config.js').default} config\n */\n updateConfig(config) { // eslint-disable-line no-unused-vars\n // no-op\n }\n}\n","/**\n * Platform fallback implementation (minimal).\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\n */\n\nimport BasePlatform from './platform.base.js';\n\n/**\n * Platform class for charts without access to the DOM or to many element properties\n * This platform is used by default for any chart passed an OffscreenCanvas.\n * @extends BasePlatform\n */\nexport default class BasicPlatform extends BasePlatform {\n acquireContext(item) {\n // To prevent canvas fingerprinting, some add-ons undefine the getContext\n // method, for example: https://github.com/kkapsner/CanvasBlocker\n // https://github.com/chartjs/Chart.js/issues/2807\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\n","/**\n * Chart.Platform implementation for targeting a web browser\n */\n\nimport BasePlatform from './platform.base.js';\nimport {_getParentNode, getRelativePosition, supportsEventListenerOptions, readUsedSize, getMaximumSize} from '../helpers/helpers.dom.js';\nimport {throttled} from '../helpers/helpers.extras.js';\nimport {isNullOrUndef} from '../helpers/helpers.core.js';\n\n/**\n * @typedef { import('../core/core.controller.js').default } Chart\n */\n\nconst EXPANDO_KEY = '$chartjs';\n\n/**\n * DOM event types -> Chart.js event types.\n * Note: only events with different types are mapped.\n * @see https://developer.mozilla.org/en-US/docs/Web/Events\n */\nconst EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\n\nconst isNullOrEmpty = value => value === null || value === '';\n/**\n * Initializes the canvas style and render size without modifying the canvas display size,\n * since responsiveness is handled by the controller.resize() method. The config is used\n * to determine the aspect ratio to apply in case no explicit height has been specified.\n * @param {HTMLCanvasElement} canvas\n * @param {number} [aspectRatio]\n */\nfunction initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n\n // NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\n // returns null or '' if no explicit value has been set to the canvas attribute.\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n\n // Chart.js modifies some canvas values that we want to restore on destroy\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n\n // Force canvas to display as block to avoid extra space caused by inline\n // elements, which would interfere with the responsive resize process.\n // https://github.com/chartjs/Chart.js/issues/2538\n style.display = style.display || 'block';\n // Include possible borders in the size\n style.boxSizing = style.boxSizing || 'border-box';\n\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n // If no explicit render height and style height, let's apply the aspect ratio,\n // which one can be specified by the user but also by charts as default option\n // (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n\n return canvas;\n}\n\n// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\n// https://github.com/chartjs/Chart.js/issues/4287\nconst eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\n\nfunction addListener(node, type, listener) {\n if (node) {\n node.addEventListener(type, listener, eventListenerOptions);\n }\n}\n\nfunction removeListener(chart, type, listener) {\n if (chart && chart.canvas) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n }\n}\n\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const {x, y} = getRelativePosition(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null,\n };\n}\n\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList) {\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\n\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\n\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\n\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\n\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart) => {\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\n\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\n\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\n\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height) => {\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n // If the container size shrank during chart resize, let's assume\n // scrollbar appeared. So we resize again with the scrollbar visible -\n // effectively making chart smaller and the scrollbar hidden again.\n // Because we are inside `throttled`, and currently `ticking`, scroll\n // events are ignored during this whole 2 resize process.\n // If we assumed wrong and something else happened, we are resizing\n // twice in a frame (potential performance issue)\n listener();\n }\n }, window);\n\n // @ts-ignore until https://github.com/microsoft/TypeScript/issues/37861 implemented\n const observer = new ResizeObserver(entries => {\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n // When its container's display is set to 'none' the callback will be called with a\n // size of (0, 0), which will cause the chart to lose its original height, so skip\n // resizing in such case.\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n\n return observer;\n}\n\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\n\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled((event) => {\n // This case can occur if the chart is destroyed while waiting\n // for the throttled function to occur. We prevent crashes by checking\n // for a destroyed chart\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart);\n\n addListener(canvas, type, proxy);\n\n return proxy;\n}\n\n/**\n * Platform class for charts that can access the DOM and global window/document properties\n * @extends BasePlatform\n */\nexport default class DomPlatform extends BasePlatform {\n\n /**\n\t * @param {HTMLCanvasElement} canvas\n\t * @param {number} [aspectRatio]\n\t * @return {CanvasRenderingContext2D|null}\n\t */\n acquireContext(canvas, aspectRatio) {\n // To prevent canvas fingerprinting, some add-ons undefine the getContext\n // method, for example: https://github.com/kkapsner/CanvasBlocker\n // https://github.com/chartjs/Chart.js/issues/2807\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n\n // `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the canvas is\n // inside an iframe or when running in a protected environment. We could guess the\n // types from their toString() value but let's keep things flexible and assume it's\n // a sufficient condition if the canvas has a context2D which has canvas as `canvas`.\n // https://github.com/chartjs/Chart.js/issues/3887\n // https://github.com/chartjs/Chart.js/issues/4102\n // https://github.com/chartjs/Chart.js/issues/4152\n if (context && context.canvas === canvas) {\n // Load platform resources on first chart creation, to make it possible to\n // import the library before setting platform options.\n initCanvas(canvas, aspectRatio);\n return context;\n }\n\n return null;\n }\n\n /**\n\t * @param {CanvasRenderingContext2D} context\n\t */\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n\n const initial = canvas[EXPANDO_KEY].initial;\n ['height', 'width'].forEach((prop) => {\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n\n const style = initial.style || {};\n Object.keys(style).forEach((key) => {\n canvas.style[key] = style[key];\n });\n\n // The canvas render size might have been changed (and thus the state stack discarded),\n // we can't use save() and restore() to restore the initial state. So make sure that at\n // least the canvas context is reset to the default state by setting the canvas width.\n // https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html\n // eslint-disable-next-line no-self-assign\n canvas.width = canvas.width;\n\n delete canvas[EXPANDO_KEY];\n return true;\n }\n\n /**\n\t *\n\t * @param {Chart} chart\n\t * @param {string} type\n\t * @param {function} listener\n\t */\n addEventListener(chart, type, listener) {\n // Can have only one listener per type, so make sure previous is removed\n this.removeEventListener(chart, type);\n\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n\n\n /**\n\t * @param {Chart} chart\n\t * @param {string} type\n\t */\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n\n if (!proxy) {\n return;\n }\n\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n\n /**\n\t * @param {HTMLCanvasElement} canvas\n\t * @param {number} [width] - content width of parent element\n\t * @param {number} [height] - content height of parent element\n\t * @param {number} [aspectRatio] - aspect ratio to maintain\n\t */\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n\n /**\n\t * @param {HTMLCanvasElement} canvas\n\t */\n isAttached(canvas) {\n const container = canvas && _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n","import {_isDomSupported} from '../helpers/index.js';\nimport BasePlatform from './platform.base.js';\nimport BasicPlatform from './platform.basic.js';\nimport DomPlatform from './platform.dom.js';\n\nexport function _detectPlatform(canvas) {\n if (!_isDomSupported() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nexport {BasePlatform, BasicPlatform, DomPlatform};\n","import type {AnyObject} from '../types/basic.js';\nimport type {Point} from '../types/geometric.js';\nimport type {Animation} from '../types/animation.js';\nimport {isNumber} from '../helpers/helpers.math.js';\n\nexport default class Element {\n\n static defaults = {};\n static defaultRoutes = undefined;\n\n x: number;\n y: number;\n active = false;\n options: O;\n $animations: Record;\n\n tooltipPosition(useFinalPosition: boolean): Point {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y} as Point;\n }\n\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n\n /**\n * Gets the current or final value of each prop. Can return extra properties (whole object).\n * @param props - properties to get\n * @param [final] - get the final value (animation target)\n */\n getProps

(props: P, final?: boolean): Pick;\n getProps

(props: P[], final?: boolean): Partial>;\n getProps(props: string[], final?: boolean): Partial> {\n const anims = this.$animations;\n if (!final || !anims) {\n // let's not create an object, if not needed\n return this as Record;\n }\n const ret: Record = {};\n props.forEach((prop) => {\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop as string];\n });\n return ret;\n }\n}\n","import {isNullOrUndef, valueOrDefault} from '../helpers/helpers.core.js';\nimport {_factorize} from '../helpers/helpers.math.js';\n\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef {{value:number | string, label?:string, major?:boolean, $context?:any}} Tick\n */\n\n/**\n * Returns a subset of ticks to be plotted to avoid overlapping labels.\n * @param {import('./core.scale.js').default} scale\n * @param {Tick[]} ticks\n * @return {Tick[]}\n * @private\n */\nexport function autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const determinedMaxTicks = determineMaxTicks(scale);\n const ticksLimit = Math.min(tickOpts.maxTicksLimit || determinedMaxTicks, determinedMaxTicks);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n\n // If there are too many major ticks to display them all\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\n\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\n\n/**\n * @param {number[]} majorIndices\n * @param {Tick[]} ticks\n * @param {number} ticksLimit\n */\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n\n // If the major ticks are evenly spaced apart, place the minor ticks\n // so that they divide the major ticks into even chunks\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n\n const factors = _factorize(evenMajorSpacing);\n for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\n\n/**\n * @param {Tick[]} ticks\n */\nfunction getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\n\n/**\n * @param {Tick[]} ticks\n * @param {Tick[]} newTicks\n * @param {number[]} majorIndices\n * @param {number} spacing\n */\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n\n spacing = Math.ceil(spacing);\n for (i = 0; i < ticks.length; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\n\n/**\n * @param {Tick[]} ticks\n * @param {Tick[]} newTicks\n * @param {number} spacing\n * @param {number} [majorStart]\n * @param {number} [majorEnd]\n */\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n\n next = start;\n\n while (next < 0) {\n count++;\n next = Math.round(start + count * spacing);\n }\n\n for (i = Math.max(start, 0); i < end; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\n\n\n/**\n * @param {number[]} arr\n */\nfunction getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n\n if (len < 2) {\n return false;\n }\n\n for (diff = arr[0], i = 1; i < len; ++i) {\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\n","import Element from './core.element.js';\nimport {_alignPixel, _measureText, renderText, clipArea, unclipArea} from '../helpers/helpers.canvas.js';\nimport {callback as call, each, finiteOrDefault, isArray, isFinite, isNullOrUndef, isObject, valueOrDefault} from '../helpers/helpers.core.js';\nimport {toDegrees, toRadians, _int16Range, _limitValue, HALF_PI} from '../helpers/helpers.math.js';\nimport {_alignStartEnd, _toLeftRightCenter} from '../helpers/helpers.extras.js';\nimport {createContext, toFont, toPadding, _addGrace} from '../helpers/helpers.options.js';\nimport {autoSkip} from './core.scale.autoskip.js';\n\nconst reverseAlign = (align) => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nconst getTicksLimit = (ticksLength, maxTicksLimit) => Math.min(maxTicksLimit || ticksLength, ticksLength);\n\n/**\n * @typedef { import('../types/index.js').Chart } Chart\n * @typedef {{value:number | string, label?:string, major?:boolean, $context?:any}} Tick\n */\n\n/**\n * Returns a new array containing numItems from arr\n * @param {any[]} arr\n * @param {number} numItems\n */\nfunction sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n\n for (; i < len; i += increment) {\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\n\n/**\n * @param {Scale} scale\n * @param {number} index\n * @param {boolean} offsetGridLines\n */\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n\n // Return undefined if the pixel is out of the range\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\n\n/**\n * @param {object} caches\n * @param {number} length\n */\nfunction garbageCollect(caches, length) {\n each(caches, (cache) => {\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for (i = 0; i < gcLen; ++i) {\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\n\n/**\n * @param {object} options\n */\nfunction getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\n\n/**\n * @param {object} options\n */\nfunction getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n\n return (lines * font.lineHeight) + padding.height;\n}\n\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\n\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\n\nfunction titleAlign(align, position, reverse) {\n /** @type {CanvasTextAlign} */\n let ret = _toLeftRightCenter(align);\n if ((reverse && position !== 'right') || (!reverse && position === 'right')) {\n ret = reverseAlign(ret);\n }\n return ret;\n}\n\nfunction titleArgs(scale, offset, position, align) {\n const {top, left, bottom, right, chart} = scale;\n const {chartArea, scales} = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {titleX, titleY, maxWidth, rotation};\n}\n\nexport default class Scale extends Element {\n\n // eslint-disable-next-line max-statements\n constructor(cfg) {\n super();\n\n /** @type {string} */\n this.id = cfg.id;\n /** @type {string} */\n this.type = cfg.type;\n /** @type {any} */\n this.options = undefined;\n /** @type {CanvasRenderingContext2D} */\n this.ctx = cfg.ctx;\n /** @type {Chart} */\n this.chart = cfg.chart;\n\n // implements box\n /** @type {number} */\n this.top = undefined;\n /** @type {number} */\n this.bottom = undefined;\n /** @type {number} */\n this.left = undefined;\n /** @type {number} */\n this.right = undefined;\n /** @type {number} */\n this.width = undefined;\n /** @type {number} */\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n /** @type {number} */\n this.maxWidth = undefined;\n /** @type {number} */\n this.maxHeight = undefined;\n /** @type {number} */\n this.paddingTop = undefined;\n /** @type {number} */\n this.paddingBottom = undefined;\n /** @type {number} */\n this.paddingLeft = undefined;\n /** @type {number} */\n this.paddingRight = undefined;\n\n // scale-specific properties\n /** @type {string=} */\n this.axis = undefined;\n /** @type {number=} */\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n /** @type {Tick[]} */\n this.ticks = [];\n /** @type {object[]|null} */\n this._gridLineItems = null;\n /** @type {object[]|null} */\n this._labelItems = null;\n /** @type {object|null} */\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n /** @type {number} */\n this._startPixel = undefined;\n /** @type {number} */\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n\n /**\n\t * @param {any} options\n\t * @since 3.0\n\t */\n init(options) {\n this.options = options.setContext(this.getContext());\n\n this.axis = options.axis;\n\n // parse min/max value, so we can properly determine min/max for other scales\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n\n /**\n\t * Parse a supported input value to internal representation.\n\t * @param {*} raw\n\t * @param {number} [index]\n\t * @since 3.0\n\t */\n parse(raw, index) { // eslint-disable-line no-unused-vars\n return raw;\n }\n\n /**\n\t * @return {{min: number, max: number, minDefined: boolean, maxDefined: boolean}}\n\t * @protected\n\t * @since 3.0\n\t */\n getUserBounds() {\n let {_userMin, _userMax, _suggestedMin, _suggestedMax} = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isFinite(_userMin),\n maxDefined: isFinite(_userMax)\n };\n }\n\n /**\n\t * @param {boolean} canStack\n\t * @return {{min: number, max: number}}\n\t * @protected\n\t * @since 3.0\n\t */\n getMinMax(canStack) {\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n let range;\n\n if (minDefined && maxDefined) {\n return {min, max};\n }\n\n const metas = this.getMatchingVisibleMetas();\n for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n\n // Make sure min <= max when only min or max is defined by user and the data is outside that range\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n\n /**\n\t * Get the padding needed for the scale\n\t * @return {{top: number, left: number, bottom: number, right: number}} the necessary padding\n\t * @private\n\t */\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n\n /**\n\t * Returns the scale tick objects\n\t * @return {Tick[]}\n\t * @since 2.7\n\t */\n getTicks() {\n return this.ticks;\n }\n\n /**\n\t * @return {string[]}\n\t */\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n\n /**\n * @return {import('../types.js').LabelItem[]}\n */\n getLabelItems(chartArea = this.chart.chartArea) {\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n return items;\n }\n\n // When a new layout is created, reset the data limits cache\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n\n // These methods are ordered by lifecycle. Utilities then follow.\n // Any function defined here is inherited by all scale types.\n // Any function can be extended by the scale type\n\n beforeUpdate() {\n call(this.options.beforeUpdate, [this]);\n }\n\n /**\n\t * @param {number} maxWidth - the max width in pixels\n\t * @param {number} maxHeight - the max height in pixels\n\t * @param {{top: number, left: number, bottom: number, right: number}} margins - the space between the edge of the other scales and edge of the chart\n\t * This space comes from two sources:\n\t * - padding - space that's required to show the labels at the edges of the scale\n\t * - thickness of scales or legends in another orientation\n\t */\n update(maxWidth, maxHeight, margins) {\n const {beginAtZero, grace, ticks: tickOpts} = this.options;\n const sampleSize = tickOpts.sampleSize;\n\n // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n this.beforeUpdate();\n\n // Absorb the master measurements\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n\n // Dimensions\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n\n this._maxLength = this.isHorizontal()\n ? this.width + margins.left + margins.right\n : this.height + margins.top + margins.bottom;\n\n // Data min/max\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n\n this.beforeBuildTicks();\n\n this.ticks = this.buildTicks() || [];\n\n // Allow modification of ticks in callback.\n this.afterBuildTicks();\n\n // Compute tick rotation and fit using a sampled subset of labels\n // We generally don't need to compute the size of every single label for determining scale size\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n\n // configure is called twice, once here, once from core.controller.updateLayout.\n // Here we haven't been positioned yet, but dimensions are correct.\n // Variables set in configure are needed for calculateLabelRotation, and\n // it's ok that coordinates are not correct there, only dimensions matter.\n this.configure();\n\n // Tick Rotation\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation(); // Preconditions: number of ticks and sizes of largest labels must be calculated beforehand\n this.afterCalculateLabelRotation();\n\n // Auto-skip\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n this.afterAutoSkip();\n }\n\n if (samplingEnabled) {\n // Generate labels using all non-skipped ticks\n this._convertTicksToLabels(this.ticks);\n }\n\n this.beforeFit();\n this.fit(); // Preconditions: label rotation and label sizes must be calculated beforehand\n this.afterFit();\n\n // IMPORTANT: after this point, we consider that `this.ticks` will NEVER change!\n\n this.afterUpdate();\n }\n\n /**\n\t * @protected\n\t */\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n // by default vertical scales are from bottom to top, so pixels are reversed\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n\n afterUpdate() {\n call(this.options.afterUpdate, [this]);\n }\n\n //\n\n beforeSetDimensions() {\n call(this.options.beforeSetDimensions, [this]);\n }\n setDimensions() {\n // Set the unconstrained dimension before label rotation\n if (this.isHorizontal()) {\n // Reset position before calculating rotation\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n\n // Reset position before calculating rotation\n this.top = 0;\n this.bottom = this.height;\n }\n\n // Reset padding\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n call(this.options.afterSetDimensions, [this]);\n }\n\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n call(this.options[name], [this]);\n }\n\n // Data limits\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n\n //\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n /**\n\t * @return {object[]} the ticks\n\t */\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n\n beforeTickToLabelConversion() {\n call(this.options.beforeTickToLabelConversion, [this]);\n }\n /**\n\t * Convert ticks to label strings\n\t * @param {Tick[]} ticks\n\t */\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n tick = ticks[i];\n tick.label = call(tickOpts.callback, [tick.value, i, ticks], this);\n }\n }\n afterTickToLabelConversion() {\n call(this.options.afterTickToLabelConversion, [this]);\n }\n\n //\n\n beforeCalculateLabelRotation() {\n call(this.options.beforeCalculateLabelRotation, [this]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = getTicksLimit(this.ticks.length, options.ticks.maxTicksLimit);\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n\n // Estimate the width of each grid based on the canvas width, the maximum\n // label width and the number of tick intervals\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n\n // Allow 3 pixels x2 padding either side for label readability\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid)\n\t\t\t\t- tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(\n Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)),\n Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))\n ));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n call(this.options.afterCalculateLabelRotation, [this]);\n }\n afterAutoSkip() {}\n\n //\n\n beforeFit() {\n call(this.options.beforeFit, [this]);\n }\n fit() {\n // Reset\n const minSize = {\n width: 0,\n height: 0\n };\n\n const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight; // fill all the height\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n\n // Don't bother fitting the ticks if we are not showing the labels\n if (tickOpts.display && this.ticks.length) {\n const {first, last, widest, highest} = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n\n if (isHorizontal) {\n // A horizontal axis is more constrained by the height.\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n // A vertical axis is more constrained by the width. Labels are the\n // dominant factor here, so get that length first and account for padding\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n\n this._handleMargins();\n\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n\n _calculatePadding(first, last, sin, cos) {\n const {ticks: {align, padding}, position} = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n\n // Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned\n // which means that the right padding is dominated by the font height\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else if (align !== 'inner') {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n\n // Adjust padding taking into account changes in offsets\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n\n /**\n\t * Handle margins and padding interactions\n\t * @private\n\t */\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n\n afterFit() {\n call(this.options.afterFit, [this]);\n }\n\n // Shared Methods\n /**\n\t * @return {boolean}\n\t */\n isHorizontal() {\n const {axis, position} = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n /**\n\t * @return {boolean}\n\t */\n isFullSize() {\n return this.options.fullSize;\n }\n\n /**\n\t * @param {Tick[]} ticks\n\t * @private\n\t */\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n\n this.generateTickLabels(ticks);\n\n // Ticks should be skipped when callback returns null or undef, so lets remove those.\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n\n this.afterTickToLabelConversion();\n }\n\n /**\n\t * @return {{ first: object, last: object, widest: object, highest: object, widths: Array, heights: array }}\n\t * @private\n\t */\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length, this.options.ticks.maxTicksLimit);\n }\n\n return labelSizes;\n }\n\n /**\n\t * Returns {width, height, offset} objects for the first, last, widest, highest tick\n\t * labels where offset indicates the anchor point offset from the top in pixels.\n\t * @return {{ first: object, last: object, widest: object, highest: object, widths: Array, heights: array }}\n\t * @private\n\t */\n _computeLabelSizes(ticks, length, maxTicksLimit) {\n const {ctx, _longestTextCache: caches} = this;\n const widths = [];\n const heights = [];\n const increment = Math.floor(length / getTicksLimit(length, maxTicksLimit));\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n\n for (i = 0; i < length; i += increment) {\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n // Undefined labels and arrays should not be measured\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n // if it is an array let's measure each element\n for (j = 0, jlen = label.length; j < jlen; ++j) {\n nestedLabel = /** @type {string} */ (label[j]);\n // Undefined labels and arrays should not be measured\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n\n const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0});\n\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights,\n };\n }\n\n /**\n\t * Used to get the label to display in the tooltip for the given value\n\t * @param {*} value\n\t * @return {string}\n\t */\n getLabelForValue(value) {\n return value;\n }\n\n /**\n\t * Returns the location of the given data point. Value can either be an index or a numerical value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {*} value\n\t * @param {number} [index]\n\t * @return {number}\n\t */\n getPixelForValue(value, index) { // eslint-disable-line no-unused-vars\n return NaN;\n }\n\n /**\n\t * Used to get the data value from a given pixel. This is the inverse of getPixelForValue\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {number} pixel\n\t * @return {*}\n\t */\n getValueForPixel(pixel) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * Returns the location of the tick at the given index\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {number} index\n\t * @return {number}\n\t */\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n\n /**\n\t * Utility for getting the pixel location of a percentage of scale\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {number} decimal\n\t * @return {number}\n\t */\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n\n /**\n\t * @param {number} pixel\n\t * @return {number}\n\t */\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n\n /**\n\t * Returns the pixel for the minimum chart value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @return {number}\n\t */\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n\n /**\n\t * @return {number}\n\t */\n getBaseValue() {\n const {min, max} = this;\n\n return min < 0 && max < 0 ? max :\n min > 0 && max > 0 ? min :\n 0;\n }\n\n /**\n\t * @protected\n\t */\n getContext(index) {\n const ticks = this.ticks || [];\n\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context ||\n\t\t\t\t(tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context ||\n\t\t\t(this.$context = createScaleContext(this.chart.getContext(), this));\n }\n\n /**\n\t * @return {number}\n\t * @private\n\t */\n _tickSize() {\n const optionTicks = this.options.ticks;\n\n // Calculate space needed by label in axis direction.\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n\n // Calculate space needed for 1 tick in axis direction.\n return this.isHorizontal()\n ? h * cos > w * sin ? w / cos : h / sin\n : h * sin < w * cos ? h / cos : w / sin;\n }\n\n /**\n\t * @return {boolean}\n\t * @private\n\t */\n _isVisible() {\n const display = this.options.display;\n\n if (display !== 'auto') {\n return !!display;\n }\n\n return this.getMatchingVisibleMetas().length > 0;\n }\n\n /**\n\t * @private\n\t */\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const {grid, position, border} = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = borderOpts.display ? borderOpts.width : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for (i = 0; i < ticksLength; i += step) {\n const context = this.getContext(i);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = optsAtIndexBorder.dash || [];\n const borderDashOffset = optsAtIndexBorder.dashOffset;\n\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n\n lineValue = getPixelForGridLine(this, i, offset);\n\n // Skip if the pixel is out of the range\n if (lineValue === undefined) {\n continue;\n }\n\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset,\n });\n }\n\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n\n return items;\n }\n\n /**\n\t * @private\n\t */\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const {position, ticks: optionTicks} = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const {align, crossAlign, padding, mirror} = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = this.chart.scales[positionAxisID].getPixelForValue(value);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n\n const labelSizes = this._getLabelSizes();\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n label = tick.label;\n\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n let tickTextAlign = textAlign;\n\n if (isHorizontal) {\n x = pixel;\n\n if (textAlign === 'inner') {\n if (i === ilen - 1) {\n tickTextAlign = !this.options.reverse ? 'right' : 'left';\n } else if (i === 0) {\n tickTextAlign = !this.options.reverse ? 'left' : 'right';\n } else {\n tickTextAlign = 'center';\n }\n }\n\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n // eslint-disable-next-line no-lonely-if\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n if (rotation !== 0 && !optsAtIndex.showLabelBackdrop) {\n x += (lineHeight / 2) * Math.sin(rotation);\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n\n let backdrop;\n\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n\n let top = textOffset - labelPadding.top;\n let left = 0 - labelPadding.left;\n\n switch (textBaseline) {\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n default:\n break;\n }\n\n switch (textAlign) {\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n case 'inner':\n if (i === ilen - 1) {\n left -= width;\n } else if (i > 0) {\n left -= width / 2;\n }\n break;\n default:\n break;\n }\n\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n\n color: optsAtIndex.backdropColor,\n };\n }\n\n items.push({\n label,\n font,\n textOffset,\n options: {\n rotation,\n color,\n strokeColor,\n strokeWidth,\n textAlign: tickTextAlign,\n textBaseline,\n translation: [x, y],\n backdrop,\n }\n });\n }\n\n return items;\n }\n\n _getXAxisLabelAlignment() {\n const {position, ticks} = this.options;\n const rotation = -toRadians(this.labelRotation);\n\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n\n let align = 'center';\n\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n } else if (ticks.align === 'inner') {\n align = 'inner';\n }\n\n return align;\n }\n\n _getYAxisLabelAlignment(tl) {\n const {position, ticks: {crossAlign, mirror, padding}} = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n\n let textAlign;\n let x;\n\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += (widest / 2);\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n\n return {textAlign, x};\n }\n\n /**\n\t * @private\n\t */\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n\n const chart = this.chart;\n const position = this.options.position;\n\n if (position === 'left' || position === 'right') {\n return {top: 0, left: this.left, bottom: chart.height, right: this.right};\n } if (position === 'top' || position === 'bottom') {\n return {top: this.top, left: 0, bottom: this.bottom, right: chart.width};\n }\n }\n\n /**\n * @protected\n */\n drawBackground() {\n const {ctx, options: {backgroundColor}, left, top, width, height} = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex(t => t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n\n /**\n\t * @protected\n\t */\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n\n const drawLine = (p1, p2, style) => {\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n\n if (grid.display) {\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n\n if (grid.drawOnChartArea) {\n drawLine(\n {x: item.x1, y: item.y1},\n {x: item.x2, y: item.y2},\n item\n );\n }\n\n if (grid.drawTicks) {\n drawLine(\n {x: item.tx1, y: item.ty1},\n {x: item.tx2, y: item.ty2},\n {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n }\n );\n }\n }\n }\n }\n\n /**\n\t * @protected\n\t */\n drawBorder() {\n const {chart, ctx, options: {border, grid}} = this;\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = border.display ? borderOpts.width : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.width;\n ctx.strokeStyle = borderOpts.color;\n\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n\n ctx.restore();\n }\n\n /**\n\t * @protected\n\t */\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n\n if (!optionTicks.display) {\n return;\n }\n\n const ctx = this.ctx;\n\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n\n const items = this.getLabelItems(chartArea);\n for (const item of items) {\n const renderTextOptions = item.options;\n const tickFont = item.font;\n const label = item.label;\n const y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, renderTextOptions);\n }\n\n if (area) {\n unclipArea(ctx);\n }\n }\n\n /**\n\t * @protected\n\t */\n drawTitle() {\n const {ctx, options: {position, title, reverse}} = this;\n\n if (!title.display) {\n return;\n }\n\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n\n const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align);\n\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n\n /**\n\t * @return {object[]}\n\t * @private\n\t */\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n const bz = valueOrDefault(opts.border && opts.border.z, 0);\n\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n // backward compatibility: draw has been overridden by custom scale\n return [{\n z: tz,\n draw: (chartArea) => {\n this.draw(chartArea);\n }\n }];\n }\n\n return [{\n z: gz,\n draw: (chartArea) => {\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n }, {\n z: bz,\n draw: () => {\n this.drawBorder();\n }\n }, {\n z: tz,\n draw: (chartArea) => {\n this.drawLabels(chartArea);\n }\n }];\n }\n\n /**\n\t * Returns visible dataset metas that are attached to this scale\n\t * @param {string} [type] - if specified, also filter by dataset type\n\t * @return {object[]}\n\t */\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n\n /**\n\t * @param {number} index\n\t * @return {object}\n\t * @protected\n \t */\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n\n /**\n * @protected\n */\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\n","import {merge} from '../helpers/index.js';\nimport defaults, {overrides} from './core.defaults.js';\n\n/**\n * @typedef {{id: string, defaults: any, overrides?: any, defaultRoutes: any}} IChartComponent\n */\n\nexport default class TypedRegistry {\n constructor(type, scope, override) {\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n\n /**\n\t * @param {IChartComponent} item\n\t * @returns {string} The scope where items defaults were registered to.\n\t */\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n\n if (isIChartComponent(proto)) {\n // Make sure the parent is registered and note the scope where its defaults are.\n parentScope = this.register(proto);\n }\n\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n\n if (id in items) {\n // already registered\n return scope;\n }\n\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n\n return scope;\n }\n\n /**\n\t * @param {string} id\n\t * @returns {object?}\n\t */\n get(id) {\n return this.items[id];\n }\n\n /**\n\t * @param {IChartComponent} item\n\t */\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n\n if (id in items) {\n delete items[id];\n }\n\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\n\nfunction registerDefaults(item, scope, parentScope) {\n // Inherit the parent's defaults and keep existing defaults\n const itemDefaults = merge(Object.create(null), [\n parentScope ? defaults.get(parentScope) : {},\n defaults.get(scope),\n item.defaults\n ]);\n\n defaults.set(scope, itemDefaults);\n\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\n\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach(property => {\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [scope].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\n\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n","import DatasetController from './core.datasetController.js';\nimport Element from './core.element.js';\nimport Scale from './core.scale.js';\nimport TypedRegistry from './core.typedRegistry.js';\nimport {each, callback as call, _capitalize} from '../helpers/helpers.core.js';\n\n/**\n * Please use the module's default export which provides a singleton instance\n * Note: class is exported for typedoc\n */\nexport class Registry {\n constructor() {\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n // Order is important, Scale has Element in prototype chain,\n // so Scales must be before Elements. Plugins are a fallback, so not listed here.\n this._typedRegistries = [this.controllers, this.scales, this.elements];\n }\n\n /**\n\t * @param {...any} args\n\t */\n add(...args) {\n this._each('register', args);\n }\n\n remove(...args) {\n this._each('unregister', args);\n }\n\n /**\n\t * @param {...typeof DatasetController} args\n\t */\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n\n /**\n\t * @param {...typeof Element} args\n\t */\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n\n /**\n\t * @param {...any} args\n\t */\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n\n /**\n\t * @param {...typeof Scale} args\n\t */\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n\n /**\n\t * @param {string} id\n\t * @returns {typeof DatasetController}\n\t */\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n\n /**\n\t * @param {string} id\n\t * @returns {typeof Element}\n\t */\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n\n /**\n\t * @param {string} id\n\t * @returns {object}\n\t */\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n\n /**\n\t * @param {string} id\n\t * @returns {typeof Scale}\n\t */\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n\n /**\n\t * @param {...typeof DatasetController} args\n\t */\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n\n /**\n\t * @param {...typeof Element} args\n\t */\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n\n /**\n\t * @param {...any} args\n\t */\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n\n /**\n\t * @param {...typeof Scale} args\n\t */\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n\n /**\n\t * @private\n\t */\n _each(method, args, typedRegistry) {\n [...args].forEach(arg => {\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || (reg === this.plugins && arg.id)) {\n this._exec(method, reg, arg);\n } else {\n // Handle loopable args\n // Use case:\n // import * as plugins from './plugins.js';\n // Chart.register(plugins);\n each(arg, item => {\n // If there are mixed types in the loopable, make sure those are\n // registered in correct registry\n // Use case: (treemap exporting controller, elements etc)\n // import * as treemap from 'chartjs-chart-treemap.js';\n // Chart.register(treemap);\n\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n\n /**\n\t * @private\n\t */\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n call(component['before' + camelMethod], [], component); // beforeRegister / beforeUnregister\n registry[method](component);\n call(component['after' + camelMethod], [], component); // afterRegister / afterUnregister\n }\n\n /**\n\t * @private\n\t */\n _getRegistryForType(type) {\n for (let i = 0; i < this._typedRegistries.length; i++) {\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n // plugins is the fallback registry\n return this.plugins;\n }\n\n /**\n\t * @private\n\t */\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n\n}\n\n// singleton instance\nexport default /* #__PURE__ */ new Registry();\n","import registry from './core.registry.js';\nimport {callback as callCallback, isNullOrUndef, valueOrDefault} from '../helpers/helpers.core.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef { import('../plugins/plugin.tooltip.js').default } Tooltip\n */\n\n/**\n * @callback filterCallback\n * @param {{plugin: object, options: object}} value\n * @param {number} [index]\n * @param {array} [array]\n * @param {object} [thisArg]\n * @return {boolean}\n */\n\n\nexport default class PluginService {\n constructor() {\n this._init = undefined;\n }\n\n /**\n\t * Calls enabled plugins for `chart` on the specified hook and with the given args.\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\n\t * returned value can be used, for instance, to interrupt the current action.\n\t * @param {Chart} chart - The chart instance for which plugins should be called.\n\t * @param {string} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\n\t * @param {object} [args] - Extra arguments to apply to the hook call.\n * @param {filterCallback} [filter] - Filtering function for limiting which plugins are notified\n\t * @returns {boolean} false if any of the plugins return false, else returns true.\n\t */\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n\n if (this._init === undefined) { // Do not trigger events before install\n return;\n }\n\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n this._init = undefined; // Do not trigger events after uninstall\n }\n return result;\n }\n\n /**\n\t * @private\n\t */\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors) {\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [chart, args, descriptor.options];\n if (callCallback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n\n return true;\n }\n\n invalidate() {\n // When plugins are registered, there is the possibility of a double\n // invalidate situation. In this case, we only want to invalidate once.\n // If we invalidate multiple times, the `_oldCache` is lost and all of the\n // plugins are restarted without being correctly stopped.\n // See https://github.com/chartjs/Chart.js/issues/8147\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n\n /**\n\t * @param {Chart} chart\n\t * @private\n\t */\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n\n const descriptors = this._cache = this._createDescriptors(chart);\n\n this._notifyStateChanges(chart);\n\n return descriptors;\n }\n\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n // options === false => all plugins are disabled\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n\n /**\n\t * @param {Chart} chart\n\t * @private\n\t */\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\n\n/**\n * @param {import('./core.config.js').default} config\n */\nfunction allPlugins(config) {\n const localIds = {};\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for (let i = 0; i < keys.length; i++) {\n plugins.push(registry.getPlugin(keys[i]));\n }\n\n const local = config.plugins || [];\n for (let i = 0; i < local.length; i++) {\n const plugin = local[i];\n\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n localIds[plugin.id] = true;\n }\n }\n\n return {plugins, localIds};\n}\n\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\n\nfunction createDescriptors(chart, {plugins, localIds}, options, all) {\n const result = [];\n const context = chart.getContext();\n\n for (const plugin of plugins) {\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, {plugin, local: localIds[id]}, opts, context)\n });\n }\n\n return result;\n}\n\nfunction pluginOpts(config, {plugin, local}, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n if (local && plugin.defaults) {\n // make sure plugin defaults are in scopes for local (not registered) plugins\n scopes.push(plugin.defaults);\n }\n return config.createResolver(scopes, context, [''], {\n // These are just defaults that plugins can override\n scriptable: false,\n indexable: false,\n allKeys: true\n });\n}\n","import defaults, {overrides, descriptors} from './core.defaults.js';\nimport {mergeIf, resolveObjectKey, isArray, isFunction, valueOrDefault, isObject} from '../helpers/helpers.core.js';\nimport {_attachContext, _createResolver, _descriptors} from '../helpers/helpers.config.js';\n\nexport function getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\n\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\n\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\n\nfunction idMatchesAxis(id) {\n if (id === 'x' || id === 'y' || id === 'r') {\n return id;\n }\n}\n\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\n\nexport function determineAxis(id, ...scaleOptions) {\n if (idMatchesAxis(id)) {\n return id;\n }\n for (const opts of scaleOptions) {\n const axis = opts.axis\n || axisFromPosition(opts.position)\n || id.length > 1 && idMatchesAxis(id[0].toLowerCase());\n if (axis) {\n return axis;\n }\n }\n throw new Error(`Cannot determine type of '${id}' axis. Please provide 'axis' or 'position' option.`);\n}\n\nfunction getAxisFromDataset(id, axis, dataset) {\n if (dataset[axis + 'AxisID'] === id) {\n return {axis};\n }\n}\n\nfunction retrieveAxisFromDatasets(id, config) {\n if (config.data && config.data.datasets) {\n const boundDs = config.data.datasets.filter((d) => d.xAxisID === id || d.yAxisID === id);\n if (boundDs.length) {\n return getAxisFromDataset(id, 'x', boundDs[0]) || getAxisFromDataset(id, 'y', boundDs[0]);\n }\n }\n return {};\n}\n\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {scales: {}};\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const scales = Object.create(null);\n\n // First figure out first scale id's per axis.\n Object.keys(configScales).forEach(id => {\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf, retrieveAxisFromDatasets(id, config), defaults.scales[scaleConf.type]);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n scales[id] = mergeIf(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n });\n\n // Then merge dataset defaults to scale configs\n config.data.datasets.forEach(dataset => {\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach(defaultID => {\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n });\n });\n\n // apply scale defaults, if not overridden by dataset defaults\n Object.keys(scales).forEach(key => {\n const scale = scales[key];\n mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n });\n\n return scales;\n}\n\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\n\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\n\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n\n initOptions(config);\n\n return config;\n}\n\nconst keyCache = new Map();\nconst keysCached = new Set();\n\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\n\nconst addIfFound = (set, obj, key) => {\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\n\nexport default class Config {\n constructor(config) {\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n\n get platform() {\n return this._config.platform;\n }\n\n get type() {\n return this._config.type;\n }\n\n set type(type) {\n this._config.type = type;\n }\n\n get data() {\n return this._config.data;\n }\n\n set data(data) {\n this._config.data = initData(data);\n }\n\n get options() {\n return this._config.options;\n }\n\n set options(options) {\n this._config.options = options;\n }\n\n get plugins() {\n return this._config.plugins;\n }\n\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n\n /**\n * Returns the option scope keys for resolving dataset options.\n * These keys do not include the dataset itself, because it is not under options.\n * @param {string} datasetType\n * @return {string[][]}\n */\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType,\n () => [[\n `datasets.${datasetType}`,\n ''\n ]]);\n }\n\n /**\n * Returns the option scope keys for resolving dataset animation options.\n * These keys do not include the dataset itself, because it is not under options.\n * @param {string} datasetType\n * @param {string} transition\n * @return {string[][]}\n */\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`,\n () => [\n [\n `datasets.${datasetType}.transitions.${transition}`,\n `transitions.${transition}`,\n ],\n // The following are used for looking up the `animations` and `animation` keys\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n\n /**\n * Returns the options scope keys for resolving element options that belong\n * to an dataset. These keys do not include the dataset itself, because it\n * is not under options.\n * @param {string} datasetType\n * @param {string} elementType\n * @return {string[][]}\n */\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`,\n () => [[\n `datasets.${datasetType}.elements.${elementType}`,\n `datasets.${datasetType}`,\n `elements.${elementType}`,\n ''\n ]]);\n }\n\n /**\n * Returns the options scope keys for resolving plugin options.\n * @param {{id: string, additionalOptionScopes?: string[]}} plugin\n * @return {string[][]}\n */\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`,\n () => [[\n `plugins.${id}`,\n ...plugin.additionalOptionScopes || [],\n ]]);\n }\n\n /**\n * @private\n */\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n\n /**\n * Resolves the objects from options and defaults for option value resolution.\n * @param {object} mainScope - The main scope object for options\n * @param {string[][]} keyLists - The arrays of keys in resolution order\n * @param {boolean} [resetCache] - reset the cache for this mainScope\n */\n getOptionScopes(mainScope, keyLists, resetCache) {\n const {options, type} = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n\n const scopes = new Set();\n\n keyLists.forEach(keys => {\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach(key => addIfFound(scopes, mainScope, key));\n }\n keys.forEach(key => addIfFound(scopes, options, key));\n keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach(key => addIfFound(scopes, defaults, key));\n keys.forEach(key => addIfFound(scopes, descriptors, key));\n });\n\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n\n /**\n * Returns the option scopes for resolving chart options\n * @return {object[]}\n */\n chartOptionScopes() {\n const {options, type} = this;\n\n return [\n options,\n overrides[type] || {},\n defaults.datasets[type] || {}, // https://github.com/chartjs/Chart.js/issues/8531\n {type},\n defaults,\n descriptors\n ];\n }\n\n /**\n * @param {object[]} scopes\n * @param {string[]} names\n * @param {function|object} context\n * @param {string[]} [prefixes]\n * @return {object}\n */\n resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n const result = {$shared: true};\n const {resolver, subPrefixes} = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n // subResolver is passed to scriptable options. It should not resolve to hover options.\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n\n for (const prop of names) {\n result[prop] = options[prop];\n }\n return result;\n }\n\n /**\n * @param {object[]} scopes\n * @param {object} [context]\n * @param {string[]} [prefixes]\n * @param {{scriptable: boolean, indexable: boolean, allKeys?: boolean}} [descriptorDefaults]\n */\n createResolver(scopes, context, prefixes = [''], descriptorDefaults) {\n const {resolver} = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context)\n ? _attachContext(resolver, context, undefined, descriptorDefaults)\n : resolver;\n }\n}\n\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\n\nconst hasFunction = value => isObject(value)\n && Object.getOwnPropertyNames(value).some((key) => isFunction(value[key]));\n\nfunction needContext(proxy, names) {\n const {isScriptable, isIndexable} = _descriptors(proxy);\n\n for (const prop of names) {\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if ((scriptable && (isFunction(value) || hasFunction(value)))\n || (indexable && isArray(value))) {\n return true;\n }\n }\n return false;\n}\n","import animator from './core.animator.js';\nimport defaults, {overrides} from './core.defaults.js';\nimport Interaction from './core.interaction.js';\nimport layouts from './core.layouts.js';\nimport {_detectPlatform} from '../platform/index.js';\nimport PluginService from './core.plugins.js';\nimport registry from './core.registry.js';\nimport Config, {determineAxis, getIndexAxis} from './core.config.js';\nimport {each, callback as callCallback, uid, valueOrDefault, _elementsEqual, isNullOrUndef, setsEqual, defined, isFunction, _isClickEvent} from '../helpers/helpers.core.js';\nimport {clearCanvas, clipArea, createContext, unclipArea, _isPointInArea, _isDomSupported, retinaScale, getDatasetClipArea} from '../helpers/index.js';\n// @ts-ignore\nimport {version} from '../../package.json';\nimport {debounce} from '../helpers/helpers.extras.js';\n\n/**\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef { import('../types/index.js').Point } Point\n */\n\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x');\n}\n\nfunction compare2Level(l1, l2) {\n return function(a, b) {\n return a[l1] === b[l1]\n ? a[l2] - b[l2]\n : a[l1] - b[l1];\n };\n}\n\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n\n chart.notifyPlugins('afterRender');\n callCallback(animationOptions && animationOptions.onComplete, [context], chart);\n}\n\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callCallback(animationOptions && animationOptions.onProgress, [context], chart);\n}\n\n/**\n * Chart.js can take a string id of a canvas element, a 2d context, or a canvas element itself.\n * Attempt to unwrap the item passed into the chart constructor so that it is a canvas element (if possible).\n */\nfunction getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n // Support for array based queries (such as jQuery)\n item = item[0];\n }\n\n if (item && item.canvas) {\n // Support for any object associated to a canvas (including a context2d)\n item = item.canvas;\n }\n return item;\n}\n\nconst instances = {};\nconst getChart = (key) => {\n const canvas = getCanvas(key);\n return Object.values(instances).filter((c) => c.canvas === canvas).pop();\n};\n\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys) {\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\n\n/**\n * @param {ChartEvent} e\n * @param {ChartEvent|null} lastEvent\n * @param {boolean} inChartArea\n * @param {boolean} isClick\n * @returns {ChartEvent|null}\n */\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\n\nclass Chart {\n\n static defaults = defaults;\n static instances = instances;\n static overrides = overrides;\n static registry = registry;\n static version = version;\n static getChart = getChart;\n\n static register(...items) {\n registry.add(...items);\n invalidatePlugins();\n }\n\n static unregister(...items) {\n registry.remove(...items);\n invalidatePlugins();\n }\n\n // eslint-disable-next-line max-statements\n constructor(item, userConfig) {\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error(\n 'Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' +\n\t\t\t\t' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.'\n );\n }\n\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n // Store the previously used aspect ratio to determine if a resize\n // is needed during updates. Do this after _options is set since\n // aspectRatio uses a getter\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n /** @type {?{attach?: function, detach?: function, resize?: function}} */\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n\n // Add the chart instance to the global namespace\n instances[this.id] = this;\n\n if (!context || !canvas) {\n // The given item is not a compatible context2d element, let's return before finalizing\n // the chart initialization but after setting basic chart / controller properties that\n // can help to figure out that the chart is not valid (e.g chart.canvas !== null);\n // https://github.com/chartjs/Chart.js/issues/2807\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n\n get aspectRatio() {\n const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this;\n if (!isNullOrUndef(aspectRatio)) {\n // If aspectRatio is defined in options, use that.\n return aspectRatio;\n }\n\n if (maintainAspectRatio && _aspectRatio) {\n // If maintainAspectRatio is truthly and we had previously determined _aspectRatio, use that\n return _aspectRatio;\n }\n\n // Calculate\n return height ? width / height : null;\n }\n\n get data() {\n return this.config.data;\n }\n\n set data(data) {\n this.config.data = data;\n }\n\n get options() {\n return this._options;\n }\n\n set options(options) {\n this.config.options = options;\n }\n\n get registry() {\n return registry;\n }\n\n /**\n\t * @private\n\t */\n _initialize() {\n // Before init plugin notification\n this.notifyPlugins('beforeInit');\n\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n\n this.bindEvents();\n\n // After init plugin notification\n this.notifyPlugins('afterInit');\n\n return this;\n }\n\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n\n stop() {\n animator.stop(this);\n return this;\n }\n\n /**\n\t * Resize the chart to its container or to explicit dimensions.\n\t * @param {number} [width]\n\t * @param {number} [height]\n\t */\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {width, height};\n }\n }\n\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n\n this.notifyPlugins('resize', {size: newSize});\n\n callCallback(options.onResize, [this, newSize], this);\n\n if (this.attached) {\n if (this._doResize(mode)) {\n // The resize update is delayed, only draw without updating.\n this.render();\n }\n }\n }\n\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n\n each(scalesOptions, (axisOptions, axisID) => {\n axisOptions.id = axisID;\n });\n }\n\n /**\n\t * Builds a map of scale ID to scale object for future lookup.\n\t */\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id) => {\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n\n if (scaleOpts) {\n items = items.concat(\n Object.keys(scaleOpts).map((id) => {\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n })\n );\n }\n\n each(items, (item) => {\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n\n scale.init(scaleOptions, options);\n });\n // clear up discarded scales\n each(updated, (hasUpdated, id) => {\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n\n each(scales, (scale) => {\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n\n /**\n\t * @private\n\t */\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n\n metasets.sort((a, b) => a.index - b.index);\n if (numMeta > numData) {\n for (let i = numData; i < numMeta; ++i) {\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n\n /**\n\t * @private\n\t */\n _removeUnreferencedMetasets() {\n const {_metasets: metasets, data: {datasets}} = this;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index) => {\n if (datasets.filter(x => x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n\n this._removeUnreferencedMetasets();\n\n for (i = 0, ilen = datasets.length; i < ilen; i++) {\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const {datasetElementType, dataElementType} = defaults.datasets[type];\n Object.assign(ControllerClass, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n\n this._updateMetasets();\n return newControllers;\n }\n\n /**\n\t * Reset the elements of all datasets\n\t * @private\n\t */\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex) => {\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n\n /**\n\t* Resets the chart back to its state before the initial animation\n\t*/\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n\n update(mode) {\n const config = this.config;\n\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n\n // plugins options references might have change, let's invalidate the cache\n // https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\n this._plugins.invalidate();\n\n if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n\n // Make sure dataset controllers are updated and new controllers are reset\n const newControllers = this.buildOrUpdateControllers();\n\n this.notifyPlugins('beforeElementsUpdate');\n\n // Make sure all dataset controllers have correct meta data counts\n let minPadding = 0;\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n const {controller} = this.getDatasetMeta(i);\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n // New controllers will be reset after the layout pass, so we only want to modify\n // elements added to new datasets\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n\n // Only reset the controllers if we have animations\n if (!animsDisabled) {\n // Can only reset the new controllers after the scales have been updated\n // Reset is done to get the starting point for the initial animation\n each(newControllers, (controller) => {\n controller.reset();\n });\n }\n\n this._updateDatasets(mode);\n\n // Do this before render so that any plugins that need final scale updates can use it\n this.notifyPlugins('afterUpdate', {mode});\n\n this._layers.sort(compare2Level('z', '_idx'));\n\n // Replay last event from before update, or set hover styles on active elements\n const {_active, _lastEvent} = this;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n\n this.render();\n }\n\n /**\n * @private\n */\n _updateScales() {\n each(this.scales, (scale) => {\n layouts.removeBox(this, scale);\n });\n\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n\n /**\n * @private\n */\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n // The configured events have changed. Rebind.\n this.unbindEvents();\n this.bindEvents();\n }\n }\n\n /**\n * @private\n */\n _updateHiddenIndices() {\n const {_hiddenIndices} = this;\n const changes = this._getUniformDataChanges() || [];\n for (const {method, start, count} of changes) {\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n\n /**\n * @private\n */\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = (idx) => new Set(\n _dataChanges\n .filter(c => c[0] === idx)\n .map((c, i) => i + ',' + c.splice(1).join(','))\n );\n\n const changeSet = makeSet(0);\n for (let i = 1; i < datasetCount; i++) {\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet)\n .map(c => c.split(','))\n .map(a => ({method: a[1], start: +a[2], count: +a[3]}));\n }\n\n /**\n\t * Updates the chart layout unless a plugin returns `false` to the `beforeLayout`\n\t * hook, in which case, plugins will not be called on `afterLayout`.\n\t * @private\n\t */\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) {\n return;\n }\n\n layouts.update(this, this.width, this.height, minPadding);\n\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n\n this._layers = [];\n each(this.boxes, (box) => {\n if (noArea && box.position === 'chartArea') {\n // Skip drawing and configuring chartArea boxes when chartArea is zero or negative\n return;\n }\n\n // configure is called twice, once in core.scale.update and once here.\n // Here the boxes are fully updated and at their final positions.\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n\n this._layers.forEach((item, index) => {\n item._idx = index;\n });\n\n this.notifyPlugins('afterLayout');\n }\n\n /**\n\t * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate`\n\t * hook, in which case, plugins will not be called on `afterDatasetsUpdate`.\n\t * @private\n\t */\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this.getDatasetMeta(i).controller.configure();\n }\n\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._updateDataset(i, isFunction(mode) ? mode({datasetIndex: i}) : mode);\n }\n\n this.notifyPlugins('afterDatasetsUpdate', {mode});\n }\n\n /**\n\t * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate`\n\t * hook, in which case, plugins will not be called on `afterDatasetUpdate`.\n\t * @private\n\t */\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {meta, index, mode, cancelable: true};\n\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n\n meta.controller._update(mode);\n\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n\n render() {\n if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) {\n return;\n }\n\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({chart: this});\n }\n }\n\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const {width, height} = this._resizeBeforeDraw;\n // Unset pending resize request now to avoid possible recursion within _resize\n this._resizeBeforeDraw = null;\n this._resize(width, height);\n }\n this.clear();\n\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n\n if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) {\n return;\n }\n\n // Because of plugin hooks (before/afterDatasetsDraw), datasets can't\n // currently be part of layers. Instead, we draw\n // layers <= 0 before(default, backward compat), and the rest after\n const layers = this._layers;\n for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n layers[i].draw(this.chartArea);\n }\n\n this._drawDatasets();\n\n // Rest of layers\n for (; i < layers.length; ++i) {\n layers[i].draw(this.chartArea);\n }\n\n this.notifyPlugins('afterDraw');\n }\n\n /**\n\t * @private\n\t */\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n\n return result;\n }\n\n /**\n\t * Gets the visible dataset metas in drawing order\n\t * @return {object[]}\n\t */\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n\n /**\n\t * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw`\n\t * hook, in which case, plugins will not be called on `afterDatasetsDraw`.\n\t * @private\n\t */\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) {\n return;\n }\n\n const metasets = this.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n this._drawDataset(metasets[i]);\n }\n\n this.notifyPlugins('afterDatasetsDraw');\n }\n\n /**\n\t * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw`\n\t * hook, in which case, plugins will not be called on `afterDatasetDraw`.\n\t * @private\n\t */\n _drawDataset(meta) {\n const ctx = this.ctx;\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n // @ts-expect-error\n const clip = getDatasetClipArea(this, meta);\n\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n\n if (clip) {\n clipArea(ctx, clip);\n }\n\n meta.controller.draw();\n\n if (clip) {\n unclipArea(ctx);\n }\n\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n\n /**\n * Checks whether the given point is in the chart area.\n * @param {Point} point - in relative coordinates (see, e.g., getRelativePosition)\n * @returns {boolean}\n */\n isPointInArea(point) {\n return _isPointInArea(point, this.chartArea, this._minPadding);\n }\n\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n\n return [];\n }\n\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\t\t\t// See isDatasetVisible() comment\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n\n return meta;\n }\n\n getContext() {\n return this.$context || (this.$context = createContext(null, {chart: this, type: 'chart'}));\n }\n\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n\n const meta = this.getDatasetMeta(datasetIndex);\n\n // meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,\n // the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n\n /**\n\t * @private\n\t */\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n // Animate visible state, so hide animation can be seen. This could be handled better if update / updateDataset returned a Promise.\n anims.update(meta, {visible});\n this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n\n /**\n\t * @private\n\t */\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n\n for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._destroyDatasetMeta(i);\n }\n }\n\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const {canvas, ctx} = this;\n\n this._stop();\n this.config.clearCache();\n\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n\n delete instances[this.id];\n\n this.notifyPlugins('afterDestroy');\n }\n\n toBase64Image(...args) {\n return this.canvas.toDataURL(...args);\n }\n\n /**\n\t * @private\n\t */\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n\n /**\n * @private\n */\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n\n const listener = (e, x, y) => {\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n\n each(this.options.events, (type) => _add(type, listener));\n }\n\n /**\n * @private\n */\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener) => {\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n\n const listener = (width, height) => {\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n\n let detached; // eslint-disable-line prefer-const\n const attached = () => {\n _remove('attach', attached);\n\n this.attached = true;\n this.resize();\n\n _add('resize', listener);\n _add('detach', detached);\n };\n\n detached = () => {\n this.attached = false;\n\n _remove('resize', listener);\n\n // Stop animating and remove metasets, so when re-attached, the animations start from beginning.\n this._stop();\n this._resize(0, 0);\n\n _add('attach', attached);\n };\n\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n\n /**\n\t * @private\n\t */\n unbindEvents() {\n each(this._listeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n\n each(this._responsiveListeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n\n /**\n\t * Get active (hovered) elements\n\t * @returns array\n\t */\n getActiveElements() {\n return this._active || [];\n }\n\n /**\n\t * Set active (hovered) elements\n\t * @param {array} activeElements New active data points\n\t */\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n\n if (changed) {\n this._active = active;\n // Make sure we don't use the previous mouse event to override the active elements in update.\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n\n /**\n\t * Calls enabled plugins on the specified hook and with the given args.\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\n\t * returned value can be used, for instance, to interrupt the current action.\n\t * @param {string} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\n\t * @param {Object} [args] - Extra arguments to apply to the hook call.\n * @param {import('./core.plugins.js').filterCallback} [filter] - Filtering function for limiting which plugins are notified\n\t * @returns {boolean} false if any of the plugins return false, else returns true.\n\t */\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n\n /**\n * Check if a plugin with the specific ID is registered and enabled\n * @param {string} pluginId - The ID of the plugin of which to check if it is enabled\n * @returns {boolean}\n */\n isPluginEnabled(pluginId) {\n return this._plugins._cache.filter(p => p.plugin.id === pluginId).length === 1;\n }\n\n /**\n\t * @private\n\t */\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n\n /**\n\t * @private\n\t */\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: this.isPointInArea(e)\n };\n const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type);\n\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n\n const changed = this._handleEvent(e, replay, args.inChartArea);\n\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n\n if (changed || args.changed) {\n this.render();\n }\n\n return this;\n }\n\n /**\n\t * Handle an event\n\t * @param {ChartEvent} e the event to handle\n\t * @param {boolean} [replay] - true if the event was replayed by `update`\n * @param {boolean} [inChartArea] - true if the event is inside chartArea\n\t * @return {boolean} true if the chart needs to re-render\n\t * @private\n\t */\n _handleEvent(e, replay, inChartArea) {\n const {_active: lastActive = [], options} = this;\n\n // If the event is replayed from `update`, we should evaluate with the final positions.\n //\n // The `replay`:\n // It's the last event (excluding click) that has occurred before `update`.\n // So mouse has not moved. It's also over the chart, because there is a `replay`.\n //\n // The why:\n // If animations are active, the elements haven't moved yet compared to state before update.\n // But if they will, we are activating the elements that would be active, if this check\n // was done after the animations have completed. => \"final positions\".\n // If there is no animations, the \"final\" and \"current\" positions are equal.\n // This is done so we do not have to evaluate the active elements each animation frame\n // - it would be expensive.\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n\n if (inChartArea) {\n // Set _lastEvent to null while we are processing the event handlers.\n // This prevents recursion if the handler calls chart.update()\n this._lastEvent = null;\n\n // Invoke onHover hook\n callCallback(options.onHover, [e, active, this], this);\n\n if (isClick) {\n callCallback(options.onClick, [e, active, this], this);\n }\n }\n\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n\n this._lastEvent = lastEvent;\n\n return changed;\n }\n\n /**\n * @param {ChartEvent} e - The event\n * @param {import('../types/index.js').ActiveElement[]} lastActive - Previously active elements\n * @param {boolean} inChartArea - Is the event inside chartArea\n * @param {boolean} useFinalPosition - Should the evaluation be done with current or final (after animation) element positions\n * @returns {import('../types/index.js').ActiveElement[]} - The active elements\n * @pravate\n */\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n\n if (!inChartArea) {\n // Let user control the active elements outside chartArea. Eg. using Legend.\n return lastActive;\n }\n\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\n\n// @ts-ignore\nfunction invalidatePlugins() {\n return each(Chart.instances, (chart) => chart._plugins.invalidate());\n}\n\nexport default Chart;\n","import Element from '../core/core.element.js';\nimport {_angleBetween, getAngleFromPoint, TAU, HALF_PI, valueOrDefault} from '../helpers/index.js';\nimport {PI, _angleDiff, _normalizeAngle, _isBetween, _limitValue} from '../helpers/helpers.math.js';\nimport {_readValueToProps} from '../helpers/helpers.options.js';\nimport type {ArcOptions, Point} from '../types/index.js';\n\nfunction clipSelf(ctx: CanvasRenderingContext2D, element: ArcElement, endAngle: number) {\n const {startAngle, x, y, outerRadius, innerRadius, options} = element;\n const {borderWidth, borderJoinStyle} = options;\n const outerAngleClip = Math.min(borderWidth / outerRadius, _normalizeAngle(startAngle - endAngle));\n ctx.beginPath();\n ctx.arc(x, y, outerRadius - borderWidth / 2, startAngle + outerAngleClip / 2, endAngle - outerAngleClip / 2);\n\n if (innerRadius > 0) {\n const innerAngleClip = Math.min(borderWidth / innerRadius, _normalizeAngle(startAngle - endAngle));\n ctx.arc(x, y, innerRadius + borderWidth / 2, endAngle - innerAngleClip / 2, startAngle + innerAngleClip / 2, true);\n } else {\n const clipWidth = Math.min(borderWidth / 2, outerRadius * _normalizeAngle(startAngle - endAngle));\n\n if (borderJoinStyle === 'round') {\n ctx.arc(x, y, clipWidth, endAngle - PI / 2, startAngle + PI / 2, true);\n } else if (borderJoinStyle === 'bevel') {\n const r = 2 * clipWidth * clipWidth;\n const endX = -r * Math.cos(endAngle + PI / 2) + x;\n const endY = -r * Math.sin(endAngle + PI / 2) + y;\n const startX = r * Math.cos(startAngle + PI / 2) + x;\n const startY = r * Math.sin(startAngle + PI / 2) + y;\n ctx.lineTo(endX, endY);\n ctx.lineTo(startX, startY);\n }\n }\n ctx.closePath();\n\n ctx.moveTo(0, 0);\n ctx.rect(0, 0, ctx.canvas.width, ctx.canvas.height);\n\n ctx.clip('evenodd');\n}\n\n\nfunction clipArc(ctx: CanvasRenderingContext2D, element: ArcElement, endAngle: number) {\n const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;\n let angleMargin = pixelMargin / outerRadius;\n\n // Draw an inner border by clipping the arc and drawing a double-width border\n // Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\n\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\n\n/**\n * Parse border radius from the provided options\n */\nfunction parseBorderRadius(arc: ArcElement, innerRadius: number, outerRadius: number, angleDelta: number) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n\n // Outer limits are complicated. We want to compute the available angular distance at\n // a radius of outerRadius - borderRadius because for small angular distances, this term limits.\n // We compute at r = outerRadius - borderRadius because this circle defines the center of the border corners.\n //\n // If the borderRadius is large, that value can become negative.\n // This causes the outer borders to lose their radius entirely, which is rather unexpected. To solve that, if borderRadius > outerRadius\n // we know that the thickness term will dominate and compute the limits at that point\n const computeOuterLimit = (val) => {\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit),\n };\n}\n\n/**\n * Convert (r, 𝜃) to (x, y)\n */\nfunction rThetaToXY(r: number, theta: number, x: number, y: number) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta),\n };\n}\n\n\n/**\n * Path the arc, respecting border radius by separating into left and right halves.\n *\n * Start End\n *\n * 1--->a--->2 Outer\n * / \\\n * 8 3\n * | |\n * | |\n * 7 4\n * \\ /\n * 6<---b<---5 Inner\n */\nfunction pathArc(\n ctx: CanvasRenderingContext2D,\n element: ArcElement,\n offset: number,\n spacing: number,\n end: number,\n circular: boolean,\n) {\n const {x, y, startAngle: start, pixelMargin, innerRadius: innerR} = element;\n\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n\n let spacingOffset = 0;\n const alpha = end - start;\n\n if (spacing) {\n // When spacing is present, it is the same for all items\n // So we adjust the start and end angle of the arc such that\n // the distance is the same as it would be without the spacing\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? (alpha * avNogSpacingRadius) / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const {outerStart, outerEnd, innerStart, innerEnd} = parseBorderRadius(element, innerRadius, outerRadius, endAngle - startAngle);\n\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n\n ctx.beginPath();\n\n if (circular) {\n // The first arc segments from point 1 to point a to point 2\n const outerMidAdjustedAngle = (outerStartAdjustedAngle + outerEndAdjustedAngle) / 2;\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerMidAdjustedAngle);\n ctx.arc(x, y, outerRadius, outerMidAdjustedAngle, outerEndAdjustedAngle);\n\n // The corner segment from point 2 to point 3\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n\n // The line from point 3 to point 4\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n\n // The corner segment from point 4 to point 5\n if (innerEnd > 0) {\n const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n\n // The inner arc from point 5 to point b to point 6\n const innerMidAdjustedAngle = ((endAngle - (innerEnd / innerRadius)) + (startAngle + (innerStart / innerRadius))) / 2;\n ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), innerMidAdjustedAngle, true);\n ctx.arc(x, y, innerRadius, innerMidAdjustedAngle, startAngle + (innerStart / innerRadius), true);\n\n // The corner segment from point 6 to point 7\n if (innerStart > 0) {\n const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n\n // The line from point 7 to point 8\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n\n // The corner segment from point 8 to point 1\n if (outerStart > 0) {\n const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n } else {\n ctx.moveTo(x, y);\n\n const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerStartX, outerStartY);\n\n const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerEndX, outerEndY);\n }\n\n ctx.closePath();\n}\n\nfunction drawArc(\n ctx: CanvasRenderingContext2D,\n element: ArcElement,\n offset: number,\n spacing: number,\n circular: boolean,\n) {\n const {fullCircles, startAngle, circumference} = element;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.fill();\n return endAngle;\n}\n\nfunction drawBorder(\n ctx: CanvasRenderingContext2D,\n element: ArcElement,\n offset: number,\n spacing: number,\n circular: boolean,\n) {\n const {fullCircles, startAngle, circumference, options} = element;\n const {borderWidth, borderJoinStyle, borderDash, borderDashOffset, borderRadius} = options;\n const inner = options.borderAlign === 'inner';\n\n if (!borderWidth) {\n return;\n }\n\n ctx.setLineDash(borderDash || []);\n ctx.lineDashOffset = borderDashOffset;\n\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n\n if (options.selfJoin && endAngle - startAngle >= PI && borderRadius === 0 && borderJoinStyle !== 'miter') {\n clipSelf(ctx, element, endAngle);\n }\n\n if (!fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.stroke();\n }\n}\n\nexport interface ArcProps extends Point {\n startAngle: number;\n endAngle: number;\n innerRadius: number;\n outerRadius: number;\n circumference: number;\n}\n\nexport default class ArcElement extends Element {\n\n static id = 'arc';\n\n static defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n circular: true,\n selfJoin: false,\n };\n\n static defaultRoutes = {\n backgroundColor: 'backgroundColor'\n };\n\n static descriptors = {\n _scriptable: true,\n _indexable: (name) => name !== 'borderDash'\n };\n\n circumference: number;\n endAngle: number;\n fullCircles: number;\n innerRadius: number;\n outerRadius: number;\n pixelMargin: number;\n startAngle: number;\n\n constructor(cfg) {\n super();\n\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n inRange(chartX: number, chartY: number, useFinalPosition: boolean) {\n const point = this.getProps(['x', 'y'], useFinalPosition);\n const {angle, distance} = getAngleFromPoint(point, {x: chartX, y: chartY});\n const {startAngle, endAngle, innerRadius, outerRadius, circumference} = this.getProps([\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const rAdjust = (this.options.spacing + this.options.borderWidth) / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const nonZeroBetween = _angleBetween(angle, startAngle, endAngle) && startAngle !== endAngle;\n const betweenAngles = _circumference >= TAU || nonZeroBetween;\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n\n return (betweenAngles && withinRadius);\n }\n\n getCenterPoint(useFinalPosition: boolean) {\n const {x, y, startAngle, endAngle, innerRadius, outerRadius} = this.getProps([\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius'\n ], useFinalPosition);\n const {offset, spacing} = this.options;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n\n tooltipPosition(useFinalPosition: boolean) {\n return this.getCenterPoint(useFinalPosition);\n }\n\n draw(ctx: CanvasRenderingContext2D) {\n const {options, circumference} = this;\n const offset = (options.offset || 0) / 4;\n const spacing = (options.spacing || 0) / 2;\n const circular = options.circular;\n this.pixelMargin = (options.borderAlign === 'inner') ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n\n ctx.save();\n\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * offset, Math.sin(halfAngle) * offset);\n const fix = 1 - Math.sin(Math.min(PI, circumference || 0));\n const radiusOffset = offset * fix;\n\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n\n drawArc(ctx, this, radiusOffset, spacing, circular);\n drawBorder(ctx, this, radiusOffset, spacing, circular);\n\n ctx.restore();\n }\n}\n","import Element from '../core/core.element.js';\nimport {_bezierInterpolation, _pointInLine, _steppedInterpolation} from '../helpers/helpers.interpolation.js';\nimport {_computeSegments, _boundSegments} from '../helpers/helpers.segment.js';\nimport {_steppedLineTo, _bezierCurveTo} from '../helpers/helpers.canvas.js';\nimport {_updateBezierControlPoints} from '../helpers/helpers.curve.js';\nimport {valueOrDefault} from '../helpers/index.js';\n\n/**\n * @typedef { import('./element.point.js').default } PointElement\n */\n\nfunction setStyle(ctx, options, style = options) {\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\n\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\n\n/**\n * @returns {any}\n */\nfunction getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n\n return lineTo;\n}\n\nfunction pathVars(points, segment, params = {}) {\n const count = points.length;\n const {start: paramsStart = 0, end: paramsEnd = count - 1} = params;\n const {start: segmentStart, end: segmentEnd} = segment;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\n\n/**\n * Create path from points, grouping by truncated x-coordinate\n * Points need to be in order by x-coordinate for this to work efficiently\n * @param {CanvasRenderingContext2D|Path2D} ctx - Context\n * @param {LineElement} line\n * @param {object} segment\n * @param {number} segment.start - start index of the segment, referring the points array\n * @param {number} segment.end - end index of the segment, referring the points array\n * @param {boolean} segment.loop - indicates that the segment is a loop\n * @param {object} params\n * @param {boolean} params.move - move to starting point (vs line to it)\n * @param {boolean} params.reverse - path the segment from end to start\n * @param {number} params.start - limit segment to points starting from `start` index\n * @param {number} params.end - limit segment to points ending at `start` + `count` index\n */\nfunction pathSegment(ctx, line, segment, params) {\n const {points, options} = line;\n const {count, start, loop, ilen} = pathVars(points, segment, params);\n const lineMethod = getLineMethod(options);\n // eslint-disable-next-line prefer-const\n let {move = true, reverse} = params || {};\n let i, point, prev;\n\n for (i = 0; i <= ilen; ++i) {\n point = points[(start + (reverse ? ilen - i : i)) % count];\n\n if (point.skip) {\n // If there is a skipped point inside a segment, spanGaps must be true\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n\n prev = point;\n }\n\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n\n return !!loop;\n}\n\n/**\n * Create path from points, grouping by truncated x-coordinate\n * Points need to be in order by x-coordinate for this to work efficiently\n * @param {CanvasRenderingContext2D|Path2D} ctx - Context\n * @param {LineElement} line\n * @param {object} segment\n * @param {number} segment.start - start index of the segment, referring the points array\n * @param {number} segment.end - end index of the segment, referring the points array\n * @param {boolean} segment.loop - indicates that the segment is a loop\n * @param {object} params\n * @param {boolean} params.move - move to starting point (vs line to it)\n * @param {boolean} params.reverse - path the segment from end to start\n * @param {number} params.start - limit segment to points starting from `start` index\n * @param {number} params.end - limit segment to points ending at `start` + `count` index\n */\nfunction fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const {count, start, ilen} = pathVars(points, segment, params);\n const {move = true, reverse} = params || {};\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n\n const pointIndex = (index) => (start + (reverse ? ilen - index : index)) % count;\n const drawX = () => {\n if (minY !== maxY) {\n // Draw line to maxY and minY, using the average x-coordinate\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n // Line to y-value of last point in group. So the line continues\n // from correct position. Not using move, to have solid path.\n ctx.lineTo(avgX, lastY);\n }\n };\n\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n\n for (i = 0; i <= ilen; ++i) {\n point = points[pointIndex(i)];\n\n if (point.skip) {\n // If there is a skipped point inside a segment, spanGaps must be true\n continue;\n }\n\n const x = point.x;\n const y = point.y;\n const truncX = x | 0; // truncated x-coordinate\n\n if (truncX === prevX) {\n // Determine `minY` / `maxY` and `avgX` while we stay within same x-position\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n // For first point in group, countX is `0`, so average will be `x` / 1.\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n // Draw line to next x-position, using the first (or only)\n // y-value in that group\n ctx.lineTo(x, y);\n\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n // Keep track of the last y-value in group\n lastY = y;\n }\n drawX();\n}\n\n/**\n * @param {LineElement} line - the line\n * @returns {function}\n * @private\n */\nfunction _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\n\n/**\n * @private\n */\nfunction _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n\n return _pointInLine;\n}\n\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\n\nfunction strokePathDirect(ctx, line, start, count) {\n const {segments, options} = line;\n const segmentMethod = _getSegmentMethod(line);\n\n for (const segment of segments) {\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {start, end: start + count - 1})) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\n\nconst usePath2D = typeof Path2D === 'function';\n\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\n\nexport default class LineElement extends Element {\n\n static id = 'line';\n\n /**\n * @type {any}\n */\n static defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0,\n };\n\n /**\n * @type {any}\n */\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n\n\n static descriptors = {\n _scriptable: true,\n _indexable: (name) => name !== 'borderDash' && name !== 'fill',\n };\n\n\n constructor(cfg) {\n super();\n\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n\n get points() {\n return this._points;\n }\n\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n\n /**\n\t * First non-skipped point on this line\n\t * @returns {PointElement|undefined}\n\t */\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n\n /**\n\t * Last non-skipped point on this line\n\t * @returns {PointElement|undefined}\n\t */\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n\n /**\n\t * Interpolate a point in this line at the same value on `property` as\n\t * the reference `point` provided\n\t * @param {PointElement} point - the reference point\n\t * @param {string} property - the property to match on\n\t * @returns {PointElement|undefined}\n\t */\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {property, start: value, end: value});\n\n if (!segments.length) {\n return;\n }\n\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for (i = 0, ilen = segments.length; i < ilen; ++i) {\n const {start, end} = segments[i];\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n\n /**\n\t * Append a segment of this line to current path.\n\t * @param {CanvasRenderingContext2D} ctx\n\t * @param {object} segment\n\t * @param {number} segment.start - start index of the segment, referring the points array\n \t * @param {number} segment.end - end index of the segment, referring the points array\n \t * @param {boolean} segment.loop - indicates that the segment is a loop\n\t * @param {object} params\n\t * @param {boolean} params.move - move to starting point (vs line to it)\n\t * @param {boolean} params.reverse - path the segment from end to start\n\t * @param {number} params.start - limit segment to points starting from `start` index\n\t * @param {number} params.end - limit segment to points ending at `start` + `count` index\n\t * @returns {undefined|boolean} - true if the segment is a full loop (path should be closed)\n\t */\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n\n /**\n\t * Append all segments of this line to current path.\n\t * @param {CanvasRenderingContext2D|Path2D} ctx\n\t * @param {number} [start]\n\t * @param {number} [count]\n\t * @returns {undefined|boolean} - true if line is a full loop (path should be closed)\n\t */\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n\n start = start || 0;\n count = count || (this.points.length - start);\n\n for (const segment of segments) {\n loop &= segmentMethod(ctx, this, segment, {start, end: start + count - 1});\n }\n return !!loop;\n }\n\n /**\n\t * Draw\n\t * @param {CanvasRenderingContext2D} ctx\n\t * @param {object} chartArea\n\t * @param {number} [start]\n\t * @param {number} [count]\n\t */\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n\n if (points.length && options.borderWidth) {\n ctx.save();\n\n draw(ctx, this, start, count);\n\n ctx.restore();\n }\n\n if (this.animated) {\n // When line is animated, the control points and path are not cached.\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n}\n","import Element from '../core/core.element.js';\nimport {drawPoint, _isPointInArea} from '../helpers/helpers.canvas.js';\nimport type {\n CartesianParsedData,\n ChartArea,\n Point,\n PointHoverOptions,\n PointOptions,\n} from '../types/index.js';\n\nfunction inRange(el: PointElement, pos: number, axis: 'x' | 'y', useFinalPosition?: boolean) {\n const options = el.options;\n const {[axis]: value} = el.getProps([axis], useFinalPosition);\n\n return (Math.abs(pos - value) < options.radius + options.hitRadius);\n}\n\nexport type PointProps = Point\n\nexport default class PointElement extends Element {\n\n static id = 'point';\n\n parsed: CartesianParsedData;\n skip?: boolean;\n stop?: boolean;\n\n /**\n * @type {any}\n */\n static defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n };\n\n /**\n * @type {any}\n */\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n\n constructor(cfg) {\n super();\n\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n inRange(mouseX: number, mouseY: number, useFinalPosition?: boolean) {\n const options = this.options;\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return ((Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2)) < Math.pow(options.hitRadius + options.radius, 2));\n }\n\n inXRange(mouseX: number, useFinalPosition?: boolean) {\n return inRange(this, mouseX, 'x', useFinalPosition);\n }\n\n inYRange(mouseY: number, useFinalPosition?: boolean) {\n return inRange(this, mouseY, 'y', useFinalPosition);\n }\n\n getCenterPoint(useFinalPosition?: boolean) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n\n size(options?: Partial) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n\n draw(ctx: CanvasRenderingContext2D, area: ChartArea) {\n const options = this.options;\n\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n\n getRange() {\n const options = this.options || {};\n // @ts-expect-error Fallbacks should never be hit in practice\n return options.radius + options.hitRadius;\n }\n}\n","import Element from '../core/core.element.js';\nimport {isObject, _isBetween, _limitValue} from '../helpers/index.js';\nimport {addRoundedRectPath} from '../helpers/helpers.canvas.js';\nimport {toTRBL, toTRBLCorners} from '../helpers/helpers.options.js';\n\n/** @typedef {{ x: number, y: number, base: number, horizontal: boolean, width: number, height: number }} BarProps */\n\n/**\n * Helper function to get the bounds of the bar regardless of the orientation\n * @param {BarElement} bar the bar\n * @param {boolean} [useFinalPosition]\n * @return {object} bounds of the bar\n * @private\n */\nfunction getBarBounds(bar, useFinalPosition) {\n const {x, y, base, width, height} = /** @type {BarProps} */ (bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition));\n\n let left, right, top, bottom, half;\n\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n\n return {left, top, right, bottom};\n}\n\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\n\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\n\nfunction parseBorderRadius(bar, maxW, maxH) {\n const {enableBorderRadius} = bar.getProps(['enableBorderRadius']);\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n\n // If the value is an object, assume the user knows what they are doing\n // and apply as directed.\n const enableBorder = enableBorderRadius || isObject(value);\n\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\n\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)),\n }\n }\n };\n}\n\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n\n return bounds\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\n\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\n\n/**\n * Add a path of a rectangle to the current sub-path\n * @param {CanvasRenderingContext2D} ctx Context\n * @param {*} rect Bounding rect\n */\nfunction addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\n\nfunction inflateRect(rect, amount, refRect = {}) {\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\n\nexport default class BarElement extends Element {\n\n static id = 'bar';\n\n /**\n * @type {any}\n */\n static defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n };\n\n /**\n * @type {any}\n */\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n\n constructor(cfg) {\n super();\n\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n draw(ctx) {\n const {inflateAmount, options: {borderColor, backgroundColor}} = this;\n const {inner, outer} = boundingRects(this);\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n\n ctx.save();\n\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n\n ctx.restore();\n }\n\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n\n getCenterPoint(useFinalPosition) {\n const {x, y, base, horizontal} = /** @type {BarProps} */ (this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition));\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\n","import {_boundSegment, _boundSegments, _normalizeAngle} from '../../helpers/index.js';\n\nexport function _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n\n for (const segment of segments) {\n let {start, end} = segment;\n end = _findSegmentEnd(start, end, points);\n\n const bounds = _getBounds(property, points[start], points[end], segment.loop);\n\n if (!target.segments) {\n // Special case for boundary not supporting `segments` (simpleArc)\n // Bounds are provided as `target` for partial circle, or undefined for full circle\n parts.push({\n source: segment,\n target: bounds,\n start: points[start],\n end: points[end]\n });\n continue;\n }\n\n // Get all segments from `target` that intersect the bounds of current segment of `line`\n const targetSegments = _boundSegments(target, bounds);\n\n for (const tgt of targetSegments) {\n const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n const fillSources = _boundSegment(segment, points, subBounds);\n\n for (const fillSource of fillSources) {\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n return parts;\n}\n\nexport function _getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n let start = first[property];\n let end = last[property];\n\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {property, start, end};\n}\n\nexport function _pointsFromSegments(boundary, line) {\n const {x = null, y = null} = boundary || {};\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(({start, end}) => {\n end = _findSegmentEnd(start, end, linePoints);\n const first = linePoints[start];\n const last = linePoints[end];\n if (y !== null) {\n points.push({x: first.x, y});\n points.push({x: last.x, y});\n } else if (x !== null) {\n points.push({x, y: first.y});\n points.push({x, y: last.y});\n }\n });\n return points;\n}\n\nexport function _findSegmentEnd(start, end, points) {\n for (;end > start; end--) {\n const point = points[end];\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n return end;\n}\n\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n return a ? a[prop] : b ? b[prop] : 0;\n}\n","/**\n * @typedef { import('../../core/core.controller.js').default } Chart\n * @typedef { import('../../core/core.scale.js').default } Scale\n * @typedef { import('../../elements/element.point.js').default } PointElement\n */\n\nimport {LineElement} from '../../elements/index.js';\nimport {isArray} from '../../helpers/index.js';\nimport {_pointsFromSegments} from './filler.segment.js';\n\n/**\n * @param {PointElement[] | { x: number; y: number; }} boundary\n * @param {LineElement} line\n * @return {LineElement?}\n */\nexport function _createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n\n if (isArray(boundary)) {\n _loop = true;\n // @ts-ignore\n points = boundary;\n } else {\n points = _pointsFromSegments(boundary, line);\n }\n\n return points.length ? new LineElement({\n points,\n options: {tension: 0},\n _loop,\n _fullLoop: _loop\n }) : null;\n}\n\nexport function _shouldApplyFill(source) {\n return source && source.fill !== false;\n}\n","import {isObject, isFinite, valueOrDefault} from '../../helpers/helpers.core.js';\n\n/**\n * @typedef { import('../../core/core.scale.js').default } Scale\n * @typedef { import('../../elements/element.line.js').default } LineElement\n * @typedef { import('../../types/index.js').FillTarget } FillTarget\n * @typedef { import('../../types/index.js').ComplexFillTarget } ComplexFillTarget\n */\n\nexport function _resolveTarget(sources, index, propagate) {\n const source = sources[index];\n let fill = source.fill;\n const visited = [index];\n let target;\n\n if (!propagate) {\n return fill;\n }\n\n while (fill !== false && visited.indexOf(fill) === -1) {\n if (!isFinite(fill)) {\n return fill;\n }\n\n target = sources[fill];\n if (!target) {\n return false;\n }\n\n if (target.visible) {\n return fill;\n }\n\n visited.push(fill);\n fill = target.fill;\n }\n\n return false;\n}\n\n/**\n * @param {LineElement} line\n * @param {number} index\n * @param {number} count\n */\nexport function _decodeFill(line, index, count) {\n /** @type {string | {value: number}} */\n const fill = parseFillOption(line);\n\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n\n let target = parseFloat(fill);\n\n if (isFinite(target) && Math.floor(target) === target) {\n return decodeTargetIndex(fill[0], index, target, count);\n }\n\n return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\n\nfunction decodeTargetIndex(firstCh, index, target, count) {\n if (firstCh === '-' || firstCh === '+') {\n target = index + target;\n }\n\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n\n return target;\n}\n\n/**\n * @param {FillTarget | ComplexFillTarget} fill\n * @param {Scale} scale\n * @returns {number | null}\n */\nexport function _getTargetPixel(fill, scale) {\n let pixel = null;\n if (fill === 'start') {\n pixel = scale.bottom;\n } else if (fill === 'end') {\n pixel = scale.top;\n } else if (isObject(fill)) {\n // @ts-ignore\n pixel = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n pixel = scale.getBasePixel();\n }\n return pixel;\n}\n\n/**\n * @param {FillTarget | ComplexFillTarget} fill\n * @param {Scale} scale\n * @param {number} startValue\n * @returns {number | undefined}\n */\nexport function _getTargetValue(fill, scale, startValue) {\n let value;\n\n if (fill === 'start') {\n value = startValue;\n } else if (fill === 'end') {\n value = scale.options.reverse ? scale.min : scale.max;\n } else if (isObject(fill)) {\n // @ts-ignore\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n return value;\n}\n\n/**\n * @param {LineElement} line\n */\nfunction parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n\n if (fill === false || fill === null) {\n return false;\n }\n\n if (fill === true) {\n return 'origin';\n }\n return fill;\n}\n","/**\n * @typedef { import('../../core/core.controller.js').default } Chart\n * @typedef { import('../../core/core.scale.js').default } Scale\n * @typedef { import('../../elements/element.point.js').default } PointElement\n */\n\nimport {LineElement} from '../../elements/index.js';\nimport {_isBetween} from '../../helpers/index.js';\nimport {_createBoundaryLine} from './filler.helper.js';\n\n/**\n * @param {{ chart: Chart; scale: Scale; index: number; line: LineElement; }} source\n * @return {LineElement}\n */\nexport function _buildStackLine(source) {\n const {scale, index, line} = source;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(scale, index);\n linesBelow.push(_createBoundaryLine({x: null, y: scale.bottom}, line));\n\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n for (let j = segment.start; j <= segment.end; j++) {\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({points, options: {}});\n}\n\n/**\n * @param {Scale} scale\n * @param {number} index\n * @return {LineElement[]}\n */\nfunction getLinesBelow(scale, index) {\n const below = [];\n const metas = scale.getMatchingVisibleMetas('line');\n\n for (let i = 0; i < metas.length; i++) {\n const meta = metas[i];\n if (meta.index === index) {\n break;\n }\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n return below;\n}\n\n/**\n * @param {PointElement[]} points\n * @param {PointElement} sourcePoint\n * @param {LineElement[]} linesBelow\n */\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n for (let j = 0; j < linesBelow.length; j++) {\n const line = linesBelow[j];\n const {first, last, point} = findPoint(line, sourcePoint, 'x');\n\n if (!point || (first && last)) {\n continue;\n }\n if (first) {\n // First point of a segment -> need to add another point before this,\n postponed.unshift(point);\n } else {\n points.push(point);\n if (!last) {\n // In the middle of a segment, no need to add more points.\n break;\n }\n }\n }\n points.push(...postponed);\n}\n\n/**\n * @param {LineElement} line\n * @param {PointElement} sourcePoint\n * @param {string} property\n * @returns {{point?: PointElement, first?: boolean, last?: boolean}}\n */\nfunction findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\n }\n\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const lastValue = linePoints[segment.end][property];\n if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n return {first, last, point};\n}\n","import {TAU} from '../../helpers/index.js';\n\n// TODO: use elements.ArcElement instead\nexport class simpleArc {\n constructor(opts) {\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n\n pathSegment(ctx, bounds, opts) {\n const {x, y, radius} = this;\n bounds = bounds || {start: 0, end: TAU};\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n\n interpolate(point) {\n const {x, y, radius} = this;\n const angle = point.angle;\n return {\n x: x + Math.cos(angle) * radius,\n y: y + Math.sin(angle) * radius,\n angle\n };\n }\n}\n","import {isFinite} from '../../helpers/index.js';\nimport {_createBoundaryLine} from './filler.helper.js';\nimport {_getTargetPixel, _getTargetValue} from './filler.options.js';\nimport {_buildStackLine} from './filler.target.stack.js';\nimport {simpleArc} from './simpleArc.js';\n\n/**\n * @typedef { import('../../core/core.controller.js').default } Chart\n * @typedef { import('../../core/core.scale.js').default } Scale\n * @typedef { import('../../elements/element.point.js').default } PointElement\n */\n\nexport function _getTarget(source) {\n const {chart, fill, line} = source;\n\n if (isFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n\n if (fill === 'stack') {\n return _buildStackLine(source);\n }\n\n if (fill === 'shape') {\n return true;\n }\n\n const boundary = computeBoundary(source);\n\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n\n return _createBoundaryLine(boundary, line);\n}\n\n/**\n * @param {Chart} chart\n * @param {number} index\n */\nfunction getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\n\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\n\n\nfunction computeLinearBoundary(source) {\n const {scale = {}, fill} = source;\n const pixel = _getTargetPixel(fill, scale);\n\n if (isFinite(pixel)) {\n const horizontal = scale.isHorizontal();\n\n return {\n x: horizontal ? pixel : null,\n y: horizontal ? null : pixel\n };\n }\n\n return null;\n}\n\nfunction computeCircularBoundary(source) {\n const {scale, fill} = source;\n const options = scale.options;\n const length = scale.getLabels().length;\n const start = options.reverse ? scale.max : scale.min;\n const value = _getTargetValue(fill, scale, start);\n const target = [];\n\n if (options.grid.circular) {\n const center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n\n for (let i = 0; i < length; ++i) {\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\n\n","import {clipArea, unclipArea, getDatasetClipArea} from '../../helpers/index.js';\nimport {_findSegmentEnd, _getBounds, _segments} from './filler.segment.js';\nimport {_getTarget} from './filler.target.js';\n\nexport function _drawfill(ctx, source, area) {\n const target = _getTarget(source);\n const {chart, index, line, scale, axis} = source;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n const {above = color, below = color} = fillOption || {};\n const meta = chart.getDatasetMeta(index);\n const clip = getDatasetClipArea(chart, meta);\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {line, target, above, below, area, scale, axis, clip});\n unclipArea(ctx);\n }\n}\n\nfunction doFill(ctx, cfg) {\n const {line, target, above, below, area, scale, clip} = cfg;\n const property = line._loop ? 'angle' : cfg.axis;\n\n ctx.save();\n\n let fillColor = below;\n if (below !== above) {\n if (property === 'x') {\n clipVertical(ctx, target, area.top);\n fill(ctx, {line, target, color: above, scale, property, clip});\n ctx.restore();\n ctx.save();\n clipVertical(ctx, target, area.bottom);\n } else if (property === 'y') {\n clipHorizontal(ctx, target, area.left);\n fill(ctx, {line, target, color: below, scale, property, clip});\n ctx.restore();\n ctx.save();\n clipHorizontal(ctx, target, area.right);\n fillColor = above;\n }\n }\n fill(ctx, {line, target, color: fillColor, scale, property, clip});\n\n ctx.restore();\n}\n\nfunction clipVertical(ctx, target, clipY) {\n const {segments, points} = target;\n let first = true;\n let lineLoop = false;\n\n ctx.beginPath();\n for (const segment of segments) {\n const {start, end} = segment;\n const firstPoint = points[start];\n const lastPoint = points[_findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(firstPoint.x, clipY);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop});\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(lastPoint.x, clipY);\n }\n }\n\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\n\nfunction clipHorizontal(ctx, target, clipX) {\n const {segments, points} = target;\n let first = true;\n let lineLoop = false;\n\n ctx.beginPath();\n for (const segment of segments) {\n const {start, end} = segment;\n const firstPoint = points[start];\n const lastPoint = points[_findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(clipX, firstPoint.y);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop});\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(clipX, lastPoint.y);\n }\n }\n\n ctx.lineTo(clipX, target.first().y);\n ctx.closePath();\n ctx.clip();\n}\n\nfunction fill(ctx, cfg) {\n const {line, target, property, color, scale, clip} = cfg;\n const segments = _segments(line, target, property);\n\n for (const {source: src, target: tgt, start, end} of segments) {\n const {style: {backgroundColor = color} = {}} = src;\n const notShape = target !== true;\n\n ctx.save();\n ctx.fillStyle = backgroundColor;\n\n clipBounds(ctx, scale, clip, notShape && _getBounds(property, start, end));\n\n ctx.beginPath();\n\n const lineLoop = !!line.pathSegment(ctx, src);\n\n let loop;\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n\n const targetLoop = !!target.pathSegment(ctx, tgt, {move: lineLoop, reverse: true});\n loop = lineLoop && targetLoop;\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n\n ctx.restore();\n }\n}\n\nfunction clipBounds(ctx, scale, clip, bounds) {\n const chartArea = scale.chart.chartArea;\n const {property, start, end} = bounds || {};\n\n if (property === 'x' || property === 'y') {\n let left, top, right, bottom;\n\n if (property === 'x') {\n left = start;\n top = chartArea.top;\n right = end;\n bottom = chartArea.bottom;\n } else {\n left = chartArea.left;\n top = start;\n right = chartArea.right;\n bottom = end;\n }\n\n ctx.beginPath();\n\n if (clip) {\n left = Math.max(left, clip.left);\n right = Math.min(right, clip.right);\n top = Math.max(top, clip.top);\n bottom = Math.min(bottom, clip.bottom);\n }\n\n ctx.rect(left, top, right - left, bottom - top);\n ctx.clip();\n }\n}\n\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\n\n","/**\n * Plugin based on discussion from the following Chart.js issues:\n * @see https://github.com/chartjs/Chart.js/issues/2380#issuecomment-279961569\n * @see https://github.com/chartjs/Chart.js/issues/2440#issuecomment-256461897\n */\n\nimport LineElement from '../../elements/element.line.js';\nimport {_drawfill} from './filler.drawing.js';\nimport {_shouldApplyFill} from './filler.helper.js';\nimport {_decodeFill, _resolveTarget} from './filler.options.js';\n\nexport default {\n id: 'filler',\n\n afterDatasetsUpdate(chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n\n for (i = 0; i < count; ++i) {\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: _decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line,\n };\n }\n\n meta.$filler = source;\n sources.push(source);\n }\n\n for (i = 0; i < count; ++i) {\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\n }\n\n source.fill = _resolveTarget(sources, i, options.propagate);\n }\n },\n\n beforeDraw(chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n\n source.line.updateControlPoints(area, source.axis);\n if (draw && source.fill) {\n _drawfill(chart.ctx, source, area);\n }\n }\n },\n\n beforeDatasetsDraw(chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n\n const metasets = chart.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n\n if (_shouldApplyFill(source)) {\n _drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n\n beforeDatasetDraw(chart, args, options) {\n const source = args.meta.$filler;\n\n if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n\n _drawfill(chart.ctx, source, chart.chartArea);\n },\n\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\n","import defaults from '../core/core.defaults.js';\nimport Element from '../core/core.element.js';\nimport layouts from '../core/core.layouts.js';\nimport {addRoundedRectPath, drawPointLegend, renderText} from '../helpers/helpers.canvas.js';\nimport {\n _isBetween,\n callback as call,\n clipArea,\n getRtlAdapter,\n overrideTextDirection,\n restoreTextDirection,\n toFont,\n toPadding,\n unclipArea,\n valueOrDefault,\n} from '../helpers/index.js';\nimport {_alignStartEnd, _textX, _toLeftRightCenter} from '../helpers/helpers.extras.js';\nimport {toTRBLCorners} from '../helpers/helpers.options.js';\n\n/**\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n */\n\nconst getBoxSize = (labelOpts, fontSize) => {\n let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts;\n\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n }\n\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\n\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\n\nexport class Legend extends Element {\n\n /**\n\t * @param {{ ctx: any; options: any; chart: any; }} config\n\t */\n constructor(config) {\n super();\n\n this._added = false;\n\n // Contains hit boxes for each dataset (in dataset order)\n this.legendHitBoxes = [];\n\n /**\n \t\t * @private\n \t\t */\n this._hoveredItem = null;\n\n // Are we in doughnut mode which has a different data type\n this.doughnutMode = false;\n\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = call(labelOpts.generateLabels, [this.chart], this) || [];\n\n if (labelOpts.filter) {\n legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data));\n }\n\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n }\n\n if (this.options.reverse) {\n legendItems.reverse();\n }\n\n this.legendItems = legendItems;\n }\n\n fit() {\n const {options, ctx} = this;\n\n // The legend may not be displayed for a variety of reasons including\n // the fact that the defaults got set to `false`.\n // When the legend is not displayed, there are no guarantees that the options\n // are correctly formatted so we need to bail out as early as possible.\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const {boxWidth, itemHeight} = getBoxSize(labelOpts, fontSize);\n\n let width, height;\n\n ctx.font = labelFont.string;\n\n if (this.isHorizontal()) {\n width = this.maxWidth; // fill all the width\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight; // fill all the height\n width = this._fitCols(titleHeight, labelFont, boxWidth, itemHeight) + 10;\n }\n\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n\n /**\n\t * @private\n\t */\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxWidth, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n // Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one\n const lineWidths = this.lineWidths = [0];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n\n hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n\n return totalHeight;\n }\n\n _fitCols(titleHeight, labelFont, boxWidth, _itemHeight) {\n const {ctx, maxHeight, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n\n let left = 0;\n let col = 0;\n\n this.legendItems.forEach((legendItem, i) => {\n const {itemWidth, itemHeight} = calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight);\n\n // If too tall, go to new column\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({width: currentColWidth, height: currentColHeight}); // previous column size\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n\n // Store the hitbox width and height here. Final position will be updated in `draw`\n hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n\n // Get max width\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n\n totalWidth += currentColWidth;\n columnSizes.push({width: currentColWidth, height: currentColHeight}); // previous column size\n\n return totalWidth;\n }\n\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const {legendHitBoxes: hitboxes, options: {align, labels: {padding}, rtl}} = this;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes) {\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox of hitboxes) {\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox.top = top;\n hitbox.left += this.left + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n top += hitbox.height + padding;\n }\n }\n }\n\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n\n this._draw();\n\n unclipArea(ctx);\n }\n }\n\n /**\n\t * @private\n\t */\n _draw() {\n const {options: opts, columnSizes, lineWidths, ctx} = this;\n const {align, labels: labelOpts} = opts;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const {padding} = labelOpts;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n\n this.drawTitle();\n\n // Canvas setup\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n\n const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize);\n\n // current position\n const drawLegendBox = function(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n\n // Set the ctx for the box\n ctx.save();\n\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n\n if (labelOpts.usePointStyle) {\n // Recalculate x and y for drawPoint() because its expecting\n // x and y to be center of figure (instead of top left)\n const drawOptions = {\n radius: boxHeight * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n\n // Draw pointStyle as legend symbol\n drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n } else {\n // Draw box as legend symbol\n // Adjust position when boxHeight < fontSize (want it centered)\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n\n ctx.beginPath();\n\n if (Object.values(borderRadius).some(v => v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n\n ctx.restore();\n };\n\n const fillText = function(x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + (itemHeight / 2), labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n\n // Horizontal\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n\n overrideTextDirection(this.ctx, opts.textDirection);\n\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i) => {\n ctx.strokeStyle = legendItem.fontColor; // for strikethrough effect\n ctx.fillStyle = legendItem.fontColor; // render in correct colour\n\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n\n rtlHelper.setWidth(this.width);\n\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n\n const realX = rtlHelper.x(x);\n\n drawLegendBox(realX, y, legendItem);\n\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n\n // Fill the actual label\n fillText(rtlHelper.x(x), y, legendItem);\n\n if (isHorizontal) {\n cursor.x += width + padding;\n } else if (typeof legendItem.text !== 'string') {\n const fontLineHeight = labelFont.lineHeight;\n cursor.y += calculateLegendItemHeight(legendItem, fontLineHeight) + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n\n /**\n\t * @protected\n\t */\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n\n if (!titleOpts.display) {\n return;\n }\n\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n\n // These defaults are used when the legend is vertical.\n // When horizontal, they are computed below.\n let left = this.left;\n let maxWidth = this.width;\n\n if (this.isHorizontal()) {\n // Move left / right so that the title is above the legend lines\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n // Move down so that the title is above the legend stack in every alignment\n const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n\n // Now that we know the left edge of the inner legend box, compute the correct\n // X coordinate from the title alignment\n const x = _alignStartEnd(position, left, left + maxWidth);\n\n // Canvas setup\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n\n /**\n\t * @private\n\t */\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n\n /**\n\t * @private\n\t */\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n\n if (_isBetween(x, this.left, this.right)\n && _isBetween(y, this.top, this.bottom)) {\n // See if we are touching one of the dataset boxes\n lh = this.legendHitBoxes;\n for (i = 0; i < lh.length; ++i) {\n hitBox = lh[i];\n\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width)\n && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n // Touching an element\n return this.legendItems[i];\n }\n }\n }\n\n return null;\n }\n\n /**\n\t * Handle an event\n\t * @param {ChartEvent} e - The event to handle\n\t */\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n\n // Chart event already has relative position in it\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n\n if (e.type === 'mousemove' || e.type === 'mouseout') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n call(opts.onLeave, [e, previous, this], this);\n }\n\n this._hoveredItem = hoveredItem;\n\n if (hoveredItem && !sameItem) {\n call(opts.onHover, [e, hoveredItem, this], this);\n }\n } else if (hoveredItem) {\n call(opts.onClick, [e, hoveredItem, this], this);\n }\n }\n}\n\nfunction calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight) {\n const itemWidth = calculateItemWidth(legendItem, boxWidth, labelFont, ctx);\n const itemHeight = calculateItemHeight(_itemHeight, legendItem, labelFont.lineHeight);\n return {itemWidth, itemHeight};\n}\n\nfunction calculateItemWidth(legendItem, boxWidth, labelFont, ctx) {\n let legendItemText = legendItem.text;\n if (legendItemText && typeof legendItemText !== 'string') {\n legendItemText = legendItemText.reduce((a, b) => a.length > b.length ? a : b);\n }\n return boxWidth + (labelFont.size / 2) + ctx.measureText(legendItemText).width;\n}\n\nfunction calculateItemHeight(_itemHeight, legendItem, fontLineHeight) {\n let itemHeight = _itemHeight;\n if (typeof legendItem.text !== 'string') {\n itemHeight = calculateLegendItemHeight(legendItem, fontLineHeight);\n }\n return itemHeight;\n}\n\nfunction calculateLegendItemHeight(legendItem, fontLineHeight) {\n const labelHeight = legendItem.text ? legendItem.text.length : 0;\n return fontLineHeight * labelHeight;\n}\n\nfunction isListened(type, opts) {\n if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\n\nexport default {\n id: 'legend',\n\n /**\n\t * For tests\n\t * @private\n\t */\n _element: Legend,\n\n start(chart, _args, options) {\n const legend = chart.legend = new Legend({ctx: chart.ctx, options, chart});\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n\n stop(chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n\n // During the beforeUpdate step, the layout configuration needs to run\n // This ensures that if the legend position changes (via an option update)\n // the layout system respects the change. See https://github.com/chartjs/Chart.js/issues/7527\n beforeUpdate(chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n\n // The labels need to be built after datasets are updated to ensure that colors\n // and other styling are correct. See https://github.com/chartjs/Chart.js/issues/6968\n afterUpdate(chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n\n\n afterEvent(chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n\n // a callback that will handle\n onClick(e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n\n onHover: null,\n onLeave: null,\n\n labels: {\n color: (ctx) => ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n // Generates labels shown in the legend\n // Valid properties to return:\n // text : text to display\n // fillStyle : fill of coloured box\n // strokeStyle: stroke of coloured box\n // hidden : if this legend item refers to a hidden item\n // lineCap : cap style for line\n // lineDash\n // lineDashOffset :\n // lineJoin :\n // lineWidth :\n generateLabels(chart) {\n const datasets = chart.data.datasets;\n const {labels: {usePointStyle, pointStyle, textAlign, color, useBorderRadius, borderRadius}} = chart.legend.options;\n\n return chart._getSortedDatasetMetas().map((meta) => {\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: useBorderRadius && (borderRadius || style.borderRadius),\n\n // Below is extra data used for toggling the datasets\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n\n title: {\n color: (ctx) => ctx.chart.options.color,\n display: false,\n position: 'center',\n text: '',\n }\n },\n\n descriptors: {\n _scriptable: (name) => !name.startsWith('on'),\n labels: {\n _scriptable: (name) => !['generateLabels', 'filter', 'sort'].includes(name),\n }\n },\n};\n","import {Title} from './plugin.title.js';\nimport layouts from '../core/core.layouts.js';\n\nconst map = new WeakMap();\n\nexport default {\n id: 'subtitle',\n\n start(chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n\n stop(chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n\n beforeUpdate(chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal',\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500 // by default greater than legend (1000) and smaller than title (2000)\n },\n\n defaultRoutes: {\n color: 'color'\n },\n\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n","import Animations from '../core/core.animations.js';\nimport Element from '../core/core.element.js';\nimport {addRoundedRectPath} from '../helpers/helpers.canvas.js';\nimport {each, noop, isNullOrUndef, isArray, _elementsEqual, isObject} from '../helpers/helpers.core.js';\nimport {toFont, toPadding, toTRBLCorners} from '../helpers/helpers.options.js';\nimport {getRtlAdapter, overrideTextDirection, restoreTextDirection} from '../helpers/helpers.rtl.js';\nimport {distanceBetweenPoints, _limitValue} from '../helpers/helpers.math.js';\nimport {createContext, drawPoint} from '../helpers/index.js';\n\n/**\n * @typedef { import('../platform/platform.base.js').Chart } Chart\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef { import('../types/index.js').ActiveElement } ActiveElement\n * @typedef { import('../core/core.interaction.js').InteractionItem } InteractionItem\n */\n\nconst positioners = {\n /**\n\t * Average mode places the tooltip at the average position of the elements shown\n\t */\n average(items) {\n if (!items.length) {\n return false;\n }\n\n let i, len;\n let xSet = new Set();\n let y = 0;\n let count = 0;\n\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n xSet.add(pos.x);\n y += pos.y;\n ++count;\n }\n }\n\n // No visible items where found, return false so we don't have to divide by 0 which reduces in NaN\n if (count === 0 || xSet.size === 0) {\n return false;\n }\n\n const xAverage = [...xSet].reduce((a, b) => a + b) / xSet.size;\n\n return {\n x: xAverage,\n y: y / count\n };\n },\n\n /**\n\t * Gets the tooltip position nearest of the item nearest to the event position\n\t */\n nearest(items, eventPosition) {\n if (!items.length) {\n return false;\n }\n\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n\n return {\n x,\n y\n };\n }\n};\n\n// Helper to push or concat based on if the 2nd parameter is an array or not\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n // base = base.concat(toPush);\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n\n return base;\n}\n\n/**\n * Returns array of strings split by newline\n * @param {*} str - The value to split by newline.\n * @returns {string|string[]} value if newline present - Returned from String split() method\n * @function\n */\nfunction splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\n\n\n/**\n * Private helper to create a tooltip item model\n * @param {Chart} chart\n * @param {ActiveElement} item - {element, index, datasetIndex} to create the tooltip item for\n * @return new tooltip item\n */\nfunction createTooltipItem(chart, item) {\n const {element, datasetIndex, index} = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const {label, value} = controller.getLabelAndValue(index);\n\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\n\n/**\n * Get the size of the tooltip\n */\nfunction getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const {body, footer, title} = tooltip;\n const {boxWidth, boxHeight} = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n\n // Count of all lines in the body\n let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight\n\t\t\t+ (titleLineCount - 1) * options.titleSpacing\n\t\t\t+ options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n // Body lines may include some extra height depending on boxHeight\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight\n\t\t\t+ (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight\n\t\t\t+ (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop\n\t\t\t+ footerLineCount * footerFont.lineHeight\n\t\t\t+ (footerLineCount - 1) * options.footerSpacing;\n }\n\n // Title width\n let widthPadding = 0;\n const maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n\n ctx.save();\n\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n\n // Body width\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n\n // Body lines may include some extra width due to the color box\n widthPadding = options.displayColors ? (boxWidth + 2 + options.boxPadding) : 0;\n each(body, (bodyItem) => {\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n\n // Reset back to 0\n widthPadding = 0;\n\n // Footer width\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n\n ctx.restore();\n\n // Add padding\n width += padding.width;\n\n return {width, height};\n}\n\nfunction determineYAlign(chart, size) {\n const {y, height} = size;\n\n if (y < height / 2) {\n return 'top';\n } else if (y > (chart.height - height / 2)) {\n return 'bottom';\n }\n return 'center';\n}\n\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const {x, width} = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\n\nfunction determineXAlign(chart, options, size, yAlign) {\n const {x, width} = size;\n const {width: chartWidth, chartArea: {left, right}} = chart;\n let xAlign = 'center';\n\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n\n return xAlign;\n}\n\n/**\n * Helper to get the alignment of a tooltip given the size\n */\nfunction determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\n\nfunction alignX(size, xAlign) {\n let {x, width} = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= (width / 2);\n }\n return x;\n}\n\nfunction alignY(size, yAlign, paddingAndSize) {\n // eslint-disable-next-line prefer-const\n let {y, height} = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= (height / 2);\n }\n return y;\n}\n\n/**\n * Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment\n */\nfunction getBackgroundPoint(options, size, alignment, chart) {\n const {caretSize, caretPadding, cornerRadius} = options;\n const {xAlign, yAlign} = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\n\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n\n return align === 'center'\n ? tooltip.x + tooltip.width / 2\n : align === 'right'\n ? tooltip.x + tooltip.width - padding.right\n : tooltip.x + padding.left;\n}\n\n/**\n * Helper to build before and after body lines\n */\nfunction getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\n\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\n\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\n\nconst defaultCallbacks = {\n // Args are: (tooltipItems, data)\n beforeTitle: noop,\n title(tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n\n return '';\n },\n afterTitle: noop,\n\n // Args are: (tooltipItems, data)\n beforeBody: noop,\n\n // Args are: (tooltipItem, data)\n beforeLabel: noop,\n label(tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n\n let label = tooltipItem.dataset.label || '';\n\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0,\n };\n },\n labelTextColor() {\n return this.options.bodyColor;\n },\n labelPointStyle(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation,\n };\n },\n afterLabel: noop,\n\n // Args are: (tooltipItems, data)\n afterBody: noop,\n\n // Args are: (tooltipItems, data)\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n};\n\n/**\n * Invoke callback from object with context and arguments.\n * If callback returns `undefined`, then will be invoked default callback.\n * @param {Record} callbacks\n * @param {keyof typeof defaultCallbacks} name\n * @param {*} ctx\n * @param {*} arg\n * @returns {any}\n */\nfunction invokeCallbackWithFallback(callbacks, name, ctx, arg) {\n const result = callbacks[name].call(ctx, arg);\n\n if (typeof result === 'undefined') {\n return defaultCallbacks[name].call(ctx, arg);\n }\n\n return result;\n}\n\nexport class Tooltip extends Element {\n\n /**\n * @namespace Chart.Tooltip.positioners\n */\n static positioners = positioners;\n\n constructor(config) {\n super();\n\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n // TODO: V4, make this private, rename to `_labelStyles`, and combine with `labelPointStyles`\n // and `labelTextColors` to create a single variable\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n\n /**\n\t * @private\n\t */\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n\n if (cached) {\n return cached;\n }\n\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n\n return animations;\n }\n\n /**\n\t * @protected\n\t */\n getContext() {\n return this.$context ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n\n getTitle(context, options) {\n const {callbacks} = options;\n\n const beforeTitle = invokeCallbackWithFallback(callbacks, 'beforeTitle', this, context);\n const title = invokeCallbackWithFallback(callbacks, 'title', this, context);\n const afterTitle = invokeCallbackWithFallback(callbacks, 'afterTitle', this, context);\n\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n\n return lines;\n }\n\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(\n invokeCallbackWithFallback(options.callbacks, 'beforeBody', this, tooltipItems)\n );\n }\n\n getBody(tooltipItems, options) {\n const {callbacks} = options;\n const bodyItems = [];\n\n each(tooltipItems, (context) => {\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(invokeCallbackWithFallback(scoped, 'beforeLabel', this, context)));\n pushOrConcat(bodyItem.lines, invokeCallbackWithFallback(scoped, 'label', this, context));\n pushOrConcat(bodyItem.after, splitNewlines(invokeCallbackWithFallback(scoped, 'afterLabel', this, context)));\n\n bodyItems.push(bodyItem);\n });\n\n return bodyItems;\n }\n\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(\n invokeCallbackWithFallback(options.callbacks, 'afterBody', this, tooltipItems)\n );\n }\n\n // Get the footer and beforeFooter and afterFooter lines\n getFooter(tooltipItems, options) {\n const {callbacks} = options;\n\n const beforeFooter = invokeCallbackWithFallback(callbacks, 'beforeFooter', this, tooltipItems);\n const footer = invokeCallbackWithFallback(callbacks, 'footer', this, tooltipItems);\n const afterFooter = invokeCallbackWithFallback(callbacks, 'afterFooter', this, tooltipItems);\n\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n\n return lines;\n }\n\n /**\n\t * @private\n\t */\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n\n for (i = 0, len = active.length; i < len; ++i) {\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n\n // If the user provided a filter function, use it to modify the tooltip items\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n }\n\n // If the user provided a sorting function, use it to modify the tooltip items\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n }\n\n // Determine colors for boxes\n each(tooltipItems, (context) => {\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(invokeCallbackWithFallback(scoped, 'labelColor', this, context));\n labelPointStyles.push(invokeCallbackWithFallback(scoped, 'labelPointStyle', this, context));\n labelTextColors.push(invokeCallbackWithFallback(scoped, 'labelTextColor', this, context));\n });\n\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n\n if (changed && options.external) {\n options.external.call(this, {chart: this.chart, tooltip: this, replay});\n }\n }\n\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n\n getCaretPosition(tooltipPoint, size, options) {\n const {xAlign, yAlign} = this;\n const {caretSize, cornerRadius} = options;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n const {x: ptX, y: ptY} = tooltipPoint;\n const {width, height} = size;\n let x1, x2, x3, y1, y2, y3;\n\n if (yAlign === 'center') {\n y2 = ptY + (height / 2);\n\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n\n // Left draws bottom -> top, this y1 is on the bottom\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n\n // Right draws top -> bottom, thus y1 is on the top\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + (caretSize);\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n\n // Top draws left -> right, thus x1 is on the left\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n\n // Bottom draws right -> left, thus x1 is on the right\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {x1, x2, x3, y1, y2, y3};\n }\n\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n\n pt.x = getAlignedX(this, options.titleAlign, options);\n\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n\n for (i = 0; i < length; ++i) {\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing; // Line Height and spacing\n\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing\n }\n }\n }\n }\n\n /**\n\t * @private\n\t */\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColor = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const {boxHeight, boxWidth} = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2, // fit the circle in the box\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n // Recalculate x and y for drawPoint() because its expecting\n // x and y to be center of figure (instead of top left)\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n\n // Fill the point with white so that colours merge nicely if the opacity is < 1\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n\n // Draw the point\n ctx.strokeStyle = labelColor.borderColor;\n ctx.fillStyle = labelColor.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n // Border\n ctx.lineWidth = isObject(labelColor.borderWidth) ? Math.max(...Object.values(labelColor.borderWidth)) : (labelColor.borderWidth || 1); // TODO, v4 remove fallback\n ctx.strokeStyle = labelColor.borderColor;\n ctx.setLineDash(labelColor.borderDash || []);\n ctx.lineDashOffset = labelColor.borderDashOffset || 0;\n\n // Fill a white rect so that colours merge nicely if the opacity is < 1\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - 2);\n const borderRadius = toTRBLCorners(labelColor.borderRadius);\n\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n ctx.fill();\n ctx.stroke();\n\n // Inner square\n ctx.fillStyle = labelColor.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n // Normal rect\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n // Inner square\n ctx.fillStyle = labelColor.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n\n // restore fillStyle\n ctx.fillStyle = this.labelTextColors[i];\n }\n\n drawBody(pt, ctx, options) {\n const {body} = this;\n const {bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n\n const fillLineOfText = function(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n\n // Before body lines\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right'\n ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n : 0;\n\n // Draw body lines now\n for (i = 0, ilen = body.length; i < ilen; ++i) {\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n\n lines = bodyItem.lines;\n // Draw Legend-like boxes if needed\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n\n for (j = 0, jlen = lines.length; j < jlen; ++j) {\n fillLineOfText(lines[j]);\n // Reset for any lines that don't include colorbox\n bodyLineHeight = bodyFont.lineHeight;\n }\n\n each(bodyItem.after, fillLineOfText);\n }\n\n // Reset back to 0 for after body\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n\n // After body lines\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing; // Remove last body spacing\n }\n\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n\n footerFont = toFont(options.footerFont);\n\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n\n for (i = 0; i < length; ++i) {\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n\n drawBackground(pt, ctx, tooltipSize, options) {\n const {xAlign, yAlign} = this;\n const {x, y} = pt;\n const {width, height} = tooltipSize;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(options.cornerRadius);\n\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n\n ctx.fill();\n\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n\n /**\n\t * Update x/y animation targets when _active elements are animating too\n\t * @private\n\t */\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n\n /**\n * Determine if the tooltip will draw anything\n * @returns {boolean} True if the tooltip will render\n */\n _willRender() {\n return !!this.opacity;\n }\n\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n\n if (!opacity) {\n return;\n }\n\n this._updateAnimationTarget(options);\n\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n\n // IE11/Edge does not like very small opacities, so snap to 0\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n\n const padding = toPadding(options.padding);\n\n // Truthy/falsey value for empty tooltip\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n\n // Draw Background\n this.drawBackground(pt, ctx, tooltipSize, options);\n\n overrideTextDirection(ctx, options.textDirection);\n\n pt.y += padding.top;\n\n // Titles\n this.drawTitle(pt, ctx, options);\n\n // Body\n this.drawBody(pt, ctx, options);\n\n // Footer\n this.drawFooter(pt, ctx, options);\n\n restoreTextDirection(ctx, options.textDirection);\n\n ctx.restore();\n }\n }\n\n /**\n\t * Get active elements in the tooltip\n\t * @returns {Array} Array of elements that are active in the tooltip\n\t */\n getActiveElements() {\n return this._active || [];\n }\n\n /**\n\t * Set active elements in the tooltip\n\t * @param {array} activeElements Array of active datasetIndex/index pairs.\n\t * @param {object} eventPosition Synthetic event position used in positioning\n\t */\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.chart.getDatasetMeta(datasetIndex);\n\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n\n /**\n\t * Handle an event\n\t * @param {ChartEvent} e - The event to handle\n\t * @param {boolean} [replay] - This is a replayed event (from update)\n\t * @param {boolean} [inChartArea] - The event is inside chartArea\n\t * @returns {boolean} true if the tooltip changed\n\t */\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n\n // When there are multiple items shown, but the tooltip position is nearest mode\n // an update may need to be made because our position may have changed even though\n // the items are the same as before.\n const positionChanged = this._positionChanged(active, e);\n\n // Remember Last Actives\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n\n // Only handle target event on tooltip change\n if (changed) {\n this._active = active;\n\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n\n this.update(true, replay);\n }\n }\n\n return changed;\n }\n\n /**\n\t * Helper for determining the active elements for event\n\t * @param {ChartEvent} e - The event to handle\n\t * @param {InteractionItem[]} lastActive - Previously active elements\n\t * @param {boolean} [replay] - This is a replayed event (from update)\n\t * @param {boolean} [inChartArea] - The event is inside chartArea\n\t * @returns {InteractionItem[]} - Active elements\n\t * @private\n\t */\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n\n if (e.type === 'mouseout') {\n return [];\n }\n\n if (!inChartArea) {\n // Let user control the active elements outside chartArea. Eg. using Legend.\n // But make sure that active elements are still valid.\n return lastActive.filter(i =>\n this.chart.data.datasets[i.datasetIndex] &&\n this.chart.getDatasetMeta(i.datasetIndex).controller.getParsed(i.index) !== undefined\n );\n }\n\n // Find Active Elements for tooltips\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n\n if (options.reverse) {\n active.reverse();\n }\n\n return active;\n }\n\n /**\n\t * Determine if the active elements + event combination changes the\n\t * tooltip position\n\t * @param {array} active - Active elements\n\t * @param {ChartEvent} e - Event that triggered the position change\n\t * @returns {boolean} True if the position has changed\n\t */\n _positionChanged(active, e) {\n const {caretX, caretY, options} = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\n\nexport default {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n\n afterInit(chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({chart, options});\n }\n },\n\n beforeUpdate(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n\n reset(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n\n afterDraw(chart) {\n const tooltip = chart.tooltip;\n\n if (tooltip && tooltip._willRender()) {\n const args = {\n tooltip\n };\n\n if (chart.notifyPlugins('beforeTooltipDraw', {...args, cancelable: true}) === false) {\n return;\n }\n\n tooltip.draw(chart.ctx);\n\n chart.notifyPlugins('afterTooltipDraw', args);\n }\n },\n\n afterEvent(chart, args) {\n if (chart.tooltip) {\n // If the event is replayed from `update`, we should evaluate with the final positions.\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n // notify chart about the change, so it will render\n args.changed = true;\n }\n }\n },\n\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold',\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {\n },\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold',\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts) => opts.bodyFont.size,\n boxWidth: (ctx, opts) => opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart',\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY'],\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: defaultCallbacks\n },\n\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n\n descriptors: {\n _scriptable: (name) => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false,\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n\n // Resolve additionally from `interaction` options and defaults.\n additionalOptionScopes: ['interaction']\n};\n","import Scale from '../core/core.scale.js';\nimport {isNullOrUndef, valueOrDefault, _limitValue} from '../helpers/index.js';\n\nconst addIfString = (labels, raw, index, addedLabels) => {\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({index, label: raw});\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\n\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\n\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\n\nfunction _getLabelForValue(value) {\n const labels = this.getLabels();\n\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n}\n\nexport default class CategoryScale extends Scale {\n\n static id = 'category';\n\n /**\n * @type {any}\n */\n static defaults = {\n ticks: {\n callback: _getLabelForValue\n }\n };\n\n constructor(cfg) {\n super(cfg);\n\n /** @type {number} */\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const {index, label} of added) {\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index\n : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n\n determineDataLimits() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this.getMinMax(true);\n\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n\n this.min = min;\n this.max = max;\n }\n\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n\n // If we are viewing some subset of labels, slice the original array\n labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1);\n\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n\n for (let value = min; value <= max; value++) {\n ticks.push({value});\n }\n return ticks;\n }\n\n getLabelForValue(value) {\n return _getLabelForValue.call(this, value);\n }\n\n /**\n\t * @protected\n\t */\n configure() {\n super.configure();\n\n if (!this.isHorizontal()) {\n // For backward compatibility, vertical category scale reverse is inverted.\n this._reversePixels = !this._reversePixels;\n }\n }\n\n // Used to get data value locations. Value can either be an index or a numerical value\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n\n // Must override base implementation because it calls getPixelForValue\n // and category scale can have duplicate values\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n\n getBasePixel() {\n return this.bottom;\n }\n}\n","import {isNullOrUndef} from '../helpers/helpers.core.js';\nimport {almostEquals, almostWhole, niceNum, _decimalPlaces, _setMinAndMaxByKey, sign, toRadians} from '../helpers/helpers.math.js';\nimport Scale from '../core/core.scale.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\n\n/**\n * Generate a set of linear ticks for an axis\n * 1. If generationOptions.min, generationOptions.max, and generationOptions.step are defined:\n * if (max - min) / step is an integer, ticks are generated as [min, min + step, ..., max]\n * Note that the generationOptions.maxCount setting is respected in this scenario\n *\n * 2. If generationOptions.min, generationOptions.max, and generationOptions.count is defined\n * spacing = (max - min) / count\n * Ticks are generated as [min, min + spacing, ..., max]\n *\n * 3. If generationOptions.count is defined\n * spacing = (niceMax - niceMin) / count\n *\n * 4. Compute optimal spacing of ticks using niceNum algorithm\n *\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {object[]} array of tick objects\n */\nfunction generateTicks(generationOptions, dataRange) {\n const ticks = [];\n // To get a \"nice\" value for the tick spacing, we will use the appropriately named\n // \"nice number\" algorithm. See https://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks\n // for details.\n\n const MIN_SPACING = 1e-14;\n const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const {min: rmin, max: rmax} = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n\n // Beyond MIN_SPACING floating point numbers being to lose precision\n // such that we can't do the math necessary to generate ticks\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [{value: rmin}, {value: rmax}];\n }\n\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n // If the calculated num of spaces exceeds maxNumSpaces, recalculate it\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n\n if (!isNullOrUndef(precision)) {\n // If the user specified a precision, round to that number of decimal places\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n // Case 1: If min, max and stepSize are set and they make an evenly spaced scale use it.\n // spacing = step;\n // numSpaces = (max - min) / spacing;\n // Note that we round here to handle the case where almostWhole translated an FP error\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n // Cases 2 & 3, we have a count specified. Handle optional user defined edges to the range.\n // Sometimes these are no-ops, but it makes the code a lot clearer\n // and when a user defined range is specified, we want the correct ticks\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n // Case 4\n numSpaces = (niceMax - niceMin) / spacing;\n\n // If very close to our rounded value, use it.\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n\n // The spacing will have changed in cases 1, 2, and 3 so the factor cannot be computed\n // until this point\n const decimalPlaces = Math.max(\n _decimalPlaces(spacing),\n _decimalPlaces(niceMin)\n );\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({value: min});\n\n if (niceMin < min) {\n j++; // Skip niceMin\n }\n // If the next nice tick is close to min, skip it\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n\n for (; j < numSpaces; ++j) {\n const tickValue = Math.round((niceMin + j * spacing) * factor) / factor;\n if (maxDefined && tickValue > max) {\n break;\n }\n ticks.push({value: tickValue});\n }\n\n if (maxDefined && includeBounds && niceMax !== max) {\n // If the previous tick is too close to max, replace it with max, else add max\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({value: max});\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({value: niceMax});\n }\n\n return ticks;\n}\n\nfunction relativeLabelSize(value, minSpacing, {horizontal, minRotation}) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\n\nexport default class LinearScaleBase extends Scale {\n\n constructor(cfg) {\n super(cfg);\n\n /** @type {number} */\n this.start = undefined;\n /** @type {number} */\n this.end = undefined;\n /** @type {number} */\n this._startValue = undefined;\n /** @type {number} */\n this._endValue = undefined;\n this._valueRange = 0;\n }\n\n parse(raw, index) { // eslint-disable-line no-unused-vars\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n\n return +raw;\n }\n\n handleTickRangeOptions() {\n const {beginAtZero} = this.options;\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this;\n\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n\n if (min === max) {\n let offset = max === 0 ? 1 : Math.abs(max * 0.05);\n\n setMax(max + offset);\n\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n\n getTickLimit() {\n const tickOpts = this.options.ticks;\n // eslint-disable-next-line prefer-const\n let {maxTicksLimit, stepSize} = tickOpts;\n let maxTicks;\n\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n\n return maxTicks;\n }\n\n /**\n\t * @protected\n\t */\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n\n // Figure out what the max number of ticks we can support it is based on the size of\n // the axis area. For now, we say that the minimum tick spacing in pixels must be 40\n // We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n // the graph. Make sure we always have at least 2 ticks\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks(numericGeneratorOptions, dataRange);\n\n // At this point, we need to update our max and min given the tick values,\n // since we probably have expanded the range of the scale\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n\n if (opts.reverse) {\n ticks.reverse();\n\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n\n return ticks;\n }\n\n /**\n\t * @protected\n\t */\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n\n super.configure();\n\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\n","import {isFinite} from '../helpers/helpers.core.js';\nimport LinearScaleBase from './scale.linearbase.js';\nimport Ticks from '../core/core.ticks.js';\nimport {toRadians} from '../helpers/index.js';\n\nexport default class LinearScale extends LinearScaleBase {\n\n static id = 'linear';\n\n /**\n * @type {any}\n */\n static defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n };\n\n\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n\n this.min = isFinite(min) ? min : 0;\n this.max = isFinite(max) ? max : 1;\n\n // Common base implementation to handle min, max, beginAtZero\n this.handleTickRangeOptions();\n }\n\n /**\n\t * Returns the maximum number of ticks based on the scale dimension\n\t * @protected\n \t */\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n\n // Utils\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\n","import {finiteOrDefault, isFinite} from '../helpers/helpers.core.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\nimport {_setMinAndMaxByKey, log10} from '../helpers/helpers.math.js';\nimport Scale from '../core/core.scale.js';\nimport LinearScaleBase from './scale.linearbase.js';\nimport Ticks from '../core/core.ticks.js';\n\nconst log10Floor = v => Math.floor(log10(v));\nconst changeExponent = (v, m) => Math.pow(10, log10Floor(v) + m);\n\nfunction isMajor(tickVal) {\n const remain = tickVal / (Math.pow(10, log10Floor(tickVal)));\n return remain === 1;\n}\n\nfunction steps(min, max, rangeExp) {\n const rangeStep = Math.pow(10, rangeExp);\n const start = Math.floor(min / rangeStep);\n const end = Math.ceil(max / rangeStep);\n return end - start;\n}\n\nfunction startExp(min, max) {\n const range = max - min;\n let rangeExp = log10Floor(range);\n while (steps(min, max, rangeExp) > 10) {\n rangeExp++;\n }\n while (steps(min, max, rangeExp) < 10) {\n rangeExp--;\n }\n return Math.min(rangeExp, log10Floor(min));\n}\n\n\n/**\n * Generate a set of logarithmic ticks\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {object[]} array of tick objects\n */\nfunction generateTicks(generationOptions, {min, max}) {\n min = finiteOrDefault(generationOptions.min, min);\n const ticks = [];\n const minExp = log10Floor(min);\n let exp = startExp(min, max);\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n const stepSize = Math.pow(10, exp);\n const base = minExp > exp ? Math.pow(10, minExp) : 0;\n const start = Math.round((min - base) * precision) / precision;\n const offset = Math.floor((min - base) / stepSize / 10) * stepSize * 10;\n let significand = Math.floor((start - offset) / Math.pow(10, exp));\n let value = finiteOrDefault(generationOptions.min, Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision);\n while (value < max) {\n ticks.push({value, major: isMajor(value), significand});\n if (significand >= 10) {\n significand = significand < 15 ? 15 : 20;\n } else {\n significand++;\n }\n if (significand >= 20) {\n exp++;\n significand = 2;\n precision = exp >= 0 ? 1 : precision;\n }\n value = Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision;\n }\n const lastTick = finiteOrDefault(generationOptions.max, value);\n ticks.push({value: lastTick, major: isMajor(lastTick), significand});\n\n return ticks;\n}\n\nexport default class LogarithmicScale extends Scale {\n\n static id = 'logarithmic';\n\n /**\n * @type {any}\n */\n static defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n };\n\n\n constructor(cfg) {\n super(cfg);\n\n /** @type {number} */\n this.start = undefined;\n /** @type {number} */\n this.end = undefined;\n /** @type {number} */\n this._startValue = undefined;\n this._valueRange = 0;\n }\n\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isFinite(value) && value > 0 ? value : null;\n }\n\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n\n this.min = isFinite(min) ? Math.max(0, min) : null;\n this.max = isFinite(max) ? Math.max(0, max) : null;\n\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n\n // if data has `0` in it or `beginAtZero` is true, min (non zero) value is at bottom\n // of scale, and it does not equal suggestedMin, lower the min bound by one exp.\n if (this._zero && this.min !== this._suggestedMin && !isFinite(this._userMin)) {\n this.min = min === changeExponent(this.min, 0) ? changeExponent(this.min, -1) : changeExponent(this.min, 0);\n }\n\n this.handleTickRangeOptions();\n }\n\n handleTickRangeOptions() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n\n if (min === max) {\n if (min <= 0) { // includes null\n setMin(1);\n setMax(10);\n } else {\n setMin(changeExponent(min, -1));\n setMax(changeExponent(max, +1));\n }\n }\n if (min <= 0) {\n setMin(changeExponent(max, -1));\n }\n if (max <= 0) {\n\n setMax(changeExponent(min, +1));\n }\n\n this.min = min;\n this.max = max;\n }\n\n buildTicks() {\n const opts = this.options;\n\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n\n // At this point, we need to update our max and min given the tick values,\n // since we probably have expanded the range of the scale\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n\n if (opts.reverse) {\n ticks.reverse();\n\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n\n return ticks;\n }\n\n /**\n\t * @param {number} value\n\t * @return {string}\n\t */\n getLabelForValue(value) {\n return value === undefined\n ? '0'\n : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n\n /**\n\t * @protected\n\t */\n configure() {\n const start = this.min;\n\n super.configure();\n\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min\n ? 0\n : (log10(value) - this._startValue) / this._valueRange);\n }\n\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\n","import defaults from '../core/core.defaults.js';\nimport {_longestText, addRoundedRectPath, renderText, _isPointInArea} from '../helpers/helpers.canvas.js';\nimport {HALF_PI, TAU, toDegrees, toRadians, _normalizeAngle, PI} from '../helpers/helpers.math.js';\nimport LinearScaleBase from './scale.linearbase.js';\nimport Ticks from '../core/core.ticks.js';\nimport {valueOrDefault, isArray, isFinite, callback as callCallback, isNullOrUndef} from '../helpers/helpers.core.js';\nimport {createContext, toFont, toPadding, toTRBLCorners} from '../helpers/helpers.options.js';\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\n\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [label];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\n\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - (size / 2),\n end: pos + (size / 2)\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n\n return {\n start: pos,\n end: pos + size\n };\n}\n\n/**\n * Helper function to fit a radial linear scale with point labels\n */\nfunction fitWithPointLabels(scale) {\n\n // Right, this is really confusing and there is a lot of maths going on here\n // The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9\n //\n // Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif\n //\n // Solution:\n //\n // We assume the radius of the polygon is half the size of the canvas at first\n // at each index we check if the text overlaps.\n //\n // Where it does, we store that angle and that index.\n //\n // After finding the largest index and angle we calculate how much we need to remove\n // from the shape radius to move the point inwards by that x.\n //\n // We average the left and right distances to get the maximum shape radius that can fit in the box\n // along with labels.\n //\n // Once we have that, we can find the centre point for the chart, by taking the x text protrusion\n // on each side, removing that from the size, halving it and adding the left x protrusion width.\n //\n // This will mean we have a shape fitted to the canvas, as large as it can be with the labels\n // and position it in the most space efficient manner\n //\n // https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif\n\n // Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.\n // Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n\n for (let i = 0; i < valueCount; i++) {\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n\n scale.setCenterPoint(\n orig.l - limits.l,\n limits.r - orig.r,\n orig.t - limits.t,\n limits.b - orig.b\n );\n\n // Now that text size is determined, compute the full positions\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\n\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\n\nfunction createPointLabelItem(scale, index, itemOpts) {\n const outerDistance = scale.drawingArea;\n const {extra, additionalAngle, padding, size} = itemOpts;\n const pointLabelPosition = scale.getPointPosition(index, outerDistance + extra + padding, additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n return {\n // if to draw or overlapped\n visible: true,\n\n // Text position\n x: pointLabelPosition.x,\n y,\n\n // Text rendering data\n textAlign,\n\n // Bounding box\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n };\n}\n\nfunction isNotOverlapped(item, area) {\n if (!area) {\n return true;\n }\n const {left, top, right, bottom} = item;\n const apexesInArea = _isPointInArea({x: left, y: top}, area) || _isPointInArea({x: left, y: bottom}, area) ||\n _isPointInArea({x: right, y: top}, area) || _isPointInArea({x: right, y: bottom}, area);\n return !apexesInArea;\n}\n\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const {centerPointLabels, display} = opts.pointLabels;\n const itemOpts = {\n extra: getTickBackdropHeight(opts) / 2,\n additionalAngle: centerPointLabels ? PI / valueCount : 0\n };\n let area;\n\n for (let i = 0; i < valueCount; i++) {\n itemOpts.padding = padding[i];\n itemOpts.size = labelSizes[i];\n\n const item = createPointLabelItem(scale, i, itemOpts);\n items.push(item);\n if (display === 'auto') {\n item.visible = isNotOverlapped(item, area);\n if (item.visible) {\n area = item;\n }\n }\n }\n return items;\n}\n\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n\n return 'right';\n}\n\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= (w / 2);\n }\n return x;\n}\n\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= (h / 2);\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\n\nfunction drawPointLabelBox(ctx, opts, item) {\n const {left, top, right, bottom} = item;\n const {backdropColor} = opts;\n\n if (!isNullOrUndef(backdropColor)) {\n const borderRadius = toTRBLCorners(opts.borderRadius);\n const padding = toPadding(opts.backdropPadding);\n ctx.fillStyle = backdropColor;\n\n const backdropLeft = left - padding.left;\n const backdropTop = top - padding.top;\n const backdropWidth = right - left + padding.width;\n const backdropHeight = bottom - top + padding.height;\n\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: backdropLeft,\n y: backdropTop,\n w: backdropWidth,\n h: backdropHeight,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n }\n }\n}\n\nfunction drawPointLabels(scale, labelCount) {\n const {ctx, options: {pointLabels}} = scale;\n\n for (let i = labelCount - 1; i >= 0; i--) {\n const item = scale._pointLabelItems[i];\n if (!item.visible) {\n // overlapping\n continue;\n }\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n drawPointLabelBox(ctx, optsAtIndex, item);\n const plFont = toFont(optsAtIndex.font);\n const {x, y, textAlign} = item;\n\n renderText(\n ctx,\n scale._pointLabels[i],\n x,\n y + (plFont.lineHeight / 2),\n plFont,\n {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n }\n );\n }\n}\n\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const {ctx} = scale;\n if (circular) {\n // Draw circular arcs between the points\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n // Draw straight lines connecting each index\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n\n for (let i = 1; i < labelCount; i++) {\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\n\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount, borderOpts) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n\n const {color, lineWidth} = gridLineOpts;\n\n if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) {\n return;\n }\n\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(borderOpts.dash || []);\n ctx.lineDashOffset = borderOpts.dashOffset;\n\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\n\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\n\nexport default class RadialLinearScale extends LinearScaleBase {\n\n static id = 'radialLinear';\n\n /**\n * @type {any}\n */\n static defaults = {\n display: true,\n\n // Boolean - Whether to animate scaling the chart from the centre\n animate: true,\n position: 'chartArea',\n\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n\n grid: {\n circular: false\n },\n\n startAngle: 0,\n\n // label settings\n ticks: {\n // Boolean - Show a backdrop to the scale label\n showLabelBackdrop: true,\n\n callback: Ticks.formatters.numeric\n },\n\n pointLabels: {\n backdropColor: undefined,\n\n // Number - The backdrop padding above & below the label in pixels\n backdropPadding: 2,\n\n // Boolean - if true, show point labels\n display: true,\n\n // Number - Point label font size in pixels\n font: {\n size: 10\n },\n\n // Function - Used to convert point labels\n callback(label) {\n return label;\n },\n\n // Number - Additionl padding between scale and pointLabel\n padding: 5,\n\n // Boolean - if true, center point labels to slices in polar chart\n centerPointLabels: false\n }\n };\n\n static defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n };\n\n static descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n };\n\n constructor(cfg) {\n super(cfg);\n\n /** @type {number} */\n this.xCenter = undefined;\n /** @type {number} */\n this.yCenter = undefined;\n /** @type {number} */\n this.drawingArea = undefined;\n /** @type {string[]} */\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n\n setDimensions() {\n // Set the unconstrained dimension before label rotation\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n\n determineDataLimits() {\n const {min, max} = this.getMinMax(false);\n\n this.min = isFinite(min) && !isNaN(min) ? min : 0;\n this.max = isFinite(max) && !isNaN(max) ? max : 0;\n\n // Common base implementation to handle min, max, beginAtZero\n this.handleTickRangeOptions();\n }\n\n /**\n\t * Returns the maximum number of ticks based on the scale dimension\n\t * @protected\n\t */\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n\n // Point labels\n this._pointLabels = this.getLabels()\n .map((value, index) => {\n const label = callCallback(this.options.pointLabels.callback, [value, index], this);\n return label || label === 0 ? label : '';\n })\n .filter((v, i) => this.chart.getDataVisibility(i));\n }\n\n fit() {\n const opts = this.options;\n\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n\n // Take into account half font size + the yPadding of the top value\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n\n getPointLabelPosition(index) {\n const {left, top, right, bottom} = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom,\n };\n }\n\n /**\n\t * @protected\n\t */\n drawBackground() {\n const {backgroundColor, grid: {circular}} = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n\n /**\n\t * @protected\n\t */\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const {angleLines, grid, border} = opts;\n const labelCount = this._pointLabels.length;\n\n let i, offset, position;\n\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n\n if (grid.display) {\n this.ticks.forEach((tick, index) => {\n if (index !== 0 || (index === 0 && this.min < 0)) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const context = this.getContext(index);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n\n drawRadiusLine(this, optsAtIndex, offset, labelCount, optsAtIndexBorder);\n }\n });\n }\n\n if (angleLines.display) {\n ctx.save();\n\n for (i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const {color, lineWidth} = optsAtIndex;\n\n if (!lineWidth || !color) {\n continue;\n }\n\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n\n offset = this.getDistanceFromCenterForValue(opts.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n\n ctx.restore();\n }\n }\n\n /**\n\t * @protected\n\t */\n drawBorder() {}\n\n /**\n\t * @protected\n\t */\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n\n if (!tickOpts.display) {\n return;\n }\n\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n\n this.ticks.forEach((tick, index) => {\n if ((index === 0 && this.min >= 0) && !opts.reverse) {\n return;\n }\n\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(\n -width / 2 - padding.left,\n -offset - tickFont.size / 2 - padding.top,\n width + padding.width,\n tickFont.size + padding.height\n );\n }\n\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color,\n strokeColor: optsAtIndex.textStrokeColor,\n strokeWidth: optsAtIndex.textStrokeWidth,\n });\n });\n\n ctx.restore();\n }\n\n /**\n\t * @protected\n\t */\n drawTitle() {}\n}\n","import adapters from '../core/core.adapters.js';\nimport {callback as call, isFinite, isNullOrUndef, mergeIf, valueOrDefault} from '../helpers/helpers.core.js';\nimport {toRadians, isNumber, _limitValue} from '../helpers/helpers.math.js';\nimport Scale from '../core/core.scale.js';\nimport {_arrayUnique, _filterBetween, _lookup} from '../helpers/helpers.collection.js';\n\n/**\n * @typedef { import('../core/core.adapters.js').TimeUnit } Unit\n * @typedef {{common: boolean, size: number, steps?: number}} Interval\n * @typedef { import('../core/core.adapters.js').DateAdapter } DateAdapter\n */\n\n/**\n * @type {Object}\n */\nconst INTERVALS = {\n millisecond: {common: true, size: 1, steps: 1000},\n second: {common: true, size: 1000, steps: 60},\n minute: {common: true, size: 60000, steps: 60},\n hour: {common: true, size: 3600000, steps: 24},\n day: {common: true, size: 86400000, steps: 30},\n week: {common: false, size: 604800000, steps: 4},\n month: {common: true, size: 2.628e9, steps: 12},\n quarter: {common: false, size: 7.884e9, steps: 4},\n year: {common: true, size: 3.154e10}\n};\n\n/**\n * @type {Unit[]}\n */\nconst UNITS = /** @type Unit[] */ /* #__PURE__ */ (Object.keys(INTERVALS));\n\n/**\n * @param {number} a\n * @param {number} b\n */\nfunction sorter(a, b) {\n return a - b;\n}\n\n/**\n * @param {TimeScale} scale\n * @param {*} input\n * @return {number}\n */\nfunction parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n\n const adapter = scale._adapter;\n const {parser, round, isoWeekday} = scale._parseOpts;\n let value = input;\n\n if (typeof parser === 'function') {\n value = parser(value);\n }\n\n // Only parse if it's not a timestamp already\n if (!isFinite(value)) {\n value = typeof parser === 'string'\n ? adapter.parse(value, parser)\n : adapter.parse(value);\n }\n\n if (value === null) {\n return null;\n }\n\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true)\n ? adapter.startOf(value, 'isoWeek', isoWeekday)\n : adapter.startOf(value, round);\n }\n\n return +value;\n}\n\n/**\n * Figures out what unit results in an appropriate number of auto-generated ticks\n * @param {Unit} minUnit\n * @param {number} min\n * @param {number} max\n * @param {number} capacity\n * @return {object}\n */\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n\n for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n\n return UNITS[ilen - 1];\n}\n\n/**\n * Figures out what unit to format a set of ticks with\n * @param {TimeScale} scale\n * @param {number} numTicks\n * @param {Unit} minUnit\n * @param {number} min\n * @param {number} max\n * @return {Unit}\n */\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\n\n/**\n * @param {Unit} unit\n * @return {object}\n */\nfunction determineMajorUnit(unit) {\n for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\n\n/**\n * @param {object} ticks\n * @param {number} time\n * @param {number[]} [timestamps] - if defined, snap to these timestamps\n */\nfunction addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const {lo, hi} = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\n\n/**\n * @param {TimeScale} scale\n * @param {object[]} ticks\n * @param {object} map\n * @param {Unit} majorUnit\n * @return {object[]}\n */\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n\n for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\n\n/**\n * @param {TimeScale} scale\n * @param {number[]} values\n * @param {Unit|undefined} [majorUnit]\n * @return {object[]}\n */\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n /** @type {Object} */\n const map = {};\n const ilen = values.length;\n let i, value;\n\n for (i = 0; i < ilen; ++i) {\n value = values[i];\n map[value] = i;\n\n ticks.push({\n value,\n major: false\n });\n }\n\n // We set the major ticks separately from the above loop because calling startOf for every tick\n // is expensive when there is a large number of ticks\n return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\n\nexport default class TimeScale extends Scale {\n\n static id = 'time';\n\n /**\n * @type {any}\n */\n static defaults = {\n /**\n * Scale boundary strategy (bypassed by min/max time options)\n * - `data`: make sure data are fully visible, ticks outside are removed\n * - `ticks`: make sure ticks are fully visible, data outside are truncated\n * @see https://github.com/chartjs/Chart.js/pull/4556\n * @since 2.7.0\n */\n bounds: 'data',\n\n adapters: {},\n time: {\n parser: false, // false == a pattern string from or a custom callback that converts its argument to a timestamp\n unit: false, // false == automatic or override with week, month, year, etc.\n round: false, // none, or override with week, month, year, etc.\n isoWeekday: false, // override week start day\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n /**\n * Ticks generation input values:\n * - 'auto': generates \"optimal\" ticks based on scale size and time options.\n * - 'data': generates ticks from data (including labels from data {t|x|y} objects).\n * - 'labels': generates ticks from user given `data.labels` values ONLY.\n * @see https://github.com/chartjs/Chart.js/pull/4507\n * @since 2.7.0\n */\n source: 'auto',\n\n callback: false,\n\n major: {\n enabled: false\n }\n }\n };\n\n /**\n\t * @param {object} props\n\t */\n constructor(props) {\n super(props);\n\n /** @type {{data: number[], labels: number[], all: number[]}} */\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n\n /** @type {Unit} */\n this._unit = 'day';\n /** @type {Unit=} */\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n\n init(scaleOpts, opts = {}) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n /** @type {DateAdapter} */\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n\n adapter.init(opts);\n\n // Backward compatibility: before introducing adapter, `displayFormats` was\n // supposed to contain *all* unit/string pairs but this can't be resolved\n // when loading the scale (adapters are loaded afterward), so let's populate\n // missing formats on update\n mergeIf(time.displayFormats, adapter.formats());\n\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n\n super.init(scaleOpts);\n\n this._normalized = opts.normalized;\n }\n\n /**\n\t * @param {*} raw\n\t * @param {number?} [index]\n\t * @return {number}\n\t */\n parse(raw, index) { // eslint-disable-line no-unused-vars\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n // eslint-disable-next-line prefer-const\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n\n /**\n\t\t * @param {object} bounds\n\t\t */\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n\n // If we have user provided `min` and `max` labels / data bounds can be ignored\n if (!minDefined || !maxDefined) {\n // Labels are always considered, when user did not force bounds\n _applyBounds(this._getLabelBounds());\n\n // If `bounds` is `'ticks'` and `ticks.source` is `'labels'`,\n // data bounds are ignored (and don't need to be determined)\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n\n min = isFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n\n // Make sure that max is strictly higher than min (required by the timeseries lookup table)\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n\n /**\n\t * @private\n\t */\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {min, max};\n }\n\n /**\n\t * @return {object[]}\n\t */\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n\n const min = this.min;\n const max = this.max;\n\n const ticks = _filterBetween(timestamps, min, max);\n\n // PRIVATE\n // determineUnitForFormatting relies on the number of ticks so we don't use it when\n // autoSkip is enabled because we don't yet know what the final number of ticks will be\n this._unit = timeOpts.unit || (tickOpts.autoSkip\n ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min))\n : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined\n : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n\n if (options.reverse) {\n ticks.reverse();\n }\n\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n\n afterAutoSkip() {\n // Offsets for bar charts need to be handled with the auto skipped\n // ticks. Once ticks have been skipped, we re-compute the offsets.\n if (this.options.offsetAfterAutoskip) {\n this.initOffsets(this.ticks.map(tick => +tick.value));\n }\n }\n\n /**\n\t * Returns the start and end offsets from edges in the form of {start, end}\n\t * where each value is a relative width to the scale and ranges between 0 and 1.\n\t * They add extra margins on the both sides by scaling down the original scale.\n\t * Offsets are added when the `offset` option is true.\n\t * @param {number[]} timestamps\n\t * @protected\n\t */\n initOffsets(timestamps = []) {\n let start = 0;\n let end = 0;\n let first, last;\n\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n\n this._offsets = {start, end, factor: 1 / (start + 1 + end)};\n }\n\n /**\n\t * Generates a maximum of `capacity` timestamps between min and max, rounded to the\n\t * `minor` unit using the given scale time `options`.\n\t * Important: this method can return ticks outside the min and max range, it's the\n\t * responsibility of the calling code to clamp values if needed.\n\t * @protected\n\t */\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n // @ts-ignore\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(options.ticks.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n\n // For 'week' unit, handle the first day of week option\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n\n // Align first ticks on unit\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n\n // Prevent browser from freezing in case user options request millions of milliseconds\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n addTick(ticks, time, timestamps);\n }\n\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n\n // @ts-ignore\n return Object.keys(ticks).sort(sorter).map(x => +x);\n }\n\n /**\n\t * @param {number} value\n\t * @return {string}\n\t */\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n\n /**\n\t * @param {number} value\n\t * @param {string|undefined} format\n\t * @return {string}\n\t */\n format(value, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const fmt = format || formats[unit];\n return this._adapter.format(value, fmt);\n }\n\n /**\n\t * Function to format an individual tick mark\n\t * @param {number} time\n\t * @param {number} index\n\t * @param {object[]} ticks\n\t * @param {string|undefined} [format]\n\t * @return {string}\n\t * @private\n\t */\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formatter = options.ticks.callback;\n\n if (formatter) {\n return call(formatter, [time, index, ticks], this);\n }\n\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n\n return this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n }\n\n /**\n\t * @param {object[]} ticks\n\t */\n generateTickLabels(ticks) {\n let i, ilen, tick;\n\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n\n /**\n\t * @param {number} value - Milliseconds since epoch (1 January 1970 00:00:00 UTC)\n\t * @return {number}\n\t */\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n\n /**\n\t * @param {number} value - Milliseconds since epoch (1 January 1970 00:00:00 UTC)\n\t * @return {number}\n\t */\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n\n /**\n\t * @param {number} pixel\n\t * @return {number}\n\t */\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n\n /**\n\t * @param {string} label\n\t * @return {{w:number, h:number}}\n\t * @private\n\t */\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n\n return {\n w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\n h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\n };\n }\n\n /**\n\t * @param {number} exampleTime\n\t * @return {number}\n\t * @private\n\t */\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n\n // pick the longest format (milliseconds) for guesstimation\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n // subtract 1 - if offset then there's one less label than tick\n // if not offset then one half label padding is added to each end leaving room for one less label\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n\n /**\n\t * @protected\n\t */\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n\n if (timestamps.length) {\n return timestamps;\n }\n\n const metas = this.getMatchingVisibleMetas();\n\n if (this._normalized && metas.length) {\n return (this._cache.data = metas[0].controller.getAllParsedValues(this));\n }\n\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n\n return (this._cache.data = this.normalize(timestamps));\n }\n\n /**\n\t * @protected\n\t */\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n\n if (timestamps.length) {\n return timestamps;\n }\n\n const labels = this.getLabels();\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n timestamps.push(parse(this, labels[i]));\n }\n\n return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps));\n }\n\n /**\n\t * @param {number[]} values\n\t * @protected\n\t */\n normalize(values) {\n // It seems to be somewhat faster to do sorting first\n return _arrayUnique(values.sort(sorter));\n }\n}\n","import TimeScale from './scale.time.js';\nimport {_lookupByKey} from '../helpers/helpers.collection.js';\n\n/**\n * Linearly interpolates the given source `val` using the table. If value is out of bounds, values\n * at edges are used for the interpolation.\n * @param {object} table\n * @param {number} val\n * @param {boolean} [reverse] lookup time based on position instead of vice versa\n * @return {object}\n */\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n ({lo, hi} = _lookupByKey(table, 'pos', val));\n }\n ({pos: prevSource, time: prevTarget} = table[lo]);\n ({pos: nextSource, time: nextTarget} = table[hi]);\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n ({lo, hi} = _lookupByKey(table, 'time', val));\n }\n ({time: prevSource, pos: prevTarget} = table[lo]);\n ({time: nextSource, pos: nextTarget} = table[hi]);\n }\n\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\n\nclass TimeSeriesScale extends TimeScale {\n\n static id = 'timeseries';\n\n /**\n * @type {any}\n */\n static defaults = TimeScale.defaults;\n\n /**\n\t * @param {object} props\n\t */\n constructor(props) {\n super(props);\n\n /** @type {object[]} */\n this._table = [];\n /** @type {number} */\n this._minPos = undefined;\n /** @type {number} */\n this._tableRange = undefined;\n }\n\n /**\n\t * @protected\n\t */\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n\n /**\n\t * Returns an array of {time, pos} objects used to interpolate a specific `time` or position\n\t * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is\n\t * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other\n\t * extremity (left + width or top + height). Note that it would be more optimized to directly\n\t * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need\n\t * to create the lookup table. The table ALWAYS contains at least two items: min and max.\n\t * @param {number[]} timestamps\n\t * @return {object[]}\n\t * @protected\n\t */\n buildLookupTable(timestamps) {\n const {min, max} = this;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n\n for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n\n if (items.length < 2) {\n // In case there is less that 2 timestamps between min and max, the scale is defined by min and max\n return [\n {time: min, pos: 0},\n {time: max, pos: 1}\n ];\n }\n\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n\n // only add points that breaks the scale linearity\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({time: curr, pos: i / (ilen - 1)});\n }\n }\n return table;\n }\n\n /**\n * Generates all timestamps defined in the data.\n * Important: this method can return ticks outside the min and max range, it's the\n * responsibility of the calling code to clamp values if needed.\n * @protected\n */\n _generate() {\n const min = this.min;\n const max = this.max;\n let timestamps = super.getDataTimestamps();\n if (!timestamps.includes(min) || !timestamps.length) {\n timestamps.splice(0, 0, min);\n }\n if (!timestamps.includes(max) || timestamps.length === 1) {\n timestamps.push(max);\n }\n return timestamps.sort((a, b) => a - b);\n }\n\n /**\n\t * Returns all timestamps\n\t * @return {number[]}\n\t * @private\n\t */\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n\n if (timestamps.length) {\n return timestamps;\n }\n\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n // If combining labels and data (data might not contain all labels),\n // we need to recheck uniqueness and sort\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n\n return timestamps;\n }\n\n /**\n\t * @param {number} value - Milliseconds since epoch (1 January 1970 00:00:00 UTC)\n\t * @return {number}\n\t */\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n\n /**\n\t * @param {number} pixel\n\t * @return {number}\n\t */\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\n\nexport default TimeSeriesScale;\n","import type { PropType } from 'vue'\nimport type {\n ChartType,\n ChartData,\n ChartOptions,\n Plugin,\n UpdateMode\n} from 'chart.js'\n\nexport const CommonProps = {\n data: {\n type: Object as PropType,\n required: true\n },\n options: {\n type: Object as PropType,\n default: () => ({})\n },\n plugins: {\n type: Array as PropType,\n default: () => []\n },\n datasetIdKey: {\n type: String,\n default: 'label'\n },\n updateMode: {\n type: String as PropType,\n default: undefined\n }\n} as const\n\nexport const A11yProps = {\n ariaLabel: {\n type: String\n },\n ariaDescribedby: {\n type: String\n }\n} as const\n\nexport const Props = {\n type: {\n type: String as PropType,\n required: true\n },\n destroyDelay: {\n type: Number,\n default: 0 // No delay by default\n },\n ...CommonProps,\n ...A11yProps\n} as const\n","import { isProxy, toRaw, version } from 'vue'\nimport type {\n Chart,\n ChartType,\n ChartData,\n ChartDataset,\n ChartOptions,\n DefaultDataPoint\n} from 'chart.js'\n\nexport const compatProps =\n version[0] === '2'\n ? (internals: I, props: T) =>\n Object.assign(internals, { attrs: props }) as unknown as I & T\n : (internals: I, props: T) =>\n Object.assign(internals, props)\n\nexport function toRawIfProxy(obj: T) {\n return isProxy(obj) ? toRaw(obj) : obj\n}\n\nexport function cloneProxy(obj: T, src = obj) {\n return isProxy(src) ? new Proxy(obj, {}) : obj\n}\n\nexport function setOptions<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(chart: Chart, nextOptions: ChartOptions) {\n const options = chart.options\n\n if (options && nextOptions) {\n Object.assign(options, nextOptions)\n }\n}\n\nexport function setLabels<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(\n currentData: ChartData,\n nextLabels: TLabel[] | undefined\n) {\n currentData.labels = nextLabels\n}\n\nexport function setDatasets<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(\n currentData: ChartData,\n nextDatasets: ChartDataset[],\n datasetIdKey: string\n) {\n const addedDatasets: ChartDataset[] = []\n\n currentData.datasets = nextDatasets.map(\n (nextDataset: Record) => {\n // given the new set, find it's current match\n const currentDataset = currentData.datasets.find(\n (dataset: Record) =>\n dataset[datasetIdKey] === nextDataset[datasetIdKey]\n )\n\n // There is no original to update, so simply add new one\n if (\n !currentDataset ||\n !nextDataset.data ||\n addedDatasets.includes(currentDataset)\n ) {\n return { ...nextDataset } as ChartDataset\n }\n\n addedDatasets.push(currentDataset)\n\n Object.assign(currentDataset, nextDataset)\n\n return currentDataset\n }\n )\n}\n\nexport function cloneData<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(data: ChartData, datasetIdKey: string) {\n const nextData: ChartData = {\n labels: [],\n datasets: []\n }\n\n setLabels(nextData, data.labels)\n setDatasets(nextData, data.datasets, datasetIdKey)\n\n return nextData\n}\n\n/**\n * Get dataset from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */\nexport function getDatasetAtEvent(chart: Chart, event: MouseEvent) {\n return chart.getElementsAtEventForMode(\n event,\n 'dataset',\n { intersect: true },\n false\n )\n}\n\n/**\n * Get single dataset element from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */\nexport function getElementAtEvent(chart: Chart, event: MouseEvent) {\n return chart.getElementsAtEventForMode(\n event,\n 'nearest',\n { intersect: true },\n false\n )\n}\n\n/**\n * Get all dataset elements from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */\nexport function getElementsAtEvent(chart: Chart, event: MouseEvent) {\n return chart.getElementsAtEventForMode(\n event,\n 'index',\n { intersect: true },\n false\n )\n}\n","import { Chart as ChartJS } from 'chart.js'\nimport {\n defineComponent,\n h,\n nextTick,\n onUnmounted,\n onMounted,\n ref,\n shallowRef,\n toRaw,\n watch\n} from 'vue'\n\nimport type { ChartComponent } from './types.js'\nimport { Props } from './props.js'\nimport {\n cloneData,\n setLabels,\n setDatasets,\n setOptions,\n toRawIfProxy,\n cloneProxy\n} from './utils.js'\n\nexport const Chart = defineComponent({\n props: Props,\n setup(props, { expose, slots }) {\n const canvasRef = ref(null)\n const chartRef = shallowRef(null)\n\n expose({ chart: chartRef })\n\n const renderChart = () => {\n if (!canvasRef.value) return\n\n const { type, data, options, plugins, datasetIdKey } = props\n const clonedData = cloneData(data, datasetIdKey)\n const proxiedData = cloneProxy(clonedData, data)\n\n chartRef.value = new ChartJS(canvasRef.value, {\n type,\n data: proxiedData,\n options: { ...options },\n plugins\n })\n }\n\n const destroyChart = () => {\n const chart = toRaw(chartRef.value)\n\n if (chart) {\n if (props.destroyDelay > 0) {\n setTimeout(() => {\n chart.destroy()\n chartRef.value = null\n }, props.destroyDelay)\n } else {\n chart.destroy()\n chartRef.value = null\n }\n }\n }\n\n const update = (chart: ChartJS) => {\n chart.update(props.updateMode)\n }\n\n onMounted(renderChart)\n\n onUnmounted(destroyChart)\n\n watch(\n [() => props.options, () => props.data],\n (\n [nextOptionsProxy, nextDataProxy],\n [prevOptionsProxy, prevDataProxy]\n ) => {\n const chart = toRaw(chartRef.value)\n\n if (!chart) {\n return\n }\n\n let shouldUpdate = false\n\n if (nextOptionsProxy) {\n const nextOptions = toRawIfProxy(nextOptionsProxy)\n const prevOptions = toRawIfProxy(prevOptionsProxy)\n\n if (nextOptions && nextOptions !== prevOptions) {\n setOptions(chart, nextOptions)\n shouldUpdate = true\n }\n }\n\n if (nextDataProxy) {\n const nextLabels = toRawIfProxy(nextDataProxy.labels)\n const prevLabels = toRawIfProxy(prevDataProxy.labels)\n const nextDatasets = toRawIfProxy(nextDataProxy.datasets)\n const prevDatasets = toRawIfProxy(prevDataProxy.datasets)\n\n if (nextLabels !== prevLabels) {\n setLabels(chart.config.data, nextLabels)\n shouldUpdate = true\n }\n\n if (nextDatasets && nextDatasets !== prevDatasets) {\n setDatasets(chart.config.data, nextDatasets, props.datasetIdKey)\n shouldUpdate = true\n }\n }\n\n if (shouldUpdate) {\n nextTick(() => {\n update(chart)\n })\n }\n },\n { deep: true }\n )\n\n return () => {\n return h(\n 'canvas',\n {\n role: 'img',\n 'aria-label': props.ariaLabel,\n 'aria-describedby': props.ariaDescribedby,\n ref: canvasRef\n },\n [h('p', {}, [slots.default ? slots.default() : ''])]\n )\n }\n }\n}) as ChartComponent\n","import { defineComponent, shallowRef, h } from 'vue'\nimport type { ChartType, ChartComponentLike, DefaultDataPoint } from 'chart.js'\nimport {\n Chart as ChartJS,\n BarController,\n BubbleController,\n DoughnutController,\n LineController,\n PieController,\n PolarAreaController,\n RadarController,\n ScatterController\n} from 'chart.js'\nimport type { DistributiveArray } from 'chart.js/dist/types/utils'\nimport type { TypedChartComponent, ChartComponentRef } from './types.js'\nimport { CommonProps } from './props.js'\nimport { Chart } from './chart.js'\nimport { compatProps } from './utils.js'\n\nexport function createTypedChart<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(\n type: TType,\n registerables: ChartComponentLike\n): TypedChartComponent {\n ChartJS.register(registerables)\n\n return defineComponent({\n props: CommonProps,\n setup(props, { expose }) {\n const ref = shallowRef(null)\n const reforwardRef = (chartRef: ChartComponentRef) => {\n ref.value = chartRef?.chart\n }\n\n expose({ chart: ref })\n\n return () => {\n return h(\n Chart,\n compatProps(\n {\n ref: reforwardRef as any\n },\n {\n type,\n ...props\n }\n )\n )\n }\n }\n }) as any\n}\n\nexport interface ExtendedDataPoint {\n [key: string]: string | number | null | ExtendedDataPoint\n}\n\nexport const Bar = /* #__PURE__ */ createTypedChart<\n 'bar',\n DefaultDataPoint<'bar'> | DistributiveArray\n>('bar', BarController)\n\nexport const Doughnut = /* #__PURE__ */ createTypedChart(\n 'doughnut',\n DoughnutController\n)\n\nexport const Line = /* #__PURE__ */ createTypedChart('line', LineController)\n\nexport const Pie = /* #__PURE__ */ createTypedChart('pie', PieController)\n\nexport const PolarArea = /* #__PURE__ */ createTypedChart(\n 'polarArea',\n PolarAreaController\n)\n\nexport const Radar = /* #__PURE__ */ createTypedChart('radar', RadarController)\n\nexport const Bubble = /* #__PURE__ */ createTypedChart(\n 'bubble',\n BubbleController\n)\n\nexport const Scatter = /* #__PURE__ */ createTypedChart(\n 'scatter',\n ScatterController\n)\n","/**\r\n * BatchProcessor - 批量数据处理类\r\n * \r\n * 处理批量数据获取和处理的核心类,使用 cursor 分页机制获取所有数据。\r\n * 支持进度回调和取消功能。\r\n */\r\n\r\nimport fetchWithAuth from '@/utils/fetchWithAuth';\r\n\r\n/**\r\n * 批量操作错误类\r\n * 提供错误代码、是否可恢复、建议操作等信息\r\n */\r\nexport class BatchOperationError extends Error {\r\n constructor(message, code, recoverable = false, suggestion = '') {\r\n super(message);\r\n this.name = 'BatchOperationError';\r\n this.code = code;\r\n this.recoverable = recoverable;\r\n this.suggestion = suggestion;\r\n }\r\n}\r\n\r\n/**\r\n * 错误处理器映射\r\n * 根据 HTTP 状态码返回对应的错误对象\r\n */\r\nconst ERROR_HANDLERS = {\r\n 401: () => new BatchOperationError(\r\n '认证失败,请重新登录',\r\n 'AUTH_FAILED',\r\n false,\r\n '请刷新页面并重新登录'\r\n ),\r\n 403: () => new BatchOperationError(\r\n '权限不足或请求被拒绝',\r\n 'FORBIDDEN',\r\n false,\r\n '请确认您有管理员权限'\r\n ),\r\n 400: (details) => new BatchOperationError(\r\n `请求数据无效: ${details}`,\r\n 'INVALID_DATA',\r\n true,\r\n '请检查数据格式后重试'\r\n ),\r\n 500: () => new BatchOperationError(\r\n '服务器内部错误',\r\n 'SERVER_ERROR',\r\n true,\r\n '请稍后重试,如果问题持续请联系管理员'\r\n ),\r\n NETWORK: () => new BatchOperationError(\r\n '网络连接失败',\r\n 'NETWORK_ERROR',\r\n true,\r\n '请检查网络连接后重试'\r\n ),\r\n ABORT: () => new BatchOperationError(\r\n '操作已取消',\r\n 'ABORTED',\r\n false,\r\n ''\r\n )\r\n};\r\n\r\n/**\r\n * 根据错误创建 BatchOperationError\r\n * @param {Error|Response} error - 原始错误或响应对象\r\n * @param {string} details - 错误详情\r\n * @returns {BatchOperationError}\r\n */\r\nfunction createError(error, details = '') {\r\n // 处理取消操作\r\n if (error.name === 'AbortError') {\r\n return ERROR_HANDLERS.ABORT();\r\n }\r\n \r\n // 处理 HTTP 响应错误\r\n if (error instanceof Response || (error && typeof error.status === 'number')) {\r\n const handler = ERROR_HANDLERS[error.status];\r\n if (handler) {\r\n return handler(details);\r\n }\r\n return new BatchOperationError(\r\n `请求失败: ${error.status}`,\r\n 'HTTP_ERROR',\r\n true,\r\n '请稍后重试'\r\n );\r\n }\r\n \r\n // 处理网络错误\r\n if (error instanceof TypeError && error.message.includes('fetch')) {\r\n return ERROR_HANDLERS.NETWORK();\r\n }\r\n \r\n // 其他错误\r\n return new BatchOperationError(\r\n error.message || '未知错误',\r\n 'UNKNOWN_ERROR',\r\n true,\r\n '请稍后重试'\r\n );\r\n}\r\n\r\n/**\r\n * BatchProcessor 类\r\n * \r\n * 用于批量获取和处理数据的核心类\r\n */\r\nclass BatchProcessor {\r\n /**\r\n * 创建 BatchProcessor 实例\r\n * @param {Object} options - 配置选项\r\n * @param {number} options.batchSize - 每批数据量,默认 1000\r\n * @param {Function} options.onProgress - 进度回调函数\r\n * @param {Function} options.onError - 错误回调函数\r\n */\r\n constructor(options = {}) {\r\n this.batchSize = options.batchSize || 1000;\r\n this.onProgress = options.onProgress || (() => {});\r\n this.onError = options.onError || (() => {});\r\n this.abortController = null;\r\n }\r\n\r\n /**\r\n * 获取所有数据记录\r\n * 使用 cursor 分页机制循环获取所有数据,直到没有更多数据或操作被取消\r\n * \r\n * @param {boolean} includeValue - 是否包含分块文件的 value 数据\r\n * @returns {Promise} 所有记录的数组\r\n * @throws {BatchOperationError} 当发生错误时抛出\r\n */\r\n async fetchAllRecords(includeValue = false) {\r\n // 创建新的 AbortController 用于取消操作\r\n this.abortController = new AbortController();\r\n const allRecords = [];\r\n let cursor = null;\r\n let totalFetched = 0;\r\n let batchCount = 0;\r\n\r\n try {\r\n do {\r\n // 检查是否已取消\r\n if (this.abortController.signal.aborted) {\r\n break;\r\n }\r\n\r\n // 获取一批数据\r\n const response = await this.fetchBatch(cursor, includeValue);\r\n \r\n // 合并数据到总数组\r\n allRecords.push(...response.records);\r\n cursor = response.nextCursor;\r\n totalFetched += response.records.length;\r\n batchCount++;\r\n\r\n // 调用进度回调\r\n this.onProgress({\r\n phase: 'fetching',\r\n current: totalFetched,\r\n batchCount: batchCount,\r\n message: `已获取 ${totalFetched} 条记录...`\r\n });\r\n\r\n } while (cursor && !this.abortController.signal.aborted);\r\n\r\n // 如果是因为取消而退出循环,抛出取消错误\r\n if (this.abortController.signal.aborted) {\r\n throw ERROR_HANDLERS.ABORT();\r\n }\r\n\r\n return allRecords;\r\n } catch (error) {\r\n // 调用错误回调\r\n const batchError = error instanceof BatchOperationError \r\n ? error \r\n : createError(error);\r\n this.onError(batchError);\r\n throw batchError;\r\n }\r\n }\r\n\r\n /**\r\n * 获取单批数据\r\n * \r\n * @param {string|null} cursor - 分页游标,首次请求为 null\r\n * @param {boolean} includeValue - 是否包含分块文件的 value 数据\r\n * @returns {Promise} 包含 records 和 nextCursor 的响应对象\r\n * @throws {BatchOperationError} 当请求失败时抛出\r\n */\r\n async fetchBatch(cursor, includeValue) {\r\n // 构建查询参数\r\n const params = new URLSearchParams();\r\n if (cursor) {\r\n params.set('cursor', cursor);\r\n }\r\n if (includeValue) {\r\n params.set('includeValue', 'true');\r\n }\r\n params.set('limit', String(this.batchSize));\r\n\r\n try {\r\n // 发送请求,传入 abort signal 支持取消\r\n const response = await fetchWithAuth(\r\n `/api/manage/batch/list?${params}`,\r\n { signal: this.abortController.signal }\r\n );\r\n\r\n // 检查响应状态\r\n if (!response.ok) {\r\n let errorDetails = '';\r\n try {\r\n const errorData = await response.json();\r\n errorDetails = errorData.error || '';\r\n } catch {\r\n // 忽略 JSON 解析错误\r\n }\r\n throw createError(response, errorDetails);\r\n }\r\n\r\n // 解析响应数据\r\n const data = await response.json();\r\n \r\n // 验证响应格式\r\n if (!data.success) {\r\n throw new BatchOperationError(\r\n data.error || '请求失败',\r\n 'API_ERROR',\r\n true,\r\n '请稍后重试'\r\n );\r\n }\r\n\r\n return {\r\n records: data.records || [],\r\n nextCursor: data.nextCursor || null,\r\n totalProcessed: data.totalProcessed || 0\r\n };\r\n } catch (error) {\r\n // 如果已经是 BatchOperationError,直接抛出\r\n if (error instanceof BatchOperationError) {\r\n throw error;\r\n }\r\n // 否则转换为 BatchOperationError\r\n throw createError(error);\r\n }\r\n }\r\n\r\n /**\r\n * 取消当前操作\r\n * 调用此方法将中止正在进行的 fetch 请求\r\n */\r\n abort() {\r\n if (this.abortController) {\r\n this.abortController.abort();\r\n }\r\n }\r\n\r\n /**\r\n * 检查操作是否已被取消\r\n * @returns {boolean}\r\n */\r\n isAborted() {\r\n return this.abortController ? this.abortController.signal.aborted : false;\r\n }\r\n\r\n /**\r\n * 重置处理器状态\r\n * 在开始新的批量操作前调用\r\n */\r\n reset() {\r\n this.abortController = null;\r\n }\r\n}\r\n\r\nexport default BatchProcessor;\r\n","/**\r\n * IndexRebuilder - 索引重建类\r\n * \r\n * 处理索引重建的完整流程,包括数据获取、排序、分块上传和完成。\r\n */\r\n\r\nimport fetchWithAuth from '@/utils/fetchWithAuth';\r\nimport BatchProcessor, { BatchOperationError } from '@/utils/batchProcessor';\r\n\r\n/**\r\n * IndexRebuilder 类\r\n * \r\n * 用于重建索引的核心类,协调数据获取、排序和分块上传\r\n */\r\nclass IndexRebuilder {\r\n /**\r\n * 创建 IndexRebuilder 实例\r\n * @param {Object} options - 配置选项\r\n * @param {number} options.chunkSize - 每个分块的记录数,默认从后端获取\r\n * @param {number} options.maxRetries - 分块上传最大重试次数,默认 3\r\n * @param {number} options.retryDelay - 重试延迟基数(毫秒),默认 1000\r\n * @param {Function} options.onProgress - 进度回调函数\r\n * @param {Function} options.onError - 错误回调函数\r\n */\r\n constructor(options = {}) {\r\n this.chunkSize = options.chunkSize || null; // 从后端获取\r\n this.maxRetries = options.maxRetries || 3;\r\n this.retryDelay = options.retryDelay || 1000;\r\n this.onProgress = options.onProgress || (() => {});\r\n this.onError = options.onError || (() => {});\r\n this.sessionId = this.generateSessionId();\r\n this.aborted = false;\r\n }\r\n\r\n /**\r\n * 从后端获取索引配置(分块大小等)\r\n * @returns {Promise} 配置对象 { chunkSize, databaseType }\r\n */\r\n async fetchConfig() {\r\n try {\r\n const response = await fetchWithAuth('/api/manage/batch/index/config');\r\n if (!response.ok) {\r\n throw new Error('获取配置失败');\r\n }\r\n const result = await response.json();\r\n if (result.success) {\r\n return {\r\n chunkSize: result.chunkSize || 500,\r\n databaseType: result.databaseType || 'unknown'\r\n };\r\n }\r\n throw new Error(result.error || '获取配置失败');\r\n } catch (error) {\r\n // 获取失败时使用保守的默认值(兼容 D1)\r\n console.warn('Failed to fetch index config, using default:', error);\r\n return { chunkSize: 500, databaseType: 'unknown' };\r\n }\r\n }\r\n\r\n /**\r\n * 执行索引重建\r\n * \r\n * 完整流程:\r\n * 1. 获取配置(分块大小)\r\n * 2. 获取所有记录\r\n * 3. 按时间戳降序排序\r\n * 4. 分块上传\r\n * 5. 完成重建\r\n * \r\n * @returns {Promise} 重建结果 { success: boolean, totalFiles: number }\r\n * @throws {BatchOperationError} 当发生错误时抛出\r\n */\r\n async rebuild() {\r\n this.aborted = false;\r\n \r\n try {\r\n // 获取配置(分块大小)\r\n if (!this.chunkSize) {\r\n const config = await this.fetchConfig();\r\n this.chunkSize = config.chunkSize;\r\n }\r\n\r\n // 获取所有记录\r\n this.onProgress({ \r\n phase: 'fetching', \r\n message: '正在获取数据...',\r\n current: 0\r\n });\r\n \r\n const processor = new BatchProcessor({\r\n onProgress: (p) => this.onProgress({ ...p, phase: 'fetching' }),\r\n onError: (e) => this.onError(e)\r\n });\r\n \r\n const records = await processor.fetchAllRecords(false);\r\n \r\n if (this.aborted) {\r\n throw new BatchOperationError('操作已取消', 'ABORTED', false, '');\r\n }\r\n\r\n // 排序(按时间戳降序)\r\n this.onProgress({ \r\n phase: 'sorting', \r\n message: '正在排序...',\r\n current: 0,\r\n total: records.length\r\n });\r\n \r\n this.sortByTimestampDescending(records);\r\n \r\n if (this.aborted) {\r\n throw new BatchOperationError('操作已取消', 'ABORTED', false, '');\r\n }\r\n\r\n // 分块上传\r\n const chunks = this.splitIntoChunks(records);\r\n \r\n for (let i = 0; i < chunks.length; i++) {\r\n if (this.aborted) {\r\n throw new BatchOperationError('操作已取消', 'ABORTED', false, '');\r\n }\r\n \r\n // 使用重试机制上传分块\r\n await this.uploadChunkWithRetry(chunks[i], i);\r\n \r\n this.onProgress({\r\n phase: 'uploading',\r\n current: i + 1,\r\n total: chunks.length,\r\n message: `正在上传分块 ${i + 1}/${chunks.length}...`\r\n });\r\n }\r\n\r\n // 完成重建\r\n this.onProgress({ \r\n phase: 'finalizing', \r\n message: '正在完成重建...',\r\n current: chunks.length,\r\n total: chunks.length\r\n });\r\n \r\n await this.finalize(chunks.length, records.length);\r\n\r\n this.onProgress({\r\n phase: 'completed',\r\n message: `索引重建完成,共 ${records.length} 个文件`,\r\n current: records.length,\r\n total: records.length\r\n });\r\n\r\n return { success: true, totalFiles: records.length };\r\n } catch (error) {\r\n const batchError = error instanceof BatchOperationError \r\n ? error \r\n : new BatchOperationError(\r\n error.message || '索引重建失败',\r\n 'REBUILD_ERROR',\r\n true,\r\n '请稍后重试'\r\n );\r\n this.onError(batchError);\r\n throw batchError;\r\n }\r\n }\r\n\r\n /**\r\n * 按时间戳降序排序记录\r\n * \r\n * @param {Array} records - 要排序的记录数组(原地排序)\r\n */\r\n sortByTimestampDescending(records) {\r\n records.sort((a, b) => {\r\n const timestampA = (a.metadata && a.metadata.TimeStamp) || 0;\r\n const timestampB = (b.metadata && b.metadata.TimeStamp) || 0;\r\n return timestampB - timestampA;\r\n });\r\n }\r\n\r\n /**\r\n * 将记录分割为多个块\r\n * \r\n * @param {Array} records - 要分割的记录数组\r\n * @returns {Array} 分块后的二维数组\r\n */\r\n splitIntoChunks(records) {\r\n const chunks = [];\r\n for (let i = 0; i < records.length; i += this.chunkSize) {\r\n chunks.push(records.slice(i, i + this.chunkSize));\r\n }\r\n return chunks;\r\n }\r\n\r\n /**\r\n * 带重试机制的分块上传\r\n * \r\n * @param {Array} chunk - 要上传的分块数据\r\n * @param {number} chunkId - 分块 ID\r\n * @returns {Promise} 上传响应\r\n * @throws {BatchOperationError} 当所有重试都失败时抛出\r\n */\r\n async uploadChunkWithRetry(chunk, chunkId) {\r\n let lastError;\r\n \r\n for (let attempt = 1; attempt <= this.maxRetries; attempt++) {\r\n try {\r\n return await this.uploadChunk(chunk, chunkId);\r\n } catch (error) {\r\n lastError = error;\r\n \r\n // 不重试的错误类型\r\n if (error instanceof BatchOperationError) {\r\n if (error.code === 'AUTH_FAILED' || \r\n error.code === 'FORBIDDEN' || \r\n error.code === 'ABORTED') {\r\n throw error;\r\n }\r\n }\r\n \r\n // 如果还有重试机会,等待后重试\r\n if (attempt < this.maxRetries) {\r\n // 指数退避\r\n const delay = this.retryDelay * Math.pow(2, attempt - 1);\r\n await this.sleep(delay);\r\n \r\n this.onProgress({\r\n phase: 'retrying',\r\n message: `分块 ${chunkId + 1} 上传失败,正在重试 (${attempt}/${this.maxRetries})...`,\r\n current: chunkId,\r\n attempt: attempt\r\n });\r\n }\r\n }\r\n }\r\n \r\n // 所有重试都失败\r\n throw lastError instanceof BatchOperationError \r\n ? lastError \r\n : new BatchOperationError(\r\n `分块 ${chunkId + 1} 上传失败,已重试 ${this.maxRetries} 次`,\r\n 'CHUNK_UPLOAD_FAILED',\r\n false,\r\n '请检查网络连接后重新开始重建'\r\n );\r\n }\r\n\r\n /**\r\n * 上传单个分块\r\n * \r\n * @param {Array} chunk - 要上传的分块数据\r\n * @param {number} chunkId - 分块 ID\r\n * @returns {Promise} 上传响应\r\n * @throws {BatchOperationError} 当上传失败时抛出\r\n */\r\n async uploadChunk(chunk, chunkId) {\r\n const checksum = await this.calculateChecksum(chunk);\r\n \r\n try {\r\n const response = await fetchWithAuth('/api/manage/batch/index/chunk', {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify({\r\n chunkId: String(chunkId),\r\n sessionId: this.sessionId,\r\n data: chunk,\r\n checksum\r\n })\r\n });\r\n\r\n if (!response.ok) {\r\n let errorDetails = '';\r\n try {\r\n const errorData = await response.json();\r\n errorDetails = errorData.error || '';\r\n } catch {\r\n // 忽略 JSON 解析错误\r\n }\r\n throw this.createHttpError(response.status, errorDetails);\r\n }\r\n\r\n const result = await response.json();\r\n \r\n if (!result.success) {\r\n throw new BatchOperationError(\r\n result.error || '分块上传失败',\r\n 'CHUNK_UPLOAD_FAILED',\r\n true,\r\n '请稍后重试'\r\n );\r\n }\r\n\r\n return result;\r\n } catch (error) {\r\n if (error instanceof BatchOperationError) {\r\n throw error;\r\n }\r\n // 网络错误\r\n if (error instanceof TypeError && error.message.includes('fetch')) {\r\n throw new BatchOperationError(\r\n '网络连接失败',\r\n 'NETWORK_ERROR',\r\n true,\r\n '请检查网络连接后重试'\r\n );\r\n }\r\n throw new BatchOperationError(\r\n error.message || '分块上传失败',\r\n 'CHUNK_UPLOAD_FAILED',\r\n true,\r\n '请稍后重试'\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * 完成索引重建\r\n * \r\n * @param {number} totalChunks - 总分块数\r\n * @param {number} totalFiles - 总文件数\r\n * @returns {Promise} 完成响应\r\n * @throws {BatchOperationError} 当完成请求失败时抛出\r\n */\r\n async finalize(totalChunks, totalFiles) {\r\n try {\r\n const response = await fetchWithAuth('/api/manage/batch/index/finalize', {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify({\r\n sessionId: this.sessionId,\r\n totalChunks,\r\n totalFiles\r\n })\r\n });\r\n\r\n if (!response.ok) {\r\n let errorDetails = '';\r\n try {\r\n const errorData = await response.json();\r\n errorDetails = errorData.error || '';\r\n } catch {\r\n // 忽略 JSON 解析错误\r\n }\r\n throw this.createHttpError(response.status, errorDetails);\r\n }\r\n\r\n const result = await response.json();\r\n \r\n if (!result.success) {\r\n throw new BatchOperationError(\r\n result.error || '索引完成失败',\r\n 'FINALIZE_FAILED',\r\n true,\r\n '请稍后重试'\r\n );\r\n }\r\n\r\n return result;\r\n } catch (error) {\r\n if (error instanceof BatchOperationError) {\r\n throw error;\r\n }\r\n throw new BatchOperationError(\r\n error.message || '索引完成失败',\r\n 'FINALIZE_FAILED',\r\n true,\r\n '请稍后重试'\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * 生成唯一的会话 ID\r\n * \r\n * @returns {string} 会话 ID\r\n */\r\n generateSessionId() {\r\n return `rebuild_${Date.now()}_${Math.random().toString(36).slice(2)}`;\r\n }\r\n\r\n /**\r\n * 计算数据的 SHA-256 校验和\r\n * \r\n * @param {Array} data - 要计算校验和的数据\r\n * @returns {Promise} 十六进制格式的校验和\r\n */\r\n async calculateChecksum(data) {\r\n const text = JSON.stringify(data);\r\n const encoder = new TextEncoder();\r\n const dataBuffer = encoder.encode(text);\r\n\r\n // crypto.subtle 仅在安全上下文(HTTPS / localhost)下可用\r\n // 通过 0.0.0.0 等非安全上下文访问时需要 fallback\r\n if (typeof crypto !== 'undefined' && crypto.subtle) {\r\n const hashBuffer = await crypto.subtle.digest('SHA-256', dataBuffer);\r\n const hashArray = Array.from(new Uint8Array(hashBuffer));\r\n return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');\r\n }\r\n\r\n // Fallback: 简单但足够用于校验的哈希实现 (FNV-1a 变体, 产生 64 位十六进制)\r\n let h1 = 0x811c9dc5 >>> 0;\r\n let h2 = 0x811c9dc5 >>> 0;\r\n for (let i = 0; i < dataBuffer.length; i++) {\r\n h1 = Math.imul(h1 ^ dataBuffer[i], 0x01000193) >>> 0;\r\n h2 = Math.imul(h2 ^ dataBuffer[i], 0x01000193 + 0x10) >>> 0;\r\n }\r\n return h1.toString(16).padStart(8, '0') + h2.toString(16).padStart(8, '0');\r\n }\r\n\r\n\r\n /**\r\n * 根据 HTTP 状态码创建错误对象\r\n * \r\n * @param {number} status - HTTP 状态码\r\n * @param {string} details - 错误详情\r\n * @returns {BatchOperationError}\r\n */\r\n createHttpError(status, details = '') {\r\n switch (status) {\r\n case 401:\r\n return new BatchOperationError(\r\n '认证失败,请重新登录',\r\n 'AUTH_FAILED',\r\n false,\r\n '请刷新页面并重新登录'\r\n );\r\n case 403:\r\n return new BatchOperationError(\r\n '权限不足或请求被拒绝',\r\n 'FORBIDDEN',\r\n false,\r\n '请确认您有管理员权限'\r\n );\r\n case 400:\r\n return new BatchOperationError(\r\n `请求数据无效: ${details}`,\r\n 'INVALID_DATA',\r\n true,\r\n '请检查数据格式后重试'\r\n );\r\n case 404:\r\n return new BatchOperationError(\r\n '会话不存在',\r\n 'SESSION_NOT_FOUND',\r\n false,\r\n '请重新开始索引重建'\r\n );\r\n case 410:\r\n return new BatchOperationError(\r\n '会话已过期',\r\n 'SESSION_EXPIRED',\r\n false,\r\n '请重新开始索引重建'\r\n );\r\n case 500:\r\n default:\r\n return new BatchOperationError(\r\n `服务器错误: ${details || status}`,\r\n 'SERVER_ERROR',\r\n true,\r\n '请稍后重试'\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * 延迟执行\r\n * \r\n * @param {number} ms - 延迟毫秒数\r\n * @returns {Promise}\r\n */\r\n sleep(ms) {\r\n return new Promise(resolve => setTimeout(resolve, ms));\r\n }\r\n\r\n /**\r\n * 取消当前操作\r\n */\r\n abort() {\r\n this.aborted = true;\r\n }\r\n\r\n /**\r\n * 重置重建器状态\r\n * 在开始新的重建操作前调用\r\n */\r\n reset() {\r\n this.aborted = false;\r\n this.sessionId = this.generateSessionId();\r\n }\r\n}\r\n\r\nexport default IndexRebuilder;\r\n","/**\r\n * BackupGenerator - 备份数据生成类\r\n * \r\n * 处理前端辅助备份功能,获取所有文件记录(包含分块文件的 value),\r\n * 构建完整的备份 JSON 文件,并触发浏览器下载。\r\n */\r\n\r\nimport BatchProcessor from '@/utils/batchProcessor';\r\nimport fetchWithAuth from '@/utils/fetchWithAuth';\r\nimport packageInfo from '../../package.json'\r\n\r\n/**\r\n * BackupGenerator 类\r\n * \r\n * 用于生成和下载备份数据的类\r\n */\r\nclass BackupGenerator {\r\n /**\r\n * 创建 BackupGenerator 实例\r\n * @param {Object} options - 配置选项\r\n * @param {Function} options.onProgress - 进度回调函数\r\n */\r\n constructor(options = {}) {\r\n this.onProgress = options.onProgress || (() => {});\r\n this.processor = null;\r\n }\r\n\r\n /**\r\n * 生成并下载备份\r\n * \r\n * 完整流程:\r\n * 1. 获取所有文件记录(包含分块文件的 value)\r\n * 2. 构建备份数据结构\r\n * 3. 获取系统设置\r\n * 4. 生成并触发下载\r\n * \r\n * @returns {Promise} 包含 success 和 fileCount 的结果对象\r\n * @throws {Error} 当备份过程中发生错误时抛出\r\n */\r\n async generateBackup() {\r\n // 获取所有文件记录(包含分块文件的 value)\r\n this.processor = new BatchProcessor({\r\n onProgress: (p) => this.onProgress({ ...p, phase: 'fetching' })\r\n });\r\n\r\n const records = await this.processor.fetchAllRecords(true);\r\n\r\n // 构建备份数据\r\n this.onProgress({ phase: 'building', message: '正在构建备份数据...' });\r\n\r\n const backupData = {\r\n timestamp: Date.now(),\r\n version: packageInfo.version,\r\n data: {\r\n fileCount: records.length,\r\n files: {},\r\n settings: {}\r\n }\r\n };\r\n\r\n // 将记录转换为以 id 为键的对象格式\r\n for (const record of records) {\r\n backupData.data.files[record.id] = {\r\n metadata: record.metadata,\r\n value: record.value || null\r\n };\r\n }\r\n\r\n // 3. 获取系统设置\r\n const settings = await this.fetchSettings();\r\n backupData.data.settings = settings;\r\n\r\n // 生成下载\r\n this.onProgress({ phase: 'downloading', message: '正在生成下载...' });\r\n this.downloadBackup(backupData);\r\n\r\n const settingsCount = Object.keys(settings).length;\r\n return { success: true, fileCount: records.length, settingsCount };\r\n }\r\n\r\n /**\r\n * 获取系统设置\r\n * \r\n * @returns {Promise} 系统设置对象,失败时返回空对象\r\n */\r\n async fetchSettings() {\r\n try {\r\n const response = await fetchWithAuth('/api/manage/batch/settings');\r\n if (!response.ok) {\r\n console.warn('Failed to fetch settings:', response.status);\r\n return {};\r\n }\r\n const data = await response.json();\r\n // 返回 settings 字段,而不是整个响应\r\n return data.settings || {};\r\n } catch (error) {\r\n console.warn('Failed to fetch settings:', error);\r\n return {};\r\n }\r\n }\r\n\r\n /**\r\n * 触发浏览器下载备份文件\r\n * \r\n * @param {Object} data - 备份数据对象\r\n */\r\n downloadBackup(data) {\r\n // 将数据转换为格式化的 JSON 字符串\r\n const json = JSON.stringify(data, null, 2);\r\n \r\n // 创建 Blob 对象\r\n const blob = new Blob([json], { type: 'application/json' });\r\n \r\n // 创建下载 URL\r\n const url = URL.createObjectURL(blob);\r\n\r\n // 创建临时下载链接\r\n const a = document.createElement('a');\r\n a.href = url;\r\n // 使用日期作为文件名的一部分\r\n a.download = `imgbed_backup_${new Date().toISOString().split('T')[0]}.json`;\r\n \r\n // 触发下载\r\n document.body.appendChild(a);\r\n a.click();\r\n \r\n // 清理\r\n document.body.removeChild(a);\r\n URL.revokeObjectURL(url);\r\n }\r\n\r\n /**\r\n * 取消当前备份操作\r\n */\r\n abort() {\r\n if (this.processor) {\r\n this.processor.abort();\r\n }\r\n }\r\n\r\n /**\r\n * 检查操作是否已被取消\r\n * @returns {boolean}\r\n */\r\n isAborted() {\r\n return this.processor ? this.processor.isAborted() : false;\r\n }\r\n}\r\n\r\nexport default BackupGenerator;\r\n","/**\r\n * RestoreProcessor - 分批恢复数据类\r\n * \r\n * 将备份数据分批上传到后端进行恢复,避免 CPU 超时\r\n */\r\n\r\nimport fetchWithAuth from '@/utils/fetchWithAuth';\r\nimport { BatchOperationError } from '@/utils/batchProcessor';\r\n\r\n/**\r\n * RestoreProcessor 类\r\n */\r\nclass RestoreProcessor {\r\n /**\r\n * 创建 RestoreProcessor 实例\r\n * @param {Object} options - 配置选项\r\n * @param {number} options.chunkSize - 每批数据量,默认 50\r\n * @param {number} options.maxRetries - 最大重试次数,默认 3\r\n * @param {number} options.retryDelay - 重试延迟基数(毫秒),默认 1000\r\n * @param {Function} options.onProgress - 进度回调函数\r\n * @param {Function} options.onError - 错误回调函数\r\n */\r\n constructor(options = {}) {\r\n this.chunkSize = options.chunkSize || 50;\r\n this.maxRetries = options.maxRetries || 3;\r\n this.retryDelay = options.retryDelay || 1000;\r\n this.onProgress = options.onProgress || (() => {});\r\n this.onError = options.onError || (() => {});\r\n this.aborted = false;\r\n }\r\n\r\n /**\r\n * 执行恢复操作\r\n * \r\n * @param {Object} backupData - 备份数据对象\r\n * @returns {Promise} 恢复结果\r\n */\r\n async restore(backupData) {\r\n this.aborted = false;\r\n\r\n // 验证备份数据格式\r\n if (!backupData || !backupData.data) {\r\n throw new BatchOperationError(\r\n '备份文件格式无效',\r\n 'INVALID_BACKUP',\r\n false,\r\n '请选择有效的备份文件'\r\n );\r\n }\r\n\r\n const { files = {}, settings = {} } = backupData.data;\r\n const fileEntries = Object.entries(files);\r\n const settingEntries = Object.entries(settings);\r\n \r\n const totalFiles = fileEntries.length;\r\n const totalSettings = settingEntries.length;\r\n const totalItems = totalFiles + totalSettings;\r\n\r\n let restoredFiles = 0;\r\n let restoredSettings = 0;\r\n let failedFiles = 0;\r\n let failedSettings = 0;\r\n\r\n try {\r\n // 1. 分批恢复文件数据\r\n this.onProgress({\r\n phase: 'restoring_files',\r\n message: '正在恢复文件数据...',\r\n current: 0,\r\n total: totalItems\r\n });\r\n\r\n const fileChunks = this.splitIntoChunks(fileEntries, this.chunkSize);\r\n \r\n for (let i = 0; i < fileChunks.length; i++) {\r\n if (this.aborted) {\r\n throw new BatchOperationError('操作已取消', 'ABORTED', false, '');\r\n }\r\n\r\n const chunk = fileChunks[i];\r\n const chunkData = Object.fromEntries(chunk);\r\n \r\n const result = await this.uploadChunkWithRetry('files', chunkData);\r\n restoredFiles += result.restoredCount;\r\n failedFiles += result.failedCount;\r\n\r\n this.onProgress({\r\n phase: 'restoring_files',\r\n message: `正在恢复文件数据 ${restoredFiles}/${totalFiles}...`,\r\n current: restoredFiles,\r\n total: totalItems,\r\n percentage: (restoredFiles / totalItems) * 80\r\n });\r\n }\r\n\r\n // 2. 分批恢复系统设置\r\n this.onProgress({\r\n phase: 'restoring_settings',\r\n message: '正在恢复系统设置...',\r\n current: restoredFiles,\r\n total: totalItems\r\n });\r\n\r\n const settingChunks = this.splitIntoChunks(settingEntries, this.chunkSize);\r\n \r\n for (let i = 0; i < settingChunks.length; i++) {\r\n if (this.aborted) {\r\n throw new BatchOperationError('操作已取消', 'ABORTED', false, '');\r\n }\r\n\r\n const chunk = settingChunks[i];\r\n const chunkData = Object.fromEntries(chunk);\r\n \r\n const result = await this.uploadChunkWithRetry('settings', chunkData);\r\n restoredSettings += result.restoredCount;\r\n failedSettings += result.failedCount;\r\n\r\n this.onProgress({\r\n phase: 'restoring_settings',\r\n message: `正在恢复系统设置 ${restoredSettings}/${totalSettings}...`,\r\n current: restoredFiles + restoredSettings,\r\n total: totalItems,\r\n percentage: 80 + (restoredSettings / totalSettings) * 20\r\n });\r\n }\r\n\r\n // 3. 完成\r\n this.onProgress({\r\n phase: 'completed',\r\n message: '恢复完成',\r\n current: totalItems,\r\n total: totalItems,\r\n percentage: 100\r\n });\r\n\r\n return {\r\n success: true,\r\n restoredFiles,\r\n restoredSettings,\r\n failedFiles,\r\n failedSettings,\r\n backupTimestamp: backupData.timestamp\r\n };\r\n\r\n } catch (error) {\r\n const batchError = error instanceof BatchOperationError\r\n ? error\r\n : new BatchOperationError(\r\n error.message || '恢复失败',\r\n 'RESTORE_ERROR',\r\n true,\r\n '请稍后重试'\r\n );\r\n this.onError(batchError);\r\n throw batchError;\r\n }\r\n }\r\n\r\n /**\r\n * 将数组分割为多个块\r\n */\r\n splitIntoChunks(entries, chunkSize) {\r\n const chunks = [];\r\n for (let i = 0; i < entries.length; i += chunkSize) {\r\n chunks.push(entries.slice(i, i + chunkSize));\r\n }\r\n return chunks;\r\n }\r\n\r\n /**\r\n * 带重试机制的分块上传\r\n */\r\n async uploadChunkWithRetry(type, data) {\r\n let lastError;\r\n\r\n for (let attempt = 1; attempt <= this.maxRetries; attempt++) {\r\n try {\r\n return await this.uploadChunk(type, data);\r\n } catch (error) {\r\n lastError = error;\r\n\r\n if (error instanceof BatchOperationError) {\r\n if (error.code === 'AUTH_FAILED' ||\r\n error.code === 'FORBIDDEN' ||\r\n error.code === 'ABORTED') {\r\n throw error;\r\n }\r\n }\r\n\r\n if (attempt < this.maxRetries) {\r\n const delay = this.retryDelay * Math.pow(2, attempt - 1);\r\n await this.sleep(delay);\r\n }\r\n }\r\n }\r\n\r\n throw lastError;\r\n }\r\n\r\n /**\r\n * 上传单个分块\r\n */\r\n async uploadChunk(type, data) {\r\n try {\r\n const response = await fetchWithAuth('/api/manage/batch/restore/chunk', {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify({ type, data })\r\n });\r\n\r\n if (!response.ok) {\r\n let errorDetails = '';\r\n try {\r\n const errorData = await response.json();\r\n errorDetails = errorData.error || '';\r\n } catch {\r\n // 忽略 JSON 解析错误\r\n }\r\n throw this.createHttpError(response.status, errorDetails);\r\n }\r\n\r\n const result = await response.json();\r\n\r\n if (!result.success) {\r\n throw new BatchOperationError(\r\n result.error || '恢复分块失败',\r\n 'CHUNK_RESTORE_FAILED',\r\n true,\r\n '请稍后重试'\r\n );\r\n }\r\n\r\n return result;\r\n } catch (error) {\r\n if (error instanceof BatchOperationError) {\r\n throw error;\r\n }\r\n if (error instanceof TypeError && error.message.includes('fetch')) {\r\n throw new BatchOperationError(\r\n '网络连接失败',\r\n 'NETWORK_ERROR',\r\n true,\r\n '请检查网络连接后重试'\r\n );\r\n }\r\n throw new BatchOperationError(\r\n error.message || '恢复分块失败',\r\n 'CHUNK_RESTORE_FAILED',\r\n true,\r\n '请稍后重试'\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * 根据 HTTP 状态码创建错误对象\r\n */\r\n createHttpError(status, details = '') {\r\n switch (status) {\r\n case 401:\r\n return new BatchOperationError(\r\n '认证失败,请重新登录',\r\n 'AUTH_FAILED',\r\n false,\r\n '请刷新页面并重新登录'\r\n );\r\n case 403:\r\n return new BatchOperationError(\r\n '权限不足或请求被拒绝',\r\n 'FORBIDDEN',\r\n false,\r\n '请确认您有管理员权限'\r\n );\r\n case 400:\r\n return new BatchOperationError(\r\n `请求数据无效: ${details}`,\r\n 'INVALID_DATA',\r\n true,\r\n '请检查备份文件格式'\r\n );\r\n case 500:\r\n default:\r\n return new BatchOperationError(\r\n `服务器错误: ${details || status}`,\r\n 'SERVER_ERROR',\r\n true,\r\n '请稍后重试'\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * 延迟执行\r\n */\r\n sleep(ms) {\r\n return new Promise(resolve => setTimeout(resolve, ms));\r\n }\r\n\r\n /**\r\n * 取消当前操作\r\n */\r\n abort() {\r\n this.aborted = true;\r\n }\r\n}\r\n\r\nexport default RestoreProcessor;\r\n","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport \"core-js/modules/es.iterator.reduce.js\";\nimport \"core-js/modules/es.set.difference.v2.js\";\nimport \"core-js/modules/es.set.intersection.v2.js\";\nimport \"core-js/modules/es.set.is-disjoint-from.v2.js\";\nimport \"core-js/modules/es.set.is-subset-of.v2.js\";\nimport \"core-js/modules/es.set.is-superset-of.v2.js\";\nimport \"core-js/modules/es.set.symmetric-difference.v2.js\";\nimport \"core-js/modules/es.set.union.v2.js\";\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nimport packageInfo from '../../../package.json';\nimport { Doughnut, Line } from 'vue-chartjs';\nimport { Chart as ChartJS, ArcElement, Tooltip, Legend, CategoryScale, LinearScale, PointElement, LineElement, Filler } from 'chart.js';\nimport IndexRebuilder from '@/utils/indexRebuilder';\nimport BackupGenerator from '@/utils/backupGenerator';\nimport RestoreProcessor from '@/utils/restoreProcessor';\nimport DateRangeCalendar from '@/components/DateRangeCalendar.vue';\nChartJS.register(ArcElement, Tooltip, Legend, CategoryScale, LinearScale, PointElement, LineElement, Filler);\nconst DAY_MS = 24 * 60 * 60 * 1000;\nfunction padDatePart(value) {\n return String(value).padStart(2, '0');\n}\nfunction formatDateInput(date) {\n return `${date.getFullYear()}-${padDatePart(date.getMonth() + 1)}-${padDatePart(date.getDate())}`;\n}\nfunction getDefaultTrendDateRange() {\n const endDate = new Date();\n endDate.setHours(0, 0, 0, 0);\n const startDate = new Date(endDate.getTime() - 6 * DAY_MS);\n return [formatDateInput(startDate), formatDateInput(endDate)];\n}\nexport default {\n name: 'SysCogStatus',\n components: {\n Doughnut,\n Line,\n DateRangeCalendar\n },\n data() {\n return {\n loading: false,\n rebuilding: false,\n backing: false,\n restoring: false,\n indexInfo: {},\n indexInfoLoaded: false,\n indexInfoError: false,\n currentTime: new Date(),\n clockTimer: null,\n version: packageInfo.version,\n // 从package.json获取版本号\n loadErrors: {\n newest: false,\n oldest: false\n },\n trendGroupBy: 'channel',\n trendDatePickerVisible: false,\n trendDateRange: getDefaultTrendDateRange(),\n // 渠道图表颜色\n channelColors: ['#8B5CF6', '#EC4899', '#06B6D4', '#10B981', '#F59E0B', '#EF4444', '#2563EB', '#84CC16'],\n // 状态图表颜色\n typeColors: ['#10B981', '#3B82F6', '#F59E0B', '#EF4444', '#8B5CF6', '#EC4899', '#06B6D4', '#84CC16'],\n // 上传趋势折线图颜色\n trendColors: ['#2563EB', '#10B981', '#F59E0B', '#EF4444', '#8B5CF6', '#06B6D4', '#EC4899', '#84CC16', '#64748B'],\n // 批量操作进度状态\n isProcessing: false,\n processingPhase: '',\n // fetching, sorting, uploading, finalizing, building, downloading, completed\n processingProgress: {\n current: 0,\n total: 0,\n message: '',\n percentage: 0\n },\n processingError: null,\n processingStartTime: null,\n // 当前处理器实例(用于取消操作)\n currentRebuilder: null,\n currentBackupGenerator: null,\n currentRestoreProcessor: null\n };\n },\n computed: {\n currentLocale() {\n return String(this.$i18n.locale || 'zh-CN');\n },\n indexedFileCount() {\n return Number(this.indexInfo.totalFiles || 0);\n },\n uploadChannelCount() {\n return Object.keys(this.indexInfo.channelStats || {}).length;\n },\n systemHealthState() {\n if (this.indexInfoError) return 'attention';\n if (!this.indexInfoLoaded) return 'checking';\n return 'healthy';\n },\n systemHealthLabel() {\n return this.$t(`sysStatus.health${this.systemHealthState.charAt(0).toUpperCase()}${this.systemHealthState.slice(1)}`);\n },\n greetingTitle() {\n const hour = this.currentTime.getHours();\n if (hour < 5) return this.$t('sysStatus.greetingLateNight');\n if (hour < 11) return this.$t('sysStatus.greetingMorning');\n if (hour < 14) return this.$t('sysStatus.greetingNoon');\n if (hour < 18) return this.$t('sysStatus.greetingAfternoon');\n if (hour < 23) return this.$t('sysStatus.greetingEvening');\n return this.$t('sysStatus.greetingLateNight');\n },\n systemStatusSummary() {\n if (this.indexInfoError) return this.$t('sysStatus.summaryUnavailable');\n if (!this.indexInfoLoaded) return this.$t('sysStatus.summaryChecking');\n if (this.indexedFileCount === 0) return this.$t('sysStatus.summaryEmpty');\n if (this.uploadChannelCount === 0) {\n return this.$t('sysStatus.summaryIndexed', {\n files: this.indexedFileCount.toLocaleString(this.currentLocale)\n });\n }\n return this.$t('sysStatus.summaryHealthy', {\n files: this.indexedFileCount.toLocaleString(this.currentLocale),\n channels: this.uploadChannelCount.toLocaleString(this.currentLocale)\n });\n },\n currentDateLabel() {\n return new Intl.DateTimeFormat(this.currentLocale, {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n weekday: 'long'\n }).format(this.currentTime);\n },\n currentTimeLabel() {\n return new Intl.DateTimeFormat(this.currentLocale, {\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n hour12: false\n }).format(this.currentTime);\n },\n timeZoneLabel() {\n const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone || this.$t('sysStatus.localTimezone');\n const offsetMinutes = -this.currentTime.getTimezoneOffset();\n const sign = offsetMinutes >= 0 ? '+' : '-';\n const absoluteMinutes = Math.abs(offsetMinutes);\n const hours = Math.floor(absoluteMinutes / 60);\n const minutes = absoluteMinutes % 60;\n const offset = minutes === 0 ? `UTC${sign}${hours}` : `UTC${sign}${hours}:${String(minutes).padStart(2, '0')}`;\n return `${timeZone} · ${offset}`;\n },\n // 渠道分布图表数据\n channelChartData() {\n const stats = this.indexInfo.channelStats || {};\n return {\n labels: Object.keys(stats),\n datasets: [{\n data: Object.values(stats),\n backgroundColor: this.channelColors.slice(0, Object.keys(stats).length),\n borderWidth: 0\n }]\n };\n },\n // 文件状态图表数据 - 将Block映射为\"已屏蔽\",其余为\"正常\"\n typeChartData() {\n const aggregatedStats = this.aggregatedTypeStats;\n return {\n labels: Object.keys(aggregatedStats),\n datasets: [{\n data: Object.values(aggregatedStats),\n backgroundColor: this.typeColors.slice(0, Object.keys(aggregatedStats).length),\n borderWidth: 0\n }]\n };\n },\n // 聚合后的状态统计:Block -> 已屏蔽,其余 -> 正常\n aggregatedTypeStats() {\n const stats = this.indexInfo.typeStats || {};\n const aggregatedStats = {};\n for (const [status, count] of Object.entries(stats)) {\n const mappedStatus = status === 'Block' ? this.$t('sysStatus.blocked') : this.$t('sysStatus.normalStatus');\n aggregatedStats[mappedStatus] = (aggregatedStats[mappedStatus] || 0) + count;\n }\n return aggregatedStats;\n },\n // 当前趋势维度数据\n currentTrendGroup() {\n const trend = this.indexInfo.uploadTrend || {};\n const groupBy = trend.groupBy || {};\n return groupBy[this.trendGroupBy] || {\n series: []\n };\n },\n // 趋势图原始日期标签\n trendRawLabels() {\n const trend = this.indexInfo.uploadTrend || {};\n return trend.labels || [];\n },\n // 当前范围是否跨年\n trendRangeCrossesYear() {\n const years = new Set();\n this.trendRawLabels.forEach(label => {\n this.extractTrendLabelDates(label).forEach(date => years.add(date.year));\n });\n return years.size > 1;\n },\n // 用于横轴展示的短日期标签\n trendDisplayLabels() {\n return this.trendRawLabels.map(label => this.formatTrendAxisLabel(label));\n },\n // 是否存在趋势图数据\n hasTrendData() {\n const trend = this.indexInfo.uploadTrend || {};\n return (trend.labels || []).length > 0;\n },\n // 日期选择弹窗宽度保持与项目内其他弹窗一致\n trendDateDialogWidth() {\n return window.innerWidth > 768 ? '420px' : '90%';\n },\n // 上传趋势折线图数据\n uploadTrendChartData() {\n const trend = this.indexInfo.uploadTrend || {};\n const series = this.currentTrendGroup.series || [];\n const totalColor = '#F97316';\n return {\n labels: this.trendDisplayLabels,\n datasets: [{\n label: this.$t('sysStatus.totalUploads'),\n data: trend.total || [],\n borderColor: totalColor,\n backgroundColor: this.hexToRgba(totalColor, 0.1),\n pointBackgroundColor: totalColor,\n pointBorderColor: totalColor,\n borderWidth: 3,\n pointRadius: 2,\n pointHoverRadius: 5,\n tension: 0.28,\n fill: false\n }, ...series.map((item, index) => {\n const color = this.getTrendColor(index);\n return {\n label: this.formatTrendSeriesName(item),\n data: item.data || [],\n borderColor: color,\n backgroundColor: this.hexToRgba(color, 0.12),\n pointBackgroundColor: color,\n pointBorderColor: color,\n borderWidth: 2,\n pointRadius: 2,\n pointHoverRadius: 5,\n tension: 0.32,\n fill: false\n };\n })]\n };\n },\n // 折线图配置\n lineChartOptions() {\n const textColor = '#64748B';\n return {\n responsive: true,\n maintainAspectRatio: false,\n interaction: {\n mode: 'index',\n intersect: false\n },\n plugins: {\n legend: {\n display: true,\n position: 'bottom',\n labels: {\n usePointStyle: true,\n boxWidth: 8,\n boxHeight: 8,\n padding: 16,\n color: textColor\n }\n },\n tooltip: {\n backgroundColor: 'rgba(0, 0, 0, 0.8)',\n titleColor: '#fff',\n bodyColor: '#fff',\n padding: 12,\n cornerRadius: 8,\n displayColors: true,\n callbacks: {\n title: items => {\n const index = items?.[0]?.dataIndex;\n return this.trendRawLabels[index] || '';\n },\n label: context => {\n const parsed = context.parsed || {};\n const value = parsed.y !== undefined ? parsed.y : context.raw;\n return ` ${context.dataset.label}: ${Number(value || 0).toLocaleString()} ${this.$t('sysStatus.uploadsUnit')}`;\n }\n }\n }\n },\n scales: {\n x: {\n grid: {\n display: false\n },\n ticks: {\n color: textColor,\n maxTicksLimit: 8,\n autoSkip: true\n }\n },\n y: {\n beginAtZero: true,\n grid: {\n color: 'rgba(148, 163, 184, 0.18)'\n },\n ticks: {\n color: textColor,\n precision: 0,\n callback: value => Number(value).toLocaleString()\n }\n }\n }\n };\n },\n // 图表配置\n chartOptions() {\n return {\n responsive: true,\n maintainAspectRatio: true,\n cutout: '65%',\n hoverOffset: 8,\n layout: {\n padding: 10\n },\n plugins: {\n legend: {\n display: false\n },\n tooltip: {\n backgroundColor: 'rgba(0, 0, 0, 0.8)',\n titleColor: '#fff',\n bodyColor: '#fff',\n padding: 12,\n cornerRadius: 8,\n displayColors: true,\n z: 100,\n callbacks: {\n label: context => {\n const value = context.raw;\n const total = context.dataset.data.reduce((a, b) => a + b, 0);\n const percentage = (value / total * 100).toFixed(1);\n return ` ${value.toLocaleString()} (${percentage}%)`;\n }\n }\n }\n },\n animation: {\n animateRotate: true,\n animateScale: true\n }\n };\n },\n // 预计剩余时间\n estimatedTimeRemaining() {\n if (!this.isProcessing || !this.processingStartTime) return '';\n if (this.processingProgress.current === 0 || this.processingProgress.percentage === 0) return '';\n const elapsed = Date.now() - this.processingStartTime;\n const progress = this.processingProgress.percentage / 100;\n if (progress <= 0) return '';\n const totalEstimated = elapsed / progress;\n const remaining = totalEstimated - elapsed;\n if (remaining <= 0) return this.$t('sysStatus.aboutToComplete');\n const seconds = Math.ceil(remaining / 1000);\n if (seconds < 60) return this.$t('sysStatus.seconds', {\n count: seconds\n });\n const minutes = Math.ceil(seconds / 60);\n if (minutes < 60) return this.$t('sysStatus.minutes', {\n count: minutes\n });\n const hours = Math.floor(minutes / 60);\n const remainingMinutes = minutes % 60;\n return this.$t('sysStatus.hoursMinutes', {\n hours,\n minutes: remainingMinutes\n });\n },\n // 处理阶段描述\n phaseDescription() {\n const phaseMap = {\n 'fetching': this.$t('sysStatus.phaseFetching'),\n 'sorting': this.$t('sysStatus.phaseSorting'),\n 'uploading': this.$t('sysStatus.phaseUploading'),\n 'finalizing': this.$t('sysStatus.phaseFinalizing'),\n 'building': this.$t('sysStatus.phaseBuilding'),\n 'downloading': this.$t('sysStatus.phaseDownloading'),\n 'restoring_files': this.$t('sysStatus.phaseRestoringFiles'),\n 'restoring_settings': this.$t('sysStatus.phaseRestoringSettings'),\n 'completed': this.$t('sysStatus.phaseCompleted'),\n 'retrying': this.$t('sysStatus.phaseRetrying')\n };\n return phaseMap[this.processingPhase] || this.processingPhase;\n }\n },\n mounted() {\n this.fetchIndexInfo();\n this.clockTimer = window.setInterval(() => {\n this.currentTime = new Date();\n }, 1000);\n },\n beforeUnmount() {\n if (this.clockTimer) {\n window.clearInterval(this.clockTimer);\n this.clockTimer = null;\n }\n },\n methods: {\n // 获取渠道图表颜色\n getChartColor(index) {\n return this.channelColors[index % this.channelColors.length];\n },\n // 获取状态图表颜色\n getTypeChartColor(index) {\n return this.typeColors[index % this.typeColors.length];\n },\n // 获取趋势图表颜色\n getTrendColor(index) {\n return this.trendColors[index % this.trendColors.length];\n },\n // 格式化趋势序列名称\n formatTrendSeriesName(series) {\n if (series?.isOther || series?.name === '__other__') {\n return this.$t('sysStatus.otherChannels');\n }\n return series?.name || this.$t('sysStatus.unknown');\n },\n // 十六进制颜色转换为 rgba\n hexToRgba(hex, alpha) {\n const normalized = (hex || '').replace('#', '');\n if (normalized.length !== 6) {\n return `rgba(37, 99, 235, ${alpha})`;\n }\n const r = parseInt(normalized.slice(0, 2), 16);\n const g = parseInt(normalized.slice(2, 4), 16);\n const b = parseInt(normalized.slice(4, 6), 16);\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n },\n // 提取趋势标签中的日期\n extractTrendLabelDates(label) {\n const matches = String(label || '').match(/\\d{4}-\\d{2}-\\d{2}/g) || [];\n return matches.map(item => {\n const [year, month, day] = item.split('-').map(Number);\n return {\n year,\n month,\n day\n };\n });\n },\n // 横轴日期标签按范围简化,仅跨年时显示年份\n formatTrendAxisLabel(label) {\n const dates = this.extractTrendLabelDates(label);\n if (dates.length === 0) return label;\n const formatSingleDate = (date, includeYear) => {\n const monthDay = `${date.month}/${date.day}`;\n return includeYear ? `${date.year}/${monthDay}` : monthDay;\n };\n if (dates.length === 1) {\n return formatSingleDate(dates[0], this.trendRangeCrossesYear);\n }\n const [startDate, endDate] = dates;\n if (!this.trendRangeCrossesYear) {\n return `${formatSingleDate(startDate, false)}-${formatSingleDate(endDate, false)}`;\n }\n const endLabel = startDate.year === endDate.year ? formatSingleDate(endDate, false) : formatSingleDate(endDate, true);\n return `${formatSingleDate(startDate, true)}-${endLabel}`;\n },\n // 打开居中的日期范围选择弹窗\n openTrendDateDialog() {\n this.trendDatePickerVisible = true;\n },\n // 日期范围变更后重新拉取趋势数据\n handleTrendDateRangeChange(value) {\n if (!Array.isArray(value) || value.length !== 2 || !value[0] || !value[1]) {\n return;\n }\n this.trendDatePickerVisible = false;\n this.fetchIndexInfo();\n },\n // 获取趋势查询参数\n getTrendDateRangeParams() {\n if (!Array.isArray(this.trendDateRange) || this.trendDateRange.length !== 2) {\n this.trendDateRange = getDefaultTrendDateRange();\n }\n return {\n startDate: this.trendDateRange[0],\n endDate: this.trendDateRange[1]\n };\n },\n // 获取索引信息\n async fetchIndexInfo() {\n this.loading = true;\n this.indexInfoError = false;\n try {\n const {\n startDate,\n endDate\n } = this.getTrendDateRangeParams();\n const params = new URLSearchParams({\n action: 'info',\n timezoneOffset: String(new Date().getTimezoneOffset()),\n trendMaxPoints: '90',\n trendSeriesLimit: '8',\n trendStartDate: startDate,\n trendEndDate: endDate\n });\n const response = await fetchWithAuth(`/api/manage/list?${params.toString()}`, {\n method: 'GET'\n });\n if (response.ok) {\n const data = await response.json();\n this.indexInfo = data;\n this.indexInfoLoaded = true;\n } else {\n throw new Error('API请求失败');\n }\n } catch (error) {\n console.error('获取索引信息失败:', error);\n this.indexInfoError = true;\n this.$message.error(this.$t('sysStatus.fetchIndexFailed'));\n } finally {\n this.loading = false;\n }\n },\n // 重建索引 - 使用前端辅助重建流程\n async rebuildIndex() {\n if (this.isProcessing) {\n this.$message.warning(this.$t('sysStatus.operationInProgress'));\n return;\n }\n this.rebuilding = true;\n this.isProcessing = true;\n this.processingError = null;\n this.processingStartTime = Date.now();\n this.processingProgress = {\n current: 0,\n total: 0,\n message: '',\n percentage: 0\n };\n\n // 创建 IndexRebuilder 实例\n this.currentRebuilder = new IndexRebuilder({\n onProgress: progress => this.handleProgress(progress),\n onError: error => this.handleError(error)\n });\n try {\n const result = await this.currentRebuilder.rebuild();\n\n // 成功完成\n this.$message.success(this.$t('sysStatus.rebuildSuccess', {\n count: result.totalFiles.toLocaleString()\n }));\n\n // 刷新索引信息\n setTimeout(() => {\n this.fetchIndexInfo();\n }, 1000);\n } catch (error) {\n // 错误处理\n if (error.code !== 'ABORTED') {\n const errorMessage = error.suggestion ? `${error.message}。${error.suggestion}` : error.message;\n this.$message.error(errorMessage);\n this.processingError = {\n message: error.message,\n suggestion: error.suggestion,\n recoverable: error.recoverable\n };\n }\n } finally {\n this.rebuilding = false;\n this.isProcessing = false;\n this.currentRebuilder = null;\n this.processingStartTime = null;\n }\n },\n // 备份数据 - 使用前端辅助备份流程\n async backupData() {\n if (this.isProcessing) {\n this.$message.warning(this.$t('sysStatus.operationInProgress'));\n return;\n }\n this.backing = true;\n this.isProcessing = true;\n this.processingError = null;\n this.processingStartTime = Date.now();\n this.processingProgress = {\n current: 0,\n total: 0,\n message: '',\n percentage: 0\n };\n\n // 创建 BackupGenerator 实例\n this.currentBackupGenerator = new BackupGenerator({\n onProgress: progress => this.handleProgress(progress)\n });\n try {\n const result = await this.currentBackupGenerator.generateBackup();\n\n // 成功完成\n const settingsMsg = result.settingsCount > 0 ? this.$t('sysStatus.backupSuccessWithSettings', {\n fileCount: result.fileCount.toLocaleString(),\n settingsCount: result.settingsCount\n }) : this.$t('sysStatus.backupSuccess', {\n count: result.fileCount.toLocaleString()\n });\n this.$message.success(settingsMsg);\n } catch (error) {\n // 错误处理\n if (error.code !== 'ABORTED') {\n const errorMessage = error.suggestion ? `${error.message}。${error.suggestion}` : error.message;\n this.$message.error(errorMessage);\n this.processingError = {\n message: error.message,\n suggestion: error.suggestion,\n recoverable: error.recoverable\n };\n }\n } finally {\n this.backing = false;\n this.isProcessing = false;\n this.currentBackupGenerator = null;\n this.processingStartTime = null;\n }\n },\n // 选择恢复文件\n selectRestoreFile() {\n if (this.restoring) return;\n this.$refs.fileInput.click();\n },\n // 处理文件选择\n async handleFileSelect(event) {\n const file = event.target.files[0];\n if (!file) return;\n if (!file.name.endsWith('.json')) {\n this.$message.error(this.$t('sysStatus.selectJsonFile'));\n return;\n }\n\n // 确认恢复操作\n try {\n await this.$confirm(this.$t('sysStatus.restoreConfirmMessage'), this.$t('sysStatus.restoreConfirmTitle'), {\n confirmButtonText: this.$t('sysStatus.restoreConfirmOk'),\n cancelButtonText: this.$t('sysStatus.restoreConfirmCancel'),\n type: 'warning'\n });\n await this.restoreData(file);\n } catch (error) {\n if (error !== 'cancel') {\n console.error('确认恢复失败:', error);\n }\n }\n\n // 清除文件选择\n event.target.value = '';\n },\n // 恢复数据 - 使用前端辅助分批恢复流程\n async restoreData(file) {\n if (this.isProcessing) {\n this.$message.warning(this.$t('sysStatus.operationInProgress'));\n return;\n }\n this.restoring = true;\n this.isProcessing = true;\n this.processingError = null;\n this.processingStartTime = Date.now();\n this.processingProgress = {\n current: 0,\n total: 0,\n message: '',\n percentage: 0\n };\n try {\n // 解析备份文件\n const fileContent = await file.text();\n let backupData;\n try {\n backupData = JSON.parse(fileContent);\n } catch (parseError) {\n throw new Error(this.$t('sysStatus.invalidBackupFile'));\n }\n\n // 创建 RestoreProcessor 实例\n this.currentRestoreProcessor = new RestoreProcessor({\n chunkSize: 100,\n // 每批恢复 100 条\n onProgress: progress => this.handleProgress(progress),\n onError: error => this.handleError(error)\n });\n const result = await this.currentRestoreProcessor.restore(backupData);\n\n // 恢复完成,重置恢复状态\n this.restoring = false;\n this.isProcessing = false;\n this.currentRestoreProcessor = null;\n this.processingStartTime = null;\n\n // 显示恢复成功消息\n this.$message.success(this.$t('sysStatus.restoreSuccess', {\n files: result.restoredFiles,\n settings: result.restoredSettings\n }));\n\n // 短暂延迟后自动开始重建索引\n await new Promise(resolve => setTimeout(resolve, 500));\n await this.rebuildIndex();\n } catch (error) {\n console.error('恢复数据失败:', error);\n\n // 出错时重置状态\n this.restoring = false;\n this.isProcessing = false;\n this.currentRestoreProcessor = null;\n this.processingStartTime = null;\n if (error.code !== 'ABORTED') {\n const errorMessage = error.suggestion ? `${error.message}。${error.suggestion}` : error.message;\n this.$message.error(this.$t('sysStatus.restoreFailed') + ': ' + errorMessage);\n this.processingError = {\n message: error.message,\n suggestion: error.suggestion,\n recoverable: error.recoverable\n };\n }\n }\n },\n // 格式化时间\n formatTime(timestamp) {\n if (!timestamp) return this.$t('sysStatus.unknown');\n const date = new Date(timestamp);\n return date.toLocaleString('zh-CN', {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit'\n });\n },\n // 计算百分比\n getPercentage(value, total) {\n if (!total || total === 0) return 0;\n return Math.round(value / total * 100);\n },\n // 计算时间差\n getTimeAgo(timestamp) {\n if (!timestamp) return '';\n const now = Date.now();\n const diff = now - timestamp;\n const minutes = Math.floor(diff / 60000);\n const hours = Math.floor(diff / 3600000);\n const days = Math.floor(diff / 86400000);\n if (days > 0) return this.$t('sysStatus.daysAgo', {\n count: days\n });\n if (hours > 0) return this.$t('sysStatus.hoursAgo', {\n count: hours\n });\n if (minutes > 0) return this.$t('sysStatus.minutesAgo', {\n count: minutes\n });\n return this.$t('sysStatus.justNow');\n },\n // 图片加载失败处理\n handleImageError(type) {\n this.loadErrors[type] = true;\n },\n // 检查是否应该显示预览图\n isValidPreview(type, file) {\n if (this.loadErrors[type]) return false;\n if (!file?.metadata?.FileType) return false;\n return file.metadata.FileType.includes('image') || file.metadata.FileType.includes('video');\n },\n // 打开发布页面\n openReleases() {\n window.open('https://github.com/MarSeventh/CloudFlare-ImgBed/releases', '_blank');\n },\n // 判断是否为图片文件\n isImageFile(file) {\n if (!file) return false;\n // 优先通过 FileType 判断\n if (file.metadata?.FileType?.includes('image')) return true;\n // 通过文件名后缀判断\n const fileName = file.metadata?.FileName || file.id || '';\n const extension = fileName.substring(fileName.lastIndexOf('.') + 1).toLowerCase();\n const imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'ico', 'tiff', 'tif', 'avif', 'heic', 'heif'];\n return imageExtensions.includes(extension);\n },\n // 判断是否为视频文件\n isVideoFile(file) {\n if (!file) return false;\n // 优先通过 FileType 判断\n if (file.metadata?.FileType?.includes('video')) return true;\n // 通过文件名后缀判断\n const fileName = file.metadata?.FileName || file.id || '';\n const extension = fileName.substring(fileName.lastIndexOf('.') + 1).toLowerCase();\n const videoExtensions = ['mp4', 'webm', 'ogg', 'avi', 'mov', 'flv', 'wmv', 'mkv', 'm4v', '3gp', 'mpeg', 'mpg'];\n return videoExtensions.includes(extension);\n },\n // 在新窗口打开文件\n openFileInNewTab(file) {\n if (!file?.id) return;\n window.open('/file/' + file.id + '?from=admin', '_blank');\n },\n // 处理进度更新\n handleProgress(progress) {\n this.processingPhase = progress.phase;\n this.processingProgress.message = progress.message || '';\n this.processingProgress.current = progress.current || 0;\n\n // 根据不同阶段计算进度百分比\n if (progress.phase === 'fetching') {\n // 获取阶段:基于已获取的记录数估算(假设总数未知时显示已获取数量)\n this.processingProgress.total = progress.total || 0;\n // 获取阶段占总进度的 60%\n if (progress.total && progress.total > 0) {\n this.processingProgress.percentage = Math.min(60, progress.current / progress.total * 60);\n } else {\n // 未知总数时,使用对数增长模拟进度\n this.processingProgress.percentage = Math.min(50, Math.log10(progress.current + 1) * 15);\n }\n } else if (progress.phase === 'sorting') {\n // 排序阶段:占 60-70%\n this.processingProgress.percentage = 65;\n this.processingProgress.total = progress.total || this.processingProgress.total;\n } else if (progress.phase === 'uploading') {\n // 上传阶段:占 70-95%\n this.processingProgress.total = progress.total || 0;\n if (progress.total && progress.total > 0) {\n this.processingProgress.percentage = 70 + progress.current / progress.total * 25;\n }\n } else if (progress.phase === 'finalizing') {\n // 完成阶段:95-100%\n this.processingProgress.percentage = 97;\n } else if (progress.phase === 'building') {\n // 构建备份阶段:70-90%\n this.processingProgress.percentage = 80;\n } else if (progress.phase === 'downloading') {\n // 下载阶段:90-100%\n this.processingProgress.percentage = 95;\n } else if (progress.phase === 'restoring_files') {\n // 恢复文件阶段:0-80%\n this.processingProgress.total = progress.total || 0;\n this.processingProgress.percentage = progress.percentage || 0;\n } else if (progress.phase === 'restoring_settings') {\n // 恢复设置阶段:80-100%\n this.processingProgress.total = progress.total || 0;\n this.processingProgress.percentage = progress.percentage || 80;\n } else if (progress.phase === 'completed') {\n // 完成\n this.processingProgress.percentage = 100;\n } else if (progress.phase === 'retrying') {\n // 重试阶段:保持当前进度\n this.processingProgress.message = progress.message;\n }\n },\n // 处理错误\n handleError(error) {\n console.error('批量操作错误:', error);\n this.processingError = {\n message: error.message,\n suggestion: error.suggestion,\n recoverable: error.recoverable\n };\n },\n // 取消当前操作\n cancelOperation() {\n if (this.currentRebuilder) {\n this.currentRebuilder.abort();\n this.$message.info(this.$t('sysStatus.cancellingRebuild'));\n }\n if (this.currentBackupGenerator) {\n this.currentBackupGenerator.abort();\n this.$message.info(this.$t('sysStatus.cancellingRebuild'));\n }\n if (this.currentRestoreProcessor) {\n this.currentRestoreProcessor.abort();\n this.$message.info(this.$t('sysStatus.cancellingRebuild'));\n }\n },\n // 重试操作\n retryOperation() {\n this.processingError = null;\n if (this.rebuilding) {\n this.rebuilding = false;\n this.isProcessing = false;\n this.$nextTick(() => {\n this.rebuildIndex();\n });\n } else if (this.backing) {\n this.backing = false;\n this.isProcessing = false;\n this.$nextTick(() => {\n this.backupData();\n });\n }\n },\n // 关闭错误提示\n dismissError() {\n this.processingError = null;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./SysCogStatus.vue?vue&type=template&id=776bcef4&scoped=true\"\nimport script from \"./SysCogStatus.vue?vue&type=script&lang=js\"\nexport * from \"./SysCogStatus.vue?vue&type=script&lang=js\"\n\nimport \"./SysCogStatus.vue?vue&type=style&index=0&id=776bcef4&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-776bcef4\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, renderSlot as _renderSlot, createBlock as _createBlock, createCommentVNode as _createCommentVNode, vShow as _vShow, withModifiers as _withModifiers, withDirectives as _withDirectives, Transition as _Transition, withCtx as _withCtx, normalizeStyle as _normalizeStyle } from \"vue\";\nconst _hoisted_1 = [\"onClick\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_ChannelIcon = _resolveComponent(\"ChannelIcon\");\n return _openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"custom-select\", {\n 'is-open': $data.isOpen\n }]),\n style: _normalizeStyle({\n width: $props.width\n })\n }, [_createElementVNode(\"div\", {\n class: \"custom-select-trigger\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.toggleDropdown && $options.toggleDropdown(...args))\n }, [_createElementVNode(\"span\", {\n class: _normalizeClass([\"custom-select-value\", {\n 'is-placeholder': !$props.modelValue\n }])\n }, _toDisplayString($options.displayLabel), 3), _createVNode(_component_font_awesome_icon, {\n icon: \"chevron-down\",\n class: \"custom-select-arrow\"\n })]), _createVNode(_Transition, {\n name: \"dropdown-fade\"\n }, {\n default: _withCtx(() => [_withDirectives(_createElementVNode(\"div\", {\n class: \"custom-select-dropdown\",\n onClick: _cache[1] || (_cache[1] = _withModifiers(() => {}, [\"stop\"]))\n }, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.options, option => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: option.value,\n class: _normalizeClass([\"custom-select-option\", {\n 'is-selected': $props.modelValue === option.value\n }]),\n onClick: $event => $options.selectOption(option.value)\n }, [_renderSlot(_ctx.$slots, \"option\", {\n option: option\n }, () => [option.channelType ? (_openBlock(), _createBlock(_component_ChannelIcon, {\n key: 0,\n type: option.channelType,\n class: _normalizeClass(['option-icon', option.iconClass])\n }, null, 8, [\"type\", \"class\"])) : option.icon ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 1,\n icon: option.icon,\n class: _normalizeClass(['option-icon', option.iconClass])\n }, null, 8, [\"icon\", \"class\"])) : _createCommentVNode(\"\", true), _createElementVNode(\"span\", null, _toDisplayString(option.label), 1)], true)], 10, _hoisted_1);\n }), 128))], 512), [[_vShow, $data.isOpen]])]),\n _: 3\n })], 6);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.find.js\";\nimport ChannelIcon from '@/components/icons/ChannelIcon.vue';\nexport default {\n name: 'CustomSelect',\n components: {\n ChannelIcon\n },\n props: {\n modelValue: {\n type: [String, Number],\n default: ''\n },\n options: {\n type: Array,\n required: true\n // 格式: [{ value: '', label: '', icon?: '', iconClass?: '', channelType?: '' }]\n },\n placeholder: {\n type: String,\n default: ''\n },\n width: {\n type: String,\n default: '160px'\n }\n },\n emits: ['update:modelValue', 'change'],\n data() {\n return {\n isOpen: false\n };\n },\n computed: {\n resolvedPlaceholder() {\n return this.placeholder || this.$t('common.select');\n },\n displayLabel() {\n const selected = this.options.find(opt => opt.value === this.modelValue);\n return selected ? selected.label : this.resolvedPlaceholder;\n }\n },\n mounted() {\n document.addEventListener('click', this.handleClickOutside);\n },\n beforeUnmount() {\n document.removeEventListener('click', this.handleClickOutside);\n },\n methods: {\n toggleDropdown() {\n this.isOpen = !this.isOpen;\n },\n selectOption(value) {\n this.$emit('update:modelValue', value);\n this.$emit('change', value);\n this.isOpen = false;\n },\n handleClickOutside(e) {\n if (!this.$el.contains(e.target)) {\n this.isOpen = false;\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./CustomSelect.vue?vue&type=template&id=b9420432&scoped=true\"\nimport script from \"./CustomSelect.vue?vue&type=script&lang=js\"\nexport * from \"./CustomSelect.vue?vue&type=script&lang=js\"\n\nimport \"./CustomSelect.vue?vue&type=style&index=0&id=b9420432&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-b9420432\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, withModifiers as _withModifiers, normalizeClass as _normalizeClass, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"upload-settings\"\n};\nconst _hoisted_2 = {\n class: \"page-header\"\n};\nconst _hoisted_3 = {\n class: \"first-title\"\n};\nconst _hoisted_4 = {\n class: \"header-actions\"\n};\nconst _hoisted_5 = {\n class: \"group-header\"\n};\nconst _hoisted_6 = {\n class: \"group-title\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"load-balance-switch\"\n};\nconst _hoisted_8 = {\n class: \"switch-label\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"channel-cards\"\n};\nconst _hoisted_10 = [\"onMousemove\", \"onMouseleave\"];\nconst _hoisted_11 = {\n class: \"card-header\"\n};\nconst _hoisted_12 = {\n class: \"card-title\"\n};\nconst _hoisted_13 = {\n class: \"channel-name\"\n};\nconst _hoisted_14 = {\n class: \"card-body\"\n};\nconst _hoisted_15 = {\n class: \"card-info\"\n};\nconst _hoisted_16 = {\n class: \"info-item\"\n};\nconst _hoisted_17 = {\n class: \"info-text\"\n};\nconst _hoisted_18 = {\n key: 0,\n class: \"info-item\"\n};\nconst _hoisted_19 = {\n class: \"info-text\"\n};\nconst _hoisted_20 = {\n key: 1,\n class: \"info-item\"\n};\nconst _hoisted_21 = [\"title\"];\nconst _hoisted_22 = {\n class: \"info-item\"\n};\nconst _hoisted_23 = {\n class: \"info-text\"\n};\nconst _hoisted_24 = {\n key: 0,\n class: \"info-item\"\n};\nconst _hoisted_25 = [\"title\"];\nconst _hoisted_26 = {\n class: \"info-item\"\n};\nconst _hoisted_27 = {\n class: \"info-text\"\n};\nconst _hoisted_28 = {\n class: \"info-item\"\n};\nconst _hoisted_29 = {\n class: \"info-text\"\n};\nconst _hoisted_30 = {\n class: \"info-item\"\n};\nconst _hoisted_31 = {\n class: \"info-text\"\n};\nconst _hoisted_32 = {\n class: \"info-item\"\n};\nconst _hoisted_33 = [\"title\"];\nconst _hoisted_34 = {\n key: 0,\n class: \"info-item\"\n};\nconst _hoisted_35 = [\"title\"];\nconst _hoisted_36 = {\n key: 0,\n class: \"quota-mini\"\n};\nconst _hoisted_37 = {\n class: \"quota-text\"\n};\nconst _hoisted_38 = {\n class: \"card-actions\"\n};\nconst _hoisted_39 = {\n key: 1,\n class: \"empty-tip\"\n};\nconst _hoisted_40 = {\n class: \"channel-type-option\"\n};\nconst _hoisted_41 = {\n key: 0,\n class: \"form-warning\",\n style: {\n \"margin-top\": \"0\"\n }\n};\nconst _hoisted_42 = [\"innerHTML\"];\nconst _hoisted_43 = {\n class: \"form-warning\"\n};\nconst _hoisted_44 = {\n class: \"quota-label\"\n};\nconst _hoisted_45 = {\n class: \"quota-status\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_CustomSelect = _resolveComponent(\"CustomSelect\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_ChannelIcon = _resolveComponent(\"ChannelIcon\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_progress = _resolveComponent(\"el-progress\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_input_number = _resolveComponent(\"el-input-number\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _component_el_descriptions_item = _resolveComponent(\"el-descriptions-item\");\n const _component_el_descriptions = _resolveComponent(\"el-descriptions\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"h3\", _hoisted_3, [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.title')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysUpload.titleTooltip'),\n placement: \"right\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_CustomSelect, {\n modelValue: $data.channelFilter,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.channelFilter = $event),\n options: $options.filterOptions,\n placeholder: _ctx.$t('sysUpload.filterPlaceholder'),\n width: \"160px\"\n }, null, 8, [\"modelValue\", \"options\", \"placeholder\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[1] || (_cache[1] = $event => $data.showAddDialog = true),\n class: \"add-btn\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"plus\",\n style: {\n \"margin-right\": \"6px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('sysUpload.addChannel')), 1)]),\n _: 1\n })])]), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.filteredChannels, channelType => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: channelType.value,\n class: \"channel-group\"\n }, [_createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_ChannelIcon, {\n type: channelType.value,\n class: \"group-icon\"\n }, null, 8, [\"type\"]), _createElementVNode(\"span\", null, _toDisplayString(channelType.label), 1), _createVNode(_component_el_tag, {\n size: \"small\",\n type: \"info\",\n class: \"channel-count\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.getChannelList(channelType.value).length), 1)]),\n _: 2\n }, 1024)]), $options.hasLoadBalance(channelType.value) ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [_createElementVNode(\"span\", _hoisted_8, _toDisplayString(_ctx.$t('sysUpload.loadBalance')), 1), _createVNode(_component_el_switch, {\n modelValue: $options.getSettings(channelType.value).loadBalance.enabled,\n \"onUpdate:modelValue\": $event => $options.getSettings(channelType.value).loadBalance.enabled = $event,\n size: \"small\",\n onChange: $options.saveSettings\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\", \"onChange\"])])) : _createCommentVNode(\"\", true)]), $options.getChannelList(channelType.value).length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.getChannelList(channelType.value), (channel, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: channel.name || index,\n class: _normalizeClass([\"channel-card\", [channelType.value, {\n 'disabled': !channel.enabled,\n 'fixed': channel.fixed\n }]]),\n onMousemove: $event => $options.handleCardMouseMove($event, channelType.value, index),\n onMouseleave: $event => $options.handleCardMouseLeave(channelType.value, index)\n }, [_createElementVNode(\"div\", {\n class: \"card-glow\",\n ref_for: true,\n ref: `glow-${channelType.value}-${index}`\n }, null, 512), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"span\", _hoisted_13, _toDisplayString(channel.name || _ctx.$t('sysUpload.unnamedChannel')), 1), channel.fixed ? (_openBlock(), _createBlock(_component_el_tag, {\n key: 0,\n size: \"small\",\n type: \"warning\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.envVariable')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true)]), _createVNode(_component_el_switch, {\n modelValue: channel.enabled,\n \"onUpdate:modelValue\": $event => channel.enabled = $event,\n size: \"small\",\n onClick: _cache[2] || (_cache[2] = _withModifiers(() => {}, [\"stop\"])),\n onChange: $options.saveSettings\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\", \"onChange\"])]), _createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"div\", _hoisted_15, [channelType.value === 'telegram' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [_createElementVNode(\"div\", _hoisted_16, [_createVNode(_component_font_awesome_icon, {\n icon: \"robot\",\n class: \"info-icon\"\n }), _createElementVNode(\"span\", _hoisted_17, \"Bot: \" + _toDisplayString($options.maskText(channel.botToken)), 1)]), channel.chatId ? (_openBlock(), _createElementBlock(\"div\", _hoisted_18, [_createVNode(_component_font_awesome_icon, {\n icon: \"comments\",\n class: \"info-icon\"\n }), _createElementVNode(\"span\", _hoisted_19, \"Channel: \" + _toDisplayString($options.maskText(channel.chatId)), 1)])) : _createCommentVNode(\"\", true)], 64)) : channelType.value === 'cfr2' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_20, [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"info-icon\"\n }), _createElementVNode(\"span\", {\n class: \"info-text\",\n title: channel.publicUrl\n }, _toDisplayString(channel.publicUrl || _ctx.$t('sysUpload.notSet')), 9, _hoisted_21)])) : channelType.value === 's3' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 2\n }, [_createElementVNode(\"div\", _hoisted_22, [_createVNode(_component_font_awesome_icon, {\n icon: \"server\",\n class: \"info-icon\"\n }), _createElementVNode(\"span\", _hoisted_23, _toDisplayString(channel.bucketName || _ctx.$t('sysUpload.notSet')), 1)]), channel.endpoint ? (_openBlock(), _createElementBlock(\"div\", _hoisted_24, [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"info-icon\"\n }), _createElementVNode(\"span\", {\n class: \"info-text\",\n title: channel.endpoint\n }, _toDisplayString(channel.endpoint), 9, _hoisted_25)])) : _createCommentVNode(\"\", true)], 64)) : channelType.value === 'discord' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 3\n }, [_createElementVNode(\"div\", _hoisted_26, [_createVNode(_component_font_awesome_icon, {\n icon: \"robot\",\n class: \"info-icon\"\n }), _createElementVNode(\"span\", _hoisted_27, \"Bot: \" + _toDisplayString($options.maskText(channel.botToken)), 1)]), _createElementVNode(\"div\", _hoisted_28, [_createVNode(_component_font_awesome_icon, {\n icon: \"hashtag\",\n class: \"info-icon\"\n }), _createElementVNode(\"span\", _hoisted_29, \"Channel: \" + _toDisplayString($options.maskText(channel.channelId)), 1)]), channel.isNitro ? (_openBlock(), _createBlock(_component_el_tag, {\n key: 0,\n size: \"small\",\n type: \"success\"\n }, {\n default: _withCtx(() => [...(_cache[78] || (_cache[78] = [_createTextVNode(\"Nitro\", -1)]))]),\n _: 1\n })) : _createCommentVNode(\"\", true)], 64)) : channelType.value === 'huggingface' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 4\n }, [_createElementVNode(\"div\", _hoisted_30, [_createVNode(_component_font_awesome_icon, {\n icon: \"database\",\n class: \"info-icon\"\n }), _createElementVNode(\"span\", _hoisted_31, _toDisplayString(channel.repo || _ctx.$t('sysUpload.notSet')), 1)]), channel.isPrivate ? (_openBlock(), _createBlock(_component_el_tag, {\n key: 0,\n size: \"small\",\n type: \"warning\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.privateRepo')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true)], 64)) : channelType.value === 'webdav' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 5\n }, [_createElementVNode(\"div\", _hoisted_32, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder\",\n class: \"info-icon\"\n }), _createElementVNode(\"span\", {\n class: \"info-text\",\n title: channel.baseUrl\n }, _toDisplayString(channel.baseUrl || _ctx.$t('sysUpload.notSet')), 9, _hoisted_33)]), channel.publicUrl ? (_openBlock(), _createElementBlock(\"div\", _hoisted_34, [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"info-icon\"\n }), _createElementVNode(\"span\", {\n class: \"info-text\",\n title: channel.publicUrl\n }, _toDisplayString(channel.publicUrl), 9, _hoisted_35)])) : _createCommentVNode(\"\", true)], 64)) : _createCommentVNode(\"\", true)]), channel.quota?.enabled ? (_openBlock(), _createElementBlock(\"div\", _hoisted_36, [_createVNode(_component_el_progress, {\n percentage: $options.getQuotaPercentage(channel),\n status: $options.getQuotaStatus(channel),\n \"stroke-width\": 6\n }, null, 8, [\"percentage\", \"status\"]), _createElementVNode(\"span\", _hoisted_37, _toDisplayString($options.getQuotaText(channel)), 1)])) : _createCommentVNode(\"\", true)]), _createElementVNode(\"div\", _hoisted_38, [_createVNode(_component_el_button, {\n text: \"\",\n type: \"primary\",\n size: \"small\",\n onClick: $event => $options.openDetailDialog(channelType.value, index)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"eye\",\n style: {\n \"margin-right\": \"4px\"\n }\n }), _createTextVNode(_toDisplayString(_ctx.$t('sysUpload.detail')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n text: \"\",\n type: \"primary\",\n size: \"small\",\n onClick: $event => $options.openEditDialog(channelType.value, index)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"edit\",\n style: {\n \"margin-right\": \"4px\"\n }\n }), _createTextVNode(_toDisplayString(_ctx.$t('sysUpload.editBtn')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n text: \"\",\n type: \"danger\",\n size: \"small\",\n onClick: $event => $options.deleteChannel(channelType.value, index),\n disabled: channel.fixed\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\",\n style: {\n \"margin-right\": \"4px\"\n }\n }), _createTextVNode(_toDisplayString(_ctx.$t('sysUpload.deleteBtn')), 1)]),\n _: 1\n }, 8, [\"onClick\", \"disabled\"])])], 42, _hoisted_10);\n }), 128))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_39, [_createVNode(_component_font_awesome_icon, {\n icon: \"inbox\",\n class: \"empty-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('sysUpload.noChannels', {\n type: channelType.label\n })), 1)]))]);\n }), 128)), _createVNode(_component_el_dialog, {\n modelValue: $data.showAddDialog,\n \"onUpdate:modelValue\": _cache[35] || (_cache[35] = $event => $data.showAddDialog = $event),\n title: _ctx.$t('sysUpload.addDialogTitle'),\n class: \"channel-dialog\",\n \"destroy-on-close\": \"\",\n onClosed: $options.resetAddForm\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[34] || (_cache[34] = $event => $data.showAddDialog = false)\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.cancel')), 1)]),\n _: 1\n }), $data.newChannel.type !== 'cfr2' ? (_openBlock(), _createBlock(_component_el_button, {\n key: 0,\n type: \"primary\",\n onClick: $options.confirmAddChannel\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.confirmAdd')), 1)]),\n _: 1\n }, 8, [\"onClick\"])) : _createCommentVNode(\"\", true)]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $data.newChannel,\n \"label-position\": \"top\",\n ref: \"addForm\",\n rules: $options.addRules\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.channelTypeLabel'),\n prop: \"type\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $data.newChannel.type,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.newChannel.type = $event),\n placeholder: _ctx.$t('sysUpload.channelTypePlaceholder'),\n style: {\n \"width\": \"100%\"\n },\n onChange: $options.onChannelTypeChange\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.addableChannels, ch => {\n return _openBlock(), _createBlock(_component_el_option, {\n key: ch.value,\n label: ch.label,\n value: ch.value\n }, {\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_40, [_createVNode(_component_ChannelIcon, {\n type: ch.value,\n class: \"select-option-icon\"\n }, null, 8, [\"type\"]), _createElementVNode(\"span\", null, _toDisplayString(ch.label), 1)])]),\n _: 2\n }, 1032, [\"label\", \"value\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\", \"placeholder\", \"onChange\"])]),\n _: 1\n }, 8, [\"label\"]), $data.newChannel.type === 'cfr2' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_41, [_createVNode(_component_font_awesome_icon, {\n icon: \"info-circle\",\n style: {\n \"margin-right\": \"6px\"\n }\n }), _createElementVNode(\"span\", {\n innerHTML: _ctx.$t('sysUpload.r2ConfigNote')\n }, null, 8, _hoisted_42)])) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createVNode(_component_el_form_item, {\n prop: \"name\"\n }, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.channelNameLabel')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysUpload.channelNameImmutableTip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-triangle\",\n class: \"inline-warning-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.name,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $data.newChannel.name = $event),\n placeholder: _ctx.$t('sysUpload.channelNamePlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }), $data.newChannel.type === 'telegram' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.botTokenLabel'),\n prop: \"botToken\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.botToken,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $data.newChannel.botToken = $event),\n type: \"password\",\n \"show-password\": \"\",\n placeholder: _ctx.$t('sysUpload.botTokenPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.chatIdLabel'),\n prop: \"chatId\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.chatId,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.newChannel.chatId = $event),\n type: \"password\",\n \"show-password\": \"\",\n placeholder: _ctx.$t('sysUpload.chatIdPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.proxyDomain')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.proxyUrl,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = $event => $data.newChannel.proxyUrl = $event),\n placeholder: _ctx.$t('sysUpload.proxyDomainPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"])], 64)) : $data.newChannel.type === 's3' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.endpointLabel'),\n prop: \"endpoint\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.endpoint,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => $data.newChannel.endpoint = $event),\n placeholder: _ctx.$t('sysUpload.endpointPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, null, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.cdnDomain')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysUpload.cdnDomainTip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.cdnDomain,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = $event => $data.newChannel.cdnDomain = $event),\n placeholder: _ctx.$t('sysUpload.cdnDomainPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.bucketName'),\n prop: \"bucketName\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.bucketName,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $data.newChannel.bucketName = $event),\n placeholder: _ctx.$t('sysUpload.bucketNamePlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.bucketRegion'),\n prop: \"region\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.region,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => $data.newChannel.region = $event),\n placeholder: _ctx.$t('sysUpload.bucketRegionPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.accessKeyId'),\n prop: \"accessKeyId\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.accessKeyId,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = $event => $data.newChannel.accessKeyId = $event),\n type: \"password\",\n \"show-password\": \"\",\n placeholder: _ctx.$t('sysUpload.accessKeyIdPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.secretAccessKey'),\n prop: \"secretAccessKey\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.secretAccessKey,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $event => $data.newChannel.secretAccessKey = $event),\n type: \"password\",\n \"show-password\": \"\",\n placeholder: _ctx.$t('sysUpload.secretAccessKeyPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, null, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.pathStyle')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysUpload.pathStyleTip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.newChannel.pathStyle,\n \"onUpdate:modelValue\": _cache[14] || (_cache[14] = $event => $data.newChannel.pathStyle = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.quotaLimit')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.newChannel.quota.enabled,\n \"onUpdate:modelValue\": _cache[15] || (_cache[15] = $event => $data.newChannel.quota.enabled = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), $data.newChannel.quota?.enabled ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.quotaLimitGB')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $data.newChannel.quota.limitGB,\n \"onUpdate:modelValue\": _cache[16] || (_cache[16] = $event => $data.newChannel.quota.limitGB = $event),\n min: 0.1,\n step: 1,\n precision: 1\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.quotaThreshold')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $data.newChannel.quota.threshold,\n \"onUpdate:modelValue\": _cache[17] || (_cache[17] = $event => $data.newChannel.quota.threshold = $event),\n min: 50,\n max: 100,\n step: 5\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"])], 64)) : _createCommentVNode(\"\", true)], 64)) : $data.newChannel.type === 'discord' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 2\n }, [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.botTokenLabel'),\n prop: \"botToken\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.botToken,\n \"onUpdate:modelValue\": _cache[18] || (_cache[18] = $event => $data.newChannel.botToken = $event),\n type: \"password\",\n \"show-password\": \"\",\n placeholder: _ctx.$t('sysUpload.botTokenPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.channelIdLabel'),\n prop: \"channelId\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.channelId,\n \"onUpdate:modelValue\": _cache[19] || (_cache[19] = $event => $data.newChannel.channelId = $event),\n type: \"password\",\n \"show-password\": \"\",\n placeholder: _ctx.$t('sysUpload.channelIdPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.proxyDomain')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.proxyUrl,\n \"onUpdate:modelValue\": _cache[20] || (_cache[20] = $event => $data.newChannel.proxyUrl = $event),\n placeholder: _ctx.$t('sysUpload.proxyDomainPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, null, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.nitroMember')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysUpload.nitroTip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.newChannel.isNitro,\n \"onUpdate:modelValue\": _cache[21] || (_cache[21] = $event => $data.newChannel.isNitro = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }), _createElementVNode(\"div\", _hoisted_43, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-triangle\",\n style: {\n \"margin-right\": \"6px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('sysUpload.discordWarning')), 1)])], 64)) : $data.newChannel.type === 'huggingface' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 3\n }, [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.repoName'),\n prop: \"repo\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.repo,\n \"onUpdate:modelValue\": _cache[22] || (_cache[22] = $event => $data.newChannel.repo = $event),\n placeholder: _ctx.$t('sysUpload.repoNamePlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.accessToken'),\n prop: \"token\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.token,\n \"onUpdate:modelValue\": _cache[23] || (_cache[23] = $event => $data.newChannel.token = $event),\n type: \"password\",\n \"show-password\": \"\",\n placeholder: _ctx.$t('sysUpload.accessTokenPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, null, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.privateRepo')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysUpload.privateRepoTip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.newChannel.isPrivate,\n \"onUpdate:modelValue\": _cache[24] || (_cache[24] = $event => $data.newChannel.isPrivate = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n })], 64)) : $data.newChannel.type === 'webdav' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 4\n }, [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.webdavBaseUrl'),\n prop: \"baseUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.baseUrl,\n \"onUpdate:modelValue\": _cache[25] || (_cache[25] = $event => $data.newChannel.baseUrl = $event),\n placeholder: _ctx.$t('sysUpload.webdavBaseUrlPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.webdavUsername')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.username,\n \"onUpdate:modelValue\": _cache[26] || (_cache[26] = $event => $data.newChannel.username = $event),\n placeholder: _ctx.$t('sysUpload.webdavUsernamePlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.webdavPassword')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.password,\n \"onUpdate:modelValue\": _cache[27] || (_cache[27] = $event => $data.newChannel.password = $event),\n type: \"password\",\n \"show-password\": \"\",\n placeholder: _ctx.$t('sysUpload.webdavPasswordPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, null, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.publicUrl')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysUpload.webdavPublicUrlTip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.publicUrl,\n \"onUpdate:modelValue\": _cache[28] || (_cache[28] = $event => $data.newChannel.publicUrl = $event),\n placeholder: _ctx.$t('sysUpload.webdavPublicUrlPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.webdavHeaders')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newChannel.headersText,\n \"onUpdate:modelValue\": _cache[29] || (_cache[29] = $event => $data.newChannel.headersText = $event),\n type: \"textarea\",\n autosize: {\n minRows: 2\n },\n placeholder: _ctx.$t('sysUpload.webdavHeadersPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, null, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.webdavCreateDirectory')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysUpload.webdavCreateDirectoryTip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.newChannel.createDirectory,\n \"onUpdate:modelValue\": _cache[30] || (_cache[30] = $event => $data.newChannel.createDirectory = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.quotaLimit')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.newChannel.quota.enabled,\n \"onUpdate:modelValue\": _cache[31] || (_cache[31] = $event => $data.newChannel.quota.enabled = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), $data.newChannel.quota?.enabled ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.quotaLimitGB')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $data.newChannel.quota.limitGB,\n \"onUpdate:modelValue\": _cache[32] || (_cache[32] = $event => $data.newChannel.quota.limitGB = $event),\n min: 0.1,\n step: 1,\n precision: 1\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.quotaThreshold')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $data.newChannel.quota.threshold,\n \"onUpdate:modelValue\": _cache[33] || (_cache[33] = $event => $data.newChannel.quota.threshold = $event),\n min: 50,\n max: 100,\n step: 5\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"])], 64)) : _createCommentVNode(\"\", true)], 64)) : _createCommentVNode(\"\", true)], 64))]),\n _: 1\n }, 8, [\"model\", \"rules\"])]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"onClosed\"]), _createVNode(_component_el_dialog, {\n modelValue: $data.showDetailDialog,\n \"onUpdate:modelValue\": _cache[37] || (_cache[37] = $event => $data.showDetailDialog = $event),\n title: _ctx.$t('sysUpload.detailDialogTitle', {\n name: $data.currentChannel?.name || ''\n }),\n class: \"channel-dialog\",\n onClosed: $options.resetDetailData\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[36] || (_cache[36] = $event => $data.showDetailDialog = false)\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.closeBtn')), 1)]),\n _: 1\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $options.openEditFromDetail\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.editBtn')), 1)]),\n _: 1\n }, 8, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_descriptions, {\n column: 1,\n border: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.channelNameDetail')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($data.currentChannel?.name), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.channelTypeDetail')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.getChannelTypeLabel($data.currentChannelType)), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.statusLabel')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tag, {\n type: $data.currentChannel?.enabled ? 'success' : 'info'\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($data.currentChannel?.enabled ? _ctx.$t('sysUpload.enabled') : _ctx.$t('sysUpload.disabled')), 1)]),\n _: 1\n }, 8, [\"type\"])]),\n _: 1\n }, 8, [\"label\"]), $data.currentChannel?.fixed ? (_openBlock(), _createBlock(_component_el_descriptions_item, {\n key: 0,\n label: _ctx.$t('sysUpload.configSource')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tag, {\n type: \"warning\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.envVariable')), 1)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"label\"])) : _createCommentVNode(\"\", true), $data.currentChannelType === 'telegram' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.botTokenLabel')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.maskText($data.currentChannel?.botToken, 10)), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.chatIdLabel')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.maskText($data.currentChannel?.chatId, 6)), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.proxyDomain')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($data.currentChannel?.proxyUrl || _ctx.$t('sysUpload.notSet')), 1)]),\n _: 1\n }, 8, [\"label\"])], 64)) : $data.currentChannelType === 'cfr2' ? (_openBlock(), _createBlock(_component_el_descriptions_item, {\n key: 2,\n label: _ctx.$t('sysUpload.publicUrl')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n \"model-value\": $data.currentChannel?.publicUrl || _ctx.$t('sysUpload.notSet'),\n readonly: \"\"\n }, null, 8, [\"model-value\"])]),\n _: 1\n }, 8, [\"label\"])) : $data.currentChannelType === 's3' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 3\n }, [_createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.endpointLabel')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n \"model-value\": $data.currentChannel?.endpoint,\n readonly: \"\"\n }, null, 8, [\"model-value\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.cdnDomain')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n \"model-value\": $data.currentChannel?.cdnDomain || _ctx.$t('sysUpload.notSet'),\n readonly: \"\"\n }, null, 8, [\"model-value\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.bucketName')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($data.currentChannel?.bucketName), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.bucketRegion')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($data.currentChannel?.region), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.pathStyle')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($data.currentChannel?.pathStyle ? _ctx.$t('sysUpload.isPathStyle') : _ctx.$t('sysUpload.isNotPathStyle')), 1)]),\n _: 1\n }, 8, [\"label\"])], 64)) : $data.currentChannelType === 'discord' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 4\n }, [_createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.botTokenLabel')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.maskText($data.currentChannel?.botToken, 10)), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.channelIdLabel')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.maskText($data.currentChannel?.channelId, 6)), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.proxyDomain')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($data.currentChannel?.proxyUrl || _ctx.$t('sysUpload.notSet')), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.nitroMember')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($data.currentChannel?.isNitro ? _ctx.$t('sysUpload.isPathStyle') : _ctx.$t('sysUpload.isNotPathStyle')), 1)]),\n _: 1\n }, 8, [\"label\"])], 64)) : $data.currentChannelType === 'huggingface' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 5\n }, [_createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.repoName')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($data.currentChannel?.repo), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.privateRepo')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($data.currentChannel?.isPrivate ? _ctx.$t('sysUpload.isPathStyle') : _ctx.$t('sysUpload.isNotPathStyle')), 1)]),\n _: 1\n }, 8, [\"label\"])], 64)) : $data.currentChannelType === 'webdav' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 6\n }, [_createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.webdavBaseUrl')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n \"model-value\": $data.currentChannel?.baseUrl,\n readonly: \"\"\n }, null, 8, [\"model-value\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.publicUrl')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n \"model-value\": $data.currentChannel?.publicUrl || _ctx.$t('sysUpload.notSet'),\n readonly: \"\"\n }, null, 8, [\"model-value\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.webdavUsername')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($data.currentChannel?.username || _ctx.$t('sysUpload.notSet')), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.webdavHeaders')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n \"model-value\": $options.formatHeaders($data.currentChannel?.headers),\n type: \"textarea\",\n autosize: {\n minRows: 2\n },\n readonly: \"\"\n }, null, 8, [\"model-value\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.webdavCreateDirectory')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($data.currentChannel?.createDirectory !== false ? _ctx.$t('sysUpload.isPathStyle') : _ctx.$t('sysUpload.isNotPathStyle')), 1)]),\n _: 1\n }, 8, [\"label\"])], 64)) : _createCommentVNode(\"\", true), $data.currentChannel?.quota?.enabled ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 7\n }, [_createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.quotaLimit')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($data.currentChannel?.quota?.limitGB) + \" GB\", 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('sysUpload.quotaThreshold')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($data.currentChannel?.quota?.threshold) + \"%\", 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, null, {\n label: _withCtx(() => [_createElementVNode(\"span\", _hoisted_44, [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.currentUsage')) + \" \", 1), _createVNode(_component_el_button, {\n link: \"\",\n type: \"primary\",\n onClick: $options.refreshQuota,\n class: \"refresh-btn\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"sync-alt\",\n class: _normalizeClass({\n 'fa-spin': $data.quotaLoading\n })\n }, null, 8, [\"class\"])]),\n _: 1\n }, 8, [\"onClick\"])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_45, [_createVNode(_component_el_progress, {\n percentage: $options.getQuotaPercentage($data.currentChannel),\n status: $options.getQuotaStatus($data.currentChannel),\n \"stroke-width\": 16,\n \"text-inside\": true,\n format: () => $options.getQuotaText($data.currentChannel)\n }, null, 8, [\"percentage\", \"status\", \"format\"]), _createElementVNode(\"div\", {\n class: _normalizeClass([\"quota-info\", {\n 'quota-warning': $options.isQuotaExceeded($data.currentChannel)\n }])\n }, _toDisplayString($options.getQuotaStatusText($data.currentChannel)), 3)])]),\n _: 1\n })], 64)) : _createCommentVNode(\"\", true)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"onClosed\"]), _createVNode(_component_el_dialog, {\n modelValue: $data.showEditDialog,\n \"onUpdate:modelValue\": _cache[77] || (_cache[77] = $event => $data.showEditDialog = $event),\n title: _ctx.$t('sysUpload.editDialogTitle', {\n name: $data.editChannel?.name || ''\n }),\n class: \"channel-dialog\",\n \"destroy-on-close\": \"\",\n onClosed: $options.resetEditData\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[76] || (_cache[76] = $event => $data.showEditDialog = false)\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.cancel')), 1)]),\n _: 1\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $options.confirmEditChannel\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.saveChanges')), 1)]),\n _: 1\n }, 8, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $data.editChannel,\n \"label-position\": \"top\",\n ref: \"editForm\",\n rules: $options.editRules\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n prop: \"name\"\n }, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.channelNameLabel')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysUpload.channelNameEditDisabledTip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-triangle\",\n class: \"inline-warning-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.name,\n \"onUpdate:modelValue\": _cache[38] || (_cache[38] = $event => $data.editChannel.name = $event),\n disabled: \"\"\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.enableChannel')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.editChannel.enabled,\n \"onUpdate:modelValue\": _cache[39] || (_cache[39] = $event => $data.editChannel.enabled = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), $data.currentChannelType === 'telegram' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.botTokenLabel'),\n prop: \"botToken\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.botToken,\n \"onUpdate:modelValue\": _cache[40] || (_cache[40] = $event => $data.editChannel.botToken = $event),\n disabled: $data.editChannel.fixed,\n type: \"password\",\n \"show-password\": \"\"\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.chatIdLabel'),\n prop: \"chatId\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.chatId,\n \"onUpdate:modelValue\": _cache[41] || (_cache[41] = $event => $data.editChannel.chatId = $event),\n disabled: $data.editChannel.fixed,\n type: \"password\",\n \"show-password\": \"\"\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.proxyDomain')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.proxyUrl,\n \"onUpdate:modelValue\": _cache[42] || (_cache[42] = $event => $data.editChannel.proxyUrl = $event),\n placeholder: _ctx.$t('sysUpload.proxyDomainPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"])], 64)) : $data.currentChannelType === 'cfr2' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.publicUrl')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.publicUrl,\n \"onUpdate:modelValue\": _cache[43] || (_cache[43] = $event => $data.editChannel.publicUrl = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.quotaLimit')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.editChannel.quota.enabled,\n \"onUpdate:modelValue\": _cache[44] || (_cache[44] = $event => $data.editChannel.quota.enabled = $event),\n onChange: _cache[45] || (_cache[45] = val => $options.onQuotaEnabledChange(val, $data.editChannel))\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), $data.editChannel.quota?.enabled ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.quotaLimitGB')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $data.editChannel.quota.limitGB,\n \"onUpdate:modelValue\": _cache[46] || (_cache[46] = $event => $data.editChannel.quota.limitGB = $event),\n min: 0.1,\n step: 1,\n precision: 1\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.quotaThreshold')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $data.editChannel.quota.threshold,\n \"onUpdate:modelValue\": _cache[47] || (_cache[47] = $event => $data.editChannel.quota.threshold = $event),\n min: 50,\n max: 100,\n step: 5\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"])], 64)) : _createCommentVNode(\"\", true)], 64)) : $data.currentChannelType === 's3' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 2\n }, [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.endpointLabel'),\n prop: \"endpoint\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.endpoint,\n \"onUpdate:modelValue\": _cache[48] || (_cache[48] = $event => $data.editChannel.endpoint = $event),\n disabled: $data.editChannel.fixed\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, null, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.cdnDomain')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysUpload.cdnDomainTip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.cdnDomain,\n \"onUpdate:modelValue\": _cache[49] || (_cache[49] = $event => $data.editChannel.cdnDomain = $event),\n placeholder: _ctx.$t('sysUpload.cdnDomainPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.bucketName'),\n prop: \"bucketName\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.bucketName,\n \"onUpdate:modelValue\": _cache[50] || (_cache[50] = $event => $data.editChannel.bucketName = $event),\n disabled: $data.editChannel.fixed\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.bucketRegion'),\n prop: \"region\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.region,\n \"onUpdate:modelValue\": _cache[51] || (_cache[51] = $event => $data.editChannel.region = $event),\n disabled: $data.editChannel.fixed\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.accessKeyId'),\n prop: \"accessKeyId\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.accessKeyId,\n \"onUpdate:modelValue\": _cache[52] || (_cache[52] = $event => $data.editChannel.accessKeyId = $event),\n disabled: $data.editChannel.fixed,\n type: \"password\",\n \"show-password\": \"\"\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.secretAccessKey'),\n prop: \"secretAccessKey\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.secretAccessKey,\n \"onUpdate:modelValue\": _cache[53] || (_cache[53] = $event => $data.editChannel.secretAccessKey = $event),\n disabled: $data.editChannel.fixed,\n type: \"password\",\n \"show-password\": \"\"\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, null, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.pathStyle')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysUpload.pathStyleTip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.editChannel.pathStyle,\n \"onUpdate:modelValue\": _cache[54] || (_cache[54] = $event => $data.editChannel.pathStyle = $event),\n disabled: $data.editChannel.fixed\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.quotaLimit')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.editChannel.quota.enabled,\n \"onUpdate:modelValue\": _cache[55] || (_cache[55] = $event => $data.editChannel.quota.enabled = $event),\n onChange: _cache[56] || (_cache[56] = val => $options.onQuotaEnabledChange(val, $data.editChannel))\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), $data.editChannel.quota?.enabled ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.quotaLimitGB')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $data.editChannel.quota.limitGB,\n \"onUpdate:modelValue\": _cache[57] || (_cache[57] = $event => $data.editChannel.quota.limitGB = $event),\n min: 0.1,\n step: 1,\n precision: 1\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.quotaThreshold')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $data.editChannel.quota.threshold,\n \"onUpdate:modelValue\": _cache[58] || (_cache[58] = $event => $data.editChannel.quota.threshold = $event),\n min: 50,\n max: 100,\n step: 5\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"])], 64)) : _createCommentVNode(\"\", true)], 64)) : $data.currentChannelType === 'discord' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 3\n }, [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.botTokenLabel'),\n prop: \"botToken\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.botToken,\n \"onUpdate:modelValue\": _cache[59] || (_cache[59] = $event => $data.editChannel.botToken = $event),\n disabled: $data.editChannel.fixed,\n type: \"password\",\n \"show-password\": \"\"\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.channelIdLabel'),\n prop: \"channelId\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.channelId,\n \"onUpdate:modelValue\": _cache[60] || (_cache[60] = $event => $data.editChannel.channelId = $event),\n disabled: $data.editChannel.fixed,\n type: \"password\",\n \"show-password\": \"\"\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.proxyDomain')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.proxyUrl,\n \"onUpdate:modelValue\": _cache[61] || (_cache[61] = $event => $data.editChannel.proxyUrl = $event),\n placeholder: _ctx.$t('sysUpload.proxyDomainPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, null, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.nitroMember')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysUpload.nitroTip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.editChannel.isNitro,\n \"onUpdate:modelValue\": _cache[62] || (_cache[62] = $event => $data.editChannel.isNitro = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n })], 64)) : $data.currentChannelType === 'huggingface' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 4\n }, [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.repoName'),\n prop: \"repo\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.repo,\n \"onUpdate:modelValue\": _cache[63] || (_cache[63] = $event => $data.editChannel.repo = $event),\n disabled: $data.editChannel.fixed\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.accessToken'),\n prop: \"token\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.token,\n \"onUpdate:modelValue\": _cache[64] || (_cache[64] = $event => $data.editChannel.token = $event),\n disabled: $data.editChannel.fixed,\n type: \"password\",\n \"show-password\": \"\"\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, null, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.privateRepo')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysUpload.privateRepoTip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.editChannel.isPrivate,\n \"onUpdate:modelValue\": _cache[65] || (_cache[65] = $event => $data.editChannel.isPrivate = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n })], 64)) : $data.currentChannelType === 'webdav' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 5\n }, [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.webdavBaseUrl'),\n prop: \"baseUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.baseUrl,\n \"onUpdate:modelValue\": _cache[66] || (_cache[66] = $event => $data.editChannel.baseUrl = $event),\n disabled: $data.editChannel.fixed\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.webdavUsername')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.username,\n \"onUpdate:modelValue\": _cache[67] || (_cache[67] = $event => $data.editChannel.username = $event),\n disabled: $data.editChannel.fixed\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.webdavPassword')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.password,\n \"onUpdate:modelValue\": _cache[68] || (_cache[68] = $event => $data.editChannel.password = $event),\n disabled: $data.editChannel.fixed,\n type: \"password\",\n \"show-password\": \"\"\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, null, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.publicUrl')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysUpload.webdavPublicUrlTip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.publicUrl,\n \"onUpdate:modelValue\": _cache[69] || (_cache[69] = $event => $data.editChannel.publicUrl = $event),\n placeholder: _ctx.$t('sysUpload.webdavPublicUrlPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.webdavHeaders')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editChannel.headersText,\n \"onUpdate:modelValue\": _cache[70] || (_cache[70] = $event => $data.editChannel.headersText = $event),\n type: \"textarea\",\n autosize: {\n minRows: 2\n },\n placeholder: _ctx.$t('sysUpload.webdavHeadersPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, null, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysUpload.webdavCreateDirectory')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysUpload.webdavCreateDirectoryTip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.editChannel.createDirectory,\n \"onUpdate:modelValue\": _cache[71] || (_cache[71] = $event => $data.editChannel.createDirectory = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.quotaLimit')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.editChannel.quota.enabled,\n \"onUpdate:modelValue\": _cache[72] || (_cache[72] = $event => $data.editChannel.quota.enabled = $event),\n onChange: _cache[73] || (_cache[73] = val => $options.onQuotaEnabledChange(val, $data.editChannel))\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), $data.editChannel.quota?.enabled ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.quotaLimitGB')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $data.editChannel.quota.limitGB,\n \"onUpdate:modelValue\": _cache[74] || (_cache[74] = $event => $data.editChannel.quota.limitGB = $event),\n min: 0.1,\n step: 1,\n precision: 1\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysUpload.quotaThreshold')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $data.editChannel.quota.threshold,\n \"onUpdate:modelValue\": _cache[75] || (_cache[75] = $event => $data.editChannel.quota.threshold = $event),\n min: 50,\n max: 100,\n step: 5\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"])], 64)) : _createCommentVNode(\"\", true)], 64)) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"model\", \"rules\"])]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"onClosed\"])])), [[_directive_loading, $data.loading]]);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.find.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport \"core-js/modules/es.iterator.some.js\";\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nimport ChannelIcon from '@/components/icons/ChannelIcon.vue';\nimport CustomSelect from './CustomSelect.vue';\nexport default {\n components: {\n ChannelIcon,\n CustomSelect\n },\n data() {\n return {\n // 渠道类型筛选\n channelFilter: '',\n // 渠道类型列表\n channels: [{\n value: 'telegram',\n label: 'Telegram'\n }, {\n value: 'cfr2',\n label: 'CloudFlare R2'\n }, {\n value: 's3',\n label: 'S3'\n }, {\n value: 'discord',\n label: 'Discord'\n }, {\n value: 'huggingface',\n label: 'HuggingFace'\n }, {\n value: 'webdav',\n label: 'WebDAV'\n }],\n // 可添加的渠道类型\n addableChannels: [{\n value: 'telegram',\n label: 'Telegram'\n }, {\n value: 'cfr2',\n label: 'CloudFlare R2'\n }, {\n value: 's3',\n label: 'S3'\n }, {\n value: 'discord',\n label: 'Discord'\n }, {\n value: 'huggingface',\n label: 'HuggingFace'\n }, {\n value: 'webdav',\n label: 'WebDAV'\n }],\n // 各渠道配置\n telegramSettings: {\n loadBalance: {\n enabled: false\n },\n channels: []\n },\n cfr2Settings: {\n channels: []\n },\n s3Settings: {\n loadBalance: {\n enabled: false\n },\n channels: []\n },\n discordSettings: {\n loadBalance: {\n enabled: false\n },\n channels: []\n },\n huggingfaceSettings: {\n loadBalance: {\n enabled: false\n },\n channels: []\n },\n webdavSettings: {\n loadBalance: {\n enabled: false\n },\n channels: []\n },\n // 弹窗控制\n showAddDialog: false,\n showDetailDialog: false,\n showEditDialog: false,\n // 当前操作的渠道\n currentChannelType: '',\n currentChannelIndex: -1,\n currentChannel: null,\n editChannel: {},\n // 新增渠道表单\n newChannel: {\n type: '',\n name: '',\n enabled: true,\n // Telegram\n botToken: '',\n chatId: '',\n proxyUrl: '',\n // S3\n endpoint: '',\n cdnDomain: '',\n bucketName: '',\n region: 'auto',\n accessKeyId: '',\n secretAccessKey: '',\n pathStyle: false,\n quota: {\n enabled: false,\n limitGB: 10,\n threshold: 95\n },\n // Discord\n channelId: '',\n isNitro: false,\n // HuggingFace\n repo: '',\n token: '',\n isPrivate: false,\n // WebDAV\n baseUrl: '',\n username: '',\n password: '',\n publicUrl: '',\n headersText: '',\n createDirectory: true\n },\n // 容量统计数据\n quotaStats: {},\n quotaLoading: false,\n // 加载状态\n loading: false\n };\n },\n computed: {\n // 筛选下拉框选项\n filterOptions() {\n return [{\n value: '',\n label: this.$t('common.all')\n }, ...this.channels.map(ch => ({\n value: ch.value,\n label: ch.label,\n channelType: ch.value\n }))];\n },\n // 根据筛选条件过滤渠道类型\n filteredChannels() {\n if (!this.channelFilter) {\n return this.channels;\n }\n return this.channels.filter(ch => ch.value === this.channelFilter);\n },\n addRules() {\n return {\n type: [{\n required: true,\n message: this.$t('sysUpload.channelTypePlaceholder'),\n trigger: 'change'\n }],\n name: [{\n required: true,\n message: this.$t('sysUpload.channelNamePlaceholder'),\n trigger: 'blur'\n }, {\n pattern: /^[\\u4e00-\\u9fa5a-zA-Z0-9_-]+$/,\n message: this.$t('sysUpload.channelNamePlaceholder'),\n trigger: 'blur'\n }],\n botToken: [{\n required: true,\n message: this.$t('sysUpload.botTokenPlaceholder'),\n trigger: 'blur'\n }],\n chatId: [{\n required: true,\n message: this.$t('sysUpload.chatIdPlaceholder'),\n trigger: 'blur'\n }],\n channelId: [{\n required: true,\n message: this.$t('sysUpload.channelIdPlaceholder'),\n trigger: 'blur'\n }],\n endpoint: [{\n required: true,\n message: this.$t('sysUpload.endpointPlaceholder'),\n trigger: 'blur'\n }],\n bucketName: [{\n required: true,\n message: this.$t('sysUpload.bucketNamePlaceholder'),\n trigger: 'blur'\n }],\n region: [{\n required: true,\n message: this.$t('sysUpload.bucketRegionPlaceholder'),\n trigger: 'blur'\n }],\n accessKeyId: [{\n required: true,\n message: this.$t('sysUpload.accessKeyIdPlaceholder'),\n trigger: 'blur'\n }],\n secretAccessKey: [{\n required: true,\n message: this.$t('sysUpload.secretAccessKeyPlaceholder'),\n trigger: 'blur'\n }],\n repo: [{\n required: true,\n message: this.$t('sysUpload.repoNamePlaceholder'),\n trigger: 'blur'\n }],\n token: [{\n required: true,\n message: this.$t('sysUpload.accessTokenPlaceholder'),\n trigger: 'blur'\n }],\n baseUrl: [{\n required: true,\n message: this.$t('sysUpload.webdavBaseUrlPlaceholder'),\n trigger: 'blur'\n }]\n };\n },\n editRules() {\n return {\n name: [{\n required: true,\n message: this.$t('sysUpload.channelNamePlaceholder'),\n trigger: 'blur'\n }, {\n pattern: /^[\\u4e00-\\u9fa5a-zA-Z0-9_-]+$/,\n message: this.$t('sysUpload.channelNamePlaceholder'),\n trigger: 'blur'\n }],\n botToken: [{\n required: true,\n message: this.$t('sysUpload.botTokenPlaceholder'),\n trigger: 'blur'\n }],\n chatId: [{\n required: true,\n message: this.$t('sysUpload.chatIdPlaceholder'),\n trigger: 'blur'\n }],\n channelId: [{\n required: true,\n message: this.$t('sysUpload.channelIdPlaceholder'),\n trigger: 'blur'\n }],\n endpoint: [{\n required: true,\n message: this.$t('sysUpload.endpointPlaceholder'),\n trigger: 'blur'\n }],\n bucketName: [{\n required: true,\n message: this.$t('sysUpload.bucketNamePlaceholder'),\n trigger: 'blur'\n }],\n region: [{\n required: true,\n message: this.$t('sysUpload.bucketRegionPlaceholder'),\n trigger: 'blur'\n }],\n accessKeyId: [{\n required: true,\n message: this.$t('sysUpload.accessKeyIdPlaceholder'),\n trigger: 'blur'\n }],\n secretAccessKey: [{\n required: true,\n message: this.$t('sysUpload.secretAccessKeyPlaceholder'),\n trigger: 'blur'\n }],\n repo: [{\n required: true,\n message: this.$t('sysUpload.repoNamePlaceholder'),\n trigger: 'blur'\n }],\n token: [{\n required: true,\n message: this.$t('sysUpload.accessTokenPlaceholder'),\n trigger: 'blur'\n }],\n baseUrl: [{\n required: true,\n message: this.$t('sysUpload.webdavBaseUrlPlaceholder'),\n trigger: 'blur'\n }]\n };\n }\n },\n methods: {\n // 卡片光斑跟随鼠标\n handleCardMouseMove(event, channelType, index) {\n const card = event.currentTarget;\n const rect = card.getBoundingClientRect();\n const x = event.clientX - rect.left;\n const y = event.clientY - rect.top;\n const refKey = `glow-${channelType}-${index}`;\n const glowEl = this.$refs[refKey];\n if (glowEl && glowEl[0]) {\n glowEl[0].style.opacity = '1';\n glowEl[0].style.left = `${x}px`;\n glowEl[0].style.top = `${y}px`;\n }\n },\n handleCardMouseLeave(channelType, index) {\n const refKey = `glow-${channelType}-${index}`;\n const glowEl = this.$refs[refKey];\n if (glowEl && glowEl[0]) {\n glowEl[0].style.opacity = '0';\n }\n },\n // 获取渠道类型标签\n getChannelTypeLabel(type) {\n const channel = this.channels.find(c => c.value === type);\n return channel ? channel.label : type;\n },\n // 获取渠道列表\n getChannelList(type) {\n return this.getSettings(type)?.channels || [];\n },\n // 获取渠道设置对象\n getSettings(type) {\n const map = {\n telegram: this.telegramSettings,\n cfr2: this.cfr2Settings,\n s3: this.s3Settings,\n discord: this.discordSettings,\n huggingface: this.huggingfaceSettings,\n webdav: this.webdavSettings\n };\n return map[type];\n },\n // 是否有负载均衡选项\n hasLoadBalance(type) {\n return ['telegram', 's3', 'discord', 'huggingface', 'webdav'].includes(type);\n },\n // 文本脱敏\n maskText(text, showLength = 4) {\n if (!text) return this.$t('sysUpload.notSet');\n if (text.length <= showLength * 2) return '****';\n return text.slice(0, showLength) + '****' + text.slice(-showLength);\n },\n formatHeaders(headers) {\n if (!headers || typeof headers === 'object' && Object.keys(headers).length === 0) {\n return this.$t('sysUpload.notSet');\n }\n if (typeof headers === 'string') {\n return headers;\n }\n return JSON.stringify(headers, null, 2);\n },\n headersToText(headers) {\n if (!headers) return '';\n if (typeof headers === 'string') return headers;\n return JSON.stringify(headers, null, 2);\n },\n parseHeadersText(text) {\n if (!text || !text.trim()) return {};\n try {\n const parsed = JSON.parse(text);\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {\n return null;\n }\n return parsed;\n } catch (error) {\n return null;\n }\n },\n // 打开详情弹窗\n openDetailDialog(type, index) {\n this.currentChannelType = type;\n this.currentChannelIndex = index;\n this.currentChannel = this.getChannelList(type)[index];\n this.showDetailDialog = true;\n },\n // 打开编辑弹窗\n openEditDialog(type, index) {\n this.currentChannelType = type;\n this.currentChannelIndex = index;\n const channel = this.getChannelList(type)[index];\n this.editChannel = JSON.parse(JSON.stringify(channel));\n if (type === 'webdav') {\n this.editChannel.headersText = this.headersToText(this.editChannel.headers);\n this.editChannel.createDirectory = this.editChannel.createDirectory !== false;\n }\n // 确保 quota 对象存在\n if (!this.editChannel.quota) {\n this.editChannel.quota = {\n enabled: false,\n limitGB: 10,\n threshold: 95\n };\n }\n this.showEditDialog = true;\n },\n // 从详情页打开编辑\n openEditFromDetail() {\n this.showDetailDialog = false;\n this.openEditDialog(this.currentChannelType, this.currentChannelIndex);\n },\n // 重置添加表单\n resetAddForm() {\n this.newChannel = {\n type: '',\n name: '',\n enabled: true,\n botToken: '',\n chatId: '',\n proxyUrl: '',\n endpoint: '',\n bucketName: '',\n region: 'auto',\n accessKeyId: '',\n secretAccessKey: '',\n pathStyle: false,\n quota: {\n enabled: false,\n limitGB: 10,\n threshold: 95\n },\n channelId: '',\n isNitro: false,\n repo: '',\n token: '',\n isPrivate: false,\n baseUrl: '',\n username: '',\n password: '',\n publicUrl: '',\n headersText: '',\n createDirectory: true\n };\n },\n // 重置详情弹窗数据\n resetDetailData() {\n this.currentChannel = null;\n },\n // 重置编辑弹窗数据\n resetEditData() {\n this.editChannel = {};\n },\n // 渠道类型变更时重置表单\n onChannelTypeChange() {\n // 保留 type 和 name,重置其他字段\n const {\n type,\n name\n } = this.newChannel;\n this.newChannel = {\n type,\n name,\n enabled: true,\n botToken: '',\n chatId: '',\n proxyUrl: '',\n endpoint: '',\n cdnDomain: '',\n bucketName: '',\n region: 'auto',\n accessKeyId: '',\n secretAccessKey: '',\n pathStyle: false,\n quota: {\n enabled: false,\n limitGB: 10,\n threshold: 95\n },\n channelId: '',\n isNitro: false,\n repo: '',\n token: '',\n isPrivate: false,\n baseUrl: '',\n username: '',\n password: '',\n publicUrl: '',\n headersText: '',\n createDirectory: true\n };\n },\n // 确认添加渠道\n confirmAddChannel() {\n this.$refs.addForm.validate(valid => {\n if (!valid) return;\n const {\n type,\n name\n } = this.newChannel;\n const settings = this.getSettings(type);\n\n // 检查是否为保留名称({type}_env)\n const reservedNames = ['Telegram_env', 'R2_env', 'S3_env', 'Discord_env', 'HuggingFace_env', 'WebDAV_env'];\n if (reservedNames.includes(name)) {\n this.$message.warning(this.$t('sysUpload.reservedName'));\n return;\n }\n\n // 检查名称是否重复\n const isDuplicate = settings.channels.some(ch => ch.name === name);\n if (isDuplicate) {\n this.$message.warning(this.$t('sysUpload.duplicateName'));\n return;\n }\n let newChannelData = {\n id: settings.channels.length + 1,\n name: this.newChannel.name,\n type: type,\n savePath: 'database',\n enabled: true,\n fixed: false\n };\n\n // 根据类型添加特定字段\n if (type === 'telegram') {\n Object.assign(newChannelData, {\n botToken: this.newChannel.botToken,\n chatId: this.newChannel.chatId,\n proxyUrl: this.newChannel.proxyUrl\n });\n } else if (type === 's3') {\n Object.assign(newChannelData, {\n endpoint: this.newChannel.endpoint,\n cdnDomain: this.newChannel.cdnDomain,\n bucketName: this.newChannel.bucketName,\n region: this.newChannel.region,\n accessKeyId: this.newChannel.accessKeyId,\n secretAccessKey: this.newChannel.secretAccessKey,\n pathStyle: this.newChannel.pathStyle,\n quota: {\n ...this.newChannel.quota\n }\n });\n } else if (type === 'discord') {\n Object.assign(newChannelData, {\n botToken: this.newChannel.botToken,\n channelId: this.newChannel.channelId,\n proxyUrl: this.newChannel.proxyUrl,\n isNitro: this.newChannel.isNitro\n });\n } else if (type === 'huggingface') {\n Object.assign(newChannelData, {\n repo: this.newChannel.repo,\n token: this.newChannel.token,\n isPrivate: this.newChannel.isPrivate\n });\n } else if (type === 'webdav') {\n const headers = this.parseHeadersText(this.newChannel.headersText);\n if (headers === null) {\n this.$message.warning(this.$t('sysUpload.webdavHeadersInvalid'));\n return;\n }\n Object.assign(newChannelData, {\n baseUrl: this.newChannel.baseUrl,\n username: this.newChannel.username,\n password: this.newChannel.password,\n publicUrl: this.newChannel.publicUrl,\n headers,\n createDirectory: this.newChannel.createDirectory !== false,\n quota: {\n ...this.newChannel.quota\n }\n });\n }\n settings.channels.push(newChannelData);\n this.showAddDialog = false;\n // 自动保存全部设置\n this.saveSettings();\n });\n },\n // 确认编辑渠道\n confirmEditChannel() {\n this.$refs.editForm.validate(valid => {\n if (!valid) return;\n const settings = this.getSettings(this.currentChannelType);\n const currentIndex = this.currentChannelIndex;\n const originalName = settings.channels[currentIndex]?.name || this.editChannel.name;\n const editedChannel = {\n ...this.editChannel,\n name: originalName\n };\n if (this.currentChannelType === 'webdav') {\n const headers = this.parseHeadersText(editedChannel.headersText);\n if (headers === null) {\n this.$message.warning(this.$t('sysUpload.webdavHeadersInvalid'));\n return;\n }\n editedChannel.headers = headers;\n editedChannel.createDirectory = editedChannel.createDirectory !== false;\n delete editedChannel.headersText;\n }\n settings.channels[this.currentChannelIndex] = editedChannel;\n this.showEditDialog = false;\n // 自动保存全部设置\n this.saveSettings();\n });\n },\n // 删除渠道\n deleteChannel(type, index) {\n const channel = this.getChannelList(type)[index];\n if (channel.fixed) {\n this.$message.warning(this.$t('sysUpload.fixedChannelCannotDelete'));\n return;\n }\n this.$confirm(this.$t('sysUpload.deleteChannelConfirm'), this.$t('common.warning'), {\n confirmButtonText: this.$t('common.confirm'),\n cancelButtonText: this.$t('common.cancel'),\n type: 'warning'\n }).then(() => {\n const settings = this.getSettings(type);\n settings.channels.splice(index, 1);\n // 重新调整 id\n settings.channels.forEach((item, i) => {\n item.id = i + 1;\n });\n // 自动保存\n this.saveSettings();\n }).catch(() => {});\n },\n saveSettings() {\n // 保存设置\n const settings = {\n telegram: this.telegramSettings,\n cfr2: this.cfr2Settings,\n s3: this.s3Settings,\n discord: this.discordSettings,\n huggingface: this.huggingfaceSettings,\n webdav: this.webdavSettings\n };\n fetchWithAuth('/api/manage/sysConfig/upload', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(settings)\n }).then(() => {\n this.$message.success(this.$t('sysOthers.settingsSaved'));\n });\n },\n // 获取容量统计(重新计算)\n async refreshQuota() {\n this.quotaLoading = true;\n try {\n // 使用 POST 请求重新统计容量(会触发索引重建)\n const response = await fetchWithAuth('/api/manage/quota', {\n method: 'POST'\n });\n const data = await response.json();\n if (data.success) {\n this.quotaStats = data.channelStats || {};\n } else {\n // 如果重新统计失败,尝试获取已有数据\n const getResponse = await fetchWithAuth('/api/manage/quota');\n const getData = await getResponse.json();\n if (getData.success) {\n this.quotaStats = getData.quotaStats || {};\n }\n }\n } catch (error) {\n console.error('Failed to refresh quota stats:', error);\n } finally {\n this.quotaLoading = false;\n }\n },\n // 获取容量统计(仅读取,不重建索引)\n async loadQuotaStats() {\n try {\n const response = await fetchWithAuth('/api/manage/quota');\n const data = await response.json();\n if (data.success) {\n this.quotaStats = data.quotaStats || {};\n }\n } catch (error) {\n console.error('Failed to load quota stats:', error);\n }\n },\n // 获取渠道已用容量 (GB)\n getChannelUsedGB(channel) {\n const stats = this.quotaStats[channel.name];\n if (!stats) return 0;\n return (stats.usedMB || 0) / 1024;\n },\n // 获取容量百分比\n getQuotaPercentage(channel) {\n const usedGB = this.getChannelUsedGB(channel);\n const limitGB = channel.quota?.limitGB || 10;\n const percentage = usedGB / limitGB * 100;\n return Math.min(100, Math.round(percentage * 10) / 10);\n },\n // 获取进度条状态\n getQuotaStatus(channel) {\n const percentage = this.getQuotaPercentage(channel);\n const threshold = channel.quota?.threshold || 95;\n if (percentage >= threshold) return 'exception';\n if (percentage >= 80) return 'warning';\n return 'success';\n },\n // 获取容量文本\n getQuotaText(channel) {\n const usedGB = this.getChannelUsedGB(channel);\n const limitGB = channel.quota?.limitGB || 10;\n return `${usedGB.toFixed(2)} / ${limitGB} GB`;\n },\n // 判断是否超过阈值\n isQuotaExceeded(channel) {\n const percentage = this.getQuotaPercentage(channel);\n const threshold = channel.quota?.threshold || 95;\n return percentage >= threshold;\n },\n // 获取状态文本\n getQuotaStatusText(channel) {\n const percentage = this.getQuotaPercentage(channel);\n const threshold = channel.quota?.threshold || 95;\n if (percentage >= threshold) {\n return `⚠️ 已达到容量阈值 (${threshold}%),渠道写入已暂停`;\n }\n if (percentage >= 80) {\n return `⚡ 容量使用较高,接近阈值`;\n }\n return `✓ 容量正常`;\n },\n // 容量限制开关变化时\n async onQuotaEnabledChange(enabled, channel) {\n if (enabled && channel.name) {\n // 首次启用时,检查是否有该渠道的统计数据\n const stats = this.quotaStats[channel.name];\n if (!stats) {\n // 没有统计数据,提示用户需要重新统计\n this.$confirm(this.$t('sysUpload.quotaInitConfirm'), this.$t('sysUpload.quotaInitTitle'), {\n confirmButtonText: this.$t('sysUpload.quotaInitConfirmBtn'),\n cancelButtonText: this.$t('sysUpload.quotaInitCancelBtn'),\n type: 'info'\n }).then(async () => {\n await this.recalculateQuota();\n }).catch(() => {\n this.$message.info(this.$t('sysUpload.quotaInitLater'));\n });\n }\n }\n },\n // 重新统计容量\n async recalculateQuota() {\n this.quotaLoading = true;\n try {\n this.$message.info(this.$t('sysUpload.quotaCalculating'));\n const response = await fetchWithAuth('/api/manage/quota', {\n method: 'POST'\n });\n const data = await response.json();\n if (data.success) {\n this.quotaStats = data.channelStats || {};\n this.$message.success(this.$t('sysUpload.quotaCalculateSuccess'));\n } else {\n this.$message.error(this.$t('sysUpload.quotaCalculateError') + (data.error || ''));\n }\n } catch (error) {\n console.error('Failed to recalculate quota:', error);\n this.$message.error(this.$t('sysUpload.quotaCalculateFailed'));\n } finally {\n this.quotaLoading = false;\n }\n }\n },\n mounted() {\n this.loading = true;\n // 获取上传设置\n fetchWithAuth('/api/manage/sysConfig/upload').then(response => response.json()).then(data => {\n this.telegramSettings = data.telegram;\n // 确保 R2 渠道有 quota 默认值\n if (data.cfr2 && data.cfr2.channels) {\n data.cfr2.channels = data.cfr2.channels.map(channel => ({\n ...channel,\n quota: channel.quota || {\n enabled: false,\n limitGB: 10,\n threshold: 95\n }\n }));\n }\n this.cfr2Settings = data.cfr2;\n // 确保 S3 渠道有 quota 默认值\n if (data.s3 && data.s3.channels) {\n data.s3.channels = data.s3.channels.map(channel => ({\n ...channel,\n quota: channel.quota || {\n enabled: false,\n limitGB: 10,\n threshold: 95\n }\n }));\n }\n this.s3Settings = data.s3;\n // 确保 Discord 渠道有默认值\n if (data.discord && data.discord.channels) {\n data.discord.channels = data.discord.channels.map(channel => ({\n ...channel,\n proxyUrl: channel.proxyUrl || ''\n }));\n }\n this.discordSettings = data.discord || {\n loadBalance: {},\n channels: []\n };\n // 确保 HuggingFace 渠道有默认值\n if (data.huggingface && data.huggingface.channels) {\n data.huggingface.channels = data.huggingface.channels.map(channel => ({\n ...channel,\n isPrivate: channel.isPrivate || false\n }));\n }\n this.huggingfaceSettings = data.huggingface || {\n loadBalance: {},\n channels: []\n };\n // 确保 WebDAV 渠道有默认值\n if (data.webdav && data.webdav.channels) {\n data.webdav.channels = data.webdav.channels.map(channel => ({\n ...channel,\n username: channel.username || '',\n password: channel.password || '',\n publicUrl: channel.publicUrl || '',\n headers: channel.headers || {},\n createDirectory: channel.createDirectory !== false,\n quota: channel.quota || {\n enabled: false,\n limitGB: 10,\n threshold: 95\n }\n }));\n }\n this.webdavSettings = data.webdav || {\n loadBalance: {},\n channels: []\n };\n // 加载容量统计(仅读取,不重建索引)\n this.loadQuotaStats();\n }).finally(() => {\n this.loading = false;\n });\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./SysCogUpload.vue?vue&type=template&id=0082a519&scoped=true\"\nimport script from \"./SysCogUpload.vue?vue&type=script&lang=js\"\nexport * from \"./SysCogUpload.vue?vue&type=script&lang=js\"\n\nimport \"./SysCogUpload.vue?vue&type=style&index=0&id=0082a519&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0082a519\"]])\n\nexport default __exports__","import { openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, vShow as _vShow, normalizeClass as _normalizeClass, withDirectives as _withDirectives, Transition as _Transition, withCtx as _withCtx } from \"vue\";\nconst _hoisted_1 = [\"aria-label\"];\nconst _hoisted_2 = {\n class: \"save-text\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createBlock(_Transition, {\n name: \"fade-up\"\n }, {\n default: _withCtx(() => [_withDirectives(_createElementVNode(\"div\", {\n class: _normalizeClass([\"floating-save-btn\", {\n 'is-loading': $props.loading\n }]),\n onClick: _cache[0] || (_cache[0] = (...args) => $options.handleClick && $options.handleClick(...args))\n }, [$props.dirty ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: \"unsaved-dot\",\n role: \"img\",\n \"aria-label\": _ctx.$t('floatingSave.unsaved')\n }, null, 8, _hoisted_1)) : _createCommentVNode(\"\", true), $props.loading ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 1,\n icon: \"spinner\",\n spin: \"\"\n })) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 2,\n icon: \"save\"\n })), _createElementVNode(\"span\", _hoisted_2, _toDisplayString($props.loading ? _ctx.$t('floatingSave.saving') : _ctx.$t('floatingSave.save')), 1)], 2), [[_vShow, $data.visible]])]),\n _: 1\n });\n}","export default {\n name: 'FloatingSaveButton',\n emits: ['click'],\n props: {\n dirty: {\n type: Boolean,\n default: false\n },\n loading: {\n type: Boolean,\n default: false\n },\n show: {\n type: Boolean,\n default: true\n }\n },\n data() {\n return {\n visible: false,\n visibilityTimer: null\n };\n },\n watch: {\n show: {\n immediate: true,\n handler(val) {\n clearTimeout(this.visibilityTimer);\n if (val) {\n // 延迟显示,等待 Element Plus 加载遮罩淡出动画完成\n this.visibilityTimer = setTimeout(() => {\n this.visible = true;\n }, 600);\n } else {\n this.visible = false;\n }\n }\n }\n },\n beforeUnmount() {\n clearTimeout(this.visibilityTimer);\n },\n methods: {\n handleClick() {\n if (!this.loading) {\n this.$emit('click');\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FloatingSaveButton.vue?vue&type=template&id=9ebe7158&scoped=true\"\nimport script from \"./FloatingSaveButton.vue?vue&type=script&lang=js\"\nexport * from \"./FloatingSaveButton.vue?vue&type=script&lang=js\"\n\nimport \"./FloatingSaveButton.vue?vue&type=style&index=0&id=9ebe7158&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-9ebe7158\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, Transition as _Transition, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"security-settings\"\n};\nconst _hoisted_2 = {\n class: \"first-settings\"\n};\nconst _hoisted_3 = {\n class: \"first-title\"\n};\nconst _hoisted_4 = {\n class: \"second-title\"\n};\nconst _hoisted_5 = {\n style: {\n \"display\": \"flex\",\n \"gap\": \"8px\",\n \"width\": \"100%\"\n }\n};\nconst _hoisted_6 = {\n class: \"second-title\"\n};\nconst _hoisted_7 = {\n style: {\n \"display\": \"flex\",\n \"gap\": \"8px\",\n \"width\": \"100%\"\n }\n};\nconst _hoisted_8 = {\n class: \"second-title token-title\"\n};\nconst _hoisted_9 = {\n class: \"token-actions\"\n};\nconst _hoisted_10 = {\n class: \"token-table-container\"\n};\nconst _hoisted_11 = {\n class: \"table-cell-content\"\n};\nconst _hoisted_12 = {\n class: \"table-cell-content\"\n};\nconst _hoisted_13 = {\n class: \"token-display\"\n};\nconst _hoisted_14 = {\n class: \"table-cell-content\"\n};\nconst _hoisted_15 = {\n class: \"table-cell-content\"\n};\nconst _hoisted_16 = {\n class: \"table-cell-content\"\n};\nconst _hoisted_17 = {\n class: \"table-cell-content\"\n};\nconst _hoisted_18 = {\n class: \"table-cell-content action-buttons\"\n};\nconst _hoisted_19 = {\n class: \"first-settings\"\n};\nconst _hoisted_20 = {\n class: \"first-title\"\n};\nconst _hoisted_21 = {\n class: \"second-title\"\n};\nconst _hoisted_22 = {\n class: \"second-title\"\n};\nconst _hoisted_23 = {\n class: \"query-param-list\"\n};\nconst _hoisted_24 = {\n class: \"query-param-list\"\n};\nconst _hoisted_25 = {\n class: \"first-settings\"\n};\nconst _hoisted_26 = {\n class: \"first-title\"\n};\nconst _hoisted_27 = {\n class: \"second-title\"\n};\nconst _hoisted_28 = {\n class: \"second-title\"\n};\nconst _hoisted_29 = {\n class: \"second-title\"\n};\nconst _hoisted_30 = {\n class: \"second-title\"\n};\nconst _hoisted_31 = {\n class: \"form-item-hint\"\n};\nconst _hoisted_32 = {\n class: \"form-item-hint\"\n};\nconst _hoisted_33 = {\n style: {\n \"display\": \"flex\",\n \"gap\": \"10px\",\n \"width\": \"100%\"\n }\n};\nconst _hoisted_34 = {\n class: \"dialog-footer\"\n};\nconst _hoisted_35 = {\n style: {\n \"display\": \"flex\",\n \"gap\": \"10px\",\n \"width\": \"100%\"\n }\n};\nconst _hoisted_36 = {\n class: \"dialog-footer\"\n};\nconst _hoisted_37 = {\n class: \"token-result\"\n};\nconst _hoisted_38 = {\n style: {\n \"margin-bottom\": \"15px\",\n \"color\": \"#e6a23c\"\n }\n};\nconst _hoisted_39 = {\n class: \"dialog-footer\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_table_column = _resolveComponent(\"el-table-column\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_table = _resolveComponent(\"el-table\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_input_number = _resolveComponent(\"el-input-number\");\n const _component_FloatingSaveButton = _resolveComponent(\"FloatingSaveButton\");\n const _component_el_checkbox_group = _resolveComponent(\"el-checkbox-group\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"h3\", _hoisted_3, _toDisplayString(_ctx.$t('sysSecurity.authManagement')), 1), _createElementVNode(\"h4\", _hoisted_4, _toDisplayString(_ctx.$t('sysSecurity.userAuth')), 1), _createVNode(_component_el_form, {\n model: $data.authSettings.user,\n disabled: $data.saving,\n rules: $options.userPassRules,\n ref: \"userPassForm\",\n \"label-width\": \"120px\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.uploadPassword'),\n prop: \"authCode\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_input, {\n modelValue: $data.authSettings.user.authCode,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.authSettings.user.authCode = $event),\n type: \"password\",\n \"show-password\": \"\",\n onInput: $options.handleUserPassInput,\n autocomplete: \"new-password\",\n placeholder: $data.authSettings.user._hasPassword ? _ctx.$t('sysSecurity.passwordUnchanged') : '',\n disabled: $data.clearUserPassword\n }, null, 8, [\"modelValue\", \"onInput\", \"placeholder\", \"disabled\"]), $data.authSettings.user._hasPassword ? (_openBlock(), _createBlock(_component_el_checkbox, {\n key: 0,\n modelValue: $data.clearUserPassword,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $data.clearUserPassword = $event),\n onChange: $options.handleClearUserPassword\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.clearPassword')), 1)]),\n _: 1\n }, 8, [\"modelValue\", \"onChange\"])) : _createCommentVNode(\"\", true)])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_Transition, {\n name: \"fade-slide\",\n mode: \"out-in\"\n }, {\n default: _withCtx(() => [$data.showUserPassConfirm ? (_openBlock(), _createBlock(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.confirmPassword'),\n prop: \"confirmNewUserPassword\",\n key: \"user-confirm\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.authSettings.user.confirmNewUserPassword,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.authSettings.user.confirmNewUserPassword = $event),\n type: \"password\",\n \"show-password\": \"\",\n autocomplete: \"new-password\"\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"])) : _createCommentVNode(\"\", true)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"model\", \"disabled\", \"rules\"]), _createElementVNode(\"h4\", _hoisted_6, _toDisplayString(_ctx.$t('sysSecurity.adminAuth')), 1), _createVNode(_component_el_form, {\n model: $data.authSettings.admin,\n disabled: $data.saving,\n rules: $options.adminPassRules,\n ref: \"adminPassForm\",\n \"label-width\": \"120px\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.adminUsername'),\n prop: \"adminUsername\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.authSettings.admin.adminUsername,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.authSettings.admin.adminUsername = $event),\n autocomplete: \"new-password\",\n disabled: $data.clearAdminPassword\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.adminPassword'),\n prop: \"adminPassword\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_el_input, {\n modelValue: $data.authSettings.admin.adminPassword,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $data.authSettings.admin.adminPassword = $event),\n type: \"password\",\n \"show-password\": \"\",\n onInput: $options.handleAdminPassInput,\n autocomplete: \"new-password\",\n placeholder: $data.authSettings.admin._hasPassword ? _ctx.$t('sysSecurity.passwordUnchanged') : '',\n disabled: $data.clearAdminPassword\n }, null, 8, [\"modelValue\", \"onInput\", \"placeholder\", \"disabled\"]), $data.authSettings.admin._hasPassword ? (_openBlock(), _createBlock(_component_el_checkbox, {\n key: 0,\n modelValue: $data.clearAdminPassword,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $data.clearAdminPassword = $event),\n onChange: $options.handleClearAdminPassword\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.clearPassword')), 1)]),\n _: 1\n }, 8, [\"modelValue\", \"onChange\"])) : _createCommentVNode(\"\", true)])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_Transition, {\n name: \"fade-slide\",\n mode: \"out-in\"\n }, {\n default: _withCtx(() => [$data.showAdminPassConfirm ? (_openBlock(), _createBlock(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.confirmPassword'),\n prop: \"confirmNewAdminPassword\",\n key: \"admin-confirm\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.authSettings.admin.confirmNewAdminPassword,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.authSettings.admin.confirmNewAdminPassword = $event),\n type: \"password\",\n \"show-password\": \"\",\n autocomplete: \"new-password\"\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"])) : _createCommentVNode(\"\", true)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"model\", \"disabled\", \"rules\"]), _createElementVNode(\"h4\", _hoisted_8, [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.apiTokenManagement')) + \" \", 1), _createElementVNode(\"a\", _hoisted_9, [_createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: _cache[7] || (_cache[7] = $event => $data.showCreateTokenDialog = true),\n circle: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"plus\"\n })]),\n _: 1\n })])]), _createElementVNode(\"div\", _hoisted_10, [_withDirectives((_openBlock(), _createBlock(_component_el_table, {\n data: $data.apiTokens,\n class: \"token-table\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_table_column, {\n prop: \"name\",\n label: _ctx.$t('sysSecurity.tokenName'),\n \"header-align\": \"center\"\n }, {\n default: _withCtx(scope => [_createElementVNode(\"div\", _hoisted_11, _toDisplayString(scope.row.name), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_table_column, {\n prop: \"token\",\n label: _ctx.$t('sysSecurity.tokenValue'),\n \"header-align\": \"center\"\n }, {\n default: _withCtx(scope => [_createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"span\", _hoisted_13, _toDisplayString(scope.row.token), 1)])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_table_column, {\n prop: \"permissions\",\n label: _ctx.$t('sysSecurity.permissions'),\n \"header-align\": \"center\"\n }, {\n default: _withCtx(scope => [_createElementVNode(\"div\", _hoisted_14, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(scope.row.permissions, perm => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: perm,\n size: \"small\",\n class: \"permission-tag\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.getPermissionText(perm)), 1)]),\n _: 2\n }, 1024);\n }), 128))])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_table_column, {\n prop: \"createdAt\",\n label: _ctx.$t('sysSecurity.createdAt'),\n \"header-align\": \"center\"\n }, {\n default: _withCtx(scope => [_createElementVNode(\"div\", _hoisted_15, _toDisplayString($options.formatDate(scope.row.createdAt)), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_table_column, {\n label: _ctx.$t('sysSecurity.status'),\n \"header-align\": \"center\",\n width: \"90\"\n }, {\n default: _withCtx(scope => [_createElementVNode(\"div\", _hoisted_16, [_createVNode(_component_el_tag, {\n type: $options.getTokenStatus(scope.row.expiresAt).status === 'active' ? 'success' : 'danger',\n size: \"small\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.getTokenStatus(scope.row.expiresAt).label), 1)]),\n _: 2\n }, 1032, [\"type\"])])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_table_column, {\n label: _ctx.$t('sysSecurity.expiresAt'),\n \"header-align\": \"center\"\n }, {\n default: _withCtx(scope => [_createElementVNode(\"div\", _hoisted_17, _toDisplayString($options.getTokenStatus(scope.row.expiresAt).expiresText), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_table_column, {\n label: _ctx.$t('sysSecurity.operation'),\n fixed: \"right\",\n \"header-align\": \"center\"\n }, {\n default: _withCtx(scope => [_createElementVNode(\"div\", _hoisted_18, [_createVNode(_component_el_button, {\n class: \"action-button\",\n size: \"small\",\n onClick: $event => $options.editToken(scope.row)\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.editBtn')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n class: \"action-button\",\n size: \"small\",\n type: \"danger\",\n onClick: $event => $options.deleteToken(scope.row.id)\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.deleteBtn')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])]),\n _: 1\n }, 8, [\"label\"])]),\n _: 1\n }, 8, [\"data\"])), [[_directive_loading, $data.tokenLoading]])])]), _createElementVNode(\"div\", _hoisted_19, [_createElementVNode(\"h3\", _hoisted_20, _toDisplayString(_ctx.$t('sysSecurity.uploadManagement')), 1), _createElementVNode(\"h4\", _hoisted_21, [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.imageReview')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysSecurity.imageReviewTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n style: {\n \"margin-left\": \"5px\",\n \"cursor\": \"pointer\"\n }\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_form, {\n model: $data.uploadSettings.moderate,\n \"label-width\": \"120px\",\n disabled: $data.saving\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.enableReview')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.uploadSettings.moderate.enabled,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => $data.uploadSettings.moderate.enabled = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.reviewChannel')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $data.uploadSettings.moderate.channel,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = $event => $data.uploadSettings.moderate.channel = $event),\n placeholder: _ctx.$t('sysSecurity.reviewChannelPlaceholder')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"moderatecontent.com\",\n value: \"moderatecontent.com\"\n }), _createVNode(_component_el_option, {\n label: \"nsfwjs\",\n value: \"nsfwjs\"\n })]),\n _: 1\n }, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), $data.uploadSettings.moderate.channel === 'moderatecontent.com' ? (_openBlock(), _createBlock(_component_el_form_item, {\n key: 0,\n label: _ctx.$t('sysSecurity.apiKey')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.uploadSettings.moderate.moderateContentApiKey,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $data.uploadSettings.moderate.moderateContentApiKey = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"])) : _createCommentVNode(\"\", true), $data.uploadSettings.moderate.channel === 'nsfwjs' ? (_openBlock(), _createBlock(_component_el_form_item, {\n key: 1,\n label: _ctx.$t('sysSecurity.apiPath')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.uploadSettings.moderate.nsfwApiPath,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => $data.uploadSettings.moderate.nsfwApiPath = $event),\n placeholder: \"https://nsfwjs.your.domain\"\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"])) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"model\", \"disabled\"]), _createElementVNode(\"h4\", _hoisted_22, [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.ipQuery')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysSecurity.ipQueryTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n style: {\n \"margin-left\": \"5px\",\n \"cursor\": \"pointer\"\n }\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_form, {\n model: $data.uploadSettings.ipQuery,\n \"label-width\": \"120px\",\n disabled: $data.saving\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.enableIpQuery')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.uploadSettings.ipQuery.enabled,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = $event => $data.uploadSettings.ipQuery.enabled = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.ipQueryChannel')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $data.uploadSettings.ipQuery.channel,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $event => $data.uploadSettings.ipQuery.channel = $event),\n placeholder: _ctx.$t('sysSecurity.ipQueryChannelPlaceholder')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: _ctx.$t('sysSecurity.customApi'),\n value: \"customApi\"\n }, null, 8, [\"label\"])]),\n _: 1\n }, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), $data.uploadSettings.ipQuery.channel === 'customApi' ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.apiPath')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.uploadSettings.ipQuery.customApi.url,\n \"onUpdate:modelValue\": _cache[14] || (_cache[14] = $event => $data.uploadSettings.ipQuery.customApi.url = $event),\n placeholder: \"https://api.example.com/ip\"\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.queryParams')\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_23, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.uploadSettings.ipQuery.customApi.params, (param, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: index,\n class: \"query-param-row\"\n }, [_createVNode(_component_el_input, {\n modelValue: param.key,\n \"onUpdate:modelValue\": $event => param.key = $event,\n placeholder: _ctx.$t('sysSecurity.paramNamePlaceholder')\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\", \"placeholder\"]), _createVNode(_component_el_input, {\n modelValue: param.value,\n \"onUpdate:modelValue\": $event => param.value = $event,\n placeholder: _ctx.$t('sysSecurity.paramValuePlaceholder')\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\", \"placeholder\"]), _createVNode(_component_el_button, {\n type: \"danger\",\n plain: \"\",\n circle: \"\",\n onClick: $event => $options.removeIpQueryParam(index),\n disabled: $data.uploadSettings.ipQuery.customApi.params.length <= 1\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\", \"disabled\"])]);\n }), 128)), _createVNode(_component_el_button, {\n type: \"primary\",\n plain: \"\",\n onClick: $options.addIpQueryParam\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"plus\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('sysSecurity.addQueryParam')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, null, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.responseFields')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysSecurity.responseFieldsTip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n style: {\n \"margin-left\": \"5px\",\n \"cursor\": \"pointer\"\n }\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_24, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.uploadSettings.ipQuery.customApi.responseFields, (field, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: index,\n class: \"response-field-row\"\n }, [_createVNode(_component_el_input, {\n modelValue: $data.uploadSettings.ipQuery.customApi.responseFields[index],\n \"onUpdate:modelValue\": $event => $data.uploadSettings.ipQuery.customApi.responseFields[index] = $event,\n placeholder: _ctx.$t('sysSecurity.responseFieldPathPlaceholder')\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\", \"placeholder\"]), _createVNode(_component_el_button, {\n plain: \"\",\n circle: \"\",\n onClick: $event => $options.moveIpQueryResponseField(index, -1),\n disabled: index === 0\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-up\"\n })]),\n _: 1\n }, 8, [\"onClick\", \"disabled\"]), _createVNode(_component_el_button, {\n plain: \"\",\n circle: \"\",\n onClick: $event => $options.moveIpQueryResponseField(index, 1),\n disabled: index === $data.uploadSettings.ipQuery.customApi.responseFields.length - 1\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-down\"\n })]),\n _: 1\n }, 8, [\"onClick\", \"disabled\"]), _createVNode(_component_el_button, {\n type: \"danger\",\n plain: \"\",\n circle: \"\",\n onClick: $event => $options.removeIpQueryResponseField(index)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]);\n }), 128)), _createVNode(_component_el_button, {\n type: \"primary\",\n plain: \"\",\n onClick: $options.addIpQueryResponseField\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"plus\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('sysSecurity.addResponseField')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])]),\n _: 1\n })], 64)) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"model\", \"disabled\"])]), _createElementVNode(\"div\", _hoisted_25, [_createElementVNode(\"h3\", _hoisted_26, _toDisplayString(_ctx.$t('sysSecurity.accessManagement')), 1), _createElementVNode(\"h4\", _hoisted_27, _toDisplayString(_ctx.$t('sysSecurity.domainFilter')), 1), _createVNode(_component_el_form, {\n model: $data.accessSettings,\n \"label-width\": \"120px\",\n disabled: $data.saving\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, null, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.allowedDomains')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysSecurity.allowedDomainsTooltip'),\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n style: {\n \"margin-left\": \"5px\",\n \"cursor\": \"pointer\"\n }\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.accessSettings.allowedDomains,\n \"onUpdate:modelValue\": _cache[15] || (_cache[15] = $event => $data.accessSettings.allowedDomains = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n })]),\n _: 1\n }, 8, [\"model\", \"disabled\"]), _createElementVNode(\"h4\", _hoisted_28, _toDisplayString(_ctx.$t('sysSecurity.whiteListMode')), 1), _createVNode(_component_el_form, {\n model: $data.accessSettings,\n rules: $options.accessRules,\n ref: \"accessForm\",\n \"label-width\": \"120px\",\n disabled: $data.saving\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, null, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.enableWhiteList')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysSecurity.enableWhiteListTooltip'),\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n style: {\n \"margin-left\": \"5px\",\n \"cursor\": \"pointer\"\n }\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.accessSettings.whiteListMode,\n \"onUpdate:modelValue\": _cache[16] || (_cache[16] = $event => $data.accessSettings.whiteListMode = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n })]),\n _: 1\n }, 8, [\"model\", \"rules\", \"disabled\"]), _createElementVNode(\"h4\", _hoisted_29, _toDisplayString(_ctx.$t('sysSecurity.imageTransform')), 1), _createVNode(_component_el_form, {\n model: $data.accessSettings,\n rules: $options.accessRules,\n ref: \"imageTransformForm\",\n \"label-width\": \"120px\",\n disabled: $data.saving\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, null, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.enableImageTransform')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysSecurity.enableImageTransformTooltip'),\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n style: {\n \"margin-left\": \"5px\",\n \"cursor\": \"pointer\"\n }\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.accessSettings.imageTransformEnabled,\n \"onUpdate:modelValue\": _cache[17] || (_cache[17] = $event => $data.accessSettings.imageTransformEnabled = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }), $data.accessSettings.imageTransformEnabled ? (_openBlock(), _createBlock(_component_el_form_item, {\n key: 0,\n prop: \"imageTransformAllowedSizes\"\n }, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.imageTransformAllowedSizes')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysSecurity.imageTransformAllowedSizesHint'),\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n style: {\n \"margin-left\": \"5px\",\n \"cursor\": \"pointer\"\n }\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.accessSettings.imageTransformAllowedSizes,\n \"onUpdate:modelValue\": _cache[18] || (_cache[18] = $event => $data.accessSettings.imageTransformAllowedSizes = $event),\n placeholder: _ctx.$t('sysSecurity.imageTransformAllowedSizesPlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"model\", \"rules\", \"disabled\"]), _createElementVNode(\"h4\", _hoisted_30, _toDisplayString(_ctx.$t('sysSecurity.sessionSecurityPolicy')), 1), _createVNode(_component_el_form, {\n model: $data.accessSettings,\n \"label-width\": \"120px\",\n disabled: $data.saving\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, null, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.secureMode')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysSecurity.secureModeTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n style: {\n \"margin-left\": \"5px\",\n \"cursor\": \"pointer\"\n }\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.accessSettings.sessionSecure,\n \"onUpdate:modelValue\": _cache[19] || (_cache[19] = $event => $data.accessSettings.sessionSecure = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.userSessionMaxAge'),\n prop: \"userSessionMaxAge\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $data.accessSettings.userSessionMaxAge,\n \"onUpdate:modelValue\": _cache[20] || (_cache[20] = $event => $data.accessSettings.userSessionMaxAge = $event),\n min: 1,\n max: 3650,\n step: 1,\n precision: 0,\n \"controls-position\": \"right\"\n }, null, 8, [\"modelValue\"]), _createElementVNode(\"span\", _hoisted_31, _toDisplayString(_ctx.$t('sysSecurity.sessionMaxAgeUnit')), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.adminSessionMaxAge'),\n prop: \"adminSessionMaxAge\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $data.accessSettings.adminSessionMaxAge,\n \"onUpdate:modelValue\": _cache[21] || (_cache[21] = $event => $data.accessSettings.adminSessionMaxAge = $event),\n min: 1,\n max: 3650,\n step: 1,\n precision: 0,\n \"controls-position\": \"right\"\n }, null, 8, [\"modelValue\"]), _createElementVNode(\"span\", _hoisted_32, _toDisplayString(_ctx.$t('sysSecurity.sessionMaxAgeUnit')), 1)]),\n _: 1\n }, 8, [\"label\"])]),\n _: 1\n }, 8, [\"model\", \"disabled\"])]), _createVNode(_component_FloatingSaveButton, {\n show: !$data.loading,\n loading: $data.saving,\n dirty: _ctx.hasUnsavedChanges,\n onClick: $options.saveSettings\n }, null, 8, [\"show\", \"loading\", \"dirty\", \"onClick\"]), _createVNode(_component_el_dialog, {\n modelValue: $data.showCreateTokenDialog,\n \"onUpdate:modelValue\": _cache[29] || (_cache[29] = $event => $data.showCreateTokenDialog = $event),\n title: _ctx.$t('sysSecurity.createTokenTitle'),\n width: $options.dialogWidth\n }, {\n footer: _withCtx(() => [_createElementVNode(\"span\", _hoisted_34, [_createVNode(_component_el_button, {\n onClick: _cache[28] || (_cache[28] = $event => $data.showCreateTokenDialog = false)\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('common.cancel')), 1)]),\n _: 1\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $options.createToken\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.createBtn')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $data.newToken,\n rules: $options.tokenRules,\n ref: \"tokenForm\",\n \"label-width\": \"100px\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.tokenNameLabel'),\n prop: \"name\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.newToken.name,\n \"onUpdate:modelValue\": _cache[22] || (_cache[22] = $event => $data.newToken.name = $event),\n placeholder: _ctx.$t('sysSecurity.tokenNamePlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.permissionsLabel'),\n prop: \"permissions\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.newToken.permissions,\n \"onUpdate:modelValue\": _cache[23] || (_cache[23] = $event => $data.newToken.permissions = $event)\n }, {\n default: _withCtx(() => [_createVNode(_component_el_checkbox, {\n label: \"upload\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.permUpload')), 1)]),\n _: 1\n }), _createVNode(_component_el_checkbox, {\n label: \"delete\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.permDelete')), 1)]),\n _: 1\n }), _createVNode(_component_el_checkbox, {\n label: \"list\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.permList')), 1)]),\n _: 1\n }), _createVNode(_component_el_checkbox, {\n label: \"manage\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.permManage')), 1)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.neverExpire')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.newToken.neverExpire,\n \"onUpdate:modelValue\": _cache[24] || (_cache[24] = $event => $data.newToken.neverExpire = $event),\n onChange: $options.onCreateNeverExpireChange\n }, null, 8, [\"modelValue\", \"onChange\"])]),\n _: 1\n }, 8, [\"label\"]), !$data.newToken.neverExpire ? (_openBlock(), _createBlock(_component_el_form_item, {\n key: 0,\n label: _ctx.$t('sysSecurity.validPeriod'),\n prop: \"expirationValue\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_33, [_createVNode(_component_el_input_number, {\n modelValue: $data.newToken.expirationValue,\n \"onUpdate:modelValue\": _cache[25] || (_cache[25] = $event => $data.newToken.expirationValue = $event),\n min: 1,\n step: 1,\n \"controls-position\": \"right\",\n style: {\n \"flex\": \"1\"\n }\n }, null, 8, [\"modelValue\"]), _createVNode(_component_el_select, {\n modelValue: $data.newToken.expirationUnit,\n \"onUpdate:modelValue\": _cache[26] || (_cache[26] = $event => $data.newToken.expirationUnit = $event),\n style: {\n \"width\": \"100px\"\n }\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.timeUnitOptions, opt => {\n return _openBlock(), _createBlock(_component_el_option, {\n key: opt.value,\n label: _ctx.$t(opt.labelKey),\n value: opt.value\n }, null, 8, [\"label\", \"value\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]),\n _: 1\n }, 8, [\"label\"])) : _createCommentVNode(\"\", true), !$data.newToken.neverExpire ? (_openBlock(), _createBlock(_component_el_form_item, {\n key: 1,\n label: _ctx.$t('sysSecurity.autoDeleteOnExpire')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.newToken.autoDelete,\n \"onUpdate:modelValue\": _cache[27] || (_cache[27] = $event => $data.newToken.autoDelete = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"])) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"model\", \"rules\"])]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"width\"]), _createVNode(_component_el_dialog, {\n modelValue: $data.showEditTokenDialog,\n \"onUpdate:modelValue\": _cache[37] || (_cache[37] = $event => $data.showEditTokenDialog = $event),\n title: _ctx.$t('sysSecurity.editTokenTitle'),\n width: $options.dialogWidth\n }, {\n footer: _withCtx(() => [_createElementVNode(\"span\", _hoisted_36, [_createVNode(_component_el_button, {\n onClick: _cache[36] || (_cache[36] = $event => $data.showEditTokenDialog = false)\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('common.cancel')), 1)]),\n _: 1\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $options.updateToken\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.updateBtn')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $data.editingToken,\n rules: $options.editTokenRules,\n ref: \"editTokenForm\",\n \"label-width\": \"100px\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.tokenNameLabel')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.editingToken.name,\n \"onUpdate:modelValue\": _cache[30] || (_cache[30] = $event => $data.editingToken.name = $event),\n disabled: \"\"\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.permissionsLabel'),\n prop: \"permissions\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.editingToken.permissions,\n \"onUpdate:modelValue\": _cache[31] || (_cache[31] = $event => $data.editingToken.permissions = $event)\n }, {\n default: _withCtx(() => [_createVNode(_component_el_checkbox, {\n label: \"upload\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.permUpload')), 1)]),\n _: 1\n }), _createVNode(_component_el_checkbox, {\n label: \"delete\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.permDelete')), 1)]),\n _: 1\n }), _createVNode(_component_el_checkbox, {\n label: \"list\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.permList')), 1)]),\n _: 1\n }), _createVNode(_component_el_checkbox, {\n label: \"manage\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.permManage')), 1)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.neverExpire')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.editingToken.neverExpire,\n \"onUpdate:modelValue\": _cache[32] || (_cache[32] = $event => $data.editingToken.neverExpire = $event),\n onChange: $options.onEditNeverExpireChange\n }, null, 8, [\"modelValue\", \"onChange\"])]),\n _: 1\n }, 8, [\"label\"]), !$data.editingToken.neverExpire ? (_openBlock(), _createBlock(_component_el_form_item, {\n key: 0,\n label: _ctx.$t('sysSecurity.validPeriod'),\n prop: \"expirationValue\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_35, [_createVNode(_component_el_input_number, {\n modelValue: $data.editingToken.expirationValue,\n \"onUpdate:modelValue\": _cache[33] || (_cache[33] = $event => $data.editingToken.expirationValue = $event),\n min: 1,\n step: 1,\n \"controls-position\": \"right\",\n style: {\n \"flex\": \"1\"\n }\n }, null, 8, [\"modelValue\"]), _createVNode(_component_el_select, {\n modelValue: $data.editingToken.expirationUnit,\n \"onUpdate:modelValue\": _cache[34] || (_cache[34] = $event => $data.editingToken.expirationUnit = $event),\n style: {\n \"width\": \"100px\"\n }\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.timeUnitOptions, opt => {\n return _openBlock(), _createBlock(_component_el_option, {\n key: opt.value,\n label: _ctx.$t(opt.labelKey),\n value: opt.value\n }, null, 8, [\"label\", \"value\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]),\n _: 1\n }, 8, [\"label\"])) : _createCommentVNode(\"\", true), !$data.editingToken.neverExpire ? (_openBlock(), _createBlock(_component_el_form_item, {\n key: 1,\n label: _ctx.$t('sysSecurity.autoDeleteOnExpire')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.editingToken.autoDelete,\n \"onUpdate:modelValue\": _cache[35] || (_cache[35] = $event => $data.editingToken.autoDelete = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"])) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"model\", \"rules\"])]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"width\"]), _createVNode(_component_el_dialog, {\n modelValue: $data.showTokenResultDialog,\n \"onUpdate:modelValue\": _cache[40] || (_cache[40] = $event => $data.showTokenResultDialog = $event),\n title: _ctx.$t('sysSecurity.tokenCreatedTitle'),\n width: $options.dialogWidth\n }, {\n footer: _withCtx(() => [_createElementVNode(\"span\", _hoisted_39, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[39] || (_cache[39] = $event => $data.showTokenResultDialog = false)\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.savedBtn')), 1)]),\n _: 1\n })])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_37, [_createElementVNode(\"p\", _hoisted_38, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-triangle\",\n style: {\n \"margin-right\": \"5px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('sysSecurity.tokenCreatedWarning')), 1)]), _createVNode(_component_el_form, {\n \"label-width\": \"100px\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.tokenNameLabel')\n }, {\n default: _withCtx(() => [_createElementVNode(\"span\", null, _toDisplayString($data.createdToken.name), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysSecurity.fullToken')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.createdToken.token,\n \"onUpdate:modelValue\": _cache[38] || (_cache[38] = $event => $data.createdToken.token = $event),\n readonly: \"\"\n }, {\n append: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: $options.copyToken\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysSecurity.copyBtn')), 1)]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"])]),\n _: 1\n })])]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"width\"])])), [[_directive_loading, $data.loading]]);\n}","/**\r\n * Token 过期时间工具模块\r\n * 提供 Token 有效期计算、状态判定和向后兼容默认值填充功能\r\n */\r\n\r\n/**\r\n * 时间单位到毫秒的映射(月和年需要特殊处理)\r\n */\r\nconst SIMPLE_UNIT_MS = {\r\n s: 1000,\r\n m: 60 * 1000,\r\n h: 60 * 60 * 1000,\r\n d: 24 * 60 * 60 * 1000,\r\n};\r\n\r\n/**\r\n * 根据基准时间、数值和时间单位计算过期时间\r\n * @param {Date|string} baseTime - 基准时间(Date 对象或 ISO 8601 字符串)\r\n * @param {number} value - 正整数有效期数值\r\n * @param {string} unit - 时间单位:'s','m','h','d','M','Y'\r\n * @returns {string} 过期时间 ISO 8601 字符串\r\n * @throws {Error} 当 value <= 0 或 unit 无效时抛出错误\r\n */\r\nexport function computeExpiresAt(baseTime, value, unit) {\r\n if (!Number.isFinite(value) || value <= 0) {\r\n throw new Error('有效期数值必须大于 0');\r\n }\r\n\r\n const base = typeof baseTime === 'string' ? new Date(baseTime) : new Date(baseTime.getTime());\r\n\r\n if (SIMPLE_UNIT_MS[unit]) {\r\n return new Date(base.getTime() + value * SIMPLE_UNIT_MS[unit]).toISOString();\r\n }\r\n\r\n if (unit === 'M') {\r\n base.setUTCMonth(base.getUTCMonth() + value);\r\n return base.toISOString();\r\n }\r\n\r\n if (unit === 'Y') {\r\n base.setUTCFullYear(base.getUTCFullYear() + value);\r\n return base.toISOString();\r\n }\r\n\r\n throw new Error(`无效的时间单位: ${unit}`);\r\n}\r\n\r\n\r\n/**\r\n * 格式化过期时间为可读字符串\r\n * @param {string} isoString - ISO 8601 时间字符串\r\n * @returns {string} 格式化后的时间字符串\r\n */\r\nfunction formatExpiresTime(isoString) {\r\n const date = new Date(isoString);\r\n const year = date.getFullYear();\r\n const month = String(date.getMonth() + 1).padStart(2, '0');\r\n const day = String(date.getDate()).padStart(2, '0');\r\n const hours = String(date.getHours()).padStart(2, '0');\r\n const minutes = String(date.getMinutes()).padStart(2, '0');\r\n const seconds = String(date.getSeconds()).padStart(2, '0');\r\n return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;\r\n}\r\n\r\n/**\r\n * 获取 Token 的状态信息\r\n * @param {string|null} expiresAt - 过期时间 ISO 8601 字符串,null 表示永不过期\r\n * @param {Date} [now=new Date()] - 当前时间\r\n * @returns {{ status: 'active'|'expired', label: '有效'|'已过期', expiresText: string }}\r\n */\r\nexport function getTokenStatus(expiresAt, now = new Date()) {\r\n if (expiresAt === null || expiresAt === undefined) {\r\n return {\r\n status: 'active',\r\n label: '有效',\r\n expiresText: '永不过期',\r\n };\r\n }\r\n\r\n const expiresDate = new Date(expiresAt);\r\n const currentTime = now instanceof Date ? now : new Date(now);\r\n const formattedTime = formatExpiresTime(expiresAt);\r\n\r\n if (currentTime.getTime() > expiresDate.getTime()) {\r\n return {\r\n status: 'expired',\r\n label: '已过期',\r\n expiresText: formattedTime,\r\n };\r\n }\r\n\r\n return {\r\n status: 'active',\r\n label: '有效',\r\n expiresText: formattedTime,\r\n };\r\n}\r\n\r\n\r\n/**\r\n * 为缺少过期相关字段的旧 Token 数据填充默认值\r\n * @param {Object} tokenData - Token 数据对象\r\n * @returns {Object} 填充默认值后的新 Token 数据对象\r\n */\r\nexport function applyTokenDefaults(tokenData) {\r\n return {\r\n ...tokenData,\r\n expiresAt: tokenData.expiresAt ?? null,\r\n autoDelete: tokenData.autoDelete ?? false,\r\n };\r\n}\r\n","export function settingsSnapshot(settings) {\n return JSON.stringify(settings, (_key, value) => {\n if (value && typeof value === 'object' && !Array.isArray(value)) {\n return Object.fromEntries(Object.keys(value).sort().map(key => [key, value[key]]));\n }\n return value;\n });\n}\n\nexport default {\n data() {\n return { savedSettingsSnapshot: null };\n },\n computed: {\n hasUnsavedChanges() {\n return this.savedSettingsSnapshot !== null\n && settingsSnapshot(this.editableSettings) !== this.savedSettingsSnapshot;\n }\n },\n methods: {\n markSettingsSaved(settings = this.editableSettings) {\n this.savedSettingsSnapshot = settingsSnapshot(settings);\n }\n }\n};\n","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.every.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nimport FloatingSaveButton from '@/components/FloatingSaveButton.vue';\nimport { computeExpiresAt, getTokenStatus } from '@/utils/tokenExpiration';\nimport unsavedSettings from '@/mixins/unsavedSettings';\nexport default {\n mixins: [unsavedSettings],\n components: {\n FloatingSaveButton\n },\n data() {\n return {\n authSettings: {\n user: {},\n admin: {}\n },\n uploadSettings: {\n moderate: {},\n ipQuery: {\n enabled: false,\n channel: 'customApi',\n customApi: {\n url: '',\n params: [{\n key: 'ip',\n value: '{ip}'\n }],\n responseFields: []\n }\n }\n },\n accessSettings: {},\n apiTokens: [],\n // API Token列表\n // 加载状态\n loading: true,\n saving: false,\n tokenLoading: false,\n // 修改密码相关\n oriUserPassword: '',\n // 原上传密码\n oriAdminPassword: '',\n // 原管理端密码\n\n showUserPassConfirm: false,\n // 显示用户密码确认框\n showAdminPassConfirm: false,\n // 显示管理密码确认框\n clearUserPassword: false,\n // 清除用户密码开关\n clearAdminPassword: false,\n // 清除管理密码开关\n\n // Token对话框相关\n showCreateTokenDialog: false,\n showEditTokenDialog: false,\n showTokenResultDialog: false,\n timeUnitOptions: [{\n labelKey: 'sysSecurity.timeUnitSeconds',\n value: 's'\n }, {\n labelKey: 'sysSecurity.timeUnitMinutes',\n value: 'm'\n }, {\n labelKey: 'sysSecurity.timeUnitHours',\n value: 'h'\n }, {\n labelKey: 'sysSecurity.timeUnitDays',\n value: 'd'\n }, {\n labelKey: 'sysSecurity.timeUnitMonths',\n value: 'M'\n }, {\n labelKey: 'sysSecurity.timeUnitYears',\n value: 'Y'\n }],\n newToken: {\n name: '',\n owner: '',\n permissions: [],\n neverExpire: true,\n expirationValue: 1,\n expirationUnit: 'd',\n autoDelete: false\n },\n editingToken: {\n id: '',\n name: '',\n owner: '',\n permissions: [],\n neverExpire: true,\n expirationValue: 1,\n expirationUnit: 'd',\n autoDelete: false\n },\n createdToken: {\n name: '',\n token: ''\n }\n };\n },\n computed: {\n editableSettings() {\n return {\n auth: {\n user: {\n authCode: this.authSettings.user.authCode\n },\n admin: {\n adminUsername: this.authSettings.admin.adminUsername,\n adminPassword: this.authSettings.admin.adminPassword\n }\n },\n upload: this.uploadSettings,\n access: this.accessSettings,\n clearUserPassword: this.clearUserPassword,\n clearAdminPassword: this.clearAdminPassword\n };\n },\n dialogWidth() {\n return window.innerWidth > 768 ? '50%' : '90%';\n },\n userPassRules() {\n return {\n authCode: [{\n validator: (rule, value, callback) => {\n const urlReservedChars = ['%', '&', '?', '#', '/'];\n const hasReservedChar = urlReservedChars.some(char => value && value.includes(char));\n if (hasReservedChar) {\n callback(new Error(this.$t('sysSecurity.passwordUrlReserved')));\n } else {\n callback();\n }\n },\n trigger: 'blur'\n }],\n confirmNewUserPassword: [{\n validator: (rule, value, callback) => {\n if (!value) {\n callback(new Error(this.$t('sysSecurity.confirmUploadPassword')));\n } else if (value !== this.authSettings.user.authCode) {\n callback(new Error(this.$t('sysSecurity.passwordMismatch')));\n } else {\n callback();\n }\n },\n trigger: 'blur'\n }]\n };\n },\n adminPassRules() {\n return {\n confirmNewAdminPassword: [{\n validator: (rule, value, callback) => {\n if (!value) {\n callback(new Error(this.$t('sysSecurity.confirmAdminPassword')));\n } else if (value !== this.authSettings.admin.adminPassword) {\n callback(new Error(this.$t('sysSecurity.passwordMismatch')));\n } else {\n callback();\n }\n },\n trigger: 'blur'\n }]\n };\n },\n accessRules() {\n const validateSessionMaxAge = (rule, value, callback) => {\n if (!Number.isInteger(value) || value < 1 || value > 3650) {\n callback(new Error(this.$t('sysSecurity.sessionMaxAgeInvalid')));\n } else {\n callback();\n }\n };\n const validateImageTransformAllowedSizes = (rule, value, callback) => {\n if (!this.accessSettings.imageTransformEnabled || !value || !value.trim()) {\n callback();\n return;\n }\n const sizes = value.split(',').map(size => size.trim().toLowerCase()).filter(Boolean);\n const valid = sizes.every(size => {\n const match = size.match(/^(auto|[1-9]\\d*)x(auto|[1-9]\\d*)$/);\n if (!match || match[1] === 'auto' && match[2] === 'auto') return false;\n return match.slice(1).every(dimension => dimension === 'auto' || Number(dimension) <= 4096);\n });\n if (!valid) {\n callback(new Error(this.$t('sysSecurity.imageTransformAllowedSizesInvalid')));\n } else {\n callback();\n }\n };\n return {\n userSessionMaxAge: [{\n validator: validateSessionMaxAge,\n trigger: 'change'\n }],\n adminSessionMaxAge: [{\n validator: validateSessionMaxAge,\n trigger: 'change'\n }],\n imageTransformAllowedSizes: [{\n validator: validateImageTransformAllowedSizes,\n trigger: ['blur', 'change']\n }]\n };\n },\n tokenRules() {\n return {\n name: [{\n required: true,\n message: this.$t('sysSecurity.tokenNameRequired'),\n trigger: 'blur'\n }],\n permissions: [{\n required: true,\n message: this.$t('sysSecurity.permissionsRequired'),\n trigger: 'change'\n }],\n expirationValue: [{\n validator: (rule, value, callback) => {\n if (!this.newToken.neverExpire && (!value || value <= 0)) {\n callback(new Error(this.$t('sysSecurity.validPeriodRequired')));\n } else {\n callback();\n }\n },\n trigger: 'blur'\n }]\n };\n },\n editTokenRules() {\n return {\n permissions: [{\n required: true,\n message: this.$t('sysSecurity.permissionsRequired'),\n trigger: 'change'\n }],\n expirationValue: [{\n validator: (rule, value, callback) => {\n if (!this.editingToken.neverExpire && (!value || value <= 0)) {\n callback(new Error(this.$t('sysSecurity.validPeriodRequired')));\n } else {\n callback();\n }\n },\n trigger: 'blur'\n }]\n };\n }\n },\n methods: {\n normalizeIpQuerySettings(settings = {}) {\n const ipQuery = settings.ipQuery || {};\n const customApi = ipQuery.customApi || {};\n const params = Array.isArray(customApi.params) && customApi.params.length > 0 ? customApi.params.map(param => ({\n key: param?.key || '',\n value: param?.value || ''\n })) : [{\n key: 'ip',\n value: '{ip}'\n }];\n const responseFields = Array.isArray(customApi.responseFields) ? customApi.responseFields.map(field => {\n if (typeof field === 'string') return field;\n return field?.path || '';\n }) : [];\n return {\n ...settings,\n moderate: settings.moderate || {},\n ipQuery: {\n enabled: ipQuery.enabled ?? false,\n channel: ipQuery.channel || 'customApi',\n customApi: {\n url: customApi.url || '',\n params,\n responseFields\n }\n }\n };\n },\n addIpQueryParam() {\n this.uploadSettings.ipQuery.customApi.params.push({\n key: '',\n value: ''\n });\n },\n removeIpQueryParam(index) {\n if (this.uploadSettings.ipQuery.customApi.params.length <= 1) return;\n this.uploadSettings.ipQuery.customApi.params.splice(index, 1);\n },\n addIpQueryResponseField() {\n this.uploadSettings.ipQuery.customApi.responseFields.push('');\n },\n removeIpQueryResponseField(index) {\n this.uploadSettings.ipQuery.customApi.responseFields.splice(index, 1);\n },\n moveIpQueryResponseField(index, direction) {\n const fields = this.uploadSettings.ipQuery.customApi.responseFields;\n const targetIndex = index + direction;\n if (targetIndex < 0 || targetIndex >= fields.length) return;\n const [field] = fields.splice(index, 1);\n fields.splice(targetIndex, 0, field);\n },\n handleUserPassInput() {\n if (this.authSettings.user.authCode !== this.oriUserPassword) {\n this.showUserPassConfirm = true;\n } else {\n this.showUserPassConfirm = false;\n }\n },\n handleAdminPassInput() {\n if (this.authSettings.admin.adminPassword !== this.oriAdminPassword) {\n this.showAdminPassConfirm = true;\n } else {\n this.showAdminPassConfirm = false;\n }\n },\n handleClearUserPassword(checked) {\n if (checked) {\n this.authSettings.user.authCode = '';\n this.showUserPassConfirm = false;\n }\n },\n handleClearAdminPassword(checked) {\n if (checked) {\n this.authSettings.admin.adminPassword = '';\n this.authSettings.admin.adminUsername = '';\n this.showAdminPassConfirm = false;\n }\n },\n // Token相关方法\n getPermissionText(permission) {\n const permissionMap = {\n 'upload': this.$t('sysSecurity.permUpload'),\n 'delete': this.$t('sysSecurity.permDelete'),\n 'list': this.$t('sysSecurity.permList'),\n 'manage': this.$t('sysSecurity.permManage')\n };\n return permissionMap[permission] || permission;\n },\n formatDate(dateString) {\n return new Date(dateString).toLocaleString('zh-CN');\n },\n async loadApiTokens() {\n this.tokenLoading = true;\n try {\n const response = await fetchWithAuth('/api/manage/apiTokens');\n const data = await response.json();\n this.apiTokens = data.tokens || [];\n } catch (error) {\n this.$message.error(this.$t('sysSecurity.tokenListFailed'));\n } finally {\n this.tokenLoading = false;\n }\n },\n createToken() {\n this.$refs.tokenForm.validate(async valid => {\n if (!valid) return;\n try {\n this.newToken.owner = 'admin'; // 默认所有Token归属管理员\n\n let expiresAt = null;\n let autoDelete = false;\n if (!this.newToken.neverExpire) {\n expiresAt = computeExpiresAt(new Date(), this.newToken.expirationValue, this.newToken.expirationUnit);\n autoDelete = this.newToken.autoDelete;\n }\n const response = await fetchWithAuth('/api/manage/apiTokens', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n name: this.newToken.name,\n owner: this.newToken.owner,\n permissions: this.newToken.permissions,\n expiresAt,\n autoDelete\n })\n });\n const data = await response.json();\n if (response.ok) {\n this.createdToken = {\n name: data.name,\n token: data.token\n };\n this.showCreateTokenDialog = false;\n this.showTokenResultDialog = true;\n this.newToken = {\n name: '',\n owner: '',\n permissions: [],\n neverExpire: true,\n expirationValue: 1,\n expirationUnit: 'd',\n autoDelete: false\n };\n await this.loadApiTokens();\n this.$message.success(this.$t('sysSecurity.tokenCreateSuccess'));\n } else {\n this.$message.error(data.error || this.$t('sysSecurity.tokenCreateFailed'));\n }\n } catch (error) {\n this.$message.error(this.$t('sysSecurity.tokenCreateFailed'));\n }\n });\n },\n editToken(token) {\n const hasExpiration = token.expiresAt !== null && token.expiresAt !== undefined;\n this.editingToken = {\n id: token.id,\n name: token.name,\n owner: token.owner,\n permissions: [...token.permissions],\n neverExpire: !hasExpiration,\n expirationValue: 1,\n expirationUnit: 'd',\n autoDelete: token.autoDelete || false\n };\n this.showEditTokenDialog = true;\n },\n updateToken() {\n this.$refs.editTokenForm.validate(async valid => {\n if (!valid) return;\n try {\n let expiresAt = null;\n let autoDelete = false;\n if (!this.editingToken.neverExpire) {\n expiresAt = computeExpiresAt(new Date(), this.editingToken.expirationValue, this.editingToken.expirationUnit);\n autoDelete = this.editingToken.autoDelete;\n }\n const response = await fetchWithAuth('/api/manage/apiTokens', {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n tokenId: this.editingToken.id,\n permissions: this.editingToken.permissions,\n expiresAt,\n autoDelete\n })\n });\n const data = await response.json();\n if (response.ok) {\n this.showEditTokenDialog = false;\n await this.loadApiTokens();\n this.$message.success(this.$t('sysSecurity.tokenUpdateSuccess'));\n } else {\n this.$message.error(data.error || this.$t('sysSecurity.tokenUpdateFailed'));\n }\n } catch (error) {\n this.$message.error(this.$t('sysSecurity.tokenUpdateFailed'));\n }\n });\n },\n async deleteToken(tokenId) {\n try {\n await this.$confirm(this.$t('sysSecurity.tokenDeleteConfirm'), this.$t('sysSecurity.tokenDeleteConfirmTitle'), {\n confirmButtonText: this.$t('sysSecurity.tokenDeleteConfirmOk'),\n cancelButtonText: this.$t('sysSecurity.tokenDeleteConfirmCancel'),\n type: 'warning'\n });\n const response = await fetchWithAuth(`/api/manage/apiTokens?id=${tokenId}`, {\n method: 'DELETE'\n });\n const data = await response.json();\n if (response.ok) {\n await this.loadApiTokens();\n this.$message.success(this.$t('sysSecurity.tokenDeleteSuccess'));\n } else {\n this.$message.error(data.error || this.$t('sysSecurity.tokenDeleteFailed'));\n }\n } catch (error) {\n if (error !== 'cancel') {\n this.$message.error(this.$t('sysSecurity.tokenDeleteFailed'));\n }\n }\n },\n async copyToken() {\n try {\n await navigator.clipboard.writeText(this.createdToken.token);\n this.$message.success(this.$t('sysSecurity.tokenCopied'));\n } catch (error) {\n this.$message.error(this.$t('sysSecurity.copyFailed'));\n }\n },\n onCreateNeverExpireChange(val) {\n if (val) {\n this.newToken.autoDelete = false;\n }\n },\n onEditNeverExpireChange(val) {\n if (val) {\n this.editingToken.autoDelete = false;\n }\n },\n getTokenStatus(expiresAt) {\n return getTokenStatus(expiresAt);\n },\n saveSettings() {\n if (this.saving) return;\n this.saving = true;\n // 所有表单的Promise数组\n let validationPromises = [];\n\n // 验证用户密码表单\n validationPromises.push(new Promise(resolve => {\n this.$refs.userPassForm.validate(valid => {\n resolve(valid);\n });\n }));\n\n // 验证管理密码表单\n validationPromises.push(new Promise(resolve => {\n this.$refs.adminPassForm.validate(valid => {\n resolve(valid);\n });\n }));\n\n // 验证会话安全策略表单\n validationPromises.push(new Promise(resolve => {\n this.$refs.accessForm.validate(valid => {\n resolve(valid);\n });\n }));\n validationPromises.push(new Promise(resolve => {\n this.$refs.imageTransformForm.validate(valid => {\n resolve(valid);\n });\n }));\n\n // 等待所有验证完成\n return Promise.all(validationPromises).then(results => {\n const isValid = results.every(valid => valid);\n if (!isValid) {\n return;\n }\n\n // 验证会话有效期为 1-3650 的正整数\n if (this.accessSettings.userSessionMaxAge < 1 || !Number.isInteger(this.accessSettings.userSessionMaxAge) || this.accessSettings.userSessionMaxAge > 3650 || this.accessSettings.adminSessionMaxAge < 1 || !Number.isInteger(this.accessSettings.adminSessionMaxAge) || this.accessSettings.adminSessionMaxAge > 3650) {\n this.$message.error(this.$t('sysSecurity.sessionMaxAgeInvalid'));\n return;\n }\n const settings = JSON.parse(JSON.stringify({\n auth: this.authSettings,\n upload: this.uploadSettings,\n access: this.accessSettings\n }));\n // 不保存确认密码相关字段\n delete settings.auth.user.confirmNewUserPassword;\n delete settings.auth.admin.confirmNewAdminPassword;\n\n // 标记清除密码\n if (this.clearUserPassword) {\n settings.auth.user._clear = true;\n settings.auth.user.authCode = '';\n }\n if (this.clearAdminPassword) {\n settings.auth.admin._clear = true;\n settings.auth.admin.adminPassword = '';\n }\n return fetchWithAuth('/api/manage/sysConfig/security', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(settings)\n }).then(res => {\n if (!res.ok) throw new Error(this.$t('floatingSave.failed'));\n return res.json();\n }).then(data => {\n // 管理端密码变更后,当前会话已被清除,需要重新登录\n if (data.adminPasswordChanged) {\n this.markSettingsSaved();\n const msg = this.$t('sysSecurity.adminPasswordChangedRelogin');\n this.$message.warning(msg);\n setTimeout(() => {\n this.$store.commit('setAdminLoggedIn', false);\n this.$router.push('/adminLogin');\n }, 1500);\n return;\n }\n this.$message.success(this.$t('sysSecurity.settingsSaved'));\n // 保存成功后重置密码字段为空(后端已处理)\n this.authSettings.user.authCode = '';\n this.authSettings.admin.adminPassword = '';\n this.authSettings.user.confirmNewUserPassword = '';\n this.authSettings.admin.confirmNewAdminPassword = '';\n this.oriUserPassword = '';\n this.oriAdminPassword = '';\n // 标记已有密码(如果用户刚设置了密码,且不是清除操作)\n if (settings.auth.user.authCode && !settings.auth.user._clear) {\n this.authSettings.user._hasPassword = true;\n } else if (settings.auth.user._clear) {\n this.authSettings.user._hasPassword = false;\n }\n if (settings.auth.admin.adminPassword && !settings.auth.admin._clear) {\n this.authSettings.admin._hasPassword = true;\n } else if (settings.auth.admin._clear) {\n this.authSettings.admin._hasPassword = false;\n }\n this.showUserPassConfirm = false;\n this.showAdminPassConfirm = false;\n this.clearUserPassword = false;\n this.clearAdminPassword = false;\n this.markSettingsSaved();\n });\n }).catch(() => {\n this.$message.error(this.$t('floatingSave.failed'));\n }).finally(() => {\n this.saving = false;\n });\n }\n },\n mounted() {\n this.loading = true;\n // 获取上传设置\n fetchWithAuth('/api/manage/sysConfig/security').then(response => response.json()).then(async data => {\n this.authSettings = data.auth;\n this.uploadSettings = this.normalizeIpQuerySettings(data.upload);\n this.accessSettings = {\n imageTransformEnabled: false,\n imageTransformAllowedSizes: '',\n ...data.access\n };\n\n // 密码从后端返回为空(安全考虑),记录原始空值\n this.oriUserPassword = '';\n this.oriAdminPassword = '';\n this.authSettings.user.confirmNewUserPassword = '';\n this.authSettings.admin.confirmNewAdminPassword = '';\n await this.$nextTick();\n this.markSettingsSaved();\n\n // 加载API Token列表\n this.loadApiTokens();\n }).finally(() => {\n this.loading = false;\n });\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./SysCogSecurity.vue?vue&type=template&id=2c2362f7&scoped=true\"\nimport script from \"./SysCogSecurity.vue?vue&type=script&lang=js\"\nexport * from \"./SysCogSecurity.vue?vue&type=script&lang=js\"\n\nimport \"./SysCogSecurity.vue?vue&type=style&index=0&id=2c2362f7&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2c2362f7\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"page-settings\"\n};\nconst _hoisted_2 = {\n class: \"first-title\"\n};\nconst _hoisted_3 = {\n key: 5,\n class: \"announcement-refresh-option\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_FloatingSaveButton = _resolveComponent(\"FloatingSaveButton\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_1, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.groupedSettings, (categoryGroup, categoryName) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: categoryName,\n class: \"first-settings\"\n }, [_createElementVNode(\"h3\", _hoisted_2, _toDisplayString(categoryName), 1), _createVNode(_component_el_form, {\n model: $data.settings,\n \"label-width\": \"150px\"\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(categoryGroup, (setting, index) => {\n return _openBlock(), _createBlock(_component_el_form_item, {\n key: setting.id,\n class: _normalizeClass({\n 'announcement-manual-height': setting.id === 'announcement' && $data.announcementManualHeight !== null\n }),\n style: _normalizeStyle(setting.id === 'announcement' && $data.announcementManualHeight !== null ? {\n '--announcement-manual-height': `${$data.announcementManualHeight}px`\n } : undefined)\n }, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString($options.localized(setting, 'label')) + \" \", 1), setting.tooltip ? (_openBlock(), _createBlock(_component_el_tooltip, {\n key: 0,\n content: $options.localized(setting, 'tooltip'),\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n style: {\n \"margin-left\": \"5px\",\n \"cursor\": \"pointer\"\n }\n })]),\n _: 1\n }, 8, [\"content\"])) : _createCommentVNode(\"\", true)]),\n default: _withCtx(() => [setting.type === 'select' ? (_openBlock(), _createBlock(_component_el_select, {\n key: 0,\n modelValue: setting.value,\n \"onUpdate:modelValue\": $event => setting.value = $event,\n disabled: setting.fixed,\n placeholder: $options.localized(setting, 'placeholder'),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(setting.options, option => {\n return _openBlock(), _createBlock(_component_el_option, {\n key: option.value,\n label: $options.localizedOption(option),\n value: option.value\n }, null, 8, [\"label\", \"value\"]);\n }), 128))]),\n _: 2\n }, 1032, [\"modelValue\", \"onUpdate:modelValue\", \"disabled\", \"placeholder\"])) : setting.type === 'channelName' ? (_openBlock(), _createBlock(_component_el_select, {\n key: 1,\n modelValue: setting.value,\n \"onUpdate:modelValue\": $event => setting.value = $event,\n disabled: !$options.currentUploadChannel || $options.currentChannelList.length === 0,\n placeholder: _ctx.$t('sysPage.channelSelectPlaceholder'),\n clearable: \"\",\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.currentChannelList, ch => {\n return _openBlock(), _createBlock(_component_el_option, {\n key: ch.name,\n label: ch.name,\n value: ch.name\n }, null, 8, [\"label\", \"value\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\", \"onUpdate:modelValue\", \"disabled\", \"placeholder\"])) : setting.type === 'boolean' ? (_openBlock(), _createBlock(_component_el_switch, {\n key: 2,\n modelValue: setting.value,\n \"onUpdate:modelValue\": $event => setting.value = $event,\n disabled: setting.fixed\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\", \"disabled\"])) : setting.type === 'textarea' ? (_openBlock(), _createBlock(_component_el_input, {\n key: 3,\n modelValue: setting.value,\n \"onUpdate:modelValue\": $event => setting.value = $event,\n type: \"textarea\",\n autosize: {\n minRows: 2,\n maxRows: setting.id === 'announcement' ? 8 : undefined\n },\n resize: \"vertical\",\n disabled: setting.fixed,\n placeholder: $options.localized(setting, 'placeholder'),\n onMousedown: $event => $options.handleAnnouncementResizeStart($event, setting)\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\", \"autosize\", \"disabled\", \"placeholder\", \"onMousedown\"])) : (_openBlock(), _createBlock(_component_el_input, {\n key: 4,\n modelValue: setting.value,\n \"onUpdate:modelValue\": $event => setting.value = $event,\n disabled: setting.fixed,\n placeholder: $options.localized(setting, 'placeholder')\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\", \"disabled\", \"placeholder\"])), setting.id === 'announcement' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [_createVNode(_component_el_checkbox, {\n modelValue: $data.refreshAnnouncement,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.refreshAnnouncement = $event)\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysPage.refreshAnnouncement')), 1)]),\n _: 1\n }, 8, [\"modelValue\"])])) : _createCommentVNode(\"\", true)]),\n _: 2\n }, 1032, [\"class\", \"style\"]);\n }), 128))]),\n _: 2\n }, 1032, [\"model\"])]);\n }), 128)), _createVNode(_component_FloatingSaveButton, {\n show: !$data.loading,\n loading: $data.saving,\n dirty: _ctx.hasUnsavedChanges,\n onClick: $options.saveSettings\n }, null, 8, [\"show\", \"loading\", \"dirty\", \"onClick\"])])), [[_directive_loading, $data.loading]]);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.find.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport \"core-js/modules/es.iterator.some.js\";\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nimport axios from '@/utils/axios';\nimport FloatingSaveButton from '@/components/FloatingSaveButton.vue';\nimport unsavedSettings from '@/mixins/unsavedSettings';\nexport default {\n mixins: [unsavedSettings],\n components: {\n FloatingSaveButton\n },\n data() {\n return {\n settings: {\n config: []\n },\n // 加载状态\n loading: true,\n saving: false,\n // 即使公告内容未变化,也在本次保存时刷新公告已读状态\n refreshAnnouncement: false,\n // 公告文本域手动拖拽后的高度\n announcementManualHeight: null,\n announcementResizeMouseUpHandler: null,\n // 可用渠道列表\n availableChannels: {}\n };\n },\n computed: {\n editableSettings() {\n return {\n config: this.settings.config.map(({\n id,\n value\n }) => ({\n id,\n value\n })),\n refreshAnnouncement: this.refreshAnnouncement\n };\n },\n isEn() {\n return this.$i18n.locale === 'en';\n },\n // 根据category将配置项分组\n groupedSettings() {\n const grouped = {};\n if (this.settings.config) {\n this.settings.config.forEach(setting => {\n const category = this.isEn ? setting.category_en || setting.category || this.$t('sysPage.otherSettings') : setting.category || this.$t('sysPage.otherSettings');\n if (!grouped[category]) {\n grouped[category] = [];\n }\n grouped[category].push(setting);\n });\n }\n return grouped;\n },\n // 当前选择的上传渠道\n currentUploadChannel() {\n const channelSetting = this.settings.config?.find(s => s.id === 'defaultUploadChannel');\n return channelSetting?.value || '';\n },\n // 当前渠道类型对应的渠道列表\n currentChannelList() {\n return this.availableChannels[this.currentUploadChannel] || [];\n }\n },\n watch: {\n // 监听上传渠道变化,清空渠道名称(如果不在新列表中)\n currentUploadChannel(newVal, oldVal) {\n if (!this.loading && newVal !== oldVal) {\n const channelNameSetting = this.settings.config?.find(s => s.id === 'defaultChannelName');\n if (channelNameSetting) {\n const newChannelList = this.availableChannels[newVal] || [];\n if (!newChannelList.some(ch => ch.name === channelNameSetting.value)) {\n channelNameSetting.value = '';\n }\n }\n }\n }\n },\n methods: {\n localized(item, field) {\n if (this.isEn && item[field + '_en']) return item[field + '_en'];\n return item[field] || '';\n },\n localizedOption(option) {\n if (this.isEn && option.label_en) return option.label_en;\n return option.label;\n },\n handleAnnouncementResizeStart(event, setting) {\n if (setting.id !== 'announcement') return;\n const textarea = event.target.closest?.('textarea');\n if (!textarea) return;\n const rect = textarea.getBoundingClientRect();\n const resizeHandleSize = 24;\n const isResizeHandle = event.clientX >= rect.right - resizeHandleSize && event.clientY >= rect.bottom - resizeHandleSize;\n if (!isResizeHandle) return;\n const formItem = textarea.closest('.el-form-item');\n if (this.announcementResizeMouseUpHandler) {\n window.removeEventListener('mouseup', this.announcementResizeMouseUpHandler);\n }\n const startHeight = textarea.offsetHeight;\n textarea.style.height = `${startHeight}px`;\n formItem?.classList.remove('announcement-manual-height');\n this.announcementResizeMouseUpHandler = () => {\n const resizedHeight = textarea.offsetHeight;\n const manualHeight = Math.abs(resizedHeight - startHeight) > 1 ? resizedHeight : this.announcementManualHeight;\n if (manualHeight !== null) {\n this.announcementManualHeight = manualHeight;\n formItem?.style.setProperty('--announcement-manual-height', `${manualHeight}px`);\n formItem?.classList.add('announcement-manual-height');\n }\n this.announcementResizeMouseUpHandler = null;\n };\n window.addEventListener('mouseup', this.announcementResizeMouseUpHandler, {\n once: true\n });\n },\n async saveSettings() {\n if (this.saving) return;\n const submitted = JSON.parse(JSON.stringify({\n ...this.settings,\n refreshAnnouncement: this.refreshAnnouncement\n }));\n this.saving = true;\n try {\n const response = await fetchWithAuth('/api/manage/sysConfig/page', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(submitted)\n });\n if (!response.ok) throw new Error(this.$t('floatingSave.failed'));\n if (this.refreshAnnouncement === submitted.refreshAnnouncement) this.refreshAnnouncement = false;\n this.markSettingsSaved({\n config: submitted.config.map(({\n id,\n value\n }) => ({\n id,\n value\n })),\n refreshAnnouncement: false\n });\n this.$message.success(this.$t('sysPage.settingsSaved'));\n } catch {\n this.$message.error(this.$t('floatingSave.failed'));\n } finally {\n this.saving = false;\n }\n },\n // 获取可用渠道列表\n async fetchAvailableChannels() {\n try {\n const response = await axios.get('/api/channels');\n if (response.data) {\n this.availableChannels = response.data;\n }\n } catch (error) {\n console.error('Failed to fetch available channels:', error);\n }\n }\n },\n beforeUnmount() {\n if (this.announcementResizeMouseUpHandler) {\n window.removeEventListener('mouseup', this.announcementResizeMouseUpHandler);\n }\n },\n mounted() {\n this.loading = true;\n // 获取可用渠道列表\n this.fetchAvailableChannels();\n // 获取上传设置\n fetchWithAuth('/api/manage/sysConfig/page').then(response => response.json()).then(async data => {\n this.settings = data;\n // 初始化配置项默认值,并规范化布尔类型\n if (this.settings.config) {\n this.settings.config.forEach(setting => {\n if ((setting.value === undefined || setting.value === null || setting.value === '') && setting.default !== undefined) {\n setting.value = setting.default;\n }\n if (setting.type === 'boolean') {\n // 将字符串转换为布尔值\n if (typeof setting.value === 'string') {\n setting.value = setting.value === 'true';\n }\n }\n });\n }\n await this.$nextTick();\n this.markSettingsSaved();\n }).finally(() => {\n this.loading = false;\n });\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./SysCogPage.vue?vue&type=template&id=66434202&scoped=true\"\nimport script from \"./SysCogPage.vue?vue&type=script&lang=js\"\nexport * from \"./SysCogPage.vue?vue&type=script&lang=js\"\n\nimport \"./SysCogPage.vue?vue&type=style&index=0&id=66434202&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-66434202\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"others-settings\"\n};\nconst _hoisted_2 = {\n class: \"first-settings\"\n};\nconst _hoisted_3 = {\n class: \"first-title\"\n};\nconst _hoisted_4 = {\n class: \"first-title\"\n};\nconst _hoisted_5 = {\n class: \"first-title\"\n};\nconst _hoisted_6 = {\n class: \"first-title\"\n};\nconst _hoisted_7 = [\"innerHTML\"];\nconst _hoisted_8 = {\n class: \"first-title\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_FloatingSaveButton = _resolveComponent(\"FloatingSaveButton\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"h3\", _hoisted_3, [_createTextVNode(_toDisplayString(_ctx.$t('sysOthers.remoteTelemetry')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysOthers.remoteTelemetryTooltip'),\n placement: \"right\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n style: {\n \"margin-left\": \"5px\",\n \"cursor\": \"pointer\"\n }\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_form, {\n model: $data.settings.telemetry,\n \"label-width\": \"120px\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysOthers.enable')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.settings.telemetry.enabled,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.settings.telemetry.enabled = $event),\n disabled: $data.settings.telemetry.fixed\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"])]),\n _: 1\n }, 8, [\"model\"]), _createElementVNode(\"h3\", _hoisted_4, [_createTextVNode(_toDisplayString(_ctx.$t('sysOthers.cloudflareApiToken')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysOthers.cloudflareApiTokenTooltip'),\n placement: \"right\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n style: {\n \"margin-left\": \"5px\",\n \"cursor\": \"pointer\"\n }\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_form, {\n model: $data.settings.cloudflareApiToken,\n \"label-width\": \"120px\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysOthers.zoneId')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.settings.cloudflareApiToken.CF_ZONE_ID,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $data.settings.cloudflareApiToken.CF_ZONE_ID = $event),\n disabled: $data.settings.cloudflareApiToken.fixed\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysOthers.accountEmail')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.settings.cloudflareApiToken.CF_EMAIL,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.settings.cloudflareApiToken.CF_EMAIL = $event),\n disabled: $data.settings.cloudflareApiToken.fixed\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: \"API Key\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.settings.cloudflareApiToken.CF_API_KEY,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.settings.cloudflareApiToken.CF_API_KEY = $event),\n disabled: $data.settings.cloudflareApiToken.fixed,\n type: \"password\",\n \"show-password\": \"\",\n autocomplete: \"new-password\"\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n })]),\n _: 1\n }, 8, [\"model\"]), _createElementVNode(\"h3\", _hoisted_5, [_createTextVNode(_toDisplayString(_ctx.$t('sysOthers.randomImageApi')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysOthers.randomImageApiTooltip'),\n placement: \"right\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n style: {\n \"margin-left\": \"5px\",\n \"cursor\": \"pointer\"\n }\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_form, {\n model: $data.settings.randomImageAPI,\n \"label-width\": \"120px\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysOthers.enable')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.settings.randomImageAPI.enabled,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $data.settings.randomImageAPI.enabled = $event),\n disabled: $data.settings.randomImageAPI.fixed\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n prop: \"randomImageAPI.allowedDir\"\n }, {\n label: _withCtx(() => [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('sysOthers.directory')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysOthers.directoryTooltip'),\n placement: \"right\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n style: {\n \"margin-left\": \"5px\",\n \"cursor\": \"pointer\"\n }\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.settings.randomImageAPI.allowedDir,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $data.settings.randomImageAPI.allowedDir = $event),\n disabled: $data.settings.randomImageAPI.fixed\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n })]),\n _: 1\n }, 8, [\"model\"]), _createElementVNode(\"h3\", _hoisted_6, [_createTextVNode(_toDisplayString(_ctx.$t('sysOthers.publicBrowse')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysOthers.publicBrowseTooltip'),\n placement: \"right\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n style: {\n \"margin-left\": \"5px\",\n \"cursor\": \"pointer\"\n }\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_form, {\n model: $data.settings.publicBrowse,\n \"label-width\": \"120px\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysOthers.enable')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.settings.publicBrowse.enabled,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.settings.publicBrowse.enabled = $event),\n disabled: $data.settings.publicBrowse.fixed\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n prop: \"publicBrowse.allowedDir\"\n }, {\n label: _withCtx(() => [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('sysOthers.openDirectory')), 1), _createVNode(_component_el_tooltip, {\n placement: \"right\",\n \"raw-content\": \"\"\n }, {\n content: _withCtx(() => [_createElementVNode(\"div\", {\n style: {\n \"max-width\": \"320px\",\n \"line-height\": \"1.6\"\n },\n innerHTML: _ctx.$t('sysOthers.openDirectoryTooltip')\n }, null, 8, _hoisted_7)]),\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n style: {\n \"margin-left\": \"5px\",\n \"cursor\": \"pointer\"\n }\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.settings.publicBrowse.allowedDir,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = $event => $data.settings.publicBrowse.allowedDir = $event),\n disabled: $data.settings.publicBrowse.fixed,\n placeholder: \"wallpaper,photos,album\"\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n })]),\n _: 1\n }, 8, [\"model\"]), _createElementVNode(\"h3\", _hoisted_8, [_createTextVNode(_toDisplayString(_ctx.$t('sysOthers.webdav')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysOthers.webdavTooltip'),\n placement: \"right\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n style: {\n \"margin-left\": \"5px\",\n \"cursor\": \"pointer\"\n }\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_form, {\n model: $data.settings.webDAV,\n \"label-width\": \"120px\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysOthers.enable')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.settings.webDAV.enabled,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => $data.settings.webDAV.enabled = $event),\n disabled: $data.settings.webDAV.fixed\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysOthers.webdavUsername')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.settings.webDAV.username,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = $event => $data.settings.webDAV.username = $event),\n disabled: $data.settings.webDAV.fixed\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysOthers.webdavPassword')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.settings.webDAV.password,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $data.settings.webDAV.password = $event),\n disabled: $data.settings.webDAV.fixed,\n type: \"password\",\n \"show-password\": \"\",\n autocomplete: \"new-password\"\n }, null, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysOthers.webdavUploadChannel')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $data.settings.webDAV.uploadChannel,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => $data.settings.webDAV.uploadChannel = $event),\n disabled: $data.settings.webDAV.fixed,\n placeholder: _ctx.$t('sysOthers.webdavDefaultChannel'),\n clearable: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"Telegram\",\n value: \"telegram\"\n }), _createVNode(_component_el_option, {\n label: \"Cloudflare R2\",\n value: \"cfr2\"\n }), _createVNode(_component_el_option, {\n label: \"S3\",\n value: \"s3\"\n }), _createVNode(_component_el_option, {\n label: \"Discord\",\n value: \"discord\"\n }), _createVNode(_component_el_option, {\n label: \"HuggingFace\",\n value: \"huggingface\"\n }), _createVNode(_component_el_option, {\n label: \"WebDAV\",\n value: \"webdav\"\n })]),\n _: 1\n }, 8, [\"modelValue\", \"disabled\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"]), $data.settings.webDAV.uploadChannel && $options.webdavChannelList.length > 1 ? (_openBlock(), _createBlock(_component_el_form_item, {\n key: 0,\n label: _ctx.$t('sysOthers.webdavChannelName')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $data.settings.webDAV.channelName,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = $event => $data.settings.webDAV.channelName = $event),\n disabled: $data.settings.webDAV.fixed,\n placeholder: _ctx.$t('uploadSettings.autoSelect'),\n clearable: \"\"\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.webdavChannelList, ch => {\n return _openBlock(), _createBlock(_component_el_option, {\n key: ch.name,\n label: ch.name,\n value: ch.name\n }, null, 8, [\"label\", \"value\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\", \"disabled\", \"placeholder\"])]),\n _: 1\n }, 8, [\"label\"])) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"model\"])]), _createVNode(_component_FloatingSaveButton, {\n show: !$data.loading,\n loading: $data.saving,\n dirty: _ctx.hasUnsavedChanges,\n onClick: $options.saveSettings\n }, null, 8, [\"show\", \"loading\", \"dirty\", \"onClick\"])])), [[_directive_loading, $data.loading]]);\n}","import fetchWithAuth from '@/utils/fetchWithAuth';\nimport FloatingSaveButton from '@/components/FloatingSaveButton.vue';\nimport unsavedSettings from '@/mixins/unsavedSettings';\nexport default {\n mixins: [unsavedSettings],\n components: {\n FloatingSaveButton\n },\n data() {\n return {\n settings: {\n telemetry: {},\n randomImageAPI: {},\n cloudflareApiToken: {},\n webDAV: {},\n publicBrowse: {}\n },\n availableChannels: {},\n // 可用渠道列表\n // 加载状态\n loading: true,\n saving: false\n };\n },\n computed: {\n editableSettings() {\n return this.settings;\n },\n // WebDAV 当前渠道类型对应的渠道列表\n webdavChannelList() {\n const channelType = this.settings.webDAV?.uploadChannel;\n return channelType ? this.availableChannels[channelType] || [] : [];\n }\n },\n watch: {\n 'settings.webDAV.uploadChannel'() {\n // 切换渠道类型时清空指定的渠道名称\n if (!this.loading && this.settings.webDAV) {\n this.settings.webDAV.channelName = '';\n }\n }\n },\n methods: {\n async saveSettings() {\n if (this.saving) return;\n const submitted = JSON.parse(JSON.stringify(this.settings));\n this.saving = true;\n try {\n const response = await fetchWithAuth('/api/manage/sysConfig/others', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(submitted)\n });\n if (!response.ok) throw new Error(this.$t('floatingSave.failed'));\n this.markSettingsSaved(submitted);\n this.$message.success(this.$t('sysOthers.settingsSaved'));\n } catch {\n this.$message.error(this.$t('floatingSave.failed'));\n } finally {\n this.saving = false;\n }\n },\n async fetchAvailableChannels() {\n try {\n const response = await fetchWithAuth('/api/channels');\n if (response.ok) {\n this.availableChannels = await response.json();\n }\n } catch (error) {\n console.error('Failed to fetch available channels:', error);\n }\n }\n },\n mounted() {\n this.loading = true;\n // 获取上传设置\n fetchWithAuth('/api/manage/sysConfig/others').then(response => response.json()).then(async data => {\n this.settings = data;\n await this.$nextTick();\n this.markSettingsSaved();\n }).finally(() => {\n this.loading = false;\n });\n // 获取可用渠道列表\n this.fetchAvailableChannels();\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./SysCogOthers.vue?vue&type=template&id=b6f6d070&scoped=true\"\nimport script from \"./SysCogOthers.vue?vue&type=script&lang=js\"\nexport * from \"./SysCogOthers.vue?vue&type=script&lang=js\"\n\nimport \"./SysCogOthers.vue?vue&type=style&index=0&id=b6f6d070&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-b6f6d070\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, normalizeClass as _normalizeClass, createBlock as _createBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"ai-settings\"\n};\nconst _hoisted_2 = {\n key: 0,\n class: \"first-settings\"\n};\nconst _hoisted_3 = {\n class: \"first-title\"\n};\nconst _hoisted_4 = {\n class: \"basic-settings\"\n};\nconst _hoisted_5 = {\n class: \"resource-group\"\n};\nconst _hoisted_6 = {\n class: \"group-header\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"empty-card\"\n};\nconst _hoisted_8 = {\n class: \"empty-icon\"\n};\nconst _hoisted_9 = {\n class: \"empty-title\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"resource-cards\"\n};\nconst _hoisted_11 = {\n class: \"card-header\"\n};\nconst _hoisted_12 = {\n class: \"card-title\"\n};\nconst _hoisted_13 = {\n class: \"card-body\"\n};\nconst _hoisted_14 = {\n class: \"card-info\"\n};\nconst _hoisted_15 = [\"title\"];\nconst _hoisted_16 = {\n class: \"card-info\"\n};\nconst _hoisted_17 = {\n class: \"card-actions\"\n};\nconst _hoisted_18 = {\n class: \"resource-group\"\n};\nconst _hoisted_19 = {\n class: \"group-header\"\n};\nconst _hoisted_20 = {\n key: 0,\n class: \"empty-card\"\n};\nconst _hoisted_21 = {\n class: \"empty-icon\"\n};\nconst _hoisted_22 = {\n class: \"empty-title\"\n};\nconst _hoisted_23 = {\n key: 1,\n class: \"resource-cards\"\n};\nconst _hoisted_24 = {\n class: \"card-header\"\n};\nconst _hoisted_25 = {\n class: \"card-title\"\n};\nconst _hoisted_26 = {\n class: \"model-capabilities\"\n};\nconst _hoisted_27 = {\n class: \"card-body\"\n};\nconst _hoisted_28 = {\n class: \"card-info\"\n};\nconst _hoisted_29 = {\n class: \"card-actions\"\n};\nconst _hoisted_30 = {\n class: \"first-title\"\n};\nconst _hoisted_31 = {\n class: \"first-title\"\n};\nconst _hoisted_32 = {\n class: \"json-mode-hint\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input_number = _resolveComponent(\"el-input-number\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_FloatingSaveButton = _resolveComponent(\"FloatingSaveButton\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_1, [$data.settings ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [_createElementVNode(\"h3\", _hoisted_3, _toDisplayString(_ctx.$t('sysAI.general')), 1), _createElementVNode(\"section\", _hoisted_4, [_createVNode(_component_el_form, {\n \"label-width\": \"120px\",\n disabled: $data.saving\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysAI.enable')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.settings.enabled,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.settings.enabled = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysAI.timeout')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $data.settings.execution.providerTimeoutMs,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $data.settings.execution.providerTimeoutMs = $event),\n min: 1000,\n max: 20000,\n step: 1000\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysAI.batchSize')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $data.settings.execution.maxBatchSize,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.settings.execution.maxBatchSize = $event),\n min: 1,\n max: 3\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysAI.concurrency')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $data.settings.execution.concurrency,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.settings.execution.concurrency = $event),\n min: 1,\n max: 2\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"])]),\n _: 1\n }, 8, [\"disabled\"]), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"div\", _hoisted_6, [_createElementVNode(\"h4\", null, [_createVNode(_component_font_awesome_icon, {\n icon: \"server\"\n }), _createTextVNode(_toDisplayString(_ctx.$t('sysAI.providers')), 1), _createVNode(_component_el_tag, {\n size: \"small\",\n type: \"info\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($data.settings.providers.length), 1)]),\n _: 1\n })]), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n disabled: $data.saving || !!$data.testing || $data.settings.providers.length >= 8,\n onClick: _cache[4] || (_cache[4] = $event => $options.openProvider())\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"plus\"\n }), _createTextVNode(_toDisplayString(_ctx.$t('sysAI.addProvider')), 1)]),\n _: 1\n }, 8, [\"disabled\"])]), !$data.settings.providers.length ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [_createElementVNode(\"span\", _hoisted_8, [_createVNode(_component_font_awesome_icon, {\n icon: \"server\"\n })]), _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_ctx.$t('sysAI.noProviders')), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n plain: \"\",\n disabled: $data.saving,\n onClick: _cache[5] || (_cache[5] = $event => $options.openProvider())\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"plus\"\n }), _createTextVNode(_toDisplayString(_ctx.$t('sysAI.addProvider')), 1)]),\n _: 1\n }, 8, [\"disabled\"])])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.settings.providers, provider => {\n return _openBlock(), _createElementBlock(\"article\", {\n key: provider.id,\n class: _normalizeClass([\"resource-card\", {\n disabled: !provider.enabled\n }])\n }, [_createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"span\", _hoisted_12, _toDisplayString(provider.name || provider.id), 1), _createVNode(_component_el_switch, {\n modelValue: provider.enabled,\n \"onUpdate:modelValue\": $event => provider.enabled = $event,\n size: \"small\",\n disabled: $data.saving || !!$data.testing,\n \"aria-label\": _ctx.$t('sysAI.enabled')\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\", \"disabled\", \"aria-label\"])]), _createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"div\", _hoisted_14, [_createVNode(_component_font_awesome_icon, {\n icon: \"link\"\n }), _createElementVNode(\"span\", {\n title: provider.baseUrl\n }, _toDisplayString(provider.baseUrl), 9, _hoisted_15)]), _createElementVNode(\"div\", _hoisted_16, [_createVNode(_component_font_awesome_icon, {\n icon: \"shield-alt\"\n }), _createElementVNode(\"span\", null, _toDisplayString($options.keyPreview(provider)), 1)])]), _createElementVNode(\"div\", _hoisted_17, [_createVNode(_component_el_button, {\n type: \"primary\",\n text: \"\",\n size: \"small\",\n disabled: $data.saving || !!$data.testing,\n onClick: $event => $options.openProvider(provider)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"edit\"\n }), _createTextVNode(_toDisplayString(_ctx.$t('sysAI.edit')), 1)]),\n _: 1\n }, 8, [\"disabled\", \"onClick\"]), _createVNode(_component_el_button, {\n type: \"danger\",\n text: \"\",\n size: \"small\",\n disabled: $data.saving || !!$data.testing,\n onClick: $event => $options.removeProvider(provider.id)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n }), _createTextVNode(_toDisplayString(_ctx.$t('sysAI.remove')), 1)]),\n _: 1\n }, 8, [\"disabled\", \"onClick\"])])], 2);\n }), 128))]))]), _createElementVNode(\"div\", _hoisted_18, [_createElementVNode(\"div\", _hoisted_19, [_createElementVNode(\"h4\", null, [_createVNode(_component_font_awesome_icon, {\n icon: \"robot\"\n }), _createTextVNode(_toDisplayString(_ctx.$t('sysAI.models')), 1), _createVNode(_component_el_tag, {\n size: \"small\",\n type: \"info\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($data.settings.models.length), 1)]),\n _: 1\n })]), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n disabled: $data.saving || !!$data.testing || !$data.settings.providers.length || $data.settings.models.length >= 16,\n onClick: _cache[6] || (_cache[6] = $event => $options.openModel())\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"plus\"\n }), _createTextVNode(_toDisplayString(_ctx.$t('sysAI.addModel')), 1)]),\n _: 1\n }, 8, [\"disabled\"])]), !$data.settings.models.length ? (_openBlock(), _createElementBlock(\"div\", _hoisted_20, [_createElementVNode(\"span\", _hoisted_21, [_createVNode(_component_font_awesome_icon, {\n icon: \"robot\"\n })]), _createElementVNode(\"span\", _hoisted_22, _toDisplayString(_ctx.$t('sysAI.noModels')), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n plain: \"\",\n disabled: $data.saving || !$data.settings.providers.length,\n onClick: _cache[7] || (_cache[7] = $event => $options.openModel())\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"plus\"\n }), _createTextVNode(_toDisplayString(_ctx.$t('sysAI.addModel')), 1)]),\n _: 1\n }, 8, [\"disabled\"])])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_23, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.settings.models, model => {\n return _openBlock(), _createElementBlock(\"article\", {\n key: model.id,\n class: _normalizeClass([\"resource-card\", {\n disabled: !$options.isModelAvailable(model)\n }])\n }, [_createElementVNode(\"div\", _hoisted_24, [_createElementVNode(\"span\", _hoisted_25, _toDisplayString(model.model), 1), _createElementVNode(\"div\", _hoisted_26, [_createVNode(_component_el_tag, {\n size: \"small\",\n type: \"info\"\n }, {\n default: _withCtx(() => [...(_cache[31] || (_cache[31] = [_createTextVNode(\"text\", -1)]))]),\n _: 1\n }), model.vision ? (_openBlock(), _createBlock(_component_el_tag, {\n key: 0,\n size: \"small\"\n }, {\n default: _withCtx(() => [...(_cache[32] || (_cache[32] = [_createTextVNode(\"img\", -1)]))]),\n _: 1\n })) : _createCommentVNode(\"\", true)])]), _createElementVNode(\"div\", _hoisted_27, [_createElementVNode(\"div\", _hoisted_28, [_createVNode(_component_font_awesome_icon, {\n icon: \"server\"\n }), _createElementVNode(\"span\", null, _toDisplayString($options.providerName(model.providerId)), 1)])]), _createElementVNode(\"div\", _hoisted_29, [_createVNode(_component_el_button, {\n type: \"primary\",\n text: \"\",\n size: \"small\",\n loading: $data.testing === model.id,\n disabled: $data.saving || !!$data.testing || !$options.isModelAvailable(model),\n onClick: $event => $options.testModel(model)\n }, {\n default: _withCtx(() => [$data.testing !== model.id ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"link\"\n })) : _createCommentVNode(\"\", true), _createTextVNode(_toDisplayString(_ctx.$t('sysAI.test')), 1)]),\n _: 2\n }, 1032, [\"loading\", \"disabled\", \"onClick\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n text: \"\",\n size: \"small\",\n disabled: $data.saving || !!$data.testing,\n onClick: $event => $options.openModel(model)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"edit\"\n }), _createTextVNode(_toDisplayString(_ctx.$t('sysAI.edit')), 1)]),\n _: 1\n }, 8, [\"disabled\", \"onClick\"]), _createVNode(_component_el_button, {\n type: \"danger\",\n text: \"\",\n size: \"small\",\n disabled: $data.saving || !!$data.testing,\n onClick: $event => $options.removeModel(model.id)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n }), _createTextVNode(_toDisplayString(_ctx.$t('sysAI.remove')), 1)]),\n _: 1\n }, 8, [\"disabled\", \"onClick\"])])], 2);\n }), 128))]))])]), _createElementVNode(\"h3\", _hoisted_30, _toDisplayString(_ctx.$t('sysAI.prompts')), 1), _createVNode(_component_el_form, {\n \"label-width\": \"120px\",\n class: \"prompt-form\",\n disabled: $data.saving\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, null, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysAI.tagPrompt')) + \" \", 1), _createVNode(_component_el_tooltip, {\n placement: \"right\"\n }, {\n content: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysAI.promptHint')) + \" \", 1), _cache[33] || (_cache[33] = _createElementVNode(\"code\", null, \"{language} {maxTags} {preferredTags}\", -1))]),\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"help-icon\"\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.prompt,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => $data.prompt = $event),\n type: \"textarea\",\n rows: 8,\n maxlength: \"8000\",\n \"show-word-limit\": \"\"\n }, null, 8, [\"modelValue\"]), _createVNode(_component_el_button, {\n class: \"reset-prompt\",\n onClick: _cache[9] || (_cache[9] = $event => $data.prompt = $data.defaultPrompt)\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysAI.resetPrompt')), 1)]),\n _: 1\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\"]), _createElementVNode(\"h3\", _hoisted_31, _toDisplayString(_ctx.$t('sysAI.tagging')), 1), _createVNode(_component_el_form, {\n model: $options.tagging,\n \"label-width\": \"120px\",\n disabled: $data.saving\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysAI.enableTagging')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $options.tagging.enabled,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $options.tagging.enabled = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysAI.modelName')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $options.tagging.modelId,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => $options.tagging.modelId = $event)\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.visionModels, m => {\n return _openBlock(), _createBlock(_component_el_option, {\n key: m.id,\n label: `${m.model || m.id} · ${$options.providerName(m.providerId)}`,\n value: m.id,\n disabled: !$options.isModelAvailable(m)\n }, null, 8, [\"label\", \"value\", \"disabled\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysAI.language')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $options.tagging.language,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = $event => $options.tagging.language = $event)\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"中文\",\n value: \"zh-CN\"\n }), _createVNode(_component_el_option, {\n label: \"English\",\n value: \"en\"\n })]),\n _: 1\n }, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysAI.maxTags')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $options.tagging.maxTags,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $event => $options.tagging.maxTags = $event),\n min: 1,\n max: 10\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, null, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysAI.vocabulary')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysAI.vocabularyHint'),\n placement: \"right\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.vocabulary,\n \"onUpdate:modelValue\": _cache[14] || (_cache[14] = $event => $data.vocabulary = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8, [\"modelValue\"])]),\n _: 1\n })]),\n _: 1\n }, 8, [\"model\", \"disabled\"]), _createVNode(_component_FloatingSaveButton, {\n show: !$data.loading && !$data.providerDialogVisible && !$data.modelDialogVisible,\n loading: $data.saving,\n dirty: _ctx.hasUnsavedChanges,\n onClick: $options.save\n }, null, 8, [\"show\", \"loading\", \"dirty\", \"onClick\"])])) : $data.loadError ? (_openBlock(), _createBlock(_component_el_alert, {\n key: 1,\n title: $data.loadError,\n type: \"error\",\n closable: false\n }, null, 8, [\"title\"])) : _createCommentVNode(\"\", true), _createVNode(_component_el_dialog, {\n modelValue: $data.providerDialogVisible,\n \"onUpdate:modelValue\": _cache[21] || (_cache[21] = $event => $data.providerDialogVisible = $event),\n title: _ctx.$t($data.editingProvider ? 'sysAI.editProvider' : 'sysAI.addProvider'),\n width: \"min(600px, 90vw)\",\n class: \"ai-dialog\",\n \"destroy-on-close\": \"\",\n onClosed: _cache[22] || (_cache[22] = $event => $data.providerDraft = null)\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[20] || (_cache[20] = $event => $data.providerDialogVisible = false)\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysAI.cancel')), 1)]),\n _: 1\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $options.confirmProvider\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t($data.editingProvider ? 'sysAI.confirm' : 'sysAI.confirmAdd')), 1)]),\n _: 1\n }, 8, [\"onClick\"])]),\n default: _withCtx(() => [$data.providerDraft ? (_openBlock(), _createBlock(_component_el_form, {\n key: 0,\n ref: \"providerForm\",\n model: $data.providerDraft,\n rules: $options.providerRules,\n \"label-position\": \"top\",\n class: \"editor-form\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysAI.name'),\n prop: \"name\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.providerDraft.name,\n \"onUpdate:modelValue\": _cache[15] || (_cache[15] = $event => $data.providerDraft.name = $event),\n maxlength: \"200\"\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysAI.protocol')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n \"model-value\": \"OpenAI compatible (chat)\",\n disabled: \"\"\n })]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: \"Base URL\",\n prop: \"baseUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.providerDraft.baseUrl,\n \"onUpdate:modelValue\": _cache[16] || (_cache[16] = $event => $data.providerDraft.baseUrl = $event),\n placeholder: \"https://example.com/v1\",\n maxlength: \"500\"\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }), _createVNode(_component_el_form_item, {\n prop: \"apiKey\",\n class: \"api-key-field\"\n }, {\n label: _withCtx(() => [_cache[34] || (_cache[34] = _createTextVNode(\"API Key\", -1)), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('sysAI.credentialHint'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]),\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.providerDraft.apiKey,\n \"onUpdate:modelValue\": _cache[17] || (_cache[17] = $event => $data.providerDraft.apiKey = $event),\n type: \"password\",\n \"show-password\": \"\",\n autocomplete: \"new-password\",\n placeholder: $data.providerDraft.credential.configured ? _ctx.$t('sysAI.keyUnchanged') : _ctx.$t('sysAI.enterKey'),\n maxlength: \"2048\",\n disabled: !$data.canStoreCredentials || $data.providerDraft.clearApiKey\n }, null, 8, [\"modelValue\", \"placeholder\", \"disabled\"])]),\n _: 1\n }), $data.editingProvider && $data.providerDraft.credential.configured ? (_openBlock(), _createBlock(_component_el_form_item, {\n key: 0,\n prop: \"clearApiKey\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_checkbox, {\n modelValue: $data.providerDraft.clearApiKey,\n \"onUpdate:modelValue\": _cache[18] || (_cache[18] = $event => $data.providerDraft.clearApiKey = $event),\n disabled: !$data.canStoreCredentials\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysAI.clearKey')), 1)]),\n _: 1\n }, 8, [\"modelValue\", \"disabled\"])]),\n _: 1\n })) : _createCommentVNode(\"\", true), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysAI.enabled')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.providerDraft.enabled,\n \"onUpdate:modelValue\": _cache[19] || (_cache[19] = $event => $data.providerDraft.enabled = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"])]),\n _: 1\n }, 8, [\"model\", \"rules\"])) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"modelValue\", \"title\"]), _createVNode(_component_el_dialog, {\n modelValue: $data.modelDialogVisible,\n \"onUpdate:modelValue\": _cache[29] || (_cache[29] = $event => $data.modelDialogVisible = $event),\n title: _ctx.$t($data.editingModel ? 'sysAI.editModel' : 'sysAI.addModel'),\n width: \"min(600px, 90vw)\",\n class: \"ai-dialog\",\n \"destroy-on-close\": \"\",\n onClosed: _cache[30] || (_cache[30] = $event => $data.modelDraft = null)\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[28] || (_cache[28] = $event => $data.modelDialogVisible = false)\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysAI.cancel')), 1)]),\n _: 1\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $options.confirmModel\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t($data.editingModel ? 'sysAI.confirm' : 'sysAI.confirmAdd')), 1)]),\n _: 1\n }, 8, [\"onClick\"])]),\n default: _withCtx(() => [$data.modelDraft ? (_openBlock(), _createBlock(_component_el_form, {\n key: 0,\n ref: \"modelForm\",\n model: $data.modelDraft,\n rules: $options.modelRules,\n \"label-position\": \"top\",\n class: \"editor-form\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('sysAI.provider'),\n prop: \"providerId\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $data.modelDraft.providerId,\n \"onUpdate:modelValue\": _cache[23] || (_cache[23] = $event => $data.modelDraft.providerId = $event)\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.settings.providers, p => {\n return _openBlock(), _createBlock(_component_el_option, {\n key: p.id,\n label: p.name || p.id,\n value: p.id\n }, null, 8, [\"label\", \"value\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysAI.modelName'),\n prop: \"model\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.modelDraft.model,\n \"onUpdate:modelValue\": _cache[24] || (_cache[24] = $event => $data.modelDraft.model = $event),\n maxlength: \"200\"\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysAI.vision')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_switch, {\n modelValue: $data.modelDraft.vision,\n \"onUpdate:modelValue\": _cache[25] || (_cache[25] = $event => $data.modelDraft.vision = $event)\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_form_item, null, {\n label: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('sysAI.jsonMode')), 1), _createVNode(_component_el_tooltip, {\n placement: \"top\"\n }, {\n content: _withCtx(() => [_createElementVNode(\"span\", _hoisted_32, _toDisplayString(_ctx.$t('sysAI.jsonModeHint')), 1)]),\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"help-icon\"\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $data.modelDraft.structuredOutput,\n \"onUpdate:modelValue\": _cache[26] || (_cache[26] = $event => $data.modelDraft.structuredOutput = $event)\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: _ctx.$t('sysAI.promptOnly'),\n value: \"none\"\n }, null, 8, [\"label\"]), _createVNode(_component_el_option, {\n label: _ctx.$t('sysAI.nativeJsonObject'),\n value: \"json\"\n }, null, 8, [\"label\"])]),\n _: 1\n }, 8, [\"modelValue\"])]),\n _: 1\n }), _createVNode(_component_el_form_item, {\n label: _ctx.$t('sysAI.outputTokens')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $data.modelDraft.maxOutputTokens,\n \"onUpdate:modelValue\": _cache[27] || (_cache[27] = $event => $data.modelDraft.maxOutputTokens = $event),\n min: 64,\n max: 2048\n }, null, 8, [\"modelValue\"])]),\n _: 1\n }, 8, [\"label\"])]),\n _: 1\n }, 8, [\"model\", \"rules\"])) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"modelValue\", \"title\"])])), [[_directive_loading, $data.loading]]);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.find.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport \"core-js/modules/es.iterator.some.js\";\nimport FloatingSaveButton from '@/components/FloatingSaveButton.vue';\nimport { apiJSON, aiErrorText } from '@/utils/aiTags';\nimport unsavedSettings from '@/mixins/unsavedSettings';\nconst PROMPT_ID = 'builtin.image-tags.v1';\nconst newId = prefix => prefix + (globalThis.crypto?.randomUUID?.().replace(/-/g, '') || Date.now().toString(36) + Math.random().toString(36).slice(2));\nexport default {\n mixins: [unsavedSettings],\n name: 'SysCogAI',\n components: {\n FloatingSaveButton\n },\n data() {\n return {\n settings: null,\n loading: true,\n saving: false,\n testing: '',\n loadError: '',\n prompt: '',\n defaultPrompt: '',\n vocabulary: '',\n canStoreCredentials: false,\n providerDialogVisible: false,\n modelDialogVisible: false,\n providerDraft: null,\n modelDraft: null,\n editingProvider: false,\n editingModel: false\n };\n },\n computed: {\n editableSettings() {\n return this.settings ? this.payload() : null;\n },\n tagging() {\n return this.settings.capabilities['image.tags'];\n },\n visionModels() {\n return this.settings?.models.filter(model => model.vision) || [];\n },\n availableVisionModels() {\n return this.visionModels.filter(model => this.isModelAvailable(model));\n },\n providerRules() {\n return {\n name: [this.requiredRule(this.$t('sysAI.name'))],\n baseUrl: [this.requiredRule('Base URL'), {\n validator: (_rule, value, callback) => {\n try {\n const url = new URL(value);\n if (!['https:', 'http:'].includes(url.protocol) || url.username || url.password || url.search || url.hash) throw new Error();\n callback();\n } catch {\n callback(new Error(this.$t('sysAI.invalidURL')));\n }\n },\n trigger: 'blur'\n }],\n apiKey: [{\n validator: (_rule, value, callback) => {\n if (!this.canStoreCredentials) return callback(new Error(this.$t('sysAI.credentialHint')));\n if (!this.providerDraft?.credential.configured && !this.providerDraft?.clearApiKey && !value?.trim()) return callback(new Error(this.$t('sysAI.enterKey')));\n callback();\n },\n trigger: 'blur'\n }]\n };\n },\n modelRules() {\n return {\n providerId: [this.requiredRule(this.$t('sysAI.provider'))],\n model: [this.requiredRule(this.$t('sysAI.modelName'))]\n };\n }\n },\n watch: {\n availableVisionModels() {\n this.syncTaggingModel();\n }\n },\n async mounted() {\n try {\n this.setConfig(await apiJSON('/api/manage/sysConfig/ai'));\n } catch (error) {\n this.loadError = this.errorText(error);\n } finally {\n this.loading = false;\n }\n },\n methods: {\n errorText(error) {\n return aiErrorText(error, this.$t, this.$te);\n },\n setConfig(config) {\n this.canStoreCredentials = config.canStoreCredentials;\n this.defaultPrompt = config.defaults.tagPrompt;\n this.prompt = config.promptOverrides[PROMPT_ID]?.template || this.defaultPrompt;\n this.vocabulary = config.capabilities['image.tags'].preferredTags.join(', ');\n this.settings = config;\n this.markSettingsSaved();\n },\n payload() {\n const config = JSON.parse(JSON.stringify(this.settings));\n config.promptOverrides = this.prompt === this.defaultPrompt ? {} : {\n [PROMPT_ID]: {\n template: this.prompt\n }\n };\n config.capabilities['image.tags'].preferredTags = this.vocabulary.split(/[,,\\n]/).map(tag => tag.trim()).filter(Boolean);\n return config;\n },\n requiredRule(field) {\n return {\n required: true,\n whitespace: true,\n message: this.$t('sysAI.required', {\n field\n }),\n trigger: 'blur'\n };\n },\n providerName(id) {\n return this.settings.providers.find(provider => provider.id === id)?.name || id;\n },\n isModelAvailable(model) {\n return this.settings?.providers.some(provider => provider.id === model.providerId && provider.enabled) || false;\n },\n syncTaggingModel() {\n if (!this.settings || this.availableVisionModels.some(model => model.id === this.tagging.modelId)) return;\n const hadSelectedModel = !!this.tagging.modelId;\n this.tagging.modelId = this.availableVisionModels[0]?.id || '';\n if (!this.tagging.modelId && hadSelectedModel) this.tagging.enabled = false;\n },\n keyPreview(provider) {\n if (provider.clearApiKey) return this.$t('sysAI.keyNotConfigured');\n const key = provider.apiKey?.trim();\n if (key) return key.length > 6 ? `${key.slice(0, 2)}******${key.slice(-4)}` : '******';\n return provider.credential.maskedKey || (provider.credential.configured ? '******' : this.$t('sysAI.keyNotConfigured'));\n },\n openProvider(provider) {\n if (this.saving || this.testing || !provider && this.settings.providers.length >= 8) return;\n this.editingProvider = !!provider;\n this.providerDraft = provider ? JSON.parse(JSON.stringify(provider)) : {\n id: newId('provider_'),\n name: '',\n protocol: 'openai-compatible',\n baseUrl: '',\n enabled: true,\n credential: {\n source: 'stored',\n configured: false\n }\n };\n this.providerDraft.credential = {\n source: 'stored',\n configured: this.providerDraft.credential?.source === 'stored' && !!this.providerDraft.credential.configured,\n maskedKey: this.providerDraft.credential?.maskedKey || ''\n };\n this.providerDialogVisible = true;\n },\n async confirmProvider() {\n if (!(await this.$refs.providerForm.validate().catch(() => false))) return;\n const provider = JSON.parse(JSON.stringify(this.providerDraft));\n provider.name = provider.name.trim();\n provider.baseUrl = provider.baseUrl.trim();\n const index = this.settings.providers.findIndex(item => item.id === provider.id);\n if (index < 0) this.settings.providers.push(provider);else this.settings.providers.splice(index, 1, provider);\n this.providerDialogVisible = false;\n },\n removeProvider(id) {\n if (this.settings.models.some(model => model.providerId === id)) {\n this.$message.warning(this.$t('sysAI.providerInUse'));\n return;\n }\n this.settings.providers = this.settings.providers.filter(provider => provider.id !== id);\n },\n openModel(model) {\n if (this.saving || this.testing || !this.settings.providers.length || !model && this.settings.models.length >= 16) return;\n this.editingModel = !!model;\n this.modelDraft = model ? JSON.parse(JSON.stringify(model)) : {\n id: newId('model_'),\n providerId: this.settings.providers[0].id,\n model: '',\n vision: true,\n structuredOutput: 'none',\n maxOutputTokens: 256\n };\n this.modelDialogVisible = true;\n },\n async confirmModel() {\n if (!(await this.$refs.modelForm.validate().catch(() => false))) return;\n const model = JSON.parse(JSON.stringify(this.modelDraft));\n model.model = model.model.trim();\n const index = this.settings.models.findIndex(item => item.id === model.id);\n if (index < 0) this.settings.models.push(model);else this.settings.models.splice(index, 1, model);\n this.syncTaggingModel();\n this.modelDialogVisible = false;\n },\n removeModel(id) {\n this.settings.models = this.settings.models.filter(model => model.id !== id);\n this.syncTaggingModel();\n },\n async save() {\n if (this.saving) return;\n this.saving = true;\n try {\n this.setConfig(await apiJSON('/api/manage/sysConfig/ai', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(this.payload())\n }));\n this.$message.success(this.$t('sysAI.saved'));\n } catch (error) {\n this.$message.error(this.errorText(error));\n } finally {\n this.saving = false;\n }\n },\n async testModel(model) {\n if (this.saving || this.testing || !this.isModelAvailable(model)) return;\n this.testing = model.id;\n try {\n const result = await apiJSON('/api/manage/ai/test', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n config: this.payload(),\n modelId: model.id\n })\n });\n this.$message.success(this.$t('sysAI.testSuccess', {\n ms: result.elapsedMs\n }));\n } catch (error) {\n this.$message.error(this.errorText(error));\n } finally {\n this.testing = '';\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./SysCogAI.vue?vue&type=template&id=08cd17d0&scoped=true\"\nimport script from \"./SysCogAI.vue?vue&type=script&lang=js\"\nexport * from \"./SysCogAI.vue?vue&type=script&lang=js\"\n\nimport \"./SysCogAI.vue?vue&type=style&index=0&id=08cd17d0&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-08cd17d0\"]])\n\nexport default __exports__","import \"core-js/modules/es.array.push.js\";\nimport DashboardTabs from '@/components/DashboardTabs.vue';\nimport SysConfigTabs from '@/components/config/SysConfigTabs.vue';\nimport SysCogStatus from '@/components/config/SysCogStatus.vue';\nimport SysCogUpload from '@/components/config/SysCogUpload.vue';\nimport SysCogSecurity from '@/components/config/SysCogSecurity.vue';\nimport SysCogPage from '@/components/config/SysCogPage.vue';\nimport SysCogOthers from '@/components/config/SysCogOthers.vue';\nimport SysCogAI from '@/components/config/SysCogAI.vue';\nimport backgroundManager from '@/mixins/backgroundManager';\nexport default {\n name: 'SystemConfig',\n mixins: [backgroundManager],\n data() {\n return {\n activeIndex: 'status',\n isSidebarCollapse: false\n };\n },\n watch: {\n // 监听锚点变化\n '$route.hash': {\n immediate: true,\n handler(newHash) {\n this.activeIndex = newHash.replace('#', '');\n window.scrollTo(0, 0); // 滚动到页面顶部\n }\n },\n activeIndex(newIndex) {\n // 更新锚点\n const hash = `#${newIndex}`;\n this.$router.push({\n hash\n });\n }\n },\n components: {\n DashboardTabs,\n SysConfigTabs,\n SysCogStatus,\n SysCogUpload,\n SysCogSecurity,\n SysCogPage,\n SysCogOthers,\n SysCogAI\n },\n computed: {\n disableTooltip() {\n return window.innerWidth < 768;\n },\n // 根据锚点动态返回对应的组件\n currentComponent() {\n const hash = this.$route.hash.replace('#', '');\n switch (hash) {\n case 'status':\n return SysCogStatus;\n case 'upload':\n return SysCogUpload;\n case 'security':\n return SysCogSecurity;\n case 'page':\n return SysCogPage;\n case 'others':\n return SysCogOthers;\n case 'ai':\n return SysCogAI;\n default:\n return SysCogStatus;\n }\n }\n },\n methods: {\n handleLogout() {\n const url = process.env.NODE_ENV === 'production' ? '/api/auth/logout' : '/api/api/auth/logout';\n fetch(url, {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n authType: 'admin'\n })\n }).finally(() => {\n this.$store.commit('setAdminLoggedIn', false);\n this.$router.push('/adminLogin');\n });\n },\n // 设置默认锚点\n setDefaultHash() {\n const defaultHash = '#status'; // 默认锚点\n window.location.hash = defaultHash;\n this.activeIndex = defaultHash.replace('#', '');\n }\n },\n mounted() {\n // 初始化背景图\n this.initializeBackground('adminBkImg', '.container', false, true);\n\n // 如果 URL 中没有锚点,则设置默认锚点\n if (!window.location.hash) {\n this.setDefaultHash();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./SystemConfig.vue?vue&type=template&id=3c6c75cc&scoped=true\"\nimport script from \"./SystemConfig.vue?vue&type=script&lang=js\"\nexport * from \"./SystemConfig.vue?vue&type=script&lang=js\"\n\nimport \"@/styles/admin-common.css?vue&type=style&index=0&id=3c6c75cc&scoped=true&lang=css&external\"\nimport \"./SystemConfig.vue?vue&type=style&index=1&id=3c6c75cc&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3c6c75cc\"]])\n\nexport default __exports__","import fetchWithAuth from '@/utils/fetchWithAuth';\n\nexport const MAX_PREVIEW_BYTES = 256 * 1024;\nconst MAX_ORIGINAL_BYTES = 20 * 1024 * 1024;\nfunction checkAbort(signal) {\n if (signal?.aborted) throw new DOMException('Cancelled', 'AbortError');\n}\n\nexport function aiErrorText(error, translate, hasTranslation) {\n const code = error?.code || error?.message;\n const key = `aiErrors.${code}`;\n const message = hasTranslation(key)\n ? translate(key, { status: error.details?.status || error.status })\n : translate('aiErrors.NETWORK_ERROR');\n const details = ['code', 'type', 'requestId'].filter(field => error?.details?.[field])\n .map(field => `${translate(`aiErrors.${field}`)}: ${error.details[field]}`);\n return details.length ? `${message} (${details.join(', ')})` : message;\n}\n\nconst errorResult = error => ({ code: error.code || error.message, message: error.message, ...(error.details ? { details: error.details } : {}) });\n\nexport async function apiJSON(url, options = {}) {\n const response = await fetchWithAuth(url, options);\n let data;\n try { data = await response.json(); }\n catch {\n const error = new Error(`HTTP ${response.status}`);\n error.code = response.status === 401 ? 'AUTH_REQUIRED' : response.ok ? 'INVALID_RESPONSE' : 'HTTP_ERROR';\n error.details = { status: response.status };\n throw error;\n }\n if (!data || typeof data !== 'object' || Array.isArray(data)) {\n const error = new Error('INVALID_RESPONSE');\n error.code = 'INVALID_RESPONSE';\n throw error;\n }\n if (!response.ok) {\n const error = new Error(data.error?.message || data.message || `HTTP ${response.status}`);\n error.code = data.error?.code || (response.status === 401 ? 'AUTH_REQUIRED' : 'HTTP_ERROR');\n error.details = { status: response.status, ...data.error?.details };\n throw error;\n }\n return data;\n}\n\nexport async function makeImagePreview(file, signal) {\n checkAbort(signal);\n const type = file.metadata?.FileType?.toLowerCase();\n if (type && !['image/jpeg', 'image/png', 'image/webp', 'image/avif', 'image/gif'].includes(type)) throw new Error('UNSUPPORTED_IMAGE');\n if (Number(file.metadata?.FileSizeBytes) > MAX_ORIGINAL_BYTES) throw new Error('IMAGE_TOO_LARGE');\n const path = file.name.split('/').map(encodeURIComponent).join('/');\n const response = await fetchWithAuth(`/file/${path}`, { signal });\n if (!response.ok) {\n const error = new Error(`HTTP ${response.status}`);\n error.code = 'IMAGE_FETCH_FAILED';\n error.details = { status: response.status };\n throw error;\n }\n if (Number(response.headers.get('Content-Length')) > MAX_ORIGINAL_BYTES) {\n await response.body?.cancel();\n throw new Error('IMAGE_TOO_LARGE');\n }\n const reader = response.body.getReader();\n const chunks = [];\n let size = 0;\n try {\n while (true) {\n checkAbort(signal);\n const { value, done } = await reader.read();\n if (done) break;\n size += value.byteLength;\n if (size > MAX_ORIGINAL_BYTES) { await reader.cancel(); throw new Error('IMAGE_TOO_LARGE'); }\n chunks.push(value);\n }\n } finally { reader.releaseLock(); }\n const blob = new Blob(chunks, { type: response.headers.get('Content-Type') || type });\n checkAbort(signal);\n let image, objectUrl;\n try {\n if (typeof createImageBitmap === 'function') image = await createImageBitmap(blob);\n else {\n objectUrl = URL.createObjectURL(blob);\n image = new Image();\n await new Promise((resolve, reject) => {\n image.onload = resolve;\n image.onerror = () => reject(new Error('UNSUPPORTED_IMAGE'));\n image.src = objectUrl;\n });\n }\n checkAbort(signal);\n const width = image.width || image.naturalWidth;\n const height = image.height || image.naturalHeight;\n if (!width || !height) throw new Error('UNSUPPORTED_IMAGE');\n const canvas = document.createElement('canvas');\n const scale = Math.min(1, 768 / Math.max(width, height));\n canvas.width = Math.max(1, Math.round(width * scale));\n canvas.height = Math.max(1, Math.round(height * scale));\n const context = canvas.getContext('2d');\n context.fillStyle = '#ffffff';\n context.fillRect(0, 0, canvas.width, canvas.height);\n context.drawImage(image, 0, 0, canvas.width, canvas.height);\n for (const quality of [0.8, 0.6, 0.4]) {\n checkAbort(signal);\n const preview = await new Promise(resolve => canvas.toBlob(resolve, 'image/jpeg', quality));\n if (preview && preview.size <= MAX_PREVIEW_BYTES && (preview.size <= 128 * 1024 || quality === 0.4)) return preview;\n }\n throw new Error('PREVIEW_TOO_LARGE');\n } catch (error) {\n if (signal?.aborted || error.name === 'AbortError' || error.message === 'PREVIEW_TOO_LARGE') throw error;\n throw new Error('UNSUPPORTED_IMAGE');\n } finally {\n image?.close?.();\n if (objectUrl) URL.revokeObjectURL(objectUrl);\n }\n}\n\nexport async function generateTagSuggestions(files, { signal, batchSize = 3, onResult, prepare = makeImagePreview } = {}) {\n batchSize = Math.max(1, Math.min(3, batchSize));\n const results = [];\n for (let start = 0; start < files.length; start += batchSize) {\n checkAbort(signal);\n const prepared = [];\n // Limit browser memory: only retain previews for the current small batch.\n for (const file of files.slice(start, start + batchSize)) {\n try { prepared.push({ file, image: await prepare(file, signal) }); }\n catch (error) {\n if (signal?.aborted || error.name === 'AbortError') throw error;\n const result = { fileId: file.name, error: errorResult(error) };\n results.push(result); onResult?.(result);\n }\n }\n checkAbort(signal);\n if (!prepared.length) continue;\n const form = new FormData();\n form.append('items', JSON.stringify(prepared.map(item => ({ fileId: item.file.name }))));\n prepared.forEach((item, index) => form.append(`image${index}`, item.image, 'preview.jpg'));\n try {\n const data = await apiJSON('/api/manage/ai/tags', { method: 'POST', body: form, signal });\n checkAbort(signal);\n if (!Array.isArray(data.results) || data.results.length !== prepared.length) throw new Error('INVALID_RESPONSE');\n for (let index = 0; index < prepared.length; index++) {\n const result = data.results[index];\n if (!result || result.fileId !== prepared[index].file.name || (!result.error && (!Array.isArray(result.tags) || result.tags.some(tag => typeof tag !== 'string') || !/^[a-f0-9]{64}$/.test(result.sourceIdentity)))) throw new Error('INVALID_RESPONSE');\n }\n for (const result of data.results) { results.push(result); onResult?.(result); }\n } catch (error) {\n if (signal?.aborted || error.name === 'AbortError') throw error;\n for (const item of prepared) {\n const result = { fileId: item.file.name, error: errorResult(error) };\n results.push(result); onResult?.(result);\n }\n }\n }\n return results;\n}\n\nexport async function applyTagSuggestions(items, onResult) {\n const results = [];\n for (let start = 0; start < items.length; start += 50) {\n const batch = items.slice(start, start + 50);\n try {\n const data = await apiJSON('/api/manage/tags/apply', {\n method: 'POST', headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ items: batch })\n });\n if (!Array.isArray(data.results) || data.results.length !== batch.length || data.results.some((result, index) => !result || result.fileId !== batch[index].fileId || typeof result.saved !== 'boolean' || (result.saved && (!Array.isArray(result.tags) || result.tags.some(tag => typeof tag !== 'string'))))) {\n throw new Error('INVALID_RESPONSE');\n }\n for (const result of data.results) { results.push(result); onResult?.(result); }\n } catch (error) {\n for (const item of batch) {\n const result = { fileId: item.fileId, saved: false, error: errorResult(error) };\n results.push(result); onResult?.(result);\n }\n }\n }\n return results;\n}\n","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, mergeProps as _mergeProps, createStaticVNode as _createStaticVNode } from \"vue\";\nconst _hoisted_1 = {\n key: 0,\n class: \"channel-svg-icon\",\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = {\n key: 1,\n class: \"channel-svg-icon\",\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_3 = {\n key: 2,\n class: \"channel-svg-icon\",\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"span\", _mergeProps(_ctx.$attrs, {\n class: ['channel-icon-wrapper', `channel-brand-${$props.type}`]\n }), [$props.type === 'telegram' ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [...(_cache[0] || (_cache[0] = [_createElementVNode(\"path\", {\n d: \"M417.28 795.733333 429.226667 615.253333 756.906667 320C771.413333 306.773333 753.92 300.373333 734.72 311.893333L330.24 567.466667 155.306667 512C117.76 501.333333 117.333333 475.306667 163.84 456.533333L845.226667 193.706667C876.373333 179.626667 906.24 201.386667 894.293333 249.173333L778.24 795.733333C770.133333 834.56 746.666667 843.946667 714.24 826.026667L537.6 695.466667 452.693333 777.813333C442.88 787.626667 434.773333 795.733333 417.28 795.733333Z\"\n }, null, -1)]))])) : $props.type === 'huggingface' ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_2, [...(_cache[1] || (_cache[1] = [_createStaticVNode(\"\", 9)]))])) : $props.type === 'webdav' ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_3, [...(_cache[2] || (_cache[2] = [_createElementVNode(\"path\", {\n d: \"M446.293333 810.666667C384 898.986667 262.4 921.173333 174.506667 859.733333c-87.466667-61.44-107.946667-183.893333-46.506667-273.066666a195.626667 195.626667 0 0 1 152.746667-84.48l2.133333 61.013333c-38.826667 2.986667-76.373333 23.04-100.693333 58.026667-42.666667 61.44-29.44 144.213333 29.013333 185.6 58.88 40.96 141.226667 25.173333 183.893333-35.84 13.226667-19.2 20.906667-40.106667 23.893334-61.44v-43.093334l238.08-1.706666 2.986666-4.693334c22.613333-39.253333 71.68-52.906667 110.08-30.72a81.066667 81.066667 0 0 1 29.013334 110.933334c-22.613333 38.826667-72.106667 52.48-110.506667 30.293333-17.493333-9.813333-29.866667-25.6-35.413333-43.52l-173.653334 0.853333a211.626667 211.626667 0 0 1-33.28 82.773334m310.613334-304.64c107.946667 13.226667 184.746667 110.08 171.52 216.32-13.226667 106.666667-111.36 182.186667-219.306667 168.96a197.504 197.504 0 0 1-146.346667-94.293334l52.906667-30.72a137.386667 137.386667 0 0 0 98.986667 61.866667c74.666667 8.96 140.8-41.813333 149.76-113.066667 8.96-71.253333-43.946667-136.533333-117.76-145.493333-23.04-2.56-45.226667 0.426667-65.28 7.68l-36.266667 18.773333-110.08-203.52h-9.386667a81.322667 81.322667 0 0 1-78.933333-83.2c1.28-44.373333 39.68-78.933333 84.48-77.226666 44.8 2.56 80.213333 38.826667 78.933333 83.2-0.853333 18.773333-8.106667 35.84-19.626666 49.066666l81.066666 149.76c26.453333-8.533333 55.466667-11.52 85.333334-8.106666M352 389.973333c-42.666667-100.266667 2.56-215.04 101.12-256.853333 98.986667-41.813333 213.333333 5.546667 256 105.813333 25.173333 58.453333 20.053333 122.453333-8.533333 173.653334l-52.906667-30.72c17.92-34.56 20.906667-76.8 3.84-116.48-29.013333-68.266667-106.24-101.12-172.373333-73.386667-66.56 28.16-96.426667 106.666667-67.413334 174.933333 11.946667 28.16 32 49.92 56.32 64.426667l16.64 8.96-130.986666 212.906667c1.28 2.133333 2.986667 4.693333 4.266666 8.106666 20.906667 38.826667 6.4 87.893333-32.853333 108.8-38.826667 20.906667-87.893333 5.546667-109.226667-34.56-20.906667-39.68-6.4-88.746667 32.853334-109.653333 16.64-8.96 34.986667-11.093333 52.48-7.253333l98.56-160.853334c-20.053333-18.346667-37.12-41.386667-47.786667-67.84z\"\n }, null, -1)]))])) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 3,\n icon: $options.fontAwesomeIcon\n }, null, 8, [\"icon\"]))], 16);\n}","export default {\n name: 'ChannelIcon',\n inheritAttrs: false,\n props: {\n type: {\n type: String,\n required: true\n }\n },\n computed: {\n fontAwesomeIcon() {\n const icons = {\n cfr2: ['fab', 'cloudflare'],\n s3: ['fab', 'aws'],\n discord: ['fab', 'discord']\n };\n return icons[this.type] || 'server';\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./ChannelIcon.vue?vue&type=template&id=ce6ff2ce&scoped=true\"\nimport script from \"./ChannelIcon.vue?vue&type=script&lang=js\"\nexport * from \"./ChannelIcon.vue?vue&type=script&lang=js\"\n\nimport \"./ChannelIcon.vue?vue&type=style&index=0&id=ce6ff2ce&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-ce6ff2ce\"]])\n\nexport default __exports__"],"names":["_hoisted_1","class","_hoisted_2","_hoisted_3","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","isCollapse","ref","style","sidebarStyle","menuItems","item","key","index","activeIndex","onClick","$event","handleSelect","icon","$t","titleKey","args","toggleCollapse","name","props","type","String","default","Boolean","data","expandedWidth","computed","collapsedWidth","window","innerWidth","this","width","watch","$nextTick","measureWidth","methods","$emit","checkMobile","isMobile","el","$refs","sidebar","prevWidth","prevTransition","transition","wasCollapsed","classList","contains","remove","offsetWidth","natural","scrollWidth","add","mounted","addEventListener","beforeDestroy","removeEventListener","__exports__","_component_DashboardTabs","_component_el_tooltip","_component_el_header","_component_SysConfigTabs","activeTab","disabled","disableTooltip","content","placement","handleLogout","_","isSidebarCollapse","currentComponent","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","inputStart","inputmode","startDateLabel","onChange","handleManualInput","trim","rangeSeparator","inputEnd","endDateLabel","previousMonthLabel","goToPreviousMonth","monthTitle","nextMonthLabel","goToNextMonth","weekdayLabels","weekday","calendarDays","day","isCurrentMonth","isToday","draftStart","draftEnd","isInRange","selectDay","dayOfMonth","DAY_MS","padDatePart","value","padStart","formatDateKey","date","getFullYear","getMonth","getDate","parseDateKey","match","year","Number","month","Date","setHours","shiftMonth","amount","modelValue","Array","emits","today","displayYear","displayMonth","awaitingEnd","monthStart","start","getDay","todayKey","from","length","getTime","immediate","handler","syncFromModel","startDate","endDate","displayDate","range","commitRange","startKey","endKey","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_42","_hoisted_43","_hoisted_44","_hoisted_45","_hoisted_46","_hoisted_47","_hoisted_48","_hoisted_49","_hoisted_50","_hoisted_51","_hoisted_52","_hoisted_53","_hoisted_54","_hoisted_55","_hoisted_56","_hoisted_57","_hoisted_58","_hoisted_59","_hoisted_60","_hoisted_61","_hoisted_62","_hoisted_63","_hoisted_64","_hoisted_65","_hoisted_66","_hoisted_67","_hoisted_68","_hoisted_69","_hoisted_70","_hoisted_71","_hoisted_72","_hoisted_73","_hoisted_74","_hoisted_75","_hoisted_76","_hoisted_77","_hoisted_78","_hoisted_79","_hoisted_80","_hoisted_81","_hoisted_82","_hoisted_83","_hoisted_84","_hoisted_85","_hoisted_86","_hoisted_87","_hoisted_88","_hoisted_89","_hoisted_90","_hoisted_91","_hoisted_92","_hoisted_93","_hoisted_94","_hoisted_95","_hoisted_96","_hoisted_97","_component_el_button","_component_el_radio_button","_component_el_radio_group","_component_DateRangeCalendar","_component_el_dialog","_component_Line","_component_Doughnut","_component_el_progress","_component_el_image","_directive_loading","systemHealthState","systemHealthLabel","currentDateLabel","greetingTitle","systemStatusSummary","datetime","currentTime","toISOString","currentTimeLabel","timeZoneLabel","fetchIndexInfo","indexInfo","totalFiles","toLocaleString","formatTime","lastUpdated","getTimeAgo","openReleases","version","circle","openTrendDateDialog","trendGroupBy","size","label","trendDatePickerVisible","title","trendDateDialogWidth","trendDateRange","handleTrendDateRangeChange","hasTrendData","uploadTrendChartData","options","lineChartOptions","Object","keys","channelStats","channelChartData","chartOptions","count","channel","background","getChartColor","getPercentage","typeStats","typeChartData","aggregatedTypeStats","status","getTypeChartColor","isProcessing","phaseDescription","Math","round","processingProgress","percentage","current","total","estimatedTimeRemaining","message","plain","cancelOperation","processingError","suggestion","recoverable","retryOperation","dismissError","loading","rebuilding","rebuildIndex","backing","backupData","accept","handleFileSelect","restoring","selectRestoreFile","newestFile","oldestFile","openFileInNewTab","isImageFile","loadErrors","src","id","fit","onError","handleImageError","isVideoFile","muted","loop","autoplay","metadata","FileName","TimeStamp","v","lim","l","h","max","min","p2b","n2b","b2n","n2p","map$1","A","B","C","D","E","F","a","b","c","d","e","f","hex","h1","h2","eq","isShort","r","g","hexParse","str","ret","len","alpha","hexString","undefined","HUE_RE","hsl2rgbn","s","n","k","hsv2rgbn","hwb2rgbn","w","rgb","i","hueValue","rgb2hsl","calln","isArray","map","hsl2rgb","hwb2rgb","hsv2rgb","hue","hueParse","m","exec","p1","p2","rotate","deg","hslString","x","Z","Y","X","W","V","U","T","S","R","Q","P","O","N","M","L","K","G","H","I","J","names$1","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","Xe","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Yd","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","tan","teO","tEstN","tomato","Qe","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","unpack","unpacked","tkeys","j","ok","nk","replace","parseInt","names","nameParse","transparent","toLowerCase","RGB_RE","rgbParse","rgbString","to","pow","interpolate","rgb1","rgb2","t","modHSL","ratio","tmp","clone","proto","assign","fromObject","input","functionParse","charAt","Color","constructor","_rgb","_valid","valid","obj","mix","color","weight","c1","c2","w2","p","w1","clearer","greyscale","val","opaquer","negate","lighten","darken","saturate","desaturate","noop","uid","isNullOrUndef","prototype","toString","call","slice","isObject","isNumberFinite","isFinite","finiteOrDefault","defaultValue","valueOrDefault","toPercentage","dimension","endsWith","parseFloat","toDimension","callback","fn","thisArg","apply","each","loopable","reverse","_elementsEqual","a0","a1","ilen","v0","v1","datasetIndex","source","target","create","klen","isValidKey","indexOf","_merger","tval","sval","merge","sources","merger","mergeIf","_mergerIf","hasOwnProperty","keyResolvers","o","y","_splitKey","parts","split","part","push","_getKeyResolver","resolveObjectKey","resolver","_capitalize","toUpperCase","defined","isFunction","setsEqual","has","_isClickEvent","PI","TAU","PITAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","sign","almostEquals","epsilon","abs","niceNum","roundedRange","niceRange","floor","fraction","niceFraction","_factorize","result","sqrt","sort","pop","isNonPrimitive","Symbol","toPrimitive","isNumber","isNaN","almostWhole","rounded","_setMinAndMaxByKey","array","property","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","angle","atan2","distance","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","end","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_int16Range","_isBetween","_lookup","table","cmp","mid","hi","lo","_lookupByKey","last","ti","_rlookupByKey","_filterBetween","values","arrayEvents","listenArrayEvents","listener","_chartjs","listeners","defineProperty","configurable","enumerable","forEach","method","base","res","object","unlistenArrayEvents","stub","splice","_arrayUnique","items","set","Set","requestAnimFrame","requestAnimationFrame","throttled","argsToUse","ticking","debounce","delay","timeout","clearTimeout","setTimeout","_toLeftRightCenter","align","_alignStartEnd","_textX","left","right","rtl","check","_getStartAndCountOfVisiblePoints","meta","points","animationsDisabled","pointCount","_sorted","iScale","vScale","_parsed","spanGaps","dataset","axis","minDefined","maxDefined","getUserBounds","getPixelForValue","distanceToDefinedLo","findIndex","point","distanceToDefinedHi","_scaleRangesChanged","xScale","yScale","_scaleRanges","newRanges","xmin","xmax","ymin","ymax","changed","atEdge","elasticIn","sin","elasticOut","effects","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","cos","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","isPatternOrGradient","getHoverColor","numbers","colors","applyAnimationsDefaults","defaults","duration","easing","describe","_fallback","_indexable","_scriptable","properties","active","animation","resize","show","animations","visible","hide","applyLayoutsDefaults","autoPadding","padding","top","bottom","intlCache","Map","getNumberFormat","locale","cacheKey","JSON","stringify","formatter","get","Intl","NumberFormat","formatNumber","num","format","formatters","numeric","tickValue","ticks","chart","notation","delta","maxTick","calculateDelta","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","logarithmic","remain","significand","includes","Ticks","applyScaleDefaults","display","offset","beginAtZero","bounds","clip","grace","grid","lineWidth","drawOnChartArea","drawTicks","tickLength","tickWidth","tickColor","border","dash","dashOffset","text","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkip","autoSkipPadding","labelOffset","minor","major","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","route","startsWith","overrides","descriptors","getScope$1","node","root","scope","Defaults","_descriptors","_appliers","backgroundColor","borderColor","datasets","devicePixelRatio","context","platform","getDevicePixelRatio","elements","events","font","family","lineHeight","hover","hoverBackgroundColor","ctx","hoverBorderColor","hoverColor","indexAxis","interaction","mode","intersect","includeInvisible","maintainAspectRatio","onHover","parsing","plugins","responsive","scale","scales","showLine","drawActiveElementsOnTop","override","targetScope","targetName","scopeObject","targetScopeObject","privateName","defineProperties","writable","local","appliers","toFontString","_measureText","gc","longest","string","textWidth","measureText","_longestText","arrayOfThings","cache","garbageCollect","save","jlen","thing","nestedThing","restore","gcLen","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","clearCanvas","canvas","getContext","resetTransform","clearRect","height","drawPoint","drawPointLegend","xOffset","yOffset","cornerRadius","xOffsetW","yOffsetW","pointStyle","rotation","radius","rad","translate","drawImage","beginPath","ellipse","arc","closePath","moveTo","lineTo","SQRT1_2","rect","fill","borderWidth","stroke","_isPointInArea","area","margin","clipArea","unclipArea","_steppedLineTo","previous","flip","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","setRenderOpts","opts","translation","fillStyle","textAlign","textBaseline","decorateText","line","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","strokeStyle","decorationWidth","drawBackdrop","oldColor","fillRect","renderText","lines","strokeWidth","strokeColor","backdrop","strokeText","maxWidth","fillText","addRoundedRectPath","topLeft","bottomLeft","bottomRight","topRight","LINE_HEIGHT","FONT_STYLE","toLineHeight","matches","numberOrZero","_readValueToProps","objProps","read","prop","toTRBL","toTRBLCorners","toPadding","toFont","fallback","console","warn","resolve","inputs","info","cacheable","_addGrace","minmax","change","keepZero","createContext","parentContext","_createResolver","scopes","prefixes","rootScopes","getTarget","finalRootScopes","_resolve","toStringTag","_cacheable","_scopes","_rootScopes","_getTarget","Proxy","deleteProperty","_keys","_cached","_resolveWithPrefixes","getOwnPropertyDescriptor","Reflect","getPrototypeOf","getKeysFromAllScopes","ownKeys","storage","_storage","_attachContext","proxy","subProxy","descriptorDefaults","_proxy","_context","_subProxy","_stack","setContext","receiver","_resolveWithContext","allKeys","scriptable","indexable","_allKeys","isScriptable","isIndexable","readKey","prefix","needsSubResolver","_resolveScriptable","_resolveArray","getValue","Error","join","delete","createSubResolver","arr","filter","resolveFallback","getScope","parent","addScopes","parentScopes","parentFallback","allScopes","addScopesFromKey","subGetTarget","resolveKeysFromAllScopes","_parseObjectDataRadialScale","_parsing","parsed","parse","EPSILON","getPoint","skip","getValueAxis","splineCurve","firstPoint","middlePoint","afterPoint","next","d01","d12","s01","s12","fa","fb","monotoneAdjust","deltaK","mK","pointsLen","alphaK","betaK","tauK","squaredMagnitude","pointCurrent","pointAfter","monotoneCompute","valueAxis","pointBefore","iPixel","vPixel","splineCurveMonotone","slopeDelta","capControlPoint","pt","capBezierPoints","inArea","inAreaPrev","inAreaNext","_updateBezierControlPoints","controlPoints","cubicInterpolationMode","prev","tension","_isDomSupported","document","_getParentNode","domNode","parentNode","host","parseMaxStyle","styleValue","parentProperty","valueInPixels","getComputedStyle","element","ownerDocument","defaultView","getStyle","getPropertyValue","positions","getPositionedStyle","styles","suffix","pos","useOffsetPos","shadowRoot","getCanvasPosition","touches","offsetX","offsetY","box","getBoundingClientRect","clientX","clientY","getRelativePosition","event","borderBox","boxSizing","paddings","borders","getContainerSize","maxHeight","container","containerStyle","containerBorder","containerPadding","clientWidth","clientHeight","round1","getMaximumSize","bbWidth","bbHeight","aspectRatio","margins","containerSize","maintainHeight","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","setTransform","supportsEventListenerOptions","passiveSupported","passive","readUsedSize","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","getRightToLeftAdapter","rectX","setWidth","xPlus","leftForLtr","itemWidth","getLeftToRightAdapter","_itemWidth","getRtlAdapter","overrideTextDirection","direction","original","getPropertyPriority","setProperty","prevTextDirection","restoreTextDirection","propertyFn","between","compare","normalize","normalizeSegment","getSegment","segment","startBound","endBound","_boundSegment","prevValue","inside","subStart","startIsBefore","endIsBefore","shouldStart","shouldStop","_boundSegments","segments","sub","findStartAndEnd","solidSegments","cur","stop","_computeSegments","segmentOptions","_loop","splitByStyles","completeLoop","_fullLoop","doSplitByStyles","chartContext","_chart","baseStyle","readStyle","_datasetIndex","prevStyle","addStyle","st","dir","p0","p0DataIndex","p1DataIndex","styleChanged","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","replacer","getSizeForArea","chartArea","field","getDatasetArea","getDatasetClipArea","_clip","Animator","_request","_charts","_running","_lastDate","_notify","anims","callbacks","numSteps","initial","currentStep","_refresh","_update","now","remaining","running","draw","_active","_total","tick","_getAnims","charts","complete","progress","listen","cb","reduce","acc","_duration","cancel","animator","interpolators","boolean","factor","c0","number","Animation","cfg","currentValue","_fn","_easing","_start","_target","_prop","_from","_to","_promises","update","elapsed","wait","promises","Promise","rej","resolved","Animations","config","_properties","configure","animationOptions","animatedProps","getOwnPropertyNames","option","_animateOptions","newOptions","resolveTargetOptions","_createAnimations","$shared","awaitAll","$animations","then","anim","all","scaleClip","allowedOverflow","defaultClip","toClip","getSortedDatasetIndices","filterVisible","metasets","_getSortedDatasetMetas","applyStack","stack","dsIndex","singleMode","otherValue","found","convertObjectDataToArray","iAxisKey","vAxisKey","adata","isStacked","stacked","getStackKey","indexScale","valueScale","NEGATIVE_INFINITY","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","positive","getMatchingVisibleMetas","updateStacks","controller","_cachedMeta","_stacks","iAxis","vAxis","itemStacks","_top","_bottom","visualValues","_visualValues","getFirstScaleId","shift","createDatasetContext","createDataContext","dataIndex","raw","clearStacks","isDirectUpdateMode","cloneIfNotShared","cached","shared","createStack","canStack","hidden","_stacked","DatasetController","_cachedDataOpts","getMeta","_type","_data","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","supportsDecimation","$context","_syncList","datasetElementType","dataElementType","initialize","linkScales","addElements","isPluginEnabled","updateIndex","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rid","rAxisID","iid","iAxisID","vid","vAxisID","getScaleForId","rScale","getDatasetMeta","scaleID","_getOtherScale","reset","_destroy","_dataCheck","isExtensible","buildOrUpdateElements","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","getOptionScopes","createResolver","sorted","parseArrayData","parseObjectData","parsePrimitiveData","isNotInOrderComparedToPrev","labels","getLabels","singleScale","xAxisKey","yAxisKey","getParsed","getDataElement","updateRangeFromParsed","parsedValue","NaN","getMinMax","otherScale","otherMin","otherMax","_skip","getAllParsedValues","getMaxOverflow","getLabelAndValue","getLabelForValue","resolveDatasetElementOptions","resolveDataElementOptions","_resolveElementOptions","elementType","sharing","datasetElementScopeKeys","resolveNamedOptions","freeze","_resolveAnimations","datasetAnimationScopeKeys","getSharedOptions","includeOptions","sharedOptions","_animationsDisabled","_getSharedOptions","firstOpts","previouslySharedOptions","updateSharedOptions","updateElement","_setStyle","removeHoverStyle","setHoverStyle","_removeDatasetHoverStyle","_setDatasetHoverStyle","arg1","arg2","numMeta","numData","_insertElements","_removeElements","move","updateElements","removed","_sync","_dataChanges","_onDataPush","arguments","_onDataPop","_onDataShift","_onDataSplice","newCount","_onDataUnshift","getAllScaleValues","$bar","visibleMetas","concat","computeMinSampleSize","curr","_length","updateMinAndPrev","getPixelForTick","computeFitCategoryTraits","ruler","stackCount","thickness","barThickness","categoryPercentage","barPercentage","chunk","pixels","computeFlexCategoryTraits","percent","parseFloatBar","entry","startValue","endValue","barStart","barEnd","_custom","parseValue","parseArrayOrPrimitive","isFloatBar","custom","barSign","actualBase","isHorizontal","borderProps","horizontal","setBorderSkipped","edge","borderSkipped","enableBorderRadius","parseEdge","swap","startEnd","orig","v2","setInflateAmount","inflateAmount","_defineProperty","BarController","super","bars","getBasePixel","_getRuler","vpixels","head","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","center","_getStacks","grouped","currentParsed","iScaleValue","skipNull","find","_getStackCount","_getAxisCount","_getAxis","getFirstScaleIdForIndexAxis","indexScaleId","firstScaleAxisId","_getStackIndex","_startPixel","_endPixel","baseValue","minBarLength","floating","getDataVisibility","startPixel","getPixelForDecimal","endPixel","getValueForPixel","halfGrid","getLineWidthForValue","maxBarThickness","Infinity","axisCount","axisID","axisNumber","stackIndex","rects","_index_","_value_","BubbleController","getRatioAndOffset","circumference","cutout","ratioX","ratioY","startAngle","endAngle","startX","startY","endX","endY","calcMax","calcMin","maxX","maxY","minX","minY","DoughnutController","innerRadius","outerRadius","getter","_getRotation","_getCircumference","_getRotationExtents","isDatasetVisible","arcs","spacing","getMaxBorderWidth","getMaxOffset","maxSize","chartWeight","_getRingWeight","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","calculateTotal","_getRingWeightOffset","_circumference","animateRotate","calculateCircumference","animationOpts","centerX","centerY","animateScale","metaData","borderAlign","hoverBorderWidth","hoverOffset","ringWeightOffset","legend","generateLabels","useBorderRadius","borderRadius","fontColor","lineDash","lineDashOffset","lineJoin","legendItem","toggleDataVisibility","LineController","_dataset","_decimated","animated","maxGapLength","directUpdate","pointsCount","prevParsed","nullData","lastPoint","updateControlPoints","PolarAreaController","bind","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","angleLines","circular","pointLabels","PieController","RadarController","pointPosition","getPointPositionForValue","ScatterController","registry","getElement","abstract","DateAdapterBase","members","init","formats","diff","startOf","endOf","adapters","_date","binarySearch","metaset","lookupMethod","_reversePixels","getRange","evaluateInteractionItems","position","getSortedVisibleDatasetMetas","getDistanceMetricForAxis","useX","useY","deltaX","deltaY","getIntersectItems","useFinalPosition","isPointInArea","evaluationFunc","inRange","getNearestRadialItems","getProps","getNearestCartesianItems","distanceMetric","minDistance","getCenterPoint","pointInArea","getNearestItems","getAxisItems","rangeMethod","intersectsItem","Interaction","modes","nearest","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","wrapBoxes","boxes","layoutBoxes","stackWeight","buildStacks","layouts","wrap","placed","setLayoutDims","params","vBoxMaxWidth","hBoxMaxHeight","layout","fullSize","availableWidth","availableHeight","buildLayoutBoxes","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","getPadding","newWidth","outerWidth","newHeight","outerHeight","widthChanged","heightChanged","same","other","handleMaxPadding","updatePos","getMargins","marginForPositions","fitBoxes","refitBoxes","refit","setBoxDims","placeBoxes","userPadding","addBox","_layers","z","removeBox","layoutItem","minPadding","verticalBoxes","horizontalBoxes","beforeLayout","visibleVerticalBoxCount","BasePlatform","acquireContext","releaseContext","isAttached","updateConfig","BasicPlatform","EXPANDO_KEY","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","initCanvas","renderHeight","getAttribute","renderWidth","displayWidth","displayHeight","eventListenerOptions","addListener","removeListener","fromNativeEvent","native","nodeListContains","nodeList","createAttachObserver","observer","MutationObserver","entries","trigger","addedNodes","removedNodes","observe","childList","subtree","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","listenDevicePixelRatioChanges","unlistenDevicePixelRatioChanges","createResizeObserver","ResizeObserver","contentRect","releaseObserver","disconnect","createProxyAndListen","DomPlatform","removeAttribute","setAttribute","proxies","$proxies","handlers","attach","detach","isConnected","_detectPlatform","OffscreenCanvas","Element","tooltipPosition","hasValue","final","tickOpts","determinedMaxTicks","determineMaxTicks","ticksLimit","maxTicksLimit","majorIndices","enabled","getMajorIndices","numMajorIndices","first","newTicks","skipMajors","calculateSpacing","avgMajorSpacing","_tickSize","maxScale","maxChart","_maxLength","evenMajorSpacing","getEvenSpacing","factors","ceil","majorStart","majorEnd","reverseAlign","offsetFromEdge","getTicksLimit","ticksLength","sample","numItems","increment","getPixelForGridLine","offsetGridLines","validIndex","lineValue","caches","getTickMarkLength","getTitleHeight","createScaleContext","createTickContext","titleAlign","titleArgs","titleX","titleY","positionAxisID","Scale","_margins","paddingTop","paddingBottom","paddingLeft","paddingRight","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_longestTextCache","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","suggestedMin","suggestedMax","metas","getTicks","xLabels","yLabels","getLabelItems","_computeLabelItems","beforeUpdate","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","afterAutoSkip","beforeFit","afterFit","afterUpdate","reversePixels","_alignToPixels","alignToPixels","_callHooks","notifyPlugins","beforeTickToLabelConversion","generateTickLabels","afterTickToLabelConversion","numTicks","maxLabelDiagonal","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","asin","titleOpts","gridOpts","titleHeight","tickPadding","angleRadians","labelHeight","labelWidth","_calculatePadding","_handleMargins","isRotated","labelsBelowTicks","offsetLeft","offsetRight","isFullSize","_computeLabelSizes","widths","heights","tickFont","fontString","nestedLabel","widestLabelSize","highestLabelSize","_resolveTickFontOptions","valueAt","idx","decimal","getDecimalForPixel","getBaseValue","optionTicks","rot","_computeGridLineItems","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","x2","y2","limit","step","optsAtIndex","optsAtIndexBorder","lineColor","tickBorderDash","tickBorderDashOffset","tickAndPadding","hTickAndPadding","lineCount","textOffset","_getXAxisLabelAlignment","_getYAxisLabelAlignment","halfCount","tickTextAlign","labelPadding","_computeLabelArea","drawBackground","drawGrid","drawLine","setLineDash","drawBorder","lastLineWidth","drawLabels","renderTextOptions","drawTitle","tz","gz","bz","_maxDigits","fontSize","TypedRegistry","isForType","isPrototypeOf","register","parentScope","isIChartComponent","registerDefaults","unregister","itemDefaults","defaultRoutes","routeDefaults","routes","propertyParts","sourceName","sourceScope","Registry","controllers","_typedRegistries","_each","addControllers","addPlugins","addScales","getController","_get","getPlugin","getScale","removeControllers","removeElements","removePlugins","removeScales","typedRegistry","arg","reg","_getRegistryForType","_exec","itemReg","component","camelMethod","PluginService","_init","notify","hook","_createDescriptors","descriptor","plugin","cancelable","invalidate","_oldCache","_notifyStateChanges","allPlugins","createDescriptors","previousDescriptors","some","localIds","getOpts","pluginOpts","pluginScopeKeys","getIndexAxis","datasetDefaults","datasetOptions","getAxisFromDefaultScaleID","getDefaultScaleIDFromAxis","idMatchesAxis","axisFromPosition","determineAxis","scaleOptions","getAxisFromDataset","retrieveAxisFromDatasets","boundDs","mergeScaleConfig","chartDefaults","configScales","chartIndexAxis","scaleConf","error","defaultId","defaultScaleOptions","defaultID","initOptions","initData","initConfig","keyCache","keysCached","cachedKeys","generate","addIfFound","Config","_config","_scopeCache","_resolverCache","clearCache","clear","datasetType","additionalOptionScopes","_cachedScopes","mainScope","resetCache","keyLists","chartOptionScopes","subPrefixes","getResolver","needContext","subResolver","resolverCache","hasFunction","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","onComplete","onAnimationProgress","onProgress","getCanvas","getElementById","instances","getChart","moveNumericKeys","intKey","determineLastEvent","lastEvent","inChartArea","isClick","Chart","invalidatePlugins","userConfig","initialCanvas","existingChart","_options","_aspectRatio","_metasets","_lastEvent","_listeners","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","resizeDelay","_initialize","bindEvents","_resizeBeforeDraw","_resize","newSize","newRatio","onResize","ensureScalesHaveIDs","scalesOptions","axisOptions","buildOrUpdateScales","scaleOpts","updated","isRadial","dposition","dtype","scaleType","scaleClass","hasUpdated","_updateMetasets","_destroyDatasetMeta","_removeUnreferencedMetasets","buildOrUpdateControllers","newControllers","order","ControllerClass","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","_minPadding","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","existingEvents","newEvents","unbindEvents","changes","_getUniformDataChanges","datasetCount","makeSet","changeSet","noArea","_idx","_updateDataset","layers","_drawDatasets","_drawDataset","getElementsAtEventForMode","setDatasetVisibility","_updateVisibility","_stop","destroy","toBase64Image","toDataURL","bindUserEvents","bindResponsiveEvents","_add","_remove","detached","updateHoverStyle","getActiveElements","setActiveElements","activeElements","lastActive","pluginId","replay","hoverOptions","deactivated","activated","eventFilter","_handleEvent","_getActiveElements","clipSelf","outerAngleClip","innerAngleClip","clipWidth","clipArc","pixelMargin","angleMargin","toRadiusCorners","parseBorderRadius$1","angleDelta","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","outerStart","outerEnd","innerStart","innerEnd","rThetaToXY","theta","pathArc","innerR","spacingOffset","noSpacingInnerRadius","noSpacingOuterRadius","avNogSpacingRadius","adjustedAngle","beta","angleOffset","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","outerMidAdjustedAngle","pCenter","p4","innerMidAdjustedAngle","p8","outerStartX","outerStartY","outerEndX","outerEndY","drawArc","fullCircles","inner","selfJoin","ArcElement","chartX","chartY","rAdjust","nonZeroBetween","betweenAngles","withinRadius","halfAngle","halfRadius","fix","radiusOffset","setStyle","lineCap","getLineMethod","stepped","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","outside","pathSegment","lineMethod","fastPathSegment","prevX","lastY","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","useFastPath","_getInterpolationMethod","strokePathWithCache","path","_path","Path2D","strokePathDirect","segmentMethod","usePath2D","LineElement","_points","_segments","_pointsUpdated","_interpolate","interpolated","inRange$1","hitRadius","PointElement","mouseX","mouseY","inXRange","inYRange","hoverRadius","getBarBounds","bar","half","skipOrLimit","parseBorderWidth","maxW","maxH","parseBorderRadius","maxR","enableBorder","boundingRects","outer","skipX","skipY","skipBoth","hasRadius","addNormalRectPath","inflateRect","refRect","BarElement","addRectPath","tpoints","_findSegmentEnd","_getBounds","targetSegments","tgt","subBounds","fillSources","fillSource","_getEdge","_pointsFromSegments","boundary","linePoints","_createBoundaryLine","_shouldApplyFill","_resolveTarget","propagate","visited","_decodeFill","parseFillOption","decodeTargetIndex","firstCh","_getTargetPixel","_getTargetValue","fillOption","_buildStackLine","sourcePoints","linesBelow","getLinesBelow","addPointsBelow","below","unshift","sourcePoint","postponed","findPoint","pointValue","firstValue","lastValue","simpleArc","getLineByIndex","computeBoundary","computeCircularBoundary","computeLinearBoundary","_drawfill","lineOpts","above","doFill","fillColor","clipVertical","clipHorizontal","clipY","lineLoop","clipX","notShape","clipBounds","interpolatedLineTo","targetLoop","interpolatedPoint","afterDatasetsUpdate","_args","$filler","beforeDraw","drawTime","beforeDatasetsDraw","beforeDatasetDraw","getBoxSize","labelOpts","boxHeight","boxWidth","usePointStyle","pointStyleWidth","itemHeight","itemsEqual","Legend","_added","legendHitBoxes","_hoveredItem","doughnutMode","legendItems","columnSizes","lineWidths","buildLabels","labelFont","_computeTitleHeight","_fitRows","_fitCols","hitboxes","totalHeight","row","_itemHeight","heightLimit","totalWidth","currentColWidth","currentColHeight","col","calculateItemSize","adjustHitBoxes","rtlHelper","hitbox","_draw","defaultColor","halfFontSize","cursor","drawLegendBox","drawOptions","SQRT2","yBoxTop","xBoxLeft","textDirection","realX","fontLineHeight","calculateLegendItemHeight","titleFont","titlePadding","topPaddingPlusHalfFontSize","_getLegendItemAt","hitBox","lh","handleEvent","isListened","hoveredItem","sameItem","onLeave","calculateItemWidth","calculateItemHeight","legendItemText","plugin_legend","_element","afterEvent","ci","WeakMap","positioners","average","xSet","xAverage","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","formattedValue","getTooltipSize","tooltip","body","footer","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","before","after","beforeBody","afterBody","titleSpacing","titleMarginBottom","bodyLineHeight","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineYAlign","doesNotFitWithAlign","xAlign","caret","caretSize","caretPadding","determineXAlign","yAlign","chartWidth","determineAlignment","alignX","alignY","paddingAndSize","getBackgroundPoint","alignment","getAlignedX","getBeforeAfterBodyLines","createTooltipContext","tooltipItems","overrideCallbacks","defaultCallbacks","beforeTitle","labelCount","afterTitle","beforeLabel","tooltipItem","labelColor","labelTextColor","bodyColor","labelPointStyle","afterLabel","beforeFooter","afterFooter","invokeCallbackWithFallback","Tooltip","opacity","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","getTitle","getBeforeBody","getBody","bodyItems","scoped","getAfterBody","getFooter","_createItems","itemSort","positionAndSize","backgroundPoint","external","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","titleColor","_drawColorBox","colorX","rtlColorX","yOffSet","colorY","multiKeyBackground","outerX","innerX","strokeRect","drawBody","bodyAlign","xLinePadding","fillLineOfText","bodyAlignForCalculation","textColor","drawFooter","footerAlign","footerColor","tooltipSize","quadraticCurveTo","_updateAnimationTarget","animX","animY","_willRender","hasTooltipContent","globalAlpha","positionChanged","_positionChanged","_ignoreReplayEvents","plugin_tooltip","afterInit","afterDraw","addIfString","addedLabels","findOrAddLabel","lastIndexOf","_getLabelForValue","CategoryScale","_startValue","_valueRange","_addedLabels","added","generateTicks$1","generationOptions","dataRange","MIN_SPACING","precision","maxTicks","maxDigits","includeBounds","unit","maxSpaces","rmin","rmax","countDefined","minSpacing","niceMin","niceMax","numSpaces","decimalPlaces","relativeLabelSize","LinearScaleBase","_endValue","handleTickRangeOptions","setMin","setMax","minSign","maxSign","getTickLimit","stepSize","computeTickLimit","numericGeneratorOptions","LinearScale","log10Floor","changeExponent","isMajor","tickVal","steps","rangeExp","rangeStep","startExp","generateTicks","minExp","exp","lastTick","LogarithmicScale","_zero","getTickBackdropHeight","measureLabelSize","determineLimits","fitWithPointLabels","_padding","limits","valueCount","_pointLabels","pointLabelOpts","additionalAngle","centerPointLabels","getPointLabelContext","getPointPosition","drawingArea","plFont","textSize","hLimits","vLimits","updateLimits","setCenterPoint","_pointLabelItems","buildPointLabelItems","createPointLabelItem","itemOpts","outerDistance","extra","pointLabelPosition","yForAngle","getTextAlignForAngle","leftForTextAlign","isNotOverlapped","apexesInArea","drawPointLabelBox","backdropLeft","backdropTop","backdropWidth","backdropHeight","drawPointLabels","pathRadiusLine","drawRadiusLine","gridLineOpts","createPointLabelContext","RadialLinearScale","leftMovement","rightMovement","topMovement","bottomMovement","angleMultiplier","scalingFactor","getValueForDistanceFromCenter","scaledDistance","pointLabel","distanceFromCenter","getBasePosition","getPointLabelPosition","animate","INTERVALS","millisecond","common","second","minute","hour","week","quarter","UNITS","sorter","adapter","_adapter","parser","isoWeekday","_parseOpts","determineUnitForAutoTicks","minUnit","capacity","interval","MAX_SAFE_INTEGER","determineUnitForFormatting","determineMajorUnit","addTick","time","timestamps","timestamp","setMajorTicks","majorUnit","ticksFromTimestamps","TimeScale","_unit","_majorUnit","_offsets","_normalized","displayFormats","normalized","_applyBounds","_getLabelBounds","getLabelTimestamps","timeOpts","_generate","_getLabelCapacity","initOffsets","offsetAfterAutoskip","getDecimalForValue","hasWeekday","getDataTimestamps","tooltipFormat","fmt","_tickFormatFunction","minorFormat","majorFormat","offsets","_getLabelSize","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","prevSource","nextSource","prevTarget","nextTarget","span","TimeSeriesScale","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","CommonProps","required","datasetIdKey","updateMode","A11yProps","ariaLabel","ariaDescribedby","Props","destroyDelay","compatProps","internals","attrs","toRawIfProxy","isProxy","toRaw","cloneProxy","setOptions","nextOptions","setLabels","currentData","nextLabels","setDatasets","nextDatasets","addedDatasets","nextDataset","currentDataset","cloneData","nextData","defineComponent","setup","param","expose","slots","canvasRef","chartRef","shallowRef","renderChart","clonedData","proxiedData","Chart$1","destroyChart","onMounted","onUnmounted","param1","nextOptionsProxy","nextDataProxy","prevOptionsProxy","prevDataProxy","shouldUpdate","prevOptions","prevLabels","prevDatasets","nextTick","deep","role","createTypedChart","registerables","reforwardRef","Doughnut","Line","BatchOperationError","code","ERROR_HANDLERS","details","NETWORK","ABORT","createError","Response","TypeError","BatchProcessor","batchSize","abortController","fetchAllRecords","includeValue","AbortController","allRecords","totalFetched","batchCount","signal","aborted","response","fetchBatch","records","nextCursor","phase","batchError","URLSearchParams","fetchWithAuth","errorDetails","errorData","json","success","totalProcessed","abort","isAborted","IndexRebuilder","chunkSize","maxRetries","retryDelay","sessionId","generateSessionId","fetchConfig","databaseType","rebuild","processor","sortByTimestampDescending","chunks","splitIntoChunks","uploadChunkWithRetry","finalize","timestampA","timestampB","chunkId","lastError","attempt","uploadChunk","sleep","checksum","calculateChecksum","headers","createHttpError","totalChunks","random","encoder","TextEncoder","dataBuffer","encode","crypto","subtle","hashBuffer","digest","hashArray","Uint8Array","imul","ms","BackupGenerator","generateBackup","packageInfo","fileCount","files","settings","record","fetchSettings","downloadBackup","settingsCount","blob","Blob","url","URL","createObjectURL","createElement","href","download","appendChild","click","removeChild","revokeObjectURL","RestoreProcessor","fileEntries","settingEntries","totalSettings","totalItems","restoredFiles","restoredSettings","failedFiles","failedSettings","fileChunks","chunkData","fromEntries","restoredCount","failedCount","settingChunks","backupTimestamp","formatDateInput","getDefaultTrendDateRange","components","DateRangeCalendar","indexInfoLoaded","indexInfoError","clockTimer","newest","oldest","channelColors","typeColors","trendColors","processingPhase","processingStartTime","currentRebuilder","currentBackupGenerator","currentRestoreProcessor","currentLocale","$i18n","indexedFileCount","uploadChannelCount","getHours","channels","DateTimeFormat","hour12","timeZone","resolvedOptions","offsetMinutes","getTimezoneOffset","absoluteMinutes","hours","minutes","stats","aggregatedStats","mappedStatus","currentTrendGroup","trend","uploadTrend","groupBy","series","trendRawLabels","trendRangeCrossesYear","years","extractTrendLabelDates","trendDisplayLabels","formatTrendAxisLabel","totalColor","hexToRgba","pointBackgroundColor","pointBorderColor","pointRadius","pointHoverRadius","getTrendColor","formatTrendSeriesName","toFixed","totalEstimated","seconds","remainingMinutes","phaseMap","setInterval","beforeUnmount","clearInterval","isOther","dates","formatSingleDate","includeYear","monthDay","endLabel","getTrendDateRangeParams","action","timezoneOffset","trendMaxPoints","trendSeriesLimit","trendStartDate","trendEndDate","$message","warning","handleProgress","handleError","errorMessage","settingsMsg","fileInput","file","$confirm","confirmButtonText","cancelButtonText","restoreData","fileContent","parseError","days","isValidPreview","FileType","open","fileName","extension","substring","imageExtensions","videoExtensions","_component_ChannelIcon","isOpen","toggleDropdown","displayLabel","selectOption","$slots","channelType","iconClass","ChannelIcon","placeholder","resolvedPlaceholder","selected","opt","handleClickOutside","$el","_component_CustomSelect","_component_el_tag","_component_el_switch","_component_el_option","_component_el_select","_component_el_form_item","_component_el_input","_component_el_input_number","_component_el_form","_component_el_descriptions_item","_component_el_descriptions","channelFilter","filterOptions","showAddDialog","filteredChannels","getChannelList","hasLoadBalance","getSettings","loadBalance","saveSettings","fixed","onMousemove","handleCardMouseMove","onMouseleave","handleCardMouseLeave","ref_for","maskText","botToken","chatId","publicUrl","bucketName","endpoint","channelId","isNitro","repo","isPrivate","baseUrl","quota","getQuotaPercentage","getQuotaStatus","getQuotaText","openDetailDialog","openEditDialog","deleteChannel","onClosed","resetAddForm","newChannel","confirmAddChannel","model","rules","addRules","onChannelTypeChange","addableChannels","ch","innerHTML","proxyUrl","cdnDomain","region","accessKeyId","secretAccessKey","pathStyle","limitGB","threshold","token","username","password","headersText","autosize","minRows","createDirectory","showDetailDialog","currentChannel","resetDetailData","openEditFromDetail","column","getChannelTypeLabel","currentChannelType","readonly","formatHeaders","link","refreshQuota","quotaLoading","isQuotaExceeded","getQuotaStatusText","showEditDialog","editChannel","resetEditData","confirmEditChannel","editRules","onQuotaEnabledChange","CustomSelect","telegramSettings","cfr2Settings","s3Settings","discordSettings","huggingfaceSettings","webdavSettings","currentChannelIndex","quotaStats","pattern","card","currentTarget","refKey","glowEl","telegram","cfr2","s3","discord","huggingface","webdav","showLength","headersToText","parseHeadersText","addForm","validate","reservedNames","isDuplicate","newChannelData","savePath","editForm","currentIndex","originalName","editedChannel","catch","getResponse","getData","loadQuotaStats","getChannelUsedGB","usedMB","usedGB","async","recalculateQuota","finally","handleClick","dirty","spin","visibilityTimer","_component_el_checkbox","_component_el_table_column","_component_el_table","_component_FloatingSaveButton","_component_el_checkbox_group","authSettings","user","saving","userPassRules","authCode","onInput","handleUserPassInput","autocomplete","_hasPassword","clearUserPassword","handleClearUserPassword","showUserPassConfirm","confirmNewUserPassword","admin","adminPassRules","adminUsername","clearAdminPassword","adminPassword","handleAdminPassInput","handleClearAdminPassword","showAdminPassConfirm","confirmNewAdminPassword","showCreateTokenDialog","apiTokens","permissions","perm","getPermissionText","formatDate","createdAt","getTokenStatus","expiresAt","expiresText","editToken","deleteToken","tokenLoading","uploadSettings","moderate","moderateContentApiKey","nsfwApiPath","ipQuery","customApi","removeIpQueryParam","addIpQueryParam","responseFields","moveIpQueryResponseField","removeIpQueryResponseField","addIpQueryResponseField","accessSettings","allowedDomains","accessRules","whiteListMode","imageTransformEnabled","imageTransformAllowedSizes","sessionSecure","userSessionMaxAge","adminSessionMaxAge","hasUnsavedChanges","dialogWidth","createToken","newToken","tokenRules","neverExpire","onCreateNeverExpireChange","expirationValue","expirationUnit","timeUnitOptions","labelKey","autoDelete","showEditTokenDialog","updateToken","editingToken","editTokenRules","onEditNeverExpireChange","showTokenResultDialog","createdToken","append","copyToken","SIMPLE_UNIT_MS","computeExpiresAt","baseTime","setUTCMonth","getUTCMonth","setUTCFullYear","getUTCFullYear","formatExpiresTime","isoString","getMinutes","getSeconds","expiresDate","formattedTime","settingsSnapshot","_key","savedSettingsSnapshot","editableSettings","markSettingsSaved","mixins","unsavedSettings","FloatingSaveButton","oriUserPassword","oriAdminPassword","owner","auth","upload","access","validator","rule","urlReservedChars","hasReservedChar","char","validateSessionMaxAge","isInteger","validateImageTransformAllowedSizes","sizes","every","normalizeIpQuerySettings","fields","targetIndex","checked","permission","permissionMap","dateString","loadApiTokens","tokens","tokenForm","hasExpiration","editTokenForm","tokenId","navigator","clipboard","writeText","validationPromises","userPassForm","adminPassForm","accessForm","imageTransformForm","results","isValid","_clear","adminPasswordChanged","msg","$store","commit","$router","groupedSettings","categoryGroup","categoryName","setting","announcementManualHeight","localized","localizedOption","currentUploadChannel","currentChannelList","clearable","maxRows","onMousedown","handleAnnouncementResizeStart","refreshAnnouncement","announcementResizeMouseUpHandler","availableChannels","isEn","category","category_en","channelSetting","newVal","oldVal","channelNameSetting","newChannelList","label_en","textarea","closest","resizeHandleSize","isResizeHandle","formItem","startHeight","offsetHeight","resizedHeight","manualHeight","once","submitted","fetchAvailableChannels","axios","telemetry","cloudflareApiToken","CF_ZONE_ID","CF_EMAIL","CF_API_KEY","randomImageAPI","allowedDir","publicBrowse","webDAV","uploadChannel","webdavChannelList","channelName","_component_el_alert","execution","providerTimeoutMs","maxBatchSize","concurrency","providers","testing","openProvider","provider","keyPreview","removeProvider","models","openModel","isModelAvailable","vision","providerName","providerId","testModel","removeModel","prompt","rows","maxlength","defaultPrompt","tagging","modelId","visionModels","language","maxTags","vocabulary","providerDialogVisible","modelDialogVisible","loadError","closable","editingProvider","providerDraft","confirmProvider","providerRules","apiKey","credential","configured","canStoreCredentials","clearApiKey","editingModel","modelDraft","confirmModel","modelRules","structuredOutput","maxOutputTokens","PROMPT_ID","newId","globalThis","randomUUID","payload","capabilities","availableVisionModels","requiredRule","_rule","protocol","search","hash","syncTaggingModel","setConfig","errorText","$te","tagPrompt","promptOverrides","template","preferredTags","tag","whitespace","hadSelectedModel","maskedKey","providerForm","modelForm","elapsedMs","backgroundManager","newHash","scrollTo","newIndex","DashboardTabs","SysConfigTabs","SysCogStatus","SysCogUpload","SysCogSecurity","SysCogPage","SysCogOthers","SysCogAI","$route","fetch","credentials","authType","setDefaultHash","defaultHash","location","initializeBackground","MAX_PREVIEW_BYTES","MAX_ORIGINAL_BYTES","checkAbort","DOMException","aiErrorText","hasTranslation","errorResult","apiJSON","makeImagePreview","FileSizeBytes","encodeURIComponent","reader","getReader","done","byteLength","releaseLock","image","objectUrl","createImageBitmap","Image","reject","onload","onerror","naturalWidth","naturalHeight","quality","preview","toBlob","close","generateTagSuggestions","onResult","prepare","prepared","fileId","form","FormData","tags","test","sourceIdentity","applyTagSuggestions","batch","saved","_typeof","iterator","toPropertyKey","viewBox","xmlns","$attrs","fontAwesomeIcon","inheritAttrs","icons"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/126.844eba4a.js.map.gz b/frontend-dist/js/126.844eba4a.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..293f2d757fe0e39c260c51fd4f5695a18d577035 GIT binary patch literal 387438 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

3UG~md zO^GwZO;>J1*{B%njET23Z(pNvGG_MTL+!kCd_ULx2!0VZsX(tA>udcuFH~3VUgt40 z1w)2LIWM{usYf&dz!JNUHM=~$bN3E&Q%tO&DZ{#fdz*ed<*q9wnTqli+JxxZTHD{X zPY>2BS+6xKnzNz_Lv(#aT@Fn*cTHIt-%4fhho-q4T_#kjHuGV*gTejb>1ws% zu4%90_jMb*kAn33gU(De@V0z_>7Z}Afd(F^fx2nHoQo9|k7H+WsbT6$Jmp8CN!AUx zu>ZQ~>5rvZ5ImZShkRZ;owb)FGCTfRmG;#J1qGm8Vf%kjak!dSA@F!t1=V{gK3OCn@d4(re z4Mz2$D7E$S{s_V5;Q_4cesA6jo;iLpk^2gyEtQTW^T0B^cn5Ty~%a_Z~q0gi=7Z;fG2ka;qe#$R4cZblMR(oKM5>Djk{Q))CTB1oyhEwFPLv zQWQ>~ISfS-$@E2Bvju^Xz?$#17sRg8M~APm)|_L{why0Zz>o2&K9qjQvev+7vkYC! z5|)&Zmu{X|ejV`rshg`N=UnrFRV%W2Yj8&jXzyY7DS{532GfJ00}mT2@N5a%HF#+p zz7vP;jz^}QiBA08;=g_6<=hQGIio>JGG_9pA4v5VkLlKlL&B{fU#9B(q0^6RtzNBlh!;TIPxa$lC@^8DjfAy7i4!e+tqTI2v?Z zvAH3g&KQD{6C^hi$fsYxAB7?$^;Dg0E^2j8gz~QGm#M1HHVSk?Nq@5XR;-YQ_du3s z&aTU>{@jVoc5JJaK17I*iGdw)4vF!)3|m@Jor6GPRE!y~ez3wQ(B^H8opH@}uZ7(~ z13C?OS1^a7CbF_I<_epVbyezU`}qQoZiz=hYn3+^=bmxAW(z=FH6Ex?&5#m#7Y*re|+P04Uah$)?$G)gwE?jWC{T93NdT{f)1rygj(SY;9rbafsn%& zu{V~8&SLVA%%PHPd4NjpC_SvMfKA_xLqkyjB3%~CDL!4$cUTHE#q@{df!-2#C^ICz z0$8Vc!oGGz;7qNo!!H?%;m)>UL2PWAzB<5?j-L@?iXv98i)LiZ#&3jmb-HkjL{#b0 zoKMbfAThRK@#V@dlAwBP+N@PIhSJ3d#}MVLGjHQL#^HFwyeNH1H0jPYA{y6YPe&$Q zyw6?LQ=5g2obY^&whG_VmPiWWv-6A<19DqyRA2^a0Py_&QReI?+u#*L_wBg_|NGEG z=FRE9@%H7jus1Bk1_HqfgAfYR$I1j@M|uDUShW3SKP-pJKkN?m15p8A@Tgje9LGV zTsHHNvfkq$0z2@U%gWXJU1rW#_1B4IEiw{cM=%C22u&qC0+vGanGNp9$*xUdC>WxXQt#i&@BUY$LH3Tk z;4^U+kU-`X$oMnrNS#6+!QZd5fC4y*cixF`Uvqky%+i-|fe|OCv*%ep_?4B&Q#j9a z(UKdr z`X z&JzxMd&}!{+lg)VA#fR=3nI>O`135hAKV`!mjf!&Tvx@tLmZS$Qu_iSy|Ie+CCHJH#NMSmbA*?ENC2pJmAwb^0_=Z@A*6CNm z>zciOme0mi(R~^U9@?rX<2QYKUrS?~BCM@A3cMJO)R!A3=a(7eL~rw{*sZO3TJ+L2 z^L;2{qGnEP%JXgU-P+*@>8@FpuOjw&Y@qXP**rslXDbmzSCKE67g)|^Wi+=%$6z?~ zO%uJV6Sw>XltUiTPFYH(WF9u~?|0JjeNYm+CGvzEmhf?DeOt&9mqZvqX3S&BH!+3H zv=5!BB+W`rbnQ-^xqMwSBv-h4D2prJICXXF zTXm!=F|s1dN;}g#yR3NPsbkebi8@rRhTrXmXWYNOZ?!7;!FMgIg1P>#f(cj9t6LQ? zp!UpBv%o@QYr%pT&|AT(Y*x@D7=y0Uqv=+?c|?e2Um@;qx|JFEZ-R?qL$kxUZe424NgkofZh#m z!C7;uj};7ehCNvbk}#C+E&36Y^4#Z~C911njmS=mr?3gH8H2a9(l>Rztrfu2EbyLZ>;!RHgz_;Q^DFIb)I$h> z4bGEY;w$@Y&FPNwDmciC=xs=oZT~iL!t`33q$%GzoyoKPD{^a{Ye_h6dV5j*Yv*eH5dK6p z*2ON{`-G5dLyfq#EmVAs2;N6O1D8eIph9S+#x-yvZxC{N5A5UjB(5(b9fQuzoU-_RmDtqZg~6k5 ze&u+4(l^NaKjtaN0yVn56JLJ>Lkm{-HwOogaCVsm;v%-m+bXoBywk_n zk|9#&=b#*roY1b`!KxCn=YF;V-KRpk8AhoZTRs3fjx&&V#vC7UT)~k(BJVN(7a|A> z5DM&aTiV=4ZrVYVLTpFRY{yxJ`S{vAij~-n!o1V}?qS1$lcu$k6G^OU;R^&hU}q^g z^w^W)ox?9`wFD!r^7jDoBN30MO5&@!j~@!mO#l~7Fmwc!ByyVOLi&CGUB&dzx?}m% z;|Te}`98wxjhroHt#7-7_(KoV;&6}_X95H&y$71W0JM$sBP0)y9*l132%4gfkfg?) z2p6I=m(Mdul?4$3&>nECLi|->eGrBKAsb?SJ|o$SgZ)^1b!HA8j3rBZKdRiMj8r7Z z((*Rc2)8j-TbtD$xxBn5fsq>l@YC4=X(k6CffhUq_46?Do2Eib05L(466EFT@uFb6 z!ET^qea{}VCiz-cmOjB~+LTjg5xc*HXyuDhV|ps`Fi+z(z={oo2lQto0CW8{_sAtR zxenL?Sy%H@34`FW)Uptdl##40fy}L-F2%IICe@3(*BcSZ!@;JQtOAbCp;aK~NP!J? zi=o5?>yg7E7C=;C<|%0!seJT6FC7`y4&K0Nxx2)d-54RRV1Knmb?k}ErZLY6!^1@o zJEUeSAh(;qw1ut;i%@PV$=y?_a?JQ1M6j6&J)$E{}iNx?B&T`sLk(`2pdM*NrdaK2i)8_{@Xr6Ow@t~4w9(O&V} z+<(~Yodh^d60$E2$lWQT$_)4)h(F&jvV9Nk7(K9o40SwqN7uH6zmVGI&jy3QH8MY` z4KI$)h!5|fE2qleb_!;V(wRc#-|vhJl;TObyYDtI1svtS9wN__UpYfrB7fRLwDW{_ z-TK?@KEB6pH_MX2`*kW?q})sFh3#vE5G&zIS_Uc1V|gxzb*tV%TiL=*BDh>#3ex)Y z9qp2ncR?CGJB`@4zx~}7@r(gO)@go6&sLuM@2L2v4qQJDFDZnjDsaF(KW{DxfioYk zX8sS>eEkY&UM^Ai|NABSede>8|7tzI$$Yl0z5hG;{|hHSjJJSp|6juY-%0ooS1m6G zxvqXYt6TjivwD4U2KculP(v7R;hV|%CiB@4uFjP_XWr#CbDabIQ(9Ai5Lhn6J&0qzU>x&agiB!#2Z+8O>NY^M!?CI})vcxvO%o z5KrKrVKtIV)KhM3S0Ko|Lak|_iXae@hmcY&7V#6rGn=y68+mYU4o_o;B;lh+gat zB}a7LP;&5j1Eb53cq z2%*FJk)du_$?Q$s;!V>Dkql?40%m!{Hsq~wAIa-DQzx(zEDe}s(plG3Am z1`Fdu={8Jf{0S@3K5CNEXMtNZ7rb-ZbKrp;Cyp&kyak~&&YZKs>b2xE6#* z9gD)dd(YM>&0KiD6@hgQs`66;;{XGaxijoQ)B2i7b#HcLX(5rf1Bt>~;!L5(g6XLw zc8ZBapLG9v4VmQIyWRI;9KRdlUN~KqD;X?2w2*H_FJ2P8b%x%RQ+doXvc!`@D)Vk;ZnNt$&TTzy5f|D@q+2lKiiW zIb~5SW=E)QbkB9quP#uLfk*i2vPM3_-moQJ0ELQyM{lp6MChvVNaJ zT78tzHlqZ=O*jaqnt8yzU~wdlccF#TMl?J_4>k0Qth;WJ3CT&KWH z0_MOve{xeKt|kqUM6bkfS^*(I)YQ_uav{g+J5^tB%FroQtmCB4%i+Es*B2T%5qtzg zv5;Y%k1jiCRkc14_7=!uj|Y6MAK1LM-L}@8+K7_8wZmQ^THqDo;4~UlR$7-jBI%I3KbQ}=)I{vqR1C0YyCr! zE=>hg0R1_JiQ_2Bdkc|J6L;sD5ApgDQL$PX7-QCHYkGo=Z80hmqGSMjpDc(l05Ev&0`%A=Zrv*in*O;|&IDb^!$NopwI>AW<|7ns<`;lK z`*P%pBY;;na=IjIFVo|fagHrEf=f;Y6JF6N-2bjmcNMmmoB#Tz3Q8|(fj;6vWPTxx#%nZj%Wo#`8ojVhmp%@}t#k7WW=}f+ znJ{B~aMjzZ1(csnnV@Mk>w-wZqKC!6^;`2Y46#+WImWi#j z+G)0`t3UEvtiTvxo!eC8TjD-OzOVpY;-?0f%p7OakH%J55ac=tN*IuD23zn7%U2Uv zuLzDZpEAMc7_u#fE^t-26zI-_SREB*9`vaypvP?0^<*Mzz_z1(2S}mb7V&t-1`1P{ z$V~>x`;22ny1~n$qeNjcfsx(*!w%jzbxIhmi--erPW_OGcflYn5^M<0gA?49za|XI zHWVGVNkwjr*LZ-ht`!7@(#Z?{m=QbSFYq%dc)^FfN_|hbS9TW%pTBd?tON#dM{bSL z;u^!gOC@I&cW>zsTYcAyk=qkrRN`u(>c)GL7*#Y50 zAgrawGt6Xnp0=aQq;RcH2KI33h)1oE=oiE)I&Xrj!bg4#^}~c*+jP#E;%BPQ59l<6 z1}XM%3DP)&2jp|>E{T&(&gM#*$DUDnXONZ16+>KHmmZ-5BtRAX0!X6Hfy6j2j7EHc z8EuVVIS3f+@DXN};+$~G($EM+f8vPig2u*dZQ!1?m1sJ34gkb<15ovEU{_=6EyK>b zG=+-4JZ1JLtvRMaFUI$1jbJ!1VxtM2cKU+3$8w^HCh)-_te*Jocd96afagw1Asx@!c*l+Q2j%d`%|}$Mq}#yr)&g0;+Y$ zrs%hVT6vq8fV(cd7O-(Ub9Qgh!^-B>5V`-v*j!5;^M`~67Mmh2V~^Ut;8NFOfZ~Ib zt-%0eUXqxar75uC+0xF>$r+W1kWe`}x1fA_Re3lX>V=(i5ilYD4zG=}^IhaVx1c!! zm_$tw%aK-=UB7kZ$%I<%DDMSHl+hmZJ|1;S#CLChu) zE_+>n9nI!ucR4Y@K^U=ta|^=z!kFeK*z3fS+VBX8b2T=hEj{3kc9d-oPiGUvLcAYS z4CYvLPT1)6jO5PZUoH(?+vwnOWBmD@Gp!3JL1*-Fov>>zKiW<=rFY!V(>ffPZnT~Y z68nrQ@uScWZglGT>~6@Ry^tHOSg92b7Q$7ftm{Lgu> zH`u2gLW(U{cgL6B7?$K?4B)Ph%cVnSZ~{aklwfiC(bPvPzJ~yWW5Da@0}dJf@mgTm zfgVB+uN(-A2XGL{v52gjugA_;T@UtIQ&{$SalCYRxdvn39E$$dnJ^dxY`Z^-fZQz6 zOV?l11Mt38hRtQ^jo**v*9VKYei;m9dMg3rNCQZ?u8vL1*j#{#xMD#V8o>@K9W}|8 zvAjkT87Zy^0Uhtc%zgYJ28ON*)aaAsHqywKGyb$%NlQ#L_+3`mf5T*HeSH|;QHgf0 z`E^oPD=pIzMVhb3wL`ev(+D)0K&>eM{LLC=*|`|yMuxIv0F^M0AUYGcN1%$Gw%`WV zp9rYVUH^>ALLN)G6E^&KSzz+i+c3ef93WTeZZYEBCmYf4qhB4ozbU?Fg<0?AhgoRq z=>az@@CKQ0>`>JvQca0q)pZ-oO~F^=t=_fvWdXL@ca8G^EsP$m5KU{S@9yIb0;hX+ z?$!?g++Zo2ei{Y5MHqMbxgK$Z{t$jzhejOxs6PoLAOgeu)BzdSfc5dH5rgr!rjSO> z_#ec?S-bOkV#m#bxIi#QfO4dTe8F|@Olh)XtHvAd^Dp+B$NQ~%w%=~iXpWDy=8wCJ z$Y5rNQNXQwb(bx~R(3jYtl|NRGw@bGC+JTbO!~WfWFLz>gV^kyF@P?XfXM|!vBchh zp?&VjEIFZezlkGo$Rb_6bW;Z>v2R0D0SEN_gRL4w_+)hjIo0=@RL+Qt<v0Vvj~` z-E$G(&2xmK6LRLBzuTVy_9t;xwB2rp(b8HwtQ~DIwqs9jFp+@n`62#}Lqy@pkivD4 z>BO@tM$5i(#m|zGG(=EuEa2{BIt+!u(9uZfL)mi6(F@oa8R)q^#LMe^@wXmZX=S~b zZ(v`1MvT^vfa_VZ;ri=}YwEENuYNuNohZkQO%JMZV1B`4i(kNn$^kbc_@5rOA8q4Yjl%&|Kvu;ks!v}J z5`X?UkPqx#J>X=`w!&(xPx7WGbPFQEHQrY<3F3bH0i?nu&6PU^oOy;>G~MP6sueaU zJm#G4(KSBZRbv+dohX$1JHILozm%(1#`Lj244t_W6nZUp7rXc1{&YIn3BfBUw&}^URoAvb(|&ucKSmLom4XUWnY!=xNX)HIo3G zq)^#g`kT7=;rp^{-nImnddf`Ln-;K`IuhwXLdjsqyYtF9>8E7U)0lMGA!;I; zr^Cgpzy8%8aL4>YD#2-b?%V;HZjQ(Qms7$S_L8j#``fZ)eL_W?J2-#g;xX#yV_{;1 zBOtN5Sur*ir>Zef^JdT~cW&*u3U49hD?V>I6@dZGlMs~+)}%- z9Bi)TVTk)$!huUT;NI?63}67Pb-CA7XT_2LKr{*^%n%MwE|sN-XG%*xzDs(kSJJ}i)kxjA z`zo^rYb&hKA5-|6w2*0`&)F(J&#W95R5H6$9#2+fr{`1$^GqaV% zhbco%diM&uO+bpU=-|aBWj*H^VNj)qHEmySAq$eh3YZ0Hu#m2@mY4cB4IxTKH;Y`d z(BPU-y{~sO!8shK&*K|;k$#1UcE#g=foKPUt^iTU`)llvE-wp_8Q8ON#kx9WpO>*c z?(ol4c1K1WjC0fYrOM8xx*-BcL{#l&6T?GsRY!5vmEsajTA%Y!D|BJ~8zTCW+b<0= znZ1*=W$FMzBm8pty$k94$&KGse7$1&!1#4`2*!b2qIL6&TXA&d=W{RXSZXF0aItQ6 zGIA`)R|JlaL(_law8V5t6hvH%2PbwM%nc>1QgqtnM>uWRZo_58Kt(OZHShq&p#xF? zuM!q;jGK7T2+=<05`vs@H_{i^K3fSz7rtC9;&77Fb~ZxN)TA$n24}iagmR&O;QpAv zw>*pjOWiv8I_^70Yl65O7OVt81wrpVD^M+2v0EsLK2V_Nc{m88_!vdF#W7TkyR;eF zVkA0!ec05}crwpMA`>W|H4gXnL+rja8Q9zxGc2s^+DD>~5Duo5g21Z)Nj1PI-Q6SxfhbnS$?JvV z@p!M0vE5&fh-QpWIYN$pFR*Aqoetvf3R^W+oY;I@2~WLlBVtOm$hD!(6VvU%Qrn)Y zc);N5TsXJ2828?X8In=9m}sU|QIqhQ_I#mZ8Dq&%HlbV5OAW*HaE4-gNQoh9XbFZD z2gcE_I~+}|<;jUK)t?~6^zI5W+zy=> zr&8)a>%&C)(EJB|7>(?**ZSZwI9y$9E0O)9EOeiGH6HOE$Fh&6`eod=Bh{S*A!jTy zEE88R!sp1qseX@#WM9zYvAsgUw2y%E5NFo59Xw>5h_kGVamQTW;p+#Wu+){BO-+0c z-eu&dpr-t(Gei`w{$U`&V3Ce?H#{T?6)S)fNUZNN@ozh5k-v4m@ClLAq5@($Bem^4C>xvr%z4DJvC3Ym88nilzus#qo zmqw!VW=M8qKj~cBxjGeQbo#7Bog(vCVu_5LhQ~fAZNUG&WhJg2iN)q%MWCmD!NT_W z^wcNkwslE{TF6j5w?E(~G0`=^Zhu31?$4x0Pllt6mee84DBr6Qn4>qYA4mBg(4uc> zQ8+FM6I+j8=KWzCZ0`m>0!@ja#^l4SOSJ&h$~zum2UyU{HeQhQ7}t24^&vTB=;x0W zYAZg9C&*)*gGC)5K;th1!i0^HvA7gCrc&ZRboGRmzc{%!hGFii9R)VcL2mb-X_;_7 zD~72QGlfM~0!0*sbbwq5ni>8z&CDHnwalF51f1dqirn73ZsPdplb-MbeXJ9CJOL&$ z#32+RB)8T-klatyMmpYqPH0|CXsSVEt73R|i3J%&vIH!?SxzAyCPVL7`D)qcBe<2% zm01Rq#8dWOD3$22E?9N6>8IYieXax;kgl<|)Ey7yw6P9i3Cp6wyT^+(6QJp&?E~}b zDeA+vxw>?&WUVw49|>q=s8<>L3Jh@ra{NU%4L??MXoWblBs@*odS`yMttbF5LvUe; zzdHm^DroQ**zhd1Mt*+`jPwBDTh`$@%FE$7{sqdPgc7Wail4;9ToA9|=|(O>=2+%K zggP{bLK)soh%tehav)EsDZ$`>)vV2P)rd+Lv{<9}nGHoGAHG7wEQKNQVoPT|nvy7hAghF4X1L^DIZ3}-UlEb}%r9`yn6RhH zN|1I?ev~YaufgjTpTiTW*WGR9_KCZ(L^tkG%_Lb3z6Q@fcO!-JgJgMpMXZKv-SEm* zw4FQyv%Ie%t{IDM(F_J#s(^^1YOu8AAH`|H&JGl`a5gli)|kk+=I=|QjT`Xj)K4k=~dsR*h3;y4rU1wtk#g@m*fElhzAAv4)txC z+a)sL<)DXJY=m1!oa}ykEb2tUxFswxVC9*!DV)Hrk|Nb?n-c$to}RdTz9hu^aKoyB z5+vTgM*I^JP#Xa4!;)zESvXT>Dsr&(*z}7mA9EGKI42vBE!1eO<(NT-=gwkmERGrd zD^IT)H%C}+B1LN9l!aCf&zC!A+5wL+>%i0|LY#adPw!`e?fPUJ`$rcvLcyF_$FY*v zOI@V=Mf9mhrja4wsNJiVYfwrKlEr7l{7It!8KB-8A6+|&{^w{F& zm$?fsH2G81h&n53L}UzD@6sLT1O@(peR_viachncEWMGuu%yF)LA}F|fHeAGucjPH z2EO_-iq>)k;m|@LK6y=o}ko%P+ox z9}>q{B9=fn&|_hPK55*tV3)*yin|4oXiq`kM|jXLs+Fr)uCil6V_h(H1kz>;kQN02 z(3=#*NLeD2cO_CeDh>-Xn1<(PI)24Y3yxUVhDzyK!HMG4gG_p-nLu*0E%-2uoxdvg zUsK0~4R!f0@tZL$G|WpoOH}FRJM6G&=HPG(R&+1WaR=5!XpPG!jt1E}iTOmEeQuXd z?p81>#JYS2AgC-vEps;R&l)ExIW_P8U-rJMIgw>+_6IQ$co+Ant7uvXA%qY@=uH;y zJ-_}&t<37KMo2TW&pDsDareX40M)L#%rdz$*(i%fD=Gd-tHKkrMJRO**4!T>q3oQTwWNn=7Zjd`%r1vKu=&VQ99p+j_>r&B%LS5(>O zh0kv0;5AYsZJ6zM2z_DrjbVe#kS@qboU)0U>cxksL1;AT4AFAclgWqPXUmPO(n(6h zHw@x0&7mlvVpQgIq^z(miK%PDv|?<&@&*Z*J|3+-K#aFF7!(K$DM@{7uoan+6Vb=spO!QUqGWnlsDJNw&_`Ji)XqQm+B2OmL2)!#)FOs?}|W z8v7j-KAjBY9fm?y?lPlxxY`Gv#jJHTl!nU!ur!O5QG#ok)B*B7kCR99ajeHuNAYxA zkbhG&LEu#%;kOqNPS^uzBA8JPykWgyS_FPHJCW~i&M^j_WO9yF4|`adn^u9knY_IN z2jP|*E(T%SggAX{^QZF`U4w8~@lE#0TrlY44R5#HGk1LD>#YUz;hmQ&tPE_E0RhDW z?c5!X%VP*+FuzPEHx0ZD-Pv8rpnpSo-N)`mZWmDxLmIA&;B)RF+h*GVrN9aUGyWfw zl?5Nbj+LQNP1c{qJ7)kGRq$Wh>n$9H^3ztMGAJPsGjA$s3KVVi^3T{UhZ98&B(wC6 zWWt7I3j*z)aPkzP=|D7~beWXFUGKFe{tQTEUO?jUeIZu4w`_go{ub6~;=aEuS@5em zBYn2)bj(7RLRZ-iPNK@aVZJtxxAU<*fjN8i2#CQD8-?v{dr)GB0=+!7j6s8dgEoH2 z+IH{mG-@qd+@Jyr3c#9E-0H7ujx_d>1m6QRxlsANy9l$SW2Kqp`hLZ2n-w>=`+mvJ zYD5|S_2tauHvEmwa-E73Cd<-9*5m}woD|ryUT8aMHe2=Om>ejo-^x6wguibybm<%= zTnnjaOZ)cXDU6Ti3gqV2N1Ht$(>%l`1r+|VZ@9(tN0#jyRG~Eun#1&UAIZrfS!y`YrJsD55PwexiUs2Yh1~Z92Vve05$qLBx!v&=5OuTr!Kky zidT4)Xq2-!Auw3{rl+feHLRkP)mcH2jtR15ZXx=NRn4%z&P5L@YH<`s4#}c=aw|pIJEMW$QWS#XMj{8R31t< zaN;0iRwG#qewTgNW~WJ`4WDyXb&p!!TXlIh2?XXFhJX?f0e)ZQT>%jHHvOl6%U$*y zmbJMeTN5N;8}99|?xXwG<&X|d3`l#FJm&XD%{0^p(eS&DU<57HMVS+ZwaLe+?PITu zsjy`yVtSy1&OX^L0X+av#lD)OL@4x0C7RKJGah)2`{RMgHwAp4tvztEVRXM38&J zYG8WKXu?Ws4LrNIh5t*_`W)k~37)fLeDbU4$~cze ze36VsxDu)gdB@{OOT!DD=GkJx%bg=L$$!1v9cRb?8y_~~K5RCx>_za9%)|he_?AT~ z^KFj5cEp^J8B73j-I!WwCz#}D_qxh z!BmMq&e@GrLp}9c7*X~Y{x7YQ6))0r?vfJ+Nadj{_pg{&GGfPw?X}AyvZNmpV|<1q ztRKd7k4FM84esS2+i1mu*8GgLM>^w)xC*#T}L-Qg@PWekoIaoL+A=Jd9ZQX2Ac^^;yg8s z=Xk>2jOg7toZ8+=q7z9O?0Wocy?@WQhz0l6>I1S?DWVMsZ(AYej65NdcohNfYGU_e z{VI$w_2M(Y>SE>xh$q#O)YdZAp^52My@eEsw$Ysrg*O!cNJmzQqWv>`EyQDi-K}qn zmON78@-{C?%@dHWH21Hfu(`)w_cWJ{hUZsTD_Lc{A^JsR&AbuWB);6MD7rpK>aFk= zzV4c*?{T~|5=&fC64&B94k0#a`l)FOxH@=?pqFbcPO|P~&8ho}z9k06+tr1EQPi$t zZx}$|K1ZZFGH7f<;txiRq_hr{2y+KS%hR7SnleirB`GRliDLVFWYw&wug*KvDb4fY zBL8lnFM^*Zf`6!h>r?hBL)hron80YRNs9!;OcnfSR#sh>+`1QhM&5WIH8DUnw8Vn! z0s5U>ORpm8GSgdR23vJDF~g+_0I>&nG;*8Hi8{qKed9F`Zc;7Jo?lKfM+^<8VG>S? zMal>dym%zk4TL7dEYEJ1k77qVkm#;a&eGiQ@AeMJ0FhZ~ioD#V?7kT4=Ar!06uxZ? z4UVDqxEr(11CP)l@jzpOJ5h@%YI_s%te}wa+Az^JIHsAyUzudSlm>gR+|tZ4taqTU zP03>=6%O7x2Lm60Xfh6IYE0c8A3qN(@z-f5?E66FENg%lH`sn-~#!Ay9o37zMzYZlIqO0k@y&-2= zaPK6@SNiMFm+rYvq4#kD+Ua!dY!l8Dc_6cVHw~OkswHq8N3Hu%`jRW&m&id4ciP}Y zY~Gk;zeluaNY3#MR09VnlGey;YRF`p;W{;_%rVsRD~YJzW=3J>w4}68vBD@U=rffU zd}fQ%o)iByBlaTA)d~A|WB5TT45_7ChC)|ZkHei>zVor*)d1FM4^2TT-DrCxw`;ou zmKQ9386sGulS6Z*`gPno5DD1Jhb(wVt?ES^ihm=w;8zQX1!A{B%F-^C4Z8)E2=ig- zR1sT|F~aLYJ8Z0yMwKl2;g0HiUpF8`FWUsx;q-5dp{-bD+7=o_4*(qk*;=_^DCkeV zPG?z`#iQ!69R;25>>>qwgB=ubGP+M2s*TyLbRk?;&G~a!mAu0pjd|2+__c5JN+l56 zt}U*S9lWMBS@-lSXqxL1eb)EcjIu=*`Y!Y2&Rx)Tfsny91ifbAjYgjjVREmIF=obO z+oTdfQQflGiSa~*H{dmAymx~Un`rhGU?o?}Pv_?Dl6Z{PaEg#Rer*;4J4Zw-?pjC+ zA0{xptI$6Dqlc)0#9BJ=J$is(RLMM@ks7Wk5vm6Fn0EJwS0fxrj0!oVWf9Qtvio)W z`0j87`o}=%grsORP~TdgUR}8UtZ`#!M#Iiqc#ZWjt|P_b3TASdc{l$%*Cv^SEnpwl;|+sV90rr603E zuPp@$wM9xfjh*oWqrq!M>zbj)6pkEZ{_GtWT0c#2GT?n=`STtu2^&G5dk!HS&z53x z(P<7_G!$GWiONU*#<-dvd0|RUY9fmIYV*U1svF_ak!UyJz^he z6NA@Tg``f8MZwW%?3iHMbS!AG57KMCWuN5IVm|Ky5PFdjtXGxMQT@>}=+(yPX`$=a z&t+PJiIonW?;t5tM=uC7fj#HnW6Ohu*q*?F3RnwBcmzsc^~tFPYb1vuDWq)bw)TJZ z3VLZd@=;*%W4O?HVbK#*K{MRBxLa4<4Q8j3tV^8B?f7?c%*JlzpejuJ@nc4576gH{ z_G*DgG3S=;)wf60Odn)kzFo3_&adUG?wU30*~2-R>lWG{eD}a_q%rg#?A$b{J}?Bl0Z1Z@ z5*t4ch(bdYZkH(_ACoeMuO}2YM#Yo9-q(a2C0TY#5g;tFlR0HVO#{Ajd_Pk2r(aX$ z`F@`f=TjQJGse5x5TrTTgszN#mj7-gk*{qOknP&(EDCC6hTcu3ac`2=$ct%D*M>D< zK<>gak@pO4`j0Q<3lF@uBqNi>c?mY~AmJ!_+yy(I>TjHqf%Z z%G2e_jkVAmD-f3!`E_9|3BiRz_;IYt{Gl|KZ**E|UL(n05@XG4Bp>i94z3uJUa3=6 zzTfetwkz|!scbwGPKmvwz-p7*&;v!NeeBNp$B0>G--Q!p&Xi8OloCig)VDiU)a)d$ z87x#G$LwxZjw&BPE*pNod6d;*Cmb*St^In}6}w_1`}fVWv3jN0z@{AzintrYrAfj1`i?Vnhi!qa1<1s5-BlKc<7-8~Sn9K6o%obp%BIXg3t-e7%0fTpqwf>`M zIlJ)JbeKNq4WmNK?^?CZI&%_osrnvFK1BAm3bu_wRp`Tq+}ie=HeD|Ofdl4@6UU#b z!#miG17|bugNkuLQ3|-2kGJbn(;)oL1oC_xHUFIBr-cNR$7*;L2Xzo#x08(Z{=y-= zlju8BGgB=HmU;}Mb*rt{Pz&!U6^ed^PZ)0pI`rtPIx3dKyBMf7C5z-~riv!31+1v3 z2FFWXI$|8ka`QXGs2BVn{AU)Sro6O*IPg!SgW%0c-*_T}R3=5X0#oj&vMEyPr2s}j z0ndjh8K`8MxTzG$;{~o!kxRi^ z)+39_O!5*U6)2P+IsDuOum4KGmi|tyNqSR6)}%E-g53)v*(X&38~Ic?Z-Ibl1QLC% zhzhz7sf%%}cy0zbXo7c|257BmY6|LxI8UB2VA?S7bYq2ePr9}11rN4Eoj&uUKC_*l zrS`hYU(5HKNr(v1c@3euby{%IH=DFRe{ueE{4)B^USOFv3S46I*S#3SF4DuzHV%V3 zJW*jCidee-KpoPt0ns|JgT;i*O=+Tws2I<4ao7qIOK|HAbPTTlGAeiK4F-e+_a3lR(A?~o;Q#44_ z+8*$2eVP>#ldD;lRP$M2r=G(x*7bsoS~5_JLFaX6Wb87{TZZm`!Q+=%^jRL6*vI3Z zcUbdkcg3l53tpX%CevBGjGw(iogo81QS&U)M4sgDOjm=5UvqsSQO<*U*_2R7CGpu z9cu1WSzr|zy6N}wM?|Rx$%%F{HcByiyc!Hs-1!N9qq$2{-`w<`%|H#wfrP#2whhTv`>?e70uQ|AuPbH9-oF)X2qV`hOq^4JdcR>bTR?s$Qa^h=`G_m#- zwcJ+}zt*gV_!B68rB*--^FqT*R-G%1o5<`5A!AnkaH?>SYu;?byLNCBDGT@5Z9r}^cPu}+Yj*27TwGh))M=TUz;8^&s_ z$D{C90UuSYB!V7PH<@S=?t;bG_iD}}eEI;*xml-drxhTxb$@1f1;6bGVNRCiH+s3! z8y6ShS`uB~M@9`dR8I@T>D8b1eKK6}Bi7inwO%afKUnL%8ifkKuJMMHN2;&y&R2D| z#Znri1R(1_?P9MI2x2SFe0f>h?6fmD09Zeve^x2&Ow$siH*R9X-1bbifdq@V%HrkL zBo^cCWuhkVn5KqAk8YV$+JQs#&4|psuPuuSi00hwdPH1)0>W6+loc+r#aIY>HD)v# zlSYUGH_`Cc@6P-J#qrsR-W}GXB5vtrBeeys)GLb0keaGz$SE{{YXmQYj1i5ShzGif zv=uEd69v=HVlM|*pp_x-kYI;er-2D*=$Tpzx%(}OGg9sfxwzN^pYRT`!M5<5d3f__ zyw`{6FzXWjehA9RiEO##vbYz#Vz544sS__TcWp(h@e!^1V8eEQlsk zajIRozj6N}`_gOgDW5&#Gt&iP;qFyDO+W;kpKFhy%8D8AP+m|*K`eqEG~*RSlJEqfNyQ~Jri zhJ6;^&uXYc@5lENpB%vD4)Nz;OC{hGCk5VEjt9^HF*)dP`yznkZ-25@s~7b0e_ljvjbp4 zU?5Lpn-AjSBKz#_q1!P_c|OAz+Z8k(Uu+H!+$rJ3*-QTBecLxRdiW<3b7JR%9S4Jl zKbo6?@Y5jrlsKvA^*44L))}#i{5$*N3j90UYu6Y1+@bBkTu-FRnupbjXDwKD<}ML)AftQqSd{mdY1lihFLj` zCRktfvQGb)*E&HErJaxrOS25gwm#WqlM;>ei{b3YVZps*>1{XJF~7mf+sKA#3Q~sZ zyc=sz8CHClL`FJ$@dPVbp=&!eMjv!O!keMXtOvT!TgxcZaE}BO09jXp?wF)hQZl0ZC);J@7 zdvHE?K%-|6#G&3xJ&F))7L?IlFl_~N?2b#mv>6L>RGPF!HP75j(zSkst5x5kG?PSy zq-N>D#%q|^(AAf_HF`Hh@Px=5(DBBQIhHwoa&VA2dZz97Nfc)Wdtq5LJH8%V!J^14 zNXffPxi$sF+?zw#5F<6pahW_}nVd;F`rVq4;~aVxF((`Km7`yFMw~0fQJpJCxH%-b35i1b9n*bzq7p!|Wlf8Du$M%4G03d?0`U_WtdH zjK}2OZL!mcPu+kk{~W|Y|LSF9ZH=539Q;@vz+c~9%Xxc(&wIjh)HP9@+AB$)55%lI zLGWOqsnKRq;0;V&gS@IFV+}hvuUXt%UfrLK9H`lHglahS##m)zy+O6E)bip0)GNiD zhs@?zibi%$TN>jB1yPyuA^IYG%iz;LMuPo1LZ;Us zVQGpY>7shUxpRuB^9J)_$oo8vS?JK^d=RZh(`2UDroQVl@*rlP@HvVganJJ}ws>wJ z_%`YQ{LkoCUean#OEiaMWo*FJgetBD@dp7j(iboA$){cF(#jGEWD0sn~R;+_yJ|CDEA= z@J;a0ie&5Q4m3up37tx4r4mHR(aNZO8g6B~EIdmsZ(LYzOEaL=?jyQF>lQ(tn{QWT6tBq{g?Ax%y_N z$EKGtNKGCy!yOU=q^~7J&fAkTj04^Z_o!C!9ciCmEw5^xswM<|O2-P%$ndO{`p8m=`*pz4xo=S**LA z!c(+bn$y`*oAymq2;Mp_%yu6<=HqLtN2t3qBJ57-1%pn+YIUS$H>Ll2LYrwC8m;4M zR&M3~#=R9R+}dlegjnqwj|ed_YG)nw&lkm8bgRM^hlgTF@_8(hhbDAwt@|t@$V>VyC6z-3ag}(<#}>5Qi9EB zzKp>k(;>K>m+;*Z#@&eG3b)V&5MSEF4vF#+X{uccWP}i~0n;iZZh}V)Hgk{N*I!NVp|)&0ig5Y~&1(p+HlSp#ABjY* zff%MST;Ybwa6)GI)@U6zJ^jd?o~hSHUmE+5BS6Y@$a4$O+L%jEb^{TY4J>Ix#YnYTTm3wwT7vK%uJe4rlC1pt5t=8WDOQzr4~40X z0VLL&MH>I)Sl%Lf(N`5mqB@D8_K~wlQbbX^_Vau%^QY_&(xeEJe)3<#-K&n}CVq3Z zfttxXy)vN8+EX+D06p`LYE!`5Jnr4GEf}f#IYR0dz8GsK0Ja&Z6Cu!20s3KuDD+M* zFSo0mx7)FX$~74Bcd(a_g@_@swn!18d2L^IDk5%;DCxX}a@;m_j<@JE_oeD;wt!QNo#62r@jl6=qBnVJ8uK;fCy z*5C935>Ixix!0IOps%~&XY2=ZdgCe`7!E381OP@rxxbJ6=yECSfN%2~IwGM!{D4v# zQWRUkKaEr?6lx*c3b5@G@?DD?!DfyeV<7(yT4OonC5`PV54|0;rkLvPq}nh}ltZ&T znq|?1OtL!&C~ zydY{Za3W0zecp0xq>Fa34r3^VJ(RN`3cX)K)p)P67?+J9z*ZoPKmhQ>8j=DwgNA*9 zr-RMz8vkxxg5=;N6V1=oID>}_zw|?~`{gP+OFe>zGk_S=UgDWC04HrnfC+`@uyW^P z@%LXwu&G;pz&DHPp4%W2iIzND?1p{EPz{?-Zavb_nwGSdgW=F0$o>!zLHdP>pf zR@`Qw0vM>eyE3fXukPfT@K{cWVG$#a>FB;1NQd|vWyfL(uz<%e(}0_^m8s!kldUYd zyOEyi>DvRF?twmqYL+GD({PfZCXwGL{QSn;Js%ls)k`tuJb)I^L|oP^k)h}xIfj}j zFDTQSMzC`Qz~i!t1O@;IP_nZsVr%Nz0iBRV=&+ds7QdM<(|9;yDfTesI z)d3`WMMU%#*iGi}hu)4AZ2sm+{M7^E{l=o+2qk;_B=+`0=3Z(T7TAB^Jpo`EN|3M! zVpHOWu8}c|HiHs1>rT;Kh!=_)V3J5@ucDg)f-9@sn@LPbY9XUkKN;J!XC}r;@po~Q z>&YpQ-RrCb3B2S+|8S=*!wDSTDQ8G;uqK9H{5F;jNoj}ov4n+U79~>|awhAJRb1B$Jdxn*28qc=WInJV+-N8zf4|xF_QW^vZI8 zE-OeJPVda((&-1H!Zv#h^#~(q`T)0IH``U$EF&{uIoNnuM#0Zp8Q;$oe;AjMYwiNB=E`d3Do!R?tF^CvpZUovIMsQ`}Xk$oym`5vq; zIE+R1zMd%izNSdY+{~Dw$(0R`NZ*_`(Wo_nKm?aNBT^L0k_H=Rr|roL^00oT$XlD< z$?AQeH?>(hnv1_s0Zvqf6lpTliy3?a9~F-=Z51;N|@o-oSl8 z@3c2(Hi=}|{rQYk0!&tod6IPeBuAd)aPcH-o@B<8%z2W0{3IEkBz^HDsBi5-zM#In zF-youv9hYM;;Gj>HQaz5fi9@S_UbK?6ZzoxcmR!rzvvs*N?m#pJl`}n!8DUrQ(CSLn=)~E_Y zUdHmHJCen)OvLBih9i1d1T|r{;4J?p(qPUqPguxCcpkf=hx2!)OhWvloNy+Vv2aYT zeB7^?1s#+2Er|H1lK&}acfEb%u|k%I;_oUffH5Mhq{-$j*5b?JS4Xl7uI*X%9u^cP*Uu+ ztlK9SaoBblvOkzN}9i+h+@o{@f&3fXY7L+90h2s?7io@WPg7)`&spO3IR1FJ7C_O*eAnG?Sb4urP!C=~$+Hn%>=b)s73B^*}1%drL^%wh@g%qGmKEOt_OS(52+(e3%FRPtvMd*V% ztpCug2xfrNNwCp8Uy=}qgjBfblgd@Yd-z;bF1+PE90#jMmAVw+1B;Gd12067V|9eY?yC2NF2Ht@ z%>nw&`ylTXl!oekLn80>6=h56lD)`Rmai_^9QZ8@i^#|KT8m{!eHj1-hUIXgHi0Y2 zepl={D;MYq^d}eLdM$z!Ln5cW6I_KB=FF?D#9J!<03*1y>w?fmuobtwP$H@EvRQCL zluIKQI4@(TMKKUNLUfLId$autM_ciSv-k&{zJmqQub5@Zo2v2;?SlzN)dWzX=Xs=W%DGhrT|bSx27-~~_2Im;+9y!uM^h~RZ5z}V{9Iy02F z=ZoUui`Rb=ND!vV&;4exH8LrPqq>mt`({XJrtnI~95OHvRUyU)k% zubC;_W0s{Zwlo^`>T5qIx-M4tr`1T0e%sMNcN&T-?)iq8nq>4{F{XFmRI;n}LF@k~ z-b%J_bsbr2Uc!v%=H;)RR4%`xFUKW#TybC$m}Wsgdt-HP`{WjdHh$G@M-iS)@xB9B-j$J68a_pZN8C&*Q6Du*B^<_6LO*ic> z${T&oRx5)nCeXRkNlcA~7Sq1#@FTN1&208)EO! z%nbM=yKso5SwMfbrznMOf)0M0%j9ieAt}&!i z^=RQH1zHO?_}{X@|LH)SSv?En{?pe^$p~&m0-5in=kvPE8MM`H8dlzpeqxsPPfd*l z>+Oo*F+1%ezKny)^+|hwZJFIVCUN>1QK07$+-%X4pO#s|D2u^~M4)ur=lJo1M7ixv z3Y+aUz{^AArc!EGiuLMzBM>!~yVcS%ml`IHa$Tdd-IiF#Llo9*mB=}OKB^}`5jX(w zi1C4uj*)^kU5Z%CP~N7+?bLDQGORm8K52$JmX+f7t)ZcT5AGoa-P)nFVhI^!$RW%6 zFFhhFn2*3?Yj}Nj%Ry9(BC&_%7dCk^RUft>A(BN&Cl$Y53FSyoNPg`LRM@t?b;D6R znoz29pKk|(keU`g)kjc>0ws)t2RdZLE)i?@}0kXl|R zk>Bv@k~XV)woO(F)Vcuks7#d{V0H53==;xTPd!f6uUxosh66K;?bnXZ{h-3?jROrD zCQFPU?+Q7o{Q^VP7xFDr;C2kpi%~6RPg#*R>F4vO$~MigiJjkTOfV%D*zrn37*@E> zR?!%xa*F_ACb%SPHaK0zf(Lq#`K=$Q*qSZJV($8tByQa;2G1K@lnI?+Qd+mOprbnp zi_9nGYddK^iABF`RT}Ao)@W&ONGe0iI;xwhxNy*URSFle@Sd*!D${Xofz7-NB8r+R zAGN@{HRwTo)I3!2`qH!u4Essl3l^2+$uVOM4N;Y;O?BDvJ_6Qur2P$ylwK;@et09e+|A0*b`h{W# zpztuS3WTi`XXGFTx^(GEWS1=U$Da+<(lxie(Sm8juIcj6BR+NrW5FUjxoahJx@ z!V=h=e3$e}=0Gil;8J(M0-fT_Rf9F013j;nuZV8fZ0i2D%qVQY#jBqN&`u&UepY$W za7nFI%(W>>jiUZ^Hf&Sw+VTQK?(&v5fY83Fnv|n&KI9bN0XGLyv3&C7!lk2&C|S{q zTTg9lw`mc$LshPlX&L+}ZM&}9mv7P~#>}7i^wnG%gfd2F6ZljkK`fgkMbuWq%9(*Q zinpIsQd8Q_8@9!R>ZIyd!KEMghYGmSS5f|NK)$Zp^5#PQy2J{$L_g zr)T0Ul)B6Ui&CE&WCJm{tRQIUw6WKgKn%>D5cp*vpQh= zWW9_qY{_^C%PTuGIA2EZtNqo+U+Kw@-4tHSYi-HS!0s|ZnrvlL25=!UAvZtI77a5q zS!*JamU!Ak= zjmLO_F~7Te(d37(;}=!o75P~H?p#TT?6TaScqN~nO=_cU{5-tU;y-ew^-{Z8uB*t` z%OgnEY&d8n{X8J>aZtSE6$KL=792D)-1d*yGa7PV?IhO;fS&Y5TfEZ}fFP%NU_ce| z_5zafIjZ-voOK3sH-w;PYKyv@&JJT2o|^vbBSPJCWAKGtR8(iU8$}VZUS*JCY_s2H zGdKu}KX~3ktga*ZhUdYEYwXCv768GC+Ia1B1tlt(3cr*M!yY+3J2KKN@bjAcgY$-L zH5L`6ayuOf&y&pmJ3LmJJB5XO00F9>3+uQX81y$6PL|OJ`7X6pS|bw~^-T<_;vx2M zg1lS@8d498rL0NmX?{KD#Yq7`A_6OVq;1p9ks>zE=MY#?7mvN_Q7^Eb9?5(2rrisn zo0uNsNnxVah1G_Ia>Ym2w+cqe;^9#HLidK+T8bB4A*2aV_YISGwwSxibY8@T9%~g?tDoS$})L1x~Sg1S%@U<5-mm6 zj5CjG9E(}e;jXi!OCUe#v^XziryEz!k()`%(e}Y`-WdS$d$8QwTa+wQ2n~6z9TyH- z`Y)S=8<1*anQO{L4oDacQ`&+4W_kQi=e`{5!UU#_uMjXHipvw{e>ib?Ovm6P3yrLeZJ=Uxuw^Awg;m$X2{TY3t4DPbidC?l}kEg~dFXwrC&iK>O+ zi9m|K^Sw)t)Lfyq=7rIRMJ1X#z!aW|k%N~5U=OQ*;GR=dtRTx6YTPWtQlAmIu|$jff%D#`g7nr>P5B@> z)SQG29*rYao2YaVOU_UvSo}wO$~a(v#8r&0K7(eBS&WnLnYGPM;GWw+@v^3$lF|o?m}T#aR=1SzOB+lvG-5QVI^) z^{qYqv=YIbg&$TASA6wU{R^8WBBQdlWyQ*u<0%Px#P^*6!Bp&j{|Pd#&oXj6J7b_8 zZGK6=AYzh0dUcjV_GHTWxk#W!V@c|{)Qj-9RP3=vZrHQG_?DR8OxC~)7}>GN?nK$4 zr)wrpv8m7L+yD{^&%A#{dGd+xJ*V7-p@g*GFl0yaYTIYN<}gKn_3gkh-#bI{&C{Q! zgn*i^qf+-$0;8VzuqhQ@so9x-anN1IoesGV9L($VE!6X^9d;xZNTF@F{M)t@4g2YA zp&TD0F?5|(izA66VqmJN+lUA=Qq_R5{Ar06?T!5PABwS+7g^3`d^t{cL2AWAyDOe* z%~P!;T3LU}%W_y}S2b$@6rfgpp+++}uH#w7l4j`Fs%TP)#p})B={5V}qwBk5j=CF? z@7FgoP;Gl=@VhT;4??%@?e{ONA&}#nn!w&$bM*6L<#+GdpJ|dN#h>Z=>l81k z-Z6o%duw${{{(BsoF*LoH+YrQKZ2Wwz@Wt`Moc#2{!@@X@JV2Nz<{+5D5YbXtG;r@ zpD$r<2bDdJZDp}7!9mrpBxVV#*O?164h!~^9TJ!u{9?;yU6~g+Vqu)3XT(%O~lV%Q+@dXWx z=jWesDD_4M6%ka|(#WKZ_+BX_T_=l&IoVK^%?%Ee@Yj3YF+@LK^T?-kQXs(1idWY} zx~e<*kSY;PihSV=dCh?xdyn9ziuhJz zXTx@CTtxH#wOOZ|vNGIam8;r&f;#f`*+CK(o0Cdfsz2J~hhq~nLj9B7y<<(>v-k@+ zOMFShC4ns~<2GuEBw1bQIGaJi-|7ke#kVA&=65AfLM5G91{72l_D*nWguNOHWxkkM zdV6?=#flbhW=!55@$Wsvu@29YpLSN>l7zjD*yMql=5MBu=H`6dS~Ne zzb}GGap6rLp^dC3jX$l1$?(vu92%C$Z}q|%K&Mg&?f{1mTmGJV>MpNBnp~{lbtqr`h>-V_P5@vs43$j1I+6N6!t?c{ zk`xpe-O55PmRhj6T$kd?&#D~qhns7|LUH>us}#XzA@zb~TCnMkl@UMIBW#TmeU6Yv zrsuZ+f18$@#4}Pz^~MvVA=DQ$#GrkJ_hqJ>=MyLwLc(n zzChKz!RVX7L*MEK#R@&dSCO5wVFDlK^$qd}q;JTSvz=80cY9Rn1EN7ehLTKu9^Oll8Oe!AQ=)q(1V?DAM6?^xQ|6N)FXHfG?i*ia;th5;+2vB}%8?ja>`N zJ}-W6d)z=(Y`8LX45u9OIvq=WO2a>i#WVa`=u7n~$c|aF#$emnlF8OBm2k_ffyQfu zp&3j8^?hNbzO0Zic;zU4(rFf~Y-h2SWx(prf{uHlTC+KcKdmY!(VK6Mr(`}&>+hR; ztrAqC0ra>gl`^nbmH~ZJILo14@1-t!CsuqJYi|F+DWQjv){9 zs2C%LnN+eJDBAWMB^AqJI#`49>X>7QV0Vl90G@U=h|!UsR3j=K8sEZeDbC{gXGxfM zmsMFMc0P1T3pZ3}l+Kl#cw1#7%gkR?#`xIFXPJ*d#1Pwa+2KKHtqCPQEGq6Zg@&FP zZo@3Wv>Q_U9>Kd01(qhyXDM165@R>-Eia{gZ<2j$Eiv3ymdclsPPM0qqBV0PY}`wh z4#+qhD9O%cV*nbhi>kgGYy)kz}Bn))uOK}Gm6 zWB3eKAFfL3E90DADAtO9tmbiOh=qi2frueJ@oN1q&@=C;gRzsiHcNq*jdM~t0{tA< z<%n;lYQvkH&nt!^)C|IK=p8T(y7|5Of#^>!bQwXm5SfV|DBzl3|k5`f*DO$WEkzh{0%6yYAmWhR8I3lGfKlBCyP0578%TP(uJj zfSvQoIb|0uspe|nFkk8C{@~B6bcs}Qz2@B?Dan9x zh=pWvlg3y)&fiFSZJxz2-C0Gk zsdzx|#W5~d!Vvs`6d)hxI09;XsZRXH6#Tylm_^FBwFMJvV|*6HSRma0s~-@Okx}ld zGvcFCe&8efgsRU^F*oN0j))hL!VuY-tW1AB3z*A)0h7fGAa_)C{#(~|EZ=sMI&xga zD-CLlL*>P$ySmL^$Ex8&OTHo6HDlG9f;JkOGkzj}f8zxA+L4|3nwkgU4uAn_n+N714*Y&W4 z55n%pG(7k31$qGRY6>fDQO}Ygh{JybZMy_pgD2|cRbbTgNv@Cd^oI|=lMRXopXc&d z=aE;T-DjP{7U$(sCQWx{&UEkh!Q!@=#kVUH(S^%5Tk?G;7y+^8;UH|)gpNSxWVH<* z@_-rSV7WI3(#ihg;KQ}^XQ-kd78o7Y!fab0oeb>hZxVmr8$by=T^zv|8VmoA5oE^p z$vbdx;g)-3MGVwBr-)6%T91LXyZGx$XVaG;1u1;n^O1-trY}JXGH#=hPVwuIPM7>3e)sC2(GGcA1XnN^nRjo0S#ghTB+*{Gm%VqkxS`TKV=R<_ZvC zIDikPwJ(75Gjgf_I-=EC2QI_+%b1jy@9 z@;E0othrdXiPVJs1_5TSnUT?6t`z;>Ya6q;FG5FDU_SAOt?fqI&p_m!bAp{H2ZWsF zY9S!7)=@l@m!-^Toej#YOT!A^khk9MA-F@r-=i$^A3Ln_;nxyj_BU~`7grIY3=t1; z4=R%px$yeSB(8&1CBynr5&%S4&T|6}JHOYoXjc$~HD}NfpZP=%esd#8W`wZE^}&sJ z)K-oOx4nVIg0-$a$cIx{Z&VIprbg|;Z~Z)szJa(3j7RrD_7r2eo?N!1xueCV=>!}mF%FXsxv>n8DrQuBZW|S)_*WAe-|2O`tdVd!R}a_*)T8jHj@q; zc{&U?*Fm)*hkSTJUYB5U9rubE1dCZbxM|`j~{Y|;VJUzTt{0gh!OVe(B}mh`tx z?B4zWftk#86#e;YdegJVom~9^2l3xOEb;^gk|(G!&(CN z(Y^YUe$t0(BrEQA*57lKp7qw~>JQkK4b1z$x4)vu>{Q}2ji{W@+()+aN4=O1F7;yF z8~5BKF;osKPVsBJ8p=o9tagM%w8V*`?t$rEt+IpM&S)t>b$7o&p5e#Ht0Smtz+fc?NT{B4L~ z*#oW}TcM$2jAfxGM@x}?k9M&63+L@d1GZZ|pbFK($W6$CJ|d$>8N^VSbriDZ8g=Rq zY964a>E9tB_p-S|9k|Z3JNvy&#{0|=mxkYErw@qWFZLIUs7>_V%~7-dv=vRcW*YLT zHYGi{l#;fGQB(3PCq4TyCvD#3;^zECp5kZ-z`%4V`0G@%9{8!xKV%FCu|8)P*!BN1 z>%4u1qs3K9$`U^3SZz9enP6?J+j5qXo@ivh z$qo1pbNm?ziBTbbG?TXj{yaH5dYt3Wby94ZHxsclAj5rpBQ$Uf9xlV=l$UY=?gCMNDZTV?irXdedNQ&@sT$Z6|$UG zPES_v*1u29ogdP3-pq@xv%+sBQMQblnOJaxfg^F~&vC(grhL8+$!(GhJ3*qgPfQ;vRjwM9g)vr5ZAXu3=%K9VT4*88r~}*5^ z3ns@2COOA=>mvk4Md_$ndK3kp$c$Y)ocquW3x21sXj0!1sqYF@nP!irkeLbZis@p;+{^(sr9lUfOS z>E#M)Tl|*8a4GT$;VmF3k8IHP_xiMCJ0&HJny-%f)`s{RU)3>`c7VlUZNue+VGKHqWWk>zrg&s zRT8-pe>4_YumyK5*rW1qDAjk@Z$H?!gX#$Jq~7}8?U>dUv#Ki|fj(*Qt-lNd+g)a^ z*zVe3Thj3BdWZPU>yw6fsK#OGgM4xQ9ZX{&z-SMo`HL?)a|SHJ?`+J5fkcx@GKs4z zsg6w(T(ewT!s$s#ecg76N3edK0qTjqZ^7*@cJgTQR}~N@-SUkd(()aQr|*v5z(fsT zMy~1(^{#%MmU)M^dPMrtRC@wo(4F)^2?$(HbBj=PXERnIQZK2G@QS-LG(LUEE_(dH zTKz%ASJRUG{vU^1v8xbkcneHaOhi7-CqRe+3Om_1DPvY|fI)fNUuZIvmET0p%>tRM z{e5sv>NGSEFM`kDS`?f^ajEEs{VsGK`Ys{+n{4i2= z=6s8V{s%e=;Rv%6TtU3e)M4lEQi~AmX62i>-5dqL>j5_OzT2 zYj>&B6P0*)o5lDtUHX*l$TL=Eeo5y@fOJ(PR}$*LUp9gB zwg%woY^`%~4)hYBv1JF~u>rNi_gR*(m@qS~#Hg^V+;_!gqPu`}o4kP0#it`CV>XD@ z4I^39=wrzB2ExGXC$R?31-I>A$%l0MD@)q473(M0EBg*GeS(iR9gsRZ=A4;dz;u9J zx(Tt_GuKMz6=8>89Ec;{&C7sO2sJo{ip9*c`Yj$yZsf`mTaX3r((~o85Qb*ar3XrD z$i8&?WUrnF&T57N@{Z>Tb)^7w%i=3PvcCAD3pc>d-dUcaWNq@T{mivKk=`;l38;|sdj=;_}+Yyn~t62lCvs-WSZ zWe}U2-l>Z*P{w&UJ(g-Q(GE#Xe@d!BD*c9!J<5LB;fMF4W1vR&Lgk@;j3m@e z3s$|&Re2qE>kOk>&8x9oW0-a1I7hB|m_!{s>Ua)aw|n4Pew-JPoX@tRK)v5cScy4g z!lzY=p=%Knip7A|-#Hq;iL-Piap8kMr+*HRN_Us4FOlSo#C|98?z(utZtV9uY}NIe zdB%P>x8EVD^hoXIGKtLf{RiU+d{}vU3GEuk)*q-@_OBzvyhxYi9v}GM3%NQNJQfOI z{!lAkCAhp9;NX3h0Tr{5Jf;9IHuiDwd9nzrrWf3g*91u!#Fqga$ECgB=Z1u?A039?Tyv_{$5R#Zu)l$&mIZO-&)t(SqNoc7n*KxtLu} zCB%%nzWBbTlZxNl=A$JhEGn<53v7@ny6BQdpYLYa%1$IXU|u3D8{IYKnn~#-f9J&T z#v=@82;A%29BKx;6INlGqKdxM>!kP#oDcn!0h+I!p0Fk?W+*~`Gz;rKxdmc2BV0^+ zpq9_(ru%BJBVl)1^f~m#{30Pm{!jo_r>UQnh+ubAunNawevQ;n_NN!J;xv{esYaTq zk`QV^k?Lt7nWLV3crI-q^HqTqJ?o!}yvM@U82|pEa@fMYnws=XO~@ytjas&_e zkH8&a1Mc0!cqPANT7~*gSQ-HxHzAb@0J*xdUw@C0aw@D`BoLpVq8$^ zKY}>gM2=xZCbgB+A7##=kG?kv{+!(5#nVraLh#xNDq;_T9Zu~d1xeq$L7&tsy`4at z{iK$ad#P6YuR1LzTC?G>H%tx1Vl*9*2J+gJBN^%_whYLOzwqrjr=pJLy%bT;GEr1X zob&s%(4qS8Ip{^s)r{U3%cp@%MO39lsV#v4wY=I$4QU_lffSgXblfD)K+!RC52CFN ze;3GsPOBkCXuS_c^N$KO47z4!lgGWjyAO3md`Lu$2C?dhFM58(Q2WG&G&c&9Y{ml6 z{sAk!;MbHj{nkS)OQsOeIT~NzXSmpxwXShsM!>8d6MY0VNf&QfKTQU5aeb7K zRB&bQ?Hp!x0WW1kg#THH)p?DdeCQ;^)aj)+6?d@b^?x3F)iBfDa6(nX2z#f5q27(X z8l6=s6v};!Q2EkMhzgFZYF^i5(HyO2y{V+e+wzn~P3}k3iHH+wKu=>G-m`wf?iMs2bNmb@7R~jH;7qY1c zVoVS8p>+w-X2-!-%$o80Pw+h!{uHb;7r<)*>$pQvSot>?wiJxRKdkmlKiK;>x004y z@r!kI^&bG=%;zD7)S|*7yY3O>pv4k}Rn1%2i3oFp(HWedJ`t z5(|VHV7K3iq?i_J&_MuI(UfBuvTg+YH z1z9~u4Ex2zr8Jc^s^37S2j2vt4$Q(uioE)>&w3tIoSg=6x{j>;Jdr5G2@9BNwfb$yR8P+PdQUTPebRnCCvJ@o#to+)C^LP4lecz~lh+r}4JNu_w* z3E}t>dzJ!yJ@e;a>1*r^FO|NB2Yi3#C!K0bB~VXKP$E8bzbFgrI>27os_Qimbbtpf zTP@VQ0DgkbEZ~LN8~ocyC(JYF-rDOhx{01QRy#UtW=Q|0;-}~N_v>ZlLOIWiPAe)m zZUxVjQwP%v^J?;6!ZZCDZb_5l!uN*j|B>v@XH( zl~Zd5jaC@rBb}Iw!r)ftd*4%NQobfJ`wsZQoPE;*FTPZO0PVHjqCEFzv;Aio=OM_Z z-07X(Uw*lhl#U?9ohyX>;v&Z?lZ^+8K(dmObV2BNV@@ zTT0o+7Mxb!pr~ayn23}fcTssS8Pl$9eVJasgbTDiG374|0i*=LVtkN|f>^A84+ z%FqWLl@Y@{Z7*OtKH``Tc$AyU8G^%tPa@2Q7FHxP3)8j#D2kx|S9pOT@XP09rbmg2 zoKy;wW-~4-Mx{<@P^kRA;P+emy?i}aha>y)sB9P)_D7>Qp{}naS!WNDWW^%eDhb#$ z05gCezRE_K?;)`j)P_$HsY(8KnfxJYUCIPC_II!WXL)9$87&*1Y$(p0c9hqDQ**cc_!Ph?y`-U5@jCsz-h~D#Ll@m6QqJU8=yI zs8A0e9ZVsmiu>}fX9jnx{SfByVczY5BItqVKVxBit1=*naLNnZuDve_5-f#Tf+{Zn z74+4P{EfgR=qm(AgrMhDl4;&MaS28W#E|nD1Lk5f>PK`zu<}Ex`M<>z7&X878B3Zi zSNJM2DC!BTQ0S*+2y|~fs~7mYeaKKqs_B}P5KHyl7Gx#`OF%DgIW?12>l>4{7I@L_ zuuf`6hHkTuOWksioe;YyZ+}CXGhkpT0u4Lvz%VX0T)u-;ABfeH6%d3OTRVAmX5}Vt zmuh(hW5?_hGYS0kR_E=iH({%;km8H2oo;=XUea!QN&lZ^-10z^$NoZ5V9NNz2QhX0d0O?WPdgX<|3nI=E_u|DZ1c}DB)Af&HkwDYJWJp- z%)5F8TkFGx#Ed`Vb?*LmWLh#;ms1+Yvkc6(b2%mQ=_EVW?>{DKf{~s**))ggiP~!z z|N1Y>cGSGu_2M-eRb&}N5zOil^WnpE*{%{z8Z(31tk`?)IEZk4^0h&qvtG5`FjswW{J_ z{Xfh3wxujjvO#;f*S$)cd!Op8-uvIXu%s7jpY~r_<4vW$RbsmAc=%9CI5?Cvy2ekMp~`L+>@{U7F*US>6aK0$5oa36)(p6??u=~$?2qmEb} z+Jn6t|A8)6UEs1+@AUB{|Pu#-%o zT6Gc%Ag`NR!~*{deXRZJdO?-9^j)5)6d5^Yd6`tcO9}laD(_oAIvTYv9*+P1ud=US z%uoD;X!@zjTW|c#iKRW1bryPeP^o8Wuz$mLBm=`=_<%Ol#`xPR4qdm(>&PDWc98Ui zPFvoGAsu+zddt=_vEFtw$)l$A@HTE}*F5bB?n!$kWY3ROt2vEmYHlS3&|v1E{D8Ou zg2zQBQ;NMyBkNB}*Nu5M{Q`nn1WUD*byy~~fh2ZJ#m|@3x)QePdd(BP2ByN>iIN+-HJlOFG$-PA_;YOfOZBhPPm=WBk8IQ4*8lTs{9YDiRWp_ygvrQEva|pb08`M<@v^zU*(*e+m}S zSs0Mjz4u>$jR;<;r0(oJ9Q?sTZMga#0Y=gHC!$jd0$%k+@vb@AxVRF@$~O`#7eW$D zG_raB!vGkQ3ODEf0!W3=f!4K~sOi+4GU9R@)&G8gNY8W-LYckQmvr$cjt7}k)>CfeHnrRzR=8l*WvkcMxIv3884mG|R*bG8 z>#wsqAN=n`mXMOw=DYs|sK_7IJ^hZF=x0F3x0n*W(1nuv|7ef@kM{WYpgnxg4#MrQ zLO6jeNgt${Y8Q7-Il()MC=kN*VXneDA6Yf#7>FodE416#(V8g!u>rfbf z1Q{;kVJ^U3g8!v(7vmt!&g0s}`qJRvgo@huMov0$YtsIXXh)x6 zO>!vkF&ozHSLf$>7~MqAtY{J~8>#Y1MWH)wqvOGS`(NPGNvLl3me;6w^|21YYmjEVs=SoWq+n(s4nuY@or=@zF-~m0f9| zX53#>LZ!#wM|tbzguf5-&hG|}5yXEtP>t~Sx{Il5iY`O=TjTt`Zlm9t=XZ67-+Y6_ zG^Z4c;ln)mD}1~AUo~A09^{3BK?Ar43b0v$p=JUJ3YrCyLs)+z?_c*k|5S_^FB%1i zNO$|P0_d`$Y;ZfXv|6erl$1v(b)X>_o=Z|}Es2FR<9u#KOHF5vxqSY8Yd@eKm6?S* z0bbQ405w3$zfseX-h?0xbY37T`QTxkNr`;7$aS6?Gp393*da^dpae*9I|+g=^^UiK(Geph70I!*+rfsWi&ARdyv+~yqk3S?x>VvtW zIk@^2hPAv}iK4*?h1wajk`NSqf+kY^({4igaW89p0(s9O)?#0T@s1e?vd?9sz z5YbMepf>jL?_W%C;4Ji#*{0!G|3UkrjyU3`Fm`K6T0RMW#(e?A z{qoC9jQYYkOxsFDBQI|Lnck=~%fvW>M%W69=aNpA7%D9%QyW+NKVnDMetWn0WhBMbH zAr9Qmih_*>=c?YbVc2_(F{b)Uxf?b&KSGY~e35k7s7Dfss~vB^p&=AI_5F>EVzBH6 z+=e7+Pb_j0CCqh0Y9=M-{GqiFLAa;Gkis4l9fA?WZ$~5^Iq7P|NGdOGyd$?B$ipl> z`507UP@vkW3C*_CHL}HZW0&L>u{N_WZG0w;A=eIdNL&0XYbaG6F!xW4h0>E*(ja~W zTQ~kJ9wWGmo)+B0(-#k)$W?1o{F(XT;RBc#=_mNxFY;%AKhriUe78FCr?Wgge>+CM z>2$^RY1d<{MO^h6m2`4>zCZ4sTXfV|Z5YbHWEkCs9y*dH!&{g!WvEgtL0t3pAo+5n z?f@>N>3keg#sUk_m?CmmI^Gr#fg4ojfO9O>R(j)O4*t^9V+0`-_4FWF$pcqb8e=ns z%6XAlk^*N*ejbsX7!z9WC^vCH2twAA`Bxn^2eHPW?;e#YAZw-w`n*)nHt! z_Sxgydta&yNU2n|kr6ZIj6j?<_=Qn2pNR{b?hrNPq-{-G!)5N)HffW4ma}&D&P{ez zjvB0OLax1^HQCy$3BFI5E1o_!04*^a(MR`cVb{f5P|{X>97^e>SwLeBS9=SnqDE zqaGj`&!XBeS6q;@Rlson$Aj5!IwjosZ|l%Khs=5}>8`;<$&*?0U!TWv!sz~V5z|i_ zL}LzkqpeYQq)-$C7cg&jGjY-V<5(m1LqA)w`eV0n_pWbDq%Q4U1y~vW5x~i*I*GgF z2yE&^ILD=l`}F!Xc7|V9=!E(LM|Bq+h(XRX;+Q?qR2Ank-7jcsx5i&M zfkvbE%i=>T&BU|lF$P)yEL91NRfNSAE~28A#j}hQ*%I`71GP776Mt)pRPA|1{XErN zIW+dK?`zwzVn|jpul!XT@GH7OudrJ;l(@(5>&?8 zFnZ4+aXD<}M*Op9qAX$+M=I=N;0|sNGuoqf_lY8OkA*SD#CgAGV!bz7HQs4_jje4r z1Kr!Wf9UkfUv#?uxzoG<-syI1tzw4A_B&$x3Ht>I&+z)%E(V804; zw6_8TGQ^NXXvSGJFbqnFZic`_aG^B;qQ+8ctt0MbhMsq>%k)@^)3dBlABraO7y{59 z4zmyYl*!Nx-!oCqPNoJhk0vLnL0L2);LV2t`8!=e;*m&Qbd#m7!i!(`0UH%y zPd4oK27W>|R*auCc#EO#g>_Tlp$!2eGWBhwgt;NWqU5h64zm``*QI=hV_=Zp?6Ve8 z@`9xUuwy2%sb?@w@8B*6QnRJAG=wct5EryRHi9KBr=lv>owf5Ub>u~xB4h)9$zuOA zN8j46$ESm)kz zf7&VQAGbYkmE)`j49L1cqSG`J2WJn;DP7C*ZF7amZe=IJ_7$FKkHRcHI3vac)q>Ie z$r#Q6DJ~&<#DWjtFbh&$1v}SWkKG>;!z?CLs9+go$H_j_;2Ix1emF@4uiyPPpez^Y^;>DSL z#_a<@X@YikzA=cX)P~~-DI85cJ?X7l_TWd7v;Y8Fs;^iBX5vH#aHRqO{WGJ`16ViJ zGDy($KE?vJ{zbrrXMvuF7aMD@FwP=H`HXB>j*gA*B_j4o$bNCHB5!DL=8(H138G11 zD?Xd)FDG|#;U)8gl1MB$nMd?!rZ|@jZ)AIXHDL-eWWRtQ$}Co$bP+o#Zln>E4P1Z$ zc7m|lWmOns$?a*$nf&m;-20ZQ(x zOMJ0iFLn_CocTmH{pcXXxd;4we1x2G^u>0>@-z1W6Y}D$M9N~BfAkg_ z?ETz>^j2SfaZO{K`@DlZ=;ni+a>iz0h{z|>r|Ljgg|Kj4<1b{B#LnptAe&^gz*O>f zQ&FRtB9vIZdG$=L-pJKkcqG>u`(cht=1A2VJ9xPcs#O4}Dv~sttJ3A??m^Ou;{u<1 zLR+Y zFTeIT=4p6*)lS=Hw}jF~5xvynA?^cvSsiD6>?G@R`Guw1V>S;OGK~Ov*KBi5(AUEn z<>t9fG+hG<2}|pMQjAd&JJ!ct}H|8 z!~CO?&mi<(Xc11o^|F+l=*Fsm?)7RbPKx|>mmR;SRr=$*Dhvo< zJAM2%(75B^4+ZU!WA%KaAZ~Dy@ac#`(1k1D6SxiD z*Yf+CJ)~V`=DoL8!h%tj=BN}PoVmzdZFzg%gWX3%XGFcmDp!_1Gtj2jk#zeW3)69K ztAy0MMz{PE>-1d`MVA@kq3thImD%uWU*E>NBMH3_HEga`#<)PnR_l=R zuz#n2zNT-F)uG8le%yY_*mr+u0z7f0)(Gr~jU4wu zgzdIDNpPAyau0B!C5AQ!WioaVFNgy%@uJV{dU_gXAX!NHnPdpJqv8#d*Yca9u~rdh zT*&r-vk;Pw_iv`K@TvFA!LD?$)1<=~54m9&UlPOkB{}I4dfc1<8#1q84?Axn0!e;X z-D$ifb|)>4MifdWdRbN4Ix#_Moj(80OkG`7Es!sa%9**#BMq5If~2(cA(IE+!;bR& z=bg)|+h3i%b`Q3mp zUiBla6u3=D{gIosO{ElABtz2s*{ixsop&$?1t`QbX|e`&Vw=h2$X=*V*yz zRBdU25b2FR-b{a(H`}8RXE^K5R6*vhfWv8oGYtCJ07&THSYEvHkIQiE4oYyl^GyV6 zchAM!rSEYPHfmIbMXnQO@(gMG@^$0$o9PepX43XyNe~uIY5P(|nYD+!d=6|0!(SGm z3Y-_AKTL(fz4?}*_Wx+>s1Wom?2@3b|8~xj8JvVE=mgc}$D_!{RG6efKUbUSXNlQ* zGqr{kdbdzwkNK#W`OK4)qf+ME%^6p1&*|qOlW5RY=39!XQ$I+Ioj;2#hto8X_wKxk z?BPY#PCm0f#K>R@`w7(jmkuh z_abq-BFj~CSM{wGs(_-0Mya}n%?7E`0cx9w^O)AWYTaHe9)5!7c|sopaKj4~LHQV0 zMf7G%gb)nPrFgC#%eT((woAoCe}{XT3-AGmuKKyI+%9ENUD9WLQrEp`0xjp6TyWii z%^_q}h#Xn-#2#AbOEwGoB6~=&k}gzqiztI*C+jw0``o3FATc%eY$6UNE^8PsS4;7R zup^yz`L;Ndf<^8S7Cd8d!lK}p%jp4kVG9^zsn+?M&I0vVAg6hLpX_H_yC6BG;wh5s zKkgwGZNN4)RmfrNF?dKv%ET%GAMTyVpXIex8_Q0&;%EE0A7B@r0;DZGI^JQ!x@T|k zMkSx;$||U*^fX&icVH*{0%Da94%l$|yE!LeRPDSMksKsL%R2JAH&tU{fBTu$ccGlK zG1i`MrFJrMuxKzkN04m|+AsJv1)azfFb2tNJpRcVi+GmdkoKI@E`P%6bT9Nb4BZ zPTch1XX>41qF5E^tI~8^wT_&tU_}K%>$E`}7vYTR9{7KKSC%ML4c1+g5*_u6*b0?j zl9*3%B4*cdr&#_>n4l)~>PRxHJs~PyXOgC^gSU_)RBz0_%HZppHR;y%0fs%Ba-Wx( z`hHDpu9={z%d_t$xl{a$f|`0Y$+`gC1;ayAgO{SSG!RZVYC5yQeVd%V&6X$Uql+pP zRPOM;+h=_n&P8qJcJ^T_aSmU;Kh4?NRoT;l7#?Fky(SICXFXGL@;-m2W`X{aBls2L zXrgl|6%X`sDx$KVHzY3Qco*mr(yIOZu`f`I=bVOcnY-Rws}hjidpXHQECe#1e@Xa= z5uCTp{IwEqsTtUN!%;gjO){beM`AgSuT~#xn6bcJ(;H$Kx&UOp|Gl$qiJK}FxiT(_ffd$Oj@RTU24Y!`>c@jJS#$nH zZ&O`yO{?Ah=c~JQqPbaJ$zG)oZaily2V-_{+UwjdxT4o_Lt0%rR$IXMJO7&>F?a^4 zhqyVYm_DsyQqBND+y)kt<}VP^unAv<|J$mFUpzXfZ>85@n!H~M_^kru@=WqFT5v~y zu6@a~C4eC@(+wnU(t=M~4o&djAPNwFjKl^Bqoe*h6nx zndlc~sF6j#kUS0gJQ9yAC%-m1UTrnLKbt&&)cWlWOt0xGE1YAl~iv165 z2AmEQ)PgvL8tI$#=L>@Sv~~R!to+2%A3`fP=4`~wpM2YpZxgykx>m|{p9CQs0%N@5 zPWx>o6qFYG9Q_5*D|=ius@F2J!<_BQM+}ygr1q_uB;EU(*5SNuN+`QkQy|G>gerEM z;`MI>LIP9W*2-$jkJFlh<;noLaF!u^hq}Fgu7MtSTLtOUo^50O7}PTom8H7qMFHZ| z!)N`~aJh^a)n~j{-_jp6py^(@nt4I|waVRW4YP&unSluIwfVLZb3cr$vTxGo5kh{> zLaz{!eD{)`Z)ak*pVhShf}dakz0)!q0&=oYVr6xN>!2T_y8eM)o#1!Ebjit5?~aIU zCf$2drd!s+X^;2zzU~u_JZo^D6iuJZ{ABJvogUmJ$9byiS2h03)HqOksqvz&GLK+> z3tHtO>=283B8ck2qqwYdjSp(ZDLIr=NK3zyFepa&vmlc1!c5U?HnK~puBu&+Pdk|2 z)taGe67ba#gi%AJY2{+3Nc^eG_|7lUx~P_5LbCAf9rDgkcjhC9>RU#qVSDpwVJ7b9 z3WQH`AlsviXJ4M(U-7DCjjJ0;S~&p6Bsp08xyK+ka^0QTAIEWoX{!VPiq)FJ-G;?lKNW$09B@Xq^{Xa0Ld)=0>5H0!%BabZre8pFWv+0V8Jtxi z7QBgwHP;0bnYtE3mId~40@DkO?j`_LgPjA0FC@(cn2du%+c5CRcHzFIPdwKpuWK>8 z*{|@e^h#h-$#$pyDha^|Z*5w}5#wmKTE26IbKoO=gBeTO4+;a=Svuq6{w2q}0n%2V z;c2f+CS;>-{NV)G&R@HH=Hmzavvz#rG##gE>eGJZj z?528_SzH^EtfUunQGXXu=}J|PvL^`7Z}P)+6>4U6Z^S=Kt~FZEyg0 z+~nB&@W{jI^YjZ$SUg(!3U(<8E^xtdhe6 z&?|5RWxQtli9&^9|DR1-JbtH~tv;I?o@M>6!b!lWH|qtpcGv0zD`H*FHbIvY|L&|k zCacV~^-ehIn0 z$*qDk^YI$3<_7}nrx=Dy)OQK;pa-g~0=T6&iUVK$SpRs|^-KVaJ*~qEx5*Ia7#xIb z`FjL3$zZ_;Q4g&*f}5@af3C$27G0~U8^?y%V93PYhH<599hx`K*9;Gbn@@b*6(-J& zGeTf;IMBZ{0_bcl2x($4UJ|W-Ax6Ec+$OrLBndIG>UrVo^9<~f(dE~ZOOg{qA^kkDoGT9aX59=jzsgptjk&VhMS-Vb`7|AsuH-O02UpO>Y2}jglLGhKy*S3^96ep zgXO6OufrCfVo-JaEe2#b_n{;%PvMCl#0?IB4CYt@0*$E}@<+=*++~yMa9^uMt1VfkvvyH+z(@)G)=QC{mX@QWAPmCzkBBvi( zWM7jODS|TPTO(kp(V@y#kJj$SZ}={F@vH^vo5yO=REbRk1r;7t(_v=rZ$X$H7u0w6 z70uc{!@%4>Udb7rkp5WT^c`_3`yaP;S{E8Dt1|)giYVpBe3Ec<`=y)WucqpP5!gl= z=l&OSBSDIOt2PIbY2xJa37vmRSS57Zftk|bNCwR?{eVTA!2?#gVmP`?itRUUt|eOd zufPAa`oGhqGymK1hkGi@@;-LYS(5x2=gWU2oJcxs=x^AN*+!^VPj-gkfvtP;*gmAY zCxRv+9EC2}yKzq2o!O$z4x$UriG#Wb#S|b6(|FE(J4IF;vz-mB^VSrjEo&g5#kra{ z?F?*C7~K3>S=7F28lo3m=OZ#rhPcXsw-A?#?qp#od`GfsdyGN7v&!HJDIBsJ%v%x1 zf3F~T?In9mdI9HY4$@BqjH@#tjPTf-FVEmDk0r`X3tgAU)~R5mTk5L9INc*fZBURj zgigkvaKx}0tucLi!h-DAIN?TLl+dT|l#sN91vw4~?s>9>sG?CvTOlAh@WAeM2Wcz| z#G<^)em)>@CmYme2F_w*{0IRon}N=BDe+7$XA+cbL_hb4AN%(STrX6i(D&@{KQbGZ zNOFSq_Xr^(b{ur@tI!wlv5!6ej0@*2TadsH0#B98=}~sZ&VZ!Lu=0pwCVzTwniPoz z2p|AD>Pm$Swhv~E7r^8OP*4tm=aNqAC--<4X=zDZ`~b5iQgeoO5}IUCp0lQ4scn@Z z^VmgVUGh?>^&nos>Ab4Qxr(2IXtabud8(f}Yg96y-D4_=$bnoTK*_cb_MGG8PZiia z3KuC_r~sS*e-_GfckOWJ{JETk4ByDhzfZUntPc*71L1t^HzI6e9T1$k&-{$~kBvp3 zi}T~v!Q&}6BV@ndf~bDuR=8UV}6MU_^=7~@%Lw7bA`cH zNA|%?TDf6U1ON;)BW9aiZ*oDF>T7nIE;rcz<;0!xTiyRWj!n9Oq}sq2`~hoWi)nBX zi8j;TQ=X@uK&C#8;bQgIVGaqgL-2XP6tzO?>m$YqPQTHP|2HrWV|O3{alajy6m+J&lV2O`pkiQVze%Th=Os-0r^%R3EoD*{y)nBe^U^RsR3-*`(M>Lt!Wy#UUCx5ji6`UM@c{=?F^eFVyd%u27y?ccGG8VSn&x#XhHPs%LU9-|*@ONLD#%)EOU z6zX^#*E zs?2AS5h5{39J|r?Zi`KF`$Yt~Sl{WjCDNj|8+oSoJW@JaRCut#|05e@x}h(OPxw`s zeq~LG0cjYtC_Tn1~8_Ru|dF`8+SV%bs-I zrXelH>>y2@a9%%U92?AXCzRUlbxLaPMQ3$AQy7%ppU8&5pl7)#It$(<^EnY4K|Qo# zB6KYGMIz&{D(&W-72IDP6Jotnn`fLCMkFF-Y<*|@e9hq8F&FNX<$5z(Y8^{9&)N!} zIJHGCJp8%Hepv}Dj1F}8Mz~XilVG=(01{jIx-L$R`A%ldftwp!>+=p~cLnkQ7R;E1 zTsoH|*bp|l*~{}^>-F7yDK@Jm`AW2gz^GfQFmDzg){^IlGAGm&<7Ov4NA^XDw>vMX zOu~Edlx&Rpd3weo5|pw7$r_Y+%Ib^S3L5ZFBaOz0^OPhc2&ZXx0#419P%q5zD6>D{ z?BO-5Ig?^Llqg<)*APo$ewIEAOx#oy0~&2R<2r51x+BoZUMR3kUf^}8TKIhu>~jrT z9%8@ulI9Wp3cn=9a8J84K@N(qem?jdANu z892t;*+f#|S&juYS9`)P?}!%{eZ_~q2asvJhS}Gjiw}KylzeP%BKWH?f*wVD-r>IqIK%jPpU*aKxstFW88rZq z6Wt>T8L@BwByMbRKY5@jzgiA=zzz&TAZ2Gtaw>WY!6He!yD^{momd@2*y_?ZOQGe` z4uhaZYSWzyLLhXC?2MEwHs;-y7p!q8q8IxuOm(iSoffjfTJm{`a=gD{IL`!D3~a2} zpy?SDSm6GYo26gG>fje3P}`f|BdPM#&jOv>a@CRZ&UIZCkco2v*3oanfUAKA#0ZP? zXGXQ3ldf?jR5_I-eFQrXR9~Gt}&Ud zd9nGhu1=uy4Wcv#nS#ToUz7OYg2SZ=-8^N9&qbVu=;qrUOp?B3IR%gf(S`Co2jQJL zJ6i{vj`&}PRK_@wD;mwlz+Es)2*~-p0=RsZVubSg7^r4jywr~6Ab|nr+M<_eSn5DY zR*l~h?lRFRgZ%>P7)nqw{NwHkN|sZQXM_=E5$1y{L3-lY(--DF80KGZyr%!-+68LUc79ekWZ;Ekc&_(X~v$Q4;un$1D zs7+7*E6oBnuKK?>OA`aOKxbrXmcW_knkCFN%QfCPTBhuIURy>?fp-IE@$YT36yEPB zH)@uyG!?($ncMrwcH-Ls{-Fc2c*zb*ld+v~V^=uaj7B~EOEg*|LJ8W;Qo`$>1ZLa( z%lpEH2y*J}Cq)jZdg$LvpCbC!VlAp)17vYv$M&lHhR(+pREUvc6~2Umi21V8=46<`2~{yINwoV$n(2+eecbA88-9EmN|CC!#cPKm z-r3Qtn(}Qc{Z_A4TfW^dZIg1RzapWoI5usVLA>ann)tRLjj>6BC{9@wrJUo&G~q?( zn{dN*97p`UPP*xQw2crDqogiJ(TXduOxCEmkUP|9cHcBMdAKDnMTNax}z_n-9aM+Ms#5&XJ z=sQtDOjLU~hpq|;+iZ>Jkp22j#M1_q-vCW)j)$^K>Q+tRkENEPNw<(1Eky;SD5#V< z<672w`8nII%5GY}!!T!@_MgJT&7}vq^dy(g%UUi4JES#LWpiz*CNT1=Vk5g%5`veD zx%MpAmaob!0_7dTzU@LLFRihIGs;X968D3AE#+sjnVGBV0U~=f0T2Z8{R!Wn`FrOA zRKWTplV-|Fvdm$ty|_%5+3eNR%U())BoYH7TH-#Ezacm9UNq{qCq65?Ad~YLqxf#9 z1d~m?%CYS(vr)iS-HWAjkr75-xROf3!#pas!FL9{mZXLit3UHO7In1`coa}hy*kW# zcOL+3RqC*USrd{Py>m;VHr0>~?z=KFibct^m6f*(U^6etvUg%t`QRJsA3y5hEpWq} zZt&Z{=t=GZ6UMy@4F+mzC7QoF(suT;a`rNv{7uT&nz!NXcnU%EX+FZq-UVn@=f{@( zw$I9u0d(=;U z6BWhj378_ImOWodb>fvIxECeiy@=1tB9i9=`JBjUQ@^@guhOS1f||tI;VB)5rM!49 z^7w@H%JAAZO(K|Sv*wi*k=PHi;jPqV2fbdj(@HR++k!RTFgPd2(!~OUU`4)(?CUh^9B#EU1_ZIerK2Vl@ z0aK3&c9rVjHgzM0ukL~{@|nCSZe7iaGE@rGlkP*&3>`s_Sy;g+0BkJRp%A;11mZ#G zjAe0b535CWooyWHO7HJ&X#KciVuQO`tn)@>moP43MBcUwv!wRK)n>le zBm)W|SAWY4vAqpM$<{>D;jXor{WR!UXWUq9n<9@w{jim~?ab?h^2NT$mal$@46LJ)s|)P+DOvY9g@ozHFZ7CIf9c~5Et!S2bsP(7R^G&0nd|Mc1C@?hcqQ& zsTjyKndM6|j{2D`66_Vco3&R0Nr`zg>#tk6`}*?@cIIq(eXFlp4;ESfg5m?JXFyqfto-L;ie9OM>^XkYATmhfLc?UZjbnXOJ~jwFkzBF)b(dE3-M1Wi2<$YPWeIFGEws z^8PecXmUL^L_Kd~CuexlFj338QJ=PxW4uo%=K_Xjaz~Bb_Bv1oqiXJGaDdU7sr@bq z+cALMRE>^%)T%wiqfCKx*rP7(V`VeN(OHidlhPv&d!`t3`UDmEsDsVkl(v~VxNVzn zkmZTb3qrMiml2;|G;Zz}g`;g0Vl5p^Y2VfXq*mvcg2|3mzga*lhVb$ZM_*dzdM3%z zqQ%afK%Aag@uZiW$NYkp-57L`YzgQ)3Bnr_s1VC)5Su8sPwosmx8~L5ScpxnBggYNXWtyQeDr=_&m5t_NDt6@tC{KH z+f$1i)5pPL42mkYWH!YFOiy(-d&8b5xHaM(1D21q$bhM>gS@vENG{zRUEjPkH@ntX z_9^j?Pw}jeZ)US&SS+*8y8QSo$8rcRoILCHT-lv$5(u&y=!KKa76il2Q^$0qCQGoq z%@Tndv}(?3O2DdZ!BfI*VHg{i;MN02ov6?Lr!cCEo{BHK{h2{i={Nbh8^GrE_b)(J zl*F@K(rM~oEf!M#Bh0D-IBk{yX336By5H2`rK!WIdZx{9H|61EbA#8=lw~yK!shOz z{j!!8QN2AUXyt4uR;2`N0=BMD8^~^zJB=VOV3>6+>90*FtjKasmM&Sd=q3G7hVtH` zb<29N{Ii$2&FWDS;wR;DO1A0yLH6o+rjr#R5)OgA{1(j^vE4)zio0=CVxwhrWQdC$ zsX%Cx%IrdSw-R3!luyI#2VjO_1A+`@fWJNwCMd!A&%BYns%#vvE}g*rXKdM)S&>U- zr7E+h-V?lEYc2b#++3JCoa8A7VS}b3m=j%uyRYH;v6sW6m>&LnhSDDKZ?M*0H@56R*Am zntZ;_#nXMx%IG)yxmGbOUj;st>8(?O2WO=s<12>1snGvV@g7sh&JdVadd1buXOBe194b9t&QRSH1 z8roQl0xU*_j1@%3Moqyeow0X|w+n4RavB*{Gc1ua7*=pN!LGvUwruG{I{bqK=92@k z;k6;4BP;)CsJ-@^FuI4bcJ*bG8kV7&+&`X$4S$Ox+#GnuNyO7npBzLitzog6u0j(_ ze{oRE`ZSA)EHTgq@`6JmgQ{P!Ic|l(3v3lFSrSH%!9u%6xJ)?U*p*EG#|F7koi-vN?&mS1@z&3;5IB5Sp{%Pb~3RxOaAen!YE7_LK= zjPy@3JYv(zbLql4Y?1u|bj`5ekPgC604Dwc4Yd>TrJ|V@11{m&~C{}aUW8B z`pNc26^j6sw4!_!=V!rL#@Q-5^`wesfCxWTzJ{_34b7lTMiaKj$sJuFYUl zE`?sq431s}WFh3GrO<1W6EC^eKfkdSH=D=mX zk3d%2bgmst*(Vzxt~ofF7SEx%-PL+e`0s46F{e< z5CXLUll%{@=o*HBzC@9rymXgLzW$UqHbl(k5MCSCk690BRadZFt~6BA+tQ2JRP;ja z_<2*_=HJ$wgR|kMewdOFzjU_9DN2HtaDpeNMh0QL!KF19pTpA5LM~6soZF+WS3pF* zFXZ~`<8ykyx%Fz%Vw`FjF~k<&mV6HW(8enBzWDt#12=Ui=9hgpi+E!#(WHjZG8_Tv z{ES7%qKeMgJ<;GPs~WJF?~(l6g1&2S%h}SptQxrBGm-~DGp-vk7nAeMSnCoFP|q@r zKLroU7xgU7BQ3e8fs5Wxxr*9JLEcZ-AXlWGyixuskQ!*qa5pZ5AhlC?`0mi6M=S&( z+;^jDS*2-ngPiY|5BbO+th#0t7^lNJU-}-Uf1>pF=wC~p&T-_yidl96x}vT}FHMTE zHoetPa)l(1d8*=UR{>}l0{p&s1Z{=nIr8aNf4j-2R4X5sQ>&ZHb5GSl`at#otN6+x z!xrzPilp@;uBCfTnZ!FTR6mC8+skBLsYmbt(%X~M zjhpDyZ(lF2W?8$^4U*#I#m3Q9aTkU|=(>Hq8b;AA9Um!82Fv^9s-V$rw#=GoQIQ~tjV2(kRlvO-df51|9K|ehW&W&t*2Z*U2w<5 z&}t(@Y+KJrv+=o#Gpsn;udOzjGv0kupj=aj&N}S5?^)e+wqSd(a~=Z37z_mj;=yA` zJy7rA0G@_h4xz?7r(N(3%14Ndv8^8^+a?_;5oyz$LO|hX=bY2qTpA`1I zEeikpoT;8EGg#tk?2poGy_q{{qK%vZ34u9-KweRj=B^Uo4rQJJ@3Cb2(W6P68_AH8 zH0J^k?JnP;`E015E+z$+RhlHXGL~eFW}eof#)ryI)k#yXjk}1C@UC#;H23y5b>~Nu zBA90QfQ6QEua8z)d?aQFXNESbh)YFBk<8i3++nteqiXNLprA{l>hQqJ_)h#=00o27 zS}&k2Y4jTU4PbAY9rH;TJ}uqEb9yP4b_oYgk7G#=+lkA?;Rz$b;rQ3Q7p5Xoxkl7`RsroGVqpP}x zvA@&Ji*5MkhyXzEFir@&=P?pvFHAF>)uhWh#`yD>c-09aY+ad*lBCj`OP)K@1lN*K zbzn-v0yF28?7#RDw^d3(OakIyVV5FsU}Od9}}9w+6R)f9p!-DqX*Xp0=#IUhambq(d^Dwc3FD+%UvQ20bWZM9TJh z$650;ys(z2)C(_-FE^y8CN@3kOxKakf-<&|NdP&fURV>EOqU~U0D8`sc5b66yz-!I z8$e{+{)F!THCB8aaE<)5uR(EcVARuXZ@TXm$<%W0GKQ;-jp7I(k4BgYMF(?Oe2M`-ihS1>Wf#?Gvg`B%M7ZAkF zGNw7_j8@tbK?n3(`ObVIhvwl6UeC6K!p=;)X1y1SDot1;JHLrOYYHI|?HwaazsBwK zGnKdhf+N2v<(cTl`3@(O0)nG952{_$zJ?cKWqMyMobPs+TUD#QL9pKReTLtBp9cm< zdGTw`6H5HP%+xSDbK&pjqaHV_9iCFMuPenM1y!lj^nW6V~fboY+ChrJz ztcYcL(=RA8%)Zi(KVAF1T+P{yyks2oRSdt^-soI#!E`Sl;T-6|OgVt@N-%28#<_cM zE*G4$RZrWs zw&+~C6y8(z8y;#ZaqSOhn6pF43aY9GY}f(Yn%xH`a-SnqaurC?TNT7NH>S50PB`!D zAjiNlG~5vh6;D-fFbcaD7n3?#3b6}FPdS_B>4=cqf%D9f^8mRFwt<#Y5RFo>g(Hq&b{yotX}ES6L+`s|lrYz5iHzJiDrc-;XB_`5K$on*~vl!cYEAWr3a<_8*dhX~9@ ziZ|)rgNa4ZS3rP2p+vFLP0l2oUOLvG1Zm2zr%wV3{FdsG^PI(H=Z;%e77E_nU|xq1u1#Cfh@BhYS@Yq zV%HM(?v~@6;LX=czJJcw!=!i~QI89VIz=;BUH};j&CHXi>-Q}0r{Cb=C8ty@?t2LU zWICUB-pt_Ssl1NW4fP!9Q?nis4G$R)vHvZPw)x-Z(eB+_ZJD6$J3w#$kX}p9lWk`y zkp3S=Y-UCfWwDumH^wOJ>?h9C)sO#mtNxhF>sz{r$jyzE?f*a8w1Et+TcfZeM`=P? zj{Z2%vr~!4$Xqe(g;mc#6>!WwjlLnH$U`h!tu3_b?aOyf@GHJ2uHgHeohS<=)kKGH z-l84W{7DEZp6=lw7I$j;#<0nTq_1K2uaRiza{j{+_q@+wI(94A@4)cTR%hJ5QROhV zAM)=`q{RhRz^~(C$oPSinxnWexAB2OJ( z=-&py%k=TA;Kk@#oOX6uI=N)pKx}}Zl~1SLbU0DGUP_WSyVm@eKRjP{SjEY2$^Tv6@zGEgJYScCZyscEd!2|^{}Og;pJL`OQ5A;D z!^TW(9Yn%zjS|Ku!(X*@ICtbVvp+G>y?(wf%h+JjDqsIr)W8%4?7kt^H54vI&@U90 z#%C_<;JQ8&d1evVJ%g8O#zU1WgnCUiw%og{tpyF_JwLGczxhDy@vYZCZ}EuGfm`d3 zCR4Y;Iz_sS^xJJw|8H#Z>vFzJ|8jFDdc&fPFm~VsH~Rg|Q|vWum__Mdj2{6y_KddV zpD0YamD2x(#@S+n_ll$cplvwre6dR{m1~o$L1uY0#s(aQQh?YfH18qY@L4>$W5}XLA~7m3D6(FO)s$}!Sy?kq5#dF z^$u^un0V!`kMYI~Vi5B|_{kF2YyuCeLP)K|7e@TQcmjsaJKNX>i>IG3i8|Fh-hq?YgcI^Nogyv}CM&bU#Fwah?qZ~5Q}U~GqP4I$Q+p;! z?@V~RS?~^lHU2BW5Z|+b{Z?T@thYlTi-fo-tpt%%=fUs=8n^CdeG}|Wuf17G05~av zWxNE6esu?+<`bcpAD9PZYDH)=xQ4hI9a9U3_znNI7EWE?e*ScoeP1`US)fgK$cPqg zafdxgZ>K;gxTn%Y<(=lN*oCeOm+lU0AbUBx?Oh%jyCTHCyVl_g>NjHEzq1gQ^LOAz zGfn@GYjw+dzD=KoKtKB{Md46jyx>K%hMTFp%?>7Ls0#oANH)O;oc;a@ldrDozmc$j zEQ-+{-hRY#of(c^U`sOK)(QK3CK0^fGYxJvaCvR8O-;6t5vXI$syrF43ybLc^<9(c zG5W&%l~7gaPI}4gKD~q)>zVkq zy3gJ~R|t8#ew$D74|FNNkSkc5r&2D@#Q{_BwK{ytsET?zf-v&{!+8-n$euGud?-5Y zF(fC^ib1Pw)to>AR2DLFy3+pa#j4o-cGM}qGUwl653$3_7E;^gvYl#-E|2W&vZ6P> zw(&{cT8rVR76e8{Sf}*M33*G_U78IV!@7bjhF+)!iGLcwH4a7$Q&zuuMgMcSO1R?V z2P{mMmg6G`E$>O9^dpwLC8Wh~o9_;w0bU4(s7?mPb%0xYmpEYDSfE0)gyCjLxR)oe z@6Hq)$h|ECM4m*Tz0XUf|LylL`Q7K=ukQEL-v^d^mmxT$*>OltaK?-kayo94(;zvK zG1_=U^lK^ZfBcl9{;_?GO{@kjcCsrc`-kXK#lC%p5@-D2?prj;SqRfFWV9_<)g_y9 zMNYOH6kxb(M>K*uYY91tF=pJgH9pa@s_7T+)w?5H`2|-4?IoJlL&ua&xc>?DaxNZeiZHd%LXt%#N2d}4hn{%7U53zV!+N_@A#1W29`eIQ`0#5vqkGA8 zz(UU4H9sb4v?ushy1xWEEVRXP5JEflzT&v-0=;35 zc)%W2M7D8upY=pvAK8k`vrO0*?gZS^EqZ*Gbv|-p^Ifa3&&o;7m=siWduH!{Xr-+J z9<*l&HbK9sU!eby5GB=wEOM2Q;v`%-=8M(B5gL&;^V;jU0|Meg1{@9fgiDe|tDX4A~%>(vOSJm<5#^76kheMPm=vLNa-2-yyHC#qY72!nTve;QK zWleX?;xrD{a7z+wi~-TI_c1cL`yLLjx0xbrnlbw zt3v{LLNAc85~+_FvnzcaQE(T=$zx#;BLe0n`qPcMMY@Lo3x5&bK=-s2;B(+4TZN?; zQSPR*+_Y%rZz`Fa%6x%miL!Fn-`%@265QxPFD<8TPTW2%sGT}k)P%(o>U&^ zE=VBa^BPaXUi;HQC%l9GgOgwT`xGre%{i^Yc?9u1)HF|eC&%-@MT3;(y0;(EAQ7T@ zC^#!bywWD2TmNbKLk0@%CVFeH@PPM=L`D&15pRlD0%y1*2XOPZ^BOFjJa`Q1mH`*vx@I4DKe z)u`GSlf~ON8k3kOnaJY^u2HNdKF0|(_a)LrgV@1PGD zvRItQTYI7N0uM|-nqr93IznEfk0yXs9bTyh3oO0`Cxh0#Jmu*IK?=)Ug)X~*5@mTo zRQj^a^42aYkP^k)s5Kh3Tk&zYUP%%}8?(1tYQaKN@m}-`fTLOYY{cwd!Kf`O*lxw1 z+OI7zz$3VsyLACwW9LCEZ4c6|;SQQE9F6c0nbRE?cXvRd&zRSpz6Nx%Nh&F$>9Ujw zV*1QSSi}c*@HwRyJ|Keu%vobWX#n{_=8F$%TK;6x~bD-``!Y$8E0n|g=wIKtT?+as6eb_zQZWM zI>Tgr1YCQ|9lz5|@wda|aWvbcNBNqZ)&)@#+WS+kaL$1e#3L{LlKjHp9Z*PDvzn-_3!icV{g9X92B1#zYUsz7JJ8f)f-=m!uWUH;~QIsIZ^ z76|F-{6y}n19Gu{P`A*rUcP}2b71L@jBl&bR7oSyqDSY56DVwE!e}b@@!D$|zl-gcN%NMZ4_e*p}oV zBOxrff?i8-_;gQ8NjvUxm+!mg6D(<*-+`J$tf{+Zs%`7D1RbT>J(7R#%_pRBO8ycb zSD+Tx-R5t+a5QWPA|(36;kcGEd4xnWLjuF(nlw!bI#p>)+7Vd|3L*1eP~*-W9vR#) zT!<={w)C$lrk=~MpzpRq_zgPY2h-+%-8nTr7CW?KXgh#WyF=08G38Fw_vLcho1f-} zHU!Wh+x&k4DkuJR2U&zv?XulT>CyMKyq}h!KxrGA^LK8#Wl~f9Kb^Tp5j!{U6cFXIK5iCZ-{r8N{iKXvLfd+#z+=ipl!EJl_yBP#qM!jQ=z*esyB7!S}35Rr%2z9X2>J?~>T?39+{_ZUlVBN8$vh2R* z_QnAhpODm56FI0Z!volrQ`8yq^yW&~)9I?hBjme&^U^?6*<>TlW+Dk0WGdJt4R_id z>T=M+XB{IwX*IJmUXUi^V8shklI*%Bc!gUPKF5Dnp&SqTBd^54nXt9cr^c zls%FTB-4o%I2p6(3cRNBkT>=Y@Eu(cOss>`zxK>2yz`9_s#m$j<~Y`31912HOryB>SgPCXuHYBZgzK1fC zGH*#;J+$;=8U${2_nMG%Kfkf8fLA!qidyw=L{^EdaowCK_7W&NPwxGT$JIWvkyfroY8^jr=zx{y`elz5|qK51QlwyokN^I5($E7H3=UiZ~Y6 z@xVb%@{}Nr`u-jjf;*F|e!?uRGryY2oonX7|?KP53=YXNd__pc1+S8GwQCL>`P1n`78zcq3mF&G~xVd6)Gd1E$%cB zzCJ)1d9#)yExGV8EA$1M+|QKC6t>*Khw?h`hEGvfmri#UoG|s`C2pHEBt%l%%|xt)3_aLlpAzuZ5sP zP)N@rmtQLGu;s(4e$DP4XX(fg5I9f1HvP;FLX;K1WOkG|E2{J7qGTKonJN%PmG)UP zCPKBI{-#xXIQPw%k#%yAg_4pTMnW39$^FvCA=24`qj8$1PYYguGtb=ZQ;s|GEH z+_@A(T2e~9Ci*{eq?0!rNA#jlWx-c>>8jpI)d8&S*2H6W*;1UM|Af;ZL^p>IKUKC0 z^`f#Z$p+UCo5JBYXm06yPX<|S>tx$fuHA`arZ&!;v9O7@VZn@R9i)A3J%H@y0QvL# z3wX{I@SLve`Z%F&q`iIK5RQRxZs%|JnW-joyCYlyUF*(}lWTh2X11FljC2@XXBinZ zrfeT`b(uQmwCf2r3-qbI9ryryrZ3ZbqLVG0gRBO8wzK0vPCak{^=lhOFu$aztL)I| z8}Xe(m=#eoD?ttaf66?UR{wylgx-HIpM=@yi%bFDU%jfDSfn4EOaoDEZL_G=4 zcPahFs;Kq=F5#}_6k&dSi1a$4`lxnGes8NF6rwNxxH{^J3-Tala&dXfxHxavi{eLY z$Y}B)kFCSS&I;NfJ-=U(H2n)+u(#xWxyPQLhY6kMo)1%iKdaJ|XAErrBA=ZEoY4}Ddtb4)dO)&xY_2w#R$(IY zBbz5-Kw+2kt!wnUQ|)0k?D7?CPXIu)zqO2O^&@J%hY63#=QFPiX_MS8ffnAy-#5dA zrn9*^+l7={zWkj66G}Vd?$rNMYdwR8INHNcPA@Z+MoB7If!^x}0oZEZ0eQ{CR|8wJ zcKR&OAnVu}|3ji?rcS>NPqC%faA)@0U_9nWFgbjk@I)GO2q}yg-C`>936hBXmhhZZ zeq+R*8JUi#k}~%pti0b6!97Nf{c6BX`Q@{wy820SAc? zi}Gh?ncgddpS9rhak#+YJdyy|2_n2aU{^fqUfakb+N+kNgRPFjGrdKQaeoP2pCaNP zgBFe^GiYzZ(4%b7>~@3}(Sf9toF#E8l+K-RCB(!uX0up-?*_eA8|*E8Kxhn10xXmK zi?bbzK9wu@_a;H+uv{&k+b7w1rc5&G9aWOj@uTQTo&hCb^X@AU(ap~+zALG~7lSfWTtUXh_?4R)-V39O?yB4D|N!h41} zA+ms7w&%_Cg7cCQh_CGE>?Sh1cl7yz_O9MbMqa*Qr}NLnV6pU4QWz+Xxs&O<%|E>j z)2(he>gf!4^nuofHOJ&chR+gH6NiVPv=l?{k!#y)8$1$%blg&OLY)hf;%bv?17B>{ z#!7@nsVSc8v>?0pvzKgWgC6pmI)hl$s&#<=_jv8m1ye*8LD?l6&;s|{7!Lh|RCirP zhLY5Yk_6E4S z3}sVms$P+1-vst<0D;?n+8V;wu-(Vy!B*LGr% z9tViiPnHMqc?NO;M|nD#4n~?^NtGe&>h0N)r*X>gnq3g7Q-Aa*R{t=f272VV*+KGb zzroRFmaKe?wjj{PPdlC*AAEte5h*UtBWiZ9M%uD26$$D>B;G|_9|U8(8V*p<7>zR! z@i8d?ItJEzoqfO>z-E@Ugd-bux%%5lFuzvDE@R(mRgUiAYifZ=j<t;$$$Nv#z zKCo<-2IYpw;Ms%pvt7mZT0pI_Z+LgvH<_6VGAcP)jOKu+`C`|+XY#D0x_HSE#XkY> zv#ARXOw!4_2UfP%kvhRu?Uo->ffpigGL?|z zHJFzBV2fU}H1f0tc4jrh4(Vao^dym#A7cr8gBNsiJM&?}y`{vFQZj|kNXIC6g6nMYok4OUG?cH@CXH&CL(Dw&ty!?8 zBbsrq0wZ$}T{Tr~n<1$a9bev6$};dO5Z02_BM@)H+-z~c%8$ZWIwmp*_|NQGXQT~u ztd9@5u9*w?Wx>f+Rv*FsOdsis<^)T>G|b-EO?&Rlgcto9dQPT;)h%JjZCJFb8$0D@ z_PkU81%4C7Ij$?BVLU~S8Ro|iLP{+5Ru ztEVHpzEal~#>F5GIX7VjsrnzhTF|zaIWbyDESx?MC8D~}=G!w);e*TcN(`NSzw~Xs z(T*WBr4~%e+zY5852(lh?#84dTV-V@Y5#y*2eXUH?3zwn?eT+jg!7Qei$#q3A{H16 zBk`eHf9+s9OmMd4S>nW41@<f~#FJbehw2Wg(ZMIf{cZT)LXT3;4G__fbT z!gIp}C#eHiD}^xAhDG%EXKQe~#v?{`_AUKn%AeZ|Q!TM2TSj0ti^?zrX>KB3_JqJ= zZiJaMts=a$zVLaDu|*J`QM1#Bs(jy#4*c!l!2j#l*zmjYYIVooRmwsPBWwJsEvZO+ zj}s{?)n%c8LZ&r^4Qzz?xH*Eexlew?qU<`HBiH2h)gPikjk!~83tni?u$^opL|OPbf(`$syl;&g5AF;1tlF;jGoBEy%UD#O#HQpx+XSIZx5zTF+5HV6%FO)=vd(A$+M+XlB4#qfN$;btmd4A2i zLW6YCzCB2tlS(B%7^1JO#!lTn_H30gynpgj)|JpY_?EVDv9=E6f8adSfmK=O!&=pM zG`8`-0>-iHW}-A*P7LLIw@K=cB?;vLhQ5Yyt=(^Xd$%k>aF@+=IpDXq==lUuGOE%@gysN)EU#}QLMOY%$PtJu zMD}2$^1?fEy)H=#1J6 zkt(4uCDhB$#l%Z6wNnOvlAniHoFp5 zLg)uDG=&%fZJ|o$GKz zu&v1?k~6izkXflM{z&A=rz<)xIk6TV5kkh%6a#f~1ZU@D1$p}o+$VF@C~*W1F+2%Q zBeJYb#FfKdkn7$s*uhQQpZ}vO>R1PlH!D-fRwnvhnVtj#MLWEHpmrN`kG*(%3?E@D ze2%~~))qg}0VI!u{S2F2^B@RBIJn@|T6$254!l%cks^BT@9b5?cRH|~uh}%C!N}kG zmh(v8=2xiJ0rM;|QQlw?v=2@Orwf`}Yfyv3ZdgSHWt`T0_|iX-&{5<8KMDfKrUkix z&VFZd-Kfqpnt*PIRcwj{VXCU&j_$_5UbY}@CTEH^q%U$9l*3SJlPqD9;ns&O+Y|o> zFJT3+=gwGjSpx>;O=AaSdY}W~6-3;k;yf>W0xpi^xR;G6A#ND}s~;;%JC*m^;ix-6 zo&;&VLBywq7aN44sTLK)E~zGSZh%o#+ep+Zs$=>e>UKh%O<5`~184gJUZ(Tp#Ijya zxXNjh?dk^Vz@#O*%R~a5n19W|KRAuAPDKpvY3TJYyz7onvP3H(;2LZX5-g8Ir*2sU zDir0AQQhZ#o}!)NaWnUx4xD~AtVH5&&fM!-(Jt$kTcBNg$JpR{8AC0{Bjc%=oA?XHDHb6e2J8)n61j4Xz*q*hyXI(>e)^}TEvukcD?whv&Dpdm z9Hpmr3k%G9S>o&4y#xq0%JSMcT!>k0T<8Wr0g{nb2~=D=wH4zJq%cnGTqGN+)kxER zx+~0w^#^;iS4E*6n+{oV%U&Fu>^*~H6R6klQy_ReF+Osd4(8fj6SzN0mt}4on2VpxCr#K6hIYpIZDl_Jud_Vg4 zEXdM?SiRp29Wk{%7EJy!9Y9V6l}X}7N^P3Tn_gF!>sAL|XGSy5_x5H=T#TE8!}bl)Ew_T)|0JiUn(A6L`l9~lY2IV#mqkOWs>4Xx*g@HroT-#FGN z5a;_9SSvC@V->&t1QY+tNK}%dhBEQ)vhHMKQUo$LdKSnXK z7biiI@XxUeT0(pi0^o~goZNU7v@k`Rh^ZwL!_myOGaIoObGCh0% z4ahrf4`1;#N5wRa_-y;NmKjNorGe!<6cD#q$2#HWNU1$T7T0zcx-N?=nLrcEeIUaq z_r!_iywVdrV>mWKle6R!d2HXZtq1_oaa_o))V^7x4?N>^tYUB>qM*{* zPb~3+zktOcL)?@8+aGl%`67FbD`GFbOMERaLzGxM@nfHIO{717ynL@0g%fD6SZwj2 zin2<{eiYckV?JER`HjBy%zO9NhdZ~BmlR+5fa>n1!k7V8b29?0jjCT61DfdZbZCQd z#4MH~w#2LXfYR!-6dFskgCE44wiBxSMtnGmtNAGLIMdcY?7ds%<%aG?%=3S`mbcK` z>k&FI!T06~*y=M6S7)n(En?1Xc%qh5C%rgCF};vibp2HE6Z|;fIQA}2h?Nl!$C+I@zY?IxJx~M>sj_Bcir|b;YS&jYB-qPFDp{{SWvMCnDHJA%GtCr$w@@Ea^XM|=zZGulCtfC1@D zk#A`VH^Fm>DQ-tN$uXXwia6~jrd6MVHc0X7cW@P(NXcbv&%Il{*r~((?;epiMFdQq z@rqV}zWS_&S#rCrLXu}!8evkz+Xesn_BBYcZJ}=edBjrO|K7RZrf*sXqj!pq}Y0H}f~?29-}q>!awgOkTUW6GXzn&PWHj(kVY&pMju*e1HYw4!i18y{gUhkmI&v)5#U|TI@ zfD9JGL5_uM^ey`<`VFu%(zs#*80(qdV>%4ee3mei6fInP-Uj~<%;!}EH`zK8bzYMz zeKbja5$C7;ANJmBJCUYa7JVSTG4SrPDk(|`(Fh@g&>cb&-g}<@j5#B+45HQj{p&w_ z?TdZWYM@M3R+?#IMtE5_!wQcg>OPxWq^8=zZDs4(7~2D(3pZidWRYSfKrjo_D%?g? z&kO^N}pp7>;^BTL6B`9D#;p4?FEK8!K<(Q?~xJ zA9%_w$NPXY(U#ZPvS2>?6c-hqH*@W%O=XM`MWA>S6o9OKYM@xIzAvLJe6*-&ot)v_ z!d|_c#5C{;Qj-1p=-wa}8&gLx3tU7uOB*RVyd==990$_~8+T1A$*PW3Em|JEe@d?7 zIfue`8LMF@=$beMoPs%9K}i}*ff9Y__;CosMJE!3^l)UwtCtdpBu`MN#hL~T>2G-8 zPRwZmD!8wCsMlJQI<9e(N=~ptZs+FMH5d1XcGZO8mi%>8Xe3#hy~+Lo%=bUSk~x@U+Ly+$^iGo?+-+;K{; zYX1tyK~0%i#MU$O1nEeJE>Os*ZdiSTCP;kMBU4-niyVz3$wYpBbwl2c6YN?9iCbs-@vaE!hggjX$tTNyE zj=G8q3g1qT>em^s76Lu|h<*djmilJ?eG1duPI5}!EBllw&*P(&^7Df=Qb663782&o zB&qO=2S|}7P2d$94?j6|+1r&|^K!g$T3SK0p}dT`v>J@!8($A@guOirFMg6%fQoNN z>~Z{skRG6Q&TTT!${uFms>+Ub0!28o#4wiG)NyKGcE$`(9xGT^x{&&tz|)Qd!RQUkkP!7)6NGdTt8WPrdCbhA zHk!YQKoe(KHz*VFGMwZ)#4gkB7Rj^fjsbx233tyT)P)RfmQ>D@g8}B32FLVdxf~9( za7Y&CJAU5S*ge?NA9ej0UOeJJW&PM)Em}7IPRN@zy2<^UjhNAO$4|Q}`s>>RXW@=9 zlk>ro`OJIX2oGFFx55L%vB!NuZCWDm(q9q3d-oV*9r}VKLcvZCRSG;I|3$4*G4{No zusn(%wq3GJPT$SYU7f--g+PeU?uHz_66)+b-lA$_o#F+43jZ%pK@`(NIJFQ+-Gper zPsdUTO_^>m3s-zsjR){5`xEjbIhR0{AhE2)+p|d}EZ$Bo+(6~0xl|(PP7a-j;&v7= z?YVhtlU|d^iVqFYPDo#EDy1@W;B#(}8}M*x65R5{YvQ!-%=fNN`{?5(vD<#0=nEie zVTF509)_u22KGve?))l;Z6wKINHsLv^OEeFn-12@Bw&tp^GzTC)iA!W9PO-5fbm!F zNN%Luh{%r`ewjThj>H8i`A!Q5c*06@Ik?i`Le&9f(!D=_E>(2$)>gVe=+e zPiR}R6}wd5*j|sdU{{@0bWkAv*xKQ(U9!uf;1=YjEWfZ ziP&(>j|G5qwUl@j<`=90`P6f~UyEEU^V?dXda-3uAH${Q#ZRtegB!}L5j}jfFrhO` z{Cb1C3KT7t7YzHEVr%`6?Y9jM#$nSrx1v~kY>5bP6%=uH@xJYjd+=cY#$<9->8$32 z(_wb`&rO|xtlZ=)j9|n~8pjutN7=sxdFihr#4J0MdHuI;TsWc3hIMX!0^njyV&bE; zSIQmbIGi8`ozV28zx&>iTQz)xj#S*KlHoN~!7~K^E-qN5r>NNE%6WOX>H9(uz+~N4 zSj{;Gk&A{rTD;KJd-F8IzN#db-mO+{M)Gy7te1-Vkwx`WTWQspI=N{?QIt@tM+a5ta!lTeks~aIZMb~NQSh;hov_k@pf$z<5dhF)n%A-Cb z?f%{6{he#C9CS}F5FC&Yz&0qv*n^666CvUZBGC-DN+^0-`H!R^3W)32km>KGAQ%T^ zOl`elVbp|Jy%b88#_nnrgs9pw>}C(Y(RuK$bsidyU`28ft5WeXlm$KKjYdoNZotGQ z!Vqr6Z&B7h53YRjbaPR;9)G7wNb-0%#KZiBV?{MMc2Un9)Z;Z97PpaRsDnI)<4tYq zv<<8e&+1?GPr0z$YK~uY`Fqex(V?=N?^A^DuQ(#%pCbDoZc03EN+D+c6^puY7-dxI zrZDPg-qvf+GJX3`d8Ejj>jC0*CydR;ToZeq77RGEirq}2trZndto|o6&I8f2u0;j3 zGz;#J+)*vIHC(F7`EvNsQ?@m$I^{e5`{wWV2?PMSPh2n}=I5vpI#CoTX+6e|C_Q+@ z#67tY%h2iC`H1L)S%HRq9xrVzBJJiMN#RD+R(m|Iu!Kb&A($5J67;Zp_!bx|(o1dW ziXDEbn~#{<2093hC1x)AkJt9q>mYVz*N*J}2oMtfQMyNY{PC6{Q&c5|qMJJ3%x7_X zoRRn5PVv>#RmvlDC^8w4QVI8i0(GVAed#La#LTT{s*!Sj4J9+wt|a=uYWT0D-=`>mwgsqXAR$>L-Cn(!}{p}c8z);pB z&7IZMWnt^{P0JF)u!iAXLTqQ`uAx!22Or1LD%sgDI%VV~G%6zkZK$k}>b9s(@CsVO zgL5-N(6*}n&<-;(@mqHm%4cXM*m}mf_#Mi7DiPBeB0%(Wa@75#bK`3-TqM>(Wv5Zf z|8<1-t9AR-GPe5j#fzP~;ginczjo8$xww$h$;Ue3gBG(1DNvJkf9{K{JKdAsavHbK zGrsPrb2kf$!R}e_=bb7OI4;`@U;uni^^4sCNcPbV`c^T-HX$V#(5~Y>&~2|z&l>r= zewE(IoWH=;i2UD<>#9zSWfgF&=tZ@tV-WgOwMz#m75(&C>R@`{DL9(e!>C$Zx*2q^ z8ZHxxT+Gifm*eliClGjsHw}god#S^JeyO@MO~tEiH>*mNMD{-RLJ9cp92Tr_Ti-|P zZZ;AaH(%FDzC=Y`g4bEne7lMlfI=mCSdaT92RgA~Qu!`ODyPnHc?g!=K@qO0?e<;^ zFaHIn`c%1zNAQ?}^PHp7ci1Lx&R2H9*bNG3G-R3_QL<2U(SZSJ!gx|{0Zo;k6;3~DqqfM8}6dpLNJEzJUQ zk7uM3E2s01@Za-Uqvqbj<$Q&vH_FvO;Qj>Xr8lAw6siZz#Jv!@RF0uUy^)*C znh0C+3L%ijQO`Fscc}5o_Ac)-FMhI{t36DsDiL^3?~%{I*ZzkSkupz1Fcr1M{`d(R z(NL!H=6P%_C(U%4H?+xH+OKE$dbD(7Ih>-hJ@^~utb-sTyR-x{*>)C!neF9;1VoXC zL}EZXQ)<7$JVVoVJF^$&=@hBDScf4cmHcFl*)ZPuJW|q0|L1$(`zR36glli&*PgiH zNn#xyErKWSa-m3H->M@cJ9<{_>xkWuuei7iG0U2e$wxrak|DG6atS@=81B2~)DBeX zN*Tm*l<3^!4eE~hVm%W8hZS(A=YK3Vu^{>_*d*$DYJQ3m+Z=^t^-GQ5PFyFv-E;o@ z?b6=JjW(jFSMq0WdFS3-{cMOR&;=d2$H+|;?dZR=8nP|xmFi|@D$#z+x=UpQ^c)4n zQtbR-S?qOn*~Al#tQtZ=D7n!(C%o$8-?M5ZiY#G0;of`}fq~kXh zD!%{Z#_>8QLzB;QQsua9K4SG|q5&polzg+)c>#`r_8fmZ76(tQ=^BOG8`%@}kzd2D zx2Yh5hrV?9^Y}&guiu1)CzcUfiG}VU4o?HxS`)e_U7itT5)4D$EuP$O+x@f#%JQZA zCuva-;OSSSwh{G|S^LzJ49k})VmDpr1Lg|}uA;jP#v6=!F#X^2YJ_HaDO=@H)HWfYD({7e< zQtBm|0V8Y9hg<*|u$?!%#1Tb;FaqD13D`Zth)HT1S7j)nV4x#ZGuHpDJIA#bQ`3lc zfo#>5S1lM;pQ}sEESo|mJ@4jH?tfQR;t}o^{7BIzQGMv7&T?J_D*u>jG)IC|v zq@ZB5n$SVP-(Ipzgy<46ryjJ9C-~H+wrxF0S#yqnB8YH%*)0m<2p=e%t!Ps#)K=_E zF*)JK{;HCK;nK-(kupdji_N1<2;~VcrlH+#HGVNqrLwhZE*)i1E86TI6gd%ZnWVzH z{#Ri!kjW;3gc697BSjcsRS${l3y6B=Y4Wd6P|%$yvyGQ`DH{EGsRz_WPLs+4#J4z| zN%5Oisp(HbG2z4!hmo%&oDOnqulN=U9Vh03R=IHS8%3zW1DqiVxXO^c5_&pNfby~P~DBHzO;yqZ_ zh$`|6xMgp{AvVw*p>hTROc}gmgKP&Y8mSn1l{iDgsuNvGdoKY|gE#ZkSgYE>6j^Qk znY&rWO4JHb+T8qt$nqh1)sTy93fRain!*meqWMMa5{FiJh2zU_F3@ypR9;J*e!qvb zPBOY4YcsyyC4^4i7m+PA+)zxgq1@g&ux^UFv#}SjeW5Z-ulZuYPttKjR3*9s|NOS7 z&nqk#Bd(vyf&p(pB3(X+{{ids5K&!M!iJxIthS`W=GFszLIBi=O5@Gd&-mMTQo#F;95Se#kp+`D*}f`Z8I#`|@Pwr5>Ypya z=$&wFRBBEWdxir|v%Z)_1&}pIt`Ij4;6DmON~C`%wzK zN%q#Gm{Zk0#qD+v+3sSr-DD^4#@l@%tLr(^ZpZ&ekwqszEEK>@JKSz9)&t(`X776t zmOg4J&B~oY)-c=q;UNkLvUb_R?uwu{1>o4q=+G>@tir#06&}l()1Uq8LlA(7~ zn_`aXW-F{wWJS-TM5jiKM1dgHarUYyYC^S<6F!4xtyPSln*-Z!ZJN7rF7}hOSu?em zzJ1>z?i+hr-nVG>^w+bu?>o-jIG6iaWv|XujkfI(Z?M7K{{)G1`|EZc5Xs8|cW{#& zgIg`qyx(Ca?LC`U(insJ03M~5LbLF_s+!>YF)S5OxH!!%LO=HFnqXD(W31;B&gz7 zOt>Mi4TvKRDD{c3$-==xvFw4oe7h9O?v_{u*66Y|wGYe+2JUK$!8P3yC%wUWHF1wy zG&2SQ&Ydn?aK|tBE-)aV7R9`JKN(*lhp=it(OvdLVQ?9Fbg0&D`Jg`ag$3mYN*qyt zVvuFE#nmPAdY04594bNK#H`AM8~8Xk0B7hcn{{qoM5XUGkw}52x1q)|br0wp@4T&O zkisCnei#2Wwbk0*vWs(zym=W=;>@;!mnDsOK-#l`fMfi?+_qv#T^;|IGNhXDwKl<` z4=#c36n{UToVyB1);lZ2dTkB{>@fx0H*Ca1#Ssl&e zLCaH(qsxwQE{dFUjvCrC&IDjUC#PhScMyu4sMi0cE~*d+58Q>~WKbWrHL6 zd}=9r8Qf`$>+Mmncm%}E)6N8c`N7qeWZW6XQ+tZQ%^somwX!6rBa?v*dY4FYa@r@H zkLHyB-e&sa+@^(xj7r z-&w&RNhhC+Y{uR3)xZ)q7Xv@>>>l_73{Z364=H!Yry<8-{}Uh#A50khwaZ_-pE~A^ zkGo}g(UiU0ly_qv3^Mj^Q{FAjyX|>5cvHdc_;Z&(clGC*X7Q`ereMN--E+=l<&ll- z4R*ak6r3~EoKi0J&P0J*L2&oZqG0~Q7@#S3b{h~#I{npIG{N_-EVF*uOh~w8osUtV z^ewIC(C*>6F)Q3GJYgRTYSE*G$onoc%!t!(9&-|mz}M@av5QXU85_pRxOn8O0Hs26$RKxxTv7Vf8Nz zzu4vFx>LLcBybPa?2lv3UW%^O-c4@YZ>{rT@|F1ws;ux<=9)8 zRR7&uNTIiTbI$ieq|;^UjzS9+LlQ5cz#$23f^HWllM2MfH#j1bw?-t}<=dd+l7AO= zL~>xyHnE4s0+NdJ$zf_GH)lHi#o?I_=CyiYTj4^%?4zFRVU^Aok2aj$OS}#F z%8~Bw%viuHf;D%1|@U%d+LSxF7#3$d`} zDjK%zYS_|CJO{j59w@;y<>ZkCL0K)wZ*Vn}8djE#1|fo>g4R#&0Uuk(vear>vFnpI zN`bq6H4j%>)J!FuaX7iQDBYCZ3j%AUlZ(9G>P@R2-SZd(mkSQ#Nd+`o^5LU!N4N^E zEHQi~$9h8;Rz;l+Lv}c^_oq|Zwm7dg?f&03bPJN$^(u#dIdp5I%6SK>&3r8GWZSAy zCx7K)C2(5D1qfq_k><4*Cg;j=+P^yZjMv2g(bItT>kXq{(s@ewV*na^NLMS z3Dfk@j}lEMR^a3rx_NA?8%u>O0C~;SjM64X6TMt(YP&m0$GMY-Bs3ZzMs61Nhq3*k zeDy=(LXkxMGRZ{RITL*AeWih{s-`LbM%p1M#+IyELbq^_sOV!q!nC@zO0t%qW)_j< zXi)B;Wh;u#C*;^8+Vpb$2gVp zanG}M1By84J;&+v0-{Hc^nU{Y082o$zcvt*V1zu=$Cna@pyd+2t z7_rgBa25k&Gm9!OJ%^Yz4b{=_M-CW{kgg2gd~AOInvgZ1GS24vo6+!@aq!R8JNneO zQ*(^Mn#?Ni2DwvR(Up!g`eMw*9YW!uKiav0Ge6UqEFrb~cuy6W{tQRcz zVjIhhv#Wf^4zP;NNRLsBG9&Nh^>A5`JTJX)Zw`?~5|SH;6Rndh@sKMgubjC2$c<(+ zaxajN8}hY7d2mnmnjNmx#udG?Tc!y-^z|WDl#AYOl%CFu!3~mMgC&_7l(UAW39843_np?Gp9E|J@{7I1i{of=G(yF zwn{B*VaqLF2N!Xnv6gknmSPEQff6g^v0k@wQ=<=_t(&mxcd%iv7G=V*$8Cl;m# zAd+jRLpJ2-iMg~POIVqwmZmCRWL93f7jq!8SEq_JCrAU6JT)-|mtnCI_eiqs*omc) zK16>+eoAa!CS9S&!q=-7UwD=EP4umsawYUJ*NSIog5*i6;$41)#@Xqu0%&?A8@E>&;OKqnq&6C9YCLsd+cIH8I_L{{&NeSB^RMGN59$ zg$EaRY2k@mWlK$pQQLvQ8HqAL@4G+=Ood~ z^KsnC{^^WRj16Ib@(X>eV=8?C=}n>P?czHZVoc`l(vP5}_8^qp>+? z|2+&k56XFsBXx6kH(tPm7Nw4?&hQC|<^<=v7H~af5yfi@dxH16iG!>52vjuEI~E=P z=J(SMr5*0!_V3bHZRHAos7=6$Ssl@|q4wsI%yW=1n3T=mjPsfRz83AD=Ah;@{505x z!r2(TWmYMkyd5X2Ou4$mp4t{{zB@CE)eoCtUf^)mmiM+b@@486W>fCLDeApuMtDhz z9(i8jkXi{z^Gb#<>oR5_DkdLwZ&7a(9@lkhS`BYTicr#um$qZx#pKctO`(K;10GHo zjI2k5@Tt*y)v=pQP^2%BCE8IGNRnGOsG)gZ)Igvk%ZdaoT6SSc1K-okD#ZG6SOA@` zu9?Db)Pd%adC7l!l8HNxJoC_X=I$4?Cl)2^f3b#q`z=(ziJd$UjFt<)dw!(cO?|2< zN(dpFW>8N&#b@WAn#otmi8n0hB2*%ik|euC!$ZdL0Yg#ZKEEHwZVGJQg9|4cmO`f` z!>uLW*?RF8Q{LN|>M;IX=R+R9pw`rwy2AOvoZ-?kf4>+(;^l_NicD9NWFM9Ykuccj`g?dlH zJ@Et5&3M1h=ay1 zj&ATyWCJLkP4F_Le64c01ODM+`NZ>Jy;`h^L7Y(^g#0E$z?BzX+R}@JU95vIP2RnZ zAYGNbNbCghVpePmZ_yF5_qJo6?Dz6&RZ8H%w=`6MmU$cHy>GV)^#<*Y0=>cLeVT!o zp~wHKq|uv?7jBgFQ}?{-zq|Pd{h}6kTfKcV zfW8kE|IxNlm!OT@GeJVB*?z5WYdgjJ$U=jHyC$SlCxqm_-ymV%KnI1(c>^bWOsh9r z%tj!C{kh^h(v5fuHi1rliZTwCv7gaT^^5)$<|g^H-^HHzEi5+8OoA>q&r3|K&$pO0 zNK=fl1!X5Nzoo%UZQRJ6{!D|Z4(s6&)=!Owg}9xi8I=}GC|7f_1*P8LQecL@!PTyx z@omvEKamEuro8qZh{(-*>N(1wnSBDIp%4Ol=!`kS-Um_wfr~sjrKTg$ct;I54GsX! zt7y5?BSonGW-gT@5{xWCNP>31hL%hlsKt4X#3Rh6!YYo_9svER9~m74u*IFE_ zQ{E``=NYt;?gp=~nN_`d=acWY$+CGv4&b5d$o?0OT^s5GV#LN72ml*e5_=k-*_^Id zCu|^dM0Ep;(MH+Npao}m6ZdU9xmlF;>%?;?a7A+hrQV#P-{*E|Zhq4o9iweTOxuzD zz#F*-kg~O?-k@754OacClYWd$J49TYDu)eoBQUe)*g&kEodsB=b)Ns+3x8!fi*g#a zrD4TJhT6_>V&eHXxqb;b=_F=#V25cFAFtM&m~eB}9gn`Rjm*e-X-d){;OunHwIG5& zkaHQqXU3}V8Z`}r^ok#`=nk&+1VGkXosa=YE%!GAWWM*{ETwSE1iFbG#9RDSQ^wPq_6!ER(@X-D+XnryKa9c;@*l^C%p(XRtkNm_zl*RZmiuc$hMX8N_5}b z5=r|G0CK|Px=wRLS4dzHFrJzyT>Gv2!(La_ljL*g?Mxp?+kn~9uzd6#CCq=YiF)(v z@ECeKi8*^r+@d1JJE=wAuNuB^$B{=Iy3Wy6GGh@|Oa#rEs_TPu+vQHg=_f zQ*vi?gErGYxyVWFKaJ4 zUDeJh`k#%YS|yJmWW<0 z8@pQj&nTMzq}Lk(cnWDiIlX3sT)Vf(rlhtbVsRZOr1AK^`#>zSHb0UKn9Je(7}DP- zDOEhOU{yskr2^?rdRKY9+P1LpsQN8ZgENyvwXzRlRgNk4KFpEv&LU2$`QZL}PfksM6 zJ+L}-PMRgvJjlCYMEwjjQ*Q#3x^X~4qq)^itXD|ng+evgrWT!=63aL}>U)KUd#dRb z7BDOrd4yDDEo5a_VA5wnp3vHoL}3E03_I6W?i57B2`B*6WM3XQ=Jk-E*pRlPIZ=DmdhggHv~JAVLT0-LQsx=}kbW zeJ}@jEdF{PKlStsyB2pX{jwXOLPyXLEYs>@(%oFcL-Iet*v)OZMhdq zr~SI_ZQ5VZK&8Ui)-4d56`!$^W!jkRwsP~u2!}vlUd#f)z1mpcz+eXO^2{yZgyv=) zqYqf(@z9)|yTa35z1P|+<(oe@wv7|8eY8(QP-aI8Co%+gQ4XtmP#8Pjfq;-!w%5mlGj$i=fP zUyNPcX_nAES@12N+(hTw&71~0q?vpH3TXB#ytUKHu)njmS`B}j6L_3O7c<$nVZxCg zUd*W_UU2f1P`&krmbh`uubk5Iwe#oLmV(D13K@rVt`0e~4Y-MKZvut6ktY!lWfcD5 z!pbe^bd!H`VR=+3Q1FDvR$-ezT(|(Yw0Qf%S!$AJrf#&&J5LNKnJ48RE?olTxcqmQ zo@f}kHi}HP964hPXL;0N6)^4FBg9R+qwbAy-2knrECL;gMUH`cY)^Pn z()&Kl>j)+_A?`Yg;!uH`?&OPPZ3+!r8GtfQ@)bL3#O}silUFV80}_?;cDkav8zM{+ zS*{pV=&Gj(xJ<|BoS;-NBj{yHk*Eol;BgOYDr#(f5=hmPC}TWDHsC32{~qfS8!Ngi zN8GKWlAly+!&|J`d(BV`-`Emjze6CdK6?s`+l`rziH7dk_Q@&h3&A!QFy<}BZseR2 zWS?xS`HaDR<*DQ%sabemwM^NLG`_EuAA=+k3iC{|QpEjO@5b)3jZ1EE;W^P`8%inK z))G})+x!YIjOQ~O?;HP3w3{qfig~lV5xwaB@zbUqds%#W{E=1gw&BTb^hfayWqs5^ zUw@UbtVAFyBjcPG-^vQBYqxZ^@_KdQKb6Y8xAM23;?q2GVAtvH7*$N?O&A~)tcXpa zze@c}G_JVaMSv6K0^^SoaP>kE1-Xanj{lZgd*R3FCvS*WInDv5aU1@F$ z{jw+XA7tn^?(b@I299I)*keDlq@L8mX?{tO%Jv#8iYY^{ek_sdD;=Gkc^ z7YNz;9HyXlUO6OVMJz=hzI@--$Jaq2<-elL0 zp^8e+T-@(5T3{(#HbRSi%17NY3ci9MWq70)#CUSwqm(U%JimUplzw2mbMxDHr)|}( zE5!ny+1Qo-O{~)b>wQFoYFa&5K;ib@EasKpMM1+LkPtO%JT&b`>Jo4te+lX0fk+rD zp7+(#MLD&@D~j7J$5?`lkckL|d2Q?46FffNavTja7vZTsLQY-&eTFy_#oy|LJIb|U z63$xccmP;rzWlbbR@d%6^&Mw-NPWlIg~xTBrp4Kf(ptFrsc?qHJhIX!0AB@oZsp^s zrenUO_DmL>-ee8Ek=*IJO#FQuY1PnmrWOfT99Dj}+?VfP^yL*20Ho)$6mih$*iyU1 zrY7d({YV2bkZQ%TA|Z@ka2LxBl`B#eo6Z!Kb$3>?SP<_c%nB12174>N6)Myom*q6M zG2hV*(;0cKXRyZ`(*wB>7hDopqf#$G=mZZ@LRgJtD%}&X%N?Lc2#Ro8CBkW7^fYiU zl*}|7?*vH5wu6G;4ZI&glCRta`ACsTQIZd=8?BW7VxEM)MLxr@ddgE3)83M}j1QaS zE>vtw>e6N6$o_HyN`CpmVj>1 z&F<2$IHru>;oA+0MjLB1qBheaT$A;dKmreDYfNtR_h!U6wK@*oq7t?Z$j1tN;XDk+ z8{Icd!}&?3)PHH^Qur**3sx3ggL05L=#~J8Z=i=-M5O`4_&;I~tbwj{qgaWS3R<*IlVD8c zE%Tz4Ho%+_^U7ez-nYdxb(rvxFHyoalbflM6KC7ryP{NLacX-6=hKJL!CXxv|3Pgd zsneLjB?b2q=zslL8xefq!n z^=jg%=HXKaC_Il{YvXhTbof-uqlT~k60aGRu6@rmls z3~m*`wU9tVNlg!po&bL9NL^+iry!VQt5Umghj&_Ess?vg@_a@|=woEzTM;C?OIO13 zn5ORN>K8a8BB$nWsPPhZe-|e&5k>nfrie#aGV)ip;7Zl}NaI%!2qgn7fKsO+>j*bf z?@5aU506?+-KraDQ3%<@rNP0f&vmiv6b$QX&DorI6D(xE0 zo+|=D<8$pyKNN+Q4ycJuUU6pH&~_VprpklA>31;&T)Rs+&3#ke036*+U4OMrSft2I zp}9_GFLC|mR69E=fo`Wz6J1Yj)m|CPaRZcdPIIUh25Wea$U!%cC6*>93lPTvigcq{ zqjs(j)o|@T@K>#0kToyrU>a*ps^|C{%mVho1d?C#J}LENy0Y_t+U%ygQLYJCIv~g2 znT(D%A%i7CQ=4?+c-Yd-+ezQ}n$2{O7{cgQyF&k`o87B@mo*#1Qb=gti>x^%h9If6 zlJLIYsII`>dpIO-Qxz|9KqddCyYH!OB?bIOsrMwlQKX zcer9jynZ$pGjB&a;Kd1^vmt7Vd`!{){&c+OS)yVer*7E}yy#?-l}uMTgc>_X>I<=E z@+(KW?L7Xr66)ZJtyT*bi9;V`M@W+oAWfG{!<_67L;=nv*NHL|Rk0C`l&d($sY^M@-vpF=d%? zxO>7ZCTIYh15D*~?BtN;qV%99f)|qfkt-!i@^>tK!}(hef)*FRS6$4jTo0kuxO10JOJ6R$M zwHwK7<+>lKOSc7$z!pl2jr@`V>v&qAuP-M+=p3MRWtRFBHl%L5dCCkecuAIl1wmh; zJMJCau(O0v+AhB6hA=OYLXF2!lHq%~T@Q@sgy0%=#7ou71 z&$C|Cs~#~UI|@f?&9-6)`Ra6592)*~L=rW%7BTANEB}{vX2IB_Kc=J5eD*PjlVO_bP_w!@;@fR)i zcNzs5L9!1TbMc!1nd?Y2ud70|7$>Km-OGl>K0smC;>kht5kX~Yrt%H(6E(6wEW&pS zN2Q%$?ob0D6gQWe_3srx8_x0j$fm7<5GEz#!S$vD*I!||DVeLU=;f+I<)yY0(uCMR zAuhn^;7%v^!fe|=(4RxlqP4mMZs9@C%s_rOPiaz>=rUI3av@Af=1ZUR^b#-9lfI4Q z4ElfZRA%Cq7@ORJ!(>-gjnN2*FWLD$Z{G&|C5m@47kBsid)mI0A3Ic$Qr`VPo_Vjs z4%W)NZvHb0hn1BP99LKvry;>mPP0=6fS;r~QODXt zs42ZNfBZ}2u=!hfTqw#n#PI4C7`_{+5l2jLP1eS~*e4mJgw(q9tKM~p!KS7fSU=~b zc$;?+>}6%LmGv!?ON2xX%%Zn>y9;N~fcgcC9r_$~ecJJ1mXSV6ja<3i%Pb+)cY%(wEeJ=Tg{s7&>OND%e(5(}y?(Q^6x%pQ}WRQml zo{$;2ml|pm(+omSHI>y%YjKy!x+u&mAm`u##_D-L11M`V ztA8!okDp4CZVvKEFI!z2T2KyZh!kwe6_yAgqa-bN#FlSeZ}|(|;yYUZYx3@#{IhsC zFt$gYAPdXRPih_H2+uGbTQ}KU7j4s~rw_!cVfdMamb!N` z{m{Nc6tyiAvxI%3JwZ31_T>XovO?y>rb=s;%9ShmR&l4KbHwKP(tndBSUxkwV>b^E z`e}Qo$o|T;0~)sWiW4eswfP&(EGT=QaMNZ?Xd4vZfsO z<~|*P;h6i>@TZ1c#NIHvd%wf;e%_+xpOc#>oLXWMP0X_OcP-~2Z%#)4y5*VSPYpS= zG*xf*$aM9ps5O~km-}_(S*`AEasF*TCy?e0WXhnYmUo>p5E4B*ZL36c&d z))?>_rXoI8Y65pfnb#M%x5_F?A0~S#DBi{Oz8=F|aa2YPia>|76c4v)eg-Zb}PI%*CCt7j7RG zy@gQUnN&tMs(u;^L~{)3<7?Uj9TJ%*ROS^)gb1_Oc6(fRmA9W$+-m{wi8d3)whWG| zwvw4v-mubzGNH;xD+Z7D2ldYN{N@zMWGj)9B^_B(*%83nm@`nw%4fvJacRP!_ zkN|hx`^_GlG-+y$E`E>a@-87VsJTEGG2g-9=tQtJjt?s@%>}5beaN*TL5 zPF}=!iE=$-X7^@stPK$`gd=zxZ}=FIMFe~NFo|+28a(xF#>7V63KbOSznTW^?x7C4 z^@8qrs@@udV>n)O_Yhxj2)WSkn$Lu4;ezm3@;4J;J&YKTr<@y10bN9Mgky>`srJP%8~xG`dN-uTr!GUP z8mdK;N_a;_USwnGL^8{@ApD%y?XTr_ra^*bsLP3eBiOU)dH-v#2Qp zdha!~mp3&4y-c)px)eRK2`o{4C6tb)=oYH6l4e^fHD&^ZVQ}^6F3gP|;^oggwzXvi zu8bUiVp7#;>CU3{{e`sPUMH&Lz15^jrW&loGVY!tqIXyxz76_iJwiWLCRh|`#HBmR zF+!#saB-@#QKdxB5eT z3tKP7A~;zx!pOf#fX|5MYyufTQGi_*eLOC@n4LA&)JqoBB*+I1ZFbNY;S_98Pq1TL~W+QJx+^q@+Kck~t$uo*X$CT=Q3(Y1R%>+pc`%9Rc$^M#QIsT7c8 zfBjt-Q!NeW=Rw0ZeY%OJYC5%@8wEZ&&1*na9^oq#@wS#bVeauXk>NR@V#V0&u5J%K zhH3X87R%}T-na*RY)y|!P4QJEMdWGBaA)5AC!v9y0|7)kl)Dt&0ENrspNP>g|VY(W45z^5cu1bGBWR6c@s6K_Q2x9KDe~DAaY&0MFu<% z=)aPtMJ}c=CASP57wK1V-Q6Kk^fMUajXe+m(GVM?gpBSXj@TR1U~13Z-R=HOQlD8F zq&9f9wp(99BEsKw@FCKZRtxmM+>_qHEk_W3HO-AO(0IEu5J$wj1|Kc^WV!*t7W!oB z9@rOULT1LTNPs@~3Wg3Wcl9x4&oIxt)m5W}vu3MZn12oWup@9OU;+N3sYYEh&&hrT zq2;H-LbH#k<0}zAwsp;cGPIhJ>g(eez99u57FpuZaU28s#opyDF#bE>Y3!yoVbwdz zr{=7pG7De|@|A<;4dNfGLyUuA3xl+KdBgI@i&e@0FC9F05Ak#MG-A_&3iNl7*-gEv zz*j}tt+fKEcRIur;!9YEJ7;;QTG6dX9yhtM(A%2qK7wAhNE-P+;5QWjXxmWWDFSv| z&_bo5TgJ!Ti!PjdU4cE-zw|afa`U6AH0!gd;DUPEjn^q2Q>arMKE~=4$HS`Sh44Qn z!>WEc9ahl@xzNs?@$31p3i6}6R(SB+<*aHc&QiVkk=4~wfG_QNVF6<7En z6g=F6XnB&46D=pkMuiaby7q-ah`F@x#ElDNfL<+)a~g%2a2mqG%mXSr)$t4}I}-=p zItk(WLv81+GSGDyDvdK;6(Ws0;(PD|MbsOSk!ly4(JSvSIC_;Z)U?(TK==U|H_fz8 z{?1y{o%HamI_}^5mk#W1B_rz_~OAaXuZt&1Jz#1p9*w9=TGHpK)cNsXQk) zvapVTBkK#xWYUYPJECqjuBPJDrod|rR=_sZkBFFeB=Tg5u^lragXRz!)7B_UEWD&} zy)&o{IvXtkHg98ymH<83o8*AT$rB1S9#w;*#RbR%2-IM?Ar}WV%Uh10^%A`LOi`HT ztpwaJuU<}9!b*)pH(W^@$4z*i91;8||4ur$Zg%h*(LP(gs!>+TGi;a_rUn1wFb~(6 zo;Jh;fR_>Ae9_mT3WmsUYQEHydV2A?v0gQ3dVs>Xg?d=;^`D+oagtg0+jtGCFMZia z5DQ^eXm|9;%tl=bQor>MCDMu(S=unw=v&cE0KwEfsyot2o@C6Jja$HeHJ~<1JvFQ< z5z+z?g)b!7rPLMTS{fqg1{=3;l?!Vla;bxi#(M?yr}m&TY(FEJn`V=}iMuPi@d-Nu z>LNZ>-+|T&rdDPMF1M97tDnMa$8O$1`^0D3d9zU^b|UBG#{#~$?O?Bg?*>HeaziI5)X7CNOcSeh`wDy z*#2xqA<_GDw5<2HonfJHatCu@WVGHprC)?kFvjZp#<(&UlZ@XpF#^%e9}`7U6~j+9DiS`*XEAqWYgs% zrC}{1p}J=C5DHBk7_CoXewK5(VsF%9{sleDZVEi0T|mr>O0dr|1wtdi-ciKVT>et5 zy2k|hXL<(rc#eLIT&8955O9w9PmN5vvr6JC><{ypnaQY!evZ=~ZNQG8{V?u_?nGozQ>2TOZj00Th^?D)`i|&D!2`!d8Z9$b7oDzLN2mRua}#_H+N99v+>w=v>>&j&IsU@zseP#y*T?(6?g}r9T4~IWI(aG7 zw2oaf$bn+%BIyCIAXqi+sJ3`6U@6V+}V?dgovb8k4$YGk8XSdF{i0yc|xBx zLIKUeJEHZyBKl#FWu^6qHXTjsMmeyQn_A@O2b>bJ;|Dq{tVk?j9D@LS!r7ug%1GH4kUVT}-VyZchTFNuo!(mibQ;OuZ2j;!WIBSSA!dc?cIoS(~?ntgjUL zV2bV*4%p`e*z9&zVQMG$3_NbIF78mtxzQ}d&#U9Aa)gC)(|OZ;qOQw_DkwNsx<9_1 z-fsGH(~Ad^u6Jv+T1z|kuI1ZB?j*UH3dcTd)-i*7hzINlu~Y}8zh-5=8Q{V+<43u| zku@9t;PjDTRo%)p4pbegP9=Cj-P&y*(@$3l?<8xH%`3T%F-PuamRVUx9cJ@f#on zd7*K%WWd7)^hJo9Bvoc&^5Y7KhLL&dE|ekF99*Owru=%gS0wVr9cZ(QcS;5^20vA2 zoF?*#?(zXxXFo?3W_Z#IRDyL*;0dqgG*sk+X%uwC1Q??)`X^krjqPT9abw8_SeKJ0=%fL}qUm81;wJ_93AjkR0 z-zhM`j%^S0QBTD<|DES}4OTpZPG{@hSZvB}8Fq4ab{F-mG!!6f{Ae6KtzOE8V#l>E zt}ay+UNNBwhR+P);zh+9r`_4Rt{2zqae{{>bq;#UedssN=;%+ot;5KcxZwLYr(o+! zNLhW;ikC;Fzt-10+WHz4=lnZs_jn97sdwIik^;7J&{|=5mK==RlbcVXujG|!?%|OH zNmeByZb*G)!3_-o@Bh%yJJV0qd~F(*&8eC&wjs5b@gtCU`J;&@q3Xohl!hv&!{U(S z{5R1pd*8qF=~J_qF2|g2`5v52`BRL=akveC^|*SHSh6?zV|+@&!Df%+dOr^@XAu1? zw;m_BN+pa6hExwDsy8Ec-$lv#=SI83BF9cZ+ty07Ys;ALuOz=J5W8R0zuuS4Oe{_y z8r|?k=%&1KhuY=FTaiK^#Jspexr^3tO^=RJaWo8Q=3{r1vzO1<_Rg&Ro9V(649Ba6 zJGKAG3?ZGi+(NQQ)qo7ahmw#Ar9T7KTnxvqlrfm{=gsB-6|)D|TyG!VK;C&8SSa?1 zSyiUn_(NvjZoCDj_FtK0S8Yiuj%@@|*&~aU-eSIwY$$DYZyuclz8f?sGE#}Gz~0F{ zWoQ)9=Y2wwpYP1>-x!gDY>_)4=`}f0D$#e;+&)>ez3%wQ>hKw;#Dw|QM5h+p54@AR zyHlhq3(xi4sLdIUNMWudyN%#nR&FjE+cW0sf)j1GU6IcaTX|o_*($0bg@!Be(Pda$PZgezVpMl=4!1uERj4V@#xnswuX* z9GawW)3YVP4XfHTz>)7$TJnJOMn;asYNs&jI=hv^ z1>Qr{&w2Gf@WTiizIIbz*J)OAwJ;1?uqKCCl|KfH%GafxKZ;)N++SC!=r28$D<~`0J6R0%=v>BD-`8kL`^#p3jO}Tcx zDTDFEd}YtkSl1a-A+2R=O`j}_@g;5etoa#@3&4m4K%i&yRyLX<^p{ObWq>h})$F&^ z&c!gY(@FTNRyQ0&YPC%@5AuRD7J`CXJXdbC^=hrEU#Hji8dd5gflMsH#y!E^3U&-w zN;2$=Sgo?F*wR15zSk*}1qG0~u^?6bQRQ^^lTTfKf~`DN&)gg;o3#5||C$!TI7w`? zE)OQ}9$%v-K`H)o+Wrhre7#`2X+}?cUX7Zrr5UHw(%djzeN?c4?Z566U5mdBRsm#i zdYe%UhwuxWj{n0cPr<%se9AkWBeN0-We6T;=2mP5~M)NV2a}<0{e7JDv-x!bh!;mwVPcHx?T4 z)L!$?_7)A1f0HTuTIxh@yM|sUOrG_KTJRL*1ANYm+yVnh7%wZtDLczC`Bzs^F6poF z#aFV#o%{EqT{mvv__s0=W@6U2kawdsex+N$d_#*!$>p>Y5Qcw2U zMGCpr#1ktaW8p7&aP~I`LtjVwN>Jf}g!y<;u^+tW^4NsRbgL30Mz3M%SM2~>y9hq_ zR!%#1W^zR)b7Yu|))nh5^`6&RH==GbLgS!s0#Vp*wsNB^&TQP{jBpT9{W&MyAV2qc zq9>y$tYyf9(!G3yDnQLCpeUcRKvPTg3942t}$9?d} zB76ytyHz3;rL8?XfXs&!??X^vUDU)ho5~OYwn2$HYw&g&rICyiZxxX-TtQ@%Y;&i2 zz=f#=j4hOb=FZ6E&ETpwq_%sgm0KzPveM@_uOeQk>IxLwTB=3;F$NPzdjUzBMk;NT z-FJKYKZq7a+Y#Q7@|!E3APc5h{YLJs>eAry!530f|s1@ zd^crRL>l{A;!*?ox*8NkKCeuhf#aVlE7;TnFxrxf)LXe*4U0$tvtKPVBQlpSe?41< zof`|3)QuIhuGI>vy-X=VV;u830Uj_9|E+_SQgC-&$X=L}SlFW?;CjbabEi=od z-8$mlZ7El8n9J4$J8o?~t^U(8{Sj6+V`-Xd0w@d@!?Nl`m|tOOT4SL#MC3dNQJ$h} zHT>njYc?$h!<+QAngTbkN#A;y=6=_+nxY=`Kjwbue!k-+y+v-Pyqj`>B0`$|ph%9A z7a($|FZbj$)7+(>%c!T!NS2h1`Zj*zOIEc@-b~g}E?9JUL4MTF-4OkJO)J+N+F@ej_)E1~y= zD9-5*)_4tc51B*s$}zQ8RGTvbVeX2cwx!#zuf}^-OC^KcI0wUtB=low34j21g35{8 z!@`da3#XpYVR82~B98$h41?sB6;jO7l+d6-S^t`unD;DFfb_JJ2WCO#n*r zS)&6EW!On@7iM-UTbXd@GrNNFRNCFJM1G8}_b2+-JhI1!C1z1e6~MZlW8#nkjvdP% zPxuXLaGuB5<@(vQ-7MsDM|a)ln);F61f?sjvHta57747D^Dni_m_sJV)U+14jyEwR z$4>V^4>Pj_HJ$RWgRF1zSM3}I+Z@X2HvscG+XAJqfNoz` z5iA~&gY!rUE35DoHQS^IiqDXbTi|Q34dqQ{MrhDM19-y6yn$J=N207-ps;xo*2@8d z{B^lhcgYdS!=rghjMK(p7C6kL>Mydsl#Qw_v` zaxV{+#C8goB&$i@i(&p%>1hSaO#FLgJT%qVH zy3S@D15J{o>Q?5-Y~0B!tg-}_hcrX0LuHorSMF{dg^+SQv{#D?;(}MFWAu$i7~4w< zxAfHvkXPj|D%f)`@$oPw{SfkrCtFRaDR#(B7QHga=<9RbtEt5VFWCeF+!=g}S=H(x z075{$zsqn+#((7GYR)GV^}0R)4=)*|+5xFzd3pZVCe{ml^W6=4VRzjNn4?SRnFl?n zT$ld+2pXZ5mAIAGD2Vr>Ylfqglv1+UrkH>Y=`I-VE$_+o0|}{egu{LN780E2x}c2E zc%ldWtQroe<+_0;x9YrkNaNPQ$JEHFh*R4M4$`VFuL=#PkPUkg)$D4~8E%s7qWugs zWY{{G)4H$tWw5TDH97yj2lHI3%rTM3cqrQBXBmrqDD+2Zy#D|M3s6zb?p`EnaO~N4|3D*qD|fuomS+|@$O;*JuKmRePwL=M z3oJTJnq^$OvBhC4GN{P7nA{#0p3~6G%fqJ*QFNE7+P9$Z$>3c}-%DDSzcuVT6zFuR zdzE}i;h<)cEn+{m>RKckX;(T?`OTuyQcvkoRDhk=3>&uLYMav2yoa=Yt}HeD^19Y< z&HV+NOuM9iy{9ri%ZHbI_i7kq63o+`__ER0Q_$8~CCgPMEVG>2+0YNoRS8hdf<^LR z^+1}AV+t8Bct-63r_;oi%*wx~Kq17|c93^f!WL5jwthPE>yTrUq)mbFRxQH_Bv;{|18uAq;~N^b#E-`jhW?I7^vIf}gC0 z1&j^iQlVKhNQ|wRja)J|?5@t6lBE>ccyN3Bs+nLO78vqAAZ@)eG6q0;Ap55aw3snx zq&P246{0be9`FmGg)DmEnejaeBh{jkykbPGVT|l=57tjRPod`%N;1fxdz}B^22hiE ztYiCS1o<6ukG4*hwUvryyJc}al{(fiXW))2@;bi^F5j?Y1Ss;KWlS%*1s zhM=%Iy2YUvk*yqJL@7;O4H8!~{R)U7%fqhcIBWL=FlCDx9__Q?o+j6tp_pO-42nin zv#uQ3ag1};Fu9XnR1vD}!iup>h6|zwMkv?ruKE$~Ok^LrP-{oIdTXK@DBW@0ev+_5 z<^pz_H2v4e*YbCF(6-Ewwz%|w3j}fTrKb%+z0tWx42U*R@hcXZAYUD*I=&ifSH91> zk*w@o#U4ne>Og8~SPhxU&@JGfMk^w2yKRng0<^lxXKC7p*P|qceh37EG$m@Bh+xvzO1Ys!6Q<9G+Dedxx4f z08~Xje>#2{i@tUL?7`Vg<+_Kxjd3Vf=%e7ULn52{EAVPi*ymi7Tm=Doy82HE3{`n6UB-$Q(}UPh#RtZLXfuAl5LG@TGDfAelq<1QF7 zBc|`R3O{7o;{-4guOE{oMh2yM+mgWlC`cvsbXjN4&9Ta!L>5lS+U84U6KIbZRvR(F zEtkypK!mvX;cQP>FYAba!59qXw$&m=_G^LjM+t_!8VK)J%M0$f|B}jYvlQmN#W~Hq zS8nkOZT#f>%xBVibV#>8OgSvx3Sos>D!nD5-2DlfNA!KCDbM!~{N#x8j(l(?!aJl6 zujTOUm^z&4aX16afDiT($YKSRPV(qKAn)5PakJGqb+dyU4*9Te51*F8Xt+J684Ytw zF6kr3_AF6x`6a)s^N63S)4fqqC#OYg-C#U3?d!L& z*&1^WBmFtfQm^bTRkn!D;UM_7J+uD%Go6T7%x~oz#aoF$sHx9;u70LGjs2TBp~1Sh zR@r%qe6xAF;q_R~Z@SU4@E*Z9TM0g<>{g_uAaW^K1a^e0TdzMD%k!1nDcg6pppxaI+N#-fLA z5C(i6Orupj`rwpC^wX!?IQx2baW0Ll2XZk+WPJ^re{Sp?(_vY4n_nQ=dzsX3Xc!X)@*yC#}tN8dNg%RF7p z5;F5tRT+P?5r={_{G|*wq0UTdcVMyUw+V9mt>!0!(FV<%4BS+vl6#BU%k)C&D31pf zWF6E_Cc?>hH$(jO&gLh;G>fCTMAJ-#yz9980#2hHJ;!MS%384{1J&}WT1``XL`!s% zLK3$)sWVyZp$dcpe_Z1H(4*-8ykk2oWfI9}6e@MH2!FM9(6Q;(UZM+7(<`m$Uvl3X zZZPvtV9^|xIXnNjO5W~V{fhooa?W&CNAL(S{p+48a)On~LjdKgXovJtj4|& z-ROlni}9ZmV{*>WaeY*dbwUELl7uns?wcV+@n*URB5!_xHf}S=y`aF~lRR zAi~m|N{G}x!W7-2_we-H_mOq$S6ovi>xG$Uc}2ie+m#laf+et7rPKy}wvEZxp}t+r zaM3b6whLon;YsrYrf%yfQ@9GR@?!hn+pCjjL{YMpTzxE$oZglu_Uhy?Q2^;ISD&r` zLrQHlrhup_AOlV-@=W=q5uD%R0!@}t&}Tg@Te+7q?Ahu=ynI0VOc-1c1lBbzDVhGA zB<|97ZImmUVzFL%vaS|%I=>@#9;>sEKPIk2)v)!*yO`tM5zc*vO8rP$ujNNh9d!TD znMbuc3abl2g@h#AGRa;Aq&h#E6z?dUHzN~V{ki} zduX}(g-|ARynrgXPK8S&^hBMGB4Q>#l*l3f)pTo$ci)M!HK`Pi=o0nv`Pxea?l2Bg zL_q|Or|D4H36PE!nCI#TQ|wG+;#5Z-yP#_oHsHh*U=WO%;lU5J=#rIWL0gs$Y7kcV zXncU?&SGj(Qwlvn=(SElWOG-R z59O?6kzCn|QEc#8G~koW$OrK+Li=(R9|tDDCX^6CJOT+n9(OfK7>rTt0TA8q@> z_4X+F!V~$DQUTR&viAA&6G!TfiPR`QsRkm>CMfWd{F^*F z^q8fvCW-GOXzCtwk6om49=BbGbmviL`{BsP8H`qk$~NoPYHnXVMBUHylG0 z80i*KafDpNPUYnnsh1zi%jeQB zKbC%-UGytHs(#vFd;3o>?YrhVANQ+IDL-1D*kTR18+oiXWCUIwC0G^B)d^}uWNA8r z6*s5|*mI*2N}0crq;19KhJINePz1i{}^2 z8KFe*=sW^NYI(9WHGEY_1HVN5q8HvRoD}#{Qf*qLC>&REw=(>ZqdM=ruUR!l>by|j zs@5NsrTIGDU{lKpSo#KAgXmaTo}o2<=1!#F?cb}3h}4$T92o3SnqfO?#K@|PMq{>x zO+g(6mc~95Kc{}qANMM%01yVGL*p?%EXc>O!-VxRSyi_kdnZ$0h zmW1w6>*Ux7T6Doq|_ zmPXW>mUgmO64F*S9r|uWK|3*)KeJpD#k7XyUiHI>tWmgbCK70!R~Y849VIo9mlM-A zII1%~VR!o#2`3wylVgfyZz+ljwGFQ(6*WlSWQ=R{h}eXjzk*^i&2R3(B@R$dzMG_J zRYzQ$(V31-gyg05s^VtLBoi zRM_HrTTZeYM^|e4=Om@PUL2MxsXq>JnXkuGxbVK=G(8{{cC*JP_19zk?d1Lmr>TiJ zO+i$8TQHWKwB!1>74!Xwd`-U3?z_i5$>SbVj|*q@IsMF-vTx}J2Tk(FH&0K`Tlh28p^8_g)d}HAn;|+iuHYNY0gp0zx0yabBKklePdtW^_@mk3*cLF zP}<+J-o>T&LOo=|WJ86(E!aqmTV@6Yn@HPYO~0_;MhT_!HR_$(M~3F<2bz-lG^

55sD)8-LWcB-+s9J6utU_$GdTYf@M7A}3X-Fc4?vS!4QQI_?;_MGG7}>qcmSF9<~Tb4W2tLCT8J zF;KoOsSW#jBs%WC-Js(}cZpIOe86`Rv`QY-Y;XE{o6)hATx~-g86QRp=Av9il|@L} zwYG&lzE-GHU)(ut*B*HP3ZMxasVPQ#KfA79nWr3}wHCPa$-#aPXKJq0^%SKi7P4q; z#>v7S^8y4iVTi_}K~d#Y$yqtTEsxiT<^Ie#cJwkYvC7Fsz1qgs`Y>DCFc>B;zCO6 zB|Dd1@?|3-edqE@3XJf+juhUxrk)xMMgo#kBx#a;;t3>u*78f>Y9Rau6|bwojr;fb>X84>?l=yHgP~wCKNk^?R`sKt4wQ=F>;_mAcA< z47SS6k6uDfYfJXbcF7!FGFZLXMl?-$GCZ9Y|LRAO!~I3_R#_#2p`V^#XlO5NxZm`H977r)Je;!Iw~KeS%I7QQk8Wq%q-u`=nn8*iL(!M62+ zBQ-3}QRsyyQVVz2>q#XYoz;_~;E){eF9~Us9L~%pCxyg7thW~cqBcVmzQ{*tj&kXr zSFD4U)i$yF5A)dM3CNH7qCAdBvo2(=FY?d}WvP9U!lByPR6=^M!~{CX@2R{r{ca!o z%VhDAYK2(VO!L5BmQzaDG)RtNJ<4gbWGr^;lTL6%E_mw)oA+w-4*(%<$ib$;754~J$H+IbN3 z(OQ^nK57_g@<6*lw7VuG(=nUN@&rF~`SvJ^}-wyILVchX$zewEqtkG51Iw+3G5Y5>XK+h)TM9edRmGG_%gT6e7qS08$&OY;O%glsD1 z9O^=n$a8X@?TXxy@F3R`v|J)pj1Iw17Oq`P03y>)Kjx_jIN-(~b zc%D}jeJ2aLkj^t3z5mB9@6m^49#NJp2|iY%2-n=jtQ zrDW2zXwkf%04YrEUxl8n7c;08pm1pxPrur3BSbyYA)g*w_LAd@{*_Y{)~q11=7Y^o zDtC#85+@EhVA$mS=r$0DYkT>`Na=hFHOMU@BB|$FFAqr@E{C#vu6%YRzx>asDGeXQ4xbDjVDdU~W7Zheh!kXid+>y=i-h~y17?qa+ zSs8C0_-|>i`s0yMz5aT28^5=7fzw_=``KLvF>$$565{f%t0Us_95f)dylJ`XAc2s{ z3d_PL`f?OLTUKF#19o{6fMg70*hWYGflYS`Q-IN$cK^Rpfrl!2^$wN7ATMn1)-KIO zi;-CeO$8Lt)xAzskx!Oa`Pbk6vul^32_l^{0wL%^< zx#JsTR9h-}d(AoLq4{!T+n4aI*3pU)Ev=((M;TB-W6U>S@+FmMbGTvc7)QKEE300h-&wMw39?F>6QgHJkeNBz(+sIGcx0-$Fij0oYfD`+3O;b z*X~l3DQfT-kmWc^4^k5SToT%73R1kB>Tws2?&6PgkM1NYIVq!~*!^QS?xc@MJo}Hp zsGBTIN}Au&$c2H6|Fl7n#YEOFUB_&_2*piT3C}VfXeIG1DZl@=8RCvEq>5wn5?8ct?l|RgbcdIlg$-0bjky-D^(@Z7qkUf84MbLtYY4`-8Yq|;a-{y z`6P6ohep0@-h#Nv9oWo#*Sxgj&bvp0SGVyoE@<|?4+=dtRCq1(}oVB9^Dy8M;woOdb#Cj=PMGUsRhoVSRYQ?gjB{;R9k|&rttA9Ew z6q)ojTa^04-hpzAH!f@|PK9it@-f>QnVS_1$gU5}ydYgKL4cj6L=2TT83bsr{!FE!0 z;iOL1sHXy%Xmf;kA!k4ZyCN@q(PdJh)vzSZu69OVOpH8cICvMiSG`yJjdbIPFVY*g zQMG&kLacQZ*#+SyVGrXB4S?iZg8KD16V3Mk4}^sSnCel|;DVwj4`8$=@F7NYjv?dEtajAjX zWG2K3^yaUWnVDd+^rC5EZy2*TX;BEu7rjrKeKh{`eivhhkQ;o>+R(}oX}>LEpY$JH zdIJt4a9xAsut-dn0Vd_y#=HebRgvD3$ZBSZ64KQTZGAV+8?vFkYi{yydrQawrZkm1+#ubBo+Cg%TY2@mb5n@F(~lWLja>a-0I6O<~Hoy0u@)Sj2SoS#QgEx zYhhiU*RBE-VNT#hlGi5JXM@e46DbV`j4AN!`|ad1dszvV58$GbZr~wE_pQa2M=+BV z@CNCEZ41oj_$y>lznLCmYiLSR2GzUF^k=~KMGc~2(#=|>yyJb9=jjI!o|fTlvPjp0 zRS^aQCVhR@36eX2aoJ?K46ci87ZC=ErTgrShu`|iHKVjS%qdv225t@vEQ^*6Dg0Ei|k~r zv!4cETsy=X8@Quoibbk6OVr)2A!O4g+C#nt(;w3EPFq`8jK*-ZwG}1bbV$gcG3`O! z;+c+CGYJa8%@CCMt)*N73qquq~BE?&+7&D-lPi0u=lz)%ZFQ^r|^AC&7INf4nkkh+{Fr=g6>4 zGqr^O^!-LhFZu%$lpQ2fEX540y|5M+DYQ0Hu+GhNjPHa{98<^ZNgWZSEQAS|=ka5R zHKu_7M% z_m5JPQN!Pe2kPO>pAze?3Pnpp4RWfIRISuD1tf3kqRlo`ax}alqM*a_hci6sO)? zVyGcz)tglW^7{;V19{$x2#b1iyilJYOy;dLieHajqKxK!``ShP9=#&jG~P^lxys9$ znW&ZYTsRlWP$=#p$-Wk*kGUn;{yc z_j)Q%zWPf)xhyED$I_frFOLoRf8X`*k5xPOSV7~A4%#wG)*XPs4vI&uA*NKbgar1l zrrQ|RZAaS=hH2~BI+sSYJ>nWma6WYoR%7`n4;tbJX@=rneMDhwH^iTh8_cHe9=UuE zGa`79Br3pS1F>S(IH`ict-!iN1fJwG7PnYu`!)3HhCm|y+RNGp@$RN23Xkm|s z*rg{!;LE1W>}Mvb_RT;R_#_Q_dV>M(06>=Mrbeg;(O}u^)&M~PMcG+r^63GJ#&c<$ zO*9tu_&^Yi0i(1ju`p7>lbhx z=Wn@BK^A$(x%~``|L*Vkjm=rxtA$X7?~ajeA1r^z8tk$0LV8gpVP}I;nzMcBNMEj_ zz9jiazapYZUtXxq7cwLL-FvNhKs*((x8|``^<^npeS2yVo6{T7xuzM`#dMjfENF#V zIc#pMfT6>M%u4D;yu}?NPU#Xj#9F+x6TQBh&Rr?UPDtwKm5#mvi&0sWZM{3piwXP|iUl z!2U^)X5%x#W0^-sMDV!bkU(?w#DVkZXeyp#qIgbb3kpk6fyES-QJhCda?{(1_f1Tr zbrI8OxW2ifxp zL{7GQmYR?)+u9#e3EZ`%B72TLPn12*2W1{|2)J$oSK8=LEm-9J1}(Uznl)X53hZ~7 z!VNqV7x2Rq$3(oZ;4hSI%6<+=7Y9p!JN#%{oheJDgLnsJW*sy4JW_6kc|k79uk7uU zzdKPjF7UHZ%d}#WUKsmRqUgOZr{X|GE+jKG(4LKXQS;dS(Ndnk%iVh(vGjhHFEdpf zO8y8kn1yv{LiU_$+Gr_NyyO$kF#`IdOv=)otW)ncl~&A{X5`8Yl`Soi`$PYthGHsY zo*kYN8#S$(UvurcIf}Mcm8(m2DSK|Y{tNzhv=x$zU7hP7N2-M087de194-1;$y%>Z z>6f!b+^Cg&r=J7Yuc-uC=q`#*L|$+fXiFAl9IFTsxy(hUi&ijKo1>vg6V72+8rO9G%Hg^1CSqbVN6H4lK&6SE>NajL@HVXef1D{ZWGW zVXKVdnNDR*3!omUT@4qS$U6?f=Q>gqWHc8NJECCHJFVA~EfRn`cxIhF3k)L^AL?n2 znz=ddk%B77!Ur7$8ei;B>)K z(U$kR*XN!3oSz6dkmLOz<1o`U*&r+WoK5!5g8ym3n1`@udIwvg-Rh#9KhbiR;jaGc zph$#*ps}sgBFn>2T&?x&%_L%5NYn!>heGW|7W<{)^#W zOmk==3r!RSsy$KumSr zLEd1#klL!FWGCE&Zec!=JH20`Mv6uFq9<_BNm3@$y!qV0D`hFnf$eRgl<~@_Sag#0 zF1s1LD-kiJ$9aPxd*#&pMktjV zaNF%XP*PVuXiXh_8dp(I=_mMv07;k^JET7 zxLpH5MVo+@h$^^16f;>Kgxg)q#O*fhf6NvW!$@mZJ31A3JiF(DBmfC%xWvv!L(R8k zQv4r&4^vV0;SYEJMyC+%7YZ6TQXaT67hmBlUm;{v%+X^c%2%0o&V=EEc1sclvwg?& zwMSbJGYELk7tp0$kHPlD5XmK7vmLBCtyp zl>c+)uFTA&=Pl!w6;i*mfGeL*b?vFfu|}~Nrqw0aMt<1fU-Y8B+j!dV>&b&1`!~CW zZreUY#-c7tMOa(VOM%D?COahF|)7y)&O?p>Td#O@eBUy zv&nB<_jBNrVwkhZEvp@xPCiandcL-S}Yi^kI`l(SEfNn7`56OktOQ{W;~9Ch_GOLUi7R@#3+)|hF0sT%IahY z#)eh?{}6&{evQlOGcO^h=^n#2>Mdyl{TD+AN5fH|!{;ba<)}Z!dCWqUQ_-B?HkxC7 zKIqc9%?0RH&NhN#H=3;cP7+>Gf4HqpFFMOaomC1Y z#!Hl8*XR)-x~a+tbwYL~Rj2TdO+D!y!(*K=6_neJuf{4Ubedk{p$k)NS>HR*S^d2O zP0u3)vE7=44lW&Mf>R|yUP(*mJWe~`&`67~C67Vi4}JU%#1=@1Hfq7-hJ;$@1Px-+ z>DaU_W;!4=(m9S%OS(ZYd3zgGL|9awPFA;Xq#)24Lf~;BinLh8ia9|tWF-%rRngz{ z>_@2%97^c#;75m9G*8Gl#<#!7)-Z*-<(f$PzvY9Zy=THPeHTS6N#%kb$P=lY%?;o) zH!&LrN(^{Q90oC_a<2J^g^|aj zx=?|f>4mFGP&2!=iVNo)kbU@bjQZxbiDd=BfdgcRJGCsw`?Ctd#$9eT48zPOUKpj-;=1Y?vIWL0@6 z>K>k`Sb>*z2KZ2;Iv0UpW98t0QJ$2|CEJ)FCHoUWO0rI~=yM}|)yjjd?|lR|uwDs< zSmtaAO16Bio|))}cq>Jc?S17)C2t10=%*8xjJ=MeI#{0c=q;ok`uLInWmTERrb{`#5txPriNeE{G&7JdLmZh%_U8TJHv zQaWEAu!GPYw7f&ACc1^3$Wq4VG*shB_yA zTU>NjZ6cioz*ZxVeKZ<;#cg~Zbyj&Jos|QuRYs*7>^s*wOMdmMlk}LL*QK-UH@xTs z$97ic0iE?tJNkY4fzGl|Wv52LyVhAY^^u%7jEZ~^F{>D62Q2nlIWlt`QN~-JlC_nB zhqYA!v~CZq{G#q7Hb6FX%YvZVtVWJyo#S(60;{aOW;PA&XkORWswUTrcL@jDxvkBq zj@ydYQ^CHxDI+9a|8C8-f!s3M%++cJ$$2h+&_}_&1arh1yPlNAgCy49K7;Zee--=C z@XP@@T4ee%+7*!{n`nub??#eGNcgpe{%=-+{jXf`ehCXs%qiq?f@x-e;f$ zdS@$ZE8K&bJ`xY;w<3oWnmIOfI)81>$WOO(YH)JUztVpAjM&5vFQ0B6U!KPz_w4wX zpzr0reEfP_V#+)i8-AQ08iPLKYs)b&8x?pN*lz4lV2I2^of%rn@iyUN5xB7qVTR#4 zdZqIt9c$YH3NTsEJQW z2zoO{3+PAs$VS{=LVYoz2#tv36=$;iY-QcC19!m0J#@LdSBlo*n)MR9j}0idzmnnq zI2>?MAAV^He<^kI-SYDJrD&?VkR`L$jn~TNo?hmTGtGFJT;gSBs)i(Pt!uBZy<*?y z5(JsjhNp+7jT)x{+-mpYDGn<^xKHvCxdqHG4fJ`uJV{CDkJl$Gd4$wlg79;!PBixo z1lJm?SK!^d!u6vg1-;EVE#(1%s|GFnuM~UOgP_GmVoH*Rx#2iWR^?KR?aa7p{gN{B zbnk_cWN49ytJEQ?Rm9=f8n()&7m@OjrBM-un-W?9a%(T)pn7nx^G8`jva;VMFEyqJ zrE&Crul_qNl5e#;;EU;-vka{qc;9Za)&{J~?-}_$gTINt@e8qzwri|dhv;IA0pdYz z7Y{J;|ITnWTf&+Lkg*l0G68Y8A^W^A&c zXHu>^hlZz6#Knago257ij?kTR5NyidOLNx5>^IouHlmY8T2PFhJiQ5}4&_@kxOTd{ zZffEOi3Y(Mfy#GBMuFh7%6pN8;+kN)okxShx4P8q?*|#qSDU(Ep@TK>3sU>HISC1) zWVLtlceqzkzSR$jh(?Nz@A&M^Tz?g8!K!?akR)jEECu;#uhJohVjMtV0?>H0E;^UH zxQyHWo~hAvP321ZZxNpp_F2b1hp(iJhws=64^K%Vc^46ov6oV@nu*lZ8hA>;-EulDVm0gml(r_k zf*EP?`DDReo_;cfk9IW!RkyZO-7L?ftvnO+r|RGFml+~Feozi5gWDB^Razi95rpL& zR3ESMxq!+ov52a6CvEhd3~s%u~$bBYIM&Qx@`Ha`Z7V=(`3f#l0kj3YM{V z&v~d`LGCnpz~`q6WcbMY z3Kv6X<#3jBah5;wet;8a4x`NVIwjjxFIUDCmDe&Q$}vsg>a5^vsZ8EWgPV30ZRv3< zX~xe?9t6`~R4*Zu#7+-kaN4TbTEIU{kav&32?yKJ2je!YF;qNmXBaznW_<@!3zv0 zgi(@%X}G@z4SAcMluZ+NE@K34pZuRTW2y^cs2BD$gACC@^B_OeEiIr;P{@DGL<^KC z){Q}Z%4=j~v%yVKS#Nu)M^l^Ei+DbASvHKjccBVF+-xQ1tHrVkAp80H=VJK^^zr@k!_dQQ^LL7Dhy9-M}`CLaXZ@Xe!p*2~hh9yUL z+LAmBy^|;sk-Sl2v<)lTKAe#qwN{fbXJISKz4lHkL~6RjEF4*kj;i@pj;2r#a%2f1K!|27VIPEg`iZ* zZAFI6+15V+N8HvjYfweU@1#?&be@~UD`kCD>idZoD(1MJ@Im|+4QJPxOX=iB{p`h> ztnbD(7MCwZU-II`c3Dxta85}mUUP$2*<nx^zmkxi9Xqca zcmO{ky>ED|U$XbfX?YKX3`&MAqKq93Hf2J z4mvs+T>CVP#zyg{xjKS}1xaYf!SAMx;Mb%EsJvt4SD8I-r?>`qJJ0b(y-JvEGXdqF z{maA}ohSjywJIgnmo~X*4jd-mdAiKrT|F;v&m+5^f(ZPoxryciBE0KK)zHaA3WeZ6 zD~5nA5B1BuhG0JT9u?5W^YDyOAa(JU;cCI^grH@zr;<|TN!dI5wzy7y9Zra{RUc)} z?-e`uxZXysaJ^MRmUHS~_9(qOSqtcV(_N5LkvmEt;@EUy51R3rz>sS68^zm&>I z`$x57J)y}Hf1`<=c3WshmNFu!l9-P1Qm#Y4EMdH~BPBsS4*BbmNQ|YWaC7<>Q#RkD z7<8dUVl^%`mz?#*>pkJiB{%vG?LY+J&154+9M@FxD&kphA_U3mB9xASn(|;JBIL=p zYEhb%Ckq7o{JGe}MJC3WD+<_8RIuNxPqqZBeO60iz*VG=mt6VdudGaN<2P>#*+R0& z)om7nm{Hc^gBF~-)<9h*g626D|Nr|YRrd}%k9@5!r77 z3D}j8yu>UvS4ZV%unmOUvXO7`?~5jugVRd#Ck`SDt!3hOQ_@oyS?^itmo=8fK`2z2 zON1)>gyJUyqH*+A9LVb}3d*AVd=7fn-J~9jVTq)l#u{bD9q=(;7r4c2nbruJAL@x< zA%&f}lk~LpDQJ@6*EL&}MX|^0zRPiuZ(|i)rGSn^2$*l!3i)w(1_7DMwN+%dh-nbGw50K7K4Hk$KV4S7 zq)RZMOK2n^sni(RDlSxk+Y#BecE^W^46iP-JhijXD}LTo)Rkp>EXqRP_vl319xY6* zS;JlTR07n=YKKzek(&6Q^+C__-alTA-mk7eEI38Bzh!mcaYy)ysBc6U=(UCts{Q%1 zIG0^@xVE$i^jB{Mb<9-oz3KYwH`iUP=vO8{w4=$3C73NK$K&m?VmYoO8huW2fd)zB zPM3(Tc1AM|y7;grB&qV%#+bM3K1eGBW$duj+DhA2vMpAH^X|MR>%hu~;WcfxY$VlkVFCihUk+Mqi z_T&WCnXI3nq<}E%&5+yL45C*T&Hbw#jRSg{6X#oZOD(tW3cn!uT<&9 zR^vm<8ZuJTL=N0(gfUqgrP!VFM&coHZ^A6SG?20O;`9C_SU3)*X$>4wF zrYcr@@F%LK;@1V~0UpZ&RHc3%}ThP_VzK~T-QPkVV2++3oT&=NGGTuVuD0v@S4pGa^dOmt>tY_+K@5&h*ptNUj zt;Z&DM*aF3t>hU6%_=KW_jq&V3<`Uu&v4dtYZ*Co;`edxt=jyxbx9KErlhq=@g(u5jy-kN;8`UYhd1bv2 z0Yb@DOsF%OSxjeCPo5Fe@FhIUtzr9UTdUTRdI5-JG;2*DsQTi7(n^R;=e2Y}MKAH0 zH4u2+Z9zcD1u_|>oz{`3+72i6s6w%|nSh*6s+yZQ=3mjsY6hb{f=WAD{00=Ed)i={ zJnasg(R`?ZeXU)^zb*PZaD(S$DQv^l&#rJf(f0U+#`+1T9@kz(g-w^J?nLwb^Us0n z|Bi@3G}jm2o$eTk1cIF@uQ88&%w4NBLmWFKXy0JDk-&97xQ=?_-QemI%)C`7T=_(J z;O*61w7o8W=NX;hD$!u1vv?7Lv32DGLLV=uWZMMHOvo3iLj)A?LR-OZm%$9stZmqH z6w%Ox`xxYbL~pJ(21RhfC9nXhBdB5kGCZi49=u1E$J>7=1$VLInEHr z-OYe;g%$r0J)2>EKTezSjim=F8xs}&@FL!GMgD|;&#MtwBU(GDMq8iN#fM-P*|>`( zH*9Z!k04PZ76c~7t*^V^dW4cf-yky4TKmzP_>pSH9M|bqz~YfX57hGUgr!$;CRj*n zQgbe_ITWOJjvHa2Gf}GKu;Gq+ihE1$4!Y<2YtPQ-&pb{_@m(9pUCeG`mJRgJR$?ue zosa>94x{Zjzc!TJwv68@mpis=085%wXC#NC8?5=A=+n}BG!w(YU#NJQJOOyy-U}f9 zP>TtkC8FJs)U9ue?|ZdvELS4-GX1La02y&pqz{`+xYa(uCGAVB*Z#rLgay(QQ#5Jm z=qQ~oYz#f57WCfaZ?U@880s|mMW+4jLOJr-2OOs-YtB^6v4WWVR)%zl6}EyrZ3BH^ zVNYPiNUi?trxmbkbaF!JZ`ZR0oKfxpe*yqys|>NnvtG$-9d5rRz10%s%EPZ{Wf^g6 zo={f=_-$J_?^=7XYEkohJ%{*k0_iW+A^`w%FWuj?MQ-}f z39B#QEUn2x)WDMQzbrK|f6y=OOO#M*dTdn|iPW+P0M^(D{@@T)u;SU=;cJ+e>FAQz zLqC8EMZ5G(TG$ktPeQ3hLL)U4)emdXkxp%-2d zfUJUvP=y6H;K2kEXI3wV;7>}&!i+ZI63S|WbVJz zauR*bu>!n1D6y$UXByLLQUjo^(DZ*%yHJ; z>nwPmHCuBM6RaQ`hr@-t%@>CugS_I?x9m~aZ>U82%VAH&gnA@#I(qM(_;MqKm6Bmn zjVGqsB(ssJxu@7jM^g?IJd*`UE)N5g8;?|Ru~4N=N^~jz!9?=T-b5YGig0H!i_UDS zI#}Qd&G9vb3q?py+&T9dRN*#Qgk%KMfr`{v$dorv%L-F{PH@m>q5G0)QRe6ODDVCA z;Yb`6;7px==4%m|@e4WQ9lGt}GwY9|kK!od{wIxdhG*PFV|WzW1C-%N4E&NE|$XM zkjX_g75Z`H z2wWEb;`R6pkpMF@XgTIM*3jT+AnNe1aKMCDr|1&nsJD{wgt$9#wL$SB+pHaqvG`YVF5?W+ zLc6?*xZd{qn7anV7)o1Fx9+8E;tq4`V4Ifi|0^%ilQ6NhL$;RR1rX3*jbcx0s2G0p zO1z{wtkBR5+(3r?W@6Z(J;c_arP2?WuQPB>aD)re z!jfD6Bf5rc1>cW__kfnV-x2>%nsxb*o+K;15h{a`fGCUDD5$1YSzbhQ)-(R#-hm%| ztETw=G8gn6QfQ3RHaFj0%55G?%3?}P#j`S|`>ncu&ZjwNN?w^eCVH4LAbIv-{*;+D z#%T8+UAZBum?NaiWSwfSF`?piR`L%lUiuae+g!9$=LuH~o|3Mq62M7KcHjEHfqLO` zwgL(w6hW0fncfbD|V19eHPNBRnJ$QR6xA^&b1d6uP_Mc0$_hlO?ss=J^8! zM-+AaX!SP>l@$+Fio$5sq9v^8Ut6Qn@xHGXrL8Zen!N&w%HNN@l&vDMAV@)YtF_?5 zIJUV#hLU%!o$}qgBp6R|=u0wR{hL`cPvMX=Oh;-M{ z&R%uu6c5)0@WKgzSgK-MTj@s3Ab0>RyFV_mFSTD%@sIIYs+D~ZVC5{6DQB`*^&+wk zS0i6-)RG2J-&>6&5)BhWDjCJX7=m-`xI{9+`|h&ANG)c`6vqki%+|3fQkI}8-AfE_ z5Hs^FJmHA@f=Zr|vb*b^QBhPvoO%j0ifIYpV1O`1r%egGTal&CR-r0X5q`PTp)QTy zDM|a6R(FimJ}>wg_8xnrQy>8G^wAk*#xMwO`M6M5)|4``)7=XGjl4T@#r0mHKE7q` zc(D?mr(&LDQCG6YU~126Dgl|aCrP-VGpeQEXUYgldRvN-YwM+I##Z456$b-S0%xsT zL6&^|K2sd+&lYLdiVK4b;(Nie9ZQCTFM174*O$t`;o(2&xf{rg zC1OH7@=UOgy=Hlh7wf97LQNP&mCSsKC0GiA1 z+hMFx$%W5N*X;3W&LwsAlNDvIl@JB)VX$&;sef?uy-LH)SU8a zWWe$?!tM|x8np0PB0Kn6u)d&&!_@23J?Qo2u*GV$3kX4u^L1h7UkR%W*@Wb~BJAlS zWJy#Av@n!2=?a$Gp&qA5KWhMxSyKbIRRZXqq>a7Ao^ypRZuNFuYycu1Sb|phdctzi zA2n3eHD_CWVRp%bu5=Q=9Lo}{xAKsC_&Y=xM=R!3ivG@7fF|*1o6gs)ibDiu|N3a3 zWeVg>xmP4O(XOndaG4){pGJOGVbHehWv_K8lj5}8@uZ%p;&4DzkJT{0fZ*RYU;oVA zsn6;Fywq6jr2znR5d^BT!&3nJRMBPNmfKG$84O5j5XmUa$8J~yN7@<_s=KW*_l{#^ zH+!W>(I*JJ-m5&M=3W=_dkX5V_o|5B-yM0}lq!bnPjciVm@onB27ygbv@9c141&ve zKE@!im z$2dsjv&)a4wu-8FeYn$Cdqo~m>;XD4Jm3j{>T8l@8r^&|)1PnNa{VKaO74}1hn=}O zGBUS2<)Sat_BY&DyMaXh;oG&Zu^D?&-I$2IZhdRdH_S|yfz!YCWq={>I(k3<51zlz##zs-v?$P!nnHXtH z{-rtVQtcGpM7DVu$6EYtScIBVcQjD=v0HT!^Tw~F#lAn`D(e%36Kp%eVAg*b zZ@yIS=LBc!=v!G=|7a}?28=avkzS1tE(TT3aQm7r@K&#Ok@mn?ndqS zG2Vc{HLiI)JY1zrs5AvDx~_`uEN>tEl3E?jkJIb(LfwKj%-fBhD+I~-bMCDrB{+dor>%9OoeMa)tdB&pqoRpF+m_2wwyfyFXjbSEkvsyxce@VuJ~31(GG z%BIHk1QTJs0LI(KyE3H+RThN!UvL|yUmSG@_U>O88r8F;pJ7^zo}*0RL`ex+EBpHS zH``zK9Y++|^dE%k0GsGiw(GIvT4_L?fWy@*JaDsQVj-O=HtgmM-=Mj8ir$S00Na+> z)33-b?Z+r2q948#upIv|jxApQdL*^U61pkxxU!+e!NA`QQLQaifi65kVy&|r#kOdh zyA%cFJz}kD*{DBi;9kJzV^6V{I^$AR$y}_{S9GE)T8n1($S4roZn92v;=U&U>A(`G zaZVbFV=b3lq)o~ScLM-PFYUaggbCy3dP+0Bc&wEN+(p zUcU{QnKwpGZ47T9J0HX(`TnC=;@03Qp@hD1nj-LXWSF%nsL3CD4VrKx1h>Y2*xb=& zgrKjzDA&vL+nHl5`rD*T!Ix2$HpJ)q&N#JFw?ptjS|JEpJDFud7I0d4dr`zg#Z9T%r>n?`oSNGRY>8ui2!s^)AQbK)JwL(2MI&P7#r2-fId%3LJ>KyaDUDhK_ zia(V<$#xZX@jL7%ard{OZIY|1_>@u=7^V|5!2jO+a!w#}I}rvu^V)#aX)NujvK zH|dt8mK0J!W(Mh~-i9UJ^vi0MQll7kQOL+Ai&RM~BCKq@@je5)-G%=~6nnh<6g9^4 zfHn>Cbx;b>=St#$%VV_<(H41;Z3#QxT6BaLBZCW%xHkTb3Y%94wOEZJ zd+%nUO6eY~Iue=mpwdq7_s0kZF>t%9L#RlOq+ibx?7p~t-{XDMVGMOp_YSqb-@#=yB@H2$**%mSk zsODhIf|_=rvn60%b9nkch>;5-bp#sN*0{{$n?aXG0CY|MU*B~fQQ*WkWH-JaR_d2i zq{`uNM{iIN($kj>I3;ETm%)%>vmb+?GdHFWV99Qc5M(u2S|qT6lWrj=m2E99IJYz= z2Kf#K=Nd4!F%9Ai{KRJ`|9C;k$ftyP{TmLSsWsi(xWZ&qa2X0`h2>8Fd z0PrDoKf#i>8GT+bmnwRm7P)0a`4za@6vW=o7lk>HOj5O9vL8;4wtm2bYK z=~v@IXi4hRW!_1#ePq5rsqHofdxxNqJ!~vIhN7XVL{vz4W@WKj-na-yf4FJ6Yi7waEUy?^7q2_-9kn1QVq& zTvfPzkf`rEG7861OS&%#cD^K&xTvgJuK(f)eHwSjSd|r+Rl%y(uY7T-rEEO1JU7=x z%JS%i$9tshun!(|_26=V5{^y(SxlrfXGq-`yznwuo<#hQ{tY!Vg++Q8`xL6^SYG4e zA}U1Izu9IyV?Ayj*qo#Rf?Dt+?6&3!rmA+7Q$l(3nwM$A!(Z>`m$!3GTm)@PFkQVt zJKiD*_3=5y(r=)f|8hT)(%3TenlU!lXzx%9a>cewDR$JgKV9^J#98)wGxn ze#_Bk8=frz<9q;iuSudgzVIcY_M4%w1#g%a$-z7?N53l^acVpxim{*o-EHKzCMs~7;IBlC zo^I$S8V)`+6nlqT-bnd6?UpS1^u%-O>r3C@(p~yF(Q>0)QxDQUEUoW|YVa%{r?1=K z!IWrxhX4hY#_{Jy(}vq+R?iOLthIxvyy0K6MkR_g=Rm+m;UG$XEWMk?VUW% z05GDUa$uPCSY-|jz#C)%78rveMhMoLBHg1 zv}G>jrsgs3!UqKV5~orGhSpwraUtmQdCCWbxaX&(av>TzqoZV&OQ4y^%!Ryzib}nl z?6pKJ6i677KgNT-Bb~?C-xhzN#K(~vx8N}iLwfS|?W&keZEU-i>V^F>9V)@0RV!FE z3mZ|P-$>CK^U%~}PRzFkF9DaUJ*H-HQOS-5Y*+4tTc6$_NQtc!Uh8X?C4qitd^|98AaZ6`1Kto z%_^x1o-vPqNWopt)E^iIfi$GkMtQc^Cpz!cS&7L$qZtu+JBkaE>_qlOw*Vlj@7CCzdBMK7iV9r_g*7=M zmHJLbLW?!HSrF3AuRwM5F?r$Orn3_^BVnt zmTO11bfWp#XXIyKY0|qGX03~ODQ!17MR4R2D{!FN(=~HI=-S&WU#H^+6UZxI6c(VP z17k;qD4u=cq{GDavCMvh_R0g zljO3)T0J6`KPya>iTpOM2`w`##dh#H9r-a=i`F9}+IBLik0%+_U`t32W$~Udp8fk& z-(b7cu?R@hJ)NwD>ASia*5a>9d%&M;3H7L(=D zWwxk=lnYI=`uZYn$an1OeH)*YU#fdsEB$CII@GWgg;IUJ-pN+fpsnaA&rL&sj&7yZ zW*5!UtPtDLmjORJr2#d<(a?SE=p%gZ|yP1mB3iLlf}X z+jz!>>iWbdfR?sQ5sg2Ii7a4Io*2`)M5nr3$;p+mZ*;-;Ij|#`#5FOlaI95jb|;;{ zQE*9cZ*j)&^RtP}gRE-8?~~t7XCtK0Jr)~?=cwb^`!kUY3c%U&nI)zS*U$Z7-RLzziPILKZ zwL!jYC^7Nw2rPJ@{1yXXRE>MJO|){+CtnDH6|d71EGT6z2Fy46;I1m)bxb$eG2OUh zV8}4~9mE=J8Fh#ZPg29SLgy6iU`6qbu$@8N#JM2w$Y zzswNc*lm-KuHWVj`z_q=FphOMlCL-*nBOn$&K3DUBjw5`x&8oy>tp|rzVS$n8=oHN zJw^hoGsr>Tq&j+-j|WGay5id>>8GE>?Uxf{Yd~?kA>MwtiI1}zCeL;;79V+mI_0D6 zxZ7Opk@d~(Qdg)YmcQxLfSd7WW-vmuI9mVYBz7*H#18Sik)bTnkZpg1+l$jRoJqr?71jvQyl(NYS@A;MN7R}ALRPCMn|A1(!t@CtPC)LD{z{(!z;sK_ z8nF4zbdhcMCP`io0i-u;i5S_dKjJAHEbksIH4S7JRv=k!9ZEv79Fa*R)lG%B75AX3*Cq5B5JFgz<}mjYoir&r*zh@k%WAfGv3ezLEA;^pvczx02$uIovnypD|Ray9l$` zixx9*Nwy3RHWOtp^@D91p-SYlBI^n;Oj8!-^rxhAm$jux#I z6dw0#?ZuNE$ArQfKp-ycI417*&eavWc)k;-;626{TbG=)Nq=^}5nr_dL$e|mtY&O= zb&Z>m;!9+e9t!$PvvjCA97i!y5uzV#DMn0&P5gbHj$1{!N7C@8tI}cu@cEJG?d~G0a-40dTd> zR>=ISyq{nf5WqtL^r|T%ooaLG9WIRY$4_2x_Fz6)*dvu37VHOeK56J(gkg4EXQ_YU zu_jvlB)qxz;wME?QQuz)G5fc1GZzqs>)YDyQ|!}5cV20LZtF~S+{XqA9UCX{VGkfq zxH^L8RL%>G%D*szcMEfUsBV}b*`$DFGA2caM^)dSSqlxTEFxR5B<%TxFArI8vG3 z5@J4#C5Hv&^j4j+b(=#W8=&v%H^j1GvY_^E&tg)+Ohe|5{e!2&oWEF3xlv>XsKA*Q zkE6M&$G^4&vrNPH4jOMw)UzP}*@V-G(OE*^`v#mRaykPoR)7*9%a7cOncm0Uvl>Pe z<}Qjv#==m+FaU$_AS=3`1?Sdt^_`CX_aU~5K1;qI0B`FRiV6Qqhg#G(CK&oV0jqCA zLEgg*?HyO}rpRz%poLy|KsYsK=`%w)vwY=Dju{gz74-^k>=)Z#^#DWTVLj%*Y(z0E z>X~kx^2`Z~*HTBX!)Tyr5PG#kP7CSZ_Ny__L!g9H{Pu7qQF(i7M6pjv1oM0v1WSL|xYf0=BlW{E3duTeSi3of z*1X+Te-x7a2LaMyM&K6#uf>`&=v3I;WKfW~9S!}_3cXy}Q1!e@nc|hI`~j zslb&VdZW*YGuI?6eYYQ3`a{L0FI^kP1U}Aif*@gbS5I&Wk^u_2tWF+Ec=&J+d%QSc z*9VA=^p0LK46snAQi6$}YvvNFo`kj#uN8}RgW!Cgu&iRP_p$&goQ8gkUu;cw01!Yt z1!BV|38b9C@ikGk-`HD`LTT+QQs>rm8lcyun)ju_SXEae@#dN1*t@Yx#<7cvkm7UHWUz&071jBp8(2%n z_NP3U5phqP3wk<`{b7Gv}l<UO8$q*@`zImJAnW`Spe4rCR6FdSP1^H!y?R@>UNK*?z;_dRMZ0w02R@VU$U) zWlth!@NH%fCllyBeexq+@~rKSa1O8|FnvV#wp9D?l63z6JxRJxduwUc~aq@McO#agn5)T{IZ7aGM!vVn(CwYy%K=zf|Ux^Q@}n zx-Cl}AF_huS(OoJ`WYt-4*ai?=%kb~KuC|D9>VVn{J|gnP0BHtlat|yrZW02CO=il znA_{M3=l2+k(e$+jt4b+%_vVZ2QqLgKOA_-8OMv=27$RI{RR=I?X4=G@;1(Yn70XB zUs6g0OXQ*xDJ&4- zjADV(vihj_`1@WCmkT5kXtruL{`q&{B z&Bw>&=%QI}m_gNd&)*J(^%q0o+Wn&O&=pf*d^sRsKMvJCJt9Wt+YzzZ2<-avh^YK) zBVsNZd|Ql&?SC~QXa~TED0sJcf^B+46oAK_s$+Ucoc}T;)}Mw%6+>dFZa@e^<+1S> z5&|ZDRx}c>jEp|7bKuu==juk5ih$=S3(~aQd-pi{aSpE)jgbuQ^iVr|apxvM4hZLv z+r-7J4?6=NP{W(l9Ib=opWBjp%L4cfdvFK*Q6hs<;S#ogDV5jyuTpspiUB1;1lbwF zd&^le0nq(nc5DZo)V6cVsLJ*tAJ$0c!)lp&#OeaR z8#l=Cv41%q7G~{@jEHjBv@Daq`hS=dC7lg3|AX1E;IG**{XdcoGvdAT;1O-mIZMQA zsJSAY#Gfb8X}ny;4pX&S{|>w4&e`eM{d3NrCHqJ-+sodqZ}0DaS%C236%Nfy%YRWUxN|57Lm$ zr~nfoP@&$GQ|}PgF_5Rx3onie!l`tJTnR>xxv>XAxSI@&3! ze<@Um^QY#u`*wX}!y~@cOLS{vKau$&8!3Mun@Bn)?lSSwz#6#vsp45EB_f*7R8upy z>b3g+WADnk)7H8656W2!%*>@Ej6(<^gpi?kNt$Aena%j?zqJS1vM~gj^t9*wdXp9p zva}^_?eW>3)HWVc99=@zd!aI!4YcgYfj;h_;3d>}&;S(og<3SG?7ALdjd9smNZx_+ z6gn>SyQA?%!2}^4I$xHEkZrrNL)B@quT)|7=$}Vnm+N6++LPb0>PCIqQ{K@p22OEH zXr8D{m$o732S%^#wsl>17cA-0PO8c%^YT?-ELU3Ww!dp}mIyxF)^*Wdz+aVN>0``; z#|RU`aZwwokfIo!ZkI`t-FZ&PDDDu;HtX>sg8iHE93$0X$u*LoY9|6oQZAOQ1u3z_ z5|sQdShLUs%E9V4$Q)H@Rx0zG2-CC0%y)isnl;VE!L9lJT5`y;Hn%usgz?+d!Y~>k zve6J4Q#wYn16)B%sMf6V(qe^aJ0QC_R0FSJZD@O{jFzTmzvk4GOOUq=+|y@8?uH|9 zMvuhC;gOLREdY%%_SE268!#0X{>I})2r6{PBAL%Iq6`Y3y}=C(k&=%Z7Ns%og!L(U z`a#{l3oQCQV_+vbloF4WFuV8YBiWB1x%l`I_|QtzN?)uOMhD9=FQFm+WIix-A63^x&B)KAZks7(U2ioI) z{0jpK_`~1>@fa$LZa7sHd{uMrU^>MV>0X}OPBn!9!pQJtiZ z!ITIx3s99MZ8+ z8sZ4MpjJi#R9mQx6G?FwbPl{#=Qc}JHt170<6L}$s9hok(wQ^4QaL_pWTAjlAb{mg zm4TL3h_sC{Iu@1A>4k2yd#_BWV7XfYB7DbxvN-}-lEtab$Lp@d%UnrP=K*Uh!JMX4ntXUxNel{H=)qg`ZqP68h8po6QTY~V}|Q%Bdgcy##_N0-y1 zEANf&Vt}INqjhj}^ffWSd?Bz-pfN|)HA$(*aDCPa9RF+q_IQ*H*G zI=$?6DbA;D+|+{JG(d;aydrR(PLf_Tnug0mK`tH>eKX7Fn^v~+O`P*p0bNZ z>>ejqHg*Jj!Yb;=)k*zefKI~N42FytZgaArO&Q-JH>@QGNNPY17)8UE2w#<15{-dP zU`d%AN&=r;;+)J0F~7b2K?Rzpq^wrhY6a&qo(rS}wg8^5TwC+qIbkj0 z&I!1)C|fRbh79NVPOMLP3b<&junK6GyEOD2Hp{Q*WyE{72@kFn4Sh`&Tu!8FCqY$= zk}F14SJC=vQxuMvGz?MtmNz74@^L{Y^kSOtpmmqKwmh+GD>@;Nr=tWi)Mr~GM2ojn zo5E>&+T29^$@S@!4Z+rZlAvCLS&}ok3wnlpTRl@mqm8q-z$_~jNQaf8OR9_P`Zh5zXmDcw2(>4CE>Gq%tgU^Y zzt(@z!nP`ori@LOkwdJeDwhI!iJm6f!*HARBZ{@??Dn!Cn{A zALFCGqSz{ipKcDr$_i>M`(>h09`*Rw?Bf9n&E2{N;#DiPaO+H^z-2luU7cdQqD#J< zynTjLjqk=`Up0@192s_>VM+PMk}581k)7g7`^K=2@s(D^)f1zZcMyZ~krKh}*JcF% zS>l2|@Z-j{WMuFtX%KWMBf0BDPi-^kcOl4$S{SnTz*Z5kkYuK{NF^`cQ8DPTjoF_Y zC;EDITGL886^31|*!s~H>RZ5;gf_IeF{ z*IdzwYTXexo&=JMN+aj1s2JxPj~tTl8juCZ>uQsKl)7Z{Ma4^5Y%4>f8a>hRa1J}(0FUtAm~5gCp@GsFU2*jl zubtFEo5lL9YD{}Tdj+AUYYSIKL47ycY-vBaCOf+iXB5mYQ<6Ms3Idm%7!BckpWj6d z4?5_c!adQ5J`wb&-I5gcegFR8NBSySUeytC%`puM-3vVUHjTTPSJ63SY^OGRMCGBq zGgvZVz-v`f(Kg;X5yA3RsW-9xv~)h&O+dc&qW0^SeRU;6oAD)JpM`rM;5`squDWsz zqo3<#=E@Zpyc^D9i_G7!3Ya6A2Uqr#faUgJxJfOX*C-(FEss?vIwkri6qMPLsXSw8 zmnpQaHPSPJo4Hw4*`YC_LEhj#O|l$1i1C8+jmY2SvI?=kn??HSq(f5Rlzt99N1Fp# z0Run?fM~`6O_k58>bk>r16*=z46j)!s}sM8%yk&GRVClqU`)cQyH#d!?#{|mW-nAx zdQ>a>(aWinmI<_oQq$Lz0P!3q7PJlfdv3+mviv3G(;=r(d2#?gPu8*9ilUS`rQ$_v zrGz$~v`UQ`GJZtWCUq4lDF2C7=tpe&Z-y!0GcL?WzDk7S_T&0L&j6&=)w0A`K|V)J zw+IHYSKYF~o(f!RL%R4vU!Fe=&Mhsu&b!$({bvB!a?X&>8S znm&oDBj3UBeF`PYQk7=owBKpVDHhbW>S0kS^cg*8{C$(j6xq*Xie@$@0I|fKf<*rs zq!}mfln}uKKa{w`-+30|J;fTiLT_DU)z$X~6tO!(aVc?cqR<+9xPK|VC`bgOMP-&2 zURM)j;F0`2k)9V_dB&O(g#8_h0^7s{K7*GIo!;=xov%Ycv88y3s6YB|h90Ibj1%vQl zv2XD!>su_JH@+i46f|7KZ7)+&4LZro6^v&?-k=rl?G>eI?e4fjoY9;%cFg0=g_o&0 zuNGNsz;>k~fj!o_zDHCI;;n_3skL#IHrpqK;vvpr}=qVxXFj1TqMFbJ!TCvD-or?(p$UN?rTuwrVnTeTPwz)Vhw0%RU8YFLx_^s;7ur(29Lrdk3ieFDo zdwP0D0p_PXoo7W0hGccvXaRo-v!%~SuEtS&fqvxBBmvtPeKK5N!5?x3ircUZGr$qz zmzU&Yb1;Dr9vWSc*s%&Irp0>V(j|yQ;jq?-t{$q{#X#P*US+7k zY@TBQNr>XqfEh*rYGgT%lg8?M^gxp`=5QvPuLL1V9BV)!)A;b5A8t`lw2NxXiy(w~ zvzwPjCmEMAm*K*aQR%;i9&}}hgSH9zsGXr)iATaWp5Tj$v6jtO0FU%8GH)+Acss}t zf;rsjE%aySbQS!kHe*||z3Oqt$)OvHRN|`SJ1X~AA)(P|0RGJOngt$r8FeOn!0b(T zODU_Gv7xQjB{W=nLuyo^t$o7^!*K9Hi0dQcMo#)oVp#*4%OSZ`#&?W>+lcTy3ygwQ znfY!398DURxY4h|z*=DguDP zf~1@mr-WMJE>&2aq-YPhiye*AI$D~jhRvrGFtkT;T_dRx5!NPZFVzYhT2(W~;CbGr zc$HS@8|JYo1}=5#M(8gUmble#ebW6gMp1O96&Z^yG)2oQ zCwu{)W@%6_5}nn85sYlL#^Q$RieNkMw5kWf7i)U@o78J>92ch-O4KmGxuHL{xC@nj zUj|`|+Q2c@8f5=YBLsq#P`Y<9y>cOS#*j{;R9fj{)sB>r%^4vrjqf}9^oX6`BRVI; zOw*lma}*!%Q$?|7txgWdWXtkUEmuXA_edXE6!2u|>X{ggNh(`aC{D(}M_Ki2v5@>x z=z^bOoOoVoEILi{@)a?^YW;v;f1_0~f{AU<-%!BBqGXM{T)Q$Vp0JB#cu3v2A`v`X zo)xO%amxVA5QHqk5agzgAS!agC7L7NHx**NV3g%lFX7~hwJ=;0YtQm;cnBN<=6!JU z)ytjKwY^3VI#@5fAxNWr3zQh*9@seB37LpSa+i3ug4q|@iI#Y*#C?FFwInBg522y}p~B?& zc)Vgyf4H3UL>9zZco3BDloXVD3?E>Z2|=~W%UKi6AF#917M?@`*R>Mxk>FI2Vj{IV zf_W^t2`aSDS8U!v`G`mPIWCPWhny##EdEJs+WsD4i;t*Q@I)f(Xl^hcM<-eZ7>>h0 z2)GzuvW&@bK{$BX3tg-_oMIJazEM%p429BU#wsPs6K7bQkHvrG-0IZFhIp3>)J@4DtCsM`{9ChW4eLAs6a+&nh2ZGs^7z zPR8n9hA%JjHk?k4SDKOOk!%o*XI8zm!M{ zMYbP7LH^b=Fv(VO2&#dGmdOMyyRQ8&9FNr+9A6hTKEANfBmx*bE=Qcz)X=90h2ZV7 z^NR&8^SiM(tWU+lFf67hhgp^8G7BGqa)q*#S0Q|H+C#*W!Md-X zqz{h|IqzJpF;1{ns(qa&#~r>lPPpMHYKIstzqTcx-*uE&+eb<-GryGp5j!b zkZA49Ti%nDF!E?wTV5|W65J(*ha%w(AE3&04g#%_krC#c8=n_(xl2H;zd)E1hb%ZYf{xt4;F;cpVF{+b3M;V$8V<||E`ev4{On3UYh&v7ix6X}@4@%l!hYKO9CCo!4zwRr0F&n>7wKSNXJ{mKUL<3gMD1{_2okV4 zq61=0S)<`6&@YYwk9(BxY^gmJmECh45*Wvp-LKd>|K~e>S2(Ty46Oo$aI<^?7^RF7nC({A>L{&EmD?U4C5-F z+-_e1j!|@^jL=wNkMH)4BV%nGLCd|m4bHRUlhFiqsL9yVfZ<`VE-V9y!a=}lEW@jAf%Xi7*Tj4Rw$`$+cv)pt7Mc;uXqQSxqt8WbT;X)nUt3$zky3NEf)X z7!!;vsu(%c?l%xiHqW69W%O2bw=>Q=)ujMmxDyp}E!STn3vTMDgKD6+4_@^)0yEqj#i&k__@5QX8x}+ilc97sNZC zA_b{b_cxq^>_$&oP={bMKe0tIB&pEPPyV&Pyz9v(KAd4sC>=HPOXfM_^ znq5807mQw`{(AN5)FGOJwVx(>z$1n?pM`pz&-XVIw0J><&D+a$4XYDz_DWbFTiaK} z%Zi7!DMlBmFR#%$+c@p0CuGZCb5AyiL$6*}@)I3F=1jBP;B@4+xtsJV8A#pTB3G~s z5#~D-de;)lzY6cP3ud=$TS03T(IwqaPi_Nz5@ zqQJPV@zBPJIzU~;C{*>sb)t-i+-;P~P)5*+*4Dvl>DdkGm0&6Tw!Dk-kgO>+jFlH} zRMb{C>c`Xm6FuR)t{nqEnhilc9dIUsB$7*I;%LYeG{Y%ToS4uZ7}PbJ8rU7)lnt6w z+%oU(Gy$L>BlHe9_p(zX^Bt$=(dSo2NSRKF(Q-#rO^!HC1EOg`m}8et1yEsBnc(w5 ze6iU*B)Y2-rVn&D$!#ztAqry+bzn24yV>g*9ippQ2>%0=f-FU>DHXwUX{w##<#z zOG5><&q**z@kM#ko%3=AZ~3KhLukL=?~263#bcKritDy&hfT?*|7_k2IjhrxYMU2++7!+p)v25SUR` zq~OsdJMc>scuUF>YRooE#A-@_*h>WaT**}>_T)Nj2k)xAA6ZG>BK(2*?<$}lCHzsQ zADFAB=8}tB>wXRB=Mbf7U&Y=lSLz{x3nV7#%0C0SC!_0}I(6(~QzPkxddGlOpB1{y zniIogwU7~zE6S!NJ#-LGJ1r`bZpYq3cnyGZ?lDp%)-R|PRjS?tjZ)sZf63&z%?l$HF#32P|c;3W0WoTLC+K&8Jnem!Cs)OZh2`#5O48EO#s zF(Pckc!H|Ept3PAmc|F#>YSp;VIYiNKyB3171rsDG`R^W@6Q>8wNsu9F2h4#-F&!b zQr6W4wMZ)C>XIe!)^ZyAkRN{NEoGW}1gw{$ZOv%OJo_bvdI>jRp%i7`D7OJ+0786( z>1{MCRcQ|J$lRI?fDA7aS|#sSv^0SlZl4)y_OYVJk2%o8)?cX!ddsJMK@s`MbA zsVA)1PvX&=AraO@eA)}%t;L&~Z8wVr#SmHX{sYhkR##mq!fxU{?_$`swmO{jvgpA} zkP=ld-5T`2#=#QGZFe2=mbBf?_9)I)FjQ~=-P#ZvIx-V&p2TK4WlymC>>5WtL8?Fr z3paGVJ3O>{>06AdH4N`4?+q7m=Yfz2{C(5Jd-z|y#A&BcYZe|FFZA8caE@ktiqq`+ za|)AydKYM$Br|>$d9a?n+`?g1Fhk9E`m^|FNb}9uz(HUl+=cmmX`#V@FySZm8dY{n zwR8Fg(ET!SA_NlPu-ZD;*&1EJcm;<_@~(lXmN`# z!?Cg3H@4pGr7LrlOl4v_S31V+aKnyk=7z1_o?%f1i%o4?KYNRF=GIA5i+QNfAVKB5K^@m#tW3tGGL zG8YdjhakWq?s5mJl^x>xMu*(Mu&4*^mvBuT@6ro5dZAm_@Y z@I-#l-J;Rk%$*?s9qKLG|3$k<6Q)TqNBiV~lvuhyZ`KWvUakNgn|s7Shhl>ZNm>>|=A46x*MrJAGBt z-D0|Dbr3UBxRX4Sjg|8Zbl=2Q&N7wk-t`}|H;*1IFPVk84O=gfUh%1Im@6}8I5fu@ zubqOXb9myoDmrmC*Pl3X;I+Keft%p@(VRR|Vg^!k1~sp5?eufUm~3F(fn1JayDXPF z-I>czPWR(EyR1Yt@;b#2cUeVGLr8Jop!oRu_nz?vtshfJy+|dsb@>Y!+EM0lfy-Aj zj|?yB3p#Kft4El23uFMEl67)Q(tGZijIZ4Kr3cRQF~--5RES7J;rII$!f&r?*t!qS z(4ZD+&AZz*VTNspgX97YaP3vl`LR(HPU+G8LO`mDPj_7v*)o2l3SiHyPwsCci!3#z zfLzSu3Wkk7?uiUq20buCwMZ_V-_91HaZTOqiZbG(lYNoXbaYn&9Z=-gQk0GiCdJp@ z&a=$4j#y@lJ$s+dKGZZc$|S69FHFOiNz)j7?WYHS!IL^p8+!SthTi^}p|h|KK_y=@ z^zO$)?=KnKsFtFkmTOA_rp(@ix>{R<2h{wza~@5ee}*Pu2?@12L=)WeVYv&61DLB* zKk#WRh{5w$1W*;jB0Nf1 zgad66PRJB{c2%?p2V@Z**Zagay}MXX0VV9m#<0xY>e3*Xwwqm&waiLb3f3y=DSP+MGEmJG0St;v$W zx2g+NVn)&7{xZ3Vy1%M>?PU0kVdj1!v(=Kk`@A2@i*vgi*`Lex18e&&axCz<2O&_0 zE#wQb?@T!VZ%wgV0Zk^4UcG9QA6kdqr4wahjh2r2Mt8YHllTuDp&K0D@uQjH<0#i$ zE})$0#6}DW!#^s+2v3*9I!Grx)bP->vs$%c+<9WoCl%SHEyK{TM?DeocSZZ2w#^6w zg!Ww~6O253G8h=2%=XhDZjo71<{a-CZ=Y%>m`1sT8f-^mZ5U~lcMKWYIQfH`%kt=u zCeA639RgpyBK%jXljyiu%1=F%>2hftJ>8}XaH zT#Pd?xMCjicHCJNlcH(wiAQ%8Ux+!GF!yzny$Q7x`!+>Mc^S@)y}D6l-%jkuu@Ss_ zfR!aS_64j_b;MCyZlpSDXUcTcwtv=9yEGlO*&~kHH^2=(+&KH_X8H_EXEwkGO=hz? zgW1r#qJ4Xu*#KRp=_cJFf-c05xR=B0G~F_^s=uDFG7fO@T#So9pTfmYBkWirc3S8O z51i8pi|>lZDf&{>s@{!E8j*0QJPC1!X%ruxO7X;sLS!Wv;>`5&2Zv6;ZH#ukucIA0 zx+2=m&!HVT$+~l*-TZ9Y_5U5(K~%?gBv6_a56F2pb7_B$wtV_ghe%vfRp!FAST@9#T#5H){85m)c95@4m#tFen z?Jo&dTK?)Yu*cEkG^^e@JE({0(jM)g&B0k6ojR*cp=$eF0*5o0dggXIiO!P8$7)hMaaxSZA)CIYz^^jFB)nXQ>!1h+aVa zp;}+|!qHv#H#JRAbpvH&dkj(XkV@y>to~Ju^ebt!#f-p^MyvB_ge{2YmFA%)jcQ?W zhwFhR7hF%JP}Q{$Yez|6uy)`NFdFla%9QTMA7A~K>>#JiMBEOt`%~>8g&6H#zK(X^ zV`swd9MXNq)w?6gS!Yvj^gm(+IfYa)E6DCwSV6v0D9REf=8-g_bfIYRUlfX731Ee1 z)jDSbyy6jOVZgXrohB50>{$BzEJ<}7le|8g%IkycPw@K1 z`JT(uHsQCJDnJqfEJSTVJcmy)7W9S~Rq#7?;@`o* z3jak0_7pq8i|6c!Cp^K6ixagv!Mx=0u-G_DWhLdWbDuqa-9~wcasKi-gu}R&UU~6> zO?LV3nTWnd#2LmV>D@WJV@Q(p?js>*{a+)>C{7gX9HLN>fk$iklj_C#zilS#tN);{ z#*;CQ8l1xzJW}ZctrQ*F1lwQattoujs-MW1Wj%k+s>gT5TRz3KK3W>MNJ^Jeu%9gZ zS98$Mtp5qr1w9t8<6os~MCv~%P*4J7H1*YUrk=AWhq6kx;>=%L@n2iX}b}K>`2_ZKw+|sug7bOqb_| z({m06gh|);q>Wg{xDQb zf35L0yfvjc4A-$VvdiM!`HHTcVtBuxtRKp3UDdo9#liY%8pZpBBZd-VBnEdk*16wxy81al*|ci8#a^ZNi@zdAG6 zzD^%_5~J3El6k=Q%i3(D*W65{NjSR(SRPU&oW6iJ*zp_2f>11Ao*|JS67=2m%*E_kt&q!kNRtNIkRsQmWpxz07U~kO~l!1O@ z8@uQ7gx#|~UqQy?7iNma_$-x*`vK>nRf9AfTsK&DAt8r>I`>*W%w@AUoqOZHNVTm_ zonN|FPN&BPku&G2qJDnl=d8`Io5>$Ik^bt-C-R)(Y(KHpc1q)RsA|3XHCsRTiT->K zVdt#+ZuYOt_Ob4endW%F?V`S*`<@z6D{NX@1JO;FYF}Owg^wO z@ufTcZ=Y!YRwo0JZu7xet9^RHYKQjsmisz&xsNYDwcMAV82?-uN|yio7tNH)-Iaqc z=RS`q(=ke&j_RKxBaG49I#=8OoQ&}6q`hCnV)qu}Ev`fBmou-QT`hScQFpXvjFokA z4yp*fT&(T1Q{k9Hsr&ED$mApgOjn2;T4^n{H!pSkx1i0MCv%AFV;mxBvjx!hJyQgg zo;&JmC^ioG8cyRJpAl-gcWd&XhfLja%Cq0Tm$+|RscY+zlwvv6)BC3VkyEraruidN zAtVkvDY`Z z)!s*Bg`!Q~BAuS#pgdw0PLHzO8YQFV&LJeTVq6$iRh6&S(?HG2i3bA%-OQB)au4fRihDb9PCu8vm1Gt0ge{JFWd9=ep#y*F5fWK<>IL0Olr{84c-cM zW4sz${Z?GIZLO)XTgUnbFgQ>t*Iv!da!~tta}iR=VKd>Gj-c!s=pOlj%Ig#SK=cw+ ziCf|Kr-yN#VDkV;<8GkbnkEW-cG?Lvjyr*lB0}ZDUL#b<>=!tMvTKccgJoUGA>^;V z0ut&>hfrZ1a|q4P?n9cL`8kRI<3}@24>%fbSkY81d1S?g4M~8PQMc- zX8m7+iJ>VG&#=LoSh^_=6LW0k$KPd`n4mtX9Txu33Euo=!BxkjPjr8)R2VTF>q&7Z z@t4Dhlg+siC+l-uF`GlG<8R9O(nPReiX#G^l=BsPH_Z96^m6g+*i#l{34Wu8wyR;K@jdXHQ;3J}hTu1wKbCl(&-)7Zn~W{BlM=sT?}nLQ z)-S`q`PfxvDs`XR)9Wvz>;_J#h_b;s>k!|iNZSTb_8cbo6Z`OM_`X{+!w#qFXV`zN z4LSv&JPLrL!$#cIQ=7_-u&wrLMEXZXbA7p@kh$h&6bZcVkRX*x(fI*|%!qX`I{J}$ z!Ta5zj0vJrEaUX7SjMy_!eGYC|3oljVu%#YI6W(xF|CO(oYDK2Q{N}&IM}_bKT`q< z;u6s29OfC+OsKFU5>Oip7#=*TryqF^|Dv>7W=;n7N$o~lrgE^KWE_-r3n|d`Q0@7a=0)(f;?t5RnNi;i@h5H zhL!(V&FAY8!$QSb>gw8OK!(L%jxfVK=XVnD?{RdZ%Cd_eNAq*0d?!QLFg%Vv%~k&O zbg{pR+h4`)uj2M6DQ>67Tn1NvP1nCm2KjQlGCj0;++?^rhj{aviCC8ZYr6j3rt80; zWj`s7OlvXsp>@tKnAS|#vdw9zKj(%2&Ohg1_;TZ1=laN$JbPjd@($*qy^W<}vs%>wkwR(>PJAbBHpH!G~G(|8Ewv z{}g`M7e_T5b>RHD_+g>E6t}eJ&sp~47=Bp!FMim6N}zBPUV`dbW~Kywm`+&uQ}Dz7 z8ifBEg#Q|Z{|tk0O4iA){#i^i7Mt)Y{3$glonU;6qo3U)IH>)PQmcv*u*mG;rcS+7 zLOl?59-%W&156!x{-+`A@6bgNP!fu*^LOlPfStnPx{k1a1mW3+A6NI~3t9&VGQ_os zu`oQ9(B=zm3FQt>n#~aq}^G^Ub*Vp1j$Oz3JRvRO<=aDOVQ9&VQx#$r^|Xqz@2;zBr8}hV7u!%CRreu&h4Wf9 zKCGhtt7u%MFkMmI7N!1_{baOPkmg{+|4voZ_RQ!#t!3=JGnOT(X^X^Gub!loJ0QGY zt%scg4zI-SPO~BV4wkoooGO!T(e}QX`cBku-b;BbIMH-Nv~gPKBGK5G~Gr@`|-YL$mW6>Iij*d~lNI)df2CeevRym%GA# zDroG6@Q~Wvf7pq^emkYD(#6}Uo!i~V?Oe#cb_P4%0=k`t^2hBA_xsb|CC63#sc~Iw zm9g27uYTOlXuq9oHc6l0;lp-j`|aei%HXtkPCcBvXmH-MYX5xSeB9J}zp2qqB^Gk# zr%2tmRDvTFe`;v69d8BQ&Yjo$u$@J+9p?uzfvyl@n^OrcV6B|LoA>YL{kwVp*v;z* zyY3chx-py5`UNOx3S`8gE<#TAHXy96?r?=SjrjFVXiJSaBKG1Q=eLhF9 z>an7)zX>5OXbrw+h#0T?5u! zYhv}9$%d>F3NXO^?bfO zW6*HW9f3!V`TBw$w}0U1rbS#ljUp;tuMsW!bE1ViXIex|L?^?x=uAPg3UGo2DNo%1 zu~*d2rq)1O&r)k$Z%f;DMi?BZL=jv=bB>o(P0+5}qE&E-o8UD|_;O3kycjEbR5UHZ z>_-*iVg~aq-Y9E2dH@DV_v(R~G7Z8bMGB|L+X56YAf*!GZH@p3->_c-9<4~!#=qf@ zHQL);Wv$3RL5py^!VYxjg*y69YgYVQ6DjN#wQ`XGqARqa+4bUtv>rU7d$|d-8Ey7l zsi=R8JM3O?XLipPY8ZCU26z>`=BZ;1JED%-l(XXDqbj$=_6Ks62klJ#K)a%Vzg?P^ zmBm_ov>I&OLk*U~T3a6(O1Fw1YF>2l>bPUf^bm2D3e@K(Bjl>8XC1yI&u{aWk=@s);Fw1C>Nw750?bIGm}NcA5oU% zeNMYZEEx6%Tvzl;DbNTv0dKGwnQMq!@E6<~KMv?cTs=VH$itmgL=N|EnH?MdOvjL3 zgFBNmruNBF+<0z@Ozdq_u+7QIbd6=QqjCo>Zu9#&qWaf+=Ih#RxY2ZAAh|hjF8x^X z7L0#mJ9ANwU3VoKO_sQe<|-dJDYqT3ws!+VL8dZ4-@D!-8Bnd{hnAwIaDGg=Wxx=M zjDZ`TBbYVugnC7WA2cS@h6js$y}uxGy9*~adlTss=$D>0IES$DXCcHC{ZICoUz#i& zf;U5H@dTTkI>9EVVm7(jzh;KB)6H<|V>6uk3NxH7>^V>4yI}u=UFF#dcQ6KI@?*eO z-|?~HGPbVXLP<9;1r#4Rk4?M|#G9)z#T}qq z!P2pYh$Blpjtc*vu*9t74a-=8fQMaqD;KC-#HIj4v3I~`Yb0tl`(qM$k#HSv9G5L} zQZ!j~&(inbf(~KP(Yl(K=meN~$}qb^dT$%gb_oBdVOJLTzFo&}Tg=jrf4v}u<6_iB zBS&8!u%~2oLF4N$>t=5}0{X+%l99nBt{0Qc;?c!Ds{%>rUMSJrK;Mvxk3v0UEMv)) zR)iG!k0ToQ1V{KH#65+nsQLv-3KbFu*Fim;B2|Or&QJHx?%l z>4W)dQe;Kq?sw|V^3ZhQtAV88pv1ec|GW!3;BEpb?!8m`Ii}NllW6T5t!w6t^90qX zs`Lu*`d}El#LG{>>+B8p1thfb!YDyQaEYxg>KCG?C9lO=bIo8KZ*L+&%?xns_i=@M z+qI+puNyeN|3?b;|EzO_79N?0ti*7zH1JOH5fCJ3F${Mg++8K^j`%Jg6yrqGR9!SL zr%*N$*@I3lsSHW^w_CV_e}!6RcO^IBskdA!fZ z)tLQR+ZpNL_lCqdL6yrcFU|7{K$_tL*XH?^Pd~rb6l}J4G_7WlaEhRjs(>omdv%?V zQRNyBzxRCX>=@m^=iV(c-E^K~!Z)J{?(9N%?lnNHa5ttfrS2FxumuN%1O84}a435e zWo8|ho(WKRL+2UAgQP6w9v*X>8Z6-HS1jQEmQGF&&0c6LQX4ryOxL%04L>`<_2a8q zOy>x#F$sY3cE z>w|%!hdLJ}a`IZUQ;zv1QHcbJH9xvZJTz30VZaX=-f3n~etkR9zjw)3F;Fx+(eWWx z;y#$kEZK_kM7Kquuo)j0cDW(1L+fUjDf;9 zzaQD#Kfq2nKs%u=gjj*FE(Dp_057$#sFtI(v?DDeySBAmU)?g}n;_`)ib7=P%bH

I(ZRzeK^{rBWd=wg-bPVm}(2Dg}dXt8m1rTiwm|inKkB%59cz zp)*=7Xra*z0@JWdfEP{ycF?DB&*;<)rbbPAggcGv>)GuQ0?nXD_H2{@ACg}thewCu zRKf_LvLahqXiO^($(Xho(Y{}gi1UIsNemHQ8ticRd`BozoY`^ul8PJ|;DC;;lA-|B z&@fo+9Uwc5FeB$kzXXjp(j;&12zjAIW^9<2I$?xVloUspQArcxcElz`%XP>aiuzR+ zJJgvE9kU~kWsp!J5I+>u|fFxPnJJi@u!Qjec^iJoiB zf2dT9oonPPWZ}=zFou};;3|C?{yf4O2~aS+kL+zT>etJdzWMZpMAgn!;7DX&Zx^pa zl6QJ&kwX3=`m&6gvHJeCG-{hPLVKvOxaiX(S-mh9*RPr%b&rAvtPFc9jY(4X zD9s?Z z8Db6zQ6|E#-y9KTzz=^+l<6x&l<69x%(hU&Gg@qTS#CEdE~1nm&r?g`(6jGpkYn&3R z6(gO$(43%lYVRc15JFcFy4H=~@ahzk%68Hl?p+5?ntnM9V5P)lFgYt9-NWh*lE9m(xa7 zRbM}<5pNex4(49iW2r~6B-6s<%J>blAK<7m;i!!3=BVPA(?+%7xf)X7bI<1!WQd}i zc>bp?9AAZ|I4=4#)S0_s2dNast{w|ySKrHFEimU!cWS-nsa!|D(Mo}1S}F56zHW{w zemQMSu1#aAlmA$E^Va2qDZx?B%s16NHc<8r#9 zo0C;t&ngYNEZH_!LZP!L-3wm*7ntdyc9M;9U$HGfNqjd-@Py>0SfKoo8TqD7IFk)Z zNs4kwF@)^i(qd%9e8=)1M|qa4({a$iiYsldTolDD3hsU*yoU9Mpj^&bYC8FIxtpkOr&fecPszeqgm!XJtfyeO>lS$Ny;-;bs z&@j3eTDC)(fO%*fsy@?~i8@NY?W(;pN|A(+rwlP{puN0@aQv0rbi7qf}K=VxP|m7qIYd3XTz6)D`M3??i6t<<|HSFa=-+)lDr*sw&+@R;bL~foH5J z)%+^MKVnZoP7!7k+KCu*cs1lW%Zjb7woTUNl_+kEZjQ_^?UsfY9Hlp;S10!!{pEek zb9>paC|4n+RDBQ7onqHF!{`Q`mh(ZK8iZ^wwc{6;R^(Ox4jsE(S&2IeIaEV9S7=fO z(;Wc?)+juKCt@=k?2*Dx?o#pf6)$ zq^~b;(=RX1x;*%bM$Wqoido9#VfxeWsaN~*oXeB5F8{)goOgM6+T|k)uD!S5_?_4E z+5f_(4h+rw0`t?hHc~-K`JtwNO5VxMHTDG9YUQZGpa3n9HmCS2D=E5OW3aT~I4`0f zDK05_wRM|=lbc|1TaXzF{rjpccMUF+hmMYH!~8C*&1<~5k-4#sa>ft{*kCLN4Ss<#hw04cSLqGoRCHe8w&|nUAyZu)5tVsn=H_2+RKS z2}xobA{P;8OT{cNIDbf#7o23NSfs*gut-M(uW6CR&^lLU>ah}oaQzLgkFzY+A>uvS zRk|ASVIohhJa_;+qH;E#Z7PN1@IRiDfd4TmAeu1z2wozeby8*J7`()O1L6^6M^NZY zAfQ;V;E1K=4Sk`z&1&Cagmv{je?`GWb0_6PZ4}L2D-IttK(8^ue+**STcs@NT0c^; zg`)fe_*u@Tf06u7T zZS%-#(U_*X=p5QOGtx;B#X-HM;{>hKae~ku5l3Gseq8fc>$K0|)b6uj%TB8ao6dr# z%>yj>g^o#ga}o<4SO}Hm%Bp6;efbM`aJ)3f;0sD~n8Ot<%sHHgphxE{oTvfOmjSJt zsZ-JG0~n|kKh7o=G1(u7(FLn(=j$t)oJ6+IoLxkUMvRu5^J&>2T5dEgPd&V57P;1Z z`Sju8MPIu9;P7&t_~CVY=HiFf)Jp&2;lrzZ?C^q5kIchsbrNAMoqe>*GX8S>@LE^| zo6d(<=6~|=T3cl9S{rmP8;95Kw8JYKJG=&8c6ias=wNztxNnN*@0$+8g%)Y5tN(?= zD`GRo5=)$8BZWnlV<3=|$Vh3hsq9UJKv-^@#nvacp>6f1dV9qF94`x;T~syw#U&-#O>;-!&oe$v@Gu`Gjo1!9B+rmk^9s*958ry z$u}6{{vrG%TXH#AARJI>ixGyTjIXYubr>|G%!F~RI-|pCf}BcS!{!KQ#J>woSjQKm zvF#}mw_CCtMoO#c`ZcOrUu{gfqKl*_)Rp)-Vn6@VWe%qiB8*xTuw)hO7=Z^nA~2fx z8`kE$6*KpogT)`h^fcwlflOfk-JiSiUxoy}!87hKdRGO#Q=8hHM%mAiJFb`*($46gVX%-E%y_~lU(njbjFG4+tuORvtE|!l5#&Q%4 z>#F=UO9p!nNDd4L8isg>LxC*0a~DmX4n8`C1IND&?ZfJJc(->96THYbq`@eMARN7n zL4y{0k)bmyw|=H@x|WPUt%~)-!s!diYR#zE^V-2)PjADOd-Je2fJu&1*h}$A%p>Db zUX5U=yJwDrHF;!&2gZRN6$fOtLw8IFsXfHjMNZ=*A3GYg34&L%mD|^)hWlpYs1;+- z2@5hrW>$`2-63i2eOwI5AMOYr)QFgS+)zINt~9$h+?x8St_mn?~z z9gkk|qNERWg!%yjUc&a$(L1ubb-uus@;NMTv*V(hFCvt;wFl*WOtMaEf{?r+DDXIT z`R8mRl@o?Pj1RwfZ20A&6B~Z@?%dH+3!+y=RDiMbLG6O$T_41|UMAc?{SYH#4sw`T4f(L87#w|n@IBP;LNT*nsz>vR`lgLD>|uUJ3;2L6^xPHS|&(IU-K@fL&WKX6(lj1(VMYMEcB zo>mq4A3LpJWU@Moc3KXF1$YOtDjN#+`jw};|)TEWIk|L*6D zcYGboZ7?VfC{G?H0FG;Vh6m2MQ*5*&T2;!Pvp&Osf1(KP2Xr~t!o{9|v~ljJN(+T2 zjz$z*RHRJ$>GfVL4MgE8D$s!u<<~yn7@?^vnz)5AaZ{xyZcWu`TICW#KZNcaJmq`a zl6ewPhh<3sMepRqK2 zarLhY!VWoN0Z6ZYH~8%qfaCSRzL0r2VNDXDc70A*#w2D{JcD;FPU2lh4jsBOrw!=a zyw{x%ju`VT(M8VU9uz1_KhIev_Q~AjB1f@{TNzNdI)tT0EQK_PhgFU8o?%tJowumo zKVTMG_lR)`&;IEVumM69c?7)`&VTRWqe)p3lpM}y{ihh?K>plVfASpY=h0Ipa&nb( zC=c#uCg>PDr`V>?F!Dj3#93zK)-Pk^Y*9qlz=w(KB2IV@)(--8fmKj?z5VzKF!AVzjvC=Vy9UP;`DJu4J{=9G3VL` z$_h;gn0MX*wn4`+xJh1GFjaZ=MB=1li zJulCuxR;Rhun0@F-?%jU;YK{LG^>ph%B=p;OY^vmNUtxvJamoCP{lLM)Fh&~bVl;N1V(0&SqE9H93u_e!(_ngu&0te=Omp<>6|Ftu-i9ulD zyywrEcYIfrWS-3<2Q{ok?Zl$rEumCGP^`)?<7bO-v#0Pg@A?lH^N7~Rmh6AiXmKKg zYQ;{_;yLTIMJH(Sq!aYa0_H&7D3W`2QUb~GiqN{(6yq3JYJuRo#tcvp`_|!pvqVTPMsRza`eP zOeqfedY@t$yt|}6qkeGwt4rX6g**c5(kU?A$Pm+U-!{ueCNrinL-nT?+IMneW)OVT zWzHaI2vuYcL-yP(8wOm4K>5%tA9BE0p$TI zjEilbUVvv^V6SW6o)1hw)st?J8UW$oaKo8WWd1( z;;&whc5Eq63ui24ig%mlDcmBFr#UE48jvp!Ck+>O&LLmRGi&nEw_e1B{2tfgGO}sp z`m`dtjhz$X2XiqFIyy7g_~n2MxN|b;gl^zz6H+=jhtds(+6wXvk73GyeN*t$vR((` zhcdo_8HRXhusH7zi-0e)xv^%d$;d3-ohD76J|NB+Nt5m2G>~%r&gdZG?DT|9dgN&D zggo8xJS*rz7XA$$W=^zDT1Ku%&E;j1r73IxB6AC>IbEf!7(SRAqZ{BDW67mtu@b9( z8P(tfeLI971V>&+sH+2UU!$YUp`=naL^qQ#YTPeW`i7XE5|j+(t-pq;bU*+K7l?Jv z0_h-dr-h=E+SJd9RD3zEd!Vsc9FDouIlsh**M^L0*>PoHUC^L2+PZbh2>C6*Vx`r; zJD?1pX!l1b1JLCeb{VVIkuu=se}ggrJ&BY7FaO6W16k_e>$n+H2H-NnjR2SYb#NmW zpAO8V{)-nlVz92v8RCEZT^9dW^+`=5*Q)!}ecb#brF=b_DoXj8v!wjkyP=d{{wwAG zmGXa!l&{z0eQYV8B;}j0hEjetA?4=^A(YrbDL=@5DCI}r0x92@Nin~hF4e65ATeJL z;T9Qu<}5Kk_HHER`_AtX^L2M_VE!^^iTUQMk(lo}f5rSW#e8!|bjP)Xn4di$=5PKT zF<*D?lIk>^Bj%g0hGKs4&lK}Zg@n!DEuJt!eoL&STR3X-AN*pQ|Gp^wR#xZscXsjjVwoY?r&JE#+b$@X-nmz%Wg-EvwSZ|DLqR(aCb;5|L%b|?^A4H<`<$$lZ#Us^(zZh^M$f|mC zQd!zFDmd(tCptf-=#xH`obOs#jTcJUG7byW`P2COje*BM-mwTb{C9_;@i~b$gV)le z&Z0a#zB4M4A&gq`BFr)r-gy-En99C$<)ioNl#%2pHU?j$>e$T!)x2!x$AtG&rlOUj zZS*F{A)5>!W;&it%%~;A{W@b)o!_>oiSk8_%0N!AfXj20y578))G112wbe!aI7mF- zhn!^R`v(p7r*(`2aHrJZU|Q!QSUYNQuJ&3CDLkPf-!1IY#K-hsEbi42I6t!)F7Ba3 z^vE4Oyy2Thl^46f>G>^ zEWc4qz7f=-ii=nRu!9&~U8=RxzR2LZ>Y~E&xW#q1fy9muA@5D_&3D{Ik9nG8nym5) z)1dqsO$l`7`+7-;dkX4EH-z|pfwhSMC^9_i7_X{>RWEe4dnnVl_8ko+(BNW=BvZZN z_xvrFA0$@0k{il~eJhQT;k-kKU`VBviuV%Uf{Wngtt}`zt1qvq-&o7t-cU(KZt^*U zImyoh+NIA>K(L1=1lCl!(m@$f|64}?v(RD#^@Z#F_=CY_u^uRJdF487#9aepTSmC+f<8DmsIRr|$ZSqFHTWfA8B7wyNz(#T7!K1z&FJ8bZs4T0&i% zmIc>?f8w-d_%)VTrGzR*H>MILa9DgcaFU9Ono)DvjNQD`-`B%;xwad6J|48bO-0o~ zR$DW)_lNfjAKcG==LI#lNh;2YfgU-G$j^f@bUjA*cQG!~%qO0}2*WAs$BdbYRg zI#KPZsT2L5-rVpRG}*?BLG*+@R^6x(ge!j^@8VAzSm-N7kIYjaK?k~%S2JYD9gF$S zGE1S@6DkUu=gT9)h<^ur*JChGx4GI1glJUW&$6h_e=xm;!ihg{m$LnurUWh9t? zpyms;F{HZg1G(YTJ&UKi==fPmbtb^o%9h0XiCZU!AiSmORr(aFQH_dA-_MNIUeVjU z9E_ol&ecShN$d*yDOXb3=%9zWl7;#QJ9Q;>0n}-=IH8Bbu!jwC zCB(-std(eIujN{+^vm1wF2m{?Ey!viR}Oj)=@#t5q+t{4vyB0Wo&HJqdsr2 z!W0=jnm(ms7vAx6{SlEOKS4ajl|3R|ytB6ITt^C8%g-njg4(7MCY=fX)0}cKI|!)U z;nr-Tu)4tizlu<5uf#4yY0|BWA7L#!r%#9}t<4UlupGYg9UENBIZxb-G{hGGf+E0tBV#XUjK9+-nkB_QK zJMZ-4d7ZJ+#>cDr@hCL>SvVW!;yocmuA1D(#hhcvj&Nm0%nFKhtB2wU3z2uroxO_e zp1F_gr)60g#a`jO9lw3p&M4jv46{;I`y$m=eaKq$2Dq@Im?8-KCzDE-jW&*OrnnJL zoZ^LoDL%jz7Z*utX8sHsz(UjxmsA>TK1&0rmhKj6M)68uH)2pk6W><)X!?588i*Rx z{$FD0_udNs=`MTm+Qk_%$354$&fKF}JJ?r%8U(LR$!MYV)f^Q#Mo=MWZcC5FK!)0E z^JokylqJ0BRVmeN;-MmnV<|ce0M#s&ka@J>ca!DOv1FBIou!+A&4lf@;AXUswDT&V z1zirPxWhoYD<^Fnx)kXp{{r?}CWA?1a)Bn8m96!6v@Z%Go*NCWtP?r;=d~ZtgFzFFExF)r$5-K75s1&LEAN8P_%*0-Oi zX&|4tSmA07p{rgO^24u~kX8Ab^>Md0Ln_hitvUDzFvV)r3y>4Vnm%s(M;fCm)`G0O zgeXHzKrEOjEU*eQVXvU=^T(<<+HgPKh0JSo4Y(}I4REbGsCun5qu8PNd ztukthPrg-44jZEttsT_;a@5WnOG{u)BuGe5Q*>d6Iaw(S0m|{+fzMD&v&0zCfLx;Q zgm+6b+*jyxb9{VNxvZtY@hc`5xX4=80rd^okXG#$A!OB1#Z3TywJ19iVcb5gm9;>bRgX>*r8?%L7l$+h&btP;)LR?~CZ4_(C_)tBHSUX2g594jn^CS)}~sQiYHjCX0{#c|n!OmZzU z$rZ?JBf0pxtu0+sl=6Cc?v87?2FY&O>&vt|UWhewdzvF=iR zVkfc9iw%vW;tivlGICz6lWVv_Dpn7+SW)^^guR&~ZRXkIl*CDiAV=vCM)NH0MxSiv zw?#HS_s1l7K}iMZg}&|@o?>*@2pdKwn2zBffLb_h^++Y7(m!^USz`|yo)t;mT9Gq` zDkcy+X%yY>5GFDE5|_Ss?$_7@ ziAoU(R~@S!d!xYu+&Iw^#mokEr0q-cJ0P%w*#*V0ZwF>ERJ>KOW-aZIOWr}z@kk&e zdl(d7_T`EK3+Bt3;U^%4!_8AL!E>x5oH#d?+7!1bIQz7O8op$mEAHaAbygV`djb7* zAcbQ?ruE*++ek!1>*h-~%-U1gD{dNPx*@6FuWbzD6qq> zO5QZdz2?se&R{sl<BHhc*7l;0tr|i-0BND!-J+=NXDv>UsVX=Cchv;{l!8^)sdx zMu*i**eIZrYlvkxaQ9l7-@3g@*j zwnb?h>a!4HcSS}&IGJ`cmc$KZ)sw+Cy4oSjlZ`91(Qk0Tp(9Fi2U>$A$pkl&-j=m{ zcyPU|g&2QOU{p_|Yd^EXDvu#&> zMcWre3XSq&ZI=`Mc7Ceuen|t7`?1#N$(~;iveXX8pwC>K%ZXgMv_uOovVTiO`ectx zk^#r{S#|a!f-R2Rk^MZb%VO8Oxv580d!3cs?INc* zWW(O>x+zVq8+t#hqTIctJmKhM4=~JZBX>GP7u~w|DLp7$hHaJ;ZSoV^aMEOMCq(dQ z9D$7Ei&bMjqYn0Qs?=1@$8>pvD@onp`T$8lw!cOu)v#I=uo1>&4o3&P$y7}l7T}Vy zE*rTe#NMih@sOII7h&hvH`pTi6es1l5MAXhG~^uRYvO+F{V2snhnx~EG{jts#F2~! z>`nzim;xEh>l94h6zYDr;z!Fmqyfz`91Mip+beS?$`pfC);y^%8Ij4xBrGwX$Wu@-n;SU_00#)+Qm#fYyua0Hth^S(EpI_tET*B77W(@&s0uo!1RsHAG(J zG6&dtC}L3o=YAF6v#e$8U#r z241`%OsFj1lf4Y85L_D9g)WjFyE>3jo}b476&DhgSeKTZXg4^DggnEEzipJ-tr`n# z4kGb&a873EJIU#29*7c?1@n3GJn*~9}UjGX~DTMYH->SE{7@p%Hl6e>O3Me ziB9lVAN%C0%uwHKAdEDkYFan5wJ0D6OpQB=9390|JvvWSbTH&QIjW7RuP@I}VbZ zjxdfEd^gG*9hf!0b~T+kTB?xK(Vvosx7Z5-W&4~#goO=C6gm8(QjMN(2vI;E?pTqd zytS;7zh`CpRVQrdf@+`q7<~9HaH9!@bA-U*z<5_xCwyi^iT)$XVxsge=OYwct3v@5 zRg(2NbgsvFMa@XW>SS^pV;xe?8q|#{2+e6N+KX9o?vuMU+4>_$cz)6OGf3_hhBa0Sgr*?#zJIo|t)ebH|I}YEx3}nht{wSOQz!kAbp0uo22tQXi1*lsZrK>_fuKtdi>)Bo$He+Vxi8BEj8TK((=wZ z5Tw1^A+PzydFQ+Y*UXgq(#P~NhV#@AxxPV(58Zqda_@P zO>6ehv}Ufpc3NQ%xU@~SRg&Z`a3ihMuFB{+Rc)Z~Fn(HX?8P7*Q*wfg3Ai+;L#U_K zS1$n4%EDevq!mZp+!{;?S{)QE3UZBf`j@jd-(c^`glbmUcziyRw zsc(-$-Het-s)Gvc5BDQnDr-K^ZjF-@E_ zI-0RE5Haa7f`!V|Bj6yb<;7v4`WFe%xABGZap81+ODyELN;STYVL=^EK8J!g13Ye~ zhpJ=o?8T4taZRKi37Us^#6!{_dIJ}ASUfBS*gdcPHo$Hp0}lQK1lyfRfnU}CQUAQD z@+JB+?8?abg7m?@!2-sUnubev9*QHCns{g5Wv^oSboT}_h9!GZ(KFjuDi#QD3!6PC zLFI%bE4NQpOs_yn@`UvU?q)mVa(xO6d#%>6ep+w?OQ3=2Sc@Bd=~38qa4M0h1o$o5 zK`MB~uCiMPNECIVgsd%)V}5!`pj)jVu$eDl1R6xA4*hzRGP2s$qP*LGY|+CE{rg6d z?WyK4I#}%I!1&5ja!?F|IxCIP{2S$+a;HZ0ZyR@J=N(NWXmROa#QC#+&NV{w@!uuq$8^qY|i>_8^2_A)!Nat`ocXDY27767~_Vqx54Wmk)+^-Mv~ z0rw$J9MQSB#mg23ol@wUxW}DsQ|AAUXay&{1DgmiFgVN`!qo7q80A~y_*%+O(Z<{g zd8mid=MH4cj<&^sy$>^i>zi^Yb=lW6h;?83!AK(U?abATwJ5z(vXvW{D^kYwLcoCvZiT+PsAo*rt# zLpJ#_#Cw%~m>1Q!W?pS@c%pXG!qyy(0q-Z$L+FF6Li~e8DpS**3~f5FrbF|B+9`dZ zND7k6pD1DEaDZd0NN-6Gtpl609USC-iG$n0lf50LL#$~AAFK3wtIAnaC5uyVo>5AG zwZ*Ij4j{^;s?Zm6^l#T+*&L)gq0%;FcN|Mz5guJ_VHMFwiy$w21m)>mEb8O|b@?H* zyFKRVp()}3bO&R?YH-2=wgP29u%Lu1?-3)U*x`b4%T-zCwK%9yRg&8=NxkiY)P5E? z4=rgvWtWLUXLf-sIxmSSxuik$Xz!yRFfaY+ zLxZpe2=7cvTI{3X{;m`+~G@P#IF@w^i`hFW|<;qEe1FE~iYsx{rl;BL& zSB#hn_1y@0emD>y#8peNwC!iSqeC1FxH(|?S7}{h1kvdZ(Ll#c!LSG-0^LBO7myqt zA2_>-5Oqyo9~Lx2C*!5ZqSB0PbiKK6?}9BYsTDgG zC(`;6-fjvzFanx}9MH5G5jR_p7~hEsq+!n0sumr5nDIU<<9xNe(YZViVz@FKjs$)+ ztCZ?j1N4;n9r2GUI_zxRY+}=w#;Pav`3ygs7x~#p8hNx3Nyz@z`gz&43l1nWWD8%8 zMv?m5Mm&KwTwdp5mnYb2{PHs-K+if9IjozhmN9g=T-Sz7t(NOI;ejqt=Q(NaZ3%ls z064zv8%li#7?}Ct7JJCL-5=mA`R%6*pt0r`L2eF=NpwzBA7L34X*xt6VcbL!?w zw7evB9LILjH1SI*36f}0q)bwh?Kc1YeKP});HJ$^&pG#=`=u5L41mF4FqjRWVurP# zP*IZ1-o@TM9xQr%(|n)!lA#@X$?)>u@RFg3U25ucOSzyphlxhQ=H*=vHnP`>7z=NA zo|>BS?#UUaLqlv{R}5r+j(qxV*f?CSG)sg5qT3&48dsXjU9Rc={T7#{n|qaV1#TxYg6W$iCl}%k1f2}``F5Dge@|!aTnK2VbZKFeWpDzk#+>fBIGXlgid*@z4f1SLOF3NabzO?kc^U|9Y-aG%V63ogyxMIdQ)ct=Dhr%H?b&ELE{YD%r1jFZ0 zw<&ZeYI{hB&iCL@#b@DAWuIQ-r0TprPbJ60Wlt>tEgm)w6#^8=qNNuqCm%3;MjKY{dU0F!sjDao2tKEqETu5epJ>9p1w#h@NGG?# z_`9$@3SC>k_MBw4S8V;)vb|~#<8z~I@9{r~?corc=M!Rk=00r4%)Zs69ir zmur3Z%V_o4E~8@PCCvTqqv~;Xyf&&3MDyb#CBCoxU&T}*jH$vZ&#)wcXnrhAj~A)l z0!*EO0{9uPq))@>XoaV)M&W&0S%^^-xP62=^59qlp&CUaI&^ZR-JT){6(>j3=Xn(N zc|Mg_X=IiIX&8;~`c9J{mJ@gj+PHL3rj?ye8b{g zd9nlCd=HhExbPv3Ml0gLdpv2??vh{RX#at33x$Vt*IvxhSq>ZwE@00Gc^r3ofnTVH zxp}%ZJM0`;?TN&qT~zDfqcb1S*+JF}d>tJ~5F#R@tu}gRlx#J8W~?>a=SQlqrtqmy zdb}g!ton)ZVC`TszkBCN5gzGqsifgfymUxHXT}{@$$R%LTM8WI2%fWq@IK zsef0HIN{!i+;T~%k~&Mc*9_=_q5m5sjM(%5oUwWu4uz{E_uo$E^;f5T8f8QVI6I}3Ibe{ zbHcY|dMy>*+HZ%!pT_+mVFn(UNW@WN*nSQq+0Tt6c$y`^QE3Al;o~m6B=t@bL+t=V zD6J(SrFQWgIB}mFCn!VtIH_!a6S|aC2q)%q;3VCLu)DGA>zfdYChfqcl6#}ew6EH0 z)%IhxqU0!Y9Fo~*dUx!<4W~KB;;j}?m}qY&@BF{XcG+GQsw|!+_dS#dx5Kiy9N;7H zleTBsHJBOrq${nv~;JRMC7{Md0PCF%(8x@EV?V>WNOH^wm9IN^&8nMD@0^E=EwDB7i zs(gmVJe&+pa68ySr}^mOkbBY8KuzThCT#|(eKQf=(iPJ!TL;6}l^< zH6V4_lE}h5c8t%bdJIU5r@^a zXpt;q3J`wv|f@b!~k@@%T!X ziI^GOtIa|BVDx)>LV$X%oQj^oH1ImvuK@>oSskG2_2Z#0@?E6&VLd3a)8iYJO*~Xu z!D9o?U2E-yf;;Yod>vZZ`jlzz6deR$|2xmT|GCIasx=PXREg|Upt@B#sEY5l#kqJ*@>BA`X~~V! zh3>*k=hGst?Q@#^+hA3!QN{;k}SHI&n&u>Ii6>pBDxg5pXdU=mxwNrvpPIJd{FK7WOc!2Fg(H6E{K#KpP7_| z#ROheTt}`^=5*QoG5O6m< zAwG0P?*Wjy%so!X4yg$qnlL=U-=&%TIzV>g_&gwzGyfnsQrGj8d^VPfQMscKw+Yf$ z$()@jvQ)19-Nng)Kx650F&h6b%aiU99}oFNxx@usz$1PCF#_eJZ679|Itc=03imLj zK&i(CN`29BnJ7@+t|3sup(qz3L5cu2e)wM`BHXo_^TUr3%YdHf(Ht=hglz!#r-2Q? zbB_amv4{2(?E!+pXjU5(olCL|$MwRn#0w(SPtPN9Z->id*jc)tH@Fs9@v~KIYoA8( z_gupa6JW7AE4DUp>7KO$Gu&1EIlT7gLwst$&$w6`uAt(jM$Jo*tie9lR+D%RPUMwD zdn*nINO2O7QaGf+7yL*Mq7NUHQ@jDfjIbqY?0tzlO8N;qt#m5f?;Y}(yMzg0!joVJLXxuYXN8+@ZiTCzC_`>u z+U}=&W-clH@Dozu&If z=)^cXoK@+-$iG+MUs)H)x4wdn7o>@n==3Sv9s$MR`DtD!Ere)XB_>hE{i2k&i+s{m$MKKrIF4VYdv`w{qMu+0k0AOqv<0no5RLr!+8W|n zcYl;%!90DsRaZ(pmBaNVo;zRSNk{;2k{EF|Z#`cEfJC9>Ib)~|1I!tLj50A+aGs|| zO?^V^Hatp_QI6Am6s*S5070CFJl@03-}mhV=Wo2Y(* zo|BIZBaUxz!JIDO-D5KR{zJe>d zKXRqEVxv23yj2C^WjGLTik~*M3iVW2Tl@_!{f;mGzG-TQF=dAn($#-ZXcMMv(9?7< z29Rjh8bf@Ql*Mv!Y}V;;=XeeFqiEKq0<7Y5r$2sF-V!=;)R>{)=uZyeL*lh}85m1T zt96FgYVqZqiia(UOU%Z9dwb$vZzx^PKzpK~-fe3A`bdkYso_!5&6uws)h?WWZ_u+{ zL@>2hCUeoYdH#-0&?<2Vycd2*WWSTf@joS}MP^U;De&R%mxNm**c<+MvvC@vcjH3K zKYE^PHEP#*{gaDP^Hyg%)V6tDBL|bx5zrO#WyqV_$$wmRZF~k0n*6=y=VkzXr#IGu z*g+!k@%yNJ1Hc;>sX7!xxNhL{mUz)@2LjG)6#?h`KU=_&D?_Ghe^FOCppajL!eHPtSQgT@b)C82bs4ft(cU4dz@Ex_3w}LuE`e5AN#!u|hDk87Ps&=}-mbBh=jbwdYv5Yujsy{hQ7M9f4xM$+QAI&K zJ8~DqNOEweY9`wOeX%XH^&i_$xW+AZ;g+Z=n1><8w?ui=NoedVj|yukkJ7zPMcipD zVAMHmE{s5>lVct-6@}$qc`NYcUT+naAX+u=TAsYKE|Pn94AjtY`Ghwt*8O4QJ4n3) zdc{jeg)@nwv-)=sdI15xJFfOfJ(d0)LNCm?>&v{48_K-?3dJPe;pyY15-$ub%plF* z19`WQDDQqskauZOwa#N$-ZiK=BJUQSU)}|B4FulqDhzya+`gdFk0p>g0+rGI@ML8Q zr?yS~9({U&(QK-=P4xTz=#hc9p=fXK%tY;N(L@04;iam+efU6yCJHtegHR=_<-NsP zZeNz3Lg@73X#2*ye?aFNtn=m5MQOQKg=>l$leuoz;AGUcdGY8`HokxEX7lu*C^>~1 z>LC2-d+U%nwryT|MCRU8jWJKrfksXJp=5(6=aFl`qP%Spmx5^O=#~r&v`#MmAq(zm z{OVY|Eg={3c8!HRRwU_Dd=}O+wlc zFu-RAEp1{`IPe)nN}vxpT-g6Wr>2Wa1v55WV`6~oYNd?`7}CzaFpL&D&p+mlWGFv* zL7zKadS!k_xd|romLHaXR=dV;?MD4GvtSW)tAjm7eA zk{tyS+T_G2qA5$X_jjbsK;8L6D|l!359u7Gy+5XV@o`h@pV26eo7x|rf;SK~r}aDX zsVV+~AZ78m3&h*BgwxKOrq;iddKK-D5AyjX%*`SU8*NCnf$1hJ5?xoyq5=|)Oa<~l z-g%!;3{u{ap$BQGEf^ToY$oooMV@pz8ho+Mr)INRQQ9<=HehTJ9?q2_eIAXFf-aki zH|_ z(qEOOJzVrB(|@3Mik5f%Y#&XnKq=n*CbS>XIePdyNUvky<7VeMiU2zw4@KB|kQ5|e zCDj2EJ3YYEs2$M-ju?kbVR4NMP=BC}vtwhsQveC#tVQ>c)8ZNV)gzlZEz_?G{j!I+ zORp!Q?%hzF>wfl?+bZToaZVaIcYLK!q)MS=A6TnCOwQ4AM+_8ljNDb|9e6NB|9&Um z3KjfEd)GKwh$D#MZrzS4H3`UVa9aIVBTLqssff^#s-#cNCa*-kf$FL`z(=Vdk%0%P zwzS6417>eHtRAm08@ts!G>;APA6r~C-)f#(ZDr2KeWJW;cudkhjF4WfB{@`6b8^QE zX%A*T(_GKbMby+Jxu-RO)FvJ!85*^e6h^qO9!TxbmU{|Ju_MZ*B3`6AE0E_HWv&tV zVMf9RGeGLQfDAWUuBGIlDdB#7Co|{R!W()b)@5vv;c-^d#A};=G9B4OW_r=&ot%>C z4BtmyhpZ1z@O8);btx3qmogvCc{q8`smRr1lk_C{8~{S%zP`Of@0R!Sbt*w_O}AB{ zEp}eE+w}6WCMmF(J0=rh!J;a&TiTUH4_;x^91V=1P;;ImXyt``)Jdz>!(+Cfe zPcuV>teNeSpbLY-1@)mA%)_Kj30+$Un3^yVQ9DjM#6R)Kf6W5sIu53ow>@F)1H^GF4dflvHf^JKv%( zG_9%qKB8yBXCXkxR!ibDj*da=UQ`yS``9Rn6hScbTiVG}mly+*%;_!pZC{i}lqRfX zV}hE;<9S(=FVc#Gt~kL#>K;AY`FpUx#eD4~EmCJVTIQtwxEBE^8N|eQNlR z^4)4~0WjM>+PU?^PuiWJ*PZbp_By1??C+HD_A-1llhbpdNQs!LMKwti#WBKs;Y`7| zGnyBJD~bc4eo%0zyC^iu6SPmUNpAQ+7d=f1L{L+Fo;BLjsCp#hLqKEx-VZRA!Wlk( zF8j4D!6adLw_*WBf1jkl0!}|JZcRtf@_-(q6|#hgxsZq{i&fR6rBJiznasLI$=*t$ zpP(Y9Uav`(tQ0q|Woa-7B&6BwSjO>av%{pGKT>z2Sa;wrc`2WvZ3hR2F~Y_Ect~Cv zz{Ci(hVaoqA!~3FJ%TjS1fPlYGa}%nN|L$RI2O7Dc+(cwT&&osaVlRyZk{5r+fx!A zL@GAAO2AI4j9dPfbLr;`J7w0MS14e%j%V9P8frIps1}mh3UN|N7=G?3Ab7x$hJncF z^}iEJUU%(1h_%=u0zonGQ!SEtFPa7cyqk{-0+PswX}2Cxh<cbcrV6;N;|X?09$wP7W9!&@8^1_;5<66 z%5Rshl02(Zo4<-E9%@;lR0RQ?ZOp3Sq-}`8J<(5$6sG&QO4dmCfVO z^)rGQKS~*5^o|AJ*`fQ1(RxI-@3my(0a+LI0{TZ^SjBcKJ&%fQdcGXhu@ncXaGmR> z_TiQSy_{U)1Q6XGE$d7hNe^P+wAIT%-!agnh=M^VehBazc#m`>lfn*~?Se}2Aa+0zJTCfHmo6Y7Q zK<=L`g76`62VV|ziDOAt*GLfy)PLGzTR;phky3~`o8V0G64^YhHCk#eTNFE+a<|1Z z(#kKMQ9d;&7Q->FLIKktW>ZY zZV&4N63ZSbsOvmm1{tc|4;IoYYtOZi5|gB=&1%g_YYrF2I|wN|)o$OtepSKr9Qy&5L9Zi2Nbtbpp%J>s&db;^h0Jw;F`&xqO_O;&A-*J(6x zKBPMU)WG{EjrYPv6`S@Jyr=*Jbn)%FBfNfGm{Nl-gE8*4TS{keZr`3rnYVdNx^YrM z0q2^HP|NdaK7zrw(Z&8u#&QDbQ@G-7%M$&LYSdBffk=V2Qn3Pti1up){MZk~>goW) z^FUVBIvV}i#y@qbwh#TuDSNlp!;=-2$sa-$E@_hO54l@a9S?$(tLU;Pns_APBc=6# z8yRLb$7}F|7ARuo;*rszyf)sR5Mw6hbvuY4wnU)>#(>s?$}gK5wQ^fNK`5n~Qur~c z@I0w7vH6=w;f0(rq`_`?Z~=fu0tNy1yn!-dm!1}=W6B+EaySy{&dpnLyg^Nj_nKYzdM)l{L_Qlv6vNJcx~UmYNp-Rj*}@5?8ly1R#^Wc zDfHXob#lm64Xi+)|%RLtXh}e0SB)>wS+5r7iWg z?c+q=b(tOYwD)LFJv$Z7 zOz^<1pAq;Hv%k{y0IqaH!n080qP_7#7(ab`#lUVU<`)qE;9zT?2Vg!`DwM5w;t*KF z#KkBGJ0!Wwo`{*- z{+_9e0l#y?z(UV->{Jf@QedX?w-_`cs!df(^OlNovb+GZ_D+qDXfL9>{l#!Ztmgjy zNI`Z$E_dD$d7hwXPBt--Bfos;x1{=j=tq=@Q3yV3Qs_8kv%VzfBuu=6dybw!fK>i% znFOh3Xuh-A#Y3J{X`Tx=lVeo%9W^D*2+S1`Uy~N8>9FoOUfD<;@483os|#<0Co1fl z%F&LUfIgs2pfcGKAmVm_jy2)2Lpo&>rD0Gbz~%1>k#g6%BaQ0_ok%ZcABp#9e%|nr z(@vN$uJ^ob0k&r!X48S zA2{fubEIN^c$9?s^HS|71Q5#4McVW96#-jMqpfm;g{TM3+x>D#=lgYP6St$?kB*i+%j=JuS`5D;N=gtSbZ=fo0y#bbY{@GyE6=rz<4+& zHOhN&lK4=(y6_mmh)w!?Kz>K(^C|6aOFaLwBO9VTMTVjB^jIA7jk++ay#cqUdHyhM z=i_{al%x+2zV`GM{ZsGB^{2fKVXnT}&k<3b$9ZexeGB86m_$eeN*#MSCFR_s-6qE( z;t@L@d~M%C2HV54nlOqFKjD~fry8YFg$DQMKK{Yu2Juh2mdly#H$(O10KJ@Mt%leg zWN|_uvm>bh(SC=s>y&OJZQ+G@RW2OI=@tHI-_tx`*_!P!IhIp0&vSElB;L9`MsEmG zh4qWB-hYB4sZ%1<-$YPVa%P#7m`47_@TXcUHzw@P>Az?9W0Ke8 z?+Z*ArBNb36B9*W7k9+ueZDk)9WXcH12=n3tM-;0dh&-PonPbIa3eYw8U5FHFbPuA9bx{oK1DeOfwmOgVDPi>-^F>rN zGA>?}F&X7`(L4%trua{V7AU#-#COYVo*5RJ@jgmvk1|KSkzpB{rOgsf$2oe}%bkBa zC9Lsq#74YmHrsS3o3%(Z^<{hOq(KMMr+eopjn>r- zm`Ag(H2qaMT@~oA>ZdkyC>;b@1!#GzWFtR&6t-D>=3 zUmS~Qr-0<5ovcJVZ^Q#U%`>7LDfZ6>B;a8GgF2z3!By!DTR?|(y1;*;tD-hL+?mlC z=m~wxfGm&I8tvj5O5&uQJ${V`yFnHkMCxf%dn@pHS;!sxMsknFSr%G1aiqbMel5D$ z&E5rJ50$}@qDmUfX?L6RV>;q~_eH_us)dKjMa`mM-5nu&!Yr>r_#apz_kQ^(I2S9# zaL&lkR~BuR5nMQB?CX+*o$~l3c$v1;_9dpXf_Xwg0d%G*y8C9^D;@=UgfY1doz;hQ z-x}V52-_YWAp+Iw0U&TzJc``wU=&7;nEEZ*&G9#?4@8>Ays)$TX!qI0-B4i{w2opI zO|VEZnQ%-5eQA+^fxiKYDGu#%1u51g0qcDe3f-14&D0iI4^WYLpOWp$j*OAGK6K3(ADYSz#0;ag~8IiQl{Q*r}tZ*U77&Wht z!jZOi6z2m;TV(-5sI0>f@HnA==#uQtkAh3G^_rAHALv%uD2X*FArGwyvF*22`Tdl3 z&6y=4mtOlyH@pQ}M6E7K{};KEkS|}yxj1@;Xu-Cw9EW%H112mYdsk>%D<-*SJ5Y*i zB`r-U-fYi^m+YY1WZNXkwnj0>Ywq}wNbhc9hTP^g1+e+moO{hbhO}Es?R`-qk@sWr z{-isgY195JS_pT9CWGc}YbbWjoJeWjx>pLIc_TcH%{Q#(y$?2Ip&AHU?MdtV?Zw!h zvTYHjr1>YZpPP7-K(Th|iL+4l2ntL(g`-TsFDH<$G6-bHQ)_R}#rm+tHc zRVyhPfbZcwkC+}oyA!L2rkY`ncHcv}@$ zo`MLw*67%GEohz&(RuH*eyySoU%+n3q=wB;#waw*H{`TR|Kdi0ZeCM2BT|nHTBQe? zI$Z}x=fcto<2DJycQpI1^FW~$=rwyvqVRc{<3UjSLji*Bafda^dAox%eCPfaczGYn zxGb$#Jtvf%Hnn#pIt1FZ1|xz+hc-9}WZh$+Ae82DQN@d`ql9NhQT6>W5jIp1^{#}a zz79`+J`#-z0E6`b+=l@0b=yZ>tWpX=XI^VZmQpY4C1P5?b!PU;_-;diHMJnha00O1(*u89P)jwJ+x2! z)DdqD`y|+5@Wpp$(fsK2*C<=J8y@#+r6a{FgF}R&6}ZKmwWU^7`(yUI z@`i#;o8Hr;*d`0l(d)wx2$VTk+7@YK?l57;nP-t9o!Fzub9$QnsC^(Q?+)Sm=Ja;l zoIY%)7}U>SWM8=U)ai2f#s23PbKaTg-O+w7=jztOlz%nGgW&2FS1Vu^c*l=b^Eo_Qb03<&s}Kj@iDc>ww-dd zzs?{Ib&tQ-tpV3`lUqIAK`8xNvG8OlPaj6D+t4?~=-|@Ry(uBI(XG`M!m;cg|2npN zQAeh-QBpg?i$wM38S~2RT~3}@t-~2GR8X0+1=~$zCJZQchz+Z zfSCG&J@wXy5S@czdFJ|4@Qm(ggF(Ap-Q-W0^iwC>)vej)#9~iq(KeFo;tIQ zw`k8EZ`#zbJnl?vQ-8`PbylabXj7LD#@zBYUGbjo=`Qz{_MWsuZD(n(DI0s!cJ7)D z#q2cO@*Lo#s}5LJca^{QI{MR^PdgoxKLtY1o(_iA)O!jH)3Ba22B37O>2Uo?K#V7i z!O?q9TMD!$FuID_g+1A;t*~FX< zjJ5fsIC|G^v<_DlYv#&7_H?Ja(gMaBuFS(?Eho0IBGts2uFCzz0*L?a^$kE!j{dXq zVZ9U(9p6ufBSp3+1M+ldz`Z@!)4QW5Ky!`p#Nu%mTnNDP&dY)||m~x?Bc{-Tq7)XUzH>Y0SojQj1fRHMkyuRWl^z0G0+V>N~ zSw*LS4adek9CTC5)n~kS$vv2h`=s5g4E}jAP^y(08$)`h54hk1mHLyRJbf7DVt(_< zoO?sKZX=v}BmWF=o?|GrdcMCgoaQOQ$oC7qC&GB@5IR-8v!Rh{Q`=UrSZ%Dhw{_!6 zU%oNJW}lAU;bzX6S|BL-icap1Q5doN&j!tY=NMzdGiLlbLE01Ucn@#*!*c=c@xEbk z33yE=XLN1L&1pm3vbcHL6@0!_E>)il<>|wyck`7OH@*oO)VtjBz>;i?C${6UznH_V z9(R5-T#xB4`x^YrvLi>wTR47@KeEi8aI0n7-4T}izp||BaNXl=(gOrF;>B6!aMw0x zT$2+JeTNGr#1C)n9#=r&?=17|L&Kez`opE?7}fwQM9Ly#iULxLv&^!cv2GfVTr+jo z#cJUqrOKuEVDfMkD*DFyjy+~yUd*Qa%Zry^ELazheI43{>+#;#0y|)TeX$tp0>pjx z<;9p=(_PbWy)Q4mSl{9;itK=W{_?`MG}GvgzPz}JS1Ba}_4vIHl;7ie_oo&rSjDnu zzIMI)Ec@EkyF;F3KjKv=%YJmZH=ShJk6;$avLA)=V_S4Wo%_W1wQpPASAEW1d(6KA zA+m$`VrIU)fO@;4-Y(Sp@?!fXKybca&C)Z5i$^Sd8_F%X?exozq}B| zF0A=}ln62sVSA!JmTp6nZ&~&^f%t-n1%#4ipEC+ZJZH*Nu%hfuYigQVbr)xF4flW^ zPCY($v&``Lm>v8ok+CuE85{A3eFV3M_sXm+PhS-zOK1^-L+b&W{}~S!gMOa^WOi_H zpmZeL1Y1D_N|^x6wpip~NoXw=QMNK__$j9kUm~-Y zlSMN3d!qHJXJJRvr<)kMB}KRs-3pOJDH~&OxPkY66w^XY)*Jq?y`5!+?VBtswsnU_V#pV;BJSO zg}})j$A0=L?UUa;x`ozQFIuhGK4-7kmTtkUdiJzq@?FOm481M3A1O9@-`f(sC#~TP zV7m$k{`MmKLNHt5WI#i(^fBLOTOlW?Ekq%XXr-Jt2oac7k;xK3NBKilo-j`~fKH#7|SlDQ~AU#dvJl}hMwin@iQ9!-1N+l_xt z?Ubs@tMQU5FLFz99S_ft_^?1+UGrpXF^c`#ie2tZWR782X(cN(5)YhLfzUkZBW*4sR+Ohezf?# zcV%=(nGBv6SUBdoJ9W5Ng6()0W9|*@Ucg2pCrGRlJ~q6})^yU-J-#2{dn?O+h%P~7 z^}0je9i7=7BfNMd6&o&nVF#&X@p9FHNLbMUgvA+@WERd&IZ*&AHi&=>qc=J!Zn6Ub z*x`L&s(q=_?GN1C7UblY=W^_d!#z`X4D&&p6U?(^cg)hgsiT|F4ctqK&cc0996lrL z9WZY0p}@U|^kh%| z*p>BWw$TG%cE9g(?_&Z&<>C+~yWqeOu9nNO_hjB-wqpzoOE(!D=sb0-{$g%`AidXH zj-5rbN?x!q*@X9InAIIfj3h80dun;S7wjBj$10dphR+O!Ub)@i|mWs&unUu8GLs(<-36cF|-4K?o` zKZw8AQvZqW4j(LiY;+Tc68*N4&TxskG^!_ESC_hh#!=CUrD`0*EruNEYFD1qdT(r4 zyWzqVSfw;r1zar_xcWs5ktd^LsK;Nk#XQKed3&}E1KlshO1&sTZ} z)xV0N&R6O!)1s;ByG1h=%dGS*PtyHBF(!(xL|sKYityc)MJN~bHM~ddSC*E-&2|lIGWFb))@8C3>yDxCn&9n_Xe_QQnwHBa zI=XnKbWvTYi&|Xd6zK9LkwobAm7q7$p`-pc1$ZI967)hL9sHd0QBQwJ!+)We-gMv? zy|iYf1PlNFF?)TI*tfd0wu)dCW^b9~mbiTs)24FDje*a8(9J1d@3=*fm!9r;vC}rZ z!DQb;5rlTQFE7YPLmtmi1qK3Ntm&9LM%Vusrd&k|a-nm`EASh93aqlI@LP0XC!1wS zs5;ZFscxRafI^np*w>hGmJYhIYI!big9;&ZmPL`5CEZ=#UmDLb#`_HQJplJ+4Lf-y z!A|Z^0QuadWOHaJ&$91BJ;e~pi>cJpwtD|A+Tm7jDdm(x(cs&3#SIUC3UDVK>Xf&&?d!ruf7l!Ghiuq^D7JGJdHwmD39uV? z{2PP2#nwLi0lG3=jc)2lM}hSXhdFu?V1NGj7ZmOdxOX%)%}-o+GTYyFfBZ`w zgsefVaGUM0LTVi-$ZT(a`!h0-iSD>ujzgUlI^tj`1jAzX!@&VKtHC6Qr9cQRP@bKyo+?&G-_tx~+%X1lDQR6}kNu2c%a0ThDeo6i|y5qi!NbmTR` zh~rC!Si_LI1pCW#-8GGAth4ml(SCye^@f?_KZ z32GB~3MT#c-*WsRw^^ln zoC*}i!VXl(VWI0~a$24>+bu+CB|O*kNhVG) zac=6A0)^Xmna)2rn?SJuN`-LT$q&(O_xInCUG(?gA~Zswh&znaI-;0JU9w+d^LWKR!$A`*zhV1A+ESEC0ODo=E5n{X z=WkLu6;&wQEMP{-FcjP*!&t8D@i~K4v_eOlIqKDUM3Te-_I`x62dF?S(au+8Bz}Ynf06ew^B`*U-|f4 zgK34@M9-MjC^KGRVMJ6&2@(Prt}fIgkvc(qt<>~}*{P6JMT~7Gx|~1#6j{EXenQ6c zD@&*uPYN3a0ExFB%{MwS+)RWuDyvk|K8jJBqD#Kk` zku*M$UmKUj!X~&Z7T3pRv9vxei{*`QS*)y&hw4UnsBM6U`UZGtY=nnW0zF_}kZcva0q?iIkgyyMW7W%-KN-2OAPCZUJqCvYi} zU8<%bO~i3Q2BV`Js>0C0;W=u2C*K3SO`OeJm_Lzb4Q;{(wCyK zfH2aei~K@5NNZJCjLo!W#T7A^*1og|PZNVH>$fOixEv?Hpz&fHmn&&A=kOd%D2HLR zX#xpSqeaZ6TuW;uWXHdhxIwCoMH^(|*aL^V?o#@$#c9TGyKvmK zLVCl=PX9wx{)gL)XFQOYnqDjT4fqnGB)2(jdm% zbr;~EwrCjKacpP#s>g|r8ZNj!)EX&m7Sm}xpVDmcEbE1Z{2w8>)4_nd3-)onn9{dk z18L2|0#Y%Xv^&WYJ{3fqWr;^omav}s!gH^0m=G4$x0gW?5xcI_O;m%_Yl~)x*RIZB zx38NfyaAKeNt}pqeAs+(#BZFGa8lT^Z`)pK%SJxAPw=x%Yf?yVGUlG1)}*)?eT~vH zps!J0ias{i9m}u=X%H$Kqp`X^8f(kZ_#Yja2Qg%z`YrDi~i)LS$SRe3o2>3bDz9%g&U%{3L2DXE^-6r$ph4>l`*N+4_XP!5H-#>>|$<7~W z+M)iRhP(UYUqJvA8dXlvrUFTw`L{p)(5Yw)rke0byzWKK&xJa9Yt6j-rIl-z(@~KS zk^Wgm-iM>Y3m6u@7)&$|d)VmIv%P49>d@%*xJ8y4X`NRhtal6B!Fu~P*UXm}?8^(b zvmn}5T^RI0r#$nkN9I=-#qx?2J%0GW65zu^G;%u~^uXa9yjYe;3Qs~n>)EB)Afme@ zbJ>z1CxkYyN*JwY^WdPgwaKWr;RP4Pz&R*u|V${C`#3|q83+tbZmkd)k~ zzn#$MUU!JevQDkO9SRZ;e@cxKUpCwFlLE?tL^|T?kFn&dqq(yB7^|!83B>#nAb!cF zh;@+2R7Cy>fnWvtt3A*D4YQidy#T8T5wL4@T3>BeU7(yR`#tYF+#QOUt&{7b&{#be zPyT7?1wfcspA?E~Bnv98hBRC@%Gt64lZ^FJTEuS1Qxt<s@4bZimykMU+;NQs&%dmkX9$GP_uS;V%iRzIQ$K9VzKWHn5v<+gyB$Zj zy2A~~wz~Q-Ypanh;r;`meqExiLpH@(ifD&qBi3|1u#L6Y)CYslDX)-e4-{s#I$BHl z)n)kA8AoZ2G-IVF=2$^fiedSO;xaKuB>h+c$@CV@6=+$a)RB~Gmedak4?L00UZ(5l zcuHm*!|9rs_#-tPP7>XUh!de&@RQKSQ@O&X$MHkuLsB1DYC_s)O-JjmiIT;ULiOUA zUi}26%4D-Fnpt*LA}%jZ0<5TgvPsc_v|n+Zj-gWPA^U8($W*AYd}Qz{0NxMAx@pGq zB@yM|xOd&T;Q`-VolF$+75)3S_DxqmqL5S89tR>eq$M0&*3Eq!T$)$eot+2qF6Y(5 zg!{ZNDH-wNZM))x-U`+2KQt-mZt&WF<-OVL>I-HE28&>q=$@_+hjOlILke=!r36G(l*%9(Vy$y3NXQ!w;04`? zI!HF_iP5Xy`pZwd^}9pe;gsh8xmQ-4bcY7yw!KIBF)-yre$&lTF8*KMEaf!}D2s$)Y0OL8TVi#V@2lf~LRWtlEzS`(!Sd1;>dp0$J=d(K%n8q(|4v8SUK zo9^OZy0&RMO7_f@m&BFy3gAEj7c5JC4`#qU+yNSZ%c##<19ymsAm!B!E9E5ZjzG;q z3XGdRlMGk5iZKdb6L4XPYV@7&Lnx^xeY*BX0EjxDywUiDo@iY zq36waIb#7b{rRM0wo+bl%t8?Mv!Ah*%Kzmvwz9g0xl((=84FAE?>%5E_0?yZ#IjZ* zJV|nE9j(_B`79VBqip*oCg-{DWha2KyaORRQ?F=1{$ol>giZ zYcbL=j6U2q%R@Kmj?t~;pZSNCnIEtKRigyfJ@wv%O6$~f$#{dT5%!#&*f z;!v3QsCg&6Klg$Nlqd}^R7p$kQJ+QvI8uSRurpsN3vV`$_^#0I?XyBL_%yWVB4$ja zD2}Rv{Q#1Vv~5KWWi`HLjn`31J~<^!LilyDUso5~;>%V3KGN_iUXDxV6=$nR7L3Ru zo4&Zn4OhpCa*T`FQT#{50U|V`+`4nZF(n@qH(6FKqimXxttNwp0~VG-RzPk7cXN2x zc6x3|8eZCC@Nkjq8Do@Uj4^-D;jP9s7+aj~D$nQOw2^CV@_bfD&CMbT6aiM7vi(}R z>MFf69Qry`w1T68e0!t^CX+zWo0z&`g=|{M*6O&|K^IO{^L)Y`9SY*F0KsSSgZKx$ z5x`&7O?X#$v;7sBThv4wGckqy8DQa}E8K>Fxs7S4wz}w0f6`v$_gzyTY}Ng`ItuH>1Zjb~1>Qg74&)_F zouoJo7x4onFfw2c6UR_8SFO$q9PT*}{&x8Xw!6c7_OtDF9Q`_b{Clxx!qnQ>?-}mc za9t#i^>DwQ+e+88UA`VKe1f8`zUG_niSM}kE8LkHW=}l*?t6-aUUT>C$&*j2_}ZrL zEyhHsnLI7TAR*6V!YlT%i)g}oSiyEgNb2k838B{>gqC8(;FSJnp0R(hy1`9j{Vg0t z7kjl}&FR^xMO1-kTIhu(N!yPN1dVL?(fhDRW6IX>WBiv~gx4W$(85h8|5nO&r`;|F zeWp=1jPV)Bnx?Ag)02sss{O+>-LvNw%=&3GEfAGV(Bk9uB#oW}{QTEavqcjlNqPP(A2N6q0v%UzVPRUL0mj?{@hFhrV~~hTeUQy%)UlL#O0B2YTX5bc0NI zE;#rYM1n-s`wAr^4FE-w6QgBYTp{L&*1l3MuO;FHX!DaXq#uJo0?)uM$UpQwQ4}C! z$x%p&MgCc~L0)c8JqQKD(#}EgIsF*KnLj(#Nu=Ada!V?C!$|%vnRi9 zdey503jU-{*8`h$txCu^BNDXA{36s{YCu>$#185a$6Gc2;|TfATRy+iJDK!J1+if2 zqpOfE0lqG32n^;2`VItumksyx7S-6gS?el_`5BT?<~rSdwv_{f<+j+)0;1S6dTfVn zy@D*-2YPR8Sn?slzTr_I+DuV&#S+Wl3sDN@aYjDot0Bx+Q!r1A7V(G8GZG(>ciD;T zDG?6ohXU+>FnZknUf7S&>J0jdQfuKEQNIMsV|w{f(Ked4JqZ=)Q_lt#7b=XdPA#-L zwI{AlSq*BhSD$cYtv!Q*9p5IIh?_xl(EfDqE z7TWsidd5b61rJh%z#$(Ke0{YCKOsyf=?n_(h_yUm8ifs`p%cdlH7`AVJPDj+R~j)LnWsbR->Lr zS7Cp%Jd9mttTc@==$>X-W@gzCRUPR0HP-LR1#E0s@D&_?O_;Uc%cR(e_F)?1jOd*G z%!+%J$~HcDU#wKNsZ+mor#M;EI;XTQdR0m3>ypvg$soW?5~Y)v~O<59e!R9}`_flHTzIA$YDC<_mIzZ zZ*OlaUnrK!m1?ctXtuP&_R&_5-E|0a=m5D4`Tge(`-$c6kCe|v^>api&u_C|e`Vzx zwv*h7-^o^)NE3Q+S{82mEe!W^Xyep5agXSxHgeB--|j&OW`DL*)z-Zq8@HeJub3}gofZ0mov{Pzvv6ShA%U}fN?@<%27 z1ft9lD+>03TG>xTBA)?v;pPUYsir)vJ&4yT#%p!rwMy|?`hGAn_DZQ+7Ihhd@s*bH zRYk^4mxpFqQ)k&&GRyG%e)$D(6rN6azTr8<>X$?HJ8Jz(QvGVEzJh}W$d^IAT2kZs z&CPZSR>WJAK1(1%@j0z-PKG-0T0P79$Y^!;3$D^D*3anv``RjDinDU2&}E+;NUDeO zSFjWJ*|4Z)F`dzfUI9_E9oDB!L4OS7A07Au2L)RK#zd|5@sQ~o7Vm{Q*U5GJ>-#pm zxcL7vL)X+_{XLv_{vNus?Jr+4U%t3MXFl)l?C~#OdN(`UnOFNgKG=Ts`O6nKd$Xf{ z`d3m}=GA^eapqs!ueM(S>@Q!of6Rrjp2Tvjl;39mVud0ukjZwL?t@WJ#1Y#CUfp23Y!rTSTP(rneg=+! zex{E9mbY&rXUNcmA zKd^b0bwUGk1|4<~!hInNVg+?!a*r84bDXms)?vT0LckZ<0V}Ya_#_``owJ`0L^H-Z z!4KR^ecNFfXqSJ<4E75vy=2DDjt|ipbUqt5&<2)w&URVnW$4S!0h_;!?aV6zC`{v31yH9 zrNefagFx60E5^p0ao8>!$nWLI_?#(0$HBVx7Y`H!ULDJ4L zjM&U)nHk+?UEMUTOh3zX1m6vdlNsu!={Wksp5fwuGrAvLg(t@6{7shWp9}bJ@y7qS z4<7|kDBIo}>ywOC>}!{Fbu&^5XM|AeF7_taKgwq zW}$J+w&NQ(GmPMH$o|DjxI!i3ouz6%-YhEo38G~O;=tSE_q>bWeVWvjJq5pKK6U;u zj_m93?jM7xAE zPeuAvRzJ~*3POGz&O3nwJA*!grJWSAY*G{>38X)zu{(=24%RfGaj2r1SW#I>iO_vE z1DdB_1Nc>tzdG=%D1YhuOh+J5E@?xibhyrfY!b*+fYE@1V*f+RER19Yf9_xt`lODU zih!LSU>ossfIkcJCmx!gi*Xsij7WG$L$g#G3Z$FJa0ANFX=jd@o}GR4IKLW!#>*r4eWGG zzpwY%mJ22)`q|uPTU`8owa>O}lm5PhzXgaE^rO??8Vo`A_<(*M?z1fzkV`+`!%vI; zzSw75-qg99+J^Yr-e+4wgZ_R8Fm3w#e4lOUqTjawUySDrCNKW}ZJ%vDaMKh`j$qiL zqc{6(t2?B>j{%f35*?mEEiv#@F;X$`*ZXX1KHO3tD1j$S+#d@P_2)*H|IYW>RzKgb z_xsdLw>;x+%I9qlzv#TvtBEgnQyq%>e$~6FKGvQ0P_fqU_j_eg{y691AgMET%!j#c_Ym`)dRx|ioTpjy9@mnBx;wCCJGz}0f2!h8M~*Dyzf&ALQL*D=N}sG_%e-9ot} zOCNMAg!X#`SMP{l;(NX0mkh4XtamWMPQ6~u%hHcvZrIWr@IP7c(-96#PV9d0DOP7R z)JF!u>UC;W32Uqmjvx=hR=tzY`~6-SGfp5Ym1?IbhkHrBZ(IF-z3caM*=@rJ8;w%2 zD<*pXsV5-%wOm+uAn`_{TGM6W33XEMce-`i$u%OSTrc(f;at;{p{1hRQCW zWtaB~;yF&ty?^k5`+@dMgx_zIZ-;Qmo+wS*mu~&7; zrvAVM)_c7=uZj}EDU`|oAvQ5rSmqyuZbV&Q@9RA=r#}eey%PLSR>ko&@|-vFeo?HJ z#AK)16}0|`++h8_o|hZ!54pjL`A$*y3k9XuYh5l;^oQ7DwOYO2Xvi|^IaKC)O_TOX zzFU?D-XAoze!tJfpiO)|V=LgaP(WiT6}!EXz<~Mwh;WjZDE0Y~O73I*9nK9XQ3Cv+ zo>|puwL#lCz#9!iK|k#Q>qE9ejsL4>s0Gf z@c7_Poc9B&+SePh(+gr+y@KR{ACUPFZPyBwx}dqS(X-%aCuY$oG-_f#+~+-<^SWF#C@0FV z_dAWcUx;Yc`%A4iP`y*G6vXWP-LKd4wW6$R^&Ujs zepxS9MRz_^;Pp_b>iJ5s*pp@Ej01=5=HY*$P+=)tV2`#= zRj>FARPva7JujJ?WHCySYuR&oGz#iaw_Lv_(BpHWaiw*;_R<)%C!)ZK(Pa+ri2n# z2KDmjB~%;h6GaJ}Ww%+-Kii`$vqmqIG`Y}9+SWokT^qFC7W@NMJ{vbe=Y{}o3BWD; zg+}2+xK$u9RGj1Y&$qHUBbe4`&*2zn0&4QHKKVSl*;Y+B)OZ3~p;OC~)BkLb;8~=q ztSS-s*&2bK;PVK~l!YqUCyzjL|Ld=;uKc9GZeq#}2}oX#0e#q~x`a>=)l;FW0Bid5 z#$W8fU-6ep@t)`CmOIfg{m23POr~x4|C=QJ0=5B*7bd`%b4Sx%p4q-pRRua&R0HLV z9#YQeA?1u7R?evT>&omE(?MtDTh+dWRR!;lThi|23_AKN)!G!8iBhabDaF#5Wyuu_(G_z5R&`| zf>2Qnq~;KRb?8?`tTxSo{RHDF$}Sw)h2sO?_Cfj8%d+}FRv$#Fchu^>8nh#;cOune zDnTb8xj{g0on@N9K_{Yl^W9{A`blcvBdRb|h5-d;e*9~;=b(aXwl@&}?R-mAh@nah zG=<4+s9MBD#IvP8!;JlM!18NzA*4d7JE>41*F|_CN^lxGR~k=$f9C0 z%e=51iXCA089)zI+jF+JBX+0o_d)1;C-%LQMh>7h_w0aNW?k0DYB~%Ai?>5O&qwXp?wwrz28(NC875p% z7=NH52Cm|bCvlZ9gJLj&D%QDtHn78quRF5Z&(uj4th6GnC>T%nA>~B?P|CYBMojvNFzp_aqp@CgzJgO z&JYOSbxln4@4ppEF(?bKO1Lwzv4@7c_m!MGW`2NEgzoo_4Ho2gSpB9upKc;pHpiZWO9W_NCV80!2Kyh9a*$b6Y#!K~OT zrCu=dh}V>W7 z>Cu)j;7n%Deujz%2W+>%Ua>iZKY%Ne4iZkLz;+ncz^sJ@bVJ$8`;g{ECcKQ4z6*Hp z!Of2S1ik!BMLSUYXBdg2_=kuVgLsR9(qa&A(TTU{C@nhi7J!Zk)daC41LK}-Q}qBj zatRT4iTes_C|43i+7mRhm|WC-r#AM>vw~FUZ*O~rK@ii3lE200#LF{sQp(OIFGoGj z4*b*2XDcaPa^2xhMwPEKh@Tz&Stx8P<8w%6M0%t;2LN=@K<$ZsH{BEwJIfJaVb<+T!euuK zmn6<2-g9PqPDtpKrGt>%DN8$x27sOi+=@(4h~f&>7NtnO2pBjutOjd$IWSlErVd`S zmVhg)G&H^rycLEgTx$Zq8ox*Z<-5=%0tsJ#Fbe1^cgG8?!jk@W?rY;Xi;<^3ib9HLq2&Xn~<(5!Ti%7U6A3rqz5nPdYA44j!d zS$QqX`m${{kRY-GNm<&*cnid+qMs?M2(@q%y~`OUTHhOTbHW{01pIulj4{p^<;1_5 z)&t2k-{`KtwYQgpFK(`*yGD2K)&=+Sa1)Gjf{Y;VYy-0CVmECFFpL2~3<@A$EIGuc z#rSyQJ@`T<^M<;|y1K|4$e(5GU_d&Sdo|utXzd-M4+Y`wR zazEowtoKbF!h56%m+5S3f#V7@dRgZ3yD7IkLpRL_HsBVdEaW|!lg0kcxHQPN@K&x(sSi$J+>;M&Rqt-P(IEXKUBl6D~xRw6N43}Bl@P^#M z5JG0zP9U9S=?dV8wwS(pk0@fIJNlR*5Vp&%hFtvZ*$g7=MJ?B`x||jFYJ2$<%o^_7 zscD`&*U)EXMvn(ht&wHVt?hjQ6b1={`#Ts~_)?CwK%Sy%e=8-iAc7SzqFYRdn>O6j zy5909wSb@&Frc$E0>= z%A@Lcam5tc4pehM(Vk}$)7XPuBjEX(3asIpMwf$=Hsg`uoXempW>egwDXL#T{1R;(56f`CuIR9om`bS3^8nLR6 z#b2&`9(|=ARZ(_lCq;X%i4Zb_tKNaJva_SEcwcn$3%{d^Wvyb0|zyH9if z6HF_R9i@kII3NjNz*umuDf>-|>Azete(%AGGQ8I9v#Vy7?d@S|!KO2CeOC7Q2BqTn zS*-E?SG1`1t>_L#KFEs?n-95#nO`u6 zJB$*cB8S7-GTQ-Kg%q5q9i4eH$?v>QJ&?fQ@$KI4wd0n%w7<*lq7r;CY$=a8bxCO#o&nMVFF+F!1Kl!=aI z{eAWx-)H$n^2w`Tvy#r0{W05TS6OE43wBEJySCAbQF@k6Cmi{!eb%vUlj|1JKh%G@ z&d9FBPD&d~z{mfQv9Q0_#FcJ6Y%nSHePta9B#RPa5?}+MM7E_5y5Dhr z?5zE$s$D>VqMY=ZnY*TY#Ug;JUAtbpcI_t|jdqEMU=ZvUOlSz9w>5Nws-US*38;p_ z?5*4Nl(94Ru*oF(TSmDDx5o-(&?Qa9D9Z%X%BjZ~cc>{Y5hHUTq0TWC)XpS08y z#(e8hZ$_N$0?#|fLa<$l!Lat$1zY|y-X4Lfjnuv@8gh1lpwGUoa<86Cl zGfjkuQ*rLy*W#V^h4SPkE_DO_xzH3}sd)X5MLdn-?SZNY?#{r3U?=c8ydx5COWf4q zb<|BA8uDOlwia*01@K9{1ApReW2FH1=6J`X3ay^JEI_~+@-0FMCGcL{b|#_fIlkRf zTU&`!9dBbPXBBz_s=auJUI_j1b`K&p6}rT*|KxPL^6m)GT%9=XVo0Qq3+h0 zyh`NFm#tWhwVta{HecaUR%DBOq=|FQ7GQC!=O7uuqg$sVUBIzKCvAaClvby=<_Jjj zGKHG4Mjj46!c~dt!gUC^u}@VBNS|whDte8c}-4|!^?0F7aYez7J(155uS%WMVd*;60E2AS8_N2#+!%!tN(JU_Q)3e>87 zFG!9rJHzUG^+iJUYi3?a@mJ8<|Dab9XMrUqL0(nQS{D~6f4aD6byUlWqToT;yR^<} z{l1$3s5UFQs|ypB3}0^5Oy^fRCq~uNF!b;Xu&T_1n&rwhNP^$PVRIcs&5lLLA7AvyEqlPryB+bopgw;Bx~U(b4Nh)N zplGHJ2I@CV)`2%$%nH`2>}Zk0t!cWlbT-k2BeU~7o9n!UcS#CY1;U{&Ip9|L9&z;J z@w@k@hd-STTn)beZDc<(xW7IAo%s|r~?PkhHw3{FJVwI$P&xd;rfhkm+ zYZ}in_8@!?m_^ivbAb1*?5=-1;=aP|2<8rsAG1S3<%k&M=2}MJ`Q8f?Y$n#srdwkK z&G1f8*^VZ4x#_gRHsG`}OXk!q6<~JU8j*_+PPDy7U>$X`69jm&vksv8Ql0F42Gp~Y zo%7!ax1&yWn_$DYhvCCNyALZyb{QCq>Ujw zc=&8~$VhM-9W#$OPO7l!Kv@qTPm;$T7LAiB2>K?+!eimE<Q zz)%$kYxE!KAb&QeHQTau+3{$X0 zrPHE>_!gBB=|f()YMF2IpC3jx>PSY7N*?v%?J-iH*SuY(Uj=pfV_x^(g)8%092ECNvMtbuphNWmpKs zz8Y~}7R1o>uyEAswc3@?0Zy|5F6QT!uOr7n3~$Vwk^>4-Q3UQ*@oWxpTj8bjr<%=$ zF~NrqA3n4s|3*zfA!`NK-2q3AR6ldgJZ6vS!0yt-+}`Rv%%Ypt|TZjLSz-c(**IPrt9;WVzFHqPC$-hRHN3R|Buy zBbM$k*YQUcmu~HfxZCips!LMT9sKvpFX7MG$Mc|%M>hO*&+~(=uFxt@;JoFX1aibt zf9QE2o6WrM?O>vmkYc6&c0V+yzT2^ZY8=TPMO{bnJSpR8@=tVU3=4iepUGaC{XCzW zNDOKVztUpgv8`7Od0@Cqp>qBly_?AFSzNBz9H-9UmDd`{Sd%%D2f-qI`-@kv|DyH* zvA){*cDq{Y`@^?yE)Z)hv0MHAA3qoPK}w{?&;s^;GRb1pPYY zm}XZy+h&OHp$ZK=`b`1&y%#zH;^{0aO5CYMv~&vWmHVmZMKYCkigLXo^mtfA5CVMF zR?kiGD(OA~R~68>$JlO0HUnugGUnMTo?c~nQeMwU-Ib(jtV^BG63BTB`m|iDc$pMx z8V~ifAhE|)*5u}rj9|G&IfY2`aOd+2+=KM^JqL8hp0Mj5yy8=dzk1_@FFPK94wpom z%WV)Kdf*4O81I0e*EGZj*)hQ+Cetj-Bb-*o#tYst$zyY9m}V`!N*ixnQCsUdxDFmD zNOB?HfvfOt<=dDhj;V< zKExmkGa>ofm>4JR8ncWc9}r_m+=IXF)HWP#z;q@P$1lXH_{Rc7c7(k-M_nsWx$SGz z@gvMigrV*^oeG3q>CM4qtiq)&rZs8kUv-{LK-7u;YH?WtPm2ymV4DLL-3o0Mi7f-0 zN8b9kS=uU9d7WpsDpsefIpy37`CVk`ah}W)u%d}l!FmPE&{H;_Ud@Kt6wk}Z{~|nj zQqMo-NpymhdSzx?L#t8%(lX8}E%%D7=O^^0-ELyIji-Uce4x?>Pmw3p?ouwtr1&ZR zDH7)1Xe`34uJ0&urbq%OC(32%1=)P{b zuP@;1V>$jpmp>-yVLJXXUVgWNI}F)B=MdhoVjf97d136KS@87<@>IBf&tf|W>K+TS z0Nvh%nrtE~7GRPl?KK-`p+j5UK1-4mX6>o$S#o}6FsdkGU|CdL;!HPtm4qSgEn_OK z>io&iLE_$4D%=Om7=(TD`xwFs7vRL4Yh8qy2>u9hoD6r>xLnKZ6_t*10v!g)9|7df zw-Cqc_^93JI(BV&kPO^yM#(ImDvW1XkRfFp|BC_9Ag!?xqWf2Fx82)o$a@?~ zYM`DfbU~pTowNVb7`VWM0GXqQuP+Ol?>PzLUvx?H6Q@^GP0Yd#XtPG~R4wK?#yJ5m zy=zS)ui_z?RK*IshjOsotB%T*E)N0Nn>?H0jR+|Q702g+B703FBv4YmwVR)10SP(k z0kFTl)L^~?8`ak8!Tbu?z2#oG^4~+1SCz^unQ;gf`1F+kVIeqfCWPM8AktewY@UYR zwwan?EJmCbZZa<8bT*fqA%Ow@Nx#-LE|v5m8+TR-|6yJ>l7!ii00*v zSz2md?(*-zbqc4>-U;UAF0P_^xzk&A)GkP=ypJpXxPp&0B8OS+v{-FwNLW#a3kc(& z*lV71v>GGChsX;8c$G{hAl)(N-Y`s$BjhCUMt*wuGb9dz3woC>=oJT{e1;-Co>6j$ zF-UKt#(Vea@zF*orUn>pd532Wxj(SLz#;coP6V;#8K(v92Bj$DycE0@q}{OJ;u&Fg zRJ>VCr!SLyG!-5gwH$o4KEc23N_v`VAw)nH(t$!c9m^sJ_%u6#sv(e&$S+X-bvh2g zu9ilOPP0QMAhlkpt|~l))A9P!y6wl&1r8q#XXq#9Uyg!<4IF7fg*f3C6!p6QLiP@d zOYENu&U<%?O8dXMpPqxCq2hAH8i$BT9v`P~31 z0@e?iM9Vn}4luy1BZi++78A;@JRlxT%bjmfgb=*UGfK5SbyWAO-9LWwZAZbMKQuU+cn$1GSKU`J+}Z1m4?_6^?(U41iy}u5JKBssH{UUT&(PL z$)a1nG|mZxKM7UIhT`1sk~Gd&s?c#hy7n!J$eXc5Ln8Q1WqNA1fIzdFMLkbKKJV7i zVv_h%Fq+LbTjp8zaWQ9$$Dt#-e9QA^1j)&44o1|KWw!sq^T+!%&D>O7+e_a4ULyve zuHp z%i^Imux7Ad?1x92wEc@A1h36ZFqEQ^2U8dy3v7Am_JeE&*}cX^v6$(x@y$<-?jp;_ z6>$!=0lX`fuv!oLP+{vRYi@w!qlCKg(tQdlK$2;xbC35Z#PRnKp9j>pVCLS@V~y-P z0rM@}nJ!Zma|q*0DdAxdQ1u13?LffWuG%?QFT7mNIvsbrA>Th{ z%+YHW>OS|eHWY(jl2M0Xj?6Zu?|!xboHo?X!)5BM1u7Ht63piCr?^fgCH|NLRQR<> z>E$^{+!4rL(60;K4BjS13E}gepE4c0$Wn9(UKG~{VCn%D3&=yb&;YJbHb000?@yrp z@E64LfX;8XBF1{EOZ_riq=HA~#*3!bf2MvmVd))_-)GrJmfqnuAonJt9U8;_QMsOF zH`?r*$c%K;KqFi`*lpasX;vna6-AxkfmMfZPG7$lO<%`_8lunxwhY)bnmNE7j$ln> z5E37?xWi9dHdITYBHg>{$=T{CU5X^4Ia`I%03$7rqBI zJK*ix*#~1+X;o$|3vC(=FpM>-8DYTuz<8jCpJZXeL(x1KJRHU@%rjK9s&9z!9v4~! z=W&sFT=B+k*v|Hh2JpNoUXb~pU)pwJPnNoO5BEO8P6u6!v%xBD zVY=t|0U$Jma8D)5fF@jyZ~#Gp(A4Q-&Y^tbvIJx0v2^8$iUqjG(0L9J&FHD3TnrHi zSk~pqc&t-H_u4RC)aW?V1!%l6ItJMB&A>#|jeG;?Sfu|F;t>GbKt7DX!Oy(&(V8QI>=v*~J*Os5~x+T|{%!iQ-xdy@k@ zv#%o4vqN$Z@)Q;R5$Lt8OeC49l!qABzOaRXxNHUQdR?#64o0ggSbK}wi#iC?=LY78oeVTP)D`%dwuut4q~LfX7^S&4jO=Y=sR3 zF6U)3(;4SN+Hm$@3J{$1!iG#6rvxivn8MtLUcfP|OH*o+GFCE@V<1*q8e}c&o+t=w zFF5iqvlI+E3J7x==Vc3oEUl@gYoAWX^a2e%TEtj^s=C0pBUHt=9u`@Z*;_p+-vbb9 zB@xBba=Ulj+?|C>7LZdkqoz2lSnz=HQv>-C>mFE42Np^=>N3K*?5InfjxXUN ze93~9Ez;cd)$S$u;OP`&d}k1c6&kzjDGt$#LvTrrTs}MmSR0j@q@aDc`|I>qjYC77 z2#pMgXa=g*%kc2P0K@3uX!7{LJ4kp!36(Y-AcVBR3en5*Z*o{@itp@%%5i~jZdkB@ zcr2$vd2fgqCvv&~U_hV0)+2~zke5@rjJOR?e{IK)>Ksrr{>U;y>Oj>82XcMtNx2t} z`_1!&w;d1wp@=dm5)eA09o2>wW>>nzHFcPdQIPa*@>hbwHZL;`3FIx$_q+uT);O5O z2<(IN){71|IPmyEjJ{`1=;9UmXph5I5m+CahYU@Gy(hU0OFBog238l$Fd*K$ASrGo z%-W{}BW`un4gbABTio$IsFHLUd-8!|9;bha=LLT=!Sd9B_t-PRD8jFM7RrE3lBxI-9|tBui`qqyI^; zLiSNxVvsD?t*3#H4lOQ&jT^3GV94KOIhiH^mVjp4OFe1kFd(Wirdg*MkL_E~T1K^@ zQOY^u8aleu_P%rI)X0AeiXDv482NG-GMU_efkx#bcL}~fyK!sjyxo@48EU-iXF(10 zqFr}hHETuMayCa9bt9B~P1g<~3V5O4R>MbljzyAspJBv3Gu(R#nbpo^SFJ6+{ zpScp_W!uN|^Vj6}$@(?P>YIPs1b)JGzDkKNk3>jMGxVd7-+>oGW;I_;%!<_{_ZD z%%K9BM@y{YCAEuZp?BbZTJp)aGAE#@;ItNzrDTf<=Da;8$joO zs?%q(z#~Hd%&rCAJ3=NZalHr(ktp_VQ3lI(OP)Zr+xDO~Re+)H z??YBja6LAM4`sZ4O3fNQKf4x0QMZe;#m(TE<+b&4F-%6`F4VgbE^OAIslyzC*Pn)( z4|hm*%Jd1_+m-EA2Jk-?c$IJJRB(O*6}nNaYw%xf3>yJ#*uUV!RXa&7*E)*MI_o+b z>TIY|u&WKT*#Kel-fl9hjk9}_q`E#=NRLKY5kW1c-0ceT?-pgSvZZCRZne|lW*K|i zIz}-l0~_u2a-M|-ot>tM>kZO(An$%B*1_6ov$K0QNVo&D8H7gXSyTcvxEX>G)OPQg zKc^vdA%+8@T$$ehIfcbUh2B=Mb7@39z z?=6ZDZk3@4;XxaL@`(HEhz{@vC(Lpe5nMKV+kbopf4-`&q{l&f2SW8GaI~1Hpakd1 zli+-XJkq<*Jc$i@SN6Vs=JTW#EUXk?u0^>XMW111byU$&b8$zb5#RDlW1q}I+(MJc1FBx869;Kk78v?(MXD*Lo>77)hmAsE9L6_W4UN7FfYQL-fh`B^j4!un)*A z!05PDQVP`8xt06i^izEzI=1>t`xuWtUSU8BdUYO-p$0Y(hfZwI>gR}wpOHP9$6le! zsAa|c&LW!aK>SpmN{wM?Fi|Xo7BfcDNQeijC9mr({y0hNP=LzT-$MGg`r9%Kyj#t6 z^{udFjr5@PMl@Q@|y7wbtQq?(ZNVt|TFC zG~`8a%;l7<8H6&A(;}&Wi7{=Rz}~_dNY#;Bs$ZL=$<8*rW22CvMdZeyngA8o*=-0+ zG4QonmHBgpB_h&+Hd$+TRr4Mo<5aCFdXu$wbU_%JvUYp0Bf3Fer+*6J4WHeTo1 z;_8~C{BU2_4U@F+|Dy9nkQ%>@SJ|T6kQ7g`uvqMiGCPjPW9+f;#+aLTZVvOLlBJe1zTvy(^`Iy zrWq)HoV~HjkyC?Z^5swuA5KGqVcf|Llv+_+>i;=;_fwDBN+zqwON|EiXiWHAk`12i zD5$O@1I-!rKe2_|B6_#24r5d61NXO*lue1Y3ei@_0c_Vyj_s!=-i`{Gn0||yNRa!v zgU(HdC((7PM@>VcHADMPoXtqs)U#$NWWjDK$-baiD63DRPl6!Hq4LJU6q-- z&Zc8G+GKM)P9~VWvor=16SM&?!m6)R_|$VCJUy0xY|;xL7D_!;Z|r)4Mv1wn0JB`+ z&+HTyZl`A*dsWr3x|DfD$4N1t#w%0K*#*GzxHA#{@5zf1ny*#r+nZJ4vEYIUryN%H zrqX}K`l2NxI}aNS4_EQW2kN5B>IfCarov7`Qj~VpsiB6$Y(&<|4lREo z?@ega9I|H=)o8~7)WqEKP(`*Bd%brE1JB0WL8?cXMTA=0Eew{Hf;|{e96e1u()*5i9!0f0cg>(kbH(j7x zaH@9ABo%hV$b0%Gp7x|6A{KMbT2l1d?-PT;v#nJzgJ%kgkZX0lxH6Fyi#_yhC`NE) zO(x06_Qww|F^iY5w55fajeL#moNb>IDQI_8<%@?YIJoy*_#|hFWm zp?37v&NI(O%U}tvst);1Y8?9IxPoTxGPp_8Qj0)hh--(Wq_b5N_L9 zhxYsG7noJ%_1Jca9lPWCJkR3MHS7(Jg8Ad&-!A@o`1a@59XHbkM`Si;Xz)ythE?KP zNzw^~tX!e>GP-Xr;^}myeu{tUsbjEqfkxt=aD_wk@Y!N!f>pnwu$}NBUe-U@HZZn0 z1{xG$KOO6Vk&1ijBr~~h)U9SiZDR|?QXX_YTHdFwc;4SPiDb& z!Xr8m7QL(o6& zkQ3GZ=b(G|pcBLO`yFZoU+_V1{jXOK61G+m4#P%+}shSq3WU#RWgx1b6VCqp1VNsWu*EM@3y z)iiKHWmHQj6387y+!r4@7;HkWHxQ#hEASQreqsiW>l_Ceg1TR4w_Fe+7ZY=CV(q}9 zm?Sx9Pi`|_Xhh$Kd^{snjZ;OD9kDv=4XP}KIQ72*EjUi@E}yEPuEZDSm<2-(|Ai@G zPHd(r{k}Sy039c%d_(l7$w#d~JIEXfV$xBQ&{+5k)~!~lrVRvZq;hbg(FUrW?D_){ zrC4)fwF&1;$o(0o$P--|f6N-g1xctwfND2ftXYe|TDzJRu)T>Ssw;4lXUAD%y}0I1 z=Gz$?ec&gzxbHosAl9+grFc!HId5{eMsW{XzHTP$K`U4xbEhkoC+Eo~lL8{cOJOwo zRroK5`YK5e%l}vBnft&q#U~8VPQ*@uljs-&f0dx>xLT=bxSGcWu*1U@9IJge`N1Dk z=K3ZOU3Ce3)#X4$KZX~`-cA<4{;+I~cP*^UA{i5VO+j|X5*ilrz&Uog0uS4f;L3cF zVrD=K&{~&5VyUa7yj~2^sFb4`^l3f(TJ-0O>9qg#vuEFkstI^xf7RRW8A0z;=8SN} z3Xo_5YArjqqiHg?6ILJY!||BT$*UaJVmuy`?*)u55dB<_7b9b73s%Od8`;&O#%dt^NXB`5`!2MajjwH=VW{x~{5kNhiQKvkpI5`m-_&%qq!0ioq_G2~mnBG3 z{E}rh?~?@Bh>oq2rzS~eS@PFHux^CMUkCIAwwEL;@)uo63&W+tPSW?xzDrT`EMB_T z&&2x#T$ZZghM zOyxeiI+BGoI5#L;D||$gZab{QegeOG=oH4eS1Ge}i!%JwzG9jY`skF|W&u`o+~}ZZ zSCCY$hji#PO0VMLx&j8K^1G&wK#p4v>Z5Up8g$V-d>etV%j(mHh5?l|+-exNO^2ug zty9t388wJ!C9_udGR^W@z#)@z6_Z(W*wc48^R$oC!DG%V^=W=9wJWh1IFcHA>aoCRlxwgS0w?(PUM)Q8Q3eqaAjx(FkSLY7NVnr2T`s+BT=O#IjK+by(3nCB6HieZDYn5Z zycAODp4!?@~lG16RL3GVXrbX1HcS?(L4kY~#F^ zi+c1ZN=DA{LolIQb!>1mM0Q98)V2j%Ln>IQ)oPoX)$6XvZVngxSvFowb*pf;tF*dq zuanU=aEdp$7Gni+=BX~hFf}C?WX@kw>VX`C=QSt*zVx}dpqrxSKOVR4;3Am zLjU&7H{W<)tSVsNm<^Z@`X(7^^i_WkScBsw=dVTL%fDIoG@r&La93a?@TyYN+T9{t zO~FIz4Qd<9*QUA0?7DC-cDxV0Lt7C0ijwWR=Q3N2t|{D2Ah|K03pOu<$ zthWzew7%EV8x6^<)K7YWOo)904~KaYPazIZoEF^zk}H1r!Zu1)R6D!w1%;Jskp!*f zT`#}aWSX+mbLDTf30yOs%AjkE_H{!7`Lw=q~( zs}Az9z(zGN$RHe2fR)y=<$o%*%dqOMT-jJN!>$XlQm}ZTM`h)j!?NO|)S6}?7a5oq z5G9v!k{%WiUc&4i5m}9tC+YV*eIif{f5Al5fiJ)~*5b6$m+9gvN$a~R*Tp zQo%~(AT=V^um%t>G;kfOg9C}jAzC4FgrMSGdYa8$NsqiR|0qePH=`7`%+XS5XOHK? zhqA^4+!-DLkC93d^X-gIrE~g>5+gVdLnon&WUfmV>ifkuLCV7ho4Yd2RhzLVqG;=1 z+HpG#5BAt39XLe}>FRh+>n)m6EU$2412t_Cj` z{-DwnSSm!SVKBrMxCQr=!reldI}u|={#0W1vc*Ry%KGD_X3)oQ~!z%`X+CFLLG zL0yXssE!a9UhFsmMk!6N3LaJMl9n{%g>;0L3-4oq*pXfDh^DI!qVSzAGHQPf{j;83 z4r)^^QN*vyVRe3@pt-FJu&hfdG;MP{_(T_xK(gZrrwi{5nZ-_tFeR{03tVX*7T}jh~6moO?oQ<1*xMK7&r43$gWWo|G<-y_H={`Ru8~ zIn=edfKe}X-Y2|(>VRA}PSrT$MM-oPyJ|iDVBhfWh8|f-EurZ3Lx$D&7%@6OD*@|; zSsYu%c_Xw}FUxCvzrLi-+-mhJVi0o{1ChCJyB0T}PdMLf=F`1dmTdRZ7)RevFlVJp z)S3YzYfGmAI97eTQ}a>ln|XPs2SV{!{gD7Z=Arzkhvk0T!`fNN&}~l#yjq!7ZdWz)^Zgj7V2dx(eXEWDt^ziu**% z*evn2f!+>+QqYI}sbGLQ>a0OF*a^B#bOPG-^Y&gns5>-(s!D9irB8kXq08rbgb(DL z=)J;{7~32l-=k{gR4>6Mp7bY1v%yC4;GDcBP<#!k)A!%KML3WHC)EzK_mqGBJy2a! z@MV^#XgXeN<4R{UU4jKpRcw1mc@j1c7~d39tE2wo=fn4>uixYE(_h|QoPK}w{?!RS zzCV0*as2xI#jDqUc_8#wEv&N3cY$&U_A^dWU}n|JlM{MPr??kk4&Os^a#7EVEQe&g z3PGI+OMtPy(Nm!By;=6pWIBy|S$@^mY4_)o{x};I{a^I3|MKLd4-htqPFH4cTy%Y? zG_XrdN?8#hu(tAI3&LAWaL{h}MuM4kO+ahz$-W;p!^6P*2TD9plzz~HwkcxU7MCS~ ziz&=cfzlRH6W-tZFsTRm-yp2tOvhm50eg$`otI1FE=;>FNv~d#)NS__?g$XxHDz?e z0#_sB-olFdX$Ar1N-xtN6&P4Ia2eiQFH6)Vt9@+jjLMul?;l&j$vPYAfPHhh?8#oT zTXPRh1o$kv8c{YQ{^mr-D3!LbUzo1A03h@X2f8U$lRI-6Gc!npPOnL#!i@EuxQE=a z;LVi-c}PSx?&!_gdHd{q%{2G>N*B{4ExTii71~Ypvh1QpdxS2q%LJ?%0!c#=*GDV| z+HE3zA1c+~O$hS=_ki+?f^XHqKz)K4I%r%&>MG8M@f8>iKo*Vzv6`?o`{LduBxR>K z`s=*W&_pn1Gk0+Dsz3OJuSWK(k44k#yE}DuF5*K|AtW?#y2B5 zpc8B_flj&X74eO>k(uE|wJc>?HH&szCe@kh)MW25)91ovQ_aLVvi&N4PPIrVSYG4C zuB=yxELoI#d>Z`fR9L9KB5f5Qw5O7-EveDKUE|?MdMj)A^0VDY#ySIRyV%l$FO+a0 z7;42-VJs|)u>qJkw;#b2)4s+i+n|a!PF48HPb_N&*Q2c{V}?2JsH;)Ol;Y8<Z<$Lo zpR$qKtX4nP=2jG_Ub!AQ%M#MM>rZ7jgN`7}#fHX>dNq2BBYib82G5i(fx1jzUj+BD zbe8qD8dmc6noUH7$LZDREIB{-ZOE@iCVSR)haj{cI{T{m98gFBMof@K4Rm+T1tNwV zC@N0Nq#I8YigP-gE^;py_%((bM~0Jro12}-u@YopSw$OO3FHMB5dCI{1>Q!L$jPT+ zv^PtQfE7_u86nP`2BAZc935p7MlY0>v1F)eNl76(TI3)%tm;Aqk-v_o6T>G_N1tHK z-2>+qM6dhcw}9cx27F5JjAA*ItVWR;SPK;*MpdzctP?eiw_KfC)N4pfLrVkP*K#C9 zH*sU~J4|CkEJ{Qr4+iS{(;wf`JJt$yU_%`=^D^?9Fe;Zw2MF4_ly&8j7))RT7|SbN zGSH~CJ8sFd*dESE+_*dqHzwSm7uUr9k254~Fm1_LQ{HAOp)imGD84%kiqhxeK)}Tn z(+CP0qRUfLgPVsBwm59x?T&{}$4AChk`(Dan8@~39^c}1ns4SbdUJcBABf96tt+-Q zJrL>Mm7)MW-YXHpN4yXE-;WIv8#1x1;vLkm$FEE8=CYEhsf`OvBe#uy)+CYXQlWmD zbr*&1l4W0)4kWx-nYQ2RE1ix#wRA@^kQBYfZUa zIy!SHL`#;z7nY6AW6ZQ*BSfU<+&X`#Fq2+*7 z9?jw_qd#v7L02QG=Q4k5g}#|rNUFexEQ0mxf5YzUD38bfdsv=`5cRyHy3`+WF!38E zmH0}OF%Ob>*+vBclcMiHjs{}G!G)Hl55+?~wa@q0rU8YP&7R@^4#=$a?g z(GHfN8e5M-jgow1oD*0wJ&-Qpw|-iVa@o_ri49`FgW1$+ z7A@753px#JMLktK%PZr~2GOMX6Hk?!-53*tcyd#(8K9Q`ZJOD9*mE!fB3ZT>`F>yh z^zQWaz-Y?g8{Fzj1-C)m(nOAop+T9U@#AHjk1nl4dp5DqF8{HJ$Kdiedb!A9vMv>Q zMFp^N^rXMg(RXVv@m*|#n>g*zM}s~r7! zN~5|b4F%oTu2;(z;v>`qxZt&^wuDv!7AnB1*7@b3N|B=ge(P$00Nwgt`B?DgS&zl4 zf<;rM&9SgFQgv+~Y2R{NK3jrhRCN_7YUr1Vmmh$*W$`75%XJW~YN&R08ekH=tu^Qo z#I1Fhbv?|s)?v2gVWzfJ72@W!tL2?|PYkQ%oqW82aduDsCNw`J-8+KD==?-dV zMR@17>mwB2T+Ic436xxmiFcYeY@K$~X&KxWjirO@zM*u(!v35Ui{5zNtbOL}BcT78 z`^{%laEXsuDG$zleU8Dn<9}x6KYwPLcGmyQ$$zEYg86(0^%0i6|Gh>#JZg^`w1zRO z_X|B-2ced0@{Q`1?}6n=D1^JZ1|ziO8f<=K2?@m{nNA}YRMmHyF%}O_%z+{vbmxyM zwslplPQK74Yb7Q0q$?K03BkLk9+fB)@RT%IkW?`A8}4knC}p8I*D;p~0-446Rg$VM z#QDo^^_X95q?btw6lxx&5LP3yLhFGrTZ=K^hP53d;0HD7CS$R0et>wd_Y8v_S_F;7 zVNy^C5)cfTJ2}S-Dm=5IC)juJ#iY^s@=L<6w?t*1j(eEuyK9;d-=EX>ob8Hi0Wu$= zQY!}yw5OECIf zTVCozl6lnFpGCS^k3=tOx{^(8vWimA=X(5>=*MQ#c_Z17%a!bQ<(tVgnIG6>>9mNm zu|BBTVd16Az^od+3F1ag^p?g*xVNepPtDMm805&aWIUegYSNThGUlAWDl+Z$fMgoT zn6$pPz2|5UH*IQmY~Op900)azFm$#S4o8ZofI879PhhY-;>Qpjnhh}PRopODalJRI zW$l1IYWWQHKNFp^Nbb?gr)m&u7E$%Rzm$I8g+rUZ+6!tE^01pR9L;x@Y9OC?O=jRg z(N(4B$}h@z01Su?XP$PJO~qDTF$2wZ%zJdRDBa;{GQg(!Au^fGAyB4o2Q5Y%K3iRj z6qEQmm};@J?Q;U{z1%tXtnhJ0eXCfkVns4uW31HiOH{$(S8}J7b%7r_aauSo608j4 zg3)jMo|?A?fPK*j3NZJK#d$is8;qg&l^yJ^Z%d^`;=NF(+ zkIQ73OcNUr%nEPlEaSe{ZH{r|J-0Aq*7gIGqrS=@x)asdIw2Bcix$1UyJNdK?;=OsqUb|_slbV7EEK#XdDa)kdu21S zU-5PEY{9arjkQo69eK^GlU4Ahvx&W2K{N=$QZx=k`+%>;Un~a4-&NZnuN_9KZupm? zF_T`FDoa@_N47={>`ZRy-G(%kV(wYPde0MK9la$(_JA`|i0-20wlhDcEuEwoy1<(5 zV$_lY>g+(B!QXSw-~^V5*dZo{9^AU&>LuRO9HYNjD`br=4~wwHS;ZKWa zvxTa$DE8A@_{xAnd|qM!X_jpdClfMDTA5b111~OHvKoG#EMj0x1Q2=pnbE2lN%*v+ zT09gYzlrq`bJeajQzJW~bf^)BnmsCvwHH>O#Y<|b7Koqs+-B80?gYn~3R6Wn-wG)H zK8NEc4<#2WroFeuM%mlyhvTt|)jTF++SmzfNSkhi9i&ApjE0^~SXHqYcA>6k?pwlf z$-7;CKy!kwGRG1=H;|KfJQgl~cxG%yR&or^BI>FyA#Wucpb0lYRiz7`*ea)^u8n2Q zJ?P!_sB|Hw;XFj1AkIf-XpJ(L>HrmfOJ`HyUG;eflLLb$7XAZ?T-!B<`xM;;ZL<&q zlMZ}%tXxW$)FxO+b30TPni60IfHmE4Ro6i6gkC{Utb)0*OA-s$D?G8Q-BMfXw%Yo8 zKH34Zdf$ix3v_NRoQ7|qcea1q4|kD}fsK>Rn>$!tFYnDZ7AtR)ZkehDqoTEu_x4C083Z^9~deC3lB*J=o^waB$?_VGN<@-~$uloNhqF7;f(T5M? zt>|Fz;X@C8wGZ0Se0is5cYkOfwEw+tQ>MOo_tWXc$?4zUzV@moWjswrcaW7OfyeY( z=Sg|DNDE!wMcHtg{9~ab)jc@d?*8eV{vGS9_CcF~3z--CfN=bHGn&~v6lC7GKsGx( zcCIgjI}zR#l|0dTOWl zO-HqMzMf+u+CM(~1N_JO0C+-TE* zfQJgj^?@?7!>*$dHu4l=zX7LX!(}AtO*~D;2EpQU9JisxF15%|&@gbf_eTty9`@mW zYlqRKAm&^Pch*c?8iBX%cX8OFCI#8>$R#mr_waQjmbu6!XsTdpCH#4|b58PL4w+Yr zBxMIqazmUTTx}UByXO_dU-RLsb0=;>t>SzsEJs8r4o~&?2Umug>hDA5-=J!+YBpTc z|M@*JjomwvKtua3ha?6tnl~<)I>fKoxFiW{c{Xpl-d#Y{)!FbMV6z^Anf*DEe@?MdtgG(zy~gl z()Mg#NWTb;jt>^Dp9tp^{KP(MCp25d+KBMuWpjYQMT+zS>K%Y&n@u+P- z$a}5{+LX=V)&kv;o1Z{nj6}CPBIp)&IuHpr*EQ$Iz=_1Pmx6D=0q)1u@K2nhiOoXO z!SGF9>L|!)hY&zsnWdW4HBS|)raD0J;*_CxP?BprVnsYK5Vc}_R_8C9r5N8#Z4*jr zsrqU~N%XF>95VEb>F6vVunl2@nX~ky>@$0rjz#K&z=6d%0Zb^n2*pk;YNJXWgx8iw zipj(gK2l&LYFh}0=Z?55Kf7wf_Uiy&Hy=xt%4Ws<5;N~E4f47t?nRHBab|ym z6VKl^ocFU9BMFR~L6fow7)0F@eLR2k?3;DZ6OZ#f&vh532gBZ>)U{9S)c=r#5J~75 z18o*cZ_adb^nRM~gUVuQvvW3F%si?45P}{^^3qo3dIDwnM9GG~_Kfv8{6?9?7XHkw zmIj`fH>Xmh8i8M)LWGxUHvF{~s2naF1;=AzuUkrJjs zhSih2J-JOeki8#lFy}0v)fry@66em@7??fdSWpdzk1#^f@EJPJ$5C2F z1aD_supx*9i@ck#ATLXY2D&Hi)!a{?(2a^d^Nq?~{M(*kPX@l2ah^u4Bf3qRU|;}? z@78*ZvCa)h2x|4=iIa((f2YCh95xPgimkiC4Cm%OnRL2v7(UwkDg{sK?Mpv<={Z%9QWC zC=~?Ha2KF_VfoQ?B3*E78Sgr)e;lSxT0a=J7<{G!AXzE@B8F2j(k>e}6)5Hs3#XKV;Q&WL?mlGpZfwt!bQUk=8%zi(Ux>V*n}rG*kN*NNB7zO;eU{j@x~K4+ zdARSG43ssgsh5wGw~4Q!oFyry=LW?jH73M195#MmDn}x0tAqLJ!LSJO828n#FC@}) zD?OAqu?}cqU1X#E7ZO33IJbl$GSRl;6H;wKMR|bntm2@U<|6D%*QV7a?Azwl#4&Sa z<7J2Y*EXl9e|N(?N8p*x+m4kOa8}J@AmjmkbmNDSe8p#HQ&=Nxm|;A3qDZ2MFCwoE zO4ect=Rlpd2kLb1u~0ke*uFWfHE~>le+*L3huWwDF%6CU7yfnJk7Mm;obuqcEg+{3 z>_4qU#o06l4^D%pP&-Ul?>LP`MUgg)i)zqcp~w4Cm+|A`5x=JsF{kE!(5sGo`x1zi z_vSdymQ?1IO_5=vGyAV8#xjkP1H>;7jtFclRGaA}x#}V6&05npmbG#kR6g8YPt?UI zo}()8pL(qh)h?x{o1jzOqrmE6ckr|(EYKJvzBS?l_~73>S^EZI*bCObF>}N3%1lkO z>?2k+ylRq4E((QmzPdwClBI=bA0GhWVFcL~P9#>8Zb72faQ!}x$$o|^n-AWxq{~wZ zL*KQ@N)fp$$`&h=GQevS4uo*`Wi-5gHaN>@`fBN7En89+vgPvpGlI&)Aw%5 z_T~KD-EqCW%Dvu+6@XW>%#35!gxul6u*@wR6u!l&DrBZRKCfYy4}9tYYNz)v+->>n zWHlRRQyV1eG`>0?s1}WY&44MmYmp7%!i+clHE&&?2h|bjgp#4+FZ0C?_P~w1NxRND zdj^VfVhr3ez*(s*t>}z1g7kVlLh!s}*F>j=nZ<+{gnP+ez+DShIED4?gly*zAspYF zviMzV6EqX#rg53&y^5hYeKv_;B9oqBjyZZc`gAP;UxR>(5v22x5>t|yO07CE`@!>QNZAQ>WK6MPU^sSXrm+jwAfjO?Cz z<&_rcDQM@K{R6ofj(IJh%1$l~Ud|@pMSIgOF@tiY%Xhb_nOk=NJ70vuX_1j7$8cq8 zUB`u}6&QvfOs}`~F?p{i({(5r_p1v#?+oejT|UmUG6RbCZW2IVe2vzkDGOSpHbw__ zUXnKMy6d>ua4}tJApgaiJewU(r$i#SYP)9wv_+peRAMS1AqolUgP(~w*EU6Vn*w$Q zp+{lADZ0gG`?F}+pDaM}B^hY!p5-xJBF)m{H{jA-eYfupfvD|-6Os^Om_saWpXsI! zq>DvX6{@ASek-*M&^t={3^GHHH>dNqDeiHc23b|+?@TH;)cbPA(~3RKa>aZhfg!wz zu3T2m!^^PjlrI2AWQbF56UX#zsu<-N*)hAk7#<502pvv`9&4*pdJ7(+gXWs`Q8*X`ZgUk@lX*LNpR2NV zl56ww|8Q64_U;H}4gUPYvUuEqf$fU@QX&HfywM44PxD^P*}!{>sKG#ottLY|0Rg#0 zRX99vehoZyVzAh)0skNa835n&b4ofv!vjtJ=kk!h1Mi5vZzwxFbnbSUJaZC z-T@vw%zVn${!1{Nh|s@^*=)w5I`aRC9Az_-ro`jM=rg&Lgeg!Hc>{&oD!$k(RzB%wkhXi{3RdmiFX1*0CqOOxbM*<9xFxhEi z>>FsQIC5=CV76I=v3_i7@BoN?bNPdzP*0M<{BeAfsr%16vyLu4*BO>7!*pWC`fHh)qRsI z=kAWRxQJK27{SVeugqKRd4BKagqA^Ne5Tp!1T7})p&4}Uj~DZTF`XMUt4AsbxGUuN z?vCxkq3Z(mnwy75NNUzcMy+imvm&tvBq3vS5%@H=Mjh1~tkW%5l+Av~fDqpzhq0#J z35+E1HDbuCUaA*-6kS+G_rh_yK6fu3?(L1S|i0YHL&}*pQFEr9zcd za-F1fA1%LlS#Ha@r28@J#FdiAAYjuB!^$T1~PjDGu z>GH2c+bY*Yyp>h&bxbchYq!d8-Whlwu51ICJNjUlJh3Jr3d$|s3t#7XmPf7klvxc! z2$gzNf?*_>MdI@5!ERw-?cT3hl18oWi&h)VCA%-6nByJqDMK-~8;{3APAT`L8N?_w zp^)Oj+XD=acq;+%QOole2>M?W3R&yH&?2=96ij@tW0SSpbb`vswrQ4(NV}sh1Z!<@ zdgOAX{Tp0~{t?TP|(>a@JMnA?~wQsx8=*u=d@DV)urzYjr$<)!#w_Wzzxg zGU>FBda`^3?tY(4N`ZIBLV(`DSYetH#%5m~)C^vM|`Ns|edQNLHE+zq{R72h;Z_PW`SE|X+;l1)5RD$za* z9&R)8FzjZGWtJ+Exw_p}=n@Y!dcWsyLSZIRUB_6yXUz_9sJ*j5rp1yb83EGheS_(( zzVk=YGdVR!;4QFdke-#qy!N_|t}@gZm@xrwAdoiK5qAnQOmvtrDBOa%HW;YSG#Svx zB?6)`aP^GszuOXi4pK+AdA9c1LRQ!q`&|u<77WnZLFxCEtuL(0O=2JSszWJ*sty9< zWHQmXhuJkg7lty4bU+O%@jdV%(j>~J1>|esUayg$au96g@ie%F=nO~y# z>@rRhvY0nD?2F>EA~~`t-~*J_SQYz}wth@JynD@25E31I1_?Ep?4-F8*Y61<9%0G5 zW{0_&ZoSqxE93=mpb`g? zi=o~vA_i6I)m1|tc7mbin0~Rs5jpGe`z8aghp34sCf*S9bu_IJH%_VL$L1rvm^7U!*BAyu?NgreFIUt z)d-L6@TApd3+Kp9nPURwxPR2EdX!)}hMN(C##>5-0`Q3~cfYW@aPd))nZmd+bWYn& z)3X(3vA3i!L@bT@q%65t6{;9(7QB9VQc8JE0J0v}t_pCDvIRp@*dRF=kxnh<IJ<;HL*bGwb=sE7sA zER|+?sBcE<5isX!6EaT~D(*F60I70pz9R+h>QbfH=z~+69(lR$gvPwixe}WLjiH7~Me2FmDIs2$r=bt^K4|jNttyhIKh^54FTRe*=yU)E~CxMcVQZzMeF55xU zRy5r@>(H8~EyNO-;5_ZU4JTF<0lJ+{yy!JF<3?Wa5e~8^;1nI_WdWN%YF)J2?ZD*( z&V!~SwQ__uWtq4@S8l@QRb0l9TrZxUjA9mu&U6`bNCNONc}{6|)SYS-qZra`w%E2P zhH_O(gMIK~-j1?GTGsNHu>2{(cF`kDm$Bf;KGA8{%3COGx=xB7B5q>|o8tw@G0hWs zcz(()8M}WGVdL$GJu*?oBp&fhwtZ{%&_wu6o|z=L+E)p>pU1h0V2#qAeH=h?RWy5; zx^tGCJ3}j_@`0jJ>fz_8cEty9biwC-Fj>2=?GS=r4Qlv_GNZo!$0CL_qvNC~<8-9I z)8(z!DMqjX!{y{E;KDNl4>;d-$4_$eS@8)s_iGXvBQ_31`1<(d=mkGwF!-0bb3>pNRc-10Zt@%I_q$LQCTC0}Aa(f}V zQ6P?(EQ4fs;J$uL>5Hm~J17rJ!$(Yj((p|Zih<<;Ly1G^Q;PO{mDl$+?KMRXD>L;z z8>*AJPDeTipZ5ax6C?sivm0_;hrNBB6lxARf=zEx7C_s8$C}|ntinORPhcDrOr9I3 z@pM%tqoPkER`k&+o^ULB*X3+#Rg$OBq#fbe0&lPdMqr!+zxm+{nCiJ6fB3>8AgG_o zG`ue+gBHhuoB|L|+V9fmmZJph%fjM23@+R_?0kh`yYHgzczXv(T!@xL+^$PhBX98I zo!!QYDN3lhdRvA-q1Lu{R9{8#XA9ssx?d2`o!#1Zo(KqTG@bGoV|*dt`XQ)L2Z4X7 zitSwze+|Jh3lmgRtCYUI*xqTgA91n0LsA25lt1t6+RrpZyDqEjXg}312cR*aH*cekSGp@6(3#Jp|-VaT)7%6 zzs5?|ShbzimfM)&cDDfaN44wK2)7&btUet7y1+YPdIb^4fD-5wGG?e*mS$y^CLZ^H=TEpiSXeHTkPp3biwIPj}4xX#j)gjNKbp@(}hg3C-~jVl#9{tdec=qKIbD_ zH+{t>_QdzbHi2K-kyphh9=y9dJ_`}R+Iy1&A$gpLrtB;^#|YAV{7ZIw_5(3t@E4Fd z$6i0w4ow|bJ6C;W+u@Qpmmb)9nd+39)Rgn=HlhYPYPW5&IKo?m+A(nvSh-P!@_b+Y zX@jAH<)!x3SE|ohBL9(>HDIP8GfLd=r&RlCtxIwgX$TsM)-IrC2fm~zbxm7v=54^5~~ ztGP4Pm^VIiJc_5I#S~*OeD}ZqKgipMizm-4*OsJUcV+^b#w$=yrs_`ITka?(<#2(# zbD{GaT{uo4DOV=Tm~}LRJ34CYh;4viRBD=y;wiXv<$AW55w{qR$LOH&)ZQ0R`x=)q z$dSfLG0M^Lg)kj2w2424%ENg^Y4OMd53-33Y&dkC_HL7p$y|>Uii8eN{U4byUW^vQ zWOU&{X)qNR<6vqxUQz$=Q&499E4&mq(~*6nsobWF!rKz^Y<&&K<-as*NEK655;7;y z#wq3$0ub-eGK|sehqe_S{pS(&|NaEMkxsD~73Sj=ldL9+)qDyF)%;P)`MwGi%a*s9 z*>z~G5YOj2Mj3#);Hf1gE9eL${sx+!ZI6^PuOkqB!m*}bG6<_xSNUi`gu$<++ z&sIH=b9&&gaG}Qq8!QR{JAN)T8xe*$@;;LUBop_26yE zT#tZ9Gb=jG)IkYBdFra#Q9OT11fQ3t6En+*WgQu@%s1#lj&>F=Bl?k~(Y(asZG;eP z@;gis%kqZ?a!L86t@KjpLJ|@bGg*M{QTi47dz|YVCz{4rKat3#k|>4NW> zE=Vsflu%*1-u?Pwu^&6NeBHUrIp)Dxt%I|wr32?Ylc89KX7B>o?ykdjcXMoa*I~Q6 z5w`b_bUh>8H*FBvY~d2y*Y=7CgDkS$yTnAe8!}LK%lzRXe#BE>H|llfbuqJH8;==5 zikEP@n(OB#7_#G(UO49AT{>OiX_Y{BN$*U_HKrJZXs2}W;Mp>d)4#;?LPRnJ+X0bC zmm(u`G5;hl+-_ziVKgVR&?j>e!-f(bBS7Q`k0e9*qsx!Zq*sJ@ZsZCp#JHMy99bA5 zA~0cKp-MZ|S6tw+F;JF*N!#boAYRRMLHY9vM|DMEVVphnjd0qYTh)VjF3#);fn=;> z=v~BJ1v&0cyRH6!AI?R6GYch!urwb6etL8C)6wbQ*J?*MC#y;EDw~~9er!FC+Aip@v){qLYTGlR>fWnZ~WkY1dN)^M+m(}?nH z0N2>1lo{}gb1QIA07gK$za2ajX7LL180Z{wSI1YnFsV3VJ%vm`ax7 z6qU92I!aL{Q`q>v)uaHn)o^M64~Ul|z*aPw0%TrY z^Nk#P-c6#`A6j%D>F)T(+ivhc%LNznBvoS*9@z755okpIi#{YUYpbU?PGZ5G`Ge$( zqP(N7+JNgqAlsQ&xaJGOcb>7y5FBZmGH?DMBgn}K7I~#d)7Ydre*w*K1&EoT^H;pP zP4daVCi=ElZN{|GAv@imavz)}xNLPPRTq(6fsz~r+HA9HH`XR+Km)7okIOtO5|bGN zli@(Ro7~TW1HXU^ZoxcBw2!&6X&5J`2##QfW=@#yEhdu$LcZIs1v9a5M1HV7t!7|R z37dC+mKT{4Fez0j|L{>8R;Lr4;(C;Rb z0%r|Yzc9I4NgXFy7>aeM?i3!yr)oX zDotXR9?ceM=8dK?TUx$hPuRq;%``Mm2`n{?jYFs1<8RVAB3tAmBvz&#uov{xu=xk( z#o0En`;@B4bxa!eWw-$T)=~81?_l4@P1Nhah8bo{FMvM0gKW|ExRR?Xs)Fw*-7~>9 z?dU-Y9x7+X&%XJ4;I3oHz^KGaHrlUU>C)r^e>qKbT0*|=$ng0~+o|3Nzy1x99E1HQ zY%Qc$6ETy9sB z6CHVF;K;p=a6>+aZZkkJe=jUic+DmguqHv=WVd)yjtnCRHm3lM%E)`MDXYXME)ygOr+0=O++qsPSmy z)OwBuxaO=?)>78wR6{|)3wM#3#mis(srX%(Q zK+(5ri-%(>h`r^ZHBs2l2oMv%Dus-3F^MXe(@A4Y-`UmQa zx9Pd@+67~Hj-Yh~BD;ry*=!0%VjlEQfcn?c?2@GD0<1$ZTqdwI~*fkOr%MhtrCSJV1i(-9Uo%?KX-C=pN9o z>1p zTgUrEbFV@)eU|?b?8Yq4!DD^>=}(1Pe!YezT2xmib4&iRl+)=$ZCIp5ZEgB+&BAN| zJd#I~8JYTN)iHC`vGe2X$^*=U1R+kIAm4^TSJDz0x5|0*8(6U4!vFo>;BE|=wd(lo zj%n4bJ!*qcvXoSo7n?#ID8ux~w*!lt1$r%J&(eCN63!xkCp17tVM6U9ZdY)tf?*1$ zLX^`0;>F~=pa~~%^ik{E*#T$&kDY$9%ADrYf@*+lIs-U+5m+najZcQXmQ?fM027AM$wyOViO zRWkhD-Pt|ne-Rt00_w{zJ$%3XvNF!swiy3<5iDSb+A&^%Qr;HvCw(%_vOKbkv%sm{ z4oHbBgkvw9?oZsdIR{ggk2FH9y~SN!Np201gA#86nArR%Oh?C(I4xZIPFNqDimBI_ zSF=pg*tv_Yxpj9~?#U>7r<%k0U?75%Ic3+Ky2+BU=RINX8z2s{V9{;Qvmu1b$@i7j ziD>rh{5V+cTGe0t>7|t%Ug@YWxj!%mDG+w#f!u`IQ#UD)qFT(#ODHfQl zcbHsVp;t-l*HNomAPAHEo6Ik3bZzL4RX`+c-}eFTyF>e(Nk8Ir(vB%4G! za*GQye>{-|1V!-Q(*TPU(}7C+>hj+|$%(w5FE953<;@h@;`qXr7Rqy;yYR)DBDdH_ z!?@qwRc_``Os@NS!COmi#Ui(TZCZ&S0UC>P*(-E;YDiP$ z+CqPw?T)IxY47<#bwlD(FIJKvw68E2W}ynwx6AB(Cgz7t(41hn7?d}@O^Q;dCZC>J zwqr;G0~)U0Ec<6Noszw_PP;#!^vBt#=>MXJ{lnvVm>_Ch64$ z;d8+#uF=*rr%&Yy59&LcdOk9gJZek5d{HDf+FBiW^7b-c`MjyiV{e5IR}Kikt^2kb z*GZEN`U8_h--q09Os$5^i`FIM0 zmraz0$gg!%2Y=LHLs0r7>39Kz8jaPyutx%AUr*yHhZlipl};D$g7Bj^Fgnv3j}2Ta z*YS;J{|IoV);a8KJ?_ymnd$O68^f_vu;_`dsC;^56LrZ->`P=^4TmFhLp-&tj$fHG zi0dV|d=%*QP4uIH#$!B2)iv0Kqy1h1NzlQFuYg6G6Vk4AI7nj}6sbZ<%EDTaU=H@A zpw#kNYB5-mCkPyg^H_Pjhf z>BF>MxCHQ)Sv+C$3K|;V4IN*eOiW0PUZXY#;{NehZCJPl)1z#vpvZ|Bn*|6I9A?p9H=);HcRy+Fep@%;X=F5NYx1}E2 zKsZoa{PPS=8s+6AV7$i0rjH9yv8grIob0XNCSa|(Gf>9)WY_+b#_`!$A23m_NVib1 z)sVV4g_Y91i76y*O(ikkK~HXArla{TxpD6}2ksS?ScwuVDzOUZz<#L5MX4bUf@jxC zcE+~*__QmZDuXakEs9)#D-H=&3s+e%{Oe=7I&&7b+`xe<)pNDodj^KFFc1R;W8i!@ zTop!yYV3r|W7JnPb~wQIiiY>IhH{9unEpt@DEfX(yOkHe_k!Xp%p4@NpJ@?y?>K%KY{U#u%2_+aDchrlUM{;jmh4MCEoX7RG1;!nvxd2fZo=bH1o5Uln-k-ibq{JGuUYE|KrtO)86q@9$(XIFn zH*8|@^s+phf;UhM{|;0O?CxlLkl7XdAd{^2+OG(1c|2Vd(zu7i%Y_hw`fsxQZJ9@v z08E}fS@Ur`cOQDa}yq+tnVyUGr}a?rjBTb^I!OKU&tqrXfT$e4@Wbbh+H~ zBVf1@52*fbD}^f)AZk$Xg5)Y?kuioUQV3@k6OD0y{XE}sX7SnY1+tK8zPwpS47kp z_0FVPJk`tcRRX|Z)nI}T($2j{2^eU}NkqE)3PPcA!GUT`OQLsqIcnvrngxZk0xMp#yv|K`Crn4tryeb_k<``&!I zz)({hc?;6A!Q-oBG65P>xc4cj4ZvOg5DIJ*8<2vt^3c|67)K(%Qc@ga+{yG^{+B!+ zC(L=KIg4N~bA2v?v)vJ7wb8oHbfBQW?CuIC3!phF{7|cA;yWJdXdBkCDB~m8F%Sf4(m6C6 z-;N(=WvneW&&XmSyftOOk9DRt5Ib7uT?AoGE#xG@Afnwkb$qYlZ!grvP_pgKnc6a8 zTkULBUp+R^E8F_<2t{^)j4!;mNY2m9K%KWc)k(l#ZI8Pj<~sgZXX~+Iw`)J>bZnpQ zWq1Ej@2>Ys=%V1;bE;-hs11*|W2=+mTx@7&=xDlc%2AJg(u-lYFbla&a%Efv{F2=1 zAg(=#C!xkwa-&mTp;8b2i8MC%rl$9eXzIN{305ln)nLUn-0FBA`a2|rga^_76L?|)!3THgPb>xwCc7AWL z>`Iim`J}LLuxFsd3AayEcJ6&7PUoJdvuBT|t_j3MkGL!@C03V^=>}Zyhiu;3QP?nVD%cZ;dRyBJg=+jgmGbM9KhO)kQ0%SZ|p`iQya)3`dbNq zGYL1&4|FPb)MuR#O(cXJ2Ob(3&mh7&>T!-WimL(v8)^V>{!QG8?Oa; zZ{z4GZ7JitJSuFoCCWr%sJ|RtTi@R8(Lf2uD_oEqVYj8&Fdf(0G9b*vS@6g^pdA%s z<4V+UkR?`%pCy z-%5miu&3!>Ey5Iq$9Om-l~E*Bj%#r|d$4b;Bea;ThvQzE@a9H<1;2PXJXB}kWr^d!)1HuqX(-%m^}*uYf}ENV<^60^&h z(PkFgDab=R(?td1utj_BksZ|id@I)Mw%Qv(I3J7qI>deJKHv4Vf$gEDtgjrhJT{yR zFPlbAN8C>DvFh)B;8qS-%$oeWp0JmusmsqeV{4TkPK=ZbMuA-$@}5szre`E*jD|t6Z^E98romfy)1t{55J;=$j-R z^JG!fOTohuTi&ZWJ5Q372-0CXew~hObQk|3?MFEx$ti8}ZF}}YYkbqdkkbAw4lVX- z(USUox={nRU}OOWFmC@2~NNuMOdXs|q^C1?Ii3}OkKoP)eo)twhoRW6D38OU#Npu_@$prQ>3=k!) zvZMJJb~RuXbMyUZTy2qea(M1{Ou70h~-2$O{ulkgty}{Rtz-U4+jsxQ^?f zkeyVz>2A5MlTdmD=M!{fmSODvI5j9)+Kx6U{^d7(ldauW*P z+HA-#o6qvGcdGEcvVK(!mYc;(^mbVCo(02Le}>4C2&XfA)#NLtF~a7nCS6s{W$)IE zH9>+&Pcz(acw$U|R8@%t4xJ^yhD7j~&*CM~36B^*bngf;`)G0{SDT1Z=4~EHb0i%n z5@dyPd$?kr?*od!kLtAM7rMwDY`Ja)sU9tI%A5h_xbVBo=2h7dAXz0bBr^1_E_E{h zDJX~}UW;XnPPWLBv-X~s;`PsE(M_(>42|8CAa8Ku(TEzf)d7ykK(c1lw5}F^u1iDg z`Wo)4X;7BF5AlAZMPB9du%Wda-nvo3+Mxkj$JAA6gK?Nm(gkE>u|z^--NiDu*V$A% zj_njo4ABB{sQqK2K#q%ITARBskXJ)uz$7zY=-%hBg$$4_UeBc=p!&qS^z8h8Bi4$o zEi25G-$Eb>hGC}YNpf43hEjoQoWu1UKKTnSXh3yLQS$6$+NoP``k%ED&rjTyjs$xGJ;*+!CO3f1H0kOn1V5C zso(k|GFeQgZ(NF>_pIvaAD5)0UF!wrt%-@H@2<1W-~ z#-*`8LdfTT!B9s2D^T{b8r9`PsYwOJO~q&a$Jxo}VAwR`>&ec4f%*8%{(9^P_@#k>;*)!EYfOB||Hd zr!iVF0={|^Fi+FGLY!76i%-q)0Dx8HD;G&i+a^j&g}{9bhX5BTz5<~`dqA0x;Z+xF zVp56V|>I zaW!;2{2i|o@Hv@ga>leI42UOqLb)Sqk3iuVG+RyN=_>=HvPuYWBzf}$dRVpclr+}r zxx*IJa8#ixvPnxQr^OZQJPMbEo=!_<9E;K=X%;3@>QHwQ=f1Ld=}RJ#NbVQxLB^)X z_4Fhl@&34lS$r@y3k6!d4}n~naP)J{^2>4}TOP?EX^!K;2SPUMkPM!aldwe*a9c*J zu008$%N=``D1D|Z+g5VhRc|^rr(bM&T3Bqt^Wge(zuw$#dkH8H7;2zY_eWsel1@Hc zpl9!MFj*Qq#OUBdV)5SqMB#b5cuObMU}}pu)t6H{h-Gq@G-6q1?C17PEAs&5S=}>(ES> zf*Q1K)WZ1k-Ep_=YXv$n%8SWtInC;Jar%xVUMTQf9bCJug`jms##_mk|KGQ-zaNn% zAU|K*nY1G&C1jAt&8WzC*p1tr2vmO`O`4Is6Z7teufE-g=N(u&<$udwmK6q=z^JQZ zThYX}BEtxn^E{hP#}E{`Ja0wju-q{QRd(RzGYoBtiN{zRoV;A^oD{RddO=hZ`xXSx zj(2Y`#^EdLtQ8Mu-42Kin}a^XbBi)`TI_*M_&A)gRXA4`OxK(JRsthf7_lkabSI*dQm~cC4oa*iyxTF+_^!0p*f4@5I;k^9C~%=eAaa4u2GR%4 z^4J6-zjbu?R^5NQ*&{un`JfVm&2b+h8(U55&6Ope(wtGKF=5DAnC4 zw52eeenfiC00m7C_Sa=rH_wWE{<2EvGExB>C_6)Ch#Tj^ zpKrEQreFnWkrO&gXjS~oe%Mlhj&>kxcy94!_GDMy%rb~!vg9}>^K!bJWjzP~WB7Po zU*?lb8!3;RqCp?rK&X>~qBmo8-GAuvJz*nT0%JF zzB^i=ix{2q%xhx-`h@EZa>OFLHs7TS2hPhSm!v4v;&u84BH7TlsE;ALj&fNn=Wm;A z;WJN{W3G{ZdP{C@(wlt~DhMPp zj3_`}!2r#W>tGh!7PYinTT5)7#VR|mvih>G7%jEvTciTvGBY|veD{PWcm&hfC$NTu zO`BY6RG8u)_5HJ@V@Jxzlj@UtE7`(4=#~!T4l~Cco6-h`eLO14Yhk$qFXbu&BrTem z{a{+?i#HVLY{0GtfQzt;8YLGax07!PIETQwPwsmUiFa7PYQMqa7_xFu91@|b==%oGZn z3Ttz==9dU;ySzb#8ENzIGfWr4tXNBH_!Lz6%*;wKF0aWVBPG%OBpZbTs3|5R{~7GQ zlfzc_(V|@RXM(7&bIWx| zQYs{rI3*Ud4Z{d%vr>^^rG(gCz-daRN^~oAEBEK2h5&%8>ZI-eyZ$E5tnI#D|KsqKDmd2x{3agG!;nz|FqO>T-6q zNpux=&qvRDfHdH2sJ+=xi}uv#fK-6>=|VU5#81e@`_BPZm6hX#*if|(ttF-@6LX$| zn5Zp)g;b#Vh{)9dJ~))2g-G0ajl=le$XifGN8KkjqUyF()u1#r%_ydA7QdV~^B*=_C0a7vucUDU@I61$t!Q%)F5PH$J z*M(`YPD7L%UB3JSzbPrm9UO=L@#Oqs1cQP9m!%T}U!eaddPQ)2K?O7?x_DEbgs&QA ziqu6;U(V499cn6IMb%-TE`sU})|z5>V!u=kbm+l=gUADxqQn#Q)}v$u!$>Pt)N&C5 z>D&`p6rP`70D()_7-w*xc>%#>Py$ILRCQQ^ZzplamU})18R+#YGhvO$k)5)M``|-`Qk9hXTA3v69yosU%=&031fNti*oYb z@}X4@5)}!Cd5l4Lm4;Kuw`iL?QC?|j-t@zGy#5LZ?gUuq)-`c_60lgnsK24_{eDHU zH-FYz6kD9_H*F?olc|+IcJ-O^gdRzZrR^xw6o4M9tR|et?C0L$&ZBd$t(cFi>vYV= z)sN{oKRKo@o%BP>p_J&URry+IFQNT*4+hTbnZQV9R+anQ%s|#UvrTQGjXeV-mc-=s zYqmPy@RX@C_mbJnt=18Cm0qorvN+E#0udv8B` zGy#>%rgtFAI9uSntEem0x&q&q>??|diKoQ#^wtmyZ{ zt*=WHd3~)`9wZ&6Rc>z&ZtHB)WK-}rNA#^=Z`-vL3a`{xypz_kwb~nZ@eVY#V{aX6 zgCn6_py?5lN*qu-8OY$E#khyp0{2@#145e>DPq?0#MxYjm&*!)@D=itcOgqRAI;WuZtGq_VTc{#T zIINhpZMjUF_VokpNHGgPklUswt;vkro%mV<{X}TgA@~RwI9!`bei2X%a8t7roM2cs zg6y5)O$T()25C{$$vtSK7s0mOsg~L;ENug?M?fUxwg^@E8nm}@i>JHYO6h|8omTTb zwff!&mPJlPotPyGFdYZGL5ptvMOi#J6xR>!jgI`(k{M#NT-f)=7P298ENsR{CmOsp zL-QV9})U55ULjY3LPEO z#R7KKWhQ3R88|UTrkgwL$l;y1{|%f;yIwy+v7=h*Nca2$lLqlLN<^z+FQxGORw~-O zYpUfJB!3{eXNd{r?my)m1UFc4pNR?%yMUn};|5SD=#M;~HE`^3S4lV#%*1pxMpC)Q z{&uw2W$ z;DxEh>*@s+bq`7U{9oXT=jiS(G8)?^*=u3D7=RD1mZFuoS%p0#bp1{E_KAU2iBzNA z+_rmw?BKw$p)|R<1qIQ~stp~FdBI7Foa_>K>6O>n^z~I%ozKc^MH$Nl+Bw$NGfnx^ z0snJztGp?%vZ~H#`+|uP{*;m0P`891@lO>Q`f1n`Ggcs}1am@#;m;ilMt=S_)I`HWZE;AN*%VZPL~Wlrny#61oRvM;0(}m#4t!BGuG(Ys)Ct1Q*&g!aI9nD*mxLP z3ozFa8vw(5zHlD>0CizS&gc28$*Mo)fH;_`GtF#`Vs*eHvCbMFX!92r=e9sn7Q%?EGd{Rkzo6h`mt zNm*QFRYPPD4&}R&)B-RapNgQAKbSws1moDdZthlwFd5vTWFfM4FS}R!7_fGz6#2FMA8<&B7?#e4p>9fzs zwH?0(fvlpJ4CMQ-Y~4pPZ1)sw(YLLBb0^;a?#5>x<sB<{O#@g zSSS8iXB7gR*ECytrvvv!sB-hXctK;qgctVdz*9KVRShBx;yf?Lq8i5nevgKaqwl}| z!?Sm<{`B?ftM6aF`u^3spLk2m)74nC=om{b_U855SE^X&o&LI_N2a*L2ssZIAtBgT ziA?XHrm=*jm585&MNa%)kcnP?Z+8yYaO_*)qOlLQc&q>4rZrLKSB1WYdABUeItOuv z@{<;7RM-fh^JC(2ku~2zMCQD>V6KB05iD$97(z6nh2+@wG48EAye;~+CoWzzm<|tc z$dB6Jz^5yz^k=YEli~{o$mak`hZciM|d-^zgDKFO-T*hiAXAp;3LApEvzBX(q9i#mHf- zI`S8=n?T*+8q|(6(gb#5CX>MDF6rEK4iC zUin7SObJ=887TK%w@5|;b zX=aWfdIE4%iLu%tpsn=rDWU8E4t`q$L!Sn|YJa;@t#pCWT_r(P>=zUZ;7+{Er_-!( zTl|zCZ7>s`eP(Xp5*Tlj^`VWpRlE{z{|4_WaR<;5gk=l7;|Syrg3t>0wz^51eByOK zYze80GRQN*1VYGh(5790>pW=AQsVC|(dcKRixFu!MmD;x0Gb|*BCS(V&hZXfQ7An3 z=t;C260y3gADcU|tIxl6C)CKS&L}KmPAqe3qvCFxVu(p?S&m7wlHYQs%(7Zt7PmX> zo7W4!?%{WMmssn73lbOya9j;dR9Fa^IhoOmXthHYPOROWHh#%RV=X&qzMK(tTGd_H zUo2}1Yp0K;ldyGWAsX?zvzy#Xm0sI0XWcoTGoW`gM^=DJfEog-)iI!YxqyRSzsM%u z>Zg_KcM}I~-Z89oG5I#Ho0b!H{Lp3BBi38DzlWta7S-j{&P1FOh})+uhh=)pGa`*_ zvAFHL+MTn!_<;OH?a~!R1|GtR>;yX^Uz%K1I-T;6>b|yvk=q-1dW^jH$RFKNUcZ?w zFY@ART=;3f2br>}HwY{p%UL$MPOGB-mw$Oz#lYBLLL z#L)Jdjw~LabJGA+rHj0_F|5LJkYS#FfWW>La*273#%@-HWuy4=NdNLLF@G{*B$3+m zqZG|e7!fGoHKO^9;&sENA4EV-Iw_u2wTQhCf&Q@@Oj6lhwx8mM1*zm4xgS1gCzoYe zXRnY`0UjzbtHi7mLtq_&+#RHiKB9DAE~j4eFzh12d9*nKLiK&C&8I*}S!aSH&)h`a=~> z4|+hQEsqm~4h;7!`%~n#nE=~%nJyL?SfE3IN*MUE&MJ%GKXqa{lR`Hf{E)!EjGckV z_UDFQ3ca}yqU^(5GpZiP=)rV8yBMf?3F#){MDX$QJJ#0&Lf z#OiFB&!(>{62Q4JAkqFlyS52;qQ$$CGpCv3XdvQIyKQPvqiG)~EXi{(IS}D25viQP zHk8jN#$M+apQ7^jdlkC=OtS_p#c?d~LL#Ldy^(^8#T#c>qKzp!HnE%+WrKxO6*14) z_#DlX(I&k?FwAXdPV^z@LFgWWkiA1V7ebzv7etq~lA^NW@Wu1IuC1@<-X6M%S{G5I zDy3LW47Yim*}KQXO+v*Sc@ifX93(VgA@s9*3(Li#D94izR; z&a$g)=AQMPJd6;r1kY#upx)0ck5Qzdo|KF1zsP8eK3i(_)_&=Gk>a3TRupueD_E4v zNn(@u=2(;-mql`YB*)rX4@hgHOFshd!*^ZS6 z-BpQM_538qy4Jjns|fpwzpw=CDb@uOv!mAEGd-RwRebTTZF$aj_r^BY_@>I|XpgmP zr6F)yUVmRUuZq_cdTb6_{pq{%4ebqb_Ma>(w%2jS*!XI~4FucIfBzD975^G&Fc4uh zL=hB~)lj%Sj&t*v#&AMmuOr4p?l!?q6N^I7Ik=V^w(+McgnthZ{ewu{UB1x4epbg% z;ZyB)&*>X3ep$VNJeGktHw(Kr_)_k0`$g_#=$KCU8RWzoNe#ytsgaTSdX)mgtT{eN zexLm7$tLn^hWu~t)p&7Y3?9gibs_77rlbjIIU(CY@X91lsV4cB&RbFzOq zRtMWNODC5s*vY3BO@)Uywh_wq$6!powtpYo`is775CS8-NOnA*!40#)Kz*Bu;5H*c z2MCv*WiwF$TA4voATl8j0V|@ka?K-KvBtTu^vRp5EApev)U9<(0BYfl)tN}djSSfo z2)bnHL~vUK_UhJR{ba0$1Zbi(0d()vw2(pXi8cQcK>)m=qAW%B@v2N16hH$52qT+q zrx^eEMbGZ>LGr~(atsIfpZNsS+1=^X?!XfSCw4;w!~36(M91uT$TPy`xnkpPJ3gzi zS;;*QH5~89&d7Sq(;#ymJp9R^o%4$xjhof@05;9P-6pVuzJR|E_HX}rj)^&)ENiec z&TD?Wrn4O{zr>auo11EE4gij_EXSsImR7yn?T2g^X87)>>}KWNuzIUrV%FmKx_9f* zpwt8NpYn)?hyi#K6Juv+u*2EysA3&fasNXd-5?iPgNL0}z8$dzyq%PLG_=&5+Z%e} z?QC{zEnJe_nvxE6T9hnl!k@NHCXfa_ z<9|}_%jT*1KKEA z_|^k8vC@Z=BX2@Qgb`Nh+<`U? zAU%qyIR{%dQM=iZ?9Q6c~6t zo6X*MYF|E0tlB zq|Yk%6t}MVI=3JwTN~TfpPF9JJPyT=FH54Amg)-e=E(riGkTiow1PNW-PPvmu3FUv z&=fnzmyYo4J6PC@!f;hM=S6K-KbhqitV5tcc{5(6C54=c!rBrhu!*#B^?F#fB?p5Y zZ8@RKEw0+m!YvTyte)jXGh|EmAw*I#MLAp+;9)epN~@aMpy0m2a|eBJoIlRt13!h> zb;;Q;Tf@Hq?K!Qo)Vl(~f1g#EuE_;IIc~k8d?$r}3q*v{qhY6((9MP7rcgIMrZZL> z*f3V<^)u{+HP3imyz{|b?9S-O7DbeH#x*P~>oAd`u*{QYmEcUpRg7&8hol-v>S>l9 z$Mt_|sUT7p_d5iuwti^jAGjlDBn$Eye)d_{Tx#TM{7#pMb&KAhqqU9bxr$vpaYm4v zvlpbEBKio(U-9a1JEA<23^7HZWmF7i)}^&>*0W5Z4ucI*eOWGNQ}AuJ-hoxN0IQ&) zk*>{LKb!gxZ+Oo3r6AP;Msbl%^7Gu@V=Xx-WgJ@TsJ6h=-m~VI27dx!l)$bbKR1`< zRaS-fvlW!m$mmyKYYt!fEKmqy5HU?5Z(80cPfd^hLii?2vh^jGJ2WumE*updIZG%o z7RMYcWqYCQ4lSxI(pV96Fenh@rj7vFVY$-X7z}Hqqh=>6q1w$zksa$K78!Q%37f9a zuP@^h)kZ`PX~b61oTUon+-DD`^Y{Ds(VyIY>+4YjD4}J|)WS>{gbj~&;+A~&D!mSj z)H_DxytV9a2e<&w8Hv3UkSRYv?f$5yBlL`n;$&!V5iu#kS)@Hezjyerokk|05`66u zRBkNbF6u{*L?lB0osT&D69fenJ9aBqbPVNBHl3;MM>{HQ=3+tq4(sGmKHYNIBSiNh zMiiqx0kOEtsA5A>I6ONs=;<=+Kp0dCg*`tcjenFuY23p07|U;co2X_rJRl1#Z6qR^feOddM^MRBegr^-j##9EWKS zW<9I>TR_aNt|(!S>lK}GmUMf2j&$cWaBWxl6zq|Kx3dD$1l7Oj05b!JUQa+cSPDv>S}k2Vtds>1!cpPjDkhy3xcc#!wWLTNyJ4;Jh6O!A+nhT5^%P} zICY6_GjU6=JwI6P6Akn9o>Sk$kq2KXsEGx`>IcsvT z3~*018O4duTV4ycdAgiPOMD&QgFPOmODyMut!TZP9SFRos0k5-W^d2@$bKBI?`LcC z9_IOdVy-Xq$)z2PV`Fi7NxeTJZz-Z1&~Z^Q1|7R%*Lhpk?g$r>s+f90Dgy=7*LgF! zv{NUlMQ1GZK!ZA+D}o8>oIfJxRhIoN>$ixKjg4Z7Qdh*OP_Vc2B_e`&@IJ<9;yE9* z*xO-?xZ*yy#e26ihQGV<9Y8?Pov(|H)E?6{Nf)swWDQ8v9c-_2V|)~`_TKSQ*nTaz zRft~f~#yn~b zyp1%*50{T0<)J?Ho8bkcowO!^F|^8QX|DbiLYlyZPUus5IT>jMUG=inB&%!3;M4+g z>a?{DSSA?}SfGB89f!6EQDh|{t9g}|%X+qc8*GEf=4kQht^BRtyFP{h9C8)?`*-`= zBCMxs8Yp$gFa~W^MKHPYmwlhL`fMd}L2ljM+wF(Lg#$_*NkGgVB#wUj+t6q-;23Zi z=>qapIYd+3ZXjeWz%1URmFmcL)TSckWBgt)t1qy7jv5r!FH@ZX;Zb^ z!pd^Ev`DnkgoMEmb97NQSpmROv$aXj&okuPqTKMddEQ||MFM4^F@V~}fDX08^momo zhZ)r~8FZ)}N_Ka&irPw=!!1Rl44B72Ibol&9YJ>;^@xbF4+GEM?)~G6wDysFG5rXK z>B5Hu;~qAp$qUQd2wVyqpE4G|R=$?-*>RmxXuh(TWF*edrsAy6W@xgpT+q443gN;i ztNbDd_=+GrnFVl2OiH18TQ4db)feDVof;@ki`_MjMm-CE^#sA1>6StPL$KaD#!21= zCG6fK_PNE_&Z@yWYkslTyqE8evNjkyv(KVa!PUD(U{3;If6_Jj@TUHYV;r5aJD%5n zuz^UI>)X4?KQ}t_x79cyv`tiT9v!d*26%>nHc6yWGo}Lq8&u`;;*#Aq2wWtqYN7q4 zrXU!>WjO_f=EVX2_lpydm}q>FU@E!LN#7TWq1v_JNt8HlIcI>*K>vOild%b=9L2t1fnxfXLw7`uG4i*b~i4LBJ?DrsCkXi$Q@Ai zb%qx>Vi4kz03D}byBx3_hb+UK$3VpPPe>8XI10&IcH1UN)3%miUC>#{@k|Im!0hqt&{Dk)ur}cr1t@~3Wg%>D%zcA z=lFZ#%19F!ebft&EMP4(V#Xp?Lyk;JKdmYq5I(IcYrgXMNL3?j9YiK?aG4d;Lz54O z+WMlZ$jt@+Fhi=bg>z(0kfB>HfKs;|3O1!pD}0C}1q0N90n`C{APr}rCoymmNtYs6 z6N*N3(r)!ebNi<4K$RE;A{T=hb*0^1q${|OiPtVnLv**_6S%HD{Wk0-v=o~2kLtxN zpS0)QTMBjI&zMN;0B)npwA3B8?p8OD2ruY>8w_r_XngF}@b#_7!H}VFw?RPH6%0r3 zqCULGt;=E|0--{#fI1=&DHAgqjiCM$H5I320fh7o8xEdQ78*pouq@~WxU;c&P1b_J#kc5Ejtzsrla*wkAQBl>43A zEr@>w>rS48JTpN&GUsXn0EK7(a3z`}mgc*>cvegmhLNOu%c??ap5K4*zyJMzgK)>C z3?b=1^rP(6MNtB_UbTcB1d5k@mCfo+dL+c$WQ!Z<;6T@i%?%kx2r<0i-GN#T|W8H&v)yUja!%(ohL9Y%wPT`pJsUcU^85l)!Lk;7#WGQ zbLm-K&X!FErw}fl$%g`TS7nvJuJE?OWrbeB2{y2-`FPiJu-QR{Pm@(w>CE)&EQ=n* z0SV{%OxM^RpXvqJRG>5fYe(xfhVumRJxLO5xR*LcFZ#=($!8!t$bmkh4NE<#@07{dLtft6O&(kl9v@C{bkHkn#x6ksqSomOi z54xktPcE0mhcVT*Cu&GU4T%e=SV63LTwtQ!Y*1~65CR)(_+p>}&&JQbzkJfcFK4sz8m@5e zL7vrY!bKih=JW7qqv~XupPy$HX;r4pC96mo^M=HOKuCZBEC7#ox05}~R-bgVX))a4 zqo3kBXS%M|%pG^WM%bUg?3<@5BLY{Nu?;>&WeT!Xv|b04Up&deIvxjgaJOmY#QBdB z3QK|9MX$ox@9nY2GC_ytO--8_1-MHfvuYP$&k@5HE)$8yn>W4Mq_dh7ZnKoDM5UY! zd_znc)IVx52yh5!UOZF;b>(n@e0x zD!YdN=*|v@_6#L%xS+(Hx#X`=W<5_=;U z+rT5>J>__B`h;)*R(qhrCWrx4N)NyqTS9LoTtj1#x?v{(0k4}X#So(BWp$laQyY_0 zIVqbX?$x0W+BveAT}R<)5;+ci`-v%LgM(r^c9WgB5br)}`-YuIZ2!h>C*gQ8qo4bo zHgAN9icL;?Z~DUGOfpDUWGL9f*OkNR+=fNA#e;r}|NL&)o4X@#2HyC`C+&AKO)O4L z_z2|T+2@va&W*pcupWm>=4^`zs>}sH#FfhRO6`KW>8Xl^bs>rI_D$DbatB_a7d@}t z&ZAQl#5kstg{a2x*T@lyRw!7X0f>hB+-enS0sAj{qS$VylV+LDzDjE;Z^H`%YTFMj zGizHzd$4^z2YLNXS>=BNK)_jlV4j)-Gd9D6f%)8J0ZRSkNVM&9wY!ahZQfMnqV5aR zGU^xXGI)JffWX3ADJ!OlY05=nD17;$=YeeL(WUF57$8;yte(#Y9D#WvQ&xw9q=Em| zEIW6OxTL@ARX|dE5$e(1#+Nc>9kxLO30i5&Mb9q+sp_zLFLXwi{9aZ}ZBZA{y@z$j z`pAXEcUjEUC0G7N&b(U=u>@@rUT4i$xUg>tC#NrM95u_X?TBE-vnc{bIle_!BuG+~ zsVKN8NQR>R5)g|Z>ww3AgDHyytp=+a?7~r?2H#NOO;aw$m>Z(SU0gQy2hEWE1-ps< zzU^$EF|M{wI^5gw!*duJNN=7`r?af*B233dMJ_tDazCWgd|7Lle5jEy+(xIck-!Ih zfYs+gP)J_G#=$`dI|y3?Z@aCPh;!anD^^*3jCA^ zA?pscZryPa?m*NJl6+sYr`O@Z=Z@Fc=|YsWx0?M5o&CC)a*ngaq%n>sp4-KCgJ`%COTm z!`Ri^j?h6BT-~dJcHGCv!@oTH`7mY(dADc3fqGic{`SK^{`Ai`B8r!1KPPTB2SNhS zDFcXCaV4sVN(Vj}mHhrt()DtYRriMgwb~Gt`dMITN|4^!PI}?Nh+9@@G%eaB!5zgh z;YEN2IfJEwJRY=%fGANGpvpp5-L-j-gL?0H{VgESEG`kY3fr-uZJBhn#ishAQt5UriSq;}ab8YR9h7xNfpz2hEgTyQZgy#RL0r^04=Y4^(z%JkG-awIKu! zy)#~@h6;@!eFAc9p3cCoNm~oXV07G5QXXkpLuewualus}(Y9Ht4=JjQwLb}V)LC3R zn`AV8oCl_<5h$skJY3lwX5tE5JR^)R51&M~=)smJjj;-0(l}^$z8H;5#mRtC#>mDo#2qX9>yu-6f$8b^QbVf5)6^U~6cD(JlCjZGf2xK0&}5IEMErF(AYX zJaov8bmikmSFy&?G53+c%d*{KF;|w1Hb^LT*zGga=N={)aUp~{*a=k@%}eN5IvWm@ z1J%xw4Xv&baA4GdNO%kuB4Cd7&ZEn2jGuMvpe|)8K2^-M;vBRBX%W!j@yRWg0)JG< zPsjPyiw&Whk*1U95A>GapsymF9&>TG+qgZrc)?pzDT3ox^FE@pUCYsVK5Me7Pq+UQ zy2XV#yH(JzNG=jGgaTtz!#1~$=PokWZOCgjDSgu!KR_GT^Zn!}EdohzElzaR6k^sV zC?+ppx*$3OTyAh_kg2+KP7JP2ME8eG+@c9v#U}wr*KuG8V4Ge5nfkf9slR z8>e1@N|f&B^n3iJ$eo2Js@ee8x0S7a-C4$b z6fCaD;Q#m0oI?m0^AW8N?cc5+@^uP=Yc6BVivOj*+}{$n4)CGHw;;dB=|>&SscUxO zmSFQ(yfauYIw9oI_WHc<$4#2E;Q<2c{-vS+Q+23mmu~|3O|JmAhC&h1R2=i%$Iikk zfpDqHx&n&`BV%sxDVe&?vy_N_m64me^~)i@c=K%r=7@Cz*d6|H1m?5v-FV)65K0{E zHP*H$YpN(OY?W-kI-3Cy)~rPT3vd5?*))rKytj9eHxG=l#BQz`A6uQn| zTmoi-@=NbY>qZBzI;*^!GGhOJ2TUQJ(?#OhOieN&P`MPma}S^$4F z%~o8U&TQ|k+_s=0s3gKF)jP2F<_8eGKH(l5f5_G+Ui>QC8;sbSFg8Wuc&G+14i&&- zSRIskB_D0w6Lr`k=awz9m>3b<1sN(}mDk5X=#U^HQO6Vt3ADu^$Mjb(%-E%@DJ5wQ z&bAS1^lv*C26{R;+>OU%2Jf6h4qW6{Y{gz@&8M)R5<6!XHq@bI1Ad(?Ks~gGcEC?q zJ!3cX+G0;_o_Bi4JCFgau&+^opflZ!s^jcJGNCK!V%Zpry^kYSJcN)P26rRm6~PRK z2Zt2X3%?pW3&R7T(++!>&`>x4ML>nc1ABPTZr7Xk`$j!({7&E;UJ|5duM|*%Wd!l> zK_W3Z0ZL5AvnkM4DAnuM?C={LFFpSb(H?#+A(LW`0~L!F)_ETzG8>CHZ)qcPRRp{< zJKaz_1;*Zv*$yueS3H>Jur;|$q;6=dWIAKbhN4iL%UZGSi!>&QM{fFT6dDl<*3Pii zMtUriv5WC%>q99b`nf3V8g2&e1&Y0=*lg^TBhIo)<2!g2i<}8{+ewN<3=GV++m&jw z?O|sDI*PTKRPZhVBM9{GaGRcIL_W5t4`{oMuV}E>=CMN}{#MPm9(HQ6#8ZwH0v%Hl zaq)SiB@1r<4iGrgZL+6gXOC6<@mUtpwCGF0H>gpIbW9i!x&Fyn|1kkUN{I*>3LtxvJr? zy^DaMY550uWrZ0YS=X{Jx}?+oZi~+Ei);eUto{8^mSyj}jinC4QZWxOx;kBjts)UG zu+Ad98C`DI66vYHMj$cDxZBi~`L> zEL^diLPMcLcuOj+BccZ{5IOUh;bmEoiW3Gk0Fv499Y)(7Z4O3F6M58qA%Lb zFCM$&bLR-4omx!c`y3N=I6vpQ#pVadzOmwM|p-C_LLpu(9`bZ!Fk}v`OLL z!{zP|+}l3bXDLgFw#&K(QN6#4^%h7uB!XN^@5Fjjv6o0jFcty|^H_}OP*Vsvr)Yy_ zc@H*8Lyv9?SHbd>;3MEj90tsQ2k{9HoUWFBDV1%6&3V~=1rh>loj^#RNz;C!!RxU# z!g{xdK8{ib-)`%pw~kT(t3=e&E+9{vuG6cHyF7FRTTyrS{c-zyU>V`93>2}C#UtKD zcC$4|Hel@5op`G(r@>4b!_YyWY57jK1jjMmN0a9UhM z<~Y11&fvpC8wY_edcTGX4cejnXdP%O zv~T*=9B5V>99P=TF6&)#M>>2zGtW*V&j_1{r;eRNFv^?tks&ht(9SJ^N! zNQ*>Z_{rj=#>)24TG^fm42o^`RX~|BjQNN**PU(ggUQ7|9@J~5dpdWhfFi8ArkzdE3^Y5a-yVWKQ_Mss4;`N?;o1sQ1U2&tOwmY*qaE=Kl|Gzh>)7%(*l)0 zA)%{9^ZAuMHyor(sG8>wA3uiXb2lp%3$7o;*8^sEwb3_X6qEqRv-Rc@>%c-jrn=bZ zvSEQ;NUHVmqv`duQ^wfz`ry{F@*X8?d{luIF8!|1mjs?#y+JR+zju2^AQQDy>=KF~ zW!_+cZpR6#5WObo&z)T+Y{`dmnrQh6ZT2gAAg_hM`%$|-ww)WbXXAr-Js<$y5zoH# zL<|nhBbrAM+^NeyLi-8ah8_%767I7dbkqw5lysY0yn3cRu9Pi32u@J_2v(>x0n#kh$>o1#D}BNO++?Hg+jPM*2HLN_ z-50)YmD){u+WT4~*7MkuEj`w}wOVCu=Ciu+)p)m$!Xc;WvoD+Vf%97cOag97`A+8W>6b+#Rp)rN|`;Zpnn zzirvA?CqK7#NP4Fz#%VTkcv**ZNr^WZyU6{1p@vE0Y+$}w))xLdc5uQ=f^EJGc+@| zw{c=T@3_C)V(oZUhfJXl8_MlJu$)&*|CXX8AYkReB+vIi8YfNg+LB0r|fHQGQG7`(C zwMp5SiM?~sQEZPC^foQ6CKgsnH}NGbQ`>s6YM#Mz!F|Z{5{9(0-$mxfy8DN%I{$1R zDwC2qAS^g&=lsd$tgXg7k~1r&sz%$ZRxVXrJQvLBcleU(<3?pLD6nK!JJ){oeM;PH za9lyQ4|6ZFG%>09oc9qzQk}Vex0w(;jy z-k(HXciL$YvBXb<&=k?to)>+WIbMBU{G>9Q$7W+2?ripP6hmxID#zVP?PJ$5!%s4U zKet1w<8iAFe~gDz%j2LH1tUmZVjQiX65D|NGR@3=q3_9I1GWADO`PVZISyDL`qmTrd+x^hoBcnHjoGq8V-h#2$t|&WR~4492F%Tf-_^+^M8sA!Q{F=BW=LGA5q^yfK{ffLmW)O~O{& zo*gxskWA|O`p3Mv?DO7vk=B>JK|BXWoBm205Ufv) zz9QhqVp3D&lgyGdhX0%`VGoI;Im<54KwX?w60!vdayAGA154vJ2p+?M6xa(b4`aD* zTr>FU#rVaEX|h%GY=$w&Cglvm+$?Jam5?wFD*ZxJYifuF(sGU0{;4cJwesc9J~PVS zsqMiR_{z#U=INqONYjW?F8zYTv9iQh*|64G19CNKE*Tc9VNR^VUwc1upmr^#2s#_- zj=>3LIcgI7exA=}SoxTmADyL>4`3WpOrPU|L<^NggI~wIYOzdY956PII!$>8(Q=@W zg%jmE@RLDY@6fICURrw*)Q;bErr`H{d zu{a;GjQ%8z#oy7aX9|8KIAm}z`Z5Q3CHuZoYJ9!+_RQC-rb>wpI9HRVytr_T$E2(< zVl-&8Vs)_pMc)2)+d3_`;Q_kUKlwBqpQvmi(`_OTQCU2nL6|QDa0Zg{3c=s#?|?Ee z&7lpA1I&Uw?W-6Cc22GGtali6hz(m-2uLHU<)kUAKC=$e=vQOKMRPdfv77M%8_5*{ zE?UQ2<1B(P>&)Vw8yi0V)cVXqwOL+#K%NvGX1jnUHK1tX0Vb`-#gcF*v7%7NyeW#X z)N;0BzwYR=*Aa5p;{Zrir+}4U1!;#pA4pp+vW6`3`gAEh_85yADS~8beXpKAX(2Pf zHT{9$D^a%A31LYbLeOvvR*`#>m=D={5CeSBzKB7P?|Z>a>e-`!+|*I2xw*Y-fOQb0 zF$3QAXt(mfzO=m_Ic|Sw{?Gp4PVS=5C8xe?dy2j9XzveMLvNOJ1?naLBKa(MKH%fq znP#Nu!(`IgOo25Z2h}l4UsDCX^FA);yJvqq3@rnOl-O;4(dDu33^F<_8mUNL^Py!_ z9N4i|wHIa5@&Sev6#$qbs;xXOo=elZ`*wXk=V4fhTZSW1-$-w|Rw2D$t&+hWQhZ}9 zIH>J|Y$#@P;rbegLA!lMLhjVRWTl&J@H&O2hay9#dxchZQ4G5Pa5bjdrzgE!GOh5& zq-Rx@x(COdeY4>a+-bebuTOEUe3!1i@~mVZ>=nc(7T-gi?u&Edpt?edt`?P(MN#yhT->&9XU1 zK5VW_M+1G#%PNC-7MErQej?3fT9}j-8etSg+s)b#=YiPZAk3-njV-23E?P8K zZ{@9$S-K+cs3;0|8}3?Q27=9{cM|m_Ec=aJ`+m3)Bc*=|OFPc9?b>JimH1ZT`&qNF zLdh81=`50Pt%isel2>-!k(GPZM9>4O`djN|tO^Zf%`gDB^n9Q3RYRxcT`93i1NPhg z^|>5!oE5i!g;@puEJ+?M6}1{W-+|6Yf*ze3`{ywVz?)LjfsQwdoA*|`t(FAk;RWfo z-2&2!mRs;gx80Ty{Q2Og#<~8fTRBgRHZplQV33eIaC6$`3ta3UXYz!|4o=iRQrZW! zCuEuejZH29%_L%SlQ7UKa7pt77oKv zIwvP|DTk5GpxpE{n_<`KHRaTcr`tq-rax;!3sI|pnR5x1Ba@NBKk32%Mk~uQ2yLsd zR4h5`v(G-$ogc|u8wjha?5WweeuyI12IAgTx=jxs-uBT!YFM*^)*arLS@Q@$k1%x% zA3f4W!I6hJ!3m9)^rJg!PO014L}fO&DcECJjcO7z!|cFbUX9%zeynabjb3cGs><_I z5+G%e9f5>tCe`D3gRzIm-jy!)kw_JLQvwzLss@m0HMt8!vEELh&C3R>#k0=V75@g6rlm4&~y!CLJm(qo{1VL!pfAPlvN5 z4eqfBGJU1NWjo&DSne>k4EjRVz&kX0#q&vz z>2lWDGA$}(5II(PNtDATP!jM*szvfj&(V?>O%Uc~-Gp++mT=eu)ol_Ac1wxTM6gRX z7-)SqX>)U};OUV0c<5s%D-3kJDx(I~jjDyZXS2;ccVhgBm&}I1P43DO62?t_R*DYl zIIpP5B=ZZr5PMp39}zd|@+4#c2sQsj*kSn3aZ$hY_iCRBC1Q&nhnRT!Zj%{BYuRZs zH%$&PII($o?Z0$-zICe#*b<11C%6^13-aiurpjg{a%23yP)A^{@r7NF%sUXNrL$Ri zU7KmvWYs(`tcn;n1Y)i#GbGj=&(>SCGoh#;sv1Qj<{;;WwWW2GHQim$purKswjamk zo%z-qJgn(%aHPJa=rnN~ZnFjM16{fpjX^cKX1U72zzMrH1N1KE=$;*DnIK?=+d-Sh zwLu!zg+d({F?HW5DB3vqB|RYo>|Vrw05AJUnJsP%!rj1@VniHZ@u!Fr^!l9V?+yDJ zo}#K8!_C#tFX5l*h9)ww0jW2mX#lp@y-j?<^5z#Y@1>e|h0>@m%WD{iGQ+JGY4L}2 zQA=ClzjwUYdj)xQHn9(be}TC;z-LWPjjZV086@Mrfy-EW!wWt}!!5Fh8GFaxe@VWBY z1tORq1qxqE?u^jar@bzMHQWRi{?oB})ZR%+&`E0^-*(EpqrZDZqW<^tb(g5m^5p-w z@PC&*;u|M1yc=#es*KXrAJT=>E?SPEZ)*WZD*Lw?8~QqW^ZMIwgL-CiME=#r(AYS-~mb|?4t027+8l1_j)5RS zkjaA9cmT*K3c*GIgq?5=R7B^Up$$HM^c}uC%)vdO&DBhBzwZl>AV+W*s|0j!N3bnu zV|(GLnmscVhruF649pWn5|qe>=}FfUw-1HSvEu)X_tciX+%;>Pa( zvdUDs|K3 zS^5h)Uj9S4P=2yM<0c%^dvVy99yg0^vS? z|Mef9sn56CO#nCFd0Bm(PA>a>4$El+L2L@J9t9U1Re_j{ZOf?C4yJWs1Tm_G8~u{w zXh0+=O`KeMO!jdbqDOLdPi(Pt6|WA>I%3sn!qz%rSbTS_zutm(@`ZaaOZ9nPybXeV z1Xkw|PEQ%8CoS7@m8B^cgHU;+NU*n;;kIMWKV5D+82J*tbwu3Dr`k1V&m8RULjbFI zb`T04e44M1+s4|u!G}rO(aEMC^Rn6IOS8p=<{!hA;vromY@n?cS+Ck&3ErK8;@hmA zV?u}51m#&r@-WZwRyqc_@H!Oc2vYm|;Fh^R`Zqw*ecHE_)<#dsXxuMSj=#jgA z=bkh4r8Z7wi>WHrLWpVa+Phs~%DeiBL>)uoei>Ghw8@QQqvMDyZ6gPNqF09W6?rI+ zi|F~j3!{i}{a69Je_u{dFm4@O-n}?E?APPRhgi6S<`ZnGs3(xn2Xw8CZdZ6Mx^Co9ZK#C3L5GCo34!qp0 zh`USno=2?#+kK0Q-Sbbk27Exo$Nhh9v_~sgd3bftgKKntNT+FaZ*5KmrT?yGrrk=9 znB^(cSf!u9Jc1~K7<2 z$D*h*#G}XeDuTz5^%lrM$tGfgX0wT@O9&uugHhCsyv0?Qm9z1TMSP$}dUtRf+H9G+ zqiyOo>(o1N;HR^)T(lGhrvUN)Eq>98OnCY0h)AtI?Z^tZOkX$f#Q%Wdo9-fi*dROk z#RDbn?!vaa?UiWxOb(5o2(4lp!6Epf#zk7rx5=t>5*RwcPIO(`svZAzq5}UG8uF7vL;fPMAMYCFac4I& zG3ium>)^_`Dnh znT6hukr90MnTfnNyT>aCWR+dybyKb3Cb8RrL}{&;9NDM0&+2~{H$#*NzZU3^-Os8{ z$3pEJ6xvvI0ig`s@D9m`djHT2hxu0I zF$+(;i@zVhJnfk;A}<3Evt^H*McfiA_G>v}-q+9af0U;s2{>IyW{CR-5cC#~Avkn81AYswOz4?x4?ubj0(o8=GpRCyE*C;az!$>ZG}irl!ZyaQZOd}T2V-+p z=F^}r7PTxj^K^lx6Zt%2=ZTu!pAgRsVUNfmYMwS2<6&9k4Pf8lGnT8%3xi9Q0#e>= z2LJYedPA)}Q)LTaP6`SU0kC;#4wC>m_OM|Jej>-pU5O5NFg8DAld_tA>GsG+(O$yU zJqgB)mkt57LA1%jyhj<_dqnJW=1vf(yDld=N*$oSx=H7Yk@Hr-Xf5PzG9;`({JSaX zE;IdQy-a5ql4G9LK1?kf^MS7Am0dnC0J>E`KuFj4LUkJ0~b zN;O1VfYLa(-ylu-AuC$jqhmH)BX-z!Ld1N~AHhUCn@;O+yy+YsChy^lyoas--eN@F zb?AAqST;UYXQoy-C;wtK%3_}qZmuMNti3!KIFQN28CK;d%tsRBE{j=4(xoSfZvdgyKIXU5Xi z2i-bb#_5O+T!zzhZK=(xx3A4KU0bs`_)53ZfjP^7P=8kz({#<10EztH{Ne2qKA1k< zc3>TnO@Sk$W+L0mhxAmCw=)VP zzHMayqv`LvE;t(*1S`7lT*xsZi+jE-Q0r*Yvl!16h)$aH}m){EOFvGtNmaS6g4F8Od zdSunjU*62u+*jiA?0t6oq<_OTFuQ1JWR2cPmBYc=s~55t|t-gU5B;A~$Jms|4~J-DRo}O9JkC%Z-#Lo>DMiVd$!VMjmG68fo!meLs)=q3gHPdn)nnIyb*;mADCLqv5 z#}V*BLy^cG4Xg4ROT8)xK6)bFwb8lnpqSTVw)YWFi(&lNH;%@cMFC(Fa#anW0d29{_Di2R&U#G&UL*mxg2u-Yzeu6Qfq(&IhwUf(0!Xx<(427;{KZ%WI zu*;yo$u|$08@$Yam2q9>E|6E(xW37|HB3}X+n7o28*Q_p%$f8zB4cTT0^hVTSvt9N zB=It>P4?GiI&<9n@Che?3bU+~nbqE&d0V0rWm>?MkrHyrG`Ks?Qh3moB=;f=n(~}o zByGcKF%`9*0j^kao=-E9_Fb@t4Y-*28XP@_VL%t$;U#&EyC+8aB%`4KtG5C>0*jCX zH)wfove^iuCu1TICQH|mK8de=38l&Y`H&tt_tt1~GZ{fJ4yd3-1qeiYOXb=`gI1*t?>I^t$XkeP7puzS71y#blTyX@*3Er|&X{dZ*KZ!44W_n@$S%%&V3_5$3 z8L%_YFs@$WgDG9X<}RygUcez#HQKS>n#;79g4+OhH=WG@o)D_dR@npsqr-^t?Am}j zxnl}9b3!g6x=V!zDwM86?j?iWlr~wwde#KjBOTlNn#XDZ(-@xr> z?fW!{nQiJAY3(6DwPPW>Y+GBxc3A^Ia=V8uDQ;I`QDreU@yI}y7-I+dJDIz~z}o9) zJjI9RXY=Kexy+$kKew0;OCFhC{j38~KC&+bupd&Sh8H40X-Le^gRWDqjvfREOWhp> z(^2IUe-cqDd|g_Tc}d@~xH~xD8rhIw_dX|0Zbbp6@*Q^PWm$pk5>Z~c%a(NpxIK_g zrqi#_`@L0ffUM>4;85lKsg-jra|+UBd(vMt2Z>oUUj%z-n$4ON8pigY`mmjg=3uk} ztE=XV(Mm$Rh;lzsxu3#vYc98z<)r;X{nx4?L$5`7-KRbz=8J)OY;@{RkjnCz9Vo56 zagi+04eM`Ld_>_h+n&d})7yt9p7)^Oo}6i0Gb?ZbLb;}uohVv3MQtI8I)=1!j=bd;zpr!=j2~+Q>VxoL_1yZHd!;S8rBh zBMPnq^+wCj30{L>Nc@Yf ziyPa*bo`IzZkTR8w>xVi>2lM02Y#nT*FvczJy?i#YR+REm6VY8W|O-@Y@L_nDt z5ft;z?1_+}`<)5w6W6qXHEKhuYSK-B97Jk26X}KL)6gxp#m{~GXkxr3wW>lr%Bt=@ zjHzEey$AY!zqK26rM{FqASC~=$u<*zFC@?#$=2T%B>Vmz9d)$5w`ZQGg}F?xGBaP! zntU;{bUh^+RHt)K|2i|E%mJ$=u>Aj@aGzPCji%iq?lqNV^Wonvx!*3i zhrHw-{BC=oM>}7Ow@RYs^uVm|eIym~2%Gw8uMVnZ{0s8{cP1P2w3%EIRVX=#4w={f z8KC2S!cP46BMCX$Mc~-}iO&8fo=V{D?z`2xg=tDz=`0`oX{3new_oH9);-b0=enUM+T&7lA3B>r#av!9*c(&> zRxd4j7CQfRj0H@0X(yuknH&F4H+QXt9^tf+zRl++U)!rMM*j-Vwl;O!1$dnyYel_u zT5P@pgG$g8^wwAdLgLoB0-k`pxPTG1ini@NZ@qntcUmZc2DA!qzogC~(W!dfMcogt ztAVe3!@V?=mnaSnLK@nldjf;nQggV4EpR}`EhOLA4!tvCrwp<7C>G|ScsN?)5xkC~vv#B}DF4L>LTvkB{5Q3JmI~soiblj>JLX3p`>XA4GZIOTkULfhR8T5(!7zU+%|9+qGNX7Io3THWio84`**!{?t9_jKvIXGafchGRpPhX zquzt|XK#KN%wX494MHtp!;3`l^OM==1icQ2|HGrgalv$=9#tL-> zf>v=@!-&|yOE-f2!@yuhE-f6KYlWDXu1QN?KbOgWbhXzgD6w`CnSPAFAquLHXa_!6sY4P z9k(X4vKES$1$njob|(G-&jhdKKlQ2D<$`W851)QaR-FgL-!DVFUsz~kMcgYP*}ucF zS^aige(~e-E6HU1-rb;~=&gD??c2?}bba4ly1w5oUH`UAfAL+q{zuxS>pSk!ID~@( zp9hyJ06A!3Ikw>&sw{v?Xv#O~bc(vs&SJK!4+@Zg?))^%Z{Iz8_v-m6S&O~?{w+ME zdJt|M>|L930smk;cKCzBuJ=f2=G7hf3~)KtZfVfN-B0?!;yRKRA3lz#O#cdmdRL=G zS##JgKl!(jHeRfYbe>OaLtm}Q7>=3~jy;`Cg`;(DJlKZ;c4Bw{0=%oyS-BcHC8;&I z)4c*4rLWdMW-vdt8|(lb>j`A<_tV6jNns{?tnDN6G?q0_&6yb+jgotHpfaRpY|gZU z&(;3u8oPo$zB;hKp1MdW`!rrNgs=4HSbXICLtpmLDI@j3ud8(NRk_OQ{u%sN>7Hll zx?DE+)xXQ}F;32Qi8(7t7m5bVlMnpQkG4hUrKdggs3`&m9&B;bJ1ar-fCaoyUjN4K zuQ9dm5R7ix{V+%7;P#d(v9v&pj3otLFH8~v7h(d2=x~}#A2#~3tn$Bs26P4hA*)ed zf8$d6K4urqK4qc56A?sZ@?lK>AZ#}rp2zfipmWhkMAT!go)yDsE%4bgpG^_3yzWyz zy~tQU25Y+YUX}C-_6CR_bTMgs4^!=zpLz*X4JD;fC5`dpNAoChZjtqc$PM*CUmZy#rv(?Bpsi0(H_Cjj2IpSV@oPtYoHZ1$Z5i0U5c zkkg#V$LjG>u+Q~sP!~dNdEJy~B{$EC8t;7sdlPmj=~bG~02IqO*CLRCpXao&P>HfK zsUZdvEX<31?v^$oiGIft$M%9SE4jJ)s$6}St`J^2F_-k~8@H-db(;!MRfip?og3P6 z&MBAA-g3YN1c0~s-_R3-@&H}eQ8M(d;9Rs7bV!aAAkAz}ID0ZLlZ`zi7hUXT&g%() zL@%dr*BoP$8+vO0_}s`THe+K)1%06D9l3pgc@Be`FD*?|tD_BjyLuzr?yR@nW!2J_ zKI`smJ{g)sed}r1)~hJIw8S2EojcNZx}^BbM<97SdV;kfk6_CVq^}#dpPe^hl`U>b zw2>HMy&_drJkfWli}<#ItcGGf+@%uW0VDk(R`8B>G5@G~M0V}|7KF{Tf!Wg)u6pgN z{se&&CU>l8-5Y54Z9WZlaT6Q6WBP6L z=^hSjGR@0C=kilxt9BHAY_?3a%h|JKueeR!Z|vNlqjy|VvMf!x*tO5fb6grZJ}>8I z@OJu+qATzdC^5n{mRMxTK+AXxT;e!A5rvM^6X(Pp@^`d2)4nTKJqQ(#e6lx`oYFZ*%y{D3=mmhxng!&w zro)8tL>4Ukc-Oq7xU-?Wc5MOZQpp?zv%S_}$2L(7%D`1w6Y><@U zj)cldN+MTnkzIe2g(oX$?Hl{z-my6r$i(hZTp5nMX^#9*0h`31n`=>m7FHGE{^&Bq z^@%z}^}(l0S&cuLE|v@mCu^&^o?z3p0pnSUlf-Df>VYbDr1kT-0XwC!8ggRF<}$0s zdQ`X8r-MtVkFJQUr+sA+HjdbIZnzq(Xh%X75X?6vy+A?N%@18jASd5eFD7^eV_hZ0n&9t%#|7D#B#DePi6gcWHHz7j@q+x;O!!HsN!u z`ej*Jrm1$u`QiLiRuBZhz>uIe!1Dq2p_2ieF^9KrX{@WwTP~7RQ5Y^#&9pLNdBepF zmfK0AgP2BCTf|qYeP$w~KMu&(iF1L9X4b^#BqpSlFEK^AEFTcL|EtWF>kt=O-T}pi zm^Hejgk#Fib3aI!DF%!wx(4KATx@XxI>Q^1mgDJ+ecc&)SS93)o2 zAi1iBPeApBPAN^vYtdYmb!PW6Bz!y~>(kFZ6Fb63gm#rZcaD&*Uu?WuF7N=Hvo2I5G}~NFD47S7pQV9E1Gi1v=b-_p;YVxnZERm?k^s zn(S~pVIn^J%pW9Q#m3V_`-l%jprXj2Jgz^UA9`5e>*SgRcDNV$B)}ZdqoyfI77Ho- zP=SA3nte3jx5reO`{*7fP}gH_!hN-pC0)kLsBCUM5@hM`L0^`2R{4v9xvz!0A~?7@ zz^~lOi$szZDNO>QtCTc(fynB9GDhUvExR6-H#;VtIXyd3{jKsx+!_ZvN+AUwsczJ3 z^SM#tOwB-Q*8k&2v6u>dkX5Gk%>mFg17(D{_BAy!()q2dB{-zMbhy#Qvh!-Z zPC&809VhMD$h9Kbbz7}u^Jz~hebayX$c-dgkAx1e2>xLPKz#Pz-ok2E~I+?BGKCTPd zf=BD}K@p;;j%X33Hcz02uA-(mMjx{EEhr z(Ka3V=xs210N@U`im!SK@t%j~MU`GFo3D88V=v}`hp>;qSs2=zgy+q7yfc)aUN~R^ zy(jo0pbLTfIWpfZYs93!N@w|$gNic8KZsRxX}1>BnR{1+*Tv9$3;#f;<&hbgw;96X z@Oswk+PXqb(n6qU!`Y%nVoktu56!!B@k=#eFVY|I-(RQ^N4rVa@=(oCu#-I`5w>Jj zUF8!LB41^QTs}L8Fr%}yNSm@+kBoT*h!Is*FF?Qy&DF`SgL^ziGn}MVwZ;PkvH8Hjk4bdQ?OsO;|G{=AMZOqN;N7?}!!t~W z4nX9%HGp^8K$V!=on&mc%Ko~{tE_f+M0PO>CNDAX@@AHeT&VKxSSV~iDRTQ8?UpFz z&{Js&BFghSOYp%u;a&q-TE6mhWt;sD_SyG>Bcn*azvf9+)O(efLIE8uj3k$Y%OVT z@OcRs8@wYC`~w++)M9k)ybUX=3ewF_R4*{L3OhL;Xvs)x%HM)ItzX)^vmQ8G=u(Er zeGe1zerG!1aOd1y&ho2_8oGu!<7W__a*7<{;BMpsLy}wo%9#r|X(*NnV!wJZt>hz_ziLdv=*tGv0K@3;$sY$0Qa zVSVv$3?N2b?kMB9Kq$mNR4EzR)|Hy)g%wc^;YU7S&K>{Cx8Kx<@UXye^5x-n1+$jC zCDhY15e-FdrybEM7fzVw4A`kPXROZGG-uQTYHg?{bs%=Sx!8!izTZ*4tz30;Z)>ol z4yv%%ZOej8-qG6lnqOj8O+oa_rmC#|Wu-IwbScgLip1q8I%aJsJT&L&G)urPl@v|dRf$oE^V&UYC$lWASU3%_!pPUUpN%d?6e-xu@_F9WtWJOp zCMO~x$)-?Y!G__0M<{2)A$-dU6czPIUCv?Nemk~^Qb2rN*I5Ca&uk6qgQC3lxK=(? zI+K-x4hEB#f5j8RafG3+*UJjH<*T$t1iaeJ@(*<7o|m&(c@3LIOd$H{q_z3>0Qu~1 zzraPoTNNH<0BAWfKO7Jjo$+Ib9QWS2RCr^d|A32C1?%lT^W%ll`&`Qv`3R-6x-|c4 z{<=)3Ra!u>+YgzUm6Me2hCcQKZhdT8;?m8^$%pG491yAuxO=7>L@FQv>MUKW7He5C z;+*7wBR+&>_a6Y)1)7=B5_T_;|1boyK5HXX%}uC zT*i;Xd;IUCFK$}@dv{>^FF|vKG-%MyU_L%*>;6Bw8(%~k4qC^bSmkaFcenohAT|}E z;phK9d+);CM3N+o{*`2Q4w9O(Z0PBoS-A~M13k@Iy5RynkL&S)vZ`zs$W_{^5|-NN zzuyy&%#6s&l4L`FcklPznR6PeGBffO85tSR2l3wh5H>Y;6?U6@d-%4`_pdhhC*N*c`9J-R`yT%9hx^;-{?$+14-fuVojA>_uxIq&{Qdm| zLpvSmD}77`dc$E`p$ry`yTNY5`Qun)Z_AwDz1#UV&WdI}OILUY;#1o^G6>I1_}_b= z;5%?iIn7joqQV^6Bbup_ zVMZR9JtTD1qXp}{u1-@gB4qmq&pv4rAos-Fq^p<1cnkamj6$nE0@!MrHwGX9$uSeLi#!DE%dUuAce_}}@PXfxgbYO~XyK6aY0)DQ zg%8X0a_)jp;!BYhTP&_Mb5c*njV3ZCpt;_9VjL0T3d1`&L$wk+nr#MFmEOyLvztBn z+273B-okr)+O!Zt!AxgqV;}YK0)^*16~Uc1pQY_tRbQGcpXX(km(v0y16{TAI35R? zp#P9I`6~gsBI_3gN-&-dTH z-hYsBXZ!0=hWpdopI;E@XVmrDzUfJw&p&X1T%w6|io!EH1v7L@+syN6aaK%6J(9fR z6l%1u;W2w+yP#LJl;4u_hkD`Z4rwHb5fDb^dJV@eZ)Qc=?qx*-%)#EQC_%Kbw;CY=x)ZE5J?F5IJ z6lHJvVMrQ%4l3_-o%FWI+p z=NYMU!jau#tA*yz_V|UnO%Qk4>9?X&m3$=BBhr3ROrUW`o%p+Mj;9XJZbbxq%5tz= zcvUR(8B$n_Q}mt88yvAO8X!VtJ|$`>Cj!w%15m>-xxxKDir}MEU8YOa+K{thY32Y8 z6<$ma=ytMkp|{^{&IBrcJ0X|H`Po~HE@jP^<|(evmiEL!N&pwmZfQ3N!Tm@-O^thj z@!1Q^^q`meXIdtB6#6V6fs#sJo3s&E5x+g>X<-*tc_#+;C6$ep1+dfp7qvjq!+SdR^7?Bi&B^NvEXOLxnjT9+yylkTG1!?c}S%< zoZkLEd?wk<8qH?^ko>{&^^VOxOJ}oFF!py>B;TN@)din_dRH`g?l|D{qP5NP$%=`?Q|i%Cyk{tULFc*M(<4<%PaE|s=mBg?lT z{Y8D`>B_xPFo7%SJ!_DEHVs;=nU`m0&9u(*l8yndSH5h~L{83c%iE`zx|zjV(}@o_ zU1hfgQlkoa0E{Bb&x@iw&+B|u1Cl1$%;4+NiHX1Ey~F|>(%OiyBH z@bP0hZ_2#hr#1KilzMsX!0duJh%U|kgTEa7xswka#MfxY;fEOcG#ot01}LnCga_VJ zG=7wvcoGhy3#RIV3La_BTAv;owA+~A=%67b@*ia7ah0E%)4IB9a7Av1{Wb*OJ2WMR z+wPYNRPK>TgNbPtbEw@YX6L01WC+U5Uz?7O;6+`v?JUnWw91!l zoi;(kqWNVpo4u@m1?<}`1mV}0aFB@S**{)A{^jY*cmMV5pXSI6{>W&ly95HlY~^a6 zH{c&=(N=z^lmAQA<`c>-fn^OFK)U=&1cR(5AU{Whz`9INhX<6BI{}Bl>NM)|T zO2&CxVJK^=H^!enbi*$%-##0@`C(*>A-ZbY*2U?f&4&YIcn2d27(o?S`pm996#fJk zq-a$%h=#DFs?A_P%&1>4!W+L_xr^P-`<~h%jHMqrAdRyMi;kBzLIsVYX4V*O(=7d> zIBJDR38Go#0(fxjw}gTck+~0IeuJ%7Rgws=THzqD&9R`HCtmNsrr#6)II+(WIoVL~ zFJ>g-L9T$+5aw8XbS6|}mDj?~+IB_dfnwQpMy2>8wC1uApm@=Ktm>&-BREWac43!+ zzriE)sVXvqmz<%*f78_RjYSEpIRmpXp%a#-Tvdx%#^R=2THJa{VCbL&p9FOF0Qj2FqqeKR=jmetLqakn4=ltA3IiMS{B z4V$o9M`Du1$$5(7y`mMc&ov?8i-a4%)k4(HN*ZQ4=6OZJ9g_4!fF&fWO2l8VRr9h! zzEHq@)SSXw2`u+cSM~`7mlShM#1spt!(yC|ec}N@pT{(j*7t)hu8#c4o2NQ655~a` zTm)3m3MPh9bn*GKc`(}OAIux*Xlfi;6j2TEMFbRzAxw9`s@-9fq^Ot))ZV$V`s9J| zpe#uDi~<|pia$O0%bzX3lt*3- zaI`l(Dj>uWkAH%rUqb**mvGnJ@@bYi*=vdKmyYPw9yBO+3lBfW9nrdOn?wgb5)U{r z5E2G&l>^(s(3Ah}U907_(k7*bC&Y+}nZID5@HYAdpLYmyh)r!IdC3)_MEyv<0FJTl z7z!|Ega0Xm;o3M7(UA4Bv%_w%Nt~Bh1OB^2C==?Czbz+bsZW)8WR_-vOcmEzP0XrO zXC>=&gIxh;z)IRIy+ivUF>04YSPZBEM99`ubQ=qg9CwJq1VFy2h0jpC9$-$4C}Qxd zp<>S7oJ5u{PtnwQGv=|a7Y*b{p_$mhia}8%GxPI;q!6x$yliXW_`G=o#1FA)nU9o{ zomeGkh9*k7lgB-Gg^pPl+UWqOem1WaRi#OH z_D`QL+UO7-#YS}5R0x*1&+kO0p@OFJ!gg4W0fB;)ENXK^vVs_BpF6a6)q`lXy;T%tnVdoo0+@**eo0ouevWki8}D(>8!}hR=yV<;faROfze%=@8b|U4?`>WqXodBHWzhTel*zv z%q&%_W$9)h<$u2Xj$m8JN;QH)8?nha6=kHp^6jagNP4V3cC7|Q9WvPR6^7n`*coRKZU$1GwB#BHp<_X{Lnevv_8M)uvJyU|LYn8J z7MMlZ7PHtx@3NTIRa2d{`)^nC{LQp3=B<6~ef#IX{QG^cw4%t;QNAKL&t0xUvJFR; zYdAj8c_^%Sg>H1V-gpfLv@#M`5aFv^Ss6j>@0-7affjgbyE8KI0(J})f?~`;S(W*K zg|V#bwjO*_GF2q|Cc9px;V#NWmZ_zRG5O@!L_IY zsL?E@7bs>P3(7$2baZ46fXWG}(ZL2!XK`6ZXigu?<4Gii6uiMTs`C!?a=vWj7{3f` zD{&_WpTwB6qG4O8p}1$QS1*ax__p$qw|BZvH{E5g>T0=qT(ZF8E8Jys0H`k;q+0Tl zvF^~QfB?}QS{OQG8Hzv9Sb034?nN;Jk$urhmuefz$91JF<`CxC{5|)k0(IJ4KrmDg z1LjC%6|7YBDEuG9$xA(HhiNPBP4ikZ`h#Hi)mPbN1K4_8DJxR3uDCf+l!#e z1D4qujIgx`5dQO7b(+qY`tI8<EK|V>^$h)#X+zk6T(=ZPvHx)QEkS(4S!k*Eh8k z|KHL4#515^Z6euEuX7W&D4maFjUqi*-dkhx>dbUDbH8s#-kY7r=qS(G%W-&Fhyn5`GSvtgG-hQ*0Qz$6RJ08;5!_# z$`cd_#CLwo^SMnDdN#|K$T`9}B9_V&?Z6K>HO=Dete6&vC{>wJ3>R$^2ER*Nsw`9)OSU9qo}qy=$jSR3wWhk`WbQf_)| zwNg%*c_M=H*VR1cpT_1YwxeUHccQdf%F=3x^+z#v7D)iS2?6%FA)>5RZ%VTRXp_*G zHbqL&MjSkJQj}t3X&XD5ee6Ewt7eF$BflUY^Hs1OLfv}&F<+fnT{QkUjD>3v9$30!HI*NYZ>5GhJFu%~IA<=M!`3b{hq1B}&bn)DM$@5oRHZ7PN% zX<&gdxENOuFh0=nh0ys0ShdZ%Y4~7b7csMwMPz=j2BuL zFMqmiBQaO(I2~>`=?40+!RKXzC(BmSs`~(#5Is&5aCG#mKh)Q{BHT9{Q!AJgHMn?RYxKqGc}Bs=nf-U@=u})FK48X z<+74ikR)0NJc&vdrFTLw8t|duaUDDLXY5sH^Ptf5xUOs5vvnS^dakOQAk{9eNx{wa zWgBK+p=!=LuLM1;c8jgHY5xNWKxgaw%I&TPZtG!3Tn^buY;nGB{%;BIL8cZVF zaTEvp8Uvx`_2Y8&k^`)|Eyefveq_0+$ty61?^Hj}L4#4pn>@DuE}dr16DH!jK?lFr zZQ~Lg41*2ULNGpM-@i3S#!WOaFXhjNRuTr>YcaJDL=Jad@EYPuH37kfYRd_SU&KZ$ z^(#ePmNJOohwj9@#Gik33(-u#-Mp%^??2|N>dd@Nj9b2k+*eywv$mK!3#vtvW84z^ zVPbO%jwS}TD@ZnPt+9}i1JY4fb4X>j9AM7h6SS&S5CdAm5YmRgOR{&7Hh+W1S?8j% zTROyEmm_qoQr}jixP#B#9lu!?XW{CQ21($%Xc8p!0PgQ*2#ZTCO7lZoS=Zb%? zfzBgsOwTZ5nPuy|o%GfBB*GBxY!ao^c}s#5b3_ZkzwX|ZKgUEVh9mPxeSX(g5H0Vb zpbsXsyL{4<0kO{8_)V@vH7rMYSwFQ7!n-)hIi`S;+HdyfQ&f7hd)>~Cb)xk(PGG`; zZ$BHmN3--apFNt`pO@)}s(v(Kj7`iRS(fo=l9sFW+Pp2MA3H&bT>ccW&H{M{L{caq zz?{t{QMDXJh8#2~jO=_4vJV_UqaB%onPLE`z(E_osYWogE;<1*7x!f|R^(3ktaBKH6{8k@P4+ zI4>ZkvWr(xltbGs1QB@aYkdA3=_iSN8>yt&AFBF!nH5vKp#|sW~*>ViQfU0q^4SXAMxo_bC`{eG-oATGmFvX3FbU2z%Kx_fK@TWV^)2C*C%L%yu{^ za$B*>IRf@5YK;`y3&`$5b}VRo9CZ0mY>gwdU{Zj!czF^xltfJ+>8#Vf1gEKz1<_4G z4PH&0vNoMf7qhg@-_WO_?u`edyXc>pH)#;LQ-i?i=h)_r8$lP!eH+iBt`=oB9O6dq z(TMVHkHCT;IQ!>029JtC zlPl@Tl|o8M`a)u@s56jl=zX>#f6mOLbCeYNFr=47X{$4wrXn2;X06JKPoRts0b|yX zoC2*aN@|J>bvW1Xb>;&3xKnw5)Fsoz@xg86nZIEN^r3TwL87ZD5ks&mwt*1I9(_Zf zgBnBAQt3l?ej|!gs1bO~Y@2lylRId-AEs#UvJ@(xcLQu}ESL9TPqJ=_TYam9_GwV> zxHut3M_acqW-X^}8ucv#)!KR5of1nYZ+hE^W$mvnayL~lMU?3AOKAGoD1$-E}U zoZ(LJarFlqQDd4HvtiRg>%!+u5B4b7nS$azNV@>zra}8+H*X{o%Pz|H-n~O#zdLlA z;5T->Coz|>uey_Jo4V3@9NZi56+PKd;aQoT#I|`Gw}F89?`LHe#A%=#O}}J^vfY6s z-FcbG_eZSRGsv4KH+B^KJnY9as*%9aF3A#QC$s`&38rTlmfiYiWd>Q0+`KGb=|HdqY}|e8TW~O$p}(iIVotHN7p47slfa5BJ9JmhG#}0TX0rqZ$0*V)T2BVx zG4i;s(-r*jBbEj46ZmQM311>ZYpbXEd7V=>f!7dN9Aam^E6Vo%zrO~Ppv1hxJX9!C zPs~q`U;Oy))$`p1ZhC={Xdr2O*H(~47n9IF!LUj<4Xs6TS2lfvq5oKwt;i{nn0ING z{k2Y~n`DFbQKVs8QPo=G4!u~Q5N-@7Qnbv~r@U_R$1qQGWQI6l6u_qR2^4ggDBC=; zDYDH(7V@`8wi*{6+8*dt^aJ+eMg=DimGf-4{CqYN59i@C5U&2Td|Ehyb9We1L;g$osCSswa}bW z;7&#N&Ax+ixXbO}Ja?Ji3))^l`UlsGxGp^V4^&?81;yxOba=Ce06zI+5^B3@h!m>C z#bPB?{%c)iFN!jcy`GT#|5(+wjy+zS1vLN=UZ_%hqBwG23)750=M=8)Y%qBL8db0S zRtZb+CyukjPI8UB%sS=srkG)%$NTx-zaPRo9{vEEy34daFG>*<8GT@;)5Rr9G&0Hq zH+Gz5QRaVRQ(Wp#EE^n=p`W7XP#qC*4p7mRbo|CS`-aKnv`&`g7&kwbJ;O{~j_j!` z2qNhC)VHCdnFBtIPwM_ifrZpaJ;8ZABsIJ(OU1HU0oJ3RMH)OSe4Gj1FN0bp1K4Su{J;S&XfBq)oL}r>rh|WTg7;g_W5fe91Uko3+ahB5`4z zrR7wR_bq(997Lpw6<&?RMGjpaW@IT{57Nakl4;kaWtJ(>_J6+5i)5``MXQy=OVNi# znwSB88uY}iAYgzJAwa(P06T8bKU7a_5Jmu?h61I1BWVGBkUuBpJTY?@NSL|zkxRxy zETnbEf#)B#T(cPsobwtfefK59tiKbg3>i2WTDUCUcRa^Wc71nZwZywX8S7!hH~-!k z)_EJ_rP`h~sLvbA+|a!tmx3QIg1fnfyjhrN%jRg}tWE5}y0+|q47Vi`PhnZJwszc( zF{rE7hM@M+t4q#mn9x}N!T?loT+yYa!HAD>se8A(rFmEU_aU|wJb&sF8lvNmYvyALgw9X4%CQFI ztJ6Z+&1k}Uk^>?8IC5b!_k3=2p&V3RS&0UUc1;V<{UwV8Ge6dS>Ky)_Jyxh0dK_V+4;E04tHz8aTcMC z3#F)9fn-ECsay0$L;3LYQ7C`+Rk2+H*M#x->@N;z9X4J)6LO&5a!-I(0Mu! zI{7vav?tWIfeCVd(>Yz*M98;j%e?p7TOkWK{^7Pb!|h+(4t2Qo>&VP~kRTvtdoBr( z3JVe=BS%3W>9S~c8Cuv5CA6VpaH#Kk54GD zh;H}poP}K^5I&MtdAowZ_1L9-f9p4x*g>`CQY*ha2#)gdMZ9EIL2#iK-bGJ9HX#ks zw;`R7V%`E}orJT0bLnODiX@sk1Sr*jkl;UWKo2bM$EaXY;##S;aZ4LvD)c!vglYUiG=lqIl+H6T;BI>-36+LAOh5SEpA! z_-pz3>&v3F-f+mxiyuY#l+J+jCc+xw$MxDx(?%ECG_&)({k6&KAHdL~87d3#Yl~Zn zv3Qdhg%j#$y0mU`j0XZW1Dk=NhfF?g<5w@=Jb(NAZ_nO6|K-Q$zdV2Y&yfOxC=>?* zgJK}RJp1e8IFJC5JCO9GwvH*l?G4~|8C{q?5^0cr>Cecb@l{MdR zeJS95)zal|St*@ig95Rr2iCO?a{aI4;TtaVHf_WZeoosd#PIqXg?{}RiigU5p=&sdFe1jVT4`f> zORNnhvBI6qFCvU1ahs+yblmaNR>~k^cD+#r%oux<7m`p35v|V81>|46N2G zRIUY&{>~%y^XKs0A3ma04IXIswW?~_=|!H@P;cW>%T&?0uBc*SZ{8+cWascGDdmIl zpY`I9OHQ~n{t3B-U$KtPYYp`UI&==hv{7)Bj)VjZ^~8tWo-Kn&exVdh0!4#L6Jj1A z#PO1PGZXr`qMxX%!Vew_KZZL#^KLq!?G{;Wy|C|D@*g$9Jn^OLWzl+u?sKpf1wW5F zFJ?Dc{fy?vRCPIDw0W%CQNT?U&Q@yeq`4TLnQXvj=?bhWAg(RyFtfzQDYG;WEh!sP z=tFyoLihsP4fUhxR*yVCthX0Ayo)ffD7pLKdys1RA!OUyBpootDJV;?6@RJdnT#IriXnL_n9{K;yrY)cl1_BH(yx@?81)EOn- zJI&jxoI|9dT_+py$fqn`w6ahJ=`s|0nbY`HmoD__Rb@ET=EPMs5RQUxp*?N`xAma0 z`M}Zryt$~ZD7+@o1#%L@AvAUj^4222?L{&Dh>1X}GduFCHnaR3H75|wwWMiPbzxtj zf+$kLo(ghUa`ZPZ;%E#^ho!3=j&cQsG4Nxb}Tida!jA+XGhYT>^a5@F+ z-|fFj(FCEUd0`Km*)y-|>NGtCaYO}C6Kx7g5LxlLfCT_I{wp|I6fnXapu>^WGpJ)C z`+a=cRP`z2XVd1jVUu>By1gSYw|^e?NX6aXJ;Hwf7wbeRT>N*Tz%VQq7*y666nADFWL~b3UH&bG)+WKiCx zJ2AiW1mI^EAA3Ox!j_RcR;NAdZ2J$3VwN%A7e`R4EUG!?$sb&}dpURQloTH>;s>TL zCQGz&h&a*CA>t-+HpJ07)i~S@X9a|8rL^rtyfP7EgowCLKmjq!%e+o!j&Q+)1PIsE z_Q2UvF%r_JyoSur<@t>71AMsH4TVnW%D3rN6>Tlb^Jg3<<4985@5O3L+iJ%xRpqC= zCf56H#k_I|@sTy4_plPt$;cjs)&}-)Ye0FY7sUB+It|Q!0(pa`IWk53CtjvuBpJG@ zh|%*=Xn(?#xH*PJg=NJ^yw-3b&&&#Jvmo|(=I8>la?`4=fyg>Qe@p8ErbyX9ic*Xh z>WlZI^H+Z%6>OM-#w*L=dapim+JLI6v!YB}PUenLkEnkN0g}+mUkvdwZQHz-XzGTe z5fpaI*fDg@)RX8?HQ}80)dBFY>f8lgZ!BBoj})f8!3zR$z6MF2WneBBP0N{6rfdvP zgSv1F<z(XsbP+CdGP9Bl}?Eq};tLK3Xp%>n}r$2J&ZQ(gGC*qmZsza^vFd z5Y5wQEooifJt-&n*a91cBoHm?^eNM!vi^#cqjj7iQ=Qq&lvRlfGKZsNqYP|0(A{ao zi1Cj_tFhz^KSWT1$de+C^oj7|Mp$5bbzA=Y=T|RZzkU46+lj#n#LdkiULB@Y0;*SJ z_&seQA(WlldrHFd%d@{dd(DBl?`WMEfD^1=^vR>ey8CQSWRIbg-i9hu^~~ZzA*l5V zTy(my4krS!yX=XK?jrTS&ho`!olx+4`<5Q_vMwlV3L1mtI2ebVrz>Z=1-MpB)0ulg z)lA9Ro(DpWgB@&BS!Wr_iiL|K;=JjVyrVt@)@@yFc;Mg@(RnKepFWj$tkXc#??CSL zb&5uIZ>u;`s6vT=3N!oP?xI@!>Ao*z0RdyYO(dYIcfcFd#KGQ@0S&+wLoua_Q z-E1~#gr*w1;ypU$!1e4b6B(SPEEnP4?XDTPUKkTX;xJxUQ?lFE+781%RD^_A{o?>Or8tcI0OzeTS1-&<;A^h_W zTK-g3ADdyBUglc;?_7VY9d63Lm&i6mdD8PL>|n}tTL%=Yz!`k?3R1=9$M)Stz_h_9 zRq%mfM;4H1C_0#@&J1x`l)|pm$LJKFL2Ibnq|0a<|5@N`Xu2vOi&_9ACblNc+tVUF zugX;O)ht>o8a7)X8Pc83JM!~qHOYrZYW$GT+^*~QN9I1k*vPs>Epofl+MGf|Jv3Pg z%i2EtIvj;dj%8Lt?VAH9lQ*%fs>`^=FE0$Js^_A#`4;M7EUL7FHq>;N*&+;W~~ z=_%+MSHi$Y?eRVH?;Hv?%o8nV(lfeYXNCvk?=b$P7kEg8Mxf!?>-TgX0}_njdZYjE z`Sb5JV{!lFF}e^XlA)8%#cE{g*jwYA=D+JUSfy`FxM~5`e-nK0y@V&&#s2Y;HNA-t zeoC9797=2)_MRx%z7YqYWW?ON58({GolGB4zYY7Hm2gnZUVm#j{S6@OI7a0wFd2eVIxw`{V9`fW}76Qds+xUeai#F21nQUqwZo$>d zs#ABgk)}z-A7PX7{!toS&S>P)S6m0`TlU+V&_DDAPVfZ(iwfSrq?Qe7`0})OlelG7 zJ$XsSRdMRh4ucSQ{>M=Z%iVbLA%?z*YLMHi?>aOWgtguxJn;1{)L0ZDvoNfrA?e~UpWvBgtVTb+_M!CB$c1G0AQ%;vcV^#)io*m9{0 z>lfR1_)(pFk}wxzWZPiV#KR=S3dqkcolu)f|1C47w5B_W4j^Q=f8(t z64mW*S~V_eWYr8MtZwDT+o%GW4lDcW8&Mb73v=O58M=T#ydo4e3CSE=5E1f>JpjdW z`YYeF`ViNM160G1zcG@f#Gs52X`{n3diWg#_xS`ArYB*|dumYk>epx6ep$L zwj`A9(y$d@O4&CRu&lZ)O0YlS5XPj+Ybs7Ele(~06!RTZ98W1&C2)009M@TM%dEwh zoK`nja@vO;ExxQIi&st_kTJ84PC3&)Kwkd1`K(pRnu=PO;9Kg-_K-2 zF${x7MDf2X^7UeS{SHt@I3xlNKh_F!wU}39<|fIo9gSMp!wtgYaKsnhXikm}q{87h zrKMR1($ZaaB(V5m_TbtEeWA8%AADe=y;sp7Wh4`jE<*=#T(qQs?u#GtS>^I(=%_Ck zlhIxoHQR>s#Rk~_y?sxwLACu*6P1}=*7BmaoZ?BnyWW|_R{W4F{+?!1l zsj|I2!Dj*KV(UpM28Yu837uZX40Uy3{ImcCR0R_(6464$G1BB0yGv8#HT-F%#VSco`bZTb#8}$54R=J-F1NV@37H2YFF|TGBnQK7uZ5a zJVC0NPL-p0*Lf&piBuj5$q9rkk!ExRa)#$6iPR6Ro+Jm-1L`f9dvt2|0jk3z(>YH` ztVJIT(##p~ zKU+C52Cf4-+0fSdD=h&Q1gurRwl_NF9~ZM3Wk8B~aXE1e*V^oL5>b;z4@TVLO>q#y z$gM}QsEv<%HL;-;W&=Wx#SHA*j5W$buTB@RzGg=`FcAbNg#|^SZz>?f4QC-Y?M2n( zPy`Rx^Y@3D@ofLuOk*bR`3H1FlZ6S(77|v+Ifv2N-0vfA~0wu$eMhax`{a9igZP^eX zwv3ZNtLY{z7(^)Lwe2e|67wN3AJCizQG)QAvS+|c_YJ2+z!gZ0k29Q@03%Bbe1RP~ zni0me_H;d(AAt35!XAgnxw6Xnk%Kd{scTcsKH+@^-(S)J^tr{1nYPO@$8+}c;U1vL zm~5GReRi{@EkE{cPU0Uwe>T_PA2c!7YY4RsNn6*R!nyU5UHY$wO7CTkd^FnwX_)-0 z3)^lTDna}Tr@>v+pr|;_t!rPVqCV)Wl5R+lIo+`ls3VuA9gxg_GsN@Z!;dE}B)Y=} zf+Vg}H=)R+Wi0;wk$?xvnJLhbIxU$9P|9r{8yRPCG9TX%vF`)17axedK=6*e_+Y-r z0tnjiArQ+5bT&uv@R%&xIsR}mQj(J|+OVEY6T{J4Ckuip+jZIUH)jzD6w)*hb7bd= zp{!n>4SNR2mjz$YM{XHxv)IsNOEf-wj7cVnY>9~rhS#h_rx6?%+46(}WH@Cy_u`Az zqux*`e3f%Y!vk->LASas5JKQY@0+hfzkRv8`E3RMpdhptO<)aRfA_@j__ZN##B(;^ zr%Od7pe{;gVyanN%pLD^UO=8w97;E|nfk0lbHoC3gdv&rtMLU^g?lcsR(4yhnaOL0MKv zsLpe5tU}3qewHb2Th|E{Htciu@7LdKl z?Ac#&`{KFu^^<;e_Z*aOly+K+7e&g$Vax;Wkr8Pkg;j1s9pl+P4@2Vw^ot( zacl^P3WjVmL|p>aNmf9J2MYV^d#bB;M+?G^^VoB1;uMlIl-BD=WPJdF`w5!wrv>D*8A3-B)(-5qx+%- zfkOdo(nE6vNvMm`JTg~iAHPiuChjguA1Ua9D}9gEq0%F)MAfgT`W8Ib3b!btOBbi> z4OZGgs<)WsHQ9equ#64^cju088I#s;ju&fr!-pG)ZJ)sUuQCADurHz^2S0bVV)|@x z!V^z*4sYm$cMV3=G7S#}onL#0Aq~;yw}fV6mH6idw(&c#Kx8C9?^l<`GqJ{YFGONbr|(LG2I4=-fzdeFkk5#8&p`9Q>H z0UPYuwy9&jt{YA~G^knL@7T49eP8an@5?Rwj^;(Zb6@I>k3_TSPTnSlywU8nmD5u1 zyE6Y>ZrONF^VYlX%boXq`9OyF>DhQ`s1ulcY|C1=b!GJNRLSftdQ(2agYkExxSDE1 zR>0fm1-x-)z};|wo*p+#9vC&1*hV&bDA_HD!s`B3v{?O~Xt5#5;s1{i!gi)}==U}s z`sIC1Z?_Vp9vT@u{JqCjdgQi=R~*w3u^4X zA9m|Msb*Cj)Stq)pe_yLY1#z9X`JH>3Vba2Si6_@?GbPN(mqDI5~kRk-1oz7{n(t` z_elL8dge9`3S;xrRbq1-$Et{VIwqW6JoZ4_=Ou@KEM$gNVP}E?CW|v6vZbsXR>~@J za00Jmz1+?H8YPyDe>!m9-E zEBcX;F45+fA$WI0f^R>>V8@W!6|du=6y8PT0WZ3Nfc3Q~euYBzZZd~m>`!%@)&kr6k^Lh+054!y;yI_Xwa+^K zC@fKZ8&-9$#d}_Ws^J|55^NicV{dmkwh|OY1Cu#>%4K3!iGe%TE*!~L&d|nE8dTCz zT)=0j{!$9mP;`U>i+;v5fL7Xz}Rj$ zy1CF|r62#l{}4jq0dIWXO343=KyHQkn;cG^w`2F)v#ngRyzzVffBk^I=#dQ@xZ_iL z#2)sM{rw;Lh+65)LN|LUZJ6uVKv*nlU*^XP(a~L~^P6a~W zuwk1$PeVcvWc;R%r6CNa!@aIeH`Juwz;#O}MC=Q=DJ=kjKz_gfoz?%QSFqIGZcxP( zLV%%6f;vWGaDF9F9E7@rjXArS^MNw|KkG65ch|l-GTIE@Du}I`YhvyP55|jhc4pgp zIMOZJ${Kcim^W=*eT+WiVKLwM(rCNr)7rJu4{YoE^;RA?ahi5|+W{WTRlIp;M&`lx z`1>iY_Qtb zOSzGyw3YnJfU1>wTBF}>tzx5eC+-+sV8A^JeqcIw?jAGl>T1!OdK({ zI=^1P1Ye#Cu~%zMBYe z{oCAKdL3)HNL-m-zS~V0h;-Uzuyt}b&Xd&h?03!O141164us&z@7n7TZUE4E6gd!7 z(zC0nlXr++?Gcb{-q(q_mKp`(lYC6ZjoW@hoA2E<3eJJIKf{0)$xHbUd|Pf1$cLin z9`c6zbjw_QKo zFnOKR?UsjhudE$WPk0Mj8O)Lt zASZk~+?u)yEgQQjG8hF8w1ehOmMaBoi|81h6=jAm!eI-MQrht+XS=4UWj_L`0XGftAE41!dQEI2tn>gzNmV$X-ul>=M?O>YIdNpdhjM};|lPw+9VAF=N z??LpuKJT{CVJtMHa`3Cus~4og9M112X8s^C4d6Y7x>4-N9sJG?RDezNdm0?5fcA>( zr01wfLs-#;szZ-*dmu%}x)z-vuyGqwozuV`wA-^X1PvQ?&0O2%_%uH+%2#Q75zGSu za=xvG^ZVmvV&?b9t8Qmd`~Zs|gvB(&;TCeC?w+3098n#U$Yq=ASR$lt6v|h9zjb=` zvV77x6D;mxv>Ivw+VygRV8`f@#(%HwuamxN4@9*GVKw+Hzl;tyXxZGLV=>~l4Y!r! zZ8r?Kl_PGuLkT?ddJRwmQ>1G8h`cgaPb|CMx6^zPT5-Hb}V$I z6vg_3-tYK?Zcc`QHr^22cd+3!VNY1s#*4@%AUnsQl2D4Uk+B*A&R@$PKH=gVr- z1dxH-Vf?F2JNzQD3!ty@|_>Jc+{rKmocI zk2+n72-)2WZFkDR!L<8Wu$=>P;Ng@;NPWz3&&x67;uOKC^E4XPm|n1gJf!-QU4}P%reNluJE2ywxRzi37JiR;3^w zQ4vyyP30dv)lUPL#*=Nwc?1IfD!ND-LY zsnj36ChA>b1k1QE2;3%fSMK+oOQ8|E!O94?G<5X2Q(T@05{~{GBN|1ME%gY(y5sVu z1;K7zV-NpeeE4T#eEKx2DqGuie_Wq8>_|pE$dDnpCo-C-J}!PDcxDc)AA~sc$Z%3U ztrc}ca_ARoQk4!AMhbrqZK^LfMn?9LYG>7=6K5XbiTV?vZAn}i(mRxbg1EPDH zDQM4c6LZ=bT>qH#iRy#c-eS7((*qao}ls;;$UM8Mx$s!`+!2w z;FXiddEUOM>Nd}~?NjQV195fU$>@9HGc4XS19A%)XiJj3SGElDUbLMH z3$s6nG&g;7I~aAnJ$PU-5r%mrv*k@>8dY%1vc1|Vtp8R1A^AgbIj?GnAez_b`I;hE z560vDi+ncE>t-L9W&EK5MCZC}>DMIYny(MYY{D(~r&XPgZ53|#uaee^Qy^sdnYq4( z4C)Oh2eI`hCM{QqabO?u2QGhIE!vzat=Hx`%4VNbm-DKmv<=^2;`w|jhiRs>v}w#+ z==XJgUNmjJqV1q8#|ubSj6@?b&9s7lZ1*}#79AKoE|S;5HXvDte`SG%0?Y^hDU0n> zmmS(D_~#G;Kr19G8gMUK&2vrH7!A0w=L3r7mHqqW+1Mv#!$MarG5YtG_`<85s;rbN=_bWeFY9OfYJgxJx zeZ#vVlOzYz86w<~=AM2|Kjwxr$mR?SLRpA`Lqd+SYN>{vu$XRI=Pr-97?QJ0u=Axs z>>w5KCXuc+iY1Q-HBBM7@=$N2rE3oNK0z-~qb2f*#QY8t42 zaELZa<_&O?`rF?(&&!LvE?Plt29k)BnfaLKbCWNN27~w8B6pABs@V>aJ*?03VdQd2 z%rT8!Qlm#6^#SA55HT+mHBpstI#vRLI3NdgV&Al`O=H_6YOJ;%qJ@A$cfH4a_~{l@ zzzOQByVHYgrgbrItJ(u}+w@sSu$t8$vQL)CaR z{!kTVx4StHi{^7|+nn?buTAUoytTvY85UKt!=hSY_inqe=b@NMBGw?0uoBTbZzBAo zx3P~Mpj}~lJ1DXNW-CMv#c#1U1OGcl@Zk&K)hq|! zrbR=H(`A({X1OPJhPn5vi(+~KEBgs(uSp>c`1vevVav*0mf zAD>6li?p!9^!yDx2SGL58j6m}mMZ**)l76)!I6uXV1TW=$y-7Wg& z^R@dD;0cJ0fsV#4hCnDiy7fDw7iYQ|T&SS$3G$AfCtUn~p-!ZJM~{I=VGES02dVDL2w4-vjyX-|g+{vOna zhO`p_>Ko4&k{}wvE>x&*0AGm?(Li<}MSbJgLX5gfTm*NSw-;6B07;I-^?uC5IdQM1 zv_4k~FROJqXSuBBaIL}=u-tyMg4DDY;Tli|5H_vz^RXAaLVdJT$BwL0#WG`e@4_U; zMW%HqymZTa>gHPK=Q!cfhETEl`{t*#%w~`+v6@2!7Tz$K8o0?ZKEOnMWiHKp16;Zt zoMrU+H#6h16+V817*b*t{V(U0PuOhwVJBqFbByf^3|tMV*_I&HUCr~xrb)F^0hWTzf9-+000rmRPf}E?atfjC;*}s&Vr$Z zLsj92W)J_}UrWG5F1(Pu2~a_?QK2Y$1BI{t4CvO@az)^DY!NM*Z_jDkpCTXdhc)`Z|SqsH@iu> z#UrB@yLME_ocuMxo|uXSHqNA$9~CYW_NF}8qAUfQ(6u?ne{~TVh7ghBU zH6d3;dm)lW1AjDj*+5c9zbX z98z{$LnJE5Gma_?>C#V8hM6TeXnRhMUJw0V`<3Za-`K0Y5CzJ!0B zXK9-cMj>Q}P{@{>J@ahY)+y}3g4nCJGU&x6(QRJ6c&! z7?_-W!O-xPnJ&(q%)@a}pO=MlkyposeJW5-_tfj2oYPG$BMnn!9*hT*7_L1)kpKxPYZp(movECONG_a>9Ge5RadY6S$9F3{Q&@SYp zw`SbpPOXV(XHkYb)Jr}4w*-f49H^UH z=5?8>-ImX;4E%sRCh*Va&*pmFb}JAGaAvvZRnxG^H>`YWvTAW^jk@>uMF*xS+68(h zjLmc6#_>&^n5*1W4Qi%ZhI9@XJLT2X;q#T=QjHr98og&rtdw8a{^}#s%uFE!cbql^!|DsSVuSoZ91D- z;Vv~6dR5o4qa;TU@fb+F=lIK+TA*%Ah~*1SADQD5Gcmm@<%Y~4XzdQa1`hUaZ)n(( ze=4d)^E851?jXsOW?QgO*DB7=AizhOm{atLNG(6HgkN_~$4zya57FFa$@>Rp@vx99 z|9hmA=I%Ny&d!FB;V0@s>){5vkksuO0jnTkh(~3B;}C2#|}Bc@YV4N`u?yldUwig>vhN8={yJbf@Y}b0F8;_I?QJ5p{6NKs6zx>Lc829 z%(iQS@0Fm%_1f3h^sF<;UNRP$VL;L(3Wx4EVb)CN3FHD~@J0#_miM|kv)dI)7d4=LFc~JjI+?iN50qLYD@Fuq*bf>i?ieK$2yX~aHP4riEZz`EsxFVb@3wP1crJ7r zUXzbdO{S)P*%EU+7@QpOCBd}3Gmo!*8-G2a_O+Y9+nNLVF3#&~kzPRL$Je00@$V4Ff=;O*^~+1!x5 zEd5Jdwe+DcT-HR}keZA-?JZZX0MNAtqlKDP>|-!iT{u_{Vs{c0|5#VnDje+*oE8|Ek)I$8z>c|V)tsSgY~Elm&H_lzcS%txGMisa{t|&( zt)eQ6TfwKiZ?8Bsf{$+Dd%R85PHT8Am-x2PNG+_@K+PdMiCNy}^<`1!yk?0RkIA~_ zr8=j*3;ct7PfBxKEY^>x~T+}Qw8|CAnxli6QdcemA zC*!tyQC)!$zR7)PFq?L+D=-k5XV-3Sp%dgC8QAFzn7EAJk2VqvA~v{Rbefp_h~45Z$ARlMc}RE7ph&bI`WIpZ`00pmu=}SFq2Q@tWK?DQs2yhb$j!z}n->u$g2Z>cQs3mh zGH^zX?hf}X>tH!Z?7)r>PS6&ruj)!y?cj@i3+R=_TOR4-6P&r@8e`WXa3wtf}G?b3fYq-3Xap9o(!T2?8=6Z4>Jh2$_--1>HN8nK6~$T@z{pK5NEd=^_dU5ZKL?u4Sc)aoetyfX;sK@Z{E?6t&Z%e zBnlBAo;KM1cp5RMO&y8rVai=&$+-p^I24QY-n-1pxHbwG#gEUQd&47OI4{Op-$Ed3 zNZ&Ri=F<~@S#>d#Y#Im={iC)xL$$09p%h|pNUNKGN`K5(aWd^!;$yzD)LG3qF~?DY zL&PSeM&ZG89_!Gs`+z757ltGv9QL}CKv@E2(!r-AR+B*MK!XwuloeO81UK~2c77o` zC!pI%BX~NUx>n6N>so#cy&eGWC*MEJq<7{)tkW^SsRK zw9Ul>p5=SCKeWfR4ZMWz4hrn-;ovqFnsXv{KpFu=3j2&0`WSrpe34{I;j3PbG|Qf! z{Rr$V$W1U#VRiZeLHo#CO4u8UsD`fop^%d|7{je=XbQIsj1Q`KtsGtg1#Qj+YI72lgto zP8`StNe{dx2pC4-;EUc~ObmjA?^r)0v#p|>&K4PYyW2)Z+vKye#GK~S6g=UJ)|!w5 zQK&( z*P_Mxy$BIG7}&qv3*c)kep(in^u+uhvJF8EjQfh>tQ+mqV>_+rh9v^*hRu7gcVp}u zjsJM0BBgpZ3k z*_Sz7Xx^h?ng8$}5#ff@(u4Q-Ys`s5<()CP=|^RDO>-4dOLv;js`8w{fl;+n!;Ei@ z+6?XMA~=u!#*~PCZ+q}tK;0d|_x^Y-+I7)-2a4sqddGdRcEgwVJHWXWMcjZ#)=(k7 zqbk}Wgz|=3=}hX#AK41WC+jtX+ig#K)bl$VN?4Z61}Z$(#%^n7q+Yt!g|!n9aE=}6$R~e#&Gr-h)x>= zg{-*-{iV#DNQG!Q6%h(YG)h9~bCEV4M?)HjG|nF^>?cm*u;^y5m++bj3(JVW2k@jABzKB5KUaC;<-rCY~1GeS6;mri;AOkNDs)i$0z7-M{i8 z01{5i-b3Tp=n5H@TJhy)d!4XtT`!R1d7YmX%e*;>Z=u{kmOnrg!pzDy?D@gL2va@_ z7Hn1rgOgyVojvRIADfG`&NDK;)5@dk+F7VIi_=#Oa7`K=XG9ngjc|a{#*adVQ}zNR z+en<-GS4$>L+iW8$!Wzg+O6{7%~9YRj(Hb^7?$|tUts5t0$Xe|#TIzt>eo^m8H%-&04(&5 zH>WgHuB$n)DYWL{l4G3C6EFOu--kDF8NA6^b6&zciIW=~Bl}#D#;D9wCDIbrePc7! zNAA;l4QeqW%@RAZ;1CYCSMKJ!CSLG`X2Ml*z!}ZAX zYG_qvg0y2fYPUy$7E#_OXbhAn!p4WLXx=y~0ao76EqQ=bs9Yn-peW+p5v7{;DdKJo zxR88T7$|wvwH9$z-8dpOc{MpXI5zqGS@bnRe*_q=qS1hrLop&q=Mt_Y+U1G8N5pMV#;%lTF8A4Vse1UE;OIOvR zZFFt^7@GZq8Q8Ra#VSc**l)Fzv6Lt}M2hN0hhDoyOr9s!dqx?kCCUORSU2T!usN2q z5Ad@9Q?}4|;+>UbKKt)QI_pFMf)@doxO+#sV!SJwC$nPu5d-hs%>RP*edVVV=sjn( zO!)GC;_o|O^sZ=LRYlo8FWv8_)#aPToI*mQ5noZJ9Pk)S?l^WOL)eo2W`E!OXWQ%* zV0W1NaY7`T0)zg$x+kzely{&h8AUDxH?Ff#CI!tYR2*r6Y;M zk>wF7|CumPc51S~c+|POy9#`PQYpDKTL@*)`jI8&?;-Lr^TEW;+6@9ChtLp^MI?dcX$mXy--{fh%nzHz^a5_q5C7L9uU8{A5cuc#;3SrS z#C1vQ)!QWmry^}d+BDS^f|sEL!!7iXcz@J|+bw^Pb;rRSb=ZB5Hz=5W8)wY<`Ev@? zynVvwW*D({tc%PK(wvH7zqiM#XN|m?QM1XK|~*L)vS6aR9KcRy(RB`%vUl{Bz=E)L|u0x8Ce#; zI{hF`cYQ*k@H^@)s!zFjXb#YMi#zDRH`tbo@8OhB>0VtF3j-?D;xD@j)Z zS;4(6j@+NJnE6$}8~RHYieqp8JXE815st^>u}HZ|1kGd5cISl?9Gj}X}>OH z(psuad1)hcu|O{^S_>_TAWQwUUHYM^0yk_qMv)Eo$k`bf zv72TqGD@UHHR$sQT$}fShQOmB`YnDF5%?MubLN@J7B$&1!lpN42=|DlAr#=zjRlfy z=Pd+>o_Z)^BViE0lb`3Ui-1nEk(F!~YyU}2e3q^#)s+jwMc*;oG&#crB~6=7KQ@s7 zcUXK{u_8q^;+VKka}bxkDwg@o4lWAB$q)J}yaS=%r@T8jcT@Ma!~|0%&Dr_U?SI44 z5_A3NnshFYChmz3vaZf2+FkK!y=HZjutT3$WmA00Ux+^AqiXOW^mE^$J0~bNVrr%n zgejqpvvryRVlZ+?ID)GI#!ta^>>iA)lS z%!Zd$hI$CB!EOieZRE)sZNk%hmSQ%A1MLU^CJY>*&aS9CM~|~iJb7L4Wqt^s&#KdO zMrwk2YLA~|&yJa7orJa*q)g(ue*SFk1n)m*;!KgO@d4*T$)n7vg{QQC>G?XrW-sVFE8_g?B;m8(GYsE?OorP2OT;<F&|N6s^X)&Wm zG+q4E^8^MyfS}xXTe{m0rLwKskbnKb4=Wz;*r_*&mY~uX6JU`nYmh``brxz*>p6>z zbZaX}3PWtVtrhMxHUOwSvtjsB>$ww&CkGBe;)dw6IGUJiQH$*3+O#Mi`;Y5{F5ZN1 z*~G}(C@@Zp#9x(+ias{a&(!5tG*$y)ycKl9X(rQl90oJ#+1--odJ)5Xl1BilyI={#Z%Y~OyEs3-4s zFSwgK!D%13u;F&kx7)b9?dtJXyL1^r*Xq^0Q`~HM{Df@p2OBiKaB&1FRQ)t{E>^qc93RD=)suWD7aa`mUUiM#Mu>PhOAX1jCA29#Vh6J zbH=MEn6kiyjw_%bN?ubq6t98Ay%_=nn-CntYxU3^J;u*acT01R8qBl!dk=zUw+-Gd zX;Fe*SqoR`ekv-`vrGtE;^10#GE267{Lf>%{tQTcjl;)2kCPvP+NbVsPe*j%7-eA_WA6Cz+UQ_;+H5DlOBc zDz9?dIy%M)rOiofyAz@(5qcb9uzd7&`;wuj$|%V72fROxlb`>@$G|H*ODOt&1}DkJ zzQ;;Mc|Hyj4c4f59gh060Ps&L;cky_U zT|*J1EE2A$CwkXQ9g|6gC~97(S%J~Pz41pqh}QH5DysHU*S0)O5T|LIpI0>nH=R*633RPeO7;rg z@zf(qB!*S}-6&JRE~C;~A0_2DDyw_<(Ocqx7{Oa|Jq@A|sop5K7Y-2DR3`P52ZQ1k zNn<1@+mdEV%GxQ~)|x(nSR~qt#^S7)0#~=_XpC+n?+N=S6Px2sqHYk;QGCF;D zMscu_mfgK8;&*wat6S^tSXIQY4ViIe1VdD=diCbm<+}F$9Co__nW%3+RL8W))bXLS z5g{v@X!;7@})&2^s>KK-S)~yw1z1 z@4X}PbeleL!=g~b6Jx_bH0y{wGuT}7&;&>!mYdI&)T`-ra=@%-E`n#rsP6d-rP&hj(HNbshZGHEQ1hRdQ(Nxfel#|Et}RI^h&8Y6p8ii zL9_DN%n`1QH>O`ALC2BH>(b`L-9aua|MTuu6(cUHwmb(o0I%8bLb-6JJkdsobncx*8LxYOrEqVYMPY#f*7B4^LBABqxe-opyi_9tnvqIFT$9>%VPV*wg- zi3044^b;aSd7fL73X#Uth3jzuZ(x-0-TnLb{|*11R+oSzd*6Qd-G6-hr~Ci@=ZMM9 zSY~|fikPGNLC(^hm}|fzaP6~sXgMy#D3ZRdPlCR`Z+>>Ut}HJz6oW${kD04eF++)q+ibnN=&wR}dGh zJjbknf=6_z0v(^&|J>WcF<$$Dt#{=MDUQ^UxuehE-Miu4Vtw5tA41-4(#YnQU=y#3 z*^G>9F}fzIa^V!va~mCm5^w?vQv+XCS#h=!fZf%SW*M2^0KWJO#z*{Mx~_1-kyRXr zVEg2@{G7HIWqfzr=z{SSzd%=iB`68E= z18-Kj;?}5^Z+udiIe#|ryt0=CegM;4vZrJ5AzSC7!JCMu*>B3Asq;Ft*djyQs6gX4 z5N5n9GL~hyDZI|-VAu#Yt&{_v%++{CG(hzKgI%LIHch*NO@>5WWFc$MrIu|_VPd?! zY($db3p=&~IGUf*GJ`k8JK?5-+FNZjfS{o9{iIDw%bq5VTaR!ggNp*zKE zTtu~fo~PYKd`VJew`N zT3fP;I1{MT@3?pZL*0AgL1CDSJ9qkRszKVZ(L{>%?oQyG(P?TVH<*ph>l{p+#@c4G z49uQHS)^orLlg{H*-!+jY_sEm9i4eIt9fu|Cna0SY9XbPj z#aiDd##ydI$Uq0g!of})=whVxqG~&|eT_i+Y+7j@YTx4{@4fX`cuzb5 z@u2S+=tWh11XY2#x+ta>W|}s6;+P&}{J}>5G)J?jJOifTJ#sP(X1rB_*5!Gn;bH%i zj@kjM^hHltdlj>IL|C@64W2Mv3*QAgRB7&H-p&F;-)j|nBSBTRmizvQytnZa+sA!R zkH^gpR-Vs5XQ>48G)9y;+~?i9=CoRBI|E@S5*nDj`B==+gbYIll$pErTr5(AN^V+L zkciEHEE@A$URS_Tmic)KeAlM)B)vlH)e0~eo!YBn3hXJk)f5m>rOt`5;{C$WVd+I) z=VJlwr<_G}G)fROoGoVHbtl9T30p`-{nblIMl3_%%p}2Mw+>Xbv zVfLGsk*z~RLDkf0?#Qn=rnv)44PgIm^5GsPGWO`;leC4bNLlXs4{dUMT&PIk@wmy?xtkcEnK5D1i1L zy-_?5n{vj0D_>k=NwBaRVXwAMJ+P<}TQitv6^bt$BwF`)QWrYQ$So*Is*x~aW zWf#^!zRLf7kt6eUjhILu%3|Wsrc9NO7X)kqw(`ZyI+kp7QBn4cTe!Z2LCjL>8qE<( zkBM)!flWI-b!^ZoyZ&sFMej6<3{;-mlM{}?+VrTILv=>u(hfY=fbO&2?2!EVrzq-kO!e- zt0l8_6x#OC?Z+Kso2T2iIpL%@9sZqI_TXyt-*HFihe3-x8ge>jB@pA*Vtzyy6TSNa zJxLy;Ktem%$$@<>8s~}YsP2*EfX!ew*-UEVzM~|py?YX+jJXmPTA|@&D{rH&R$EG% zXQ4bnjR!WaH2(>N2?%8G>^IttHo8&Oal-%28Yx&qBg^4nM}aG`?>7!OL(7zi8Q~Vp ztrrhQEnC{tHoe4N${uwaXy}VPC7_}&_K?8Jy7(}?FL!%De36qky+68FEF~oi4NDJ5 zZgwBfuY-e_wHG7ri9N78zut9v5LJ8`9{o!a#x8V0TRJeyLF6H8^`GRyrO}`>ODpJk z6`oHG#GNLm7*SzHwTYpF(&t=f_$3TUb@0)KW*CGxwHe;%G$+k0fDgOMVY0r$JJkH&Ir<$)iuC z?X$^<7YGvT9Hhp9jdkC!5uGoMM&i%Di)vl9q$Bg>?15pLV!LsXoeyrgQsV17H(YDq zD!$FLs)pE1YJQjj9?`kv*u|sBcP3&gLyClN0ZlqP%@k|*F9Lw77s78TIDL$y2Kc{~ z-gZRo1e-n2E50af$NB5|G`n!9u7r#EHJK{cBj__Q3ZRd{4h~!cBJi(mhfs*&Ucz_< zlYz6op+%Olg1HEpL>CrSEVs4~b`{;h>juM!`*{C=p8uBoI5M|%p8^ygxw^%)XjWp(c&VKl5?Bp*1Z`st9Gz0Jn9X&mh`2s8BId z-5HpLf{h*g*&xc&xrGfmG)lqXwy?>}i>kaTYOhhnxpx4Hs5rRcKCS!7*+7mPEgzcY zP!3eG7nDHSAv5y6?8|96=s)9 zqtb5JsZf-Vej-!WJ$;DXScs=_vy8&7S|?sH1=4wwG0Vo6p}R+f5ZYyTD3Q-ZXM$bq z(4wk*nrF4+_TrolMJrZ{kN`xaJHCi%Cq_fvY_6c^)m_MsvO53MH_xuJ3&eRRkwglQ zkl>@664v^!FQ2>2TW?P}tBMTZ!(Z#X3Z{Gq3_hsgrTZEhhNkWn0j`?}ytdKeG3>HF zStQPJV6>}x+nRtJU_4V=8ZWv%cC&$tvNQUqYjI9Z_}V*Efgi>Y^Y2=wa`4w zQ8+={8*!)UMW?%@9kd=`CWbv1XJqX8-=*VDG!9ohp`PcHqeL_f45Tqf|H=dGsN(kh!Pe8= z_4)D+XN?2zU$sQ%R;@8#6O>D$3z=w7XllbWBVCp3VDMf1?u@;AmAp%wLxSC zK*6#m9LtHH279pxJ83`%9X+{oI!p;BqQ}z7-aGJd;I8kRJ+8`+eDAcyAXC3&2pw_L z<3&VoQ>F<%+>1k-up#Bz#yD(4Pf+#_EeIuI0{qa`n6U{Lh#+c^lUe|R+Dss8?UzM25a-M7i-RLTSk9st^xhZQLR>s z&el<9bqyicp4FV+!z_fuaJQ_@r)wnVott2V;GcC0mvKjNURsS5hnd>@v2^0*^KwB3 z`(zs+;CG%yG!qEsZz6?LsF~sA8VTtiiBCh_&LGsmtosR9I>fNhL6Cda1=TN3@Pwz5 z5fdIPkdzI2-~up`DoQf@ia^E3wGxA{+8#AV*~`!HY&oMZ(fnh~PB9)7uI%1_%`c`sivgXFq+ib2O}= z4vqv0P`akU9iWdXM2rDjKU_%aB990Hl7R6PL_--Gjp)%2YbKA|wK;+Lfxy5|AV@UK z)`Hd>>|y8g>B<_?U>BhN&OwTaR85Pk0vT4a z%CXB09y$d24{!qd^!AYNfcck*&04NRc0w>s14G?UUj}yI zRGK-ZMBxr=5Q^%>tLo^OX?zUG)2K?LfQIa)#2X`66iYZ%*Ru%|&$I6W(kah*qJem9 z7bp~OQ1J%i5UlPA73tYlyC>=$0^wL&gE`zBb0!}I=?1J?Taknlyt}K~s{8bTKwE%< z5Zse^TmO{wX&>S@?O|J-08v1$zn{ZnP9SPZ8;Vt>QlC0yJm{7)}TMh^p9h6Ny$^uofa_UKAOqX&n-OFSIP7 z2Sm^mOiWb4#`e2g4^SVrBrGk=YayY~j1LQqjK}_^QmyuT!sO3|o*h}pKxt}aVdb<$ z3Y(*27D$u!5)vo>9S9noV?ltYFr*04dELv0GqfBVYS8L#V?bmM_Us`jI<>ort7o8C zr;Q8Xg8A}v(v>gf?6ZA@+J}(h(#U1^0rMHx2l51gGU7e0urPMsy!jtZBp_y3A@* zj*;JV5p!+dhCUW)$*%&)4hGO5Ntq0(p=?^yE5R?wz?`wu4_LA0WQ=6{nI6UU66uRNx7Ny)i3WP26zqI#u(Q_`Yg5?Y~IH?D(gh@_*cEu5`u zYad~|gH?dx1aL{Na@ZaSW#v(@#BdlIj-2BrLpXYW`9rYMzx-hs5E9MetQ0lTY;f6M z{(y|%FMr^-!!LjEwc)^WcvB9=oENo&+#;m4Nr`KV{e$RHmK;+LKaeO2Qg{7-5i67GXBX&g3cyi zvgv5?!Hc&gX1ux+QfCcqw7e1ESO{mgm`;HkpXQcA=T$k*>)KH$=A=Wds)q`EsHpK- zk1OUK7y0PqBKUl(IZ&oGOWOFFmmvvfAIjeVrw_R+eB5~6B^me#GY-s&V@PQdqsT`* zSv-SEc$lsjGj>*-_MZAQNlfB~4>-O}5}EC#A&!|$djZN7a({>6?YN(9n&A|~Ko3M_ zEYc7B;UVyS^&!4S=z*{H=*j6?-kS&Jg^x;^0*gzq4`RER1M{qw7i+{cq^pRIn*;NT zZe6Mik2;K2o70hqcd(VilosxzM<=>F_?*~Q9Npp5c&C}732&R1DodbGea?v})%>{+ zqq2v$JtBNWHp@;LtR7{zT935nIUe?v75FEw6Ts6^>o_z|E{0}-r`+@WA{PK@+z&s< z^s`{wr+Q#J-tK9VcqYoEw)pWg{mabBw>%)PeO~bVamP@1N1(sX^l5;H zPDQ$SI=Pbozt970JYND0S|D|U)gApZ`@`T5M4g6*P0T5fDv0e!cE^hZ1bg($jPu{T z%VrnT{88Rq=lKjhh#o@1)2h6BK|VgOAO3YAM%t20`SbwQmTbI_H(x6`~O+ zNDX~goSzTOyIEOXVf<5UYyelc>%u#f68;U^NmS4O4zB>sH5f{jXA>;=6Pye1LxEtOOg#K@K|MXs6__gxV5j93gz8!VX#8yEe~7mXw{#?GIz#W3pUI4a ze*Dj}nBj%B4uan@^dq!{Z9gV2LITn)W<61tIn+H0R=DQ}U=G|^S>^>+!f1W)B5N*t zJ}s-py=bry#YQ!Ij}gQ;zF-w*3t_SqA{mQ%mFIh{q6)hd|Wn}bFekdSt0JASp;!yM+U2Gp= zSsF$!tHyfYibb{!k-(T%>~vo5pg`RmJK{M#(Y z5KKMI^@#rU;TRSr@zZnQn&nlk>XW@TUn#~yus{%L02(DlJ;@tU!dZ+_QD=V6T?hwA zUs$Q)hpZr-OE$Y$OtT8&N#Ya7WDQrG*+nbQll&b2v;t=^7pSkm;vuY(L0S#S@VKKx zZsX_Nbt|LmdW)7w@LN=4fYL$pMF!H%!Is0S)S2+cw4mG|H~UOx;o6JZ;NdtRiLH z#l!5CL;u}|A+rZzNB$?XiOubg%8?pDIrLv}DE>T9MX{ko!6&mxve-I2f*+T&4|&y? zUNtcP@Bj0E{&yef60f6vc;HsAFY_jQUA}qStNh8?K%)P-^nb2`qg2oAa%8})RI#;K zmmS|~WL7c*u&yG*+Vgn+I$_;hR*gX@3wAiDEz&p4*~-*82qE!XF@uempEqQ2&mp0v zA96epsA6MqA&C8bGMk7G=I+74!Tk*Wa}T54EeMqkz8#8C+`s(7iGLA^Uvt_=k@m48 z?aw0Z8&3P>7m;{qd-bPp4-O8_;6HzapU;2{;tRC71df=wgbuD4a-_VmGK&aw39L{hBj10?x2fxfTTTLvH=Xgdo7J%ZC)D=%ZG-DkIJ@~8ipA zY!fA^sz^z@KquY z)Z0rGb#w?&%~+fp4=Il8KG6N~-CfI_bw&o`ZcE)6-nnykU~KpFTr&9|nitRd(X-Zr zLtISrxHD&HW3D-6@g_QE;@nr|_x0dJQTN2MyGa&1Xf1Z*Z~cM0?*~TS*!B{JvnYP3 znV=Er8S6}HY# zB$Kh%hrO2N{qY*Dohr1C9Gg17AiW?y)CtM%E-;PsXXgLB7jgbS6jAScZPc`%CJ1$4 zwu_NkY8|Be(ciMdu-u@fkJ8qR!c4&n(@ve7xqE)PzV_mCN9XqyQZ)O~J*G$Ov1G{8 z+o7d@>>hs<%Hg@@;c{Rb8Ls33*HT$5sOl%6reEVTa+b@{f9*&AjdB(IMvpE{%)Vtk zAR(Wge}jYhX1Lm6O}_EH`lGZ9n(eqIZM{xzW~Z>_PCgg zKl;fy^MC#+QlX``c268lz3^;eJ_R%nS|ibm4@R4}eefenh6Bo^(?b`YT!jwEv@?>X1?2>11K0N;H=j1Qy@c2vOXiSbc z)WD|>kiXyn|FY8o@)zH;yTPHp<7&0{z4e0I`Do|WN-afeGg{LZX*5{5XS)*d0k5o5 z(@B2X+6i6{Ud0*K_SV)0Vxp~UTg59bIw*(#HaUQFAy5oJP*gDs0iuQ-}}N}DR5cP!+wNlt4hYIj@G z3dRt-+P&3iKm$7p$$dDkIT8uF#=e6zvcfy2T9A? zd&3(s4bE`vC@5^{yUwTQxKy`qr-fk<=HkUO3Wh0^pT{U1b*X-VZ=vyY(d5;h>YFw1 z+@^E4ewTHQ7H+LggAst>JR9e50HPI!$(Kz&o77~?N*$4!5<2~kSn(1kCJZAmJz*Ph zRKGtuCM(2TRVt>@n*TGC+1N!#n^y5x!KFAu|3c@of{Eey5bxJ zh;rm@_XhIY<8oS7BeVD4&d<;F7dW{DMtgXijT{<$KuZGJR%Ng=r;FhsG&1+Bf;gz# zU0F6EqvZ;l@Yk4dHMYBCB;df;$timYYb)n18~=8J$Els4AZ0IES3RzZc~e%RrgxMU zxk0}}n`%n#0SX3%qz28;EdmX<)2*6nqqP=N7CZ8@NL(o6RC;n-xof#vjGMCRjnBQt ztzOJ?84*r;H$-?^7FkuDu`QXDq9d6@oZ-puT2GnGqLrk{EK+TG>=a`7Ni2quagR~7 zEau1VMpgspML&}2GUlZ-hq3Gok48>0J zp09Y%VH51x7DSS0N~DT5MXG9ikCHdeSw-(y1lyF}K3*%Xk`?C~YDnLOyG8r2^a7^6 zRg)&Q!n6N7uS#}T0k>1>LDS1Z;hx|SfYT5g6Am`T910aF)P)~lZv=z5e{A_G-4|5{ zMYVLB(>vJoEGdTW1w8G8Kx)9r{m=`sr+az(wrVmA`$2LfqV{d~US!p=4Z(L&_)<{j zO8ouhD1S=|zX=$=b>P^hGJ`#u6O$`;+Y?qu_E5PdBGwq5DR)^hF~W-}}&!E!wV zS(9(lO$}RRIXP8JehF{lFuluZQ_St`Z9y`D`(GEmDcZzHVx3}zkSbkBsN~72rFG6I z!TB~*3Iq>=nf^v)w`(Et+ay~+FSBLy#8clUwO_)$4N?IJ*^SowqptfpIFj&0dO%Bk zJ}rUGQ5g>L4Ja&^gbLZ8&c`wWuB6&;MY^QlZ?}k!i!Y|^gGBpHY^;!L+SgoCs7-3B zY*tUfIWxT*>;_NMK5sR(mV|eD*IKqh8E29T(seymNDslaiBsa_Elg=&LB&UME;hRY71M}_-R>S`8sFrm~ zVTIhe=P2ig>Tp1h7Zqq*I;vx@sh~E3Hh4sJkpDNHtz8`(Lt8;bJ9!U#W8MD&ez%kS z+}s!sNN86M7lqvLtyp1AvJPH$wq+Gk`S>WSr9`lb_#BPUd z&hpz}n{c`pj!F?~M};H+)|Ek8zeCKrp*p*r;!1xKXHp>k?5I-+t#y^|gRaqvTsx{{ zp?HeD_Y%@>IEQ;#DG~mV21hnwF>`^)>N%^l;OQQ4e>BHQQJTC$UK;{|c>0r46g-%Rp7w*9N50J8f{Id{`FgkRR* zWD0>gbLx}r=q)><2fQ@<(k|VMpadui>4Ie>ae($?A zMuI*toUV$(&gCm=jr&J^Eg8d?XIFhADVF<2e5;#C!WLySd$->()<$LBd}-z^HhM?Z zv?lQ1&#Kk|_()Ff;?MUq@mD+xy$a8V(E=`i9CN9w(_8v#*+Ox^)XW z^Zolb1<&N9!F3LV!ym8vqY0hsbouu!p zHv@B3%-#;nRknOfK!b0UKNL&45TxGN(9-}e-f>@H?vY_QdwXJvQGuNAO&ApoFO*{T z7S&A79)cJ)2Pt88$Rd$hw2Vn?71QSJLP9hZX=VJC&1!8{At*;IU z#i2YWKxTWZ(xE&A@7KoKp4-c_7WE*hkIM>>iyY46(EM07JQ7&+0YQ3y05IQaF+r*s zw)PblPV2#iU7fn8gX_*OaPLn4^eD2&PT%C~Pvvt&b4C9@oR!gffTiu`P}^FsT)GA` z#(Nh-gPM;p1K_sYauo{*eJ%uXFJJ=(RBjQ8&3hof_vX;N2Qqz+)czh8`@KgGuA6Md z+E#LoULII-l7PD_^DPmxMBK%#CgYb1zHVjihda>Fo>K)xzn>zaY87pUfjxqX+PuH> z9)l6uJ&NcdXSsR5gkj$GamMKs>v74iC}H0$LHDx1PswfZ|KMclsa>lM4&eO7EXkvT zy5B1+Q_iNVzNo?O_hLp@HjXT@6}9UEaiDML@Scs|2$(f>D2v4irg-gKNB&oy&rMTh z$tr0D39g(Ln8_Z>G6oY0(TgUA4WIK%8)@JpHMs(gT&o?jb!?x+yo#0P?h z4E!f(S)8VLnTMcj(z!w_rsO6GbsyMLzhg?iD-a>Edp@iv+^HSgFh&tf( zU(NIK+}Pi+8SE+rxWU#0rDL67l)iFzih28Y9H*bw9X3Y7KVoYlN*SPQ({6FagtpyD zD{g4SnsEzIdqQSrEt&;Q-(co#)vjQzyl9#)WzEfQ0V%8PudVfUHYZg%iD8tXbNa9x znLQqctr)B{q@lKP9Bzq! zm+7pW9cbZ4Nj>0aS`aQ(8a{n=8*VKEr{ROQ7i$H4y~%7aa>#{h474GAk5#>Q;K@MfbDpx$Wbr|CV(U5GjRNGRS4Nw>-rtEinR2y6zBJRLioKO^j|CqKBg5}-yN7aM6764cB^eL z5v{h7vL3xG96WIOz~bC8F0*;SsV8?%&4~X_A6O6PbANcidU~XQ_|Vv0Fb$gPfcot3yt=^J!Y-&boHfBPS>JOK6h2D*kL; za&ULK>*}MM3>_g?Efz5D#Ok9Y&&G~DgGd@>olpAW&WjAP(#q-WC3P~2qUPMB42`a@ zq?WpM%TK5NKKv59UK*FQEGJ(OZC}Z3XSdbD9)Hp@@%qFPyq&nt-Bu88YJN2O7ouY* ztg&)!ZGt^2F>$W+uY1HOyK8$|dj4cf!7kYbo7=}*5Y{H)Z1RS3c2fyr1l8XcxK*ME z)}KyzhtkzhJ-ItbCC$JJ+m9|5mGF3CMZ0{OB|WG$M2z;ElVjjT48*~*u=dFc0!=EJ znpTD*2D#gUoP~lU+t`!#`kax01O_UBn8#xfb^8#Lo8?p+#Axd;;!OsV#=#Wd74-|! zXuQ}tP!ZppK*gu_F0%R< z3f*Is4;5#%x|phLGV&O|^Pf}|@@3IsXvte)VSX#-?T|5%n&ArqvS1`)0my>CI{;Z8 zw4p+5A=W|Qi1jC-w%GH54v2Yq%^f!f0G5ie5A~O~<^Vt{?)BmHaG#=6L!2ZPgI3(r za^GV1COuPI%nbM1&NVFv)iXfY3)6{#P|V(nrr&;{rr!?I$NnzRAP+jRK|X7VsRr4X zy7+r;SMI?G0?su>HvM+vIqbUTNmKA@t-Kqs?Uf6ppzj^QrdLrA8cRU@MKE&Wuq1>4 z4J#vn6ps_7<#*Wu-V#+J4sG8dGHwm0F#u*Q8<{xF_=f!*@Q!$t3C&#P5Fv(lA^nzS zwU{z9WV)#WvD^sn(BBS9Vhcco6v$*^mXAIKl)*8Rfz1q#iTU!tT=ybxXm{@Zz~E@- z6i)6Sud1>#PqXP1`c~W5@C<}K@Fu=2P%|;FATInkSM;-)v-&d74Mk12(=I{9Q!&f4 z$>b%>eLi`akI`ChSJZ^2eEss#b1>+Je>oK7)-lP^08k(w+$6)L4a`|q=l<7aSrvaT zXH7Qs2)5>$SSptXBjVcMX1z9#vWl2j!bz}}hu>qzjEDh>dQpmXxB$M@21m>)Q{@*~ zHJL(?Ku#?y@FL3CEZM)1A7zzOD?v%FA?=rP5+38H(lXUQ)}sz}+D=~N&7-V(gk^eX zS>mco#TSFA=GnBf2v?9>Cmb3_p8x95K*foxX#m_}ox{Ia75qV!C2y_12=xV_=LQsa z4#;W_SintFUJVe-Mp*ts%bpb6wufBin7b|zZ7`&r@J(ORSlx|@*~JYMd?&^c6n)$c zVtt`!n7;4RwV@gJ=h}u7*WFp_3T-czvOe3m>-tJ}&Go|dU1iY5rZ+UdII%p*RDK=X zS^iecf8t1u@b|zf^{yb`+f}yIaSZXYdSLFDQ5bttl}W%SxNuN-V-T%gWy_!Ozuzk= zwc1Qr{I=VMC3o};fQ*#k6)D?~!YHJw#OW*PpF7-5`xr}P=ZP-u zA5`RLTjVTJ#1eh!{tDWeCJNEomi(`6Md1u|gbVJP_nUkM25FB1Sngo=$C>s{rOQ|Q z>c!Eo+}h}9%p%KGwtOkKh3NWrbf81qvcCaH+)T;WYgX5bD+>9#sPhU##@6PVRZ}aJ z$xTWQ%m)F0K|e5`PgfAjZ-R!UEUL5k7=D59Ps-~R3q>FR6dL4n=3Zj~cinr}EA8BE?eI+gRZ{7Kz0oQ*~jc+2o zf$%nlNP_ve!Of#K4Byqq(KRe-^V)&4!&mABhH%E8Flre)JLk)RKl2b=_J&mj@*$+7 z?TO>nT}K0PQ_8NnCt1rm(ON-E%;1rNSQI0aNQ!i?|b{`rsM&$FP{BWb5s4o=kQKPT!uYw4rfwXK!5_4F*+({^+-&6@8<3fR>#3=!91Tda;g>K*8hJn}njcNmJ+%L`T z+ong&e*7qrae=KBn@=4*{k|^yHYmFq$Q`QBp?=KRU1l|(7!}80mF!|b*B?Jdr0J6c zZH0-LHFPI?I04HX)OVHVCNppkQ()eP{FkkozFwRiK(?(wAPD^-h5hi=8k;bW_)5TE z;d?BbOnxk@t88lD+9ce7tO9ureNo^)L;ePFsqo)x{x{(fRm{%8(CMWuJ22T5`R7;p zIi$uAWMHdK&7ki9=Nm4~19L!y9X6`>6sG>D0;|>n*Wl>NP3-d!g0}YE-`D1W@wN0p z6fLhlSJlc^bs6-+S9KXxwK__MTX%h1`UvZ;krk(1k8IcX&9&9njBFqF&1ImI!4LjM zT6YG8@KS=U9EZ-b>I?Y|F%LXqT|nZT%l@@QG7!u0B#7@0Cyo^=vO`UY7x#yMYG zHrMgj(iq4F26s|RkoUOD1}hlaE9ZfUg`5!TJ3Ne!I-rzYv_d|>u&2Xol+0uDrAQ9V zOJa9UBfCzQfIPsl%7F={mSPBLNDqkCvu&+By9eQlL1RI+QcfSs{6%=Pz5GKyD<_k^ zeoBcD4}6;rs{Zx+E$V}IEN2&YtphhX*4cV>UJEn0LI2oVx+xn7(=lh^nc{4MRvb>T*#*04r+~D->=a#SzQ9(9r-@2ivMf;~h|bs7;Q{AGzzR*x4iE?zW< zp0}L0fN!=h(o$B8$X5mf6IClerZfe48uH}^^0OtR=Au#QOh>9JW4s5^2&e7I1mr?Q zgMJ(X_eOH^r@pLbty)5o{M2^x*~GO{%ycXMhoJ6th^@l63r=6~@>G~Q5rv?`EMcvY zi?jgcP>7;BUMd}|*8CnT3H-7+U??2s%38LliT&ZS8SOXd!_P-5fLbwBoTZ*}5feqVH7iS9;Z zhevg@4$sT#NjARh_2k_qkq0+lYrYR*tdBH^vwV$rC?2qG(e z+TY6&wKYUzHBa1OCTL3M5wLE{&CQ@i3ANPT3}(WXR@y0JtztR5WlB@cW-fv{iRa=` zPVn@Q=?F3%9JB=Jnq_IxuJSN4yy`c%IWoGcsr9fz8UIL}GWlBBUTM>&>OucVe1X zVXzc5#oM-;dYn!3u!dKV*j)o#Yt^3+x5e`G3a?Hw?5^&VAy-j91TV|YEWUd>#0Q%z zdno(Do-$b^AKn7t8!s239R=JRY*5dF_m z^ZuY3l&D!`MJJ#~Jgy-N=RTibWvng8VDzD4whn%wUD%T9ELw7`Wku{n(;&ngf zKk5_A?KdKl!LcL?X*g8W1v$2b#faq>8~0Y&yuXrcoxF_*YqqE94+xW68)8#GonwwZ za;FD(`x4XnmL*Bb64_S!CdJc}dMqXaGN}t)g=3Pn$-n~2Se)bq(C@QpzFjx$Ad&IG z?jLznHZOq*CoSm8c9^S4xbt=(bo8`rJMbs@xSZs8ypT+asZM&A3SlB4wZP?shlahB z)@xQZ`B$m6b%CnM?LnbE(xt$bS$esx5EYp&_%vi+y9Z2DqlorA>AGg8W!AWb@GUZd zS(>O<9alO8Wr0<|!L<>B z1ee-C4StfC8U~_%K^ZuM;(Tf)3Tx`?YuS<{TtS?2=TYM#F;Mzd0YPi{?`-+$WMiB2 z^pRlHb)T3FXv$(Tu$63oH6Dg$+2IwGb{%iQ7e9A}g`btXe*~))gp?HJ_{64PLwgGQ zq<)G59JRUW=5}t~>hktlC#s@b6Hj$cQIeguBUjY{&$FALY~X+DDF~-#yvCz7rk4JiFZ` zq2@<17P~AalYAy~Bk?X~^<{D1P}K~`+`5`rq;0XZOp_r&>((r5Nl$GTJ=Ei=EMXSB zfld{T>KI*hGcRW(7ojOuJLV4V61mImdi@%$7h(||i@YblYE93LQW0V|*T^@`sQ>&L zSN+~w?gf?&q{;vwF48aEzKs?3wN5)w+1t`sL>ogq6@hus)Y~2>2lriMzznRxXC(w$ z;+$vsd07$G^1$nXcrqO|VcvdAG#;roQW<%mI4Y?L21m0Qnh{(TlgTt!-5r=&srq{b z{o^)-yM)*q3GJ`!({MO+BkF&epk_Nl520{_#|WL34?+|rT*?Q+e;ek@|6WIDUMHO; z&5^9u4DU&aJ(?~mBBbDQ2CUHh$k?}=qf$h zN^P1t86!2u>xX~c#sKf|(7gWXyPrm2#%L@HK73e>tzSSftD8KVI1ZH@37mPC*Z^$O z4#Ar=IQ`Pbomxr@@|8_p$y5p6Vt>hv5W#j@yB5`~vi_``_pq=5_l{8X2Utq5)s78& z4>KqXeY0xZlNCCDBviBW->iAZx1cryy~Sa+Ae%Ow4Y0R&7zEp;qoa`xtB1eZEl`&h zY-wE9JSETK57Prn)KHm5;^g1))#eInN#h_CHbu2)Xb^AXsvcfZ zDQhYT8G@p2Q}{wI=~Fa<|Gba=cDY~jA&ZY}lJ_Luv5{&bsSM#a%A*xY_C=NbR*?;B z6XGyx$+ve$HK>b-B3f8|y}HAlZ5GJ&F`9)XbY)3Ycla-3|1q4GV-epzr*A3J96*U** zC#5WDWu#p6fss$Pz`VfqzGY#Qb{Y1MS0B?)Yi?(k&#MLyf|4BstcoC9KW_DLQH>W< z_QTa=q1gb=5A&SNy{3>%;i%I2W5E)-aMBJ+iA z;b61LtAe`4BBVBd3it>CA|Y?WlfsH&I%uP9l~Mw_)+zL&b)|fed^!gU@Zyu_*;ziV zd;K^}r?p&dRbgaHufiy137C}4>KVBmou>0d8rRy^FREfP9P=y%t35^!9;G`=Z4mIw zS7x_DJmyZpo}>h-c&Hp{IBgXHA-KlBE9h_qb0~5yay=jg9+OBMt~q%5*awdc(_tM; z;ElXtxCI*;_2a#+wYq}A0+&1jyZ8fx<*3Z7&To_Se87)WRA zs(=Np z&oAVq=UfMj2zmU#dJ&ir%dgFYUIl+>;{A zX)*s>UNyxy}OQ;c4*R3u+dbq1_ zxPm!|D+Q>L?MKYZ|3ydK**yY3QT?;zfU_S7em0H3)zCExkNDxo5b!pwO9fxvw#7H5 z<6!M<_#z>qdkLWov6$u0V;ks{2ltk~mR)hMVxi&-?cC7fV-n=r!oxxe5<|rS3=Tp7 zy)Jvc58zuOeyt=ygu>TYA7G(yqbg~sjyC2?HO&%!u|&75Z)khGoEsR~$Q4?LLA;+! zcdpi0(Cx!>%Mp!EB1VV;&XN>kG6tnm%`0q!cuTbHW%%~yzc$5x&P{=f(^l6%|EA#K z`Mt5)uqn7eus2qpv?E!c-g&I5JBiB z;Lj!heS=ssbv0IdV^%h=Km_PEJ92Qm!4oJi+aZj2uA04PiNgF04t&G6Z>QaC{mA?AIkEc@l~-e5%0|i(1a7+}2)u>v+bBP#eI1_hITN)!j_KS{>Q&`{pkIs| zw=z;ru#ExV423EbKV2|~?4#u-@AhrcPN1m|r(n~-coCCBi%@XlxpXKs_N`)3bj--? z&C1!|^Qzq2fM63}imf!s=mPRoaG|-J$cJ93E?qu>lm60LQMYb&=3b(0e(Tf0<9)|? z)H*@r79xq*kkJFMtyFF)#_W?tigjw!jEUm9qA@UkP02%`}!|;{u};1F0bHV zKDhVifBn}#-TmXA{`J%9`{tXlzCZryn?K$C%fJ3PG*cFaN@*kI(AiSTJgww15_!Uh zVs;Vc54>2nRCjy7v_aq?xk1w%VMCIe6M!>Pet!_wF_LIjU(hk>#?MWf;lCzC{} zA#~rIHz_NHLcYeyMy*bVe@o4+AS!kLySf#Q3#%+gtxC?m0)k;<^g<=VdX7>qjMl|X z<)*cjDHLuHCqx({SaQN9A1;epW8aXCJQn(ZW(Mjrc0hp3r1&%}`!7U{S}^aYi_H$D zs9)5v6^C9(BAg$(r;#gvi`t zJHn|W)PnHyb#XLGOhb9hX{+^CU<(nOtz%iYTh-m?!j9ddJUiqucV5xEc;KU|K@Uf%?pZeTNUF0P zd~_l*nf<2upj|_mO|wrf?=TEZQBrOEl#f3&<b87U{2jJ+Zwl5qpyVHz^K#ZevPVZlOwhA(`MpKf zwprlKxwJ72ZQ>ds?6^81@Nj9vMNO9NC_?Oez;)k%co}n|=$EsEc1`=LJ)*h`T`BAO znZmW{s@ADkEG~1=VKAXq_p0<7)j6RZ@3Soa^FoI_`TOD~fKK#Wlrug?7z({82 z#f1oQukhmWV>e{{yKFL1G1;9jIxxW#MyDzGq z;-J4TfaG%pi)%6VA)JSf5lAVAvV#~>HJ?0d@~iMgb$DnVR=K%`hm)CdAJv*Zm`Hc@%?wIy_5p!?< zY+F0`cgt}3FHOY2N)=ZGtL7PQT05{{x2B?MkVT_$>4Qq-1A+oQC^KBaRI24t<2_PY zm{8P+0`aw^8DDLSC|nbfo=IIL(Y9__3g$JHi+U59R5hW2C#$_RgP6ZV{1C^d)@K87 zc;ZgK$Y*(#H90jkFem=FI;A+oeG;Lm2ZJwvUQ8jtf)vop*2FK)+UvnJiWg^C3w{}h z0~2q`em{i>=F8S))oj&1WbFBCTi3wwpIf!9CY=>@=^ogxy{MkVsV#mf!(Z4zf#%o+ zj2<^j;iKiQwAYt8S7)v=!c9NRL4-b^W-G=u&&-FcD)MFpD(WiFYPf%j*?78`aJ)yX z3gzq>0)$ggNdIWM062EQ`6|tOyz|}O5)O_P=wqjpRb^P`x>iqHORe!cd^_hum1Dce!T68D>*0;|v8b0J_T66wNgM zUL9BO*oWY?{}f2jZak0eIpj45ccj-w@~NSe@+zjXQtzJA7)7tqr#g-Y-+K6`&wZc@ z6mkO0J&+7$bAbx=B%Bw`%ksMJi3u7cUPN*R`extUz0-0pv|R~Nrzm4`B+#kH=#03JC!3wAxL6^|K2%%VfT9+~Xd@x0-#j0?e~|K{6^)F%G8h zctI)aE%0rQFo}NlPyC-kzI*wwfnpL=)j~zywaP ziYtw0!^xqeC3B4lOY(@$IJYKqTp-#9OOHu-f?H};Iw@}XPm;T^x* z!YA41K8o~tJ#sW7uL4v$@i8NBgn_A=Y5H2In(6nbF{1aC*R1ubW;*aftbyR^r8$51 zOUZLweoKkNS!>C9+r>$?;mzWCo0jKpy0q=_x#?Bxa!475 zl|y|KEQyhykCZ{r?>P_^h>APF%##!G?JIIhoq$}Bd+OF36P}jU^9Gli6Um0PKd_~) z^@jInul$~9cHL&lD{o<+Ml5*8EOrcaphTGm5vy`CE~lsbjQmt0;n70ZfmX)lG$0Zh zl+UJ!^ zcsoJ}v4OmE2jYbk%63Hs!JXp-b8Ch%Q@L4MYdwpcRm)h$72a?!5jNV!%juJ(n(oF7 z%nx>zdtPSK^QS(ieD>=%Of8(9NPCNBL(No1#0KRxn$LiMdofQ-L;TirsXdaA^tTd` zNRxT@;2Qq%XnVnFB)t`O7oR4`Jv?-=KkWt$Z9B;l;ZX_O%sM16Qk{QY1+G{WI>h!9 zRZ31s^DRqOTps%zr%Zf2e{1fj3qUb@(W@aR6#|?EaP3fV(`C|!UY{OvEdu;_At`dX z2Ig*iZ1MK;F4sWq&)8w~aW>!Bk;mB_f<-SHPj|k8@3Q*xr}Og~AxpaJ@mUAvPF&Of zEQ{I3Iv~>kXuQd*L~oqokNsQ28Z=e;TfTYrM80_bRE2~J1_SGD9{T_s1^S__{RZnN zCb*Zm6GE6JzD`j?b#=Jv+a@Hi8t!5x1zp1{W$LFj6>*ecva8fGEd2f?75*u5X zY7I2c-ee8NTN8P0qRM%OWyg zmxNeooP4kn6=MdqA&d6w)zw)!^_c^6OyVfSybo-L?H_Lk9j0zzGgdBxXMXIBYI_KL zb9>jooC#mhLKFfT2YHUVtFd>T0pO~gqOij4wc2}M1_y1dGJA3z%U z0iPjv`oSwCHrHj`6dfWNkWhIR2KozNpVBM`AFfBCF{67Gj3T?nc#Hc{s4Q#sVu`3s z_$#{py8f92pAkHO^sJ+?x6EO^mx%IdLgVJ?eD5XSR%?C2hxj<_fHi_1fSPAZR>j*@ z_X24#vT*|gWkIVXL~d~GC^@tAv}&s2x4gNmz(7!)j0E&AW5in)a+KsNgPvewKZ*yx zmVBIltH~LWZ#er-il7faS#n0ap07>5&XD!ichYk7$#NVa!nt!Q{mND&`NFp{clFjE zXuaCV+;KD6hJ=yse5#wOCtpSaA%zcjoakYTQCMn7n(O!M8=1hYk*?gw6iUN3dgV`3 z@I=g?ShJ4vLy~Vb=vxm34 z$c+n(Zb3b_cLq3xEgNN^ugeF5I!9vt`2ek&X`n|2Upf>%Wa9?hMsV*+7(P5k^yoVJ z-?@t%QS2X^Rvm$-JaA!f)=Tb?A?H4lGVO)VtSpOrF0TSFno90Gxi#Gj`MGP8xd(YQ z=ob3zgSbhzlIX@dVLlQ&scpOt(=y+($;VAT5mH|vPt=m%GPc={c`a`?S`RTH&Z32@ zu2e#}ir?7R4omRgq7ct+5XQ)V->hc+9c0K!8NQ1NWqmHhAULs0BJ8FPWyeA;%u`j) zd2&Fo@O`2zf98`f5GA;aGBCrgg}pQw{4D^^a|HLXg5@bZGeKpcZ^ToH$`P z90pohee2>-tU?rJLBO^E^W*( zKk1T#J;;a z-!l^#UGYh;}l9rd`(_JGVsNBum(@jjJ`kR{isyI|KNL4D!s#d(mW7zCm8yDeTT5t zeZ)o?TTKvv`#DDGVS{okg)~>7&i@f?kf}b~MWC@|d;wR^;~D-3(2hR)s^u^U?uJ)6 za+TNCs(pbWH^G+OZer`>i`E|QtiDX!#%h}p8S&t9m)X$5$$!Gbb zmk;4J!ZFo0a++}FqB}KpE1On%Hd&#gc9l=FrudM1F0q)IqS29Gq%SyKSK-de0jw?` zt~66jy(Dv$t8!82fYph1Ezy^9(dYGT%)5ENbvl(gZi+}D)-Hq z{qupz%*dR@F?6ICk~Uo0?2GhTiIY2Kchj1N;uJT-icCatAA@BF0a2Rfc9HW$v!{C0 zG66dYlEjX~)$k&$V1y6C6uZ)vTjL%EvaqjYwNanNZ71$JhQd5IyOp(waTn<&+4X}(|3Plap4LnM3k4~aB-0GY2M`Old2zVN*1t_$v_S<(+GFf z)J={If6gr$J36%IL2vsSIKpaSYkGZI)Fz+7Va87U#krJ+IF@XDnawWp+VnmY8E~OA zJ?yH}=h{Te^{NK$p~`EpnX2j0k97?3-LV5A@1Os8@6R4gZwH9kB)NR*`eU+y{E^JD zSQ-RzAa`O1Zjd7|NJCJ$#(~_TWRYE+nvz$676BjlHCGAdWfUhKVh`X8#DgmAJez;| z*FXKm;r7bO+-34;GE(?4{3-MZ64T@wrw51tMAUvmh<;e*p}Dx|%}_pMFgrdjl5nUI z8X-UZ6&9hT_7PdXb81Eg9(!bPWm7E>kgC7||KnN8iP!9Pb@$GlI|K0^$~=f4iPJ#u zWFKp206+(QFAq3AIxZq#YJww^_n^cq3mz-u!ev#!R*c_Xw8cx+Pk;hUVpJ&A5KV<` zW@IRv7IjcDtS`&!?dp=@UHpT>O)g)sD!wOQvM$XY1MC9kX9r_tq2~ZFkBI4xG-u^j z6r{xC%P-j|@|!y@k;P815&;{b3EE|lpH~NkPQrd6G?0$JqkXd&2yMYOub9h2ui^LDC}~x0L@mxlt*Td z-p5?o9S?+s>c9vkHpjbJ)cGT6`lk#5(H&8pdj94K4eL4IJBPWe!FGpN*}T`oppD9s zM~E<3)Et6&Lxu3Er^dy|1r7(Te-zg!?1q($7F!yMuiC^j4&mz!?nZ7|POzVNVw{pz zBe1M=v_CT3pbnrDX1B&hBQs8XCORIOTLfE9=VFkDsoJ%N1ALs#W7})v=vZe)tM+t8 zBKSBvI{?ImU@PeCkkZx{KFE4vRh%`7OuKZZ!`}q81P6$ify8u5Q*~j&4M6Hxvc+ay zTCG#Yq`|r}&Qvy9RLE~bT}tk~QMfhn&83W+U46;~d7x<-PoYN`wG-HFfU6})N>nVP zuSh#J zaaGKlvhw%wJ4(th#6fSCU6C^N7W_5DcVqo?(OmZS%GsVZt&Fbpwn|R+^ewPAz}Obp zVY3JLa(kyk!dA;`Di`)!15@9i8q5dQm}4{)QgnSHz_dlNy+W5Fc<26{XTSZB&DkWr z^_gBT&amCRogdkxbfw0~B1W2g%D1&mwoh!uqetdDtuHQYaLWfb=CxU_vN@PACcb^j zTO4Y;u(kDN8}uUQ4@WV+`wmZ1JGr{CqfeS4qO0x~Y4q$#KW36U8E!+djqEdKZw4TK zQ@4k^-b0QNzSH@_3XTQ$VEW^oJMsiQTRB3%sPYUR)6HczvwUX{9$0;RF4tEXh6TaT zH0Qm0@HH_vFUv)f`w8Mha1a08+v$K31Am7{GbQ^ujgO3nv*IeF1x%a;nfv;Ac=ic= z`duOD0X+>u34+?RsDE5cr$1GH1;!74KCG&2HE{Ah(tN=O^3v&Q3;G-ax07zcH5Y<;(*4D zHX6= zmK1ht(3@Wf#kl}FCj}BPOkzDoq+r(}ZY81@M8V2u!i;eF3LS~zLVuMvLR3dC0vh^@ zqH^6y#LmKMt#aF0bfAGpJ_}7dXh!p?%?}}2cn*}LDM!Tpd^)_$YTP8fe&QWIFJVRU z>5ymp1<$T>H-ljUy8t#>LnT5&8)HaaiNyVViucrJl7W_PHoz7Q0&GAlkWwrto`+ut z#MXB@FMfLU?Dez1J$d)+$EVMJeD?b7QMh3Tc2rN?Hu+Dq1KF<~H{nIj){pEY zAIZT$ZIHYUdurCKr*-VzJ2BtNX$*|9^aM|o)Je}F_IDfmD-1}iibgZp&fJQ59&b%Y*Akdb+<~ejxEUh*-zTO5URnT)pb6k9@>0v zR$dWoNEJ16IcOeAVk&!-Ul zWCeF7%cH%q-B)YK$5wXefDTI$78z2RikrBhsz1^{C#P#JS)AJfV9iwn%^q;SKr{rL z-YYCZ4fOgT`ME47RJ&b1W@OxIV%{IA-nv&eRcN$8VHSJrz z@J4Q|G;n>Ao#7s?`Scd1VqPrY7Ohm)(-&fV89an1{*7^qkYQtPhDjr&ii^Bql0Xwg&J_xalsgq=89J$( zT*R|-vI3i_5+Ak=NgrJqoihS~SO+2_tFM`?v3p!Umi3_Czr^Q;Yq9@&E9^6CuqYmcDkWYxx9wtPJ@;sZ>3W&^d*n_}N34oO&P z?c&4-Y&emQRvMh{yp$51+4p2hZ9MYRiSA$Y4Xb+;%`|crYL(rka_P`=12Xt3>8}9~ z1o;1cSRufa_sv&E(dMgpHbyKbTS$HV0Yd>jLbnNRgBMSL>n~_|%E^jX5`ws}`oI7r z4J&?lP?LO~&nDz=;Wwpx$yq{mHje>_BI?v?^T7L-2_QMUTcuSnSiHu`N8wz@8|15? zFJht- zx@%3uP#*2@rQOlsU77BPukvC3fc3%Kl5;hxY3J>9f7pfD-IX;oCuDVes{B-8UUz`(1xlKl#wp7Non7EfY zdVrysT1jv<33BDkPm%7E%PV$N+X7ooCbfhia1=NAa5Ay?t?L;|`}hu)F4LBERWXlZ zM~Df$mamFg{+7HxnQ-1NxbS$}gH}?*+3m_YFr` zzO??jqKc@F0DaegVBKCkurjZIESslA14?rm+|rsN(IB0*bUfN6!|98`I#xBSa(O}F zZ+2K#X)gpS1Ppn}-nPd!N=*nRLp9&$2g0?A!jiCMPt}W#l3eitSA4(~OMKEqbuD!9 zM$v_uvVmCPiaFq~Zmh1{5`bKL z>_k~PL_qVvuE)quU`VZ4^4eiIMm3A5L#ovMV=-2@An7V(%YI-xlX0SEKV6}mi1LJQ zJTG#);Mbn>N=NqH$pS8l4-6B*u{hNG&ymnWTe`P#);mdQ@yFcMOKVPVSfVzV>Tt4wxPzn(NvKP^x#W zp-AOnx=i=|ZBGt)V6U5pv&k#Jeusx9ucyVVIhYhR*a95P@?~>ig?;CFb%0Ck#+|xQ z;>`?qha133Tz1@gbgziAd}oN_2gfEvlTXwmv-iZM6wTLa^Uj%;WAaDwyT*B@oUv|o z0{T?Hmx@`@6f#r{x}m_A4_9RI;RG=7Ln20m@|Q=>0+h5D0S&vNe3s~g++Az~Bkwb? zbyLot+gLa+?fVZFno{ZSmzJjA!tQAz9Jl03j>I9Gz?hGUcWe(`XCw9sn*SgS36ms0Cgsn** z>=!v1)#j5oUb@NnG$|qHmI5|0#w;Qr>i+{LXIcuGlRMcd(?}Ml`M0#uRsO&|Cn^~g zbfk*dER5mQatNZ&6x$8bS%pqvXYO^HIkj!GTtJH*q;v!m2_C#Qoz6XXi@ zWB**KuwbjB-aM;vvc=-1Y`j9F)-5Y@C0Ec!I_L807gl1ER`VQf0`be9dxPpeTGOq^ zJPbb|49S5_EAp}hSi!;0=KQBsH6)U(Vz=Yd&^0aHi(P{coO4$_w23|YM<1PDeDSrn zL9)pB_Ny~QIy4Wf3v?PBnVyqc8WNJVi>FR^k~tLr~_Px(9jRIE;~ zTp)0hJEwtL89O$S(n`eS){&G|ZYzW5q7V2F?Y}Jz7SPuSFarceN%(t+W?Hz-dENFB zfhee#c44ty;CA=+QrL@_7xT2%gkMu-#XuQ4)U}LSCa~aeSyI*0oSf)Vr$-y$WOyKC zqKgNOri~p53l5*{%0@*|p(tn)$0JKbA%i||g!ub^7{&XyHc40uP^PmWDV}u;R=EtfL5_H78o!jj~&dMDDU0>{%OfTI-dE! zW|6a*cQdn@0!OoTc)IFSZtK(4X)iwYU?!=%I9|`g1Z+ZPbLM2sp+1{^0B>LCk&c!} zC7SP>>!P`I{1fu5)x`p>naRlM*|{%g?Va8`uh931Na3Tq7TD6nxpLT|LuJ47G9Q=K za$~L+^SlyqWB72(#ziA--U$~iLt`-+tDDl5wW>Mxp3W*48EUtD z9B1Rpd?MU@+A_)w9`)p3vW*q|i`}3t-|_sVchGrpp)em5o8@w7^gjx^mo*s~^0u{N z{o9fsJr~)UqvM-9CEGI4q1X1+$^MgHSDjy%t;O0tI9s6PSF5g1FBAxP-gJI_oA?Tb z1wVcF)5!eo8&IJBmJ=oeqcDND0&GDLLA-y57dc*b_4@&y=xlyLNB#TYqOae3%#zuJ zKRZ66eytc2>1-sa)0Fk#0Fya`Up%jt*QHxmNrQa5}YpP*OjQ9&Q$cMzqg9Y*ZI;7^Gb=1cL1b>3K652j!E z-~EVt6Ei%_XFwJcl&mPei}_7^g>Kj>ymSz zvGXd=|DN}J!~GUR{-DR(MIVr}m*UDDiGBQNZIF5)?Ii_xelpYw5j4OcarN{S2LSe} zC_NfmH^j7C^Uc`vRB|&Zb2cxW0{PHZ%+j7Hv}ZeQ1${>;$LcNXZ8q2F&v9- z76JpbLlU>VO;GY%w&T$vTrneVqitWh`NVR5VEumRDTX-$s(IwD`rzdf(ht|sCgpZ= zzxMg}1|}idKs9b16p>T4A*pZC-EMN%wwsET6XsXCg`SgJtKeFy79GNj1~)P%r$I2W zI!MDsgS0Tjn1lNnmvg*Ywi2wn!rE6Tv`^E7)3I>Wx?3%LJV)E6zo}U!*KOLFrd!z1 z02|5eJ}fU1NRP@3ZkSfclgU{E9wj2+Fh(sG29aO$d_O(4kBFTvC@Pg6cn}tSx9ZQgtyoUdZr9a@zJI|>i(2}G z+vogK3yJ}5ac^x1b%Fd9&Py*%WloGBr3z}55cEm1+W4eaS@bK(&9(Tb-$$t&>Sg4Y z3-(%zltJMJw7DJAfHwIZD}5rKXt6Jx3X2*ElDBoFgK?br#S`sltc4UJ(*p$RY6tOE}M-e@4%`0G` z4u&DzjyqQGOKxhzZ|EJHa0OdiSO+pveg24F8{{-$Qn$D!NNE)^N+Jn@_=I1W02dC7 zYj%+%N{2!a{z5{HuA?5#QjglY;qaA!$MSd;8`Z^mv*PPG1h)W*J=RzWTt>thmd}87 zOW@=%XrBroKE#6I%v;=GP5TOyFOl<3(O z-}p!k>Ih12TTTkDZQ)Iw6RiWMu_~(pH3?$hdk@>zWX}Q7Q|?vbqLq z@SF9(_~2{S++5b+jpdJ1Ht>PSj_h%RR>LaKv>h)EsnxhQs7%@U`qm?Yb4ml3edzoH zM7C9&ZDq5$$7RbFbsO~VKt(AJ#y4E*80F#TmH5mqCEmtUe7j_9Jz>f@kTHEg_b_tP zrCKG`gZQ{=4PBm8X(i6`F8R4X8U55n0^5Z2e8@Kdk+dj#l)!x9YeI^gL6=$0RGi-M zlRWWmka9*w(lC#7#8)m|LF*Ja381 zVSk4y|Lh8d-?hVZ9Yqhbu ztnrOm-GiIIc?+SCw9AL&Ou8)gjalBsI^IZ_HmG)a*ZSbSlGtPXet=2Dtx+2r#q_>$ z!3@pnE?^mz7AOHSh_ew|T-}Q-<@xK^^z|U|HI7MOdv6^Q6QkH~AH_@Z^T%O8h{1#V z+*ugLA{a(f&f_s0bdDi4LJ{(9`8D>i1vzPprMu?_zscR9=Q`3)S-*DrWT=L$x&0$+`c@v?Hym>wSAHp19x?b+S5i@zqb7ZIauwG{{lLWPG-KRY+ivl`^MlZm;)%)s#ixVrB~ z2ma!g(syK(VHpvz9riM8>OxF(YZNdi!g67Yy->@C=S>RORS6;73X9z+sCb_%m){fro?qGRri%M#w`gGpaPv_?Z66^+IzD*(a5W-2EeBcWbfWXL^ zSc*}+#rp_%0k^15NIMTI$V_x#0ww(9{FMdc{S}G)vsrD?FDR7I?33&hl|a8Uctb z0>SpgjypVb<;c03VO+~|LlFi{58xj2Y=XdbkL zaXwvH2vjRGEo$?vpJl{1^08{feQ~vzHpTzSS6-5IwCRfJDB>3ik1RpD7W?*%{o`$4 z5Bs|+yY|Cw@3=qAq$f*jr)75S%ks&cPBEXzK0xWPmT%yIb+>&{k92*mA_{ zp#oH`I5gQ?m3lq$@wsLC<;b6`>Vv&2(mgVanmm8^}~nbGoS)f|NA1V^7fh9 z;w0*t_-*HqNHRT#zz(;~BT!-MTt**1b3Ws@J4PRXI6JtrKa<{UA(*Ki6O|<+lj4$+ z3;ijjzdSX#aqz;*rPPb3m#g0u=z)Rde7ry}ua=!mDYNZUKnNXBueU+wfY`lhS+oGU zBpgqEw=1YYF}h$87)ImspC2IGh%iXo0Yp*e40&TbYhI+){)2#Ke0u@SYCzB1w_DfiRtiJLWmZZRg$sI!xS$#jG(-&*Up?5&9XUn# zJn$1_X61EkwpWndo7*AxKM_}8F!YMbw) z@Uiq9!@wO(i{ElGHlyGQ`6Qo6HZWRX34g7)K2kC7B6&KJ&->uy6e!Kn5t_U`*MTtd zS6b9xX;EdbkIb*;TiWerfB#oC2tBQ2CVTShX>dss$SX9H%`8dbQ-UHIS+rcdYn6;- zhYLcDC<#OxlR$V;2Vk_+V~3!W+|X7IwPjCTQx9WcCUv$rv!1qo;~jButgZwa1HL<_ z8D9ocOe(ktw(;4(M`+U^`jysR#CZ60nRr~@|5O?a>Q=0>NQ)3O6V%l5ps4T8nh%{SI*S7L@=p)9y9kw?gAB*FMYYV>vL$ zgU>gaR)_|_oE?Y{svILQb}&21*HODbGnQC|qPPTHjp{}G{zh2&@&nlM5Lg~h!buDVzl0IJ^eNb2N{@~M^Dy$IHXa5|HbxET?%kTbtL_ zB3-`9XI3A{N6s~hk|8xh-MDp2dfbEpUJwI(IgcWEgn4ADpk3h~#EB8QOWOFp`#cR~ zlHw|pHWlnh;K|OZG^`tepf`z$=Qd;`t6Prjqfo>VCgKl8rJy%>a`*1xlgUMnaZ4av zsX@`shrC*u`U)bZ(To)6_gk8Jmd#y=8Y89@B`?_-aNInD-iqE>aamhG_(ZkVF%%xO-xZ)S z16_a=o8S}PeF`KIGKj*kQQ`v|ud9yw*~B2}2G$D$;uu&(w0$KJcY z$8l5%!~aT!&6An2M zWFZ#_fenUUk<=)@>z+fvcN2!E9>}VNDpz6-EA}Xh%A+fX$5b{SmbXBMyV{^@?VwvOZ~N-j`r^1% zR#+=1Rbk;;$9v-eXzlP>$5M(tfiNB zbH#eA!Lo|5b;?PbFHcJuRCt>{kGQsk84N+26%Q<_&3NozdqJyg)Zv>rY3nWhJ)j4#ScNDwni%?eYrh}HnVhx)*Ei_Mgo+9`bu~n2}C3P9q7d9o3 zGG@%Bu~rHJMV%w6xYwdJ27ua0p>lw({*|Mk8cgQlapej!!a#Gv8J9y9g$U1^wsMariaM5f2qd<d1fq1#Rz>tcz*uk2&;mhE)Q-j=I+~TREP*J zsU#HWY|{m=VGM0e*W!&%RV?>1Yeh8uj#AMH1GreRf;mg3DfbIjqy$T)^wMny%}_h` z#=XRVf)Ce%^-xodkV+)Qz11}h7b_;=$Y8Ko83|H<2C2+(RQp^+#6rxOupPFS!vtdh z1fetaQ#ZM>E?vseIR)CRNX0{lc(DIy=YlL#leIcpy zpm7b5@dU%~`Ncjz*AwD&60S#aFKunPgZMkA&7O%($n%h&LSFlMPZVk#4TN>ehc!qT zPFn7E+)Kl_=c}5biK!JT|A4P+8LpdA+9H{m-@Aw6US^}PCXTJvL=W->OV^DW7o2(- zWif`@#ZpA@XqVFrR6FZID>AKh{R)LWm60hDvxi(Am#I)A`MmUeWR)UV6c0V*ZRGH- zcB_h0rQmdsq+zoh)sQ8upw3VyJ5b<#4iCqHnU(wK7(b7a%%#QGo*t%ZH%Djnc$_>L zH^Z_KrLmR@Q?nZKlGhI;;d+>)+{aGlt&uOvg^6(uyO^UzInAHD*8AmAq&(GRdm!ot z@}r_M?#(+)h#PV|{lx7U5jNO~SrVo=F# z5EQvGeZqJ2B6=*aI4hj#XqZ(6V+GtIF|6pC z>f6%M=ZtGGGn>1z^sF`?WhUH-vuI`ObgQ=-b<(oRF-L@IMW<%}x5e7FW-&L)tky8T$0$05G#zi@otzp5CijhyEo=U3-pN_NGCiS4^b~O8h zeA5MDoGw(wMhLP_uLXQn(CUHYg5h|W!8Piz0@6xWFOq6Hz!a;74>;Q+LeWGod$-?JK$f~9pe z0x3Pv4w9U|5+CZK(`&WlLxsP(C*6u~O4gK?vB}2w(l;dL8fiLE zewlihefGi!oq5bT@GVa>(}UwJXeMAh*T%&Wa~X6-CG80YIIrGo#-bBo)WxIf5pxJL z&9#ScU1)WFs?u|s=#3iYLefoSeDSy~@?k^{MlJ7YYd;&GbyI!JD!68C*h@z)8JfLBK6+$os%rd*Q|z%625ESzm;FDzAj#ZCGA@1`2->2c-Y{PRVG5`&E-sOlEy!o$IN9$53E(Z{~hrYRaWN zdLzjcsP$Z>Cl75p1A$y-^5)Eyz|XYgIS@LwGx<|`UiUv0# z)}+Bm3X;*#8OuCW31^+higc>cETL3Iu<>HfqeSD`8VLWm7)*c2u3S>#!?MX38;><9 z=?_YtYlQsW!M_5c9r0cWTCFX4D@R7-a6t?I5bLjQAH0H1LyF-(3+Z8T6SMZEMJfmP zmFicbHuB(S8$m0ij!L!KWFt;O{GVD1FKSPv;QK7U-L`5?R>}5#DmhBSsPeMXeFJh0 z)lVsz$s|Bk1UG0l=U2|6ce9w4A>AOB1{)@uavht#XeBFe%YIu_;x7p{B-_s`#HJ^MlL#!=8(i^9)-g3> z;pL2~#HZ`Xf&J=KGS{RbjGjHKAh!}Fsi~z)%7#-bIHVbcAoieLq@t-Dy}G)w^5r2^lzB-$^87e7OJ#oP*Fn3cv5R$C z+!w!H%SMdw1Odsk8RdqwB z8lR#oM&imMo3=JIVas8YlQ&=Wz7@B0A3QNC|9yIFbT{|q&~y#HEJ$d<3k&Qa9?t*| zpRfOCwzWx$&uWO3k?NiDC;f-E#v)}PaUW55S}O>r8MdidScg>ia5B_K*8_lUi8{Kv za4Id*l<_H7xmu`Q2{jWMp*mdCJfx$a^B*08G5r;;U@eb1j@K?|M9YS_ShA{Jz1X6t z`dny|>eNXdg-=D2qx3k8P|mx8k$^d@!8Ic3lL^EeMxgD>PvI11P|c&xQK=bPSLVyC zOQBDwwNb8!N^1&w=o3Kla>e7e+fnBz9R?(N^6x%F&$$#_#d@8lK@oT)LQ8DIzkM?5 zJPBDDr77O7*v)DO12h@=0VJa2WHW!jjLO=P?Wn`fCfjt>NDtp`6l{7Ho8hd`N``Hy z&vw+|6oFv2gH4X^}-(9dOZp^fSrOwCnD`FL(lPwPJV{WX8puhHjR-Lb+C+TI`|1AQg4(fn%R_ z&(_!r+uayZ7p32bljwVKCktAZ0v25q6Vys=1PK-p?FL!29JQiss|rrKS=0zxLh%{` zF9IQrL}XHhk3wU&Qy%5`#p!61w%h}r$38EhNpUVE2MX{8z(PB;fUUSeB3Mn(u4sUR zPz2r_;A;^`K3qT~F(?JX1P8vZxE8S9L9Yd?#bgfZ4<%HoL0|}5=R1-vKemW@bD8|! z@U|y|lcKIqyBgBbuo1O`R$20$6S+eG8SmWlC2KD^pc`FQnmyn%Kxs@Vm>lE+Wi8vRfKC3SbF?~4l2gF7J1C~W#za33 z$&<~ z)UH_E39JPv6H=aRV+1W zPN!Qz1AO(DQsgA&I?X48%_p|L8E!!acL>(aV$ga9V7@FIL>tg(4PsBqiWSJJl%14P zL}4#cCu?b~1PMss_1p;)S>{;YpQx&nTa?l#h+s3KBJ|TWxPVuwQ51JhDQi1if}Y30 zCKY4Oze=;Pi`TdmZ0ZPK9s#&cC*aD0qmEyK4-AmCEL?@O3N$)sE+Iod0qX)lNA1#c57nO&}LJb0VxL^`v3<*xglQ=B=%NZIrc%&wd z#O-b`3sJWRiNF*9$kd4=C*K))%tX*yjgu%_Yik(NlOZ=mnFo;m?&(`o?rn5oj7V#& zVZeP#tQqF|#=l~+8p133RC_#-e>?a<1O!s2k$w9Jxjgk2e0y4`j0r@X15Km4mftOTGlt199l|A1BP^xD*P zM)P)0gj;c^X>F60R!kAu6fY|cVPZL?C~X1ZD$LJdvu~;GG$xcR*$AT+ zVR}-nK}A)XSZT#^QU;jprB;|5P>0Og=#d%s37xCC3B3c+OQ~77*$BgC3XM-HSm0!5 zk~>E-dNRK`Oy~Rb+Ywu&Ze)UC1Wp6}@p@)csLb?INPnYw2UX|^L>8YtHYgLbc6gORm z)zwNDEDex_6z7ZXvmwQk*?JDPzjM+3}MGCF0fD#;FC})W8zn<_HjcC5)-q{olxcbTR*K7(}lvr zVHy`Cbobw<`DV6a31TSJSdiDYVwa*09`6(~_Z}b#?_tVe9;#cUK_Q(`xqzf0#gg|r zS=1u&QYXll^&z;jfoqbbuZZa&TS=ELq06H z2c64`wFx%;Z4~GDls2!}H;`?7<2*k)-pJvAW)o>(u?oBnAN1YWT?OEv(_DzB_V34> zh-WWGUDZ#{`eS&M4rKd9Sqw$FC^e@DFS+z0mcX_WxbTz1@TCW}Up!^5_KF98Qfx{> zNc_4UqD~$&#h^+?n@qpY^~stolY5GE!>-C%s)?(ruiV~&$K&svp`9=;BTu+}M>N=U zViwFMWWpE7@S4;(nD#)GpW2J*n85m$%S|3D3TF&2+iThYg)h#?N;-W@7nB6(gQ3*N zW%ePL*b%{SSsS3L&`26}%1O|KY|M1O#VP*AP}Hf~)D+iM=%lJswXZ%Z_Hj+XK2a_~ zrU9}N@N}!(3;=v6YcxqCtE#$OL*0E&pw1bU-k|gMJN(>7=NdFqc-(46wF^7VduTP> zm1kt@u+!YL8&I)F3Q&|VZAG1Iq8X*&89IR}U_0?duLGLXiS-~!Kd;{kw9NS}N(&&XxhqkZF?5iX@43+YZj=n{(ZQ6HH0lFzKCEJX-D_ z))zr8uZexK|pfZUHoX)V5P_vuAf6NOu@DE~4L5*~2uQ z>SnogZru8uCk?=z5`E|<;YyfHATYkMrHTRjtZG#Z?sM5AI|u4(Ydfko3`ts_&LuNF z?@3{rSn5uVF8;-S<}M`}F@k-FBuOiablgefR#@8zl1}*o>WR|YgWKdc((DtmY6^B; zJh*Kpyn#_PadB?Ilu6o@!a3y{7IQ9I87LMlv%qPgWRzeAw=YDC}T71U886wTOU~-fQLc0 zC_*zUxT`c(6=F5DEQ7F;JP$UG}twp-`2TZ7;Kgg*gKD}pLB|n-Vbr&slKU=ho+ne z-0O7}X@*8f{V^E&@CDrT41{_bnCvK8T~gQEsAdck`i9BEF8e^ynX0*rdl0ImKOmDQ z>zOQd(!FX)KPXpB#!D?R$ggbII6k>Ex(ul9kUd3tLVs?_wyc3I^XeFTUy@B@n^#`w zq=%I`AHA-mw#mI(;hf~2hZA**;TR2ob75qAzAbXDq9Yvf(5~$tD7?yzavc9tk5jZ# zI;BOS6q-RTLzfdYCeUPQD(7lYz(xtFeFbbRC5!+I)EY`M05GqA(f+TG2$wSc9R>-E4}94 zxb)F5ZI`}bUW0ac;V6BI)}^?k_JvW&Fx@XMh-!f?Ne0-JbUGJHwTEDk@j^P7D5W(F zsFYT+^;BNGG9QBAsHEv>esLU$+ih?r_Ba?DtFQ4Mdr*LPaPuegB&E_C+ zA2g$O*hzT`Awwv|7<{!%@ocn=vp%N5U#Q8_O|q2lR<`XKC;mip7hDVKIp8_P=$NWe z-j1tC`Ey5A09HV$zsj!-RTzmUjbD(@)e25I;ZR1Hm8h9CGSeedRSnm!NQCpKxE}83 zvZ$4g;m!YLJKvAzIetIf#r-6G1&=HX*1jhie-BR8s-@2tycMrbPkmt?;9uZ{q=J@l z0>?qiqSTE{?}9JO>$pXEj?815-MB+(;LGb((XQxr%F1lOme)a5({@6bqx8w(DbVbY zVa+y>gzbQ$)aWI6C>8-%?JHK)wt_G_i$vWv<$%PMmJR7nyK=grcNNVUdd{%)J0MLyfP`C$xynqM z9}I*R=@=cbU>NN+dOM+;rh2eXOivld>u9wTtwfE$kO~P-%6!Vap!f`q4TE!KaUXLd z@Tnsnl?4QXOW26^dHO8Gk3~{ciix4-dDu8lK@ui)M-bang$0=))nV0*TBdp^K>4mC;4kHg6D?y)#zELHXv)BUb{9Axg>YWWhS z0NELD69J895r-bf3k5H?#_EM~DIl|MnRXYE!V_)rY<%84 zep;&j2X&*k2UiF#(W&F&u+lXUl4BSY1vuA&Znw21Bi7FwXp5ZC7*T5~mzw>1VG_If z7UiyWXJkk5YF&hs?sO)eLr4ke@4A(h>C4oiXmuproE1Klp*j_-Aw1Fzi&AlT&FV$i z<%y@G6$+w<{KOZgE`TvC${bTR=g1=%0@?KC9%9E;tm=JYR7L@y(F30aLz`w|gkKEP_=40!~+BRhNN;&cN z$1s9=WI%xQKbFsbP|GJ}`B%)7O!vZ5_ls@H9oe@_(2Ze-GdxYM#=~JznkunWV)xr( z_j&BQ9*mE&)OvVL(r=RKwV2(cuhja1Yg(?IQIU_zzvIC-m?HeF<+_s^Do-pO?LQ=z z!OWi2ao)-HWN>n0IEPM<|1G8P#6xM}57tTC!;s_=_ zAC~+_(LQBwVftKDbwJ+oW)gSF99X7==T6R$B3DEe>4W}PGS4~42{HTa93EehU=3nf zj^(te7VO>;M)RXvK{jpW=%OD`iguIPSw90akSbiu48vUAKb13bw8H?L3QgDzCWl|a zHQ{MO@o$tuahsIoJDJ;0)Wv!HW04zIBziU=39mVyriU8csj4H%3a!aBfyy&yAAM^K zyGko#PejY>QdSS>;B{k2c!C&n%s5oheYHi@7Z^0GhupyUVO8Vvl z#_unLRQd3BKYPo$Pv);rJsz|NaA^GQQ|{ZSI=1?jml&v8pmia2Nr4~yd{WxnFLr2@@j;p1Q{9_FSo)rw1%(hI(-j( zR9lU*wcau&@9A_pQRCv|V_$o$(fC^9(MMMvS)N)BmmgmVzeb>Sj&{nTZXh*VH8}Xo z@g_(i4Jw|EFnf~^Kl0er^uv!mJekFDyVqDt8&TM4gtgUZ#e#Y^ZuJnV^%T60)3n!C zHZdp>p(hr%wpOX!*#sppd~l+bUyUCc>bxCUfV3hxJ+rA(OJYC zN~2cLrG)ZkD6|Hoz9EllC>$+owc(bgrBVfW?dEe(u?AD=s;Yx6DCC%`YQ4~wplqoZ~+fOZ&kScVJ2*h-XTVN<29pxs&pJ_I)g{1FiQ3S5_i8aG<^FbSR~T9^amh?^YPtXIBFGI%&pmCwR|iO&p`- zqxz82#f^%dUTTgVVz2@#SN$bND&#vQDw)OXfS{dS*{n#lQ^UX?6-sbo@(f=mQqfX0 z!4!Z>vluc6roAvFH1jQ%GRtfdts1pVt1cv?3OixH{IR5X6L>0bokV>}M`^x-9;!+upPB1-iK1)6tk|xX;6(hBpyRi0gZUxWyo@RmIn)s^Y*`HAqs(%Jy{7=~P!O zG*;C-s;YZSg+eHW?QG7GOe6!aYAsM)VY8Yl;U<43;7|geBvtl(X1>qt@0Zp0%PQH7 zB=aZZ4H>5fmjW_$m|Rq1s99BR$doq+G*-F_pP2&Nc=K2qe3lgSr|rjOX_+${vZ@YF zB`1E3La_(8TozAF+8c0C(yqqXwqoaHOmkm?^D+MtsMe;oW5cg4E7^@4ic~8fl*^~7 z8J3sPOKN?LK1Rm!C0CnAaOxdkHpOPHI*@`1n(ISyYuMfMFDCRCp3W01LB4z@J5R)Z z-MOwwt4!c@-3e#{iOM=|>qK^=1CBWvY zy7J!tV_b1GV0&!)1$J+)x`KOd46^UuEcvn3sQrE+RihQ_z`~Ml9gma3)?0)Mpxc2v zGN5x~0WS})3?a(Jgn7Yj z<49qURT^AX4n!RfzE`{9W|)%d9{3(hmtWrAqIiXwYPZbXt* zAF95e)U{F_a#j~(N;gLC1HK?2r0-SUQDd(efzOB(GtM_D2?iEl?=bW5Eu^O$b}z9z ziS;1;KjBaANvBK}=m-$>ve+uSl!fh@q*FO8ybhQPc-D=R(Qr9Kx7$ z+k6OV_bKbAY*jr74-SyD{e$Bxs$WDeOgHG32r!G1V z!S@EhLGd-G^;&MQTY39U5^R{A|3tiL$`sSiw`kj5Zj5bZe8bwqiYm<%X2!NYuQ)mm zDp5@Jm{BdjY?aCd$9&-^6Fe5ec!+hdk!{viqE_o{wuJ}P8kj>t)VmXg{Sgy_tK4RM zpD)B+98Q;goW))5w^)}M5?D)Jo#Y=>Gt@_V8_IahS)ny@q{7P?D-HdUN;vY7DqAS6 zLD{l0`UI|{N2it37I216sbKbJxqI?H0kppu8QZK|SY#!ax9S{W?8Qdi#twV6R(Iyl z-X*e}H=ma&49)U}$qi60%EYTafH{?|!CM1%2I&mU&DT5ZT-wYB-i-FSREJj9Ic8UX zzpvN`--T=7VR~i}VWh^4h$beS6DaRWzbb=Wzj(0yR~A@08 zm#NyboMGCldUFV!lO0HMH&PENKli93w>PU|iwQN1D5@(@dBc?1Rx&AceELcK)_ez2 zLYanU2VOH1eH3bIM zg}9tk^Ez5uPnktH{L{p38&uoew%CKV-yRwb4rV{*;D*z|{C-(Yq9*)4g=~si88eZp zr13dbQX|{c^Jrw7T*0Zf%B%&wrk?YP$zq#M3@$Jd_rBANu{q@jG-!x;;2ZnWCGh}4 z!oM^yN;rzF4$nbJJRIkg0n2Hy9?FXfe`ZO1F;uKeL$WMpK@>Nk|28ed>;%T$q-$k^ zy;?I!aX{x6D;6O5?v#oQb-q8PQuL?>E^BZPR6uu*DWn-JGi&xB3DFaxoY$DU!k)S+ zx7 z`k9jM7)2eJ8jnVF$0*aKsvTYz(<~<*Y*g60b#Z>t^O&}79df8hvZVWl^UY%*s8Rx&pfyW%-#v2QWQ;C65Km;12YVSPolgUz3wDIUn85q?}eqWt10H zpfAQyIKYJK1}BR5vpw3=rX4y#N{gR6EO=!FwWgS3bz1w6_igyc6$zTqb#faqR^auH zR4r9GUp8J6Bz!Sb(3_skoYdI0G~yK>L_3H)cGM#4t6$;z(UG_&b%`|xbYg*O(VSPgW+RjVw zP|`*cb+b5O1MyO(r4@bNN+Z{WTdl5~1H$a6$`i(d+`xHLx&-zp!%q@mNQzD>CYHk$aFwJ}p2+-J1!^N2ibsv) z*O~JWp^8!9DZm>FIzEy#jzfl4oGMcJ0ttf^8+`OJ&MLX352s~h9P zr|ri32w&_1$ACYE)pi`4LIuv09q!Ms6aFy}z$fE%Jgd^+VSZ+D*Zd$AyZUXC0CBpz z-%feNfkWw84&AynEYj-$VS|8lOwK4=Ap8_gFb5*f5j{|4Ekf+|P}lK(r|3$)nf7LH(VAV=nm6R7O^+fWF^zTBYpv*exz zWNxa;CFpn(w`u8y1kc)ru(4uXjkgMTl}8;Az8h3$5na`d+_E2O`<7%`lqWn~*fQXn zA&0QX;duEDZNB9+$0nXI zM;C9J*h&0(b2RASd>_VjDEufw>QY`{0BvAn^=prqDn#fn0Vci8b$2@FRp>oJLp>+F zvaY@3-EGj~rt*wg#}muwO?^~7D>foS1yCvA&sWJWHCKX6zdAye5UCthO3{8nVKOY| zWw*_d0J6~#_nB>4CM9O<80K~0m=`3kKYByibpk5f5>dp0*n@Fx6GiSMZ2HAs2YE|I zuDtK)HT-%K7aLl{3R+dwS+78^f zo9mK~tDp1eu~wSti}UMk(HNuWPegfKXPF{|vThkxtedF7bA=r~pVgUlW8oGZaV(QE znVOwF=Xl>(=;DTazulN&&1-jdzF`(-?tWsdZN{*HU1C<3`{jwC9(LbvivwKj?H4ge278c3hq|ndQ{kJQ??S^-N!42jv!nzcFcz?5IboaE%3}+@kS<%cN_^aV4xL(xuC+rb1%XDqAa$LCYea}SEV{XeIf{5^Im5htUt}~KIosnVM-My5%2!WjcW!<%C+Qhah-PW!s-hhxtKs}g)ydzr zw|rxlWXczJPxm2-^*`Sc11adVEx+drL>+3X7l| zR=@jwF%Lv?J!sv-NR9?sI7d%JU$9>?d6hFmu}yIb2VvM%-SMHm{G15b{KpW-owWe?B|zsP%#txB|IR<5Lu7?u7CYY32)HA!X?UNjF!dbKog=u;)2uKF>dI z1W?;N+p-TY)yT>nUhVk=-9ubyFN-Nxx*SrKISnbub~t(~1fdYAp{;SXVnOIV$}^`{ z6z~cKh#&~mc39}c`A%ChTytS89aT7iW84%XN~Qq%CLMeHvm zeip~umyo{`-L6d`H*&^;RBz*70%|{XdhLZTV%w^niJ(U9%j4un4nm^5Y1FW)BDYf| zrak-5RE3t>)xvF=i%&$<&bn&`8^!EP_-2vq7yIU_HKUaks^EYlg|90x2sITLSALhk zXQOtA9Jn}KFd^_3Tr6S*Xf1nsA;%>dSb+)}muV*3BMv=%wI8@(AJNdHz$ODWhV{vp zSRVUOd1o$X=poB$x5AC>c>!L==k;x#E|R;tict`0Cs1J&kib!Y=b|!bV)YDNt|4lN zRrWd0xsrP-gF0{&i@e4Ui{m$qTz3d%G>)rcEdp*y%7v^6jl@Zarx}=8HqP^{coFt7 zJOTZ-{i4nvtm%a@qsLeF6z+v-HPs>W%c&N+9dvzUOl@S}{x@vD;kcow%2RPd7p0^} zat+%-w`u@dH{}={EoSW%vtqx?w-C0bq$-g2Fk@GplR7@YENEK|!IMoj7mN_3{*_|HB z39G!_p7xA6&6JWLw>d89fP=m`uV=S7=0?GRfrfWMp8&O8WSN+Pt>P3DWl;`NGae-r zp;e*7t>4EZbX=M0+adBY4x(uvl5x+AXs-kZ*_wd-2IogfWesr78$Pu<#Vq=Oo$7R z_3T1jv~|v6tV9B)!$S}!A`p#U3Q1YC-kY+N zQ#>G~*#_jS_Rz5#e0$9$t-1wv&EIJ+i`%$SWX`+

Fe@LCUX^O0SCgwyFrTMoqJ5 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 literal 0 HcmV?d00001 diff --git a/frontend-dist/js/130.b657e68d.js b/frontend-dist/js/130.b657e68d.js deleted file mode 100644 index e7b03c6..0000000 --- a/frontend-dist/js/130.b657e68d.js +++ /dev/null @@ -1,2 +0,0 @@ -(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[130],{3261:function(e,t,a){"use strict";a(85331)},4885:function(e,t,a){"use strict";a(85331)},13378:function(e,t,a){"use strict";a(85331),a(38736),a(79899)},14619:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return En}});var i=a(99114),n=(a(85331),a(30694),a(49385)),s=(a(37952),a(31802)),r=(a(13378),a(9267)),o=(a(15616),a(33892)),l=a(80047),d=(a(99648),a(39623)),c=(a(29092),a(56768)),h=a(24232);const u={class:"move-file-dialog-wrapper"},f={class:"move-dialog-content"},m={class:"move-path-input-container"},p={class:"move-dialog-hint"},g={class:"dialog-footer"},b={class:"move-drawer-content"},v={class:"move-path-section"},k={class:"move-path-label"},y={class:"move-path-input-row"},w={class:"move-dialog-hint"},_={key:0,class:"embedded-tree-section"},F={class:"tree-section-header"},C={class:"tree-section-title"},T={class:"tree-container"},S={key:0,class:"error-state"},L={class:"error-text"},$={class:"node-label"},x={class:"drawer-footer"};function E(e,t,a,E,D,A){const I=d.WK,z=(0,c.g2)("font-awesome-icon"),U=l.S2,B=o.A,P=r.kZ,W=s.qk,R=n.pw,N=i.A;return(0,c.uX)(),(0,c.CE)("div",u,[A.isDesktop?((0,c.uX)(),(0,c.Wv)(P,{key:0,modelValue:A.dialogVisible,"onUpdate:modelValue":t[1]||(t[1]=e=>A.dialogVisible=e),title:a.isBatchMove?e.$t("moveFile.batchTitle"):e.$t("moveFile.title"),width:"500px","show-close":!0,class:"move-dialog",onClose:A.handleClose},{footer:(0,c.k6)(()=>[(0,c.Lk)("span",g,[(0,c.bF)(U,{onClick:A.handleClose},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.cancel")),1)]),_:1},8,["onClick"]),(0,c.bF)(U,{type:"primary",loading:D.loading,onClick:A.handleConfirm},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.confirm")),1)]),_:1},8,["loading","onClick"])])]),default:(0,c.k6)(()=>[(0,c.Lk)("div",f,[(0,c.Lk)("div",m,[(0,c.bF)(I,{modelValue:D.targetPath,"onUpdate:modelValue":t[0]||(t[0]=e=>D.targetPath=e),placeholder:e.$t("moveFile.targetPlaceholder"),class:"move-path-input"},{prepend:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.targetDirectory")),1)]),_:1},8,["modelValue","placeholder"]),(0,c.bF)(B,{"current-directory":a.currentDirectory,source:"admin",onSelect:A.handleDirectorySelect},{trigger:(0,c.k6)(()=>[(0,c.bF)(U,{class:"directory-picker-trigger"},{default:(0,c.k6)(()=>[(0,c.bF)(z,{icon:"folder-tree"})]),_:1})]),_:1},8,["current-directory","onSelect"])]),(0,c.Lk)("p",p,(0,h.v_)(e.$t("moveFile.hint")),1)])]),_:1},8,["modelValue","title","onClose"])):((0,c.uX)(),(0,c.Wv)(R,{key:1,modelValue:A.dialogVisible,"onUpdate:modelValue":t[5]||(t[5]=e=>A.dialogVisible=e),title:a.isBatchMove?e.$t("moveFile.batchTitle"):e.$t("moveFile.title"),direction:"btt",size:"auto","show-close":!0,class:"move-drawer",onClose:A.handleClose},{footer:(0,c.k6)(()=>[(0,c.Lk)("div",x,[(0,c.bF)(U,{onClick:A.handleClose,class:"footer-btn"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.cancel")),1)]),_:1},8,["onClick"]),(0,c.bF)(U,{type:"primary",loading:D.loading,onClick:A.handleConfirm,class:"footer-btn"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.confirm")),1)]),_:1},8,["loading","onClick"])])]),default:(0,c.k6)(()=>[(0,c.Lk)("div",b,[(0,c.Lk)("div",v,[(0,c.Lk)("div",k,(0,h.v_)(e.$t("moveFile.targetDirectory")),1),(0,c.Lk)("div",y,[(0,c.bF)(I,{modelValue:D.targetPath,"onUpdate:modelValue":t[2]||(t[2]=e=>D.targetPath=e),placeholder:e.$t("moveFile.targetPlaceholder"),class:"move-path-input"},null,8,["modelValue","placeholder"]),(0,c.bF)(U,{class:"directory-picker-trigger",onClick:t[3]||(t[3]=e=>D.showTreePicker=!0)},{default:(0,c.k6)(()=>[(0,c.bF)(z,{icon:"folder-tree"})]),_:1})]),(0,c.Lk)("p",w,(0,h.v_)(e.$t("moveFile.hintMobile")),1)]),D.showTreePicker?((0,c.uX)(),(0,c.CE)("div",_,[(0,c.Lk)("div",F,[(0,c.Lk)("span",C,(0,h.v_)(e.$t("moveFile.selectDirectory")),1),(0,c.bF)(U,{text:"",onClick:t[4]||(t[4]=e=>D.showTreePicker=!1)},{default:(0,c.k6)(()=>[(0,c.bF)(z,{icon:"times"})]),_:1})]),(0,c.bo)(((0,c.uX)(),(0,c.CE)("div",T,[D.treeError?((0,c.uX)(),(0,c.CE)("div",S,[(0,c.bF)(z,{icon:"exclamation-circle",class:"error-icon"}),(0,c.Lk)("span",L,(0,h.v_)(D.treeError),1),(0,c.bF)(U,{type:"primary",size:"small",onClick:A.fetchDirectoryTree},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.retry")),1)]),_:1},8,["onClick"])])):((0,c.uX)(),(0,c.Wv)(W,{key:1,ref:"treeRef",data:D.treeData,props:D.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":a.currentDirectory,class:"directory-tree",onNodeClick:A.handleTreeNodeClick},{default:(0,c.k6)(({node:e,data:t})=>[(0,c.Lk)("span",{class:(0,h.C4)(["tree-node",{"is-current":t.path===a.currentDirectory}])},[(0,c.bF)(z,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,c.Lk)("span",$,(0,h.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[N,D.treeLoading]])])):(0,c.Q3)("",!0)])]),_:1},8,["modelValue","title","onClose"]))])}var D=a(70797),A={name:"MoveFileDialog",components:{DirectoryTreePicker:o.A},props:{modelValue:{type:Boolean,default:!1},currentDirectory:{type:String,default:""},isBatchMove:{type:Boolean,default:!1},initialPath:{type:String,default:"/"}},emits:["update:modelValue","confirm","close"],data(){return{targetPath:"/",loading:!1,windowWidth:window.innerWidth,showTreePicker:!1,treeData:[],treeLoading:!1,treeError:"",treeProps:{children:"children",label:"name"}}},computed:{dialogVisible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},isDesktop(){return this.windowWidth>768}},watch:{modelValue(e){e&&(this.targetPath=this.initialPath||"/",this.showTreePicker=!1)},showTreePicker(e){e&&!this.isDesktop&&this.fetchDirectoryTree()}},mounted(){window.addEventListener("resize",this.handleResize)},beforeUnmount(){window.removeEventListener("resize",this.handleResize)},methods:{handleResize(){this.windowWidth=window.innerWidth},handleDirectorySelect(e){this.targetPath=e},handleConfirm(){this.$emit("confirm",this.targetPath)},handleClose(){this.$emit("update:modelValue",!1),this.$emit("close")},async fetchDirectoryTree(){this.treeLoading=!0,this.treeError="";try{const e=await(0,D.A)("/api/directoryTree",{method:"GET"});if(!e.ok)return void(401===e.status?this.treeError=this.$t("moveFile.authFailed"):this.treeError=this.$t("moveFile.serverError"));const t=await e.json();t.tree?this.treeData=[t.tree]:this.treeData=[]}catch(e){console.error("Failed to fetch directory tree:",e),this.treeError=this.$t("moveFile.loadTreeFailed")}finally{this.treeLoading=!1}},handleTreeNodeClick(e){let t=e.path;t&&!t.startsWith("/")?t="/"+t:t||(t="/"),this.targetPath=t,this.showTreePicker=!1}}},I=a(71241);const z=(0,I.A)(A,[["render",E],["__scopeId","data-v-7aaa437c"]]);var U=z,B=a(45130);const P={class:"mobile-drawer-header"},W={class:"mobile-drawer-title"},R={class:"mobile-drawer-content"},N=["onClick"];function O(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon");return(0,c.uX)(),(0,c.Wv)(c.Im,{to:"body"},[(0,c.bF)(B.eB,{name:"drawer-slide"},{default:(0,c.k6)(()=>[a.modelValue?((0,c.uX)(),(0,c.CE)("div",{key:0,class:"mobile-drawer-overlay",onClick:t[3]||(t[3]=(...e)=>s.close&&s.close(...e))},[(0,c.Lk)("div",{class:"mobile-drawer",onClick:t[2]||(t[2]=(0,B.D$)(()=>{},["stop"]))},[(0,c.Lk)("div",P,[(0,c.Lk)("span",W,(0,h.v_)(e.$t("mobileDirectory.title")),1),(0,c.bF)(r,{icon:"times",class:"mobile-drawer-close",onClick:s.close},null,8,["onClick"])]),(0,c.Lk)("div",R,[(0,c.Lk)("div",{class:(0,h.C4)(["mobile-drawer-item",{active:!a.currentPath}]),onClick:t[0]||(t[0]=e=>s.navigate(""))},[(0,c.bF)(r,{icon:"home",class:"mobile-drawer-item-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileDirectory.rootDirectory")),1)],2),((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.pathParts,(e,t)=>((0,c.uX)(),(0,c.CE)("div",{key:t,class:(0,h.C4)(["mobile-drawer-item",{active:t===s.pathParts.length-1}]),style:(0,h.Tr)({paddingLeft:16*(t+1)+16+"px"}),onClick:e=>s.navigate(s.pathParts.slice(0,t+1).join("/"))},[(0,c.bF)(r,{icon:"folder",class:"mobile-drawer-item-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e),1)],14,N))),128)),a.currentPath?((0,c.uX)(),(0,c.CE)("div",{key:0,class:"mobile-drawer-back",onClick:t[1]||(t[1]=(...e)=>s.goBack&&s.goBack(...e))},[(0,c.bF)(r,{icon:"arrow-left",class:"mobile-drawer-item-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileDirectory.goBack")),1)])):(0,c.Q3)("",!0)])])])):(0,c.Q3)("",!0)]),_:1})])}a(18111),a(22489);var M={name:"MobileDirectoryDrawer",props:{modelValue:{type:Boolean,default:!1},currentPath:{type:String,default:""}},emits:["update:modelValue","navigate","goBack"],computed:{pathParts(){return this.currentPath.split("/").filter(Boolean)}},methods:{close(){this.$emit("update:modelValue",!1)},navigate(e){this.$emit("navigate",e),this.close()},goBack(){this.$emit("goBack"),this.close()}}};const V=(0,I.A)(M,[["render",O],["__scopeId","data-v-feeadb1c"]]);var X=V;const j={class:"bottom-sheet-header"},K={class:"bottom-sheet-title"},Z={class:"bottom-sheet-content"};function H(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon");return(0,c.uX)(),(0,c.Wv)(c.Im,{to:"body"},[(0,c.bF)(B.eB,{name:"bottom-sheet"},{default:(0,c.k6)(()=>[a.modelValue?((0,c.uX)(),(0,c.CE)("div",{key:0,class:"bottom-sheet-overlay",onClick:t[9]||(t[9]=(...e)=>s.close&&s.close(...e))},[(0,c.Lk)("div",{class:"bottom-sheet",onClick:t[8]||(t[8]=(0,B.D$)(()=>{},["stop"]))},[(0,c.Lk)("div",j,[t[10]||(t[10]=(0,c.Lk)("div",{class:"bottom-sheet-handle"},null,-1)),(0,c.Lk)("span",K,(0,h.v_)(a.title),1)]),(0,c.Lk)("div",Z,[a.isFolder?((0,c.uX)(),(0,c.CE)(c.FK,{key:1},[(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[5]||(t[5]=e=>s.handleAction("folderCopy"))},[(0,c.bF)(r,{icon:"copy",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.copyLink")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[6]||(t[6]=e=>s.handleAction("move"))},[(0,c.bF)(r,{icon:"file-export",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.moveFolder")),1)])],64)):((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[0]||(t[0]=e=>s.handleAction("detail"))},[(0,c.bF)(r,{icon:"info-circle",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.viewDetail")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[1]||(t[1]=e=>s.handleAction("copy"))},[(0,c.bF)(r,{icon:"copy",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.copyLink")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[2]||(t[2]=e=>s.handleAction("download"))},[(0,c.bF)(r,{icon:"download",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.downloadFile")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[3]||(t[3]=e=>s.handleAction("move"))},[(0,c.bF)(r,{icon:"file-export",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.moveFile")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[4]||(t[4]=e=>s.handleAction("tag"))},[(0,c.bF)(r,{icon:"tags",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.tagManagement")),1)])],64)),(0,c.Lk)("div",{class:"bottom-sheet-item bottom-sheet-danger",onClick:t[7]||(t[7]=e=>s.handleAction("delete"))},[(0,c.bF)(r,{icon:"trash-alt",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(a.isFolder?e.$t("mobileAction.deleteFolder"):e.$t("mobileAction.deleteFile")),1)])])])])):(0,c.Q3)("",!0)]),_:1})])}var G={name:"MobileActionSheet",props:{modelValue:{type:Boolean,default:!1},title:{type:String,default:""},isFolder:{type:Boolean,default:!1}},emits:["update:modelValue","action"],methods:{close(){this.$emit("update:modelValue",!1)},handleAction(e){this.$emit("action",e),this.close()}}};const q=(0,I.A)(G,[["render",H],["__scopeId","data-v-f5c66568"]]);var Q=q,Y=a(4275),J=a(89559),ee=a(12687);a(18785);const te={class:"batch-tag-container"},ae={class:"tab-content"},ie={class:"tab-description"},ne={class:"input-section"},se={key:0,class:"suggestions-panel"},re=["onClick"],oe={class:"tags-to-add-section"},le={key:0,class:"tags-container"},de={key:1,class:"empty-message"},ce={class:"action-buttons"},he={class:"tab-content"},ue={class:"tab-description"},fe={key:0,class:"common-tags-section"},me={class:"tags-container"},pe={key:1,class:"empty-message"},ge={class:"tab-content"},be={class:"tab-description"},ve={class:"action-buttons"};function ke(e,t,a,i,n,s){const o=(0,c.g2)("font-awesome-icon"),u=l.S2,f=d.WK,m=ee.u,p=Y.v$,g=J.KR,b=Y.q,v=r.kZ;return(0,c.uX)(),(0,c.Wv)(v,{title:e.$t("batchTag.title"),modelValue:s.visible,"onUpdate:modelValue":t[2]||(t[2]=e=>s.visible=e),width:s.dialogWidth,onClose:s.handleClose},{default:(0,c.k6)(()=>[(0,c.Lk)("div",te,[(0,c.bF)(b,{modelValue:n.activeTab,"onUpdate:modelValue":t[1]||(t[1]=e=>n.activeTab=e),type:"border-card"},{default:(0,c.k6)(()=>[(0,c.bF)(p,{label:e.$t("batchTag.addTab"),name:"add"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",ae,[(0,c.Lk)("p",ie,(0,h.v_)(e.$t("batchTag.addDescription",{count:s.fileCount})),1),(0,c.Lk)("div",ne,[(0,c.bF)(f,{modelValue:n.inputTag,"onUpdate:modelValue":t[0]||(t[0]=e=>n.inputTag=e),placeholder:e.$t("batchTag.inputPlaceholder"),onKeyup:(0,B.jR)(s.handleAddInputTag,["enter"]),onInput:s.handleInputChange,clearable:""},{append:(0,c.k6)(()=>[(0,c.bF)(u,{onClick:s.handleAddInputTag,type:"primary"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"plus"})]),_:1},8,["onClick"])]),_:1},8,["modelValue","placeholder","onKeyup","onInput"]),n.showSuggestions&&n.suggestions.length>0?((0,c.uX)(),(0,c.CE)("div",se,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.suggestions,e=>((0,c.uX)(),(0,c.CE)("div",{key:e,class:"suggestion-item",onClick:t=>s.selectSuggestion(e)},(0,h.v_)(e),9,re))),128))])):(0,c.Q3)("",!0)]),(0,c.Lk)("div",oe,[(0,c.Lk)("h4",null,(0,h.v_)(e.$t("batchTag.pendingTags")),1),n.tagsToAdd.length>0?((0,c.uX)(),(0,c.CE)("div",le,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.tagsToAdd,e=>((0,c.uX)(),(0,c.Wv)(m,{key:e,closable:"",onClose:t=>s.removeFromToAdd(e),class:"tag-item"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClose"]))),128))])):((0,c.uX)(),(0,c.CE)("div",de,(0,h.v_)(e.$t("batchTag.noPendingTags")),1))]),(0,c.Lk)("div",ce,[(0,c.bF)(u,{type:"primary",onClick:s.executeAddTags,loading:n.loading,disabled:0===n.tagsToAdd.length},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("batchTag.addToAllFiles")),1)]),_:1},8,["onClick","loading","disabled"])])])]),_:1},8,["label"]),(0,c.bF)(p,{label:e.$t("batchTag.removeTab"),name:"remove"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",he,[(0,c.Lk)("p",ue,(0,h.v_)(e.$t("batchTag.removeDescription")),1),n.commonTags.length>0?((0,c.uX)(),(0,c.CE)("div",fe,[(0,c.Lk)("h4",null,(0,h.v_)(e.$t("batchTag.commonTags")),1),(0,c.Lk)("div",me,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.commonTags,e=>((0,c.uX)(),(0,c.Wv)(m,{key:e,closable:"",onClose:t=>s.handleRemoveCommonTag(e),class:"tag-item",type:"warning"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClose"]))),128))])])):((0,c.uX)(),(0,c.CE)("div",pe,(0,h.v_)(e.$t("batchTag.noCommonTags")),1))])]),_:1},8,["label"]),(0,c.bF)(p,{label:e.$t("batchTag.clearTab"),name:"clear"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",ge,[(0,c.Lk)("p",be,(0,h.v_)(e.$t("batchTag.clearDescription",{count:s.fileCount})),1),(0,c.bF)(g,{title:e.$t("batchTag.clearWarningTitle"),type:"warning",description:e.$t("batchTag.clearWarningDesc"),closable:!1,style:{"margin-bottom":"20px"},center:""},null,8,["title","description"]),(0,c.Lk)("div",ve,[(0,c.bF)(u,{type:"danger",onClick:s.handleClearAllTags,loading:n.loading},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("batchTag.confirmClearAll")),1)]),_:1},8,["onClick","loading"])])])]),_:1},8,["label"])]),_:1},8,["modelValue"])])]),_:1},8,["title","modelValue","width","onClose"])}a(44114),a(61701);var ye=a(51219),we=a(12933),_e={name:"BatchTagDialog",props:{modelValue:{type:Boolean,default:!1},selectedFiles:{type:Array,required:!0,default:()=>[]}},emits:["update:modelValue","tagsUpdated"],data(){return{activeTab:"add",inputTag:"",tagsToAdd:[],commonTags:[],suggestions:[],showSuggestions:!1,loading:!1,debounceTimer:null}},computed:{visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return window.innerWidth<768?"90%":"600px"},selectedFilesOnly(){return this.selectedFiles.filter(e=>!e.isFolder)},fileCount(){return this.selectedFilesOnly.length},fileIds(){return this.selectedFilesOnly.map(e=>e.name)}},watch:{visible(e){e?this.loadCommonTags():this.resetData()},activeTab(e){"remove"===e&&this.loadCommonTags()}},methods:{resetData(){this.tagsToAdd=[],this.inputTag="",this.showSuggestions=!1,this.activeTab="add"},async loadCommonTags(){if(0!==this.selectedFilesOnly.length)try{const e=this.selectedFilesOnly.map(e=>(0,D.A)(`/api/manage/tags/${encodeURIComponent(e.name)}`,{method:"GET"})),t=await Promise.all(e),a=[];for(const i of t)if(i.ok){const e=await i.json();a.push(e.tags||[])}a.length>0?this.commonTags=a[0].filter(e=>a.every(t=>t.includes(e))):this.commonTags=[]}catch(e){console.error("Error loading common tags:",e),ye.nk.error(this.$t("batchTag.loadCommonTagsFailed"))}else this.commonTags=[]},handleInputChange(){clearTimeout(this.debounceTimer),this.inputTag&&0!==this.inputTag.trim().length?this.debounceTimer=setTimeout(()=>{this.fetchSuggestions()},300):this.showSuggestions=!1},async fetchSuggestions(){try{const e=this.inputTag.trim().toLowerCase(),t=await(0,D.A)(`/api/manage/tags/autocomplete?prefix=${encodeURIComponent(e)}&limit=10`,{method:"GET"});if(t.ok){const e=await t.json();this.suggestions=(e.tags||[]).filter(e=>!this.tagsToAdd.includes(e)),this.showSuggestions=this.suggestions.length>0}}catch(e){console.error("Error fetching suggestions:",e)}},selectSuggestion(e){this.inputTag=e,this.showSuggestions=!1,this.handleAddInputTag()},handleAddInputTag(){const e=this.inputTag.trim();if(e){if(this.tagsToAdd.includes(e))return ye.nk.warning(this.$t("batchTag.tagAlreadyInList")),this.inputTag="",void(this.showSuggestions=!1);this.tagsToAdd.push(e),this.inputTag="",this.showSuggestions=!1}},removeFromToAdd(e){const t=this.tagsToAdd.indexOf(e);t>-1&&this.tagsToAdd.splice(t,1)},async executeAddTags(){if(0!==this.tagsToAdd.length){this.loading=!0;try{const e=await(0,D.A)("/api/manage/tags/batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileIds:this.fileIds,action:"add",tags:this.tagsToAdd})});if(!e.ok)throw new Error(this.$t("batchTag.addFailed"));{const t=await e.json();if(!(t.success||t.updated>0))throw new Error(this.$t("batchTag.addFailed"));ye.nk.success(this.$t("batchTag.addSuccess",{count:t.updated})),this.$emit("tagsUpdated"),this.tagsToAdd=[]}}catch(e){console.error("Error adding tags:",e),ye.nk.error(this.$t("batchTag.addFailed"))}finally{this.loading=!1}}else ye.nk.warning(this.$t("batchTag.pleaseAddTags"))},async handleRemoveCommonTag(e){this.loading=!0;try{const t=await(0,D.A)("/api/manage/tags/batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileIds:this.fileIds,action:"remove",tags:[e]})});if(!t.ok)throw new Error(this.$t("batchTag.removeFailed"));{const e=await t.json();if(!(e.success||e.updated>0))throw new Error(this.$t("batchTag.removeFailed"));ye.nk.success(this.$t("batchTag.removeSuccess",{count:e.updated})),this.$emit("tagsUpdated"),await this.loadCommonTags()}}catch(t){console.error("Error removing tag:",t),ye.nk.error(this.$t("batchTag.removeFailed"))}finally{this.loading=!1}},handleClearAllTags(){we.s.confirm(this.$t("batchTag.clearConfirmMessage",{count:this.fileCount}),this.$t("batchTag.clearConfirmTitle"),{confirmButtonText:this.$t("batchTag.clearConfirmOk"),cancelButtonText:this.$t("batchTag.clearConfirmCancel"),type:"warning"}).then(()=>{this.executeClearTags()}).catch(()=>{ye.nk.info(this.$t("batchTag.clearCancelled"))})},async executeClearTags(){this.loading=!0;try{const e=await(0,D.A)("/api/manage/tags/batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileIds:this.fileIds,action:"set",tags:[]})});if(!e.ok)throw new Error(this.$t("batchTag.clearFailed"));{const t=await e.json();if(!(t.success||t.updated>0))throw new Error(this.$t("batchTag.clearFailed"));ye.nk.success(this.$t("batchTag.clearSuccess",{count:t.updated})),this.$emit("tagsUpdated"),this.commonTags=[]}}catch(e){console.error("Error clearing tags:",e),ye.nk.error(this.$t("batchTag.clearFailed"))}finally{this.loading=!1}},handleClose(){this.visible=!1}}};const Fe=(0,I.A)(_e,[["render",ke],["__scopeId","data-v-54f87f24"]]);var Ce=Fe,Te=a(813);a(34896);const Se={class:"tag-management-container"},Le={class:"input-section"},$e={key:0,class:"suggestions-panel"},xe=["onClick"],Ee={class:"current-tags-section"},De={key:0,class:"tags-container"},Ae={key:1,class:"empty-message"},Ie={class:"popular-tags-section"},ze={key:0,class:"tags-container"},Ue={key:1,class:"empty-message"},Be={key:2,class:"empty-message"},Pe={class:"dialog-footer"};function We(e,t,a,i,n,s){const o=(0,c.g2)("font-awesome-icon"),u=l.S2,f=d.WK,m=ee.u,p=(0,c.g2)("Loading"),g=Te.tk,b=r.kZ;return(0,c.uX)(),(0,c.Wv)(b,{title:e.$t("tagManagement.title"),modelValue:s.visible,"onUpdate:modelValue":t[1]||(t[1]=e=>s.visible=e),width:s.dialogWidth,onClose:s.handleClose},{footer:(0,c.k6)(()=>[(0,c.Lk)("span",Pe,[(0,c.bF)(u,{onClick:s.handleClose},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("tagManagement.close")),1)]),_:1},8,["onClick"])])]),default:(0,c.k6)(()=>[(0,c.Lk)("div",Se,[(0,c.Lk)("div",Le,[(0,c.bF)(f,{modelValue:n.inputTag,"onUpdate:modelValue":t[0]||(t[0]=e=>n.inputTag=e),placeholder:e.$t("tagManagement.inputPlaceholder"),onKeyup:(0,B.jR)(s.handleAddTag,["enter"]),onInput:s.handleInputChange,clearable:""},{append:(0,c.k6)(()=>[(0,c.bF)(u,{onClick:s.handleAddTag,type:"primary"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"plus"})]),_:1},8,["onClick"])]),_:1},8,["modelValue","placeholder","onKeyup","onInput"]),n.showSuggestions&&n.suggestions.length>0?((0,c.uX)(),(0,c.CE)("div",$e,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.suggestions,e=>((0,c.uX)(),(0,c.CE)("div",{key:e,class:"suggestion-item",onClick:t=>s.selectSuggestion(e)},(0,h.v_)(e),9,xe))),128))])):(0,c.Q3)("",!0)]),(0,c.Lk)("div",Ee,[(0,c.Lk)("h4",null,(0,h.v_)(e.$t("tagManagement.currentTags")),1),n.currentTags.length>0?((0,c.uX)(),(0,c.CE)("div",De,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.currentTags,e=>((0,c.uX)(),(0,c.Wv)(m,{key:e,closable:"",onClose:t=>s.handleRemoveTag(e),class:"tag-item"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClose"]))),128))])):((0,c.uX)(),(0,c.CE)("div",Ae,(0,h.v_)(e.$t("tagManagement.noTags")),1))]),(0,c.Lk)("div",Ie,[(0,c.Lk)("h4",null,(0,h.v_)(e.$t("tagManagement.popularTags")),1),n.popularTags.length>0?((0,c.uX)(),(0,c.CE)("div",ze,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.popularTags,e=>((0,c.uX)(),(0,c.Wv)(m,{key:e,onClick:t=>s.handleAddPopularTag(e),class:"tag-item clickable",type:"info"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClick"]))),128))])):n.loadingPopularTags?((0,c.uX)(),(0,c.CE)("div",Ue,[(0,c.bF)(g,{class:"is-loading"},{default:(0,c.k6)(()=>[(0,c.bF)(p)]),_:1}),(0,c.eW)(" "+(0,h.v_)(e.$t("tagManagement.loading")),1)])):((0,c.uX)(),(0,c.CE)("div",Be,(0,h.v_)(e.$t("tagManagement.noPopularTags")),1))])])]),_:1},8,["title","modelValue","width","onClose"])}var Re=a(57477),Ne={name:"TagManagementDialog",components:{Loading:Re.Loading},props:{modelValue:{type:Boolean,default:!1},fileId:{type:String,required:!0}},emits:["update:modelValue","tagsUpdated"],data(){return{currentTags:[],inputTag:"",suggestions:[],popularTags:[],showSuggestions:!1,loading:!1,loadingPopularTags:!1,debounceTimer:null}},computed:{visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return window.innerWidth<768?"90%":"500px"}},watch:{visible(e){e&&(this.loadFileTags(),this.loadPopularTags())}},methods:{async loadFileTags(){try{const e=await(0,D.A)(`/api/manage/tags/${encodeURIComponent(this.fileId)}`,{method:"GET"});if(!e.ok)throw new Error("Failed to load tags");{const t=await e.json();this.currentTags=t.tags||[]}}catch(e){console.error("Error loading file tags:",e),ye.nk.error(this.$t("tagManagement.loadFailed"))}},async loadPopularTags(){this.loadingPopularTags=!0;try{const e=await(0,D.A)("/api/manage/tags/autocomplete?limit=20",{method:"GET"});if(e.ok){const t=await e.json();this.popularTags=(t.tags||[]).filter(e=>!this.currentTags.includes(e))}}catch(e){console.error("Error loading popular tags:",e)}finally{this.loadingPopularTags=!1}},handleInputChange(){clearTimeout(this.debounceTimer),this.inputTag&&0!==this.inputTag.trim().length?this.debounceTimer=setTimeout(()=>{this.fetchSuggestions()},300):this.showSuggestions=!1},async fetchSuggestions(){try{const e=this.inputTag.trim().toLowerCase(),t=await(0,D.A)(`/api/manage/tags/autocomplete?prefix=${encodeURIComponent(e)}&limit=10`,{method:"GET"});if(t.ok){const e=await t.json();this.suggestions=(e.tags||[]).filter(e=>!this.currentTags.includes(e)),this.showSuggestions=this.suggestions.length>0}}catch(e){console.error("Error fetching suggestions:",e)}},selectSuggestion(e){this.inputTag=e,this.showSuggestions=!1,this.handleAddTag()},async handleAddTag(){const e=this.inputTag.trim();if(e){if(this.currentTags.includes(e))return ye.nk.warning(this.$t("tagManagement.tagExists")),this.inputTag="",void(this.showSuggestions=!1);try{const t=await(0,D.A)(`/api/manage/tags/${encodeURIComponent(this.fileId)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"add",tags:[e]})});if(!t.ok){const e=await t.json();throw new Error(e.message||this.$t("tagManagement.addFailed"))}{const e=await t.json();this.currentTags=e.tags||[],this.inputTag="",this.showSuggestions=!1,ye.nk.success(this.$t("tagManagement.addSuccess")),this.$emit("tagsUpdated",this.currentTags),this.loadPopularTags()}}catch(t){console.error("Error adding tag:",t),ye.nk.error(t.message||this.$t("tagManagement.addFailed"))}}},async handleRemoveTag(e){try{const t=await(0,D.A)(`/api/manage/tags/${encodeURIComponent(this.fileId)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"remove",tags:[e]})});if(!t.ok)throw new Error(this.$t("tagManagement.removeFailed"));{const e=await t.json();this.currentTags=e.tags||[],ye.nk.success(this.$t("tagManagement.removeSuccess")),this.$emit("tagsUpdated",this.currentTags),this.loadPopularTags()}}catch(t){console.error("Error removing tag:",t),ye.nk.error(this.$t("tagManagement.removeFailed"))}},handleAddPopularTag(e){this.inputTag=e,this.handleAddTag()},handleClose(){this.visible=!1,this.inputTag="",this.showSuggestions=!1,this.currentTags=[],this.popularTags=[]}}};const Oe=(0,I.A)(Ne,[["render",We],["__scopeId","data-v-1dabc380"]]);var Me=Oe,Ve=a(55558),Xe=(a(10456),a(66810)),je=(a(4885),a(82006)),Ke=(a(98642),a(63003),a(59869)),Ze=(a(70415),a(73565),a(57009));a(78450);const He={class:"detail-actions"},Ge={class:"preview-section"},qe={class:"preview-content"},Qe=["src"],Ye=["src"],Je={key:1},et={key:1},tt={key:0,style:{display:"flex","align-items":"center",gap:"6px"}},at={key:1,style:{color:"var(--el-text-color-secondary)"}},it={key:0,style:{display:"flex","flex-wrap":"wrap",gap:"5px"}},nt={key:1,style:{color:"var(--el-text-color-secondary)"}};function st(e,t,a,i,n,s){const o=(0,c.g2)("font-awesome-icon"),u=l.S2,f=d.WK,m=Y.v$,p=Y.q,g=Ze.Zq,b=Ke.MF,v=ee.u,k=Ke.TS,y=je.xE,w=je.US,_=r.kZ;return(0,c.uX)(),(0,c.Wv)(_,{title:e.$t("fileDetail.title"),modelValue:s.visible,"onUpdate:modelValue":t[24]||(t[24]=e=>s.visible=e),width:s.dialogWidth},{default:(0,c.k6)(()=>[(0,c.Lk)("div",He,[n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:0,type:"primary",onClick:t[0]||(t[0]=t=>e.$emit("download")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"download",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.download")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:1,type:"primary",onClick:t[1]||(t[1]=t=>e.$emit("tagManagement")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"tags",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.tags")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:2,type:"primary",onClick:t[2]||(t[2]=t=>e.$emit("block")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"ban",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.blacklist")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:3,type:"primary",onClick:t[3]||(t[3]=t=>e.$emit("white")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"shield-alt",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.whitelist")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:4,type:"danger",onClick:t[4]||(t[4]=t=>e.$emit("delete")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"trash-alt",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.deleteBtn")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:5,type:"warning",onClick:t[5]||(t[5]=e=>s.startEdit()),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"edit",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.edit")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:6,type:"info",onClick:t[6]||(t[6]=e=>s.openRenameDialog()),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"i-cursor",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.rename")),1)]),_:1})),n.isEditing?((0,c.uX)(),(0,c.Wv)(u,{key:7,type:"success",onClick:t[7]||(t[7]=e=>s.saveMetadata()),round:"",size:"small",class:"detail-action",loading:n.editSaving},{default:(0,c.k6)(()=>[n.editSaving?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(o,{key:0,icon:"save",style:{"margin-right":"3px"}})),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.save")),1)]),_:1},8,["loading"])):(0,c.Q3)("",!0),n.isEditing?((0,c.uX)(),(0,c.Wv)(u,{key:8,onClick:t[8]||(t[8]=e=>s.cancelEdit()),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("fileDetail.cancel")),1)]),_:1})):(0,c.Q3)("",!0)]),(0,c.bF)(p,{modelValue:n.activeTab,"onUpdate:modelValue":t[16]||(t[16]=e=>n.activeTab=e),onTabClick:s.handleTabClick,style:{"margin-bottom":"10px"}},{default:(0,c.k6)(()=>[(0,c.bF)(m,{label:e.$t("fileDetail.originUrl"),name:"originUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.originUrl,"onUpdate:modelValue":t[9]||(t[9]=e=>a.urls.originUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1},8,["label"]),(0,c.bF)(m,{label:"Markdown",name:"mdUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.mdUrl,"onUpdate:modelValue":t[10]||(t[10]=e=>a.urls.mdUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),(0,c.bF)(m,{label:"HTML",name:"htmlUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.htmlUrl,"onUpdate:modelValue":t[11]||(t[11]=e=>a.urls.htmlUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),(0,c.bF)(m,{label:"BBCode",name:"bbUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.bbUrl,"onUpdate:modelValue":t[12]||(t[12]=e=>a.urls.bbUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),a.file?.metadata?.TgFileId?((0,c.uX)(),(0,c.Wv)(m,{key:0,label:"TG File ID",name:"tgId"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.tgId,"onUpdate:modelValue":t[13]||(t[13]=e=>a.urls.tgId=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1})):(0,c.Q3)("",!0),a.file?.metadata?.S3Location?((0,c.uX)(),(0,c.Wv)(m,{key:1,label:"S3 Location",name:"s3Location"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.S3Location,"onUpdate:modelValue":t[14]||(t[14]=e=>a.urls.S3Location=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1})):(0,c.Q3)("",!0),a.file?.metadata?.S3CdnFileUrl?((0,c.uX)(),(0,c.Wv)(m,{key:2,label:"S3 CDN URL",name:"s3CdnFileUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.S3CdnFileUrl,"onUpdate:modelValue":t[15]||(t[15]=e=>a.urls.S3CdnFileUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1})):(0,c.Q3)("",!0)]),_:1},8,["modelValue","onTabClick"]),(0,c.Lk)("div",Ge,[(0,c.Lk)("div",qe,[s.isVideo?((0,c.uX)(),(0,c.CE)("video",{key:0,src:a.fileLink,autoplay:"",muted:"",loop:"",class:"video-preview",onClick:t[17]||(t[17]=(...e)=>s.openImageLink&&s.openImageLink(...e))},null,8,Qe)):s.isAudio?((0,c.uX)(),(0,c.CE)("audio",{key:1,src:a.fileLink,controls:"",autoplay:"",class:"audio-preview"},null,8,Ye)):s.isImage?((0,c.uX)(),(0,c.Wv)(g,{key:2,src:a.fileLink,"preview-src-list":[a.fileLink],"preview-teleported":!0,fit:"contain",lazy:"",class:"image-preview"},null,8,["src","preview-src-list"])):((0,c.uX)(),(0,c.Wv)(o,{key:3,icon:"file",class:"file-icon-detail"}))])]),(0,c.bF)(k,{border:"",column:s.descColumn},{default:(0,c.k6)(()=>[(0,c.bF)(b,{label:e.$t("fileDetail.fileNameLabel")},{default:(0,c.k6)(()=>[n.isEditing?((0,c.uX)(),(0,c.Wv)(f,{key:0,modelValue:n.editForm.FileName,"onUpdate:modelValue":t[18]||(t[18]=e=>n.editForm.FileName=e),size:"small",placeholder:e.$t("fileDetail.fileNamePlaceholder")},null,8,["modelValue","placeholder"])):((0,c.uX)(),(0,c.CE)("span",Je,(0,h.v_)(a.file?.metadata?.FileName||a.file?.name),1))]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.fileType")},{default:(0,c.k6)(()=>[n.isEditing?((0,c.uX)(),(0,c.Wv)(f,{key:0,modelValue:n.editForm.FileType,"onUpdate:modelValue":t[19]||(t[19]=e=>n.editForm.FileType=e),size:"small",placeholder:e.$t("fileDetail.fileTypePlaceholder")},null,8,["modelValue","placeholder"])):((0,c.uX)(),(0,c.CE)("span",et,(0,h.v_)(a.file?.metadata?.FileType||e.$t("fileDetail.unknown")),1))]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.fileSizeLabel")},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(s.fileSizeDisplay),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.imageDimensions")},{default:(0,c.k6)(()=>[s.imageDimensions?((0,c.uX)(),(0,c.CE)("div",tt,[(0,c.Lk)("span",null,(0,h.v_)(a.file?.metadata?.Width)+" × "+(0,h.v_)(a.file?.metadata?.Height),1),(0,c.bF)(v,{size:"small",type:"info",style:{display:"inline-flex","align-items":"center","justify-content":"center"}},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(s.orientationIcon),1)]),_:1})])):((0,c.uX)(),(0,c.CE)("span",at,(0,h.v_)(e.$t("fileDetail.noDimensions")),1))]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.uploadTimeLabel")},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(s.uploadTime),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.channelTypeAndName")},{default:(0,c.k6)(()=>[(0,c.bF)(v,{size:"small",type:"info",style:{"margin-right":"6px"}},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(a.file?.metadata?.Channel||e.$t("fileDetail.unknown")),1)]),_:1}),(0,c.Lk)("span",null,(0,h.v_)(a.file?.metadata?.ChannelName||"-"),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.accessStatusAndReview")},{default:(0,c.k6)(()=>[(0,c.bF)(v,{size:"small",type:s.accessTagType,style:{"margin-right":"6px"}},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(s.accessType),1)]),_:1},8,["type"]),(0,c.Lk)("span",null,(0,h.v_)(a.file?.metadata?.Label||e.$t("fileDetail.noTags")),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.uploadIP")},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(a.file?.metadata?.UploadIP||e.$t("fileDetail.unknown")),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.uploadAddressLabel")},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(a.file?.metadata?.UploadAddress||e.$t("fileDetail.unknown")),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.fileTags")},{default:(0,c.k6)(()=>[a.file?.metadata?.Tags&&a.file?.metadata?.Tags.length>0?((0,c.uX)(),(0,c.CE)("div",it,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(a.file?.metadata?.Tags,e=>((0,c.uX)(),(0,c.Wv)(v,{key:e,size:"small"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1024))),128))])):((0,c.uX)(),(0,c.CE)("span",nt,(0,h.v_)(e.$t("fileDetail.noTags")),1))]),_:1},8,["label"])]),_:1},8,["column"]),(0,c.bF)(_,{modelValue:n.showRenameDialog,"onUpdate:modelValue":t[23]||(t[23]=e=>n.showRenameDialog=e),title:e.$t("fileDetail.renameTitle"),width:s.dialogWidth,"append-to-body":""},{footer:(0,c.k6)(()=>[(0,c.bF)(u,{onClick:t[21]||(t[21]=e=>s.closeRenameDialog())},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("fileDetail.renameCancel")),1)]),_:1}),(0,c.bF)(u,{type:"primary",onClick:t[22]||(t[22]=e=>s.submitRename()),loading:n.renameSaving,disabled:!n.renameValidation.valid},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("fileDetail.renameConfirm")),1)]),_:1},8,["loading","disabled"])]),default:(0,c.k6)(()=>[(0,c.bF)(w,{onSubmit:(0,B.D$)(s.submitRename,["prevent"])},{default:(0,c.k6)(()=>[(0,c.bF)(y,{label:e.$t("fileDetail.renameLabel"),error:n.renameValidation.error},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:n.renameForm.newFileId,"onUpdate:modelValue":t[20]||(t[20]=e=>n.renameForm.newFileId=e),placeholder:e.$t("fileDetail.renamePlaceholder"),onInput:s.validateRenameInput,clearable:""},null,8,["modelValue","placeholder","onInput"])]),_:1},8,["label","error"])]),_:1},8,["onSubmit"])]),_:1},8,["modelValue","title","width"])]),_:1},8,["title","modelValue","width"])}const rt=/[\\:\*\?"'<>\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;function ot(e,t){return e&&""!==e.trim()?e===t?{valid:!1,error:"文件名未发生变化"}:e.includes("..")?{valid:!1,error:'文件名不能包含路径穿越字符 ".."'}:/\/\.\//.test(e)||/^\.\//.test(e)?{valid:!1,error:'文件名不能包含单独的 "." 路径段'}:rt.test(e)?{valid:!1,error:"文件名包含非法字符,请使用合法的文件名格式"}:e.includes("//")?{valid:!1,error:"文件名不能包含连续的斜杠"}:{valid:!0}:{valid:!1,error:"文件名不能为空"}}var lt={name:"FileDetailDialog",props:{modelValue:{type:Boolean,default:!1},file:{type:Object,default:null},fileLink:{type:String,default:""},urls:{type:Object,default:()=>({originUrl:"",mdUrl:"",htmlUrl:"",bbUrl:"",tgId:"",S3Location:"",S3CdnFileUrl:""})}},emits:["update:modelValue","download","tagManagement","block","white","delete","metadataUpdated","fileRenamed"],watch:{visible(e){e||(this.isEditing=!1,this.editSaving=!1)}},data(){return{activeTab:"originUrl",isEditing:!1,editForm:{FileName:"",FileType:""},editSaving:!1,showRenameDialog:!1,renameForm:{newFileId:""},renameValidation:{valid:!0,error:""},renameSaving:!1}},computed:{visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return window.innerWidth<768?"95%":"900px"},descColumn(){return window.innerWidth<768?1:2},isVideo(){const e=this.file?.metadata?.FileType?.toLowerCase()||"";if(e.includes("video"))return!0;const t=this.file?.name?.toLowerCase()||"";return t.endsWith(".mp4")||t.endsWith(".webm")||t.endsWith(".mov")||t.endsWith(".avi")},isAudio(){const e=this.file?.metadata?.FileType?.toLowerCase()||"";if(e.includes("audio"))return!0;const t=this.file?.name?.toLowerCase()||"";return t.endsWith(".mp3")||t.endsWith(".wav")||t.endsWith(".ogg")||t.endsWith(".flac")},isImage(){const e=this.file?.metadata?.FileType?.toLowerCase()||"";if(e.includes("image"))return!0;const t=this.file?.name?.toLowerCase()||"";return t.endsWith(".jpg")||t.endsWith(".jpeg")||t.endsWith(".png")||t.endsWith(".gif")||t.endsWith(".webp")||t.endsWith(".svg")||t.endsWith(".bmp")||t.endsWith(".avif")||t.endsWith(".heic")||t.endsWith(".heif")},uploadTime(){return this.file?.metadata?.TimeStamp?new Date(this.file.metadata.TimeStamp).toLocaleString():this.$t("fileDetail.unknown")},accessType(){const e=this.file?.metadata?.ListType,t=this.file?.metadata?.Label;return"White"===e?this.$t("fileDetail.accessNormalWhitelist"):"Block"===e?this.$t("fileDetail.accessBlockedBlacklist"):"adult"===t?this.$t("fileDetail.accessBlockedReview"):this.$t("fileDetail.accessNormal")},accessTagType(){const e=this.file?.metadata?.ListType,t=this.file?.metadata?.Label;return"White"===e?"success":"Block"===e||"adult"===t?"danger":"success"},imageDimensions(){const e=this.file?.metadata?.Width,t=this.file?.metadata?.Height;return!(!e||!t)||null},orientationIcon(){const e=this.file?.metadata?.Width,t=this.file?.metadata?.Height;if(!e||!t)return"";const a=e/t;return a>1.1?this.$t("fileDetail.orientationLandscape"):a<.9?this.$t("fileDetail.orientationPortrait"):this.$t("fileDetail.orientationSquare")},fileSizeDisplay(){const e=this.file?.metadata?.FileSizeBytes,t=this.file?.metadata?.FileSize;return e?e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(2)} KB`:`${(e/1024/1024).toFixed(2)} MB`:t?`${t} MB`:this.$t("fileDetail.unknown")}},methods:{handleVideoClick(e){const t=e.target;t.paused?t.play():t.pause()},handleTabClick(){},handleUrlClick(e){const t=e.target;t.select(),navigator.clipboard.writeText(t.value).then(()=>{ye.nk.success(this.$t("fileDetail.linkCopied"))})},openImageLink(){this.fileLink&&window.open(this.fileLink,"_blank")},startEdit(){this.editForm.FileName=this.file?.metadata?.FileName||"",this.editForm.FileType=this.file?.metadata?.FileType||"",this.isEditing=!0},cancelEdit(){this.isEditing=!1,this.editForm.FileName=this.file?.metadata?.FileName||"",this.editForm.FileType=this.file?.metadata?.FileType||"",this.editSaving=!1},async saveMetadata(){this.editSaving=!0;try{const e=this.file.name,t=await(0,D.A)(`/api/manage/metadata/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({FileName:this.editForm.FileName,FileType:this.editForm.FileType})});if(!t.ok){const e=await t.json().catch(()=>({}));throw new Error(e.message||this.$t("fileDetail.metadataSaveFailed"))}{const a=await t.json();ye.nk.success(this.$t("fileDetail.metadataSaved")),this.isEditing=!1,this.$emit("metadataUpdated",e,a.metadata)}}catch(e){console.error("Error saving metadata:",e),ye.nk.error(e.message||this.$t("fileDetail.metadataSaveFailed"))}finally{this.editSaving=!1}},openRenameDialog(){this.renameForm.newFileId=this.file?.name||"",this.renameValidation={valid:!0,error:""},this.showRenameDialog=!0},closeRenameDialog(){this.showRenameDialog=!1,this.renameForm.newFileId="",this.renameValidation={valid:!0,error:""}},validateRenameInput(){const e=ot(this.renameForm.newFileId,this.file?.name||"");this.renameValidation={valid:e.valid,error:e.error||""}},async submitRename(){if(!this.renameSaving&&(this.validateRenameInput(),this.renameValidation.valid)){this.renameSaving=!0;try{const e=this.file.name,t=await(0,D.A)(`/api/manage/rename/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({newFileId:this.renameForm.newFileId})});if(t.ok){const a=await t.json();ye.nk.success(this.$t("fileDetail.renameSuccess")),this.showRenameDialog=!1,this.$emit("fileRenamed",e,this.renameForm.newFileId,a.metadata)}else{if(409!==t.status){const e=await t.json().catch(()=>({}));throw new Error(e.message||this.$t("fileDetail.renameFailed"))}this.renameValidation={valid:!1,error:this.$t("fileDetail.renameConflict")}}}catch(e){console.error("Error renaming file:",e),ye.nk.error(e.message||this.$t("fileDetail.renameFailed"))}finally{this.renameSaving=!1}}}}};const dt=(0,I.A)(lt,[["render",st],["__scopeId","data-v-550287cc"]]);var ct=dt,ht=a(78507);a(213);const ut={key:0,class:"batch-floating-bar"},ft={class:"batch-selection-summary"},mt={class:"batch-selection-count"},pt={class:"batch-floating-actions"};function gt(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon"),o=l.S2,d=ht.R7;return(0,c.uX)(),(0,c.Wv)(B.eB,{name:"batch-toolbar"},{default:(0,c.k6)(()=>[a.selectedCount>0?((0,c.uX)(),(0,c.CE)("div",ut,[(0,c.bF)(d,{disabled:s.disableTooltip,content:e.$t("dashboard.clearSelection"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.bF)(o,{class:"batch-floating-btn ghost","aria-label":e.$t("dashboard.clearSelection"),onClick:s.handleClear},{default:(0,c.k6)(()=>[(0,c.bF)(r,{icon:"times",class:"batch-floating-icon"})]),_:1},8,["aria-label","onClick"])]),_:1},8,["disabled","content"]),(0,c.bF)(d,{disabled:s.disableTooltip,content:`${a.selectedCount} ${e.$t("dashboard.selectedItems")}`,placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("div",ft,[(0,c.Lk)("span",mt,(0,h.v_)(a.selectedCount),1)])]),_:1},8,["disabled","content"]),t[0]||(t[0]=(0,c.Lk)("span",{class:"batch-toolbar-divider"},null,-1)),(0,c.Lk)("div",pt,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.actions,t=>((0,c.uX)(),(0,c.Wv)(d,{key:t.command,disabled:s.disableTooltip,content:e.$t(t.label),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.bF)(o,{class:(0,h.C4)(["batch-floating-btn",t.className]),"aria-label":e.$t(t.label),onClick:e=>s.handleAction(t.command)},{default:(0,c.k6)(()=>[(0,c.bF)(r,{icon:t.icon,class:"batch-floating-icon"},null,8,["icon"])]),_:2},1032,["class","aria-label","onClick"])]),_:2},1032,["disabled","content"]))),128))])])):(0,c.Q3)("",!0)]),_:1})}var bt={name:"BatchActionBar",props:{selectedCount:{type:Number,required:!0}},emits:["action","clear"],data(){return{actions:[{command:"copy",label:"dashboard.copy",icon:"copy",className:"copy"},{command:"download",label:"dashboard.download",icon:"download",className:"download"},{command:"move",label:"dashboard.move",icon:"file-export",className:"move"},{command:"tagManagement",label:"dashboard.tagManagement",icon:"tags",className:"tag"},{command:"ban",label:"dashboard.addToBlacklist",icon:"ban",className:"ban"},{command:"white",label:"dashboard.addToWhitelist",icon:"shield-alt",className:"white"},{command:"delete",label:"dashboard.delete",icon:"trash-alt",className:"danger"}]}},computed:{disableTooltip(){return window.innerWidth<768}},methods:{handleAction(e){this.$emit("action",e)},handleClear(){this.$emit("clear")}}};const vt=(0,I.A)(bt,[["render",gt],["__scopeId","data-v-49301bcc"]]);var kt=vt,yt=a(54880),wt=(a(4318),a(77815)),_t=(a(72907),a(98469));a(38736);const Ft={class:"list-col list-col-checkbox"},Ct=["src"],Tt=["src"],St=["title"],Lt={class:"filename-start"},$t={class:"filename-end"},xt={class:"list-col list-col-tags"},Et={key:1,class:"list-empty"},Dt={class:"list-col list-col-channel"},At={class:"list-col list-col-channel-name"},It={key:0,class:"channel-name-box"},zt={key:1,class:"list-empty"},Ut={class:"list-col list-col-address"},Bt={key:0,class:"address-box"},Pt={key:1,class:"list-empty"},Wt={class:"list-col list-col-size"},Rt={class:"list-col list-col-date"},Nt={class:"list-col list-col-actions"};function Ot(e,t,a,i,n,s){const r=_t.dI,o=(0,c.g2)("font-awesome-icon"),l=ht.R7;return(0,c.uX)(),(0,c.CE)("div",{class:"list-item",onTouchstart:t[10]||(t[10]=t=>e.$emit("touchstart",t)),onTouchend:t[11]||(t[11]=t=>e.$emit("touchend",t)),onTouchmove:t[12]||(t[12]=t=>e.$emit("touchmove",t))},[(0,c.Lk)("div",Ft,[(0,c.bF)(r,{modelValue:n.localSelected,"onUpdate:modelValue":t[0]||(t[0]=e=>n.localSelected=e),onClick:t[1]||(t[1]=(0,B.D$)(()=>{},["stop"])),onChange:s.handleSelectChange},null,8,["modelValue","onChange"])]),(0,c.Lk)("div",{class:"list-col list-col-preview",onClick:t[2]||(t[2]=(...e)=>s.handlePreviewClick&&s.handlePreviewClick(...e))},[s.isFolder?((0,c.uX)(),(0,c.Wv)(o,{key:0,icon:"folder-open",class:"list-folder-icon"})):s.isVideo?((0,c.uX)(),(0,c.CE)("video",{key:1,src:a.fileLink,class:"list-preview-img",muted:"",preload:"metadata"},null,8,Ct)):s.isImage?((0,c.uX)(),(0,c.CE)("img",{key:2,src:a.fileLink,class:"list-preview-img",loading:"lazy",decoding:"async"},null,8,Tt)):((0,c.uX)(),(0,c.Wv)(o,{key:3,icon:"file",class:"list-file-icon"}))]),(0,c.Lk)("div",{class:"list-col list-col-name",onClick:t[3]||(t[3]=(...e)=>s.handlePreviewClick&&s.handlePreviewClick(...e))},[(0,c.Lk)("span",{class:"filename-ellipsis",title:s.displayName},[(0,c.Lk)("span",Lt,(0,h.v_)(s.fileNameStart),1),(0,c.Lk)("span",$t,(0,h.v_)(s.fileNameEnd),1)],8,St)]),(0,c.Lk)("div",xt,[!s.isFolder&&a.item.metadata?.Tags&&a.item.metadata.Tags.length>0?((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(a.item.metadata.Tags.slice(0,3),(e,t)=>((0,c.uX)(),(0,c.CE)("span",{key:t,class:"color-tag",style:(0,h.Tr)({background:s.getTagColor(t)})},(0,h.v_)(e),5))),128)),a.item.metadata.Tags.length>3?((0,c.uX)(),(0,c.CE)("span",{key:0,class:"color-tag color-tag-more",style:(0,h.Tr)({background:s.getTagColor(3)})},"+"+(0,h.v_)(a.item.metadata.Tags.length-3),5)):(0,c.Q3)("",!0)],64)):((0,c.uX)(),(0,c.CE)("span",Et,"-"))]),(0,c.Lk)("div",Dt,(0,h.v_)(s.isFolder?"-":a.item.metadata?.Channel||a.item.channelTag||"-"),1),(0,c.Lk)("div",At,[!s.isFolder&&a.item.metadata?.ChannelName?((0,c.uX)(),(0,c.CE)("div",It,(0,h.v_)(a.item.metadata.ChannelName),1)):((0,c.uX)(),(0,c.CE)("span",zt,"-"))]),(0,c.Lk)("div",Ut,[!s.isFolder&&a.item.metadata?.UploadIP?((0,c.uX)(),(0,c.CE)("div",Bt,(0,h.v_)(a.item.metadata.UploadIP),1)):((0,c.uX)(),(0,c.CE)("span",Pt,"-"))]),(0,c.Lk)("div",Wt,(0,h.v_)(s.isFolder?"-":s.fileSizeDisplay),1),(0,c.Lk)("div",Rt,(0,h.v_)(s.uploadDate),1),(0,c.Lk)("div",Nt,[s.isFolder?((0,c.uX)(),(0,c.CE)(c.FK,{key:1},[(0,c.bF)(l,{content:e.$t("dashboard.copyLink"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[7]||(t[7]=(0,B.D$)(t=>e.$emit("folderCopy"),["stop"]))},[(0,c.bF)(o,{icon:"copy"})])]),_:1},8,["content"]),(0,c.bF)(l,{content:e.$t("dashboard.moveFile"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[8]||(t[8]=(0,B.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(o,{icon:"file-export"})])]),_:1},8,["content"])],64)):((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[(0,c.bF)(l,{content:e.$t("dashboard.copyLink"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[4]||(t[4]=(0,B.D$)(t=>e.$emit("copy"),["stop"]))},[(0,c.bF)(o,{icon:"copy"})])]),_:1},8,["content"]),(0,c.bF)(l,{content:e.$t("dashboard.downloadFile"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[5]||(t[5]=(0,B.D$)(t=>e.$emit("download"),["stop"]))},[(0,c.bF)(o,{icon:"download"})])]),_:1},8,["content"]),(0,c.bF)(l,{content:e.$t("dashboard.moveFile"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[6]||(t[6]=(0,B.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(o,{icon:"file-export"})])]),_:1},8,["content"])],64)),(0,c.bF)(l,{content:e.$t("dashboard.delete"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn list-action-danger",onClick:t[9]||(t[9]=(0,B.D$)(t=>e.$emit("delete"),["stop"]))},[(0,c.bF)(o,{icon:"trash-alt"})])]),_:1},8,["content"])])],32)}var Mt={name:"FileListItem",props:{item:{type:Object,required:!0},selected:{type:Boolean,default:!1},fileLink:{type:String,default:""}},emits:["update:selected","enter","detail","copy","folderCopy","move","delete","download","touchstart","touchend","touchmove"],data(){return{localSelected:this.selected,tagColors:["#f472b6","#a78bfa","#60a5fa","#34d399"]}},computed:{isFolder(){return this.item.isFolder||this.item.name?.endsWith("/")},isVideo(){const e=this.item.name?.toLowerCase()||"";return e.endsWith(".mp4")||e.endsWith(".webm")||e.endsWith(".mov")||e.endsWith(".avi")},isImage(){const e=this.item.name?.toLowerCase()||"";return e.endsWith(".jpg")||e.endsWith(".jpeg")||e.endsWith(".png")||e.endsWith(".gif")||e.endsWith(".webp")||e.endsWith(".svg")||e.endsWith(".bmp")},displayName(){if(this.isFolder){const e=this.item.name.split("/").filter(Boolean);return e[e.length-1]||this.item.name}return this.item.metadata?.FileName||this.getFileName(this.item.name)},fileNameStart(){const e=this.displayName;return e.length<=20?e:e.slice(0,-8)},fileNameEnd(){const e=this.displayName;return e.length<=20?"":e.slice(-8)},uploadDate(){return this.item.uploaded?new Date(this.item.uploaded).toLocaleDateString():this.item.metadata?.TimeStamp?new Date(this.item.metadata.TimeStamp).toLocaleDateString():"-"},fileSizeDisplay(){const e=this.item.metadata?.FileSizeBytes,t=this.item.metadata?.FileSize;return e?e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(2)} MB`:t?`${t} MB`:"-"}},watch:{selected(e){this.localSelected=e}},methods:{handleSelectChange(e){this.localSelected=e,this.$emit("update:selected",e)},handlePreviewClick(){this.isFolder?this.$emit("enter"):this.$emit("detail")},getFileName(e){const t=(e||"").split("/");return t[t.length-1]},getTagColor(e){return this.tagColors[e%this.tagColors.length]}}};const Vt=(0,I.A)(Mt,[["render",Ot],["__scopeId","data-v-25a3242c"]]);var Xt=Vt,jt=a(70683);a(95385);const Kt={class:"file-short-info"},Zt={key:0,class:"success-tag"},Ht={key:1,class:"fail-tag"},Gt={key:2,class:"success-tag"},qt={key:3,class:"primary-tag"},Qt={key:0,style:{"margin-left":"2px"}},Yt={key:0,class:"skeleton-wrapper"},Jt={class:"error-text"},ea=["src"],ta={class:"error-text"},aa={key:3,class:"file-preview"},ia={class:"card-bottom-overlay"},na={class:"file-name-row"},sa={class:"file-name"},ra={class:"action-bar"},oa={class:"action-bar-left"},la={class:"action-bar-right"};function da(e,t,a,i,n,s){const r=_t.dI,o=(0,c.g2)("font-awesome-icon"),l=Ze.Zq,d=ht.R7,u=jt.Ik;return(0,c.uX)(),(0,c.Wv)(u,{class:"img-card",onTouchstart:t[17]||(t[17]=t=>e.$emit("touchstart",t)),onTouchend:t[18]||(t[18]=t=>e.$emit("touchend",t)),onTouchmove:t[19]||(t[19]=t=>e.$emit("touchmove",t))},{default:(0,c.k6)(()=>[(0,c.bF)(r,{modelValue:n.localSelected,"onUpdate:modelValue":t[0]||(t[0]=e=>n.localSelected=e),onChange:t[1]||(t[1]=t=>e.$emit("update:selected",n.localSelected))},null,8,["modelValue"]),(0,c.Lk)("div",Kt,["White"===a.item.metadata?.ListType?((0,c.uX)(),(0,c.CE)("div",Zt,(0,h.v_)(s.channelTag),1)):"Block"===a.item.metadata?.ListType||"adult"===a.item.metadata?.Label?((0,c.uX)(),(0,c.CE)("div",Ht,(0,h.v_)(s.channelTag),1)):((0,c.uX)(),(0,c.CE)("div",Gt,(0,h.v_)(s.channelTag),1)),a.item.metadata?.Tags&&a.item.metadata?.Tags.length>0?((0,c.uX)(),(0,c.CE)("div",qt,[(0,c.bF)(o,{icon:"tag",style:{"margin-right":"3px","font-size":"12px"}}),(0,c.eW)(" "+(0,h.v_)(a.item.metadata.Tags[0])+" ",1),a.item.metadata.Tags.length>1?((0,c.uX)(),(0,c.CE)("span",Qt," (+"+(0,h.v_)(a.item.metadata.Tags.length-1)+") ",1)):(0,c.Q3)("",!0)])):(0,c.Q3)("",!0)]),s.isVideo?((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[n.videoLoading?((0,c.uX)(),(0,c.CE)("div",Yt)):n.videoError?((0,c.uX)(),(0,c.CE)("div",{key:1,class:"error-wrapper",onClick:t[2]||(t[2]=t=>e.$emit("detail"))},[(0,c.bF)(o,{icon:"exclamation-triangle",class:"error-icon"}),(0,c.Lk)("span",Jt,(0,h.v_)(e.$t("dashboard.loadFailed")),1)])):(0,c.Q3)("",!0),(0,c.bo)((0,c.Lk)("video",{src:a.fileLink,muted:"",loop:"",preload:"metadata",class:"video-preview",onClick:t[3]||(t[3]=(...e)=>s.handleVideoClick&&s.handleVideoClick(...e)),onMouseenter:t[4]||(t[4]=e=>s.handleVideoHover(e,!0)),onMouseleave:t[5]||(t[5]=e=>s.handleVideoHover(e,!1)),onFullscreenchange:t[6]||(t[6]=(...e)=>s.handleFullscreenChange&&s.handleFullscreenChange(...e)),onWebkitfullscreenchange:t[7]||(t[7]=(...e)=>s.handleFullscreenChange&&s.handleFullscreenChange(...e)),onLoadeddata:t[8]||(t[8]=e=>n.videoLoading=!1),onError:t[9]||(t[9]=(...e)=>s.handleVideoError&&s.handleVideoError(...e))},null,40,ea),[[B.aG,!n.videoLoading&&!n.videoError]])],64)):s.isAudio?((0,c.uX)(),(0,c.CE)("div",{key:1,class:"file-preview audio-card-preview",onClick:t[10]||(t[10]=t=>e.$emit("detail"))},[(0,c.bF)(o,{icon:"music",class:"file-icon audio-icon"})])):s.isImage?((0,c.uX)(),(0,c.Wv)(l,{key:2,"preview-teleported":!0,src:a.fileLink,"preview-src-list":a.previewSrcList,fit:"cover",lazy:"",decoding:"async",class:"image-preview"},{placeholder:(0,c.k6)(()=>[...t[20]||(t[20]=[(0,c.Lk)("div",{class:"skeleton-wrapper"},null,-1)])]),error:(0,c.k6)(()=>[(0,c.Lk)("div",{class:"error-wrapper",onClick:t[11]||(t[11]=(0,B.D$)(t=>e.$emit("detail"),["stop"]))},[(0,c.bF)(o,{icon:"image",class:"error-icon"}),(0,c.Lk)("span",ta,(0,h.v_)(e.$t("dashboard.loadFailed")),1)])]),_:1},8,["src","preview-src-list"])):((0,c.uX)(),(0,c.CE)("div",aa,[(0,c.bF)(o,{icon:"file",class:"file-icon"})])),(0,c.Lk)("div",ia,[(0,c.Lk)("div",na,[(0,c.Lk)("span",sa,(0,h.v_)(s.displayName),1)]),(0,c.Lk)("div",ra,[(0,c.Lk)("div",oa,[(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.detail"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[12]||(t[12]=(0,B.D$)(t=>e.$emit("detail"),["stop"]))},[(0,c.bF)(o,{icon:"info-circle"})])]),_:1},8,["disabled","content"])]),(0,c.Lk)("div",la,[(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.moveFile"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[13]||(t[13]=(0,B.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(o,{icon:"file-export"})])]),_:1},8,["disabled","content"]),(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.delete"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn action-btn-danger",onClick:t[14]||(t[14]=(0,B.D$)(t=>e.$emit("delete"),["stop"]))},[(0,c.bF)(o,{icon:"trash-alt"})])]),_:1},8,["disabled","content"]),(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.downloadFile"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[15]||(t[15]=(0,B.D$)(t=>e.$emit("download"),["stop"]))},[(0,c.bF)(o,{icon:"download"})])]),_:1},8,["disabled","content"]),(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.copyLink"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[16]||(t[16]=(0,B.D$)(t=>e.$emit("copy"),["stop"]))},[(0,c.bF)(o,{icon:"copy"})])]),_:1},8,["disabled","content"])])])])]),_:1})}var ca={name:"FileCard",props:{item:{type:Object,required:!0},selected:{type:Boolean,default:!1},fileLink:{type:String,required:!0},previewSrcList:{type:Array,default:()=>[]},disableTooltip:{type:Boolean,default:!1}},emits:["update:selected","detail","copy","move","delete","download","touchstart","touchend","touchmove"],data(){return{localSelected:this.selected,videoLoading:!0,videoError:!1}},computed:{channelTag(){return this.item.channelTag||""},isVideo(){const e=this.item.metadata?.FileType?.toLowerCase()||"";if(e.includes("video"))return!0;const t=this.item.name?.toLowerCase()||"";return t.endsWith(".mp4")||t.endsWith(".webm")||t.endsWith(".mov")||t.endsWith(".avi")},isAudio(){const e=this.item.metadata?.FileType?.toLowerCase()||"";if(e.includes("audio"))return!0;const t=this.item.name?.toLowerCase()||"";return t.endsWith(".mp3")||t.endsWith(".wav")||t.endsWith(".ogg")||t.endsWith(".flac")},isImage(){const e=this.item.metadata?.FileType?.toLowerCase()||"";if(e.includes("image"))return!0;const t=this.item.name?.toLowerCase()||"";return t.endsWith(".jpg")||t.endsWith(".jpeg")||t.endsWith(".png")||t.endsWith(".gif")||t.endsWith(".webp")||t.endsWith(".svg")||t.endsWith(".bmp")||t.endsWith(".avif")||t.endsWith(".heic")||t.endsWith(".heif")},displayName(){const e=this.item.metadata?.FileName||this.item.name||"",t=e.split("/");return t[t.length-1]}},watch:{selected(e){this.localSelected=e},fileLink(){this.videoLoading=!0,this.videoError=!1}},methods:{handleVideoError(){this.videoLoading=!1,this.videoError=!0},handleVideoClick(e){const t=e.target;t.requestFullscreen?t.requestFullscreen():t.webkitRequestFullscreen?t.webkitRequestFullscreen():t.mozRequestFullScreen?t.mozRequestFullScreen():t.msRequestFullscreen&&t.msRequestFullscreen()},handleFullscreenChange(e){const t=e.target,a=document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement;a?(t.muted=!1,t.loop=!1):(t.muted=!0,t.loop=!0,t.pause(),t.currentTime=0)},handleVideoHover(e,t){const a=e.target;t?a.play().catch(()=>{}):(a.pause(),a.currentTime=0)}}};const ha=(0,I.A)(ca,[["render",da],["__scopeId","data-v-956fb02e"]]);var ua=ha;const fa={class:"card-bottom-overlay"},ma={class:"file-name-row"},pa={class:"file-name"},ga={key:0,class:"action-bar"},ba={class:"action-bar-right"};function va(e,t,a,i,n,s){const r=_t.dI,o=(0,c.g2)("font-awesome-icon"),l=ht.R7,d=jt.Ik;return(0,c.uX)(),(0,c.Wv)(d,{class:"img-card folder-card",onTouchstart:t[6]||(t[6]=t=>e.$emit("touchstart",t)),onTouchend:t[7]||(t[7]=t=>e.$emit("touchend",t)),onTouchmove:t[8]||(t[8]=t=>e.$emit("touchmove",t))},{default:(0,c.k6)(()=>[(0,c.bF)(r,{modelValue:n.localSelected,"onUpdate:modelValue":t[0]||(t[0]=e=>n.localSelected=e),onChange:t[1]||(t[1]=t=>e.$emit("update:selected",n.localSelected))},null,8,["modelValue"]),(0,c.Lk)("div",{class:"folder-icon",onClick:t[2]||(t[2]=t=>e.$emit("enter"))},[(0,c.bF)(o,{icon:"folder-open",class:"folder-icon-svg"})]),(0,c.Lk)("div",fa,[(0,c.Lk)("div",ma,[(0,c.Lk)("span",pa,(0,h.v_)(s.folderName),1)]),a.showActions?((0,c.uX)(),(0,c.CE)("div",ga,[t[9]||(t[9]=(0,c.Lk)("div",{class:"action-bar-left"},null,-1)),(0,c.Lk)("div",ba,[(0,c.bF)(l,{disabled:a.disableTooltip,content:e.$t("dashboard.copyLink"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[3]||(t[3]=(0,B.D$)(t=>e.$emit("copy"),["stop"]))},[(0,c.bF)(o,{icon:"copy"})])]),_:1},8,["disabled","content"]),(0,c.bF)(l,{disabled:a.disableTooltip,content:e.$t("dashboard.moveFile"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[4]||(t[4]=(0,B.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(o,{icon:"file-export"})])]),_:1},8,["disabled","content"]),(0,c.bF)(l,{disabled:a.disableTooltip,content:e.$t("dashboard.delete"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn action-btn-danger",onClick:t[5]||(t[5]=(0,B.D$)(t=>e.$emit("delete"),["stop"]))},[(0,c.bF)(o,{icon:"trash-alt"})])]),_:1},8,["disabled","content"])])])):(0,c.Q3)("",!0)])]),_:1})}var ka={name:"FolderCard",props:{name:{type:String,required:!0},selected:{type:Boolean,default:!1},showActions:{type:Boolean,default:!0},disableTooltip:{type:Boolean,default:!1}},emits:["update:selected","enter","copy","move","delete","touchstart","touchend","touchmove"],data(){return{localSelected:this.selected}},computed:{folderName(){const e=this.name.split("/").filter(Boolean);return e[e.length-1]||this.name}},watch:{selected(e){this.localSelected=e}}};const ya=(0,I.A)(ka,[["render",va],["__scopeId","data-v-534cf01b"]]);var wa=ya;function _a(e,t,a,i,n,s){return"card"===a.type?((0,c.uX)(!0),(0,c.CE)(c.FK,{key:0},(0,c.pI)(a.count,e=>((0,c.uX)(),(0,c.CE)("div",{key:"skeleton-"+e,class:"skeleton-card"},[...t[0]||(t[0]=[(0,c.Lk)("div",{class:"skeleton-image"},null,-1),(0,c.Lk)("div",{class:"skeleton-info"},[(0,c.Lk)("div",{class:"skeleton-text"})],-1)])]))),128)):"list"===a.type?((0,c.uX)(!0),(0,c.CE)(c.FK,{key:1},(0,c.pI)(a.count,e=>((0,c.uX)(),(0,c.CE)("div",{key:"list-skeleton-"+e,class:"list-item skeleton-list-item"},[...t[1]||(t[1]=[(0,c.Fv)('

',10)])]))),128)):(0,c.Q3)("",!0)}var Fa={name:"SkeletonLoader",props:{type:{type:String,default:"card",validator:e=>["card","list"].includes(e)},count:{type:Number,default:15}}};const Ca=(0,I.A)(Fa,[["render",_a],["__scopeId","data-v-070880ec"]]);var Ta=Ca,Sa=a(81095),La=a(62086),$a=(a(40670),a(88830),a(23597),a(58165));a(34396),a(3261);const xa=["aria-checked"];function Ea(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon");return(0,c.uX)(),(0,c.CE)("span",{class:(0,h.C4)(["dashboard-checkbox",[`dashboard-checkbox--${a.variant}`,{checked:a.checked,indeterminate:a.indeterminate&&!a.checked}]]),role:"checkbox","aria-checked":s.ariaChecked,tabindex:"0",onClick:t[0]||(t[0]=(...e)=>s.handleClick&&s.handleClick(...e)),onKeydown:[t[1]||(t[1]=(0,B.jR)((0,B.D$)((...e)=>s.handleClick&&s.handleClick(...e),["prevent"]),["enter"])),t[2]||(t[2]=(0,B.jR)((0,B.D$)((...e)=>s.handleClick&&s.handleClick(...e),["prevent"]),["space"]))]},[(0,c.bF)(r,{icon:s.markIcon,class:"dashboard-checkbox-mark"},null,8,["icon"])],42,xa)}var Da={name:"DashboardCheckbox",props:{checked:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},variant:{type:String,default:"breadcrumb",validator:e=>["breadcrumb"].includes(e)}},emits:["click"],computed:{ariaChecked(){return this.checked?"true":this.indeterminate?"mixed":"false"},markIcon(){return this.indeterminate&&!this.checked?"minus":"check"}},methods:{handleClick(e){this.$emit("click",e)}}};const Aa=(0,I.A)(Da,[["render",Ea],["__scopeId","data-v-3757bfa7"]]);var Ia=Aa,za=(a(77128),a(49187),a(77788));a(72099);const Ua={class:"el-dropdown-link filter-trigger"},Ba={class:"filter-section"},Pa={class:"filter-title"},Wa={class:"filter-options"},Ra={class:"filter-section"},Na={class:"filter-title"},Oa={class:"filter-options"},Ma={class:"filter-section"},Va={class:"filter-title"},Xa={class:"filter-options"},ja={class:"filter-section"},Ka={class:"filter-title"},Za={class:"filter-options"},Ha={class:"filter-section"},Ga={class:"filter-title"},qa={class:"filter-options"},Qa={key:0,class:"filter-section"},Ya={class:"filter-title"},Ja={class:"filter-options"},ei={key:0,class:"channel-divider"},ti={class:"channel-group-title"},ai={class:"filter-actions"};function ii(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon"),o=za.z_,d=_t.dI,u=_t.o5,f=l.S2,m=La.Iy,p=La.dW;return(0,c.uX)(),(0,c.Wv)(p,{"hide-on-click":!1,trigger:"click",class:"filter-dropdown",ref:"dropdownRef"},{dropdown:(0,c.k6)(()=>[(0,c.bF)(m,{class:"filter-dropdown-menu"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",Ba,[(0,c.Lk)("div",Pa,(0,h.v_)(e.$t("filter.accessStatus")),1),(0,c.Lk)("div",Wa,[(0,c.bF)(u,{modelValue:n.localFilters.accessStatus,"onUpdate:modelValue":t[0]||(t[0]=e=>n.localFilters.accessStatus=e),onChange:t[1]||(t[1]=e=>s.handleFilterChange("accessStatus"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.accessStatusOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"accessStatus-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",Ra,[(0,c.Lk)("div",Na,(0,h.v_)(e.$t("filter.blackWhiteList")),1),(0,c.Lk)("div",Oa,[(0,c.bF)(u,{modelValue:n.localFilters.listType,"onUpdate:modelValue":t[2]||(t[2]=e=>n.localFilters.listType=e),onChange:t[3]||(t[3]=e=>s.handleFilterChange("listType"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.listTypeOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"listType-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",Ma,[(0,c.Lk)("div",Va,(0,h.v_)(e.$t("filter.reviewResult")),1),(0,c.Lk)("div",Xa,[(0,c.bF)(u,{modelValue:n.localFilters.label,"onUpdate:modelValue":t[4]||(t[4]=e=>n.localFilters.label=e),onChange:t[5]||(t[5]=e=>s.handleFilterChange("label"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.labelOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"label-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",ja,[(0,c.Lk)("div",Ka,(0,h.v_)(e.$t("filter.fileType")),1),(0,c.Lk)("div",Za,[(0,c.bF)(u,{modelValue:n.localFilters.fileType,"onUpdate:modelValue":t[6]||(t[6]=e=>n.localFilters.fileType=e),onChange:t[7]||(t[7]=e=>s.handleFilterChange("fileType"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.fileTypeOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"fileType-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",Ha,[(0,c.Lk)("div",Ga,(0,h.v_)(e.$t("filter.channelType")),1),(0,c.Lk)("div",qa,[(0,c.bF)(u,{modelValue:n.localFilters.channel,"onUpdate:modelValue":t[8]||(t[8]=e=>n.localFilters.channel=e),onChange:t[9]||(t[9]=e=>s.handleFilterChange("channel"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.channelOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"channel-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),a.channelNameOptions.length>0?((0,c.uX)(),(0,c.CE)("div",Qa,[(0,c.Lk)("div",Ya,(0,h.v_)(e.$t("filter.channelName")),1),(0,c.Lk)("div",Ja,[(0,c.bF)(u,{modelValue:n.localFilters.channelName,"onUpdate:modelValue":t[10]||(t[10]=e=>n.localFilters.channelName=e),onChange:t[11]||(t[11]=e=>s.handleFilterChange("channelName"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.groupedChannelNames,(e,t)=>((0,c.uX)(),(0,c.CE)(c.FK,{key:"group-"+e.type},[t>0?((0,c.uX)(),(0,c.CE)("div",ei)):(0,c.Q3)("",!0),(0,c.Lk)("div",ti,(0,h.v_)(e.typeLabel),1),((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(e.channels,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"channelName-"+e.type+"-"+e.name,label:e.type+":"+e.name},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.name),1)]),_:2},1032,["label"]))),128))],64))),128))]),_:1},8,["modelValue"])])])):(0,c.Q3)("",!0),(0,c.Lk)("div",ai,[(0,c.bF)(f,{size:"small",onClick:s.clearFilters,disabled:0===s.activeFilterCount},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("filter.clearFilters")),1)]),_:1},8,["onClick","disabled"])])]),_:1})]),default:(0,c.k6)(()=>[(0,c.Lk)("span",Ua,[(0,c.bF)(o,{value:s.activeFilterCount,hidden:0===s.activeFilterCount,class:"filter-badge"},{default:(0,c.k6)(()=>[(0,c.bF)(r,{icon:"filter",class:"header-icon"})]),_:1},8,["value","hidden"])])]),_:1},512)}a(7588),a(18237);var ni={name:"FilterDropdown",props:{filters:{type:Object,default:()=>({accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]})},channelNameOptions:{type:Array,default:()=>[]}},emits:["update:filters","change"],data(){return{localFilters:{accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]}}},computed:{accessStatusOptions(){return[{label:this.$t("filter.normal"),value:"normal"},{label:this.$t("filter.blocked"),value:"blocked"}]},listTypeOptions(){return[{label:this.$t("filter.whiteList"),value:"White"},{label:this.$t("filter.blackList"),value:"Block"},{label:this.$t("filter.notSet"),value:"None"}]},labelOptions(){return[{label:this.$t("filter.normal"),value:"normal"},{label:this.$t("filter.teenContent"),value:"teen"},{label:this.$t("filter.adultContent"),value:"adult"}]},fileTypeOptions(){return[{label:this.$t("filter.image"),value:"image"},{label:this.$t("filter.video"),value:"video"},{label:this.$t("filter.audio"),value:"audio"},{label:this.$t("filter.other"),value:"other"}]},channelOptions(){return[{label:"Telegram",value:"TelegramNew"},{label:"Cloudflare R2",value:"CloudflareR2"},{label:"S3",value:"S3"},{label:"Discord",value:"Discord"},{label:"HuggingFace",value:"HuggingFace"},{label:"WebDAV",value:"WebDAV"},{label:this.$t("filter.externalLink"),value:"External"}]},activeFilterCount(){return Object.values(this.localFilters).reduce((e,t)=>e+t.length,0)},groupedChannelNames(){const e={};return this.channelNameOptions.forEach(t=>{e[t.type]||(e[t.type]={type:t.type,typeLabel:t.typeLabel,channels:[]}),e[t.type].channels.push(t)}),Object.values(e)}},watch:{filters:{handler(e){this.localFilters={accessStatus:Array.isArray(e.accessStatus)?[...e.accessStatus]:[],listType:Array.isArray(e.listType)?[...e.listType]:[],label:Array.isArray(e.label)?[...e.label]:[],fileType:Array.isArray(e.fileType)?[...e.fileType]:[],channel:Array.isArray(e.channel)?[...e.channel]:[],channelName:Array.isArray(e.channelName)?[...e.channelName]:[]}},immediate:!0,deep:!0}},methods:{handleFilterChange(e){this.$emit("update:filters",{...this.localFilters}),this.$emit("change",{type:e,filters:{...this.localFilters}})},clearFilters(){this.localFilters={accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]},this.$emit("update:filters",{...this.localFilters}),this.$emit("change",{type:"clear",filters:{...this.localFilters}})}}};const si=(0,I.A)(ni,[["render",ii],["__scopeId","data-v-42919522"]]);var ri=si,oi=a(20620);const li={class:"container"},di={class:"header-content admin-header-content"},ci={class:"search-area"},hi={class:"search-card"},ui={class:"actions"},fi={class:"el-dropdown-link"},mi={class:"breadcrumb-container"},pi=["title","aria-pressed"],gi=["title","aria-pressed"],bi=["title"],vi={class:"breadcrumb-sort-icon",viewBox:"0 0 30 18","aria-hidden":"true"},ki={key:0,class:"sort-field-glyph"},yi={key:1,class:"sort-field-glyph"},wi={key:2,class:"sort-field-glyph"},_i={key:3,class:"sort-field-glyph"},Fi={key:4,class:"sort-order-glyph",d:"M23 13.5V4.5M19 8.5L23 4.5L27 8.5"},Ci={key:5,class:"sort-order-glyph",d:"M23 4.5V13.5M19 9.5L23 13.5L27 9.5"},Ti={class:"sort-order-wrapper"},Si={class:"mobile-directory-path"},Li={class:"breadcrumb desktop-only"},$i=["title"],xi={key:1,class:"empty-state"},Ei={class:"empty-text"},Di={class:"empty-hint"},Ai={class:"list-header"},Ii={class:"list-col list-col-checkbox"},zi={class:"list-col list-col-preview"},Ui={class:"list-col list-col-name"},Bi={class:"list-col list-col-tags"},Pi={class:"list-col list-col-channel"},Wi={class:"list-col list-col-channel-name"},Ri={class:"list-col list-col-address"},Ni={class:"list-col list-col-size"},Oi={class:"list-col list-col-date"},Mi={class:"list-col list-col-actions"},Vi={key:1,class:"empty-state list-empty"},Xi={class:"empty-text"},ji={class:"empty-hint"},Ki={class:"pagination-container"},Zi={class:"pagination-center"},Hi={class:"pagination-right"},Gi={class:"page-total"},qi={class:"page-jump"},Qi={class:"dialog-section"},Yi={class:"section-header"},Ji={class:"section-title"},en={class:"section-content"},tn={class:"dialog-section"},an={class:"section-header"},nn={class:"section-title"},sn={class:"section-content"},rn={class:"setting-item"},on={class:"setting-label"},ln={key:0,class:"setting-item"},dn={class:"setting-label"},cn={class:"dialog-action"};function hn(e,t,a,i,n,s){const o=oi.A,u=(0,c.g2)("font-awesome-icon"),f=d.WK,m=ri,p=ht.R7,g=yt.bZ,b=Ia,v=Xe.Zh,k=Xe.MQ,y=$a.fR,w=La.c6,_=La.Iy,F=La.dW,C=Sa.WZ,T=Sa.vp,S=Ta,L=wa,$=ua,x=_t.dI,E=Xt,D=wt.aQ,A=l.S2,I=yt.ZO,z=yt.lX,P=kt,W=ct,R=Xe.ll,N=Ve.qi,O=r.kZ,M=Me,V=Ce,j=Q,K=X,Z=U;return(0,c.uX)(),(0,c.CE)("div",li,[(0,c.bF)(z,null,{default:(0,c.k6)(()=>[(0,c.bF)(g,null,{default:(0,c.k6)(()=>[(0,c.Lk)("div",di,[(0,c.bF)(o,{activeTab:"dashboard"}),(0,c.Lk)("div",ci,[(0,c.Lk)("div",hi,[(0,c.bF)(f,{modelValue:n.tempSearch,"onUpdate:modelValue":t[0]||(t[0]=e=>n.tempSearch=e),size:"small",placeholder:e.$t("dashboard.searchPlaceholder"),onKeyup:(0,B.jR)(s.handleSearch,["enter"])},{suffix:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"search",class:"search-icon",onClick:s.handleSearch},null,8,["onClick"])]),_:1},8,["modelValue","placeholder","onKeyup"])]),(0,c.bF)(m,{filters:n.filters,"onUpdate:filters":t[1]||(t[1]=e=>n.filters=e),channelNameOptions:n.channelNameOptions,onChange:s.handleFilterChange},null,8,["filters","channelNameOptions","onChange"])]),(0,c.Lk)("div",ui,[(0,c.bF)(p,{disabled:s.disableTooltip,content:e.$t("dashboard.linkFormat"),placement:"bottom","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("span",fi,[(0,c.bF)(u,{icon:"link",class:"header-icon",onClick:t[2]||(t[2]=e=>n.showUrlDialog=!0)})])]),_:1},8,["disabled","content"]),(0,c.bF)(p,{disabled:s.disableTooltip,content:e.$t("dashboard.logout"),placement:"bottom","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"sign-out-alt",class:"header-icon",onClick:s.handleLogout},null,8,["onClick"])]),_:1},8,["disabled","content"])])])]),_:1}),(0,c.bF)(I,{class:(0,h.C4)(["main-container",{"has-batch-toolbar":n.selectedFiles.length>0}])},{default:(0,c.k6)(()=>[(0,c.Lk)("div",mi,[(0,c.bF)(b,{checked:s.selectPage,indeterminate:s.selectedPageFiles&&!s.selectPage,variant:"breadcrumb",onClick:s.handleSelectPage},null,8,["checked","indeterminate","onClick"]),(0,c.Lk)("div",{class:(0,h.C4)(["breadcrumb-view-toggle",{"is-list":"list"===n.viewMode}]),role:"group"},[(0,c.Lk)("button",{class:(0,h.C4)(["breadcrumb-view-button",{"is-active":"card"===n.viewMode}]),type:"button",title:e.$t("dashboard.cardView"),"aria-pressed":"card"===n.viewMode,onClick:t[3]||(t[3]=e=>s.setViewMode("card"))},[(0,c.bF)(u,{icon:"th-large",class:"breadcrumb-view-icon"})],10,pi),(0,c.Lk)("button",{class:(0,h.C4)(["breadcrumb-view-button",{"is-active":"list"===n.viewMode}]),type:"button",title:e.$t("dashboard.listView"),"aria-pressed":"list"===n.viewMode,onClick:t[4]||(t[4]=e=>s.setViewMode("list"))},[(0,c.bF)(u,{icon:"list",class:"breadcrumb-view-icon"})],10,gi)],2),(0,c.bF)(F,{trigger:"click",class:"breadcrumb-sort-dropdown",onCommand:s.setSortField},{dropdown:(0,c.k6)(()=>[(0,c.bF)(_,{class:"sort-dropdown-menu"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",Ti,[(0,c.bF)(k,{modelValue:n.sortOrder,"onUpdate:modelValue":t[5]||(t[5]=e=>n.sortOrder=e),size:"small",onChange:s.setSortOrder},{default:(0,c.k6)(()=>[(0,c.bF)(v,{label:"asc"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("dashboard.sortAsc")),1)]),_:1}),(0,c.bF)(v,{label:"desc"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("dashboard.sortDesc")),1)]),_:1})]),_:1},8,["modelValue","onChange"])]),(0,c.bF)(y,{class:"sort-divider"}),(0,c.bF)(w,{command:"time",class:(0,h.C4)({"is-selected":"time"===n.sortField})},{default:(0,c.k6)(()=>[(0,c.Lk)("span",null,(0,h.v_)(e.$t("dashboard.sortByTime")),1),"time"===n.sortField?((0,c.uX)(),(0,c.Wv)(u,{key:0,icon:"check",class:"sort-field-check"})):(0,c.Q3)("",!0)]),_:1},8,["class"]),(0,c.bF)(w,{command:"size",class:(0,h.C4)({"is-selected":"size"===n.sortField})},{default:(0,c.k6)(()=>[(0,c.Lk)("span",null,(0,h.v_)(e.$t("dashboard.sortBySize")),1),"size"===n.sortField?((0,c.uX)(),(0,c.Wv)(u,{key:0,icon:"check",class:"sort-field-check"})):(0,c.Q3)("",!0)]),_:1},8,["class"]),(0,c.bF)(w,{command:"rawName",class:(0,h.C4)({"is-selected":"rawName"===n.sortField})},{default:(0,c.k6)(()=>[(0,c.Lk)("span",null,(0,h.v_)(e.$t("dashboard.sortByRawName")),1),"rawName"===n.sortField?((0,c.uX)(),(0,c.Wv)(u,{key:0,icon:"check",class:"sort-field-check"})):(0,c.Q3)("",!0)]),_:1},8,["class"]),(0,c.bF)(w,{command:"fileName",class:(0,h.C4)({"is-selected":"fileName"===n.sortField})},{default:(0,c.k6)(()=>[(0,c.Lk)("span",null,(0,h.v_)(e.$t("dashboard.sortByFileName")),1),"fileName"===n.sortField?((0,c.uX)(),(0,c.Wv)(u,{key:0,icon:"check",class:"sort-field-check"})):(0,c.Q3)("",!0)]),_:1},8,["class"])]),_:1})]),default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"breadcrumb-sort-button",type:"button",title:s.sortLabel},[((0,c.uX)(),(0,c.CE)("svg",vi,["time"===n.sortField?((0,c.uX)(),(0,c.CE)("g",ki,[...t[32]||(t[32]=[(0,c.Lk)("circle",{cx:"7.5",cy:"9",r:"5.5"},null,-1),(0,c.Lk)("path",{d:"M7.5 5.5V9L10 10.5"},null,-1)])])):"size"===n.sortField?((0,c.uX)(),(0,c.CE)("g",yi,[...t[33]||(t[33]=[(0,c.Lk)("path",{d:"M2 4H13M2 9H10M2 14H7"},null,-1)])])):"rawName"===n.sortField?((0,c.uX)(),(0,c.CE)("g",wi,[...t[34]||(t[34]=[(0,c.Lk)("path",{d:"M5.5 3L4 15M11 3L9.5 15M2.5 7H13M2 11H12.5"},null,-1)])])):((0,c.uX)(),(0,c.CE)("g",_i,[...t[35]||(t[35]=[(0,c.Lk)("path",{d:"M2.5 14L7.5 3L12.5 14M4.3 10H10.7"},null,-1)])])),"asc"===n.sortOrder?((0,c.uX)(),(0,c.CE)("path",Fi)):((0,c.uX)(),(0,c.CE)("path",Ci))]))],8,bi)]),_:1},8,["onCommand"]),(0,c.Lk)("div",{class:"mobile-directory-trigger",onClick:t[6]||(t[6]=e=>n.showMobileDirectoryDrawer=!0)},[(0,c.bF)(u,{icon:"folder-open",class:"mobile-directory-icon"}),(0,c.Lk)("span",Si,(0,h.v_)(n.currentPath&&n.currentPath.split("/").filter(Boolean).length>0?n.currentPath.split("/").filter(Boolean).pop():e.$t("dashboard.rootDirectory")),1),(0,c.bF)(u,{icon:"chevron-down",class:"mobile-directory-arrow"})]),(0,c.Lk)("div",Li,[(0,c.bF)(T,{separator:"/"},{default:(0,c.k6)(()=>[(0,c.bF)(C,{onClick:t[7]||(t[7]=e=>s.navigateToFolder(""))},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"home",class:"breadcrumb-home-icon"})]),_:1}),((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.currentPath.split("/").filter(Boolean),(e,t)=>((0,c.uX)(),(0,c.Wv)(C,{key:t,onClick:e=>s.navigateToFolder(n.currentPath.split("/").filter(Boolean).slice(0,t+1).join("/"))},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClick"]))),128))]),_:1})]),(0,c.Lk)("span",{class:"stats-badge",title:e.$t("dashboard.totalFiles",{count:e.$data.Number})},[(0,c.bF)(u,{icon:"database",class:"stats-badge-icon"}),(0,c.eW)(" "+(0,h.v_)(n.Number),1)],8,$i)]),"card"===n.viewMode?((0,c.uX)(),(0,c.CE)("div",{key:0,class:(0,h.C4)(["content",{"is-drag-selecting":i.isDragging}]),ref:"cardContainerRef",onTouchstartPassive:t[8]||(t[8]=(...e)=>s.handlePageSwipeStart&&s.handlePageSwipeStart(...e)),onTouchendPassive:t[9]||(t[9]=(...e)=>s.handlePageSwipeEnd&&s.handlePageSwipeEnd(...e)),onTouchcancelPassive:t[10]||(t[10]=(...e)=>s.resetPageSwipe&&s.resetPageSwipe(...e))},[n.loading?((0,c.uX)(),(0,c.Wv)(S,{key:0,type:"card",count:n.pageSize},null,8,["count"])):0===s.paginatedTableData.length?((0,c.uX)(),(0,c.CE)("div",xi,[(0,c.bF)(u,{icon:"folder-open",class:"empty-icon"}),(0,c.Lk)("p",Ei,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.noMatchingFiles"):e.$t("dashboard.currentDirEmpty")),1),(0,c.Lk)("p",Di,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.adjustSearchHint"):e.$t("dashboard.uploadHint")),1)])):((0,c.uX)(!0),(0,c.CE)(c.FK,{key:2},(0,c.pI)(s.paginatedTableData,(e,t)=>((0,c.uX)(),(0,c.CE)(c.FK,{key:t},[s.isFolder(e)?((0,c.uX)(),(0,c.Wv)(L,{key:0,name:e.name,selected:e.selected,"onUpdate:selected":t=>e.selected=t,showActions:!n.isSearchMode,disableTooltip:s.disableTooltip,onEnter:t=>s.enterFolder(e.name),onCopy:t=>s.handleFolderCopy(e.name),onMove:a=>s.handleMove(t,e.name),onDelete:a=>s.handleDelete(t,e.name),onTouchstart:a=>s.handleFolderTouchStart(e,t),onTouchend:s.handleTouchEnd,onTouchmove:s.handleTouchEnd},null,8,["name","selected","onUpdate:selected","showActions","disableTooltip","onEnter","onCopy","onMove","onDelete","onTouchstart","onTouchend","onTouchmove"])):((0,c.uX)(),(0,c.Wv)($,{key:1,item:e,selected:e.selected,"onUpdate:selected":t=>e.selected=t,fileLink:s.getFileLink(e.name),previewSrcList:e.previewSrcList,disableTooltip:s.disableTooltip,onDetail:a=>s.openDetailDialog(t,e.name),onCopy:a=>s.handleCopy(t,e.name),onMove:a=>s.handleMove(t,e.name),onDelete:a=>s.handleDelete(t,e.name),onDownload:t=>s.handleDownload(e.name),onTouchstart:a=>s.handleTouchStart(e,t),onTouchend:s.handleTouchEnd,onTouchmove:s.handleTouchEnd},null,8,["item","selected","onUpdate:selected","fileLink","previewSrcList","disableTooltip","onDetail","onCopy","onMove","onDelete","onDownload","onTouchstart","onTouchend","onTouchmove"]))],64))),128))],34)):((0,c.uX)(),(0,c.CE)("div",{key:1,class:(0,h.C4)(["list-view",{"is-drag-selecting":i.isDragging}]),ref:"listContainerRef",onTouchstartPassive:t[12]||(t[12]=(...e)=>s.handlePageSwipeStart&&s.handlePageSwipeStart(...e)),onTouchendPassive:t[13]||(t[13]=(...e)=>s.handlePageSwipeEnd&&s.handlePageSwipeEnd(...e)),onTouchcancelPassive:t[14]||(t[14]=(...e)=>s.resetPageSwipe&&s.resetPageSwipe(...e))},[(0,c.Lk)("div",Ai,[(0,c.Lk)("div",Ii,[(0,c.bF)(x,{"model-value":s.isSelectAll,indeterminate:s.isIndeterminate,onClick:t[11]||(t[11]=(0,B.D$)(()=>{},["stop"])),onChange:s.handleSelectAllPage},null,8,["model-value","indeterminate","onChange"])]),(0,c.Lk)("div",zi,(0,h.v_)(e.$t("dashboard.preview")),1),(0,c.Lk)("div",Ui,(0,h.v_)(e.$t("dashboard.fileName")),1),(0,c.Lk)("div",Bi,(0,h.v_)(e.$t("dashboard.tags")),1),(0,c.Lk)("div",Pi,(0,h.v_)(e.$t("dashboard.channelType")),1),(0,c.Lk)("div",Wi,(0,h.v_)(e.$t("dashboard.channelNameCol")),1),(0,c.Lk)("div",Ri,(0,h.v_)(e.$t("dashboard.uploadAddress")),1),(0,c.Lk)("div",Ni,(0,h.v_)(e.$t("dashboard.fileSize")),1),(0,c.Lk)("div",Oi,(0,h.v_)(e.$t("dashboard.uploadTime")),1),(0,c.Lk)("div",Mi,(0,h.v_)(e.$t("dashboard.actions")),1)]),n.loading?((0,c.uX)(),(0,c.Wv)(S,{key:0,type:"list",count:n.pageSize},null,8,["count"])):0===s.paginatedTableData.length?((0,c.uX)(),(0,c.CE)("div",Vi,[(0,c.bF)(u,{icon:"folder-open",class:"empty-icon"}),(0,c.Lk)("p",Xi,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.noMatchingFiles"):e.$t("dashboard.currentDirEmpty")),1),(0,c.Lk)("p",ji,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.adjustSearchHint"):e.$t("dashboard.uploadHint")),1)])):((0,c.uX)(!0),(0,c.CE)(c.FK,{key:2},(0,c.pI)(s.paginatedTableData,(e,t)=>((0,c.uX)(),(0,c.Wv)(E,{key:t,item:e,selected:e.selected,"onUpdate:selected":t=>e.selected=t,fileLink:s.getFileLink(e.name),onEnter:t=>s.enterFolder(e.name),onDetail:a=>s.openDetailDialog(t,e.name),onCopy:a=>s.handleCopy(t,e.name),onFolderCopy:t=>s.handleFolderCopy(e.name),onMove:a=>s.handleMove(t,e.name),onDelete:a=>s.handleDelete(t,e.name),onDownload:t=>s.handleDownload(e.name),onTouchstart:a=>s.isFolder(e)?s.handleFolderTouchStart(e,t):s.handleTouchStart(e,t),onTouchend:s.handleTouchEnd,onTouchmove:s.handleTouchEnd},null,8,["item","selected","onUpdate:selected","fileLink","onEnter","onDetail","onCopy","onFolderCopy","onMove","onDelete","onDownload","onTouchstart","onTouchend","onTouchmove"]))),128))],34)),i.isDragging?((0,c.uX)(),(0,c.CE)("div",{key:2,class:"drag-select-overlay",style:(0,h.Tr)({position:"fixed",left:i.selectionRect.left+"px",top:i.selectionRect.top+"px",width:i.selectionRect.width+"px",height:i.selectionRect.height+"px"})},null,4)):(0,c.Q3)("",!0),(0,c.Lk)("div",Ki,[(0,c.Lk)("div",Zi,[(0,c.bF)(D,{background:"",layout:"prev, pager, next",total:s.filteredTableData.length,"page-size":n.pageSize,"current-page":n.currentPage,"pager-count":s.pagerCount,onCurrentChange:s.handlePageChange},null,8,["total","page-size","current-page","pager-count","onCurrentChange"]),(0,c.bF)(A,{type:"primary",onClick:s.refreshFileList,class:"refresh-btn"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"sync",class:(0,h.C4)({"fa-spin":n.refreshLoading})},null,8,["class"])]),_:1},8,["onClick"]),n.currentPage===Math.ceil(s.filteredTableData.length/n.pageSize)?((0,c.uX)(),(0,c.Wv)(A,{key:0,type:"primary",onClick:s.loadMoreData,loading:n.loading,class:"load-more"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("dashboard.loadMore")),1)]),_:1},8,["onClick","loading"])):(0,c.Q3)("",!0)]),(0,c.Lk)("div",Hi,[(0,c.Lk)("span",Gi,(0,h.v_)(e.$t("dashboard.totalPages",{count:s.realTotalPages})),1),(0,c.Lk)("div",qi,[(0,c.Lk)("span",null,(0,h.v_)(e.$t("dashboard.jumpTo")),1),(0,c.bF)(f,{modelValue:n.jumpPage,"onUpdate:modelValue":t[15]||(t[15]=e=>n.jumpPage=e),size:"small",class:"jump-input",onKeyup:(0,B.jR)(s.handleJumpPage,["enter"])},null,8,["modelValue","onKeyup"]),(0,c.bF)(A,{size:"small",type:"primary",onClick:s.handleJumpPage,class:"jump-btn"},{default:(0,c.k6)(()=>[...t[36]||(t[36]=[(0,c.eW)("GO",-1)])]),_:1},8,["onClick"])])])])]),_:1},8,["class"])]),_:1}),(0,c.bF)(P,{"selected-count":n.selectedFiles.length,onAction:s.handleBatchAction,onClear:s.clearSelection},null,8,["selected-count","onAction","onClear"]),(0,c.bF)(W,{modelValue:n.showdetailDialog,"onUpdate:modelValue":t[16]||(t[16]=e=>n.showdetailDialog=e),file:n.detailFile,fileLink:s.getFileLink(n.detailFile?.name),urls:s.allUrl,onDownload:t[17]||(t[17]=e=>s.handleDownload(n.detailFile?.name)),onTagManagement:t[18]||(t[18]=e=>s.handleTagManagement(n.detailFile?.name)),onBlock:t[19]||(t[19]=e=>s.handleBlock(n.detailFile?.name)),onWhite:t[20]||(t[20]=e=>s.handleWhite(n.detailFile?.name)),onDelete:t[21]||(t[21]=e=>s.handleDetailDelete(n.detailFile?.name)),onMetadataUpdated:s.handleMetadataUpdated,onFileRenamed:s.handleFileRenamed},null,8,["modelValue","file","fileLink","urls","onMetadataUpdated","onFileRenamed"]),(0,c.bF)(O,{title:e.$t("dashboard.linkFormat"),modelValue:n.showUrlDialog,"onUpdate:modelValue":t[26]||(t[26]=e=>n.showUrlDialog=e),width:s.dialogWidth,"show-close":!1,class:"settings-dialog settings-dialog-scope"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",Qi,[(0,c.Lk)("div",Yi,[(0,c.Lk)("span",Ji,(0,h.v_)(e.$t("settings.defaultCopyLink")),1)]),(0,c.Lk)("div",en,[(0,c.bF)(k,{modelValue:n.defaultUrlFormat,"onUpdate:modelValue":t[22]||(t[22]=e=>n.defaultUrlFormat=e),class:"radio-card-group grid-2x2"},{default:(0,c.k6)(()=>[(0,c.bF)(R,{label:"originUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"link",class:"radio-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("settings.rawLink")),1)]),_:1}),(0,c.bF)(R,{label:"mdUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"code",class:"radio-icon"}),t[37]||(t[37]=(0,c.Lk)("span",null,"Markdown",-1))]),_:1}),(0,c.bF)(R,{label:"htmlUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"code-branch",class:"radio-icon"}),t[38]||(t[38]=(0,c.Lk)("span",null,"HTML",-1))]),_:1}),(0,c.bF)(R,{label:"bbUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"quote-right",class:"radio-icon"}),t[39]||(t[39]=(0,c.Lk)("span",null,"BBCode",-1))]),_:1}),(0,c.bF)(R,{label:"tgId",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"paper-plane",class:"radio-icon"}),t[40]||(t[40]=(0,c.Lk)("span",null,"TG File ID",-1))]),_:1}),(0,c.bF)(R,{label:"s3Location",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"cloud",class:"radio-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("settings.s3Link")),1)]),_:1})]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",tn,[(0,c.Lk)("div",an,[(0,c.Lk)("span",nn,(0,h.v_)(e.$t("settings.customLink")),1),(0,c.bF)(p,{content:e.$t("settings.customLinkTooltip"),placement:"top","raw-content":""},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,c.Lk)("div",sn,[(0,c.Lk)("div",rn,[(0,c.Lk)("span",on,(0,h.v_)(e.$t("settings.enableCustom")),1),(0,c.bF)(N,{modelValue:n.useCustomUrl,"onUpdate:modelValue":t[23]||(t[23]=e=>n.useCustomUrl=e),"active-value":"true","inactive-value":"false"},null,8,["modelValue"])]),"true"===n.useCustomUrl?((0,c.uX)(),(0,c.CE)("div",ln,[(0,c.Lk)("span",dn,(0,h.v_)(e.$t("settings.customPrefix")),1),(0,c.bF)(f,{modelValue:n.customUrlPrefix,"onUpdate:modelValue":t[24]||(t[24]=e=>n.customUrlPrefix=e),placeholder:e.$t("settings.customPrefixPlaceholder"),class:"setting-input"},null,8,["modelValue","placeholder"])])):(0,c.Q3)("",!0)])]),(0,c.Lk)("div",cn,[(0,c.bF)(A,{type:"primary",onClick:t[25]||(t[25]=e=>n.showUrlDialog=!1),class:"confirm-btn"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("settings.confirm")),1)]),_:1})])]),_:1},8,["title","modelValue","width"]),(0,c.bF)(M,{modelValue:n.showTagDialog,"onUpdate:modelValue":t[27]||(t[27]=e=>n.showTagDialog=e),fileId:n.currentTagFile,onTagsUpdated:s.handleTagsUpdated},null,8,["modelValue","fileId","onTagsUpdated"]),(0,c.bF)(V,{modelValue:n.showBatchTagDialog,"onUpdate:modelValue":t[28]||(t[28]=e=>n.showBatchTagDialog=e),selectedFiles:n.selectedFiles,onTagsUpdated:s.handleBatchTagsUpdated},null,8,["modelValue","selectedFiles","onTagsUpdated"]),(0,c.bF)(j,{modelValue:n.showMobileActionModal,"onUpdate:modelValue":t[29]||(t[29]=e=>n.showMobileActionModal=e),title:n.mobileActionIsFolder?s.getFolderName(n.mobileActionFile?.name||""):n.mobileActionFile?.metadata?.FileName||s.getFileName(n.mobileActionFile?.name||""),isFolder:n.mobileActionIsFolder,onAction:s.handleMobileAction},null,8,["modelValue","title","isFolder","onAction"]),(0,c.bF)(K,{modelValue:n.showMobileDirectoryDrawer,"onUpdate:modelValue":t[30]||(t[30]=e=>n.showMobileDirectoryDrawer=e),currentPath:n.currentPath,onNavigate:s.navigateToFolder,onGoBack:s.handleGoBack},null,8,["modelValue","currentPath","onNavigate","onGoBack"]),(0,c.bF)(Z,{modelValue:n.showMoveDialog,"onUpdate:modelValue":t[31]||(t[31]=e=>n.showMoveDialog=e),"current-directory":n.currentPath,"is-batch-move":n.isBatchMove,"initial-path":n.moveTargetPath,onConfirm:s.confirmMove},null,8,["modelValue","current-directory","is-batch-move","initial-path","onConfirm"])])}a(81148),a(20116),a(13579),a(17642),a(58004),a(33853),a(45876),a(32475),a(15024),a(31698);var un=a(60782),fn=a(44813),mn=a.n(fn),pn=a(54047),gn=a(46638);class bn{constructor(){this.FILE_LIST_PATH="data/fileList.json",this.fileListCache=null,this.storageWarningShown=!1}getLocalFileList(){const e=this.getMutableFileList();return{...e,files:[...e.files||[]],directories:[...e.directories||[]]}}getMutableFileList(){if(this.fileListCache)return this.fileListCache;try{const e=localStorage.getItem(this.FILE_LIST_PATH);return this.fileListCache=e?JSON.parse(e):this.createEmptyFileList(),this.fileListCache}catch(e){return console.error("Error reading local file list:",e),this.fileListCache=this.createEmptyFileList(),this.fileListCache}}updateFileListCache(e){this.fileListCache=e||this.createEmptyFileList();const t=this.persistFileListCache();return{cacheUpdated:!0,persisted:t}}persistFileListCache(){try{return localStorage.setItem(this.FILE_LIST_PATH,JSON.stringify(this.fileListCache)),!0}catch(e){return this.handleStoragePersistError(e),!1}}createEmptyFileList(){return{files:[],directories:[]}}handleStoragePersistError(e){console.warn("File list is kept in memory because localStorage persistence failed:",e);try{localStorage.removeItem(this.FILE_LIST_PATH)}catch(t){console.warn("Failed to remove stale file list cache:",t)}this.storageWarningShown||(this.storageWarningShown=!0,ye.nk.warning(gn.Ay.global.t("dashboard.fileListMemoryCacheWarning")))}addFile(e){try{const t=this.getMutableFileList();return t.files.push(e),this.updateFileListCache(t).cacheUpdated}catch(t){return console.error("Error adding file:",t),!1}}addFolder(e){try{const t=this.getMutableFileList();return!t.directories.includes(e)&&(t.directories.push(e),this.updateFileListCache(t).cacheUpdated)}catch(t){return console.error("Error adding folder:",t),!1}}moveFile(e,t,a=!1,i=""){try{let n=this.getMutableFileList();if(a){const t=n.directories.indexOf(e);-1!==t&&n.directories.splice(t,1)}else{const t=n.files.findIndex(t=>t.name===e);-1!==t&&n.files.splice(t,1)}if(t.startsWith(i)){const e=t.substring(i.length).split("/");if(e.length>1){const t=i+e[0];n.directories.includes(t)||n.directories.push(t)}}return this.updateFileListCache(n).cacheUpdated}catch(n){return console.error("Error moving file:",n),!1}}removeFile(e){try{let t=this.getMutableFileList();return t.files=t.files.filter(t=>t.name!==e),this.updateFileListCache(t).cacheUpdated}catch(t){return console.error("Error removing file:",t),!1}}removeFolder(e){try{let t=this.getMutableFileList();return t.files=t.files.filter(t=>!t.name.startsWith(e+"/")),t.directories=t.directories.filter(t=>t!==e),this.updateFileListCache(t).cacheUpdated}catch(t){return console.error("Error removing folder:",t),!1}}getFilesInFolder(e){try{const t=this.getMutableFileList(),a=t.files.filter(t=>t.name.startsWith(e+"/")),i=t.directories.filter(t=>t.startsWith(e+"/"));return{files:a,directories:i}}catch(t){return console.error("Error getting files in folder:",t),{files:[],directories:[]}}}buildFilterParams(e){let t="";return e.accessStatus&&e.accessStatus.length>0&&(t+=`&accessStatus=${encodeURIComponent(e.accessStatus.join(","))}`),e.listType&&e.listType.length>0&&(t+=`&listType=${encodeURIComponent(e.listType.join(","))}`),e.label&&e.label.length>0&&(t+=`&label=${encodeURIComponent(e.label.join(","))}`),e.fileType&&e.fileType.length>0&&(t+=`&fileType=${encodeURIComponent(e.fileType.join(","))}`),e.channel&&e.channel.length>0&&(t+=`&channel=${encodeURIComponent(e.channel.join(","))}`),e.channelName&&e.channelName.length>0&&(t+=`&channelName=${encodeURIComponent(e.channelName.join(","))}`),t}async refreshFileList(e,t="",a="",i="",n={}){t=t.trim();try{let s=`/api/manage/list?count=60&dir=${e}&search=${encodeURIComponent(t)}`;a&&(s+=`&includeTags=${encodeURIComponent(a)}`),i&&(s+=`&excludeTags=${encodeURIComponent(i)}`),s+=this.buildFilterParams(n);const r=await(0,D.A)(s,{method:"GET"}),o=await r.json();return o.isIndexedResponse||ye.nk.warning(gn.Ay.global.t("dashboard.indexingWarning")),this.updateFileListCache(o).cacheUpdated}catch(s){return console.error("Error refreshing file list:",s),!1}}async loadMoreFiles(e,t="",a="",i="",n=60,s={}){t=t.trim();try{const r=this.getMutableFileList(),o=r.files.length;let l=`/api/manage/list?dir=${e}&start=${o}&count=${n}&search=${encodeURIComponent(t)}`;a&&(l+=`&includeTags=${encodeURIComponent(a)}`),i&&(l+=`&excludeTags=${encodeURIComponent(i)}`),l+=this.buildFilterParams(s);const d=await(0,D.A)(l,{method:"GET"}),c=await d.json();return r.files.push(...c.files),this.updateFileListCache(r).cacheUpdated}catch(r){return console.error("Error loading more files:",r),{files:[],directories:[]}}}}const vn=new bn;var kn=a(62388),yn=a(48903),wn=a(90144);function _n(e,t){return!(e.right<=t.left||e.left>=t.right||e.bottom<=t.top||e.top>=t.bottom)}function Fn(e,t){const a=Math.min(e.x,t.x),i=Math.min(e.y,t.y),n=Math.abs(t.x-e.x),s=Math.abs(t.y-e.y);return{left:a,top:i,width:n,height:s,right:a+n,bottom:i+s}}function Cn(e){const{modes:t,mainSelector:a=".main-container",viewMode:i,items:n}=e,s=(0,wn.KR)(!1),r=(0,wn.KR)({left:0,top:0,width:0,height:0,right:0,bottom:0});let o=null,l=[],d=!1;const h=768;let u=!1;const f=50,m=10;let p=null,g="";function b(){const e=(0,wn.BA)(i);return t[e]||void 0}function v(){const e=(0,wn.BA)(i);return("card"===e||"list"===e)&&window.innerWidth>h}function k(){v()?u||A():u&&(z(),I())}function y(e){const t=e.target,i=t.closest(a);if(!i)return!1;const n=b();if(n){const e=t.closest(n.itemSelector);if(e){const t=(0,wn.BA)(n.containerRef);if(t&&t.contains(e))return!1}}const s=t.closest("button, a, input, .el-input, .el-dropdown, .el-checkbox, .el-breadcrumb, .el-pagination, .el-pager, .header-content, .breadcrumb-container");return!s}function w(e){return e.shiftKey||e.ctrlKey||e.metaKey}function _(){const e=(0,wn.BA)(n);l=e.map(e=>!!e.selected)}let F=0;function C(){function e(){const t=window.innerHeight;let a=0;F>=t-f?a=m:F<=f&&(a=-m),0!==a&&(window.scrollBy(0,a),o&&(o.y-=a,r.value=Fn(o,{x:r.value.right>=o.x?r.value.right:r.value.left,y:F}),$())),p=requestAnimationFrame(e)}null===p&&(p=requestAnimationFrame(e))}function T(){null!==p&&(cancelAnimationFrame(p),p=null)}function S(){g=document.body.style.userSelect,document.body.style.userSelect="none"}function L(){document.body.style.userSelect=g}function $(){const e=b();if(!e)return;const t=(0,wn.BA)(e.containerRef);if(!t)return;const a=(0,wn.BA)(n),i=r.value,s={left:i.left,top:i.top,right:i.right,bottom:i.bottom},o=t.querySelectorAll(e.itemSelector);a.forEach((e,t)=>{const a=o[t];if(!a)return;const i=a.getBoundingClientRect(),n={left:i.left,top:i.top,right:i.right,bottom:i.bottom},r=_n(s,n);d&&l[t]?e.selected=!0:e.selected=r})}function x(e){if(0===e.button&&y(e)){if(o={x:e.clientX,y:e.clientY},d=w(e),_(),!d){const e=(0,wn.BA)(n);e.forEach(e=>{e.selected=!1})}s.value=!0,r.value=Fn(o,o),S(),document.addEventListener("mousemove",E),document.addEventListener("mouseup",D)}}function E(e){if(!s.value||!o)return;const t={x:e.clientX,y:e.clientY};F=e.clientY,r.value=Fn(o,t),$();const a=window.innerHeight;F<=f||F>=a-f?C():T()}function D(e){s.value&&(T(),L(),s.value=!1,r.value={left:0,top:0,width:0,height:0,right:0,bottom:0},o=null,document.removeEventListener("mousemove",E),document.removeEventListener("mouseup",D))}function A(){u||(document.addEventListener("mousedown",x),u=!0)}function I(){u&&(document.removeEventListener("mousedown",x),u=!1)}function z(){s.value&&(T(),L(),s.value=!1,r.value={left:0,top:0,width:0,height:0,right:0,bottom:0},o=null,document.removeEventListener("mousemove",E),document.removeEventListener("mouseup",D))}function U(){k()}return(0,c.wB)(()=>(0,wn.BA)(i),()=>{z(),k()}),(0,c.sV)(()=>{v()&&A(),window.addEventListener("resize",U)}),(0,c.xo)(()=>{z(),L(),T(),I(),window.removeEventListener("resize",U)}),{isDragging:s,selectionRect:r}}const Tn=["time","size","rawName","fileName"],Sn=["asc","desc"];function Ln(e,t,a){try{const i=localStorage.getItem(e);return t.includes(i)?i:a}catch{return a}}var $n={name:"AdminDashBoard",mixins:[yn.A],data(){return{Number:0,directFileCount:0,directFolderCount:0,showLogoutButton:!1,tableData:[],tempSearch:"",search:"",searchKeywords:"",searchIncludeTags:"",searchExcludeTags:"",isSearchMode:!1,currentPage:1,pageSize:15,selectedFiles:[],sortField:Ln("sortField",Tn,"time"),sortOrder:Ln("sortOrder",Sn,"desc"),isUploading:!1,showdetailDialog:!1,detailFile:null,activeUrlTab:"originUrl",defaultUrlFormat:"originUrl",showUrlDialog:!1,useCustomUrl:"false",customUrlPrefix:"",loading:!1,currentPath:"",refreshLoading:!1,showTagDialog:!1,showBatchTagDialog:!1,currentTagFile:"",viewMode:"card",showMobileActionModal:!1,mobileActionFile:null,mobileActionIndex:-1,mobileActionIsFolder:!1,longPressTimer:null,showMobileDirectoryDrawer:!1,jumpPage:"",filters:{accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]},channelNameOptions:[],showMoveDialog:!1,moveTargetPath:"/",moveFileKey:"",moveFileIndex:-1,isBatchMove:!1,pageSwipeStartX:null,pageSwipeStartY:null,pageSwipeStartTime:0}},components:{DashboardTabs:oi.A,TagManagementDialog:Me,BatchTagDialog:Ce,SkeletonLoader:Ta,FileCard:ua,FolderCard:wa,FileListItem:Xt,FileDetailDialog:ct,BatchActionBar:kt,MobileActionSheet:Q,MobileDirectoryDrawer:X,DashboardCheckbox:Ia,FilterDropdown:ri,MoveFileDialog:U,LanguageSwitcher:pn.A},setup(){const e=(0,wn.KR)(null),t=(0,wn.KR)(null),a=(0,wn.KR)("card"),i=(0,wn.KR)([]),{isDragging:n,selectionRect:s}=Cn({modes:{card:{containerRef:e,itemSelector:".img-card"},list:{containerRef:t,itemSelector:".list-item"}},viewMode:a,items:i});return{cardContainerRef:e,listContainerRef:t,viewModeRef:a,itemsRef:i,isDragging:n,selectionRect:s}},computed:{...(0,un.L8)(["adminUrlSettings","userConfig"]),filteredTableData(){return this.tableData},totalPages(){return Math.ceil(this.filteredTableData.length/this.pageSize)||1},realTotalPages(){const e=this.directFolderCount+this.directFileCount;return Math.ceil(e/this.pageSize)||1},activeFilterCount(){return Object.values(this.filters).reduce((e,t)=>e+(Array.isArray(t)?t.length:0),0)},hasSearchOrFilter(){return this.isSearchMode||this.activeFilterCount>0},paginatedTableData(){const e=this.sortData(this.filteredTableData),t=(this.currentPage-1)*this.pageSize,a=t+this.pageSize;let i=e.slice(t,a);const n=i.filter(e=>this.isImage(e)).map(e=>this.getFileLink(e.name));return i.forEach(e=>{this.isImage(e)&&(e.previewSrcList=n.slice(n.indexOf(this.getFileLink(e.name))).concat(n.slice(0,n.indexOf(this.getFileLink(e.name)))))}),i.forEach(e=>{"TelegramNew"===e.metadata?.Channel||"Telegram"===e.metadata?.Channel?e.channelTag="TG":"CloudflareR2"===e.metadata?.Channel?e.channelTag="R2":"S3"===e.metadata?.Channel?e.channelTag="S3":"Discord"===e.metadata?.Channel?e.channelTag="DC":"HuggingFace"===e.metadata?.Channel?e.channelTag="HF":"WebDAV"===e.metadata?.Channel?e.channelTag="WD":"External"===e.metadata?.Channel?e.channelTag=this.$t("dashboard.externalTag"):e.channelTag=this.$t("dashboard.unknownTag")}),i},sortLabel(){const e={time:"dashboard.sortByTime",size:"dashboard.sortBySize",rawName:"dashboard.sortByRawName",fileName:"dashboard.sortByFileName"},t=this.$t(e[this.sortField]||e.time),a=this.$t("desc"===this.sortOrder?"dashboard.sortDesc":"dashboard.sortAsc");return`${t} · ${a}`},dialogWidth(){return window.innerWidth>768?"50%":"90%"},detailDialogWidth(){return window.innerWidth>768?"70%":"90%"},accessType(){return"White"===this.detailFile?.metadata?.ListType?this.$t("filter.normal"):"Block"===this.detailFile?.metadata?.ListType||"adult"===this.detailFile?.metadata?.Label?this.$t("filter.blocked"):this.$t("filter.normal")},allUrl(){return"External"===this.detailFile?.metadata?.Channel?{originUrl:`${this.detailFile?.metadata?.ExternalLink}`,mdUrl:`![${this.detailFile?.metadata?.FileName||this.detailFile?.name}](${this.detailFile?.metadata?.ExternalLink})`,htmlUrl:`${this.detailFile?.metadata?.FileName||this.detailFile?.name}`,bbUrl:`[img]${this.detailFile?.metadata?.ExternalLink}[/img]`,tgId:this.detailFile?.metadata?.TgFileId||this.$t("fileDetail.unknown"),S3Location:this.detailFile?.metadata?.S3Location||this.$t("fileDetail.unknown"),S3CdnFileUrl:this.detailFile?.metadata?.S3CdnFileUrl||this.$t("fileDetail.unknown")}:{originUrl:`${this.rootUrl}${this.detailFile?.name}`,mdUrl:`![${this.detailFile?.metadata?.FileName||this.detailFile?.name}](${this.rootUrl}${this.detailFile?.name})`,htmlUrl:`${this.detailFile?.metadata?.FileName||this.detailFile?.name}`,bbUrl:`[img]${this.rootUrl}${this.detailFile?.name}[/img]`,tgId:this.detailFile?.metadata?.TgFileId||this.$t("fileDetail.unknown"),S3Location:this.detailFile?.metadata?.S3Location||this.$t("fileDetail.unknown"),S3CdnFileUrl:this.detailFile?.metadata?.S3CdnFileUrl||this.$t("fileDetail.unknown")}},tableColumnNum(){return window.innerWidth>768?3:1},tablePreviewSpan(){return window.innerWidth>768?2:1},disableTooltip(){return window.innerWidth<768},selectPage(){return this.paginatedTableData.every(e=>e.selected)},selectedPageFiles(){return this.paginatedTableData.some(e=>e.selected)},rootUrl(){return"true"===this.useCustomUrl?this.customUrlPrefix:this.userConfig?.urlPrefix||`${document.location.origin}/file/`},isSelectAll:{get(){return this.paginatedTableData.length>0&&this.paginatedTableData.every(e=>e.selected)},set(e){this.paginatedTableData.forEach(t=>t.selected=e)}},isIndeterminate(){const e=this.paginatedTableData.filter(e=>e.selected).length;return e>0&&ee.selected&&!this.selectedFiles.includes(e))),this.selectedFiles=this.selectedFiles.filter(e=>e.selected),this.selectedFiles=this.selectedFiles.filter(t=>e.includes(t))},deep:!0},defaultUrlFormat(e){localStorage.setItem("defaultUrlFormat",e)},showdetailDialog(e){e&&(this.activeUrlTab=this.defaultUrlFormat||"originUrl")},customUrlPrefix(e){this.$store.commit("setAdminUrlSettings",{key:"customUrlPrefix",value:e})},useCustomUrl(e){this.$store.commit("setAdminUrlSettings",{key:"useCustomUrl",value:e})},currentPath(e){this.tableData.forEach(e=>e.selected=!1)}},methods:{setViewMode(e){this.viewMode!==e&&(this.viewMode=e,localStorage.setItem("viewMode",this.viewMode))},handleSelectAllPage(e){this.paginatedTableData.forEach(t=>t.selected=e)},handleTouchStart(e,t){this.longPressTimer=setTimeout(()=>{this.mobileActionFile=e,this.mobileActionIndex=t,this.mobileActionIsFolder=!1,this.showMobileActionModal=!0},500)},handleTouchEnd(){this.longPressTimer&&(clearTimeout(this.longPressTimer),this.longPressTimer=null)},handleFolderTouchStart(e,t){this.longPressTimer=setTimeout(()=>{this.mobileActionFile=e,this.mobileActionIndex=t,this.mobileActionIsFolder=!0,this.showMobileActionModal=!0},500)},handleMobileAction(e){const t=this.mobileActionFile,a=this.mobileActionIndex;if(this.showMobileActionModal=!1,t)switch(e){case"detail":this.openDetailDialog(a,t.name);break;case"copy":this.handleCopy(a,t.name);break;case"folderCopy":this.handleFolderCopy(t.name);break;case"download":this.handleDownload(t.name);break;case"move":this.handleMove(a,t.name);break;case"delete":this.handleDelete(a,t.name);break;case"tag":this.handleTagManagement(t.name);break}},handleGoBack(){const e=this.currentPath.split("/").filter(Boolean);if(e.length>0){e.pop();const t=e.join("/");this.navigateToFolder(t)}this.showMobileDirectoryDrawer=!1},getTagColor(e){const t=["linear-gradient(135deg, #667eea 0%, #764ba2 100%)","linear-gradient(135deg, #f093fb 0%, #f5576c 100%)","linear-gradient(135deg, #4facfe 0%, #00f2fe 100%)","linear-gradient(135deg, #43e97b 0%, #38f9d7 100%)","linear-gradient(135deg, #fa709a 0%, #fee140 100%)","linear-gradient(135deg, #a8edea 0%, #fed6e3 100%)"];return t[e%t.length]},handleVideoHover(e,t){const a=e.target;t?a.play().catch(()=>{}):(a.pause(),a.currentTime=0)},formatFileSize(e){if(!e||0===e)return"-";if(e=Number(e),isNaN(e))return"-";const t=["B","KB","MB","GB","TB"];let a=0;while(e>=1024&&a0?1:0)+" "+t[a]},handleSearch(){if(this.search=this.tempSearch,this.isSearchMode=""!==this.search.trim(),this.currentPage=1,this.search&&this.search.trim()){const e=[],t=[];let a=this.search;const i=/-#([\w\u4e00-\u9fa5\u3040-\u309f\u30a0-\u30ff\uac00-\ud7af\.\+\-]+)/g;a=a.replace(i,(e,a)=>(t.push(a.toLowerCase())," "));const n=/#([\w\u4e00-\u9fa5\u3040-\u309f\u30a0-\u30ff\uac00-\ud7af\.\+\-]+)/g;a=a.replace(n,(t,a)=>(e.push(a.toLowerCase())," ")),this.searchKeywords=a.replace(/\s+/g," ").trim(),this.searchIncludeTags=e.join(","),this.searchExcludeTags=t.join(","),console.log("Search keywords:",this.searchKeywords),console.log("Include tags:",this.searchIncludeTags),console.log("Exclude tags:",this.searchExcludeTags)}else this.searchKeywords="",this.searchIncludeTags="",this.searchExcludeTags="";this.refreshFileList()},handleFilterChange({type:e,filters:t}){this.filters=t,this.currentPage=1,this.refreshFileList()},clearFilters(){this.filters={listType:[],label:[],fileType:[],channel:[],channelName:[]},this.currentPage=1,this.refreshFileList()},async extractChannelNames(){try{const e=await(0,D.A)("/api/channels?includeDisabled=true",{method:"GET"});if(e.ok){const t=await e.json(),a=[],i={telegram:"Telegram",cfr2:"Cloudflare R2",s3:"S3",discord:"Discord",huggingface:"HuggingFace",webdav:"WebDAV"};Object.entries(t).forEach(([e,t])=>{Array.isArray(t)&&t.length>0&&t.forEach(t=>{t.name&&a.push({name:t.name,type:t.type,typeLabel:i[e]||e,value:`${t.type}:${t.name}`})})}),a.sort((e,t)=>e.type!==t.type?e.type.localeCompare(t.type):e.name.localeCompare(t.name)),this.channelNameOptions=a}}catch(e){console.error("Failed to fetch channel names:",e)}},handleDownload(e){const t=document.createElement("a");t.href=this.getFileLink(e),t.download=e,t.click()},openDetailDialog(e,t){this.detailFile=this.paginatedTableData[e],this.showdetailDialog=!0},handleTabClick(e){this.activeUrlTab=e.props.name},handleUrlClick(e){navigator.clipboard.writeText(e.target.value).then(()=>{this.$message({type:"success",message:this.$t("dashboard.copySuccess")})}).catch(()=>{this.$message({type:"error",message:this.$t("dashboard.copyFailed")})})},handleDetailDelete(e){this.$confirm(this.$t("dashboard.deleteConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{(0,D.A)(`/api/manage/delete/${e}`,{method:"GET"}).then(t=>{if(!t.ok)return Promise.reject("Request failed");{const t=this.tableData.findIndex(t=>t.name===e);-1!==t&&this.tableData.splice(t,1)}}).then(()=>{this.updateStats(-1,!1),this.$message.success(this.$t("dashboard.deleteSuccess")),this.showdetailDialog=!1}).catch(()=>this.$message.error(this.$t("dashboard.deleteFailed")))}).catch(()=>console.log("Delete cancelled"))},handleBlock(e){this.$confirm(this.$t("dashboard.blockConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{(0,D.A)(`/api/manage/block/${e}`,{method:"GET"}).then(t=>{if(!t.ok)return Promise.reject("Request failed");{const t=this.tableData.findIndex(t=>t.name===e);-1!==t&&(this.tableData[t].metadata.ListType="Block")}}).then(()=>{this.$message.success(this.$t("dashboard.blockSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.blockFailed")))}).catch(()=>console.log("Block cancelled"))},handleWhite(e){this.$confirm(this.$t("dashboard.whiteConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{(0,D.A)(`/api/manage/white/${e}`,{method:"GET"}).then(t=>{if(!t.ok)return Promise.reject("Request failed");{const t=this.tableData.findIndex(t=>t.name===e);-1!==t&&(this.tableData[t].metadata.ListType="White")}}).then(()=>{this.$message.success(this.$t("dashboard.whiteSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.whiteFailed")))}).catch(()=>console.log("White cancelled"))},handleDelete(e,t){const a=this.tableData.find(e=>e.name===t).isFolder;this.$confirm(a?this.$t("dashboard.deleteFolderConfirm"):this.$t("dashboard.deleteFileConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{(0,D.A)(`/api/manage/delete/${t}?folder=${a}`,{method:"GET"}).then(e=>{if(!e.ok)return Promise.reject("Request failed");{const e=this.tableData.findIndex(e=>e.name===t);-1!==e&&this.tableData.splice(e,1)}}).then(()=>{this.updateStats(-1,!1),vn.removeFile(t),this.$message.success(this.$t("dashboard.deleteSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.deleteFailed")))}).catch(()=>console.log("Delete cancelled"))},handleBatchDelete(){this.$confirm(this.$t("dashboard.batchDeleteConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{const e=this.selectedFiles.map(e=>{const t=e.isFolder;return(0,D.A)(`/api/manage/delete/${e.name}?folder=${t}`,{method:"GET"})});Promise.all(e).then(e=>{let t=0;e.forEach((e,a)=>{if(e.ok){t++;const e=this.tableData.findIndex(e=>e.name===this.selectedFiles[a].name);-1!==e&&this.tableData.splice(e,1),vn.removeFile(this.selectedFiles[a].name)}}),this.selectedFiles=[],this.updateStats(-t,!1),this.$message.success(this.$t("dashboard.batchDeleteSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.batchDeleteFailed")))}).catch(()=>console.log("Batch delete cancelled"))},async handleBatchCopy(){const e=this.selectedFiles.filter(e=>!e.isFolder),t=this.selectedFiles.filter(e=>e.isFolder);let a=null;t.length>0&&(a=this.$loading({lock:!0,text:this.$t("dashboard.fetchingFileList")}));try{let n=[...e];for(const e of t)try{const t=await(0,D.A)(`/api/manage/list?dir=${encodeURIComponent(e.name)}&recursive=true&count=-1`,{method:"GET"}),a=await t.json();a.files&&a.files.length>0&&(n=n.concat(a.files))}catch(i){console.error(`获取文件夹 ${e.name} 内容失败:`,i)}if(a&&a.close(),0===n.length)return void this.$message.warning(this.$t("dashboard.noLinksAvailable"));const s=n.map(e=>this.generateFileLink(e.name,e.metadata)).filter(e=>e);if(0===s.length)return void this.$message.warning(this.$t("dashboard.noLinksAvailable"));const r=s.join("\n");navigator.clipboard?(await navigator.clipboard.writeText(r),this.$message.success(this.$t("dashboard.batchCopySuccess",{count:s.length}))):this.copyToClipboardFallback(r)}catch(i){a&&a.close(),console.error("Batch copy failed:",i),this.$message.error(this.$t("dashboard.batchCopyFailed"))}},copyToClipboardFallback(e){const t=document.createElement("textarea");document.body.appendChild(t),t.style.position="fixed",t.style.clip="rect(0 0 0 0)",t.style.top="10px",t.value=e,t.select(),document.execCommand("copy"),document.body.removeChild(t),this.$message.success(this.$t("dashboard.batchCopyLinksSuccess"))},handleCopy(e,t){let a="";if("External"===this.paginatedTableData[e].metadata?.Channel)switch(this.defaultUrlFormat){case"originUrl":a=this.paginatedTableData[e].metadata?.ExternalLink;break;case"mdUrl":a=`![${this.paginatedTableData[e].metadata?.FileName||t}](${this.paginatedTableData[e].metadata?.ExternalLink})`;break;case"htmlUrl":a=`${this.paginatedTableData[e].metadata?.FileName||t}`;break;case"bbUrl":a=`[img]${this.paginatedTableData[e].metadata?.ExternalLink}[/img]`;break;case"tgId":a=this.paginatedTableData[e].metadata?.TgFileId||"none";break;case"s3Location":a=this.paginatedTableData[e].metadata?.S3Location||"none";break}else switch(this.defaultUrlFormat){case"originUrl":a=`${this.rootUrl}${t}`;break;case"mdUrl":a=`![${this.paginatedTableData[e].metadata?.FileName||t}](${this.rootUrl}${t})`;break;case"htmlUrl":a=`${this.paginatedTableData[e].metadata?.FileName||t}`;break;case"bbUrl":a=`[img]${this.rootUrl}${t}[/img]`;break;case"tgId":a=this.paginatedTableData[e].metadata?.TgFileId||"none";break;case"s3Location":a=this.paginatedTableData[e].metadata?.S3Location||"none";break}navigator.clipboard?navigator.clipboard.writeText(a).then(()=>this.$message.success(this.$t("dashboard.copyFileLinkSuccess"))):this.copyToClipboardFallback(a)},async loadMoreData(){this.loading=!0;try{await vn.loadMoreFiles(this.currentPath,this.searchKeywords,this.searchIncludeTags,this.searchExcludeTags,60,this.filters),await this.fetchFileList()}catch(e){this.$message.error(this.$t("dashboard.loadMoreFailed"))}finally{this.loading=!1}},updateStats(e,t=!1){t?this.Number=e:this.Number+=e},setSortField(e){Tn.includes(e)&&(this.sortField=e,this.currentPage=1,localStorage.setItem("sortField",e))},setSortOrder(e){Sn.includes(e)&&(this.sortOrder=e,this.currentPage=1,localStorage.setItem("sortOrder",e))},sortData(e){if(!Array.isArray(e))return[];const t=e.filter(e=>e.isFolder),a=e.filter(e=>!e.isFolder),i=e=>{const t=e=>{if(null===e||void 0===e||""===e)return null;const t=Number(e);return Number.isFinite(t)?t:null},a=t(e.metadata?.FileSizeBytes);if(null!==a)return a;const i=t(e.metadata?.FileSize);return null!==i?1024*i*1024:t(e.size)??0},n=e=>{switch(this.sortField){case"size":return i(e);case"rawName":return e.metadata?.RawName||e.name||"";case"fileName":return e.metadata?.FileName||e.name||"";case"time":default:return e.metadata?.TimeStamp?new Date(e.metadata.TimeStamp).getTime():0}},s=(e,t)=>{const a=n(e),i=n(t);let s=0;return s="string"===typeof a||"string"===typeof i?String(a||"").localeCompare(String(i||"")):a-i,"desc"===this.sortOrder?-s:s};return t.sort(s),a.sort(s),t.concat(a)},handleVideoClick(e){const t=e.target;t.requestFullscreen?t.requestFullscreen():t.webkitRequestFullscreen?t.webkitRequestFullscreen():t.mozRequestFullScreen?t.mozRequestFullScreen():t.msRequestFullscreen&&t.msRequestFullscreen()},handleLogout(){const e="/api/auth/logout";fetch(e,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({authType:"admin"})}).finally(()=>{this.$store.commit("setAdminLoggedIn",!1),this.$router.push("/adminLogin")})},handleSelectPage(){this.selectPage?this.paginatedTableData.forEach(e=>e.selected=!1):this.paginatedTableData.forEach(e=>e.selected=!0)},clearSelection(){this.tableData.forEach(e=>e.selected=!1),this.selectedFiles=[]},handleBatchAction(e){"copy"===e?this.handleBatchCopy():"delete"===e?this.handleBatchDelete():"download"===e?this.handleBatchDownload():"move"===e?this.handleBatchMove():"tagManagement"===e?this.handleBatchTagManagement():"ban"===e?this.handleBatchBlock():"white"===e&&this.handleBatchWhite()},handleMove(e,t){this.moveFileKey=t,this.moveFileIndex=e,this.isBatchMove=!1,this.moveTargetPath="/",this.showMoveDialog=!0},handleBatchMove(){this.isBatchMove=!0,this.moveTargetPath="/",this.showMoveDialog=!0},confirmMove(e){const t=e,a=(0,kn.G)(t);if(!a.valid)return void this.$message.error(a.error);const i=t.replace(/^\/+/,"")+(t.endsWith("/")||""===t?"":"/");i!==this.currentPath?(this.showMoveDialog=!1,this.isBatchMove?this.executeBatchMove(i):this.executeSingleMove(i)):this.$message.warning(this.$t("dashboard.moveTargetSameAsCurrent"))},executeSingleMove(e){const t=this.moveFileKey,a=this.tableData.find(e=>e.name===t)?.isFolder;(0,D.A)(`/api/manage/move/${t}?folder=${a}&dist=${encodeURIComponent(e)}`,{method:"GET"}).then(i=>{if(!i.ok)return Promise.reject("Request failed");{const i=this.tableData.findIndex(e=>e.name===t);if(-1!==i){const n=e+t.split("/").pop();vn.moveFile(t,n,a,this.currentPath),this.tableData.splice(i,1),this.$nextTick(()=>{const e=[...this.tableData];this.tableData=[],this.$nextTick(()=>{this.tableData=e})})}this.updateStats(-1,!1),this.$message.success(this.$t("dashboard.moveSuccess"))}}).then(()=>{this.refreshLocalFileList()}).catch(()=>this.$message.error(this.$t("dashboard.moveFailed")))},executeBatchMove(e){const t=this.selectedFiles.map(t=>{const a=t.isFolder;return(0,D.A)(`/api/manage/move/${t.name}?folder=${a}&dist=${encodeURIComponent(e)}`,{method:"GET"})});Promise.all(t).then(t=>{let a=0;t.forEach((t,i)=>{if(t.ok){a++;const t=this.selectedFiles[i];t.selected=!1;const n=this.tableData.findIndex(e=>e.name===t.name);if(-1!==n){const a=e+t.name.split("/").pop();vn.moveFile(t.name,a,t.isFolder,this.currentPath),this.tableData.splice(n,1)}}}),this.$nextTick(()=>{const e=[...this.tableData];this.tableData=[],this.$nextTick(()=>{this.tableData=e})}),this.updateStats(-a,!1),this.$message.success(this.$t("dashboard.moveSuccess"))}).then(()=>{this.refreshLocalFileList()}).catch(()=>this.$message.error(this.$t("dashboard.moveFailed")))},handleBatchBlock(){this.$confirm(this.$t("dashboard.batchBlockConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{const e=this.selectedFiles.map(e=>e.isFolder?Promise.resolve({ok:!1}):(0,D.A)(`/api/manage/block/${e.name}`,{method:"GET"}));Promise.all(e).then(e=>{e.forEach((e,t)=>{if(e.ok){const e=this.tableData.findIndex(e=>e.name===this.selectedFiles[t].name);-1!==e&&(this.tableData[e].metadata.ListType="Block")}}),this.$message.success(this.$t("dashboard.batchBlockSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.batchBlockFailed")))}).catch(()=>console.log("Batch block cancelled"))},handleBatchWhite(){this.$confirm(this.$t("dashboard.batchWhiteConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{const e=this.selectedFiles.map(e=>e.isFolder?Promise.resolve({ok:!1}):(0,D.A)(`/api/manage/white/${e.name}`,{method:"GET"}));Promise.all(e).then(e=>{e.forEach((e,t)=>{if(e.ok){const e=this.tableData.findIndex(e=>e.name===this.selectedFiles[t].name);-1!==e&&(this.tableData[e].metadata.ListType="White")}}),this.$message.success(this.$t("dashboard.batchWhiteSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.batchWhiteFailed")))}).catch(()=>console.log("Batch white cancelled"))},handleBatchDownload(){const e=new(mn()),t=e.folder("files"),a={},i=this.selectedFiles.map(async e=>{if(e.isFolder)return;const i=await fetch(this.getFileLink(e.name)),n=await i.blob();let s=e.metadata?.FileName||e.name;if(a[s]){const t=s.substring(s.lastIndexOf(".")),i=s.substring(0,s.lastIndexOf("."));s=`${i}(${a[s]})${t}`,a[e.name]++}else a[s]=1;t.file(s,n)});Promise.all(i).then(()=>e.generateAsync({type:"blob"})).then(e=>{const t=document.createElement("a");t.href=URL.createObjectURL(e),t.download="files.zip",t.click()})},isVideo(e){if(this.isAudio(e))return!1;let t=e.metadata?.FileType?.includes("video");if(!t){const a=["mp4","webm","ogg","avi","mov","flv","wmv","mkv","rmvb","3gp","mpg","mpeg","m4v","f4v","rm","asf","dat","ts","vob","swf","divx","xvid","m2ts","mts","m2v","3g2","3gp2","3gpp","3gpp2","mpe","m1v","mpv","mpv2","mp2v","m2t","m2ts","m2v","m4v"],i=e.name.substring(e.name.lastIndexOf(".")+1).toLowerCase();t=a.includes(i)}return t},isAudio(e){let t=e.metadata?.FileType?.includes("audio");if(!t){const a=["mp3","wav","flac","aac","ogg","wma","m4a","ape","aiff","alac","opus","mid","midi","m4b","m4p","m4r","amr","au","ra","ram"],i=e.name.substring(e.name.lastIndexOf(".")+1).toLowerCase();t=a.includes(i)}return t},isImage(e){let t=e.metadata?.FileType?.includes("image");if(!t){const a=["jpg","jpeg","png","gif","bmp","webp","svg","ico","tiff","tif","psd","ai","eps","raw","cr2","nef","orf","sr2","dng","arw","rw2","raf","pef","x3f","srf","erf","mrw","nrw","kdc","dcr","mef","mos","crw","raf","rwl","srw","3fr","fff","iiq","qtk","bay","k25","kdc","dcs","drf","dng","erf","kdc","mdc","mef","mos","mrw","nef","nrw","orf","pef","ptx","pxn","r3d","raf","raw","rwl","rw2","rwz","sr2","srf","x3f"],i=e.name.substring(e.name.lastIndexOf(".")+1).toLowerCase();t=a.includes(i)}return t},getFileLink(e){const t=`/file/${e}?from=admin`;return t},handlePageChange(e){this.currentPage=e,this.currentPage===Math.ceil(this.tableData.length/this.pageSize)&&this.loadMoreData()},isMobileViewport(){return window.innerWidth<768},updateResponsivePageSize(){const e=this.isMobileViewport()?16:15;if(this.pageSize===e)return;const t=(this.currentPage-1)*this.pageSize;this.pageSize=e,this.currentPage=Math.min(Math.floor(t/e)+1,this.realTotalPages)},isSwipeIgnoredTarget(e){return Boolean(e?.closest?.("button, a, input, textarea, select, .el-checkbox, .action-btn, .list-action-btn"))},handlePageSwipeStart(e){if(!this.isMobileViewport()||this.isDragging||this.loading||this.showMobileActionModal||this.showMobileDirectoryDrawer||this.isSwipeIgnoredTarget(e.target))return void this.resetPageSwipe();const t=e.touches?.[0];t&&(this.pageSwipeStartX=t.clientX,this.pageSwipeStartY=t.clientY,this.pageSwipeStartTime=Date.now())},async handlePageSwipeEnd(e){if(null===this.pageSwipeStartX||null===this.pageSwipeStartY)return;const t=e.changedTouches?.[0];if(!t)return void this.resetPageSwipe();const a=t.clientX-this.pageSwipeStartX,i=t.clientY-this.pageSwipeStartY,n=Date.now()-this.pageSwipeStartTime;if(this.resetPageSwipe(),n>700||Math.abs(a)<64||Math.abs(a)<1.35*Math.abs(i))return;const s=a<0?this.currentPage+1:this.currentPage-1;await this.goToSwipePage(s)},resetPageSwipe(){this.pageSwipeStartX=null,this.pageSwipeStartY=null,this.pageSwipeStartTime=0},async goToSwipePage(e){e<1||e>this.realTotalPages||e===this.currentPage||(e>this.totalPages?await this.loadMoreDataUntilPage(e):this.handlePageChange(e))},handleJumpPage(){const e=parseInt(this.jumpPage);isNaN(e)||e<1?this.$message.warning(this.$t("dashboard.invalidPageNumber")):e>this.realTotalPages?this.$message.warning(this.$t("dashboard.pageExceedsMax",{max:this.realTotalPages})):(e>this.totalPages?(this.$message.info(this.$t("dashboard.loadingData")),this.loadMoreDataUntilPage(e)):this.currentPage=e,this.jumpPage="")},async loadMoreDataUntilPage(e){this.loading=!0;try{const t=e*this.pageSize,a=this.filteredTableData.filter(e=>e.isFolder).length,i=this.filteredTableData.filter(e=>!e.isFolder).length,n=Math.max(0,t-a-i);n>0&&(await vn.loadMoreFiles(this.currentPath,this.searchKeywords,this.searchIncludeTags,this.searchExcludeTags,n,this.filters),await this.fetchFileList()),this.currentPage=Math.min(e,this.totalPages)}catch(t){this.$message.error(this.$t("dashboard.loadDataFailed"))}finally{this.loading=!1}},isFolder(e){if(e.isFolder)return!0;let t=e.name;if(t.startsWith("http")&&(t=t.split("/file/")[1]),t&&t.includes("/")){const e=this.currentPath?t.substring(this.currentPath.length):t;return""===this.currentPath?!t.split("/")[0].includes("."):e.includes("/")}return!1},getFolderName(e){let t="";if(e&&e.includes("/")){const a=e.split("/");if(""===this.currentPath)t=a[0];else{const a=e.substring(this.currentPath.length);t=a.split("/")[0]}}else t=e;const a=20;if(t.length>a){const e=Math.floor((a-3)/2),i=Math.ceil((a-3)/2);return`${t.substring(0,e)}...${t.substring(t.length-i)}`}return t},getFileName(e){let t=e.split("/").pop();const a=20;if(t.length>a){const e=Math.floor((a-3)/2),i=Math.ceil((a-3)/2);return`${t.substring(0,e)}...${t.substring(t.length-i)}`}return t},getFileNameStart(e){if(!e)return"";if(e.length<=30)return e;const t=e.lastIndexOf(".");if(t>0){const a=e.substring(0,t),i=Math.min(a.length,Math.floor(.6*e.length));return a.substring(0,i)}return e.substring(0,Math.floor(.6*e.length))},getFileNameEnd(e){if(!e)return"";if(e.length<=30)return"";const t=e.lastIndexOf(".");if(t>0){const a=e.substring(t),i=e.substring(0,t),n=Math.min(8,Math.floor(.2*i.length));return"…"+i.substring(i.length-n)+a}const a=Math.min(10,Math.floor(.3*e.length));return"…"+e.substring(e.length-a)},enterFolder(e){this.currentPage=1,this.currentPath=e+(e.endsWith("/")?"":"/"),this.refreshFileList()},navigateToFolder(e){this.currentPage=1,this.currentPath=e?e+(e.endsWith("/")?"":"/"):"",this.refreshFileList()},async fetchFileList(){this.loading=!0;try{const e=vn.getLocalFileList(),t=new Set(e.directories||[]),a=e.files||[],i=Array.from(t).map(e=>({name:e,isFolder:!0,selected:!1,metadata:{FileName:e.split("/").pop()}})),n=a.map(e=>({name:e.name,isFolder:!1,selected:!1,metadata:e.metadata}));this.tableData=[...i,...n],this.updateStats(e.totalCount,!0),this.directFileCount=e.directFileCount||0,this.directFolderCount=e.directFolderCount||0}catch(e){console.error("Error fetching file list:",e),this.$message.error(this.$t("dashboard.fetchFileListFailed"))}finally{this.loading=!1}},async refreshFileList(){this.refreshLoading=!0,this.loading=!0;try{const e=await vn.refreshFileList(this.currentPath,this.searchKeywords,this.searchIncludeTags,this.searchExcludeTags,this.filters);if(!e)throw new Error("Refresh failed");await this.fetchFileList()}catch(e){!e.message?.includes("Unauthorized")&&this.$store.state.adminLoggedIn&&(console.error("Error refreshing file list:",e),this.$message.error(this.$t("dashboard.refreshFailed")))}finally{this.refreshLoading=!1,this.loading=!1}},async refreshLocalFileList(){this.refreshLoading=!0,this.loading=!0;try{await this.fetchFileList()}catch(e){console.error("Error refreshing local file list:",e),this.$message.error(this.$t("dashboard.refreshFailed"))}finally{this.refreshLoading=!1,this.loading=!1}},handleTagManagement(e){this.currentTagFile=e,this.showTagDialog=!0},handleBatchTagManagement(){0!==this.selectedFiles.length?this.showBatchTagDialog=!0:this.$message.warning(this.$t("dashboard.selectFilesFirst"))},async handleTagsUpdated(e){const t=this.tableData.findIndex(e=>e.name===this.currentTagFile);-1!==t&&(this.tableData[t].metadata||(this.tableData[t].metadata={}),this.tableData[t].metadata.Tags=e,this.showdetailDialog&&this.detailFile?.name===this.currentTagFile&&(this.detailFile.metadata||(this.detailFile.metadata={}),this.detailFile.metadata.Tags=e))},async handleBatchTagsUpdated(){await this.refreshLocalFileList()},handleMetadataUpdated(e,t){const a=this.tableData.findIndex(t=>t.name===e);-1!==a&&(this.tableData[a].metadata={...this.tableData[a].metadata,...t}),this.detailFile&&this.detailFile.name===e&&(this.detailFile.metadata={...this.detailFile.metadata,...t})},handleFileRenamed(e,t,a){const i=this.tableData.findIndex(t=>t.name===e);-1!==i&&(this.tableData[i].name=t,this.tableData[i].metadata={...this.tableData[i].metadata,...a}),this.detailFile&&this.detailFile.name===e&&(this.detailFile.name=t,this.detailFile.metadata={...this.detailFile.metadata,...a},this.showdetailDialog=!1,this.$nextTick(()=>{this.showdetailDialog=!0}))},generateFileLink(e,t){const a="External"===t?.Channel,i=a?t?.ExternalLink:`${this.rootUrl}${e}`,n=t?.FileName||e;switch(this.defaultUrlFormat){case"originUrl":return i;case"mdUrl":return`![${n}](${i})`;case"htmlUrl":return`${n}`;case"bbUrl":return`[img]${i}[/img]`;case"tgId":return t?.TgFileId||"";case"s3Location":return t?.S3Location||"";default:return i}},async handleFolderCopy(e){const t=this.$loading({lock:!0,text:this.$t("dashboard.fetchingFileList")});try{const a=await(0,D.A)(`/api/manage/list?dir=${encodeURIComponent(e)}&recursive=true&count=-1`,{method:"GET"}),i=await a.json();if(t.close(),!i.files||0===i.files.length)return void this.$message.warning(this.$t("dashboard.folderEmptyNoLinks"));const n=i.files.map(e=>this.generateFileLink(e.name,e.metadata)).filter(e=>e);if(0===n.length)return void this.$message.warning(this.$t("dashboard.noLinksAvailable"));const s=n.join("\n");navigator.clipboard?(await navigator.clipboard.writeText(s),this.$message.success(this.$t("dashboard.copiedFileLinks",{count:n.length}))):(this.copyToClipboardFallback(s),this.$message.success(this.$t("dashboard.copiedFileLinks",{count:n.length})))}catch(a){t.close(),console.error("Copy folder links failed:",a),this.$message.error(this.$t("dashboard.copyFolderLinksFailed"))}}},mounted(){this.initializeBackground("adminBkImg",".container",!1,!0),this.updateResponsivePageSize(),window.addEventListener("resize",this.updateResponsivePageSize),this.loading=!0,this.showLogoutButton=this.$store.state.adminLoggedIn,this.refreshFileList().then(()=>this.extractChannelNames()).catch(e=>{"Unauthorized"!==e.message&&this.$message.error(this.$t("dashboard.syncDataError"))}).finally(()=>{this.loading=!1}),this.customUrlPrefix=this.adminUrlSettings.customUrlPrefix,this.useCustomUrl=this.adminUrlSettings.useCustomUrl;const e=localStorage.getItem("viewMode");"card"!==e&&"list"!==e||(this.viewMode=e)},beforeUnmount(){window.removeEventListener("resize",this.updateResponsivePageSize)}};const xn=(0,I.A)($n,[["render",hn],["__scopeId","data-v-84ee336e"]]);var En=xn},15616:function(e,t,a){"use strict";a(85331),a(97197)},23597:function(e,t,a){"use strict";a(85331)},33892:function(e,t,a){"use strict";a.d(t,{A:function(){return S}});var i=a(99114),n=(a(85331),a(30694),a(49385)),s=(a(37952),a(30650)),r=(a(19104),a(31802)),o=(a(13378),a(80047)),l=(a(99648),a(56768)),d=a(45130),c=a(24232);const h={class:"directory-tree-picker"},u={class:"tree-container"},f={key:0,class:"error-state"},m={class:"error-text"},p={class:"node-label"},g={class:"tree-container"},b={key:0,class:"error-state"},v={class:"error-text"},k={class:"node-label"};function y(e,t,a,y,w,_){const F=(0,l.g2)("font-awesome-icon"),C=o.S2,T=r.qk,S=s.Vc,L=n.pw,$=i.A;return(0,l.uX)(),(0,l.CE)("div",h,[_.isDesktop?((0,l.uX)(),(0,l.Wv)(S,{key:0,visible:w.popoverVisible,"onUpdate:visible":t[1]||(t[1]=e=>w.popoverVisible=e),placement:"bottom-start",width:320,trigger:"click","popper-class":"directory-tree-popover","show-arrow":!0,"hide-after":0,"show-after":50,transition:"el-zoom-in-top"},{reference:(0,l.k6)(()=>[(0,l.Lk)("span",{class:"popover-trigger-wrapper",onClick:t[0]||(t[0]=(0,d.D$)(()=>{},["stop"]))},[(0,l.RG)(e.$slots,"trigger",{},void 0,!0)])]),default:(0,l.k6)(()=>[(0,l.bo)(((0,l.uX)(),(0,l.CE)("div",u,[w.error?((0,l.uX)(),(0,l.CE)("div",f,[(0,l.bF)(F,{icon:"exclamation-circle",class:"error-icon"}),(0,l.Lk)("span",m,(0,c.v_)(w.error),1),(0,l.bF)(C,{type:"primary",size:"small",onClick:_.fetchDirectoryTree},{default:(0,l.k6)(()=>[(0,l.eW)((0,c.v_)(e.$t("directoryTree.retry")),1)]),_:1},8,["onClick"])])):((0,l.uX)(),(0,l.Wv)(T,{key:1,ref:"treeRef",data:w.treeData,props:w.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":a.currentDirectory,class:"directory-tree",onNodeClick:_.handleNodeClick},{default:(0,l.k6)(({node:e,data:t})=>[(0,l.Lk)("span",{class:(0,c.C4)(["tree-node",{"is-current":t.path===a.currentDirectory}])},[(0,l.bF)(F,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,l.Lk)("span",p,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[$,w.loading]])]),_:3},8,["visible"])):((0,l.uX)(),(0,l.CE)(l.FK,{key:1},[(0,l.Lk)("span",{class:"drawer-trigger-wrapper",onClick:t[2]||(t[2]=(...e)=>_.openDrawer&&_.openDrawer(...e))},[(0,l.RG)(e.$slots,"trigger",{},void 0,!0)]),(0,l.bF)(L,{modelValue:w.drawerVisible,"onUpdate:modelValue":t[3]||(t[3]=e=>w.drawerVisible=e),direction:"btt",size:"60%","show-close":!0,"with-header":!0,"z-index":3e3,title:e.$t("directoryTree.selectDirectory"),class:"directory-tree-drawer"},{default:(0,l.k6)(()=>[(0,l.bo)(((0,l.uX)(),(0,l.CE)("div",g,[w.error?((0,l.uX)(),(0,l.CE)("div",b,[(0,l.bF)(F,{icon:"exclamation-circle",class:"error-icon"}),(0,l.Lk)("span",v,(0,c.v_)(w.error),1),(0,l.bF)(C,{type:"primary",size:"small",onClick:_.fetchDirectoryTree},{default:(0,l.k6)(()=>[(0,l.eW)((0,c.v_)(e.$t("directoryTree.retry")),1)]),_:1},8,["onClick"])])):((0,l.uX)(),(0,l.Wv)(T,{key:1,ref:"treeRefMobile",data:w.treeData,props:w.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":a.currentDirectory,class:"directory-tree mobile-tree",onNodeClick:_.handleNodeClick},{default:(0,l.k6)(({node:e,data:t})=>[(0,l.Lk)("span",{class:(0,c.C4)(["tree-node",{"is-current":t.path===a.currentDirectory}])},[(0,l.bF)(F,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,l.Lk)("span",k,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[$,w.loading]])]),_:1},8,["modelValue","title"])],64))])}var w=a(457),_=a(70797),F={name:"DirectoryTreePicker",props:{currentDirectory:{type:String,default:""},source:{type:String,default:"upload",validator:e=>["upload","admin"].includes(e)}},data(){return{popoverVisible:!1,drawerVisible:!1,treeData:[],loading:!1,error:"",treeProps:{children:"children",label:"name"},windowWidth:window.innerWidth}},computed:{isDesktop(){return this.windowWidth>=769}},watch:{popoverVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.popoverVisible&&this.$refs.treeRef){const e=this.$refs.treeRef.store;for(const t in e.nodesMap)e.nodesMap[t].expanded=!1}},200)},drawerVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.drawerVisible&&this.$refs.treeRefMobile){const e=this.$refs.treeRefMobile.store;for(const t in e.nodesMap)e.nodesMap[t].expanded=!1}},300)},currentDirectory(e){this.$nextTick(()=>{this.$refs.treeRef&&e&&this.$refs.treeRef.setCurrentKey(e),this.$refs.treeRefMobile&&e&&this.$refs.treeRefMobile.setCurrentKey(e)})}},mounted(){window.addEventListener("resize",this.handleResize)},beforeUnmount(){window.removeEventListener("resize",this.handleResize)},methods:{handleResize(){this.windowWidth=window.innerWidth},openDrawer(){this.drawerVisible=!0},async fetchDirectoryTree(){this.loading=!0,this.error="";try{let e;if("admin"===this.source){const t=await(0,_.A)("/api/directoryTree",{method:"GET"});if(!t.ok)return void(401===t.status?this.error=this.$t("directoryTree.authFailed"):this.error=this.$t("directoryTree.serverError"));e=await t.json()}else{const t=await w.A.get("/api/directoryTree",{withAuthCode:!0});e=t.data}e.tree?this.treeData=[e.tree]:this.treeData=[]}catch(e){console.error("Failed to fetch directory tree:",e),401===e.response?.status?this.error=this.$t("directoryTree.authFailed"):this.error=this.$t("directoryTree.loadFailed")}finally{this.loading=!1}},handleNodeClick(e){let t=e.path;t&&!t.startsWith("/")?t="/"+t:t||(t="/"),this.$emit("select",t),this.popoverVisible=!1,this.drawerVisible=!1}}},C=a(71241);const T=(0,C.A)(F,[["render",y],["__scopeId","data-v-62eab69a"]]);var S=T},34396:function(e,t,a){"use strict";a(85331),a(4885)},34896:function(e,t,a){"use strict";a(85331)},37952:function(e,t,a){"use strict";a(85331),a(97197)},40670:function(e,t,a){"use strict";a(85331),a(99648),a(19104),a(85970)},44813:function(e,t,a){a(44114),a(18111),a(22489),a(7588),a(79577),a(41549),a(49797),a(49631),a(35623),a(59848),function(t){e.exports=t()}(function(){return function e(t,a,i){function n(r,o){if(!a[r]){if(!t[r]){var l=void 0;if(!o&&l)return require(r,!0);if(s)return s(r,!0);var d=new Error("Cannot find module '"+r+"'");throw d.code="MODULE_NOT_FOUND",d}var c=a[r]={exports:{}};t[r][0].call(c.exports,function(e){var a=t[r][1][e];return n(a||e)},c,c.exports,e,t,a,i)}return a[r].exports}for(var s=void 0,r=0;r>2,o=(3&t)<<4|a>>4,l=1>6:64,d=2>4,a=(15&r)<<4|(o=s.indexOf(e.charAt(d++)))>>2,i=(3&o)<<6|(l=s.indexOf(e.charAt(d++))),u[c++]=t,64!==o&&(u[c++]=a),64!==l&&(u[c++]=i);return u}},{"./support":30,"./utils":32}],2:[function(e,t,a){"use strict";var i=e("./external"),n=e("./stream/DataWorker"),s=e("./stream/Crc32Probe"),r=e("./stream/DataLengthProbe");function o(e,t,a,i,n){this.compressedSize=e,this.uncompressedSize=t,this.crc32=a,this.compression=i,this.compressedContent=n}o.prototype={getContentWorker:function(){var e=new n(i.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new r("data_length")),t=this;return e.on("end",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),e},getCompressedWorker:function(){return new n(i.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},o.createWorkerFrom=function(e,t,a){return e.pipe(new s).pipe(new r("uncompressedSize")).pipe(t.compressWorker(a)).pipe(new r("compressedSize")).withStreamInfo("compression",t)},t.exports=o},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(e,t,a){"use strict";var i=e("./stream/GenericWorker");a.STORE={magic:"\0\0",compressWorker:function(){return new i("STORE compression")},uncompressWorker:function(){return new i("STORE decompression")}},a.DEFLATE=e("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(e,t,a){"use strict";var i=e("./utils"),n=function(){for(var e,t=[],a=0;a<256;a++){e=a;for(var i=0;i<8;i++)e=1&e?3988292384^e>>>1:e>>>1;t[a]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?"string"!==i.getTypeOf(e)?function(e,t,a,i){var s=n,r=i+a;e^=-1;for(var o=i;o>>8^s[255&(e^t[o])];return-1^e}(0|t,e,e.length,0):function(e,t,a,i){var s=n,r=i+a;e^=-1;for(var o=i;o>>8^s[255&(e^t.charCodeAt(o))];return-1^e}(0|t,e,e.length,0):0}},{"./utils":32}],5:[function(e,t,a){"use strict";a.base64=!1,a.binary=!1,a.dir=!1,a.createFolders=!0,a.date=null,a.compression=null,a.compressionOptions=null,a.comment=null,a.unixPermissions=null,a.dosPermissions=null},{}],6:[function(e,t,a){"use strict";var i=null;i="undefined"!=typeof Promise?Promise:e("lie"),t.exports={Promise:i}},{lie:37}],7:[function(e,t,a){"use strict";var i="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,n=e("pako"),s=e("./utils"),r=e("./stream/GenericWorker"),o=i?"uint8array":"array";function l(e,t){r.call(this,"FlateWorker/"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}a.magic="\b\0",s.inherits(l,r),l.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},l.prototype.flush=function(){r.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},l.prototype.cleanUp=function(){r.prototype.cleanUp.call(this),this._pako=null},l.prototype._createPako=function(){this._pako=new n[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var e=this;this._pako.onData=function(t){e.push({data:t,meta:e.meta})}},a.compressWorker=function(e){return new l("Deflate",e)},a.uncompressWorker=function(){return new l("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(e,t,a){"use strict";function i(e,t){var a,i="";for(a=0;a>>=8;return i}function n(e,t,a,n,r,c){var h,u,f=e.file,m=e.compression,p=c!==o.utf8encode,g=s.transformTo("string",c(f.name)),b=s.transformTo("string",o.utf8encode(f.name)),v=f.comment,k=s.transformTo("string",c(v)),y=s.transformTo("string",o.utf8encode(v)),w=b.length!==f.name.length,_=y.length!==v.length,F="",C="",T="",S=f.dir,L=f.date,$={crc32:0,compressedSize:0,uncompressedSize:0};t&&!a||($.crc32=e.crc32,$.compressedSize=e.compressedSize,$.uncompressedSize=e.uncompressedSize);var x=0;t&&(x|=8),p||!w&&!_||(x|=2048);var E=0,D=0;S&&(E|=16),"UNIX"===r?(D=798,E|=function(e,t){var a=e;return e||(a=t?16893:33204),(65535&a)<<16}(f.unixPermissions,S)):(D=20,E|=function(e){return 63&(e||0)}(f.dosPermissions)),h=L.getUTCHours(),h<<=6,h|=L.getUTCMinutes(),h<<=5,h|=L.getUTCSeconds()/2,u=L.getUTCFullYear()-1980,u<<=4,u|=L.getUTCMonth()+1,u<<=5,u|=L.getUTCDate(),w&&(C=i(1,1)+i(l(g),4)+b,F+="up"+i(C.length,2)+C),_&&(T=i(1,1)+i(l(k),4)+y,F+="uc"+i(T.length,2)+T);var A="";return A+="\n\0",A+=i(x,2),A+=m.magic,A+=i(h,2),A+=i(u,2),A+=i($.crc32,4),A+=i($.compressedSize,4),A+=i($.uncompressedSize,4),A+=i(g.length,2),A+=i(F.length,2),{fileRecord:d.LOCAL_FILE_HEADER+A+g+F,dirRecord:d.CENTRAL_FILE_HEADER+i(D,2)+A+i(k.length,2)+"\0\0\0\0"+i(E,4)+i(n,4)+g+F+k}}var s=e("../utils"),r=e("../stream/GenericWorker"),o=e("../utf8"),l=e("../crc32"),d=e("../signature");function c(e,t,a,i){r.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=a,this.encodeFileName=i,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}s.inherits(c,r),c.prototype.push=function(e){var t=e.meta.percent||0,a=this.entriesCount,i=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,r.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:a?(t+100*(a-i-1))/a:100}}))},c.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var a=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:a.fileRecord,meta:{percent:0}})}else this.accumulate=!0},c.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,a=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(a.dirRecord),t)this.push({data:function(e){return d.DATA_DESCRIPTOR+i(e.crc32,4)+i(e.compressedSize,4)+i(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:a.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},c.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t=this.index;t--)a=(a<<8)+this.byteAt(t);return this.index+=e,a},readString:function(e){return i.transformTo("string",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=n},{"../utils":32}],19:[function(e,t,a){"use strict";var i=e("./Uint8ArrayReader");function n(e){i.call(this,e)}e("../utils").inherits(n,i),n.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(e,t,a){"use strict";var i=e("./DataReader");function n(e){i.call(this,e)}e("../utils").inherits(n,i),n.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},n.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},n.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},n.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{"../utils":32,"./DataReader":18}],21:[function(e,t,a){"use strict";var i=e("./ArrayReader");function n(e){i.call(this,e)}e("../utils").inherits(n,i),n.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{"../utils":32,"./ArrayReader":17}],22:[function(e,t,a){"use strict";var i=e("../utils"),n=e("../support"),s=e("./ArrayReader"),r=e("./StringReader"),o=e("./NodeBufferReader"),l=e("./Uint8ArrayReader");t.exports=function(e){var t=i.getTypeOf(e);return i.checkSupport(t),"string"!==t||n.uint8array?"nodebuffer"===t?new o(e):n.uint8array?new l(i.transformTo("uint8array",e)):new s(i.transformTo("array",e)):new r(e)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(e,t,a){"use strict";a.LOCAL_FILE_HEADER="PK",a.CENTRAL_FILE_HEADER="PK",a.CENTRAL_DIRECTORY_END="PK",a.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",a.ZIP64_CENTRAL_DIRECTORY_END="PK",a.DATA_DESCRIPTOR="PK\b"},{}],24:[function(e,t,a){"use strict";var i=e("./GenericWorker"),n=e("../utils");function s(e){i.call(this,"ConvertWorker to "+e),this.destType=e}n.inherits(s,i),s.prototype.processChunk=function(e){this.push({data:n.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{"../utils":32,"./GenericWorker":28}],25:[function(e,t,a){"use strict";var i=e("./GenericWorker"),n=e("../crc32");function s(){i.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}e("../utils").inherits(s,i),s.prototype.processChunk=function(e){this.streamInfo.crc32=n(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(e,t,a){"use strict";var i=e("../utils"),n=e("./GenericWorker");function s(e){n.call(this,"DataLengthProbe for "+e),this.propName=e,this.withStreamInfo(e,0)}i.inherits(s,n),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}n.prototype.processChunk.call(this,e)},t.exports=s},{"../utils":32,"./GenericWorker":28}],27:[function(e,t,a){"use strict";var i=e("../utils"),n=e("./GenericWorker");function s(e){n.call(this,"DataWorker");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=i.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}i.inherits(s,n),s.prototype.cleanUp=function(){n.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,i.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(i.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":e=this.data.substring(this.index,t);break;case"uint8array":e=this.data.subarray(this.index,t);break;case"array":case"nodebuffer":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{"../utils":32,"./GenericWorker":28}],28:[function(e,t,a){"use strict";function i(e){this.name=e||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}i.prototype={push:function(e){this.emit("data",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit("error",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit("error",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var a=0;a "+e:e}},t.exports=i},{}],29:[function(e,t,a){"use strict";var i=e("../utils"),n=e("./ConvertWorker"),s=e("./GenericWorker"),r=e("../base64"),o=e("../support"),l=e("../external"),d=null;if(o.nodestream)try{d=e("../nodejs/NodejsStreamOutputAdapter")}catch(e){}function c(e,t){return new l.Promise(function(a,n){var s=[],o=e._internalType,l=e._outputType,d=e._mimeType;e.on("data",function(e,a){s.push(e),t&&t(a)}).on("error",function(e){s=[],n(e)}).on("end",function(){try{var e=function(e,t,a){switch(e){case"blob":return i.newBlob(i.transformTo("arraybuffer",t),a);case"base64":return r.encode(t);default:return i.transformTo(e,t)}}(l,function(e,t){var a,i=0,n=null,s=0;for(a=0;a>>6:(a<65536?t[r++]=224|a>>>12:(t[r++]=240|a>>>18,t[r++]=128|a>>>12&63),t[r++]=128|a>>>6&63),t[r++]=128|63&a);return t}(e)},a.utf8decode=function(e){return n.nodebuffer?i.transformTo("nodebuffer",e).toString("utf-8"):function(e){var t,a,n,s,r=e.length,l=new Array(2*r);for(t=a=0;t>10&1023,l[a++]=56320|1023&n)}return l.length!==a&&(l.subarray?l=l.subarray(0,a):l.length=a),i.applyFromCharCode(l)}(e=i.transformTo(n.uint8array?"uint8array":"array",e))},i.inherits(d,r),d.prototype.processChunk=function(e){var t=i.transformTo(n.uint8array?"uint8array":"array",e.data);if(this.leftOver&&this.leftOver.length){if(n.uint8array){var s=t;(t=new Uint8Array(s.length+this.leftOver.length)).set(this.leftOver,0),t.set(s,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var r=function(e,t){var a;for((t=t||e.length)>e.length&&(t=e.length),a=t-1;0<=a&&128==(192&e[a]);)a--;return a<0||0===a?t:a+o[e[a]]>t?a:t}(t),l=t;r!==t.length&&(n.uint8array?(l=t.subarray(0,r),this.leftOver=t.subarray(r,t.length)):(l=t.slice(0,r),this.leftOver=t.slice(r,t.length))),this.push({data:a.utf8decode(l),meta:e.meta})},d.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:a.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},a.Utf8DecodeWorker=d,i.inherits(c,r),c.prototype.processChunk=function(e){this.push({data:a.utf8encode(e.data),meta:e.meta})},a.Utf8EncodeWorker=c},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(e,t,a){"use strict";var i=e("./support"),n=e("./base64"),s=e("./nodejsUtils"),r=e("./external");function o(e){return e}function l(e,t){for(var a=0;a>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=i(this.extraFields[1].value);this.uncompressedSize===n.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===n.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===n.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===n.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,a,i,n=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4>>6:(a<65536?t[r++]=224|a>>>12:(t[r++]=240|a>>>18,t[r++]=128|a>>>12&63),t[r++]=128|a>>>6&63),t[r++]=128|63&a);return t},a.buf2binstring=function(e){return l(e,e.length)},a.binstring2buf=function(e){for(var t=new i.Buf8(e.length),a=0,n=t.length;a>10&1023,d[i++]=56320|1023&n)}return l(d,i)},a.utf8border=function(e,t){var a;for((t=t||e.length)>e.length&&(t=e.length),a=t-1;0<=a&&128==(192&e[a]);)a--;return a<0||0===a?t:a+r[e[a]]>t?a:t}},{"./common":41}],43:[function(e,t,a){"use strict";t.exports=function(e,t,a,i){for(var n=65535&e,s=e>>>16&65535,r=0;0!==a;){for(a-=r=2e3>>1:e>>>1;t[a]=e}return t}();t.exports=function(e,t,a,n){var s=i,r=n+a;e^=-1;for(var o=n;o>>8^s[255&(e^t[o])];return-1^e}},{}],46:[function(e,t,a){"use strict";var i,n=e("../utils/common"),s=e("./trees"),r=e("./adler32"),o=e("./crc32"),l=e("./messages"),d=0,c=4,h=0,u=-2,f=-1,m=4,p=2,g=8,b=9,v=286,k=30,y=19,w=2*v+1,_=15,F=3,C=258,T=C+F+1,S=42,L=113,$=1,x=2,E=3,D=4;function A(e,t){return e.msg=l[t],t}function I(e){return(e<<1)-(4e.avail_out&&(a=e.avail_out),0!==a&&(n.arraySet(e.output,t.pending_buf,t.pending_out,a,e.next_out),e.next_out+=a,t.pending_out+=a,e.total_out+=a,e.avail_out-=a,t.pending-=a,0===t.pending&&(t.pending_out=0))}function B(e,t){s._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,U(e.strm)}function P(e,t){e.pending_buf[e.pending++]=t}function W(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function R(e,t){var a,i,n=e.max_chain_length,s=e.strstart,r=e.prev_length,o=e.nice_match,l=e.strstart>e.w_size-T?e.strstart-(e.w_size-T):0,d=e.window,c=e.w_mask,h=e.prev,u=e.strstart+C,f=d[s+r-1],m=d[s+r];e.prev_length>=e.good_match&&(n>>=2),o>e.lookahead&&(o=e.lookahead);do{if(d[(a=t)+r]===m&&d[a+r-1]===f&&d[a]===d[s]&&d[++a]===d[s+1]){s+=2,a++;do{}while(d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&sl&&0!=--n);return r<=e.lookahead?r:e.lookahead}function N(e){var t,a,i,s,l,d,c,h,u,f,m=e.w_size;do{if(s=e.window_size-e.lookahead-e.strstart,e.strstart>=m+(m-T)){for(n.arraySet(e.window,e.window,m,m,0),e.match_start-=m,e.strstart-=m,e.block_start-=m,t=a=e.hash_size;i=e.head[--t],e.head[t]=m<=i?i-m:0,--a;);for(t=a=m;i=e.prev[--t],e.prev[t]=m<=i?i-m:0,--a;);s+=m}if(0===e.strm.avail_in)break;if(d=e.strm,c=e.window,h=e.strstart+e.lookahead,u=s,f=void 0,f=d.avail_in,u=F)for(l=e.strstart-e.insert,e.ins_h=e.window[l],e.ins_h=(e.ins_h<=F&&(e.ins_h=(e.ins_h<=F)if(i=s._tr_tally(e,e.strstart-e.match_start,e.match_length-F),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=F){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<=F&&(e.ins_h=(e.ins_h<=F&&e.match_length<=e.prev_length){for(n=e.strstart+e.lookahead-F,i=s._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-F),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=n&&(e.ins_h=(e.ins_h<e.pending_buf_size-5&&(a=e.pending_buf_size-5);;){if(e.lookahead<=1){if(N(e),0===e.lookahead&&t===d)return $;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var i=e.block_start+a;if((0===e.strstart||e.strstart>=i)&&(e.lookahead=e.strstart-i,e.strstart=i,B(e,!1),0===e.strm.avail_out))return $;if(e.strstart-e.block_start>=e.w_size-T&&(B(e,!1),0===e.strm.avail_out))return $}return e.insert=0,t===c?(B(e,!0),0===e.strm.avail_out?E:D):(e.strstart>e.block_start&&(B(e,!1),e.strm.avail_out),$)}),new V(4,4,8,4,O),new V(4,5,16,8,O),new V(4,6,32,32,O),new V(4,4,16,16,M),new V(8,16,32,32,M),new V(8,16,128,128,M),new V(8,32,128,256,M),new V(32,128,258,1024,M),new V(32,258,258,4096,M)],a.deflateInit=function(e,t){return Z(e,t,g,15,8,0)},a.deflateInit2=Z,a.deflateReset=K,a.deflateResetKeep=j,a.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?u:(e.state.gzhead=t,h):u},a.deflate=function(e,t){var a,n,r,l;if(!e||!e.state||5>8&255),P(n,n.gzhead.time>>16&255),P(n,n.gzhead.time>>24&255),P(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),P(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(P(n,255&n.gzhead.extra.length),P(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=o(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(P(n,0),P(n,0),P(n,0),P(n,0),P(n,0),P(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),P(n,3),n.status=L);else{var f=g+(n.w_bits-8<<4)<<8;f|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(f|=32),f+=31-f%31,n.status=L,W(n,f),0!==n.strstart&&(W(n,e.adler>>>16),W(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(r=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>r&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),U(e),r=n.pending,n.pending!==n.pending_buf_size));)P(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>r&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){r=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>r&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),U(e),r=n.pending,n.pending===n.pending_buf_size)){l=1;break}l=n.gzindexr&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),0===l&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){r=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>r&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),U(e),r=n.pending,n.pending===n.pending_buf_size)){l=1;break}l=n.gzindexr&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),0===l&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&U(e),n.pending+2<=n.pending_buf_size&&(P(n,255&e.adler),P(n,e.adler>>8&255),e.adler=0,n.status=L)):n.status=L),0!==n.pending){if(U(e),0===e.avail_out)return n.last_flush=-1,h}else if(0===e.avail_in&&I(t)<=I(a)&&t!==c)return A(e,-5);if(666===n.status&&0!==e.avail_in)return A(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==d&&666!==n.status){var m=2===n.strategy?function(e,t){for(var a;;){if(0===e.lookahead&&(N(e),0===e.lookahead)){if(t===d)return $;break}if(e.match_length=0,a=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,a&&(B(e,!1),0===e.strm.avail_out))return $}return e.insert=0,t===c?(B(e,!0),0===e.strm.avail_out?E:D):e.last_lit&&(B(e,!1),0===e.strm.avail_out)?$:x}(n,t):3===n.strategy?function(e,t){for(var a,i,n,r,o=e.window;;){if(e.lookahead<=C){if(N(e),e.lookahead<=C&&t===d)return $;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=F&&0e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=F?(a=s._tr_tally(e,1,e.match_length-F),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(a=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),a&&(B(e,!1),0===e.strm.avail_out))return $}return e.insert=0,t===c?(B(e,!0),0===e.strm.avail_out?E:D):e.last_lit&&(B(e,!1),0===e.strm.avail_out)?$:x}(n,t):i[n.level].func(n,t);if(m!==E&&m!==D||(n.status=666),m===$||m===E)return 0===e.avail_out&&(n.last_flush=-1),h;if(m===x&&(1===t?s._tr_align(n):5!==t&&(s._tr_stored_block(n,0,0,!1),3===t&&(z(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),U(e),0===e.avail_out))return n.last_flush=-1,h}return t!==c?h:n.wrap<=0?1:(2===n.wrap?(P(n,255&e.adler),P(n,e.adler>>8&255),P(n,e.adler>>16&255),P(n,e.adler>>24&255),P(n,255&e.total_in),P(n,e.total_in>>8&255),P(n,e.total_in>>16&255),P(n,e.total_in>>24&255)):(W(n,e.adler>>>16),W(n,65535&e.adler)),U(e),0=a.w_size&&(0===o&&(z(a.head),a.strstart=0,a.block_start=0,a.insert=0),f=new n.Buf8(a.w_size),n.arraySet(f,t,m-a.w_size,a.w_size,0),t=f,m=a.w_size),l=e.avail_in,d=e.next_in,c=e.input,e.avail_in=m,e.next_in=0,e.input=t,N(a);a.lookahead>=F;){for(i=a.strstart,s=a.lookahead-(F-1);a.ins_h=(a.ins_h<>>=y=k>>>24,m-=y,0===(y=k>>>16&255))S[s++]=65535&k;else{if(!(16&y)){if(0==(64&y)){k=p[(65535&k)+(f&(1<>>=y,m-=y),m<15&&(f+=T[i++]<>>=y=k>>>24,m-=y,!(16&(y=k>>>16&255))){if(0==(64&y)){k=g[(65535&k)+(f&(1<>>=y,m-=y,(y=s-r)<_){if(c<(y=_-y)&&a.sane){e.msg="invalid distance too far back",a.mode=30;break e}if(C=u,(F=0)===h){if(F+=d-y,y>3,f&=(1<<(m-=w<<3))-1,e.next_in=i,e.next_out=s,e.avail_in=i>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function g(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new i.Buf16(320),this.work=new i.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function b(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=u,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new i.Buf32(f),t.distcode=t.distdyn=new i.Buf32(m),t.sane=1,t.back=-1,c):h}function v(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,b(e)):h}function k(e,t){var a,i;return e&&e.state?(i=e.state,t<0?(a=0,t=-t):(a=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=r.wsize?(i.arraySet(r.window,t,a-r.wsize,r.wsize,0),r.wnext=0,r.whave=r.wsize):(n<(s=r.wsize-r.wnext)&&(s=n),i.arraySet(r.window,t,a-n,s,r.wnext),(n-=s)?(i.arraySet(r.window,t,a-n,n,0),r.wnext=n,r.whave=r.wsize):(r.wnext+=s,r.wnext===r.wsize&&(r.wnext=0),r.whave>>8&255,a.check=s(a.check,N,2,0),w=y=0,a.mode=2;break}if(a.flags=0,a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&y)<<8)+(y>>8))%31){e.msg="incorrect header check",a.mode=30;break}if(8!=(15&y)){e.msg="unknown compression method",a.mode=30;break}if(w-=4,U=8+(15&(y>>>=4)),0===a.wbits)a.wbits=U;else if(U>a.wbits){e.msg="invalid window size",a.mode=30;break}a.dmax=1<>8&1),512&a.flags&&(N[0]=255&y,N[1]=y>>>8&255,a.check=s(a.check,N,2,0)),w=y=0,a.mode=3;case 3:for(;w<32;){if(0===v)break e;v--,y+=f[g++]<>>8&255,N[2]=y>>>16&255,N[3]=y>>>24&255,a.check=s(a.check,N,4,0)),w=y=0,a.mode=4;case 4:for(;w<16;){if(0===v)break e;v--,y+=f[g++]<>8),512&a.flags&&(N[0]=255&y,N[1]=y>>>8&255,a.check=s(a.check,N,2,0)),w=y=0,a.mode=5;case 5:if(1024&a.flags){for(;w<16;){if(0===v)break e;v--,y+=f[g++]<>>8&255,a.check=s(a.check,N,2,0)),w=y=0}else a.head&&(a.head.extra=null);a.mode=6;case 6:if(1024&a.flags&&(v<(S=a.length)&&(S=v),S&&(a.head&&(U=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Array(a.head.extra_len)),i.arraySet(a.head.extra,f,g,S,U)),512&a.flags&&(a.check=s(a.check,f,S,g)),v-=S,g+=S,a.length-=S),a.length))break e;a.length=0,a.mode=7;case 7:if(2048&a.flags){if(0===v)break e;for(S=0;U=f[g+S++],a.head&&U&&a.length<65536&&(a.head.name+=String.fromCharCode(U)),U&&S>9&1,a.head.done=!0),e.adler=a.check=0,a.mode=12;break;case 10:for(;w<32;){if(0===v)break e;v--,y+=f[g++]<>>=7&w,w-=7&w,a.mode=27;break}for(;w<3;){if(0===v)break e;v--,y+=f[g++]<>>=1)){case 0:a.mode=14;break;case 1:if(C(a),a.mode=20,6!==t)break;y>>>=2,w-=2;break e;case 2:a.mode=17;break;case 3:e.msg="invalid block type",a.mode=30}y>>>=2,w-=2;break;case 14:for(y>>>=7&w,w-=7&w;w<32;){if(0===v)break e;v--,y+=f[g++]<>>16^65535)){e.msg="invalid stored block lengths",a.mode=30;break}if(a.length=65535&y,w=y=0,a.mode=15,6===t)break e;case 15:a.mode=16;case 16:if(S=a.length){if(v>>=5,w-=5,a.ndist=1+(31&y),y>>>=5,w-=5,a.ncode=4+(15&y),y>>>=4,w-=4,286>>=3,w-=3}for(;a.have<19;)a.lens[O[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,P={bits:a.lenbits},B=o(0,a.lens,0,19,a.lencode,0,a.work,P),a.lenbits=P.bits,B){e.msg="invalid code lengths set",a.mode=30;break}a.have=0,a.mode=19;case 19:for(;a.have>>16&255,D=65535&R,!((x=R>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>>=x,w-=x,a.lens[a.have++]=D;else{if(16===D){for(W=x+2;w>>=x,w-=x,0===a.have){e.msg="invalid bit length repeat",a.mode=30;break}U=a.lens[a.have-1],S=3+(3&y),y>>>=2,w-=2}else if(17===D){for(W=x+3;w>>=x)),y>>>=3,w-=3}else{for(W=x+7;w>>=x)),y>>>=7,w-=7}if(a.have+S>a.nlen+a.ndist){e.msg="invalid bit length repeat",a.mode=30;break}for(;S--;)a.lens[a.have++]=U}}if(30===a.mode)break;if(0===a.lens[256]){e.msg="invalid code -- missing end-of-block",a.mode=30;break}if(a.lenbits=9,P={bits:a.lenbits},B=o(l,a.lens,0,a.nlen,a.lencode,0,a.work,P),a.lenbits=P.bits,B){e.msg="invalid literal/lengths set",a.mode=30;break}if(a.distbits=6,a.distcode=a.distdyn,P={bits:a.distbits},B=o(d,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,P),a.distbits=P.bits,B){e.msg="invalid distances set",a.mode=30;break}if(a.mode=20,6===t)break e;case 20:a.mode=21;case 21:if(6<=v&&258<=k){e.next_out=b,e.avail_out=k,e.next_in=g,e.avail_in=v,a.hold=y,a.bits=w,r(e,F),b=e.next_out,m=e.output,k=e.avail_out,g=e.next_in,f=e.input,v=e.avail_in,y=a.hold,w=a.bits,12===a.mode&&(a.back=-1);break}for(a.back=0;E=(R=a.lencode[y&(1<>>16&255,D=65535&R,!((x=R>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>A)])>>>16&255,D=65535&R,!(A+(x=R>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>>=A,w-=A,a.back+=A}if(y>>>=x,w-=x,a.back+=x,a.length=D,0===E){a.mode=26;break}if(32&E){a.back=-1,a.mode=12;break}if(64&E){e.msg="invalid literal/length code",a.mode=30;break}a.extra=15&E,a.mode=22;case 22:if(a.extra){for(W=a.extra;w>>=a.extra,w-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=23;case 23:for(;E=(R=a.distcode[y&(1<>>16&255,D=65535&R,!((x=R>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>A)])>>>16&255,D=65535&R,!(A+(x=R>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>>=A,w-=A,a.back+=A}if(y>>>=x,w-=x,a.back+=x,64&E){e.msg="invalid distance code",a.mode=30;break}a.offset=D,a.extra=15&E,a.mode=24;case 24:if(a.extra){for(W=a.extra;w>>=a.extra,w-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){e.msg="invalid distance too far back",a.mode=30;break}a.mode=25;case 25:if(0===k)break e;if(S=F-k,a.offset>S){if((S=a.offset-S)>a.whave&&a.sane){e.msg="invalid distance too far back",a.mode=30;break}L=S>a.wnext?(S-=a.wnext,a.wsize-S):a.wnext-S,S>a.length&&(S=a.length),$=a.window}else $=m,L=b-a.offset,S=a.length;for(kv?(y=P[W+h[C]],I[z+h[C]]):(y=96,0),f=1<>x)+(m-=f)]=k<<24|y<<16|w,0!==m;);for(f=1<>=1;if(0!==f?(A&=f-1,A+=f):A=0,C++,0==--U[F]){if(F===S)break;F=t[a+h[C]]}if(L>>7)]}function P(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function W(e,t,a){e.bi_valid>p-a?(e.bi_buf|=t<>p-e.bi_valid,e.bi_valid+=a-p):(e.bi_buf|=t<>>=1,a<<=1,0<--t;);return a>>>1}function O(e,t,a){var i,n,s=new Array(m+1),r=0;for(i=1;i<=m;i++)s[i]=r=r+a[i-1]<<1;for(n=0;n<=t;n++){var o=e[2*n+1];0!==o&&(e[2*n]=N(s[o]++,o))}}function M(e){var t;for(t=0;t>1;1<=a;a--)j(e,s,a);for(n=l;a=e.heap[1],e.heap[1]=e.heap[e.heap_len--],j(e,s,1),i=e.heap[1],e.heap[--e.heap_max]=a,e.heap[--e.heap_max]=i,s[2*n]=s[2*a]+s[2*i],e.depth[n]=(e.depth[a]>=e.depth[i]?e.depth[a]:e.depth[i])+1,s[2*a+1]=s[2*i+1]=n,e.heap[1]=n++,j(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var a,i,n,s,r,o,l=t.dyn_tree,d=t.max_code,c=t.stat_desc.static_tree,h=t.stat_desc.has_stree,u=t.stat_desc.extra_bits,p=t.stat_desc.extra_base,g=t.stat_desc.max_length,b=0;for(s=0;s<=m;s++)e.bl_count[s]=0;for(l[2*e.heap[e.heap_max]+1]=0,a=e.heap_max+1;a>=7;i>>=1)if(1&a&&0!==e.dyn_ltree[2*t])return n;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return s;for(t=32;t>>3,(o=e.static_len+3+7>>>3)<=r&&(r=o)):r=o=a+5,a+4<=r&&-1!==t?Q(e,t,a,i):4===e.strategy||o===r?(W(e,2+(i?1:0),3),K(e,T,S)):(W(e,4+(i?1:0),3),function(e,t,a,i){var n;for(W(e,t-257,5),W(e,a-1,5),W(e,i-4,4),n=0;n>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&a,e.last_lit++,0===t?e.dyn_ltree[2*a]++:(e.matches++,t--,e.dyn_ltree[2*($[a]+d+1)]++,e.dyn_dtree[2*B(t)]++),e.last_lit===e.lit_bufsize-1},a._tr_align=function(e){W(e,2,3),R(e,b,T),function(e){16===e.bi_valid?(P(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{"../utils/common":41}],53:[function(e,t,a){"use strict";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,i){(function(e){!function(e,t){"use strict";if(!e.setImmediate){var a,i,n,s,r=1,o={},l=!1,d=e.document,c=Object.getPrototypeOf&&Object.getPrototypeOf(e);c=c&&c.setTimeout?c:e,a="[object process]"==={}.toString.call(e.process)?function(e){process.nextTick(function(){u(e)})}:function(){if(e.postMessage&&!e.importScripts){var t=!0,a=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=a,t}}()?(s="setImmediate$"+Math.random()+"$",e.addEventListener?e.addEventListener("message",f,!1):e.attachEvent("onmessage",f),function(t){e.postMessage(s+t,"*")}):e.MessageChannel?((n=new MessageChannel).port1.onmessage=function(e){u(e.data)},function(e){n.port2.postMessage(e)}):d&&"onreadystatechange"in d.createElement("script")?(i=d.documentElement,function(e){var t=d.createElement("script");t.onreadystatechange=function(){u(e),t.onreadystatechange=null,i.removeChild(t),t=null},i.appendChild(t)}):function(e){setTimeout(u,0,e)},c.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),i=0;i\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;return n.test(e)?{valid:!1,error:i.Ay.global.t("validation.invalidCharacters")}:{valid:!0}}},63003:function(e,t,a){"use strict";a(85331)},70415:function(e,t,a){"use strict";a(85331),a(73565)},72907:function(e,t,a){"use strict";a(85331),a(96808),a(29092)},73565:function(e,t,a){"use strict";a(85331)},79899:function(e,t,a){"use strict";a(85331)},88830:function(e,t,a){"use strict";a(85331)},95385:function(e,t,a){"use strict";a(85331)},98642:function(e,t,a){"use strict";a(85331)}}]); -//# sourceMappingURL=130.b657e68d.js.map \ No newline at end of file diff --git a/frontend-dist/js/130.b657e68d.js.gz b/frontend-dist/js/130.b657e68d.js.gz deleted file mode 100644 index 17353c04628fe28669cfb4fea1d6f348e941e8e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59623 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 $options.dialogVisible = $event),\n title: $props.isBatchMove ? _ctx.$t('moveFile.batchTitle') : _ctx.$t('moveFile.title'),\n width: \"500px\",\n \"show-close\": true,\n class: \"move-dialog\",\n onClose: $options.handleClose\n }, {\n footer: _withCtx(() => [_createElementVNode(\"span\", _hoisted_5, [_createVNode(_component_el_button, {\n onClick: $options.handleClose\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.cancel')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n loading: $data.loading,\n onClick: $options.handleConfirm\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.confirm')), 1)]),\n _: 1\n }, 8, [\"loading\", \"onClick\"])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_input, {\n modelValue: $data.targetPath,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.targetPath = $event),\n placeholder: _ctx.$t('moveFile.targetPlaceholder'),\n class: \"move-path-input\"\n }, {\n prepend: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.targetDirectory')), 1)]),\n _: 1\n }, 8, [\"modelValue\", \"placeholder\"]), _createVNode(_component_DirectoryTreePicker, {\n \"current-directory\": $props.currentDirectory,\n source: \"admin\",\n onSelect: $options.handleDirectorySelect\n }, {\n trigger: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"directory-picker-trigger\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-tree\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"current-directory\", \"onSelect\"])]), _createElementVNode(\"p\", _hoisted_4, _toDisplayString(_ctx.$t('moveFile.hint')), 1)])]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"onClose\"])) : (_openBlock(), _createBlock(_component_el_drawer, {\n key: 1,\n modelValue: $options.dialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $options.dialogVisible = $event),\n title: $props.isBatchMove ? _ctx.$t('moveFile.batchTitle') : _ctx.$t('moveFile.title'),\n direction: \"btt\",\n size: \"auto\",\n \"show-close\": true,\n class: \"move-drawer\",\n onClose: $options.handleClose\n }, {\n footer: _withCtx(() => [_createElementVNode(\"div\", _hoisted_18, [_createVNode(_component_el_button, {\n onClick: $options.handleClose,\n class: \"footer-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.cancel')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n loading: $data.loading,\n onClick: $options.handleConfirm,\n class: \"footer-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.confirm')), 1)]),\n _: 1\n }, 8, [\"loading\", \"onClick\"])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createElementVNode(\"div\", _hoisted_7, [_createElementVNode(\"div\", _hoisted_8, _toDisplayString(_ctx.$t('moveFile.targetDirectory')), 1), _createElementVNode(\"div\", _hoisted_9, [_createVNode(_component_el_input, {\n modelValue: $data.targetPath,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.targetPath = $event),\n placeholder: _ctx.$t('moveFile.targetPlaceholder'),\n class: \"move-path-input\"\n }, null, 8, [\"modelValue\", \"placeholder\"]), _createVNode(_component_el_button, {\n class: \"directory-picker-trigger\",\n onClick: _cache[3] || (_cache[3] = $event => $data.showTreePicker = true)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-tree\"\n })]),\n _: 1\n })]), _createElementVNode(\"p\", _hoisted_10, _toDisplayString(_ctx.$t('moveFile.hintMobile')), 1)]), $data.showTreePicker ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"span\", _hoisted_13, _toDisplayString(_ctx.$t('moveFile.selectDirectory')), 1), _createVNode(_component_el_button, {\n text: \"\",\n onClick: _cache[4] || (_cache[4] = $event => $data.showTreePicker = false)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"times\"\n })]),\n _: 1\n })]), _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_14, [$data.treeError ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_16, _toDisplayString($data.treeError), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRef\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree\",\n onNodeClick: $options.handleTreeNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_17, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.treeLoading]])])) : _createCommentVNode(\"\", true)])]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"onClose\"]))]);\n}","import DirectoryTreePicker from '@/components/DirectoryTreePicker.vue';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'MoveFileDialog',\n components: {\n DirectoryTreePicker\n },\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n currentDirectory: {\n type: String,\n default: ''\n },\n isBatchMove: {\n type: Boolean,\n default: false\n },\n initialPath: {\n type: String,\n default: '/'\n }\n },\n emits: ['update:modelValue', 'confirm', 'close'],\n data() {\n return {\n targetPath: '/',\n loading: false,\n windowWidth: window.innerWidth,\n // 移动端内嵌树相关\n showTreePicker: false,\n treeData: [],\n treeLoading: false,\n treeError: '',\n treeProps: {\n children: 'children',\n label: 'name'\n }\n };\n },\n computed: {\n dialogVisible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n isDesktop() {\n return this.windowWidth > 768;\n }\n },\n watch: {\n modelValue(newVal) {\n if (newVal) {\n this.targetPath = this.initialPath || '/';\n this.showTreePicker = false;\n }\n },\n showTreePicker(newVal) {\n if (newVal && !this.isDesktop) {\n this.fetchDirectoryTree();\n }\n }\n },\n mounted() {\n window.addEventListener('resize', this.handleResize);\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.handleResize);\n },\n methods: {\n handleResize() {\n this.windowWidth = window.innerWidth;\n },\n handleDirectorySelect(path) {\n this.targetPath = path;\n },\n handleConfirm() {\n this.$emit('confirm', this.targetPath);\n },\n handleClose() {\n this.$emit('update:modelValue', false);\n this.$emit('close');\n },\n // 移动端内嵌树相关方法\n async fetchDirectoryTree() {\n this.treeLoading = true;\n this.treeError = '';\n try {\n const response = await fetchWithAuth('/api/directoryTree', {\n method: 'GET'\n });\n if (!response.ok) {\n if (response.status === 401) {\n this.treeError = this.$t('moveFile.authFailed');\n } else {\n this.treeError = this.$t('moveFile.serverError');\n }\n return;\n }\n const data = await response.json();\n if (data.tree) {\n this.treeData = [data.tree];\n } else {\n this.treeData = [];\n }\n } catch (err) {\n console.error('Failed to fetch directory tree:', err);\n this.treeError = this.$t('moveFile.loadTreeFailed');\n } finally {\n this.treeLoading = false;\n }\n },\n handleTreeNodeClick(data) {\n let path = data.path;\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n } else if (!path) {\n path = '/';\n }\n this.targetPath = path;\n this.showTreePicker = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./MoveFileDialog.vue?vue&type=template&id=7aaa437c&scoped=true\"\nimport script from \"./MoveFileDialog.vue?vue&type=script&lang=js\"\nexport * from \"./MoveFileDialog.vue?vue&type=script&lang=js\"\n\nimport \"./MoveFileDialog.vue?vue&type=style&index=0&id=7aaa437c&scoped=true&lang=css\"\nimport \"./MoveFileDialog.vue?vue&type=style&index=1&id=7aaa437c&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7aaa437c\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeClass as _normalizeClass, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, Transition as _Transition, withCtx as _withCtx, Teleport as _Teleport, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"mobile-drawer-header\"\n};\nconst _hoisted_2 = {\n class: \"mobile-drawer-title\"\n};\nconst _hoisted_3 = {\n class: \"mobile-drawer-content\"\n};\nconst _hoisted_4 = [\"onClick\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createBlock(_Teleport, {\n to: \"body\"\n }, [_createVNode(_Transition, {\n name: \"drawer-slide\"\n }, {\n default: _withCtx(() => [$props.modelValue ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"mobile-drawer-overlay\",\n onClick: _cache[3] || (_cache[3] = (...args) => $options.close && $options.close(...args))\n }, [_createElementVNode(\"div\", {\n class: \"mobile-drawer\",\n onClick: _cache[2] || (_cache[2] = _withModifiers(() => {}, [\"stop\"]))\n }, [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"span\", _hoisted_2, _toDisplayString(_ctx.$t('mobileDirectory.title')), 1), _createVNode(_component_font_awesome_icon, {\n icon: \"times\",\n class: \"mobile-drawer-close\",\n onClick: $options.close\n }, null, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", {\n class: _normalizeClass([\"mobile-drawer-item\", {\n active: !$props.currentPath\n }]),\n onClick: _cache[0] || (_cache[0] = $event => $options.navigate(''))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"mobile-drawer-item-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileDirectory.rootDirectory')), 1)], 2), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.pathParts, (folder, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: index,\n class: _normalizeClass([\"mobile-drawer-item\", {\n active: index === $options.pathParts.length - 1\n }]),\n style: _normalizeStyle({\n paddingLeft: (index + 1) * 16 + 16 + 'px'\n }),\n onClick: $event => $options.navigate($options.pathParts.slice(0, index + 1).join('/'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder\",\n class: \"mobile-drawer-item-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(folder), 1)], 14, _hoisted_4);\n }), 128)), $props.currentPath ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"mobile-drawer-back\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.goBack && $options.goBack(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-left\",\n class: \"mobile-drawer-item-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileDirectory.goBack')), 1)])) : _createCommentVNode(\"\", true)])])])) : _createCommentVNode(\"\", true)]),\n _: 1\n })]);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nexport default {\n name: 'MobileDirectoryDrawer',\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n currentPath: {\n type: String,\n default: ''\n }\n },\n emits: ['update:modelValue', 'navigate', 'goBack'],\n computed: {\n pathParts() {\n return this.currentPath.split('/').filter(Boolean);\n }\n },\n methods: {\n close() {\n this.$emit('update:modelValue', false);\n },\n navigate(path) {\n this.$emit('navigate', path);\n this.close();\n },\n goBack() {\n this.$emit('goBack');\n this.close();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./MobileDirectoryDrawer.vue?vue&type=template&id=feeadb1c&scoped=true\"\nimport script from \"./MobileDirectoryDrawer.vue?vue&type=script&lang=js\"\nexport * from \"./MobileDirectoryDrawer.vue?vue&type=script&lang=js\"\n\nimport \"./MobileDirectoryDrawer.vue?vue&type=style&index=0&id=feeadb1c&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-feeadb1c\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, resolveComponent as _resolveComponent, createVNode as _createVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, Transition as _Transition, withCtx as _withCtx, Teleport as _Teleport, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"bottom-sheet-header\"\n};\nconst _hoisted_2 = {\n class: \"bottom-sheet-title\"\n};\nconst _hoisted_3 = {\n class: \"bottom-sheet-content\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createBlock(_Teleport, {\n to: \"body\"\n }, [_createVNode(_Transition, {\n name: \"bottom-sheet\"\n }, {\n default: _withCtx(() => [$props.modelValue ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"bottom-sheet-overlay\",\n onClick: _cache[9] || (_cache[9] = (...args) => $options.close && $options.close(...args))\n }, [_createElementVNode(\"div\", {\n class: \"bottom-sheet\",\n onClick: _cache[8] || (_cache[8] = _withModifiers(() => {}, [\"stop\"]))\n }, [_createElementVNode(\"div\", _hoisted_1, [_cache[10] || (_cache[10] = _createElementVNode(\"div\", {\n class: \"bottom-sheet-handle\"\n }, null, -1)), _createElementVNode(\"span\", _hoisted_2, _toDisplayString($props.title), 1)]), _createElementVNode(\"div\", _hoisted_3, [!$props.isFolder ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [_createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[0] || (_cache[0] = $event => $options.handleAction('detail'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"info-circle\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.viewDetail')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[1] || (_cache[1] = $event => $options.handleAction('copy'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.copyLink')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[2] || (_cache[2] = $event => $options.handleAction('download'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"download\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.downloadFile')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[3] || (_cache[3] = $event => $options.handleAction('move'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.moveFile')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[4] || (_cache[4] = $event => $options.handleAction('tag'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"tags\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.tagManagement')), 1)])], 64)) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[5] || (_cache[5] = $event => $options.handleAction('folderCopy'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.copyLink')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[6] || (_cache[6] = $event => $options.handleAction('move'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.moveFolder')), 1)])], 64)), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item bottom-sheet-danger\",\n onClick: _cache[7] || (_cache[7] = $event => $options.handleAction('delete'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString($props.isFolder ? _ctx.$t('mobileAction.deleteFolder') : _ctx.$t('mobileAction.deleteFile')), 1)])])])])) : _createCommentVNode(\"\", true)]),\n _: 1\n })]);\n}","export default {\n name: 'MobileActionSheet',\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n title: {\n type: String,\n default: ''\n },\n isFolder: {\n type: Boolean,\n default: false\n }\n },\n emits: ['update:modelValue', 'action'],\n methods: {\n close() {\n this.$emit('update:modelValue', false);\n },\n handleAction(action) {\n this.$emit('action', action);\n this.close();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./MobileActionSheet.vue?vue&type=template&id=f5c66568&scoped=true\"\nimport script from \"./MobileActionSheet.vue?vue&type=script&lang=js\"\nexport * from \"./MobileActionSheet.vue?vue&type=script&lang=js\"\n\nimport \"./MobileActionSheet.vue?vue&type=style&index=0&id=f5c66568&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-f5c66568\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, withKeys as _withKeys, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"batch-tag-container\"\n};\nconst _hoisted_2 = {\n class: \"tab-content\"\n};\nconst _hoisted_3 = {\n class: \"tab-description\"\n};\nconst _hoisted_4 = {\n class: \"input-section\"\n};\nconst _hoisted_5 = {\n key: 0,\n class: \"suggestions-panel\"\n};\nconst _hoisted_6 = [\"onClick\"];\nconst _hoisted_7 = {\n class: \"tags-to-add-section\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"tags-container\"\n};\nconst _hoisted_9 = {\n key: 1,\n class: \"empty-message\"\n};\nconst _hoisted_10 = {\n class: \"action-buttons\"\n};\nconst _hoisted_11 = {\n class: \"tab-content\"\n};\nconst _hoisted_12 = {\n class: \"tab-description\"\n};\nconst _hoisted_13 = {\n key: 0,\n class: \"common-tags-section\"\n};\nconst _hoisted_14 = {\n class: \"tags-container\"\n};\nconst _hoisted_15 = {\n key: 1,\n class: \"empty-message\"\n};\nconst _hoisted_16 = {\n class: \"tab-content\"\n};\nconst _hoisted_17 = {\n class: \"tab-description\"\n};\nconst _hoisted_18 = {\n class: \"action-buttons\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: _ctx.$t('batchTag.title'),\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $options.visible = $event),\n width: $options.dialogWidth,\n onClose: $options.handleClose\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [_createVNode(_component_el_tabs, {\n modelValue: $data.activeTab,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $data.activeTab = $event),\n type: \"border-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tab_pane, {\n label: _ctx.$t('batchTag.addTab'),\n name: \"add\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"p\", _hoisted_3, _toDisplayString(_ctx.$t('batchTag.addDescription', {\n count: $options.fileCount\n })), 1), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_input, {\n modelValue: $data.inputTag,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.inputTag = $event),\n placeholder: _ctx.$t('batchTag.inputPlaceholder'),\n onKeyup: _withKeys($options.handleAddInputTag, [\"enter\"]),\n onInput: $options.handleInputChange,\n clearable: \"\"\n }, {\n append: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: $options.handleAddInputTag,\n type: \"primary\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"plus\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"modelValue\", \"placeholder\", \"onKeyup\", \"onInput\"]), $data.showSuggestions && $data.suggestions.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.suggestions, tag => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: tag,\n class: \"suggestion-item\",\n onClick: $event => $options.selectSuggestion(tag)\n }, _toDisplayString(tag), 9, _hoisted_6);\n }), 128))])) : _createCommentVNode(\"\", true)]), _createElementVNode(\"div\", _hoisted_7, [_createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('batchTag.pendingTags')), 1), $data.tagsToAdd.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.tagsToAdd, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n closable: \"\",\n onClose: $event => $options.removeFromToAdd(tag),\n class: \"tag-item\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"onClose\"]);\n }), 128))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_9, _toDisplayString(_ctx.$t('batchTag.noPendingTags')), 1))]), _createElementVNode(\"div\", _hoisted_10, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $options.executeAddTags,\n loading: $data.loading,\n disabled: $data.tagsToAdd.length === 0\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('batchTag.addToAllFiles')), 1)]),\n _: 1\n }, 8, [\"onClick\", \"loading\", \"disabled\"])])])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_tab_pane, {\n label: _ctx.$t('batchTag.removeTab'),\n name: \"remove\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"p\", _hoisted_12, _toDisplayString(_ctx.$t('batchTag.removeDescription')), 1), $data.commonTags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [_createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('batchTag.commonTags')), 1), _createElementVNode(\"div\", _hoisted_14, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.commonTags, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n closable: \"\",\n onClose: $event => $options.handleRemoveCommonTag(tag),\n class: \"tag-item\",\n type: \"warning\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"onClose\"]);\n }), 128))])])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_15, _toDisplayString(_ctx.$t('batchTag.noCommonTags')), 1))])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_tab_pane, {\n label: _ctx.$t('batchTag.clearTab'),\n name: \"clear\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_16, [_createElementVNode(\"p\", _hoisted_17, _toDisplayString(_ctx.$t('batchTag.clearDescription', {\n count: $options.fileCount\n })), 1), _createVNode(_component_el_alert, {\n title: _ctx.$t('batchTag.clearWarningTitle'),\n type: \"warning\",\n description: _ctx.$t('batchTag.clearWarningDesc'),\n closable: false,\n style: {\n \"margin-bottom\": \"20px\"\n },\n center: \"\"\n }, null, 8, [\"title\", \"description\"]), _createElementVNode(\"div\", _hoisted_18, [_createVNode(_component_el_button, {\n type: \"danger\",\n onClick: $options.handleClearAllTags,\n loading: $data.loading\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('batchTag.confirmClearAll')), 1)]),\n _: 1\n }, 8, [\"onClick\", \"loading\"])])])]),\n _: 1\n }, 8, [\"label\"])]),\n _: 1\n }, 8, [\"modelValue\"])])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\", \"onClose\"]);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'BatchTagDialog',\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n selectedFiles: {\n type: Array,\n required: true,\n default: () => []\n }\n },\n emits: ['update:modelValue', 'tagsUpdated'],\n data() {\n return {\n activeTab: 'add',\n inputTag: '',\n tagsToAdd: [],\n commonTags: [],\n suggestions: [],\n showSuggestions: false,\n loading: false,\n debounceTimer: null\n };\n },\n computed: {\n visible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n dialogWidth() {\n return window.innerWidth < 768 ? '90%' : '600px';\n },\n selectedFilesOnly() {\n // 排除文件夹,只保留文件\n return this.selectedFiles.filter(file => !file.isFolder);\n },\n fileCount() {\n return this.selectedFilesOnly.length;\n },\n fileIds() {\n return this.selectedFilesOnly.map(file => file.name);\n }\n },\n watch: {\n visible(newVal) {\n if (newVal) {\n this.loadCommonTags();\n } else {\n this.resetData();\n }\n },\n activeTab(newTab) {\n if (newTab === 'remove') {\n this.loadCommonTags();\n }\n }\n },\n methods: {\n resetData() {\n this.tagsToAdd = [];\n this.inputTag = '';\n this.showSuggestions = false;\n this.activeTab = 'add';\n },\n async loadCommonTags() {\n if (this.selectedFilesOnly.length === 0) {\n this.commonTags = [];\n return;\n }\n try {\n // 获取所有文件的标签\n const tagPromises = this.selectedFilesOnly.map(file => fetchWithAuth(`/api/manage/tags/${encodeURIComponent(file.name)}`, {\n method: 'GET'\n }));\n const responses = await Promise.all(tagPromises);\n const allTags = [];\n for (const response of responses) {\n if (response.ok) {\n const data = await response.json();\n allTags.push(data.tags || []);\n }\n }\n\n // 找出共有标签\n if (allTags.length > 0) {\n this.commonTags = allTags[0].filter(tag => allTags.every(tags => tags.includes(tag)));\n } else {\n this.commonTags = [];\n }\n } catch (error) {\n console.error('Error loading common tags:', error);\n ElMessage.error(this.$t('batchTag.loadCommonTagsFailed'));\n }\n },\n handleInputChange() {\n clearTimeout(this.debounceTimer);\n if (!this.inputTag || this.inputTag.trim().length === 0) {\n this.showSuggestions = false;\n return;\n }\n this.debounceTimer = setTimeout(() => {\n this.fetchSuggestions();\n }, 300);\n },\n async fetchSuggestions() {\n try {\n const prefix = this.inputTag.trim().toLowerCase();\n const response = await fetchWithAuth(`/api/manage/tags/autocomplete?prefix=${encodeURIComponent(prefix)}&limit=10`, {\n method: 'GET'\n });\n if (response.ok) {\n const data = await response.json();\n this.suggestions = (data.tags || []).filter(tag => !this.tagsToAdd.includes(tag));\n this.showSuggestions = this.suggestions.length > 0;\n }\n } catch (error) {\n console.error('Error fetching suggestions:', error);\n }\n },\n selectSuggestion(tag) {\n this.inputTag = tag;\n this.showSuggestions = false;\n this.handleAddInputTag();\n },\n handleAddInputTag() {\n const tag = this.inputTag.trim();\n if (!tag) {\n return;\n }\n if (this.tagsToAdd.includes(tag)) {\n ElMessage.warning(this.$t('batchTag.tagAlreadyInList'));\n this.inputTag = '';\n this.showSuggestions = false;\n return;\n }\n this.tagsToAdd.push(tag);\n this.inputTag = '';\n this.showSuggestions = false;\n },\n removeFromToAdd(tag) {\n const index = this.tagsToAdd.indexOf(tag);\n if (index > -1) {\n this.tagsToAdd.splice(index, 1);\n }\n },\n async executeAddTags() {\n if (this.tagsToAdd.length === 0) {\n ElMessage.warning(this.$t('batchTag.pleaseAddTags'));\n return;\n }\n this.loading = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/batch', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n fileIds: this.fileIds,\n action: 'add',\n tags: this.tagsToAdd\n })\n });\n if (response.ok) {\n const data = await response.json();\n if (data.success || data.updated > 0) {\n ElMessage.success(this.$t('batchTag.addSuccess', {\n count: data.updated\n }));\n this.$emit('tagsUpdated');\n this.tagsToAdd = [];\n } else {\n throw new Error(this.$t('batchTag.addFailed'));\n }\n } else {\n throw new Error(this.$t('batchTag.addFailed'));\n }\n } catch (error) {\n console.error('Error adding tags:', error);\n ElMessage.error(this.$t('batchTag.addFailed'));\n } finally {\n this.loading = false;\n }\n },\n async handleRemoveCommonTag(tag) {\n this.loading = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/batch', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n fileIds: this.fileIds,\n action: 'remove',\n tags: [tag]\n })\n });\n if (response.ok) {\n const data = await response.json();\n if (data.success || data.updated > 0) {\n ElMessage.success(this.$t('batchTag.removeSuccess', {\n count: data.updated\n }));\n this.$emit('tagsUpdated');\n await this.loadCommonTags();\n } else {\n throw new Error(this.$t('batchTag.removeFailed'));\n }\n } else {\n throw new Error(this.$t('batchTag.removeFailed'));\n }\n } catch (error) {\n console.error('Error removing tag:', error);\n ElMessage.error(this.$t('batchTag.removeFailed'));\n } finally {\n this.loading = false;\n }\n },\n handleClearAllTags() {\n ElMessageBox.confirm(this.$t('batchTag.clearConfirmMessage', {\n count: this.fileCount\n }), this.$t('batchTag.clearConfirmTitle'), {\n confirmButtonText: this.$t('batchTag.clearConfirmOk'),\n cancelButtonText: this.$t('batchTag.clearConfirmCancel'),\n type: 'warning'\n }).then(() => {\n this.executeClearTags();\n }).catch(() => {\n ElMessage.info(this.$t('batchTag.clearCancelled'));\n });\n },\n async executeClearTags() {\n this.loading = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/batch', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n fileIds: this.fileIds,\n action: 'set',\n tags: []\n })\n });\n if (response.ok) {\n const data = await response.json();\n if (data.success || data.updated > 0) {\n ElMessage.success(this.$t('batchTag.clearSuccess', {\n count: data.updated\n }));\n this.$emit('tagsUpdated');\n this.commonTags = [];\n } else {\n throw new Error(this.$t('batchTag.clearFailed'));\n }\n } else {\n throw new Error(this.$t('batchTag.clearFailed'));\n }\n } catch (error) {\n console.error('Error clearing tags:', error);\n ElMessage.error(this.$t('batchTag.clearFailed'));\n } finally {\n this.loading = false;\n }\n },\n handleClose() {\n this.visible = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./BatchTagDialog.vue?vue&type=template&id=54f87f24&scoped=true\"\nimport script from \"./BatchTagDialog.vue?vue&type=script&lang=js\"\nexport * from \"./BatchTagDialog.vue?vue&type=script&lang=js\"\n\nimport \"./BatchTagDialog.vue?vue&type=style&index=0&id=54f87f24&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-54f87f24\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, withKeys as _withKeys, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"tag-management-container\"\n};\nconst _hoisted_2 = {\n class: \"input-section\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"suggestions-panel\"\n};\nconst _hoisted_4 = [\"onClick\"];\nconst _hoisted_5 = {\n class: \"current-tags-section\"\n};\nconst _hoisted_6 = {\n key: 0,\n class: \"tags-container\"\n};\nconst _hoisted_7 = {\n key: 1,\n class: \"empty-message\"\n};\nconst _hoisted_8 = {\n class: \"popular-tags-section\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"tags-container\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"empty-message\"\n};\nconst _hoisted_11 = {\n key: 2,\n class: \"empty-message\"\n};\nconst _hoisted_12 = {\n class: \"dialog-footer\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_Loading = _resolveComponent(\"Loading\");\n const _component_el_icon = _resolveComponent(\"el-icon\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: _ctx.$t('tagManagement.title'),\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $options.visible = $event),\n width: $options.dialogWidth,\n onClose: $options.handleClose\n }, {\n footer: _withCtx(() => [_createElementVNode(\"span\", _hoisted_12, [_createVNode(_component_el_button, {\n onClick: $options.handleClose\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('tagManagement.close')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createVNode(_component_el_input, {\n modelValue: $data.inputTag,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.inputTag = $event),\n placeholder: _ctx.$t('tagManagement.inputPlaceholder'),\n onKeyup: _withKeys($options.handleAddTag, [\"enter\"]),\n onInput: $options.handleInputChange,\n clearable: \"\"\n }, {\n append: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: $options.handleAddTag,\n type: \"primary\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"plus\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"modelValue\", \"placeholder\", \"onKeyup\", \"onInput\"]), $data.showSuggestions && $data.suggestions.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.suggestions, tag => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: tag,\n class: \"suggestion-item\",\n onClick: $event => $options.selectSuggestion(tag)\n }, _toDisplayString(tag), 9, _hoisted_4);\n }), 128))])) : _createCommentVNode(\"\", true)]), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('tagManagement.currentTags')), 1), $data.currentTags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.currentTags, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n closable: \"\",\n onClose: $event => $options.handleRemoveTag(tag),\n class: \"tag-item\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"onClose\"]);\n }), 128))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_7, _toDisplayString(_ctx.$t('tagManagement.noTags')), 1))]), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('tagManagement.popularTags')), 1), $data.popularTags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.popularTags, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n onClick: $event => $options.handleAddPopularTag(tag),\n class: \"tag-item clickable\",\n type: \"info\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"onClick\"]);\n }), 128))])) : $data.loadingPopularTags ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_icon, {\n class: \"is-loading\"\n }, {\n default: _withCtx(() => [_createVNode(_component_Loading)]),\n _: 1\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('tagManagement.loading')), 1)])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, _toDisplayString(_ctx.$t('tagManagement.noPopularTags')), 1))])])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\", \"onClose\"]);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport { ElMessage } from 'element-plus';\nimport { Loading } from '@element-plus/icons-vue';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'TagManagementDialog',\n components: {\n Loading\n },\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n fileId: {\n type: String,\n required: true\n }\n },\n emits: ['update:modelValue', 'tagsUpdated'],\n data() {\n return {\n currentTags: [],\n inputTag: '',\n suggestions: [],\n popularTags: [],\n showSuggestions: false,\n loading: false,\n loadingPopularTags: false,\n debounceTimer: null\n };\n },\n computed: {\n visible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n dialogWidth() {\n return window.innerWidth < 768 ? '90%' : '500px';\n }\n },\n watch: {\n visible(newVal) {\n if (newVal) {\n this.loadFileTags();\n this.loadPopularTags();\n }\n }\n },\n methods: {\n async loadFileTags() {\n try {\n const response = await fetchWithAuth(`/api/manage/tags/${encodeURIComponent(this.fileId)}`, {\n method: 'GET'\n });\n if (response.ok) {\n const data = await response.json();\n this.currentTags = data.tags || [];\n } else {\n throw new Error('Failed to load tags');\n }\n } catch (error) {\n console.error('Error loading file tags:', error);\n ElMessage.error(this.$t('tagManagement.loadFailed'));\n }\n },\n async loadPopularTags() {\n this.loadingPopularTags = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/autocomplete?limit=20', {\n method: 'GET'\n });\n if (response.ok) {\n const data = await response.json();\n this.popularTags = (data.tags || []).filter(tag => !this.currentTags.includes(tag));\n }\n } catch (error) {\n console.error('Error loading popular tags:', error);\n } finally {\n this.loadingPopularTags = false;\n }\n },\n handleInputChange() {\n clearTimeout(this.debounceTimer);\n if (!this.inputTag || this.inputTag.trim().length === 0) {\n this.showSuggestions = false;\n return;\n }\n this.debounceTimer = setTimeout(() => {\n this.fetchSuggestions();\n }, 300);\n },\n async fetchSuggestions() {\n try {\n const prefix = this.inputTag.trim().toLowerCase();\n const response = await fetchWithAuth(`/api/manage/tags/autocomplete?prefix=${encodeURIComponent(prefix)}&limit=10`, {\n method: 'GET'\n });\n if (response.ok) {\n const data = await response.json();\n this.suggestions = (data.tags || []).filter(tag => !this.currentTags.includes(tag));\n this.showSuggestions = this.suggestions.length > 0;\n }\n } catch (error) {\n console.error('Error fetching suggestions:', error);\n }\n },\n selectSuggestion(tag) {\n this.inputTag = tag;\n this.showSuggestions = false;\n this.handleAddTag();\n },\n async handleAddTag() {\n const tag = this.inputTag.trim();\n if (!tag) {\n return;\n }\n if (this.currentTags.includes(tag)) {\n ElMessage.warning(this.$t('tagManagement.tagExists'));\n this.inputTag = '';\n this.showSuggestions = false;\n return;\n }\n try {\n const response = await fetchWithAuth(`/api/manage/tags/${encodeURIComponent(this.fileId)}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n action: 'add',\n tags: [tag]\n })\n });\n if (response.ok) {\n const data = await response.json();\n this.currentTags = data.tags || [];\n this.inputTag = '';\n this.showSuggestions = false;\n ElMessage.success(this.$t('tagManagement.addSuccess'));\n this.$emit('tagsUpdated', this.currentTags);\n\n // 重新加载常用标签\n this.loadPopularTags();\n } else {\n const error = await response.json();\n throw new Error(error.message || this.$t('tagManagement.addFailed'));\n }\n } catch (error) {\n console.error('Error adding tag:', error);\n ElMessage.error(error.message || this.$t('tagManagement.addFailed'));\n }\n },\n async handleRemoveTag(tag) {\n try {\n const response = await fetchWithAuth(`/api/manage/tags/${encodeURIComponent(this.fileId)}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n action: 'remove',\n tags: [tag]\n })\n });\n if (response.ok) {\n const data = await response.json();\n this.currentTags = data.tags || [];\n ElMessage.success(this.$t('tagManagement.removeSuccess'));\n this.$emit('tagsUpdated', this.currentTags);\n\n // 重新加载常用标签\n this.loadPopularTags();\n } else {\n throw new Error(this.$t('tagManagement.removeFailed'));\n }\n } catch (error) {\n console.error('Error removing tag:', error);\n ElMessage.error(this.$t('tagManagement.removeFailed'));\n }\n },\n handleAddPopularTag(tag) {\n this.inputTag = tag;\n this.handleAddTag();\n },\n handleClose() {\n this.visible = false;\n this.inputTag = '';\n this.showSuggestions = false;\n this.currentTags = [];\n this.popularTags = [];\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./TagManagementDialog.vue?vue&type=template&id=1dabc380&scoped=true\"\nimport script from \"./TagManagementDialog.vue?vue&type=script&lang=js\"\nexport * from \"./TagManagementDialog.vue?vue&type=script&lang=js\"\n\nimport \"./TagManagementDialog.vue?vue&type=style&index=0&id=1dabc380&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1dabc380\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, renderList as _renderList, Fragment as _Fragment, withModifiers as _withModifiers } from \"vue\";\nconst _hoisted_1 = {\n class: \"detail-actions\"\n};\nconst _hoisted_2 = {\n class: \"preview-section\"\n};\nconst _hoisted_3 = {\n class: \"preview-content\"\n};\nconst _hoisted_4 = [\"src\"];\nconst _hoisted_5 = [\"src\"];\nconst _hoisted_6 = {\n key: 1\n};\nconst _hoisted_7 = {\n key: 1\n};\nconst _hoisted_8 = {\n key: 0,\n style: {\n \"display\": \"flex\",\n \"align-items\": \"center\",\n \"gap\": \"6px\"\n }\n};\nconst _hoisted_9 = {\n key: 1,\n style: {\n \"color\": \"var(--el-text-color-secondary)\"\n }\n};\nconst _hoisted_10 = {\n key: 0,\n style: {\n \"display\": \"flex\",\n \"flex-wrap\": \"wrap\",\n \"gap\": \"5px\"\n }\n};\nconst _hoisted_11 = {\n key: 1,\n style: {\n \"color\": \"var(--el-text-color-secondary)\"\n }\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_el_image = _resolveComponent(\"el-image\");\n const _component_el_descriptions_item = _resolveComponent(\"el-descriptions-item\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_descriptions = _resolveComponent(\"el-descriptions\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: _ctx.$t('fileDetail.title'),\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[24] || (_cache[24] = $event => $options.visible = $event),\n width: $options.dialogWidth\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [!$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 0,\n type: \"primary\",\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$emit('download')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"download\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.download')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 1,\n type: \"primary\",\n onClick: _cache[1] || (_cache[1] = $event => _ctx.$emit('tagManagement')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"tags\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.tags')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 2,\n type: \"primary\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('block')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"ban\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.blacklist')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 3,\n type: \"primary\",\n onClick: _cache[3] || (_cache[3] = $event => _ctx.$emit('white')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"shield-alt\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.whitelist')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 4,\n type: \"danger\",\n onClick: _cache[4] || (_cache[4] = $event => _ctx.$emit('delete')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.deleteBtn')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 5,\n type: \"warning\",\n onClick: _cache[5] || (_cache[5] = $event => $options.startEdit()),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"edit\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.edit')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 6,\n type: \"info\",\n onClick: _cache[6] || (_cache[6] = $event => $options.openRenameDialog()),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"i-cursor\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.rename')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), $data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 7,\n type: \"success\",\n onClick: _cache[7] || (_cache[7] = $event => $options.saveMetadata()),\n round: \"\",\n size: \"small\",\n class: \"detail-action\",\n loading: $data.editSaving\n }, {\n default: _withCtx(() => [!$data.editSaving ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"save\",\n style: {\n \"margin-right\": \"3px\"\n }\n })) : _createCommentVNode(\"\", true), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.save')), 1)]),\n _: 1\n }, 8, [\"loading\"])) : _createCommentVNode(\"\", true), $data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 8,\n onClick: _cache[8] || (_cache[8] = $event => $options.cancelEdit()),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('fileDetail.cancel')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true)]), _createVNode(_component_el_tabs, {\n modelValue: $data.activeTab,\n \"onUpdate:modelValue\": _cache[16] || (_cache[16] = $event => $data.activeTab = $event),\n onTabClick: $options.handleTabClick,\n style: {\n \"margin-bottom\": \"10px\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tab_pane, {\n label: _ctx.$t('fileDetail.originUrl'),\n name: \"originUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.originUrl,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = $event => $props.urls.originUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_tab_pane, {\n label: \"Markdown\",\n name: \"mdUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.mdUrl,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $props.urls.mdUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n }), _createVNode(_component_el_tab_pane, {\n label: \"HTML\",\n name: \"htmlUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.htmlUrl,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => $props.urls.htmlUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n }), _createVNode(_component_el_tab_pane, {\n label: \"BBCode\",\n name: \"bbUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.bbUrl,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = $event => $props.urls.bbUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n }), $props.file?.metadata?.TgFileId ? (_openBlock(), _createBlock(_component_el_tab_pane, {\n key: 0,\n label: \"TG File ID\",\n name: \"tgId\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.tgId,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $event => $props.urls.tgId = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n })) : _createCommentVNode(\"\", true), $props.file?.metadata?.S3Location ? (_openBlock(), _createBlock(_component_el_tab_pane, {\n key: 1,\n label: \"S3 Location\",\n name: \"s3Location\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.S3Location,\n \"onUpdate:modelValue\": _cache[14] || (_cache[14] = $event => $props.urls.S3Location = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n })) : _createCommentVNode(\"\", true), $props.file?.metadata?.S3CdnFileUrl ? (_openBlock(), _createBlock(_component_el_tab_pane, {\n key: 2,\n label: \"S3 CDN URL\",\n name: \"s3CdnFileUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.S3CdnFileUrl,\n \"onUpdate:modelValue\": _cache[15] || (_cache[15] = $event => $props.urls.S3CdnFileUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"modelValue\", \"onTabClick\"]), _createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"div\", _hoisted_3, [$options.isVideo ? (_openBlock(), _createElementBlock(\"video\", {\n key: 0,\n src: $props.fileLink,\n autoplay: \"\",\n muted: \"\",\n loop: \"\",\n class: \"video-preview\",\n onClick: _cache[17] || (_cache[17] = (...args) => $options.openImageLink && $options.openImageLink(...args))\n }, null, 8, _hoisted_4)) : $options.isAudio ? (_openBlock(), _createElementBlock(\"audio\", {\n key: 1,\n src: $props.fileLink,\n controls: \"\",\n autoplay: \"\",\n class: \"audio-preview\"\n }, null, 8, _hoisted_5)) : $options.isImage ? (_openBlock(), _createBlock(_component_el_image, {\n key: 2,\n src: $props.fileLink,\n \"preview-src-list\": [$props.fileLink],\n \"preview-teleported\": true,\n fit: \"contain\",\n lazy: \"\",\n class: \"image-preview\"\n }, null, 8, [\"src\", \"preview-src-list\"])) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 3,\n icon: \"file\",\n class: \"file-icon-detail\"\n }))])]), _createVNode(_component_el_descriptions, {\n border: \"\",\n column: $options.descColumn\n }, {\n default: _withCtx(() => [_createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.fileNameLabel')\n }, {\n default: _withCtx(() => [$data.isEditing ? (_openBlock(), _createBlock(_component_el_input, {\n key: 0,\n modelValue: $data.editForm.FileName,\n \"onUpdate:modelValue\": _cache[18] || (_cache[18] = $event => $data.editForm.FileName = $event),\n size: \"small\",\n placeholder: _ctx.$t('fileDetail.fileNamePlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])) : (_openBlock(), _createElementBlock(\"span\", _hoisted_6, _toDisplayString($props.file?.metadata?.FileName || $props.file?.name), 1))]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.fileType')\n }, {\n default: _withCtx(() => [$data.isEditing ? (_openBlock(), _createBlock(_component_el_input, {\n key: 0,\n modelValue: $data.editForm.FileType,\n \"onUpdate:modelValue\": _cache[19] || (_cache[19] = $event => $data.editForm.FileType = $event),\n size: \"small\",\n placeholder: _ctx.$t('fileDetail.fileTypePlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])) : (_openBlock(), _createElementBlock(\"span\", _hoisted_7, _toDisplayString($props.file?.metadata?.FileType || _ctx.$t('fileDetail.unknown')), 1))]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.fileSizeLabel')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.fileSizeDisplay), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.imageDimensions')\n }, {\n default: _withCtx(() => [$options.imageDimensions ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [_createElementVNode(\"span\", null, _toDisplayString($props.file?.metadata?.Width) + \" × \" + _toDisplayString($props.file?.metadata?.Height), 1), _createVNode(_component_el_tag, {\n size: \"small\",\n type: \"info\",\n style: {\n \"display\": \"inline-flex\",\n \"align-items\": \"center\",\n \"justify-content\": \"center\"\n }\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.orientationIcon), 1)]),\n _: 1\n })])) : (_openBlock(), _createElementBlock(\"span\", _hoisted_9, _toDisplayString(_ctx.$t('fileDetail.noDimensions')), 1))]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.uploadTimeLabel')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.uploadTime), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.channelTypeAndName')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tag, {\n size: \"small\",\n type: \"info\",\n style: {\n \"margin-right\": \"6px\"\n }\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.Channel || _ctx.$t('fileDetail.unknown')), 1)]),\n _: 1\n }), _createElementVNode(\"span\", null, _toDisplayString($props.file?.metadata?.ChannelName || '-'), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.accessStatusAndReview')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tag, {\n size: \"small\",\n type: $options.accessTagType,\n style: {\n \"margin-right\": \"6px\"\n }\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.accessType), 1)]),\n _: 1\n }, 8, [\"type\"]), _createElementVNode(\"span\", null, _toDisplayString($props.file?.metadata?.Label || _ctx.$t('fileDetail.noTags')), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.uploadIP')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.UploadIP || _ctx.$t('fileDetail.unknown')), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.uploadAddressLabel')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.UploadAddress || _ctx.$t('fileDetail.unknown')), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.fileTags')\n }, {\n default: _withCtx(() => [$props.file?.metadata?.Tags && $props.file?.metadata?.Tags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.file?.metadata?.Tags, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n size: \"small\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1024);\n }), 128))])) : (_openBlock(), _createElementBlock(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('fileDetail.noTags')), 1))]),\n _: 1\n }, 8, [\"label\"])]),\n _: 1\n }, 8, [\"column\"]), _createVNode(_component_el_dialog, {\n modelValue: $data.showRenameDialog,\n \"onUpdate:modelValue\": _cache[23] || (_cache[23] = $event => $data.showRenameDialog = $event),\n title: _ctx.$t('fileDetail.renameTitle'),\n width: $options.dialogWidth,\n \"append-to-body\": \"\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[21] || (_cache[21] = $event => $options.closeRenameDialog())\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('fileDetail.renameCancel')), 1)]),\n _: 1\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[22] || (_cache[22] = $event => $options.submitRename()),\n loading: $data.renameSaving,\n disabled: !$data.renameValidation.valid\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('fileDetail.renameConfirm')), 1)]),\n _: 1\n }, 8, [\"loading\", \"disabled\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n onSubmit: _withModifiers($options.submitRename, [\"prevent\"])\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('fileDetail.renameLabel'),\n error: $data.renameValidation.error\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.renameForm.newFileId,\n \"onUpdate:modelValue\": _cache[20] || (_cache[20] = $event => $data.renameForm.newFileId = $event),\n placeholder: _ctx.$t('fileDetail.renamePlaceholder'),\n onInput: $options.validateRenameInput,\n clearable: \"\"\n }, null, 8, [\"modelValue\", \"placeholder\", \"onInput\"])]),\n _: 1\n }, 8, [\"label\", \"error\"])]),\n _: 1\n }, 8, [\"onSubmit\"])]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"width\"])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]);\n}","/**\r\n * File_ID 验证器模块\r\n * 提供 File_ID 格式验证功能,用于重命名操作的前端校验\r\n * 非法字符规则复用 pathValidator 的字符集\r\n */\r\n\r\n/**\r\n * 非法字符正则表达式\r\n * 非法字符包括: \\ : * ? \" ' < > | 空格 ( ) [ ] { } # % ^ ` ~ ; @ & = + $ ,\r\n * 与 pathValidator.js 保持一致\r\n */\r\nconst INVALID_CHARS = /[\\\\:\\*\\?\"'<>\\| \\(\\)\\[\\]\\{\\}#%\\^`~;@&=\\+\\$,]/;\r\n\r\n/**\r\n * 验证 File_ID 格式\r\n * @param {string} newFileId - 新的 File_ID\r\n * @param {string} currentFileId - 当前 File_ID\r\n * @returns {{ valid: boolean, error?: string }}\r\n */\r\nexport function validateFileId(newFileId, currentFileId) {\r\n // 1. 空值/纯空白检测\r\n if (!newFileId || newFileId.trim() === '') {\r\n return {\r\n valid: false,\r\n error: '文件名不能为空'\r\n };\r\n }\r\n\r\n // 2. 与当前 File_ID 相同检测\r\n if (newFileId === currentFileId) {\r\n return {\r\n valid: false,\r\n error: '文件名未发生变化'\r\n };\r\n }\r\n\r\n // 3. 路径穿越检测\r\n if (newFileId.includes('..')) {\r\n return {\r\n valid: false,\r\n error: '文件名不能包含路径穿越字符 \"..\"'\r\n };\r\n }\r\n\r\n // 3.5 单独的 . 路径段检测(仅检查 /./ 或开头 ./,不检查末尾以允许继续输入如 .123)\r\n if (/\\/\\.\\//.test(newFileId) || /^\\.\\//.test(newFileId)) {\r\n return {\r\n valid: false,\r\n error: '文件名不能包含单独的 \".\" 路径段'\r\n };\r\n }\r\n\r\n // 4. 非法字符检测(复用 pathValidator 的字符规则)\r\n if (INVALID_CHARS.test(newFileId)) {\r\n return {\r\n valid: false,\r\n error: '文件名包含非法字符,请使用合法的文件名格式'\r\n };\r\n }\r\n\r\n // 5. 连续斜杠检测\r\n if (newFileId.includes('//')) {\r\n return {\r\n valid: false,\r\n error: '文件名不能包含连续的斜杠'\r\n };\r\n }\r\n\r\n return { valid: true };\r\n}\r\n","import { ElMessage } from 'element-plus';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nimport { validateFileId } from '@/utils/fileIdValidator';\nexport default {\n name: 'FileDetailDialog',\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n file: {\n type: Object,\n default: null\n },\n fileLink: {\n type: String,\n default: ''\n },\n urls: {\n type: Object,\n default: () => ({\n originUrl: '',\n mdUrl: '',\n htmlUrl: '',\n bbUrl: '',\n tgId: '',\n S3Location: '',\n S3CdnFileUrl: ''\n })\n }\n },\n emits: ['update:modelValue', 'download', 'tagManagement', 'block', 'white', 'delete', 'metadataUpdated', 'fileRenamed'],\n watch: {\n visible(val) {\n if (!val) {\n // 关闭弹窗时退出编辑状态\n this.isEditing = false;\n this.editSaving = false;\n }\n }\n },\n data() {\n return {\n activeTab: 'originUrl',\n isEditing: false,\n editForm: {\n FileName: '',\n FileType: ''\n },\n editSaving: false,\n showRenameDialog: false,\n renameForm: {\n newFileId: ''\n },\n renameValidation: {\n valid: true,\n error: ''\n },\n renameSaving: false\n };\n },\n computed: {\n visible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n dialogWidth() {\n return window.innerWidth < 768 ? '95%' : '900px';\n },\n descColumn() {\n return window.innerWidth < 768 ? 1 : 2;\n },\n isVideo() {\n // 先通过 content-type 判断\n const fileType = this.file?.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('video')) return true;\n // 再通过文件后缀判断\n const name = this.file?.name?.toLowerCase() || '';\n return name.endsWith('.mp4') || name.endsWith('.webm') || name.endsWith('.mov') || name.endsWith('.avi');\n },\n isAudio() {\n // 先通过 content-type 判断\n const fileType = this.file?.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('audio')) return true;\n // 再通过文件后缀判断\n const name = this.file?.name?.toLowerCase() || '';\n return name.endsWith('.mp3') || name.endsWith('.wav') || name.endsWith('.ogg') || name.endsWith('.flac');\n },\n isImage() {\n // 先通过 content-type 判断\n const fileType = this.file?.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('image')) return true;\n // 再通过文件后缀判断\n const name = this.file?.name?.toLowerCase() || '';\n return name.endsWith('.jpg') || name.endsWith('.jpeg') || name.endsWith('.png') || name.endsWith('.gif') || name.endsWith('.webp') || name.endsWith('.svg') || name.endsWith('.bmp') || name.endsWith('.avif') || name.endsWith('.heic') || name.endsWith('.heif');\n },\n uploadTime() {\n if (this.file?.metadata?.TimeStamp) {\n return new Date(this.file.metadata.TimeStamp).toLocaleString();\n }\n return this.$t('fileDetail.unknown');\n },\n accessType() {\n const listType = this.file?.metadata?.ListType;\n const label = this.file?.metadata?.Label;\n if (listType === 'White') return this.$t('fileDetail.accessNormalWhitelist');\n if (listType === 'Block') return this.$t('fileDetail.accessBlockedBlacklist');\n if (label === 'adult') return this.$t('fileDetail.accessBlockedReview');\n return this.$t('fileDetail.accessNormal');\n },\n accessTagType() {\n const listType = this.file?.metadata?.ListType;\n const label = this.file?.metadata?.Label;\n if (listType === 'White') return 'success';\n if (listType === 'Block') return 'danger';\n if (label === 'adult') return 'danger';\n return 'success';\n },\n imageDimensions() {\n const width = this.file?.metadata?.Width;\n const height = this.file?.metadata?.Height;\n if (width && height) return true;\n return null;\n },\n orientationIcon() {\n const width = this.file?.metadata?.Width;\n const height = this.file?.metadata?.Height;\n if (!width || !height) return '';\n const ratio = width / height;\n if (ratio > 1.1) return this.$t('fileDetail.orientationLandscape');\n if (ratio < 0.9) return this.$t('fileDetail.orientationPortrait');\n return this.$t('fileDetail.orientationSquare');\n },\n fileSizeDisplay() {\n const sizeBytes = this.file?.metadata?.FileSizeBytes;\n const sizeMB = this.file?.metadata?.FileSize;\n if (sizeBytes) {\n // 根据大小选择合适的单位\n if (sizeBytes < 1024) {\n return `${sizeBytes} B`;\n } else if (sizeBytes < 1024 * 1024) {\n return `${(sizeBytes / 1024).toFixed(2)} KB`;\n } else {\n return `${(sizeBytes / 1024 / 1024).toFixed(2)} MB`;\n }\n } else if (sizeMB) {\n return `${sizeMB} MB`;\n }\n return this.$t('fileDetail.unknown');\n }\n },\n methods: {\n handleVideoClick(e) {\n const video = e.target;\n if (video.paused) video.play();else video.pause();\n },\n handleTabClick() {},\n handleUrlClick(e) {\n const input = e.target;\n input.select();\n navigator.clipboard.writeText(input.value).then(() => {\n ElMessage.success(this.$t('fileDetail.linkCopied'));\n });\n },\n openImageLink() {\n if (this.fileLink) {\n window.open(this.fileLink, '_blank');\n }\n },\n startEdit() {\n this.editForm.FileName = this.file?.metadata?.FileName || '';\n this.editForm.FileType = this.file?.metadata?.FileType || '';\n this.isEditing = true;\n },\n cancelEdit() {\n this.isEditing = false;\n this.editForm.FileName = this.file?.metadata?.FileName || '';\n this.editForm.FileType = this.file?.metadata?.FileType || '';\n this.editSaving = false;\n },\n async saveMetadata() {\n this.editSaving = true;\n try {\n const fileId = this.file.name;\n const response = await fetchWithAuth(`/api/manage/metadata/${fileId}`, {\n method: 'PATCH',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n FileName: this.editForm.FileName,\n FileType: this.editForm.FileType\n })\n });\n if (response.ok) {\n const data = await response.json();\n ElMessage.success(this.$t('fileDetail.metadataSaved'));\n this.isEditing = false;\n this.$emit('metadataUpdated', fileId, data.metadata);\n } else {\n const error = await response.json().catch(() => ({}));\n throw new Error(error.message || this.$t('fileDetail.metadataSaveFailed'));\n }\n } catch (error) {\n console.error('Error saving metadata:', error);\n ElMessage.error(error.message || this.$t('fileDetail.metadataSaveFailed'));\n } finally {\n this.editSaving = false;\n }\n },\n openRenameDialog() {\n this.renameForm.newFileId = this.file?.name || '';\n this.renameValidation = {\n valid: true,\n error: ''\n };\n this.showRenameDialog = true;\n },\n closeRenameDialog() {\n this.showRenameDialog = false;\n this.renameForm.newFileId = '';\n this.renameValidation = {\n valid: true,\n error: ''\n };\n },\n validateRenameInput() {\n const result = validateFileId(this.renameForm.newFileId, this.file?.name || '');\n this.renameValidation = {\n valid: result.valid,\n error: result.error || ''\n };\n },\n async submitRename() {\n if (this.renameSaving) return;\n\n // Validate input first\n this.validateRenameInput();\n if (!this.renameValidation.valid) {\n return;\n }\n this.renameSaving = true;\n try {\n const oldFileId = this.file.name;\n const response = await fetchWithAuth(`/api/manage/rename/${oldFileId}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n newFileId: this.renameForm.newFileId\n })\n });\n if (response.ok) {\n const data = await response.json();\n ElMessage.success(this.$t('fileDetail.renameSuccess'));\n this.showRenameDialog = false;\n this.$emit('fileRenamed', oldFileId, this.renameForm.newFileId, data.metadata);\n } else if (response.status === 409) {\n // Conflict — target File_ID already exists\n this.renameValidation = {\n valid: false,\n error: this.$t('fileDetail.renameConflict')\n };\n } else {\n const error = await response.json().catch(() => ({}));\n throw new Error(error.message || this.$t('fileDetail.renameFailed'));\n }\n } catch (error) {\n console.error('Error renaming file:', error);\n ElMessage.error(error.message || this.$t('fileDetail.renameFailed'));\n } finally {\n this.renameSaving = false;\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FileDetailDialog.vue?vue&type=template&id=550287cc&scoped=true\"\nimport script from \"./FileDetailDialog.vue?vue&type=script&lang=js\"\nexport * from \"./FileDetailDialog.vue?vue&type=script&lang=js\"\n\nimport \"./FileDetailDialog.vue?vue&type=style&index=0&id=550287cc&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-550287cc\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, createBlock as _createBlock, createCommentVNode as _createCommentVNode, Transition as _Transition } from \"vue\";\nconst _hoisted_1 = {\n key: 0,\n class: \"batch-floating-bar\"\n};\nconst _hoisted_2 = {\n class: \"batch-selection-summary\"\n};\nconst _hoisted_3 = {\n class: \"batch-selection-count\"\n};\nconst _hoisted_4 = {\n class: \"batch-floating-actions\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n return _openBlock(), _createBlock(_Transition, {\n name: \"batch-toolbar\"\n }, {\n default: _withCtx(() => [$props.selectedCount > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('dashboard.clearSelection'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"batch-floating-btn ghost\",\n \"aria-label\": _ctx.$t('dashboard.clearSelection'),\n onClick: $options.handleClear\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"times\",\n class: \"batch-floating-icon\"\n })]),\n _: 1\n }, 8, [\"aria-label\", \"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: `${$props.selectedCount} ${_ctx.$t('dashboard.selectedItems')}`,\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"span\", _hoisted_3, _toDisplayString($props.selectedCount), 1)])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _cache[0] || (_cache[0] = _createElementVNode(\"span\", {\n class: \"batch-toolbar-divider\"\n }, null, -1)), _createElementVNode(\"div\", _hoisted_4, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.actions, action => {\n return _openBlock(), _createBlock(_component_el_tooltip, {\n key: action.command,\n disabled: $options.disableTooltip,\n content: _ctx.$t(action.label),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: _normalizeClass([\"batch-floating-btn\", action.className]),\n \"aria-label\": _ctx.$t(action.label),\n onClick: $event => $options.handleAction(action.command)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: action.icon,\n class: \"batch-floating-icon\"\n }, null, 8, [\"icon\"])]),\n _: 2\n }, 1032, [\"class\", \"aria-label\", \"onClick\"])]),\n _: 2\n }, 1032, [\"disabled\", \"content\"]);\n }), 128))])])) : _createCommentVNode(\"\", true)]),\n _: 1\n });\n}","export default {\n name: 'BatchActionBar',\n props: {\n selectedCount: {\n type: Number,\n required: true\n }\n },\n emits: ['action', 'clear'],\n data() {\n return {\n actions: [{\n command: 'copy',\n label: 'dashboard.copy',\n icon: 'copy',\n className: 'copy'\n }, {\n command: 'download',\n label: 'dashboard.download',\n icon: 'download',\n className: 'download'\n }, {\n command: 'move',\n label: 'dashboard.move',\n icon: 'file-export',\n className: 'move'\n }, {\n command: 'tagManagement',\n label: 'dashboard.tagManagement',\n icon: 'tags',\n className: 'tag'\n }, {\n command: 'ban',\n label: 'dashboard.addToBlacklist',\n icon: 'ban',\n className: 'ban'\n }, {\n command: 'white',\n label: 'dashboard.addToWhitelist',\n icon: 'shield-alt',\n className: 'white'\n }, {\n command: 'delete',\n label: 'dashboard.delete',\n icon: 'trash-alt',\n className: 'danger'\n }]\n };\n },\n computed: {\n disableTooltip() {\n return window.innerWidth < 768;\n }\n },\n methods: {\n handleAction(command) {\n this.$emit('action', command);\n },\n handleClear() {\n this.$emit('clear');\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./BatchActionBar.vue?vue&type=template&id=49301bcc&scoped=true\"\nimport script from \"./BatchActionBar.vue?vue&type=script&lang=js\"\nexport * from \"./BatchActionBar.vue?vue&type=script&lang=js\"\n\nimport \"./BatchActionBar.vue?vue&type=style&index=0&id=49301bcc&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-49301bcc\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, withModifiers as _withModifiers, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, normalizeStyle as _normalizeStyle, withCtx as _withCtx } from \"vue\";\nconst _hoisted_1 = {\n class: \"list-col list-col-checkbox\"\n};\nconst _hoisted_2 = [\"src\"];\nconst _hoisted_3 = [\"src\"];\nconst _hoisted_4 = [\"title\"];\nconst _hoisted_5 = {\n class: \"filename-start\"\n};\nconst _hoisted_6 = {\n class: \"filename-end\"\n};\nconst _hoisted_7 = {\n class: \"list-col list-col-tags\"\n};\nconst _hoisted_8 = {\n key: 1,\n class: \"list-empty\"\n};\nconst _hoisted_9 = {\n class: \"list-col list-col-channel\"\n};\nconst _hoisted_10 = {\n class: \"list-col list-col-channel-name\"\n};\nconst _hoisted_11 = {\n key: 0,\n class: \"channel-name-box\"\n};\nconst _hoisted_12 = {\n key: 1,\n class: \"list-empty\"\n};\nconst _hoisted_13 = {\n class: \"list-col list-col-address\"\n};\nconst _hoisted_14 = {\n key: 0,\n class: \"address-box\"\n};\nconst _hoisted_15 = {\n key: 1,\n class: \"list-empty\"\n};\nconst _hoisted_16 = {\n class: \"list-col list-col-size\"\n};\nconst _hoisted_17 = {\n class: \"list-col list-col-date\"\n};\nconst _hoisted_18 = {\n class: \"list-col list-col-actions\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n return _openBlock(), _createElementBlock(\"div\", {\n class: \"list-item\",\n onTouchstart: _cache[10] || (_cache[10] = $event => _ctx.$emit('touchstart', $event)),\n onTouchend: _cache[11] || (_cache[11] = $event => _ctx.$emit('touchend', $event)),\n onTouchmove: _cache[12] || (_cache[12] = $event => _ctx.$emit('touchmove', $event))\n }, [_createElementVNode(\"div\", _hoisted_1, [_createVNode(_component_el_checkbox, {\n modelValue: $data.localSelected,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.localSelected = $event),\n onClick: _cache[1] || (_cache[1] = _withModifiers(() => {}, [\"stop\"])),\n onChange: $options.handleSelectChange\n }, null, 8, [\"modelValue\", \"onChange\"])]), _createElementVNode(\"div\", {\n class: \"list-col list-col-preview\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.handlePreviewClick && $options.handlePreviewClick(...args))\n }, [$options.isFolder ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"folder-open\",\n class: \"list-folder-icon\"\n })) : $options.isVideo ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n src: $props.fileLink,\n class: \"list-preview-img\",\n muted: \"\",\n preload: \"metadata\"\n }, null, 8, _hoisted_2)) : $options.isImage ? (_openBlock(), _createElementBlock(\"img\", {\n key: 2,\n src: $props.fileLink,\n class: \"list-preview-img\",\n loading: \"lazy\",\n decoding: \"async\"\n }, null, 8, _hoisted_3)) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 3,\n icon: \"file\",\n class: \"list-file-icon\"\n }))]), _createElementVNode(\"div\", {\n class: \"list-col list-col-name\",\n onClick: _cache[3] || (_cache[3] = (...args) => $options.handlePreviewClick && $options.handlePreviewClick(...args))\n }, [_createElementVNode(\"span\", {\n class: \"filename-ellipsis\",\n title: $options.displayName\n }, [_createElementVNode(\"span\", _hoisted_5, _toDisplayString($options.fileNameStart), 1), _createElementVNode(\"span\", _hoisted_6, _toDisplayString($options.fileNameEnd), 1)], 8, _hoisted_4)]), _createElementVNode(\"div\", _hoisted_7, [!$options.isFolder && $props.item.metadata?.Tags && $props.item.metadata.Tags.length > 0 ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.item.metadata.Tags.slice(0, 3), (tag, tagIndex) => {\n return _openBlock(), _createElementBlock(\"span\", {\n key: tagIndex,\n class: \"color-tag\",\n style: _normalizeStyle({\n background: $options.getTagColor(tagIndex)\n })\n }, _toDisplayString(tag), 5);\n }), 128)), $props.item.metadata.Tags.length > 3 ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: \"color-tag color-tag-more\",\n style: _normalizeStyle({\n background: $options.getTagColor(3)\n })\n }, \"+\" + _toDisplayString($props.item.metadata.Tags.length - 3), 5)) : _createCommentVNode(\"\", true)], 64)) : (_openBlock(), _createElementBlock(\"span\", _hoisted_8, \"-\"))]), _createElementVNode(\"div\", _hoisted_9, _toDisplayString($options.isFolder ? '-' : $props.item.metadata?.Channel || $props.item.channelTag || '-'), 1), _createElementVNode(\"div\", _hoisted_10, [!$options.isFolder && $props.item.metadata?.ChannelName ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, _toDisplayString($props.item.metadata.ChannelName), 1)) : (_openBlock(), _createElementBlock(\"span\", _hoisted_12, \"-\"))]), _createElementVNode(\"div\", _hoisted_13, [!$options.isFolder && $props.item.metadata?.UploadIP ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, _toDisplayString($props.item.metadata.UploadIP), 1)) : (_openBlock(), _createElementBlock(\"span\", _hoisted_15, \"-\"))]), _createElementVNode(\"div\", _hoisted_16, _toDisplayString($options.isFolder ? '-' : $options.fileSizeDisplay), 1), _createElementVNode(\"div\", _hoisted_17, _toDisplayString($options.uploadDate), 1), _createElementVNode(\"div\", _hoisted_18, [!$options.isFolder ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [_createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.copyLink'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[4] || (_cache[4] = _withModifiers($event => _ctx.$emit('copy'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.downloadFile'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[5] || (_cache[5] = _withModifiers($event => _ctx.$emit('download'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"download\"\n })])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.moveFile'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[6] || (_cache[6] = _withModifiers($event => _ctx.$emit('move'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\"\n })])]),\n _: 1\n }, 8, [\"content\"])], 64)) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.copyLink'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[7] || (_cache[7] = _withModifiers($event => _ctx.$emit('folderCopy'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.moveFile'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[8] || (_cache[8] = _withModifiers($event => _ctx.$emit('move'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\"\n })])]),\n _: 1\n }, 8, [\"content\"])], 64)), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.delete'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn list-action-danger\",\n onClick: _cache[9] || (_cache[9] = _withModifiers($event => _ctx.$emit('delete'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })])]),\n _: 1\n }, 8, [\"content\"])])], 32);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nexport default {\n name: 'FileListItem',\n props: {\n item: {\n type: Object,\n required: true\n },\n selected: {\n type: Boolean,\n default: false\n },\n fileLink: {\n type: String,\n default: ''\n }\n },\n emits: ['update:selected', 'enter', 'detail', 'copy', 'folderCopy', 'move', 'delete', 'download', 'touchstart', 'touchend', 'touchmove'],\n data() {\n return {\n localSelected: this.selected,\n tagColors: ['#f472b6', '#a78bfa', '#60a5fa', '#34d399']\n };\n },\n computed: {\n isFolder() {\n // 检查 isFolder 属性或名称以 / 结尾\n return this.item.isFolder || this.item.name?.endsWith('/');\n },\n isVideo() {\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.mp4') || name.endsWith('.webm') || name.endsWith('.mov') || name.endsWith('.avi');\n },\n isImage() {\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.jpg') || name.endsWith('.jpeg') || name.endsWith('.png') || name.endsWith('.gif') || name.endsWith('.webp') || name.endsWith('.svg') || name.endsWith('.bmp');\n },\n displayName() {\n if (this.isFolder) {\n const parts = this.item.name.split('/').filter(Boolean);\n return parts[parts.length - 1] || this.item.name;\n }\n return this.item.metadata?.FileName || this.getFileName(this.item.name);\n },\n fileNameStart() {\n const name = this.displayName;\n if (name.length <= 20) return name;\n return name.slice(0, -8);\n },\n fileNameEnd() {\n const name = this.displayName;\n if (name.length <= 20) return '';\n return name.slice(-8);\n },\n uploadDate() {\n if (this.item.uploaded) {\n return new Date(this.item.uploaded).toLocaleDateString();\n }\n if (this.item.metadata?.TimeStamp) {\n return new Date(this.item.metadata.TimeStamp).toLocaleDateString();\n }\n return '-';\n },\n fileSizeDisplay() {\n const sizeBytes = this.item.metadata?.FileSizeBytes;\n const sizeMB = this.item.metadata?.FileSize;\n if (sizeBytes) {\n if (sizeBytes < 1024) {\n return `${sizeBytes} B`;\n } else if (sizeBytes < 1024 * 1024) {\n return `${(sizeBytes / 1024).toFixed(1)} KB`;\n } else {\n return `${(sizeBytes / 1024 / 1024).toFixed(2)} MB`;\n }\n } else if (sizeMB) {\n return `${sizeMB} MB`;\n }\n return '-';\n }\n },\n watch: {\n selected(val) {\n this.localSelected = val;\n }\n },\n methods: {\n handleSelectChange(value) {\n this.localSelected = value;\n this.$emit('update:selected', value);\n },\n handlePreviewClick() {\n if (this.isFolder) {\n this.$emit('enter');\n } else {\n this.$emit('detail');\n }\n },\n getFileName(name) {\n const parts = (name || '').split('/');\n return parts[parts.length - 1];\n },\n getTagColor(index) {\n return this.tagColors[index % this.tagColors.length];\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FileListItem.vue?vue&type=template&id=25a3242c&scoped=true\"\nimport script from \"./FileListItem.vue?vue&type=script&lang=js\"\nexport * from \"./FileListItem.vue?vue&type=script&lang=js\"\n\nimport \"./FileListItem.vue?vue&type=style&index=0&id=25a3242c&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-25a3242c\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, vShow as _vShow, withDirectives as _withDirectives, Fragment as _Fragment, withModifiers as _withModifiers, withCtx as _withCtx, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"file-short-info\"\n};\nconst _hoisted_2 = {\n key: 0,\n class: \"success-tag\"\n};\nconst _hoisted_3 = {\n key: 1,\n class: \"fail-tag\"\n};\nconst _hoisted_4 = {\n key: 2,\n class: \"success-tag\"\n};\nconst _hoisted_5 = {\n key: 3,\n class: \"primary-tag\"\n};\nconst _hoisted_6 = {\n key: 0,\n style: {\n \"margin-left\": \"2px\"\n }\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"skeleton-wrapper\"\n};\nconst _hoisted_8 = {\n class: \"error-text\"\n};\nconst _hoisted_9 = [\"src\"];\nconst _hoisted_10 = {\n class: \"error-text\"\n};\nconst _hoisted_11 = {\n key: 3,\n class: \"file-preview\"\n};\nconst _hoisted_12 = {\n class: \"card-bottom-overlay\"\n};\nconst _hoisted_13 = {\n class: \"file-name-row\"\n};\nconst _hoisted_14 = {\n class: \"file-name\"\n};\nconst _hoisted_15 = {\n class: \"action-bar\"\n};\nconst _hoisted_16 = {\n class: \"action-bar-left\"\n};\nconst _hoisted_17 = {\n class: \"action-bar-right\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_image = _resolveComponent(\"el-image\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_card = _resolveComponent(\"el-card\");\n return _openBlock(), _createBlock(_component_el_card, {\n class: \"img-card\",\n onTouchstart: _cache[17] || (_cache[17] = $event => _ctx.$emit('touchstart', $event)),\n onTouchend: _cache[18] || (_cache[18] = $event => _ctx.$emit('touchend', $event)),\n onTouchmove: _cache[19] || (_cache[19] = $event => _ctx.$emit('touchmove', $event))\n }, {\n default: _withCtx(() => [_createVNode(_component_el_checkbox, {\n modelValue: $data.localSelected,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.localSelected = $event),\n onChange: _cache[1] || (_cache[1] = $event => _ctx.$emit('update:selected', $data.localSelected))\n }, null, 8, [\"modelValue\"]), _createElementVNode(\"div\", _hoisted_1, [$props.item.metadata?.ListType === 'White' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _toDisplayString($options.channelTag), 1)) : $props.item.metadata?.ListType === 'Block' || $props.item.metadata?.Label === 'adult' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _toDisplayString($options.channelTag), 1)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_4, _toDisplayString($options.channelTag), 1)), $props.item.metadata?.Tags && $props.item.metadata?.Tags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [_createVNode(_component_font_awesome_icon, {\n icon: \"tag\",\n style: {\n \"margin-right\": \"3px\",\n \"font-size\": \"12px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString($props.item.metadata.Tags[0]) + \" \", 1), $props.item.metadata.Tags.length > 1 ? (_openBlock(), _createElementBlock(\"span\", _hoisted_6, \" (+\" + _toDisplayString($props.item.metadata.Tags.length - 1) + \") \", 1)) : _createCommentVNode(\"\", true)])) : _createCommentVNode(\"\", true)]), $options.isVideo ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [$data.videoLoading ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7)) : $data.videoError ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"error-wrapper\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('detail'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-triangle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_ctx.$t('dashboard.loadFailed')), 1)])) : _createCommentVNode(\"\", true), _withDirectives(_createElementVNode(\"video\", {\n src: $props.fileLink,\n muted: \"\",\n loop: \"\",\n preload: \"metadata\",\n class: \"video-preview\",\n onClick: _cache[3] || (_cache[3] = (...args) => $options.handleVideoClick && $options.handleVideoClick(...args)),\n onMouseenter: _cache[4] || (_cache[4] = $event => $options.handleVideoHover($event, true)),\n onMouseleave: _cache[5] || (_cache[5] = $event => $options.handleVideoHover($event, false)),\n onFullscreenchange: _cache[6] || (_cache[6] = (...args) => $options.handleFullscreenChange && $options.handleFullscreenChange(...args)),\n onWebkitfullscreenchange: _cache[7] || (_cache[7] = (...args) => $options.handleFullscreenChange && $options.handleFullscreenChange(...args)),\n onLoadeddata: _cache[8] || (_cache[8] = $event => $data.videoLoading = false),\n onError: _cache[9] || (_cache[9] = (...args) => $options.handleVideoError && $options.handleVideoError(...args))\n }, null, 40, _hoisted_9), [[_vShow, !$data.videoLoading && !$data.videoError]])], 64)) : $options.isAudio ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"file-preview audio-card-preview\",\n onClick: _cache[10] || (_cache[10] = $event => _ctx.$emit('detail'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"music\",\n class: \"file-icon audio-icon\"\n })])) : $options.isImage ? (_openBlock(), _createBlock(_component_el_image, {\n key: 2,\n \"preview-teleported\": true,\n src: $props.fileLink,\n \"preview-src-list\": $props.previewSrcList,\n fit: \"cover\",\n lazy: \"\",\n decoding: \"async\",\n class: \"image-preview\"\n }, {\n placeholder: _withCtx(() => [...(_cache[20] || (_cache[20] = [_createElementVNode(\"div\", {\n class: \"skeleton-wrapper\"\n }, null, -1)]))]),\n error: _withCtx(() => [_createElementVNode(\"div\", {\n class: \"error-wrapper\",\n onClick: _cache[11] || (_cache[11] = _withModifiers($event => _ctx.$emit('detail'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"image\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('dashboard.loadFailed')), 1)])]),\n _: 1\n }, 8, [\"src\", \"preview-src-list\"])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\",\n class: \"file-icon\"\n })])), _createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"span\", _hoisted_14, _toDisplayString($options.displayName), 1)]), _createElementVNode(\"div\", _hoisted_15, [_createElementVNode(\"div\", _hoisted_16, [_createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.detail'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[12] || (_cache[12] = _withModifiers($event => _ctx.$emit('detail'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"info-circle\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])]), _createElementVNode(\"div\", _hoisted_17, [_createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.moveFile'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[13] || (_cache[13] = _withModifiers($event => _ctx.$emit('move'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.delete'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn action-btn-danger\",\n onClick: _cache[14] || (_cache[14] = _withModifiers($event => _ctx.$emit('delete'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.downloadFile'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[15] || (_cache[15] = _withModifiers($event => _ctx.$emit('download'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"download\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.copyLink'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[16] || (_cache[16] = _withModifiers($event => _ctx.$emit('copy'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])])])]),\n _: 1\n });\n}","export default {\n name: 'FileCard',\n props: {\n item: {\n type: Object,\n required: true\n },\n selected: {\n type: Boolean,\n default: false\n },\n fileLink: {\n type: String,\n required: true\n },\n previewSrcList: {\n type: Array,\n default: () => []\n },\n disableTooltip: {\n type: Boolean,\n default: false\n }\n },\n emits: ['update:selected', 'detail', 'copy', 'move', 'delete', 'download', 'touchstart', 'touchend', 'touchmove'],\n data() {\n return {\n localSelected: this.selected,\n videoLoading: true,\n videoError: false\n };\n },\n computed: {\n channelTag() {\n return this.item.channelTag || '';\n },\n isVideo() {\n // 先通过 content-type 判断\n const fileType = this.item.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('video')) return true;\n // 再通过文件后缀判断\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.mp4') || name.endsWith('.webm') || name.endsWith('.mov') || name.endsWith('.avi');\n },\n isAudio() {\n // 先通过 content-type 判断\n const fileType = this.item.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('audio')) return true;\n // 再通过文件后缀判断\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.mp3') || name.endsWith('.wav') || name.endsWith('.ogg') || name.endsWith('.flac');\n },\n isImage() {\n // 先通过 content-type 判断\n const fileType = this.item.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('image')) return true;\n // 再通过文件后缀判断\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.jpg') || name.endsWith('.jpeg') || name.endsWith('.png') || name.endsWith('.gif') || name.endsWith('.webp') || name.endsWith('.svg') || name.endsWith('.bmp') || name.endsWith('.avif') || name.endsWith('.heic') || name.endsWith('.heif');\n },\n displayName() {\n const fileName = this.item.metadata?.FileName || this.item.name || '';\n const parts = fileName.split('/');\n return parts[parts.length - 1];\n }\n },\n watch: {\n selected(val) {\n this.localSelected = val;\n },\n fileLink() {\n // 链接变化时重置加载状态\n this.videoLoading = true;\n this.videoError = false;\n }\n },\n methods: {\n handleVideoError() {\n this.videoLoading = false;\n this.videoError = true;\n },\n handleVideoClick(e) {\n const video = e.target;\n if (video.requestFullscreen) {\n video.requestFullscreen();\n } else if (video.webkitRequestFullscreen) {\n video.webkitRequestFullscreen();\n } else if (video.mozRequestFullScreen) {\n video.mozRequestFullScreen();\n } else if (video.msRequestFullscreen) {\n video.msRequestFullscreen();\n }\n },\n handleFullscreenChange(e) {\n const video = e.target;\n const isFullscreen = document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement;\n if (isFullscreen) {\n // 进入全屏:取消静音和循环\n video.muted = false;\n video.loop = false;\n } else {\n // 退出全屏:恢复静音和循环,暂停并重置\n video.muted = true;\n video.loop = true;\n video.pause();\n video.currentTime = 0;\n }\n },\n handleVideoHover(e, isEnter) {\n const video = e.target;\n if (isEnter) {\n video.play().catch(() => {});\n } else {\n video.pause();\n video.currentTime = 0;\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FileCard.vue?vue&type=template&id=956fb02e&scoped=true\"\nimport script from \"./FileCard.vue?vue&type=script&lang=js\"\nexport * from \"./FileCard.vue?vue&type=script&lang=js\"\n\nimport \"./FileCard.vue?vue&type=style&index=0&id=956fb02e&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-956fb02e\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, withModifiers as _withModifiers, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"card-bottom-overlay\"\n};\nconst _hoisted_2 = {\n class: \"file-name-row\"\n};\nconst _hoisted_3 = {\n class: \"file-name\"\n};\nconst _hoisted_4 = {\n key: 0,\n class: \"action-bar\"\n};\nconst _hoisted_5 = {\n class: \"action-bar-right\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_card = _resolveComponent(\"el-card\");\n return _openBlock(), _createBlock(_component_el_card, {\n class: \"img-card folder-card\",\n onTouchstart: _cache[6] || (_cache[6] = $event => _ctx.$emit('touchstart', $event)),\n onTouchend: _cache[7] || (_cache[7] = $event => _ctx.$emit('touchend', $event)),\n onTouchmove: _cache[8] || (_cache[8] = $event => _ctx.$emit('touchmove', $event))\n }, {\n default: _withCtx(() => [_createVNode(_component_el_checkbox, {\n modelValue: $data.localSelected,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.localSelected = $event),\n onChange: _cache[1] || (_cache[1] = $event => _ctx.$emit('update:selected', $data.localSelected))\n }, null, 8, [\"modelValue\"]), _createElementVNode(\"div\", {\n class: \"folder-icon\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('enter'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"folder-icon-svg\"\n })]), _createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"span\", _hoisted_3, _toDisplayString($options.folderName), 1)]), $props.showActions ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [_cache[9] || (_cache[9] = _createElementVNode(\"div\", {\n class: \"action-bar-left\"\n }, null, -1)), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.copyLink'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[3] || (_cache[3] = _withModifiers($event => _ctx.$emit('copy'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.moveFile'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[4] || (_cache[4] = _withModifiers($event => _ctx.$emit('move'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.delete'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn action-btn-danger\",\n onClick: _cache[5] || (_cache[5] = _withModifiers($event => _ctx.$emit('delete'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])])) : _createCommentVNode(\"\", true)])]),\n _: 1\n });\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nexport default {\n name: 'FolderCard',\n props: {\n name: {\n type: String,\n required: true\n },\n selected: {\n type: Boolean,\n default: false\n },\n showActions: {\n type: Boolean,\n default: true\n },\n disableTooltip: {\n type: Boolean,\n default: false\n }\n },\n emits: ['update:selected', 'enter', 'copy', 'move', 'delete', 'touchstart', 'touchend', 'touchmove'],\n data() {\n return {\n localSelected: this.selected\n };\n },\n computed: {\n folderName() {\n const parts = this.name.split('/').filter(Boolean);\n return parts[parts.length - 1] || this.name;\n }\n },\n watch: {\n selected(val) {\n this.localSelected = val;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FolderCard.vue?vue&type=template&id=534cf01b&scoped=true\"\nimport script from \"./FolderCard.vue?vue&type=script&lang=js\"\nexport * from \"./FolderCard.vue?vue&type=script&lang=js\"\n\nimport \"./FolderCard.vue?vue&type=style&index=0&id=534cf01b&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-534cf01b\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, createCommentVNode as _createCommentVNode, createStaticVNode as _createStaticVNode } from \"vue\";\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return $props.type === 'card' ? (_openBlock(true), _createElementBlock(_Fragment, {\n key: 0\n }, _renderList($props.count, i => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: 'skeleton-' + i,\n class: \"skeleton-card\"\n }, [...(_cache[0] || (_cache[0] = [_createElementVNode(\"div\", {\n class: \"skeleton-image\"\n }, null, -1), _createElementVNode(\"div\", {\n class: \"skeleton-info\"\n }, [_createElementVNode(\"div\", {\n class: \"skeleton-text\"\n })], -1)]))]);\n }), 128)) : $props.type === 'list' ? (_openBlock(true), _createElementBlock(_Fragment, {\n key: 1\n }, _renderList($props.count, i => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: 'list-skeleton-' + i,\n class: \"list-item skeleton-list-item\"\n }, [...(_cache[1] || (_cache[1] = [_createStaticVNode(\"
\", 10)]))]);\n }), 128)) : _createCommentVNode(\"\", true);\n}","export default {\n name: 'SkeletonLoader',\n props: {\n type: {\n type: String,\n default: 'card',\n validator: value => ['card', 'list'].includes(value)\n },\n count: {\n type: Number,\n default: 15\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./SkeletonLoader.vue?vue&type=template&id=070880ec&scoped=true\"\nimport script from \"./SkeletonLoader.vue?vue&type=script&lang=js\"\nexport * from \"./SkeletonLoader.vue?vue&type=script&lang=js\"\n\nimport \"./SkeletonLoader.vue?vue&type=style&index=0&id=070880ec&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-070880ec\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withModifiers as _withModifiers, withKeys as _withKeys, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = [\"aria-checked\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"span\", {\n class: _normalizeClass([\"dashboard-checkbox\", [`dashboard-checkbox--${$props.variant}`, {\n 'checked': $props.checked,\n 'indeterminate': $props.indeterminate && !$props.checked\n }]]),\n role: \"checkbox\",\n \"aria-checked\": $options.ariaChecked,\n tabindex: \"0\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.handleClick && $options.handleClick(...args)),\n onKeydown: [_cache[1] || (_cache[1] = _withKeys(_withModifiers((...args) => $options.handleClick && $options.handleClick(...args), [\"prevent\"]), [\"enter\"])), _cache[2] || (_cache[2] = _withKeys(_withModifiers((...args) => $options.handleClick && $options.handleClick(...args), [\"prevent\"]), [\"space\"]))]\n }, [_createVNode(_component_font_awesome_icon, {\n icon: $options.markIcon,\n class: \"dashboard-checkbox-mark\"\n }, null, 8, [\"icon\"])], 42, _hoisted_1);\n}","export default {\n name: 'DashboardCheckbox',\n props: {\n checked: {\n type: Boolean,\n default: false\n },\n indeterminate: {\n type: Boolean,\n default: false\n },\n variant: {\n type: String,\n default: 'breadcrumb',\n validator: value => ['breadcrumb'].includes(value)\n }\n },\n emits: ['click'],\n computed: {\n ariaChecked() {\n if (this.checked) return 'true';\n if (this.indeterminate) return 'mixed';\n return 'false';\n },\n markIcon() {\n return this.indeterminate && !this.checked ? 'minus' : 'check';\n }\n },\n methods: {\n handleClick(event) {\n this.$emit('click', event);\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DashboardCheckbox.vue?vue&type=template&id=3757bfa7&scoped=true\"\nimport script from \"./DashboardCheckbox.vue?vue&type=script&lang=js\"\nexport * from \"./DashboardCheckbox.vue?vue&type=script&lang=js\"\n\nimport \"./DashboardCheckbox.vue?vue&type=style&index=0&id=3757bfa7&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3757bfa7\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"el-dropdown-link filter-trigger\"\n};\nconst _hoisted_2 = {\n class: \"filter-section\"\n};\nconst _hoisted_3 = {\n class: \"filter-title\"\n};\nconst _hoisted_4 = {\n class: \"filter-options\"\n};\nconst _hoisted_5 = {\n class: \"filter-section\"\n};\nconst _hoisted_6 = {\n class: \"filter-title\"\n};\nconst _hoisted_7 = {\n class: \"filter-options\"\n};\nconst _hoisted_8 = {\n class: \"filter-section\"\n};\nconst _hoisted_9 = {\n class: \"filter-title\"\n};\nconst _hoisted_10 = {\n class: \"filter-options\"\n};\nconst _hoisted_11 = {\n class: \"filter-section\"\n};\nconst _hoisted_12 = {\n class: \"filter-title\"\n};\nconst _hoisted_13 = {\n class: \"filter-options\"\n};\nconst _hoisted_14 = {\n class: \"filter-section\"\n};\nconst _hoisted_15 = {\n class: \"filter-title\"\n};\nconst _hoisted_16 = {\n class: \"filter-options\"\n};\nconst _hoisted_17 = {\n key: 0,\n class: \"filter-section\"\n};\nconst _hoisted_18 = {\n class: \"filter-title\"\n};\nconst _hoisted_19 = {\n class: \"filter-options\"\n};\nconst _hoisted_20 = {\n key: 0,\n class: \"channel-divider\"\n};\nconst _hoisted_21 = {\n class: \"channel-group-title\"\n};\nconst _hoisted_22 = {\n class: \"filter-actions\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_badge = _resolveComponent(\"el-badge\");\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_el_checkbox_group = _resolveComponent(\"el-checkbox-group\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n return _openBlock(), _createBlock(_component_el_dropdown, {\n \"hide-on-click\": false,\n trigger: \"click\",\n class: \"filter-dropdown\",\n ref: \"dropdownRef\"\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, {\n class: \"filter-dropdown-menu\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"div\", _hoisted_3, _toDisplayString(_ctx.$t('filter.accessStatus')), 1), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.accessStatus,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.localFilters.accessStatus = $event),\n onChange: _cache[1] || (_cache[1] = $event => $options.handleFilterChange('accessStatus'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.accessStatusOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'accessStatus-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"div\", _hoisted_6, _toDisplayString(_ctx.$t('filter.blackWhiteList')), 1), _createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.listType,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.localFilters.listType = $event),\n onChange: _cache[3] || (_cache[3] = $event => $options.handleFilterChange('listType'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.listTypeOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'listType-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"div\", _hoisted_9, _toDisplayString(_ctx.$t('filter.reviewResult')), 1), _createElementVNode(\"div\", _hoisted_10, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.label,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $data.localFilters.label = $event),\n onChange: _cache[5] || (_cache[5] = $event => $options.handleFilterChange('label'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.labelOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'label-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"div\", _hoisted_12, _toDisplayString(_ctx.$t('filter.fileType')), 1), _createElementVNode(\"div\", _hoisted_13, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.fileType,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.localFilters.fileType = $event),\n onChange: _cache[7] || (_cache[7] = $event => $options.handleFilterChange('fileType'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.fileTypeOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'fileType-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"div\", _hoisted_15, _toDisplayString(_ctx.$t('filter.channelType')), 1), _createElementVNode(\"div\", _hoisted_16, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.channel,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => $data.localFilters.channel = $event),\n onChange: _cache[9] || (_cache[9] = $event => $options.handleFilterChange('channel'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.channelOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'channel-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), $props.channelNameOptions.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [_createElementVNode(\"div\", _hoisted_18, _toDisplayString(_ctx.$t('filter.channelName')), 1), _createElementVNode(\"div\", _hoisted_19, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.channelName,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $data.localFilters.channelName = $event),\n onChange: _cache[11] || (_cache[11] = $event => $options.handleFilterChange('channelName'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.groupedChannelNames, (group, index) => {\n return _openBlock(), _createElementBlock(_Fragment, {\n key: 'group-' + group.type\n }, [index > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_20)) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_21, _toDisplayString(group.typeLabel), 1), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(group.channels, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'channelName-' + option.type + '-' + option.name,\n label: option.type + ':' + option.name\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.name), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))], 64);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])])) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_22, [_createVNode(_component_el_button, {\n size: \"small\",\n onClick: $options.clearFilters,\n disabled: $options.activeFilterCount === 0\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('filter.clearFilters')), 1)]),\n _: 1\n }, 8, [\"onClick\", \"disabled\"])])]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_1, [_createVNode(_component_el_badge, {\n value: $options.activeFilterCount,\n hidden: $options.activeFilterCount === 0,\n class: \"filter-badge\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"filter\",\n class: \"header-icon\"\n })]),\n _: 1\n }, 8, [\"value\", \"hidden\"])])]),\n _: 1\n }, 512);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.reduce.js\";\nexport default {\n name: 'FilterDropdown',\n props: {\n filters: {\n type: Object,\n default: () => ({\n accessStatus: [],\n // 访问状态: 'normal'(正常), 'blocked'(已屏蔽)\n listType: [],\n // 黑白名单: 'White', 'Block', 'none'\n label: [],\n fileType: [],\n channel: [],\n channelName: []\n })\n },\n channelNameOptions: {\n type: Array,\n default: () => []\n }\n },\n emits: ['update:filters', 'change'],\n data() {\n return {\n localFilters: {\n accessStatus: [],\n listType: [],\n label: [],\n fileType: [],\n channel: [],\n channelName: []\n }\n };\n },\n computed: {\n // 访问状态选项(综合判断 ListType 和 Label)\n // 正常: ListType !== 'Block' && Label !== 'adult'\n // 已屏蔽: ListType === 'Block' || Label === 'adult'\n accessStatusOptions() {\n return [{\n label: this.$t('filter.normal'),\n value: 'normal'\n }, {\n label: this.$t('filter.blocked'),\n value: 'blocked'\n }];\n },\n // 黑白名单选项(直接使用 ListType 字段值)\n listTypeOptions() {\n return [{\n label: this.$t('filter.whiteList'),\n value: 'White'\n }, {\n label: this.$t('filter.blackList'),\n value: 'Block'\n }, {\n label: this.$t('filter.notSet'),\n value: 'None'\n }];\n },\n // 审查结果选项\n labelOptions() {\n return [{\n label: this.$t('filter.normal'),\n value: 'normal'\n }, {\n label: this.$t('filter.teenContent'),\n value: 'teen'\n }, {\n label: this.$t('filter.adultContent'),\n value: 'adult'\n }];\n },\n fileTypeOptions() {\n return [{\n label: this.$t('filter.image'),\n value: 'image'\n }, {\n label: this.$t('filter.video'),\n value: 'video'\n }, {\n label: this.$t('filter.audio'),\n value: 'audio'\n }, {\n label: this.$t('filter.other'),\n value: 'other'\n }];\n },\n channelOptions() {\n return [{\n label: 'Telegram',\n value: 'TelegramNew'\n }, {\n label: 'Cloudflare R2',\n value: 'CloudflareR2'\n }, {\n label: 'S3',\n value: 'S3'\n }, {\n label: 'Discord',\n value: 'Discord'\n }, {\n label: 'HuggingFace',\n value: 'HuggingFace'\n }, {\n label: 'WebDAV',\n value: 'WebDAV'\n }, {\n label: this.$t('filter.externalLink'),\n value: 'External'\n }];\n },\n activeFilterCount() {\n return Object.values(this.localFilters).reduce((count, arr) => count + arr.length, 0);\n },\n // 按类型分组渠道名称\n groupedChannelNames() {\n const groups = {};\n this.channelNameOptions.forEach(option => {\n if (!groups[option.type]) {\n groups[option.type] = {\n type: option.type,\n typeLabel: option.typeLabel,\n channels: []\n };\n }\n groups[option.type].channels.push(option);\n });\n return Object.values(groups);\n }\n },\n watch: {\n filters: {\n handler(newFilters) {\n this.localFilters = {\n accessStatus: Array.isArray(newFilters.accessStatus) ? [...newFilters.accessStatus] : [],\n listType: Array.isArray(newFilters.listType) ? [...newFilters.listType] : [],\n label: Array.isArray(newFilters.label) ? [...newFilters.label] : [],\n fileType: Array.isArray(newFilters.fileType) ? [...newFilters.fileType] : [],\n channel: Array.isArray(newFilters.channel) ? [...newFilters.channel] : [],\n channelName: Array.isArray(newFilters.channelName) ? [...newFilters.channelName] : []\n };\n },\n immediate: true,\n deep: true\n }\n },\n methods: {\n handleFilterChange(type) {\n this.$emit('update:filters', {\n ...this.localFilters\n });\n this.$emit('change', {\n type,\n filters: {\n ...this.localFilters\n }\n });\n },\n clearFilters() {\n this.localFilters = {\n accessStatus: [],\n listType: [],\n label: [],\n fileType: [],\n channel: [],\n channelName: []\n };\n this.$emit('update:filters', {\n ...this.localFilters\n });\n this.$emit('change', {\n type: 'clear',\n filters: {\n ...this.localFilters\n }\n });\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FilterDropdown.vue?vue&type=template&id=42919522&scoped=true\"\nimport script from \"./FilterDropdown.vue?vue&type=script&lang=js\"\nexport * from \"./FilterDropdown.vue?vue&type=script&lang=js\"\n\nimport \"./FilterDropdown.vue?vue&type=style&index=0&id=42919522&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-42919522\"]])\n\nexport default __exports__","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport { resolveComponent as _resolveComponent, createVNode as _createVNode, withKeys as _withKeys, withCtx as _withCtx, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createBlock as _createBlock, renderList as _renderList, Fragment as _Fragment, withModifiers as _withModifiers, normalizeStyle as _normalizeStyle } from \"vue\";\nconst _hoisted_1 = {\n class: \"container\"\n};\nconst _hoisted_2 = {\n class: \"header-content admin-header-content\"\n};\nconst _hoisted_3 = {\n class: \"search-area\"\n};\nconst _hoisted_4 = {\n class: \"search-card\"\n};\nconst _hoisted_5 = {\n class: \"actions\"\n};\nconst _hoisted_6 = {\n class: \"el-dropdown-link\"\n};\nconst _hoisted_7 = {\n class: \"breadcrumb-container\"\n};\nconst _hoisted_8 = [\"title\", \"aria-pressed\"];\nconst _hoisted_9 = [\"title\", \"aria-pressed\"];\nconst _hoisted_10 = [\"title\"];\nconst _hoisted_11 = {\n class: \"breadcrumb-sort-icon\",\n viewBox: \"0 0 30 18\",\n \"aria-hidden\": \"true\"\n};\nconst _hoisted_12 = {\n key: 0,\n class: \"sort-field-glyph\"\n};\nconst _hoisted_13 = {\n key: 1,\n class: \"sort-field-glyph\"\n};\nconst _hoisted_14 = {\n key: 2,\n class: \"sort-field-glyph\"\n};\nconst _hoisted_15 = {\n key: 3,\n class: \"sort-field-glyph\"\n};\nconst _hoisted_16 = {\n key: 4,\n class: \"sort-order-glyph\",\n d: \"M23 13.5V4.5M19 8.5L23 4.5L27 8.5\"\n};\nconst _hoisted_17 = {\n key: 5,\n class: \"sort-order-glyph\",\n d: \"M23 4.5V13.5M19 9.5L23 13.5L27 9.5\"\n};\nconst _hoisted_18 = {\n class: \"sort-order-wrapper\"\n};\nconst _hoisted_19 = {\n class: \"mobile-directory-path\"\n};\nconst _hoisted_20 = {\n class: \"breadcrumb desktop-only\"\n};\nconst _hoisted_21 = [\"title\"];\nconst _hoisted_22 = {\n key: 1,\n class: \"empty-state\"\n};\nconst _hoisted_23 = {\n class: \"empty-text\"\n};\nconst _hoisted_24 = {\n class: \"empty-hint\"\n};\nconst _hoisted_25 = {\n class: \"list-header\"\n};\nconst _hoisted_26 = {\n class: \"list-col list-col-checkbox\"\n};\nconst _hoisted_27 = {\n class: \"list-col list-col-preview\"\n};\nconst _hoisted_28 = {\n class: \"list-col list-col-name\"\n};\nconst _hoisted_29 = {\n class: \"list-col list-col-tags\"\n};\nconst _hoisted_30 = {\n class: \"list-col list-col-channel\"\n};\nconst _hoisted_31 = {\n class: \"list-col list-col-channel-name\"\n};\nconst _hoisted_32 = {\n class: \"list-col list-col-address\"\n};\nconst _hoisted_33 = {\n class: \"list-col list-col-size\"\n};\nconst _hoisted_34 = {\n class: \"list-col list-col-date\"\n};\nconst _hoisted_35 = {\n class: \"list-col list-col-actions\"\n};\nconst _hoisted_36 = {\n key: 1,\n class: \"empty-state list-empty\"\n};\nconst _hoisted_37 = {\n class: \"empty-text\"\n};\nconst _hoisted_38 = {\n class: \"empty-hint\"\n};\nconst _hoisted_39 = {\n class: \"pagination-container\"\n};\nconst _hoisted_40 = {\n class: \"pagination-center\"\n};\nconst _hoisted_41 = {\n class: \"pagination-right\"\n};\nconst _hoisted_42 = {\n class: \"page-total\"\n};\nconst _hoisted_43 = {\n class: \"page-jump\"\n};\nconst _hoisted_44 = {\n class: \"dialog-section\"\n};\nconst _hoisted_45 = {\n class: \"section-header\"\n};\nconst _hoisted_46 = {\n class: \"section-title\"\n};\nconst _hoisted_47 = {\n class: \"section-content\"\n};\nconst _hoisted_48 = {\n class: \"dialog-section\"\n};\nconst _hoisted_49 = {\n class: \"section-header\"\n};\nconst _hoisted_50 = {\n class: \"section-title\"\n};\nconst _hoisted_51 = {\n class: \"section-content\"\n};\nconst _hoisted_52 = {\n class: \"setting-item\"\n};\nconst _hoisted_53 = {\n class: \"setting-label\"\n};\nconst _hoisted_54 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_55 = {\n class: \"setting-label\"\n};\nconst _hoisted_56 = {\n class: \"dialog-action\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_DashboardTabs = _resolveComponent(\"DashboardTabs\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_FilterDropdown = _resolveComponent(\"FilterDropdown\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_header = _resolveComponent(\"el-header\");\n const _component_DashboardCheckbox = _resolveComponent(\"DashboardCheckbox\");\n const _component_el_radio_button = _resolveComponent(\"el-radio-button\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_el_divider = _resolveComponent(\"el-divider\");\n const _component_el_dropdown_item = _resolveComponent(\"el-dropdown-item\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n const _component_el_breadcrumb_item = _resolveComponent(\"el-breadcrumb-item\");\n const _component_el_breadcrumb = _resolveComponent(\"el-breadcrumb\");\n const _component_SkeletonLoader = _resolveComponent(\"SkeletonLoader\");\n const _component_FolderCard = _resolveComponent(\"FolderCard\");\n const _component_FileCard = _resolveComponent(\"FileCard\");\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_FileListItem = _resolveComponent(\"FileListItem\");\n const _component_el_pagination = _resolveComponent(\"el-pagination\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_main = _resolveComponent(\"el-main\");\n const _component_el_container = _resolveComponent(\"el-container\");\n const _component_BatchActionBar = _resolveComponent(\"BatchActionBar\");\n const _component_FileDetailDialog = _resolveComponent(\"FileDetailDialog\");\n const _component_el_radio = _resolveComponent(\"el-radio\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _component_TagManagementDialog = _resolveComponent(\"TagManagementDialog\");\n const _component_BatchTagDialog = _resolveComponent(\"BatchTagDialog\");\n const _component_MobileActionSheet = _resolveComponent(\"MobileActionSheet\");\n const _component_MobileDirectoryDrawer = _resolveComponent(\"MobileDirectoryDrawer\");\n const _component_MoveFileDialog = _resolveComponent(\"MoveFileDialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_container, null, {\n default: _withCtx(() => [_createVNode(_component_el_header, null, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createVNode(_component_DashboardTabs, {\n activeTab: \"dashboard\"\n }), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_input, {\n modelValue: $data.tempSearch,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.tempSearch = $event),\n size: \"small\",\n placeholder: _ctx.$t('dashboard.searchPlaceholder'),\n onKeyup: _withKeys($options.handleSearch, [\"enter\"])\n }, {\n suffix: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"search\",\n class: \"search-icon\",\n onClick: $options.handleSearch\n }, null, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"modelValue\", \"placeholder\", \"onKeyup\"])]), _createVNode(_component_FilterDropdown, {\n filters: $data.filters,\n \"onUpdate:filters\": _cache[1] || (_cache[1] = $event => $data.filters = $event),\n channelNameOptions: $data.channelNameOptions,\n onChange: $options.handleFilterChange\n }, null, 8, [\"filters\", \"channelNameOptions\", \"onChange\"])]), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('dashboard.linkFormat'),\n placement: \"bottom\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_6, [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"header-icon\",\n onClick: _cache[2] || (_cache[2] = $event => $data.showUrlDialog = true)\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('dashboard.logout'),\n placement: \"bottom\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"sign-out-alt\",\n class: \"header-icon\",\n onClick: $options.handleLogout\n }, null, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])])]),\n _: 1\n }), _createVNode(_component_el_main, {\n class: _normalizeClass([\"main-container\", {\n 'has-batch-toolbar': $data.selectedFiles.length > 0\n }])\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_DashboardCheckbox, {\n checked: $options.selectPage,\n indeterminate: $options.selectedPageFiles && !$options.selectPage,\n variant: \"breadcrumb\",\n onClick: $options.handleSelectPage\n }, null, 8, [\"checked\", \"indeterminate\", \"onClick\"]), _createElementVNode(\"div\", {\n class: _normalizeClass([\"breadcrumb-view-toggle\", {\n 'is-list': $data.viewMode === 'list'\n }]),\n role: \"group\"\n }, [_createElementVNode(\"button\", {\n class: _normalizeClass([\"breadcrumb-view-button\", {\n 'is-active': $data.viewMode === 'card'\n }]),\n type: \"button\",\n title: _ctx.$t('dashboard.cardView'),\n \"aria-pressed\": $data.viewMode === 'card',\n onClick: _cache[3] || (_cache[3] = $event => $options.setViewMode('card'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"th-large\",\n class: \"breadcrumb-view-icon\"\n })], 10, _hoisted_8), _createElementVNode(\"button\", {\n class: _normalizeClass([\"breadcrumb-view-button\", {\n 'is-active': $data.viewMode === 'list'\n }]),\n type: \"button\",\n title: _ctx.$t('dashboard.listView'),\n \"aria-pressed\": $data.viewMode === 'list',\n onClick: _cache[4] || (_cache[4] = $event => $options.setViewMode('list'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"list\",\n class: \"breadcrumb-view-icon\"\n })], 10, _hoisted_9)], 2), _createVNode(_component_el_dropdown, {\n trigger: \"click\",\n class: \"breadcrumb-sort-dropdown\",\n onCommand: $options.setSortField\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, {\n class: \"sort-dropdown-menu\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_18, [_createVNode(_component_el_radio_group, {\n modelValue: $data.sortOrder,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $data.sortOrder = $event),\n size: \"small\",\n onChange: $options.setSortOrder\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio_button, {\n label: \"asc\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('dashboard.sortAsc')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio_button, {\n label: \"desc\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('dashboard.sortDesc')), 1)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\", \"onChange\"])]), _createVNode(_component_el_divider, {\n class: \"sort-divider\"\n }), _createVNode(_component_el_dropdown_item, {\n command: \"time\",\n class: _normalizeClass({\n 'is-selected': $data.sortField === 'time'\n })\n }, {\n default: _withCtx(() => [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('dashboard.sortByTime')), 1), $data.sortField === 'time' ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"check\",\n class: \"sort-field-check\"\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"class\"]), _createVNode(_component_el_dropdown_item, {\n command: \"size\",\n class: _normalizeClass({\n 'is-selected': $data.sortField === 'size'\n })\n }, {\n default: _withCtx(() => [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('dashboard.sortBySize')), 1), $data.sortField === 'size' ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"check\",\n class: \"sort-field-check\"\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"class\"]), _createVNode(_component_el_dropdown_item, {\n command: \"rawName\",\n class: _normalizeClass({\n 'is-selected': $data.sortField === 'rawName'\n })\n }, {\n default: _withCtx(() => [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('dashboard.sortByRawName')), 1), $data.sortField === 'rawName' ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"check\",\n class: \"sort-field-check\"\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"class\"]), _createVNode(_component_el_dropdown_item, {\n command: \"fileName\",\n class: _normalizeClass({\n 'is-selected': $data.sortField === 'fileName'\n })\n }, {\n default: _withCtx(() => [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('dashboard.sortByFileName')), 1), $data.sortField === 'fileName' ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"check\",\n class: \"sort-field-check\"\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"class\"])]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"breadcrumb-sort-button\",\n type: \"button\",\n title: $options.sortLabel\n }, [(_openBlock(), _createElementBlock(\"svg\", _hoisted_11, [$data.sortField === 'time' ? (_openBlock(), _createElementBlock(\"g\", _hoisted_12, [...(_cache[32] || (_cache[32] = [_createElementVNode(\"circle\", {\n cx: \"7.5\",\n cy: \"9\",\n r: \"5.5\"\n }, null, -1), _createElementVNode(\"path\", {\n d: \"M7.5 5.5V9L10 10.5\"\n }, null, -1)]))])) : $data.sortField === 'size' ? (_openBlock(), _createElementBlock(\"g\", _hoisted_13, [...(_cache[33] || (_cache[33] = [_createElementVNode(\"path\", {\n d: \"M2 4H13M2 9H10M2 14H7\"\n }, null, -1)]))])) : $data.sortField === 'rawName' ? (_openBlock(), _createElementBlock(\"g\", _hoisted_14, [...(_cache[34] || (_cache[34] = [_createElementVNode(\"path\", {\n d: \"M5.5 3L4 15M11 3L9.5 15M2.5 7H13M2 11H12.5\"\n }, null, -1)]))])) : (_openBlock(), _createElementBlock(\"g\", _hoisted_15, [...(_cache[35] || (_cache[35] = [_createElementVNode(\"path\", {\n d: \"M2.5 14L7.5 3L12.5 14M4.3 10H10.7\"\n }, null, -1)]))])), $data.sortOrder === 'asc' ? (_openBlock(), _createElementBlock(\"path\", _hoisted_16)) : (_openBlock(), _createElementBlock(\"path\", _hoisted_17))]))], 8, _hoisted_10)]),\n _: 1\n }, 8, [\"onCommand\"]), _createElementVNode(\"div\", {\n class: \"mobile-directory-trigger\",\n onClick: _cache[6] || (_cache[6] = $event => $data.showMobileDirectoryDrawer = true)\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"mobile-directory-icon\"\n }), _createElementVNode(\"span\", _hoisted_19, _toDisplayString($data.currentPath && $data.currentPath.split('/').filter(Boolean).length > 0 ? $data.currentPath.split('/').filter(Boolean).pop() : _ctx.$t('dashboard.rootDirectory')), 1), _createVNode(_component_font_awesome_icon, {\n icon: \"chevron-down\",\n class: \"mobile-directory-arrow\"\n })]), _createElementVNode(\"div\", _hoisted_20, [_createVNode(_component_el_breadcrumb, {\n separator: \"/\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_breadcrumb_item, {\n onClick: _cache[7] || (_cache[7] = $event => $options.navigateToFolder(''))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"breadcrumb-home-icon\"\n })]),\n _: 1\n }), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.currentPath.split('/').filter(Boolean), (folder, index) => {\n return _openBlock(), _createBlock(_component_el_breadcrumb_item, {\n key: index,\n onClick: $event => $options.navigateToFolder($data.currentPath.split('/').filter(Boolean).slice(0, index + 1).join('/'))\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(folder), 1)]),\n _: 2\n }, 1032, [\"onClick\"]);\n }), 128))]),\n _: 1\n })]), _createElementVNode(\"span\", {\n class: \"stats-badge\",\n title: _ctx.$t('dashboard.totalFiles', {\n count: _ctx.$data.Number\n })\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"database\",\n class: \"stats-badge-icon\"\n }), _createTextVNode(\" \" + _toDisplayString($data.Number), 1)], 8, _hoisted_21)]), $data.viewMode === 'card' ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([\"content\", {\n 'is-drag-selecting': $setup.isDragging\n }]),\n ref: \"cardContainerRef\",\n onTouchstartPassive: _cache[8] || (_cache[8] = (...args) => $options.handlePageSwipeStart && $options.handlePageSwipeStart(...args)),\n onTouchendPassive: _cache[9] || (_cache[9] = (...args) => $options.handlePageSwipeEnd && $options.handlePageSwipeEnd(...args)),\n onTouchcancelPassive: _cache[10] || (_cache[10] = (...args) => $options.resetPageSwipe && $options.resetPageSwipe(...args))\n }, [$data.loading ? (_openBlock(), _createBlock(_component_SkeletonLoader, {\n key: 0,\n type: \"card\",\n count: $data.pageSize\n }, null, 8, [\"count\"])) : $options.paginatedTableData.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_22, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"empty-icon\"\n }), _createElementVNode(\"p\", _hoisted_23, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.noMatchingFiles') : _ctx.$t('dashboard.currentDirEmpty')), 1), _createElementVNode(\"p\", _hoisted_24, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.adjustSearchHint') : _ctx.$t('dashboard.uploadHint')), 1)])) : (_openBlock(true), _createElementBlock(_Fragment, {\n key: 2\n }, _renderList($options.paginatedTableData, (item, index) => {\n return _openBlock(), _createElementBlock(_Fragment, {\n key: index\n }, [$options.isFolder(item) ? (_openBlock(), _createBlock(_component_FolderCard, {\n key: 0,\n name: item.name,\n selected: item.selected,\n \"onUpdate:selected\": $event => item.selected = $event,\n showActions: !$data.isSearchMode,\n disableTooltip: $options.disableTooltip,\n onEnter: $event => $options.enterFolder(item.name),\n onCopy: $event => $options.handleFolderCopy(item.name),\n onMove: $event => $options.handleMove(index, item.name),\n onDelete: $event => $options.handleDelete(index, item.name),\n onTouchstart: $event => $options.handleFolderTouchStart(item, index),\n onTouchend: $options.handleTouchEnd,\n onTouchmove: $options.handleTouchEnd\n }, null, 8, [\"name\", \"selected\", \"onUpdate:selected\", \"showActions\", \"disableTooltip\", \"onEnter\", \"onCopy\", \"onMove\", \"onDelete\", \"onTouchstart\", \"onTouchend\", \"onTouchmove\"])) : (_openBlock(), _createBlock(_component_FileCard, {\n key: 1,\n item: item,\n selected: item.selected,\n \"onUpdate:selected\": $event => item.selected = $event,\n fileLink: $options.getFileLink(item.name),\n previewSrcList: item.previewSrcList,\n disableTooltip: $options.disableTooltip,\n onDetail: $event => $options.openDetailDialog(index, item.name),\n onCopy: $event => $options.handleCopy(index, item.name),\n onMove: $event => $options.handleMove(index, item.name),\n onDelete: $event => $options.handleDelete(index, item.name),\n onDownload: $event => $options.handleDownload(item.name),\n onTouchstart: $event => $options.handleTouchStart(item, index),\n onTouchend: $options.handleTouchEnd,\n onTouchmove: $options.handleTouchEnd\n }, null, 8, [\"item\", \"selected\", \"onUpdate:selected\", \"fileLink\", \"previewSrcList\", \"disableTooltip\", \"onDetail\", \"onCopy\", \"onMove\", \"onDelete\", \"onDownload\", \"onTouchstart\", \"onTouchend\", \"onTouchmove\"]))], 64);\n }), 128))], 34)) : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: _normalizeClass([\"list-view\", {\n 'is-drag-selecting': $setup.isDragging\n }]),\n ref: \"listContainerRef\",\n onTouchstartPassive: _cache[12] || (_cache[12] = (...args) => $options.handlePageSwipeStart && $options.handlePageSwipeStart(...args)),\n onTouchendPassive: _cache[13] || (_cache[13] = (...args) => $options.handlePageSwipeEnd && $options.handlePageSwipeEnd(...args)),\n onTouchcancelPassive: _cache[14] || (_cache[14] = (...args) => $options.resetPageSwipe && $options.resetPageSwipe(...args))\n }, [_createElementVNode(\"div\", _hoisted_25, [_createElementVNode(\"div\", _hoisted_26, [_createVNode(_component_el_checkbox, {\n \"model-value\": $options.isSelectAll,\n indeterminate: $options.isIndeterminate,\n onClick: _cache[11] || (_cache[11] = _withModifiers(() => {}, [\"stop\"])),\n onChange: $options.handleSelectAllPage\n }, null, 8, [\"model-value\", \"indeterminate\", \"onChange\"])]), _createElementVNode(\"div\", _hoisted_27, _toDisplayString(_ctx.$t('dashboard.preview')), 1), _createElementVNode(\"div\", _hoisted_28, _toDisplayString(_ctx.$t('dashboard.fileName')), 1), _createElementVNode(\"div\", _hoisted_29, _toDisplayString(_ctx.$t('dashboard.tags')), 1), _createElementVNode(\"div\", _hoisted_30, _toDisplayString(_ctx.$t('dashboard.channelType')), 1), _createElementVNode(\"div\", _hoisted_31, _toDisplayString(_ctx.$t('dashboard.channelNameCol')), 1), _createElementVNode(\"div\", _hoisted_32, _toDisplayString(_ctx.$t('dashboard.uploadAddress')), 1), _createElementVNode(\"div\", _hoisted_33, _toDisplayString(_ctx.$t('dashboard.fileSize')), 1), _createElementVNode(\"div\", _hoisted_34, _toDisplayString(_ctx.$t('dashboard.uploadTime')), 1), _createElementVNode(\"div\", _hoisted_35, _toDisplayString(_ctx.$t('dashboard.actions')), 1)]), $data.loading ? (_openBlock(), _createBlock(_component_SkeletonLoader, {\n key: 0,\n type: \"list\",\n count: $data.pageSize\n }, null, 8, [\"count\"])) : $options.paginatedTableData.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_36, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"empty-icon\"\n }), _createElementVNode(\"p\", _hoisted_37, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.noMatchingFiles') : _ctx.$t('dashboard.currentDirEmpty')), 1), _createElementVNode(\"p\", _hoisted_38, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.adjustSearchHint') : _ctx.$t('dashboard.uploadHint')), 1)])) : (_openBlock(true), _createElementBlock(_Fragment, {\n key: 2\n }, _renderList($options.paginatedTableData, (item, index) => {\n return _openBlock(), _createBlock(_component_FileListItem, {\n key: index,\n item: item,\n selected: item.selected,\n \"onUpdate:selected\": $event => item.selected = $event,\n fileLink: $options.getFileLink(item.name),\n onEnter: $event => $options.enterFolder(item.name),\n onDetail: $event => $options.openDetailDialog(index, item.name),\n onCopy: $event => $options.handleCopy(index, item.name),\n onFolderCopy: $event => $options.handleFolderCopy(item.name),\n onMove: $event => $options.handleMove(index, item.name),\n onDelete: $event => $options.handleDelete(index, item.name),\n onDownload: $event => $options.handleDownload(item.name),\n onTouchstart: $event => $options.isFolder(item) ? $options.handleFolderTouchStart(item, index) : $options.handleTouchStart(item, index),\n onTouchend: $options.handleTouchEnd,\n onTouchmove: $options.handleTouchEnd\n }, null, 8, [\"item\", \"selected\", \"onUpdate:selected\", \"fileLink\", \"onEnter\", \"onDetail\", \"onCopy\", \"onFolderCopy\", \"onMove\", \"onDelete\", \"onDownload\", \"onTouchstart\", \"onTouchend\", \"onTouchmove\"]);\n }), 128))], 34)), $setup.isDragging ? (_openBlock(), _createElementBlock(\"div\", {\n key: 2,\n class: \"drag-select-overlay\",\n style: _normalizeStyle({\n position: 'fixed',\n left: $setup.selectionRect.left + 'px',\n top: $setup.selectionRect.top + 'px',\n width: $setup.selectionRect.width + 'px',\n height: $setup.selectionRect.height + 'px'\n })\n }, null, 4)) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_39, [_createElementVNode(\"div\", _hoisted_40, [_createVNode(_component_el_pagination, {\n background: \"\",\n layout: \"prev, pager, next\",\n total: $options.filteredTableData.length,\n \"page-size\": $data.pageSize,\n \"current-page\": $data.currentPage,\n \"pager-count\": $options.pagerCount,\n onCurrentChange: $options.handlePageChange\n }, null, 8, [\"total\", \"page-size\", \"current-page\", \"pager-count\", \"onCurrentChange\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $options.refreshFileList,\n class: \"refresh-btn\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"sync\",\n class: _normalizeClass({\n 'fa-spin': $data.refreshLoading\n })\n }, null, 8, [\"class\"])]),\n _: 1\n }, 8, [\"onClick\"]), $data.currentPage === Math.ceil($options.filteredTableData.length / $data.pageSize) ? (_openBlock(), _createBlock(_component_el_button, {\n key: 0,\n type: \"primary\",\n onClick: $options.loadMoreData,\n loading: $data.loading,\n class: \"load-more\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('dashboard.loadMore')), 1)]),\n _: 1\n }, 8, [\"onClick\", \"loading\"])) : _createCommentVNode(\"\", true)]), _createElementVNode(\"div\", _hoisted_41, [_createElementVNode(\"span\", _hoisted_42, _toDisplayString(_ctx.$t('dashboard.totalPages', {\n count: $options.realTotalPages\n })), 1), _createElementVNode(\"div\", _hoisted_43, [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('dashboard.jumpTo')), 1), _createVNode(_component_el_input, {\n modelValue: $data.jumpPage,\n \"onUpdate:modelValue\": _cache[15] || (_cache[15] = $event => $data.jumpPage = $event),\n size: \"small\",\n class: \"jump-input\",\n onKeyup: _withKeys($options.handleJumpPage, [\"enter\"])\n }, null, 8, [\"modelValue\", \"onKeyup\"]), _createVNode(_component_el_button, {\n size: \"small\",\n type: \"primary\",\n onClick: $options.handleJumpPage,\n class: \"jump-btn\"\n }, {\n default: _withCtx(() => [...(_cache[36] || (_cache[36] = [_createTextVNode(\"GO\", -1)]))]),\n _: 1\n }, 8, [\"onClick\"])])])])]),\n _: 1\n }, 8, [\"class\"])]),\n _: 1\n }), _createVNode(_component_BatchActionBar, {\n \"selected-count\": $data.selectedFiles.length,\n onAction: $options.handleBatchAction,\n onClear: $options.clearSelection\n }, null, 8, [\"selected-count\", \"onAction\", \"onClear\"]), _createVNode(_component_FileDetailDialog, {\n modelValue: $data.showdetailDialog,\n \"onUpdate:modelValue\": _cache[16] || (_cache[16] = $event => $data.showdetailDialog = $event),\n file: $data.detailFile,\n fileLink: $options.getFileLink($data.detailFile?.name),\n urls: $options.allUrl,\n onDownload: _cache[17] || (_cache[17] = $event => $options.handleDownload($data.detailFile?.name)),\n onTagManagement: _cache[18] || (_cache[18] = $event => $options.handleTagManagement($data.detailFile?.name)),\n onBlock: _cache[19] || (_cache[19] = $event => $options.handleBlock($data.detailFile?.name)),\n onWhite: _cache[20] || (_cache[20] = $event => $options.handleWhite($data.detailFile?.name)),\n onDelete: _cache[21] || (_cache[21] = $event => $options.handleDetailDelete($data.detailFile?.name)),\n onMetadataUpdated: $options.handleMetadataUpdated,\n onFileRenamed: $options.handleFileRenamed\n }, null, 8, [\"modelValue\", \"file\", \"fileLink\", \"urls\", \"onMetadataUpdated\", \"onFileRenamed\"]), _createVNode(_component_el_dialog, {\n title: _ctx.$t('dashboard.linkFormat'),\n modelValue: $data.showUrlDialog,\n \"onUpdate:modelValue\": _cache[26] || (_cache[26] = $event => $data.showUrlDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog settings-dialog-scope\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_44, [_createElementVNode(\"div\", _hoisted_45, [_createElementVNode(\"span\", _hoisted_46, _toDisplayString(_ctx.$t('settings.defaultCopyLink')), 1)]), _createElementVNode(\"div\", _hoisted_47, [_createVNode(_component_el_radio_group, {\n modelValue: $data.defaultUrlFormat,\n \"onUpdate:modelValue\": _cache[22] || (_cache[22] = $event => $data.defaultUrlFormat = $event),\n class: \"radio-card-group grid-2x2\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio, {\n label: \"originUrl\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('settings.rawLink')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"mdUrl\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"code\",\n class: \"radio-icon\"\n }), _cache[37] || (_cache[37] = _createElementVNode(\"span\", null, \"Markdown\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"htmlUrl\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"code-branch\",\n class: \"radio-icon\"\n }), _cache[38] || (_cache[38] = _createElementVNode(\"span\", null, \"HTML\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"bbUrl\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"quote-right\",\n class: \"radio-icon\"\n }), _cache[39] || (_cache[39] = _createElementVNode(\"span\", null, \"BBCode\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"tgId\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"paper-plane\",\n class: \"radio-icon\"\n }), _cache[40] || (_cache[40] = _createElementVNode(\"span\", null, \"TG File ID\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"s3Location\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('settings.s3Link')), 1)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_48, [_createElementVNode(\"div\", _hoisted_49, [_createElementVNode(\"span\", _hoisted_50, _toDisplayString(_ctx.$t('settings.customLink')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('settings.customLinkTooltip'),\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_51, [_createElementVNode(\"div\", _hoisted_52, [_createElementVNode(\"span\", _hoisted_53, _toDisplayString(_ctx.$t('settings.enableCustom')), 1), _createVNode(_component_el_switch, {\n modelValue: $data.useCustomUrl,\n \"onUpdate:modelValue\": _cache[23] || (_cache[23] = $event => $data.useCustomUrl = $event),\n \"active-value\": \"true\",\n \"inactive-value\": \"false\"\n }, null, 8, [\"modelValue\"])]), $data.useCustomUrl === 'true' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_54, [_createElementVNode(\"span\", _hoisted_55, _toDisplayString(_ctx.$t('settings.customPrefix')), 1), _createVNode(_component_el_input, {\n modelValue: $data.customUrlPrefix,\n \"onUpdate:modelValue\": _cache[24] || (_cache[24] = $event => $data.customUrlPrefix = $event),\n placeholder: _ctx.$t('settings.customPrefixPlaceholder'),\n class: \"setting-input\"\n }, null, 8, [\"modelValue\", \"placeholder\"])])) : _createCommentVNode(\"\", true)])]), _createElementVNode(\"div\", _hoisted_56, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[25] || (_cache[25] = $event => $data.showUrlDialog = false),\n class: \"confirm-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('settings.confirm')), 1)]),\n _: 1\n })])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]), _createVNode(_component_TagManagementDialog, {\n modelValue: $data.showTagDialog,\n \"onUpdate:modelValue\": _cache[27] || (_cache[27] = $event => $data.showTagDialog = $event),\n fileId: $data.currentTagFile,\n onTagsUpdated: $options.handleTagsUpdated\n }, null, 8, [\"modelValue\", \"fileId\", \"onTagsUpdated\"]), _createVNode(_component_BatchTagDialog, {\n modelValue: $data.showBatchTagDialog,\n \"onUpdate:modelValue\": _cache[28] || (_cache[28] = $event => $data.showBatchTagDialog = $event),\n selectedFiles: $data.selectedFiles,\n onTagsUpdated: $options.handleBatchTagsUpdated\n }, null, 8, [\"modelValue\", \"selectedFiles\", \"onTagsUpdated\"]), _createVNode(_component_MobileActionSheet, {\n modelValue: $data.showMobileActionModal,\n \"onUpdate:modelValue\": _cache[29] || (_cache[29] = $event => $data.showMobileActionModal = $event),\n title: $data.mobileActionIsFolder ? $options.getFolderName($data.mobileActionFile?.name || '') : $data.mobileActionFile?.metadata?.FileName || $options.getFileName($data.mobileActionFile?.name || ''),\n isFolder: $data.mobileActionIsFolder,\n onAction: $options.handleMobileAction\n }, null, 8, [\"modelValue\", \"title\", \"isFolder\", \"onAction\"]), _createVNode(_component_MobileDirectoryDrawer, {\n modelValue: $data.showMobileDirectoryDrawer,\n \"onUpdate:modelValue\": _cache[30] || (_cache[30] = $event => $data.showMobileDirectoryDrawer = $event),\n currentPath: $data.currentPath,\n onNavigate: $options.navigateToFolder,\n onGoBack: $options.handleGoBack\n }, null, 8, [\"modelValue\", \"currentPath\", \"onNavigate\", \"onGoBack\"]), _createVNode(_component_MoveFileDialog, {\n modelValue: $data.showMoveDialog,\n \"onUpdate:modelValue\": _cache[31] || (_cache[31] = $event => $data.showMoveDialog = $event),\n \"current-directory\": $data.currentPath,\n \"is-batch-move\": $data.isBatchMove,\n \"initial-path\": $data.moveTargetPath,\n onConfirm: $options.confirmMove\n }, null, 8, [\"modelValue\", \"current-directory\", \"is-batch-move\", \"initial-path\", \"onConfirm\"])]);\n}","// 文件管理器工具类\r\nimport fetchWithAuth from '@/utils/fetchWithAuth';\r\nimport { ElMessage } from 'element-plus';\r\nimport i18n from '@/locales';\r\n\r\nclass FileManager {\r\n constructor() {\r\n this.FILE_LIST_PATH = 'data/fileList.json';\r\n this.fileListCache = null;\r\n this.storageWarningShown = false;\r\n }\r\n\r\n // 从本地存储读取文件列表\r\n getLocalFileList() {\r\n const fileList = this.getMutableFileList();\r\n return {\r\n ...fileList,\r\n files: [...(fileList.files || [])],\r\n directories: [...(fileList.directories || [])],\r\n };\r\n }\r\n\r\n getMutableFileList() {\r\n if (this.fileListCache) {\r\n return this.fileListCache;\r\n }\r\n\r\n try {\r\n const fileList = localStorage.getItem(this.FILE_LIST_PATH);\r\n this.fileListCache = fileList ? JSON.parse(fileList) : this.createEmptyFileList();\r\n return this.fileListCache;\r\n } catch (error) {\r\n console.error('Error reading local file list:', error);\r\n this.fileListCache = this.createEmptyFileList();\r\n return this.fileListCache;\r\n }\r\n }\r\n\r\n // 更新内存缓存,并尽量持久化到 localStorage\r\n updateFileListCache(fileList) {\r\n this.fileListCache = fileList || this.createEmptyFileList();\r\n const persisted = this.persistFileListCache();\r\n\r\n return {\r\n cacheUpdated: true,\r\n persisted,\r\n };\r\n }\r\n\r\n persistFileListCache() {\r\n try {\r\n localStorage.setItem(this.FILE_LIST_PATH, JSON.stringify(this.fileListCache));\r\n return true;\r\n } catch (error) {\r\n this.handleStoragePersistError(error);\r\n return false;\r\n }\r\n }\r\n\r\n createEmptyFileList() {\r\n return { files: [], directories: [] };\r\n }\r\n\r\n handleStoragePersistError(error) {\r\n console.warn('File list is kept in memory because localStorage persistence failed:', error);\r\n\r\n try {\r\n localStorage.removeItem(this.FILE_LIST_PATH);\r\n } catch (removeError) {\r\n console.warn('Failed to remove stale file list cache:', removeError);\r\n }\r\n\r\n if (!this.storageWarningShown) {\r\n this.storageWarningShown = true;\r\n ElMessage.warning(i18n.global.t('dashboard.fileListMemoryCacheWarning'));\r\n }\r\n }\r\n\r\n // 添加新文件到列表\r\n addFile(newFile) {\r\n try {\r\n const fileList = this.getMutableFileList();\r\n fileList.files.push(newFile);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error adding file:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 添加新文件夹\r\n addFolder(folderName) {\r\n try {\r\n const fileList = this.getMutableFileList();\r\n if (!fileList.directories.includes(folderName)) {\r\n fileList.directories.push(folderName);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n }\r\n return false; // 文件夹已存在\r\n } catch (error) {\r\n console.error('Error adding folder:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 移动文件或文件夹\r\n moveFile(oldPath, newPath, isFolder = false, currentPath = '') {\r\n try {\r\n let fileList = this.getMutableFileList();\r\n \r\n if (isFolder) {\r\n // 更新目录列表\r\n const oldFolderIndex = fileList.directories.indexOf(oldPath);\r\n if (oldFolderIndex !== -1) {\r\n fileList.directories.splice(oldFolderIndex, 1);\r\n }\r\n\r\n } else {\r\n // 移动单个文件\r\n const fileIndex = fileList.files.findIndex(file => file.name === oldPath);\r\n if (fileIndex !== -1) {\r\n // 从旧位置移除\r\n fileList.files.splice(fileIndex, 1);\r\n }\r\n\r\n }\r\n\r\n // 如果新路径包含当前目录的直接子目录,则添加直接子目录\r\n if (newPath.startsWith(currentPath)) {\r\n const pathArray = newPath.substring(currentPath.length).split('/');\r\n if (pathArray.length > 1) {\r\n const newFolder = currentPath + pathArray[0];\r\n if (!fileList.directories.includes(newFolder)) {\r\n fileList.directories.push(newFolder);\r\n }\r\n }\r\n }\r\n\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error moving file:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 从列表中删除文件\r\n removeFile(fileName) {\r\n try {\r\n let fileList = this.getMutableFileList();\r\n fileList.files = fileList.files.filter(file => file.name !== fileName);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error removing file:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 从列表中删除文件夹(同时删除该文件夹下的所有文件)\r\n removeFolder(folderName) {\r\n try {\r\n let fileList = this.getMutableFileList();\r\n fileList.files = fileList.files.filter(file => !file.name.startsWith(folderName + '/'));\r\n fileList.directories = fileList.directories.filter(dir => dir !== folderName);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error removing folder:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 获取指定目录下的文件和子目录\r\n getFilesInFolder(folderName) {\r\n try {\r\n const fileList = this.getMutableFileList();\r\n const files = fileList.files.filter(file => file.name.startsWith(folderName + '/'));\r\n const subdirectories = fileList.directories.filter(dir => dir.startsWith(folderName + '/'));\r\n return { files, directories: subdirectories };\r\n } catch (error) {\r\n console.error('Error getting files in folder:', error);\r\n return { files: [], directories: [] };\r\n }\r\n }\r\n\r\n // 构建筛选参数URL\r\n buildFilterParams(filters) {\r\n let params = '';\r\n // 访问状态筛选(综合判断)\r\n if (filters.accessStatus && filters.accessStatus.length > 0) {\r\n params += `&accessStatus=${encodeURIComponent(filters.accessStatus.join(','))}`;\r\n }\r\n // 黑白名单筛选(直接使用 ListType 字段)\r\n if (filters.listType && filters.listType.length > 0) {\r\n params += `&listType=${encodeURIComponent(filters.listType.join(','))}`;\r\n }\r\n if (filters.label && filters.label.length > 0) {\r\n params += `&label=${encodeURIComponent(filters.label.join(','))}`;\r\n }\r\n if (filters.fileType && filters.fileType.length > 0) {\r\n params += `&fileType=${encodeURIComponent(filters.fileType.join(','))}`;\r\n }\r\n if (filters.channel && filters.channel.length > 0) {\r\n params += `&channel=${encodeURIComponent(filters.channel.join(','))}`;\r\n }\r\n if (filters.channelName && filters.channelName.length > 0) {\r\n params += `&channelName=${encodeURIComponent(filters.channelName.join(','))}`;\r\n }\r\n return params;\r\n }\r\n\r\n // 更新文件列表\r\n async refreshFileList(dir, search = '', includeTags = '', excludeTags = '', filters = {}) {\r\n search = search.trim();\r\n try {\r\n let url = `/api/manage/list?count=60&dir=${dir}&search=${encodeURIComponent(search)}`;\r\n if (includeTags) {\r\n url += `&includeTags=${encodeURIComponent(includeTags)}`;\r\n }\r\n if (excludeTags) {\r\n url += `&excludeTags=${encodeURIComponent(excludeTags)}`;\r\n }\r\n // 添加筛选参数(支持多选)\r\n url += this.buildFilterParams(filters);\r\n \r\n const response = await fetchWithAuth(url, {\r\n method: 'GET',\r\n });\r\n const newFileList = await response.json();\r\n if (!newFileList.isIndexedResponse) {\r\n ElMessage.warning(i18n.global.t('dashboard.indexingWarning'));\r\n }\r\n // 保存包含新字段的完整数据\r\n return this.updateFileListCache(newFileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error refreshing file list:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 读取更多数据\r\n async loadMoreFiles(dir, search = '', includeTags = '', excludeTags = '', count = 60, filters = {}) {\r\n search = search.trim();\r\n try {\r\n const fileList = this.getMutableFileList();\r\n const start = fileList.files.length;\r\n\r\n let url = `/api/manage/list?dir=${dir}&start=${start}&count=${count}&search=${encodeURIComponent(search)}`;\r\n if (includeTags) {\r\n url += `&includeTags=${encodeURIComponent(includeTags)}`;\r\n }\r\n if (excludeTags) {\r\n url += `&excludeTags=${encodeURIComponent(excludeTags)}`;\r\n }\r\n // 添加筛选参数(支持多选)\r\n url += this.buildFilterParams(filters);\r\n\r\n const response = await fetchWithAuth(url, {\r\n method: 'GET',\r\n });\r\n \r\n const moreFiles = await response.json();\r\n fileList.files.push(...moreFiles.files);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error loading more files:', error);\r\n return { files: [], directories: [] };\r\n }\r\n }\r\n}\r\n\r\nexport const fileManager = new FileManager();\r\n","/**\r\n * 矩形工具函数\r\n * 用于框选(rubber-band selection)功能中的矩形计算和相交检测\r\n */\r\n\r\n/**\r\n * 判断两个矩形是否相交\r\n * @param {Object} rectA - { left, top, right, bottom }\r\n * @param {Object} rectB - { left, top, right, bottom }\r\n * @returns {boolean} 是否存在重叠区域\r\n */\r\nexport function rectIntersects(rectA, rectB) {\r\n return !(\r\n rectA.right <= rectB.left ||\r\n rectA.left >= rectB.right ||\r\n rectA.bottom <= rectB.top ||\r\n rectA.top >= rectB.bottom\r\n );\r\n}\r\n\r\n/**\r\n * 根据起始点和当前点计算选区矩形\r\n * @param {Object} start - { x, y } 起始鼠标坐标\r\n * @param {Object} current - { x, y } 当前鼠标坐标\r\n * @returns {Object} { left, top, width, height, right, bottom }\r\n */\r\nexport function calcSelectionRect(start, current) {\r\n const left = Math.min(start.x, current.x);\r\n const top = Math.min(start.y, current.y);\r\n const width = Math.abs(current.x - start.x);\r\n const height = Math.abs(current.y - start.y);\r\n return { left, top, width, height, right: left + width, bottom: top + height };\r\n}\r\n","import { ref, watch, onMounted, onBeforeUnmount, toValue } from 'vue';\r\nimport { rectIntersects, calcSelectionRect } from './rectIntersects.js';\r\n\r\n/**\r\n * Vue 3 Composable:框选(rubber-band selection)核心逻辑,支持多视图模式\r\n *\r\n * @param {Object} options\r\n * @param {Object} options.modes - Per-view-mode configuration\r\n * @param {Object} options.modes.card - Card view config\r\n * @param {import('vue').Ref} options.modes.card.containerRef\r\n * @param {string} options.modes.card.itemSelector - e.g. '.img-card'\r\n * @param {Object} options.modes.list - List view config\r\n * @param {import('vue').Ref} options.modes.list.containerRef\r\n * @param {string} options.modes.list.itemSelector - e.g. '.list-item'\r\n * @param {string} [options.mainSelector='.main-container'] - 主内容区域的 CSS 选择器,框选只能从该区域内开始\r\n * @param {import('vue').Ref} options.viewMode - 当前视图模式\r\n * @param {import('vue').Ref} options.items - 当前页的数据项(paginatedTableData)\r\n * @returns {{ isDragging: import('vue').Ref, selectionRect: import('vue').Ref }}\r\n */\r\nexport function useDragSelect(options) {\r\n const {\r\n modes,\r\n mainSelector = '.main-container',\r\n viewMode,\r\n items,\r\n } = options;\r\n\r\n // --- Reactive state ---\r\n const isDragging = ref(false);\r\n const selectionRect = ref({ left: 0, top: 0, width: 0, height: 0, right: 0, bottom: 0 });\r\n\r\n // --- Internal (non-reactive) state ---\r\n let startPoint = null; // { x, y } viewport coordinates at mousedown\r\n let preSelectSnapshot = []; // boolean[] snapshot of items[i].selected before drag\r\n let isAppendMode = false; // whether Shift/Ctrl/Cmd was held at mousedown\r\n\r\n // --- Enable/disable state ---\r\n const MOBILE_BREAKPOINT = 768; // px – at or below this width, drag-select is disabled\r\n let listenerAttached = false; // tracks whether the container mousedown listener is active\r\n\r\n // --- Auto-scroll state ---\r\n const EDGE_THRESHOLD = 50; // px from viewport edge to trigger auto-scroll\r\n const SCROLL_SPEED = 10; // px per frame to scroll\r\n let autoScrollTimer = null; // requestAnimationFrame ID for auto-scroll\r\n\r\n // --- Text selection prevention state ---\r\n let savedUserSelect = ''; // saved document.body.style.userSelect before drag\r\n\r\n // ------------------------------------------------------------------\r\n // Mode resolution helper\r\n // ------------------------------------------------------------------\r\n\r\n /**\r\n * Returns the configuration for the current viewMode.\r\n * @returns {{ containerRef: import('vue').Ref, itemSelector: string } | undefined}\r\n */\r\n function getActiveConfig() {\r\n const mode = toValue(viewMode);\r\n return modes[mode] || undefined;\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Enable / disable helpers\r\n // ------------------------------------------------------------------\r\n\r\n /**\r\n * Determine whether drag-select should be enabled.\r\n * Returns true when viewMode is 'card' or 'list' AND window width > 768px.\r\n */\r\n function shouldEnable() {\r\n const mode = toValue(viewMode);\r\n return (mode === 'card' || mode === 'list') && window.innerWidth > MOBILE_BREAKPOINT;\r\n }\r\n\r\n /**\r\n * Conditionally attach or detach the container listener based on shouldEnable().\r\n * Also cancels any active drag when detaching.\r\n */\r\n function syncListenerState() {\r\n if (shouldEnable()) {\r\n if (!listenerAttached) {\r\n attachContainerListener();\r\n }\r\n } else {\r\n if (listenerAttached) {\r\n cancelDrag();\r\n detachContainerListener();\r\n }\r\n }\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Helpers\r\n // ------------------------------------------------------------------\r\n\r\n /**\r\n * 判断 mousedown 目标是否为可启动框选的空白区域。\r\n * 必须在主内容区域内,且不在卡片、交互元素上。\r\n */\r\n function isBlankArea(event) {\r\n const target = event.target;\r\n // 必须在主内容区域(el-main)内\r\n const mainArea = target.closest(mainSelector);\r\n if (!mainArea) return false;\r\n // 排除当前模式的可选元素\r\n const config = getActiveConfig();\r\n if (config) {\r\n const itemEl = target.closest(config.itemSelector);\r\n if (itemEl) {\r\n const container = toValue(config.containerRef);\r\n if (container && container.contains(itemEl)) {\r\n return false;\r\n }\r\n }\r\n }\r\n // 排除交互元素(按钮、输入框、链接、下拉菜单、分页等)\r\n const interactive = target.closest('button, a, input, .el-input, .el-dropdown, .el-checkbox, .el-breadcrumb, .el-pagination, .el-pager, .header-content, .breadcrumb-container');\r\n if (interactive) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Determine whether a modifier key for append-select is pressed.\r\n */\r\n function hasAppendModifier(event) {\r\n return event.shiftKey || event.ctrlKey || event.metaKey;\r\n }\r\n\r\n /**\r\n * Save a snapshot of the current selected state for all items.\r\n */\r\n function saveSnapshot() {\r\n const currentItems = toValue(items);\r\n preSelectSnapshot = currentItems.map((item) => !!item.selected);\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Auto-scroll helpers\r\n // ------------------------------------------------------------------\r\n\r\n /** The last known clientY during a drag – updated by onMouseMove. */\r\n let lastClientY = 0;\r\n\r\n /**\r\n * Start the auto-scroll loop. On each animation frame we check whether the\r\n * mouse is within EDGE_THRESHOLD of the top or bottom of the viewport and\r\n * scroll accordingly. The selection rectangle and card hit-testing are also\r\n * updated after each scroll step so the visual feedback stays in sync.\r\n */\r\n function startAutoScroll() {\r\n if (autoScrollTimer !== null) return; // already running\r\n\r\n function scrollStep() {\r\n const viewportHeight = window.innerHeight;\r\n let scrollDelta = 0;\r\n\r\n if (lastClientY >= viewportHeight - EDGE_THRESHOLD) {\r\n // Near bottom edge → scroll down\r\n scrollDelta = SCROLL_SPEED;\r\n } else if (lastClientY <= EDGE_THRESHOLD) {\r\n // Near top edge → scroll up\r\n scrollDelta = -SCROLL_SPEED;\r\n }\r\n\r\n if (scrollDelta !== 0) {\r\n window.scrollBy(0, scrollDelta);\r\n\r\n // After scrolling, the viewport-relative positions of cards change,\r\n // but the mouse hasn't moved. We need to adjust the start point so\r\n // the selection rectangle accounts for the scroll offset, then\r\n // re-run hit-testing.\r\n if (startPoint) {\r\n startPoint.y -= scrollDelta;\r\n selectionRect.value = calcSelectionRect(startPoint, { x: selectionRect.value.right >= startPoint.x ? selectionRect.value.right : selectionRect.value.left, y: lastClientY });\r\n updateSelection();\r\n }\r\n }\r\n\r\n // Continue the loop\r\n autoScrollTimer = requestAnimationFrame(scrollStep);\r\n }\r\n\r\n autoScrollTimer = requestAnimationFrame(scrollStep);\r\n }\r\n\r\n /**\r\n * Stop the auto-scroll loop and clean up the timer.\r\n */\r\n function stopAutoScroll() {\r\n if (autoScrollTimer !== null) {\r\n cancelAnimationFrame(autoScrollTimer);\r\n autoScrollTimer = null;\r\n }\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Text selection prevention helpers\r\n // ------------------------------------------------------------------\r\n\r\n /**\r\n * Disable text selection on the document body during drag.\r\n */\r\n function disableTextSelection() {\r\n savedUserSelect = document.body.style.userSelect;\r\n document.body.style.userSelect = 'none';\r\n }\r\n\r\n /**\r\n * Restore the original text selection behavior on the document body.\r\n */\r\n function restoreTextSelection() {\r\n document.body.style.userSelect = savedUserSelect;\r\n }\r\n\r\n /**\r\n * Update the selected state of every item based on the current selection rectangle.\r\n */\r\n function updateSelection() {\r\n const config = getActiveConfig();\r\n if (!config) return;\r\n\r\n const container = toValue(config.containerRef);\r\n if (!container) return;\r\n\r\n const currentItems = toValue(items);\r\n const rect = selectionRect.value;\r\n\r\n // Build the selection rect in {left, top, right, bottom} format for intersection test\r\n const selRect = {\r\n left: rect.left,\r\n top: rect.top,\r\n right: rect.right,\r\n bottom: rect.bottom,\r\n };\r\n\r\n // Query all item DOM elements inside the container using the active mode's selector\r\n const itemElements = container.querySelectorAll(config.itemSelector);\r\n\r\n // Iterate over items and corresponding DOM elements\r\n currentItems.forEach((item, index) => {\r\n const itemEl = itemElements[index];\r\n if (!itemEl) return;\r\n\r\n const itemRect = itemEl.getBoundingClientRect();\r\n const itemBounds = {\r\n left: itemRect.left,\r\n top: itemRect.top,\r\n right: itemRect.right,\r\n bottom: itemRect.bottom,\r\n };\r\n\r\n const intersects = rectIntersects(selRect, itemBounds);\r\n\r\n if (isAppendMode) {\r\n // Append mode: keep original state, toggle on if intersects\r\n // If originally selected, stay selected regardless\r\n // If not originally selected, select if intersects\r\n if (preSelectSnapshot[index]) {\r\n item.selected = true;\r\n } else {\r\n item.selected = intersects;\r\n }\r\n } else {\r\n // Non-append mode: selected = intersects only\r\n item.selected = intersects;\r\n }\r\n });\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Mouse event handlers\r\n // ------------------------------------------------------------------\r\n\r\n function onMouseDown(event) {\r\n // 仅响应鼠标左键\r\n if (event.button !== 0) return;\r\n\r\n // 点击在卡片上时不启动框选\r\n if (!isBlankArea(event)) return;\r\n\r\n // Record start point (viewport coordinates)\r\n startPoint = { x: event.clientX, y: event.clientY };\r\n\r\n // Determine append mode from modifier keys at the moment of mousedown\r\n isAppendMode = hasAppendModifier(event);\r\n\r\n // 保存选中状态快照\r\n saveSnapshot();\r\n\r\n // 非追加模式下先清除所有选中\r\n if (!isAppendMode) {\r\n const currentItems = toValue(items);\r\n currentItems.forEach((item) => {\r\n item.selected = false;\r\n });\r\n }\r\n\r\n // Start dragging\r\n isDragging.value = true;\r\n selectionRect.value = calcSelectionRect(startPoint, startPoint);\r\n\r\n // 防止文本选中\r\n disableTextSelection();\r\n\r\n // Attach document-level listeners for move and up\r\n document.addEventListener('mousemove', onMouseMove);\r\n document.addEventListener('mouseup', onMouseUp);\r\n }\r\n\r\n function onMouseMove(event) {\r\n if (!isDragging.value || !startPoint) return;\r\n\r\n const currentPoint = { x: event.clientX, y: event.clientY };\r\n\r\n // Track last clientY for auto-scroll\r\n lastClientY = event.clientY;\r\n\r\n // Update selection rectangle\r\n selectionRect.value = calcSelectionRect(startPoint, currentPoint);\r\n\r\n // Update card selection based on intersection\r\n updateSelection();\r\n\r\n // Start or continue auto-scroll if near viewport edges\r\n const viewportHeight = window.innerHeight;\r\n if (lastClientY <= EDGE_THRESHOLD || lastClientY >= viewportHeight - EDGE_THRESHOLD) {\r\n startAutoScroll();\r\n } else {\r\n stopAutoScroll();\r\n }\r\n }\r\n\r\n function onMouseUp(_event) {\r\n if (!isDragging.value) return;\r\n\r\n // 停止自动滚动\r\n stopAutoScroll();\r\n\r\n // 恢复文本选中\r\n restoreTextSelection();\r\n\r\n // End dragging\r\n isDragging.value = false;\r\n selectionRect.value = { left: 0, top: 0, width: 0, height: 0, right: 0, bottom: 0 };\r\n startPoint = null;\r\n\r\n // Clean up document-level listeners\r\n document.removeEventListener('mousemove', onMouseMove);\r\n document.removeEventListener('mouseup', onMouseUp);\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Lifecycle: attach / detach container listener\r\n // ------------------------------------------------------------------\r\n\r\n function attachContainerListener() {\r\n if (!listenerAttached) {\r\n document.addEventListener('mousedown', onMouseDown);\r\n listenerAttached = true;\r\n }\r\n }\r\n\r\n function detachContainerListener() {\r\n if (listenerAttached) {\r\n document.removeEventListener('mousedown', onMouseDown);\r\n listenerAttached = false;\r\n }\r\n }\r\n\r\n /**\r\n * Force-stop any in-progress drag (e.g. when viewMode changes).\r\n */\r\n function cancelDrag() {\r\n if (isDragging.value) {\r\n stopAutoScroll();\r\n restoreTextSelection();\r\n isDragging.value = false;\r\n selectionRect.value = { left: 0, top: 0, width: 0, height: 0, right: 0, bottom: 0 };\r\n startPoint = null;\r\n document.removeEventListener('mousemove', onMouseMove);\r\n document.removeEventListener('mouseup', onMouseUp);\r\n }\r\n }\r\n\r\n // 监听 viewMode 变化,启用/禁用框选\r\n // Always cancel any in-progress drag when viewMode changes (Requirement 2.3),\r\n // then re-evaluate whether listeners should be attached for the new mode.\r\n watch(\r\n () => toValue(viewMode),\r\n () => {\r\n cancelDrag();\r\n syncListenerState();\r\n }\r\n );\r\n\r\n // --- Window resize handler ---\r\n function onWindowResize() {\r\n syncListenerState();\r\n }\r\n\r\n onMounted(() => {\r\n // 仅在满足条件时启用\r\n if (shouldEnable()) {\r\n attachContainerListener();\r\n }\r\n // Always listen for resize to dynamically enable/disable\r\n window.addEventListener('resize', onWindowResize);\r\n });\r\n\r\n onBeforeUnmount(() => {\r\n cancelDrag();\r\n restoreTextSelection();\r\n stopAutoScroll();\r\n detachContainerListener();\r\n window.removeEventListener('resize', onWindowResize);\r\n });\r\n\r\n return {\r\n isDragging,\r\n selectionRect,\r\n };\r\n}\r\n","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.every.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.find.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport \"core-js/modules/es.iterator.reduce.js\";\nimport \"core-js/modules/es.iterator.some.js\";\nimport \"core-js/modules/es.set.difference.v2.js\";\nimport \"core-js/modules/es.set.intersection.v2.js\";\nimport \"core-js/modules/es.set.is-disjoint-from.v2.js\";\nimport \"core-js/modules/es.set.is-subset-of.v2.js\";\nimport \"core-js/modules/es.set.is-superset-of.v2.js\";\nimport \"core-js/modules/es.set.symmetric-difference.v2.js\";\nimport \"core-js/modules/es.set.union.v2.js\";\nimport { mapGetters } from 'vuex';\nimport JSZip from 'jszip';\nimport DashboardTabs from '@/components/DashboardTabs.vue';\nimport TagManagementDialog from '@/components/dashboard/TagManagementDialog.vue';\nimport BatchTagDialog from '@/components/dashboard/BatchTagDialog.vue';\nimport SkeletonLoader from '@/components/dashboard/SkeletonLoader.vue';\nimport FileCard from '@/components/dashboard/FileCard.vue';\nimport FolderCard from '@/components/dashboard/FolderCard.vue';\nimport MoveFileDialog from '@/components/dashboard/MoveFileDialog.vue';\nimport FileListItem from '@/components/dashboard/FileListItem.vue';\nimport FileDetailDialog from '@/components/dashboard/FileDetailDialog.vue';\nimport BatchActionBar from '@/components/dashboard/BatchActionBar.vue';\nimport MobileActionSheet from '@/components/dashboard/MobileActionSheet.vue';\nimport MobileDirectoryDrawer from '@/components/dashboard/MobileDirectoryDrawer.vue';\nimport DashboardCheckbox from '@/components/dashboard/DashboardCheckbox.vue';\nimport FilterDropdown from '@/components/dashboard/FilterDropdown.vue';\nimport LanguageSwitcher from '@/components/LanguageSwitcher.vue';\nimport { fileManager } from '@/utils/fileManager';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nimport { validateFolderPath } from '@/utils/pathValidator';\nimport backgroundManager from '@/mixins/backgroundManager';\nimport { ref } from 'vue';\nimport { useDragSelect } from '@/utils/dashboard/useDragSelect.js';\nconst SORT_FIELDS = ['time', 'size', 'rawName', 'fileName'];\nconst SORT_ORDERS = ['asc', 'desc'];\nfunction getStoredSortValue(key, validValues, fallback) {\n try {\n const value = localStorage.getItem(key);\n return validValues.includes(value) ? value : fallback;\n } catch {\n return fallback;\n }\n}\nexport default {\n name: 'AdminDashBoard',\n mixins: [backgroundManager],\n data() {\n return {\n Number: 0,\n directFileCount: 0,\n // 当前目录直接子文件数量\n directFolderCount: 0,\n // 当前目录直接子文件夹数量\n showLogoutButton: false,\n tableData: [],\n tempSearch: '',\n search: '',\n searchKeywords: '',\n // Keywords only (without tag filters) for backend search\n searchIncludeTags: '',\n // 包含的标签,逗号分隔\n searchExcludeTags: '',\n // 排除的标签,逗号分隔\n isSearchMode: false,\n currentPage: 1,\n pageSize: 15,\n selectedFiles: [],\n sortField: getStoredSortValue('sortField', SORT_FIELDS, 'time'),\n sortOrder: getStoredSortValue('sortOrder', SORT_ORDERS, 'desc'),\n isUploading: false,\n showdetailDialog: false,\n detailFile: null,\n activeUrlTab: 'originUrl',\n defaultUrlFormat: 'originUrl',\n showUrlDialog: false,\n useCustomUrl: 'false',\n // 是否启用自定义链接\n customUrlPrefix: '',\n // 自定义链接前缀\n loading: false,\n // 加载状态\n currentPath: '',\n // 当前文件夹路径\n refreshLoading: false,\n showTagDialog: false,\n // 标签管理对话框\n showBatchTagDialog: false,\n // 批量标签管理对话框\n currentTagFile: '',\n // 当前标签管理的文件\n viewMode: 'card',\n // 视图模式:card 或 list\n showMobileActionModal: false,\n // 移动端操作模态框\n mobileActionFile: null,\n // 当前移动端操作的文件\n mobileActionIndex: -1,\n // 当前移动端操作的文件索引\n mobileActionIsFolder: false,\n // 是否为文件夹操作\n longPressTimer: null,\n // 长按计时器\n showMobileDirectoryDrawer: false,\n // 移动端目录抽屉\n jumpPage: '',\n // 跳转页码输入\n // 筛选相关状态(数组形式支持多选)\n filters: {\n accessStatus: [],\n // 访问状态: 'normal'(正常), 'blocked'(已屏蔽)\n listType: [],\n // 黑白名单: 'White', 'Block', 'None'\n label: [],\n // 审查结果: 'normal', 'teen', 'adult'\n fileType: [],\n // 文件类型: 'image', 'video', 'audio', 'other'\n channel: [],\n // 渠道类型: 'TelegramNew', 'CloudflareR2', 'S3', 'Discord', 'HuggingFace', 'WebDAV', 'External'\n channelName: [] // 渠道名称: 动态获取\n },\n channelNameOptions: [],\n // 动态从文件列表中提取\n // 移动文件对话框相关状态\n showMoveDialog: false,\n // 移动文件对话框\n moveTargetPath: '/',\n // 移动目标路径\n moveFileKey: '',\n // 当前移动的文件key\n moveFileIndex: -1,\n // 当前移动的文件索引\n isBatchMove: false,\n // 是否为批量移动\n pageSwipeStartX: null,\n pageSwipeStartY: null,\n pageSwipeStartTime: 0\n };\n },\n components: {\n DashboardTabs,\n TagManagementDialog,\n BatchTagDialog,\n SkeletonLoader,\n FileCard,\n FolderCard,\n FileListItem,\n FileDetailDialog,\n BatchActionBar,\n MobileActionSheet,\n MobileDirectoryDrawer,\n DashboardCheckbox,\n FilterDropdown,\n MoveFileDialog,\n LanguageSwitcher\n },\n setup() {\n const cardContainerRef = ref(null);\n const listContainerRef = ref(null);\n const viewModeRef = ref('card');\n const itemsRef = ref([]);\n const {\n isDragging,\n selectionRect\n } = useDragSelect({\n modes: {\n card: {\n containerRef: cardContainerRef,\n itemSelector: '.img-card'\n },\n list: {\n containerRef: listContainerRef,\n itemSelector: '.list-item'\n }\n },\n viewMode: viewModeRef,\n items: itemsRef\n });\n return {\n cardContainerRef,\n listContainerRef,\n viewModeRef,\n itemsRef,\n isDragging,\n selectionRect\n };\n },\n computed: {\n ...mapGetters(['adminUrlSettings', 'userConfig']),\n filteredTableData() {\n return this.tableData;\n },\n totalPages() {\n return Math.ceil(this.filteredTableData.length / this.pageSize) || 1;\n },\n // 基于当前文件夹直接子文件和子文件夹数量计算的真实总页数\n realTotalPages() {\n const total = this.directFolderCount + this.directFileCount;\n return Math.ceil(total / this.pageSize) || 1;\n },\n // 计算当前激活的筛选条件数量(数组形式)\n activeFilterCount() {\n return Object.values(this.filters).reduce((count, arr) => count + (Array.isArray(arr) ? arr.length : 0), 0);\n },\n // 判断是否处于搜索或筛选模式\n hasSearchOrFilter() {\n return this.isSearchMode || this.activeFilterCount > 0;\n },\n paginatedTableData() {\n const sortedData = this.sortData(this.filteredTableData);\n const start = (this.currentPage - 1) * this.pageSize;\n const end = start + this.pageSize;\n let data = sortedData.slice(start, end);\n // 增加previewSrcList属性,用于预览图片\n const fullList = data.filter(file => this.isImage(file)).map(file => this.getFileLink(file.name));\n data.forEach(file => {\n if (this.isImage(file)) {\n // 重新排序,索引大于等于当前索引的元素在前,否则在后\n file.previewSrcList = fullList.slice(fullList.indexOf(this.getFileLink(file.name))).concat(fullList.slice(0, fullList.indexOf(this.getFileLink(file.name))));\n }\n });\n // 增加channelTag属性,用于显示渠道信息\n data.forEach(file => {\n if (file.metadata?.Channel === 'TelegramNew' || file.metadata?.Channel === 'Telegram') {\n file.channelTag = 'TG';\n } else if (file.metadata?.Channel === 'CloudflareR2') {\n file.channelTag = 'R2';\n } else if (file.metadata?.Channel === 'S3') {\n file.channelTag = 'S3';\n } else if (file.metadata?.Channel === 'Discord') {\n file.channelTag = 'DC';\n } else if (file.metadata?.Channel === 'HuggingFace') {\n file.channelTag = 'HF';\n } else if (file.metadata?.Channel === 'WebDAV') {\n file.channelTag = 'WD';\n } else if (file.metadata?.Channel === 'External') {\n file.channelTag = this.$t('dashboard.externalTag');\n } else {\n file.channelTag = this.$t('dashboard.unknownTag');\n }\n });\n return data;\n },\n sortLabel() {\n const labelKeys = {\n time: 'dashboard.sortByTime',\n size: 'dashboard.sortBySize',\n rawName: 'dashboard.sortByRawName',\n fileName: 'dashboard.sortByFileName'\n };\n const fieldLabel = this.$t(labelKeys[this.sortField] || labelKeys.time);\n const orderLabel = this.$t(this.sortOrder === 'desc' ? 'dashboard.sortDesc' : 'dashboard.sortAsc');\n return `${fieldLabel} · ${orderLabel}`;\n },\n dialogWidth() {\n return window.innerWidth > 768 ? '50%' : '90%';\n },\n detailDialogWidth() {\n return window.innerWidth > 768 ? '70%' : '90%';\n },\n accessType() {\n if (this.detailFile?.metadata?.ListType === 'White') {\n return this.$t('filter.normal');\n } else if (this.detailFile?.metadata?.ListType === 'Block' || this.detailFile?.metadata?.Label === 'adult') {\n return this.$t('filter.blocked');\n } else {\n return this.$t('filter.normal');\n }\n },\n allUrl() {\n // 外链图片均采用外链\n if (this.detailFile?.metadata?.Channel === 'External') {\n return {\n 'originUrl': `${this.detailFile?.metadata?.ExternalLink}`,\n 'mdUrl': `![${this.detailFile?.metadata?.FileName || this.detailFile?.name}](${this.detailFile?.metadata?.ExternalLink})`,\n 'htmlUrl': `\"${this.detailFile?.metadata?.FileName`,\n 'bbUrl': `[img]${this.detailFile?.metadata?.ExternalLink}[/img]`,\n 'tgId': this.detailFile?.metadata?.TgFileId || this.$t('fileDetail.unknown'),\n 'S3Location': this.detailFile?.metadata?.S3Location || this.$t('fileDetail.unknown'),\n 'S3CdnFileUrl': this.detailFile?.metadata?.S3CdnFileUrl || this.$t('fileDetail.unknown')\n };\n } else {\n return {\n 'originUrl': `${this.rootUrl}${this.detailFile?.name}`,\n 'mdUrl': `![${this.detailFile?.metadata?.FileName || this.detailFile?.name}](${this.rootUrl}${this.detailFile?.name})`,\n 'htmlUrl': `\"${this.detailFile?.metadata?.FileName`,\n 'bbUrl': `[img]${this.rootUrl}${this.detailFile?.name}[/img]`,\n 'tgId': this.detailFile?.metadata?.TgFileId || this.$t('fileDetail.unknown'),\n 'S3Location': this.detailFile?.metadata?.S3Location || this.$t('fileDetail.unknown'),\n 'S3CdnFileUrl': this.detailFile?.metadata?.S3CdnFileUrl || this.$t('fileDetail.unknown')\n };\n }\n },\n tableColumnNum() {\n return window.innerWidth > 768 ? 3 : 1;\n },\n tablePreviewSpan() {\n return window.innerWidth > 768 ? 2 : 1;\n },\n disableTooltip() {\n return window.innerWidth < 768;\n },\n selectPage() {\n // 如果当前页所有文件都被选中,则返回 true,否则返回 false\n return this.paginatedTableData.every(file => file.selected);\n },\n selectedPageFiles() {\n // 如果当前页有文件被选中,则返回 true,否则返回 false\n return this.paginatedTableData.some(file => file.selected);\n },\n rootUrl() {\n // 链接前缀,优先级:用户自定义 > urlPrefix > 默认\n return this.useCustomUrl === 'true' ? this.customUrlPrefix : this.userConfig?.urlPrefix || `${document.location.origin}/file/`;\n },\n isSelectAll: {\n get() {\n return this.paginatedTableData.length > 0 && this.paginatedTableData.every(file => file.selected);\n },\n set(val) {\n this.paginatedTableData.forEach(file => file.selected = val);\n }\n },\n isIndeterminate() {\n const selectedCount = this.paginatedTableData.filter(file => file.selected).length;\n return selectedCount > 0 && selectedCount < this.paginatedTableData.length;\n },\n pagerCount() {\n return window.innerWidth < 768 ? 5 : 7;\n }\n },\n watch: {\n // Sync viewMode data property to the ref used by useDragSelect\n viewMode: {\n handler(newVal) {\n this.viewModeRef = newVal;\n },\n immediate: true\n },\n // Sync paginatedTableData computed property to the ref used by useDragSelect\n paginatedTableData: {\n handler(newVal) {\n this.itemsRef = newVal;\n },\n immediate: true\n },\n tableData: {\n handler(newData) {\n // selectedFiles 增加 newData中新选中,不包含在 selectedFiles 中的文件\n this.selectedFiles = this.selectedFiles.concat(newData.filter(file => file.selected && !this.selectedFiles.includes(file)));\n // selectedFiles 删掉 newData 中已取消选中的文件\n this.selectedFiles = this.selectedFiles.filter(file => file.selected);\n // selectedFiles 删掉 tableData 中已删除的文件\n this.selectedFiles = this.selectedFiles.filter(file => newData.includes(file));\n },\n deep: true\n },\n defaultUrlFormat(newFormat) {\n localStorage.setItem('defaultUrlFormat', newFormat);\n },\n showdetailDialog(newVal) {\n if (newVal) {\n this.activeUrlTab = this.defaultUrlFormat || 'originUrl';\n }\n },\n customUrlPrefix(val) {\n this.$store.commit('setAdminUrlSettings', {\n key: 'customUrlPrefix',\n value: val\n });\n },\n useCustomUrl(val) {\n this.$store.commit('setAdminUrlSettings', {\n key: 'useCustomUrl',\n value: val\n });\n },\n currentPath(val) {\n // 页面切换时,取消选择的内容\n this.tableData.forEach(file => file.selected = false);\n }\n },\n methods: {\n // 切换视图模式\n setViewMode(mode) {\n if (this.viewMode === mode) {\n return;\n }\n this.viewMode = mode;\n localStorage.setItem('viewMode', this.viewMode);\n },\n // 列表视图全选当前页\n handleSelectAllPage(val) {\n this.paginatedTableData.forEach(file => file.selected = val);\n },\n // 移动端长按开始\n handleTouchStart(item, index) {\n this.longPressTimer = setTimeout(() => {\n this.mobileActionFile = item;\n this.mobileActionIndex = index;\n this.mobileActionIsFolder = false;\n this.showMobileActionModal = true;\n }, 500); // 500ms 长按触发\n },\n // 移动端长按结束/取消\n handleTouchEnd() {\n if (this.longPressTimer) {\n clearTimeout(this.longPressTimer);\n this.longPressTimer = null;\n }\n },\n // 文件夹长按开始\n handleFolderTouchStart(item, index) {\n this.longPressTimer = setTimeout(() => {\n this.mobileActionFile = item;\n this.mobileActionIndex = index;\n this.mobileActionIsFolder = true;\n this.showMobileActionModal = true;\n }, 500);\n },\n // 处理移动端操作\n handleMobileAction(action) {\n const file = this.mobileActionFile;\n const index = this.mobileActionIndex;\n this.showMobileActionModal = false;\n if (!file) return;\n switch (action) {\n case 'detail':\n this.openDetailDialog(index, file.name);\n break;\n case 'copy':\n this.handleCopy(index, file.name);\n break;\n case 'folderCopy':\n this.handleFolderCopy(file.name);\n break;\n case 'download':\n this.handleDownload(file.name);\n break;\n case 'move':\n this.handleMove(index, file.name);\n break;\n case 'delete':\n this.handleDelete(index, file.name);\n break;\n case 'tag':\n this.handleTagManagement(file.name);\n break;\n }\n },\n // 返回上一级目录\n handleGoBack() {\n const pathParts = this.currentPath.split('/').filter(Boolean);\n if (pathParts.length > 0) {\n pathParts.pop();\n const parentPath = pathParts.join('/');\n this.navigateToFolder(parentPath);\n }\n this.showMobileDirectoryDrawer = false;\n },\n // 获取标签颜色\n getTagColor(index) {\n const colors = ['linear-gradient(135deg, #667eea 0%, #764ba2 100%)', 'linear-gradient(135deg, #f093fb 0%, #f5576c 100%)', 'linear-gradient(135deg, #4facfe 0%, #00f2fe 100%)', 'linear-gradient(135deg, #43e97b 0%, #38f9d7 100%)', 'linear-gradient(135deg, #fa709a 0%, #fee140 100%)', 'linear-gradient(135deg, #a8edea 0%, #fed6e3 100%)'];\n return colors[index % colors.length];\n },\n // 视频hover播放控制\n handleVideoHover(event, isEnter) {\n const video = event.target;\n if (isEnter) {\n video.play().catch(() => {});\n } else {\n video.pause();\n video.currentTime = 0;\n }\n },\n // 格式化文件大小\n formatFileSize(bytes) {\n if (!bytes || bytes === 0) return '-';\n bytes = Number(bytes);\n if (isNaN(bytes)) return '-';\n const units = ['B', 'KB', 'MB', 'GB', 'TB'];\n let i = 0;\n while (bytes >= 1024 && i < units.length - 1) {\n bytes /= 1024;\n i++;\n }\n return bytes.toFixed(i > 0 ? 1 : 0) + ' ' + units[i];\n },\n handleSearch() {\n this.search = this.tempSearch;\n this.isSearchMode = this.search.trim() !== '';\n this.currentPage = 1; // 重置到第一页\n\n // 解析搜索字符串,提取标签和关键字\n // 支持 #tag 表示包含标签,-#tag 表示排除标签\n if (this.search && this.search.trim()) {\n const includeTags = [];\n const excludeTags = [];\n\n // 匹配 -#tag 和 #tag\n let searchText = this.search;\n\n // 先匹配排除标签 -#tag\n const excludeTagRegex = /-#([\\w\\u4e00-\\u9fa5\\u3040-\\u309f\\u30a0-\\u30ff\\uac00-\\ud7af\\.\\+\\-]+)/g;\n searchText = searchText.replace(excludeTagRegex, (match, tag) => {\n excludeTags.push(tag.toLowerCase());\n return ' ';\n });\n\n // 再匹配包含标签 #tag\n const includeTagRegex = /#([\\w\\u4e00-\\u9fa5\\u3040-\\u309f\\u30a0-\\u30ff\\uac00-\\ud7af\\.\\+\\-]+)/g;\n searchText = searchText.replace(includeTagRegex, (match, tag) => {\n includeTags.push(tag.toLowerCase());\n return ' ';\n });\n\n // 清理剩余的关键字(去除多余空格)\n this.searchKeywords = searchText.replace(/\\s+/g, ' ').trim();\n\n // 构建标签查询字符串\n this.searchIncludeTags = includeTags.join(',');\n this.searchExcludeTags = excludeTags.join(',');\n console.log('Search keywords:', this.searchKeywords);\n console.log('Include tags:', this.searchIncludeTags);\n console.log('Exclude tags:', this.searchExcludeTags);\n } else {\n this.searchKeywords = '';\n this.searchIncludeTags = '';\n this.searchExcludeTags = '';\n }\n this.refreshFileList();\n },\n // 处理筛选变化(来自 FilterDropdown 组件)\n handleFilterChange({\n type,\n filters\n }) {\n this.filters = filters;\n this.currentPage = 1; // 重置到第一页\n this.refreshFileList();\n },\n // 清除所有筛选条件\n clearFilters() {\n this.filters = {\n listType: [],\n label: [],\n fileType: [],\n channel: [],\n channelName: []\n };\n this.currentPage = 1;\n this.refreshFileList();\n },\n // 从 API 获取所有渠道名称\n async extractChannelNames() {\n try {\n const response = await fetchWithAuth('/api/channels?includeDisabled=true', {\n method: 'GET'\n });\n if (response.ok) {\n const channels = await response.json();\n const channelOptions = [];\n\n // 类型映射(显示名称)\n const typeLabels = {\n telegram: 'Telegram',\n cfr2: 'Cloudflare R2',\n s3: 'S3',\n discord: 'Discord',\n huggingface: 'HuggingFace',\n webdav: 'WebDAV'\n };\n\n // 按类型提取渠道名称,channel.type是类型内部存储名称(可能根据版本有变化),type是类型对外名称\n Object.entries(channels).forEach(([type, channelList]) => {\n if (Array.isArray(channelList) && channelList.length > 0) {\n channelList.forEach(channel => {\n if (channel.name) {\n channelOptions.push({\n name: channel.name,\n type: channel.type,\n typeLabel: typeLabels[type] || type,\n // 使用 channel.type:channel.name 作为唯一标识\n value: `${channel.type}:${channel.name}`\n });\n }\n });\n }\n });\n\n // 按类型和名称排序\n channelOptions.sort((a, b) => {\n if (a.type !== b.type) {\n return a.type.localeCompare(b.type);\n }\n return a.name.localeCompare(b.name);\n });\n this.channelNameOptions = channelOptions;\n }\n } catch (error) {\n console.error('Failed to fetch channel names:', error);\n }\n },\n handleDownload(key) {\n const link = document.createElement('a');\n link.href = this.getFileLink(key);\n link.download = key;\n link.click();\n },\n openDetailDialog(index, key) {\n this.detailFile = this.paginatedTableData[index];\n this.showdetailDialog = true;\n },\n handleTabClick(tab) {\n this.activeUrlTab = tab.props.name;\n },\n handleUrlClick(event) {\n // 复制到剪贴板\n navigator.clipboard.writeText(event.target.value).then(() => {\n this.$message({\n type: 'success',\n message: this.$t('dashboard.copySuccess')\n });\n }).catch(() => {\n this.$message({\n type: 'error',\n message: this.$t('dashboard.copyFailed')\n });\n });\n },\n handleDetailDelete(key) {\n this.$confirm(this.$t('dashboard.deleteConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n fetchWithAuth(`/api/manage/delete/${key}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n this.tableData.splice(fileIndex, 1);\n }\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.updateStats(-1, false);\n this.$message.success(this.$t('dashboard.deleteSuccess'));\n this.showdetailDialog = false;\n }).catch(() => this.$message.error(this.$t('dashboard.deleteFailed')));\n }).catch(() => console.log('Delete cancelled'));\n },\n handleBlock(key) {\n this.$confirm(this.$t('dashboard.blockConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n fetchWithAuth(`/api/manage/block/${key}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata.ListType = 'Block';\n }\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.$message.success(this.$t('dashboard.blockSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.blockFailed')));\n }).catch(() => console.log('Block cancelled'));\n },\n handleWhite(key) {\n this.$confirm(this.$t('dashboard.whiteConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n fetchWithAuth(`/api/manage/white/${key}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata.ListType = 'White';\n }\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.$message.success(this.$t('dashboard.whiteSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.whiteFailed')));\n }).catch(() => console.log('White cancelled'));\n },\n handleDelete(index, key) {\n // 判断是否为文件夹\n const isFolder = this.tableData.find(file => file.name === key).isFolder;\n this.$confirm(isFolder ? this.$t('dashboard.deleteFolderConfirm') : this.$t('dashboard.deleteFileConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n fetchWithAuth(`/api/manage/delete/${key}?folder=${isFolder}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n this.tableData.splice(fileIndex, 1);\n }\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.updateStats(-1, false);\n fileManager.removeFile(key);\n this.$message.success(this.$t('dashboard.deleteSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.deleteFailed')));\n }).catch(() => console.log('Delete cancelled'));\n },\n handleBatchDelete() {\n this.$confirm(this.$t('dashboard.batchDeleteConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n const promises = this.selectedFiles.map(file => {\n const isFolder = file.isFolder;\n return fetchWithAuth(`/api/manage/delete/${file.name}?folder=${isFolder}`, {\n method: 'GET'\n });\n });\n Promise.all(promises).then(results => {\n let successNum = 0;\n results.forEach((response, index) => {\n if (response.ok) {\n successNum++;\n const fileIndex = this.tableData.findIndex(file => file.name === this.selectedFiles[index].name);\n if (fileIndex !== -1) {\n this.tableData.splice(fileIndex, 1);\n }\n fileManager.removeFile(this.selectedFiles[index].name);\n }\n });\n this.selectedFiles = [];\n this.updateStats(-successNum, false);\n this.$message.success(this.$t('dashboard.batchDeleteSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.batchDeleteFailed')));\n }).catch(() => console.log('Batch delete cancelled'));\n },\n async handleBatchCopy() {\n // 分离文件和文件夹\n const files = this.selectedFiles.filter(item => !item.isFolder);\n const folders = this.selectedFiles.filter(item => item.isFolder);\n\n // 如果有文件夹,显示加载状态\n let loading = null;\n if (folders.length > 0) {\n loading = this.$loading({\n lock: true,\n text: this.$t('dashboard.fetchingFileList')\n });\n }\n try {\n // 收集所有文件(包括文件夹内的文件)\n let allFiles = [...files];\n\n // 递归获取所有文件夹内的文件\n for (const folder of folders) {\n try {\n const response = await fetchWithAuth(`/api/manage/list?dir=${encodeURIComponent(folder.name)}&recursive=true&count=-1`, {\n method: 'GET'\n });\n const data = await response.json();\n if (data.files && data.files.length > 0) {\n allFiles = allFiles.concat(data.files);\n }\n } catch (error) {\n console.error(`获取文件夹 ${folder.name} 内容失败:`, error);\n }\n }\n if (loading) loading.close();\n if (allFiles.length === 0) {\n this.$message.warning(this.$t('dashboard.noLinksAvailable'));\n return;\n }\n\n // 生成所有链接\n const links = allFiles.map(file => {\n return this.generateFileLink(file.name, file.metadata);\n }).filter(link => link);\n if (links.length === 0) {\n this.$message.warning(this.$t('dashboard.noLinksAvailable'));\n return;\n }\n\n // 复制到剪贴板\n const text = links.join('\\n');\n if (navigator.clipboard) {\n await navigator.clipboard.writeText(text);\n this.$message.success(this.$t('dashboard.batchCopySuccess', {\n count: links.length\n }));\n } else {\n this.copyToClipboardFallback(text);\n }\n } catch (error) {\n if (loading) loading.close();\n console.error('Batch copy failed:', error);\n this.$message.error(this.$t('dashboard.batchCopyFailed'));\n }\n },\n copyToClipboardFallback(text) {\n const textarea = document.createElement('textarea');\n document.body.appendChild(textarea);\n textarea.style.position = 'fixed';\n textarea.style.clip = 'rect(0 0 0 0)';\n textarea.style.top = '10px';\n textarea.value = text;\n textarea.select();\n document.execCommand('copy');\n document.body.removeChild(textarea);\n this.$message.success(this.$t('dashboard.batchCopyLinksSuccess'));\n },\n handleCopy(index, key) {\n let text = '';\n if (this.paginatedTableData[index].metadata?.Channel === 'External') {\n switch (this.defaultUrlFormat) {\n case 'originUrl':\n text = this.paginatedTableData[index].metadata?.ExternalLink;\n break;\n case 'mdUrl':\n text = `![${this.paginatedTableData[index].metadata?.FileName || key}](${this.paginatedTableData[index].metadata?.ExternalLink})`;\n break;\n case 'htmlUrl':\n text = `\"${this.paginatedTableData[index].metadata?.FileName`;\n break;\n case 'bbUrl':\n text = `[img]${this.paginatedTableData[index].metadata?.ExternalLink}[/img]`;\n break;\n case 'tgId':\n text = this.paginatedTableData[index].metadata?.TgFileId || 'none';\n break;\n case 's3Location':\n text = this.paginatedTableData[index].metadata?.S3Location || 'none';\n break;\n }\n } else {\n switch (this.defaultUrlFormat) {\n case 'originUrl':\n text = `${this.rootUrl}${key}`;\n break;\n case 'mdUrl':\n text = `![${this.paginatedTableData[index].metadata?.FileName || key}](${this.rootUrl}${key})`;\n break;\n case 'htmlUrl':\n text = `\"${this.paginatedTableData[index].metadata?.FileName`;\n break;\n case 'bbUrl':\n text = `[img]${this.rootUrl}${key}[/img]`;\n break;\n case 'tgId':\n text = this.paginatedTableData[index].metadata?.TgFileId || 'none';\n break;\n case 's3Location':\n text = this.paginatedTableData[index].metadata?.S3Location || 'none';\n break;\n }\n }\n navigator.clipboard ? navigator.clipboard.writeText(text).then(() => this.$message.success(this.$t('dashboard.copyFileLinkSuccess'))) : this.copyToClipboardFallback(text);\n },\n async loadMoreData() {\n this.loading = true;\n try {\n // 传递标签参数和筛选参数到后端\n await fileManager.loadMoreFiles(this.currentPath, this.searchKeywords, this.searchIncludeTags, this.searchExcludeTags, 60, this.filters);\n // 获取新的文件列表后\n await this.fetchFileList();\n } catch (error) {\n this.$message.error(this.$t('dashboard.loadMoreFailed'));\n } finally {\n this.loading = false;\n }\n },\n updateStats(num, init = false) {\n if (init) {\n this.Number = num;\n } else {\n this.Number += num;\n }\n },\n setSortField(field) {\n if (!SORT_FIELDS.includes(field)) return;\n this.sortField = field;\n this.currentPage = 1;\n localStorage.setItem('sortField', field);\n },\n setSortOrder(order) {\n if (!SORT_ORDERS.includes(order)) return;\n this.sortOrder = order;\n this.currentPage = 1;\n localStorage.setItem('sortOrder', order);\n },\n sortData(data) {\n if (!Array.isArray(data)) return [];\n const folders = data.filter(file => file.isFolder);\n const files = data.filter(file => !file.isFolder);\n const getSizeInBytes = item => {\n const parseSize = value => {\n if (value === null || value === undefined || value === '') return null;\n const parsedValue = Number(value);\n return Number.isFinite(parsedValue) ? parsedValue : null;\n };\n const sizeInBytes = parseSize(item.metadata?.FileSizeBytes);\n if (sizeInBytes !== null) return sizeInBytes;\n const sizeInMegabytes = parseSize(item.metadata?.FileSize);\n if (sizeInMegabytes !== null) return sizeInMegabytes * 1024 * 1024;\n return parseSize(item.size) ?? 0;\n };\n const getValue = item => {\n switch (this.sortField) {\n case 'size':\n return getSizeInBytes(item);\n case 'rawName':\n return item.metadata?.RawName || item.name || '';\n case 'fileName':\n return item.metadata?.FileName || item.name || '';\n case 'time':\n default:\n return item.metadata?.TimeStamp ? new Date(item.metadata.TimeStamp).getTime() : 0;\n }\n };\n const compare = (a, b) => {\n const valA = getValue(a);\n const valB = getValue(b);\n let result = 0;\n if (typeof valA === 'string' || typeof valB === 'string') {\n result = String(valA || '').localeCompare(String(valB || ''));\n } else {\n result = valA - valB;\n }\n return this.sortOrder === 'desc' ? -result : result;\n };\n folders.sort(compare);\n files.sort(compare);\n return folders.concat(files);\n },\n handleVideoClick(event) {\n const videoElement = event.target;\n if (videoElement.requestFullscreen) {\n videoElement.requestFullscreen();\n } else if (videoElement.webkitRequestFullscreen) {\n // Safari/Old Chrome\n videoElement.webkitRequestFullscreen();\n } else if (videoElement.mozRequestFullScreen) {\n // Firefox\n videoElement.mozRequestFullScreen();\n } else if (videoElement.msRequestFullscreen) {\n // IE/Edge\n videoElement.msRequestFullscreen();\n }\n },\n handleLogout() {\n const url = process.env.NODE_ENV === 'production' ? '/api/auth/logout' : '/api/api/auth/logout';\n fetch(url, {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n authType: 'admin'\n })\n }).finally(() => {\n this.$store.commit('setAdminLoggedIn', false);\n this.$router.push('/adminLogin');\n });\n },\n handleSelectPage() {\n if (this.selectPage) {\n this.paginatedTableData.forEach(file => file.selected = false);\n } else {\n this.paginatedTableData.forEach(file => file.selected = true);\n }\n },\n clearSelection() {\n this.tableData.forEach(file => file.selected = false);\n this.selectedFiles = [];\n },\n handleBatchAction(command) {\n if (command === 'copy') {\n this.handleBatchCopy();\n } else if (command === 'delete') {\n this.handleBatchDelete();\n } else if (command === 'download') {\n this.handleBatchDownload();\n } else if (command === 'move') {\n this.handleBatchMove();\n } else if (command === 'tagManagement') {\n this.handleBatchTagManagement();\n } else if (command === 'ban') {\n this.handleBatchBlock();\n } else if (command === 'white') {\n this.handleBatchWhite();\n }\n },\n handleMove(index, key) {\n // 打开自定义移动对话框\n this.moveFileKey = key;\n this.moveFileIndex = index;\n this.isBatchMove = false;\n this.moveTargetPath = '/';\n this.showMoveDialog = true;\n },\n handleBatchMove() {\n // 打开自定义移动对话框(批量模式)\n this.isBatchMove = true;\n this.moveTargetPath = '/';\n this.showMoveDialog = true;\n },\n // 确认移动操作\n confirmMove(targetPath) {\n const value = targetPath;\n // 使用共享验证器验证路径\n const validation = validateFolderPath(value);\n if (!validation.valid) {\n this.$message.error(validation.error);\n return;\n }\n // 去掉开头的 /,结尾若没有 /,则加上\n const newPath = value.replace(/^\\/+/, '') + (value.endsWith('/') ? '' : value === '' ? '' : '/');\n // 判断目标文件夹是否是当前文件夹\n if (newPath === this.currentPath) {\n this.$message.warning(this.$t('dashboard.moveTargetSameAsCurrent'));\n return;\n }\n\n // 关闭对话框\n this.showMoveDialog = false;\n if (this.isBatchMove) {\n // 批量移动\n this.executeBatchMove(newPath);\n } else {\n // 单个文件移动\n this.executeSingleMove(newPath);\n }\n },\n // 执行单个文件移动\n executeSingleMove(newPath) {\n const key = this.moveFileKey;\n const isFolder = this.tableData.find(file => file.name === key)?.isFolder;\n fetchWithAuth(`/api/manage/move/${key}?folder=${isFolder}&dist=${encodeURIComponent(newPath)}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n // 更新本地文件管理器\n const newKey = newPath + key.split('/').pop();\n fileManager.moveFile(key, newKey, isFolder, this.currentPath);\n // 移除文件\n this.tableData.splice(fileIndex, 1);\n // 强制重新渲染内容\n this.$nextTick(() => {\n const tempData = [...this.tableData];\n this.tableData = [];\n this.$nextTick(() => {\n this.tableData = tempData;\n });\n });\n }\n this.updateStats(-1, false);\n this.$message.success(this.$t('dashboard.moveSuccess'));\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.refreshLocalFileList();\n }).catch(() => this.$message.error(this.$t('dashboard.moveFailed')));\n },\n // 执行批量移动\n executeBatchMove(newPath) {\n const promises = this.selectedFiles.map(file => {\n const isFolder = file.isFolder;\n return fetchWithAuth(`/api/manage/move/${file.name}?folder=${isFolder}&dist=${encodeURIComponent(newPath)}`, {\n method: 'GET'\n });\n });\n Promise.all(promises).then(results => {\n let successNum = 0;\n results.forEach((response, index) => {\n if (response.ok) {\n successNum++;\n const file = this.selectedFiles[index];\n file.selected = false;\n const fileIndex = this.tableData.findIndex(f => f.name === file.name);\n if (fileIndex !== -1) {\n // 更新本地文件管理器\n const newKey = newPath + file.name.split('/').pop();\n fileManager.moveFile(file.name, newKey, file.isFolder, this.currentPath);\n // 移除文件\n this.tableData.splice(fileIndex, 1);\n }\n }\n });\n // 强制重新渲染内容\n this.$nextTick(() => {\n const tempData = [...this.tableData];\n this.tableData = [];\n this.$nextTick(() => {\n this.tableData = tempData;\n });\n });\n this.updateStats(-successNum, false);\n this.$message.success(this.$t('dashboard.moveSuccess'));\n }).then(() => {\n this.refreshLocalFileList();\n }).catch(() => this.$message.error(this.$t('dashboard.moveFailed')));\n },\n handleBatchBlock() {\n this.$confirm(this.$t('dashboard.batchBlockConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n // 跳过文件夹\n const promises = this.selectedFiles.map(file => {\n if (file.isFolder) {\n return Promise.resolve({\n ok: false\n });\n }\n return fetchWithAuth(`/api/manage/block/${file.name}`, {\n method: 'GET'\n });\n });\n Promise.all(promises).then(results => {\n results.forEach((response, index) => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === this.selectedFiles[index].name);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata.ListType = 'Block';\n }\n }\n });\n this.$message.success(this.$t('dashboard.batchBlockSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.batchBlockFailed')));\n }).catch(() => console.log('Batch block cancelled'));\n },\n handleBatchWhite() {\n this.$confirm(this.$t('dashboard.batchWhiteConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n // 跳过文件夹\n const promises = this.selectedFiles.map(file => {\n if (file.isFolder) {\n return Promise.resolve({\n ok: false\n });\n }\n return fetchWithAuth(`/api/manage/white/${file.name}`, {\n method: 'GET'\n });\n });\n Promise.all(promises).then(results => {\n results.forEach((response, index) => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === this.selectedFiles[index].name);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata.ListType = 'White';\n }\n }\n });\n this.$message.success(this.$t('dashboard.batchWhiteSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.batchWhiteFailed')));\n }).catch(() => console.log('Batch white cancelled'));\n },\n handleBatchDownload() {\n // 将选中文件打包成 zip 文件下载\n const zip = new JSZip();\n const folder = zip.folder('files');\n // 构造Promise数组,等待所有文件下载完成后再打包\n const fileNameCount = {}; // 用于跟踪文件名出现的次数\n\n const downloadPromises = this.selectedFiles.map(async file => {\n // 跳过文件夹\n if (file.isFolder) {\n return;\n }\n const response = await fetch(this.getFileLink(file.name));\n const blob = await response.blob();\n // 检查文件名是否已经存在\n let fileName = file.metadata?.FileName || file.name;\n if (fileNameCount[fileName]) {\n // 如果已经存在,则在文件名后加上编号\n const extension = fileName.substring(fileName.lastIndexOf('.'));\n const baseName = fileName.substring(0, fileName.lastIndexOf('.'));\n fileName = `${baseName}(${fileNameCount[fileName]})${extension}`;\n fileNameCount[file.name]++;\n } else {\n // 如果不存在,则初始化为1\n fileNameCount[fileName] = 1;\n }\n // 将文件添加到 zip 文件夹中\n folder.file(fileName, blob);\n });\n Promise.all(downloadPromises).then(() => zip.generateAsync({\n type: 'blob'\n })).then(blob => {\n const link = document.createElement('a');\n link.href = URL.createObjectURL(blob);\n link.download = 'files.zip';\n link.click();\n });\n },\n isVideo(file) {\n // 排除音频文件\n if (this.isAudio(file)) return false;\n let flag = file.metadata?.FileType?.includes('video');\n // 用文件名后缀判断是否为视频文件\n if (!flag) {\n const videoExtensions = ['mp4', 'webm', 'ogg', 'avi', 'mov', 'flv', 'wmv', 'mkv', 'rmvb', '3gp', 'mpg', 'mpeg', 'm4v', 'f4v', 'rm', 'asf', 'dat', 'ts', 'vob', 'swf', 'divx', 'xvid', 'm2ts', 'mts', 'm2v', '3g2', '3gp2', '3gpp', '3gpp2', 'mpe', 'm1v', 'mpv', 'mpv2', 'mp2v', 'm2t', 'm2ts', 'm2v', 'm4v'];\n const extension = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();\n flag = videoExtensions.includes(extension);\n }\n return flag;\n },\n isAudio(file) {\n let flag = file.metadata?.FileType?.includes('audio');\n // 用文件名后缀判断是否为音频文件\n if (!flag) {\n const audioExtensions = ['mp3', 'wav', 'flac', 'aac', 'ogg', 'wma', 'm4a', 'ape', 'aiff', 'alac', 'opus', 'mid', 'midi', 'm4b', 'm4p', 'm4r', 'amr', 'au', 'ra', 'ram'];\n const extension = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();\n flag = audioExtensions.includes(extension);\n }\n return flag;\n },\n isImage(file) {\n let flag = file.metadata?.FileType?.includes('image');\n // 用文件名后缀判断是否为图片文件\n if (!flag) {\n const imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'ico', 'tiff', 'tif', 'psd', 'ai', 'eps', 'raw', 'cr2', 'nef', 'orf', 'sr2', 'dng', 'arw', 'rw2', 'raf', 'pef', 'x3f', 'srf', 'erf', 'mrw', 'nrw', 'kdc', 'dcr', 'mef', 'mos', 'crw', 'raf', 'rwl', 'srw', '3fr', 'fff', 'iiq', 'qtk', 'bay', 'k25', 'kdc', 'dcs', 'drf', 'dng', 'erf', 'kdc', 'mdc', 'mef', 'mos', 'mrw', 'nef', 'nrw', 'orf', 'pef', 'ptx', 'pxn', 'r3d', 'raf', 'raw', 'rwl', 'rw2', 'rwz', 'sr2', 'srf', 'x3f'];\n const extension = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();\n flag = imageExtensions.includes(extension);\n }\n return flag;\n },\n getFileLink(filename) {\n const fileLink = process.env.NODE_ENV === 'production' ? `/file/${filename}?from=admin` : `/api/file/${filename}?from=admin`;\n return fileLink;\n },\n handlePageChange(page) {\n this.currentPage = page;\n // 到最后一页时,加载更多数据\n if (this.currentPage === Math.ceil(this.tableData.length / this.pageSize)) {\n this.loadMoreData();\n }\n },\n isMobileViewport() {\n return window.innerWidth < 768;\n },\n updateResponsivePageSize() {\n const nextPageSize = this.isMobileViewport() ? 16 : 15;\n if (this.pageSize === nextPageSize) return;\n const firstVisibleIndex = (this.currentPage - 1) * this.pageSize;\n this.pageSize = nextPageSize;\n this.currentPage = Math.min(Math.floor(firstVisibleIndex / nextPageSize) + 1, this.realTotalPages);\n },\n isSwipeIgnoredTarget(target) {\n return Boolean(target?.closest?.('button, a, input, textarea, select, .el-checkbox, .action-btn, .list-action-btn'));\n },\n handlePageSwipeStart(event) {\n if (!this.isMobileViewport() || this.isDragging || this.loading || this.showMobileActionModal || this.showMobileDirectoryDrawer || this.isSwipeIgnoredTarget(event.target)) {\n this.resetPageSwipe();\n return;\n }\n const touch = event.touches?.[0];\n if (!touch) return;\n this.pageSwipeStartX = touch.clientX;\n this.pageSwipeStartY = touch.clientY;\n this.pageSwipeStartTime = Date.now();\n },\n async handlePageSwipeEnd(event) {\n if (this.pageSwipeStartX === null || this.pageSwipeStartY === null) return;\n const touch = event.changedTouches?.[0];\n if (!touch) {\n this.resetPageSwipe();\n return;\n }\n const deltaX = touch.clientX - this.pageSwipeStartX;\n const deltaY = touch.clientY - this.pageSwipeStartY;\n const elapsed = Date.now() - this.pageSwipeStartTime;\n this.resetPageSwipe();\n if (elapsed > 700 || Math.abs(deltaX) < 64 || Math.abs(deltaX) < Math.abs(deltaY) * 1.35) {\n return;\n }\n const targetPage = deltaX < 0 ? this.currentPage + 1 : this.currentPage - 1;\n await this.goToSwipePage(targetPage);\n },\n resetPageSwipe() {\n this.pageSwipeStartX = null;\n this.pageSwipeStartY = null;\n this.pageSwipeStartTime = 0;\n },\n async goToSwipePage(page) {\n if (page < 1 || page > this.realTotalPages || page === this.currentPage) return;\n if (page > this.totalPages) {\n await this.loadMoreDataUntilPage(page);\n return;\n }\n this.handlePageChange(page);\n },\n // 跳转到指定页码\n handleJumpPage() {\n const page = parseInt(this.jumpPage);\n if (isNaN(page) || page < 1) {\n this.$message.warning(this.$t('dashboard.invalidPageNumber'));\n return;\n }\n if (page > this.realTotalPages) {\n this.$message.warning(this.$t('dashboard.pageExceedsMax', {\n max: this.realTotalPages\n }));\n return;\n }\n // 如果目标页超过当前已加载的页数,需要先加载更多数据\n if (page > this.totalPages) {\n this.$message.info(this.$t('dashboard.loadingData'));\n this.loadMoreDataUntilPage(page);\n } else {\n this.currentPage = page;\n }\n this.jumpPage = '';\n },\n // 加载数据直到指定页\n async loadMoreDataUntilPage(targetPage) {\n this.loading = true;\n try {\n // 计算目标页需要的文件数量(不包含文件夹)\n // 目标页最后一个项目的索引 = targetPage * pageSize\n // 需要的文件数 = 目标索引 - 已有文件夹数量\n const targetIndex = targetPage * this.pageSize;\n const currentFolderCount = this.filteredTableData.filter(item => item.isFolder).length;\n const currentFileCount = this.filteredTableData.filter(item => !item.isFolder).length;\n\n // 需要加载的文件数量 = 目标位置需要的文件数 - 当前已加载的文件数\n const neededFileCount = Math.max(0, targetIndex - currentFolderCount - currentFileCount);\n if (neededFileCount > 0) {\n await fileManager.loadMoreFiles(this.currentPath, this.searchKeywords, this.searchIncludeTags, this.searchExcludeTags, neededFileCount, this.filters);\n await this.fetchFileList();\n }\n this.currentPage = Math.min(targetPage, this.totalPages);\n } catch (error) {\n this.$message.error(this.$t('dashboard.loadDataFailed'));\n } finally {\n this.loading = false;\n }\n },\n // 判断是否为文件夹\n isFolder(item) {\n // 如果是已经标记为文件夹的项目,直接返回true\n if (item.isFolder) {\n return true;\n }\n\n // 获取真实的文件路径(去除URL前缀)\n let path = item.name;\n if (path.startsWith('http')) {\n path = path.split('/file/')[1];\n }\n\n // 如果文件名包含'/',需要判断是否是当前路径下的文件\n if (path && path.includes('/')) {\n // 获取相对于当前路径的部分\n const relativePath = this.currentPath ? path.substring(this.currentPath.length) : path;\n\n // 如果在根目录,第一个斜杠前的部分就是文件夹\n if (this.currentPath === '') {\n return !path.split('/')[0].includes('.');\n }\n\n // 如果在子文件夹中,检查相对路径是否还包含其他文件夹\n return relativePath.includes('/');\n }\n return false;\n },\n // 获取文件夹名称\n getFolderName(path) {\n let folderName = '';\n // 如果是文件夹路径,只返回最后一级文件夹名\n if (path && path.includes('/')) {\n const parts = path.split('/');\n // 如果是根目录下的文件夹\n if (this.currentPath === '') {\n folderName = parts[0];\n } else {\n // 如果是子文件夹\n const relativePath = path.substring(this.currentPath.length);\n folderName = relativePath.split('/')[0];\n }\n } else {\n folderName = path;\n }\n const maxLength = 20; // Adjust max length as needed\n if (folderName.length > maxLength) {\n const startLength = Math.floor((maxLength - 3) / 2);\n const endLength = Math.ceil((maxLength - 3) / 2);\n return `${folderName.substring(0, startLength)}...${folderName.substring(folderName.length - endLength)}`;\n }\n return folderName;\n },\n // 获取文件名称(去除路径和URL前缀)\n getFileName(path) {\n let fileName = path.split('/').pop();\n const maxLength = 20; // Adjust max length as needed, ensure it fits in one line\n if (fileName.length > maxLength) {\n const startLength = Math.floor((maxLength - 3) / 2);\n const endLength = Math.ceil((maxLength - 3) / 2);\n return `${fileName.substring(0, startLength)}...${fileName.substring(fileName.length - endLength)}`;\n }\n return fileName;\n },\n // 获取文件名前半部分(用于中间省略效果)\n getFileNameStart(name) {\n if (!name) return '';\n // 如果文件名较短,返回全部\n if (name.length <= 30) return name;\n // 保留开头部分(约60%的长度用于显示前半部分)\n const dotIndex = name.lastIndexOf('.');\n if (dotIndex > 0) {\n // 有扩展名的情况:返回文件名主体部分\n const baseName = name.substring(0, dotIndex);\n const keepLength = Math.min(baseName.length, Math.floor(name.length * 0.6));\n return baseName.substring(0, keepLength);\n }\n // 无扩展名的情况\n return name.substring(0, Math.floor(name.length * 0.6));\n },\n // 获取文件名后半部分(用于中间省略效果)\n getFileNameEnd(name) {\n if (!name) return '';\n // 如果文件名较短,返回空\n if (name.length <= 30) return '';\n // 保留末尾部分(包含扩展名)\n const dotIndex = name.lastIndexOf('.');\n if (dotIndex > 0) {\n // 有扩展名的情况:返回最后几个字符 + 扩展名\n const ext = name.substring(dotIndex);\n const baseName = name.substring(0, dotIndex);\n const keepLength = Math.min(8, Math.floor(baseName.length * 0.2));\n return '…' + baseName.substring(baseName.length - keepLength) + ext;\n }\n // 无扩展名的情况\n const keepLength = Math.min(10, Math.floor(name.length * 0.3));\n return '…' + name.substring(name.length - keepLength);\n },\n // 进入文件夹\n enterFolder(folderPath) {\n this.currentPage = 1;\n // 确保路径末尾有 '/'\n this.currentPath = folderPath + (folderPath.endsWith('/') ? '' : '/');\n // 刷新文件列表,到指定currentPath下\n this.refreshFileList();\n },\n // 导航到指定文件夹\n navigateToFolder(path) {\n this.currentPage = 1;\n // 确保空路径时不添加 '/'\n this.currentPath = path ? path + (path.endsWith('/') ? '' : '/') : '';\n // 刷新文件列表,到指定currentPath下\n this.refreshFileList();\n },\n // 获取文件列表\n async fetchFileList() {\n this.loading = true;\n try {\n // 从本地存储获取数据\n const data = fileManager.getLocalFileList();\n\n // 解析返回的数据\n const folders = new Set(data.directories || []);\n const files = data.files || [];\n\n // 处理文件夹数据\n const folderItems = Array.from(folders).map(folder => ({\n name: folder,\n isFolder: true,\n selected: false,\n metadata: {\n FileName: folder.split('/').pop()\n }\n }));\n\n // 处理文件数据\n const fileItems = files.map(file => ({\n name: file.name,\n isFolder: false,\n selected: false,\n metadata: file.metadata\n }));\n\n // 更新表格数据\n this.tableData = [...folderItems, ...fileItems];\n\n // 更新统计信息\n this.updateStats(data.totalCount, true);\n\n // 更新直接文件和文件夹数量\n this.directFileCount = data.directFileCount || 0;\n this.directFolderCount = data.directFolderCount || 0;\n } catch (error) {\n console.error('Error fetching file list:', error);\n this.$message.error(this.$t('dashboard.fetchFileListFailed'));\n } finally {\n this.loading = false;\n }\n },\n // 刷新文件列表\n async refreshFileList() {\n this.refreshLoading = true;\n this.loading = true;\n try {\n // 传递标签参数和筛选参数到后端\n const success = await fileManager.refreshFileList(this.currentPath, this.searchKeywords, this.searchIncludeTags, this.searchExcludeTags, this.filters);\n if (success) {\n await this.fetchFileList();\n } else {\n throw new Error('Refresh failed');\n }\n } catch (error) {\n // 认证失败由 fetchWithAuth 统一处理跳转,不重复提示\n if (!error.message?.includes('Unauthorized') && this.$store.state.adminLoggedIn) {\n console.error('Error refreshing file list:', error);\n this.$message.error(this.$t('dashboard.refreshFailed'));\n }\n } finally {\n this.refreshLoading = false;\n this.loading = false;\n }\n },\n // 刷新本地文件列表\n async refreshLocalFileList() {\n this.refreshLoading = true;\n this.loading = true;\n try {\n await this.fetchFileList();\n } catch (error) {\n console.error('Error refreshing local file list:', error);\n this.$message.error(this.$t('dashboard.refreshFailed'));\n } finally {\n this.refreshLoading = false;\n this.loading = false;\n }\n },\n // Tag management methods\n handleTagManagement(fileId) {\n this.currentTagFile = fileId;\n this.showTagDialog = true;\n },\n handleBatchTagManagement() {\n if (this.selectedFiles.length === 0) {\n this.$message.warning(this.$t('dashboard.selectFilesFirst'));\n return;\n }\n this.showBatchTagDialog = true;\n },\n async handleTagsUpdated(tags) {\n // 更新本地文件数据中的标签\n const fileIndex = this.tableData.findIndex(file => file.name === this.currentTagFile);\n if (fileIndex !== -1) {\n // 更新 tableData 中的标签\n if (!this.tableData[fileIndex].metadata) {\n this.tableData[fileIndex].metadata = {};\n }\n this.tableData[fileIndex].metadata.Tags = tags;\n\n // 如果详情对话框正在显示这个文件,也更新详情数据\n if (this.showdetailDialog && this.detailFile?.name === this.currentTagFile) {\n if (!this.detailFile.metadata) {\n this.detailFile.metadata = {};\n }\n this.detailFile.metadata.Tags = tags;\n }\n }\n },\n async handleBatchTagsUpdated() {\n // 刷新文件列表以显示更新后的标签\n await this.refreshLocalFileList();\n },\n handleMetadataUpdated(fileId, updatedMetadata) {\n // 更新 tableData 中对应文件的 metadata\n const fileIndex = this.tableData.findIndex(f => f.name === fileId);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata = {\n ...this.tableData[fileIndex].metadata,\n ...updatedMetadata\n };\n }\n // 如果 detailFile 正在显示该文件,同步更新 detailFile\n if (this.detailFile && this.detailFile.name === fileId) {\n this.detailFile.metadata = {\n ...this.detailFile.metadata,\n ...updatedMetadata\n };\n }\n },\n handleFileRenamed(oldFileId, newFileId, updatedMetadata) {\n // 更新 tableData 中对应文件的 name(File_ID)和 metadata\n const fileIndex = this.tableData.findIndex(f => f.name === oldFileId);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].name = newFileId;\n this.tableData[fileIndex].metadata = {\n ...this.tableData[fileIndex].metadata,\n ...updatedMetadata\n };\n }\n // 更新 detailFile 引用并关闭/重新打开详情弹窗以刷新链接\n if (this.detailFile && this.detailFile.name === oldFileId) {\n this.detailFile.name = newFileId;\n this.detailFile.metadata = {\n ...this.detailFile.metadata,\n ...updatedMetadata\n };\n // 关闭详情弹窗,然后在下一个 tick 重新打开以刷新所有链接\n this.showdetailDialog = false;\n this.$nextTick(() => {\n this.showdetailDialog = true;\n });\n }\n },\n // 生成单个文件链接\n generateFileLink(key, metadata) {\n const isExternal = metadata?.Channel === 'External';\n const baseUrl = isExternal ? metadata?.ExternalLink : `${this.rootUrl}${key}`;\n const fileName = metadata?.FileName || key;\n switch (this.defaultUrlFormat) {\n case 'originUrl':\n return baseUrl;\n case 'mdUrl':\n return `![${fileName}](${baseUrl})`;\n case 'htmlUrl':\n return `\"${fileName}\"`;\n case 'bbUrl':\n return `[img]${baseUrl}[/img]`;\n case 'tgId':\n return metadata?.TgFileId || '';\n case 's3Location':\n return metadata?.S3Location || '';\n default:\n return baseUrl;\n }\n },\n // 复制文件夹中所有文件的链接\n async handleFolderCopy(folderName) {\n // 显示加载状态\n const loading = this.$loading({\n lock: true,\n text: this.$t('dashboard.fetchingFileList')\n });\n try {\n // 调用 list API 递归获取文件夹内所有文件\n const response = await fetchWithAuth(`/api/manage/list?dir=${encodeURIComponent(folderName)}&recursive=true&count=-1`, {\n method: 'GET'\n });\n const data = await response.json();\n loading.close();\n if (!data.files || data.files.length === 0) {\n this.$message.warning(this.$t('dashboard.folderEmptyNoLinks'));\n return;\n }\n\n // 根据当前链接格式生成所有文件链接\n const links = data.files.map(file => {\n return this.generateFileLink(file.name, file.metadata);\n }).filter(link => link);\n if (links.length === 0) {\n this.$message.warning(this.$t('dashboard.noLinksAvailable'));\n return;\n }\n\n // 复制到剪贴板\n const text = links.join('\\n');\n if (navigator.clipboard) {\n await navigator.clipboard.writeText(text);\n this.$message.success(this.$t('dashboard.copiedFileLinks', {\n count: links.length\n }));\n } else {\n this.copyToClipboardFallback(text);\n this.$message.success(this.$t('dashboard.copiedFileLinks', {\n count: links.length\n }));\n }\n } catch (error) {\n loading.close();\n console.error('Copy folder links failed:', error);\n this.$message.error(this.$t('dashboard.copyFolderLinksFailed'));\n }\n }\n },\n mounted() {\n // 初始化背景图\n this.initializeBackground('adminBkImg', '.container', false, true);\n this.updateResponsivePageSize();\n window.addEventListener('resize', this.updateResponsivePageSize);\n this.loading = true;\n // 路由守卫已通过 /api/auth/sessionCheck 验证认证状态\n this.showLogoutButton = this.$store.state.adminLoggedIn;\n // 首次加载时刷新文件列表\n this.refreshFileList().then(() => {\n // 获取所有渠道名称\n return this.extractChannelNames();\n }).catch(err => {\n if (err.message !== 'Unauthorized') {\n this.$message.error(this.$t('dashboard.syncDataError'));\n }\n }).finally(() => {\n this.loading = false;\n });\n\n // 读取自定义链接设置项\n this.customUrlPrefix = this.adminUrlSettings.customUrlPrefix;\n this.useCustomUrl = this.adminUrlSettings.useCustomUrl;\n\n // 恢复视图模式偏好\n const savedViewMode = localStorage.getItem('viewMode');\n if (savedViewMode === 'card' || savedViewMode === 'list') {\n this.viewMode = savedViewMode;\n }\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.updateResponsivePageSize);\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./AdminDashBoard.vue?vue&type=template&id=84ee336e&scoped=true\"\nimport script from \"./AdminDashBoard.vue?vue&type=script&lang=js\"\nexport * from \"./AdminDashBoard.vue?vue&type=script&lang=js\"\n\nimport \"@/styles/settings-dialog.css?vue&type=style&index=0&lang=css&external\"\nimport \"@/styles/admin-common.css?vue&type=style&index=1&id=84ee336e&scoped=true&lang=css&external\"\nimport \"./AdminDashBoard.vue?vue&type=style&index=2&id=84ee336e&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-84ee336e\"]])\n\nexport default __exports__","import { renderSlot as _renderSlot, withModifiers as _withModifiers, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createBlock as _createBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, Fragment as _Fragment } from \"vue\";\nconst _hoisted_1 = {\n class: \"directory-tree-picker\"\n};\nconst _hoisted_2 = {\n class: \"tree-container\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_4 = {\n class: \"error-text\"\n};\nconst _hoisted_5 = {\n class: \"node-label\"\n};\nconst _hoisted_6 = {\n class: \"tree-container\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_8 = {\n class: \"error-text\"\n};\nconst _hoisted_9 = {\n class: \"node-label\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tree = _resolveComponent(\"el-tree\");\n const _component_el_popover = _resolveComponent(\"el-popover\");\n const _component_el_drawer = _resolveComponent(\"el-drawer\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [$options.isDesktop ? (_openBlock(), _createBlock(_component_el_popover, {\n key: 0,\n visible: $data.popoverVisible,\n \"onUpdate:visible\": _cache[1] || (_cache[1] = $event => $data.popoverVisible = $event),\n placement: \"bottom-start\",\n width: 320,\n trigger: \"click\",\n \"popper-class\": \"directory-tree-popover\",\n \"show-arrow\": true,\n \"hide-after\": 0,\n \"show-after\": 50,\n transition: \"el-zoom-in-top\"\n }, {\n reference: _withCtx(() => [_createElementVNode(\"span\", {\n class: \"popover-trigger-wrapper\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"]))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)])]),\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_2, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_4, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRef\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_5, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 3\n }, 8, [\"visible\"])) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createElementVNode(\"span\", {\n class: \"drawer-trigger-wrapper\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.openDrawer && $options.openDrawer(...args))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)]), _createVNode(_component_el_drawer, {\n modelValue: $data.drawerVisible,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.drawerVisible = $event),\n direction: \"btt\",\n size: \"60%\",\n \"show-close\": true,\n \"with-header\": true,\n \"z-index\": 3000,\n title: _ctx.$t('directoryTree.selectDirectory'),\n class: \"directory-tree-drawer\"\n }, {\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_6, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_8, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRefMobile\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree mobile-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_9, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 1\n }, 8, [\"modelValue\", \"title\"])], 64))]);\n}","import axios from '@/utils/axios';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'DirectoryTreePicker',\n props: {\n currentDirectory: {\n type: String,\n default: ''\n },\n source: {\n type: String,\n default: 'upload',\n validator: value => ['upload', 'admin'].includes(value)\n }\n },\n data() {\n return {\n popoverVisible: false,\n drawerVisible: false,\n treeData: [],\n loading: false,\n error: '',\n treeProps: {\n children: 'children',\n label: 'name'\n },\n windowWidth: window.innerWidth\n };\n },\n computed: {\n isDesktop() {\n return this.windowWidth >= 769;\n }\n },\n watch: {\n popoverVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 弹窗关闭后延迟折叠所有节点,避免下次打开时出现折叠动画\n setTimeout(() => {\n if (!this.popoverVisible && this.$refs.treeRef) {\n const store = this.$refs.treeRef.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 200);\n }\n },\n drawerVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 抽屉关闭后延迟折叠所有节点\n setTimeout(() => {\n if (!this.drawerVisible && this.$refs.treeRefMobile) {\n const store = this.$refs.treeRefMobile.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 300);\n }\n },\n currentDirectory(newVal) {\n this.$nextTick(() => {\n if (this.$refs.treeRef && newVal) {\n this.$refs.treeRef.setCurrentKey(newVal);\n }\n if (this.$refs.treeRefMobile && newVal) {\n this.$refs.treeRefMobile.setCurrentKey(newVal);\n }\n });\n }\n },\n mounted() {\n window.addEventListener('resize', this.handleResize);\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.handleResize);\n },\n methods: {\n handleResize() {\n this.windowWidth = window.innerWidth;\n },\n openDrawer() {\n this.drawerVisible = true;\n },\n async fetchDirectoryTree() {\n this.loading = true;\n this.error = '';\n try {\n let data;\n if (this.source === 'admin') {\n const response = await fetchWithAuth('/api/directoryTree', {\n method: 'GET'\n });\n if (!response.ok) {\n if (response.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.serverError');\n }\n return;\n }\n data = await response.json();\n } else {\n const response = await axios.get('/api/directoryTree', {\n withAuthCode: true\n });\n data = response.data;\n }\n if (data.tree) {\n this.treeData = [data.tree];\n } else {\n this.treeData = [];\n }\n } catch (err) {\n console.error('Failed to fetch directory tree:', err);\n if (err.response?.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.loadFailed');\n }\n } finally {\n this.loading = false;\n }\n },\n handleNodeClick(data) {\n let path = data.path;\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n } else if (!path) {\n path = '/';\n }\n this.$emit('select', path);\n this.popoverVisible = false;\n this.drawerVisible = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DirectoryTreePicker.vue?vue&type=template&id=62eab69a&scoped=true\"\nimport script from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\nexport * from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\n\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=0&id=62eab69a&scoped=true&lang=css\"\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=1&id=62eab69a&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-62eab69a\"]])\n\nexport default __exports__","/*!\n\nJSZip v3.10.1 - A JavaScript class for generating and reading zip files\n\n\n(c) 2009-2016 Stuart Knightley \nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/main/LICENSE\n*/\n\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=e()}}(function(){return function s(a,o,h){function u(r,e){if(!o[r]){if(!a[r]){var t=\"function\"==typeof require&&require;if(!e&&t)return t(r,!0);if(l)return l(r,!0);var n=new Error(\"Cannot find module '\"+r+\"'\");throw n.code=\"MODULE_NOT_FOUND\",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return u(t||e)},i,i.exports,s,a,o,h)}return o[r].exports}for(var l=\"function\"==typeof require&&require,e=0;e>2,s=(3&t)<<4|r>>4,a=1>6:64,o=2>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),l[h++]=t,64!==s&&(l[h++]=r),64!==a&&(l[h++]=n);return l}},{\"./support\":30,\"./utils\":32}],2:[function(e,t,r){\"use strict\";var n=e(\"./external\"),i=e(\"./stream/DataWorker\"),s=e(\"./stream/Crc32Probe\"),a=e(\"./stream/DataLengthProbe\");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a(\"data_length\")),t=this;return e.on(\"end\",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a(\"uncompressedSize\")).pipe(t.compressWorker(r)).pipe(new a(\"compressedSize\")).withStreamInfo(\"compression\",t)},t.exports=o},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(e,t,r){\"use strict\";var n=e(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(){return new n(\"STORE compression\")},uncompressWorker:function(){return new n(\"STORE decompression\")}},r.DEFLATE=e(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(e,t,r){\"use strict\";var n=e(\"./utils\");var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?\"string\"!==n.getTypeOf(e)?function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}(0|t,e,e.length,0):function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t.charCodeAt(a))];return-1^e}(0|t,e,e.length,0):0}},{\"./utils\":32}],5:[function(e,t,r){\"use strict\";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){\"use strict\";var n=null;n=\"undefined\"!=typeof Promise?Promise:e(\"lie\"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,i=e(\"pako\"),s=e(\"./utils\"),a=e(\"./stream/GenericWorker\"),o=n?\"uint8array\":\"array\";function h(e,t){a.call(this,\"FlateWorker/\"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic=\"\\b\\0\",s.inherits(h,a),h.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new h(\"Deflate\",e)},r.uncompressWorker=function(){return new h(\"Inflate\",{})}},{\"./stream/GenericWorker\":28,\"./utils\":32,pako:38}],8:[function(e,t,r){\"use strict\";function A(e,t){var r,n=\"\";for(r=0;r>>=8;return n}function n(e,t,r,n,i,s){var a,o,h=e.file,u=e.compression,l=s!==O.utf8encode,f=I.transformTo(\"string\",s(h.name)),c=I.transformTo(\"string\",O.utf8encode(h.name)),d=h.comment,p=I.transformTo(\"string\",s(d)),m=I.transformTo(\"string\",O.utf8encode(d)),_=c.length!==h.name.length,g=m.length!==d.length,b=\"\",v=\"\",y=\"\",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),\"UNIX\"===i?(C=798,z|=function(e,t){var r=e;return e||(r=t?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(e){return 63&(e||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+c,b+=\"up\"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+=\"uc\"+A(y.length,2)+y);var E=\"\";return E+=\"\\n\\0\",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+\"\\0\\0\\0\\0\"+A(z,4)+A(n,4)+f+b+p}}var I=e(\"../utils\"),i=e(\"../stream/GenericWorker\"),O=e(\"../utf8\"),B=e(\"../crc32\"),R=e(\"../signature\");function s(e,t,r,n){i.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}I.inherits(s,i),s.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,i.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},s.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},s.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:function(e){return R.DATA_DESCRIPTOR+A(e.crc32,4)+A(e.compressedSize,4)+A(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},s.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo(\"string\",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{\"../utils\":32}],19:[function(e,t,r){\"use strict\";var n=e(\"./Uint8ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],21:[function(e,t,r){\"use strict\";var n=e(\"./ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../support\"),s=e(\"./ArrayReader\"),a=e(\"./StringReader\"),o=e(\"./NodeBufferReader\"),h=e(\"./Uint8ArrayReader\");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),\"string\"!==t||i.uint8array?\"nodebuffer\"===t?new o(e):i.uint8array?new h(n.transformTo(\"uint8array\",e)):new s(n.transformTo(\"array\",e)):new a(e)}},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(e,t,r){\"use strict\";r.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",r.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",r.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",r.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",r.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],24:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../utils\");function s(e){n.call(this,\"ConvertWorker to \"+e),this.destType=e}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../crc32\");function s(){n.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}e(\"../utils\").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataLengthProbe for \"+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataWorker\");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":e=this.data.substring(this.index,t);break;case\"uint8array\":e=this.data.subarray(this.index,t);break;case\"array\":case\"nodebuffer\":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(e,t,r){\"use strict\";function n(e){this.name=e||\"default\",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(e){this.emit(\"data\",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit(\"error\",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit(\"error\",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r \"+e:e}},t.exports=n},{}],29:[function(e,t,r){\"use strict\";var h=e(\"../utils\"),i=e(\"./ConvertWorker\"),s=e(\"./GenericWorker\"),u=e(\"../base64\"),n=e(\"../support\"),a=e(\"../external\"),o=null;if(n.nodestream)try{o=e(\"../nodejs/NodejsStreamOutputAdapter\")}catch(e){}function l(e,o){return new a.Promise(function(t,r){var n=[],i=e._internalType,s=e._outputType,a=e._mimeType;e.on(\"data\",function(e,t){n.push(e),o&&o(t)}).on(\"error\",function(e){n=[],r(e)}).on(\"end\",function(){try{var e=function(e,t,r){switch(e){case\"blob\":return h.newBlob(h.transformTo(\"arraybuffer\",t),r);case\"base64\":return u.encode(t);default:return h.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return h.nodebuffer?o.transformTo(\"nodebuffer\",e).toString(\"utf-8\"):function(e){var t,r,n,i,s=e.length,a=new Array(2*s);for(t=r=0;t>10&1023,a[r++]=56320|1023&n)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(e=o.transformTo(h.uint8array?\"uint8array\":\"array\",e))},o.inherits(a,n),a.prototype.processChunk=function(e){var t=o.transformTo(h.uint8array?\"uint8array\":\"array\",e.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}(t),i=t;n!==t.length&&(h.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(l,n),l.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta})},s.Utf8EncodeWorker=l},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(e,t,a){\"use strict\";var o=e(\"./support\"),h=e(\"./base64\"),r=e(\"./nodejsUtils\"),u=e(\"./external\");function n(e){return e}function l(e,t){for(var r=0;r>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return l(e,e.length)},r.binstring2buf=function(e){for(var t=new h.Buf8(e.length),r=0,n=t.length;r>10&1023,o[n++]=56320|1023&i)}return l(o,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}},{\"./common\":41}],43:[function(e,t,r){\"use strict\";t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}},{}],46:[function(e,t,r){\"use strict\";var h,c=e(\"../utils/common\"),u=e(\"./trees\"),d=e(\"./adler32\"),p=e(\"./crc32\"),n=e(\"./messages\"),l=0,f=4,m=0,_=-2,g=-1,b=4,i=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(e,t){return e.msg=n[t],t}function T(e){return(e<<1)-(4e.avail_out&&(r=e.avail_out),0!==r&&(c.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function N(e,t){u._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,F(e.strm)}function U(e,t){e.pending_buf[e.pending++]=t}function P(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function L(e,t){var r,n,i=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,h=e.strstart>e.w_size-z?e.strstart-(e.w_size-z):0,u=e.window,l=e.w_mask,f=e.prev,c=e.strstart+S,d=u[s+a-1],p=u[s+a];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(u[(r=t)+a]===p&&u[r+a-1]===d&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&sh&&0!=--i);return a<=e.lookahead?a:e.lookahead}function j(e){var t,r,n,i,s,a,o,h,u,l,f=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=f+(f-z)){for(c.arraySet(e.window,e.window,f,f,0),e.match_start-=f,e.strstart-=f,e.block_start-=f,t=r=e.hash_size;n=e.head[--t],e.head[t]=f<=n?n-f:0,--r;);for(t=r=f;n=e.prev[--t],e.prev[t]=f<=n?n-f:0,--r;);i+=f}if(0===e.strm.avail_in)break;if(a=e.strm,o=e.window,h=e.strstart+e.lookahead,u=i,l=void 0,l=a.avail_in,u=x)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x)if(n=u._tr_tally(e,e.strstart-e.match_start,e.match_length-x),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=x){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-x,n=u._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-x),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(j(e),0===e.lookahead&&t===l)return A;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,N(e,!1),0===e.strm.avail_out))return A;if(e.strstart-e.block_start>=e.w_size-z&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):(e.strstart>e.block_start&&(N(e,!1),e.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(e,t){return Y(e,t,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?_:(e.state.gzhead=t,m):_},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5>8&255),U(n,n.gzhead.time>>16&255),U(n,n.gzhead.time>>24&255),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(U(n,255&n.gzhead.extra.length),U(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(U(n,0),U(n,0),U(n,0),U(n,0),U(n,0),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,3),n.status=E);else{var a=v+(n.w_bits-8<<4)<<8;a|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=32),a+=31-a%31,n.status=E,P(n,a),0!==n.strstart&&(P(n,e.adler>>>16),P(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending!==n.pending_buf_size));)U(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&F(e),n.pending+2<=n.pending_buf_size&&(U(n,255&e.adler),U(n,e.adler>>8&255),e.adler=0,n.status=E)):n.status=E),0!==n.pending){if(F(e),0===e.avail_out)return n.last_flush=-1,m}else if(0===e.avail_in&&T(t)<=T(r)&&t!==f)return R(e,-5);if(666===n.status&&0!==e.avail_in)return R(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==l&&666!==n.status){var o=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(j(e),0===e.lookahead)){if(t===l)return A;break}if(e.match_length=0,r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=S){if(j(e),e.lookahead<=S&&t===l)return A;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=x&&0e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=x?(r=u._tr_tally(e,1,e.match_length-x),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):h[n.level].func(n,t);if(o!==O&&o!==B||(n.status=666),o===A||o===O)return 0===e.avail_out&&(n.last_flush=-1),m;if(o===I&&(1===t?u._tr_align(n):5!==t&&(u._tr_stored_block(n,0,0,!1),3===t&&(D(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),F(e),0===e.avail_out))return n.last_flush=-1,m}return t!==f?m:n.wrap<=0?1:(2===n.wrap?(U(n,255&e.adler),U(n,e.adler>>8&255),U(n,e.adler>>16&255),U(n,e.adler>>24&255),U(n,255&e.total_in),U(n,e.total_in>>8&255),U(n,e.total_in>>16&255),U(n,e.total_in>>24&255)):(P(n,e.adler>>>16),P(n,65535&e.adler)),F(e),0=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new c.Buf8(r.w_size),c.arraySet(u,t,l-r.w_size,r.w_size,0),t=u,l=r.w_size),a=e.avail_in,o=e.next_in,h=e.input,e.avail_in=l,e.next_in=0,e.input=t,j(r);r.lookahead>=x;){for(n=r.strstart,i=r.lookahead-(x-1);r.ins_h=(r.ins_h<>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else{if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(d&(1<>>=y,p-=y),p<15&&(d+=z[n++]<>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(d&(1<>>=y,p-=y,(y=s-a)>3,d&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new I.Buf32(n),t.distcode=t.distdyn=new I.Buf32(i),t.sane=1,t.back=-1,N):U}function o(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,a(e)):U}function h(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=s.wsize?(I.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),I.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(I.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg=\"incorrect header check\",r.mode=30;break}if(8!=(15&u)){e.msg=\"unknown compression method\",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>>8&255,r.check=B(r.check,E,2,0)),l=u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(d=r.length)&&(d=o),d&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,n,s,d,k)),512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,r.length-=d),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&d>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break e;o--,u+=n[s++]<>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;u>>>=2,l-=2;break e;case 2:r.mode=17;break;case 3:e.msg=\"invalid block type\",r.mode=30}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break e;o--,u+=n[s++]<>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(d=r.length){if(o>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286>>=3,l-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=_,l-=_,r.lens[r.have++]=b;else{if(16===b){for(z=_+2;l>>=_,l-=_,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=30;break}k=r.lens[r.have-1],d=3+(3&u),u>>>=2,l-=2}else if(17===b){for(z=_+3;l>>=_)),u>>>=3,l-=3}else{for(z=_+7;l>>=_)),u>>>=7,l-=7}if(r.have+d>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=30;break}for(;d--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=o&&258<=h){e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,R(e,c),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,64&g){e.msg=\"invalid distance code\",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===h)break e;if(d=c-h,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break}p=d>r.wnext?(d-=r.wnext,r.wsize-d):r.wnext-d,d>r.length&&(d=r.length),m=r.window}else m=i,p=a-r.offset,d=r.length;for(hd?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=t[r+a[v]]}if(k>>7)]}function U(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function P(e,t,r){e.bi_valid>d-r?(e.bi_buf|=t<>d-e.bi_valid,e.bi_valid+=r-d):(e.bi_buf|=t<>>=1,r<<=1,0<--t;);return r>>>1}function Z(e,t,r){var n,i,s=new Array(g+1),a=0;for(n=1;n<=g;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=j(s[o]++,o))}}function W(e){var t;for(t=0;t>1;1<=r;r--)G(e,s,r);for(i=h;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],G(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,G(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,a,o,h=t.dyn_tree,u=t.max_code,l=t.stat_desc.static_tree,f=t.stat_desc.has_stree,c=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=g;s++)e.bl_count[s]=0;for(h[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)p<(s=h[2*h[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),h[2*n+1]=s,u>=7;n>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return o;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return h;for(t=32;t>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?J(e,t,r,n):4===e.strategy||s===i?(P(e,2+(n?1:0),3),K(e,z,C)):(P(e,4+(n?1:0),3),function(e,t,r,n){var i;for(P(e,t-257,5),P(e,r-1,5),P(e,n-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(A[r]+u+1)]++,e.dyn_dtree[2*N(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){P(e,2,3),L(e,m,z),function(e){16===e.bi_valid?(U(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{\"../utils/common\":41}],53:[function(e,t,r){\"use strict\";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){(function(e){!function(r,n){\"use strict\";if(!r.setImmediate){var i,s,t,a,o=1,h={},u=!1,l=r.document,e=Object.getPrototypeOf&&Object.getPrototypeOf(r);e=e&&e.setTimeout?e:r,i=\"[object process]\"==={}.toString.call(r.process)?function(e){process.nextTick(function(){c(e)})}:function(){if(r.postMessage&&!r.importScripts){var e=!0,t=r.onmessage;return r.onmessage=function(){e=!1},r.postMessage(\"\",\"*\"),r.onmessage=t,e}}()?(a=\"setImmediate$\"+Math.random()+\"$\",r.addEventListener?r.addEventListener(\"message\",d,!1):r.attachEvent(\"onmessage\",d),function(e){r.postMessage(a+e,\"*\")}):r.MessageChannel?((t=new MessageChannel).port1.onmessage=function(e){c(e.data)},function(e){t.port2.postMessage(e)}):l&&\"onreadystatechange\"in l.createElement(\"script\")?(s=l.documentElement,function(e){var t=l.createElement(\"script\");t.onreadystatechange=function(){c(e),t.onreadystatechange=null,s.removeChild(t),t=null},s.appendChild(t)}):function(e){setTimeout(c,0,e)},e.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r | 空格 ( ) [ ] { } # % ^ ` ~ ; @ & = + $ ,\r\n const invalidChars = /[\\\\:\\*\\?\"'<>\\| \\(\\)\\[\\]\\{\\}#%\\^`~;@&=\\+\\$,]/;\r\n if (invalidChars.test(path)) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.invalidCharacters') \r\n };\r\n }\r\n \r\n return { valid: true };\r\n}\r\n"],"names":["_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","key","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","render","_ctx","_cache","$props","$setup","$data","$options","_component_el_input","_component_font_awesome_icon","_component_el_button","_component_DirectoryTreePicker","_component_el_dialog","_component_el_tree","_component_el_drawer","_directive_loading","isDesktop","modelValue","dialogVisible","$event","title","isBatchMove","$t","width","onClose","handleClose","footer","onClick","default","_","type","loading","handleConfirm","targetPath","placeholder","prepend","currentDirectory","source","onSelect","handleDirectorySelect","trigger","icon","direction","size","showTreePicker","text","treeError","fetchDirectoryTree","ref","data","treeData","props","treeProps","onNodeClick","handleTreeNodeClick","node","path","expanded","name","treeLoading","components","DirectoryTreePicker","Boolean","String","initialPath","emits","windowWidth","window","innerWidth","children","label","computed","get","this","set","val","$emit","watch","newVal","mounted","addEventListener","handleResize","beforeUnmount","removeEventListener","methods","response","fetchWithAuth","method","ok","status","json","tree","err","console","error","startsWith","__exports__","to","args","close","active","currentPath","navigate","pathParts","folder","index","length","style","paddingLeft","slice","join","goBack","split","filter","isFolder","handleAction","action","_component_el_tag","_component_el_tab_pane","_component_el_alert","_component_el_tabs","visible","dialogWidth","activeTab","count","fileCount","inputTag","onKeyup","handleAddInputTag","onInput","handleInputChange","clearable","append","showSuggestions","suggestions","tag","selectSuggestion","tagsToAdd","closable","removeFromToAdd","executeAddTags","disabled","commonTags","handleRemoveCommonTag","description","center","handleClearAllTags","selectedFiles","Array","required","debounceTimer","selectedFilesOnly","file","fileIds","map","loadCommonTags","resetData","newTab","tagPromises","encodeURIComponent","responses","Promise","all","allTags","push","tags","every","includes","clearTimeout","trim","setTimeout","fetchSuggestions","prefix","toLowerCase","warning","indexOf","splice","headers","body","JSON","stringify","Error","success","updated","confirm","confirmButtonText","cancelButtonText","then","executeClearTags","catch","info","_component_Loading","_component_el_icon","handleAddTag","currentTags","handleRemoveTag","popularTags","handleAddPopularTag","loadingPopularTags","Loading","fileId","loadFileTags","loadPopularTags","message","_component_el_image","_component_el_descriptions_item","_component_el_descriptions","_component_el_form_item","_component_el_form","isEditing","round","startEdit","openRenameDialog","saveMetadata","editSaving","cancelEdit","onTabClick","handleTabClick","urls","originUrl","readonly","handleUrlClick","mdUrl","htmlUrl","bbUrl","metadata","TgFileId","tgId","S3Location","S3CdnFileUrl","isVideo","src","fileLink","autoplay","muted","loop","openImageLink","isAudio","controls","isImage","fit","lazy","border","column","descColumn","editForm","FileName","FileType","fileSizeDisplay","imageDimensions","Width","Height","orientationIcon","uploadTime","Channel","ChannelName","accessTagType","accessType","Label","UploadIP","UploadAddress","Tags","showRenameDialog","closeRenameDialog","submitRename","renameSaving","renameValidation","valid","onSubmit","renameForm","newFileId","validateRenameInput","INVALID_CHARS","validateFileId","currentFileId","test","Object","fileType","endsWith","TimeStamp","Date","toLocaleString","listType","ListType","height","ratio","sizeBytes","FileSizeBytes","sizeMB","FileSize","toFixed","handleVideoClick","e","video","target","paused","play","pause","input","select","navigator","clipboard","writeText","value","open","result","oldFileId","_component_el_tooltip","selectedCount","disableTooltip","content","placement","handleClear","actions","command","className","Number","_component_el_checkbox","onTouchstart","onTouchend","onTouchmove","localSelected","onChange","handleSelectChange","handlePreviewClick","preload","decoding","displayName","fileNameStart","fileNameEnd","item","tagIndex","background","getTagColor","channelTag","uploadDate","selected","tagColors","parts","getFileName","uploaded","toLocaleDateString","_component_el_card","videoLoading","videoError","onMouseenter","handleVideoHover","onMouseleave","onFullscreenchange","handleFullscreenChange","onWebkitfullscreenchange","onLoadeddata","onError","handleVideoError","previewSrcList","fileName","requestFullscreen","webkitRequestFullscreen","mozRequestFullScreen","msRequestFullscreen","isFullscreen","document","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","currentTime","isEnter","folderName","showActions","i","validator","variant","checked","indeterminate","role","ariaChecked","tabindex","handleClick","onKeydown","markIcon","event","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_component_el_badge","_component_el_checkbox_group","_component_el_dropdown_menu","_component_el_dropdown","dropdown","localFilters","accessStatus","handleFilterChange","accessStatusOptions","option","listTypeOptions","labelOptions","fileTypeOptions","channel","channelOptions","channelNameOptions","channelName","groupedChannelNames","group","typeLabel","channels","clearFilters","activeFilterCount","hidden","filters","values","reduce","arr","groups","forEach","handler","newFilters","isArray","immediate","deep","viewBox","d","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_42","_hoisted_43","_hoisted_44","_hoisted_45","_hoisted_46","_hoisted_47","_hoisted_48","_hoisted_49","_hoisted_50","_hoisted_51","_hoisted_52","_hoisted_53","_hoisted_54","_hoisted_55","_hoisted_56","_component_DashboardTabs","_component_FilterDropdown","_component_el_header","_component_DashboardCheckbox","_component_el_radio_button","_component_el_radio_group","_component_el_divider","_component_el_dropdown_item","_component_el_breadcrumb_item","_component_el_breadcrumb","_component_SkeletonLoader","_component_FolderCard","_component_FileCard","_component_FileListItem","_component_el_pagination","_component_el_main","_component_el_container","_component_BatchActionBar","_component_FileDetailDialog","_component_el_radio","_component_el_switch","_component_TagManagementDialog","_component_BatchTagDialog","_component_MobileActionSheet","_component_MobileDirectoryDrawer","_component_MoveFileDialog","tempSearch","handleSearch","suffix","showUrlDialog","handleLogout","selectPage","selectedPageFiles","handleSelectPage","viewMode","setViewMode","onCommand","setSortField","sortOrder","setSortOrder","sortField","sortLabel","cx","cy","r","showMobileDirectoryDrawer","pop","separator","navigateToFolder","isDragging","onTouchstartPassive","handlePageSwipeStart","onTouchendPassive","handlePageSwipeEnd","onTouchcancelPassive","resetPageSwipe","pageSize","paginatedTableData","hasSearchOrFilter","isSearchMode","onEnter","enterFolder","onCopy","handleFolderCopy","onMove","handleMove","onDelete","handleDelete","handleFolderTouchStart","handleTouchEnd","getFileLink","onDetail","openDetailDialog","handleCopy","onDownload","handleDownload","handleTouchStart","isSelectAll","isIndeterminate","handleSelectAllPage","onFolderCopy","position","left","selectionRect","top","layout","total","filteredTableData","currentPage","pagerCount","onCurrentChange","handlePageChange","refreshFileList","refreshLoading","Math","ceil","loadMoreData","realTotalPages","jumpPage","handleJumpPage","onAction","handleBatchAction","onClear","clearSelection","showdetailDialog","detailFile","allUrl","onTagManagement","handleTagManagement","onBlock","handleBlock","onWhite","handleWhite","handleDetailDelete","onMetadataUpdated","handleMetadataUpdated","onFileRenamed","handleFileRenamed","defaultUrlFormat","useCustomUrl","customUrlPrefix","showTagDialog","currentTagFile","onTagsUpdated","handleTagsUpdated","showBatchTagDialog","handleBatchTagsUpdated","showMobileActionModal","mobileActionIsFolder","getFolderName","mobileActionFile","handleMobileAction","onNavigate","onGoBack","handleGoBack","showMoveDialog","moveTargetPath","onConfirm","confirmMove","FileManager","constructor","FILE_LIST_PATH","fileListCache","storageWarningShown","getLocalFileList","fileList","getMutableFileList","files","directories","localStorage","getItem","parse","createEmptyFileList","updateFileListCache","persisted","persistFileListCache","cacheUpdated","setItem","handleStoragePersistError","warn","removeItem","removeError","ElMessage","i18n","global","t","addFile","newFile","addFolder","moveFile","oldPath","newPath","oldFolderIndex","fileIndex","findIndex","pathArray","substring","newFolder","removeFile","removeFolder","dir","getFilesInFolder","subdirectories","buildFilterParams","params","search","includeTags","excludeTags","url","newFileList","isIndexedResponse","loadMoreFiles","start","moreFiles","fileManager","rectIntersects","rectA","rectB","right","bottom","calcSelectionRect","current","min","x","y","abs","useDragSelect","options","modes","mainSelector","items","startPoint","preSelectSnapshot","isAppendMode","MOBILE_BREAKPOINT","listenerAttached","EDGE_THRESHOLD","SCROLL_SPEED","autoScrollTimer","savedUserSelect","getActiveConfig","mode","toValue","undefined","shouldEnable","syncListenerState","attachContainerListener","cancelDrag","detachContainerListener","isBlankArea","mainArea","closest","config","itemEl","itemSelector","container","containerRef","contains","interactive","hasAppendModifier","shiftKey","ctrlKey","metaKey","saveSnapshot","currentItems","lastClientY","startAutoScroll","scrollStep","viewportHeight","innerHeight","scrollDelta","scrollBy","updateSelection","requestAnimationFrame","stopAutoScroll","cancelAnimationFrame","disableTextSelection","userSelect","restoreTextSelection","rect","selRect","itemElements","querySelectorAll","itemRect","getBoundingClientRect","itemBounds","intersects","onMouseDown","button","clientX","clientY","onMouseMove","onMouseUp","currentPoint","_event","onWindowResize","onMounted","onBeforeUnmount","SORT_FIELDS","SORT_ORDERS","getStoredSortValue","validValues","fallback","mixins","backgroundManager","directFileCount","directFolderCount","showLogoutButton","tableData","searchKeywords","searchIncludeTags","searchExcludeTags","isUploading","activeUrlTab","mobileActionIndex","longPressTimer","moveFileKey","moveFileIndex","pageSwipeStartX","pageSwipeStartY","pageSwipeStartTime","DashboardTabs","TagManagementDialog","BatchTagDialog","SkeletonLoader","FileCard","FolderCard","FileListItem","FileDetailDialog","BatchActionBar","MobileActionSheet","MobileDirectoryDrawer","DashboardCheckbox","FilterDropdown","MoveFileDialog","LanguageSwitcher","setup","cardContainerRef","listContainerRef","viewModeRef","itemsRef","card","list","totalPages","sortedData","sortData","end","fullList","concat","labelKeys","time","rawName","fieldLabel","orderLabel","detailDialogWidth","ExternalLink","rootUrl","tableColumnNum","tablePreviewSpan","some","userConfig","urlPrefix","location","origin","newData","newFormat","$store","commit","parentPath","colors","formatFileSize","bytes","isNaN","units","searchText","excludeTagRegex","replace","match","includeTagRegex","log","extractChannelNames","typeLabels","telegram","cfr2","s3","discord","huggingface","webdav","entries","channelList","sort","a","b","localeCompare","link","createElement","href","download","click","tab","$message","$confirm","reject","updateStats","find","handleBatchDelete","promises","results","successNum","handleBatchCopy","folders","$loading","lock","allFiles","links","generateFileLink","copyToClipboardFallback","textarea","appendChild","clip","execCommand","removeChild","fetchFileList","num","init","field","order","getSizeInBytes","parseSize","parsedValue","isFinite","sizeInBytes","sizeInMegabytes","getValue","RawName","getTime","compare","valA","valB","videoElement","fetch","credentials","authType","finally","$router","handleBatchDownload","handleBatchMove","handleBatchTagManagement","handleBatchBlock","handleBatchWhite","validation","executeBatchMove","executeSingleMove","newKey","$nextTick","tempData","refreshLocalFileList","f","resolve","zip","fileNameCount","downloadPromises","async","blob","extension","lastIndexOf","baseName","generateAsync","URL","createObjectURL","flag","videoExtensions","audioExtensions","imageExtensions","filename","page","isMobileViewport","updateResponsivePageSize","nextPageSize","firstVisibleIndex","floor","isSwipeIgnoredTarget","touch","touches","now","changedTouches","deltaX","deltaY","elapsed","targetPage","goToSwipePage","loadMoreDataUntilPage","parseInt","max","targetIndex","currentFolderCount","currentFileCount","neededFileCount","relativePath","maxLength","startLength","endLength","getFileNameStart","dotIndex","keepLength","getFileNameEnd","ext","folderPath","Set","folderItems","from","fileItems","totalCount","state","adminLoggedIn","updatedMetadata","isExternal","baseUrl","initializeBackground","adminUrlSettings","savedViewMode","_component_el_popover","popoverVisible","transition","reference","$slots","handleNodeClick","openDrawer","drawerVisible","$refs","treeRef","store","nodesMap","treeRefMobile","setCurrentKey","axios","withAuthCode","module","exports","s","o","h","u","l","n","code","call","c","p","encode","getTypeOf","charCodeAt","charAt","decode","substr","uint8array","Uint8Array","compressedSize","uncompressedSize","crc32","compression","compressedContent","prototype","getContentWorker","pipe","uncompressWorker","on","streamInfo","data_length","getCompressedWorker","withStreamInfo","createWorkerFrom","compressWorker","STORE","magic","DEFLATE","base64","binary","createFolders","date","compressionOptions","comment","unixPermissions","dosPermissions","lie","Uint16Array","Uint32Array","_pako","_pakoAction","_pakoOptions","meta","inherits","processChunk","_createPako","transformTo","flush","cleanUp","raw","level","onData","pako","A","fromCharCode","O","utf8encode","I","m","g","v","w","k","S","z","C","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCFullYear","getUTCMonth","getUTCDate","B","E","fileRecord","R","LOCAL_FILE_HEADER","dirRecord","CENTRAL_FILE_HEADER","bytesWritten","zipComment","zipPlatform","encodeFileName","streamFiles","accumulate","contentBuffer","dirRecords","currentSourceOffset","entriesCount","currentFile","_sources","percent","openedSource","closedSource","DATA_DESCRIPTOR","shift","CENTRAL_DIRECTORY_END","prepareNextSource","previous","isPaused","resume","registerPrevious","generatedError","generateWorker","platform","_compressWorker","arguments","create","root","clone","loadAsync","support","defaults","version","external","decompressed","extend","checkCRC32","optimizedBinaryString","decodeFileName","utf8decode","isNode","isStream","prepareContent","load","fileNameStr","fileCommentStr","unsafeOriginalName","_upstreamEnded","_bindStream","_stream","Readable","_helper","emit","_read","Buffer","newBufferFrom","allocBuffer","alloc","fill","isBuffer","toUpperCase","toString","remove","generate","generateInternalStream","mimeType","checkSupport","generateNodeStream","toNodejsStream","stream","byteAt","zero","lastIndexOfSignature","readAndCheckSignature","readData","checkOffset","checkIndex","setIndex","skip","readInt","readString","readDate","UTC","subarray","ZIP64_CENTRAL_DIRECTORY_LOCATOR","ZIP64_CENTRAL_DIRECTORY_END","destType","propName","dataIsReady","_tickScheduled","_tickAndRepeat","delay","isFinished","_tick","extraStreamInfo","isLocked","_listeners","mergeStreamInfo","hasOwnProperty","nodestream","_internalType","_outputType","_mimeType","newBlob","apply","_worker","objectMode","array","string","arraybuffer","ArrayBuffer","nodebuffer","Blob","self","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","getBlob","leftOver","applyFromCharCode","Utf8DecodeWorker","Utf8EncodeWorker","stringifyByChunk","stringifyByChar","applyCanBeUsed","buffer","byteLength","MAX_VALUE_16BITS","MAX_VALUE_32BITS","pretty","setImmediate","FileReader","onload","onerror","readAsArrayBuffer","setimmediate","loadOptions","checkSignature","reader","isSignature","readBlockEndOfCentral","diskNumber","diskWithCentralDirStart","centralDirRecordsOnThisDisk","centralDirRecords","centralDirSize","centralDirOffset","zipCommentLength","readBlockZip64EndOfCentral","zip64EndOfCentralSize","zip64ExtensibleData","id","readBlockZip64EndOfCentralLocator","diskWithZip64CentralDirStart","relativeOffsetEndOfZip64CentralDir","disksCount","readLocalFiles","localHeaderOffset","readLocalPart","handleUTF8","processAttributes","readCentralDir","zip64","readCentralPart","readEndOfCentral","prepareReader","isEncrypted","bitFlag","useUTF8","fileNameLength","compressionMethod","versionMadeBy","extraFieldsLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","readExtraFields","parseZIP64ExtraField","fileComment","extraFields","findExtraFieldUnicodePath","findExtraFieldUnicodeComment","_data","_dataBinary","internalStream","_decompressWorker","nodeStream","MutationObserver","WebKitMutationObserver","createTextNode","observe","characterData","MessageChannel","onreadystatechange","parentNode","documentElement","port1","onmessage","port2","postMessage","TypeError","queue","outcome","promise","onFulfilled","callFulfilled","otherCallFulfilled","onRejected","callRejected","otherCallRejected","race","assign","chunkSize","windowBits","memLevel","strategy","gzip","msg","ended","chunks","strm","avail_out","deflateInit2","header","deflateSetHeader","dictionary","string2buf","deflateSetDictionary","_dict_set","next_in","avail_in","output","Buf8","next_out","deflate","onEnd","buf2binstring","shrinkBuf","deflateEnd","flattenChunks","Deflate","deflateRaw","inflateInit2","Z_OK","inflateGetHeader","Z_FINISH","Z_NO_FLUSH","binstring2buf","inflate","Z_NEED_DICT","inflateSetDictionary","Z_BUF_ERROR","Z_STREAM_END","Z_SYNC_FLUSH","utf8border","buf2string","arraySet","inflateEnd","Inflate","inflateRaw","ungzip","Int32Array","setTyped","Buf16","Buf32","Z_PARTIAL_FLUSH","Z_FULL_FLUSH","Z_BLOCK","Z_TREES","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","Z_BINARY","Z_TEXT","Z_UNKNOWN","Z_DEFLATED","T","D","F","pending","pending_buf","pending_out","total_out","N","_tr_flush_block","block_start","strstart","U","P","L","max_chain_length","prev_length","nice_match","w_size","w_mask","prev","good_match","lookahead","match_start","j","window_size","hash_size","head","wrap","adler","total_in","insert","ins_h","hash_shift","hash_mask","Z","match_length","_tr_tally","max_lazy_match","last_lit","W","prev_match","match_available","M","good_length","max_lazy","nice_length","max_chain","func","H","pending_buf_size","gzhead","gzindex","last_flush","w_bits","hash_bits","dyn_ltree","dyn_dtree","bl_tree","l_desc","d_desc","bl_desc","bl_count","heap","heap_len","heap_max","depth","l_buf","lit_bufsize","d_buf","opt_len","static_len","matches","bi_buf","bi_valid","G","data_type","_tr_init","K","Y","deflateInit","deflateReset","deflateResetKeep","hcrc","extra","os","_tr_align","_tr_stored_block","deflateInfo","xflags","extra_len","done","dmax","wsize","whave","wnext","hold","bits","lencode","distcode","lenbits","distbits","sane","last","havedict","flags","check","wbits","offset","ncode","nlen","ndist","have","next","lens","work","lendyn","distdyn","back","was","inflateReset","inflateReset2","inflateResetKeep","inflateInit","inflateInfo","static_tree","extra_bits","extra_base","elems","max_length","has_stree","dyn_tree","max_code","stat_desc","X","V","q","J","getPrototypeOf","process","nextTick","importScripts","random","attachEvent","Function","callback","clearImmediate","validateFolderPath","strict","dotPattern","invalidChars"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/130.b657e68d.js.map.gz b/frontend-dist/js/130.b657e68d.js.map.gz deleted file mode 100644 index c7e74d9e4b73762a20b3fee49a466876758bb2e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 151426 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

#$b}eX$tqmaF-5 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 F3IGjd9mW6v diff --git a/frontend-dist/js/787.d0dbc2dd.js b/frontend-dist/js/168.16edcf49.js similarity index 97% rename from frontend-dist/js/787.d0dbc2dd.js rename to frontend-dist/js/168.16edcf49.js index 8c787c1..d8bfa71 100644 --- a/frontend-dist/js/787.d0dbc2dd.js +++ b/frontend-dist/js/168.16edcf49.js @@ -1,2 +1,2 @@ -"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[787],{75875:function(a,e,s){s.r(e),s.d(e,{default:function(){return F}});var o=s(80047),i=(s(85331),s(99648),s(56768));const n={class:"not-found-container"},r=["innerHTML"],c={class:"not-found-content"},t={class:"back-button-wrapper"},l={class:"error-animation"},d={class:"error-image"},k=["src"],u={class:"error-info"},h={class:"error-actions"},g={class:"help-links"},p={class:"quick-links"};function v(a,e,s,v,f,b){const m=(0,i.g2)("font-awesome-icon"),L=o.S2;return(0,i.uX)(),(0,i.CE)("div",n,[(0,i.Lk)("div",{class:"background-wrapper",innerHTML:a.backgroundImagesTemplate},null,8,r),(0,i.Lk)("div",c,[(0,i.Lk)("div",t,[(0,i.bF)(L,{class:"back-button",onClick:b.goHome,circle:"",size:"large"},{default:(0,i.k6)(()=>[(0,i.bF)(m,{icon:"home"})]),_:1},8,["onClick"])]),(0,i.Lk)("div",l,[e[3]||(e[3]=(0,i.Lk)("div",{class:"error-number"},[(0,i.Lk)("span",{class:"four"},"4"),(0,i.Lk)("span",{class:"zero"},"0"),(0,i.Lk)("span",{class:"four"},"4")],-1)),(0,i.Lk)("div",d,[(0,i.Lk)("img",{src:b.errorImage,alt:"404",class:"floating-image"},null,8,k)])]),(0,i.Lk)("div",u,[e[10]||(e[10]=(0,i.Lk)("h1",{class:"error-title"},"页面走丢了",-1)),e[11]||(e[11]=(0,i.Lk)("p",{class:"error-description"}," 抱歉,您访问的页面可能已被删除、更名或暂时不可用 ",-1)),(0,i.Lk)("div",h,[(0,i.bF)(L,{type:"primary",size:"large",class:"action-btn primary-btn",onClick:b.goHome},{default:(0,i.k6)(()=>[(0,i.bF)(m,{icon:"home",class:"btn-icon"}),e[4]||(e[4]=(0,i.eW)(" 返回首页 ",-1))]),_:1},8,["onClick"]),(0,i.bF)(L,{size:"large",class:"action-btn secondary-btn",onClick:b.goBack},{default:(0,i.k6)(()=>[(0,i.bF)(m,{icon:"arrow-left",class:"btn-icon"}),e[5]||(e[5]=(0,i.eW)(" 返回上页 ",-1))]),_:1},8,["onClick"])]),(0,i.Lk)("div",g,[e[9]||(e[9]=(0,i.Lk)("p",{class:"help-text"},"也许您想要:",-1)),(0,i.Lk)("div",p,[(0,i.Lk)("a",{href:"javascript:void(0)",onClick:e[0]||(e[0]=(...a)=>b.goHome&&b.goHome(...a)),class:"quick-link"},[(0,i.bF)(m,{icon:"cloud-upload-alt"}),e[6]||(e[6]=(0,i.eW)(" 图片上传 ",-1))]),(0,i.Lk)("a",{href:"javascript:void(0)",onClick:e[1]||(e[1]=(...a)=>b.goDashboard&&b.goDashboard(...a)),class:"quick-link"},[(0,i.bF)(m,{icon:"tachometer-alt"}),e[7]||(e[7]=(0,i.eW)(" 管理面板 ",-1))]),(0,i.Lk)("a",{href:"javascript:void(0)",onClick:e[2]||(e[2]=(...a)=>b.refreshPage&&b.refreshPage(...a)),class:"quick-link"},[(0,i.bF)(m,{icon:"redo"}),e[8]||(e[8]=(0,i.eW)(" 刷新页面 ",-1))])])])])]),e[12]||(e[12]=(0,i.Fv)('

',1))])}s(44114);var f=s(60782),b=s(48903),m={name:"NotFound",mixins:[b.A],computed:{...(0,f.L8)(["useDarkMode","userConfig"]),errorImage(){return s(96682)}},mounted(){this.initializeBackground("uploadBkImg",".not-found-container",!1,!0)},beforeUnmount(){this.clearBackgroundInterval()},methods:{goHome(){this.$router.push("/")},goBack(){window.history.length>1?this.$router.go(-1):this.$router.push("/")},goDashboard(){this.$router.push("/dashboard")},refreshPage(){window.location.reload()}}},L=s(71241);const C=(0,L.A)(m,[["render",v],["__scopeId","data-v-827d2e7c"]]);var F=C},96682:function(a,e,s){a.exports=s.p+"img/404.8ed11fb3.png"}}]); -//# sourceMappingURL=787.d0dbc2dd.js.map \ No newline at end of file +"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[168],{75875:function(a,e,s){s.r(e),s.d(e,{default:function(){return F}});var o=s(80047),i=(s(85331),s(99648),s(56768));const n={class:"not-found-container"},r=["innerHTML"],c={class:"not-found-content"},t={class:"back-button-wrapper"},l={class:"error-animation"},d={class:"error-image"},k=["src"],u={class:"error-info"},h={class:"error-actions"},g={class:"help-links"},p={class:"quick-links"};function v(a,e,s,v,f,b){const m=(0,i.g2)("font-awesome-icon"),L=o.S2;return(0,i.uX)(),(0,i.CE)("div",n,[(0,i.Lk)("div",{class:"background-wrapper",innerHTML:a.backgroundImagesTemplate},null,8,r),(0,i.Lk)("div",c,[(0,i.Lk)("div",t,[(0,i.bF)(L,{class:"back-button",onClick:b.goHome,circle:"",size:"large"},{default:(0,i.k6)(()=>[(0,i.bF)(m,{icon:"home"})]),_:1},8,["onClick"])]),(0,i.Lk)("div",l,[e[3]||(e[3]=(0,i.Lk)("div",{class:"error-number"},[(0,i.Lk)("span",{class:"four"},"4"),(0,i.Lk)("span",{class:"zero"},"0"),(0,i.Lk)("span",{class:"four"},"4")],-1)),(0,i.Lk)("div",d,[(0,i.Lk)("img",{src:b.errorImage,alt:"404",class:"floating-image"},null,8,k)])]),(0,i.Lk)("div",u,[e[10]||(e[10]=(0,i.Lk)("h1",{class:"error-title"},"页面走丢了",-1)),e[11]||(e[11]=(0,i.Lk)("p",{class:"error-description"}," 抱歉,您访问的页面可能已被删除、更名或暂时不可用 ",-1)),(0,i.Lk)("div",h,[(0,i.bF)(L,{type:"primary",size:"large",class:"action-btn primary-btn",onClick:b.goHome},{default:(0,i.k6)(()=>[(0,i.bF)(m,{icon:"home",class:"btn-icon"}),e[4]||(e[4]=(0,i.eW)(" 返回首页 ",-1))]),_:1},8,["onClick"]),(0,i.bF)(L,{size:"large",class:"action-btn secondary-btn",onClick:b.goBack},{default:(0,i.k6)(()=>[(0,i.bF)(m,{icon:"arrow-left",class:"btn-icon"}),e[5]||(e[5]=(0,i.eW)(" 返回上页 ",-1))]),_:1},8,["onClick"])]),(0,i.Lk)("div",g,[e[9]||(e[9]=(0,i.Lk)("p",{class:"help-text"},"也许您想要:",-1)),(0,i.Lk)("div",p,[(0,i.Lk)("a",{href:"javascript:void(0)",onClick:e[0]||(e[0]=(...a)=>b.goHome&&b.goHome(...a)),class:"quick-link"},[(0,i.bF)(m,{icon:"cloud-upload-alt"}),e[6]||(e[6]=(0,i.eW)(" 图片上传 ",-1))]),(0,i.Lk)("a",{href:"javascript:void(0)",onClick:e[1]||(e[1]=(...a)=>b.goDashboard&&b.goDashboard(...a)),class:"quick-link"},[(0,i.bF)(m,{icon:"tachometer-alt"}),e[7]||(e[7]=(0,i.eW)(" 管理面板 ",-1))]),(0,i.Lk)("a",{href:"javascript:void(0)",onClick:e[2]||(e[2]=(...a)=>b.refreshPage&&b.refreshPage(...a)),class:"quick-link"},[(0,i.bF)(m,{icon:"redo"}),e[8]||(e[8]=(0,i.eW)(" 刷新页面 ",-1))])])])])]),e[12]||(e[12]=(0,i.Fv)('
',1))])}s(44114);var f=s(60782),b=s(48903),m={name:"NotFound",mixins:[b.A],computed:{...(0,f.L8)(["useDarkMode","userConfig"]),errorImage(){return s(96682)}},mounted(){this.initializeBackground("uploadBkImg",".not-found-container",!1,!0)},beforeUnmount(){this.clearBackgroundInterval()},methods:{goHome(){this.$router.push("/")},goBack(){window.history.length>1?this.$router.go(-1):this.$router.push("/")},goDashboard(){this.$router.push("/dashboard")},refreshPage(){window.location.reload()}}},L=s(71241);const C=(0,L.A)(m,[["render",v],["__scopeId","data-v-827d2e7c"]]);var F=C},96682:function(a,e,s){a.exports=s.p+"img/404.8ed11fb3.png"}}]); +//# sourceMappingURL=168.16edcf49.js.map \ No newline at end of file diff --git a/frontend-dist/js/168.16edcf49.js.gz b/frontend-dist/js/168.16edcf49.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..050074055b7b6de65be405653b09977b5debfd6d GIT binary patch literal 1566 zcmV+(2I2W1iwFP!000023Z++VZ`{Nd{(gVOG9Z`{V`shD>^cta6%9mGN)h5kAX%$w z)*kN;YtNXO@uuz85)=fb0>KAVM5_X=5UPYI+zY+rqC$TR$tL;4UqH6^HQ7+5DALBB zIp;a^Jaf*OF-R4yC@q<)n+16yX2g$Bx$kRq(i08%^%Xh_mXPp!~EQk_a(*~l`q z)+e$eTm|iFwcbRSxlloSWqH{`Si#lRM%~UIRvOKQjnJAexY8Bw4*ZBH5C4 z-#`%I;&J_X1VO<10CVgWBb&YP$gE@?StvSI3{RwYh&i1k?151b(8@;-tuewL^_E+gF2VetdyHJ=X7e;| z7pXNvR3(H@?Lv{}^Pmo91I^o9q%zMWQ2iU58Jre2EOcbq!R#7X+yQu?r0=xNVx`5N zVG?Nv)T?!X$EcAYn(@vg-A8-bLyMG2b7ib*DUDT~)uwA5mPRuj<%rA5CG&vJVR8AW};gN1ZX6Tf!?Iz&pbWkfX8$B~|nCvQgvZm+rg9GgR|EvAG+r!IuhVTBg|Lr?}-oL&$ zJCfNVBLEM&l7rdbAT&av6Mdu#90_YZE~9^QQLPuSE-@Y*aJNkd6h_a)LPHfHAa zglr@YM9IM}!`SmXa^;udwI9otHQ_M+%NyfpaaL{Qw$VrMsb>P#uM`V#r)`@?G^SiD zPzi`8M&Gb&&7ek`{;7rLs!I}DDSi!WfzMLF`VaT4J+kNWBYV~#*>mMs&*JwfT*#j( zSg%`Fy}ZVTu7Ztf)2<=hb``AKtJP(MV|TzwOdar|&>Q(h2;i8VXIwd6+kCc#eGw
dQ_s-;pJ}?*Er14`GeyoZz+@_(B^fg`pk750Y5;;XY z!!?zC5M6yx;6d+SL-}1`YhMzG}Xy Q%$Ov90gD5X(+Um%0MG0K_W%F@ literal 0 HcmV?d00001 diff --git a/frontend-dist/js/787.d0dbc2dd.js.map b/frontend-dist/js/168.16edcf49.js.map similarity index 98% rename from frontend-dist/js/787.d0dbc2dd.js.map rename to frontend-dist/js/168.16edcf49.js.map index 2cca575..e4c161a 100644 --- a/frontend-dist/js/787.d0dbc2dd.js.map +++ b/frontend-dist/js/168.16edcf49.js.map @@ -1 +1 @@ -{"version":3,"file":"js/787.d0dbc2dd.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/views/NotFound.vue?6456","webpack://sanyue_imghub/./src/views/NotFound.vue","webpack://sanyue_imghub/./src/views/NotFound.vue?5f0d"],"sourcesContent":["import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, createStaticVNode as _createStaticVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"not-found-container\"\n};\nconst _hoisted_2 = [\"innerHTML\"];\nconst _hoisted_3 = {\n class: \"not-found-content\"\n};\nconst _hoisted_4 = {\n class: \"back-button-wrapper\"\n};\nconst _hoisted_5 = {\n class: \"error-animation\"\n};\nconst _hoisted_6 = {\n class: \"error-image\"\n};\nconst _hoisted_7 = [\"src\"];\nconst _hoisted_8 = {\n class: \"error-info\"\n};\nconst _hoisted_9 = {\n class: \"error-actions\"\n};\nconst _hoisted_10 = {\n class: \"help-links\"\n};\nconst _hoisted_11 = {\n class: \"quick-links\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", {\n class: \"background-wrapper\",\n innerHTML: _ctx.backgroundImagesTemplate\n }, null, 8, _hoisted_2), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_button, {\n class: \"back-button\",\n onClick: $options.goHome,\n circle: \"\",\n size: \"large\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_5, [_cache[3] || (_cache[3] = _createElementVNode(\"div\", {\n class: \"error-number\"\n }, [_createElementVNode(\"span\", {\n class: \"four\"\n }, \"4\"), _createElementVNode(\"span\", {\n class: \"zero\"\n }, \"0\"), _createElementVNode(\"span\", {\n class: \"four\"\n }, \"4\")], -1)), _createElementVNode(\"div\", _hoisted_6, [_createElementVNode(\"img\", {\n src: $options.errorImage,\n alt: \"404\",\n class: \"floating-image\"\n }, null, 8, _hoisted_7)])]), _createElementVNode(\"div\", _hoisted_8, [_cache[10] || (_cache[10] = _createElementVNode(\"h1\", {\n class: \"error-title\"\n }, \"页面走丢了\", -1)), _cache[11] || (_cache[11] = _createElementVNode(\"p\", {\n class: \"error-description\"\n }, \" 抱歉,您访问的页面可能已被删除、更名或暂时不可用 \", -1)), _createElementVNode(\"div\", _hoisted_9, [_createVNode(_component_el_button, {\n type: \"primary\",\n size: \"large\",\n class: \"action-btn primary-btn\",\n onClick: $options.goHome\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"btn-icon\"\n }), _cache[4] || (_cache[4] = _createTextVNode(\" 返回首页 \", -1))]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n size: \"large\",\n class: \"action-btn secondary-btn\",\n onClick: $options.goBack\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-left\",\n class: \"btn-icon\"\n }), _cache[5] || (_cache[5] = _createTextVNode(\" 返回上页 \", -1))]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_10, [_cache[9] || (_cache[9] = _createElementVNode(\"p\", {\n class: \"help-text\"\n }, \"也许您想要:\", -1)), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.goHome && $options.goHome(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud-upload-alt\"\n }), _cache[6] || (_cache[6] = _createTextVNode(\" 图片上传 \", -1))]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.goDashboard && $options.goDashboard(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"tachometer-alt\"\n }), _cache[7] || (_cache[7] = _createTextVNode(\" 管理面板 \", -1))]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.refreshPage && $options.refreshPage(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n }), _cache[8] || (_cache[8] = _createTextVNode(\" 刷新页面 \", -1))])])])])]), _cache[12] || (_cache[12] = _createStaticVNode(\"
\", 1))]);\n}","import \"core-js/modules/es.array.push.js\";\nimport { mapGetters } from 'vuex';\nimport backgroundManager from '@/mixins/backgroundManager';\nexport default {\n name: 'NotFound',\n mixins: [backgroundManager],\n computed: {\n ...mapGetters(['useDarkMode', 'userConfig']),\n errorImage() {\n // 使用项目中已有的404图片\n return require('@/assets/404.png');\n }\n },\n mounted() {\n // 初始化背景图\n this.initializeBackground('uploadBkImg', '.not-found-container', false, true);\n },\n beforeUnmount() {\n // 清理背景轮播定时器\n this.clearBackgroundInterval();\n },\n methods: {\n goHome() {\n this.$router.push('/');\n },\n goBack() {\n if (window.history.length > 1) {\n this.$router.go(-1);\n } else {\n this.$router.push('/');\n }\n },\n goDashboard() {\n this.$router.push('/dashboard');\n },\n refreshPage() {\n window.location.reload();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./NotFound.vue?vue&type=template&id=827d2e7c&scoped=true\"\nimport script from \"./NotFound.vue?vue&type=script&lang=js\"\nexport * from \"./NotFound.vue?vue&type=script&lang=js\"\n\nimport \"./NotFound.vue?vue&type=style&index=0&id=827d2e7c&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-827d2e7c\"]])\n\nexport default __exports__"],"names":["_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","innerHTML","backgroundImagesTemplate","onClick","goHome","circle","size","default","icon","_","src","errorImage","alt","type","goBack","href","args","goDashboard","refreshPage","name","mixins","backgroundManager","computed","mounted","this","initializeBackground","beforeUnmount","clearBackgroundInterval","methods","$router","push","window","history","length","go","location","reload","__exports__"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"js/168.16edcf49.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/views/NotFound.vue?6456","webpack://sanyue_imghub/./src/views/NotFound.vue","webpack://sanyue_imghub/./src/views/NotFound.vue?5f0d"],"sourcesContent":["import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, createStaticVNode as _createStaticVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"not-found-container\"\n};\nconst _hoisted_2 = [\"innerHTML\"];\nconst _hoisted_3 = {\n class: \"not-found-content\"\n};\nconst _hoisted_4 = {\n class: \"back-button-wrapper\"\n};\nconst _hoisted_5 = {\n class: \"error-animation\"\n};\nconst _hoisted_6 = {\n class: \"error-image\"\n};\nconst _hoisted_7 = [\"src\"];\nconst _hoisted_8 = {\n class: \"error-info\"\n};\nconst _hoisted_9 = {\n class: \"error-actions\"\n};\nconst _hoisted_10 = {\n class: \"help-links\"\n};\nconst _hoisted_11 = {\n class: \"quick-links\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", {\n class: \"background-wrapper\",\n innerHTML: _ctx.backgroundImagesTemplate\n }, null, 8, _hoisted_2), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_button, {\n class: \"back-button\",\n onClick: $options.goHome,\n circle: \"\",\n size: \"large\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_5, [_cache[3] || (_cache[3] = _createElementVNode(\"div\", {\n class: \"error-number\"\n }, [_createElementVNode(\"span\", {\n class: \"four\"\n }, \"4\"), _createElementVNode(\"span\", {\n class: \"zero\"\n }, \"0\"), _createElementVNode(\"span\", {\n class: \"four\"\n }, \"4\")], -1)), _createElementVNode(\"div\", _hoisted_6, [_createElementVNode(\"img\", {\n src: $options.errorImage,\n alt: \"404\",\n class: \"floating-image\"\n }, null, 8, _hoisted_7)])]), _createElementVNode(\"div\", _hoisted_8, [_cache[10] || (_cache[10] = _createElementVNode(\"h1\", {\n class: \"error-title\"\n }, \"页面走丢了\", -1)), _cache[11] || (_cache[11] = _createElementVNode(\"p\", {\n class: \"error-description\"\n }, \" 抱歉,您访问的页面可能已被删除、更名或暂时不可用 \", -1)), _createElementVNode(\"div\", _hoisted_9, [_createVNode(_component_el_button, {\n type: \"primary\",\n size: \"large\",\n class: \"action-btn primary-btn\",\n onClick: $options.goHome\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"btn-icon\"\n }), _cache[4] || (_cache[4] = _createTextVNode(\" 返回首页 \", -1))]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n size: \"large\",\n class: \"action-btn secondary-btn\",\n onClick: $options.goBack\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-left\",\n class: \"btn-icon\"\n }), _cache[5] || (_cache[5] = _createTextVNode(\" 返回上页 \", -1))]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_10, [_cache[9] || (_cache[9] = _createElementVNode(\"p\", {\n class: \"help-text\"\n }, \"也许您想要:\", -1)), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.goHome && $options.goHome(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud-upload-alt\"\n }), _cache[6] || (_cache[6] = _createTextVNode(\" 图片上传 \", -1))]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.goDashboard && $options.goDashboard(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"tachometer-alt\"\n }), _cache[7] || (_cache[7] = _createTextVNode(\" 管理面板 \", -1))]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.refreshPage && $options.refreshPage(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n }), _cache[8] || (_cache[8] = _createTextVNode(\" 刷新页面 \", -1))])])])])]), _cache[12] || (_cache[12] = _createStaticVNode(\"
\", 1))]);\n}","import \"core-js/modules/es.array.push.js\";\nimport { mapGetters } from 'vuex';\nimport backgroundManager from '@/mixins/backgroundManager';\nexport default {\n name: 'NotFound',\n mixins: [backgroundManager],\n computed: {\n ...mapGetters(['useDarkMode', 'userConfig']),\n errorImage() {\n // 使用项目中已有的404图片\n return require('@/assets/404.png');\n }\n },\n mounted() {\n // 初始化背景图\n this.initializeBackground('uploadBkImg', '.not-found-container', false, true);\n },\n beforeUnmount() {\n // 清理背景轮播定时器\n this.clearBackgroundInterval();\n },\n methods: {\n goHome() {\n this.$router.push('/');\n },\n goBack() {\n if (window.history.length > 1) {\n this.$router.go(-1);\n } else {\n this.$router.push('/');\n }\n },\n goDashboard() {\n this.$router.push('/dashboard');\n },\n refreshPage() {\n window.location.reload();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./NotFound.vue?vue&type=template&id=827d2e7c&scoped=true\"\nimport script from \"./NotFound.vue?vue&type=script&lang=js\"\nexport * from \"./NotFound.vue?vue&type=script&lang=js\"\n\nimport \"./NotFound.vue?vue&type=style&index=0&id=827d2e7c&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-827d2e7c\"]])\n\nexport default __exports__"],"names":["_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","innerHTML","backgroundImagesTemplate","onClick","goHome","circle","size","default","icon","_","src","errorImage","alt","type","goBack","href","args","goDashboard","refreshPage","name","mixins","backgroundManager","computed","mounted","this","initializeBackground","beforeUnmount","clearBackgroundInterval","methods","$router","push","window","history","length","go","location","reload","__exports__"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/168.16edcf49.js.map.gz b/frontend-dist/js/168.16edcf49.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..c644140aacfa0c5ceb335238c50d80e25c7185a4 GIT binary patch literal 3271 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 F007QEWCZ{K literal 0 HcmV?d00001 diff --git a/frontend-dist/js/502.58060353.js b/frontend-dist/js/502.58060353.js deleted file mode 100644 index b8400ea..0000000 --- a/frontend-dist/js/502.58060353.js +++ /dev/null @@ -1,2 +0,0 @@ -(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[502],{213:function(e,t,o){"use strict";o(85331),o(19104)},2893:function(e,t,o){"use strict";o(85331)},3261:function(e,t,o){"use strict";o(85331)},4885:function(e,t,o){"use strict";o(85331)},10456:function(e,t,o){"use strict";o(85331)},11393:function(e,t,o){o(79577),o(41549),o(49797),o(49631),o(35623),o(64979),function(t,o){e.exports=o()}(0,function(){return function(e){var t={};function o(a){if(t[a])return t[a].exports;var l=t[a]={i:a,l:!1,exports:{}};return e[a].call(l.exports,l,l.exports,o),l.l=!0,l.exports}return o.m=e,o.c=t,o.d=function(e,t,a){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(o.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var l in e)o.d(a,l,function(t){return e[t]}.bind(null,l));return a},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=0)}([function(e,t,o){"use strict";var a;function l(e){return["image/png","image/jpeg","image/gif"].some(t=>t===e)}o.r(t),o.d(t,"canvastoDataURL",function(){return s}),o.d(t,"canvastoFile",function(){return n}),o.d(t,"dataURLtoFile",function(){return d}),o.d(t,"dataURLtoImage",function(){return c}),o.d(t,"downloadFile",function(){return u}),o.d(t,"filetoDataURL",function(){return p}),o.d(t,"imagetoCanvas",function(){return m}),o.d(t,"urltoBlob",function(){return f}),o.d(t,"urltoImage",function(){return g}),o.d(t,"compress",function(){return b}),o.d(t,"compressAccurately",function(){return v}),o.d(t,"EImageType",function(){return a}),function(e){e.PNG="image/png",e.JPEG="image/jpeg",e.GIF="image/gif"}(a||(a={}));var i=function(e,t,o,a){return new(o||(o=Promise))(function(l,i){function s(e){try{r(a.next(e))}catch(e){i(e)}}function n(e){try{r(a.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?l(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(s,n)}r((a=a.apply(e,t||[])).next())})};function s(e,t=.92,o=a.JPEG){return i(this,void 0,void 0,function*(){return l(o)||(o=a.JPEG),e.toDataURL(o,t)})}function n(e,t=.92,o=a.JPEG){return new Promise(a=>e.toBlob(e=>a(e),o,t))}var r=function(e,t,o,a){return new(o||(o=Promise))(function(l,i){function s(e){try{r(a.next(e))}catch(e){i(e)}}function n(e){try{r(a.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?l(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(s,n)}r((a=a.apply(e,t||[])).next())})};function d(e,t){return r(this,void 0,void 0,function*(){const o=e.split(",");let a=o[0].match(/:(.*?);/)[1];const i=atob(o[1]);let s=i.length;const n=new Uint8Array(s);for(;s--;)n[s]=i.charCodeAt(s);return l(t)&&(a=t),new Blob([n],{type:a})})}function c(e){return new Promise((t,o)=>{const a=new Image;a.onload=()=>t(a),a.onerror=()=>o(new Error("dataURLtoImage(): dataURL is illegal")),a.src=e})}function u(e,t){const o=document.createElement("a");o.href=window.URL.createObjectURL(e),o.download=t||Date.now().toString(36),document.body.appendChild(o);const a=document.createEvent("MouseEvents");a.initEvent("click",!1,!1),o.dispatchEvent(a),document.body.removeChild(o)}function p(e){return new Promise(t=>{const o=new FileReader;o.onloadend=e=>t(e.target.result),o.readAsDataURL(e)})}var h=function(e,t,o,a){return new(o||(o=Promise))(function(l,i){function s(e){try{r(a.next(e))}catch(e){i(e)}}function n(e){try{r(a.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?l(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(s,n)}r((a=a.apply(e,t||[])).next())})};function m(e,t={}){return h(this,void 0,void 0,function*(){const o=Object.assign({},t),a=document.createElement("canvas"),l=a.getContext("2d");let i,s;for(const e in o)Object.prototype.hasOwnProperty.call(o,e)&&(o[e]=Number(o[e]));if(o.scale){const t=o.scale>0&&o.scale<10?o.scale:1;s=e.width*t,i=e.height*t}else s=o.width||o.height*e.width/e.height||e.width,i=o.height||o.width*e.height/e.width||e.height;switch([5,6,7,8].some(e=>e===o.orientation)?(a.height=s,a.width=i):(a.height=i,a.width=s),o.orientation){case 3:l.rotate(180*Math.PI/180),l.drawImage(e,-a.width,-a.height,a.width,a.height);break;case 6:l.rotate(90*Math.PI/180),l.drawImage(e,0,-a.width,a.height,a.width);break;case 8:l.rotate(270*Math.PI/180),l.drawImage(e,-a.height,0,a.height,a.width);break;case 2:l.translate(a.width,0),l.scale(-1,1),l.drawImage(e,0,0,a.width,a.height);break;case 4:l.translate(a.width,0),l.scale(-1,1),l.rotate(180*Math.PI/180),l.drawImage(e,-a.width,-a.height,a.width,a.height);break;case 5:l.translate(a.width,0),l.scale(-1,1),l.rotate(90*Math.PI/180),l.drawImage(e,0,-a.width,a.height,a.width);break;case 7:l.translate(a.width,0),l.scale(-1,1),l.rotate(270*Math.PI/180),l.drawImage(e,-a.height,0,a.height,a.width);break;default:l.drawImage(e,0,0,a.width,a.height)}return a})}function f(e){return fetch(e).then(e=>e.blob())}function g(e){return new Promise((t,o)=>{const a=new Image;a.onload=()=>t(a),a.onerror=()=>o(new Error("urltoImage(): Image failed to load, please check the image URL")),a.src=e})}var y=function(e,t,o,a){return new(o||(o=Promise))(function(l,i){function s(e){try{r(a.next(e))}catch(e){i(e)}}function n(e){try{r(a.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?l(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(s,n)}r((a=a.apply(e,t||[])).next())})};function b(e,t={}){return y(this,void 0,void 0,function*(){if(!(e instanceof Blob))throw new Error("compress(): First arg must be a Blob object or a File object.");if("object"!=typeof t&&(t=Object.assign({quality:t})),t.quality=Number(t.quality),Number.isNaN(t.quality))return e;const o=yield p(e);let i=o.split(",")[0].match(/:(.*?);/)[1],n=a.JPEG;l(t.type)&&(n=t.type,i=t.type);const r=yield c(o),u=yield m(r,Object.assign({},t)),h=yield s(u,t.quality,n),f=yield d(h,i);return f.size>e.size?e:f})}function v(e,t={}){return y(this,void 0,void 0,function*(){if(!(e instanceof Blob))throw new Error("compressAccurately(): First arg must be a Blob object or a File object.");if("object"!=typeof t&&(t=Object.assign({size:t})),t.size=Number(t.size),Number.isNaN(t.size))return e;if(1024*t.size>e.size)return e;t.accuracy=Number(t.accuracy),(!t.accuracy||t.accuracy<.8||t.accuracy>.99)&&(t.accuracy=.95);const o=t.size*(2-t.accuracy)*1024,i=1024*t.size,n=t.size*t.accuracy*1024,r=yield p(e);let u=r.split(",")[0].match(/:(.*?);/)[1],h=a.JPEG;l(t.type)&&(h=t.type,u=t.type);const f=yield c(r),g=yield m(f,Object.assign({},t));let y,b=.5;const v=[null,null];for(let e=1;e<=7;e++){y=yield s(g,b,h);const t=.75*y.length;if(7===e){(ot)&&(y=[y,...v].filter(e=>e).sort((e,t)=>Math.abs(.75*e.length-i)-Math.abs(.75*t.length-i))[0]);break}if(ot))break;v[0]=y,b+=Math.pow(.5,e+1)}}const k=yield d(y,u);return k.size>e.size?e:k})}}])})},13378:function(e,t,o){"use strict";o(85331),o(38736),o(79899)},15616:function(e,t,o){"use strict";o(85331),o(97197)},18785:function(e,t,o){"use strict";o(85331)},19104:function(e,t,o){"use strict";o(85331)},23597:function(e,t,o){"use strict";o(85331)},30694:function(e,t,o){"use strict";o(85331)},33153:function(e,t,o){"use strict";e.exports=o.p+"img/logo.e8dbfa27.png"},33892:function(e,t,o){"use strict";o.d(t,{A:function(){return $}});var a=o(99114),l=(o(85331),o(30694),o(49385)),i=(o(37952),o(30650)),s=(o(19104),o(31802)),n=(o(13378),o(80047)),r=(o(99648),o(56768)),d=o(45130),c=o(24232);const u={class:"directory-tree-picker"},p={class:"tree-container"},h={key:0,class:"error-state"},m={class:"error-text"},f={class:"node-label"},g={class:"tree-container"},y={key:0,class:"error-state"},b={class:"error-text"},v={class:"node-label"};function k(e,t,o,k,C,w){const F=(0,r.g2)("font-awesome-icon"),L=n.S2,U=s.qk,$=i.Vc,S=l.pw,T=a.A;return(0,r.uX)(),(0,r.CE)("div",u,[w.isDesktop?((0,r.uX)(),(0,r.Wv)($,{key:0,visible:C.popoverVisible,"onUpdate:visible":t[1]||(t[1]=e=>C.popoverVisible=e),placement:"bottom-start",width:320,trigger:"click","popper-class":"directory-tree-popover","show-arrow":!0,"hide-after":0,"show-after":50,transition:"el-zoom-in-top"},{reference:(0,r.k6)(()=>[(0,r.Lk)("span",{class:"popover-trigger-wrapper",onClick:t[0]||(t[0]=(0,d.D$)(()=>{},["stop"]))},[(0,r.RG)(e.$slots,"trigger",{},void 0,!0)])]),default:(0,r.k6)(()=>[(0,r.bo)(((0,r.uX)(),(0,r.CE)("div",p,[C.error?((0,r.uX)(),(0,r.CE)("div",h,[(0,r.bF)(F,{icon:"exclamation-circle",class:"error-icon"}),(0,r.Lk)("span",m,(0,c.v_)(C.error),1),(0,r.bF)(L,{type:"primary",size:"small",onClick:w.fetchDirectoryTree},{default:(0,r.k6)(()=>[(0,r.eW)((0,c.v_)(e.$t("directoryTree.retry")),1)]),_:1},8,["onClick"])])):((0,r.uX)(),(0,r.Wv)(U,{key:1,ref:"treeRef",data:C.treeData,props:C.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":o.currentDirectory,class:"directory-tree",onNodeClick:w.handleNodeClick},{default:(0,r.k6)(({node:e,data:t})=>[(0,r.Lk)("span",{class:(0,c.C4)(["tree-node",{"is-current":t.path===o.currentDirectory}])},[(0,r.bF)(F,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,r.Lk)("span",f,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[T,C.loading]])]),_:3},8,["visible"])):((0,r.uX)(),(0,r.CE)(r.FK,{key:1},[(0,r.Lk)("span",{class:"drawer-trigger-wrapper",onClick:t[2]||(t[2]=(...e)=>w.openDrawer&&w.openDrawer(...e))},[(0,r.RG)(e.$slots,"trigger",{},void 0,!0)]),(0,r.bF)(S,{modelValue:C.drawerVisible,"onUpdate:modelValue":t[3]||(t[3]=e=>C.drawerVisible=e),direction:"btt",size:"60%","show-close":!0,"with-header":!0,"z-index":3e3,title:e.$t("directoryTree.selectDirectory"),class:"directory-tree-drawer"},{default:(0,r.k6)(()=>[(0,r.bo)(((0,r.uX)(),(0,r.CE)("div",g,[C.error?((0,r.uX)(),(0,r.CE)("div",y,[(0,r.bF)(F,{icon:"exclamation-circle",class:"error-icon"}),(0,r.Lk)("span",b,(0,c.v_)(C.error),1),(0,r.bF)(L,{type:"primary",size:"small",onClick:w.fetchDirectoryTree},{default:(0,r.k6)(()=>[(0,r.eW)((0,c.v_)(e.$t("directoryTree.retry")),1)]),_:1},8,["onClick"])])):((0,r.uX)(),(0,r.Wv)(U,{key:1,ref:"treeRefMobile",data:C.treeData,props:C.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":o.currentDirectory,class:"directory-tree mobile-tree",onNodeClick:w.handleNodeClick},{default:(0,r.k6)(({node:e,data:t})=>[(0,r.Lk)("span",{class:(0,c.C4)(["tree-node",{"is-current":t.path===o.currentDirectory}])},[(0,r.bF)(F,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,r.Lk)("span",v,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[T,C.loading]])]),_:1},8,["modelValue","title"])],64))])}var C=o(457),w=o(70797),F={name:"DirectoryTreePicker",props:{currentDirectory:{type:String,default:""},source:{type:String,default:"upload",validator:e=>["upload","admin"].includes(e)}},data(){return{popoverVisible:!1,drawerVisible:!1,treeData:[],loading:!1,error:"",treeProps:{children:"children",label:"name"},windowWidth:window.innerWidth}},computed:{isDesktop(){return this.windowWidth>=769}},watch:{popoverVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.popoverVisible&&this.$refs.treeRef){const e=this.$refs.treeRef.store;for(const t in e.nodesMap)e.nodesMap[t].expanded=!1}},200)},drawerVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.drawerVisible&&this.$refs.treeRefMobile){const e=this.$refs.treeRefMobile.store;for(const t in e.nodesMap)e.nodesMap[t].expanded=!1}},300)},currentDirectory(e){this.$nextTick(()=>{this.$refs.treeRef&&e&&this.$refs.treeRef.setCurrentKey(e),this.$refs.treeRefMobile&&e&&this.$refs.treeRefMobile.setCurrentKey(e)})}},mounted(){window.addEventListener("resize",this.handleResize)},beforeUnmount(){window.removeEventListener("resize",this.handleResize)},methods:{handleResize(){this.windowWidth=window.innerWidth},openDrawer(){this.drawerVisible=!0},async fetchDirectoryTree(){this.loading=!0,this.error="";try{let e;if("admin"===this.source){const t=await(0,w.A)("/api/directoryTree",{method:"GET"});if(!t.ok)return void(401===t.status?this.error=this.$t("directoryTree.authFailed"):this.error=this.$t("directoryTree.serverError"));e=await t.json()}else{const t=await C.A.get("/api/directoryTree",{withAuthCode:!0});e=t.data}e.tree?this.treeData=[e.tree]:this.treeData=[]}catch(e){console.error("Failed to fetch directory tree:",e),401===e.response?.status?this.error=this.$t("directoryTree.authFailed"):this.error=this.$t("directoryTree.loadFailed")}finally{this.loading=!1}},handleNodeClick(e){let t=e.path;t&&!t.startsWith("/")?t="/"+t:t||(t="/"),this.$emit("select",t),this.popoverVisible=!1,this.drawerVisible=!1}}},L=o(71241);const U=(0,L.A)(F,[["render",k],["__scopeId","data-v-62eab69a"]]);var $=U},34396:function(e,t,o){"use strict";o(85331),o(4885)},34896:function(e,t,o){"use strict";o(85331)},37952:function(e,t,o){"use strict";o(85331),o(97197)},38736:function(e,t,o){"use strict";o(85331)},40670:function(e,t,o){"use strict";o(85331),o(99648),o(19104),o(85970)},42550:function(e,t,o){"use strict";o.d(t,{A:function(){return m}});var a=o(56768),l=o(45130),i=o(24232);const s={id:"themeMask"},n=["cx","cy","r"],r=["r"],d=["opacity"];function c(e,t,o,c,u,p){const h=(0,a.g2)("font-awesome-icon");return(0,a.uX)(),(0,a.CE)("div",{id:"themeToggle",onClick:t[0]||(t[0]=(...e)=>p.handleToggleClick&&p.handleToggleClick(...e))},[(0,a.bF)(l.eB,{name:"icon-fade",mode:"out-in"},{default:(0,a.k6)(()=>[u.isAuto?((0,a.uX)(),(0,a.Wv)(h,{key:"auto-mode",icon:"circle-half-stroke",class:"auto-icon",style:{"font-size":"1.5em",color:"var(--theme-toggle-color)"}})):((0,a.uX)(),(0,a.CE)("svg",{key:"sun-moon",class:(0,i.C4)(["theme_toggle_svg",{dark:u.isDark}]),width:"1.5em",height:"1.5em",viewBox:"0 0 24 24",fill:"none","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",stroke:"currentColor"},[(0,a.Lk)("mask",s,[t[1]||(t[1]=(0,a.Lk)("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:"white"},null,-1)),(0,a.Lk)("circle",{class:"theme_toggle_circle1",fill:"black",cx:u.isDark?"50%":"100%",cy:u.isDark?"23%":"0%",r:u.isDark?"9":"5"},null,8,n)]),(0,a.Lk)("circle",{class:"theme_toggle_circle2",cx:"12",cy:"12",r:u.isDark?"9":"5",mask:"url(#themeMask)"},null,8,r),(0,a.Lk)("g",{class:"theme_toggle_g",stroke:"currentColor",opacity:u.isDark?0:1},[...t[2]||(t[2]=[(0,a.Lk)("line",{x1:"12",y1:"1",x2:"12",y2:"3"},null,-1),(0,a.Lk)("line",{x1:"12",y1:"21",x2:"12",y2:"23"},null,-1),(0,a.Lk)("line",{x1:"4.22",y1:"4.22",x2:"5.64",y2:"5.64"},null,-1),(0,a.Lk)("line",{x1:"18.36",y1:"18.36",x2:"19.78",y2:"19.78"},null,-1),(0,a.Lk)("line",{x1:"1",y1:"12",x2:"3",y2:"12"},null,-1),(0,a.Lk)("line",{x1:"21",y1:"12",x2:"23",y2:"12"},null,-1),(0,a.Lk)("line",{x1:"4.22",y1:"19.78",x2:"5.64",y2:"18.36"},null,-1),(0,a.Lk)("line",{x1:"18.36",y1:"5.64",x2:"19.78",y2:"4.22"},null,-1)])],8,d)],2))]),_:1})])}var u={name:"ToggleDark",data(){return{isDark:this.$store.getters.useDarkMode,isAuto:!this.$store.getters.cusDarkMode}},methods:{handleToggleClick(){this.isAuto?(this.isDark=!1,this.isAuto=!1,this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!1)):this.isDark?(this.isAuto=!0,this.$store.commit("setCusDarkMode",!1)):(this.isDark=!0,this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!0))}}},p=o(71241);const h=(0,p.A)(u,[["render",c],["__scopeId","data-v-e9449eac"]]);var m=h},50333:function(e,t,o){"use strict";o(85331),o(29092)},54560:function(e,t,o){"use strict";o.d(t,{A:function(){return p}});var a=o(56768),l=o(24232);const i=["href","target"],s=["alt","src"];function n(e,t,o,n,r,d){return(0,a.uX)(),(0,a.CE)("a",{href:d.logoHref,target:o.target,class:(0,l.C4)(e.logo-e.link)},[(0,a.Lk)("img",{class:(0,l.C4)(d.logoClasses),alt:o.alt,src:d.logoUrl},null,10,s)],10,i)}var r=o(60782),d={name:"Logo",props:{href:{type:String,default:"https://github.com/MarSeventh/CloudFlare-ImgBed"},target:{type:String,default:"_blank",validator:e=>["_blank","_self","_parent","_top"].includes(e)},alt:{type:String,default:"Sanyue logo"},customSrc:{type:String,default:""},position:{type:String,default:"fixed",validator:e=>["fixed","relative","absolute","static"].includes(e)},size:{type:String,default:"normal",validator:e=>["small","normal","large"].includes(e)},enableHover:{type:Boolean,default:!0},useConfigLink:{type:Boolean,default:!1}},computed:{...(0,r.L8)(["userConfig"]),logoUrl(){return this.customSrc||this.userConfig?.logoUrl||o(33153)},logoHref(){return this.useConfigLink&&this.userConfig?.logoLink?this.userConfig.logoLink:this.href},logoClasses(){return{logo:!0,[`logo--${this.position}`]:!0,[`logo--${this.size}`]:!0,"logo--hover-enabled":this.enableHover}}}},c=o(71241);const u=(0,c.A)(d,[["render",n],["__scopeId","data-v-5c73638c"]]);var p=u},62388:function(e,t,o){"use strict";o.d(t,{G:function(){return l}});var a=o(46638);function l(e,{strict:t=!0}={}){if(!e||""===e.trim())return{valid:!0};if("/"===e)return{valid:!0};if(!e.startsWith("/"))return{valid:!1,error:a.Ay.global.t("validation.pathMustStartWithSlash")};if(/(?:^|\/)\.\.(\/|$)/.test(e)||e.includes(".."))return{valid:!1,error:a.Ay.global.t("validation.pathTraversalNotAllowed")};const o=t?/\/\.(\/|$)/:/\/\.\//;if(o.test(e))return{valid:!1,error:a.Ay.global.t("validation.singleDotNotAllowed")};if(e.includes("//"))return{valid:!1,error:a.Ay.global.t("validation.consecutiveSlashNotAllowed")};const l=/[\\:\*\?"'<>\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;return l.test(e)?{valid:!1,error:a.Ay.global.t("validation.invalidCharacters")}:{valid:!0}}},67502:function(e,t,o){"use strict";o.r(t),o.d(t,{default:function(){return jo}});var a=o(78507),l=(o(85331),o(213),o(80047)),i=(o(99648),o(56768)),s=o(24232);const n={class:"history-header"},r={class:"header-left"},d={class:"record-count"},c={class:"header-right"},u={class:"timeline-header"},p={class:"date-label"},h={key:0,class:"grid-view"},m={class:"grid-preview"},f=["src"],g=["src"],y={key:2,class:"file-icon-wrapper"},b={class:"grid-overlay"},v={class:"grid-actions"},k={class:"grid-info"},C=["title"],w={class:"upload-time"},F={key:1,class:"list-view"},L={class:"list-preview"},U=["src"],$=["src"],S={key:2,class:"file-icon-wrapper-small"},T={class:"list-info"},_=["title"],x=["title"],A={class:"list-meta"},M={class:"upload-time"},R={class:"list-actions"},E={key:0,class:"load-more-container"},D={key:0,class:"loading-indicator"},P={key:1,class:"load-more-hint"},I={key:1,class:"no-more-hint"},N={key:1,class:"empty-state"};function V(e,t,o,V,z,W){const B=(0,i.g2)("font-awesome-icon"),H=l.S2,Q=a.R7;return(0,i.uX)(),(0,i.CE)("div",{class:(0,s.C4)(["history-container",{active:o.show}])},[(0,i.Lk)("div",n,[(0,i.Lk)("div",r,[(0,i.Lk)("h2",null,(0,s.v_)(e.$t("uploadHistory.title")),1),(0,i.Lk)("span",d,(0,s.v_)(e.$t("uploadHistory.totalRecords",{count:z.totalCount})),1)]),(0,i.Lk)("div",c,[(0,i.bF)(Q,{content:e.$t("uploadHistory.switchView"),placement:"bottom","show-after":1e3},{default:(0,i.k6)(()=>[(0,i.bF)(H,{circle:"",onClick:W.toggleViewMode},{default:(0,i.k6)(()=>[(0,i.bF)(B,{icon:"grid"===z.viewMode?"list":"th-large"},null,8,["icon"])]),_:1},8,["onClick"])]),_:1},8,["content"]),(0,i.bF)(Q,{content:e.$t("uploadHistory.clearRecords"),placement:"bottom","show-after":1e3},{default:(0,i.k6)(()=>[(0,i.bF)(H,{circle:"",type:"danger",onClick:W.clearHistory},{default:(0,i.k6)(()=>[(0,i.bF)(B,{icon:"trash-alt"})]),_:1},8,["onClick"])]),_:1},8,["content"]),(0,i.bF)(H,{circle:"",onClick:t[0]||(t[0]=t=>e.$emit("close"))},{default:(0,i.k6)(()=>[(0,i.bF)(B,{icon:"times"})]),_:1})])]),z.historyList.length>0?((0,i.uX)(),(0,i.CE)("div",{key:0,class:"history-content",ref:"historyContent",onScroll:t[3]||(t[3]=(...e)=>W.handleScroll&&W.handleScroll(...e))},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(W.groupedHistory,e=>((0,i.uX)(),(0,i.CE)("div",{key:e.date,class:"history-group"},[(0,i.Lk)("div",u,[t[4]||(t[4]=(0,i.Lk)("div",{class:"timeline-dot"},null,-1)),(0,i.Lk)("span",p,(0,s.v_)(e.date),1)]),"grid"===z.viewMode?((0,i.uX)(),(0,i.CE)("div",h,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.items,e=>((0,i.uX)(),(0,i.CE)("div",{key:e.time,class:"grid-item"},[(0,i.Lk)("div",m,[W.isImage(e.name)?((0,i.uX)(),(0,i.CE)("img",{key:0,src:e.url,loading:"lazy",onError:t[1]||(t[1]=(...e)=>W.handleImageError&&W.handleImageError(...e))},null,40,f)):W.isVideo(e.name)?((0,i.uX)(),(0,i.CE)("video",{key:1,src:e.url,muted:""},null,8,g)):((0,i.uX)(),(0,i.CE)("div",y,[(0,i.bF)(B,{icon:"file",class:"file-icon"})])),(0,i.Lk)("div",b,[(0,i.Lk)("div",v,[(0,i.bF)(H,{circle:"",size:"default",type:"primary",onClick:t=>W.copyLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(B,{icon:"copy"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"default",class:"action-btn-view",onClick:t=>W.openLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(B,{icon:"external-link-alt"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"default",type:"danger",onClick:t=>W.deleteItem(e)},{default:(0,i.k6)(()=>[(0,i.bF)(B,{icon:"trash-alt"})]),_:1},8,["onClick"])])])]),(0,i.Lk)("div",k,[(0,i.Lk)("div",{class:"file-name",title:e.name},(0,s.v_)(e.name),9,C),(0,i.Lk)("div",w,(0,s.v_)(W.formatTime(e.time)),1)])]))),128))])):((0,i.uX)(),(0,i.CE)("div",F,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.items,e=>((0,i.uX)(),(0,i.CE)("div",{key:e.time,class:"list-item"},[(0,i.Lk)("div",L,[W.isImage(e.name)?((0,i.uX)(),(0,i.CE)("img",{key:0,src:e.url,loading:"lazy",onError:t[2]||(t[2]=(...e)=>W.handleImageError&&W.handleImageError(...e))},null,40,U)):W.isVideo(e.name)?((0,i.uX)(),(0,i.CE)("video",{key:1,src:e.url,muted:""},null,8,$)):((0,i.uX)(),(0,i.CE)("div",S,[(0,i.bF)(B,{icon:"file"})]))]),(0,i.Lk)("div",T,[(0,i.Lk)("div",{class:"file-name",title:e.name},(0,s.v_)(e.name),9,_),(0,i.Lk)("div",{class:"file-url",title:e.url},(0,s.v_)(e.url),9,x)]),(0,i.Lk)("div",A,[(0,i.Lk)("div",M,(0,s.v_)(W.formatTime(e.time)),1)]),(0,i.Lk)("div",R,[(0,i.bF)(H,{circle:"",size:"small",type:"primary",onClick:t=>W.copyLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(B,{icon:"copy"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"small",class:"action-btn-view",onClick:t=>W.openLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(B,{icon:"external-link-alt"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"small",type:"danger",onClick:t=>W.deleteItem(e)},{default:(0,i.k6)(()=>[(0,i.bF)(B,{icon:"trash-alt"})]),_:1},8,["onClick"])])]))),128))]))]))),128)),W.hasMore?((0,i.uX)(),(0,i.CE)("div",E,[z.loadingMore?((0,i.uX)(),(0,i.CE)("div",D,[(0,i.bF)(B,{icon:"spinner",spin:""}),(0,i.Lk)("span",null,(0,s.v_)(e.$t("uploadHistory.loading")),1)])):((0,i.uX)(),(0,i.CE)("div",P,(0,s.v_)(e.$t("uploadHistory.pullToLoadMore")),1))])):z.historyList.length>0?((0,i.uX)(),(0,i.CE)("div",I,(0,s.v_)(e.$t("uploadHistory.noMoreRecords")),1)):(0,i.Q3)("",!0)],544)):((0,i.uX)(),(0,i.CE)("div",N,[(0,i.bF)(B,{icon:"history",class:"empty-icon"}),(0,i.Lk)("p",null,(0,s.v_)(e.$t("uploadHistory.emptyHistory")),1)]))],2)}o(44114),o(18111),o(22489),o(7588),o(61701);var z={name:"UploadHistory",props:{show:{type:Boolean,default:!1}},data(){return{historyList:[],allHistory:[],viewMode:"grid",pageSize:30,currentPage:0,loadingMore:!1,totalCount:0}},watch:{show(e){e&&this.resetAndLoad()}},computed:{hasMore(){return this.historyList.length{const o=new Date(t.time),a=`${o.getFullYear()}-${String(o.getMonth()+1).padStart(2,"0")}-${String(o.getDate()).padStart(2,"0")}`;e[a]||(e[a]=[]),e[a].push(t)}),Object.keys(e).sort((e,t)=>new Date(t)-new Date(e)).map(t=>({date:t,items:e[t]}))}},mounted(){const e=localStorage.getItem("historyViewMode");e&&(this.viewMode=e)},methods:{resetAndLoad(){this.historyList=[],this.currentPage=0,this.loadAllHistory(),this.loadMore()},loadAllHistory(){try{const e=JSON.parse(localStorage.getItem("uploadHistory")||"[]");this.allHistory=e.sort((e,t)=>t.time-e.time),this.totalCount=this.allHistory.length}catch(e){console.error("Failed to load history",e),this.allHistory=[],this.totalCount=0}},loadMore(){!this.loadingMore&&this.hasMore&&(this.loadingMore=!0,setTimeout(()=>{const e=this.currentPage*this.pageSize,t=e+this.pageSize,o=this.allHistory.slice(e,t);this.historyList=[...this.historyList,...o],this.currentPage++,this.loadingMore=!1},50))},handleScroll(e){const t=e.target,o=t.scrollTop,a=t.scrollHeight,l=t.clientHeight;a-o-l<100&&this.loadMore()},toggleViewMode(){this.viewMode="grid"===this.viewMode?"list":"grid",localStorage.setItem("historyViewMode",this.viewMode)},clearHistory(){this.$confirm(this.$t("uploadHistory.clearConfirmMessage"),this.$t("uploadHistory.clearConfirmTitle"),{confirmButtonText:this.$t("uploadHistory.clearConfirmOk"),cancelButtonText:this.$t("uploadHistory.clearConfirmCancel"),type:"warning"}).then(()=>{this.historyList=[],this.allHistory=[],this.totalCount=0,this.currentPage=0,localStorage.removeItem("uploadHistory"),this.$message.success(this.$t("uploadHistory.recordsCleared"))}).catch(()=>{})},deleteItem(e){this.$confirm(this.$t("uploadHistory.deleteConfirmMessage"),this.$t("uploadHistory.clearConfirmTitle"),{confirmButtonText:this.$t("uploadHistory.clearConfirmOk"),cancelButtonText:this.$t("uploadHistory.clearConfirmCancel"),type:"warning"}).then(()=>{this.historyList=this.historyList.filter(t=>t.time!==e.time),this.allHistory=this.allHistory.filter(t=>t.time!==e.time),this.totalCount=this.allHistory.length;try{localStorage.setItem("uploadHistory",JSON.stringify(this.allHistory)),this.$message.success(this.$t("uploadHistory.recordDeleted"))}catch(t){console.error("Failed to update history",t)}}).catch(()=>{})},isImage(e){const t=["jpg","jpeg","png","gif","bmp","webp","svg","tiff","ico","avif","heic","jfif","pjpeg","pjp"],o=e?e.split(".").pop().toLowerCase():"";return t.includes(o)},isVideo(e){const t=["mp4","webm","ogg","mkv"],o=e?e.split(".").pop().toLowerCase():"";return t.includes(o)},formatTime(e){const t=new Date(e),o=t.getFullYear(),a=String(t.getMonth()+1).padStart(2,"0"),l=String(t.getDate()).padStart(2,"0"),i=String(t.getHours()).padStart(2,"0"),s=String(t.getMinutes()).padStart(2,"0"),n=String(t.getSeconds()).padStart(2,"0");return`${o}-${a}-${l} ${i}:${s}:${n}`},copyLink(e){navigator.clipboard.writeText(e).then(()=>{this.$message.success(this.$t("uploadHistory.linkCopied"))}).catch(()=>{this.$message.error(this.$t("uploadHistory.copyFailed"))})},openLink(e){window.open(e,"_blank")},handleImageError(e){e.target.src=o(96682)}}},W=o(71241);const B=(0,W.A)(z,[["render",V],["__scopeId","data-v-7da2f8c2"]]);var H=B,Q=o(86975),X=o(9267),O=(o(15616),o(81418)),q=(o(50333),o(74757)),j=o(55558),G=(o(10456),o(39623)),K=(o(29092),o(76018)),J=(o(96808),o(67819),o(66810)),Y=(o(4885),o(97769));o(34396),o(3261);const Z={class:"dialog-section"},ee={class:"section-header"},te={class:"section-title"},oe={class:"section-content"},ae={class:"setting-item channel-type-setting"},le={class:"channel-type-toolbar"},ie={class:"setting-label"},se={key:0,class:"channel-empty-state"},ne={key:0,class:"setting-item"},re={class:"setting-label"},de={class:"setting-item"},ce={class:"setting-label"},ue={class:"setting-item"},pe={class:"setting-label"},he={class:"dialog-section"},me={class:"section-header"},fe={class:"section-title"},ge={class:"section-content"},ye={class:"dialog-section"},be={class:"section-header"},ve={class:"section-title"},ke={class:"section-content"},Ce={class:"setting-item"},we={class:"setting-label"},Fe={class:"setting-item"},Le={class:"setting-label"},Ue={key:0,class:"setting-item slider-item"},$e={class:"setting-label"},Se={class:"slider-wrapper"},Te={class:"slider-input-wrapper"},_e={key:1,class:"setting-item slider-item"},xe={class:"setting-label"},Ae={class:"slider-wrapper"},Me={class:"slider-input-wrapper"},Re={key:0,class:"dialog-section"},Ee={class:"section-header"},De={class:"section-title"},Pe={class:"section-content"},Ie={class:"setting-item"},Ne={class:"setting-label"},Ve={class:"dialog-action"};function ze(e,t,o,n,r,d){const c=J.Zh,u=J.MQ,p=Y.A,h=J.ll,m=(0,i.g2)("font-awesome-icon"),f=a.R7,g=K.P9,y=K.AV,b=G.WK,v=j.qi,k=q.B8,C=O.lq,w=l.S2,F=X.kZ;return(0,i.uX)(),(0,i.Wv)(F,{title:e.$t("uploadSettings.title"),modelValue:d.visible,"onUpdate:modelValue":t[13]||(t[13]=e=>d.visible=e),width:d.dialogWidth,"show-close":!1,class:"settings-dialog settings-dialog-scope upload-settings-dialog"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",Z,[(0,i.Lk)("div",ee,[(0,i.Lk)("span",te,(0,s.v_)(e.$t("uploadSettings.uploadChannel")),1)]),(0,i.Lk)("div",oe,[(0,i.Lk)("div",ae,[(0,i.Lk)("div",le,[(0,i.Lk)("span",ie,(0,s.v_)(e.$t("uploadSettings.channelType")),1),(0,i.bF)(u,{modelValue:r.channelVisibility,"onUpdate:modelValue":t[0]||(t[0]=e=>r.channelVisibility=e),size:"small",class:"channel-visibility-filter",onChange:d.handleChannelVisibilityChange},{default:(0,i.k6)(()=>[(0,i.bF)(c,{label:"all"},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e.$t("uploadSettings.allChannels")),1)]),_:1}),(0,i.bF)(c,{label:"configured"},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e.$t("uploadSettings.configuredChannelsOnly")),1)]),_:1})]),_:1},8,["modelValue","onChange"])]),(0,i.bF)(u,{"model-value":o.uploadChannel,"onUpdate:modelValue":t[1]||(t[1]=t=>e.$emit("update:uploadChannel",t)),class:"radio-card-group compact"},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(d.visibleChannelOptions,e=>((0,i.uX)(),(0,i.Wv)(h,{key:e.value,label:e.value,class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(p,{type:e.value,class:"channel-icon"},null,8,["type"]),(0,i.Lk)("span",null,(0,s.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["model-value"]),"configured"===r.channelVisibility&&0===d.visibleChannelOptions.length?((0,i.uX)(),(0,i.CE)("div",se,(0,s.v_)(e.$t("uploadSettings.noConfiguredChannels")),1)):(0,i.Q3)("",!0)]),o.currentChannelList.length>1?((0,i.uX)(),(0,i.CE)("div",ne,[(0,i.Lk)("span",re,[(0,i.eW)((0,s.v_)(e.$t("uploadSettings.channelName"))+" ",1),(0,i.bF)(f,{content:e.$t("uploadSettings.channelNameTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(m,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.bF)(y,{"model-value":o.channelName,"onUpdate:modelValue":t[2]||(t[2]=t=>e.$emit("update:channelName",t)),placeholder:e.$t("uploadSettings.autoSelect"),clearable:"",class:"setting-input"},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.currentChannelList,e=>((0,i.uX)(),(0,i.Wv)(g,{key:e.name,label:e.name,value:e.name},null,8,["label","value"]))),128))]),_:1},8,["model-value","placeholder"])])):(0,i.Q3)("",!0),(0,i.Lk)("div",de,[(0,i.Lk)("span",ce,(0,s.v_)(e.$t("uploadSettings.uploadDirectory")),1),(0,i.bF)(b,{"model-value":o.uploadFolder,"onUpdate:modelValue":d.handleUploadFolderInput,placeholder:e.$t("uploadSettings.uploadDirectoryPlaceholder"),class:"setting-input"},null,8,["model-value","onUpdate:modelValue","placeholder"])]),(0,i.Lk)("div",ue,[(0,i.Lk)("span",pe,[(0,i.eW)((0,s.v_)(e.$t("uploadSettings.autoSwitch"))+" ",1),(0,i.bF)(f,{content:e.$t("uploadSettings.autoSwitchTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(m,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.bF)(v,{"model-value":o.autoRetry,"onUpdate:modelValue":t[3]||(t[3]=t=>e.$emit("update:autoRetry",t))},null,8,["model-value"])])])]),(0,i.Lk)("div",he,[(0,i.Lk)("div",me,[(0,i.Lk)("span",fe,(0,s.v_)(e.$t("uploadSettings.fileNaming")),1)]),(0,i.Lk)("div",ge,[(0,i.bF)(u,{"model-value":o.uploadNameType,"onUpdate:modelValue":t[4]||(t[4]=t=>e.$emit("update:uploadNameType",t)),class:"radio-card-group grid-2x2"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{label:"default",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(m,{icon:"cog",class:"radio-icon"}),(0,i.Lk)("span",null,(0,s.v_)(e.$t("uploadSettings.namingDefault")),1)]),_:1}),(0,i.bF)(h,{label:"index",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(m,{icon:"hashtag",class:"radio-icon"}),(0,i.Lk)("span",null,(0,s.v_)(e.$t("uploadSettings.namingIndex")),1)]),_:1}),(0,i.bF)(h,{label:"origin",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(m,{icon:"file-signature",class:"radio-icon"}),(0,i.Lk)("span",null,(0,s.v_)(e.$t("uploadSettings.namingOrigin")),1)]),_:1}),(0,i.bF)(h,{label:"short",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(m,{icon:"compress-alt",class:"radio-icon"}),(0,i.Lk)("span",null,(0,s.v_)(e.$t("uploadSettings.namingShort")),1)]),_:1})]),_:1},8,["model-value"])])]),(0,i.Lk)("div",ye,[(0,i.Lk)("div",be,[(0,i.Lk)("span",ve,(0,s.v_)(e.$t("uploadSettings.filePreprocess")),1),(0,i.bF)(f,{content:e.$t("uploadSettings.filePreprocessTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(m,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",ke,[(0,i.Lk)("div",Ce,[(0,i.Lk)("span",we,[(0,i.eW)((0,s.v_)(e.$t("uploadSettings.convertToWebp"))+" ",1),(0,i.bF)(f,{content:e.$t("uploadSettings.convertToWebpTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(m,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.bF)(v,{"model-value":o.convertToWebp,"onUpdate:modelValue":t[5]||(t[5]=t=>e.$emit("update:convertToWebp",t))},null,8,["model-value"])]),(0,i.Lk)("div",Fe,[(0,i.Lk)("span",Le,(0,s.v_)(e.$t("uploadSettings.fileCompress")),1),(0,i.bF)(v,{"model-value":o.customerCompress,"onUpdate:modelValue":t[6]||(t[6]=t=>e.$emit("update:customerCompress",t))},null,8,["model-value"])]),o.customerCompress?((0,i.uX)(),(0,i.CE)("div",Ue,[(0,i.Lk)("span",$e,[(0,i.eW)((0,s.v_)(e.$t("uploadSettings.compressThreshold"))+" ",1),(0,i.bF)(f,{content:e.$t("uploadSettings.compressThresholdTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(m,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",Se,[(0,i.bF)(k,{"model-value":o.compressBar,"onUpdate:modelValue":t[7]||(t[7]=t=>e.$emit("update:compressBar",t)),min:1,max:20,"format-tooltip":e=>`${e} MB`},null,8,["model-value","format-tooltip"]),(0,i.Lk)("div",Te,[(0,i.bF)(C,{"model-value":o.compressBar,"onUpdate:modelValue":t[8]||(t[8]=t=>e.$emit("update:compressBar",t)),min:1,max:20,step:1,"value-on-clear":1,class:"slider-input","controls-position":"right"},null,8,["model-value"]),t[14]||(t[14]=(0,i.Lk)("span",{class:"slider-unit"},"MB",-1))])])])):(0,i.Q3)("",!0),o.customerCompress?((0,i.uX)(),(0,i.CE)("div",_e,[(0,i.Lk)("span",xe,[(0,i.eW)((0,s.v_)(e.$t("uploadSettings.expectedSize"))+" ",1),(0,i.bF)(f,{content:e.$t("uploadSettings.expectedSizeTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(m,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",Ae,[(0,i.bF)(k,{"model-value":o.compressQuality,"onUpdate:modelValue":t[9]||(t[9]=t=>e.$emit("update:compressQuality",t)),min:.5,max:o.compressBar,step:.1,"format-tooltip":e=>`${e} MB`},null,8,["model-value","max","format-tooltip"]),(0,i.Lk)("div",Me,[(0,i.bF)(C,{"model-value":o.compressQuality,"onUpdate:modelValue":t[10]||(t[10]=t=>e.$emit("update:compressQuality",t)),min:.5,max:o.compressBar,step:.1,precision:1,"value-on-clear":.5,class:"slider-input","controls-position":"right"},null,8,["model-value","max"]),t[15]||(t[15]=(0,i.Lk)("span",{class:"slider-unit"},"MB",-1))])])])):(0,i.Q3)("",!0)])]),"telegram"===o.uploadChannel?((0,i.uX)(),(0,i.CE)("div",Re,[(0,i.Lk)("div",Ee,[(0,i.Lk)("span",De,(0,s.v_)(e.$t("uploadSettings.serverCompress")),1),(0,i.bF)(f,{content:e.$t("uploadSettings.serverCompressTooltip"),placement:"top","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(m,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",Pe,[(0,i.Lk)("div",Ie,[(0,i.Lk)("span",Ne,(0,s.v_)(e.$t("uploadSettings.enableCompress")),1),(0,i.bF)(v,{"model-value":o.serverCompress,"onUpdate:modelValue":t[11]||(t[11]=t=>e.$emit("update:serverCompress",t))},null,8,["model-value"])])])])):(0,i.Q3)("",!0),(0,i.Lk)("div",Ve,[(0,i.bF)(w,{type:"primary",onClick:t[12]||(t[12]=e=>d.visible=!1),class:"confirm-btn"},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e.$t("uploadSettings.confirm")),1)]),_:1})])]),_:1},8,["title","modelValue","width"])}const We=[{value:"telegram",label:"TG"},{value:"cfr2",label:"R2"},{value:"s3",label:"S3"},{value:"discord",label:"DC"},{value:"huggingface",label:"HF"},{value:"webdav",label:"WD"}];var Be={name:"UploadSettingsDialog",components:{ChannelIcon:Y.A},data(){return{channelVisibility:"configured"}},methods:{hasConfiguredChannels(e){const t=this.availableChannels[e];return Array.isArray(t)&&t.length>0},handleChannelVisibilityChange(e){"configured"===e&&this.ensureConfiguredChannelSelected()},ensureConfiguredChannelSelected(){if("configured"!==this.channelVisibility||this.hasConfiguredChannels(this.uploadChannel))return;const e=this.visibleChannelOptions[0];e&&this.$emit("update:uploadChannel",e.value)},handleUploadFolderInput(e){e&&!e.startsWith("/")&&(e="/"+e),this.$emit("update:uploadFolder",e)}},props:{modelValue:{type:Boolean,default:!1},uploadChannel:{type:String,default:"telegram"},channelName:{type:String,default:""},availableChannels:{type:Object,default:()=>({})},currentChannelList:{type:Array,default:()=>[]},uploadFolder:{type:String,default:""},autoRetry:{type:Boolean,default:!0},uploadNameType:{type:String,default:"default"},convertToWebp:{type:Boolean,default:!1},customerCompress:{type:Boolean,default:!0},compressBar:{type:Number,default:5},compressQuality:{type:Number,default:4},serverCompress:{type:Boolean,default:!0}},emits:["update:modelValue","update:uploadChannel","update:channelName","update:uploadFolder","update:autoRetry","update:uploadNameType","update:convertToWebp","update:customerCompress","update:compressBar","update:compressQuality","update:serverCompress"],watch:{availableChannels:{handler(){this.ensureConfiguredChannelSelected()},deep:!0}},computed:{visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},visibleChannelOptions(){return"all"===this.channelVisibility?We:We.filter(e=>this.hasConfiguredChannels(e.value))},dialogWidth(){return window.innerWidth>768?"50%":"90%"}}};const He=(0,W.A)(Be,[["render",ze],["__scopeId","data-v-25aa00bd"]]);var Qe=He,Xe=o(88559),Oe=(o(85970),o(813)),qe=(o(34896),o(69655)),je=(o(2893),o(74253));o(79899);const Ge={class:"upload-list-item"},Ke=["href"],Je={key:0,style:{width:"10vw","border-radius":"12px"},autoplay:"",muted:"",playsinline:"",loop:""},Ye=["src"],Ze=["src"],et={key:2,style:{width:"10vw","border-radius":"12px"}},tt={class:"upload-list-item-content"},ot={class:"upload-list-item-name-wrapper"},at={key:0,class:"upload-list-item-url"},lt={class:"upload-list-item-url-row"},it={class:"upload-list-item-url-row"},st={key:1,class:"upload-list-item-progress"},nt={class:"upload-list-item-action"};function rt(e,t,o,a,l,n){const r=(0,i.g2)("font-awesome-icon"),d=je.$g,c=G.WK,u=qe.ve,p=(0,i.g2)("Link"),h=Oe.tk,m=(0,i.g2)("Delete");return(0,i.uX)(),(0,i.CE)("div",Ge,[(0,i.Lk)("a",{href:o.file.url,target:"_blank",class:"upload-list-item-preview"},[n.isVideo(o.file.name)?((0,i.uX)(),(0,i.CE)("video",Je,[(0,i.Lk)("source",{src:o.file.url,type:"video/mp4"},null,8,Ye),t[7]||(t[7]=(0,i.eW)(" Your browser does not support the video tag. ",-1))])):n.isImage(o.file.name)?((0,i.uX)(),(0,i.CE)("img",{key:1,style:{width:"10vw","border-radius":"12px"},src:o.file.url,onError:t[0]||(t[0]=t=>e.$emit("preview-error",o.file))},null,40,Ze)):((0,i.uX)(),(0,i.CE)("div",et,[(0,i.bF)(r,{icon:"file",class:"file-icon"})]))],8,Ke),(0,i.Lk)("div",tt,[(0,i.Lk)("div",ot,[(0,i.bF)(d,{class:"upload-list-item-name",truncated:""},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(n.truncateFilename(o.file.name)),1)]),_:1})]),"done"===o.file.status?((0,i.uX)(),(0,i.CE)("div",at,[(0,i.Lk)("div",lt,[(0,i.bF)(c,{modelValue:o.file.finalURL,"onUpdate:modelValue":t[1]||(t[1]=e=>o.file.finalURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[8]||(t[8]=[(0,i.eW)("URL",-1)])]),_:1},8,["modelValue","onClick","size"]),(0,i.bF)(c,{modelValue:o.file.mdURL,"onUpdate:modelValue":t[2]||(t[2]=e=>o.file.mdURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[9]||(t[9]=[(0,i.eW)("MarkDown",-1)])]),_:1},8,["modelValue","onClick","size"])]),(0,i.Lk)("div",it,[(0,i.bF)(c,{modelValue:o.file.htmlURL,"onUpdate:modelValue":t[3]||(t[3]=e=>o.file.htmlURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[10]||(t[10]=[(0,i.eW)("HTML",-1)])]),_:1},8,["modelValue","onClick","size"]),(0,i.bF)(c,{modelValue:o.file.ubbURL,"onUpdate:modelValue":t[4]||(t[4]=e=>o.file.ubbURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[11]||(t[11]=[(0,i.eW)("BBCode",-1)])]),_:1},8,["modelValue","onClick","size"])])])):((0,i.uX)(),(0,i.CE)("div",st,[(0,i.bF)(u,{percentage:o.file.progreess,status:o.file.status,"show-text":!1},null,8,["percentage","status"])]))]),(0,i.Lk)("div",nt,[(0,i.Lk)("button",{class:"modern-file-action-btn modern-file-action-btn-primary",onClick:t[5]||(t[5]=t=>e.$emit("copy",o.file))},[(0,i.bF)(h,null,{default:(0,i.k6)(()=>[(0,i.bF)(p)]),_:1})]),(0,i.Lk)("button",{class:"modern-file-action-btn modern-file-action-btn-danger",onClick:t[6]||(t[6]=t=>e.$emit("remove",o.file))},[(0,i.bF)(h,null,{default:(0,i.k6)(()=>[(0,i.bF)(m)]),_:1})])])])}var dt=o(57477);const ct=["jpg","jpeg","png","gif","bmp","webp","svg","tiff","ico","avif","heic","jfif","pjpeg","pjp","raw","cr2","nef","dng","eps","ai","emf","wmf"],ut=["mp4","webm","ogg","mkv"];var pt={name:"UploadFileItem",components:{Link:dt.Link,Delete:dt.Delete},props:{file:{type:Object,required:!0}},emits:["copy","remove","preview-error"],computed:{urlSize(){return window.innerWidth<768?"small":"default"}},methods:{isImage(e){const t=e.split(".").pop().toLowerCase();return ct.includes(t)},isVideo(e){const t=e.split(".").pop().toLowerCase();return ut.includes(t)},truncateFilename(e,t=20){if(!e||e.length<=t)return e;const o=e.lastIndexOf(".");let a,l;o>0?(a=e.substring(0,o),l=e.substring(o)):(a=e,l="");const i=l.length+4,s=t-i-3;return s<=0?e.substring(0,t-3)+"...":a.substring(0,s)+"..."+a.slice(-4)+l},selectAllText(e){navigator.clipboard.writeText(e.target.value).then(()=>{this.$message({type:"success",message:this.$t("uploadForm.copySuccess")})}).catch(()=>{this.$message({type:"error",message:this.$t("uploadForm.copyFailed")})})}}};const ht=(0,W.A)(pt,[["render",rt],["__scopeId","data-v-4a46527b"]]);var mt=ht,ft=o(62086),gt=(o(40670),o(88830),o(23597),o(70683)),yt=(o(95385),o(47358)),bt=o(45130);const vt={class:"upload-form"},kt={ref:"clipboardPasteReceiver",class:"clipboard-paste-receiver",tabindex:"-1","aria-hidden":"true"},Ct={class:"upload-card-glow",ref:"uploadCardGlow"},wt={class:"upload-prompt-row"},Ft=["innerHTML"],Lt=["aria-label"],Ut={key:0,class:"upload-card"},$t={class:"paste-card-actions"},St=["aria-label"],Tt=["aria-pressed"],_t=["aria-pressed"],xt={class:"upload-list-container"},At={class:"upload-list-dashboard-action"},Mt={class:"modern-action-group"},Rt={class:"modern-dropdown-item-content"},Et={class:"modern-action-btn modern-action-btn-danger"};function Dt(e,t,n,r,d,c){const u=Oe.tk,p=(0,i.g2)("font-awesome-icon"),h=a.R7,m=yt.j5,f=G.WK,g=l.S2,y=gt.Ik,b=(0,i.g2)("List"),v=(0,i.g2)("Checked"),k=(0,i.g2)("Failed"),C=je.$g,w=j.qi,F=ft.c6,L=ft.Iy,U=ft.dW,$=mt,S=Xe.kA;return(0,i.uX)(),(0,i.CE)("div",vt,[(0,i.Lk)("textarea",kt,null,512),(0,i.Lk)("div",{class:"upload-card-wrapper",onMousemove:t[2]||(t[2]=(...e)=>c.handleUploadCardMouseMove&&c.handleUploadCardMouseMove(...e)),onMouseleave:t[3]||(t[3]=(...e)=>c.handleUploadCardMouseLeave&&c.handleUploadCardMouseLeave(...e)),onDropCapture:t[4]||(t[4]=(0,bt.D$)((...e)=>c.handleDrop&&c.handleDrop(...e),["stop","prevent"]))},[(0,i.Lk)("div",Ct,null,512),"default"===n.uploadMethod?((0,i.uX)(),(0,i.Wv)(m,{key:0,class:(0,s.C4)(["upload-card",{"is-uploading":d.uploading,"upload-card-busy":d.fileList.length}]),drag:"",multiple:"","http-request":c.uploadFile,onSuccess:c.handleSuccess,"on-error":c.handleError,"before-upload":c.beforeUpload,"on-progress":c.handleProgress,"file-list":d.fileList,"show-file-list":!1},{default:(0,i.k6)(()=>[(0,i.bF)(u,{class:(0,s.C4)(["el-icon--upload",{"upload-list-busy":d.fileList.length}])},{default:(0,i.k6)(()=>[...t[12]||(t[12]=[(0,i.Lk)("svg",{class:"upload-plus-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.25","stroke-linecap":"round","aria-hidden":"true"},[(0,i.Lk)("path",{d:"M12 7v10"}),(0,i.Lk)("path",{d:"M7 12h10"})],-1)])]),_:1},8,["class"]),(0,i.Lk)("div",wt,[(0,i.Lk)("div",{class:(0,s.C4)(["el-upload__text",{"upload-list-busy":d.fileList.length}]),innerHTML:e.$t("upload.dragUploadText",{pasteShortcut:c.pasteShortcut})},null,10,Ft),(0,i.bF)(h,{disabled:c.disableTooltip,content:e.$t("upload.selectFolderUpload"),placement:"top","show-after":1e3},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{type:"button",class:(0,s.C4)(["folder-upload-icon-button",{"upload-list-busy":d.fileList.length}]),"aria-label":e.$t("upload.selectFolderUpload"),onClick:t[0]||(t[0]=(0,bt.D$)((...e)=>c.openFolderPicker&&c.openFolderPicker(...e),["stop","prevent"]))},[(0,i.bF)(p,{icon:"folder-open"})],10,Lt)]),_:1},8,["disabled","content"])])]),_:1},8,["class","http-request","onSuccess","on-error","before-upload","on-progress","file-list"])):(0,i.Q3)("",!0),(0,i.Lk)("input",{ref:"folderInput",class:"folder-upload-input",type:"file",webkitdirectory:"",directory:"",multiple:"",onChange:t[1]||(t[1]=(...e)=>c.handleFolderSelection&&c.handleFolderSelection(...e))},null,544)],32),"paste"===n.uploadMethod?((0,i.uX)(),(0,i.CE)("div",Ut,[(0,i.bF)(y,{class:(0,s.C4)(["paste-card",{"is-uploading":d.uploading,"upload-card-busy":d.fileList.length}])},{default:(0,i.k6)(()=>[(0,i.bF)(f,{modelValue:d.pastedUrls,"onUpdate:modelValue":t[5]||(t[5]=e=>d.pastedUrls=e),class:"upload-card-textarea",placeholder:e.$t("upload.pasteUrlPlaceholder"),type:"textarea",rows:d.fileList.length?4:14},null,8,["modelValue","placeholder","rows"]),(0,i.Lk)("div",$t,[(0,i.bF)(g,{class:"paste-card-upload-button",type:"primary",size:c.pasteCardMethodButtonSize,onClick:c.handleUploadPasteUrls},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e.$t("upload.pasteUploadBtn")),1)]),_:1},8,["size","onClick"]),(0,i.Lk)("div",{class:(0,s.C4)(["paste-card-method-group",{"is-external":"external"===d.pasteUploadMethod}]),role:"group","aria-label":e.$t("upload.switchUploadMethod")},[(0,i.Lk)("button",{class:(0,s.C4)(["paste-card-method-button",{"is-active":"save"===d.pasteUploadMethod}]),type:"button","aria-pressed":"save"===d.pasteUploadMethod,onClick:t[6]||(t[6]=e=>d.pasteUploadMethod="save")},(0,s.v_)(e.$t("upload.pasteSave")),11,Tt),(0,i.Lk)("button",{class:(0,s.C4)(["paste-card-method-button",{"is-active":"external"===d.pasteUploadMethod}]),type:"button","aria-pressed":"external"===d.pasteUploadMethod,onClick:t[7]||(t[7]=e=>d.pasteUploadMethod="external")},(0,s.v_)(e.$t("upload.pasteExternal")),11,_t)],10,St)])]),_:1},8,["class"])])):(0,i.Q3)("",!0),(0,i.bF)(y,{class:(0,s.C4)(["upload-list-card",{"upload-list-busy":d.fileList.length}])},{default:(0,i.k6)(()=>[(0,i.Lk)("div",xt,[(0,i.bF)(S,{onScroll:c.handleScroll,ref:"scrollContainer"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",{class:(0,s.C4)(["upload-list-dashboard",{"list-scrolled":d.listScrolled}])},[(0,i.bF)(C,{class:"upload-list-dashboard-title"},{default:(0,i.k6)(()=>[(0,i.bF)(u,null,{default:(0,i.k6)(()=>[(0,i.bF)(b)]),_:1}),(0,i.eW)((0,s.v_)(c.uploadingCount+c.waitingCount)+" ",1),(0,i.bF)(u,null,{default:(0,i.k6)(()=>[(0,i.bF)(v)]),_:1}),(0,i.eW)((0,s.v_)(c.uploadSuccessCount)+" ",1),(0,i.bF)(u,null,{default:(0,i.k6)(()=>[(0,i.bF)(k)]),_:1}),(0,i.eW)((0,s.v_)(c.uploadErrorCount),1)]),_:1}),(0,i.Lk)("div",At,[(0,i.Lk)("div",Mt,[(0,i.bF)(h,{disabled:c.disableTooltip,content:e.$t("upload.copyAll"),placement:"top","show-after":1e3},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"modern-action-btn modern-action-btn-copy",onClick:t[8]||(t[8]=(...e)=>c.copyAll&&c.copyAll(...e))},[(0,i.bF)(p,{icon:"copy"})])]),_:1},8,["disabled","content"]),(0,i.bF)(h,{disabled:c.disableTooltip,content:e.$t("upload.retryFailed"),placement:"top","show-after":1e3},{default:(0,i.k6)(()=>[(0,i.bF)(U,null,{dropdown:(0,i.k6)(()=>[(0,i.bF)(L,{class:"modern-dropdown-menu"},{default:(0,i.k6)(()=>[(0,i.bF)(F,null,{default:(0,i.k6)(()=>[(0,i.Lk)("div",Rt,[(0,i.Lk)("span",null,(0,s.v_)(e.$t("uploadForm.autoRetry")),1),(0,i.bF)(w,{modelValue:d.autoReUpload,"onUpdate:modelValue":t[10]||(t[10]=e=>d.autoReUpload=e),onChange:c.handleAutoRetryChange,size:"small"},null,8,["modelValue","onChange"])])]),_:1})]),_:1})]),default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"modern-action-btn modern-action-btn-retry",onClick:t[9]||(t[9]=(...e)=>c.retryError&&c.retryError(...e))},[(0,i.bF)(p,{icon:"redo"})])]),_:1})]),_:1},8,["disabled","content"]),(0,i.bF)(h,{disabled:c.disableTooltip,content:e.$t("upload.clearList"),placement:"top","show-after":1e3},{default:(0,i.k6)(()=>[(0,i.bF)(U,null,{dropdown:(0,i.k6)(()=>[(0,i.bF)(L,{class:"modern-dropdown-menu"},{default:(0,i.k6)(()=>[(0,i.bF)(F,{onClick:c.clearFileList},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e.$t("upload.clearAll")),1)]),_:1},8,["onClick"]),(0,i.bF)(F,{onClick:c.clearSuccessList},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e.$t("upload.clearUploaded")),1)]),_:1},8,["onClick"])]),_:1})]),default:(0,i.k6)(()=>[(0,i.Lk)("button",Et,[(0,i.bF)(p,{icon:"trash-alt"})])]),_:1})]),_:1},8,["disabled","content"])])])],2),((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(d.fileList.slice().reverse(),e=>((0,i.uX)(),(0,i.Wv)($,{key:e.uid,file:e,onCopy:c.handleCopy,onRemove:c.handleRemove,onPreviewError:t[11]||(t[11]=e=>e.url=o(96682))},null,8,["file","onCopy","onRemove"]))),128))]),_:1},8,["onScroll"])])]),_:1},8,["class"])])}o(20116),o(18237),o(79577),o(41549),o(49797),o(49631),o(35623),o(64979);var Pt=o(457),It=o(76334),Nt=o(60782);function Vt(e,t,o){const a=o+e;return{finalURL:a,mdURL:`![${t}](${a})`,htmlURL:`${t}`,ubbURL:`[img]${a}[/img]`}}function zt(e,t){const o={url:e.finalURL,md:e.mdURL,html:e.htmlURL,ubb:e.ubbURL};return o[t]||e.finalURL}function Wt(e,t){e.forEach(e=>{if("external"===e.uploadChannel)return;const o=Vt(e.srcID,e.name,t);Object.assign(e,o)})}const Bt=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Ht=(e,t)=>e>>>t|e<<32-t;function Qt(e,t){const o=new Uint32Array(64);for(let u=0;u<16;u++)o[u]=e[4*u]<<24|e[4*u+1]<<16|e[4*u+2]<<8|e[4*u+3];for(let u=16;u<64;u++){const e=Ht(o[u-15],7)^Ht(o[u-15],18)^o[u-15]>>>3,t=Ht(o[u-2],17)^Ht(o[u-2],19)^o[u-2]>>>10;o[u]=o[u-16]+e+o[u-7]+t>>>0}let[a,l,i,s,n,r,d,c]=t;for(let u=0;u<64;u++){const e=Ht(n,6)^Ht(n,11)^Ht(n,25),t=n&r^~n&d,p=c+e+t+Bt[u]+o[u]>>>0,h=Ht(a,2)^Ht(a,13)^Ht(a,22),m=a&l^a&i^l&i,f=h+m>>>0;c=d,d=r,r=n,n=s+p>>>0,s=i,i=l,l=a,a=p+f>>>0}t[0]=t[0]+a>>>0,t[1]=t[1]+l>>>0,t[2]=t[2]+i>>>0,t[3]=t[3]+s>>>0,t[4]=t[4]+n>>>0,t[5]=t[5]+r>>>0,t[6]=t[6]+d>>>0,t[7]=t[7]+c>>>0}function Xt(){let e=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),t=new Uint8Array(64),o=0,a=0;return{update(l){a+=l.length;let i=0;if(o>0){const a=64-o,s=Math.min(a,l.length);t.set(l.subarray(0,s),o),o+=s,i=s,64===o&&(Qt(t,e),o=0)}while(i+64<=l.length)Qt(l.subarray(i,i+64),e),i+=64;i56&&(t.fill(0,o,64),Qt(t,e),o=0),t.fill(0,o,56);const i=new DataView(t.buffer);i.setUint32(56,Math.floor(l/4294967296),!1),i.setUint32(60,l>>>0,!1),Qt(t,e);let s="";for(let t=0;t<8;t++)s+=e[t].toString(16).padStart(8,"0");return s}}}async function Ot(e){const t=Xt(),o=4194304;let a=0;while(ae&&"."!==e).map(e=>".."===e?"_":e).join("/")}function jt(e=""){const t=qt(e),o=t.lastIndexOf("/");return-1===o?"":t.slice(0,o)}function Gt(e="",t=""){const o=/^[\\/]/.test(String(e).trim()),a=[qt(e),qt(t)].filter(Boolean).join("/");return a?o?`/${a}`:a:""}function Kt(e=[]){return Array.from(e).map(e=>({file:e,relativePath:qt(e.webkitRelativePath||e.relativePath||e.name)}))}function Jt(e){return new Promise((t,o)=>e.file(t,o))}async function Yt(e){const t=e.createReader(),o=[];while(1){const e=await new Promise((e,o)=>t.readEntries(e,o));if(!e.length)break;o.push(...e)}return o}async function Zt(e,t,o){const a=qt([t,e.name].filter(Boolean).join("/"));if(e.isFile){const t=await Jt(e);return void o.push({file:t,relativePath:a})}if(e.isDirectory){const t=await Yt(e);for(const e of t)await Zt(e,a,o)}}async function eo(e,t,o){const a=qt([t,e.name].filter(Boolean).join("/"));if("file"!==e.kind){if("directory"===e.kind)for await(const l of e.values())await eo(l,a,o)}else o.push({file:await e.getFile(),relativePath:a})}async function to(e=[]){const t=Array.from(e).filter(e=>"file"===e.kind),o=[],a=await Promise.all(t.map(async e=>{if("function"!==typeof e.getAsFileSystemHandle)return null;try{return await e.getAsFileSystemHandle()}catch{return null}}));for(let l=0;lthis.fileListLength&&this.$nextTick(()=>{setTimeout(()=>{this.$refs.scrollContainer&&this.$refs.scrollContainer.setScrollTop(0)},100)}),this.fileListLength=this.fileList.length},deep:!0},useCustomUrl:{handler(){Wt(this.fileList,this.rootUrl)},immediate:!0},customUrlPrefix:{handler(){"true"===this.useCustomUrl&&Wt(this.fileList,this.rootUrl)},immediate:!0},autoReUpload(e){this.$store.commit("setStoreAutoReUpload",e)}},computed:{...(0,Nt.L8)(["storeAutoReUpload"]),uploadSuccessCount(){return this.fileList.filter(e=>"done"===e.status||"success"===e.status).length},uploadErrorCount(){return this.fileList.filter(e=>"exception"===e.status).length},uploadingCount(){return this.fileList.filter(e=>"uploading"===e.status).length},waitingCount(){return this.uploadQueue.length},urlSize(){return window.innerWidth<768?"small":"default"},disableTooltip(){return window.innerWidth<768},pasteShortcut(){const e=navigator.userAgentData?.platform||navigator.platform||"";return/mac|iphone|ipad|ipod/i.test(e)?"Cmd + V":"Ctrl + V"},rootUrl(){return"true"===this.useCustomUrl?this.customUrlPrefix:this.urlPrefix||`${window.location.protocol}//${window.location.host}/file/`},pasteCardMethodButtonSize(){return this.fileList.length||window.innerWidth<768?"small":"medium"}},mounted(){document.addEventListener("paste",this.handlePaste),document.addEventListener("keydown",this.handlePasteShortcut),this.autoReUpload=this.storeAutoReUpload},beforeUnmount(){document.removeEventListener("paste",this.handlePaste),document.removeEventListener("keydown",this.handlePasteShortcut),this.uploadQueue=[],this.fileList=[],this.activeUploads=0},methods:{createLocalUid(){return this.localUidCounter+=1,`local-${Date.now()}-${this.localUidCounter}`},applyUploadPath(e,t=e.name){const o=String(t||e.name).replace(/\\/g,"/").replace(/^\/+/,"");return e.uploadRelativePath=o,e.uploadFolder=Gt(this.uploadFolder,jt(o)),e},copyUploadPath(e,t){return t.uploadRelativePath=e.uploadRelativePath||e.name,t.uploadFolder=e.uploadFolder??this.uploadFolder,t},getFileUploadFolder(e){const t=this.fileList.find(t=>t.uid===e.file.uid);return t?.uploadFolder??e.file.uploadFolder??this.uploadFolder},createUploadRequest(e){return{file:e,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)}},async uploadLocalEntries(e){await Promise.allSettled(e.map(async({file:e,relativePath:t})=>{e.uid=this.createLocalUid(),this.applyUploadPath(e,t);const o=await this.beforeUpload(e);o instanceof File&&this.uploadFile(this.createUploadRequest(o))}))},openFolderPicker(){this.$refs.folderInput?.click()},async handleFolderSelection(e){const t=Kt(e.target.files);e.target.value="",await this.uploadLocalEntries(t)},async handleDrop(e){const t=e.dataTransfer;if(!t)return;const o=t.items?.length?await to(t.items):Kt(t.files);o.length&&await this.uploadLocalEntries(o)},truncateFilename(e,t=20){if(!e||e.length<=t)return e;const o=e.lastIndexOf(".");let a,l;o>0?(a=e.substring(0,o),l=e.substring(o)):(a=e,l="");const i=l.length+4,s=t-i-3;return s<=0?e.substring(0,t-3)+"...":a.substring(0,s)+"..."+a.slice(-4)+l},uploadFile(e){if(!this.fileList.find(t=>t.uid===e.file.uid))return;if(this.activeUploads>=this.maxConcurrentUploads){this.uploadQueue.push(e);const t=this.fileList.find(t=>t.uid===e.file.uid);return void(t&&(t.status="waiting"))}this.activeUploads++;const t=this.fileList.find(t=>t.uid===e.file.uid);t&&(t.status="uploading");const o=this.fileList.find(t=>t.uid===e.file.uid),a=o?.uploadChannel||this.uploadChannel;if("external"===a)return void this.uploadSingleFile(e);if("huggingface"===a){const t=20971520;return void(e.file.size>=t?this.uploadToHuggingFaceDirect(e):this.uploadSingleFile(e))}if("discord"===a){const t=9437184;return void(e.file.size>t?this.uploadFileInChunks(e):this.uploadSingleFile(e))}const l=20971520;e.file.size>l?this.uploadFileInChunks(e):this.uploadSingleFile(e)},processUploadQueue(){if(0===this.uploadQueue.length||this.activeUploads>=this.maxConcurrentUploads)return;const e=this.uploadQueue.shift();e&&this.fileList.find(t=>t.uid===e.file.uid)?this.uploadFile(e):this.processUploadQueue()},onUploadComplete(){this.activeUploads=Math.max(0,this.activeUploads-1),this.processUploadQueue(),0===this.activeUploads&&0===this.uploadQueue.length&&(this.uploading=!1)},async uploadSingleFile(e){const t=this.fileList.find(t=>t.uid===e.file.uid);if(!t)return;const o=t.serverCompress,a=t.uploadChannel||this.uploadChannel,l=this.autoRetry&&"external"!==a,i="external"===a?"default":this.uploadNameType,s=this.getFileUploadFolder(e),n=new AbortController;this.abortControllers.set(e.file.uid,n);const r=new FormData;if(r.append("file",e.file),"external"===a&&r.append("url",e.file.url),"huggingface"===a)try{console.log("Computing SHA256 for HuggingFace upload...");const t=await Ot(e.file);r.append("sha256",t),console.log("SHA256 computed:",t)}catch(d){console.error("Failed to compute SHA256:",d)}(0,Pt.A)({url:"/upload?serverCompress="+o+"&uploadChannel="+a+(this.channelName?"&channelName="+encodeURIComponent(this.channelName):"")+"&uploadNameType="+i+"&autoRetry="+l+"&uploadFolder="+encodeURIComponent(s),method:"post",data:r,withAuthCode:!0,signal:n.signal,onUploadProgress:t=>{const o=Math.round(t.loaded/t.total*100);e.onProgress({percent:o,file:e.file})}}).then(t=>{e.onSuccess(t,e.file)}).catch(t=>{"CanceledError"!==t.name&&"ERR_CANCELED"!==t.code?t.response&&401!==t.response.status?(this.exceptionList.push(e),e.onError(t,e.file)):t.response||(this.exceptionList.push(e),e.onError(t,e.file)):console.log("上传已取消:",e.file.name)}).finally(()=>{this.abortControllers.delete(e.file.uid),this.onUploadComplete()})},async uploadFileInChunks(e){const t=this.fileList.find(t=>t.uid===e.file.uid);if(!t)return;const o=t.uploadChannel||this.uploadChannel,a=new AbortController;this.abortControllers.set(e.file.uid,a);const l="discord"===o?9437184:16777216,i=e.file.size,s=e.file.type||"application/octet-stream",n=Math.ceil(i/l),r=t.serverCompress,d=this.autoRetry&&"external"!==o,c="external"===o?"default":this.uploadNameType,u=this.getFileUploadFolder(e);let p=null;if("huggingface"===o)try{console.log("Computing SHA256 for HuggingFace chunked upload..."),p=await Ot(e.file),console.log("SHA256 computed:",p)}catch(h){console.error("Failed to compute SHA256:",h)}try{const t=new FormData;t.append("originalFileName",e.file.name),t.append("originalFileType",s),t.append("totalChunks",n.toString());const m=await(0,Pt.A)({url:"/upload?serverCompress="+r+"&uploadChannel="+o+(this.channelName?"&channelName="+encodeURIComponent(this.channelName):"")+"&uploadNameType="+c+"&autoRetry="+d+"&uploadFolder="+encodeURIComponent(u)+"&initChunked=true",method:"post",data:t,withAuthCode:!0});if(!m.data.success)throw new Error(this.$t("uploadForm.chunkInitFailed")+": "+m.data.message);const f=m.data.uploadId;console.log("分块上传初始化成功,uploadId:",f);const g=this.fileList.find(t=>t.uid===e.file.uid);g&&(g.totalChunks=n,g.uploadId=f);const y=3,b=new Array(n).fill(0);let v=0,k=!1,C="",w=!1;const F=async t=>{if(k||w)return;const p=t*l,m=Math.min(p+l,i),g=e.file.slice(p,m),y=new FormData;y.append("file",g,`${e.file.name}.part${t.toString().padStart(3,"0")}`),y.append("chunkIndex",t.toString()),y.append("totalChunks",n.toString()),y.append("uploadId",f),y.append("originalFileName",e.file.name),y.append("originalFileType",s);let v=0;const F=3;while(v{if(k||w)return;const a=Math.round(o.loaded/o.total*100);b[t]=a;const l=Math.round(b.reduce((e,t)=>e+t,0)/n);e.onProgress({percent:l,file:e.file})}})}catch(h){if("CanceledError"===h.name||"ERR_CANCELED"===h.code)return w=!0,void console.log("分块上传已取消:",e.file.name);if(v++,console.warn(`分块 ${t+1}/${n} 上传失败 (重试 ${v}/${F}):`,h),v>=F)throw k=!0,C=`分块 ${t+1}/${n} 上传失败: ${h.message}`,new Error(C);await new Promise(e=>setTimeout(e,2e3*v))}}},L=[];for(let e=0;e{while(vt.uid===e.file.uid);t&&t.uploadId&&this.cleanupUploadResources(t.uploadId,t.totalChunks).then(()=>{console.log(`已清理分块上传失败的资源: ${t.uploadId}`)}).catch(e=>{console.warn("清理分块上传失败资源时出错:",e)}),h.response&&401!==h.response.status?(this.exceptionList.push(e),e.onError(h,e.file)):h.response||(this.exceptionList.push(e),e.onError(h,e.file))}finally{this.abortControllers.delete(e.file.uid),this.onUploadComplete()}},handleRemove(e){this.abortControllers.has(e.uid)&&(this.abortControllers.get(e.uid).abort(),this.abortControllers.delete(e.uid)),this.uploadQueue=this.uploadQueue.filter(t=>t.file.uid!==e.uid),this.fileList=this.fileList.filter(t=>t.uid!==e.uid),this.$message({type:"info",message:this.$t("uploadForm.deleted",{name:this.truncateFilename(e.name)})})},async cleanupUploadResources(e,t=0){try{await(0,Pt.A)({url:`/upload?cleanup=true&uploadId=${e}&totalChunks=${t}`,method:"get",withAuthCode:!0,timeout:5e3}),console.log(`清理上传资源成功: ${e}`)}catch(o){console.warn("清理上传资源失败:",o)}},handleSuccess(e,t){const o=this.fileList.find(e=>e.uid===t.uid);if(o)try{const a=o.uploadChannel||this.uploadChannel;if("external"!==a){const a=e.data[0].src.replace("/file/","");o.url=`${window.location.protocol}//${window.location.host}/file/`+a;const l=Vt(a,t.name,this.rootUrl);Object.assign(o,l),o.srcID=a}o.progreess=100,o.status="success",this.saveToHistory(o),this.$message({type:"success",message:this.$t("uploadForm.uploadSuccess",{name:this.truncateFilename(t.name)})}),setTimeout(()=>{const e=this.fileList.find(e=>e.uid===t.uid);e&&(e.status="done")},1e3)}catch(a){this.$message.error(this.$t("uploadForm.uploadFailed",{name:this.truncateFilename(t.name)})),o.status="exception"}},saveToHistory(e){try{const t=JSON.parse(localStorage.getItem("uploadHistory")||"[]"),o={name:e.name,url:e.finalURL,time:Date.now(),type:e.name.split(".").pop().toLowerCase()};t.push(o),localStorage.setItem("uploadHistory",JSON.stringify(t))}catch(t){console.error("Failed to save history",t)}},handleError(e,t){const o=this.fileList.find(e=>e.uid===t.uid);o&&(this.$message.error(this.$t("uploadForm.uploadFailed",{name:this.truncateFilename(t.name)})),o.status="exception",this.autoReUpload&&this.scheduleAutoRetry())},handleCopy(e){const t=this.fileList.find(t=>t.uid===e.uid).status;"done"===t||"success"===t?(navigator.clipboard.writeText(zt(e,this.selectedUrlForm)),this.$message({type:"success",message:this.$t("uploadForm.copySuccess")})):this.$message({type:"warning",message:this.$t("uploadForm.fileNotUploaded")})},beforeUpload(e){return new Promise(async(t,o)=>{let a=e;const l=this.convertToWebp&&e.type.includes("image")&&!e.type.includes("webp")&&!e.type.includes("gif")&&!e.type.includes("svg");if(l)try{const t=await this.convertImageToWebp(e);t&&(a=t,console.log(`WebP转换成功: ${e.name} -> ${t.name}, 大小: ${(e.size/1024).toFixed(1)}KB -> ${(t.size/1024).toFixed(1)}KB`))}catch(r){console.warn("WebP转换失败,使用原文件:",r)}const i=a.type.includes("image")&&this.customerCompress&&a.size/1024/1024>this.compressBar,s=a.size/1024/1024<=1024||"telegram"!==this.uploadChannel,n=(e,o)=>{const a=URL.createObjectURL(e);this.fileList.push({uid:e.uid,name:e.uploadRelativePath||e.name,url:a,finalURL:"",mdURL:"",htmlURL:"",ubbURL:"",srcID:"",status:"uploading",progreess:0,serverCompress:o,uploadFolder:e.uploadFolder??this.uploadFolder,retryCount:0}),t(e)};if(i)It.compressAccurately(a,1024*this.compressQuality).then(t=>{t.size/1024/1024>1024&&"telegram"===this.uploadChannel&&(this.$message.error(this.$t("uploadForm.compressedFileTooLarge",{name:a.name})),o(this.$t("uploadForm.fileSizeTooLarge"))),this.uploading=!0;const l=new File([t],a.name,{type:t.type});l.uid=e.uid,this.copyUploadPath(a,l);const i=this.serverCompress&&l.size/1024/1024<10&&"telegram"===this.uploadChannel;n(l,i)}).catch(e=>{this.$message.error(this.$t("uploadForm.compressFailedCannotUpload",{name:a.name})),o(e)});else if(s){this.uploading=!0;const e="telegram"===this.uploadChannel&&this.serverCompress&&(!a.type.includes("image")||a.size/1024/1024<10);n(a,e)}else this.$message.error(this.$t("uploadForm.fileTooLarge",{name:a.name})),o(this.$t("uploadForm.fileSizeTooLarge"))})},handleProgress(e){const t=this.fileList.find(t=>t.uid===e.file.uid);t&&(t.progreess=e.percent)},copyAll(){const e=this.fileList.filter(e=>"done"===e.status||"success"===e.status).map(e=>zt(e,this.selectedUrlForm)).join("\n");navigator.clipboard.writeText(e),this.$message({type:"success",message:this.$t("uploadForm.copyAllSuccess")})},clearFileList(){this.fileList.length>0?(this.abortControllers.forEach((e,t)=>{e.abort()}),this.abortControllers.clear(),this.uploadQueue=[],this.fileList=[],this.$message({type:"success",message:this.$t("uploadForm.fileListCleared")})):this.$message({type:"info",message:this.$t("uploadForm.fileListEmpty")})},clearSuccessList(){this.uploadSuccessCount>0?(this.fileList=this.fileList.filter(e=>"done"!==e.status&&"success"!==e.status),this.$message({type:"success",message:this.$t("uploadForm.successFilesCleared")})):this.$message({type:"info",message:this.$t("uploadForm.successFilesEmpty")})},isEditablePasteTarget(e){const t=e?.nodeType===Node.TEXT_NODE?e.parentElement:e;if(!t)return!1;const o=t.tagName;return"INPUT"===o||"TEXTAREA"===o||t.isContentEditable||Boolean(t.closest?.('[contenteditable="true"]'))},handlePasteShortcut(e){const t=(e.ctrlKey||e.metaKey)&&!e.altKey&&"v"===String(e.key).toLowerCase();if(!t||this.isEditablePasteTarget(e.target))return;const o=this.$refs.clipboardPasteReceiver;if(o){this.pasteFocusTarget=document.activeElement,o.value="";try{o.focus({preventScroll:!0})}catch{o.focus()}}},releasePasteReceiver(e){const t=this.$refs.clipboardPasteReceiver;if(!t||e!==t)return;t.value="";const o=this.pasteFocusTarget;this.pasteFocusTarget=null,setTimeout(()=>{if(o?.isConnected&&"function"===typeof o.focus)try{o.focus({preventScroll:!0})}catch{o.focus()}else t.blur();document.activeElement===t&&t.blur()},0)},async handlePaste(e){const t=e.target===this.$refs.clipboardPasteReceiver;if(!t&&this.isEditablePasteTarget(e.target))return;const o=e.clipboardData;if(!o)return void this.releasePasteReceiver(e.target);const a=Array.from(o.items||[]),l=a.filter(e=>"file"===e.kind),i=a.filter(e=>"string"===e.kind),s=Kt(o.files||[]);if(t&&e.preventDefault(),this.releasePasteReceiver(e.target),s.length>0||l.length>0){e.preventDefault();let t=[];if(l.length)try{t=await to(l)}catch(n){console.warn("Failed to parse clipboard items, falling back to clipboard files:",n)}t.length||(t=s),t.length&&await this.uploadLocalEntries(t)}i.length>0&&this.uploadFromUrl(i)},handleUploadPasteUrls(){const e=this.pastedUrls.split("\n"),t=e.map(e=>e.trim()).filter(e=>""!==e).filter(e=>/^(https?:\/\/[^\s$.?#].[^\s]*)$/.test(e));if("save"===this.pasteUploadMethod)this.uploadFromUrl(t.map(e=>({kind:"string",getAsString:t=>{t(e)}})));else if("external"===this.pasteUploadMethod)for(let o=0;o`,s=`[img]${e}[/img]`,n=new File([],e.split("/").pop(),{type:"text/plain"});n.uid=Date.now()+o,n.url=e,this.fileList.push({uid:n.uid,name:n.name,url:e,finalURL:e,mdURL:l,htmlURL:i,ubbURL:s,srcID:e,status:"uploading",progreess:0,serverCompress:!1,uploadChannel:"external",retryCount:0}),this.uploadFile({file:n,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})}},uploadFromUrl(e){for(let t=0;t{const o=/^(https?:\/\/[^\s$.?#].[^\s]*)$/;let a="";o.test(e)&&Pt.A.post("/api/fetchRes",{url:e},{responseType:"blob",withAuthCode:!0}).then(o=>{o.headers["content-type"];if(200!=o.status)throw new Error("URL地址请求失败");{const i=o.headers["content-disposition"];if(i){const e=/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/,t=/filename\*\s*=\s*UTF-8''([^;\n]*)/;let o=e.exec(i);if(null!=o&&o[1]){a=o[1].replace(/['"]/g,"");try{a=decodeURIComponent(a)}catch(l){a=""}}""===a&&(o=t.exec(i),null!=o&&o[1]&&(a=decodeURIComponent(o[1])))}if(""===a){const t=new URL(e);a=t.pathname.split("/").pop()}if(""===a){const o=new URL(e);let l=o.pathname.split(".").pop();(!l||""===l||l.length>10)&&(l="bin"),a="PastedFile"+Date.now()+t+"."+l}const s=o.data,n=new File([s],a,{type:s.type});n.uid=Date.now()+t;const r=this.beforeUpload(n);r instanceof Promise&&r.then(e=>{e instanceof File&&this.uploadFile({file:e,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})}).catch(e=>{console.log(e)})}}).catch(e=>{this.$message({type:"warning",message:this.$t("uploadForm.urlRequestFailed")})})})},handleScroll(e){this.listScrolled=e.scrollTop>0&&this.fileList.length>0},retryError(){if(this.exceptionList.length>0){const e=[...this.exceptionList];this.exceptionList=[],this.retryFailedFiles(e,!0)}else this.$message({type:"info",message:this.$t("uploadForm.noFailedFiles")})},handleAutoRetryChange(e){this.$message({type:e?"success":"info",message:e?this.$t("uploadForm.autoRetryOn"):this.$t("uploadForm.autoRetryOff")}),e&&this.exceptionList.length>0&&this.scheduleAutoRetry()},retryFailedFiles(e,t=!1){e.forEach(e=>{const o=this.fileList.find(t=>t.uid===e.file.uid);if(!o)return;t&&(o.retryCount=0);const a=o.retryCount||0;t||athis.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})):(o.status="exception",this.exceptionList.push(e),this.$message({type:"warning",message:this.$t("uploadForm.maxRetryReached",{name:e.name,max:this.maxRetryCount})}))})},scheduleAutoRetry(){this.retryTimer&&clearTimeout(this.retryTimer),this.retryTimer=setTimeout(()=>{if(this.autoReUpload&&this.exceptionList.length>0){const e=[...this.exceptionList];this.exceptionList=[],this.retryFailedFiles(e)}},this.retryDelay)},async uploadToHuggingFaceDirect(e){const t=this.fileList.find(t=>t.uid===e.file.uid);if(!t)return;const o=new AbortController;this.abortControllers.set(e.file.uid,o);const a=this.getFileUploadFolder(e);try{console.log("=== HuggingFace Direct Upload ==="),console.log("File:",e.file.name,"Size:",e.file.size),e.onProgress({percent:5,file:e.file}),console.log("Computing SHA256...");const t=await Ot(e.file);if(console.log("SHA256:",t),o.signal.aborted)return void console.log("HuggingFace 上传已取消:",e.file.name);const l=new Uint8Array(await e.file.slice(0,512).arrayBuffer()),i=btoa(String.fromCharCode(...l));e.onProgress({percent:10,file:e.file}),console.log("Getting LFS upload URL...");const s=await(0,Pt.A)({url:"/upload/huggingface/getUploadUrl",method:"post",data:{fileSize:e.file.size,fileName:e.file.name,fileType:e.file.type,sha256:t,fileSample:i,channelName:this.channelName,uploadNameType:this.uploadNameType,uploadFolder:a},withAuthCode:!0,signal:o.signal});if(!s.data.success)throw new Error(s.data.error||"Failed to get upload URL");const n=s.data;if(console.log("Upload info:",n),n.alreadyExists)console.log("File already exists in LFS, skipping upload"),e.onProgress({percent:90,file:e.file});else if(n.needsLfs&&n.uploadAction){const{href:t,header:a}=n.uploadAction;if(a?.chunk_size)await this.uploadToHuggingFaceMultipart(e,n,o);else{console.log("Uploading to S3 (basic)...");const l=await fetch(t,{method:"PUT",headers:a||{},body:e.file,signal:o.signal});if(!l.ok){const e=await l.text();throw new Error(`S3 upload failed: ${l.status} - ${e}`)}console.log("S3 upload complete")}}if(o.signal.aborted)return void console.log("HuggingFace 上传已取消:",e.file.name);e.onProgress({percent:95,file:e.file}),console.log("Committing file...");const r=await(0,Pt.A)({url:"/upload/huggingface/commitUpload",method:"post",data:{fullId:n.fullId,filePath:n.filePath,sha256:t,fileSize:e.file.size,fileName:e.file.name,fileType:e.file.type,channelName:n.channelName},withAuthCode:!0,signal:o.signal});if(!r.data.success)throw new Error(r.data.error||"Failed to commit file");console.log("Upload complete:",r.data);const d={data:[{src:r.data.src}]};e.onSuccess(d,e.file)}catch(l){if("CanceledError"===l.name||"ERR_CANCELED"===l.code||"AbortError"===l.name)return void console.log("HuggingFace 上传已取消:",e.file.name);console.error("HuggingFace direct upload error:",l),this.exceptionList.push(e),e.onError(l,e.file)}finally{this.abortControllers.delete(e.file.uid),this.onUploadComplete()}},async uploadToHuggingFaceMultipart(e,t,o){const{uploadAction:a}=t,{href:l,header:i}=a,s=parseInt(i.chunk_size),n=Object.keys(i).filter(e=>/^[0-9]+$/.test(e));console.log(`Multipart upload: ${n.length} parts, chunk size: ${s}`);const r=[],d=n.length;for(const u of n){if(o&&o.signal.aborted)throw console.log("HuggingFace 分片上传已取消"),new DOMException("Upload cancelled","AbortError");const t=parseInt(u)-1,a=t*s,l=Math.min(a+s,e.file.size),n=e.file.slice(a,l);console.log(`Uploading part ${u}/${d}`);const c=await fetch(i[u],{method:"PUT",body:n,signal:o?o.signal:void 0});if(!c.ok)throw new Error(`Failed to upload part ${u}: ${c.status}`);const p=c.headers.get("ETag");if(!p)throw new Error(`No ETag for part ${u}`);r.push({partNumber:parseInt(u),etag:p});const h=10+Math.round(parseInt(u)/d*80);e.onProgress({percent:h,file:e.file})}if(o&&o.signal.aborted)throw console.log("HuggingFace 分片上传已取消"),new DOMException("Upload cancelled","AbortError");console.log("Completing multipart upload...");const c=await fetch(l,{method:"POST",headers:{Accept:"application/vnd.git-lfs+json","Content-Type":"application/vnd.git-lfs+json"},body:JSON.stringify({oid:t.oid,parts:r}),signal:o?o.signal:void 0});if(!c.ok){const e=await c.text();throw new Error(`Multipart complete failed: ${c.status} - ${e}`)}console.log("Multipart upload complete")},async convertImageToWebp(e){return new Promise((t,o)=>{if(e.type.includes("gif")||e.type.includes("svg")||e.type.includes("webp"))return void t(null);const a=new Image,l=document.createElement("canvas"),i=l.getContext("2d");a.onload=()=>{l.width=a.width,l.height=a.height,i.drawImage(a,0,0),l.toBlob(l=>{if(l){const o=e.name,a=o.lastIndexOf("."),i=a>0?o.substring(0,a)+".webp":o+".webp",s=new File([l],i,{type:"image/webp"});s.uid=e.uid,this.copyUploadPath(e,s),t(s)}else o(new Error("WebP 转换失败"));URL.revokeObjectURL(a.src)},"image/webp",.92)},a.onerror=()=>{URL.revokeObjectURL(a.src),o(new Error(this.$t("uploadForm.imageLoadFailed")))},a.src=URL.createObjectURL(e)})},handleUploadCardMouseMove(e){const t=this.$refs.uploadCardGlow;if(!t)return;const o=e.currentTarget.getBoundingClientRect(),a=e.clientX-o.left,l=e.clientY-o.top;t.style.opacity="1",t.style.left=a+"px",t.style.top=l+"px"},handleUploadCardMouseLeave(){const e=this.$refs.uploadCardGlow;e&&(e.style.opacity="0")}},beforeDestroy(){this.retryTimer&&clearTimeout(this.retryTimer)}};const ao=(0,W.A)(oo,[["render",Dt],["__scopeId","data-v-991f3af6"]]);var lo=ao,io=o(54560),so=o(33892);const no={class:"directory-suggestion-input",ref:"wrapperRef"},ro={class:"suggestion-dropdown"},co={class:"suggestion-list"},uo=["title","onMousedown"];function po(e,t,o,a,l,n){const r=G.WK;return(0,i.uX)(),(0,i.CE)("div",no,[(0,i.bF)(r,{ref:"inputRef",modelValue:n.inputValue,"onUpdate:modelValue":t[0]||(t[0]=e=>n.inputValue=e),placeholder:o.placeholder,onFocus:n.handleFocus,onBlur:n.handleBlur,onInput:n.handleInput},null,8,["modelValue","placeholder","onFocus","onBlur","onInput"]),(0,i.bo)((0,i.Lk)("div",ro,[(0,i.Lk)("ul",co,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(l.suggestions,(e,t)=>((0,i.uX)(),(0,i.CE)("li",{key:t,class:"suggestion-item",title:e.value,onMousedown:(0,bt.D$)(t=>n.selectItem(e),["prevent"])},(0,s.v_)(e.value),41,uo))),128))])],512),[[bt.aG,l.dropdownVisible&&l.suggestions.length>0]])],512)}var ho={name:"DirectorySuggestionInput",props:{modelValue:{type:String,default:""},placeholder:{type:String,default:""}},emits:["update:modelValue","focus","blur","select"],data(){return{directoryTreeRoot:null,directoryTreeLoaded:!1,directoryTreeLoading:!1,directoryChildrenMap:{},focusTime:null,dropdownVisible:!1,isFocused:!1,suggestions:[]}},computed:{inputValue:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},watch:{modelValue(){this.isFocused&&this.refreshSuggestions()}},methods:{handleFocus(){this.isFocused=!0,this.focusTime=Date.now(),this.ensureDirectoryTreeLoaded(),this.$emit("focus"),setTimeout(()=>{this.isFocused&&(this.refreshSuggestions(),this.dropdownVisible=!0)},500)},handleBlur(){this.isFocused=!1,this.dropdownVisible=!1,this.$emit("blur")},handleInput(e){this.$nextTick(()=>{this.refreshSuggestions(),this.isFocused&&(this.dropdownVisible=!0)})},selectItem(e){const t=e.value;this.inputValue=t,this.$emit("select",t);const o=this.normalizeDirectoryPath(t),a=this.directoryChildrenMap[o];a&&a.length>0?this.$nextTick(()=>{this.refreshSuggestions(),this.dropdownVisible=!0,this.$refs.inputRef?.focus()}):this.dropdownVisible=!1},refreshSuggestions(){this.suggestions=this.getDirectorySuggestions(this.modelValue||"")},normalizeDirectoryPath(e){if(!e)return"/";let t=e;return t.startsWith("/")||(t="/"+t),"/"===t||t.endsWith("/")||(t+="/"),t},buildDirectoryChildrenMap(e){const t={},o=e=>{const a=this.normalizeDirectoryPath(e.path),l=Array.isArray(e.children)?e.children:[];t[a]=l.map(e=>({name:e.name,path:this.normalizeDirectoryPath(e.path)})),l.forEach(o)};o(e),this.directoryChildrenMap=t},async ensureDirectoryTreeLoaded(){if(!this.directoryTreeLoaded&&!this.directoryTreeLoading){this.directoryTreeLoading=!0;try{const e=await Pt.A.get("/api/directoryTree",{withAuthCode:!0}),t=e?.data?.tree;t&&(this.directoryTreeRoot=t,this.buildDirectoryChildrenMap(t),this.directoryTreeLoaded=!0)}catch(e){console.error("Failed to load directory tree for autocomplete:",e)}finally{this.directoryTreeLoading=!1}}},parseDirectoryQuery(e){const t=e&&e.startsWith("/")?e:`/${e||""}`,o=t.slice(1),a=o.split("/"),l=a[a.length-1]||"",i=a.slice(0,-1).filter(Boolean),s=i.length>0?`/${i.join("/")}/`:"/";return{segmentInput:l,parentPath:s}},getDirectorySuggestions(e){const{segmentInput:t,parentPath:o}=this.parseDirectoryQuery(e),a=this.directoryChildrenMap[o]||[];if(!t)return a.slice(0,10).map(e=>({value:e.path}));const l=t.toLowerCase();return a.filter(e=>e.name.toLowerCase().startsWith(l)).slice(0,10).map(e=>({value:e.path}))}}};const mo=(0,W.A)(ho,[["render",po],["__scopeId","data-v-28b8eda7"]]);var fo=mo,go=o(42550);const yo={class:"container"},bo={class:"upload-home"},vo={class:"quick-toolbar-actions"},ko={class:"quick-toolbar-actions-inner"},Co={class:"header"},wo={class:"title"},Fo={class:"title-crayon-text","aria-hidden":"true"},Lo={class:"title-base-text"},Uo={class:"main-title",href:"https://github.com/MarSeventh/CloudFlare-ImgBed",target:"_blank"},$o={class:"dialog-section"},So={class:"section-header"},To={class:"section-title"},_o={class:"section-content"},xo={class:"dialog-section"},Ao={class:"section-header"},Mo={class:"section-title"},Ro={class:"section-content"},Eo={class:"setting-item"},Do={class:"setting-label"},Po={key:0,class:"setting-item"},Io={class:"setting-label"},No={class:"dialog-action"},Vo=["innerHTML"],zo={class:"dialog-footer"};function Wo(e,t,o,n,r,d){const c=go.A,u=(0,i.g2)("font-awesome-icon"),p=l.S2,h=ft.c6,m=ft.Iy,f=ft.dW,g=fo,y=G.WK,b=so.A,v=a.R7,k=io.A,C=lo,w=J.ll,F=J.MQ,L=j.qi,U=X.kZ,$=Qe,S=Q.A,T=H;return(0,i.uX)(),(0,i.CE)("div",yo,[(0,i.Lk)("div",bo,[(0,i.bF)(c,{class:"toggle-dark-button desktop-only"}),(0,i.bF)(f,{class:"more-dropdown desktop-only",trigger:"click",onCommand:d.handleDesktopMenuCommand},{dropdown:(0,i.k6)(()=>[(0,i.bF)(m,null,{default:(0,i.k6)(()=>[(0,i.bF)(h,{command:"showHistory"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"history",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,s.v_)(e.$t("upload.history")),1)]),_:1}),(0,i.bF)(h,{command:"showAnnouncement",disabled:!d.announcementAvailable},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"bullhorn",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,s.v_)(e.$t("upload.announcement")),1)]),_:1},8,["disabled"]),(0,i.bF)(h,{command:"toggleLanguage"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"globe",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,s.v_)("zh-CN"===e.$i18n.locale?"English":"简体中文"),1)]),_:1}),(0,i.bF)(h,{command:"viewDocs"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"book",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,s.v_)(e.$t("upload.viewDocs")),1)]),_:1})]),_:1})]),default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"more-button"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"ellipsis-v",size:"lg"})]),_:1})]),_:1},8,["onCommand"]),(0,i.Lk)("div",{class:(0,s.C4)(["upload-folder-container",{"no-announcement":!d.announcementAvailable}])},[(0,i.Lk)("div",{class:(0,s.C4)(["upload-folder",{active:r.isFolderInputActive}])},[d.showDirectorySuggestions?((0,i.uX)(),(0,i.Wv)(g,{key:0,modelValue:r.uploadFolder,"onUpdate:modelValue":t[0]||(t[0]=e=>r.uploadFolder=e),class:"inner-folder-input",placeholder:e.$t("upload.folderPlaceholder"),onFocus:d.handleFolderInputFocus,onBlur:d.handleFolderInputBlur,onSelect:d.handleDirectorySelect},null,8,["modelValue","placeholder","onFocus","onBlur","onSelect"])):((0,i.uX)(),(0,i.Wv)(y,{key:1,class:"inner-folder-input",modelValue:r.uploadFolder,"onUpdate:modelValue":t[1]||(t[1]=e=>r.uploadFolder=e),placeholder:e.$t("upload.folderPlaceholder"),onFocus:d.handleFolderInputFocus,onBlur:d.handleFolderInputBlur},null,8,["modelValue","placeholder","onFocus","onBlur"]))],2),d.showDirectorySuggestions?((0,i.uX)(),(0,i.Wv)(b,{key:0,"current-directory":r.uploadFolder,source:"upload",onSelect:d.handleDirectorySelect},{trigger:(0,i.k6)(()=>[(0,i.bF)(p,{class:"directory-tree-trigger"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"folder-tree"})]),_:1})]),_:1},8,["current-directory","onSelect"])):(0,i.Q3)("",!0)],2),(0,i.bF)(v,{content:e.$t("upload.switchUploadMethod"),placement:"bottom",disabled:d.disableTooltip,"show-after":1e3},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"upload-method-button desktop-only",onClick:d.handleChangeUploadMethod},{default:(0,i.k6)(()=>["default"===r.uploadMethod?((0,i.uX)(),(0,i.Wv)(u,{key:0,icon:"folder-open",class:"upload-method-icon",size:"lg"})):"paste"===r.uploadMethod?((0,i.uX)(),(0,i.Wv)(u,{key:1,icon:"paste",class:"upload-method-icon",size:"lg"})):(0,i.Q3)("",!0)]),_:1},8,["onClick"])]),_:1},8,["content","disabled"]),(0,i.bF)(f,{class:"mobile-more-dropdown mobile-only",trigger:"click",onCommand:d.handleMobileMenuCommand},{dropdown:(0,i.k6)(()=>[(0,i.bF)(m,null,{default:(0,i.k6)(()=>[(0,i.bF)(h,{command:"toggleTheme"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:d.getThemeIcon(),style:{width:"16px","margin-right":"8px","text-align":"center"}},null,8,["icon"]),(0,i.eW)(" "+(0,s.v_)(d.getThemeText()),1)]),_:1}),(0,i.bF)(h,{command:"toggleUploadMethod"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"default"===r.uploadMethod?"paste":"folder-open",style:{width:"16px","margin-right":"8px","text-align":"center"}},null,8,["icon"]),(0,i.eW)(" "+(0,s.v_)("default"===r.uploadMethod?e.$t("upload.pasteUpload"):e.$t("upload.fileUpload")),1)]),_:1}),(0,i.bF)(h,{command:"showHistory"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"history",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,s.v_)(e.$t("upload.history")),1)]),_:1}),(0,i.bF)(h,{command:"showAnnouncement",disabled:!d.announcementAvailable},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"bullhorn",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,s.v_)(e.$t("upload.announcement")),1)]),_:1},8,["disabled"]),(0,i.bF)(h,{command:"toggleLanguage"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"globe",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,s.v_)("zh-CN"===e.$i18n.locale?"English":"简体中文"),1)]),_:1}),(0,i.bF)(h,{command:"viewDocs"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"book",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,s.v_)(e.$t("upload.viewDocs")),1)]),_:1})]),_:1})]),default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"mobile-more-button"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"ellipsis-v",size:"lg"})]),_:1})]),_:1},8,["onCommand"]),(0,i.Lk)("div",{class:(0,s.C4)(["quick-toolbar",{"is-expanded":r.isQuickToolbarOpen}]),onMouseleave:t[5]||(t[5]=(...e)=>d.handleQuickToolbarLeave&&d.handleQuickToolbarLeave(...e))},[(0,i.Lk)("div",vo,[(0,i.Lk)("div",ko,[(0,i.bF)(v,{disabled:d.disableTooltip||!r.isQuickToolbarOpen,content:e.$t("upload.logout"),placement:"left","hide-after":0,"show-after":1e3},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"quick-toolbar-button",onClick:t[2]||(t[2]=e=>d.handleQuickToolbarCommand("logout"))},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"sign-out-alt",class:"quick-toolbar-icon"})]),_:1})]),_:1},8,["disabled","content"]),(0,i.bF)(v,{disabled:d.disableTooltip||!r.isQuickToolbarOpen,content:e.$t("upload.manage"),placement:"left","hide-after":0,"show-after":1e3},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"quick-toolbar-button",onClick:t[3]||(t[3]=e=>d.handleQuickToolbarCommand("manage"))},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"cog",class:"quick-toolbar-icon"})]),_:1})]),_:1},8,["disabled","content"]),(0,i.bF)(v,{disabled:d.disableTooltip||!r.isQuickToolbarOpen,content:e.$t("upload.linkFormat"),placement:"left","hide-after":0,"show-after":1e3},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"quick-toolbar-button",onClick:t[4]||(t[4]=e=>d.handleQuickToolbarCommand("linkFormat"))},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"link",class:"quick-toolbar-icon"})]),_:1})]),_:1},8,["disabled","content"])])]),(0,i.bF)(v,{disabled:d.disableTooltip,content:e.$t("upload.settings"),placement:"left","hide-after":0,"show-after":1e3},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"quick-toolbar-button",onClick:d.openCompressDialog},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"cloud-upload",class:"quick-toolbar-icon"})]),_:1},8,["onClick"])]),_:1},8,["disabled","content"]),(0,i.bF)(p,{class:(0,s.C4)(["quick-toolbar-button quick-toolbar-more",{"is-active":r.isQuickToolbarOpen}]),"aria-expanded":r.isQuickToolbarOpen,onMouseenter:d.handleQuickToolbarMoreEnter,onClick:d.toggleQuickToolbar},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"chevron-down",class:"quick-toolbar-icon quick-toolbar-toggle-icon"})]),_:1},8,["class","aria-expanded","onMouseenter","onClick"])],34),(0,i.bF)(k,{useConfigLink:!0}),(0,i.Lk)("div",Co,[(0,i.Lk)("h1",wo,[(0,i.Lk)("span",Fo,(0,s.v_)(d.ownerName)+" ImgHub",1),(0,i.Lk)("span",Lo,[(0,i.Lk)("a",Uo,(0,s.v_)(d.ownerName),1),t[24]||(t[24]=(0,i.eW)(" ImgHub ",-1))])])]),(0,i.bF)(C,{selectedUrlForm:r.selectedUrlForm,customerCompress:r.customerCompress,compressQuality:r.compressQuality,compressBar:r.compressBar,serverCompress:r.serverCompress,uploadChannel:r.uploadChannel,channelName:r.channelName,uploadNameType:r.uploadNameType,useCustomUrl:r.useCustomUrl,customUrlPrefix:r.customUrlPrefix,autoRetry:r.autoRetry,urlPrefix:d.urlPrefix,uploadMethod:r.uploadMethod,uploadFolder:r.uploadFolder,convertToWebp:r.convertToWebp,class:"upload"},null,8,["selectedUrlForm","customerCompress","compressQuality","compressBar","serverCompress","uploadChannel","channelName","uploadNameType","useCustomUrl","customUrlPrefix","autoRetry","urlPrefix","uploadMethod","uploadFolder","convertToWebp"]),(0,i.bF)(U,{title:e.$t("settings.linkFormatTitle"),modelValue:r.showUrlDialog,"onUpdate:modelValue":t[10]||(t[10]=e=>r.showUrlDialog=e),width:d.dialogWidth,"show-close":!1,class:"settings-dialog settings-dialog-scope"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",$o,[(0,i.Lk)("div",So,[(0,i.Lk)("span",To,(0,s.v_)(e.$t("settings.defaultCopyLink")),1)]),(0,i.Lk)("div",_o,[(0,i.bF)(F,{modelValue:r.selectedUrlForm,"onUpdate:modelValue":t[6]||(t[6]=e=>r.selectedUrlForm=e),onChange:d.changeUrlForm,class:"radio-card-group grid-2x2"},{default:(0,i.k6)(()=>[(0,i.bF)(w,{value:"url",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"link",class:"radio-icon"}),(0,i.Lk)("span",null,(0,s.v_)(e.$t("settings.rawLink")),1)]),_:1}),(0,i.bF)(w,{value:"md",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"code",class:"radio-icon"}),t[25]||(t[25]=(0,i.Lk)("span",null,"MarkDown",-1))]),_:1}),(0,i.bF)(w,{value:"html",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"code-branch",class:"radio-icon"}),t[26]||(t[26]=(0,i.Lk)("span",null,"HTML",-1))]),_:1}),(0,i.bF)(w,{value:"ubb",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"quote-right",class:"radio-icon"}),t[27]||(t[27]=(0,i.Lk)("span",null,"BBCode",-1))]),_:1})]),_:1},8,["modelValue","onChange"])])]),(0,i.Lk)("div",xo,[(0,i.Lk)("div",Ao,[(0,i.Lk)("span",Mo,(0,s.v_)(e.$t("settings.customLink")),1),(0,i.bF)(v,{content:e.$t("settings.customLinkTooltip"),placement:"top","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",Ro,[(0,i.Lk)("div",Eo,[(0,i.Lk)("span",Do,(0,s.v_)(e.$t("settings.enableCustom")),1),(0,i.bF)(L,{modelValue:r.useCustomUrl,"onUpdate:modelValue":t[7]||(t[7]=e=>r.useCustomUrl=e),"active-value":"true","inactive-value":"false"},null,8,["modelValue"])]),"true"===r.useCustomUrl?((0,i.uX)(),(0,i.CE)("div",Po,[(0,i.Lk)("span",Io,(0,s.v_)(e.$t("settings.customPrefix")),1),(0,i.bF)(y,{modelValue:r.customUrlPrefix,"onUpdate:modelValue":t[8]||(t[8]=e=>r.customUrlPrefix=e),placeholder:e.$t("settings.customPrefixPlaceholder"),class:"setting-input"},null,8,["modelValue","placeholder"])])):(0,i.Q3)("",!0)])]),(0,i.Lk)("div",No,[(0,i.bF)(p,{type:"primary",onClick:t[9]||(t[9]=e=>r.showUrlDialog=!1),class:"confirm-btn"},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e.$t("settings.confirm")),1)]),_:1})])]),_:1},8,["title","modelValue","width"]),(0,i.bF)($,{modelValue:r.showCompressDialog,"onUpdate:modelValue":t[11]||(t[11]=e=>r.showCompressDialog=e),uploadChannel:r.uploadChannel,"onUpdate:uploadChannel":t[12]||(t[12]=e=>r.uploadChannel=e),channelName:r.channelName,"onUpdate:channelName":t[13]||(t[13]=e=>r.channelName=e),availableChannels:r.availableChannels,currentChannelList:d.currentChannelList,uploadFolder:r.uploadFolder,"onUpdate:uploadFolder":t[14]||(t[14]=e=>r.uploadFolder=e),autoRetry:r.autoRetry,"onUpdate:autoRetry":t[15]||(t[15]=e=>r.autoRetry=e),uploadNameType:r.uploadNameType,"onUpdate:uploadNameType":t[16]||(t[16]=e=>r.uploadNameType=e),convertToWebp:r.convertToWebp,"onUpdate:convertToWebp":t[17]||(t[17]=e=>r.convertToWebp=e),customerCompress:r.customerCompress,"onUpdate:customerCompress":t[18]||(t[18]=e=>r.customerCompress=e),compressBar:r.compressBar,"onUpdate:compressBar":t[19]||(t[19]=e=>r.compressBar=e),compressQuality:r.compressQuality,"onUpdate:compressQuality":t[20]||(t[20]=e=>r.compressQuality=e),serverCompress:r.serverCompress,"onUpdate:serverCompress":t[21]||(t[21]=e=>r.serverCompress=e)},null,8,["modelValue","uploadChannel","channelName","availableChannels","currentChannelList","uploadFolder","autoRetry","uploadNameType","convertToWebp","customerCompress","compressBar","compressQuality","serverCompress"])]),(0,i.bF)(S,{class:"footer"}),(0,i.bF)(U,{title:e.$t("upload.announcementTitle"),modelValue:r.showAnnouncementDialog,"onUpdate:modelValue":t[22]||(t[22]=e=>r.showAnnouncementDialog=e),width:d.dialogWidth,"show-close":!1,"close-on-click-modal":!1,"close-on-press-escape":!1,center:""},{footer:(0,i.k6)(()=>[(0,i.Lk)("span",zo,[(0,i.bF)(p,{type:"primary",onClick:d.acknowledgeAnnouncement},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e.$t("upload.announcementAck")),1)]),_:1},8,["onClick"])])]),default:(0,i.k6)(()=>[(0,i.Lk)("div",{innerHTML:r.announcementContent},null,8,Vo)]),_:1},8,["title","modelValue","width"]),(0,i.bF)(T,{show:r.showHistory,onClose:t[23]||(t[23]=e=>r.showHistory=!1)},null,8,["show"])])}o(13579);var Bo=o(46638),Ho=o(48903),Qo=o(90144),Xo=o(62388),Oo={name:"UploadHome",mixins:[Ho.A],data(){return{selectedUrlForm:(0,Qo.KR)(""),showUrlDialog:!1,showCompressDialog:!1,customerCompress:!0,compressQuality:4,compressBar:5,convertToWebp:!1,serverCompress:!0,uploadChannel:"",channelName:"",availableChannels:{},uploadNameType:"",customUrlPrefix:"",useCustomUrl:"false",autoRetry:!0,useDefaultWallPaper:!1,uploadMethod:"default",uploadFolder:"",isFolderInputActive:!1,isQuickToolbarOpen:!1,isQuickToolbarPinned:!1,showAnnouncementDialog:!1,announcementContent:"",displayedAnnouncementRefreshAt:null,showHistory:!1,themeMode:"auto"}},watch:{customerCompress(e){this.updateCompressConfig("customerCompress",e)},compressQuality(e){this.updateCompressConfig("compressQuality",e)},compressBar(e){null===e||void 0===e||e<1?this.compressBar=1:(this.compressQuality>e&&(this.compressQuality=e),this.updateCompressConfig("compressBar",e))},serverCompress(e){this.updateCompressConfig("serverCompress",e)},convertToWebp(e){this.updateCompressConfig("convertToWebp",e)},uploadChannel(e){this.updateStoreUploadChannel(e);const t=this.availableChannels[e]||[],o=this.storeChannelName;o&&t.some(e=>e.name===o)?this.channelName=o:this.channelName=""},channelName(e){this.$store.commit("setStoreChannelName",e||"")},uploadNameType(e){this.updateStoreUploadNameType(e)},customUrlPrefix(e){this.$store.commit("setCustomUrlSettings",{key:"customUrlPrefix",value:e})},useCustomUrl(e){this.$store.commit("setCustomUrlSettings",{key:"useCustomUrl",value:e})},autoRetry(e){this.$store.commit("setStoreAutoRetry",e)},uploadFolder(e){if(this.validateUploadFolder(e,!1)){const t=(0,Xo.G)(e,{strict:!0});t.valid&&this.$store.commit("setStoreUploadFolder",e)}else this.$nextTick(()=>{this.uploadFolder=this.storeUploadFolder})}},computed:{...(0,Nt.L8)(["userConfig","uploadCopyUrlForm","compressConfig","storeUploadChannel","storeChannelName","storeUploadNameType","customUrlSettings","storeAutoRetry","storeUploadMethod","storeUploadFolder"]),ownerName(){return this.userConfig?.ownerName||"Sanyue"},dialogWidth(){return window.innerWidth>768?"50%":"90%"},disableTooltip(){return window.innerWidth<768},urlPrefix(){return this.userConfig?.urlPrefix||`${window.location.protocol}//${window.location.host}/file/`},announcementAvailable(){return!!this.userConfig?.announcement},showDirectorySuggestions(){return this.userConfig?.showDirectorySuggestions??!1},currentChannelList(){return this.availableChannels[this.uploadChannel]||[]}},mounted(){this.initializeBackground("uploadBkImg",".container",!0,!0),this.selectedUrlForm=this.uploadCopyUrlForm||"url",this.customerCompress=this.compressConfig.customerCompress??this.parseBoolean(this.userConfig?.defaultCustomerCompress,!0),this.compressQuality=this.compressConfig.compressQuality??this.parseNumber(this.userConfig?.defaultCompressQuality,4),this.compressBar=this.compressConfig.compressBar??this.parseNumber(this.userConfig?.defaultCompressBar,5),this.serverCompress=this.compressConfig.serverCompress??!0,this.convertToWebp=this.compressConfig.convertToWebp??this.parseBoolean(this.userConfig?.defaultConvertToWebp,!1),this.uploadChannel=this.storeUploadChannel||this.userConfig?.defaultUploadChannel||"telegram",this.autoRetry=this.storeAutoRetry,this.uploadNameType=this.storeUploadNameType||this.userConfig?.defaultUploadNameType||"default",this.customUrlPrefix=this.customUrlSettings.customUrlPrefix,this.useCustomUrl=this.customUrlSettings.useCustomUrl,this.uploadMethod=this.storeUploadMethod,this.fetchAvailableChannels(),this.uploadFolder=this.storeUploadFolder||this.userConfig?.defaultUploadFolder||"";const e=this.$store.getters.cusDarkMode,t=this.$store.getters.useDarkMode;this.themeMode=e?t?"dark":"light":"auto",this.showAnnouncementIfNeeded()},components:{UploadForm:lo,Footer:Q.A,ToggleDark:go.A,Logo:io.A,UploadHistory:H,UploadSettingsDialog:Qe,DirectoryTreePicker:so.A,DirectorySuggestionInput:fo},methods:{async fetchAvailableChannels(){try{const e=await Pt.A.get("/api/channels",{withAuthCode:!0});if(e.data){this.availableChannels=e.data;const t=this.storeChannelName,o=this.userConfig?.defaultChannelName,a=this.availableChannels[this.uploadChannel]||[];t&&a.some(e=>e.name===t)?this.channelName=t:""!==t&&null!==t&&void 0!==t||""!==t&&o&&a.some(e=>e.name===o)&&(this.channelName=o)}}catch(e){console.error("Failed to fetch available channels:",e)}},validateUploadFolder(e,t=!0){e&&!e.startsWith("/")&&(e="/"+e,this.uploadFolder=e);const o=(0,Xo.G)(e,{strict:t});return!!o.valid||(this.$message.error(o.error),!1)},handleFolderInputFocus(){this.isFolderInputActive=!0},handleFolderInputBlur(){this.isFolderInputActive=!1,this.uploadFolder&&!this.uploadFolder.startsWith("/")&&(this.uploadFolder="/"+this.uploadFolder),this.validateUploadFolder(this.uploadFolder,!0)||this.$nextTick(()=>{this.uploadFolder=this.storeUploadFolder})},handleManage(){this.$router.push("/dashboard")},parseBoolean(e,t){return void 0===e||null===e?t:"boolean"===typeof e?e:"string"===typeof e?"true"===e:t},parseNumber(e,t){if(void 0===e||null===e)return t;const o=parseFloat(e);return isNaN(o)?t:o},openUrlDialog(){this.showUrlDialog=!0},handleLogout(){Pt.A.post("/api/auth/logout",{authType:"user"},{withCredentials:!0}).finally(()=>{this.$store.commit("setUserLoggedIn",!1),this.$router.push("/login"),this.$message.success(this.$t("upload.logoutSuccess"))})},changeUrlForm(){this.$store.commit("setUploadCopyUrlForm",this.selectedUrlForm)},openCompressDialog(){this.showCompressDialog=!0},updateCompressConfig(e,t){this.$store.commit("setCompressConfig",{key:e,value:t})},updateStoreUploadChannel(e){this.$store.commit("setStoreUploadChannel",e)},updateStoreUploadNameType(e){this.$store.commit("setStoreUploadNameType",e)},handleQuickToolbarMoreEnter(){this.isQuickToolbarOpen=!0},handleQuickToolbarLeave(){this.isQuickToolbarPinned||(this.isQuickToolbarOpen=!1)},toggleQuickToolbar(){this.isQuickToolbarPinned=!this.isQuickToolbarPinned,this.isQuickToolbarOpen=this.isQuickToolbarPinned},closeQuickToolbar(){this.isQuickToolbarPinned=!1,this.isQuickToolbarOpen=!1},handleQuickToolbarCommand(e){this.closeQuickToolbar(),"linkFormat"===e?this.openUrlDialog():"manage"===e?this.handleManage():"logout"===e&&this.handleLogout()},handleChangeUploadMethod(){this.uploadMethod="default"===this.uploadMethod?"paste":"default",this.$store.commit("setUploadMethod",this.uploadMethod)},handleMobileMenuCommand(e){if("toggleTheme"===e)"auto"===this.themeMode?(this.themeMode="light",this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!1)):"light"===this.themeMode?(this.themeMode="dark",this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!0)):(this.themeMode="auto",this.$store.commit("setCusDarkMode",!1));else if("toggleUploadMethod"===e)this.handleChangeUploadMethod();else if("viewDocs"===e)window.open("https://cfbed.sanyue.de/qa/","_blank");else if("showHistory"===e)this.showHistory=!0;else if("showAnnouncement"===e)this.handleShowAnnouncement();else if("toggleLanguage"===e){const e="zh-CN"===this.$i18n.locale?"en":"zh-CN";(0,Bo.xS)(e)}},handleDesktopMenuCommand(e){if("viewDocs"===e)window.open("https://cfbed.sanyue.de/qa/","_blank");else if("showHistory"===e)this.showHistory=!0;else if("showAnnouncement"===e)this.handleShowAnnouncement();else if("toggleLanguage"===e){const e="zh-CN"===this.$i18n.locale?"en":"zh-CN";(0,Bo.xS)(e)}},getThemeIcon(){return"auto"===this.themeMode?"sun":"light"===this.themeMode?"moon":"adjust"},getThemeText(){return"auto"===this.themeMode?this.$t("theme.lightMode"):"light"===this.themeMode?this.$t("theme.darkMode"):this.$t("theme.autoMode")},handleShowAnnouncement(){const e=this.userConfig?.announcement;e?this.openAnnouncement(e):this.$message.info(this.$t("upload.noAnnouncement"))},getAnnouncementRefreshAt(){const e=Number(this.userConfig?.announcementRefreshAt);return Number.isFinite(e)&&e>0?e:null},openAnnouncement(e){this.announcementContent=e,this.displayedAnnouncementRefreshAt=this.getAnnouncementRefreshAt(),this.showAnnouncementDialog=!0},showAnnouncementIfNeeded(){const e=this.userConfig?.announcement;if(!e)return;const t=this.getAnnouncementRefreshAt();if(t){const o=Number(localStorage.getItem("announcementAcknowledgedRefreshAt"));return void((!Number.isFinite(o)||t>o)&&this.openAnnouncement(e))}localStorage.getItem("announcementAcknowledgedAt")||this.openAnnouncement(e)},acknowledgeAnnouncement(){localStorage.setItem("announcementAcknowledgedAt",String(Date.now())),this.displayedAnnouncementRefreshAt&&localStorage.setItem("announcementAcknowledgedRefreshAt",String(this.displayedAnnouncementRefreshAt)),this.showAnnouncementDialog=!1},handleDirectorySelect(e){this.uploadFolder=e,this.validateUploadFolder(e,!0)&&this.$store.commit("setStoreUploadFolder",e)}}};const qo=(0,W.A)(Oo,[["render",Wo],["__scopeId","data-v-9426cafc"]]);var jo=qo},67819:function(e,t,o){"use strict";o(85331)},70797:function(e,t,o){"use strict";o.d(t,{A:function(){return s}});o(44114);var a=o(25507),l=o(16915);let i=!1;async function s(e,t={}){t.credentials="include",t.headers={...t.headers};const o=await fetch(e,t);return 401!==o.status||i||(i=!0,a.A.commit("setAdminLoggedIn",!1),l.A.push("/adminLogin").finally(()=>{i=!1})),o}},76334:function(e,t,o){e.exports=o(11393)},79899:function(e,t,o){"use strict";o(85331)},85970:function(e,t,o){"use strict";o(85331)},86975:function(e,t,o){"use strict";o.d(t,{A:function(){return p}});var a=o(56768),l=o(24232);const i={key:0,class:"page-footer"},s=["href"];function n(e,t,o,n,r,d){const c=(0,a.g2)("font-awesome-icon");return d.disableFooter?(0,a.Q3)("",!0):((0,a.uX)(),(0,a.CE)("div",i,[(0,a.Lk)("p",null,[(0,a.eW)("© 2024-"+(0,l.v_)(d.thisYear)+" Designed by ",1),t[0]||(t[0]=(0,a.Lk)("a",{class:"footer-name",href:"https://github.com/MarSeventh",target:"_blank"},"SanyueQi",-1)),t[1]||(t[1]=(0,a.eW)(" for You! ",-1)),(0,a.Lk)("a",{href:d.footerLink,target:"_blank"},[(0,a.bF)(c,{icon:"paper-plane",class:"footer-link-icon"})],8,s)])]))}var r=o(60782),d={name:"Footer",computed:{...(0,r.L8)(["userConfig"]),footerLink(){return this.userConfig?.footerLink||"https://github.com/MarSeventh"},thisYear(){return(new Date).getFullYear()},disableFooter(){return this.userConfig?.disableFooter||!1}}},c=o(71241);const u=(0,c.A)(d,[["render",n],["__scopeId","data-v-08acbaa9"]]);var p=u},88830:function(e,t,o){"use strict";o(85331)},95385:function(e,t,o){"use strict";o(85331)},96682:function(e,t,o){"use strict";e.exports=o.p+"img/404.8ed11fb3.png"},96808:function(e,t,o){"use strict";o(85331),o(18785),o(67819),o(85970),o(19104)},97769:function(e,t,o){"use strict";o.d(t,{A:function(){return u}});var a=o(56768);const l={key:0,class:"channel-svg-icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},i={key:1,class:"channel-svg-icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},s={key:2,class:"channel-svg-icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"};function n(e,t,o,n,r,d){const c=(0,a.g2)("font-awesome-icon");return(0,a.uX)(),(0,a.CE)("span",(0,a.v6)(e.$attrs,{class:["channel-icon-wrapper",`channel-brand-${o.type}`]}),["telegram"===o.type?((0,a.uX)(),(0,a.CE)("svg",l,[...t[0]||(t[0]=[(0,a.Lk)("path",{d:"M417.28 795.733333 429.226667 615.253333 756.906667 320C771.413333 306.773333 753.92 300.373333 734.72 311.893333L330.24 567.466667 155.306667 512C117.76 501.333333 117.333333 475.306667 163.84 456.533333L845.226667 193.706667C876.373333 179.626667 906.24 201.386667 894.293333 249.173333L778.24 795.733333C770.133333 834.56 746.666667 843.946667 714.24 826.026667L537.6 695.466667 452.693333 777.813333C442.88 787.626667 434.773333 795.733333 417.28 795.733333Z"},null,-1)])])):"huggingface"===o.type?((0,a.uX)(),(0,a.CE)("svg",i,[...t[1]||(t[1]=[(0,a.Fv)('',9)])])):"webdav"===o.type?((0,a.uX)(),(0,a.CE)("svg",s,[...t[2]||(t[2]=[(0,a.Lk)("path",{d:"M446.293333 810.666667C384 898.986667 262.4 921.173333 174.506667 859.733333c-87.466667-61.44-107.946667-183.893333-46.506667-273.066666a195.626667 195.626667 0 0 1 152.746667-84.48l2.133333 61.013333c-38.826667 2.986667-76.373333 23.04-100.693333 58.026667-42.666667 61.44-29.44 144.213333 29.013333 185.6 58.88 40.96 141.226667 25.173333 183.893333-35.84 13.226667-19.2 20.906667-40.106667 23.893334-61.44v-43.093334l238.08-1.706666 2.986666-4.693334c22.613333-39.253333 71.68-52.906667 110.08-30.72a81.066667 81.066667 0 0 1 29.013334 110.933334c-22.613333 38.826667-72.106667 52.48-110.506667 30.293333-17.493333-9.813333-29.866667-25.6-35.413333-43.52l-173.653334 0.853333a211.626667 211.626667 0 0 1-33.28 82.773334m310.613334-304.64c107.946667 13.226667 184.746667 110.08 171.52 216.32-13.226667 106.666667-111.36 182.186667-219.306667 168.96a197.504 197.504 0 0 1-146.346667-94.293334l52.906667-30.72a137.386667 137.386667 0 0 0 98.986667 61.866667c74.666667 8.96 140.8-41.813333 149.76-113.066667 8.96-71.253333-43.946667-136.533333-117.76-145.493333-23.04-2.56-45.226667 0.426667-65.28 7.68l-36.266667 18.773333-110.08-203.52h-9.386667a81.322667 81.322667 0 0 1-78.933333-83.2c1.28-44.373333 39.68-78.933333 84.48-77.226666 44.8 2.56 80.213333 38.826667 78.933333 83.2-0.853333 18.773333-8.106667 35.84-19.626666 49.066666l81.066666 149.76c26.453333-8.533333 55.466667-11.52 85.333334-8.106666M352 389.973333c-42.666667-100.266667 2.56-215.04 101.12-256.853333 98.986667-41.813333 213.333333 5.546667 256 105.813333 25.173333 58.453333 20.053333 122.453333-8.533333 173.653334l-52.906667-30.72c17.92-34.56 20.906667-76.8 3.84-116.48-29.013333-68.266667-106.24-101.12-172.373333-73.386667-66.56 28.16-96.426667 106.666667-67.413334 174.933333 11.946667 28.16 32 49.92 56.32 64.426667l16.64 8.96-130.986666 212.906667c1.28 2.133333 2.986667 4.693333 4.266666 8.106666 20.906667 38.826667 6.4 87.893333-32.853333 108.8-38.826667 20.906667-87.893333 5.546667-109.226667-34.56-20.906667-39.68-6.4-88.746667 32.853334-109.653333 16.64-8.96 34.986667-11.093333 52.48-7.253333l98.56-160.853334c-20.053333-18.346667-37.12-41.386667-47.786667-67.84z"},null,-1)])])):((0,a.uX)(),(0,a.Wv)(c,{key:3,icon:d.fontAwesomeIcon},null,8,["icon"]))],16)}var r={name:"ChannelIcon",inheritAttrs:!1,props:{type:{type:String,required:!0}},computed:{fontAwesomeIcon(){const e={cfr2:["fab","cloudflare"],s3:["fab","aws"],discord:["fab","discord"]};return e[this.type]||"server"}}},d=o(71241);const c=(0,d.A)(r,[["render",n],["__scopeId","data-v-ce6ff2ce"]]);var u=c}}]); -//# sourceMappingURL=502.58060353.js.map \ No newline at end of file diff --git a/frontend-dist/js/502.58060353.js.gz b/frontend-dist/js/502.58060353.js.gz deleted file mode 100644 index dc3fe5f126453cc1e01aee80c8551559a35267c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33835 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 D*sLFD diff --git a/frontend-dist/js/502.58060353.js.map.gz b/frontend-dist/js/502.58060353.js.map.gz deleted file mode 100644 index 6e24590484c4ebfa39b88f63ee003d7f37dceb0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85300 zcmV(!K;^$5iwFP!000023hcevdMdllHhM4XG9v@>M7-!Q(viB!O)MY zIjt#GE7GH0aB7t5-qOE=Tc2K6PMbH+guwyymd=c%^p7}^1oamKk#qyA-5gYT;fs{eh{3Nl`7-OH5Wz$%6Z~( zNwnZabr+=wkC|JbzdWg&{(X{O(!W*b37V)yv+*Lc5e=#!tWqq$gDe6KqTtNp4L@;*Lam}i^qthx(@OPpfqy9ZmtN0w zM67d-Z>idfEDJryzZf2U+1E~^sI2CU_yM&vlxpyZ8_`MxT**|sJ>TnI*gpSLWrDnO z#$4MYg82GHTBv4EEa;u%)P7mCH zJVyhzixL(N9IEF|-MJG+HG%${Jkyx^F2?#8pM${8L`WM;?TmS)qoUM-ah5wh%Szv= z^{l(-0Xo4%?XWc}XJm!A0Fw+?!P|t((?6H!XI9IgBhu#5Wv8hdVNC~t_9TSz#CX{X~^%|9KM1^k;%Qk7v!?I^iKb8qK&$Lntr{6uNC%JEX zQjQ8c90BA#!U4cEI0jWs4448D;}nl(Qi`jjO~AA`^HN&&XLNFh49eM^_j}tTwo`?` zqk4LVc5RctOlh|`J&}!?*AW|9q2@mR8=(7J6CL`z*DN!pGWSl0!(H5x89Y+&2-WO< zU9VKLHiwLp{yjr~$Hrmb6CAT+?Ub8nZf>l3VFD21xhb$JIJ<#5+~&70E*;RvAlFqv#K2cNpLv&}wolBBk(&ax2nj14-S-?W zbBPM%*}#*pFlu_kpFZ%P4S7kFHuR#dV0sn>+4D?@Bp(lPV2|W>Qm3h~*Q{WQmotyM zK1Fp>M?=<|YFc^@2cVZ{pox@DUc$Ku4AC5c6mdydqqYsYltZiTmbmg{#;C3|N}r>T z-6CoZIdZQUZP$MB|8nI2E!<*~;YT`Kx9A1Q?voRNYJDaF= zS#W0RQZBvBN0@JTd$-PT59GDOJnP5qus6b6<9v2f}ORXcE%k(>eEUj=3EbdFi8Osh%AsXsg|+%VW9s3Z`7O zq?Fs@Xpt!z6`>*EB^B~>CQJ4(IDWV@WPN8vCZTN6kzG6Zu3Jo40O>&Vj*rDiGU1K2 z-#i%ecg=_MSV?YYzYmdOEo@ch=}!kOO}O*-i&ht?aecTqq=1}8(J+NDV-pbmQ~B*| z|8Wog!&LH@`~B}FuYdbA|Bfzco>PBLSyHWKagOYIuB~(to{?9=vx@feK_kf+=Quwp zIxLfFk#Ro#SIF!mPpOgjh0IP5I*!=T_5ZJA_`h5-M5P&hTrxZX31^Fmk|EW6%>%Pk z7K(Ks=F^_1RL^s*H#?VT+6MyVI}}d7qwebX{OpAbjf?gf20+hVu}ysU4K}xom0p** zlGr7TdQx*lrZZRV09L!NV-RiIt<{!^3=}<^VH>86W4xR}R?54y;!fBHf0EaZ`mDx} zM%s}eclxOG&07~tZ49y#~>!L%y@@#n6U=GxN zf3T^b{5i7*nXflh4-+Ie!7p}|9LsWy%eE5D;Pb(@nuE~g&T)m_W$|$4^1SiaJB$Aj z(w#e3Aa11U(0RB7(Pu;F@}%Nsdj3i_r|6vI?C5BFmkt|}LA#yFn@A=^YlWyaR~g@w z#iS0(x7;?Ant8M`!tm$5WBp(Fk*0F#JD`eB*dyA}NY}nArKGXz2M5KZmR?vad=s@K z0G5b~g+TcERlzO<{W<{+yrKqrvh^b)dbBJpR}!P?{F5qUQUX=;iPg*D-7_q#I zqN52;WTu~foSA}5PA5Zc%rF@4QVS5H5+@=EUW0-g`(xwlt7fLw2GN+|NK zyi(wlxW?mG<(10La zWYPth9ABvu-q{09CSubE1ZzdS#H=;{nDLJ}er)*1Rwot{NsUICanRS%oZ#TCGw`L-IDJ><<8;JWB9_A##!^-I(`O3wm1;bN z#Z^!9pi`cR+V9Fdb!E{5W$t>+CF`d(WgY}Q@TryQYUtuTW!_*9kN)zNc{4D<5418* z)awH58K^6e)5FLlRB>}L^Fkgoa(bqfxx?hw!M^rJ!o#mA^-iA(5}>I}wh-3Z;y=qX zsk|YUb!KipFD)7G&AKox;pB;RtYMK1?m|t9(L%lQ6pqlvctPkzTVZe7@AN0bCrrLF z;KQiGG<7?cjn~o2+&J^WT%tt}db(-bs@lsKSK8%?S#Yi0(%M6<4P|aG4gRhvbGzam z)EVnlpJ+mwnLdA0SSOFY&SU46uXx1eGdYDfTB%Q_>ugb&i?2-4VKWgL1%!*mn{aze zuj^3mL^w!8nHzK$y12@jKCLVBjCsL5qH>|B+zW`Rs?7800+HU+i$P+xG-goW>xL(<%-VuFu6xwEnN}Vy1E3lV9%Pdw5xUZ_JD%Zcrtd!|E-w#~Cj%49xW$={4zRAQHw%812@Tie ziZ6+kg;*rJb;{VKW=Iy@0Fs@#PMYMrE`{gSSB%29rrr%#SjX(vXS^b>^Y9n(GCHD7 zt{AZp2!UVokcv=8`#IW+eG)#2Qh`jUY^Z)S)J(H0oiX2XX8uBTG;6|5zj&q5dWD#? z?DGn(bHszmenEeIpk$!TQ;#pHRa_CnJ=`!kBdL&gP#r`tbfG^Gdjix z8^7j*HHTKK|C{+B5BxvH2rvKt$q4HXah>S@7$dZJLNbfe%$U=SHYvvC8n1;hENGL6 zsB4tD34xzP^t#W|f8~Vk2j(^xSW@<$u7YquZo8$VQgvk>P6B2dW4_weL-h;e6zY>} zXr8Z6%gUd#azve!xN}i|J_Jw!;<(ZgLwZ9^zA}%fkDfmCMbh(?xvN{=Y92-!rJKq; z3T@Vu_W;7l;`(#xpEkwpXKX)>GWYbCV(q!XRV`nFo|3_q@ARA*s#o-*eiP-WG_TqF zIe+^=OxYAOz-^xgM2-GUPXyR9$-zV&S-kHAJn(_;;<9;ZHSRS`q{*A;u2oBw4+_=j zz3B@VU>yTasgSxuL z)gXWEb~m88dgtAXD^f9GOkC)d>>6hMcaMoCTHVl~dV0f0KSca zJB!T>+N`Azog-vlAo(i;!alpkPNOZI#+RRrs-P3vypY5Z`EM9zBoh`}x;lj#2CTru z8JK|yVS4QVes2Hd)rz=rW^Qf$-?LDkPvkS2RP(M<<=jK{o z2`lf3FeMB zRs#S6Put2ukf^c3xz;J7udm8n54~Sr z!3IT^oMsxB9{LS=HO~Xe_>uHSwej?1brDn0Qs%Z-2<7}67EzZsaVg%w&OpPT(e>us zYd8{lF_J0!{u_>}mNGXTlW;9*DRVb-#Re8+Yc$h*1soXFFJ9`TiRu@JK5B2W5;HCm zivVeqNps6JRu)xOWYF@uI#aS@5bb5*gy#Odgn_n{d5{j1P$#q+umCC&VvX60I4#wb z8EdJBt{iu9(LL=)m%H{+&6_Ld`&S~&2FjG?rReWR^t>ANysFIo1*A|C0Yn#Ejw-e6 zA!D{O+bini#*Z#?*deeoRe&q2;~c6ID}aAvF5xwEiVUs;lhWS%KsMG|M>mE!ci=tN zv2~%~^y^%XGj&TjQFk_Hke^DX-k6vEElF*C_2ijPahNcuFO5p zSv|EsQV#|OI$)`WbTN5DCfwI@h0)h~Ds^OhP)S72%CA)TgYzCqQDU+;j z%+ed#D@rsX^S`Ko|*{uUNr{mIObsvhQOhO6r9|R)DsHt(pVPbp4 z1byXIcKGm|Sci8f)m&CWJ;qzkDIkyb8-vR(vrl%>Fmsc?Jzjv#JW_z$seb&jiL$y4 zn@H&CpLNS;xDp93QyAtdYyB65m)SMlDEEXHs}yOF?Bt3g_6(RZ6Rp>OA(X^r56cs? zCWq7ik_F=WhTsF{W6n_kYG^i<;~iJ^aEXQ(>1vVECs6*<8{LMJU+Ui^ z)%~vgr`~O($r;}ytEBv=!EL0onI@L19qFglF}Ls!U0C+|nek4%Xr^-JH*+8_4|HCE z^0S52ZK%0?!VSK%xM68zdJC!3SN_xNHq?;3tP@KG%72;3C8#Wl?xwYd7={X|bGn>) z&|pm=9L;zawCDJB#@6B1t-bXzF4&|BxJ%XeE@f*7QeX<7Rp>HydsVO=W@s|uL%LDX zLvN_P+-M^XTHtf+tF zUP2tJ>w#l+|H^f1QZzndqMWl-HqwBuF$#+?$v#%ml7p|jG^;wxsFZE{s*B5VnWZiB zW+#CVEP|Q|rp#B{^y*p$AHAPm8Mb;gPt1c{+CEV|$9VcGmYkxYSk? zwyq6Wp0PkmqDUM_f?rYbQ#n!?SHDsihZ9wN zj<7zr2P$A%`ijGQI=8;#Cip5zl| z!cBq%m?b*9{TmOhku{fDO1bb835eB^MSI&IGvOyLX%{8CM+lD~VB5ext60a$o~Y4X zlJsSwdU_gw=il&HpM>e~bk&vF1)(y`t)MSN{R75_KoKtEO9g)q<6B%u*FXqKKW2U7 z{~Fde;>GFcb?__ZH~%x{H~k^=+XhL@@13wx(MPM&QF6_A=|3jd&jWI0PU&T&#^ynd z%uS?1`y?E4mh0%~QQR+W$QEUi*);_W_&U z+w_oT4pG+3k)Uk!MB)R#ZL&s^L(6>j${>=6Dk1lEgLj@5Xz#Lk_>I8l4- z%t`jcos%RdfDl6J_(Fw!IiZ`7?0t{jNzG}eVEQ$f)7l{&>|v)Z0)>o3ncHJ_8n#%U z$8pY!0G1%aJR)W+-7vi8tw2Po%6t6O7V_*p3gq2W=H)sxhPl^5U8&qYSrR0 zz0efmsU|y^KdSD7Ti*rTp66`zUh4=F46s2)OxU-=pev+ShmUjvF0eq{e`>+U4iUut zvt*aJDN>AYtf2_7*V=TiH)Luzc`Z8>Z)vjqvCfqo zR6Z{}GtAns;Vz6U$pt%bbPWQjR|;-Pyc=um=H|5FPQ@8EY$?)*=gqjWM-D`?LJhNf zXpT;}WY$c>zPu7W?2m$Hhz5Uy*&u>rfU|0+?_ot__$+I!Tf2r0;z!n^OE#LpeYatN zCgDT%oi}X5W8Azv;?6e+jp1kDP4LeDwmg{f$U)2O8WFL24-v6ufw&*uJGYx z&Z9pk4GH7I5qKWsqck}^tJq*D<|*<}$nX|zGGOc>`_%+4j8d!P6S)5SC(w&cV6;W( zRGcDXM~+bg5+3H0Pn3EgItja8Zg0Y6s%3AcD?h0t{~fEVDu2jK$h)k$R11_l7GuCZ z8jazj{kBa81H1BHtlkMl0dN>;DoA3a=US-?Vx%5>t^~@M$zy!M>7W~PQjFS+*|8Iz zVxad>WU3az5UcTLvA?2!tgc`QTY8H*Nt36wzO6@rWX|i-?yKMj&Dx7n)pT?h_Jkg@ zwV^rae9!58`HRk1>Hbyvv#uC)Wt!9#+BkV^oB?+Q$49DgAe5cm1B(G`XxFoX*sC(n z@X4&DZ+;?;l?kAXux6Fa%{NjRX;+L?pWQ1w;baixalKbMYk=izbJeqh-Y+MPjZ>2*fL$`@H7Pu_Mjh6d_m7v7Zs~xeTem@u~CR zQ#a)sz=w*?V^tmN@T$%7)ebH&=`t``o$EiwWYtbDZ!C(`fs#BrzyMrA`LX))aWDDt zDEaZsBtG8!tZqLU4)JA)jx8bhg?QEbkN?TigI_&9QpxDwU-v&UCx;7l@pnw-<}WqV zsW~sYHK(PX`=(!W8XLH8Qg=sSHg2J@Tk*twGp#wDnYnM~HD`$y?we)J#X-4m)^2SZ z_s!OMQ?wvj3dsFa;Lays6*!@j$>AuwKu`w!UV{C~V?haHpw-_Ick#3UMp~Nf0I&^y6+vL1^WVMc5Fn zWlW!cP|439#+pO=s<<983@HL*%{f%qZ_`^hoXdi*eNjA@UG3X=E(@#cVCpmT;?NxE z?g<`sx8MtBV<}jH8jA$*4KAdcN7dgKk3#(9FXp8yp_qvk8(#l1zKKjnS(&jPdiEHO z1lAr^qqZ`}w)OhQZJimVIP$T{+qNpoyHUp@Wk{e2*84l_lwmpVJ$DE1>KgTFX%{J5 z`!RlK#W7Uotj5Y0(>hw7WAy(6L+glnO8v7Y{ow&mOVQSUlQ3~?GubhzmRD?Is`W`- zVqO+7v7O&K4?kAL*!&;go$aef;c}#RFLWF5j%Ya5y{(EaGUw~yDUMS93?0qf;stpq z7ZJopRQV8Y-&=ezjmNr|K|l7E#~p0tizoZALbvePMzW6EQ+CI`em;VlRPPo(yl-Z!#)z<;bk2$GF0+5m ziC!!uy0dD;c5-*z<`C;Tx+hIgY+dWUdlo>t<~nh;*mGiT+!cxqokxW#4knMj+L+Sgth^|&&(a`ojk%rFyLo}3pXuIpu^?6;USeMWH zJ$XOn^mh+jDWw~Qln7Bjat z3=^Brcl9th>7AAC>wFW44G%Wj)`2q5xwYD04^!(;^B%g>wD#f%v7xBi{-;R30}19h z$?xikB)|C2lKk0ij97a57|~ze^En<;OaAB70wfWrrR!U2@k46K+&kp>9AeKyvgx*d zwi9^t2isxum^emki1prvI5x&aMe^}64u3O74{Prc5}+4GvSHxK&vwbHENT5m8zuAo zMyc}sxJ_XZ+g6X*fn*ljFH4;$eVD|3WSkRmclTqdE8F;9>SA;~&jZKl__xYmC%1n% z2idRZz&(D3cdl4)vVUjn)_+W-;hiy2DiD|HaNo*@mLg9`p4sw=`esx7%Pz&TuK@3%xE1SD#fNP#5>Q)i(Q8x1VPRL=70R>}U zJ=27SnbnMdWL$FmGCB>_6@?}DCH2Y&fx!Li99p@0=1~5EzNOov0_a`ro9{|xbRK0d zp7_vTm@GhSD;qX`jrS){M0Pnse0bO{9kHOMP@vPYapryMCpuM>mo}s-ZVsQf;9n`C z880tmqIYUT(NolhP<1}RoH?8;_C~PtfgU7ml>S7}PJ#OR%6k*!yKM@)pAEHy<|Vka z4S7Ke*@_lD<0nUJ@}AC{QM9I9BPmo=OLD zmbHQSz@J|=oyea<4Jc6MlNtK$y5(&9fKu;`#QEPS^E^M=kJ(ccfNTADY~+ilD5UM% zHnFm%@}5>t(FE;|R;U!)a8>6!b^E7Qb)_3xMS!y zk2!H%w8G#^VK5HRsg2L8fbMDLX){z8A{H5kQL%Kl7H1*Bbcy zfz9A!YDuz2$@Dh2Q9^@$5M?nKIG#ar{R?Q${k>>NM}C^V&OZFK8+GM>I3HTqp^GE< zHS--hZIg^fy7<}S!}>0hKRo|apifeSo|C%hZ`rK~>5MHfXHXFMPX+KFU&0_uFyyH* z?zcul)#H7GamtA?e&Y6C8xV0??DMf&IRnsk1CNhffWYqa+t6YA{xXIpP{xLoglloW z?A9>8Pj)emcf|6Ld`TirUnX>7Y4&OED?@mz z{2@ZA-DyM#g4RK|5$;TLw`hbpouDGwJ%4vI5V*MtFBbJB{+(*(8L>Ppp420r zoUS`Tjm{pBdkg*z*01sWfm(f&#DuZAB*N=9z7Ct+(_uXGe(_8n$13r{S>R0j(=j@w zy~O#bNtOxBN5ApY`C!9RZTx^_j{kxA;IogMEWV$QmLPME=xm)ynwJtMiPKSrlQjJC zB=N8s(+6Z#`==%;cHws?$$Fwp|6ZaY=_;C!@sH<&rLy|`0Z`EYz{tp!lG zDSVr!FzMu?KJJ}cOD`I1QBDl&%f2(q=i>q4p5ca)y$?O49qfXu zhg$IMz{c0F+CU&y=}ltM`F#|jApPVj6GkuK41x0Ba@x7vij1im++bR-?_z-gK5Nl^ zZ2fe2AFCnuwUIHC>~;GuU8Jq?nz9P?izs-nh_+NMXIrnKyg88u_ai!OV8 z;6?YV21e4rGN}RfbLwh1I>8FkkSx6c1V3wGR$sp!c*qUE@T=RargpTN3#}+5WMIaHzo@L(6hp^1=NfOK(7euL z3nn17)6Lq1S7~$CYlea3AFU+}>FBNcqZ#_^L_sLY;iupfvQ^GvI+FIjvf}lq%A}Oo zZMpL=Vzt_8UPCLl`8f7F(j0sq@$xc>k5|7ceP#YoD=~U-wFtw9Z~clcZ^W`kxe+z; zPg#`(Ad#Vy(BpxEBCf#jEdY$O%$l`1P-863a!=3EEx1jrZ2Bv5B!|P&-j7Io0(-F^ zx>a%D2r?P{NJ%0Aa#U+SWU(7tF32=PVlj6YP`G!SKaJ;h`N)>9OPzbPzc2as?tzW& z!Px`LZNneec=AYlU0vzaqy2rwzcXCpIJkHKI-r@XHL1fI8?Uy>0(ZsNt*wSfQgzlOUHFxgZrDwUoC#8o?rx2TsJ1%(xn$%<`msqRDo(D+;H@ghXQe77ssZ@FZ#TT?Wt2XnM$x4U&Eu zPtThik$^qY-ZOZ1LF1+S4yP-2dPZK&QAQk_-TC#Xn7Me4lrG!CxN$Hyky?Le6Scj^ zCZfryirGO+C*6WhieKM?+`xwxp8$sKCuVpvQ35crfK(5Yy~%07wt|G@>1(;uyb2n2 z@1@v_Ii4UjI7tq1-IPo*U#f$6P)qYC^U4IaU}?8Gd`gOM&KdJQarEUu8CM*Bgi=pN z+C8g`YwvCyWJTc&YWx&F?63uNtk<_mfQw5V2VDF#5Vv!^nisBg6!LCXIGB_R=30_p z_lrs4#$zr;mkiyxJ$7UJk}W-nb7KF={sxXH*GOPZ+rSCrW)jkJ^YxPk5NyH zPy4a{0-pf-X3diQfNtJQ-5vK99!G41VTj8j^}IU56CX2kC)3jE#n$FSzZ`lSy+ll{ z%WK?7*M546OrF?`_^GE)_V*|MW>YUY|3%lzfLFe8z|$|jQ%iqD3@jInn+G&yZN}4I zG54={TG;fU>3UM^_I+fZi0MZzvQOW;$UY$s4$phuvpyZ1W%2Sp$=m3PeZy>oo~AOl z=Rkg}pJKy_5+eqja4Siv!!+f1I3~>XxfdO(xzbQOqWC;YMtXZ`TrJt^iLA)xW7~8T zY8xgEdq8F0e(N#|voyKP7R~YW^zE1xf_YE^GnVQMCj@$BZ`?NdUxHT7p7?68){e_E zPg&|IVL6f*UzbFSc%uSVB1ybJtNY0Vjx{>h`Im@g@`jLNV1HC@z??7L{9al0p7L)c)Ck+JD!8UXKn)pbK_D?_pNQoM(=EA13hD_T@vw zai+xtjc!he1mDhh(aemEwcwrn#3?P5L#@&;U-(Kn`Xb8F2gj$$;T96i_TmXC z-?BJ`l7KkCBjQ}l&;-#)=EesSl<6B#jz(~NcI z*-62D#KdJX`s&aRk^bD3enrd|e?-ia7As4pE&GdDv(M}CuF`33*T!*eaIH}`T+Q>?Zoc4osccXq+z~GLG?2V z-ai;zuZg_xcuoA2%z8GpGp^xZ1g4OnCn78@IW&Cj6LIN>MLrOt3>|HRZIbvmg>@4- zI*<)+#8IIi$G9LVHbqTX#HsDDtIp_%;0rH}IfI86Er?NaVeBWzliIqWNhdWYMj*Kp zcyXo@87JS_gNaO^!|TNP;xzZirqVo|n$s)atnZP_b;IV4S6rDz6L`f}NL=5R=Nx%M?+ni$8({Id%ktBzj1f zoha`w678`~I5DJ?9kCjb;&V!x-V+`|mG#=MJ7hgMgCRX#wFyPa;X(}yInH}roxn7G z#dK2{P!KzhvId(RGU!$$7k$8n%a&Nvm)c1Py_Xt#|CyN1b=pR@W)qX`rk;c;ksX zdgZ&Jq)CL?4jA3 zPd*(hI5~qWE>g{-3n%O8FG^hT0J>5yr}G#Fp!G7t z?%#QFX~!{udFf!un@DhNm&pAJ&C8E#w}ulQNXK<9N{V?qV4?Fz<8Hx|| zvya3wOSjA-xl9(^LkeAB-VRD-_DY=}DYfpprB>bKQaiU-pUJ)2x@9)WW!A4K1D0b{ z1*duEjU<+5-XjkY-@Oh`%&AT~c})D=YEwe8SEPaA+$HZY`4OGz&Id3}UX*v*OHe01c|cT_XTW8l~1s9s1g=2f|9MDWj}+OEAT$x(KG41A%j~U zIGqhU&;&^0U7Lo@P;^v-9#=E$dl^h&N?1HcF~OP7Af)%)i02cV%)3YxQzzY($2NFM zpdKirxT|fZ{2FH}m?NeS^_%=hnd4R1`O{8gW$ccAttYICZI4@Se|Yeawh?;pjfKVn zF8XvHJ>q3l86k1M8e+*t5imnUo`3H;9Z_{&0J1HH9%}F=4WjcK2;DaVs`x`mpTjnR z0j;4o$2R7q8z1o7NFk*HPjBZDWD=14e|+M6N`Ug!*FHdxm3kD@9?}O)OdKMiZ*T)b zV0Nab=^Ju1yz$4^z_!_BC0peCcFUKL=FSKI^`>On*zdDH2kFAjQvvWHJe{_^!_x_W z2Aq+lhXVxqW3P)N$GM8+ri|px?=}QTCID&WWXt(g}2us=V0jKc7g1D z^&#gJdKgJ6yc&ZfsDU?U%T=sCroKebd~t|{`#0nnE?=ADg0hA`Gm<;ivU?j4sHZyf zjutXlQhfxSEu6g2ZQ>oh0eUk7&|?)>7Or9V!Mx_=9pu7CXM?lj+)A(6C50C+ud{3_ zshu>TR1@R%o7*K`n5|?j0uA6e+#fG-P;Xhp#$}(!H@V9IR$)x`TJf^*wtdY%TPmc( ziar2@glYQeCNms{hN))-C}^I;cn4Q^@~X17xJK>Rls2ZI*(z#7QUaC84>Fhq)9LiN^DGXTHric9-pHLQ%F|? z@>AuUYRE?SiJW14YE%&(G#Hgad3S7(-s>u0E^~v+F!sXdwOB`X5Dl*aSZ4B)Zj=1z zytz;zb>*@xS`Oxv(KeYw9|nl&0vxB#gK9$Ckhunc^;+Kec8OG$0|dNZ@_KF%%K!jW z0Uu+DJpiqYP1@#nqY&Q}FrqN50rExVj`s;6SJ_Lpbss)AeP}Om?eF(O{ka+I4!*Cg z*|o5?xre+M?N840{=mQcV1yH)J0=*QIa_OFQ0Ze2oUmB&eiOk?kp;H}4SK!}#Ze(5 zCRMk@R8d|ZN*R~|TOn==6H{52p>MqoSIp~^vZA1}IGr!5VM;S^#$de4RlsrcmohG@ zopq0ucIYraN9`#IpE7G>+1T&fx>i=$6hKjoyToM8^F8U-H+~+&hyJ?N zuekev2h^}6%Q@${S@00waI3kX96Y4t5=UR!L=SXnW-D{1kKJ<72S-AVvvDW^P>wk6 z&>5l^q;wx*-KYWgd%+=)>brovd!(TpH*6t-nQ&%0&e8-&3qG&tEcAQ z0ciB*hQS#2byAQH(g%OGtz75wA|0G}d zELVX`U7DtpLzCX3+_!%CH`i-LI$ERdv1F$n5W1*4L!*!vJgNm+T%;h+Aq zv9UkA7wLq@Wd%v*k)qSs-Dzb{&v{m60f27b>DOq?y@!|+Uz(lcDiT-b{LO_pN@Cx$ z5ku%rUZ+PeISy_xw`7vO4Red$WO0ODLUh=$)!%!Wk9F)Z@@V_0KgsqTg9xinE zn*H{Qj{oE4HELw}Wh1ZgMmAF4*o!i#&YbGTf2}&sN$gZNMRg}5hJUyE19mz}>&RPl z(n4nBAGouI9X@%8TFAEdzTqo(%+LTk#-T3~CdfnLg!)yPTAn1!%b zJ?U$?!qS%Q4)&i?szuWe&;x=_sC*DkOOSt$?ctj8AKJ0$Epp}xZ$c6jS^vUx)jS1W z7VwJ8lH)30pWlG3jA=|}YvywAk4n+uC8e&$aG^_^yl|P%4+b{vgf7NfFiO#qZ9zUM zG~NlEXsGq=UgMdt@u(C#C+#)v<-*2=3?)@=YLCw~kx5gyM`x@BW(mz1^=|#*cv2G? zu3jza7F2g4m5t!SGm>+OyGIL(+}ZRCunJq!h_aTb5%4k9p;$v6Zj^LWixdhKcKPLd z%R3OX{deTZe1@jmEvhP)`_de^}XMCebB8oTtCw~(2`y}IG}Nbg2+p8Lw*X>OI-NV6nu@|Cbz6padgWs&*W zyX3JpQ+M2vD|WGL=I^jT>sHhqGcKImIqg%`aO9on%&p|J<{JqQt+}1-ope_?NOMhg z0v1>VAT#jtEGs04X8g_={09cXM!$yc0Ldc-=O*6A7D2w8&W&p5UEb*(LWBA&SqCpaKtnmDfbeB@~Q1~-Z99>EtY4#gewfVih3s*_2)(@;&jgk;5AzOwz zsY(jWp)1w;VdJ`>DOte9K<{q40-5!`z5trTp^I=gdZ6;Ov`KdYQaz^*1)YThz zGmm|LHqpXKNIl@E+^7Rvo^Nma?#fj&G{P=+_E;kqg37jx@S=108l#IFxb8n=&tyxk zoBSt}F3N{=Tt=ME?QHC?BZl_kqH%^}~!Ke$mKao+RL%w6&AH3JL0 zf;pzj#sn&hxFn4Q|JUB34>_K>_e&T%2IjNiysfY57|npUNShVEW*6{9yVix9*Q?01 z@vcv)CeKE7DF0bh2hsr8unykCe^XQk|L=+FVD7((>fr6nUySNNDW^L~IX$F#_7KD{ z+x~O@I41>S06mV~(POz{bmc(qjl-y%>@L~gKd4(`>Y1^E6o9`9;wZh&r+?17y(I}x zg@=GHYrIy73S*R3?&W*Vhd&R+le z0hKFs1N4jnrad3GDJ9J>O^_kvqPPO zDaycDf(5!4Bz#>}vb2sjLAL7jF2^o4wa>l=yksjg`8h?T)-#H5=o3mv$S>9fpUpeI zl76(JZUB^=0-Yd+)ES*dm9F7#~&{)Un)<_QTQolVPbcw zR!nmDiMZ{Usq&dtK75(h;iSprj0%{`?)Y#n>tvg;N|`t4iU?#O%R>75%H<8tE~X4? z=J}hX%mA=6J{_vc!=e7E;kAn(kM;Q-8B_9_?Vs53^f+n9n-pLbtsN%plhHya!T=uG z{tFn#$lw_p)K2(r)smXd;BDZsDNoJxP*!La%1o~jMvm9aapLYK9+un5AT%i%6%N!-rt?N&lg z1~0Ftd+!fPdw+2s2{k zQPnJ8O79SDJ_B=&gcsl#wH~uQkEuqn9Zdn#OYz1|#42>gSpY~tx4%jUE%EY(kLj?E z+ng-t2wpm(l$h0pF>Pg;#2X0;8Qj;ZKpSAI6(Eh^-g|N{U-OkFeZPDUV{G2%;Cu{x zq`95GJIY-Yy9ND{L%+8T)v9b@?m8gkkzNk93juxRduAtRxDF1CP+XG04TcnUFj|zxzg}bplRET4l0V~ZDOvP*POuqm# zgj4+!!+ALaj{1r&62a8u`Fb0$m2|=dx4JHm>MZs#&|jpH&k-c*p(`3~MJbnM-F;0w z1U~I?S0$BwRjO<%?=AgT>Uvn~ZFP@)iL%#$vx^w}(CnMfuAm4Ax-^`}H+@gkezgMu zZEdW`INLiE_{MpI8z&!|7S{An@>*mD|B|WtDKn}69gMCljBZ>Krpw|@|3(~_YK#-8 zD=(NmV8FGws6k#X07W%-?#uKO_5%ev$mz)hmiDeF!FuvPH`|=@y?ShVrNmR_@!xiS zO!-_6E^48}v55(wyN9DJdQnj3dB$XXrqjUzgU*>49fJ+ef;bA!I*d6 zj4M*?R?cHuaa7eIi9UGJzuP$41o_BFkq?$^%1S6z@*OZAU8m9GJTg2d?YLQ3$R^ zn<-OM#!DZSeYqv`kiOp&e(S0{*3sd&W9`Hp*6wFQtw+Eb! zYV_S2n?!13K4OANjiU>JNA_{uJ7egh56_(Z6dhbZH{Q%X^CVw9hfW{Wi;@HzWu&IB zf}m{Kk9moJd-KJCr@>|}xA`r+c86w$LggVcb`f%lkGkrrg}uR6mX79@+nxnmlP7oR zZ1MigI(3elRO9AaH7MeuHP0bKSaHJY5>qP1r)`XmcxM!p(IZiv5qS8Aw&n|UVW7!t zrBs=>_t25&M4N^voC*JA#4++vwEW5JLurvQXa^U$fjxCDQTk^UPK``j*e#KqkD~dYj zzxC_x9bIgpgJ@nkLE>NFYu*wV@Z9?kc$q&n=leGXveKRv#01X9!`Ht_Qj82^Ja)6z z8M$m|#NU#2EeaPF;ldA&D0+*@Zw`}r$bHhL-H4De{@u#+0i;1yl7_0ftceI235;E*u+tE7I zh_R=wc37S~}usV4-@v|uE z-9*}sA1KJk92~PVA`p)!ZjLKl@Uji0Q#JO6s{Ac>#R+5tdpMhU0f>Y8t{Db~@Tb)u zA?N6v;#(kPI;7TXPOKBey-0@?}R;)aMKL|qyWQ5k8TC^!xSlDJLyJV*gS_f=`Onkl|zrKdJ0a} z3%IdWcrFq#sb4MYs z2)r7uT%24$HO9Cs6&#Mk2}{^^NUbwSDk z2F|CD!0(q7o|)$H|nYG?3KXXLYgriFk9~!XeWG;1b!D z$^(fAM*!zdE$I#M-Q+hUwIsi(DwDc~eiKJ-F=7q|pu@FvYqPYdjx0OAbPMNoR^+Z_ zP%B{e^tgL?{I5gwF7e+hx%=h&I0Q!bdoJ!gDPys(k;DcS(-vx@*!!CDhS$*^Uv{-) z(FlbKxXsL2T=&=jBIpo_filwwGy9qsO_w{VQ_%WFOZef0r}DMmm;QwRq(JhQjE2pZ zuE1RpQ#Mw-BIxB42~{SaLZZkNE+56@#<8v*5ZMO-1chi&cYo$s|2j?;PXU+~l2XeB~(1u!)?kB&?pV%zdXA zmDo1$yrsFHjM2Y*0BR*r-Wx!twJhP!yhkSLt2#6> zWXl*CEHNK8RSTujGF1sLU$I8+ zmCY~SQg@I5aW~jk|4@?TkbgN~9npS+CL8c@_d>5?bArfNU1Qq_19=wKNIZXq>p?)S z1Xc35gYvbOLQJ(iIvH!Z#E_AdklL(OdB5@;BT=q^4b`{GlV?$@oWo%`H9nY9Bo{c` z2k9dAK?kt;daeL7Y4r3)}@xT!`5_k&XeKNuZqpA00 z>Q`(tK$!G(IBZG(ZfRolEIjD)?iinGUc4XSE36`A-w>V**pc4Fro|GK7dHDlIpW8( z=g)QI`G9NKdrm{s%fVMFzZ8ddz!Immqw(o_d$vKjORy@5z_B%suNL|xZEqqEC|DM% z`8|iZKXyzzM}VRna;9BKd`y`1Xy`JA5NHcI|$ZOlT-)DxKJ3d4m zj+&)eJ+;yiDXrs zhOQ2@l2C|O77&l29;&Q3eDW2aN>h^+Rmlu5v$!i>Rv9-6mDlJQb*F{gdn?2>U+B!e z^<1&}k%!1qZk_3QmjhX6QdqD4n)He4T*NjqtY|I!_E*NneRsvd8OI6fmdFKL2-2`kq?hU@iLWJsEgD#^BNteA;tFhnZ@&WD|iT%o)Y zn|HQSl$p-eqbmI&Bsf4oYn{N2BQt^eI42Gr6wk`ofHMso<==#uS(;uMvd>#$ z`DU#A)(lX7E1sAObYXsDyWn?8@GJ%s@!*s>o;`@`ZRX42nyl`?4&BNwv^_ypSs+w4 zvP?aS@hCbl+rTZPgtCo2g~Xx3tMj!e+d4gQTxi43%!rFvcx@fOCF;T_BuRUs4WE(; z+V^2vWB;={t&;Tiq6~+@Z25=oX-1gBHXZXH+aj`}P%#r&A=e$YRLVxhe$-dlm zfe@ViS8TotMQI&?Yqe6aLd`L2X)VE=C4wuPs}P>xidU1bY4-}=88^<0>gmAH9KwiN zzBC+ju_Vb&>q=#G3Nl)UBNupg-H*KyAy(M*)%Jtqg|cVr=R=hGXaP$EgJhmW9wm>+ z;89v?AGY-7#EX89V;(*cIKPp?WY^LriUVvMzn;p~8!$Ha-`EyU$F`NgJm-&Hb2ii+O#G@b1uO&8nfP zB0z$}!`3B3s+meI@pt9jpFO!guie*3yIjjMA#L@h4UJC_>d(zn>i)0jETE%!5)}p4 zc+{;eVZljx@Q0qz9DiQbMboqI2Mxehd_;XAd4R$%2qeS2q{TMO zVYFVs3oZvbv^*I0ght|GHP*R-7N^##>Ud8P!e@&E^|YP!@|Xlr;^#nNckoF;lvz~bn1nnbjddLdI3?~btm?4TRh9Qv#JrPP zczPda#1bLD_b4e{L#NL)E2*l;3=EUC>FUe-!?S_o%k^=XZ|-o`P|^$2$ARz(^({wa z@?O3>8N97{xNam`;wB;B!O)C&Kr5YFi37qVZWpbsTwGRw6+SWl8tI&e1mm&D2rerg zunp{XT>LNM#Z~3c3$E*xHEW1vrArVce@H|1%@vr-w!-Che`4pF7*$OxDIt`I+hjiWkW6G#-jlZl<~I=7Fvh&q z;YaMTvm0r*7C>a@;p5)cDzgd}%C^f$wAaEDUe zukGkzHoJC`0L~*Ui_bbO#YC&}R7YwO^~vzw%3So#m#kGbcZ)JY!*1Qj-c;vC(F0n* zexw-6zChf*X&;wV>^s`L*GTvUY8gOseA4L=Tr^sI*sO8$61bwVyJ`Fq=4I{*PwtGMuqR z6(%vpitdInx2UeMXwebrPsaWM#+@DZXV6tO5?p$x8a`-^&tjY=%v4`=@nPKEmtS6f zknpEglo3UaD3e0 zH_P6lv;z#1fMX%&76H_z>D&0H-mVZPgt#8B#F2-BWRpUlB)RMG1M?v_RpMIgW8ht< zgdui5HJ==pdirE@AaZCTR=>|#<8YID+mAyL65$mS;Xtn!m~WsN0AnzNAVMUcoLLr1)aZz^9W=8bB?eG7vn@0gE_)*6ype4{UeSrnL-H) zSN}TVv?0qUGzATKxX$l*kI#aCfPeHJnPVVSS#wQrBQLFom7j2fPteDB>T-kOAvd_N zt3Tc22A^7aX%kz0ctD+0!w)J{2wWJ{hScp_8=)BWPht?PpYR0$+>LQV?&vKI11I$I>kdpu&}YiHnt2L{oOt{%Mw)`aEP^_7!xCCmlWHRz4Wb!s zQS`_jQk}t&JSYedz_-jBdix+kzJKZk;>^^CV;#m~^m3rwj-*4Mj`uaw>2;VNp2CSx zTRo23WlD~^TLRd~MPac<40+%iUL_p2*mpRcR_iWYM>E$HbyYyRo>lm(a(cPvJ3hH{ zmL3lOMChpk!ZIWscs)k?KTKPDM_z?|eZxa{b@w+?YmhT^YuuxZFvQl?9liKulr5_@m0UbjE?;JW1s@L&_fY!SMlLx#hni~!Oe+Kzi zIokh2KlmYKeFAXMWAuiVkhc30k}Zv+yG}yHQ}ESfto&DRycEv5iCAJQ$_GaEyc#M0yBjuo zJ@%m8u4mWQmy0Ei2HmGFB)vM42F+LEutXj>S}-(0YAp&4l3_cjtU83fpw^Q@eg196 zTGSlXJ~Fh`J5r#_zs=MZ2y#mh%Q?(Zow#}H@}W)QVi|#W zcV@oPk(qiS%dmSm1UgUSK<6#OGGDY1_xKrL4J*qa-!7g(a#wtCHal_8;%7CBJg-dudpNe(|}=oG1q~B zeIs~paoGKh=&aUn5V8D?Yk?20Ff3I!JNRsjGld!jW+knWpKS++fdkCogx-&u817swHk;K8I_JNOsERa!E<-AM%A za+uJP800HeJJHs~gjM-y3+nzE6xPLU6+>t$bHiYm))En?E*XDD_*R6y>Mvzel`TjK zv89pV_R;x9wZ|~#_KPF-R%&-)ChbtjCAwyE=jwSJ?DZ24>}!S^&M{r#PrW5~fFe{; z>7hI(H`zAp9?GFUkf)J(2IEcG#89^wANmVyGI2U4Qjsr4I}gxpPSYH|MgRo*-I}5w z6|y3=>>8$Um{uk%9(QZ*3fLQd&LFpSnd8Noo81R`!*{690+2Y^;8~V&pD%Vg9Km~L zp`DptEG6Q;Fm+79D+l>zIa=9@sv(l0!cm(gr%iNKRd z)Zu@TDV`d$)5w-~4%ZnD?Qwe_r8a0qiPJKEQtGKdc~70EC<)jwF+o*X`7akOTde}r zb*3%&Sk)x$9%Z5G-^a30br#xYi7G>@f?FP}TSlOyNZf6r_ySOrt+fF`k!W#a^PX^! ztxA;9>LJV}1!STkvp|>z>fGkQ7oH_ zN_2ym>5VVp3j^g}PlIU4Y*~I`rkMj)XOiaabT<|Ml3CgY+axxdow|}V`T1TV#*McW zo{R5c66|YR%P5UdkJGJ=oSBze(w;2Rnx)g5r4+ZluPgJE)(2^=sEt;vkE8*-nahK# zGaV)5^0wkr9-7i`k+k8<9y?Vaz~0$@*C@J(UD5eWeokQ06<{axVNLzF;!_dsyET5gYGpwS9t*L8`>R-%A((3I^y$A;9Gf3NO z%Jk{4b$@;E84GQgIF69cmP60he|`pMoQ%}_nbwliX(uHvufv=`bAeziSZbL|U=W#) zxsx)Z5;D9YuJ|LITW!R}^4XSJEX&j8d@6KJX<}z$*ocxp1HthjxudNCLp+b^lEaV; zI?D^n$!_x*dMKPB@vpsE%E1$|tGgMVRJRD{1!42z1%X6|@%8UZkTHW8gP?-NUF7Xt zTjGAlr)uj%{tmsHJR}YeKG|^cngf1za*ar?_hJ6grOCcPzxM*T`3np3?Alln@{M|h z2+o!K3+tEBtNH~rnU}bAkL848Rp?Dl*4Gm5O7A$p1DPRs{@CDr2~TKr&a$LV+DbTG zdD4?g7|CW--+7FJ5{M;q3tvw~c~yxJmg5^&w+jcu$xRsD^bvv_&srlR$=?f5%L4s3 z6d%qr8=x!4!N1H-%bSa|O`(v6ms85V>7;d(#E={WLp}C-u@_;+s+9)?ii*$J+p%Z0 z!bS;X${9Fj)Tk~ghz;o{+yqCj@J>pdX~#XOlNPIc7XbIVAW&~C_gB^Vjm_Ijw`X7O z@msH#c5eP1ov~L)c3hi4pSb~QZ@G)ov=8+Px2kvXs8o(_76N|-X@X`uQM05`aQYs~ z`+*x`2If*u|zY&s~T%b|0UlE#?6D8Z9wl=jS@c$Gbec@7S}j-rhqwS>@Eq9E7r` z9UD81=h-@a+7#(IlSPIx1ZghMX-`Um@yZE!N#h#9bUB0@Ip?!h9$~@Wr<;UGQ)AHC z6}HFlnkl0PZ>mQB`(Ew*gI-k;K-i?Oum9RDu$6EL>_S+l1x&c!y(d2XOuh@ABtLE> zKCLG{ooLBXN9rH%>6`mz^ti3eoi#uX3d-Dew3Vdc?)?fk?@JxtQ&5dOS6@EvB|jeh zs*=B@?#|CD@o^8Pn_1~sA0|EK>nN=Mhoy>ta?S5R54I5%R|@w06D^i!lC$~+{)`Q2 zX02zB5_gL=rRLzrC;!-KcyKKYu#UrzNS(0MqYugW!vR}z!@WLS4K1FkjN3cjv2e28 ztA;t)g{UYhZYO>B$ACW?7(kjWf}eGd{NvoZ_kXYCNY;GZNo$nnQFPC$%9tz;Cf`Pw zrVR=ZW++niT<9oIG}$OQ_axS&PR7AAZR36wwxXo1g@;Ypft^iVWR(J2FY^-W(&MGi zUZO-teQ(qbHAVN_4hcQSKAres&^0sk20Fqp4xEcITe;}Q^B@+J3Wq;tO-h@bw`vx| zU%{UeD2)$z1;x&?4i{UFm2SXTESH@^>oO44m&|r=-!1i@zLP zn?ltZ>mljgUmf-+Mmg^|rbGTjL2t}bI9g4T&?@7^CFvJrn@RZhb1)l^Z#MhPj)+ia zM8a}wi@dzn+*AWr|C2S}k3B@iGViB=Kxd zkG$dDup*f>BSSHAjlvIpqDhu13@2pT(UBTGU&_`F#0MV1;_sau(Wn3Q30ZNj)o%vg zhN?sb{mpU8;4_NTNt$^%#jzqt=JkNIC4(Z2w&N0z=_Y+X+|$TrWzr4VuE{ry4>vDG#c@C>gQP=0FUsn zN9ftT4fbAgywk8HDD2#;H@D*{9_EoXsS4-ek;7&(engW@2OJTrS59=SJ5AQ1wd(0` z`+3j8H_;r;>{_0W>U+6g6Z~F*a9fb zx&Wx4v4A1?nmLt6@ZuVsKLRS{%9rHzl6UQ~BJV4YBYEMi>yhbu>4@~@zA}CaTR{rr zX=nRl7&(WJhMeqp1W`70_jt5$aw|Rd`NPYZOno)E!mkERJGtiaGCrgR T{J*$I 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 D<6--h diff --git a/frontend-dist/js/502.ff024e4c.js b/frontend-dist/js/502.ff024e4c.js new file mode 100644 index 0000000..25612c9 --- /dev/null +++ b/frontend-dist/js/502.ff024e4c.js @@ -0,0 +1,2 @@ +(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[502],{213:function(e,t,o){"use strict";o(85331),o(19104)},2893:function(e,t,o){"use strict";o(85331)},3261:function(e,t,o){"use strict";o(85331)},4885:function(e,t,o){"use strict";o(85331)},10456:function(e,t,o){"use strict";o(85331)},11393:function(e,t,o){o(79577),o(41549),o(49797),o(49631),o(35623),o(64979),function(t,o){e.exports=o()}(0,function(){return function(e){var t={};function o(a){if(t[a])return t[a].exports;var l=t[a]={i:a,l:!1,exports:{}};return e[a].call(l.exports,l,l.exports,o),l.l=!0,l.exports}return o.m=e,o.c=t,o.d=function(e,t,a){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(o.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var l in e)o.d(a,l,function(t){return e[t]}.bind(null,l));return a},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=0)}([function(e,t,o){"use strict";var a;function l(e){return["image/png","image/jpeg","image/gif"].some(t=>t===e)}o.r(t),o.d(t,"canvastoDataURL",function(){return s}),o.d(t,"canvastoFile",function(){return n}),o.d(t,"dataURLtoFile",function(){return d}),o.d(t,"dataURLtoImage",function(){return c}),o.d(t,"downloadFile",function(){return u}),o.d(t,"filetoDataURL",function(){return p}),o.d(t,"imagetoCanvas",function(){return m}),o.d(t,"urltoBlob",function(){return f}),o.d(t,"urltoImage",function(){return g}),o.d(t,"compress",function(){return b}),o.d(t,"compressAccurately",function(){return v}),o.d(t,"EImageType",function(){return a}),function(e){e.PNG="image/png",e.JPEG="image/jpeg",e.GIF="image/gif"}(a||(a={}));var i=function(e,t,o,a){return new(o||(o=Promise))(function(l,i){function s(e){try{r(a.next(e))}catch(e){i(e)}}function n(e){try{r(a.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?l(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(s,n)}r((a=a.apply(e,t||[])).next())})};function s(e,t=.92,o=a.JPEG){return i(this,void 0,void 0,function*(){return l(o)||(o=a.JPEG),e.toDataURL(o,t)})}function n(e,t=.92,o=a.JPEG){return new Promise(a=>e.toBlob(e=>a(e),o,t))}var r=function(e,t,o,a){return new(o||(o=Promise))(function(l,i){function s(e){try{r(a.next(e))}catch(e){i(e)}}function n(e){try{r(a.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?l(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(s,n)}r((a=a.apply(e,t||[])).next())})};function d(e,t){return r(this,void 0,void 0,function*(){const o=e.split(",");let a=o[0].match(/:(.*?);/)[1];const i=atob(o[1]);let s=i.length;const n=new Uint8Array(s);for(;s--;)n[s]=i.charCodeAt(s);return l(t)&&(a=t),new Blob([n],{type:a})})}function c(e){return new Promise((t,o)=>{const a=new Image;a.onload=()=>t(a),a.onerror=()=>o(new Error("dataURLtoImage(): dataURL is illegal")),a.src=e})}function u(e,t){const o=document.createElement("a");o.href=window.URL.createObjectURL(e),o.download=t||Date.now().toString(36),document.body.appendChild(o);const a=document.createEvent("MouseEvents");a.initEvent("click",!1,!1),o.dispatchEvent(a),document.body.removeChild(o)}function p(e){return new Promise(t=>{const o=new FileReader;o.onloadend=e=>t(e.target.result),o.readAsDataURL(e)})}var h=function(e,t,o,a){return new(o||(o=Promise))(function(l,i){function s(e){try{r(a.next(e))}catch(e){i(e)}}function n(e){try{r(a.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?l(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(s,n)}r((a=a.apply(e,t||[])).next())})};function m(e,t={}){return h(this,void 0,void 0,function*(){const o=Object.assign({},t),a=document.createElement("canvas"),l=a.getContext("2d");let i,s;for(const e in o)Object.prototype.hasOwnProperty.call(o,e)&&(o[e]=Number(o[e]));if(o.scale){const t=o.scale>0&&o.scale<10?o.scale:1;s=e.width*t,i=e.height*t}else s=o.width||o.height*e.width/e.height||e.width,i=o.height||o.width*e.height/e.width||e.height;switch([5,6,7,8].some(e=>e===o.orientation)?(a.height=s,a.width=i):(a.height=i,a.width=s),o.orientation){case 3:l.rotate(180*Math.PI/180),l.drawImage(e,-a.width,-a.height,a.width,a.height);break;case 6:l.rotate(90*Math.PI/180),l.drawImage(e,0,-a.width,a.height,a.width);break;case 8:l.rotate(270*Math.PI/180),l.drawImage(e,-a.height,0,a.height,a.width);break;case 2:l.translate(a.width,0),l.scale(-1,1),l.drawImage(e,0,0,a.width,a.height);break;case 4:l.translate(a.width,0),l.scale(-1,1),l.rotate(180*Math.PI/180),l.drawImage(e,-a.width,-a.height,a.width,a.height);break;case 5:l.translate(a.width,0),l.scale(-1,1),l.rotate(90*Math.PI/180),l.drawImage(e,0,-a.width,a.height,a.width);break;case 7:l.translate(a.width,0),l.scale(-1,1),l.rotate(270*Math.PI/180),l.drawImage(e,-a.height,0,a.height,a.width);break;default:l.drawImage(e,0,0,a.width,a.height)}return a})}function f(e){return fetch(e).then(e=>e.blob())}function g(e){return new Promise((t,o)=>{const a=new Image;a.onload=()=>t(a),a.onerror=()=>o(new Error("urltoImage(): Image failed to load, please check the image URL")),a.src=e})}var y=function(e,t,o,a){return new(o||(o=Promise))(function(l,i){function s(e){try{r(a.next(e))}catch(e){i(e)}}function n(e){try{r(a.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?l(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(s,n)}r((a=a.apply(e,t||[])).next())})};function b(e,t={}){return y(this,void 0,void 0,function*(){if(!(e instanceof Blob))throw new Error("compress(): First arg must be a Blob object or a File object.");if("object"!=typeof t&&(t=Object.assign({quality:t})),t.quality=Number(t.quality),Number.isNaN(t.quality))return e;const o=yield p(e);let i=o.split(",")[0].match(/:(.*?);/)[1],n=a.JPEG;l(t.type)&&(n=t.type,i=t.type);const r=yield c(o),u=yield m(r,Object.assign({},t)),h=yield s(u,t.quality,n),f=yield d(h,i);return f.size>e.size?e:f})}function v(e,t={}){return y(this,void 0,void 0,function*(){if(!(e instanceof Blob))throw new Error("compressAccurately(): First arg must be a Blob object or a File object.");if("object"!=typeof t&&(t=Object.assign({size:t})),t.size=Number(t.size),Number.isNaN(t.size))return e;if(1024*t.size>e.size)return e;t.accuracy=Number(t.accuracy),(!t.accuracy||t.accuracy<.8||t.accuracy>.99)&&(t.accuracy=.95);const o=t.size*(2-t.accuracy)*1024,i=1024*t.size,n=t.size*t.accuracy*1024,r=yield p(e);let u=r.split(",")[0].match(/:(.*?);/)[1],h=a.JPEG;l(t.type)&&(h=t.type,u=t.type);const f=yield c(r),g=yield m(f,Object.assign({},t));let y,b=.5;const v=[null,null];for(let e=1;e<=7;e++){y=yield s(g,b,h);const t=.75*y.length;if(7===e){(ot)&&(y=[y,...v].filter(e=>e).sort((e,t)=>Math.abs(.75*e.length-i)-Math.abs(.75*t.length-i))[0]);break}if(ot))break;v[0]=y,b+=Math.pow(.5,e+1)}}const k=yield d(y,u);return k.size>e.size?e:k})}}])})},13378:function(e,t,o){"use strict";o(85331),o(38736),o(79899)},18785:function(e,t,o){"use strict";o(85331)},19104:function(e,t,o){"use strict";o(85331)},23597:function(e,t,o){"use strict";o(85331)},30694:function(e,t,o){"use strict";o(85331)},33153:function(e,t,o){"use strict";e.exports=o.p+"img/logo.e8dbfa27.png"},33892:function(e,t,o){"use strict";o.d(t,{A:function(){return $}});var a=o(99114),l=(o(85331),o(30694),o(49385)),i=(o(37952),o(30650)),s=(o(19104),o(31802)),n=(o(13378),o(80047)),r=(o(99648),o(56768)),d=o(45130),c=o(24232);const u={class:"directory-tree-picker"},p={class:"tree-container"},h={key:0,class:"error-state"},m={class:"error-text"},f={class:"node-label"},g={class:"tree-container"},y={key:0,class:"error-state"},b={class:"error-text"},v={class:"node-label"};function k(e,t,o,k,C,w){const F=(0,r.g2)("font-awesome-icon"),L=n.S2,U=s.qk,$=i.Vc,S=l.pw,T=a.A;return(0,r.uX)(),(0,r.CE)("div",u,[w.isDesktop?((0,r.uX)(),(0,r.Wv)($,{key:0,visible:C.popoverVisible,"onUpdate:visible":t[1]||(t[1]=e=>C.popoverVisible=e),placement:"bottom-start",width:320,trigger:"click","popper-class":"directory-tree-popover","show-arrow":!0,"hide-after":0,"show-after":50,transition:"el-zoom-in-top"},{reference:(0,r.k6)(()=>[(0,r.Lk)("span",{class:"popover-trigger-wrapper",onClick:t[0]||(t[0]=(0,d.D$)(()=>{},["stop"]))},[(0,r.RG)(e.$slots,"trigger",{},void 0,!0)])]),default:(0,r.k6)(()=>[(0,r.bo)(((0,r.uX)(),(0,r.CE)("div",p,[C.error?((0,r.uX)(),(0,r.CE)("div",h,[(0,r.bF)(F,{icon:"exclamation-circle",class:"error-icon"}),(0,r.Lk)("span",m,(0,c.v_)(C.error),1),(0,r.bF)(L,{type:"primary",size:"small",onClick:w.fetchDirectoryTree},{default:(0,r.k6)(()=>[(0,r.eW)((0,c.v_)(e.$t("directoryTree.retry")),1)]),_:1},8,["onClick"])])):((0,r.uX)(),(0,r.Wv)(U,{key:1,ref:"treeRef",data:C.treeData,props:C.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":o.currentDirectory,class:"directory-tree",onNodeClick:w.handleNodeClick},{default:(0,r.k6)(({node:e,data:t})=>[(0,r.Lk)("span",{class:(0,c.C4)(["tree-node",{"is-current":t.path===o.currentDirectory}])},[(0,r.bF)(F,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,r.Lk)("span",f,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[T,C.loading]])]),_:3},8,["visible"])):((0,r.uX)(),(0,r.CE)(r.FK,{key:1},[(0,r.Lk)("span",{class:"drawer-trigger-wrapper",onClick:t[2]||(t[2]=(...e)=>w.openDrawer&&w.openDrawer(...e))},[(0,r.RG)(e.$slots,"trigger",{},void 0,!0)]),(0,r.bF)(S,{modelValue:C.drawerVisible,"onUpdate:modelValue":t[3]||(t[3]=e=>C.drawerVisible=e),direction:"btt",size:"60%","show-close":!0,"with-header":!0,"z-index":3e3,title:e.$t("directoryTree.selectDirectory"),class:"directory-tree-drawer"},{default:(0,r.k6)(()=>[(0,r.bo)(((0,r.uX)(),(0,r.CE)("div",g,[C.error?((0,r.uX)(),(0,r.CE)("div",y,[(0,r.bF)(F,{icon:"exclamation-circle",class:"error-icon"}),(0,r.Lk)("span",b,(0,c.v_)(C.error),1),(0,r.bF)(L,{type:"primary",size:"small",onClick:w.fetchDirectoryTree},{default:(0,r.k6)(()=>[(0,r.eW)((0,c.v_)(e.$t("directoryTree.retry")),1)]),_:1},8,["onClick"])])):((0,r.uX)(),(0,r.Wv)(U,{key:1,ref:"treeRefMobile",data:C.treeData,props:C.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":o.currentDirectory,class:"directory-tree mobile-tree",onNodeClick:w.handleNodeClick},{default:(0,r.k6)(({node:e,data:t})=>[(0,r.Lk)("span",{class:(0,c.C4)(["tree-node",{"is-current":t.path===o.currentDirectory}])},[(0,r.bF)(F,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,r.Lk)("span",v,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[T,C.loading]])]),_:1},8,["modelValue","title"])],64))])}var C=o(457),w=o(70797),F={name:"DirectoryTreePicker",props:{currentDirectory:{type:String,default:""},source:{type:String,default:"upload",validator:e=>["upload","admin"].includes(e)}},data(){return{popoverVisible:!1,drawerVisible:!1,treeData:[],loading:!1,error:"",treeProps:{children:"children",label:"name"},windowWidth:window.innerWidth}},computed:{isDesktop(){return this.windowWidth>=769}},watch:{popoverVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.popoverVisible&&this.$refs.treeRef){const e=this.$refs.treeRef.store;for(const t in e.nodesMap)e.nodesMap[t].expanded=!1}},200)},drawerVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.drawerVisible&&this.$refs.treeRefMobile){const e=this.$refs.treeRefMobile.store;for(const t in e.nodesMap)e.nodesMap[t].expanded=!1}},300)},currentDirectory(e){this.$nextTick(()=>{this.$refs.treeRef&&e&&this.$refs.treeRef.setCurrentKey(e),this.$refs.treeRefMobile&&e&&this.$refs.treeRefMobile.setCurrentKey(e)})}},mounted(){window.addEventListener("resize",this.handleResize)},beforeUnmount(){window.removeEventListener("resize",this.handleResize)},methods:{handleResize(){this.windowWidth=window.innerWidth},openDrawer(){this.drawerVisible=!0},async fetchDirectoryTree(){this.loading=!0,this.error="";try{let e;if("admin"===this.source){const t=await(0,w.A)("/api/directoryTree",{method:"GET"});if(!t.ok)return void(401===t.status?this.error=this.$t("directoryTree.authFailed"):this.error=this.$t("directoryTree.serverError"));e=await t.json()}else{const t=await C.A.get("/api/directoryTree",{withAuthCode:!0});e=t.data}e.tree?this.treeData=[e.tree]:this.treeData=[]}catch(e){console.error("Failed to fetch directory tree:",e),401===e.response?.status?this.error=this.$t("directoryTree.authFailed"):this.error=this.$t("directoryTree.loadFailed")}finally{this.loading=!1}},handleNodeClick(e){let t=e.path;t&&!t.startsWith("/")?t="/"+t:t||(t="/"),this.$emit("select",t),this.popoverVisible=!1,this.drawerVisible=!1}}},L=o(71241);const U=(0,L.A)(F,[["render",k],["__scopeId","data-v-62eab69a"]]);var $=U},34396:function(e,t,o){"use strict";o(85331),o(4885)},34896:function(e,t,o){"use strict";o(85331)},37952:function(e,t,o){"use strict";o(85331),o(97197)},38736:function(e,t,o){"use strict";o(85331)},40670:function(e,t,o){"use strict";o(85331),o(99648),o(19104),o(85970)},42550:function(e,t,o){"use strict";o.d(t,{A:function(){return m}});var a=o(56768),l=o(45130),i=o(24232);const s={id:"themeMask"},n=["cx","cy","r"],r=["r"],d=["opacity"];function c(e,t,o,c,u,p){const h=(0,a.g2)("font-awesome-icon");return(0,a.uX)(),(0,a.CE)("div",{id:"themeToggle",onClick:t[0]||(t[0]=(...e)=>p.handleToggleClick&&p.handleToggleClick(...e))},[(0,a.bF)(l.eB,{name:"icon-fade",mode:"out-in"},{default:(0,a.k6)(()=>[u.isAuto?((0,a.uX)(),(0,a.Wv)(h,{key:"auto-mode",icon:"circle-half-stroke",class:"auto-icon",style:{"font-size":"1.5em",color:"var(--theme-toggle-color)"}})):((0,a.uX)(),(0,a.CE)("svg",{key:"sun-moon",class:(0,i.C4)(["theme_toggle_svg",{dark:u.isDark}]),width:"1.5em",height:"1.5em",viewBox:"0 0 24 24",fill:"none","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",stroke:"currentColor"},[(0,a.Lk)("mask",s,[t[1]||(t[1]=(0,a.Lk)("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:"white"},null,-1)),(0,a.Lk)("circle",{class:"theme_toggle_circle1",fill:"black",cx:u.isDark?"50%":"100%",cy:u.isDark?"23%":"0%",r:u.isDark?"9":"5"},null,8,n)]),(0,a.Lk)("circle",{class:"theme_toggle_circle2",cx:"12",cy:"12",r:u.isDark?"9":"5",mask:"url(#themeMask)"},null,8,r),(0,a.Lk)("g",{class:"theme_toggle_g",stroke:"currentColor",opacity:u.isDark?0:1},[...t[2]||(t[2]=[(0,a.Lk)("line",{x1:"12",y1:"1",x2:"12",y2:"3"},null,-1),(0,a.Lk)("line",{x1:"12",y1:"21",x2:"12",y2:"23"},null,-1),(0,a.Lk)("line",{x1:"4.22",y1:"4.22",x2:"5.64",y2:"5.64"},null,-1),(0,a.Lk)("line",{x1:"18.36",y1:"18.36",x2:"19.78",y2:"19.78"},null,-1),(0,a.Lk)("line",{x1:"1",y1:"12",x2:"3",y2:"12"},null,-1),(0,a.Lk)("line",{x1:"21",y1:"12",x2:"23",y2:"12"},null,-1),(0,a.Lk)("line",{x1:"4.22",y1:"19.78",x2:"5.64",y2:"18.36"},null,-1),(0,a.Lk)("line",{x1:"18.36",y1:"5.64",x2:"19.78",y2:"4.22"},null,-1)])],8,d)],2))]),_:1})])}var u={name:"ToggleDark",data(){return{isDark:this.$store.getters.useDarkMode,isAuto:!this.$store.getters.cusDarkMode}},methods:{handleToggleClick(){this.isAuto?(this.isDark=!1,this.isAuto=!1,this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!1)):this.isDark?(this.isAuto=!0,this.$store.commit("setCusDarkMode",!1)):(this.isDark=!0,this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!0))}}},p=o(71241);const h=(0,p.A)(u,[["render",c],["__scopeId","data-v-e9449eac"]]);var m=h},50333:function(e,t,o){"use strict";o(85331),o(29092)},54560:function(e,t,o){"use strict";o.d(t,{A:function(){return p}});var a=o(56768),l=o(24232);const i=["href","target"],s=["alt","src"];function n(e,t,o,n,r,d){return(0,a.uX)(),(0,a.CE)("a",{href:d.logoHref,target:o.target,class:(0,l.C4)(e.logo-e.link)},[(0,a.Lk)("img",{class:(0,l.C4)(d.logoClasses),alt:o.alt,src:d.logoUrl},null,10,s)],10,i)}var r=o(60782),d={name:"Logo",props:{href:{type:String,default:"https://github.com/MarSeventh/CloudFlare-ImgBed"},target:{type:String,default:"_blank",validator:e=>["_blank","_self","_parent","_top"].includes(e)},alt:{type:String,default:"Sanyue logo"},customSrc:{type:String,default:""},position:{type:String,default:"fixed",validator:e=>["fixed","relative","absolute","static"].includes(e)},size:{type:String,default:"normal",validator:e=>["small","normal","large"].includes(e)},enableHover:{type:Boolean,default:!0},useConfigLink:{type:Boolean,default:!1}},computed:{...(0,r.L8)(["userConfig"]),logoUrl(){return this.customSrc||this.userConfig?.logoUrl||o(33153)},logoHref(){return this.useConfigLink&&this.userConfig?.logoLink?this.userConfig.logoLink:this.href},logoClasses(){return{logo:!0,[`logo--${this.position}`]:!0,[`logo--${this.size}`]:!0,"logo--hover-enabled":this.enableHover}}}},c=o(71241);const u=(0,c.A)(d,[["render",n],["__scopeId","data-v-5c73638c"]]);var p=u},62388:function(e,t,o){"use strict";o.d(t,{G:function(){return l}});var a=o(46638);function l(e,{strict:t=!0}={}){if(!e||""===e.trim())return{valid:!0};if("/"===e)return{valid:!0};if(!e.startsWith("/"))return{valid:!1,error:a.Ay.global.t("validation.pathMustStartWithSlash")};if(/(?:^|\/)\.\.(\/|$)/.test(e)||e.includes(".."))return{valid:!1,error:a.Ay.global.t("validation.pathTraversalNotAllowed")};const o=t?/\/\.(\/|$)/:/\/\.\//;if(o.test(e))return{valid:!1,error:a.Ay.global.t("validation.singleDotNotAllowed")};if(e.includes("//"))return{valid:!1,error:a.Ay.global.t("validation.consecutiveSlashNotAllowed")};const l=/[\\:\*\?"'<>\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;return l.test(e)?{valid:!1,error:a.Ay.global.t("validation.invalidCharacters")}:{valid:!0}}},67502:function(e,t,o){"use strict";o.r(t),o.d(t,{default:function(){return jo}});var a=o(78507),l=(o(85331),o(213),o(80047)),i=(o(99648),o(56768)),s=o(24232);const n={class:"history-header"},r={class:"header-left"},d={class:"record-count"},c={class:"header-right"},u={class:"timeline-header"},p={class:"date-label"},h={key:0,class:"grid-view"},m={class:"grid-preview"},f=["src"],g=["src"],y={key:2,class:"file-icon-wrapper"},b={class:"grid-overlay"},v={class:"grid-actions"},k={class:"grid-info"},C=["title"],w={class:"upload-time"},F={key:1,class:"list-view"},L={class:"list-preview"},U=["src"],$=["src"],S={key:2,class:"file-icon-wrapper-small"},T={class:"list-info"},_=["title"],x=["title"],A={class:"list-meta"},M={class:"upload-time"},R={class:"list-actions"},E={key:0,class:"load-more-container"},D={key:0,class:"loading-indicator"},P={key:1,class:"load-more-hint"},I={key:1,class:"no-more-hint"},N={key:1,class:"empty-state"};function V(e,t,o,V,z,W){const B=(0,i.g2)("font-awesome-icon"),H=l.S2,Q=a.R7;return(0,i.uX)(),(0,i.CE)("div",{class:(0,s.C4)(["history-container",{active:o.show}])},[(0,i.Lk)("div",n,[(0,i.Lk)("div",r,[(0,i.Lk)("h2",null,(0,s.v_)(e.$t("uploadHistory.title")),1),(0,i.Lk)("span",d,(0,s.v_)(e.$t("uploadHistory.totalRecords",{count:z.totalCount})),1)]),(0,i.Lk)("div",c,[(0,i.bF)(Q,{content:e.$t("uploadHistory.switchView"),placement:"bottom","show-after":1e3},{default:(0,i.k6)(()=>[(0,i.bF)(H,{circle:"",onClick:W.toggleViewMode},{default:(0,i.k6)(()=>[(0,i.bF)(B,{icon:"grid"===z.viewMode?"list":"th-large"},null,8,["icon"])]),_:1},8,["onClick"])]),_:1},8,["content"]),(0,i.bF)(Q,{content:e.$t("uploadHistory.clearRecords"),placement:"bottom","show-after":1e3},{default:(0,i.k6)(()=>[(0,i.bF)(H,{circle:"",type:"danger",onClick:W.clearHistory},{default:(0,i.k6)(()=>[(0,i.bF)(B,{icon:"trash-alt"})]),_:1},8,["onClick"])]),_:1},8,["content"]),(0,i.bF)(H,{circle:"",onClick:t[0]||(t[0]=t=>e.$emit("close"))},{default:(0,i.k6)(()=>[(0,i.bF)(B,{icon:"times"})]),_:1})])]),z.historyList.length>0?((0,i.uX)(),(0,i.CE)("div",{key:0,class:"history-content",ref:"historyContent",onScroll:t[3]||(t[3]=(...e)=>W.handleScroll&&W.handleScroll(...e))},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(W.groupedHistory,e=>((0,i.uX)(),(0,i.CE)("div",{key:e.date,class:"history-group"},[(0,i.Lk)("div",u,[t[4]||(t[4]=(0,i.Lk)("div",{class:"timeline-dot"},null,-1)),(0,i.Lk)("span",p,(0,s.v_)(e.date),1)]),"grid"===z.viewMode?((0,i.uX)(),(0,i.CE)("div",h,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.items,e=>((0,i.uX)(),(0,i.CE)("div",{key:e.time,class:"grid-item"},[(0,i.Lk)("div",m,[W.isImage(e.name)?((0,i.uX)(),(0,i.CE)("img",{key:0,src:e.url,loading:"lazy",onError:t[1]||(t[1]=(...e)=>W.handleImageError&&W.handleImageError(...e))},null,40,f)):W.isVideo(e.name)?((0,i.uX)(),(0,i.CE)("video",{key:1,src:e.url,muted:""},null,8,g)):((0,i.uX)(),(0,i.CE)("div",y,[(0,i.bF)(B,{icon:"file",class:"file-icon"})])),(0,i.Lk)("div",b,[(0,i.Lk)("div",v,[(0,i.bF)(H,{circle:"",size:"default",type:"primary",onClick:t=>W.copyLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(B,{icon:"copy"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"default",class:"action-btn-view",onClick:t=>W.openLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(B,{icon:"external-link-alt"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"default",type:"danger",onClick:t=>W.deleteItem(e)},{default:(0,i.k6)(()=>[(0,i.bF)(B,{icon:"trash-alt"})]),_:1},8,["onClick"])])])]),(0,i.Lk)("div",k,[(0,i.Lk)("div",{class:"file-name",title:e.name},(0,s.v_)(e.name),9,C),(0,i.Lk)("div",w,(0,s.v_)(W.formatTime(e.time)),1)])]))),128))])):((0,i.uX)(),(0,i.CE)("div",F,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.items,e=>((0,i.uX)(),(0,i.CE)("div",{key:e.time,class:"list-item"},[(0,i.Lk)("div",L,[W.isImage(e.name)?((0,i.uX)(),(0,i.CE)("img",{key:0,src:e.url,loading:"lazy",onError:t[2]||(t[2]=(...e)=>W.handleImageError&&W.handleImageError(...e))},null,40,U)):W.isVideo(e.name)?((0,i.uX)(),(0,i.CE)("video",{key:1,src:e.url,muted:""},null,8,$)):((0,i.uX)(),(0,i.CE)("div",S,[(0,i.bF)(B,{icon:"file"})]))]),(0,i.Lk)("div",T,[(0,i.Lk)("div",{class:"file-name",title:e.name},(0,s.v_)(e.name),9,_),(0,i.Lk)("div",{class:"file-url",title:e.url},(0,s.v_)(e.url),9,x)]),(0,i.Lk)("div",A,[(0,i.Lk)("div",M,(0,s.v_)(W.formatTime(e.time)),1)]),(0,i.Lk)("div",R,[(0,i.bF)(H,{circle:"",size:"small",type:"primary",onClick:t=>W.copyLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(B,{icon:"copy"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"small",class:"action-btn-view",onClick:t=>W.openLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(B,{icon:"external-link-alt"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"small",type:"danger",onClick:t=>W.deleteItem(e)},{default:(0,i.k6)(()=>[(0,i.bF)(B,{icon:"trash-alt"})]),_:1},8,["onClick"])])]))),128))]))]))),128)),W.hasMore?((0,i.uX)(),(0,i.CE)("div",E,[z.loadingMore?((0,i.uX)(),(0,i.CE)("div",D,[(0,i.bF)(B,{icon:"spinner",spin:""}),(0,i.Lk)("span",null,(0,s.v_)(e.$t("uploadHistory.loading")),1)])):((0,i.uX)(),(0,i.CE)("div",P,(0,s.v_)(e.$t("uploadHistory.pullToLoadMore")),1))])):z.historyList.length>0?((0,i.uX)(),(0,i.CE)("div",I,(0,s.v_)(e.$t("uploadHistory.noMoreRecords")),1)):(0,i.Q3)("",!0)],544)):((0,i.uX)(),(0,i.CE)("div",N,[(0,i.bF)(B,{icon:"history",class:"empty-icon"}),(0,i.Lk)("p",null,(0,s.v_)(e.$t("uploadHistory.emptyHistory")),1)]))],2)}o(44114),o(18111),o(22489),o(7588),o(61701);var z={name:"UploadHistory",props:{show:{type:Boolean,default:!1}},data(){return{historyList:[],allHistory:[],viewMode:"grid",pageSize:30,currentPage:0,loadingMore:!1,totalCount:0}},watch:{show(e){e&&this.resetAndLoad()}},computed:{hasMore(){return this.historyList.length{const o=new Date(t.time),a=`${o.getFullYear()}-${String(o.getMonth()+1).padStart(2,"0")}-${String(o.getDate()).padStart(2,"0")}`;e[a]||(e[a]=[]),e[a].push(t)}),Object.keys(e).sort((e,t)=>new Date(t)-new Date(e)).map(t=>({date:t,items:e[t]}))}},mounted(){const e=localStorage.getItem("historyViewMode");e&&(this.viewMode=e)},methods:{resetAndLoad(){this.historyList=[],this.currentPage=0,this.loadAllHistory(),this.loadMore()},loadAllHistory(){try{const e=JSON.parse(localStorage.getItem("uploadHistory")||"[]");this.allHistory=e.sort((e,t)=>t.time-e.time),this.totalCount=this.allHistory.length}catch(e){console.error("Failed to load history",e),this.allHistory=[],this.totalCount=0}},loadMore(){!this.loadingMore&&this.hasMore&&(this.loadingMore=!0,setTimeout(()=>{const e=this.currentPage*this.pageSize,t=e+this.pageSize,o=this.allHistory.slice(e,t);this.historyList=[...this.historyList,...o],this.currentPage++,this.loadingMore=!1},50))},handleScroll(e){const t=e.target,o=t.scrollTop,a=t.scrollHeight,l=t.clientHeight;a-o-l<100&&this.loadMore()},toggleViewMode(){this.viewMode="grid"===this.viewMode?"list":"grid",localStorage.setItem("historyViewMode",this.viewMode)},clearHistory(){this.$confirm(this.$t("uploadHistory.clearConfirmMessage"),this.$t("uploadHistory.clearConfirmTitle"),{confirmButtonText:this.$t("uploadHistory.clearConfirmOk"),cancelButtonText:this.$t("uploadHistory.clearConfirmCancel"),type:"warning"}).then(()=>{this.historyList=[],this.allHistory=[],this.totalCount=0,this.currentPage=0,localStorage.removeItem("uploadHistory"),this.$message.success(this.$t("uploadHistory.recordsCleared"))}).catch(()=>{})},deleteItem(e){this.$confirm(this.$t("uploadHistory.deleteConfirmMessage"),this.$t("uploadHistory.clearConfirmTitle"),{confirmButtonText:this.$t("uploadHistory.clearConfirmOk"),cancelButtonText:this.$t("uploadHistory.clearConfirmCancel"),type:"warning"}).then(()=>{this.historyList=this.historyList.filter(t=>t.time!==e.time),this.allHistory=this.allHistory.filter(t=>t.time!==e.time),this.totalCount=this.allHistory.length;try{localStorage.setItem("uploadHistory",JSON.stringify(this.allHistory)),this.$message.success(this.$t("uploadHistory.recordDeleted"))}catch(t){console.error("Failed to update history",t)}}).catch(()=>{})},isImage(e){const t=["jpg","jpeg","png","gif","bmp","webp","svg","tiff","ico","avif","heic","jfif","pjpeg","pjp"],o=e?e.split(".").pop().toLowerCase():"";return t.includes(o)},isVideo(e){const t=["mp4","webm","ogg","mkv"],o=e?e.split(".").pop().toLowerCase():"";return t.includes(o)},formatTime(e){const t=new Date(e),o=t.getFullYear(),a=String(t.getMonth()+1).padStart(2,"0"),l=String(t.getDate()).padStart(2,"0"),i=String(t.getHours()).padStart(2,"0"),s=String(t.getMinutes()).padStart(2,"0"),n=String(t.getSeconds()).padStart(2,"0");return`${o}-${a}-${l} ${i}:${s}:${n}`},copyLink(e){navigator.clipboard.writeText(e).then(()=>{this.$message.success(this.$t("uploadHistory.linkCopied"))}).catch(()=>{this.$message.error(this.$t("uploadHistory.copyFailed"))})},openLink(e){window.open(e,"_blank")},handleImageError(e){e.target.src=o(96682)}}},W=o(71241);const B=(0,W.A)(z,[["render",V],["__scopeId","data-v-7da2f8c2"]]);var H=B,Q=o(86975),X=o(9267),O=(o(15616),o(81418)),q=(o(50333),o(74757)),j=o(55558),G=(o(10456),o(39623)),K=(o(29092),o(76018)),J=(o(96808),o(67819),o(66810)),Y=(o(4885),o(97769));o(34396),o(3261);const Z={class:"dialog-section"},ee={class:"section-header"},te={class:"section-title"},oe={class:"section-content"},ae={class:"setting-item channel-type-setting"},le={class:"channel-type-toolbar"},ie={class:"setting-label"},se={key:0,class:"channel-empty-state"},ne={key:0,class:"setting-item"},re={class:"setting-label"},de={class:"setting-item"},ce={class:"setting-label"},ue={class:"setting-item"},pe={class:"setting-label"},he={class:"dialog-section"},me={class:"section-header"},fe={class:"section-title"},ge={class:"section-content"},ye={class:"dialog-section"},be={class:"section-header"},ve={class:"section-title"},ke={class:"section-content"},Ce={class:"setting-item"},we={class:"setting-label"},Fe={class:"setting-item"},Le={class:"setting-label"},Ue={key:0,class:"setting-item slider-item"},$e={class:"setting-label"},Se={class:"slider-wrapper"},Te={class:"slider-input-wrapper"},_e={key:1,class:"setting-item slider-item"},xe={class:"setting-label"},Ae={class:"slider-wrapper"},Me={class:"slider-input-wrapper"},Re={key:0,class:"dialog-section"},Ee={class:"section-header"},De={class:"section-title"},Pe={class:"section-content"},Ie={class:"setting-item"},Ne={class:"setting-label"},Ve={class:"dialog-action"};function ze(e,t,o,n,r,d){const c=J.Zh,u=J.MQ,p=Y.A,h=J.ll,m=(0,i.g2)("font-awesome-icon"),f=a.R7,g=K.P9,y=K.AV,b=G.WK,v=j.qi,k=q.B8,C=O.lq,w=l.S2,F=X.kZ;return(0,i.uX)(),(0,i.Wv)(F,{title:e.$t("uploadSettings.title"),modelValue:d.visible,"onUpdate:modelValue":t[13]||(t[13]=e=>d.visible=e),width:d.dialogWidth,"show-close":!1,class:"settings-dialog settings-dialog-scope upload-settings-dialog"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",Z,[(0,i.Lk)("div",ee,[(0,i.Lk)("span",te,(0,s.v_)(e.$t("uploadSettings.uploadChannel")),1)]),(0,i.Lk)("div",oe,[(0,i.Lk)("div",ae,[(0,i.Lk)("div",le,[(0,i.Lk)("span",ie,(0,s.v_)(e.$t("uploadSettings.channelType")),1),(0,i.bF)(u,{modelValue:r.channelVisibility,"onUpdate:modelValue":t[0]||(t[0]=e=>r.channelVisibility=e),size:"small",class:"channel-visibility-filter",onChange:d.handleChannelVisibilityChange},{default:(0,i.k6)(()=>[(0,i.bF)(c,{label:"all"},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e.$t("uploadSettings.allChannels")),1)]),_:1}),(0,i.bF)(c,{label:"configured"},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e.$t("uploadSettings.configuredChannelsOnly")),1)]),_:1})]),_:1},8,["modelValue","onChange"])]),(0,i.bF)(u,{"model-value":o.uploadChannel,"onUpdate:modelValue":t[1]||(t[1]=t=>e.$emit("update:uploadChannel",t)),class:"radio-card-group compact"},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(d.visibleChannelOptions,e=>((0,i.uX)(),(0,i.Wv)(h,{key:e.value,label:e.value,class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(p,{type:e.value,class:"channel-icon"},null,8,["type"]),(0,i.Lk)("span",null,(0,s.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["model-value"]),"configured"===r.channelVisibility&&0===d.visibleChannelOptions.length?((0,i.uX)(),(0,i.CE)("div",se,(0,s.v_)(e.$t("uploadSettings.noConfiguredChannels")),1)):(0,i.Q3)("",!0)]),o.currentChannelList.length>1?((0,i.uX)(),(0,i.CE)("div",ne,[(0,i.Lk)("span",re,[(0,i.eW)((0,s.v_)(e.$t("uploadSettings.channelName"))+" ",1),(0,i.bF)(f,{content:e.$t("uploadSettings.channelNameTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(m,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.bF)(y,{"model-value":o.channelName,"onUpdate:modelValue":t[2]||(t[2]=t=>e.$emit("update:channelName",t)),placeholder:e.$t("uploadSettings.autoSelect"),clearable:"",class:"setting-input"},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.currentChannelList,e=>((0,i.uX)(),(0,i.Wv)(g,{key:e.name,label:e.name,value:e.name},null,8,["label","value"]))),128))]),_:1},8,["model-value","placeholder"])])):(0,i.Q3)("",!0),(0,i.Lk)("div",de,[(0,i.Lk)("span",ce,(0,s.v_)(e.$t("uploadSettings.uploadDirectory")),1),(0,i.bF)(b,{"model-value":o.uploadFolder,"onUpdate:modelValue":d.handleUploadFolderInput,placeholder:e.$t("uploadSettings.uploadDirectoryPlaceholder"),class:"setting-input"},null,8,["model-value","onUpdate:modelValue","placeholder"])]),(0,i.Lk)("div",ue,[(0,i.Lk)("span",pe,[(0,i.eW)((0,s.v_)(e.$t("uploadSettings.autoSwitch"))+" ",1),(0,i.bF)(f,{content:e.$t("uploadSettings.autoSwitchTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(m,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.bF)(v,{"model-value":o.autoRetry,"onUpdate:modelValue":t[3]||(t[3]=t=>e.$emit("update:autoRetry",t))},null,8,["model-value"])])])]),(0,i.Lk)("div",he,[(0,i.Lk)("div",me,[(0,i.Lk)("span",fe,(0,s.v_)(e.$t("uploadSettings.fileNaming")),1)]),(0,i.Lk)("div",ge,[(0,i.bF)(u,{"model-value":o.uploadNameType,"onUpdate:modelValue":t[4]||(t[4]=t=>e.$emit("update:uploadNameType",t)),class:"radio-card-group grid-2x2"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{label:"default",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(m,{icon:"cog",class:"radio-icon"}),(0,i.Lk)("span",null,(0,s.v_)(e.$t("uploadSettings.namingDefault")),1)]),_:1}),(0,i.bF)(h,{label:"index",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(m,{icon:"hashtag",class:"radio-icon"}),(0,i.Lk)("span",null,(0,s.v_)(e.$t("uploadSettings.namingIndex")),1)]),_:1}),(0,i.bF)(h,{label:"origin",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(m,{icon:"file-signature",class:"radio-icon"}),(0,i.Lk)("span",null,(0,s.v_)(e.$t("uploadSettings.namingOrigin")),1)]),_:1}),(0,i.bF)(h,{label:"short",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(m,{icon:"compress-alt",class:"radio-icon"}),(0,i.Lk)("span",null,(0,s.v_)(e.$t("uploadSettings.namingShort")),1)]),_:1})]),_:1},8,["model-value"])])]),(0,i.Lk)("div",ye,[(0,i.Lk)("div",be,[(0,i.Lk)("span",ve,(0,s.v_)(e.$t("uploadSettings.filePreprocess")),1),(0,i.bF)(f,{content:e.$t("uploadSettings.filePreprocessTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(m,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",ke,[(0,i.Lk)("div",Ce,[(0,i.Lk)("span",we,[(0,i.eW)((0,s.v_)(e.$t("uploadSettings.convertToWebp"))+" ",1),(0,i.bF)(f,{content:e.$t("uploadSettings.convertToWebpTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(m,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.bF)(v,{"model-value":o.convertToWebp,"onUpdate:modelValue":t[5]||(t[5]=t=>e.$emit("update:convertToWebp",t))},null,8,["model-value"])]),(0,i.Lk)("div",Fe,[(0,i.Lk)("span",Le,(0,s.v_)(e.$t("uploadSettings.fileCompress")),1),(0,i.bF)(v,{"model-value":o.customerCompress,"onUpdate:modelValue":t[6]||(t[6]=t=>e.$emit("update:customerCompress",t))},null,8,["model-value"])]),o.customerCompress?((0,i.uX)(),(0,i.CE)("div",Ue,[(0,i.Lk)("span",$e,[(0,i.eW)((0,s.v_)(e.$t("uploadSettings.compressThreshold"))+" ",1),(0,i.bF)(f,{content:e.$t("uploadSettings.compressThresholdTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(m,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",Se,[(0,i.bF)(k,{"model-value":o.compressBar,"onUpdate:modelValue":t[7]||(t[7]=t=>e.$emit("update:compressBar",t)),min:1,max:20,"format-tooltip":e=>`${e} MB`},null,8,["model-value","format-tooltip"]),(0,i.Lk)("div",Te,[(0,i.bF)(C,{"model-value":o.compressBar,"onUpdate:modelValue":t[8]||(t[8]=t=>e.$emit("update:compressBar",t)),min:1,max:20,step:1,"value-on-clear":1,class:"slider-input","controls-position":"right"},null,8,["model-value"]),t[14]||(t[14]=(0,i.Lk)("span",{class:"slider-unit"},"MB",-1))])])])):(0,i.Q3)("",!0),o.customerCompress?((0,i.uX)(),(0,i.CE)("div",_e,[(0,i.Lk)("span",xe,[(0,i.eW)((0,s.v_)(e.$t("uploadSettings.expectedSize"))+" ",1),(0,i.bF)(f,{content:e.$t("uploadSettings.expectedSizeTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(m,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",Ae,[(0,i.bF)(k,{"model-value":o.compressQuality,"onUpdate:modelValue":t[9]||(t[9]=t=>e.$emit("update:compressQuality",t)),min:.5,max:o.compressBar,step:.1,"format-tooltip":e=>`${e} MB`},null,8,["model-value","max","format-tooltip"]),(0,i.Lk)("div",Me,[(0,i.bF)(C,{"model-value":o.compressQuality,"onUpdate:modelValue":t[10]||(t[10]=t=>e.$emit("update:compressQuality",t)),min:.5,max:o.compressBar,step:.1,precision:1,"value-on-clear":.5,class:"slider-input","controls-position":"right"},null,8,["model-value","max"]),t[15]||(t[15]=(0,i.Lk)("span",{class:"slider-unit"},"MB",-1))])])])):(0,i.Q3)("",!0)])]),"telegram"===o.uploadChannel?((0,i.uX)(),(0,i.CE)("div",Re,[(0,i.Lk)("div",Ee,[(0,i.Lk)("span",De,(0,s.v_)(e.$t("uploadSettings.serverCompress")),1),(0,i.bF)(f,{content:e.$t("uploadSettings.serverCompressTooltip"),placement:"top","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(m,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",Pe,[(0,i.Lk)("div",Ie,[(0,i.Lk)("span",Ne,(0,s.v_)(e.$t("uploadSettings.enableCompress")),1),(0,i.bF)(v,{"model-value":o.serverCompress,"onUpdate:modelValue":t[11]||(t[11]=t=>e.$emit("update:serverCompress",t))},null,8,["model-value"])])])])):(0,i.Q3)("",!0),(0,i.Lk)("div",Ve,[(0,i.bF)(w,{type:"primary",onClick:t[12]||(t[12]=e=>d.visible=!1),class:"confirm-btn"},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e.$t("uploadSettings.confirm")),1)]),_:1})])]),_:1},8,["title","modelValue","width"])}const We=[{value:"telegram",label:"TG"},{value:"cfr2",label:"R2"},{value:"s3",label:"S3"},{value:"discord",label:"DC"},{value:"huggingface",label:"HF"},{value:"webdav",label:"WD"}];var Be={name:"UploadSettingsDialog",components:{ChannelIcon:Y.A},data(){return{channelVisibility:"configured"}},methods:{hasConfiguredChannels(e){const t=this.availableChannels[e];return Array.isArray(t)&&t.length>0},handleChannelVisibilityChange(e){"configured"===e&&this.ensureConfiguredChannelSelected()},ensureConfiguredChannelSelected(){if("configured"!==this.channelVisibility||this.hasConfiguredChannels(this.uploadChannel))return;const e=this.visibleChannelOptions[0];e&&this.$emit("update:uploadChannel",e.value)},handleUploadFolderInput(e){e&&!e.startsWith("/")&&(e="/"+e),this.$emit("update:uploadFolder",e)}},props:{modelValue:{type:Boolean,default:!1},uploadChannel:{type:String,default:"telegram"},channelName:{type:String,default:""},availableChannels:{type:Object,default:()=>({})},currentChannelList:{type:Array,default:()=>[]},uploadFolder:{type:String,default:""},autoRetry:{type:Boolean,default:!0},uploadNameType:{type:String,default:"default"},convertToWebp:{type:Boolean,default:!1},customerCompress:{type:Boolean,default:!0},compressBar:{type:Number,default:5},compressQuality:{type:Number,default:4},serverCompress:{type:Boolean,default:!0}},emits:["update:modelValue","update:uploadChannel","update:channelName","update:uploadFolder","update:autoRetry","update:uploadNameType","update:convertToWebp","update:customerCompress","update:compressBar","update:compressQuality","update:serverCompress"],watch:{availableChannels:{handler(){this.ensureConfiguredChannelSelected()},deep:!0}},computed:{visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},visibleChannelOptions(){return"all"===this.channelVisibility?We:We.filter(e=>this.hasConfiguredChannels(e.value))},dialogWidth(){return window.innerWidth>768?"50%":"90%"}}};const He=(0,W.A)(Be,[["render",ze],["__scopeId","data-v-25aa00bd"]]);var Qe=He,Xe=o(88559),Oe=(o(85970),o(813)),qe=(o(34896),o(69655)),je=(o(2893),o(74253));o(79899);const Ge={class:"upload-list-item"},Ke=["href"],Je={key:0,style:{width:"10vw","border-radius":"12px"},autoplay:"",muted:"",playsinline:"",loop:""},Ye=["src"],Ze=["src"],et={key:2,style:{width:"10vw","border-radius":"12px"}},tt={class:"upload-list-item-content"},ot={class:"upload-list-item-name-wrapper"},at={key:0,class:"upload-list-item-url"},lt={class:"upload-list-item-url-row"},it={class:"upload-list-item-url-row"},st={key:1,class:"upload-list-item-progress"},nt={class:"upload-list-item-action"};function rt(e,t,o,a,l,n){const r=(0,i.g2)("font-awesome-icon"),d=je.$g,c=G.WK,u=qe.ve,p=(0,i.g2)("Link"),h=Oe.tk,m=(0,i.g2)("Delete");return(0,i.uX)(),(0,i.CE)("div",Ge,[(0,i.Lk)("a",{href:o.file.url,target:"_blank",class:"upload-list-item-preview"},[n.isVideo(o.file.name)?((0,i.uX)(),(0,i.CE)("video",Je,[(0,i.Lk)("source",{src:o.file.url,type:"video/mp4"},null,8,Ye),t[7]||(t[7]=(0,i.eW)(" Your browser does not support the video tag. ",-1))])):n.isImage(o.file.name)?((0,i.uX)(),(0,i.CE)("img",{key:1,style:{width:"10vw","border-radius":"12px"},src:o.file.url,onError:t[0]||(t[0]=t=>e.$emit("preview-error",o.file))},null,40,Ze)):((0,i.uX)(),(0,i.CE)("div",et,[(0,i.bF)(r,{icon:"file",class:"file-icon"})]))],8,Ke),(0,i.Lk)("div",tt,[(0,i.Lk)("div",ot,[(0,i.bF)(d,{class:"upload-list-item-name",truncated:""},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(n.truncateFilename(o.file.name)),1)]),_:1})]),"done"===o.file.status?((0,i.uX)(),(0,i.CE)("div",at,[(0,i.Lk)("div",lt,[(0,i.bF)(c,{modelValue:o.file.finalURL,"onUpdate:modelValue":t[1]||(t[1]=e=>o.file.finalURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[8]||(t[8]=[(0,i.eW)("URL",-1)])]),_:1},8,["modelValue","onClick","size"]),(0,i.bF)(c,{modelValue:o.file.mdURL,"onUpdate:modelValue":t[2]||(t[2]=e=>o.file.mdURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[9]||(t[9]=[(0,i.eW)("MarkDown",-1)])]),_:1},8,["modelValue","onClick","size"])]),(0,i.Lk)("div",it,[(0,i.bF)(c,{modelValue:o.file.htmlURL,"onUpdate:modelValue":t[3]||(t[3]=e=>o.file.htmlURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[10]||(t[10]=[(0,i.eW)("HTML",-1)])]),_:1},8,["modelValue","onClick","size"]),(0,i.bF)(c,{modelValue:o.file.ubbURL,"onUpdate:modelValue":t[4]||(t[4]=e=>o.file.ubbURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[11]||(t[11]=[(0,i.eW)("BBCode",-1)])]),_:1},8,["modelValue","onClick","size"])])])):((0,i.uX)(),(0,i.CE)("div",st,[(0,i.bF)(u,{percentage:o.file.progreess,status:o.file.status,"show-text":!1},null,8,["percentage","status"])]))]),(0,i.Lk)("div",nt,[(0,i.Lk)("button",{class:"modern-file-action-btn modern-file-action-btn-primary",onClick:t[5]||(t[5]=t=>e.$emit("copy",o.file))},[(0,i.bF)(h,null,{default:(0,i.k6)(()=>[(0,i.bF)(p)]),_:1})]),(0,i.Lk)("button",{class:"modern-file-action-btn modern-file-action-btn-danger",onClick:t[6]||(t[6]=t=>e.$emit("remove",o.file))},[(0,i.bF)(h,null,{default:(0,i.k6)(()=>[(0,i.bF)(m)]),_:1})])])])}var dt=o(57477);const ct=["jpg","jpeg","png","gif","bmp","webp","svg","tiff","ico","avif","heic","jfif","pjpeg","pjp","raw","cr2","nef","dng","eps","ai","emf","wmf"],ut=["mp4","webm","ogg","mkv"];var pt={name:"UploadFileItem",components:{Link:dt.Link,Delete:dt.Delete},props:{file:{type:Object,required:!0}},emits:["copy","remove","preview-error"],computed:{urlSize(){return window.innerWidth<768?"small":"default"}},methods:{isImage(e){const t=e.split(".").pop().toLowerCase();return ct.includes(t)},isVideo(e){const t=e.split(".").pop().toLowerCase();return ut.includes(t)},truncateFilename(e,t=20){if(!e||e.length<=t)return e;const o=e.lastIndexOf(".");let a,l;o>0?(a=e.substring(0,o),l=e.substring(o)):(a=e,l="");const i=l.length+4,s=t-i-3;return s<=0?e.substring(0,t-3)+"...":a.substring(0,s)+"..."+a.slice(-4)+l},selectAllText(e){navigator.clipboard.writeText(e.target.value).then(()=>{this.$message({type:"success",message:this.$t("uploadForm.copySuccess")})}).catch(()=>{this.$message({type:"error",message:this.$t("uploadForm.copyFailed")})})}}};const ht=(0,W.A)(pt,[["render",rt],["__scopeId","data-v-4a46527b"]]);var mt=ht,ft=o(62086),gt=(o(40670),o(88830),o(23597),o(70683)),yt=(o(95385),o(47358)),bt=o(45130);const vt={class:"upload-form"},kt={ref:"clipboardPasteReceiver",class:"clipboard-paste-receiver",tabindex:"-1","aria-hidden":"true"},Ct={class:"upload-card-glow",ref:"uploadCardGlow"},wt={class:"upload-prompt-row"},Ft=["innerHTML"],Lt=["aria-label"],Ut={key:0,class:"upload-card"},$t={class:"paste-card-actions"},St=["aria-label"],Tt=["aria-pressed"],_t=["aria-pressed"],xt={class:"upload-list-container"},At={class:"upload-list-dashboard-action"},Mt={class:"modern-action-group"},Rt={class:"modern-dropdown-item-content"},Et={class:"modern-action-btn modern-action-btn-danger"};function Dt(e,t,n,r,d,c){const u=Oe.tk,p=(0,i.g2)("font-awesome-icon"),h=a.R7,m=yt.j5,f=G.WK,g=l.S2,y=gt.Ik,b=(0,i.g2)("List"),v=(0,i.g2)("Checked"),k=(0,i.g2)("Failed"),C=je.$g,w=j.qi,F=ft.c6,L=ft.Iy,U=ft.dW,$=mt,S=Xe.kA;return(0,i.uX)(),(0,i.CE)("div",vt,[(0,i.Lk)("textarea",kt,null,512),(0,i.Lk)("div",{class:"upload-card-wrapper",onMousemove:t[2]||(t[2]=(...e)=>c.handleUploadCardMouseMove&&c.handleUploadCardMouseMove(...e)),onMouseleave:t[3]||(t[3]=(...e)=>c.handleUploadCardMouseLeave&&c.handleUploadCardMouseLeave(...e)),onDropCapture:t[4]||(t[4]=(0,bt.D$)((...e)=>c.handleDrop&&c.handleDrop(...e),["stop","prevent"]))},[(0,i.Lk)("div",Ct,null,512),"default"===n.uploadMethod?((0,i.uX)(),(0,i.Wv)(m,{key:0,class:(0,s.C4)(["upload-card",{"is-uploading":d.uploading,"upload-card-busy":d.fileList.length}]),drag:"",multiple:"","http-request":c.uploadFile,onSuccess:c.handleSuccess,"on-error":c.handleError,"before-upload":c.beforeUpload,"on-progress":c.handleProgress,"file-list":d.fileList,"show-file-list":!1},{default:(0,i.k6)(()=>[(0,i.bF)(u,{class:(0,s.C4)(["el-icon--upload",{"upload-list-busy":d.fileList.length}])},{default:(0,i.k6)(()=>[...t[12]||(t[12]=[(0,i.Lk)("svg",{class:"upload-plus-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.25","stroke-linecap":"round","aria-hidden":"true"},[(0,i.Lk)("path",{d:"M12 7v10"}),(0,i.Lk)("path",{d:"M7 12h10"})],-1)])]),_:1},8,["class"]),(0,i.Lk)("div",wt,[(0,i.Lk)("div",{class:(0,s.C4)(["el-upload__text",{"upload-list-busy":d.fileList.length}]),innerHTML:e.$t("upload.dragUploadText",{pasteShortcut:c.pasteShortcut})},null,10,Ft),(0,i.bF)(h,{disabled:c.disableTooltip,content:e.$t("upload.selectFolderUpload"),placement:"top","show-after":1e3},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{type:"button",class:(0,s.C4)(["folder-upload-icon-button",{"upload-list-busy":d.fileList.length}]),"aria-label":e.$t("upload.selectFolderUpload"),onClick:t[0]||(t[0]=(0,bt.D$)((...e)=>c.openFolderPicker&&c.openFolderPicker(...e),["stop","prevent"]))},[(0,i.bF)(p,{icon:"folder-open"})],10,Lt)]),_:1},8,["disabled","content"])])]),_:1},8,["class","http-request","onSuccess","on-error","before-upload","on-progress","file-list"])):(0,i.Q3)("",!0),(0,i.Lk)("input",{ref:"folderInput",class:"folder-upload-input",type:"file",webkitdirectory:"",directory:"",multiple:"",onChange:t[1]||(t[1]=(...e)=>c.handleFolderSelection&&c.handleFolderSelection(...e))},null,544)],32),"paste"===n.uploadMethod?((0,i.uX)(),(0,i.CE)("div",Ut,[(0,i.bF)(y,{class:(0,s.C4)(["paste-card",{"is-uploading":d.uploading,"upload-card-busy":d.fileList.length}])},{default:(0,i.k6)(()=>[(0,i.bF)(f,{modelValue:d.pastedUrls,"onUpdate:modelValue":t[5]||(t[5]=e=>d.pastedUrls=e),class:"upload-card-textarea",placeholder:e.$t("upload.pasteUrlPlaceholder"),type:"textarea",rows:d.fileList.length?4:14},null,8,["modelValue","placeholder","rows"]),(0,i.Lk)("div",$t,[(0,i.bF)(g,{class:"paste-card-upload-button",type:"primary",size:c.pasteCardMethodButtonSize,onClick:c.handleUploadPasteUrls},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e.$t("upload.pasteUploadBtn")),1)]),_:1},8,["size","onClick"]),(0,i.Lk)("div",{class:(0,s.C4)(["paste-card-method-group",{"is-external":"external"===d.pasteUploadMethod}]),role:"group","aria-label":e.$t("upload.switchUploadMethod")},[(0,i.Lk)("button",{class:(0,s.C4)(["paste-card-method-button",{"is-active":"save"===d.pasteUploadMethod}]),type:"button","aria-pressed":"save"===d.pasteUploadMethod,onClick:t[6]||(t[6]=e=>d.pasteUploadMethod="save")},(0,s.v_)(e.$t("upload.pasteSave")),11,Tt),(0,i.Lk)("button",{class:(0,s.C4)(["paste-card-method-button",{"is-active":"external"===d.pasteUploadMethod}]),type:"button","aria-pressed":"external"===d.pasteUploadMethod,onClick:t[7]||(t[7]=e=>d.pasteUploadMethod="external")},(0,s.v_)(e.$t("upload.pasteExternal")),11,_t)],10,St)])]),_:1},8,["class"])])):(0,i.Q3)("",!0),(0,i.bF)(y,{class:(0,s.C4)(["upload-list-card",{"upload-list-busy":d.fileList.length}])},{default:(0,i.k6)(()=>[(0,i.Lk)("div",xt,[(0,i.bF)(S,{onScroll:c.handleScroll,ref:"scrollContainer"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",{class:(0,s.C4)(["upload-list-dashboard",{"list-scrolled":d.listScrolled}])},[(0,i.bF)(C,{class:"upload-list-dashboard-title"},{default:(0,i.k6)(()=>[(0,i.bF)(u,null,{default:(0,i.k6)(()=>[(0,i.bF)(b)]),_:1}),(0,i.eW)((0,s.v_)(c.uploadingCount+c.waitingCount)+" ",1),(0,i.bF)(u,null,{default:(0,i.k6)(()=>[(0,i.bF)(v)]),_:1}),(0,i.eW)((0,s.v_)(c.uploadSuccessCount)+" ",1),(0,i.bF)(u,null,{default:(0,i.k6)(()=>[(0,i.bF)(k)]),_:1}),(0,i.eW)((0,s.v_)(c.uploadErrorCount),1)]),_:1}),(0,i.Lk)("div",At,[(0,i.Lk)("div",Mt,[(0,i.bF)(h,{disabled:c.disableTooltip,content:e.$t("upload.copyAll"),placement:"top","show-after":1e3},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"modern-action-btn modern-action-btn-copy",onClick:t[8]||(t[8]=(...e)=>c.copyAll&&c.copyAll(...e))},[(0,i.bF)(p,{icon:"copy"})])]),_:1},8,["disabled","content"]),(0,i.bF)(h,{disabled:c.disableTooltip,content:e.$t("upload.retryFailed"),placement:"top","show-after":1e3},{default:(0,i.k6)(()=>[(0,i.bF)(U,null,{dropdown:(0,i.k6)(()=>[(0,i.bF)(L,{class:"modern-dropdown-menu"},{default:(0,i.k6)(()=>[(0,i.bF)(F,null,{default:(0,i.k6)(()=>[(0,i.Lk)("div",Rt,[(0,i.Lk)("span",null,(0,s.v_)(e.$t("uploadForm.autoRetry")),1),(0,i.bF)(w,{modelValue:d.autoReUpload,"onUpdate:modelValue":t[10]||(t[10]=e=>d.autoReUpload=e),onChange:c.handleAutoRetryChange,size:"small"},null,8,["modelValue","onChange"])])]),_:1})]),_:1})]),default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"modern-action-btn modern-action-btn-retry",onClick:t[9]||(t[9]=(...e)=>c.retryError&&c.retryError(...e))},[(0,i.bF)(p,{icon:"redo"})])]),_:1})]),_:1},8,["disabled","content"]),(0,i.bF)(h,{disabled:c.disableTooltip,content:e.$t("upload.clearList"),placement:"top","show-after":1e3},{default:(0,i.k6)(()=>[(0,i.bF)(U,null,{dropdown:(0,i.k6)(()=>[(0,i.bF)(L,{class:"modern-dropdown-menu"},{default:(0,i.k6)(()=>[(0,i.bF)(F,{onClick:c.clearFileList},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e.$t("upload.clearAll")),1)]),_:1},8,["onClick"]),(0,i.bF)(F,{onClick:c.clearSuccessList},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e.$t("upload.clearUploaded")),1)]),_:1},8,["onClick"])]),_:1})]),default:(0,i.k6)(()=>[(0,i.Lk)("button",Et,[(0,i.bF)(p,{icon:"trash-alt"})])]),_:1})]),_:1},8,["disabled","content"])])])],2),((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(d.fileList.slice().reverse(),e=>((0,i.uX)(),(0,i.Wv)($,{key:e.uid,file:e,onCopy:c.handleCopy,onRemove:c.handleRemove,onPreviewError:t[11]||(t[11]=e=>e.url=o(96682))},null,8,["file","onCopy","onRemove"]))),128))]),_:1},8,["onScroll"])])]),_:1},8,["class"])])}o(20116),o(18237),o(79577),o(41549),o(49797),o(49631),o(35623),o(64979);var Pt=o(457),It=o(76334),Nt=o(60782);function Vt(e,t,o){const a=o+e;return{finalURL:a,mdURL:`![${t}](${a})`,htmlURL:`${t}`,ubbURL:`[img]${a}[/img]`}}function zt(e,t){const o={url:e.finalURL,md:e.mdURL,html:e.htmlURL,ubb:e.ubbURL};return o[t]||e.finalURL}function Wt(e,t){e.forEach(e=>{if("external"===e.uploadChannel)return;const o=Vt(e.srcID,e.name,t);Object.assign(e,o)})}const Bt=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Ht=(e,t)=>e>>>t|e<<32-t;function Qt(e,t){const o=new Uint32Array(64);for(let u=0;u<16;u++)o[u]=e[4*u]<<24|e[4*u+1]<<16|e[4*u+2]<<8|e[4*u+3];for(let u=16;u<64;u++){const e=Ht(o[u-15],7)^Ht(o[u-15],18)^o[u-15]>>>3,t=Ht(o[u-2],17)^Ht(o[u-2],19)^o[u-2]>>>10;o[u]=o[u-16]+e+o[u-7]+t>>>0}let[a,l,i,s,n,r,d,c]=t;for(let u=0;u<64;u++){const e=Ht(n,6)^Ht(n,11)^Ht(n,25),t=n&r^~n&d,p=c+e+t+Bt[u]+o[u]>>>0,h=Ht(a,2)^Ht(a,13)^Ht(a,22),m=a&l^a&i^l&i,f=h+m>>>0;c=d,d=r,r=n,n=s+p>>>0,s=i,i=l,l=a,a=p+f>>>0}t[0]=t[0]+a>>>0,t[1]=t[1]+l>>>0,t[2]=t[2]+i>>>0,t[3]=t[3]+s>>>0,t[4]=t[4]+n>>>0,t[5]=t[5]+r>>>0,t[6]=t[6]+d>>>0,t[7]=t[7]+c>>>0}function Xt(){let e=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),t=new Uint8Array(64),o=0,a=0;return{update(l){a+=l.length;let i=0;if(o>0){const a=64-o,s=Math.min(a,l.length);t.set(l.subarray(0,s),o),o+=s,i=s,64===o&&(Qt(t,e),o=0)}while(i+64<=l.length)Qt(l.subarray(i,i+64),e),i+=64;i56&&(t.fill(0,o,64),Qt(t,e),o=0),t.fill(0,o,56);const i=new DataView(t.buffer);i.setUint32(56,Math.floor(l/4294967296),!1),i.setUint32(60,l>>>0,!1),Qt(t,e);let s="";for(let t=0;t<8;t++)s+=e[t].toString(16).padStart(8,"0");return s}}}async function Ot(e){const t=Xt(),o=4194304;let a=0;while(ae&&"."!==e).map(e=>".."===e?"_":e).join("/")}function jt(e=""){const t=qt(e),o=t.lastIndexOf("/");return-1===o?"":t.slice(0,o)}function Gt(e="",t=""){const o=/^[\\/]/.test(String(e).trim()),a=[qt(e),qt(t)].filter(Boolean).join("/");return a?o?`/${a}`:a:""}function Kt(e=[]){return Array.from(e).map(e=>({file:e,relativePath:qt(e.webkitRelativePath||e.relativePath||e.name)}))}function Jt(e){return new Promise((t,o)=>e.file(t,o))}async function Yt(e){const t=e.createReader(),o=[];while(1){const e=await new Promise((e,o)=>t.readEntries(e,o));if(!e.length)break;o.push(...e)}return o}async function Zt(e,t,o){const a=qt([t,e.name].filter(Boolean).join("/"));if(e.isFile){const t=await Jt(e);return void o.push({file:t,relativePath:a})}if(e.isDirectory){const t=await Yt(e);for(const e of t)await Zt(e,a,o)}}async function eo(e,t,o){const a=qt([t,e.name].filter(Boolean).join("/"));if("file"!==e.kind){if("directory"===e.kind)for await(const l of e.values())await eo(l,a,o)}else o.push({file:await e.getFile(),relativePath:a})}async function to(e=[]){const t=Array.from(e).filter(e=>"file"===e.kind),o=[],a=await Promise.all(t.map(async e=>{if("function"!==typeof e.getAsFileSystemHandle)return null;try{return await e.getAsFileSystemHandle()}catch{return null}}));for(let l=0;lthis.fileListLength&&this.$nextTick(()=>{setTimeout(()=>{this.$refs.scrollContainer&&this.$refs.scrollContainer.setScrollTop(0)},100)}),this.fileListLength=this.fileList.length},deep:!0},useCustomUrl:{handler(){Wt(this.fileList,this.rootUrl)},immediate:!0},customUrlPrefix:{handler(){"true"===this.useCustomUrl&&Wt(this.fileList,this.rootUrl)},immediate:!0},autoReUpload(e){this.$store.commit("setStoreAutoReUpload",e)}},computed:{...(0,Nt.L8)(["storeAutoReUpload"]),uploadSuccessCount(){return this.fileList.filter(e=>"done"===e.status||"success"===e.status).length},uploadErrorCount(){return this.fileList.filter(e=>"exception"===e.status).length},uploadingCount(){return this.fileList.filter(e=>"uploading"===e.status).length},waitingCount(){return this.uploadQueue.length},urlSize(){return window.innerWidth<768?"small":"default"},disableTooltip(){return window.innerWidth<768},pasteShortcut(){const e=navigator.userAgentData?.platform||navigator.platform||"";return/mac|iphone|ipad|ipod/i.test(e)?"Cmd + V":"Ctrl + V"},rootUrl(){return"true"===this.useCustomUrl?this.customUrlPrefix:this.urlPrefix||`${window.location.protocol}//${window.location.host}/file/`},pasteCardMethodButtonSize(){return this.fileList.length||window.innerWidth<768?"small":"medium"}},mounted(){document.addEventListener("paste",this.handlePaste),document.addEventListener("keydown",this.handlePasteShortcut),this.autoReUpload=this.storeAutoReUpload},beforeUnmount(){document.removeEventListener("paste",this.handlePaste),document.removeEventListener("keydown",this.handlePasteShortcut),this.uploadQueue=[],this.fileList=[],this.activeUploads=0},methods:{createLocalUid(){return this.localUidCounter+=1,`local-${Date.now()}-${this.localUidCounter}`},applyUploadPath(e,t=e.name){const o=String(t||e.name).replace(/\\/g,"/").replace(/^\/+/,"");return e.uploadRelativePath=o,e.uploadFolder=Gt(this.uploadFolder,jt(o)),e},copyUploadPath(e,t){return t.uploadRelativePath=e.uploadRelativePath||e.name,t.uploadFolder=e.uploadFolder??this.uploadFolder,t},getFileUploadFolder(e){const t=this.fileList.find(t=>t.uid===e.file.uid);return t?.uploadFolder??e.file.uploadFolder??this.uploadFolder},createUploadRequest(e){return{file:e,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)}},async uploadLocalEntries(e){await Promise.allSettled(e.map(async({file:e,relativePath:t})=>{e.uid=this.createLocalUid(),this.applyUploadPath(e,t);const o=await this.beforeUpload(e);o instanceof File&&this.uploadFile(this.createUploadRequest(o))}))},openFolderPicker(){this.$refs.folderInput?.click()},async handleFolderSelection(e){const t=Kt(e.target.files);e.target.value="",await this.uploadLocalEntries(t)},async handleDrop(e){const t=e.dataTransfer;if(!t)return;const o=t.items?.length?await to(t.items):Kt(t.files);o.length&&await this.uploadLocalEntries(o)},truncateFilename(e,t=20){if(!e||e.length<=t)return e;const o=e.lastIndexOf(".");let a,l;o>0?(a=e.substring(0,o),l=e.substring(o)):(a=e,l="");const i=l.length+4,s=t-i-3;return s<=0?e.substring(0,t-3)+"...":a.substring(0,s)+"..."+a.slice(-4)+l},uploadFile(e){if(!this.fileList.find(t=>t.uid===e.file.uid))return;if(this.activeUploads>=this.maxConcurrentUploads){this.uploadQueue.push(e);const t=this.fileList.find(t=>t.uid===e.file.uid);return void(t&&(t.status="waiting"))}this.activeUploads++;const t=this.fileList.find(t=>t.uid===e.file.uid);t&&(t.status="uploading");const o=this.fileList.find(t=>t.uid===e.file.uid),a=o?.uploadChannel||this.uploadChannel;if("external"===a)return void this.uploadSingleFile(e);if("huggingface"===a){const t=20971520;return void(e.file.size>=t?this.uploadToHuggingFaceDirect(e):this.uploadSingleFile(e))}if("discord"===a){const t=9437184;return void(e.file.size>t?this.uploadFileInChunks(e):this.uploadSingleFile(e))}const l=20971520;e.file.size>l?this.uploadFileInChunks(e):this.uploadSingleFile(e)},processUploadQueue(){if(0===this.uploadQueue.length||this.activeUploads>=this.maxConcurrentUploads)return;const e=this.uploadQueue.shift();e&&this.fileList.find(t=>t.uid===e.file.uid)?this.uploadFile(e):this.processUploadQueue()},onUploadComplete(){this.activeUploads=Math.max(0,this.activeUploads-1),this.processUploadQueue(),0===this.activeUploads&&0===this.uploadQueue.length&&(this.uploading=!1)},async uploadSingleFile(e){const t=this.fileList.find(t=>t.uid===e.file.uid);if(!t)return;const o=t.serverCompress,a=t.uploadChannel||this.uploadChannel,l=this.autoRetry&&"external"!==a,i="external"===a?"default":this.uploadNameType,s=this.getFileUploadFolder(e),n=new AbortController;this.abortControllers.set(e.file.uid,n);const r=new FormData;if(r.append("file",e.file),"external"===a&&r.append("url",e.file.url),"huggingface"===a)try{console.log("Computing SHA256 for HuggingFace upload...");const t=await Ot(e.file);r.append("sha256",t),console.log("SHA256 computed:",t)}catch(d){console.error("Failed to compute SHA256:",d)}(0,Pt.A)({url:"/upload?serverCompress="+o+"&uploadChannel="+a+(this.channelName?"&channelName="+encodeURIComponent(this.channelName):"")+"&uploadNameType="+i+"&autoRetry="+l+"&uploadFolder="+encodeURIComponent(s),method:"post",data:r,withAuthCode:!0,signal:n.signal,onUploadProgress:t=>{const o=Math.round(t.loaded/t.total*100);e.onProgress({percent:o,file:e.file})}}).then(t=>{e.onSuccess(t,e.file)}).catch(t=>{"CanceledError"!==t.name&&"ERR_CANCELED"!==t.code?t.response&&401!==t.response.status?(this.exceptionList.push(e),e.onError(t,e.file)):t.response||(this.exceptionList.push(e),e.onError(t,e.file)):console.log("上传已取消:",e.file.name)}).finally(()=>{this.abortControllers.delete(e.file.uid),this.onUploadComplete()})},async uploadFileInChunks(e){const t=this.fileList.find(t=>t.uid===e.file.uid);if(!t)return;const o=t.uploadChannel||this.uploadChannel,a=new AbortController;this.abortControllers.set(e.file.uid,a);const l="discord"===o?9437184:16777216,i=e.file.size,s=e.file.type||"application/octet-stream",n=Math.ceil(i/l),r=t.serverCompress,d=this.autoRetry&&"external"!==o,c="external"===o?"default":this.uploadNameType,u=this.getFileUploadFolder(e);let p=null;if("huggingface"===o)try{console.log("Computing SHA256 for HuggingFace chunked upload..."),p=await Ot(e.file),console.log("SHA256 computed:",p)}catch(h){console.error("Failed to compute SHA256:",h)}try{const t=new FormData;t.append("originalFileName",e.file.name),t.append("originalFileType",s),t.append("totalChunks",n.toString());const m=await(0,Pt.A)({url:"/upload?serverCompress="+r+"&uploadChannel="+o+(this.channelName?"&channelName="+encodeURIComponent(this.channelName):"")+"&uploadNameType="+c+"&autoRetry="+d+"&uploadFolder="+encodeURIComponent(u)+"&initChunked=true",method:"post",data:t,withAuthCode:!0});if(!m.data.success)throw new Error(this.$t("uploadForm.chunkInitFailed")+": "+m.data.message);const f=m.data.uploadId;console.log("分块上传初始化成功,uploadId:",f);const g=this.fileList.find(t=>t.uid===e.file.uid);g&&(g.totalChunks=n,g.uploadId=f);const y=3,b=new Array(n).fill(0);let v=0,k=!1,C="",w=!1;const F=async t=>{if(k||w)return;const p=t*l,m=Math.min(p+l,i),g=e.file.slice(p,m),y=new FormData;y.append("file",g,`${e.file.name}.part${t.toString().padStart(3,"0")}`),y.append("chunkIndex",t.toString()),y.append("totalChunks",n.toString()),y.append("uploadId",f),y.append("originalFileName",e.file.name),y.append("originalFileType",s);let v=0;const F=3;while(v{if(k||w)return;const a=Math.round(o.loaded/o.total*100);b[t]=a;const l=Math.round(b.reduce((e,t)=>e+t,0)/n);e.onProgress({percent:l,file:e.file})}})}catch(h){if("CanceledError"===h.name||"ERR_CANCELED"===h.code)return w=!0,void console.log("分块上传已取消:",e.file.name);if(v++,console.warn(`分块 ${t+1}/${n} 上传失败 (重试 ${v}/${F}):`,h),v>=F)throw k=!0,C=`分块 ${t+1}/${n} 上传失败: ${h.message}`,new Error(C);await new Promise(e=>setTimeout(e,2e3*v))}}},L=[];for(let e=0;e{while(vt.uid===e.file.uid);t&&t.uploadId&&this.cleanupUploadResources(t.uploadId,t.totalChunks).then(()=>{console.log(`已清理分块上传失败的资源: ${t.uploadId}`)}).catch(e=>{console.warn("清理分块上传失败资源时出错:",e)}),h.response&&401!==h.response.status?(this.exceptionList.push(e),e.onError(h,e.file)):h.response||(this.exceptionList.push(e),e.onError(h,e.file))}finally{this.abortControllers.delete(e.file.uid),this.onUploadComplete()}},handleRemove(e){this.abortControllers.has(e.uid)&&(this.abortControllers.get(e.uid).abort(),this.abortControllers.delete(e.uid)),this.uploadQueue=this.uploadQueue.filter(t=>t.file.uid!==e.uid),this.fileList=this.fileList.filter(t=>t.uid!==e.uid),this.$message({type:"info",message:this.$t("uploadForm.deleted",{name:this.truncateFilename(e.name)})})},async cleanupUploadResources(e,t=0){try{await(0,Pt.A)({url:`/upload?cleanup=true&uploadId=${e}&totalChunks=${t}`,method:"get",withAuthCode:!0,timeout:5e3}),console.log(`清理上传资源成功: ${e}`)}catch(o){console.warn("清理上传资源失败:",o)}},handleSuccess(e,t){const o=this.fileList.find(e=>e.uid===t.uid);if(o)try{const a=o.uploadChannel||this.uploadChannel;if("external"!==a){const a=e.data[0].src.replace("/file/","");o.url=`${window.location.protocol}//${window.location.host}/file/`+a;const l=Vt(a,t.name,this.rootUrl);Object.assign(o,l),o.srcID=a}o.progreess=100,o.status="success",this.saveToHistory(o),this.$message({type:"success",message:this.$t("uploadForm.uploadSuccess",{name:this.truncateFilename(t.name)})}),setTimeout(()=>{const e=this.fileList.find(e=>e.uid===t.uid);e&&(e.status="done")},1e3)}catch(a){this.$message.error(this.$t("uploadForm.uploadFailed",{name:this.truncateFilename(t.name)})),o.status="exception"}},saveToHistory(e){try{const t=JSON.parse(localStorage.getItem("uploadHistory")||"[]"),o={name:e.name,url:e.finalURL,time:Date.now(),type:e.name.split(".").pop().toLowerCase()};t.push(o),localStorage.setItem("uploadHistory",JSON.stringify(t))}catch(t){console.error("Failed to save history",t)}},handleError(e,t){const o=this.fileList.find(e=>e.uid===t.uid);o&&(this.$message.error(this.$t("uploadForm.uploadFailed",{name:this.truncateFilename(t.name)})),o.status="exception",this.autoReUpload&&this.scheduleAutoRetry())},handleCopy(e){const t=this.fileList.find(t=>t.uid===e.uid).status;"done"===t||"success"===t?(navigator.clipboard.writeText(zt(e,this.selectedUrlForm)),this.$message({type:"success",message:this.$t("uploadForm.copySuccess")})):this.$message({type:"warning",message:this.$t("uploadForm.fileNotUploaded")})},beforeUpload(e){return new Promise(async(t,o)=>{let a=e;const l=this.convertToWebp&&e.type.includes("image")&&!e.type.includes("webp")&&!e.type.includes("gif")&&!e.type.includes("svg");if(l)try{const t=await this.convertImageToWebp(e);t&&(a=t,console.log(`WebP转换成功: ${e.name} -> ${t.name}, 大小: ${(e.size/1024).toFixed(1)}KB -> ${(t.size/1024).toFixed(1)}KB`))}catch(r){console.warn("WebP转换失败,使用原文件:",r)}const i=a.type.includes("image")&&this.customerCompress&&a.size/1024/1024>this.compressBar,s=a.size/1024/1024<=1024||"telegram"!==this.uploadChannel,n=(e,o)=>{const a=URL.createObjectURL(e);this.fileList.push({uid:e.uid,name:e.uploadRelativePath||e.name,url:a,finalURL:"",mdURL:"",htmlURL:"",ubbURL:"",srcID:"",status:"uploading",progreess:0,serverCompress:o,uploadFolder:e.uploadFolder??this.uploadFolder,retryCount:0}),t(e)};if(i)It.compressAccurately(a,1024*this.compressQuality).then(t=>{t.size/1024/1024>1024&&"telegram"===this.uploadChannel&&(this.$message.error(this.$t("uploadForm.compressedFileTooLarge",{name:a.name})),o(this.$t("uploadForm.fileSizeTooLarge"))),this.uploading=!0;const l=new File([t],a.name,{type:t.type});l.uid=e.uid,this.copyUploadPath(a,l);const i=this.serverCompress&&l.size/1024/1024<10&&"telegram"===this.uploadChannel;n(l,i)}).catch(e=>{this.$message.error(this.$t("uploadForm.compressFailedCannotUpload",{name:a.name})),o(e)});else if(s){this.uploading=!0;const e="telegram"===this.uploadChannel&&this.serverCompress&&(!a.type.includes("image")||a.size/1024/1024<10);n(a,e)}else this.$message.error(this.$t("uploadForm.fileTooLarge",{name:a.name})),o(this.$t("uploadForm.fileSizeTooLarge"))})},handleProgress(e){const t=this.fileList.find(t=>t.uid===e.file.uid);t&&(t.progreess=e.percent)},copyAll(){const e=this.fileList.filter(e=>"done"===e.status||"success"===e.status).map(e=>zt(e,this.selectedUrlForm)).join("\n");navigator.clipboard.writeText(e),this.$message({type:"success",message:this.$t("uploadForm.copyAllSuccess")})},clearFileList(){this.fileList.length>0?(this.abortControllers.forEach((e,t)=>{e.abort()}),this.abortControllers.clear(),this.uploadQueue=[],this.fileList=[],this.$message({type:"success",message:this.$t("uploadForm.fileListCleared")})):this.$message({type:"info",message:this.$t("uploadForm.fileListEmpty")})},clearSuccessList(){this.uploadSuccessCount>0?(this.fileList=this.fileList.filter(e=>"done"!==e.status&&"success"!==e.status),this.$message({type:"success",message:this.$t("uploadForm.successFilesCleared")})):this.$message({type:"info",message:this.$t("uploadForm.successFilesEmpty")})},isEditablePasteTarget(e){const t=e?.nodeType===Node.TEXT_NODE?e.parentElement:e;if(!t)return!1;const o=t.tagName;return"INPUT"===o||"TEXTAREA"===o||t.isContentEditable||Boolean(t.closest?.('[contenteditable="true"]'))},handlePasteShortcut(e){const t=(e.ctrlKey||e.metaKey)&&!e.altKey&&"v"===String(e.key).toLowerCase();if(!t||this.isEditablePasteTarget(e.target))return;const o=this.$refs.clipboardPasteReceiver;if(o){this.pasteFocusTarget=document.activeElement,o.value="";try{o.focus({preventScroll:!0})}catch{o.focus()}}},releasePasteReceiver(e){const t=this.$refs.clipboardPasteReceiver;if(!t||e!==t)return;t.value="";const o=this.pasteFocusTarget;this.pasteFocusTarget=null,setTimeout(()=>{if(o?.isConnected&&"function"===typeof o.focus)try{o.focus({preventScroll:!0})}catch{o.focus()}else t.blur();document.activeElement===t&&t.blur()},0)},async handlePaste(e){const t=e.target===this.$refs.clipboardPasteReceiver;if(!t&&this.isEditablePasteTarget(e.target))return;const o=e.clipboardData;if(!o)return void this.releasePasteReceiver(e.target);const a=Array.from(o.items||[]),l=a.filter(e=>"file"===e.kind),i=a.filter(e=>"string"===e.kind),s=Kt(o.files||[]);if(t&&e.preventDefault(),this.releasePasteReceiver(e.target),s.length>0||l.length>0){e.preventDefault();let t=[];if(l.length)try{t=await to(l)}catch(n){console.warn("Failed to parse clipboard items, falling back to clipboard files:",n)}t.length||(t=s),t.length&&await this.uploadLocalEntries(t)}i.length>0&&this.uploadFromUrl(i)},handleUploadPasteUrls(){const e=this.pastedUrls.split("\n"),t=e.map(e=>e.trim()).filter(e=>""!==e).filter(e=>/^(https?:\/\/[^\s$.?#].[^\s]*)$/.test(e));if("save"===this.pasteUploadMethod)this.uploadFromUrl(t.map(e=>({kind:"string",getAsString:t=>{t(e)}})));else if("external"===this.pasteUploadMethod)for(let o=0;o`,s=`[img]${e}[/img]`,n=new File([],e.split("/").pop(),{type:"text/plain"});n.uid=Date.now()+o,n.url=e,this.fileList.push({uid:n.uid,name:n.name,url:e,finalURL:e,mdURL:l,htmlURL:i,ubbURL:s,srcID:e,status:"uploading",progreess:0,serverCompress:!1,uploadChannel:"external",retryCount:0}),this.uploadFile({file:n,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})}},uploadFromUrl(e){for(let t=0;t{const o=/^(https?:\/\/[^\s$.?#].[^\s]*)$/;let a="";o.test(e)&&Pt.A.post("/api/fetchRes",{url:e},{responseType:"blob",withAuthCode:!0}).then(o=>{o.headers["content-type"];if(200!=o.status)throw new Error("URL地址请求失败");{const i=o.headers["content-disposition"];if(i){const e=/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/,t=/filename\*\s*=\s*UTF-8''([^;\n]*)/;let o=e.exec(i);if(null!=o&&o[1]){a=o[1].replace(/['"]/g,"");try{a=decodeURIComponent(a)}catch(l){a=""}}""===a&&(o=t.exec(i),null!=o&&o[1]&&(a=decodeURIComponent(o[1])))}if(""===a){const t=new URL(e);a=t.pathname.split("/").pop()}if(""===a){const o=new URL(e);let l=o.pathname.split(".").pop();(!l||""===l||l.length>10)&&(l="bin"),a="PastedFile"+Date.now()+t+"."+l}const s=o.data,n=new File([s],a,{type:s.type});n.uid=Date.now()+t;const r=this.beforeUpload(n);r instanceof Promise&&r.then(e=>{e instanceof File&&this.uploadFile({file:e,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})}).catch(e=>{console.log(e)})}}).catch(e=>{this.$message({type:"warning",message:this.$t("uploadForm.urlRequestFailed")})})})},handleScroll(e){this.listScrolled=e.scrollTop>0&&this.fileList.length>0},retryError(){if(this.exceptionList.length>0){const e=[...this.exceptionList];this.exceptionList=[],this.retryFailedFiles(e,!0)}else this.$message({type:"info",message:this.$t("uploadForm.noFailedFiles")})},handleAutoRetryChange(e){this.$message({type:e?"success":"info",message:e?this.$t("uploadForm.autoRetryOn"):this.$t("uploadForm.autoRetryOff")}),e&&this.exceptionList.length>0&&this.scheduleAutoRetry()},retryFailedFiles(e,t=!1){e.forEach(e=>{const o=this.fileList.find(t=>t.uid===e.file.uid);if(!o)return;t&&(o.retryCount=0);const a=o.retryCount||0;t||athis.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})):(o.status="exception",this.exceptionList.push(e),this.$message({type:"warning",message:this.$t("uploadForm.maxRetryReached",{name:e.name,max:this.maxRetryCount})}))})},scheduleAutoRetry(){this.retryTimer&&clearTimeout(this.retryTimer),this.retryTimer=setTimeout(()=>{if(this.autoReUpload&&this.exceptionList.length>0){const e=[...this.exceptionList];this.exceptionList=[],this.retryFailedFiles(e)}},this.retryDelay)},async uploadToHuggingFaceDirect(e){const t=this.fileList.find(t=>t.uid===e.file.uid);if(!t)return;const o=new AbortController;this.abortControllers.set(e.file.uid,o);const a=this.getFileUploadFolder(e);try{console.log("=== HuggingFace Direct Upload ==="),console.log("File:",e.file.name,"Size:",e.file.size),e.onProgress({percent:5,file:e.file}),console.log("Computing SHA256...");const t=await Ot(e.file);if(console.log("SHA256:",t),o.signal.aborted)return void console.log("HuggingFace 上传已取消:",e.file.name);const l=new Uint8Array(await e.file.slice(0,512).arrayBuffer()),i=btoa(String.fromCharCode(...l));e.onProgress({percent:10,file:e.file}),console.log("Getting LFS upload URL...");const s=await(0,Pt.A)({url:"/upload/huggingface/getUploadUrl",method:"post",data:{fileSize:e.file.size,fileName:e.file.name,fileType:e.file.type,sha256:t,fileSample:i,channelName:this.channelName,uploadNameType:this.uploadNameType,uploadFolder:a},withAuthCode:!0,signal:o.signal});if(!s.data.success)throw new Error(s.data.error||"Failed to get upload URL");const n=s.data;if(console.log("Upload info:",n),n.alreadyExists)console.log("File already exists in LFS, skipping upload"),e.onProgress({percent:90,file:e.file});else if(n.needsLfs&&n.uploadAction){const{href:t,header:a}=n.uploadAction;if(a?.chunk_size)await this.uploadToHuggingFaceMultipart(e,n,o);else{console.log("Uploading to S3 (basic)...");const l=await fetch(t,{method:"PUT",headers:a||{},body:e.file,signal:o.signal});if(!l.ok){const e=await l.text();throw new Error(`S3 upload failed: ${l.status} - ${e}`)}console.log("S3 upload complete")}}if(o.signal.aborted)return void console.log("HuggingFace 上传已取消:",e.file.name);e.onProgress({percent:95,file:e.file}),console.log("Committing file...");const r=await(0,Pt.A)({url:"/upload/huggingface/commitUpload",method:"post",data:{fullId:n.fullId,filePath:n.filePath,sha256:t,fileSize:e.file.size,fileName:e.file.name,fileType:e.file.type,channelName:n.channelName},withAuthCode:!0,signal:o.signal});if(!r.data.success)throw new Error(r.data.error||"Failed to commit file");console.log("Upload complete:",r.data);const d={data:[{src:r.data.src}]};e.onSuccess(d,e.file)}catch(l){if("CanceledError"===l.name||"ERR_CANCELED"===l.code||"AbortError"===l.name)return void console.log("HuggingFace 上传已取消:",e.file.name);console.error("HuggingFace direct upload error:",l),this.exceptionList.push(e),e.onError(l,e.file)}finally{this.abortControllers.delete(e.file.uid),this.onUploadComplete()}},async uploadToHuggingFaceMultipart(e,t,o){const{uploadAction:a}=t,{href:l,header:i}=a,s=parseInt(i.chunk_size),n=Object.keys(i).filter(e=>/^[0-9]+$/.test(e));console.log(`Multipart upload: ${n.length} parts, chunk size: ${s}`);const r=[],d=n.length;for(const u of n){if(o&&o.signal.aborted)throw console.log("HuggingFace 分片上传已取消"),new DOMException("Upload cancelled","AbortError");const t=parseInt(u)-1,a=t*s,l=Math.min(a+s,e.file.size),n=e.file.slice(a,l);console.log(`Uploading part ${u}/${d}`);const c=await fetch(i[u],{method:"PUT",body:n,signal:o?o.signal:void 0});if(!c.ok)throw new Error(`Failed to upload part ${u}: ${c.status}`);const p=c.headers.get("ETag");if(!p)throw new Error(`No ETag for part ${u}`);r.push({partNumber:parseInt(u),etag:p});const h=10+Math.round(parseInt(u)/d*80);e.onProgress({percent:h,file:e.file})}if(o&&o.signal.aborted)throw console.log("HuggingFace 分片上传已取消"),new DOMException("Upload cancelled","AbortError");console.log("Completing multipart upload...");const c=await fetch(l,{method:"POST",headers:{Accept:"application/vnd.git-lfs+json","Content-Type":"application/vnd.git-lfs+json"},body:JSON.stringify({oid:t.oid,parts:r}),signal:o?o.signal:void 0});if(!c.ok){const e=await c.text();throw new Error(`Multipart complete failed: ${c.status} - ${e}`)}console.log("Multipart upload complete")},async convertImageToWebp(e){return new Promise((t,o)=>{if(e.type.includes("gif")||e.type.includes("svg")||e.type.includes("webp"))return void t(null);const a=new Image,l=document.createElement("canvas"),i=l.getContext("2d");a.onload=()=>{l.width=a.width,l.height=a.height,i.drawImage(a,0,0),l.toBlob(l=>{if(l){const o=e.name,a=o.lastIndexOf("."),i=a>0?o.substring(0,a)+".webp":o+".webp",s=new File([l],i,{type:"image/webp"});s.uid=e.uid,this.copyUploadPath(e,s),t(s)}else o(new Error("WebP 转换失败"));URL.revokeObjectURL(a.src)},"image/webp",.92)},a.onerror=()=>{URL.revokeObjectURL(a.src),o(new Error(this.$t("uploadForm.imageLoadFailed")))},a.src=URL.createObjectURL(e)})},handleUploadCardMouseMove(e){const t=this.$refs.uploadCardGlow;if(!t)return;const o=e.currentTarget.getBoundingClientRect(),a=e.clientX-o.left,l=e.clientY-o.top;t.style.opacity="1",t.style.left=a+"px",t.style.top=l+"px"},handleUploadCardMouseLeave(){const e=this.$refs.uploadCardGlow;e&&(e.style.opacity="0")}},beforeDestroy(){this.retryTimer&&clearTimeout(this.retryTimer)}};const ao=(0,W.A)(oo,[["render",Dt],["__scopeId","data-v-991f3af6"]]);var lo=ao,io=o(54560),so=o(33892);const no={class:"directory-suggestion-input",ref:"wrapperRef"},ro={class:"suggestion-dropdown"},co={class:"suggestion-list"},uo=["title","onMousedown"];function po(e,t,o,a,l,n){const r=G.WK;return(0,i.uX)(),(0,i.CE)("div",no,[(0,i.bF)(r,{ref:"inputRef",modelValue:n.inputValue,"onUpdate:modelValue":t[0]||(t[0]=e=>n.inputValue=e),placeholder:o.placeholder,onFocus:n.handleFocus,onBlur:n.handleBlur,onInput:n.handleInput},null,8,["modelValue","placeholder","onFocus","onBlur","onInput"]),(0,i.bo)((0,i.Lk)("div",ro,[(0,i.Lk)("ul",co,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(l.suggestions,(e,t)=>((0,i.uX)(),(0,i.CE)("li",{key:t,class:"suggestion-item",title:e.value,onMousedown:(0,bt.D$)(t=>n.selectItem(e),["prevent"])},(0,s.v_)(e.value),41,uo))),128))])],512),[[bt.aG,l.dropdownVisible&&l.suggestions.length>0]])],512)}var ho={name:"DirectorySuggestionInput",props:{modelValue:{type:String,default:""},placeholder:{type:String,default:""}},emits:["update:modelValue","focus","blur","select"],data(){return{directoryTreeRoot:null,directoryTreeLoaded:!1,directoryTreeLoading:!1,directoryChildrenMap:{},focusTime:null,dropdownVisible:!1,isFocused:!1,suggestions:[]}},computed:{inputValue:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},watch:{modelValue(){this.isFocused&&this.refreshSuggestions()}},methods:{handleFocus(){this.isFocused=!0,this.focusTime=Date.now(),this.ensureDirectoryTreeLoaded(),this.$emit("focus"),setTimeout(()=>{this.isFocused&&(this.refreshSuggestions(),this.dropdownVisible=!0)},500)},handleBlur(){this.isFocused=!1,this.dropdownVisible=!1,this.$emit("blur")},handleInput(e){this.$nextTick(()=>{this.refreshSuggestions(),this.isFocused&&(this.dropdownVisible=!0)})},selectItem(e){const t=e.value;this.inputValue=t,this.$emit("select",t);const o=this.normalizeDirectoryPath(t),a=this.directoryChildrenMap[o];a&&a.length>0?this.$nextTick(()=>{this.refreshSuggestions(),this.dropdownVisible=!0,this.$refs.inputRef?.focus()}):this.dropdownVisible=!1},refreshSuggestions(){this.suggestions=this.getDirectorySuggestions(this.modelValue||"")},normalizeDirectoryPath(e){if(!e)return"/";let t=e;return t.startsWith("/")||(t="/"+t),"/"===t||t.endsWith("/")||(t+="/"),t},buildDirectoryChildrenMap(e){const t={},o=e=>{const a=this.normalizeDirectoryPath(e.path),l=Array.isArray(e.children)?e.children:[];t[a]=l.map(e=>({name:e.name,path:this.normalizeDirectoryPath(e.path)})),l.forEach(o)};o(e),this.directoryChildrenMap=t},async ensureDirectoryTreeLoaded(){if(!this.directoryTreeLoaded&&!this.directoryTreeLoading){this.directoryTreeLoading=!0;try{const e=await Pt.A.get("/api/directoryTree",{withAuthCode:!0}),t=e?.data?.tree;t&&(this.directoryTreeRoot=t,this.buildDirectoryChildrenMap(t),this.directoryTreeLoaded=!0)}catch(e){console.error("Failed to load directory tree for autocomplete:",e)}finally{this.directoryTreeLoading=!1}}},parseDirectoryQuery(e){const t=e&&e.startsWith("/")?e:`/${e||""}`,o=t.slice(1),a=o.split("/"),l=a[a.length-1]||"",i=a.slice(0,-1).filter(Boolean),s=i.length>0?`/${i.join("/")}/`:"/";return{segmentInput:l,parentPath:s}},getDirectorySuggestions(e){const{segmentInput:t,parentPath:o}=this.parseDirectoryQuery(e),a=this.directoryChildrenMap[o]||[];if(!t)return a.slice(0,10).map(e=>({value:e.path}));const l=t.toLowerCase();return a.filter(e=>e.name.toLowerCase().startsWith(l)).slice(0,10).map(e=>({value:e.path}))}}};const mo=(0,W.A)(ho,[["render",po],["__scopeId","data-v-28b8eda7"]]);var fo=mo,go=o(42550);const yo={class:"container"},bo={class:"upload-home"},vo={class:"quick-toolbar-actions"},ko={class:"quick-toolbar-actions-inner"},Co={class:"header"},wo={class:"title"},Fo={class:"title-crayon-text","aria-hidden":"true"},Lo={class:"title-base-text"},Uo={class:"main-title",href:"https://github.com/MarSeventh/CloudFlare-ImgBed",target:"_blank"},$o={class:"dialog-section"},So={class:"section-header"},To={class:"section-title"},_o={class:"section-content"},xo={class:"dialog-section"},Ao={class:"section-header"},Mo={class:"section-title"},Ro={class:"section-content"},Eo={class:"setting-item"},Do={class:"setting-label"},Po={key:0,class:"setting-item"},Io={class:"setting-label"},No={class:"dialog-action"},Vo=["innerHTML"],zo={class:"dialog-footer"};function Wo(e,t,o,n,r,d){const c=go.A,u=(0,i.g2)("font-awesome-icon"),p=l.S2,h=ft.c6,m=ft.Iy,f=ft.dW,g=fo,y=G.WK,b=so.A,v=a.R7,k=io.A,C=lo,w=J.ll,F=J.MQ,L=j.qi,U=X.kZ,$=Qe,S=Q.A,T=H;return(0,i.uX)(),(0,i.CE)("div",yo,[(0,i.Lk)("div",bo,[(0,i.bF)(c,{class:"toggle-dark-button desktop-only"}),(0,i.bF)(f,{class:"more-dropdown desktop-only",trigger:"click",onCommand:d.handleDesktopMenuCommand},{dropdown:(0,i.k6)(()=>[(0,i.bF)(m,null,{default:(0,i.k6)(()=>[(0,i.bF)(h,{command:"showHistory"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"history",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,s.v_)(e.$t("upload.history")),1)]),_:1}),(0,i.bF)(h,{command:"showAnnouncement",disabled:!d.announcementAvailable},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"bullhorn",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,s.v_)(e.$t("upload.announcement")),1)]),_:1},8,["disabled"]),(0,i.bF)(h,{command:"toggleLanguage"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"globe",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,s.v_)("zh-CN"===e.$i18n.locale?"English":"简体中文"),1)]),_:1}),(0,i.bF)(h,{command:"viewDocs"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"book",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,s.v_)(e.$t("upload.viewDocs")),1)]),_:1})]),_:1})]),default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"more-button"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"ellipsis-v",size:"lg"})]),_:1})]),_:1},8,["onCommand"]),(0,i.Lk)("div",{class:(0,s.C4)(["upload-folder-container",{"no-announcement":!d.announcementAvailable}])},[(0,i.Lk)("div",{class:(0,s.C4)(["upload-folder",{active:r.isFolderInputActive}])},[d.showDirectorySuggestions?((0,i.uX)(),(0,i.Wv)(g,{key:0,modelValue:r.uploadFolder,"onUpdate:modelValue":t[0]||(t[0]=e=>r.uploadFolder=e),class:"inner-folder-input",placeholder:e.$t("upload.folderPlaceholder"),onFocus:d.handleFolderInputFocus,onBlur:d.handleFolderInputBlur,onSelect:d.handleDirectorySelect},null,8,["modelValue","placeholder","onFocus","onBlur","onSelect"])):((0,i.uX)(),(0,i.Wv)(y,{key:1,class:"inner-folder-input",modelValue:r.uploadFolder,"onUpdate:modelValue":t[1]||(t[1]=e=>r.uploadFolder=e),placeholder:e.$t("upload.folderPlaceholder"),onFocus:d.handleFolderInputFocus,onBlur:d.handleFolderInputBlur},null,8,["modelValue","placeholder","onFocus","onBlur"]))],2),d.showDirectorySuggestions?((0,i.uX)(),(0,i.Wv)(b,{key:0,"current-directory":r.uploadFolder,source:"upload",onSelect:d.handleDirectorySelect},{trigger:(0,i.k6)(()=>[(0,i.bF)(p,{class:"directory-tree-trigger"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"folder-tree"})]),_:1})]),_:1},8,["current-directory","onSelect"])):(0,i.Q3)("",!0)],2),(0,i.bF)(v,{content:e.$t("upload.switchUploadMethod"),placement:"bottom",disabled:d.disableTooltip,"show-after":1e3},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"upload-method-button desktop-only",onClick:d.handleChangeUploadMethod},{default:(0,i.k6)(()=>["default"===r.uploadMethod?((0,i.uX)(),(0,i.Wv)(u,{key:0,icon:"folder-open",class:"upload-method-icon",size:"lg"})):"paste"===r.uploadMethod?((0,i.uX)(),(0,i.Wv)(u,{key:1,icon:"paste",class:"upload-method-icon",size:"lg"})):(0,i.Q3)("",!0)]),_:1},8,["onClick"])]),_:1},8,["content","disabled"]),(0,i.bF)(f,{class:"mobile-more-dropdown mobile-only",trigger:"click",onCommand:d.handleMobileMenuCommand},{dropdown:(0,i.k6)(()=>[(0,i.bF)(m,null,{default:(0,i.k6)(()=>[(0,i.bF)(h,{command:"toggleTheme"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:d.getThemeIcon(),style:{width:"16px","margin-right":"8px","text-align":"center"}},null,8,["icon"]),(0,i.eW)(" "+(0,s.v_)(d.getThemeText()),1)]),_:1}),(0,i.bF)(h,{command:"toggleUploadMethod"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"default"===r.uploadMethod?"paste":"folder-open",style:{width:"16px","margin-right":"8px","text-align":"center"}},null,8,["icon"]),(0,i.eW)(" "+(0,s.v_)("default"===r.uploadMethod?e.$t("upload.pasteUpload"):e.$t("upload.fileUpload")),1)]),_:1}),(0,i.bF)(h,{command:"showHistory"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"history",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,s.v_)(e.$t("upload.history")),1)]),_:1}),(0,i.bF)(h,{command:"showAnnouncement",disabled:!d.announcementAvailable},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"bullhorn",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,s.v_)(e.$t("upload.announcement")),1)]),_:1},8,["disabled"]),(0,i.bF)(h,{command:"toggleLanguage"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"globe",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,s.v_)("zh-CN"===e.$i18n.locale?"English":"简体中文"),1)]),_:1}),(0,i.bF)(h,{command:"viewDocs"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"book",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,s.v_)(e.$t("upload.viewDocs")),1)]),_:1})]),_:1})]),default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"mobile-more-button"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"ellipsis-v",size:"lg"})]),_:1})]),_:1},8,["onCommand"]),(0,i.Lk)("div",{class:(0,s.C4)(["quick-toolbar",{"is-expanded":r.isQuickToolbarOpen}]),onMouseleave:t[5]||(t[5]=(...e)=>d.handleQuickToolbarLeave&&d.handleQuickToolbarLeave(...e))},[(0,i.Lk)("div",vo,[(0,i.Lk)("div",ko,[(0,i.bF)(v,{disabled:d.disableTooltip||!r.isQuickToolbarOpen,content:e.$t("upload.logout"),placement:"left","hide-after":0,"show-after":1e3},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"quick-toolbar-button",onClick:t[2]||(t[2]=e=>d.handleQuickToolbarCommand("logout"))},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"sign-out-alt",class:"quick-toolbar-icon"})]),_:1})]),_:1},8,["disabled","content"]),(0,i.bF)(v,{disabled:d.disableTooltip||!r.isQuickToolbarOpen,content:e.$t("upload.manage"),placement:"left","hide-after":0,"show-after":1e3},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"quick-toolbar-button",onClick:t[3]||(t[3]=e=>d.handleQuickToolbarCommand("manage"))},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"cog",class:"quick-toolbar-icon"})]),_:1})]),_:1},8,["disabled","content"]),(0,i.bF)(v,{disabled:d.disableTooltip||!r.isQuickToolbarOpen,content:e.$t("upload.linkFormat"),placement:"left","hide-after":0,"show-after":1e3},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"quick-toolbar-button",onClick:t[4]||(t[4]=e=>d.handleQuickToolbarCommand("linkFormat"))},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"link",class:"quick-toolbar-icon"})]),_:1})]),_:1},8,["disabled","content"])])]),(0,i.bF)(v,{disabled:d.disableTooltip,content:e.$t("upload.settings"),placement:"left","hide-after":0,"show-after":1e3},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"quick-toolbar-button",onClick:d.openCompressDialog},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"cloud-upload",class:"quick-toolbar-icon"})]),_:1},8,["onClick"])]),_:1},8,["disabled","content"]),(0,i.bF)(p,{class:(0,s.C4)(["quick-toolbar-button quick-toolbar-more",{"is-active":r.isQuickToolbarOpen}]),"aria-expanded":r.isQuickToolbarOpen,onMouseenter:d.handleQuickToolbarMoreEnter,onClick:d.toggleQuickToolbar},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"chevron-down",class:"quick-toolbar-icon quick-toolbar-toggle-icon"})]),_:1},8,["class","aria-expanded","onMouseenter","onClick"])],34),(0,i.bF)(k,{useConfigLink:!0}),(0,i.Lk)("div",Co,[(0,i.Lk)("h1",wo,[(0,i.Lk)("span",Fo,(0,s.v_)(d.ownerName)+" ImgHub",1),(0,i.Lk)("span",Lo,[(0,i.Lk)("a",Uo,(0,s.v_)(d.ownerName),1),t[24]||(t[24]=(0,i.eW)(" ImgHub ",-1))])])]),(0,i.bF)(C,{selectedUrlForm:r.selectedUrlForm,customerCompress:r.customerCompress,compressQuality:r.compressQuality,compressBar:r.compressBar,serverCompress:r.serverCompress,uploadChannel:r.uploadChannel,channelName:r.channelName,uploadNameType:r.uploadNameType,useCustomUrl:r.useCustomUrl,customUrlPrefix:r.customUrlPrefix,autoRetry:r.autoRetry,urlPrefix:d.urlPrefix,uploadMethod:r.uploadMethod,uploadFolder:r.uploadFolder,convertToWebp:r.convertToWebp,class:"upload"},null,8,["selectedUrlForm","customerCompress","compressQuality","compressBar","serverCompress","uploadChannel","channelName","uploadNameType","useCustomUrl","customUrlPrefix","autoRetry","urlPrefix","uploadMethod","uploadFolder","convertToWebp"]),(0,i.bF)(U,{title:e.$t("settings.linkFormatTitle"),modelValue:r.showUrlDialog,"onUpdate:modelValue":t[10]||(t[10]=e=>r.showUrlDialog=e),width:d.dialogWidth,"show-close":!1,class:"settings-dialog settings-dialog-scope"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",$o,[(0,i.Lk)("div",So,[(0,i.Lk)("span",To,(0,s.v_)(e.$t("settings.defaultCopyLink")),1)]),(0,i.Lk)("div",_o,[(0,i.bF)(F,{modelValue:r.selectedUrlForm,"onUpdate:modelValue":t[6]||(t[6]=e=>r.selectedUrlForm=e),onChange:d.changeUrlForm,class:"radio-card-group grid-2x2"},{default:(0,i.k6)(()=>[(0,i.bF)(w,{value:"url",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"link",class:"radio-icon"}),(0,i.Lk)("span",null,(0,s.v_)(e.$t("settings.rawLink")),1)]),_:1}),(0,i.bF)(w,{value:"md",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"code",class:"radio-icon"}),t[25]||(t[25]=(0,i.Lk)("span",null,"MarkDown",-1))]),_:1}),(0,i.bF)(w,{value:"html",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"code-branch",class:"radio-icon"}),t[26]||(t[26]=(0,i.Lk)("span",null,"HTML",-1))]),_:1}),(0,i.bF)(w,{value:"ubb",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"quote-right",class:"radio-icon"}),t[27]||(t[27]=(0,i.Lk)("span",null,"BBCode",-1))]),_:1})]),_:1},8,["modelValue","onChange"])])]),(0,i.Lk)("div",xo,[(0,i.Lk)("div",Ao,[(0,i.Lk)("span",Mo,(0,s.v_)(e.$t("settings.customLink")),1),(0,i.bF)(v,{content:e.$t("settings.customLinkTooltip"),placement:"top","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",Ro,[(0,i.Lk)("div",Eo,[(0,i.Lk)("span",Do,(0,s.v_)(e.$t("settings.enableCustom")),1),(0,i.bF)(L,{modelValue:r.useCustomUrl,"onUpdate:modelValue":t[7]||(t[7]=e=>r.useCustomUrl=e),"active-value":"true","inactive-value":"false"},null,8,["modelValue"])]),"true"===r.useCustomUrl?((0,i.uX)(),(0,i.CE)("div",Po,[(0,i.Lk)("span",Io,(0,s.v_)(e.$t("settings.customPrefix")),1),(0,i.bF)(y,{modelValue:r.customUrlPrefix,"onUpdate:modelValue":t[8]||(t[8]=e=>r.customUrlPrefix=e),placeholder:e.$t("settings.customPrefixPlaceholder"),class:"setting-input"},null,8,["modelValue","placeholder"])])):(0,i.Q3)("",!0)])]),(0,i.Lk)("div",No,[(0,i.bF)(p,{type:"primary",onClick:t[9]||(t[9]=e=>r.showUrlDialog=!1),class:"confirm-btn"},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e.$t("settings.confirm")),1)]),_:1})])]),_:1},8,["title","modelValue","width"]),(0,i.bF)($,{modelValue:r.showCompressDialog,"onUpdate:modelValue":t[11]||(t[11]=e=>r.showCompressDialog=e),uploadChannel:r.uploadChannel,"onUpdate:uploadChannel":t[12]||(t[12]=e=>r.uploadChannel=e),channelName:r.channelName,"onUpdate:channelName":t[13]||(t[13]=e=>r.channelName=e),availableChannels:r.availableChannels,currentChannelList:d.currentChannelList,uploadFolder:r.uploadFolder,"onUpdate:uploadFolder":t[14]||(t[14]=e=>r.uploadFolder=e),autoRetry:r.autoRetry,"onUpdate:autoRetry":t[15]||(t[15]=e=>r.autoRetry=e),uploadNameType:r.uploadNameType,"onUpdate:uploadNameType":t[16]||(t[16]=e=>r.uploadNameType=e),convertToWebp:r.convertToWebp,"onUpdate:convertToWebp":t[17]||(t[17]=e=>r.convertToWebp=e),customerCompress:r.customerCompress,"onUpdate:customerCompress":t[18]||(t[18]=e=>r.customerCompress=e),compressBar:r.compressBar,"onUpdate:compressBar":t[19]||(t[19]=e=>r.compressBar=e),compressQuality:r.compressQuality,"onUpdate:compressQuality":t[20]||(t[20]=e=>r.compressQuality=e),serverCompress:r.serverCompress,"onUpdate:serverCompress":t[21]||(t[21]=e=>r.serverCompress=e)},null,8,["modelValue","uploadChannel","channelName","availableChannels","currentChannelList","uploadFolder","autoRetry","uploadNameType","convertToWebp","customerCompress","compressBar","compressQuality","serverCompress"])]),(0,i.bF)(S,{class:"footer"}),(0,i.bF)(U,{title:e.$t("upload.announcementTitle"),modelValue:r.showAnnouncementDialog,"onUpdate:modelValue":t[22]||(t[22]=e=>r.showAnnouncementDialog=e),width:d.dialogWidth,"show-close":!1,"close-on-click-modal":!1,"close-on-press-escape":!1,center:""},{footer:(0,i.k6)(()=>[(0,i.Lk)("span",zo,[(0,i.bF)(p,{type:"primary",onClick:d.acknowledgeAnnouncement},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e.$t("upload.announcementAck")),1)]),_:1},8,["onClick"])])]),default:(0,i.k6)(()=>[(0,i.Lk)("div",{innerHTML:r.announcementContent},null,8,Vo)]),_:1},8,["title","modelValue","width"]),(0,i.bF)(T,{show:r.showHistory,onClose:t[23]||(t[23]=e=>r.showHistory=!1)},null,8,["show"])])}o(13579);var Bo=o(46638),Ho=o(48903),Qo=o(90144),Xo=o(62388),Oo={name:"UploadHome",mixins:[Ho.A],data(){return{selectedUrlForm:(0,Qo.KR)(""),showUrlDialog:!1,showCompressDialog:!1,customerCompress:!0,compressQuality:4,compressBar:5,convertToWebp:!1,serverCompress:!0,uploadChannel:"",channelName:"",availableChannels:{},uploadNameType:"",customUrlPrefix:"",useCustomUrl:"false",autoRetry:!0,useDefaultWallPaper:!1,uploadMethod:"default",uploadFolder:"",isFolderInputActive:!1,isQuickToolbarOpen:!1,isQuickToolbarPinned:!1,showAnnouncementDialog:!1,announcementContent:"",displayedAnnouncementRefreshAt:null,showHistory:!1,themeMode:"auto"}},watch:{customerCompress(e){this.updateCompressConfig("customerCompress",e)},compressQuality(e){this.updateCompressConfig("compressQuality",e)},compressBar(e){null===e||void 0===e||e<1?this.compressBar=1:(this.compressQuality>e&&(this.compressQuality=e),this.updateCompressConfig("compressBar",e))},serverCompress(e){this.updateCompressConfig("serverCompress",e)},convertToWebp(e){this.updateCompressConfig("convertToWebp",e)},uploadChannel(e){this.updateStoreUploadChannel(e);const t=this.availableChannels[e]||[],o=this.storeChannelName;o&&t.some(e=>e.name===o)?this.channelName=o:this.channelName=""},channelName(e){this.$store.commit("setStoreChannelName",e||"")},uploadNameType(e){this.updateStoreUploadNameType(e)},customUrlPrefix(e){this.$store.commit("setCustomUrlSettings",{key:"customUrlPrefix",value:e})},useCustomUrl(e){this.$store.commit("setCustomUrlSettings",{key:"useCustomUrl",value:e})},autoRetry(e){this.$store.commit("setStoreAutoRetry",e)},uploadFolder(e){if(this.validateUploadFolder(e,!1)){const t=(0,Xo.G)(e,{strict:!0});t.valid&&this.$store.commit("setStoreUploadFolder",e)}else this.$nextTick(()=>{this.uploadFolder=this.storeUploadFolder})}},computed:{...(0,Nt.L8)(["userConfig","uploadCopyUrlForm","compressConfig","storeUploadChannel","storeChannelName","storeUploadNameType","customUrlSettings","storeAutoRetry","storeUploadMethod","storeUploadFolder"]),ownerName(){return this.userConfig?.ownerName||"Sanyue"},dialogWidth(){return window.innerWidth>768?"50%":"90%"},disableTooltip(){return window.innerWidth<768},urlPrefix(){return this.userConfig?.urlPrefix||`${window.location.protocol}//${window.location.host}/file/`},announcementAvailable(){return!!this.userConfig?.announcement},showDirectorySuggestions(){return this.userConfig?.showDirectorySuggestions??!1},currentChannelList(){return this.availableChannels[this.uploadChannel]||[]}},mounted(){this.initializeBackground("uploadBkImg",".container",!0,!0),this.selectedUrlForm=this.uploadCopyUrlForm||"url",this.customerCompress=this.compressConfig.customerCompress??this.parseBoolean(this.userConfig?.defaultCustomerCompress,!0),this.compressQuality=this.compressConfig.compressQuality??this.parseNumber(this.userConfig?.defaultCompressQuality,4),this.compressBar=this.compressConfig.compressBar??this.parseNumber(this.userConfig?.defaultCompressBar,5),this.serverCompress=this.compressConfig.serverCompress??!0,this.convertToWebp=this.compressConfig.convertToWebp??this.parseBoolean(this.userConfig?.defaultConvertToWebp,!1),this.uploadChannel=this.storeUploadChannel||this.userConfig?.defaultUploadChannel||"telegram",this.autoRetry=this.storeAutoRetry,this.uploadNameType=this.storeUploadNameType||this.userConfig?.defaultUploadNameType||"default",this.customUrlPrefix=this.customUrlSettings.customUrlPrefix,this.useCustomUrl=this.customUrlSettings.useCustomUrl,this.uploadMethod=this.storeUploadMethod,this.fetchAvailableChannels(),this.uploadFolder=this.storeUploadFolder||this.userConfig?.defaultUploadFolder||"";const e=this.$store.getters.cusDarkMode,t=this.$store.getters.useDarkMode;this.themeMode=e?t?"dark":"light":"auto",this.showAnnouncementIfNeeded()},components:{UploadForm:lo,Footer:Q.A,ToggleDark:go.A,Logo:io.A,UploadHistory:H,UploadSettingsDialog:Qe,DirectoryTreePicker:so.A,DirectorySuggestionInput:fo},methods:{async fetchAvailableChannels(){try{const e=await Pt.A.get("/api/channels",{withAuthCode:!0});if(e.data){this.availableChannels=e.data;const t=this.storeChannelName,o=this.userConfig?.defaultChannelName,a=this.availableChannels[this.uploadChannel]||[];t&&a.some(e=>e.name===t)?this.channelName=t:""!==t&&null!==t&&void 0!==t||""!==t&&o&&a.some(e=>e.name===o)&&(this.channelName=o)}}catch(e){console.error("Failed to fetch available channels:",e)}},validateUploadFolder(e,t=!0){e&&!e.startsWith("/")&&(e="/"+e,this.uploadFolder=e);const o=(0,Xo.G)(e,{strict:t});return!!o.valid||(this.$message.error(o.error),!1)},handleFolderInputFocus(){this.isFolderInputActive=!0},handleFolderInputBlur(){this.isFolderInputActive=!1,this.uploadFolder&&!this.uploadFolder.startsWith("/")&&(this.uploadFolder="/"+this.uploadFolder),this.validateUploadFolder(this.uploadFolder,!0)||this.$nextTick(()=>{this.uploadFolder=this.storeUploadFolder})},handleManage(){this.$router.push("/dashboard")},parseBoolean(e,t){return void 0===e||null===e?t:"boolean"===typeof e?e:"string"===typeof e?"true"===e:t},parseNumber(e,t){if(void 0===e||null===e)return t;const o=parseFloat(e);return isNaN(o)?t:o},openUrlDialog(){this.showUrlDialog=!0},handleLogout(){Pt.A.post("/api/auth/logout",{authType:"user"},{withCredentials:!0}).finally(()=>{this.$store.commit("setUserLoggedIn",!1),this.$router.push("/login"),this.$message.success(this.$t("upload.logoutSuccess"))})},changeUrlForm(){this.$store.commit("setUploadCopyUrlForm",this.selectedUrlForm)},openCompressDialog(){this.showCompressDialog=!0},updateCompressConfig(e,t){this.$store.commit("setCompressConfig",{key:e,value:t})},updateStoreUploadChannel(e){this.$store.commit("setStoreUploadChannel",e)},updateStoreUploadNameType(e){this.$store.commit("setStoreUploadNameType",e)},handleQuickToolbarMoreEnter(){this.isQuickToolbarOpen=!0},handleQuickToolbarLeave(){this.isQuickToolbarPinned||(this.isQuickToolbarOpen=!1)},toggleQuickToolbar(){this.isQuickToolbarPinned=!this.isQuickToolbarPinned,this.isQuickToolbarOpen=this.isQuickToolbarPinned},closeQuickToolbar(){this.isQuickToolbarPinned=!1,this.isQuickToolbarOpen=!1},handleQuickToolbarCommand(e){this.closeQuickToolbar(),"linkFormat"===e?this.openUrlDialog():"manage"===e?this.handleManage():"logout"===e&&this.handleLogout()},handleChangeUploadMethod(){this.uploadMethod="default"===this.uploadMethod?"paste":"default",this.$store.commit("setUploadMethod",this.uploadMethod)},handleMobileMenuCommand(e){if("toggleTheme"===e)"auto"===this.themeMode?(this.themeMode="light",this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!1)):"light"===this.themeMode?(this.themeMode="dark",this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!0)):(this.themeMode="auto",this.$store.commit("setCusDarkMode",!1));else if("toggleUploadMethod"===e)this.handleChangeUploadMethod();else if("viewDocs"===e)window.open("https://cfbed.sanyue.de/qa/","_blank");else if("showHistory"===e)this.showHistory=!0;else if("showAnnouncement"===e)this.handleShowAnnouncement();else if("toggleLanguage"===e){const e="zh-CN"===this.$i18n.locale?"en":"zh-CN";(0,Bo.xS)(e)}},handleDesktopMenuCommand(e){if("viewDocs"===e)window.open("https://cfbed.sanyue.de/qa/","_blank");else if("showHistory"===e)this.showHistory=!0;else if("showAnnouncement"===e)this.handleShowAnnouncement();else if("toggleLanguage"===e){const e="zh-CN"===this.$i18n.locale?"en":"zh-CN";(0,Bo.xS)(e)}},getThemeIcon(){return"auto"===this.themeMode?"sun":"light"===this.themeMode?"moon":"adjust"},getThemeText(){return"auto"===this.themeMode?this.$t("theme.lightMode"):"light"===this.themeMode?this.$t("theme.darkMode"):this.$t("theme.autoMode")},handleShowAnnouncement(){const e=this.userConfig?.announcement;e?this.openAnnouncement(e):this.$message.info(this.$t("upload.noAnnouncement"))},getAnnouncementRefreshAt(){const e=Number(this.userConfig?.announcementRefreshAt);return Number.isFinite(e)&&e>0?e:null},openAnnouncement(e){this.announcementContent=e,this.displayedAnnouncementRefreshAt=this.getAnnouncementRefreshAt(),this.showAnnouncementDialog=!0},showAnnouncementIfNeeded(){const e=this.userConfig?.announcement;if(!e)return;const t=this.getAnnouncementRefreshAt();if(t){const o=Number(localStorage.getItem("announcementAcknowledgedRefreshAt"));return void((!Number.isFinite(o)||t>o)&&this.openAnnouncement(e))}localStorage.getItem("announcementAcknowledgedAt")||this.openAnnouncement(e)},acknowledgeAnnouncement(){localStorage.setItem("announcementAcknowledgedAt",String(Date.now())),this.displayedAnnouncementRefreshAt&&localStorage.setItem("announcementAcknowledgedRefreshAt",String(this.displayedAnnouncementRefreshAt)),this.showAnnouncementDialog=!1},handleDirectorySelect(e){this.uploadFolder=e,this.validateUploadFolder(e,!0)&&this.$store.commit("setStoreUploadFolder",e)}}};const qo=(0,W.A)(Oo,[["render",Wo],["__scopeId","data-v-9426cafc"]]);var jo=qo},67819:function(e,t,o){"use strict";o(85331)},70797:function(e,t,o){"use strict";o.d(t,{A:function(){return s}});o(44114);var a=o(25507),l=o(16915);let i=!1;async function s(e,t={}){t.credentials="include",t.headers={...t.headers};const o=await fetch(e,t);return 401!==o.status||i||(i=!0,a.A.commit("setAdminLoggedIn",!1),l.A.push("/adminLogin").finally(()=>{i=!1})),o}},76334:function(e,t,o){e.exports=o(11393)},79899:function(e,t,o){"use strict";o(85331)},85970:function(e,t,o){"use strict";o(85331)},86975:function(e,t,o){"use strict";o.d(t,{A:function(){return p}});var a=o(56768),l=o(24232);const i={key:0,class:"page-footer"},s=["href"];function n(e,t,o,n,r,d){const c=(0,a.g2)("font-awesome-icon");return d.disableFooter?(0,a.Q3)("",!0):((0,a.uX)(),(0,a.CE)("div",i,[(0,a.Lk)("p",null,[(0,a.eW)("© 2024-"+(0,l.v_)(d.thisYear)+" Designed by ",1),t[0]||(t[0]=(0,a.Lk)("a",{class:"footer-name",href:"https://github.com/MarSeventh",target:"_blank"},"SanyueQi",-1)),t[1]||(t[1]=(0,a.eW)(" for You! ",-1)),(0,a.Lk)("a",{href:d.footerLink,target:"_blank"},[(0,a.bF)(c,{icon:"paper-plane",class:"footer-link-icon"})],8,s)])]))}var r=o(60782),d={name:"Footer",computed:{...(0,r.L8)(["userConfig"]),footerLink(){return this.userConfig?.footerLink||"https://github.com/MarSeventh"},thisYear(){return(new Date).getFullYear()},disableFooter(){return this.userConfig?.disableFooter||!1}}},c=o(71241);const u=(0,c.A)(d,[["render",n],["__scopeId","data-v-08acbaa9"]]);var p=u},88830:function(e,t,o){"use strict";o(85331)},95385:function(e,t,o){"use strict";o(85331)},96682:function(e,t,o){"use strict";e.exports=o.p+"img/404.8ed11fb3.png"},96808:function(e,t,o){"use strict";o(85331),o(18785),o(67819),o(85970),o(19104)},97769:function(e,t,o){"use strict";o.d(t,{A:function(){return u}});var a=o(56768);const l={key:0,class:"channel-svg-icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},i={key:1,class:"channel-svg-icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},s={key:2,class:"channel-svg-icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"};function n(e,t,o,n,r,d){const c=(0,a.g2)("font-awesome-icon");return(0,a.uX)(),(0,a.CE)("span",(0,a.v6)(e.$attrs,{class:["channel-icon-wrapper",`channel-brand-${o.type}`]}),["telegram"===o.type?((0,a.uX)(),(0,a.CE)("svg",l,[...t[0]||(t[0]=[(0,a.Lk)("path",{d:"M417.28 795.733333 429.226667 615.253333 756.906667 320C771.413333 306.773333 753.92 300.373333 734.72 311.893333L330.24 567.466667 155.306667 512C117.76 501.333333 117.333333 475.306667 163.84 456.533333L845.226667 193.706667C876.373333 179.626667 906.24 201.386667 894.293333 249.173333L778.24 795.733333C770.133333 834.56 746.666667 843.946667 714.24 826.026667L537.6 695.466667 452.693333 777.813333C442.88 787.626667 434.773333 795.733333 417.28 795.733333Z"},null,-1)])])):"huggingface"===o.type?((0,a.uX)(),(0,a.CE)("svg",i,[...t[1]||(t[1]=[(0,a.Fv)('',9)])])):"webdav"===o.type?((0,a.uX)(),(0,a.CE)("svg",s,[...t[2]||(t[2]=[(0,a.Lk)("path",{d:"M446.293333 810.666667C384 898.986667 262.4 921.173333 174.506667 859.733333c-87.466667-61.44-107.946667-183.893333-46.506667-273.066666a195.626667 195.626667 0 0 1 152.746667-84.48l2.133333 61.013333c-38.826667 2.986667-76.373333 23.04-100.693333 58.026667-42.666667 61.44-29.44 144.213333 29.013333 185.6 58.88 40.96 141.226667 25.173333 183.893333-35.84 13.226667-19.2 20.906667-40.106667 23.893334-61.44v-43.093334l238.08-1.706666 2.986666-4.693334c22.613333-39.253333 71.68-52.906667 110.08-30.72a81.066667 81.066667 0 0 1 29.013334 110.933334c-22.613333 38.826667-72.106667 52.48-110.506667 30.293333-17.493333-9.813333-29.866667-25.6-35.413333-43.52l-173.653334 0.853333a211.626667 211.626667 0 0 1-33.28 82.773334m310.613334-304.64c107.946667 13.226667 184.746667 110.08 171.52 216.32-13.226667 106.666667-111.36 182.186667-219.306667 168.96a197.504 197.504 0 0 1-146.346667-94.293334l52.906667-30.72a137.386667 137.386667 0 0 0 98.986667 61.866667c74.666667 8.96 140.8-41.813333 149.76-113.066667 8.96-71.253333-43.946667-136.533333-117.76-145.493333-23.04-2.56-45.226667 0.426667-65.28 7.68l-36.266667 18.773333-110.08-203.52h-9.386667a81.322667 81.322667 0 0 1-78.933333-83.2c1.28-44.373333 39.68-78.933333 84.48-77.226666 44.8 2.56 80.213333 38.826667 78.933333 83.2-0.853333 18.773333-8.106667 35.84-19.626666 49.066666l81.066666 149.76c26.453333-8.533333 55.466667-11.52 85.333334-8.106666M352 389.973333c-42.666667-100.266667 2.56-215.04 101.12-256.853333 98.986667-41.813333 213.333333 5.546667 256 105.813333 25.173333 58.453333 20.053333 122.453333-8.533333 173.653334l-52.906667-30.72c17.92-34.56 20.906667-76.8 3.84-116.48-29.013333-68.266667-106.24-101.12-172.373333-73.386667-66.56 28.16-96.426667 106.666667-67.413334 174.933333 11.946667 28.16 32 49.92 56.32 64.426667l16.64 8.96-130.986666 212.906667c1.28 2.133333 2.986667 4.693333 4.266666 8.106666 20.906667 38.826667 6.4 87.893333-32.853333 108.8-38.826667 20.906667-87.893333 5.546667-109.226667-34.56-20.906667-39.68-6.4-88.746667 32.853334-109.653333 16.64-8.96 34.986667-11.093333 52.48-7.253333l98.56-160.853334c-20.053333-18.346667-37.12-41.386667-47.786667-67.84z"},null,-1)])])):((0,a.uX)(),(0,a.Wv)(c,{key:3,icon:d.fontAwesomeIcon},null,8,["icon"]))],16)}var r={name:"ChannelIcon",inheritAttrs:!1,props:{type:{type:String,required:!0}},computed:{fontAwesomeIcon(){const e={cfr2:["fab","cloudflare"],s3:["fab","aws"],discord:["fab","discord"]};return e[this.type]||"server"}}},d=o(71241);const c=(0,d.A)(r,[["render",n],["__scopeId","data-v-ce6ff2ce"]]);var u=c}}]); +//# sourceMappingURL=502.ff024e4c.js.map \ No newline at end of file diff --git a/frontend-dist/js/502.ff024e4c.js.gz b/frontend-dist/js/502.ff024e4c.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..97103f73d79be25309ffc126f9cd14eb8d93d7e8 GIT binary patch literal 33831 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 literal 0 HcmV?d00001 diff --git a/frontend-dist/js/502.58060353.js.map b/frontend-dist/js/502.ff024e4c.js.map similarity index 99% rename from frontend-dist/js/502.58060353.js.map rename to frontend-dist/js/502.ff024e4c.js.map index f1aed52..178da4c 100644 --- a/frontend-dist/js/502.58060353.js.map +++ b/frontend-dist/js/502.ff024e4c.js.map @@ -1 +1 @@ -{"version":3,"file":"js/502.58060353.js","mappings":"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","sources":["webpack://sanyue_imghub/./node_modules/image-conversion/build/conversion.js","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue?9e0f","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue?6984","webpack://sanyue_imghub/./src/components/ToggleDark.vue?611b","webpack://sanyue_imghub/./src/components/ToggleDark.vue","webpack://sanyue_imghub/./src/components/ToggleDark.vue?0bce","webpack://sanyue_imghub/./src/components/Logo.vue?235d","webpack://sanyue_imghub/./src/components/Logo.vue","webpack://sanyue_imghub/./src/components/Logo.vue?4125","webpack://sanyue_imghub/./src/utils/pathValidator.js","webpack://sanyue_imghub/./src/components/upload/UploadHistory.vue?942e","webpack://sanyue_imghub/./src/components/upload/UploadHistory.vue","webpack://sanyue_imghub/./src/components/upload/UploadHistory.vue?d5f5","webpack://sanyue_imghub/./src/components/upload/UploadSettingsDialog.vue?8a66","webpack://sanyue_imghub/./src/components/upload/UploadSettingsDialog.vue","webpack://sanyue_imghub/./src/components/upload/UploadSettingsDialog.vue?adb2","webpack://sanyue_imghub/./src/components/upload/UploadFileItem.vue?e1ad","webpack://sanyue_imghub/./src/components/upload/UploadFileItem.vue","webpack://sanyue_imghub/./src/components/upload/UploadFileItem.vue?420c","webpack://sanyue_imghub/./src/components/upload/UploadForm.vue?2068","webpack://sanyue_imghub/./src/utils/upload/urlBuilder.js","webpack://sanyue_imghub/./src/utils/upload/sha256.js","webpack://sanyue_imghub/./src/utils/upload/directoryTraversal.js","webpack://sanyue_imghub/./src/components/upload/UploadForm.vue","webpack://sanyue_imghub/./src/components/upload/UploadForm.vue?bdbd","webpack://sanyue_imghub/./src/components/DirectorySuggestionInput.vue?6707","webpack://sanyue_imghub/./src/components/DirectorySuggestionInput.vue","webpack://sanyue_imghub/./src/components/DirectorySuggestionInput.vue?69c3","webpack://sanyue_imghub/./src/views/UploadHome.vue?05cf","webpack://sanyue_imghub/./src/views/UploadHome.vue","webpack://sanyue_imghub/./src/views/UploadHome.vue?af00","webpack://sanyue_imghub/./src/utils/fetchWithAuth.js","webpack://sanyue_imghub/./node_modules/image-conversion/index.js","webpack://sanyue_imghub/./src/components/Footer.vue?4f81","webpack://sanyue_imghub/./src/components/Footer.vue","webpack://sanyue_imghub/./src/components/Footer.vue?d468","webpack://sanyue_imghub/./src/components/icons/ChannelIcon.vue?3436","webpack://sanyue_imghub/./src/components/icons/ChannelIcon.vue","webpack://sanyue_imghub/./src/components/icons/ChannelIcon.vue?8c05"],"sourcesContent":["!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.imageConversion=e():t.imageConversion=e()}(this,(function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=0)}([function(t,e,n){\"use strict\";var r;function o(t){return[\"image/png\",\"image/jpeg\",\"image/gif\"].some(e=>e===t)}n.r(e),n.d(e,\"canvastoDataURL\",(function(){return a})),n.d(e,\"canvastoFile\",(function(){return c})),n.d(e,\"dataURLtoFile\",(function(){return s})),n.d(e,\"dataURLtoImage\",(function(){return l})),n.d(e,\"downloadFile\",(function(){return d})),n.d(e,\"filetoDataURL\",(function(){return f})),n.d(e,\"imagetoCanvas\",(function(){return g})),n.d(e,\"urltoBlob\",(function(){return w})),n.d(e,\"urltoImage\",(function(){return m})),n.d(e,\"compress\",(function(){return p})),n.d(e,\"compressAccurately\",(function(){return b})),n.d(e,\"EImageType\",(function(){return r})),function(t){t.PNG=\"image/png\",t.JPEG=\"image/jpeg\",t.GIF=\"image/gif\"}(r||(r={}));var i=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function a(t,e=.92,n=r.JPEG){return i(this,void 0,void 0,(function*(){return o(n)||(n=r.JPEG),t.toDataURL(n,e)}))}function c(t,e=.92,n=r.JPEG){return new Promise(r=>t.toBlob(t=>r(t),n,e))}var u=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function s(t,e){return u(this,void 0,void 0,(function*(){const n=t.split(\",\");let r=n[0].match(/:(.*?);/)[1];const i=atob(n[1]);let a=i.length;const c=new Uint8Array(a);for(;a--;)c[a]=i.charCodeAt(a);return o(e)&&(r=e),new Blob([c],{type:r})}))}function l(t){return new Promise((e,n)=>{const r=new Image;r.onload=()=>e(r),r.onerror=()=>n(new Error(\"dataURLtoImage(): dataURL is illegal\")),r.src=t})}function d(t,e){const n=document.createElement(\"a\");n.href=window.URL.createObjectURL(t),n.download=e||Date.now().toString(36),document.body.appendChild(n);const r=document.createEvent(\"MouseEvents\");r.initEvent(\"click\",!1,!1),n.dispatchEvent(r),document.body.removeChild(n)}function f(t){return new Promise(e=>{const n=new FileReader;n.onloadend=t=>e(t.target.result),n.readAsDataURL(t)})}var h=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function g(t,e={}){return h(this,void 0,void 0,(function*(){const n=Object.assign({},e),r=document.createElement(\"canvas\"),o=r.getContext(\"2d\");let i,a;for(const t in n)Object.prototype.hasOwnProperty.call(n,t)&&(n[t]=Number(n[t]));if(n.scale){const e=n.scale>0&&n.scale<10?n.scale:1;a=t.width*e,i=t.height*e}else a=n.width||n.height*t.width/t.height||t.width,i=n.height||n.width*t.height/t.width||t.height;switch([5,6,7,8].some(t=>t===n.orientation)?(r.height=a,r.width=i):(r.height=i,r.width=a),n.orientation){case 3:o.rotate(180*Math.PI/180),o.drawImage(t,-r.width,-r.height,r.width,r.height);break;case 6:o.rotate(90*Math.PI/180),o.drawImage(t,0,-r.width,r.height,r.width);break;case 8:o.rotate(270*Math.PI/180),o.drawImage(t,-r.height,0,r.height,r.width);break;case 2:o.translate(r.width,0),o.scale(-1,1),o.drawImage(t,0,0,r.width,r.height);break;case 4:o.translate(r.width,0),o.scale(-1,1),o.rotate(180*Math.PI/180),o.drawImage(t,-r.width,-r.height,r.width,r.height);break;case 5:o.translate(r.width,0),o.scale(-1,1),o.rotate(90*Math.PI/180),o.drawImage(t,0,-r.width,r.height,r.width);break;case 7:o.translate(r.width,0),o.scale(-1,1),o.rotate(270*Math.PI/180),o.drawImage(t,-r.height,0,r.height,r.width);break;default:o.drawImage(t,0,0,r.width,r.height)}return r}))}function w(t){return fetch(t).then(t=>t.blob())}function m(t){return new Promise((e,n)=>{const r=new Image;r.onload=()=>e(r),r.onerror=()=>n(new Error(\"urltoImage(): Image failed to load, please check the image URL\")),r.src=t})}var y=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function p(t,e={}){return y(this,void 0,void 0,(function*(){if(!(t instanceof Blob))throw new Error(\"compress(): First arg must be a Blob object or a File object.\");if(\"object\"!=typeof e&&(e=Object.assign({quality:e})),e.quality=Number(e.quality),Number.isNaN(e.quality))return t;const n=yield f(t);let i=n.split(\",\")[0].match(/:(.*?);/)[1],c=r.JPEG;o(e.type)&&(c=e.type,i=e.type);const u=yield l(n),d=yield g(u,Object.assign({},e)),h=yield a(d,e.quality,c),w=yield s(h,i);return w.size>t.size?t:w}))}function b(t,e={}){return y(this,void 0,void 0,(function*(){if(!(t instanceof Blob))throw new Error(\"compressAccurately(): First arg must be a Blob object or a File object.\");if(\"object\"!=typeof e&&(e=Object.assign({size:e})),e.size=Number(e.size),Number.isNaN(e.size))return t;if(1024*e.size>t.size)return t;e.accuracy=Number(e.accuracy),(!e.accuracy||e.accuracy<.8||e.accuracy>.99)&&(e.accuracy=.95);const n=e.size*(2-e.accuracy)*1024,i=1024*e.size,c=e.size*e.accuracy*1024,u=yield f(t);let d=u.split(\",\")[0].match(/:(.*?);/)[1],h=r.JPEG;o(e.type)&&(h=e.type,d=e.type);const w=yield l(u),m=yield g(w,Object.assign({},e));let y,p=.5;const b=[null,null];for(let t=1;t<=7;t++){y=yield a(m,p,h);const e=.75*y.length;if(7===t){(ne)&&(y=[y,...b].filter(t=>t).sort((t,e)=>Math.abs(.75*t.length-i)-Math.abs(.75*e.length-i))[0]);break}if(ne))break;b[0]=y,p+=Math.pow(.5,t+1)}}const v=yield s(y,d);return v.size>t.size?t:v}))}}])}));","import { renderSlot as _renderSlot, withModifiers as _withModifiers, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createBlock as _createBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, Fragment as _Fragment } from \"vue\";\nconst _hoisted_1 = {\n class: \"directory-tree-picker\"\n};\nconst _hoisted_2 = {\n class: \"tree-container\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_4 = {\n class: \"error-text\"\n};\nconst _hoisted_5 = {\n class: \"node-label\"\n};\nconst _hoisted_6 = {\n class: \"tree-container\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_8 = {\n class: \"error-text\"\n};\nconst _hoisted_9 = {\n class: \"node-label\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tree = _resolveComponent(\"el-tree\");\n const _component_el_popover = _resolveComponent(\"el-popover\");\n const _component_el_drawer = _resolveComponent(\"el-drawer\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [$options.isDesktop ? (_openBlock(), _createBlock(_component_el_popover, {\n key: 0,\n visible: $data.popoverVisible,\n \"onUpdate:visible\": _cache[1] || (_cache[1] = $event => $data.popoverVisible = $event),\n placement: \"bottom-start\",\n width: 320,\n trigger: \"click\",\n \"popper-class\": \"directory-tree-popover\",\n \"show-arrow\": true,\n \"hide-after\": 0,\n \"show-after\": 50,\n transition: \"el-zoom-in-top\"\n }, {\n reference: _withCtx(() => [_createElementVNode(\"span\", {\n class: \"popover-trigger-wrapper\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"]))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)])]),\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_2, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_4, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRef\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_5, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 3\n }, 8, [\"visible\"])) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createElementVNode(\"span\", {\n class: \"drawer-trigger-wrapper\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.openDrawer && $options.openDrawer(...args))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)]), _createVNode(_component_el_drawer, {\n modelValue: $data.drawerVisible,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.drawerVisible = $event),\n direction: \"btt\",\n size: \"60%\",\n \"show-close\": true,\n \"with-header\": true,\n \"z-index\": 3000,\n title: _ctx.$t('directoryTree.selectDirectory'),\n class: \"directory-tree-drawer\"\n }, {\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_6, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_8, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRefMobile\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree mobile-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_9, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 1\n }, 8, [\"modelValue\", \"title\"])], 64))]);\n}","import axios from '@/utils/axios';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'DirectoryTreePicker',\n props: {\n currentDirectory: {\n type: String,\n default: ''\n },\n source: {\n type: String,\n default: 'upload',\n validator: value => ['upload', 'admin'].includes(value)\n }\n },\n data() {\n return {\n popoverVisible: false,\n drawerVisible: false,\n treeData: [],\n loading: false,\n error: '',\n treeProps: {\n children: 'children',\n label: 'name'\n },\n windowWidth: window.innerWidth\n };\n },\n computed: {\n isDesktop() {\n return this.windowWidth >= 769;\n }\n },\n watch: {\n popoverVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 弹窗关闭后延迟折叠所有节点,避免下次打开时出现折叠动画\n setTimeout(() => {\n if (!this.popoverVisible && this.$refs.treeRef) {\n const store = this.$refs.treeRef.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 200);\n }\n },\n drawerVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 抽屉关闭后延迟折叠所有节点\n setTimeout(() => {\n if (!this.drawerVisible && this.$refs.treeRefMobile) {\n const store = this.$refs.treeRefMobile.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 300);\n }\n },\n currentDirectory(newVal) {\n this.$nextTick(() => {\n if (this.$refs.treeRef && newVal) {\n this.$refs.treeRef.setCurrentKey(newVal);\n }\n if (this.$refs.treeRefMobile && newVal) {\n this.$refs.treeRefMobile.setCurrentKey(newVal);\n }\n });\n }\n },\n mounted() {\n window.addEventListener('resize', this.handleResize);\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.handleResize);\n },\n methods: {\n handleResize() {\n this.windowWidth = window.innerWidth;\n },\n openDrawer() {\n this.drawerVisible = true;\n },\n async fetchDirectoryTree() {\n this.loading = true;\n this.error = '';\n try {\n let data;\n if (this.source === 'admin') {\n const response = await fetchWithAuth('/api/directoryTree', {\n method: 'GET'\n });\n if (!response.ok) {\n if (response.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.serverError');\n }\n return;\n }\n data = await response.json();\n } else {\n const response = await axios.get('/api/directoryTree', {\n withAuthCode: true\n });\n data = response.data;\n }\n if (data.tree) {\n this.treeData = [data.tree];\n } else {\n this.treeData = [];\n }\n } catch (err) {\n console.error('Failed to fetch directory tree:', err);\n if (err.response?.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.loadFailed');\n }\n } finally {\n this.loading = false;\n }\n },\n handleNodeClick(data) {\n let path = data.path;\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n } else if (!path) {\n path = '/';\n }\n this.$emit('select', path);\n this.popoverVisible = false;\n this.drawerVisible = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DirectoryTreePicker.vue?vue&type=template&id=62eab69a&scoped=true\"\nimport script from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\nexport * from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\n\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=0&id=62eab69a&scoped=true&lang=css\"\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=1&id=62eab69a&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-62eab69a\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, Transition as _Transition, withCtx as _withCtx, createVNode as _createVNode } from \"vue\";\nconst _hoisted_1 = {\n id: \"themeMask\"\n};\nconst _hoisted_2 = [\"cx\", \"cy\", \"r\"];\nconst _hoisted_3 = [\"r\"];\nconst _hoisted_4 = [\"opacity\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"div\", {\n id: \"themeToggle\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.handleToggleClick && $options.handleToggleClick(...args))\n }, [_createVNode(_Transition, {\n name: \"icon-fade\",\n mode: \"out-in\"\n }, {\n default: _withCtx(() => [!$data.isAuto ? (_openBlock(), _createElementBlock(\"svg\", {\n key: \"sun-moon\",\n class: _normalizeClass([\"theme_toggle_svg\", {\n 'dark': $data.isDark\n }]),\n width: \"1.5em\",\n height: \"1.5em\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n \"stroke-width\": \"2\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n stroke: \"currentColor\"\n }, [_createElementVNode(\"mask\", _hoisted_1, [_cache[1] || (_cache[1] = _createElementVNode(\"rect\", {\n x: \"0\",\n y: \"0\",\n width: \"100%\",\n height: \"100%\",\n fill: \"white\"\n }, null, -1)), _createElementVNode(\"circle\", {\n class: \"theme_toggle_circle1\",\n fill: \"black\",\n cx: $data.isDark ? '50%' : '100%',\n cy: $data.isDark ? '23%' : '0%',\n r: $data.isDark ? '9' : '5'\n }, null, 8, _hoisted_2)]), _createElementVNode(\"circle\", {\n class: \"theme_toggle_circle2\",\n cx: \"12\",\n cy: \"12\",\n r: $data.isDark ? '9' : '5',\n mask: \"url(#themeMask)\"\n }, null, 8, _hoisted_3), _createElementVNode(\"g\", {\n class: \"theme_toggle_g\",\n stroke: \"currentColor\",\n opacity: $data.isDark ? 0 : 1\n }, [...(_cache[2] || (_cache[2] = [_createElementVNode(\"line\", {\n x1: \"12\",\n y1: \"1\",\n x2: \"12\",\n y2: \"3\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"12\",\n y1: \"21\",\n x2: \"12\",\n y2: \"23\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"4.22\",\n y1: \"4.22\",\n x2: \"5.64\",\n y2: \"5.64\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"18.36\",\n y1: \"18.36\",\n x2: \"19.78\",\n y2: \"19.78\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"1\",\n y1: \"12\",\n x2: \"3\",\n y2: \"12\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"21\",\n y1: \"12\",\n x2: \"23\",\n y2: \"12\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"4.22\",\n y1: \"19.78\",\n x2: \"5.64\",\n y2: \"18.36\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"18.36\",\n y1: \"5.64\",\n x2: \"19.78\",\n y2: \"4.22\"\n }, null, -1)]))], 8, _hoisted_4)], 2)) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: \"auto-mode\",\n icon: \"circle-half-stroke\",\n class: \"auto-icon\",\n style: {\n \"font-size\": \"1.5em\",\n \"color\": \"var(--theme-toggle-color)\"\n }\n }))]),\n _: 1\n })]);\n}","export default {\n name: 'ToggleDark',\n data() {\n return {\n isDark: this.$store.getters.useDarkMode,\n isAuto: !this.$store.getters.cusDarkMode\n };\n },\n methods: {\n handleToggleClick() {\n // 三种状态循环:亮色 -> 暗色 -> 跟随系统 -> 亮色\n if (this.isAuto) {\n // 当前是自动模式,切换到亮色\n this.isDark = false;\n this.isAuto = false;\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', false);\n } else if (!this.isDark) {\n // 当前是亮色,切换到暗色\n this.isDark = true;\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', true);\n } else {\n // 当前是暗色,切换到跟随系统\n this.isAuto = true;\n this.$store.commit('setCusDarkMode', false);\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./ToggleDark.vue?vue&type=template&id=e9449eac&scoped=true\"\nimport script from \"./ToggleDark.vue?vue&type=script&lang=js\"\nexport * from \"./ToggleDark.vue?vue&type=script&lang=js\"\n\nimport \"./ToggleDark.vue?vue&type=style&index=0&id=e9449eac&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-e9449eac\"]])\n\nexport default __exports__","import { normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = [\"href\", \"target\"];\nconst _hoisted_2 = [\"alt\", \"src\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return _openBlock(), _createElementBlock(\"a\", {\n href: $options.logoHref,\n target: $props.target,\n class: _normalizeClass(_ctx.logo - _ctx.link)\n }, [_createElementVNode(\"img\", {\n class: _normalizeClass($options.logoClasses),\n alt: $props.alt,\n src: $options.logoUrl\n }, null, 10, _hoisted_2)], 10, _hoisted_1);\n}","import { mapGetters } from 'vuex';\nexport default {\n name: 'Logo',\n props: {\n // Logo链接地址(可被用户配置覆盖)\n href: {\n type: String,\n default: 'https://github.com/MarSeventh/CloudFlare-ImgBed'\n },\n // 链接打开方式\n target: {\n type: String,\n default: '_blank',\n // _blank, _self, _parent, _top\n validator: value => ['_blank', '_self', '_parent', '_top'].includes(value)\n },\n // 图片alt文本\n alt: {\n type: String,\n default: 'Sanyue logo'\n },\n // 自定义logo图片URL(可选)\n customSrc: {\n type: String,\n default: ''\n },\n // Logo位置样式\n position: {\n type: String,\n default: 'fixed',\n // fixed, relative, absolute\n validator: value => ['fixed', 'relative', 'absolute', 'static'].includes(value)\n },\n // Logo大小\n size: {\n type: String,\n default: 'normal',\n // small, normal, large\n validator: value => ['small', 'normal', 'large'].includes(value)\n },\n // 是否启用悬停动画\n enableHover: {\n type: Boolean,\n default: true\n },\n // 是否允许使用用户配置的链接(仅上传页面启用)\n useConfigLink: {\n type: Boolean,\n default: false\n }\n },\n computed: {\n ...mapGetters(['userConfig']),\n logoUrl() {\n // 优先级:customSrc > 用户配置 > 默认图片\n return this.customSrc || this.userConfig?.logoUrl || require('../assets/logo.png');\n },\n logoHref() {\n // 只有启用 useConfigLink 时才使用用户配置的链接\n if (this.useConfigLink && this.userConfig?.logoLink) {\n return this.userConfig.logoLink;\n }\n return this.href;\n },\n logoClasses() {\n return {\n 'logo': true,\n [`logo--${this.position}`]: true,\n [`logo--${this.size}`]: true,\n 'logo--hover-enabled': this.enableHover\n };\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./Logo.vue?vue&type=template&id=5c73638c&scoped=true\"\nimport script from \"./Logo.vue?vue&type=script&lang=js\"\nexport * from \"./Logo.vue?vue&type=script&lang=js\"\n\nimport \"./Logo.vue?vue&type=style&index=0&id=5c73638c&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5c73638c\"]])\n\nexport default __exports__","/**\r\n * 路径验证器模块\r\n * 提供共享的文件夹路径验证功能,供 AdminDashBoard 和 UploadHome 共同使用\r\n */\r\nimport i18n from '@/locales'\r\n\r\n/**\r\n * 验证文件夹路径的合法性\r\n * @param {string} path - 要验证的路径\r\n * @param {{ strict?: boolean }} options - 选项,strict 为 true 时检查末尾单独的 \".\"(默认 true)\r\n * @returns {{ valid: boolean, error?: string }} 验证结果\r\n */\r\nexport function validateFolderPath(path, { strict = true } = {}) {\r\n // 如果路径为空或仅为空白字符,返回有效(表示根目录)\r\n if (!path || path.trim() === '') {\r\n return { valid: true };\r\n }\r\n \r\n // 如果路径仅为 \"/\",返回有效(表示根目录)\r\n if (path === '/') {\r\n return { valid: true };\r\n }\r\n \r\n // 检查路径是否以 \"/\" 开头\r\n if (!path.startsWith('/')) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.pathMustStartWithSlash') \r\n };\r\n }\r\n\r\n // 检查路径穿越:包含 .. 的路径段\r\n if (/(?:^|\\/)\\.\\.(\\/|$)/.test(path) || path.includes('..')) {\r\n return {\r\n valid: false,\r\n error: i18n.global.t('validation.pathTraversalNotAllowed')\r\n };\r\n }\r\n\r\n // 检查路径中单独的 . 段\r\n // strict 模式检查 /./ 和末尾 /.,非 strict 模式仅检查 /./ 以允许用户继续输入如 /.123\r\n const dotPattern = strict ? /\\/\\.(\\/|$)/ : /\\/\\.\\//;\r\n if (dotPattern.test(path)) {\r\n return {\r\n valid: false,\r\n error: i18n.global.t('validation.singleDotNotAllowed')\r\n };\r\n }\r\n\r\n // 检查路径是否包含连续的斜杠\r\n if (path.includes('//')) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.consecutiveSlashNotAllowed') \r\n };\r\n }\r\n \r\n // 检查路径是否包含非法字符\r\n // 非法字符包括: \\ : * ? \" ' < > | 空格 ( ) [ ] { } # % ^ ` ~ ; @ & = + $ ,\r\n const invalidChars = /[\\\\:\\*\\?\"'<>\\| \\(\\)\\[\\]\\{\\}#%\\^`~;@&=\\+\\$,]/;\r\n if (invalidChars.test(path)) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.invalidCharacters') \r\n };\r\n }\r\n \r\n return { valid: true };\r\n}\r\n","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass } from \"vue\";\nconst _hoisted_1 = {\n class: \"history-header\"\n};\nconst _hoisted_2 = {\n class: \"header-left\"\n};\nconst _hoisted_3 = {\n class: \"record-count\"\n};\nconst _hoisted_4 = {\n class: \"header-right\"\n};\nconst _hoisted_5 = {\n class: \"timeline-header\"\n};\nconst _hoisted_6 = {\n class: \"date-label\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"grid-view\"\n};\nconst _hoisted_8 = {\n class: \"grid-preview\"\n};\nconst _hoisted_9 = [\"src\"];\nconst _hoisted_10 = [\"src\"];\nconst _hoisted_11 = {\n key: 2,\n class: \"file-icon-wrapper\"\n};\nconst _hoisted_12 = {\n class: \"grid-overlay\"\n};\nconst _hoisted_13 = {\n class: \"grid-actions\"\n};\nconst _hoisted_14 = {\n class: \"grid-info\"\n};\nconst _hoisted_15 = [\"title\"];\nconst _hoisted_16 = {\n class: \"upload-time\"\n};\nconst _hoisted_17 = {\n key: 1,\n class: \"list-view\"\n};\nconst _hoisted_18 = {\n class: \"list-preview\"\n};\nconst _hoisted_19 = [\"src\"];\nconst _hoisted_20 = [\"src\"];\nconst _hoisted_21 = {\n key: 2,\n class: \"file-icon-wrapper-small\"\n};\nconst _hoisted_22 = {\n class: \"list-info\"\n};\nconst _hoisted_23 = [\"title\"];\nconst _hoisted_24 = [\"title\"];\nconst _hoisted_25 = {\n class: \"list-meta\"\n};\nconst _hoisted_26 = {\n class: \"upload-time\"\n};\nconst _hoisted_27 = {\n class: \"list-actions\"\n};\nconst _hoisted_28 = {\n key: 0,\n class: \"load-more-container\"\n};\nconst _hoisted_29 = {\n key: 0,\n class: \"loading-indicator\"\n};\nconst _hoisted_30 = {\n key: 1,\n class: \"load-more-hint\"\n};\nconst _hoisted_31 = {\n key: 1,\n class: \"no-more-hint\"\n};\nconst _hoisted_32 = {\n key: 1,\n class: \"empty-state\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n return _openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"history-container\", {\n 'active': $props.show\n }])\n }, [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"h2\", null, _toDisplayString(_ctx.$t('uploadHistory.title')), 1), _createElementVNode(\"span\", _hoisted_3, _toDisplayString(_ctx.$t('uploadHistory.totalRecords', {\n count: $data.totalCount\n })), 1)]), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadHistory.switchView'),\n placement: \"bottom\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n circle: \"\",\n onClick: $options.toggleViewMode\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: $data.viewMode === 'grid' ? 'list' : 'th-large'\n }, null, 8, [\"icon\"])]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadHistory.clearRecords'),\n placement: \"bottom\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n circle: \"\",\n type: \"danger\",\n onClick: $options.clearHistory\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_button, {\n circle: \"\",\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$emit('close'))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"times\"\n })]),\n _: 1\n })])]), $data.historyList.length > 0 ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"history-content\",\n ref: \"historyContent\",\n onScroll: _cache[3] || (_cache[3] = (...args) => $options.handleScroll && $options.handleScroll(...args))\n }, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.groupedHistory, group => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: group.date,\n class: \"history-group\"\n }, [_createElementVNode(\"div\", _hoisted_5, [_cache[4] || (_cache[4] = _createElementVNode(\"div\", {\n class: \"timeline-dot\"\n }, null, -1)), _createElementVNode(\"span\", _hoisted_6, _toDisplayString(group.date), 1)]), $data.viewMode === 'grid' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(group.items, item => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: item.time,\n class: \"grid-item\"\n }, [_createElementVNode(\"div\", _hoisted_8, [$options.isImage(item.name) ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: item.url,\n loading: \"lazy\",\n onError: _cache[1] || (_cache[1] = (...args) => $options.handleImageError && $options.handleImageError(...args))\n }, null, 40, _hoisted_9)) : $options.isVideo(item.name) ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n src: item.url,\n muted: \"\"\n }, null, 8, _hoisted_10)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\",\n class: \"file-icon\"\n })])), _createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"div\", _hoisted_13, [_createVNode(_component_el_button, {\n circle: \"\",\n size: \"default\",\n type: \"primary\",\n onClick: $event => $options.copyLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"default\",\n class: \"action-btn-view\",\n onClick: $event => $options.openLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"external-link-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"default\",\n type: \"danger\",\n onClick: $event => $options.deleteItem(item)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"])])])]), _createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"div\", {\n class: \"file-name\",\n title: item.name\n }, _toDisplayString(item.name), 9, _hoisted_15), _createElementVNode(\"div\", _hoisted_16, _toDisplayString($options.formatTime(item.time)), 1)])]);\n }), 128))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(group.items, item => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: item.time,\n class: \"list-item\"\n }, [_createElementVNode(\"div\", _hoisted_18, [$options.isImage(item.name) ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: item.url,\n loading: \"lazy\",\n onError: _cache[2] || (_cache[2] = (...args) => $options.handleImageError && $options.handleImageError(...args))\n }, null, 40, _hoisted_19)) : $options.isVideo(item.name) ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n src: item.url,\n muted: \"\"\n }, null, 8, _hoisted_20)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_21, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\"\n })]))]), _createElementVNode(\"div\", _hoisted_22, [_createElementVNode(\"div\", {\n class: \"file-name\",\n title: item.name\n }, _toDisplayString(item.name), 9, _hoisted_23), _createElementVNode(\"div\", {\n class: \"file-url\",\n title: item.url\n }, _toDisplayString(item.url), 9, _hoisted_24)]), _createElementVNode(\"div\", _hoisted_25, [_createElementVNode(\"div\", _hoisted_26, _toDisplayString($options.formatTime(item.time)), 1)]), _createElementVNode(\"div\", _hoisted_27, [_createVNode(_component_el_button, {\n circle: \"\",\n size: \"small\",\n type: \"primary\",\n onClick: $event => $options.copyLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"small\",\n class: \"action-btn-view\",\n onClick: $event => $options.openLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"external-link-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"small\",\n type: \"danger\",\n onClick: $event => $options.deleteItem(item)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"])])]);\n }), 128))]))]);\n }), 128)), $options.hasMore ? (_openBlock(), _createElementBlock(\"div\", _hoisted_28, [$data.loadingMore ? (_openBlock(), _createElementBlock(\"div\", _hoisted_29, [_createVNode(_component_font_awesome_icon, {\n icon: \"spinner\",\n spin: \"\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadHistory.loading')), 1)])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_30, _toDisplayString(_ctx.$t('uploadHistory.pullToLoadMore')), 1))])) : $data.historyList.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_31, _toDisplayString(_ctx.$t('uploadHistory.noMoreRecords')), 1)) : _createCommentVNode(\"\", true)], 544)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_32, [_createVNode(_component_font_awesome_icon, {\n icon: \"history\",\n class: \"empty-icon\"\n }), _createElementVNode(\"p\", null, _toDisplayString(_ctx.$t('uploadHistory.emptyHistory')), 1)]))], 2);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nexport default {\n name: 'UploadHistory',\n props: {\n show: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n historyList: [],\n allHistory: [],\n // 完整历史记录\n viewMode: 'grid',\n // 'grid' or 'list'\n pageSize: 30,\n // 每次加载数量\n currentPage: 0,\n loadingMore: false,\n totalCount: 0\n };\n },\n watch: {\n show(val) {\n if (val) {\n this.resetAndLoad();\n }\n }\n },\n computed: {\n hasMore() {\n return this.historyList.length < this.totalCount;\n },\n groupedHistory() {\n const groups = {};\n this.historyList.forEach(item => {\n const date = new Date(item.time);\n const dateStr = `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`;\n if (!groups[dateStr]) {\n groups[dateStr] = [];\n }\n groups[dateStr].push(item);\n });\n\n // Sort dates descending\n return Object.keys(groups).sort((a, b) => new Date(b) - new Date(a)).map(date => ({\n date,\n items: groups[date]\n }));\n }\n },\n mounted() {\n // Load view mode preference\n const savedMode = localStorage.getItem('historyViewMode');\n if (savedMode) {\n this.viewMode = savedMode;\n }\n },\n methods: {\n resetAndLoad() {\n this.historyList = [];\n this.currentPage = 0;\n this.loadAllHistory();\n this.loadMore();\n },\n loadAllHistory() {\n try {\n const history = JSON.parse(localStorage.getItem('uploadHistory') || '[]');\n // Sort by time desc\n this.allHistory = history.sort((a, b) => b.time - a.time);\n this.totalCount = this.allHistory.length;\n } catch (e) {\n console.error('Failed to load history', e);\n this.allHistory = [];\n this.totalCount = 0;\n }\n },\n loadMore() {\n if (this.loadingMore || !this.hasMore) return;\n this.loadingMore = true;\n\n // 模拟异步加载,避免阻塞UI\n setTimeout(() => {\n const start = this.currentPage * this.pageSize;\n const end = start + this.pageSize;\n const newItems = this.allHistory.slice(start, end);\n this.historyList = [...this.historyList, ...newItems];\n this.currentPage++;\n this.loadingMore = false;\n }, 50);\n },\n handleScroll(e) {\n const container = e.target;\n const scrollTop = container.scrollTop;\n const scrollHeight = container.scrollHeight;\n const clientHeight = container.clientHeight;\n\n // 距离底部 100px 时加载更多\n if (scrollHeight - scrollTop - clientHeight < 100) {\n this.loadMore();\n }\n },\n toggleViewMode() {\n this.viewMode = this.viewMode === 'grid' ? 'list' : 'grid';\n localStorage.setItem('historyViewMode', this.viewMode);\n },\n clearHistory() {\n this.$confirm(this.$t('uploadHistory.clearConfirmMessage'), this.$t('uploadHistory.clearConfirmTitle'), {\n confirmButtonText: this.$t('uploadHistory.clearConfirmOk'),\n cancelButtonText: this.$t('uploadHistory.clearConfirmCancel'),\n type: 'warning'\n }).then(() => {\n this.historyList = [];\n this.allHistory = [];\n this.totalCount = 0;\n this.currentPage = 0;\n localStorage.removeItem('uploadHistory');\n this.$message.success(this.$t('uploadHistory.recordsCleared'));\n }).catch(() => {});\n },\n deleteItem(item) {\n this.$confirm(this.$t('uploadHistory.deleteConfirmMessage'), this.$t('uploadHistory.clearConfirmTitle'), {\n confirmButtonText: this.$t('uploadHistory.clearConfirmOk'),\n cancelButtonText: this.$t('uploadHistory.clearConfirmCancel'),\n type: 'warning'\n }).then(() => {\n // Remove from lists\n this.historyList = this.historyList.filter(i => i.time !== item.time);\n this.allHistory = this.allHistory.filter(i => i.time !== item.time);\n this.totalCount = this.allHistory.length;\n\n // Update localStorage\n try {\n localStorage.setItem('uploadHistory', JSON.stringify(this.allHistory));\n this.$message.success(this.$t('uploadHistory.recordDeleted'));\n } catch (e) {\n console.error('Failed to update history', e);\n }\n }).catch(() => {});\n },\n isImage(fileName) {\n const imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'tiff', 'ico', 'avif', 'heic', 'jfif', 'pjpeg', 'pjp'];\n const extension = fileName ? fileName.split('.').pop().toLowerCase() : '';\n return imageExtensions.includes(extension);\n },\n isVideo(fileName) {\n const videoExtensions = ['mp4', 'webm', 'ogg', 'mkv'];\n const extension = fileName ? fileName.split('.').pop().toLowerCase() : '';\n return videoExtensions.includes(extension);\n },\n formatTime(timestamp) {\n const date = new Date(timestamp);\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n const hours = String(date.getHours()).padStart(2, '0');\n const minutes = String(date.getMinutes()).padStart(2, '0');\n const seconds = String(date.getSeconds()).padStart(2, '0');\n return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;\n },\n copyLink(url) {\n navigator.clipboard.writeText(url).then(() => {\n this.$message.success(this.$t('uploadHistory.linkCopied'));\n }).catch(() => {\n this.$message.error(this.$t('uploadHistory.copyFailed'));\n });\n },\n openLink(url) {\n window.open(url, '_blank');\n },\n handleImageError(e) {\n e.target.src = require('@/assets/404.png');\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadHistory.vue?vue&type=template&id=7da2f8c2&scoped=true\"\nimport script from \"./UploadHistory.vue?vue&type=script&lang=js\"\nexport * from \"./UploadHistory.vue?vue&type=script&lang=js\"\n\nimport \"./UploadHistory.vue?vue&type=style&index=0&id=7da2f8c2&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7da2f8c2\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"dialog-section\"\n};\nconst _hoisted_2 = {\n class: \"section-header\"\n};\nconst _hoisted_3 = {\n class: \"section-title\"\n};\nconst _hoisted_4 = {\n class: \"section-content\"\n};\nconst _hoisted_5 = {\n class: \"setting-item channel-type-setting\"\n};\nconst _hoisted_6 = {\n class: \"channel-type-toolbar\"\n};\nconst _hoisted_7 = {\n class: \"setting-label\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"channel-empty-state\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_10 = {\n class: \"setting-label\"\n};\nconst _hoisted_11 = {\n class: \"setting-item\"\n};\nconst _hoisted_12 = {\n class: \"setting-label\"\n};\nconst _hoisted_13 = {\n class: \"setting-item\"\n};\nconst _hoisted_14 = {\n class: \"setting-label\"\n};\nconst _hoisted_15 = {\n class: \"dialog-section\"\n};\nconst _hoisted_16 = {\n class: \"section-header\"\n};\nconst _hoisted_17 = {\n class: \"section-title\"\n};\nconst _hoisted_18 = {\n class: \"section-content\"\n};\nconst _hoisted_19 = {\n class: \"dialog-section\"\n};\nconst _hoisted_20 = {\n class: \"section-header\"\n};\nconst _hoisted_21 = {\n class: \"section-title\"\n};\nconst _hoisted_22 = {\n class: \"section-content\"\n};\nconst _hoisted_23 = {\n class: \"setting-item\"\n};\nconst _hoisted_24 = {\n class: \"setting-label\"\n};\nconst _hoisted_25 = {\n class: \"setting-item\"\n};\nconst _hoisted_26 = {\n class: \"setting-label\"\n};\nconst _hoisted_27 = {\n key: 0,\n class: \"setting-item slider-item\"\n};\nconst _hoisted_28 = {\n class: \"setting-label\"\n};\nconst _hoisted_29 = {\n class: \"slider-wrapper\"\n};\nconst _hoisted_30 = {\n class: \"slider-input-wrapper\"\n};\nconst _hoisted_31 = {\n key: 1,\n class: \"setting-item slider-item\"\n};\nconst _hoisted_32 = {\n class: \"setting-label\"\n};\nconst _hoisted_33 = {\n class: \"slider-wrapper\"\n};\nconst _hoisted_34 = {\n class: \"slider-input-wrapper\"\n};\nconst _hoisted_35 = {\n key: 0,\n class: \"dialog-section\"\n};\nconst _hoisted_36 = {\n class: \"section-header\"\n};\nconst _hoisted_37 = {\n class: \"section-title\"\n};\nconst _hoisted_38 = {\n class: \"section-content\"\n};\nconst _hoisted_39 = {\n class: \"setting-item\"\n};\nconst _hoisted_40 = {\n class: \"setting-label\"\n};\nconst _hoisted_41 = {\n class: \"dialog-action\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_radio_button = _resolveComponent(\"el-radio-button\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_ChannelIcon = _resolveComponent(\"ChannelIcon\");\n const _component_el_radio = _resolveComponent(\"el-radio\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_slider = _resolveComponent(\"el-slider\");\n const _component_el_input_number = _resolveComponent(\"el-input-number\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: _ctx.$t('uploadSettings.title'),\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $event => $options.visible = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog settings-dialog-scope upload-settings-dialog\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"span\", _hoisted_3, _toDisplayString(_ctx.$t('uploadSettings.uploadChannel')), 1)]), _createElementVNode(\"div\", _hoisted_4, [_createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"div\", _hoisted_6, [_createElementVNode(\"span\", _hoisted_7, _toDisplayString(_ctx.$t('uploadSettings.channelType')), 1), _createVNode(_component_el_radio_group, {\n modelValue: $data.channelVisibility,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.channelVisibility = $event),\n size: \"small\",\n class: \"channel-visibility-filter\",\n onChange: $options.handleChannelVisibilityChange\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio_button, {\n label: \"all\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.allChannels')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio_button, {\n label: \"configured\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.configuredChannelsOnly')), 1)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\", \"onChange\"])]), _createVNode(_component_el_radio_group, {\n \"model-value\": $props.uploadChannel,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => _ctx.$emit('update:uploadChannel', $event)),\n class: \"radio-card-group compact\"\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.visibleChannelOptions, channel => {\n return _openBlock(), _createBlock(_component_el_radio, {\n key: channel.value,\n label: channel.value,\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_ChannelIcon, {\n type: channel.value,\n class: \"channel-icon\"\n }, null, 8, [\"type\"]), _createElementVNode(\"span\", null, _toDisplayString(channel.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"model-value\"]), $data.channelVisibility === 'configured' && $options.visibleChannelOptions.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, _toDisplayString(_ctx.$t('uploadSettings.noConfiguredChannels')), 1)) : _createCommentVNode(\"\", true)]), $props.currentChannelList.length > 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createElementVNode(\"span\", _hoisted_10, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.channelName')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.channelNameTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_select, {\n \"model-value\": $props.channelName,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => _ctx.$emit('update:channelName', $event)),\n placeholder: _ctx.$t('uploadSettings.autoSelect'),\n clearable: \"\",\n class: \"setting-input\"\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.currentChannelList, ch => {\n return _openBlock(), _createBlock(_component_el_option, {\n key: ch.name,\n label: ch.name,\n value: ch.name\n }, null, 8, [\"label\", \"value\"]);\n }), 128))]),\n _: 1\n }, 8, [\"model-value\", \"placeholder\"])])) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"span\", _hoisted_12, _toDisplayString(_ctx.$t('uploadSettings.uploadDirectory')), 1), _createVNode(_component_el_input, {\n \"model-value\": $props.uploadFolder,\n \"onUpdate:modelValue\": $options.handleUploadFolderInput,\n placeholder: _ctx.$t('uploadSettings.uploadDirectoryPlaceholder'),\n class: \"setting-input\"\n }, null, 8, [\"model-value\", \"onUpdate:modelValue\", \"placeholder\"])]), _createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"span\", _hoisted_14, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.autoSwitch')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.autoSwitchTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_switch, {\n \"model-value\": $props.autoRetry,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => _ctx.$emit('update:autoRetry', $event))\n }, null, 8, [\"model-value\"])])])]), _createElementVNode(\"div\", _hoisted_15, [_createElementVNode(\"div\", _hoisted_16, [_createElementVNode(\"span\", _hoisted_17, _toDisplayString(_ctx.$t('uploadSettings.fileNaming')), 1)]), _createElementVNode(\"div\", _hoisted_18, [_createVNode(_component_el_radio_group, {\n \"model-value\": $props.uploadNameType,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => _ctx.$emit('update:uploadNameType', $event)),\n class: \"radio-card-group grid-2x2\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio, {\n label: \"default\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cog\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadSettings.namingDefault')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"index\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"hashtag\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadSettings.namingIndex')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"origin\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"file-signature\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadSettings.namingOrigin')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"short\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"compress-alt\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadSettings.namingShort')), 1)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"model-value\"])])]), _createElementVNode(\"div\", _hoisted_19, [_createElementVNode(\"div\", _hoisted_20, [_createElementVNode(\"span\", _hoisted_21, _toDisplayString(_ctx.$t('uploadSettings.filePreprocess')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.filePreprocessTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_22, [_createElementVNode(\"div\", _hoisted_23, [_createElementVNode(\"span\", _hoisted_24, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.convertToWebp')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.convertToWebpTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_switch, {\n \"model-value\": $props.convertToWebp,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => _ctx.$emit('update:convertToWebp', $event))\n }, null, 8, [\"model-value\"])]), _createElementVNode(\"div\", _hoisted_25, [_createElementVNode(\"span\", _hoisted_26, _toDisplayString(_ctx.$t('uploadSettings.fileCompress')), 1), _createVNode(_component_el_switch, {\n \"model-value\": $props.customerCompress,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => _ctx.$emit('update:customerCompress', $event))\n }, null, 8, [\"model-value\"])]), $props.customerCompress ? (_openBlock(), _createElementBlock(\"div\", _hoisted_27, [_createElementVNode(\"span\", _hoisted_28, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.compressThreshold')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.compressThresholdTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_29, [_createVNode(_component_el_slider, {\n \"model-value\": $props.compressBar,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = $event => _ctx.$emit('update:compressBar', $event)),\n min: 1,\n max: 20,\n \"format-tooltip\": value => `${value} MB`\n }, null, 8, [\"model-value\", \"format-tooltip\"]), _createElementVNode(\"div\", _hoisted_30, [_createVNode(_component_el_input_number, {\n \"model-value\": $props.compressBar,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => _ctx.$emit('update:compressBar', $event)),\n min: 1,\n max: 20,\n step: 1,\n \"value-on-clear\": 1,\n class: \"slider-input\",\n \"controls-position\": \"right\"\n }, null, 8, [\"model-value\"]), _cache[14] || (_cache[14] = _createElementVNode(\"span\", {\n class: \"slider-unit\"\n }, \"MB\", -1))])])])) : _createCommentVNode(\"\", true), $props.customerCompress ? (_openBlock(), _createElementBlock(\"div\", _hoisted_31, [_createElementVNode(\"span\", _hoisted_32, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.expectedSize')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.expectedSizeTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_33, [_createVNode(_component_el_slider, {\n \"model-value\": $props.compressQuality,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = $event => _ctx.$emit('update:compressQuality', $event)),\n min: 0.5,\n max: $props.compressBar,\n step: 0.1,\n \"format-tooltip\": value => `${value} MB`\n }, null, 8, [\"model-value\", \"max\", \"format-tooltip\"]), _createElementVNode(\"div\", _hoisted_34, [_createVNode(_component_el_input_number, {\n \"model-value\": $props.compressQuality,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => _ctx.$emit('update:compressQuality', $event)),\n min: 0.5,\n max: $props.compressBar,\n step: 0.1,\n precision: 1,\n \"value-on-clear\": 0.5,\n class: \"slider-input\",\n \"controls-position\": \"right\"\n }, null, 8, [\"model-value\", \"max\"]), _cache[15] || (_cache[15] = _createElementVNode(\"span\", {\n class: \"slider-unit\"\n }, \"MB\", -1))])])])) : _createCommentVNode(\"\", true)])]), $props.uploadChannel === 'telegram' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_35, [_createElementVNode(\"div\", _hoisted_36, [_createElementVNode(\"span\", _hoisted_37, _toDisplayString(_ctx.$t('uploadSettings.serverCompress')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.serverCompressTooltip'),\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_38, [_createElementVNode(\"div\", _hoisted_39, [_createElementVNode(\"span\", _hoisted_40, _toDisplayString(_ctx.$t('uploadSettings.enableCompress')), 1), _createVNode(_component_el_switch, {\n \"model-value\": $props.serverCompress,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => _ctx.$emit('update:serverCompress', $event))\n }, null, 8, [\"model-value\"])])])])) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_41, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[12] || (_cache[12] = $event => $options.visible = false),\n class: \"confirm-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.confirm')), 1)]),\n _: 1\n })])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]);\n}","import ChannelIcon from '@/components/icons/ChannelIcon.vue';\nconst CHANNEL_OPTIONS = [{\n value: 'telegram',\n label: 'TG'\n}, {\n value: 'cfr2',\n label: 'R2'\n}, {\n value: 's3',\n label: 'S3'\n}, {\n value: 'discord',\n label: 'DC'\n}, {\n value: 'huggingface',\n label: 'HF'\n}, {\n value: 'webdav',\n label: 'WD'\n}];\nexport default {\n name: 'UploadSettingsDialog',\n components: {\n ChannelIcon\n },\n data() {\n return {\n channelVisibility: 'configured'\n };\n },\n methods: {\n hasConfiguredChannels(channelType) {\n const channels = this.availableChannels[channelType];\n return Array.isArray(channels) && channels.length > 0;\n },\n handleChannelVisibilityChange(visibility) {\n if (visibility !== 'configured') {\n return;\n }\n this.ensureConfiguredChannelSelected();\n },\n ensureConfiguredChannelSelected() {\n if (this.channelVisibility !== 'configured' || this.hasConfiguredChannels(this.uploadChannel)) {\n return;\n }\n const firstConfiguredChannel = this.visibleChannelOptions[0];\n if (firstConfiguredChannel) {\n this.$emit('update:uploadChannel', firstConfiguredChannel.value);\n }\n },\n handleUploadFolderInput(val) {\n // 自动补全前导 /\n if (val && !val.startsWith('/')) {\n val = '/' + val;\n }\n this.$emit('update:uploadFolder', val);\n }\n },\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n uploadChannel: {\n type: String,\n default: 'telegram'\n },\n channelName: {\n type: String,\n default: ''\n },\n availableChannels: {\n type: Object,\n default: () => ({})\n },\n currentChannelList: {\n type: Array,\n default: () => []\n },\n uploadFolder: {\n type: String,\n default: ''\n },\n autoRetry: {\n type: Boolean,\n default: true\n },\n uploadNameType: {\n type: String,\n default: 'default'\n },\n convertToWebp: {\n type: Boolean,\n default: false\n },\n customerCompress: {\n type: Boolean,\n default: true\n },\n compressBar: {\n type: Number,\n default: 5\n },\n compressQuality: {\n type: Number,\n default: 4\n },\n serverCompress: {\n type: Boolean,\n default: true\n }\n },\n emits: ['update:modelValue', 'update:uploadChannel', 'update:channelName', 'update:uploadFolder', 'update:autoRetry', 'update:uploadNameType', 'update:convertToWebp', 'update:customerCompress', 'update:compressBar', 'update:compressQuality', 'update:serverCompress'],\n watch: {\n availableChannels: {\n handler() {\n this.ensureConfiguredChannelSelected();\n },\n deep: true\n }\n },\n computed: {\n visible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n visibleChannelOptions() {\n if (this.channelVisibility === 'all') {\n return CHANNEL_OPTIONS;\n }\n return CHANNEL_OPTIONS.filter(channel => this.hasConfiguredChannels(channel.value));\n },\n dialogWidth() {\n return window.innerWidth > 768 ? '50%' : '90%';\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadSettingsDialog.vue?vue&type=template&id=25aa00bd&scoped=true\"\nimport script from \"./UploadSettingsDialog.vue?vue&type=script&lang=js\"\nexport * from \"./UploadSettingsDialog.vue?vue&type=script&lang=js\"\n\nimport \"@/styles/settings-dialog.css?vue&type=style&index=0&lang=css&external\"\nimport \"./UploadSettingsDialog.vue?vue&type=style&index=1&id=25aa00bd&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-25aa00bd\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, withCtx as _withCtx } from \"vue\";\nconst _hoisted_1 = {\n class: \"upload-list-item\"\n};\nconst _hoisted_2 = [\"href\"];\nconst _hoisted_3 = {\n key: 0,\n style: {\n \"width\": \"10vw\",\n \"border-radius\": \"12px\"\n },\n autoplay: \"\",\n muted: \"\",\n playsinline: \"\",\n loop: \"\"\n};\nconst _hoisted_4 = [\"src\"];\nconst _hoisted_5 = [\"src\"];\nconst _hoisted_6 = {\n key: 2,\n style: {\n \"width\": \"10vw\",\n \"border-radius\": \"12px\"\n }\n};\nconst _hoisted_7 = {\n class: \"upload-list-item-content\"\n};\nconst _hoisted_8 = {\n class: \"upload-list-item-name-wrapper\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"upload-list-item-url\"\n};\nconst _hoisted_10 = {\n class: \"upload-list-item-url-row\"\n};\nconst _hoisted_11 = {\n class: \"upload-list-item-url-row\"\n};\nconst _hoisted_12 = {\n key: 1,\n class: \"upload-list-item-progress\"\n};\nconst _hoisted_13 = {\n class: \"upload-list-item-action\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_text = _resolveComponent(\"el-text\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_progress = _resolveComponent(\"el-progress\");\n const _component_Link = _resolveComponent(\"Link\");\n const _component_el_icon = _resolveComponent(\"el-icon\");\n const _component_Delete = _resolveComponent(\"Delete\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"a\", {\n href: $props.file.url,\n target: \"_blank\",\n class: \"upload-list-item-preview\"\n }, [$options.isVideo($props.file.name) ? (_openBlock(), _createElementBlock(\"video\", _hoisted_3, [_createElementVNode(\"source\", {\n src: $props.file.url,\n type: \"video/mp4\"\n }, null, 8, _hoisted_4), _cache[7] || (_cache[7] = _createTextVNode(\" Your browser does not support the video tag. \", -1))])) : $options.isImage($props.file.name) ? (_openBlock(), _createElementBlock(\"img\", {\n key: 1,\n style: {\n \"width\": \"10vw\",\n \"border-radius\": \"12px\"\n },\n src: $props.file.url,\n onError: _cache[0] || (_cache[0] = $event => _ctx.$emit('preview-error', $props.file))\n }, null, 40, _hoisted_5)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\",\n class: \"file-icon\"\n })]))], 8, _hoisted_2), _createElementVNode(\"div\", _hoisted_7, [_createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_el_text, {\n class: \"upload-list-item-name\",\n truncated: \"\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.truncateFilename($props.file.name)), 1)]),\n _: 1\n })]), $props.file.status === 'done' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createElementVNode(\"div\", _hoisted_10, [_createVNode(_component_el_input, {\n modelValue: $props.file.finalURL,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $props.file.finalURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[8] || (_cache[8] = [_createTextVNode(\"URL\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"]), _createVNode(_component_el_input, {\n modelValue: $props.file.mdURL,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $props.file.mdURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[9] || (_cache[9] = [_createTextVNode(\"MarkDown\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"])]), _createElementVNode(\"div\", _hoisted_11, [_createVNode(_component_el_input, {\n modelValue: $props.file.htmlURL,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $props.file.htmlURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[10] || (_cache[10] = [_createTextVNode(\"HTML\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"]), _createVNode(_component_el_input, {\n modelValue: $props.file.ubbURL,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $props.file.ubbURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[11] || (_cache[11] = [_createTextVNode(\"BBCode\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"])])])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [_createVNode(_component_el_progress, {\n percentage: $props.file.progreess,\n status: $props.file.status,\n \"show-text\": false\n }, null, 8, [\"percentage\", \"status\"])]))]), _createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"button\", {\n class: \"modern-file-action-btn modern-file-action-btn-primary\",\n onClick: _cache[5] || (_cache[5] = $event => _ctx.$emit('copy', $props.file))\n }, [_createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Link)]),\n _: 1\n })]), _createElementVNode(\"button\", {\n class: \"modern-file-action-btn modern-file-action-btn-danger\",\n onClick: _cache[6] || (_cache[6] = $event => _ctx.$emit('remove', $props.file))\n }, [_createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Delete)]),\n _: 1\n })])])]);\n}","import { Link, Delete } from '@element-plus/icons-vue';\nconst IMAGE_EXTENSIONS = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'tiff', 'ico', 'avif', 'heic', 'jfif', 'pjpeg', 'pjp', 'raw', 'cr2', 'nef', 'dng', 'eps', 'ai', 'emf', 'wmf'];\nconst VIDEO_EXTENSIONS = ['mp4', 'webm', 'ogg', 'mkv'];\nexport default {\n name: 'UploadFileItem',\n components: {\n Link,\n Delete\n },\n props: {\n file: {\n type: Object,\n required: true\n }\n },\n emits: ['copy', 'remove', 'preview-error'],\n computed: {\n urlSize() {\n return window.innerWidth < 768 ? 'small' : 'default';\n }\n },\n methods: {\n isImage(fileName) {\n const ext = fileName.split('.').pop().toLowerCase();\n return IMAGE_EXTENSIONS.includes(ext);\n },\n isVideo(fileName) {\n const ext = fileName.split('.').pop().toLowerCase();\n return VIDEO_EXTENSIONS.includes(ext);\n },\n truncateFilename(filename, maxLength = 20) {\n if (!filename || filename.length <= maxLength) return filename;\n const lastDotIndex = filename.lastIndexOf('.');\n let name, ext;\n if (lastDotIndex > 0) {\n name = filename.substring(0, lastDotIndex);\n ext = filename.substring(lastDotIndex);\n } else {\n name = filename;\n ext = '';\n }\n const keepEnd = ext.length + 4;\n const keepStart = maxLength - keepEnd - 3;\n if (keepStart <= 0) return filename.substring(0, maxLength - 3) + '...';\n return name.substring(0, keepStart) + '...' + name.slice(-4) + ext;\n },\n selectAllText(event) {\n navigator.clipboard.writeText(event.target.value).then(() => {\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.copySuccess')\n });\n }).catch(() => {\n this.$message({\n type: 'error',\n message: this.$t('uploadForm.copyFailed')\n });\n });\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadFileItem.vue?vue&type=template&id=4a46527b&scoped=true\"\nimport script from \"./UploadFileItem.vue?vue&type=script&lang=js\"\nexport * from \"./UploadFileItem.vue?vue&type=script&lang=js\"\n\nimport \"./UploadFileItem.vue?vue&type=style&index=0&id=4a46527b&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4a46527b\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, normalizeClass as _normalizeClass, withCtx as _withCtx, createVNode as _createVNode, withModifiers as _withModifiers, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment } from \"vue\";\nconst _hoisted_1 = {\n class: \"upload-form\"\n};\nconst _hoisted_2 = {\n ref: \"clipboardPasteReceiver\",\n class: \"clipboard-paste-receiver\",\n tabindex: \"-1\",\n \"aria-hidden\": \"true\"\n};\nconst _hoisted_3 = {\n class: \"upload-card-glow\",\n ref: \"uploadCardGlow\"\n};\nconst _hoisted_4 = {\n class: \"upload-prompt-row\"\n};\nconst _hoisted_5 = [\"innerHTML\"];\nconst _hoisted_6 = [\"aria-label\"];\nconst _hoisted_7 = {\n key: 0,\n class: \"upload-card\"\n};\nconst _hoisted_8 = {\n class: \"paste-card-actions\"\n};\nconst _hoisted_9 = [\"aria-label\"];\nconst _hoisted_10 = [\"aria-pressed\"];\nconst _hoisted_11 = [\"aria-pressed\"];\nconst _hoisted_12 = {\n class: \"upload-list-container\"\n};\nconst _hoisted_13 = {\n class: \"upload-list-dashboard-action\"\n};\nconst _hoisted_14 = {\n class: \"modern-action-group\"\n};\nconst _hoisted_15 = {\n class: \"modern-dropdown-item-content\"\n};\nconst _hoisted_16 = {\n class: \"modern-action-btn modern-action-btn-danger\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_icon = _resolveComponent(\"el-icon\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_upload = _resolveComponent(\"el-upload\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_card = _resolveComponent(\"el-card\");\n const _component_List = _resolveComponent(\"List\");\n const _component_Checked = _resolveComponent(\"Checked\");\n const _component_Failed = _resolveComponent(\"Failed\");\n const _component_el_text = _resolveComponent(\"el-text\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_dropdown_item = _resolveComponent(\"el-dropdown-item\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n const _component_UploadFileItem = _resolveComponent(\"UploadFileItem\");\n const _component_el_scrollbar = _resolveComponent(\"el-scrollbar\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"textarea\", _hoisted_2, null, 512), _createElementVNode(\"div\", {\n class: \"upload-card-wrapper\",\n onMousemove: _cache[2] || (_cache[2] = (...args) => $options.handleUploadCardMouseMove && $options.handleUploadCardMouseMove(...args)),\n onMouseleave: _cache[3] || (_cache[3] = (...args) => $options.handleUploadCardMouseLeave && $options.handleUploadCardMouseLeave(...args)),\n onDropCapture: _cache[4] || (_cache[4] = _withModifiers((...args) => $options.handleDrop && $options.handleDrop(...args), [\"stop\", \"prevent\"]))\n }, [_createElementVNode(\"div\", _hoisted_3, null, 512), $props.uploadMethod === 'default' ? (_openBlock(), _createBlock(_component_el_upload, {\n key: 0,\n class: _normalizeClass([\"upload-card\", {\n 'is-uploading': $data.uploading,\n 'upload-card-busy': $data.fileList.length\n }]),\n drag: \"\",\n multiple: \"\",\n \"http-request\": $options.uploadFile,\n onSuccess: $options.handleSuccess,\n \"on-error\": $options.handleError,\n \"before-upload\": $options.beforeUpload,\n \"on-progress\": $options.handleProgress,\n \"file-list\": $data.fileList,\n \"show-file-list\": false\n }, {\n default: _withCtx(() => [_createVNode(_component_el_icon, {\n class: _normalizeClass([\"el-icon--upload\", {\n 'upload-list-busy': $data.fileList.length\n }])\n }, {\n default: _withCtx(() => [...(_cache[12] || (_cache[12] = [_createElementVNode(\"svg\", {\n class: \"upload-plus-icon\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n \"stroke-width\": \"1.25\",\n \"stroke-linecap\": \"round\",\n \"aria-hidden\": \"true\"\n }, [_createElementVNode(\"path\", {\n d: \"M12 7v10\"\n }), _createElementVNode(\"path\", {\n d: \"M7 12h10\"\n })], -1)]))]),\n _: 1\n }, 8, [\"class\"]), _createElementVNode(\"div\", _hoisted_4, [_createElementVNode(\"div\", {\n class: _normalizeClass([\"el-upload__text\", {\n 'upload-list-busy': $data.fileList.length\n }]),\n innerHTML: _ctx.$t('upload.dragUploadText', {\n pasteShortcut: $options.pasteShortcut\n })\n }, null, 10, _hoisted_5), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.selectFolderUpload'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n type: \"button\",\n class: _normalizeClass([\"folder-upload-icon-button\", {\n 'upload-list-busy': $data.fileList.length\n }]),\n \"aria-label\": _ctx.$t('upload.selectFolderUpload'),\n onClick: _cache[0] || (_cache[0] = _withModifiers((...args) => $options.openFolderPicker && $options.openFolderPicker(...args), [\"stop\", \"prevent\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\"\n })], 10, _hoisted_6)]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])]),\n _: 1\n }, 8, [\"class\", \"http-request\", \"onSuccess\", \"on-error\", \"before-upload\", \"on-progress\", \"file-list\"])) : _createCommentVNode(\"\", true), _createElementVNode(\"input\", {\n ref: \"folderInput\",\n class: \"folder-upload-input\",\n type: \"file\",\n webkitdirectory: \"\",\n directory: \"\",\n multiple: \"\",\n onChange: _cache[1] || (_cache[1] = (...args) => $options.handleFolderSelection && $options.handleFolderSelection(...args))\n }, null, 544)], 32), $props.uploadMethod === 'paste' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [_createVNode(_component_el_card, {\n class: _normalizeClass([\"paste-card\", {\n 'is-uploading': $data.uploading,\n 'upload-card-busy': $data.fileList.length\n }])\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.pastedUrls,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $data.pastedUrls = $event),\n class: \"upload-card-textarea\",\n placeholder: _ctx.$t('upload.pasteUrlPlaceholder'),\n type: \"textarea\",\n rows: $data.fileList.length ? 4 : 14\n }, null, 8, [\"modelValue\", \"placeholder\", \"rows\"]), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_el_button, {\n class: \"paste-card-upload-button\",\n type: \"primary\",\n size: $options.pasteCardMethodButtonSize,\n onClick: $options.handleUploadPasteUrls\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.pasteUploadBtn')), 1)]),\n _: 1\n }, 8, [\"size\", \"onClick\"]), _createElementVNode(\"div\", {\n class: _normalizeClass([\"paste-card-method-group\", {\n 'is-external': $data.pasteUploadMethod === 'external'\n }]),\n role: \"group\",\n \"aria-label\": _ctx.$t('upload.switchUploadMethod')\n }, [_createElementVNode(\"button\", {\n class: _normalizeClass([\"paste-card-method-button\", {\n 'is-active': $data.pasteUploadMethod === 'save'\n }]),\n type: \"button\",\n \"aria-pressed\": $data.pasteUploadMethod === 'save',\n onClick: _cache[6] || (_cache[6] = $event => $data.pasteUploadMethod = 'save')\n }, _toDisplayString(_ctx.$t('upload.pasteSave')), 11, _hoisted_10), _createElementVNode(\"button\", {\n class: _normalizeClass([\"paste-card-method-button\", {\n 'is-active': $data.pasteUploadMethod === 'external'\n }]),\n type: \"button\",\n \"aria-pressed\": $data.pasteUploadMethod === 'external',\n onClick: _cache[7] || (_cache[7] = $event => $data.pasteUploadMethod = 'external')\n }, _toDisplayString(_ctx.$t('upload.pasteExternal')), 11, _hoisted_11)], 10, _hoisted_9)])]),\n _: 1\n }, 8, [\"class\"])])) : _createCommentVNode(\"\", true), _createVNode(_component_el_card, {\n class: _normalizeClass([\"upload-list-card\", {\n 'upload-list-busy': $data.fileList.length\n }])\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_12, [_createVNode(_component_el_scrollbar, {\n onScroll: $options.handleScroll,\n ref: \"scrollContainer\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-list-dashboard\", {\n 'list-scrolled': $data.listScrolled\n }])\n }, [_createVNode(_component_el_text, {\n class: \"upload-list-dashboard-title\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_List)]),\n _: 1\n }), _createTextVNode(_toDisplayString($options.uploadingCount + $options.waitingCount) + \" \", 1), _createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Checked)]),\n _: 1\n }), _createTextVNode(_toDisplayString($options.uploadSuccessCount) + \" \", 1), _createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Failed)]),\n _: 1\n }), _createTextVNode(_toDisplayString($options.uploadErrorCount), 1)]),\n _: 1\n }), _createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"div\", _hoisted_14, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.copyAll'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"modern-action-btn modern-action-btn-copy\",\n onClick: _cache[8] || (_cache[8] = (...args) => $options.copyAll && $options.copyAll(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.retryFailed'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown, null, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, {\n class: \"modern-dropdown-menu\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, null, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_15, [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadForm.autoRetry')), 1), _createVNode(_component_el_switch, {\n modelValue: $data.autoReUpload,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $data.autoReUpload = $event),\n onChange: $options.handleAutoRetryChange,\n size: \"small\"\n }, null, 8, [\"modelValue\", \"onChange\"])])]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"modern-action-btn modern-action-btn-retry\",\n onClick: _cache[9] || (_cache[9] = (...args) => $options.retryError && $options.retryError(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n })])]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.clearList'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown, null, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, {\n class: \"modern-dropdown-menu\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n onClick: $options.clearFileList\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.clearAll')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_dropdown_item, {\n onClick: $options.clearSuccessList\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.clearUploaded')), 1)]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"button\", _hoisted_16, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })])]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])])], 2), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.fileList.slice().reverse(), file => {\n return _openBlock(), _createBlock(_component_UploadFileItem, {\n key: file.uid,\n file: file,\n onCopy: $options.handleCopy,\n onRemove: $options.handleRemove,\n onPreviewError: _cache[11] || (_cache[11] = f => f.url = require('@/assets/404.png'))\n }, null, 8, [\"file\", \"onCopy\", \"onRemove\"]);\n }), 128))]),\n _: 1\n }, 8, [\"onScroll\"])])]),\n _: 1\n }, 8, [\"class\"])]);\n}","/**\r\n * URL 构建工具函数\r\n * 用于生成各种格式的文件链接(原始链接、Markdown、HTML、BBCode)\r\n */\r\n\r\n/**\r\n * 根据 srcID 和文件名生成所有格式的 URL\r\n * @param {string} srcID - 文件资源 ID\r\n * @param {string} name - 文件名\r\n * @param {string} rootUrl - 链接前缀\r\n * @returns {{ finalURL: string, mdURL: string, htmlURL: string, ubbURL: string }}\r\n */\r\nexport function buildFileUrls(srcID, name, rootUrl) {\r\n const url = rootUrl + srcID\r\n return {\r\n finalURL: url,\r\n mdURL: `![${name}](${url})`,\r\n htmlURL: `\"${name}\"`,\r\n ubbURL: `[img]${url}[/img]`\r\n }\r\n}\r\n\r\n/**\r\n * 根据 selectedUrlForm 获取对应格式的 URL 值\r\n * @param {object} file - 文件对象,包含 finalURL/mdURL/htmlURL/ubbURL\r\n * @param {string} format - 格式类型:'url' | 'md' | 'html' | 'ubb'\r\n * @returns {string}\r\n */\r\nexport function getUrlByFormat(file, format) {\r\n const map = {\r\n url: file.finalURL,\r\n md: file.mdURL,\r\n html: file.htmlURL,\r\n ubb: file.ubbURL\r\n }\r\n return map[format] || file.finalURL\r\n}\r\n\r\n/**\r\n * 批量更新文件列表中的 URL(当自定义链接前缀变化时)\r\n * @param {Array} fileList - 文件列表\r\n * @param {string} rootUrl - 新的链接前缀\r\n */\r\nexport function updateFileListUrls(fileList, rootUrl) {\r\n fileList.forEach(item => {\r\n if (item.uploadChannel === 'external') {\r\n return\r\n }\r\n const urls = buildFileUrls(item.srcID, item.name, rootUrl)\r\n Object.assign(item, urls)\r\n })\r\n}\r\n","/**\r\n * SHA256 计算工具\r\n * 纯 JavaScript 实现的增量 SHA256 哈希算法,支持任意大小文件\r\n */\r\n\r\n// SHA256 常量\r\nconst K = new Uint32Array([\r\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\r\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\r\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\r\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\r\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\r\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\r\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\r\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\r\n])\r\n\r\nconst rotr = (x, n) => (x >>> n) | (x << (32 - n))\r\n\r\nfunction processBlock(block, H) {\r\n const W = new Uint32Array(64)\r\n\r\n for (let i = 0; i < 16; i++) {\r\n W[i] = (block[i * 4] << 24) | (block[i * 4 + 1] << 16) | (block[i * 4 + 2] << 8) | block[i * 4 + 3]\r\n }\r\n\r\n for (let i = 16; i < 64; i++) {\r\n const s0 = rotr(W[i - 15], 7) ^ rotr(W[i - 15], 18) ^ (W[i - 15] >>> 3)\r\n const s1 = rotr(W[i - 2], 17) ^ rotr(W[i - 2], 19) ^ (W[i - 2] >>> 10)\r\n W[i] = (W[i - 16] + s0 + W[i - 7] + s1) >>> 0\r\n }\r\n\r\n let [a, b, c, d, e, f, g, h] = H\r\n\r\n for (let i = 0; i < 64; i++) {\r\n const S1 = rotr(e, 6) ^ rotr(e, 11) ^ rotr(e, 25)\r\n const ch = (e & f) ^ (~e & g)\r\n const temp1 = (h + S1 + ch + K[i] + W[i]) >>> 0\r\n const S0 = rotr(a, 2) ^ rotr(a, 13) ^ rotr(a, 22)\r\n const maj = (a & b) ^ (a & c) ^ (b & c)\r\n const temp2 = (S0 + maj) >>> 0\r\n\r\n h = g; g = f; f = e\r\n e = (d + temp1) >>> 0\r\n d = c; c = b; b = a\r\n a = (temp1 + temp2) >>> 0\r\n }\r\n\r\n H[0] = (H[0] + a) >>> 0\r\n H[1] = (H[1] + b) >>> 0\r\n H[2] = (H[2] + c) >>> 0\r\n H[3] = (H[3] + d) >>> 0\r\n H[4] = (H[4] + e) >>> 0\r\n H[5] = (H[5] + f) >>> 0\r\n H[6] = (H[6] + g) >>> 0\r\n H[7] = (H[7] + h) >>> 0\r\n}\r\n\r\n/**\r\n * 创建增量 SHA256 哈希器\r\n * @returns {{ update: (data: Uint8Array) => void, digest: () => string }}\r\n */\r\nexport function createSha256() {\r\n let H = new Uint32Array([\r\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\r\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\r\n ])\r\n\r\n let buffer = new Uint8Array(64)\r\n let bufferLength = 0\r\n let totalLength = 0\r\n\r\n return {\r\n update(data) {\r\n totalLength += data.length\r\n let offset = 0\r\n\r\n if (bufferLength > 0) {\r\n const needed = 64 - bufferLength\r\n const toCopy = Math.min(needed, data.length)\r\n buffer.set(data.subarray(0, toCopy), bufferLength)\r\n bufferLength += toCopy\r\n offset = toCopy\r\n\r\n if (bufferLength === 64) {\r\n processBlock(buffer, H)\r\n bufferLength = 0\r\n }\r\n }\r\n\r\n while (offset + 64 <= data.length) {\r\n processBlock(data.subarray(offset, offset + 64), H)\r\n offset += 64\r\n }\r\n\r\n if (offset < data.length) {\r\n buffer.set(data.subarray(offset), 0)\r\n bufferLength = data.length - offset\r\n }\r\n },\r\n digest() {\r\n const bitLength = totalLength * 8\r\n\r\n // Padding\r\n buffer[bufferLength++] = 0x80\r\n\r\n if (bufferLength > 56) {\r\n buffer.fill(0, bufferLength, 64)\r\n processBlock(buffer, H)\r\n bufferLength = 0\r\n }\r\n\r\n buffer.fill(0, bufferLength, 56)\r\n\r\n // Length in bits (big-endian, 64-bit)\r\n const view = new DataView(buffer.buffer)\r\n view.setUint32(56, Math.floor(bitLength / 0x100000000), false)\r\n view.setUint32(60, bitLength >>> 0, false)\r\n\r\n processBlock(buffer, H)\r\n\r\n // Convert to hex\r\n let hex = ''\r\n for (let i = 0; i < 8; i++) {\r\n hex += H[i].toString(16).padStart(8, '0')\r\n }\r\n return hex\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * 计算文件的 SHA256 哈希\r\n * 使用增量哈希算法,支持任意大小文件\r\n * @param {File} file - 要计算哈希的文件\r\n * @returns {Promise} SHA256 哈希值(十六进制字符串)\r\n */\r\nexport async function computeSha256(file) {\r\n const sha256 = createSha256()\r\n\r\n const CHUNK_SIZE = 4 * 1024 * 1024 // 4MB chunks\r\n let offset = 0\r\n\r\n while (offset < file.size) {\r\n const chunk = file.slice(offset, Math.min(offset + CHUNK_SIZE, file.size))\r\n const buffer = await chunk.arrayBuffer()\r\n sha256.update(new Uint8Array(buffer))\r\n offset += CHUNK_SIZE\r\n\r\n // 每处理 20MB 打印一次进度\r\n if (offset % (20 * 1024 * 1024) < CHUNK_SIZE) {\r\n console.log(`SHA256 progress: ${Math.min(100, Math.round(offset / file.size * 100))}%`)\r\n }\r\n }\r\n\r\n return sha256.digest()\r\n}\r\n","function normalizePath(path = '') {\r\n return String(path)\r\n .replace(/\\\\/g, '/')\r\n .split('/')\r\n .filter(segment => segment && segment !== '.')\r\n .map(segment => segment === '..' ? '_' : segment)\r\n .join('/')\r\n}\r\n\r\nexport function getRelativeDirectory(relativePath = '') {\r\n const normalizedPath = normalizePath(relativePath)\r\n const lastSlashIndex = normalizedPath.lastIndexOf('/')\r\n return lastSlashIndex === -1 ? '' : normalizedPath.slice(0, lastSlashIndex)\r\n}\r\n\r\nexport function joinUploadFolder(baseFolder = '', relativeDirectory = '') {\r\n const hasLeadingSlash = /^[\\\\/]/.test(String(baseFolder).trim())\r\n const joinedPath = [normalizePath(baseFolder), normalizePath(relativeDirectory)]\r\n .filter(Boolean)\r\n .join('/')\r\n\r\n if (!joinedPath) return ''\r\n return hasLeadingSlash ? `/${joinedPath}` : joinedPath\r\n}\r\n\r\nexport function filesToUploadEntries(files = []) {\r\n return Array.from(files).map(file => ({\r\n file,\r\n relativePath: normalizePath(file.webkitRelativePath || file.relativePath || file.name)\r\n }))\r\n}\r\n\r\nfunction readFileEntry(entry) {\r\n return new Promise((resolve, reject) => entry.file(resolve, reject))\r\n}\r\n\r\nasync function readAllDirectoryEntries(directoryEntry) {\r\n const reader = directoryEntry.createReader()\r\n const entries = []\r\n\r\n // Chromium may return directory entries in batches (commonly 100 at a time).\r\n while (true) {\r\n const batch = await new Promise((resolve, reject) => reader.readEntries(resolve, reject))\r\n if (!batch.length) break\r\n entries.push(...batch)\r\n }\r\n\r\n return entries\r\n}\r\n\r\nasync function collectFromEntry(entry, parentPath, result) {\r\n const relativePath = normalizePath([parentPath, entry.name].filter(Boolean).join('/'))\r\n\r\n if (entry.isFile) {\r\n const file = await readFileEntry(entry)\r\n result.push({ file, relativePath })\r\n return\r\n }\r\n\r\n if (entry.isDirectory) {\r\n const children = await readAllDirectoryEntries(entry)\r\n for (const child of children) {\r\n await collectFromEntry(child, relativePath, result)\r\n }\r\n }\r\n}\r\n\r\nasync function collectFromHandle(handle, parentPath, result) {\r\n const relativePath = normalizePath([parentPath, handle.name].filter(Boolean).join('/'))\r\n\r\n if (handle.kind === 'file') {\r\n result.push({ file: await handle.getFile(), relativePath })\r\n return\r\n }\r\n\r\n if (handle.kind === 'directory') {\r\n for await (const child of handle.values()) {\r\n await collectFromHandle(child, relativePath, result)\r\n }\r\n }\r\n}\r\n\r\nexport async function collectFilesFromDataTransferItems(items = []) {\r\n const fileItems = Array.from(items).filter(item => item.kind === 'file')\r\n const result = []\r\n\r\n // Resolve handles while still in the drop/paste event call chain when possible.\r\n const handles = await Promise.all(fileItems.map(async item => {\r\n if (typeof item.getAsFileSystemHandle !== 'function') return null\r\n try {\r\n return await item.getAsFileSystemHandle()\r\n } catch {\r\n return null\r\n }\r\n }))\r\n\r\n for (let index = 0; index < fileItems.length; index++) {\r\n const item = fileItems[index]\r\n const handle = handles[index]\r\n\r\n if (handle) {\r\n await collectFromHandle(handle, '', result)\r\n continue\r\n }\r\n\r\n const entry = typeof item.webkitGetAsEntry === 'function' ? item.webkitGetAsEntry() : null\r\n if (entry) {\r\n await collectFromEntry(entry, '', result)\r\n continue\r\n }\r\n\r\n const file = item.getAsFile?.()\r\n if (file) result.push(...filesToUploadEntries([file]))\r\n }\r\n\r\n return result\r\n}\r\n","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.find.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport \"core-js/modules/es.iterator.reduce.js\";\nimport \"core-js/modules/es.typed-array.with.js\";\nimport \"core-js/modules/esnext.uint8-array.set-from-base64.js\";\nimport \"core-js/modules/esnext.uint8-array.set-from-hex.js\";\nimport \"core-js/modules/esnext.uint8-array.to-base64.js\";\nimport \"core-js/modules/esnext.uint8-array.to-hex.js\";\nimport \"core-js/modules/web.dom-exception.stack.js\";\nimport axios from '@/utils/axios';\nimport * as imageConversion from 'image-conversion';\nimport { mapGetters } from 'vuex';\nimport { buildFileUrls, updateFileListUrls, getUrlByFormat } from '@/utils/upload/urlBuilder';\nimport { computeSha256 } from '@/utils/upload/sha256';\nimport { collectFilesFromDataTransferItems, filesToUploadEntries, getRelativeDirectory, joinUploadFolder } from '@/utils/upload/directoryTraversal';\nimport UploadFileItem from '@/components/upload/UploadFileItem.vue';\nexport default {\n name: 'UploadForm',\n components: {\n UploadFileItem\n },\n props: {\n selectedUrlForm: {\n type: String,\n default: 'url',\n required: false\n },\n customerCompress: {\n type: Boolean,\n default: true,\n required: false\n },\n compressQuality: {\n type: Number,\n default: 4,\n required: false\n },\n compressBar: {\n type: Number,\n default: 5,\n required: false\n },\n serverCompress: {\n type: Boolean,\n default: true,\n required: false\n },\n uploadChannel: {\n type: String,\n default: 'telegram',\n required: false\n },\n channelName: {\n type: String,\n default: '',\n required: false\n },\n uploadNameType: {\n type: String,\n default: 'default',\n required: false\n },\n useCustomUrl: {\n type: String,\n default: 'false',\n required: false\n },\n customUrlPrefix: {\n type: String,\n default: '',\n required: false\n },\n autoRetry: {\n type: Boolean,\n default: true,\n required: false\n },\n urlPrefix: {\n type: String,\n default: '',\n required: false\n },\n uploadMethod: {\n type: String,\n default: 'default',\n required: false\n },\n uploadFolder: {\n type: String,\n default: '',\n required: false\n },\n convertToWebp: {\n type: Boolean,\n default: false,\n required: false\n }\n },\n data() {\n return {\n fileList: [],\n uploading: false,\n maxUploading: 6,\n exceptionList: [],\n listScrolled: false,\n fileListLength: 0,\n localUidCounter: 0,\n pastedUrls: '',\n pasteUploadMethod: 'save',\n // 失败文件自动重试相关\n autoReUpload: true,\n maxRetryCount: 10,\n // 最大重试次数\n retryTimer: null,\n // 自动重试定时器\n retryDelay: 12000,\n // 重试延迟时间(毫秒)\n // 批量上传并发控制\n uploadQueue: [],\n // 等待上传的文件队列\n activeUploads: 0,\n // 当前正在上传的文件数\n maxConcurrentUploads: 6,\n // 最大并发上传数\n // 取消上传控制\n abortControllers: new Map(),\n // 存储每个文件的 AbortController\n pasteFocusTarget: null\n };\n },\n watch: {\n fileList: {\n handler() {\n if (this.fileList.length > this.fileListLength) {\n this.$nextTick(() => {\n setTimeout(() => {\n if (this.$refs.scrollContainer) {\n // this.$refs.scrollContainer.setScrollTop(this.$refs.scrollContainer.wrapRef.scrollHeight) // 滚动到底部\n this.$refs.scrollContainer.setScrollTop(0); // 滚动到顶部\n }\n }, 100);\n });\n }\n this.fileListLength = this.fileList.length;\n },\n deep: true\n },\n useCustomUrl: {\n handler() {\n updateFileListUrls(this.fileList, this.rootUrl);\n },\n immediate: true\n },\n customUrlPrefix: {\n handler() {\n if (this.useCustomUrl === 'true') {\n updateFileListUrls(this.fileList, this.rootUrl);\n }\n },\n immediate: true\n },\n autoReUpload(val) {\n this.$store.commit('setStoreAutoReUpload', val);\n }\n },\n computed: {\n ...mapGetters(['storeAutoReUpload']),\n uploadSuccessCount() {\n return this.fileList.filter(item => item.status === 'done' || item.status === 'success').length;\n },\n uploadErrorCount() {\n return this.fileList.filter(item => item.status === 'exception').length;\n },\n uploadingCount() {\n return this.fileList.filter(item => item.status === 'uploading').length;\n },\n waitingCount() {\n return this.uploadQueue.length;\n },\n urlSize() {\n // 移动端为small\n return window.innerWidth < 768 ? 'small' : 'default';\n },\n disableTooltip() {\n return window.innerWidth < 768;\n },\n pasteShortcut() {\n const platform = navigator.userAgentData?.platform || navigator.platform || '';\n return /mac|iphone|ipad|ipod/i.test(platform) ? 'Cmd + V' : 'Ctrl + V';\n },\n rootUrl() {\n // 链接前缀,优先级:用户自定义 > urlPrefix > 默认\n return this.useCustomUrl === 'true' ? this.customUrlPrefix : this.urlPrefix || `${window.location.protocol}//${window.location.host}/file/`;\n },\n pasteCardMethodButtonSize() {\n if (this.fileList.length) {\n return 'small';\n } else {\n return window.innerWidth < 768 ? 'small' : 'medium';\n }\n }\n },\n mounted() {\n document.addEventListener('paste', this.handlePaste);\n document.addEventListener('keydown', this.handlePasteShortcut);\n this.autoReUpload = this.storeAutoReUpload;\n },\n beforeUnmount() {\n document.removeEventListener('paste', this.handlePaste);\n document.removeEventListener('keydown', this.handlePasteShortcut);\n // 清理状态\n this.uploadQueue = [];\n this.fileList = [];\n this.activeUploads = 0;\n },\n methods: {\n createLocalUid() {\n this.localUidCounter += 1;\n return `local-${Date.now()}-${this.localUidCounter}`;\n },\n applyUploadPath(file, relativePath = file.name) {\n const normalizedRelativePath = String(relativePath || file.name).replace(/\\\\/g, '/').replace(/^\\/+/, '');\n file.uploadRelativePath = normalizedRelativePath;\n file.uploadFolder = joinUploadFolder(this.uploadFolder, getRelativeDirectory(normalizedRelativePath));\n return file;\n },\n copyUploadPath(sourceFile, targetFile) {\n targetFile.uploadRelativePath = sourceFile.uploadRelativePath || sourceFile.name;\n targetFile.uploadFolder = sourceFile.uploadFolder ?? this.uploadFolder;\n return targetFile;\n },\n getFileUploadFolder(file) {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n return fileItem?.uploadFolder ?? file.file.uploadFolder ?? this.uploadFolder;\n },\n createUploadRequest(file) {\n return {\n file,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, uploadedFile) => this.handleSuccess(response, uploadedFile),\n onError: (error, uploadedFile) => this.handleError(error, uploadedFile)\n };\n },\n async uploadLocalEntries(entries) {\n await Promise.allSettled(entries.map(async ({\n file,\n relativePath\n }) => {\n file.uid = this.createLocalUid();\n this.applyUploadPath(file, relativePath);\n const processedFile = await this.beforeUpload(file);\n if (processedFile instanceof File) {\n this.uploadFile(this.createUploadRequest(processedFile));\n }\n }));\n },\n openFolderPicker() {\n this.$refs.folderInput?.click();\n },\n async handleFolderSelection(event) {\n const entries = filesToUploadEntries(event.target.files);\n event.target.value = '';\n await this.uploadLocalEntries(entries);\n },\n async handleDrop(event) {\n const dataTransfer = event.dataTransfer;\n if (!dataTransfer) return;\n const entries = dataTransfer.items?.length ? await collectFilesFromDataTransferItems(dataTransfer.items) : filesToUploadEntries(dataTransfer.files);\n if (entries.length) await this.uploadLocalEntries(entries);\n },\n // 文件名中间截断,保留前缀和扩展名\n truncateFilename(filename, maxLength = 20) {\n if (!filename || filename.length <= maxLength) {\n return filename;\n }\n const lastDotIndex = filename.lastIndexOf('.');\n let name, ext;\n if (lastDotIndex > 0) {\n name = filename.substring(0, lastDotIndex);\n ext = filename.substring(lastDotIndex);\n } else {\n name = filename;\n ext = '';\n }\n // 保留扩展名和部分前后缀\n const keepEnd = ext.length + 4; // 扩展名 + 4个字符\n const keepStart = maxLength - keepEnd - 3; // 3个字符留给...\n if (keepStart <= 0) {\n return filename.substring(0, maxLength - 3) + '...';\n }\n return name.substring(0, keepStart) + '...' + name.slice(-4) + ext;\n },\n uploadFile(file) {\n // 如果fileList中不存在该文件,说明已被删除,直接返回\n if (!this.fileList.find(item => item.uid === file.file.uid)) {\n return;\n }\n\n // 并发控制:如果当前上传数已达上限,加入队列等待\n if (this.activeUploads >= this.maxConcurrentUploads) {\n this.uploadQueue.push(file);\n const waitingItem = this.fileList.find(item => item.uid === file.file.uid);\n if (waitingItem) waitingItem.status = 'waiting';\n return;\n }\n\n // 开始上传,增加计数\n this.activeUploads++;\n const uploadingItem = this.fileList.find(item => item.uid === file.file.uid);\n if (uploadingItem) uploadingItem.status = 'uploading';\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n const uploadChannel = fileItem?.uploadChannel || this.uploadChannel;\n\n // 如果上传渠道为外链,直接使用外链上传\n if (uploadChannel === 'external') {\n this.uploadSingleFile(file);\n return;\n }\n\n // HuggingFace 渠道:根据文件大小选择上传方式\n // 小文件(<20MB):通过 CF Workers 代理上传\n // 大文件(>=20MB):前端直传到 HuggingFace S3,绕过 CF Workers 限制\n if (uploadChannel === 'huggingface') {\n const HF_DIRECT_THRESHOLD = 20 * 1024 * 1024; // 20MB\n if (file.file.size >= HF_DIRECT_THRESHOLD) {\n this.uploadToHuggingFaceDirect(file);\n } else {\n this.uploadSingleFile(file);\n }\n return;\n }\n\n // Discord 渠道:限制 10MB,超过 9MB 就用分块上传(留安全余量)\n if (uploadChannel === 'discord') {\n const DISCORD_CHUNK_THRESHOLD = 9 * 1024 * 1024; // 9MB\n if (file.file.size > DISCORD_CHUNK_THRESHOLD) {\n this.uploadFileInChunks(file);\n } else {\n this.uploadSingleFile(file);\n }\n return;\n }\n\n // 其他渠道,检查文件大小,决定是否使用分块上传\n const CHUNK_THRESHOLD = 20 * 1024 * 1024; // 20MB\n if (file.file.size > CHUNK_THRESHOLD) {\n this.uploadFileInChunks(file);\n } else {\n this.uploadSingleFile(file);\n }\n },\n // 处理上传队列中的下一个文件\n processUploadQueue() {\n // 如果队列为空或已达并发上限,不处理\n if (this.uploadQueue.length === 0 || this.activeUploads >= this.maxConcurrentUploads) {\n return;\n }\n\n // 从队列中取出下一个文件并上传\n const nextFile = this.uploadQueue.shift();\n if (nextFile && this.fileList.find(item => item.uid === nextFile.file.uid)) {\n this.uploadFile(nextFile);\n } else {\n // 如果文件已被删除,继续处理下一个\n this.processUploadQueue();\n }\n },\n // 上传完成后的清理工作(成功或失败都调用)\n onUploadComplete() {\n this.activeUploads = Math.max(0, this.activeUploads - 1);\n\n // 处理队列中的下一个文件\n this.processUploadQueue();\n\n // 更新上传状态\n if (this.activeUploads === 0 && this.uploadQueue.length === 0) {\n this.uploading = false;\n }\n },\n // 单文件上传\n async uploadSingleFile(file) {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (!fileItem) return; // 文件已被删除\n\n const needServerCompress = fileItem.serverCompress;\n const uploadChannel = fileItem.uploadChannel || this.uploadChannel;\n const autoRetry = this.autoRetry && uploadChannel !== 'external';\n const uploadNameType = uploadChannel === 'external' ? 'default' : this.uploadNameType;\n const targetUploadFolder = this.getFileUploadFolder(file);\n\n // 创建 AbortController 用于取消上传\n const abortController = new AbortController();\n this.abortControllers.set(file.file.uid, abortController);\n const formData = new FormData();\n formData.append('file', file.file);\n if (uploadChannel === 'external') {\n formData.append('url', file.file.url);\n }\n\n // HuggingFace 渠道:在前端预计算 SHA256,避免后端 CPU 超时\n if (uploadChannel === 'huggingface') {\n try {\n console.log('Computing SHA256 for HuggingFace upload...');\n const sha256 = await computeSha256(file.file);\n formData.append('sha256', sha256);\n console.log('SHA256 computed:', sha256);\n } catch (err) {\n console.error('Failed to compute SHA256:', err);\n // 继续上传,让后端计算(可能会超时)\n }\n }\n axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(targetUploadFolder),\n method: 'post',\n data: formData,\n withAuthCode: true,\n signal: abortController.signal,\n // 添加取消信号\n onUploadProgress: progressEvent => {\n const percentCompleted = Math.round(progressEvent.loaded / progressEvent.total * 100);\n file.onProgress({\n percent: percentCompleted,\n file: file.file\n });\n }\n }).then(res => {\n file.onSuccess(res, file.file);\n }).catch(err => {\n // 如果是取消操作,不加入异常列表\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED') {\n console.log('上传已取消:', file.file.name);\n return;\n }\n if (err.response && err.response.status !== 401) {\n this.exceptionList.push(file);\n file.onError(err, file.file);\n } else if (!err.response) {\n // 网络错误(如 ERR_HTTP2_PROTOCOL_ERROR),也加入异常列表\n this.exceptionList.push(file);\n file.onError(err, file.file);\n }\n }).finally(() => {\n // 清理 AbortController\n this.abortControllers.delete(file.file.uid);\n // 调用并发控制的完成回调\n this.onUploadComplete();\n });\n },\n // 分块上传\n async uploadFileInChunks(file) {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (!fileItem) return; // 文件已被删除\n\n const uploadChannel = fileItem.uploadChannel || this.uploadChannel;\n\n // 创建 AbortController 用于取消上传\n const abortController = new AbortController();\n this.abortControllers.set(file.file.uid, abortController);\n\n // Discord 使用 9MB 分块(留安全余量,Discord 限制 10MB)\n // Telegram 使用 16MB 分块(TG Bot getFile 下载限制 20MB,留 4MB 安全余量)\n // 其他渠道使用 16MB 分块\n const CHUNK_SIZE = uploadChannel === 'discord' ? 9 * 1024 * 1024 // 9MB for Discord\n : 16 * 1024 * 1024; // 16MB for Telegram and others (TG getFile limit: 20MB)\n\n const fileSize = file.file.size;\n const fileType = file.file.type || 'application/octet-stream';\n const totalChunks = Math.ceil(fileSize / CHUNK_SIZE);\n const needServerCompress = fileItem.serverCompress;\n const autoRetry = this.autoRetry && uploadChannel !== 'external';\n const uploadNameType = uploadChannel === 'external' ? 'default' : this.uploadNameType;\n const targetUploadFolder = this.getFileUploadFolder(file);\n\n // HuggingFace 渠道:在前端预计算 SHA256\n let precomputedSha256 = null;\n if (uploadChannel === 'huggingface') {\n try {\n console.log('Computing SHA256 for HuggingFace chunked upload...');\n precomputedSha256 = await computeSha256(file.file);\n console.log('SHA256 computed:', precomputedSha256);\n } catch (err) {\n console.error('Failed to compute SHA256:', err);\n }\n }\n try {\n // 第一步:初始化分块上传,获取uploadId\n const initFormData = new FormData();\n initFormData.append('originalFileName', file.file.name);\n initFormData.append('originalFileType', fileType);\n initFormData.append('totalChunks', totalChunks.toString());\n const initResponse = await axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(targetUploadFolder) + '&initChunked=true',\n method: 'post',\n data: initFormData,\n withAuthCode: true\n });\n if (!initResponse.data.success) {\n throw new Error(this.$t('uploadForm.chunkInitFailed') + ': ' + initResponse.data.message);\n }\n const uploadId = initResponse.data.uploadId;\n console.log('分块上传初始化成功,uploadId:', uploadId);\n\n // 记录 totalChunks 和 uploadId 到文件项,用于后续清理\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (fileItem) {\n fileItem.totalChunks = totalChunks;\n fileItem.uploadId = uploadId;\n }\n\n // 第二步:并发上传所有分块\n const maxConcurrency = 3; // 最大并发数\n const chunkProgress = new Array(totalChunks).fill(0);\n let nextChunkIndex = 0;\n let hasError = false;\n let errorMsg = '';\n let isCancelled = false; // 标记是否被取消\n\n const uploadChunk = async chunkIndex => {\n if (hasError || isCancelled) return;\n const start = chunkIndex * CHUNK_SIZE;\n const end = Math.min(start + CHUNK_SIZE, fileSize);\n const chunk = file.file.slice(start, end);\n const formData = new FormData();\n formData.append('file', chunk, `${file.file.name}.part${chunkIndex.toString().padStart(3, '0')}`);\n formData.append('chunkIndex', chunkIndex.toString());\n formData.append('totalChunks', totalChunks.toString());\n formData.append('uploadId', uploadId);\n formData.append('originalFileName', file.file.name);\n formData.append('originalFileType', fileType);\n let retryCount = 0;\n const maxRetries = 3;\n while (retryCount < maxRetries) {\n if (hasError || isCancelled) return;\n try {\n await axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(targetUploadFolder) + '&chunked=true',\n method: 'post',\n data: formData,\n withAuthCode: true,\n signal: abortController.signal,\n // 添加取消信号\n onUploadProgress: progressEvent => {\n if (hasError || isCancelled) return;\n const percent = Math.round(progressEvent.loaded / progressEvent.total * 100);\n chunkProgress[chunkIndex] = percent;\n const totalPercent = Math.round(chunkProgress.reduce((a, b) => a + b, 0) / totalChunks);\n file.onProgress({\n percent: totalPercent,\n file: file.file\n });\n }\n });\n return; // Success\n } catch (err) {\n // 如果是取消操作,直接返回\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED') {\n isCancelled = true;\n console.log('分块上传已取消:', file.file.name);\n return;\n }\n retryCount++;\n console.warn(`分块 ${chunkIndex + 1}/${totalChunks} 上传失败 (重试 ${retryCount}/${maxRetries}):`, err);\n if (retryCount >= maxRetries) {\n hasError = true;\n errorMsg = `分块 ${chunkIndex + 1}/${totalChunks} 上传失败: ${err.message}`;\n throw new Error(errorMsg);\n }\n // 等待后重试\n await new Promise(resolve => setTimeout(resolve, 2000 * retryCount));\n }\n }\n };\n\n // 创建并发池\n const pool = [];\n for (let i = 0; i < maxConcurrency; i++) {\n pool.push((async () => {\n while (nextChunkIndex < totalChunks && !hasError && !isCancelled) {\n const currentIndex = nextChunkIndex++;\n try {\n await uploadChunk(currentIndex);\n } catch (e) {\n if (!isCancelled) {\n hasError = true;\n errorMsg = e.message;\n }\n break;\n }\n }\n })());\n }\n await Promise.all(pool);\n\n // 如果被取消,直接返回\n if (isCancelled) {\n console.log('分块上传已取消,跳过合并步骤');\n return;\n }\n if (hasError) {\n throw new Error(errorMsg || this.$t('uploadForm.uploadError'));\n }\n\n // 第三步:所有分块上传完成,发送合并请求\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.chunkMerging'),\n duration: 0 // 不自动关闭\n });\n const mergeFormData = new FormData();\n mergeFormData.append('uploadId', uploadId);\n mergeFormData.append('totalChunks', totalChunks.toString());\n mergeFormData.append('originalFileName', file.file.name);\n mergeFormData.append('originalFileType', fileType);\n // HuggingFace 渠道:传递预计算的 SHA256\n if (precomputedSha256) {\n mergeFormData.append('sha256', precomputedSha256);\n }\n const response = await axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(targetUploadFolder) + '&chunked=true&merge=true',\n method: 'post',\n data: mergeFormData,\n withAuthCode: true\n });\n\n // 关闭提示\n this.$message.closeAll();\n\n // 同步处理完成\n file.onSuccess(response, file.file);\n } catch (err) {\n // 如果是取消操作,不加入异常列表\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED') {\n console.log('分块上传已取消:', file.file.name);\n return;\n }\n console.error('分块上传失败:', err);\n\n // 如果有uploadId,清理相关资源\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (fileItem && fileItem.uploadId) {\n this.cleanupUploadResources(fileItem.uploadId, fileItem.totalChunks).then(() => {\n console.log(`已清理分块上传失败的资源: ${fileItem.uploadId}`);\n }).catch(cleanupError => {\n console.warn('清理分块上传失败资源时出错:', cleanupError);\n });\n }\n if (err.response && err.response.status !== 401) {\n this.exceptionList.push(file);\n file.onError(err, file.file);\n } else if (!err.response) {\n // 网络错误,也加入异常列表\n this.exceptionList.push(file);\n file.onError(err, file.file);\n }\n } finally {\n // 清理 AbortController\n this.abortControllers.delete(file.file.uid);\n // 调用并发控制的完成回调\n this.onUploadComplete();\n }\n },\n handleRemove(file) {\n // 如果文件正在上传,取消上传\n if (this.abortControllers.has(file.uid)) {\n this.abortControllers.get(file.uid).abort();\n this.abortControllers.delete(file.uid);\n }\n // 从上传队列中移除(如果在等待中)\n this.uploadQueue = this.uploadQueue.filter(item => item.file.uid !== file.uid);\n // 从文件列表中移除\n this.fileList = this.fileList.filter(item => item.uid !== file.uid);\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.deleted', {\n name: this.truncateFilename(file.name)\n })\n });\n },\n // 清理上传资源\n async cleanupUploadResources(uploadId, totalChunks = 0) {\n try {\n await axios({\n url: `/upload?cleanup=true&uploadId=${uploadId}&totalChunks=${totalChunks}`,\n method: 'get',\n withAuthCode: true,\n timeout: 5000\n });\n console.log(`清理上传资源成功: ${uploadId}`);\n } catch (error) {\n console.warn('清理上传资源失败:', error);\n }\n },\n handleSuccess(response, file) {\n const fileItem = this.fileList.find(item => item.uid === file.uid);\n if (!fileItem) return; // 文件已被删除\n\n try {\n // 对上传渠道为外链的,不修改链接\n const uploadChannel = fileItem.uploadChannel || this.uploadChannel;\n if (uploadChannel !== 'external') {\n // 从response.data[0].src中去除/file/前缀\n const srcID = response.data[0].src.replace('/file/', '');\n fileItem.url = `${window.location.protocol}//${window.location.host}/file/` + srcID;\n const urls = buildFileUrls(srcID, file.name, this.rootUrl);\n Object.assign(fileItem, urls);\n fileItem.srcID = srcID;\n }\n fileItem.progreess = 100;\n fileItem.status = 'success';\n\n // Save to history\n this.saveToHistory(fileItem);\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.uploadSuccess', {\n name: this.truncateFilename(file.name)\n })\n });\n setTimeout(() => {\n const item = this.fileList.find(item => item.uid === file.uid);\n if (item) item.status = 'done';\n }, 1000);\n } catch (error) {\n this.$message.error(this.$t('uploadForm.uploadFailed', {\n name: this.truncateFilename(file.name)\n }));\n fileItem.status = 'exception';\n }\n // 注意:并发控制的 onUploadComplete 已在各上传方法的 finally 中调用\n },\n saveToHistory(fileItem) {\n try {\n const history = JSON.parse(localStorage.getItem('uploadHistory') || '[]');\n const newRecord = {\n name: fileItem.name,\n url: fileItem.finalURL,\n time: Date.now(),\n type: fileItem.name.split('.').pop().toLowerCase()\n };\n history.push(newRecord);\n localStorage.setItem('uploadHistory', JSON.stringify(history));\n } catch (e) {\n console.error('Failed to save history', e);\n }\n },\n handleError(err, file) {\n const fileItem = this.fileList.find(item => item.uid === file.uid);\n if (!fileItem) return; // 文件已被删除\n\n this.$message.error(this.$t('uploadForm.uploadFailed', {\n name: this.truncateFilename(file.name)\n }));\n fileItem.status = 'exception';\n\n // 如果开启了自动重试,安排自动重试\n if (this.autoReUpload) {\n this.scheduleAutoRetry();\n }\n // 注意:并发控制的 onUploadComplete 已在各上传方法的 finally 中调用\n },\n handleCopy(file) {\n const status = this.fileList.find(item => item.uid === file.uid).status;\n if (status !== 'done' && status !== 'success') {\n this.$message({\n type: 'warning',\n message: this.$t('uploadForm.fileNotUploaded')\n });\n return;\n }\n navigator.clipboard.writeText(getUrlByFormat(file, this.selectedUrlForm));\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.copySuccess')\n });\n },\n beforeUpload(file) {\n return new Promise(async (resolve, reject) => {\n let processedFile = file;\n\n // WebP 转换:在压缩之前进行\n // 条件:1.开启WebP转换 2.文件类型为图片 3.不是WebP/GIF/SVG格式\n const canConvertToWebp = this.convertToWebp && file.type.includes('image') && !file.type.includes('webp') && !file.type.includes('gif') && !file.type.includes('svg');\n if (canConvertToWebp) {\n try {\n const convertedFile = await this.convertImageToWebp(file);\n if (convertedFile) {\n processedFile = convertedFile;\n console.log(`WebP转换成功: ${file.name} -> ${convertedFile.name}, 大小: ${(file.size / 1024).toFixed(1)}KB -> ${(convertedFile.size / 1024).toFixed(1)}KB`);\n }\n } catch (err) {\n console.warn('WebP转换失败,使用原文件:', err);\n // 转换失败,继续使用原文件\n }\n }\n\n // 客户端压缩条件:1.文件类型为图片 2.开启客户端压缩,且文件大小大于压缩阈值\n const needCustomCompress = processedFile.type.includes('image') && this.customerCompress && processedFile.size / 1024 / 1024 > this.compressBar;\n const isLtLim = processedFile.size / 1024 / 1024 <= 1024 || this.uploadChannel !== 'telegram';\n const pushFileToQueue = (file, serverCompress) => {\n const fileUrl = URL.createObjectURL(file);\n this.fileList.push({\n uid: file.uid,\n name: file.uploadRelativePath || file.name,\n url: fileUrl,\n finalURL: '',\n mdURL: '',\n htmlURL: '',\n ubbURL: '',\n srcID: '',\n status: 'uploading',\n progreess: 0,\n serverCompress: serverCompress,\n uploadFolder: file.uploadFolder ?? this.uploadFolder,\n retryCount: 0\n });\n resolve(file);\n };\n if (needCustomCompress) {\n //尝试压缩图片\n imageConversion.compressAccurately(processedFile, 1024 * this.compressQuality).then(res => {\n //如果压缩后大于1024MB,且上传渠道为telegram,则不上传\n if (res.size / 1024 / 1024 > 1024 && this.uploadChannel === 'telegram') {\n this.$message.error(this.$t('uploadForm.compressedFileTooLarge', {\n name: processedFile.name\n }));\n reject(this.$t('uploadForm.fileSizeTooLarge'));\n }\n this.uploading = true;\n //将res包装成新的file\n const newFile = new File([res], processedFile.name, {\n type: res.type\n });\n newFile.uid = file.uid;\n this.copyUploadPath(processedFile, newFile);\n\n //开启服务端压缩条件:1.开启服务端压缩 2.文件大小小于10MB 3.上传渠道为Telegram\n const needServerCompress = this.serverCompress && newFile.size / 1024 / 1024 < 10 && this.uploadChannel === 'telegram';\n pushFileToQueue(newFile, needServerCompress);\n }).catch(err => {\n this.$message.error(this.$t('uploadForm.compressFailedCannotUpload', {\n name: processedFile.name\n }));\n reject(err);\n });\n } else if (isLtLim) {\n this.uploading = true;\n\n // 开启服务端压缩条件:1.上传渠道为Telegram 2.开启服务端压缩 3.如果为图片,则文件大小小于10MB,否则不限制大小\n const needServerCompress = this.uploadChannel === 'telegram' && this.serverCompress && (processedFile.type.includes('image') ? processedFile.size / 1024 / 1024 < 10 : true);\n pushFileToQueue(processedFile, needServerCompress);\n } else {\n this.$message.error(this.$t('uploadForm.fileTooLarge', {\n name: processedFile.name\n }));\n reject(this.$t('uploadForm.fileSizeTooLarge'));\n }\n });\n },\n handleProgress(event) {\n const fileItem = this.fileList.find(item => item.uid === event.file.uid);\n if (fileItem) {\n fileItem.progreess = event.percent;\n }\n },\n copyAll() {\n const urls = this.fileList.filter(item => item.status === 'done' || item.status === 'success').map(item => getUrlByFormat(item, this.selectedUrlForm)).join('\\n');\n navigator.clipboard.writeText(urls);\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.copyAllSuccess')\n });\n },\n clearFileList() {\n if (this.fileList.length > 0) {\n // 取消所有正在上传的文件\n this.abortControllers.forEach((controller, uid) => {\n controller.abort();\n });\n this.abortControllers.clear();\n // 清空上传队列\n this.uploadQueue = [];\n // 清空文件列表\n this.fileList = [];\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.fileListCleared')\n });\n } else {\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.fileListEmpty')\n });\n }\n },\n clearSuccessList() {\n if (this.uploadSuccessCount > 0) {\n this.fileList = this.fileList.filter(item => item.status !== 'done' && item.status !== 'success');\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.successFilesCleared')\n });\n } else {\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.successFilesEmpty')\n });\n }\n },\n isEditablePasteTarget(target) {\n const element = target?.nodeType === Node.TEXT_NODE ? target.parentElement : target;\n if (!element) return false;\n const tagName = element.tagName;\n return tagName === 'INPUT' || tagName === 'TEXTAREA' || element.isContentEditable || Boolean(element.closest?.('[contenteditable=\"true\"]'));\n },\n handlePasteShortcut(event) {\n const isPasteShortcut = (event.ctrlKey || event.metaKey) && !event.altKey && String(event.key).toLowerCase() === 'v';\n if (!isPasteShortcut || this.isEditablePasteTarget(event.target)) return;\n const receiver = this.$refs.clipboardPasteReceiver;\n if (!receiver) return;\n this.pasteFocusTarget = document.activeElement;\n receiver.value = '';\n try {\n receiver.focus({\n preventScroll: true\n });\n } catch {\n receiver.focus();\n }\n },\n releasePasteReceiver(target) {\n const receiver = this.$refs.clipboardPasteReceiver;\n if (!receiver || target !== receiver) return;\n receiver.value = '';\n const focusTarget = this.pasteFocusTarget;\n this.pasteFocusTarget = null;\n setTimeout(() => {\n if (focusTarget?.isConnected && typeof focusTarget.focus === 'function') {\n try {\n focusTarget.focus({\n preventScroll: true\n });\n } catch {\n focusTarget.focus();\n }\n } else {\n receiver.blur();\n }\n if (document.activeElement === receiver) receiver.blur();\n }, 0);\n },\n async handlePaste(event) {\n // 当粘贴位置是文本框时,不执行该操作\n const isPasteReceiver = event.target === this.$refs.clipboardPasteReceiver;\n if (!isPasteReceiver && this.isEditablePasteTarget(event.target)) {\n return;\n }\n const clipboardData = event.clipboardData;\n if (!clipboardData) {\n this.releasePasteReceiver(event.target);\n return;\n }\n const items = Array.from(clipboardData.items || []);\n const fileItems = items.filter(item => item.kind === 'file');\n const stringItems = items.filter(item => item.kind === 'string');\n const fileEntries = filesToUploadEntries(clipboardData.files || []);\n if (isPasteReceiver) event.preventDefault();\n this.releasePasteReceiver(event.target);\n if (fileEntries.length > 0 || fileItems.length > 0) {\n event.preventDefault();\n let entries = [];\n if (fileItems.length) {\n try {\n entries = await collectFilesFromDataTransferItems(fileItems);\n } catch (error) {\n console.warn('Failed to parse clipboard items, falling back to clipboard files:', error);\n }\n }\n // Safari may expose file items without supporting their entry APIs.\n if (!entries.length) entries = fileEntries;\n if (entries.length) await this.uploadLocalEntries(entries);\n }\n if (stringItems.length > 0) this.uploadFromUrl(stringItems);\n },\n handleUploadPasteUrls() {\n // 用于上传在上传文本框中粘贴的外链\n const urls = this.pastedUrls.split('\\n');\n // 处理空行和首尾空字符,链接须符合URL规范\n const validUrls = urls.map(url => url.trim()).filter(url => url !== '').filter(url => /^(https?:\\/\\/[^\\s$.?#].[^\\s]*)$/.test(url));\n\n // 根据粘贴上传方式进行上传\n if (this.pasteUploadMethod === 'save') {\n // 正常上传\n this.uploadFromUrl(validUrls.map(url => {\n return {\n kind: 'string',\n getAsString: callback => {\n callback(url);\n }\n };\n }));\n } else if (this.pasteUploadMethod === 'external') {\n // 仅保存外链,使用 external 渠道上传\n for (let i = 0; i < validUrls.length; i++) {\n const url = validUrls[i];\n const fileName = url.split('/').pop();\n const mdUrl = `![${fileName}](${url})`;\n const htmlUrl = `\"${fileName}\"`;\n const ubbUrl = `[img]${url}[/img]`;\n // 将 url 作为文件内容,文件名为 URL 的最后一部分\n const file = new File([], url.split('/').pop(), {\n type: 'text/plain'\n });\n file.uid = Date.now() + i;\n file.url = url;\n this.fileList.push({\n uid: file.uid,\n name: file.name,\n url: url,\n finalURL: url,\n mdURL: mdUrl,\n htmlURL: htmlUrl,\n ubbURL: ubbUrl,\n srcID: url,\n status: 'uploading',\n progreess: 0,\n serverCompress: false,\n uploadChannel: 'external',\n retryCount: 0\n });\n // 上传\n this.uploadFile({\n file: file,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n }\n }\n },\n uploadFromUrl(items) {\n for (let i = 0; i < items.length; i++) {\n if (items[i].kind === 'string') {\n items[i].getAsString(text => {\n const urlPattern = /^(https?:\\/\\/[^\\s$.?#].[^\\s]*)$/;\n let fileName = '';\n if (urlPattern.test(text)) {\n axios.post('/api/fetchRes', {\n url: text\n }, {\n responseType: 'blob',\n withAuthCode: true\n }).then(response => {\n const contentType = response.headers['content-type'];\n if (response.status == 200) {\n // 提取文件名\n const disposition = response.headers['content-disposition'];\n if (disposition) {\n const filenameRegex = /filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/;\n const filenameStarRegex = /filename\\*\\s*=\\s*UTF-8''([^;\\n]*)/; // 处理 filename*\n\n let matches = filenameRegex.exec(disposition);\n if (matches != null && matches[1]) {\n fileName = matches[1].replace(/['\"]/g, '');\n // 尝试解码\n try {\n fileName = decodeURIComponent(fileName);\n } catch (e) {\n fileName = '';\n }\n }\n if (fileName === '') {\n matches = filenameStarRegex.exec(disposition); // 尝试匹配 filename*\n if (matches != null && matches[1]) {\n fileName = decodeURIComponent(matches[1]);\n }\n }\n }\n // 尝试从URL中提取文件名\n if (fileName === '') {\n const url = new URL(text);\n fileName = url.pathname.split('/').pop();\n }\n // 未提取到文件名,使用默认文件名\n if (fileName === '') {\n // 获取文件后缀\n const url = new URL(text);\n let extension = url.pathname.split('.').pop();\n // 未能从URL提取有效后缀,使用bin作为默认后缀\n if (!extension || extension === '' || extension.length > 10) {\n extension = 'bin';\n }\n fileName = 'PastedFile' + Date.now() + i + '.' + extension;\n }\n\n // 读取文件内容\n const blob = response.data;\n const file = new File([blob], fileName, {\n type: blob.type\n });\n file.uid = Date.now() + i;\n // 接收beforeUpload的Promise对象\n const checkResult = this.beforeUpload(file);\n if (checkResult instanceof Promise) {\n checkResult.then(newFile => {\n if (newFile instanceof File) {\n this.uploadFile({\n file: newFile,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n }\n }).catch(err => {\n console.log(err);\n });\n }\n } else {\n throw new Error('URL地址请求失败');\n }\n }).catch(error => {\n this.$message({\n type: 'warning',\n message: this.$t('uploadForm.urlRequestFailed')\n });\n });\n }\n });\n }\n }\n },\n handleScroll(event) {\n this.listScrolled = event.scrollTop > 0 && this.fileList.length > 0;\n },\n retryError() {\n if (this.exceptionList.length > 0) {\n const filesToRetry = [...this.exceptionList];\n this.exceptionList = [];\n this.retryFailedFiles(filesToRetry, true);\n } else {\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.noFailedFiles')\n });\n }\n },\n handleAutoRetryChange(val) {\n this.$message({\n type: val ? 'success' : 'info',\n message: val ? this.$t('uploadForm.autoRetryOn') : this.$t('uploadForm.autoRetryOff')\n });\n\n // 如果开启自动重试且有失败文件,立即开始重试\n if (val && this.exceptionList.length > 0) {\n this.scheduleAutoRetry();\n }\n },\n retryFailedFiles(files, isManualRetry = false) {\n files.forEach(file => {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (!fileItem) return;\n\n // 手动重试开启一轮新的尝试,不受上一轮自动重试次数限制\n if (isManualRetry) fileItem.retryCount = 0;\n const retryCount = fileItem.retryCount || 0;\n if (isManualRetry || retryCount < this.maxRetryCount) {\n if (!isManualRetry) fileItem.retryCount = retryCount + 1;\n fileItem.progreess = 0;\n this.uploadFile({\n file: file.file,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n } else {\n // 达到自动重试上限后保留失败请求,供用户手动重试\n fileItem.status = 'exception';\n this.exceptionList.push(file);\n this.$message({\n type: 'warning',\n message: this.$t('uploadForm.maxRetryReached', {\n name: file.name,\n max: this.maxRetryCount\n })\n });\n }\n });\n },\n scheduleAutoRetry() {\n if (this.retryTimer) {\n clearTimeout(this.retryTimer);\n }\n this.retryTimer = setTimeout(() => {\n if (this.autoReUpload && this.exceptionList.length > 0) {\n const filesToRetry = [...this.exceptionList];\n this.exceptionList = [];\n this.retryFailedFiles(filesToRetry);\n }\n }, this.retryDelay);\n },\n // HuggingFace 大文件直传(绕过 CF Workers 限制)\n // 流程:前端计算 SHA256 → 获取 S3 上传 URL → 直传到 S3 → 提交文件引用\n async uploadToHuggingFaceDirect(file) {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (!fileItem) return;\n\n // 创建 AbortController 用于取消上传\n const abortController = new AbortController();\n this.abortControllers.set(file.file.uid, abortController);\n const targetUploadFolder = this.getFileUploadFolder(file);\n try {\n console.log('=== HuggingFace Direct Upload ===');\n console.log('File:', file.file.name, 'Size:', file.file.size);\n\n // 1. 计算 SHA256\n file.onProgress({\n percent: 5,\n file: file.file\n });\n console.log('Computing SHA256...');\n const sha256 = await computeSha256(file.file);\n console.log('SHA256:', sha256);\n\n // 检查是否已取消\n if (abortController.signal.aborted) {\n console.log('HuggingFace 上传已取消:', file.file.name);\n return;\n }\n\n // 2. 获取文件样本(前512字节的base64)\n const sampleBytes = new Uint8Array(await file.file.slice(0, 512).arrayBuffer());\n const fileSample = btoa(String.fromCharCode(...sampleBytes));\n\n // 3. 获取 LFS 上传 URL\n file.onProgress({\n percent: 10,\n file: file.file\n });\n console.log('Getting LFS upload URL...');\n const uploadInfoRes = await axios({\n url: '/upload/huggingface/getUploadUrl',\n method: 'post',\n data: {\n fileSize: file.file.size,\n fileName: file.file.name,\n fileType: file.file.type,\n sha256,\n fileSample,\n channelName: this.channelName,\n // 传递指定的渠道名称\n uploadNameType: this.uploadNameType,\n uploadFolder: targetUploadFolder\n },\n withAuthCode: true,\n signal: abortController.signal\n });\n if (!uploadInfoRes.data.success) {\n throw new Error(uploadInfoRes.data.error || 'Failed to get upload URL');\n }\n const uploadInfo = uploadInfoRes.data;\n console.log('Upload info:', uploadInfo);\n\n // 检查文件是否已存在\n if (uploadInfo.alreadyExists) {\n console.log('File already exists in LFS, skipping upload');\n file.onProgress({\n percent: 90,\n file: file.file\n });\n } else if (uploadInfo.needsLfs && uploadInfo.uploadAction) {\n // 4. 直接上传到 S3\n const {\n href,\n header\n } = uploadInfo.uploadAction;\n if (header?.chunk_size) {\n // 分片上传\n await this.uploadToHuggingFaceMultipart(file, uploadInfo, abortController);\n } else {\n // 基本上传\n console.log('Uploading to S3 (basic)...');\n const uploadRes = await fetch(href, {\n method: 'PUT',\n headers: header || {},\n body: file.file,\n signal: abortController.signal\n });\n if (!uploadRes.ok) {\n const error = await uploadRes.text();\n throw new Error(`S3 upload failed: ${uploadRes.status} - ${error}`);\n }\n console.log('S3 upload complete');\n }\n }\n\n // 检查是否已取消\n if (abortController.signal.aborted) {\n console.log('HuggingFace 上传已取消:', file.file.name);\n return;\n }\n\n // 5. 提交文件引用\n file.onProgress({\n percent: 95,\n file: file.file\n });\n console.log('Committing file...');\n const commitRes = await axios({\n url: '/upload/huggingface/commitUpload',\n method: 'post',\n data: {\n fullId: uploadInfo.fullId,\n filePath: uploadInfo.filePath,\n sha256,\n fileSize: file.file.size,\n fileName: file.file.name,\n fileType: file.file.type,\n channelName: uploadInfo.channelName\n },\n withAuthCode: true,\n signal: abortController.signal\n });\n if (!commitRes.data.success) {\n throw new Error(commitRes.data.error || 'Failed to commit file');\n }\n console.log('Upload complete:', commitRes.data);\n // 转换响应格式以匹配 handleSuccess 期望的格式\n const formattedResponse = {\n data: [{\n src: commitRes.data.src\n }]\n };\n file.onSuccess(formattedResponse, file.file);\n } catch (err) {\n // 如果是取消操作,不加入异常列表\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED' || err.name === 'AbortError') {\n console.log('HuggingFace 上传已取消:', file.file.name);\n return;\n }\n console.error('HuggingFace direct upload error:', err);\n this.exceptionList.push(file);\n file.onError(err, file.file);\n } finally {\n // 清理 AbortController\n this.abortControllers.delete(file.file.uid);\n // 调用并发控制的完成回调\n this.onUploadComplete();\n }\n },\n // HuggingFace 分片上传到 S3\n async uploadToHuggingFaceMultipart(file, uploadInfo, abortController) {\n const {\n uploadAction\n } = uploadInfo;\n const {\n href: completionUrl,\n header\n } = uploadAction;\n const chunkSize = parseInt(header.chunk_size);\n\n // 获取所有分片的上传 URL\n const parts = Object.keys(header).filter(key => /^[0-9]+$/.test(key));\n console.log(`Multipart upload: ${parts.length} parts, chunk size: ${chunkSize}`);\n const completeParts = [];\n const totalParts = parts.length;\n for (const part of parts) {\n // 检查是否已取消\n if (abortController && abortController.signal.aborted) {\n console.log('HuggingFace 分片上传已取消');\n throw new DOMException('Upload cancelled', 'AbortError');\n }\n const index = parseInt(part) - 1;\n const start = index * chunkSize;\n const end = Math.min(start + chunkSize, file.file.size);\n const chunk = file.file.slice(start, end);\n console.log(`Uploading part ${part}/${totalParts}`);\n const response = await fetch(header[part], {\n method: 'PUT',\n body: chunk,\n signal: abortController ? abortController.signal : undefined\n });\n if (!response.ok) {\n throw new Error(`Failed to upload part ${part}: ${response.status}`);\n }\n const etag = response.headers.get('ETag');\n if (!etag) {\n throw new Error(`No ETag for part ${part}`);\n }\n completeParts.push({\n partNumber: parseInt(part),\n etag\n });\n\n // 更新进度(10% - 90%)\n const progress = 10 + Math.round(parseInt(part) / totalParts * 80);\n file.onProgress({\n percent: progress,\n file: file.file\n });\n }\n\n // 检查是否已取消\n if (abortController && abortController.signal.aborted) {\n console.log('HuggingFace 分片上传已取消');\n throw new DOMException('Upload cancelled', 'AbortError');\n }\n\n // 完成分片上传\n console.log('Completing multipart upload...');\n const completeResponse = await fetch(completionUrl, {\n method: 'POST',\n headers: {\n 'Accept': 'application/vnd.git-lfs+json',\n 'Content-Type': 'application/vnd.git-lfs+json'\n },\n body: JSON.stringify({\n oid: uploadInfo.oid,\n parts: completeParts\n }),\n signal: abortController ? abortController.signal : undefined\n });\n if (!completeResponse.ok) {\n const error = await completeResponse.text();\n throw new Error(`Multipart complete failed: ${completeResponse.status} - ${error}`);\n }\n console.log('Multipart upload complete');\n },\n // 将图片转换为 WebP 格式\n async convertImageToWebp(file) {\n return new Promise((resolve, reject) => {\n // 不支持转换的格式直接返回 null\n if (file.type.includes('gif') || file.type.includes('svg') || file.type.includes('webp')) {\n resolve(null);\n return;\n }\n const img = new Image();\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n img.onload = () => {\n canvas.width = img.width;\n canvas.height = img.height;\n ctx.drawImage(img, 0, 0);\n canvas.toBlob(blob => {\n if (blob) {\n // 修改文件名:将原扩展名替换为 .webp\n const originalName = file.name;\n const lastDotIndex = originalName.lastIndexOf('.');\n const newName = lastDotIndex > 0 ? originalName.substring(0, lastDotIndex) + '.webp' : originalName + '.webp';\n const webpFile = new File([blob], newName, {\n type: 'image/webp'\n });\n webpFile.uid = file.uid;\n this.copyUploadPath(file, webpFile);\n resolve(webpFile);\n } else {\n reject(new Error('WebP 转换失败'));\n }\n\n // 清理\n URL.revokeObjectURL(img.src);\n }, 'image/webp', 0.92); // 0.92 质量参数,平衡质量和大小\n };\n img.onerror = () => {\n URL.revokeObjectURL(img.src);\n reject(new Error(this.$t('uploadForm.imageLoadFailed')));\n };\n img.src = URL.createObjectURL(file);\n });\n },\n // 拖拽上传卡片鼠标移动事件 - 悬浮光斑效果\n handleUploadCardMouseMove(e) {\n const glow = this.$refs.uploadCardGlow;\n if (!glow) return;\n const rect = e.currentTarget.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n glow.style.opacity = '1';\n glow.style.left = x + 'px';\n glow.style.top = y + 'px';\n },\n // 拖拽上传卡片鼠标离开事件\n handleUploadCardMouseLeave() {\n const glow = this.$refs.uploadCardGlow;\n if (!glow) return;\n glow.style.opacity = '0';\n }\n },\n beforeDestroy() {\n // 清理定时器\n if (this.retryTimer) {\n clearTimeout(this.retryTimer);\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadForm.vue?vue&type=template&id=991f3af6&scoped=true\"\nimport script from \"./UploadForm.vue?vue&type=script&lang=js\"\nexport * from \"./UploadForm.vue?vue&type=script&lang=js\"\n\nimport \"./UploadForm.vue?vue&type=style&index=0&id=991f3af6&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-991f3af6\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, withModifiers as _withModifiers, createElementVNode as _createElementVNode, vShow as _vShow, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"directory-suggestion-input\",\n ref: \"wrapperRef\"\n};\nconst _hoisted_2 = {\n class: \"suggestion-dropdown\"\n};\nconst _hoisted_3 = {\n class: \"suggestion-list\"\n};\nconst _hoisted_4 = [\"title\", \"onMousedown\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_input = _resolveComponent(\"el-input\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_input, {\n ref: \"inputRef\",\n modelValue: $options.inputValue,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $options.inputValue = $event),\n placeholder: $props.placeholder,\n onFocus: $options.handleFocus,\n onBlur: $options.handleBlur,\n onInput: $options.handleInput\n }, null, 8, [\"modelValue\", \"placeholder\", \"onFocus\", \"onBlur\", \"onInput\"]), _withDirectives(_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"ul\", _hoisted_3, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.suggestions, (item, index) => {\n return _openBlock(), _createElementBlock(\"li\", {\n key: index,\n class: \"suggestion-item\",\n title: item.value,\n onMousedown: _withModifiers($event => $options.selectItem(item), [\"prevent\"])\n }, _toDisplayString(item.value), 41, _hoisted_4);\n }), 128))])], 512), [[_vShow, $data.dropdownVisible && $data.suggestions.length > 0]])], 512);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport axios from '@/utils/axios';\nexport default {\n name: 'DirectorySuggestionInput',\n props: {\n modelValue: {\n type: String,\n default: ''\n },\n placeholder: {\n type: String,\n default: ''\n }\n },\n emits: ['update:modelValue', 'focus', 'blur', 'select'],\n data() {\n return {\n directoryTreeRoot: null,\n directoryTreeLoaded: false,\n directoryTreeLoading: false,\n directoryChildrenMap: {},\n focusTime: null,\n dropdownVisible: false,\n isFocused: false,\n suggestions: []\n };\n },\n computed: {\n inputValue: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n }\n },\n watch: {\n modelValue() {\n // 外部修改 modelValue 时也刷新建议\n if (this.isFocused) {\n this.refreshSuggestions();\n }\n }\n },\n methods: {\n handleFocus() {\n this.isFocused = true;\n this.focusTime = Date.now();\n this.ensureDirectoryTreeLoaded();\n this.$emit('focus');\n setTimeout(() => {\n if (this.isFocused) {\n this.refreshSuggestions();\n this.dropdownVisible = true;\n }\n }, 500);\n },\n handleBlur() {\n this.isFocused = false;\n this.dropdownVisible = false;\n this.$emit('blur');\n },\n handleInput(val) {\n // val 是 el-input @input 事件传来的最新值\n this.$nextTick(() => {\n this.refreshSuggestions();\n if (this.isFocused) {\n this.dropdownVisible = true;\n }\n });\n },\n selectItem(item) {\n const path = item.value;\n this.inputValue = path;\n this.$emit('select', path);\n const normalizedPath = this.normalizeDirectoryPath(path);\n const children = this.directoryChildrenMap[normalizedPath];\n if (children && children.length > 0) {\n this.$nextTick(() => {\n this.refreshSuggestions();\n this.dropdownVisible = true;\n this.$refs.inputRef?.focus();\n });\n } else {\n this.dropdownVisible = false;\n }\n },\n refreshSuggestions() {\n this.suggestions = this.getDirectorySuggestions(this.modelValue || '');\n },\n normalizeDirectoryPath(path) {\n if (!path) return '/';\n let normalized = path;\n if (!normalized.startsWith('/')) normalized = '/' + normalized;\n if (normalized !== '/' && !normalized.endsWith('/')) normalized += '/';\n return normalized;\n },\n buildDirectoryChildrenMap(treeRoot) {\n const map = {};\n const walk = node => {\n const parentPath = this.normalizeDirectoryPath(node.path);\n const children = Array.isArray(node.children) ? node.children : [];\n map[parentPath] = children.map(child => ({\n name: child.name,\n path: this.normalizeDirectoryPath(child.path)\n }));\n children.forEach(walk);\n };\n walk(treeRoot);\n this.directoryChildrenMap = map;\n },\n async ensureDirectoryTreeLoaded() {\n if (this.directoryTreeLoaded || this.directoryTreeLoading) return;\n this.directoryTreeLoading = true;\n try {\n const response = await axios.get('/api/directoryTree', {\n withAuthCode: true\n });\n const tree = response?.data?.tree;\n if (tree) {\n this.directoryTreeRoot = tree;\n this.buildDirectoryChildrenMap(tree);\n this.directoryTreeLoaded = true;\n }\n } catch (error) {\n console.error('Failed to load directory tree for autocomplete:', error);\n } finally {\n this.directoryTreeLoading = false;\n }\n },\n parseDirectoryQuery(value) {\n const normalizedInput = value && value.startsWith('/') ? value : `/${value || ''}`;\n const raw = normalizedInput.slice(1);\n const parts = raw.split('/');\n const segmentInput = parts[parts.length - 1] || '';\n const parentSegments = parts.slice(0, -1).filter(Boolean);\n const parentPath = parentSegments.length > 0 ? `/${parentSegments.join('/')}/` : '/';\n return {\n segmentInput,\n parentPath\n };\n },\n getDirectorySuggestions(queryString) {\n const {\n segmentInput,\n parentPath\n } = this.parseDirectoryQuery(queryString);\n const parentChildren = this.directoryChildrenMap[parentPath] || [];\n if (!segmentInput) {\n return parentChildren.slice(0, 10).map(item => ({\n value: item.path\n }));\n }\n const keyword = segmentInput.toLowerCase();\n return parentChildren.filter(item => item.name.toLowerCase().startsWith(keyword)).slice(0, 10).map(item => ({\n value: item.path\n }));\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DirectorySuggestionInput.vue?vue&type=template&id=28b8eda7&scoped=true\"\nimport script from \"./DirectorySuggestionInput.vue?vue&type=script&lang=js\"\nexport * from \"./DirectorySuggestionInput.vue?vue&type=script&lang=js\"\n\nimport \"./DirectorySuggestionInput.vue?vue&type=style&index=0&id=28b8eda7&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-28b8eda7\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"container\"\n};\nconst _hoisted_2 = {\n class: \"upload-home\"\n};\nconst _hoisted_3 = {\n class: \"quick-toolbar-actions\"\n};\nconst _hoisted_4 = {\n class: \"quick-toolbar-actions-inner\"\n};\nconst _hoisted_5 = {\n class: \"header\"\n};\nconst _hoisted_6 = {\n class: \"title\"\n};\nconst _hoisted_7 = {\n class: \"title-crayon-text\",\n \"aria-hidden\": \"true\"\n};\nconst _hoisted_8 = {\n class: \"title-base-text\"\n};\nconst _hoisted_9 = {\n class: \"main-title\",\n href: \"https://github.com/MarSeventh/CloudFlare-ImgBed\",\n target: \"_blank\"\n};\nconst _hoisted_10 = {\n class: \"dialog-section\"\n};\nconst _hoisted_11 = {\n class: \"section-header\"\n};\nconst _hoisted_12 = {\n class: \"section-title\"\n};\nconst _hoisted_13 = {\n class: \"section-content\"\n};\nconst _hoisted_14 = {\n class: \"dialog-section\"\n};\nconst _hoisted_15 = {\n class: \"section-header\"\n};\nconst _hoisted_16 = {\n class: \"section-title\"\n};\nconst _hoisted_17 = {\n class: \"section-content\"\n};\nconst _hoisted_18 = {\n class: \"setting-item\"\n};\nconst _hoisted_19 = {\n class: \"setting-label\"\n};\nconst _hoisted_20 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_21 = {\n class: \"setting-label\"\n};\nconst _hoisted_22 = {\n class: \"dialog-action\"\n};\nconst _hoisted_23 = [\"innerHTML\"];\nconst _hoisted_24 = {\n class: \"dialog-footer\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_ToggleDark = _resolveComponent(\"ToggleDark\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dropdown_item = _resolveComponent(\"el-dropdown-item\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n const _component_DirectorySuggestionInput = _resolveComponent(\"DirectorySuggestionInput\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_DirectoryTreePicker = _resolveComponent(\"DirectoryTreePicker\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_Logo = _resolveComponent(\"Logo\");\n const _component_UploadForm = _resolveComponent(\"UploadForm\");\n const _component_el_radio = _resolveComponent(\"el-radio\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _component_UploadSettingsDialog = _resolveComponent(\"UploadSettingsDialog\");\n const _component_Footer = _resolveComponent(\"Footer\");\n const _component_UploadHistory = _resolveComponent(\"UploadHistory\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createVNode(_component_ToggleDark, {\n class: \"toggle-dark-button desktop-only\"\n }), _createVNode(_component_el_dropdown, {\n class: \"more-dropdown desktop-only\",\n trigger: \"click\",\n onCommand: $options.handleDesktopMenuCommand\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, null, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n command: \"showHistory\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"history\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.history')), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"showAnnouncement\",\n disabled: !$options.announcementAvailable\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"bullhorn\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.announcement')), 1)]),\n _: 1\n }, 8, [\"disabled\"]), _createVNode(_component_el_dropdown_item, {\n command: \"toggleLanguage\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"globe\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$i18n.locale === 'zh-CN' ? 'English' : '简体中文'), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"viewDocs\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"book\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.viewDocs')), 1)]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"more-button\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"ellipsis-v\",\n size: \"lg\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"onCommand\"]), _createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-folder-container\", {\n 'no-announcement': !$options.announcementAvailable\n }])\n }, [_createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-folder\", {\n 'active': $data.isFolderInputActive\n }])\n }, [$options.showDirectorySuggestions ? (_openBlock(), _createBlock(_component_DirectorySuggestionInput, {\n key: 0,\n modelValue: $data.uploadFolder,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.uploadFolder = $event),\n class: \"inner-folder-input\",\n placeholder: _ctx.$t('upload.folderPlaceholder'),\n onFocus: $options.handleFolderInputFocus,\n onBlur: $options.handleFolderInputBlur,\n onSelect: $options.handleDirectorySelect\n }, null, 8, [\"modelValue\", \"placeholder\", \"onFocus\", \"onBlur\", \"onSelect\"])) : (_openBlock(), _createBlock(_component_el_input, {\n key: 1,\n class: \"inner-folder-input\",\n modelValue: $data.uploadFolder,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $data.uploadFolder = $event),\n placeholder: _ctx.$t('upload.folderPlaceholder'),\n onFocus: $options.handleFolderInputFocus,\n onBlur: $options.handleFolderInputBlur\n }, null, 8, [\"modelValue\", \"placeholder\", \"onFocus\", \"onBlur\"]))], 2), $options.showDirectorySuggestions ? (_openBlock(), _createBlock(_component_DirectoryTreePicker, {\n key: 0,\n \"current-directory\": $data.uploadFolder,\n source: \"upload\",\n onSelect: $options.handleDirectorySelect\n }, {\n trigger: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"directory-tree-trigger\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-tree\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"current-directory\", \"onSelect\"])) : _createCommentVNode(\"\", true)], 2), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('upload.switchUploadMethod'),\n placement: \"bottom\",\n disabled: $options.disableTooltip,\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"upload-method-button desktop-only\",\n onClick: $options.handleChangeUploadMethod\n }, {\n default: _withCtx(() => [$data.uploadMethod === 'default' ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"folder-open\",\n class: \"upload-method-icon\",\n size: \"lg\"\n })) : $data.uploadMethod === 'paste' ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 1,\n icon: \"paste\",\n class: \"upload-method-icon\",\n size: \"lg\"\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"content\", \"disabled\"]), _createVNode(_component_el_dropdown, {\n class: \"mobile-more-dropdown mobile-only\",\n trigger: \"click\",\n onCommand: $options.handleMobileMenuCommand\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, null, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n command: \"toggleTheme\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: $options.getThemeIcon(),\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }, null, 8, [\"icon\"]), _createTextVNode(\" \" + _toDisplayString($options.getThemeText()), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"toggleUploadMethod\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: $data.uploadMethod === 'default' ? 'paste' : 'folder-open',\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }, null, 8, [\"icon\"]), _createTextVNode(\" \" + _toDisplayString($data.uploadMethod === 'default' ? _ctx.$t('upload.pasteUpload') : _ctx.$t('upload.fileUpload')), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"showHistory\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"history\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.history')), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"showAnnouncement\",\n disabled: !$options.announcementAvailable\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"bullhorn\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.announcement')), 1)]),\n _: 1\n }, 8, [\"disabled\"]), _createVNode(_component_el_dropdown_item, {\n command: \"toggleLanguage\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"globe\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$i18n.locale === 'zh-CN' ? 'English' : '简体中文'), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"viewDocs\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"book\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.viewDocs')), 1)]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"mobile-more-button\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"ellipsis-v\",\n size: \"lg\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"onCommand\"]), _createElementVNode(\"div\", {\n class: _normalizeClass([\"quick-toolbar\", {\n 'is-expanded': $data.isQuickToolbarOpen\n }]),\n onMouseleave: _cache[5] || (_cache[5] = (...args) => $options.handleQuickToolbarLeave && $options.handleQuickToolbarLeave(...args))\n }, [_createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip || !$data.isQuickToolbarOpen,\n content: _ctx.$t('upload.logout'),\n placement: \"left\",\n \"hide-after\": 0,\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"quick-toolbar-button\",\n onClick: _cache[2] || (_cache[2] = $event => $options.handleQuickToolbarCommand('logout'))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"sign-out-alt\",\n class: \"quick-toolbar-icon\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip || !$data.isQuickToolbarOpen,\n content: _ctx.$t('upload.manage'),\n placement: \"left\",\n \"hide-after\": 0,\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"quick-toolbar-button\",\n onClick: _cache[3] || (_cache[3] = $event => $options.handleQuickToolbarCommand('manage'))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cog\",\n class: \"quick-toolbar-icon\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip || !$data.isQuickToolbarOpen,\n content: _ctx.$t('upload.linkFormat'),\n placement: \"left\",\n \"hide-after\": 0,\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"quick-toolbar-button\",\n onClick: _cache[4] || (_cache[4] = $event => $options.handleQuickToolbarCommand('linkFormat'))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"quick-toolbar-icon\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.settings'),\n placement: \"left\",\n \"hide-after\": 0,\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"quick-toolbar-button\",\n onClick: $options.openCompressDialog\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud-upload\",\n class: \"quick-toolbar-icon\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_button, {\n class: _normalizeClass([\"quick-toolbar-button quick-toolbar-more\", {\n 'is-active': $data.isQuickToolbarOpen\n }]),\n \"aria-expanded\": $data.isQuickToolbarOpen,\n onMouseenter: $options.handleQuickToolbarMoreEnter,\n onClick: $options.toggleQuickToolbar\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"chevron-down\",\n class: \"quick-toolbar-icon quick-toolbar-toggle-icon\"\n })]),\n _: 1\n }, 8, [\"class\", \"aria-expanded\", \"onMouseenter\", \"onClick\"])], 34), _createVNode(_component_Logo, {\n useConfigLink: true\n }), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"h1\", _hoisted_6, [_createElementVNode(\"span\", _hoisted_7, _toDisplayString($options.ownerName) + \" ImgHub\", 1), _createElementVNode(\"span\", _hoisted_8, [_createElementVNode(\"a\", _hoisted_9, _toDisplayString($options.ownerName), 1), _cache[24] || (_cache[24] = _createTextVNode(\" ImgHub \", -1))])])]), _createVNode(_component_UploadForm, {\n selectedUrlForm: $data.selectedUrlForm,\n customerCompress: $data.customerCompress,\n compressQuality: $data.compressQuality,\n compressBar: $data.compressBar,\n serverCompress: $data.serverCompress,\n uploadChannel: $data.uploadChannel,\n channelName: $data.channelName,\n uploadNameType: $data.uploadNameType,\n useCustomUrl: $data.useCustomUrl,\n customUrlPrefix: $data.customUrlPrefix,\n autoRetry: $data.autoRetry,\n urlPrefix: $options.urlPrefix,\n uploadMethod: $data.uploadMethod,\n uploadFolder: $data.uploadFolder,\n convertToWebp: $data.convertToWebp,\n class: \"upload\"\n }, null, 8, [\"selectedUrlForm\", \"customerCompress\", \"compressQuality\", \"compressBar\", \"serverCompress\", \"uploadChannel\", \"channelName\", \"uploadNameType\", \"useCustomUrl\", \"customUrlPrefix\", \"autoRetry\", \"urlPrefix\", \"uploadMethod\", \"uploadFolder\", \"convertToWebp\"]), _createVNode(_component_el_dialog, {\n title: _ctx.$t('settings.linkFormatTitle'),\n modelValue: $data.showUrlDialog,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $data.showUrlDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog settings-dialog-scope\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_10, [_createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"span\", _hoisted_12, _toDisplayString(_ctx.$t('settings.defaultCopyLink')), 1)]), _createElementVNode(\"div\", _hoisted_13, [_createVNode(_component_el_radio_group, {\n modelValue: $data.selectedUrlForm,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.selectedUrlForm = $event),\n onChange: $options.changeUrlForm,\n class: \"radio-card-group grid-2x2\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio, {\n value: \"url\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('settings.rawLink')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n value: \"md\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"code\",\n class: \"radio-icon\"\n }), _cache[25] || (_cache[25] = _createElementVNode(\"span\", null, \"MarkDown\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n value: \"html\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"code-branch\",\n class: \"radio-icon\"\n }), _cache[26] || (_cache[26] = _createElementVNode(\"span\", null, \"HTML\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n value: \"ubb\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"quote-right\",\n class: \"radio-icon\"\n }), _cache[27] || (_cache[27] = _createElementVNode(\"span\", null, \"BBCode\", -1))]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\", \"onChange\"])])]), _createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"div\", _hoisted_15, [_createElementVNode(\"span\", _hoisted_16, _toDisplayString(_ctx.$t('settings.customLink')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('settings.customLinkTooltip'),\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_17, [_createElementVNode(\"div\", _hoisted_18, [_createElementVNode(\"span\", _hoisted_19, _toDisplayString(_ctx.$t('settings.enableCustom')), 1), _createVNode(_component_el_switch, {\n modelValue: $data.useCustomUrl,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = $event => $data.useCustomUrl = $event),\n \"active-value\": \"true\",\n \"inactive-value\": \"false\"\n }, null, 8, [\"modelValue\"])]), $data.useCustomUrl === 'true' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_20, [_createElementVNode(\"span\", _hoisted_21, _toDisplayString(_ctx.$t('settings.customPrefix')), 1), _createVNode(_component_el_input, {\n modelValue: $data.customUrlPrefix,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => $data.customUrlPrefix = $event),\n placeholder: _ctx.$t('settings.customPrefixPlaceholder'),\n class: \"setting-input\"\n }, null, 8, [\"modelValue\", \"placeholder\"])])) : _createCommentVNode(\"\", true)])]), _createElementVNode(\"div\", _hoisted_22, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[9] || (_cache[9] = $event => $data.showUrlDialog = false),\n class: \"confirm-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('settings.confirm')), 1)]),\n _: 1\n })])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]), _createVNode(_component_UploadSettingsDialog, {\n modelValue: $data.showCompressDialog,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => $data.showCompressDialog = $event),\n uploadChannel: $data.uploadChannel,\n \"onUpdate:uploadChannel\": _cache[12] || (_cache[12] = $event => $data.uploadChannel = $event),\n channelName: $data.channelName,\n \"onUpdate:channelName\": _cache[13] || (_cache[13] = $event => $data.channelName = $event),\n availableChannels: $data.availableChannels,\n currentChannelList: $options.currentChannelList,\n uploadFolder: $data.uploadFolder,\n \"onUpdate:uploadFolder\": _cache[14] || (_cache[14] = $event => $data.uploadFolder = $event),\n autoRetry: $data.autoRetry,\n \"onUpdate:autoRetry\": _cache[15] || (_cache[15] = $event => $data.autoRetry = $event),\n uploadNameType: $data.uploadNameType,\n \"onUpdate:uploadNameType\": _cache[16] || (_cache[16] = $event => $data.uploadNameType = $event),\n convertToWebp: $data.convertToWebp,\n \"onUpdate:convertToWebp\": _cache[17] || (_cache[17] = $event => $data.convertToWebp = $event),\n customerCompress: $data.customerCompress,\n \"onUpdate:customerCompress\": _cache[18] || (_cache[18] = $event => $data.customerCompress = $event),\n compressBar: $data.compressBar,\n \"onUpdate:compressBar\": _cache[19] || (_cache[19] = $event => $data.compressBar = $event),\n compressQuality: $data.compressQuality,\n \"onUpdate:compressQuality\": _cache[20] || (_cache[20] = $event => $data.compressQuality = $event),\n serverCompress: $data.serverCompress,\n \"onUpdate:serverCompress\": _cache[21] || (_cache[21] = $event => $data.serverCompress = $event)\n }, null, 8, [\"modelValue\", \"uploadChannel\", \"channelName\", \"availableChannels\", \"currentChannelList\", \"uploadFolder\", \"autoRetry\", \"uploadNameType\", \"convertToWebp\", \"customerCompress\", \"compressBar\", \"compressQuality\", \"serverCompress\"])]), _createVNode(_component_Footer, {\n class: \"footer\"\n }), _createVNode(_component_el_dialog, {\n title: _ctx.$t('upload.announcementTitle'),\n modelValue: $data.showAnnouncementDialog,\n \"onUpdate:modelValue\": _cache[22] || (_cache[22] = $event => $data.showAnnouncementDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n \"close-on-click-modal\": false,\n \"close-on-press-escape\": false,\n center: \"\"\n }, {\n footer: _withCtx(() => [_createElementVNode(\"span\", _hoisted_24, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $options.acknowledgeAnnouncement\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.announcementAck')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", {\n innerHTML: $data.announcementContent\n }, null, 8, _hoisted_23)]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]), _createVNode(_component_UploadHistory, {\n show: $data.showHistory,\n onClose: _cache[23] || (_cache[23] = $event => $data.showHistory = false)\n }, null, 8, [\"show\"])]);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.some.js\";\nimport UploadForm from '@/components/upload/UploadForm.vue';\nimport Footer from '@/components/Footer.vue';\nimport ToggleDark from '@/components/ToggleDark.vue';\nimport Logo from '@/components/Logo.vue';\nimport { setLocale } from '@/locales';\nimport UploadHistory from '@/components/upload/UploadHistory.vue';\nimport UploadSettingsDialog from '@/components/upload/UploadSettingsDialog.vue';\nimport DirectoryTreePicker from '@/components/DirectoryTreePicker.vue';\nimport DirectorySuggestionInput from '@/components/DirectorySuggestionInput.vue';\nimport backgroundManager from '@/mixins/backgroundManager';\nimport axios from '@/utils/axios';\nimport { ref } from 'vue';\nimport { mapGetters } from 'vuex';\nimport { validateFolderPath } from '@/utils/pathValidator';\nexport default {\n name: 'UploadHome',\n mixins: [backgroundManager],\n data() {\n return {\n selectedUrlForm: ref(''),\n showUrlDialog: false,\n showCompressDialog: false,\n customerCompress: true,\n //上传前压缩\n compressQuality: 4,\n //压缩后大小\n compressBar: 5,\n //压缩阈值\n convertToWebp: false,\n //转换为WebP格式\n serverCompress: true,\n //服务器端压缩\n uploadChannel: '',\n //上传渠道\n channelName: '',\n //指定的渠道名称\n availableChannels: {},\n //可用渠道列表\n uploadNameType: '',\n //上传文件命名方式\n customUrlPrefix: '',\n //自定义链接前缀\n useCustomUrl: 'false',\n //是否启用自定义链接格式\n autoRetry: true,\n //失败自动切换\n useDefaultWallPaper: false,\n uploadMethod: 'default',\n //上传方式\n uploadFolder: '',\n // 上传文件夹\n isFolderInputActive: false,\n isQuickToolbarOpen: false,\n isQuickToolbarPinned: false,\n showAnnouncementDialog: false,\n // 控制公告弹窗的显示\n announcementContent: '',\n // 公告内容\n displayedAnnouncementRefreshAt: null,\n // 当前弹窗所展示的公告版本\n showHistory: false,\n themeMode: 'auto' // 主题模式:light, dark, auto\n };\n },\n watch: {\n customerCompress(val) {\n this.updateCompressConfig('customerCompress', val);\n },\n compressQuality(val) {\n this.updateCompressConfig('compressQuality', val);\n },\n compressBar(val) {\n // 确保值在有效范围内\n if (val === null || val === undefined || val < 1) {\n this.compressBar = 1;\n return;\n }\n // 确保期望大小不超过压缩阈值\n if (this.compressQuality > val) {\n this.compressQuality = val;\n }\n this.updateCompressConfig('compressBar', val);\n },\n serverCompress(val) {\n this.updateCompressConfig('serverCompress', val);\n },\n convertToWebp(val) {\n this.updateCompressConfig('convertToWebp', val);\n },\n uploadChannel(val) {\n this.updateStoreUploadChannel(val);\n // 切换渠道类型时,检查持久化的渠道名是否在新渠道列表中\n const newChannelList = this.availableChannels[val] || [];\n const savedChannelName = this.storeChannelName;\n if (savedChannelName && newChannelList.some(ch => ch.name === savedChannelName)) {\n // 持久化的渠道名在新渠道列表中,恢复它\n this.channelName = savedChannelName;\n } else {\n // 否则清空\n this.channelName = '';\n }\n },\n channelName(val) {\n // 确保清空时保存空字符串而不是null\n this.$store.commit('setStoreChannelName', val || '');\n },\n uploadNameType(val) {\n this.updateStoreUploadNameType(val);\n },\n customUrlPrefix(val) {\n this.$store.commit('setCustomUrlSettings', {\n key: 'customUrlPrefix',\n value: val\n });\n },\n useCustomUrl(val) {\n this.$store.commit('setCustomUrlSettings', {\n key: 'useCustomUrl',\n value: val\n });\n },\n autoRetry(val) {\n this.$store.commit('setStoreAutoRetry', val);\n },\n uploadFolder(val) {\n // 实时输入时用非 strict 模式,不检查末尾的单独 . 以允许继续输入如 .123\n if (this.validateUploadFolder(val, false)) {\n // 非 strict 通过后,再用 strict 模式静默检查,只有完全合法才更新 store\n const strictResult = validateFolderPath(val, {\n strict: true\n });\n if (strictResult.valid) {\n this.$store.commit('setStoreUploadFolder', val);\n }\n // strict 不通过时不更新 store,等失焦时提示并回滚\n } else {\n this.$nextTick(() => {\n this.uploadFolder = this.storeUploadFolder;\n });\n }\n }\n },\n computed: {\n ...mapGetters(['userConfig', 'uploadCopyUrlForm', 'compressConfig', 'storeUploadChannel', 'storeChannelName', 'storeUploadNameType', 'customUrlSettings', 'storeAutoRetry', 'storeUploadMethod', 'storeUploadFolder']),\n ownerName() {\n return this.userConfig?.ownerName || 'Sanyue';\n },\n dialogWidth() {\n return window.innerWidth > 768 ? '50%' : '90%';\n },\n disableTooltip() {\n return window.innerWidth < 768;\n },\n urlPrefix() {\n // 全局自定义链接前缀\n return this.userConfig?.urlPrefix || `${window.location.protocol}//${window.location.host}/file/`;\n },\n announcementAvailable() {\n return !!this.userConfig?.announcement;\n },\n // 是否显示目录候选项(从 userConfig 获取)\n showDirectorySuggestions() {\n return this.userConfig?.showDirectorySuggestions ?? false;\n },\n // 当前渠道类型对应的渠道列表\n currentChannelList() {\n return this.availableChannels[this.uploadChannel] || [];\n }\n },\n mounted() {\n // 初始化背景图,启用自动创建元素\n this.initializeBackground('uploadBkImg', '.container', true, true);\n\n // 读取用户选择的链接格式\n this.selectedUrlForm = this.uploadCopyUrlForm || 'url';\n // 读取用户选择的压缩设置(优先用户设置,其次系统默认配置)\n this.customerCompress = this.compressConfig.customerCompress ?? this.parseBoolean(this.userConfig?.defaultCustomerCompress, true);\n this.compressQuality = this.compressConfig.compressQuality ?? this.parseNumber(this.userConfig?.defaultCompressQuality, 4);\n this.compressBar = this.compressConfig.compressBar ?? this.parseNumber(this.userConfig?.defaultCompressBar, 5);\n this.serverCompress = this.compressConfig.serverCompress ?? true;\n this.convertToWebp = this.compressConfig.convertToWebp ?? this.parseBoolean(this.userConfig?.defaultConvertToWebp, false);\n // 读取用户选择的上传渠道\n this.uploadChannel = this.storeUploadChannel || this.userConfig?.defaultUploadChannel || 'telegram';\n // 用户定义的失败自动切换\n this.autoRetry = this.storeAutoRetry;\n // 读取用户选择的上传文件命名方式\n this.uploadNameType = this.storeUploadNameType || this.userConfig?.defaultUploadNameType || 'default';\n // 读取用户自定义链接格式\n this.customUrlPrefix = this.customUrlSettings.customUrlPrefix;\n this.useCustomUrl = this.customUrlSettings.useCustomUrl;\n // 读取用户偏好的上传方式\n this.uploadMethod = this.storeUploadMethod;\n // 获取可用渠道列表\n this.fetchAvailableChannels();\n // 读取用户设置的上传文件夹\n this.uploadFolder = this.storeUploadFolder || this.userConfig?.defaultUploadFolder || '';\n\n // 从 Vuex store 读取主题模式状态\n const cusDarkMode = this.$store.getters.cusDarkMode;\n const useDarkMode = this.$store.getters.useDarkMode;\n if (!cusDarkMode) {\n this.themeMode = 'auto';\n } else if (useDarkMode) {\n this.themeMode = 'dark';\n } else {\n this.themeMode = 'light';\n }\n this.showAnnouncementIfNeeded();\n },\n components: {\n UploadForm,\n Footer,\n ToggleDark,\n Logo,\n UploadHistory,\n UploadSettingsDialog,\n DirectoryTreePicker,\n DirectorySuggestionInput\n },\n methods: {\n // 获取可用渠道列表\n async fetchAvailableChannels() {\n try {\n const response = await axios.get('/api/channels', {\n withAuthCode: true\n });\n if (response.data) {\n this.availableChannels = response.data;\n // 恢复渠道名称:优先持久化的值,其次系统默认配置\n const savedChannelName = this.storeChannelName;\n const defaultChannelName = this.userConfig?.defaultChannelName;\n const currentChannelList = this.availableChannels[this.uploadChannel] || [];\n\n // 如果用户主动清空过(savedChannelName === ''),则保持为空\n // 如果从未选择过(savedChannelName === null/undefined),则使用默认值\n if (savedChannelName && currentChannelList.some(ch => ch.name === savedChannelName)) {\n this.channelName = savedChannelName;\n } else if (savedChannelName === '' || savedChannelName === null || savedChannelName === undefined) {\n // 用户主动清空或从未选择,检查是否使用默认值\n if (savedChannelName !== '' && defaultChannelName && currentChannelList.some(ch => ch.name === defaultChannelName)) {\n this.channelName = defaultChannelName;\n }\n // 如果 savedChannelName === '',说明用户主动清空,保持为空\n }\n }\n } catch (error) {\n console.error('Failed to fetch available channels:', error);\n }\n },\n // 验证上传文件夹路径的合法性\n validateUploadFolder(path, strict = true) {\n // 自动补全前导 /\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n this.uploadFolder = path;\n }\n const result = validateFolderPath(path, {\n strict\n });\n if (!result.valid) {\n this.$message.error(result.error);\n return false;\n }\n return true;\n },\n handleFolderInputFocus() {\n this.isFolderInputActive = true;\n },\n handleFolderInputBlur() {\n this.isFolderInputActive = false;\n // 失焦时自动补全前导 /\n if (this.uploadFolder && !this.uploadFolder.startsWith('/')) {\n this.uploadFolder = '/' + this.uploadFolder;\n }\n // 失焦时做完整校验(包括末尾单独的 .)\n if (!this.validateUploadFolder(this.uploadFolder, true)) {\n this.$nextTick(() => {\n this.uploadFolder = this.storeUploadFolder;\n });\n }\n },\n handleManage() {\n this.$router.push('/dashboard');\n },\n // 解析布尔值\n parseBoolean(value, defaultValue) {\n if (value === undefined || value === null) return defaultValue;\n if (typeof value === 'boolean') return value;\n if (typeof value === 'string') return value === 'true';\n return defaultValue;\n },\n // 解析数字\n parseNumber(value, defaultValue) {\n if (value === undefined || value === null) return defaultValue;\n const num = parseFloat(value);\n return isNaN(num) ? defaultValue : num;\n },\n openUrlDialog() {\n this.showUrlDialog = true;\n },\n handleLogout() {\n axios.post('/api/auth/logout', {\n authType: 'user'\n }, {\n withCredentials: true\n }).finally(() => {\n this.$store.commit('setUserLoggedIn', false);\n this.$router.push('/login');\n this.$message.success(this.$t('upload.logoutSuccess'));\n });\n },\n changeUrlForm() {\n this.$store.commit('setUploadCopyUrlForm', this.selectedUrlForm);\n },\n openCompressDialog() {\n this.showCompressDialog = true;\n },\n updateCompressConfig(key, value) {\n this.$store.commit('setCompressConfig', {\n key,\n value\n });\n },\n updateStoreUploadChannel(value) {\n this.$store.commit('setStoreUploadChannel', value);\n },\n updateStoreUploadNameType(value) {\n this.$store.commit('setStoreUploadNameType', value);\n },\n handleQuickToolbarMoreEnter() {\n this.isQuickToolbarOpen = true;\n },\n handleQuickToolbarLeave() {\n if (!this.isQuickToolbarPinned) {\n this.isQuickToolbarOpen = false;\n }\n },\n toggleQuickToolbar() {\n this.isQuickToolbarPinned = !this.isQuickToolbarPinned;\n this.isQuickToolbarOpen = this.isQuickToolbarPinned;\n },\n closeQuickToolbar() {\n this.isQuickToolbarPinned = false;\n this.isQuickToolbarOpen = false;\n },\n handleQuickToolbarCommand(command) {\n this.closeQuickToolbar();\n if (command === 'linkFormat') {\n this.openUrlDialog();\n } else if (command === 'manage') {\n this.handleManage();\n } else if (command === 'logout') {\n this.handleLogout();\n }\n },\n handleChangeUploadMethod() {\n this.uploadMethod = this.uploadMethod === 'default' ? 'paste' : 'default';\n this.$store.commit('setUploadMethod', this.uploadMethod);\n },\n handleMobileMenuCommand(command) {\n if (command === 'toggleTheme') {\n // 循环切换:auto -> light -> dark -> auto\n if (this.themeMode === 'auto') {\n // 切换到亮色\n this.themeMode = 'light';\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', false);\n } else if (this.themeMode === 'light') {\n // 切换到暗色\n this.themeMode = 'dark';\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', true);\n } else {\n // 切换到自动\n this.themeMode = 'auto';\n this.$store.commit('setCusDarkMode', false);\n }\n } else if (command === 'toggleUploadMethod') {\n this.handleChangeUploadMethod();\n } else if (command === 'viewDocs') {\n window.open('https://cfbed.sanyue.de/qa/', '_blank');\n } else if (command === 'showHistory') {\n this.showHistory = true;\n } else if (command === 'showAnnouncement') {\n this.handleShowAnnouncement();\n } else if (command === 'toggleLanguage') {\n const next = this.$i18n.locale === 'zh-CN' ? 'en' : 'zh-CN';\n setLocale(next);\n }\n },\n handleDesktopMenuCommand(command) {\n if (command === 'viewDocs') {\n window.open('https://cfbed.sanyue.de/qa/', '_blank');\n } else if (command === 'showHistory') {\n this.showHistory = true;\n } else if (command === 'showAnnouncement') {\n this.handleShowAnnouncement();\n } else if (command === 'toggleLanguage') {\n const next = this.$i18n.locale === 'zh-CN' ? 'en' : 'zh-CN';\n setLocale(next);\n }\n },\n getThemeIcon() {\n // 显示下一个模式的图标\n if (this.themeMode === 'auto') return 'sun'; // auto -> light\n if (this.themeMode === 'light') return 'moon'; // light -> dark\n return 'adjust'; // dark -> auto\n },\n getThemeText() {\n // 显示下一个模式的文字\n if (this.themeMode === 'auto') return this.$t('theme.lightMode');\n if (this.themeMode === 'light') return this.$t('theme.darkMode');\n return this.$t('theme.autoMode');\n },\n handleShowAnnouncement() {\n const announcement = this.userConfig?.announcement;\n if (announcement) {\n this.openAnnouncement(announcement);\n } else {\n this.$message.info(this.$t('upload.noAnnouncement'));\n }\n },\n getAnnouncementRefreshAt() {\n const refreshAt = Number(this.userConfig?.announcementRefreshAt);\n return Number.isFinite(refreshAt) && refreshAt > 0 ? refreshAt : null;\n },\n openAnnouncement(announcement) {\n this.announcementContent = announcement;\n this.displayedAnnouncementRefreshAt = this.getAnnouncementRefreshAt();\n this.showAnnouncementDialog = true;\n },\n showAnnouncementIfNeeded() {\n const announcement = this.userConfig?.announcement;\n if (!announcement) return;\n const refreshAt = this.getAnnouncementRefreshAt();\n if (refreshAt) {\n const acknowledgedRefreshAt = Number(localStorage.getItem('announcementAcknowledgedRefreshAt'));\n if (!Number.isFinite(acknowledgedRefreshAt) || refreshAt > acknowledgedRefreshAt) {\n this.openAnnouncement(announcement);\n }\n return;\n }\n\n // 尚未产生刷新时间的旧公告在升级后再展示一次,确认后使用新版时间标记。\n if (!localStorage.getItem('announcementAcknowledgedAt')) {\n this.openAnnouncement(announcement);\n }\n },\n acknowledgeAnnouncement() {\n localStorage.setItem('announcementAcknowledgedAt', String(Date.now()));\n if (this.displayedAnnouncementRefreshAt) {\n localStorage.setItem('announcementAcknowledgedRefreshAt', String(this.displayedAnnouncementRefreshAt));\n }\n this.showAnnouncementDialog = false;\n },\n // 处理目录选择\n handleDirectorySelect(path) {\n // 填入选择的目录路径\n this.uploadFolder = path;\n // 触发路径验证逻辑\n if (this.validateUploadFolder(path, true)) {\n this.$store.commit('setStoreUploadFolder', path);\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadHome.vue?vue&type=template&id=9426cafc&scoped=true\"\nimport script from \"./UploadHome.vue?vue&type=script&lang=js\"\nexport * from \"./UploadHome.vue?vue&type=script&lang=js\"\n\nimport \"./UploadHome.vue?vue&type=style&index=0&id=9426cafc&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-9426cafc\"]])\n\nexport default __exports__","import store from '@/store'\r\nimport router from '@/router'\r\n\r\nlet isRedirecting = false;\r\n\r\nexport default async function fetchWithAuth(url, options = {}) {\r\n // 开发环境下添加 /api 前缀\r\n url = process.env.NODE_ENV === 'production' ? url : `/api${url}`;\r\n\r\n // 确保包含凭据(HttpOnly Cookie 会自动携带)\r\n options.credentials = 'include';\r\n\r\n options.headers = {\r\n ...options.headers,\r\n };\r\n\r\n const response = await fetch(url, options);\r\n\r\n if (response.status === 401 && !isRedirecting) {\r\n isRedirecting = true;\r\n store.commit('setAdminLoggedIn', false);\r\n // 静默跳转登录页,不弹出错误提示(路由守卫负责认证 UX)\r\n router.push('/adminLogin').finally(() => {\r\n isRedirecting = false;\r\n });\r\n }\r\n\r\n return response;\r\n}\r\n","module.exports = require(\"./build/conversion.js\");\n","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from \"vue\";\nconst _hoisted_1 = {\n key: 0,\n class: \"page-footer\"\n};\nconst _hoisted_2 = [\"href\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return !$options.disableFooter ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"p\", null, [_createTextVNode(\"© 2024-\" + _toDisplayString($options.thisYear) + \" Designed by \", 1), _cache[0] || (_cache[0] = _createElementVNode(\"a\", {\n class: \"footer-name\",\n href: \"https://github.com/MarSeventh\",\n target: \"_blank\"\n }, \"SanyueQi\", -1)), _cache[1] || (_cache[1] = _createTextVNode(\" for You! \", -1)), _createElementVNode(\"a\", {\n href: $options.footerLink,\n target: \"_blank\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"paper-plane\",\n class: \"footer-link-icon\"\n })], 8, _hoisted_2)])])) : _createCommentVNode(\"\", true);\n}","import { mapGetters } from 'vuex';\nexport default {\n name: 'Footer',\n computed: {\n ...mapGetters(['userConfig']),\n footerLink() {\n return this.userConfig?.footerLink || 'https://github.com/MarSeventh';\n },\n thisYear() {\n return new Date().getFullYear();\n },\n disableFooter() {\n return this.userConfig?.disableFooter || false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./Footer.vue?vue&type=template&id=08acbaa9&scoped=true\"\nimport script from \"./Footer.vue?vue&type=script&lang=js\"\nexport * from \"./Footer.vue?vue&type=script&lang=js\"\n\nimport \"./Footer.vue?vue&type=style&index=0&id=08acbaa9&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-08acbaa9\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, mergeProps as _mergeProps, createStaticVNode as _createStaticVNode } from \"vue\";\nconst _hoisted_1 = {\n key: 0,\n class: \"channel-svg-icon\",\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = {\n key: 1,\n class: \"channel-svg-icon\",\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_3 = {\n key: 2,\n class: \"channel-svg-icon\",\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"span\", _mergeProps(_ctx.$attrs, {\n class: ['channel-icon-wrapper', `channel-brand-${$props.type}`]\n }), [$props.type === 'telegram' ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [...(_cache[0] || (_cache[0] = [_createElementVNode(\"path\", {\n d: \"M417.28 795.733333 429.226667 615.253333 756.906667 320C771.413333 306.773333 753.92 300.373333 734.72 311.893333L330.24 567.466667 155.306667 512C117.76 501.333333 117.333333 475.306667 163.84 456.533333L845.226667 193.706667C876.373333 179.626667 906.24 201.386667 894.293333 249.173333L778.24 795.733333C770.133333 834.56 746.666667 843.946667 714.24 826.026667L537.6 695.466667 452.693333 777.813333C442.88 787.626667 434.773333 795.733333 417.28 795.733333Z\"\n }, null, -1)]))])) : $props.type === 'huggingface' ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_2, [...(_cache[1] || (_cache[1] = [_createStaticVNode(\"\", 9)]))])) : $props.type === 'webdav' ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_3, [...(_cache[2] || (_cache[2] = [_createElementVNode(\"path\", {\n d: \"M446.293333 810.666667C384 898.986667 262.4 921.173333 174.506667 859.733333c-87.466667-61.44-107.946667-183.893333-46.506667-273.066666a195.626667 195.626667 0 0 1 152.746667-84.48l2.133333 61.013333c-38.826667 2.986667-76.373333 23.04-100.693333 58.026667-42.666667 61.44-29.44 144.213333 29.013333 185.6 58.88 40.96 141.226667 25.173333 183.893333-35.84 13.226667-19.2 20.906667-40.106667 23.893334-61.44v-43.093334l238.08-1.706666 2.986666-4.693334c22.613333-39.253333 71.68-52.906667 110.08-30.72a81.066667 81.066667 0 0 1 29.013334 110.933334c-22.613333 38.826667-72.106667 52.48-110.506667 30.293333-17.493333-9.813333-29.866667-25.6-35.413333-43.52l-173.653334 0.853333a211.626667 211.626667 0 0 1-33.28 82.773334m310.613334-304.64c107.946667 13.226667 184.746667 110.08 171.52 216.32-13.226667 106.666667-111.36 182.186667-219.306667 168.96a197.504 197.504 0 0 1-146.346667-94.293334l52.906667-30.72a137.386667 137.386667 0 0 0 98.986667 61.866667c74.666667 8.96 140.8-41.813333 149.76-113.066667 8.96-71.253333-43.946667-136.533333-117.76-145.493333-23.04-2.56-45.226667 0.426667-65.28 7.68l-36.266667 18.773333-110.08-203.52h-9.386667a81.322667 81.322667 0 0 1-78.933333-83.2c1.28-44.373333 39.68-78.933333 84.48-77.226666 44.8 2.56 80.213333 38.826667 78.933333 83.2-0.853333 18.773333-8.106667 35.84-19.626666 49.066666l81.066666 149.76c26.453333-8.533333 55.466667-11.52 85.333334-8.106666M352 389.973333c-42.666667-100.266667 2.56-215.04 101.12-256.853333 98.986667-41.813333 213.333333 5.546667 256 105.813333 25.173333 58.453333 20.053333 122.453333-8.533333 173.653334l-52.906667-30.72c17.92-34.56 20.906667-76.8 3.84-116.48-29.013333-68.266667-106.24-101.12-172.373333-73.386667-66.56 28.16-96.426667 106.666667-67.413334 174.933333 11.946667 28.16 32 49.92 56.32 64.426667l16.64 8.96-130.986666 212.906667c1.28 2.133333 2.986667 4.693333 4.266666 8.106666 20.906667 38.826667 6.4 87.893333-32.853333 108.8-38.826667 20.906667-87.893333 5.546667-109.226667-34.56-20.906667-39.68-6.4-88.746667 32.853334-109.653333 16.64-8.96 34.986667-11.093333 52.48-7.253333l98.56-160.853334c-20.053333-18.346667-37.12-41.386667-47.786667-67.84z\"\n }, null, -1)]))])) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 3,\n icon: $options.fontAwesomeIcon\n }, null, 8, [\"icon\"]))], 16);\n}","export default {\n name: 'ChannelIcon',\n inheritAttrs: false,\n props: {\n type: {\n type: String,\n required: true\n }\n },\n computed: {\n fontAwesomeIcon() {\n const icons = {\n cfr2: ['fab', 'cloudflare'],\n s3: ['fab', 'aws'],\n discord: ['fab', 'discord']\n };\n return icons[this.type] || 'server';\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./ChannelIcon.vue?vue&type=template&id=ce6ff2ce&scoped=true\"\nimport script from \"./ChannelIcon.vue?vue&type=script&lang=js\"\nexport * from \"./ChannelIcon.vue?vue&type=script&lang=js\"\n\nimport \"./ChannelIcon.vue?vue&type=style&index=0&id=ce6ff2ce&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-ce6ff2ce\"]])\n\nexport default __exports__"],"names":["t","e","module","exports","this","n","r","o","i","l","call","m","c","d","Object","defineProperty","enumerable","get","Symbol","toStringTag","value","__esModule","create","bind","default","prototype","hasOwnProperty","p","s","some","a","f","g","w","b","PNG","JPEG","GIF","Promise","u","next","throw","done","then","apply","toDataURL","toBlob","split","match","atob","length","Uint8Array","charCodeAt","Blob","type","Image","onload","onerror","Error","src","document","createElement","href","window","URL","createObjectURL","download","Date","now","toString","body","appendChild","createEvent","initEvent","dispatchEvent","removeChild","FileReader","onloadend","target","result","readAsDataURL","h","assign","getContext","Number","scale","width","height","orientation","rotate","Math","PI","drawImage","translate","fetch","blob","y","quality","isNaN","size","accuracy","filter","sort","abs","pow","v","_hoisted_1","class","_hoisted_2","_hoisted_3","key","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","_component_el_tree","_component_el_popover","_component_el_drawer","_directive_loading","isDesktop","visible","popoverVisible","$event","placement","trigger","transition","reference","onClick","$slots","undefined","error","icon","fetchDirectoryTree","$t","_","ref","data","treeData","props","treeProps","currentDirectory","onNodeClick","handleNodeClick","node","path","expanded","name","loading","args","openDrawer","modelValue","drawerVisible","direction","title","String","source","validator","includes","children","label","windowWidth","innerWidth","computed","watch","newVal","setTimeout","$refs","treeRef","store","nodesMap","treeRefMobile","$nextTick","setCurrentKey","mounted","addEventListener","handleResize","beforeUnmount","removeEventListener","methods","response","fetchWithAuth","method","ok","status","json","axios","withAuthCode","tree","err","console","startsWith","$emit","__exports__","id","handleToggleClick","mode","isAuto","style","isDark","viewBox","fill","stroke","x","cx","cy","mask","opacity","x1","y1","x2","y2","$store","getters","useDarkMode","cusDarkMode","commit","logoHref","logo","link","logoClasses","alt","logoUrl","customSrc","position","enableHover","Boolean","useConfigLink","userConfig","logoLink","validateFolderPath","strict","trim","valid","i18n","global","test","dotPattern","invalidChars","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_component_el_tooltip","show","count","totalCount","content","circle","toggleViewMode","viewMode","clearHistory","historyList","onScroll","handleScroll","groupedHistory","group","date","items","item","time","isImage","url","onError","handleImageError","isVideo","muted","copyLink","openLink","deleteItem","formatTime","hasMore","loadingMore","spin","allHistory","pageSize","currentPage","val","resetAndLoad","groups","forEach","dateStr","getFullYear","getMonth","padStart","getDate","push","keys","map","savedMode","localStorage","getItem","loadAllHistory","loadMore","history","JSON","parse","start","end","newItems","slice","container","scrollTop","scrollHeight","clientHeight","setItem","$confirm","confirmButtonText","cancelButtonText","removeItem","$message","success","catch","stringify","fileName","imageExtensions","extension","pop","toLowerCase","videoExtensions","timestamp","year","month","day","hours","getHours","minutes","getMinutes","seconds","getSeconds","navigator","clipboard","writeText","open","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_hoisted_41","_component_el_radio_button","_component_el_radio_group","_component_ChannelIcon","_component_el_radio","_component_el_option","_component_el_select","_component_el_input","_component_el_switch","_component_el_slider","_component_el_input_number","_component_el_dialog","dialogWidth","channelVisibility","onChange","handleChannelVisibilityChange","uploadChannel","visibleChannelOptions","channel","currentChannelList","channelName","placeholder","clearable","ch","uploadFolder","handleUploadFolderInput","autoRetry","uploadNameType","convertToWebp","customerCompress","compressBar","min","max","step","compressQuality","precision","serverCompress","CHANNEL_OPTIONS","components","ChannelIcon","hasConfiguredChannels","channelType","channels","availableChannels","Array","isArray","visibility","ensureConfiguredChannelSelected","firstConfiguredChannel","emits","handler","deep","set","autoplay","playsinline","loop","_component_el_text","_component_el_progress","_component_Link","_component_el_icon","_component_Delete","file","truncated","truncateFilename","finalURL","readonly","selectAllText","urlSize","prepend","mdURL","htmlURL","ubbURL","percentage","progreess","IMAGE_EXTENSIONS","VIDEO_EXTENSIONS","Link","Delete","required","ext","filename","maxLength","lastDotIndex","lastIndexOf","substring","keepEnd","keepStart","event","message","tabindex","_component_el_upload","_component_el_card","_component_List","_component_Checked","_component_Failed","_component_el_dropdown_item","_component_el_dropdown_menu","_component_el_dropdown","_component_UploadFileItem","_component_el_scrollbar","onMousemove","handleUploadCardMouseMove","onMouseleave","handleUploadCardMouseLeave","onDropCapture","handleDrop","uploadMethod","uploading","fileList","drag","multiple","uploadFile","onSuccess","handleSuccess","handleError","beforeUpload","handleProgress","innerHTML","pasteShortcut","disabled","disableTooltip","openFolderPicker","webkitdirectory","directory","handleFolderSelection","pastedUrls","rows","pasteCardMethodButtonSize","handleUploadPasteUrls","pasteUploadMethod","role","listScrolled","uploadingCount","waitingCount","uploadSuccessCount","uploadErrorCount","copyAll","dropdown","autoReUpload","handleAutoRetryChange","retryError","clearFileList","clearSuccessList","reverse","uid","onCopy","handleCopy","onRemove","handleRemove","onPreviewError","buildFileUrls","srcID","rootUrl","getUrlByFormat","format","md","html","ubb","updateFileListUrls","urls","K","Uint32Array","rotr","processBlock","block","H","W","s0","s1","S1","temp1","S0","maj","temp2","createSha256","buffer","bufferLength","totalLength","update","offset","needed","toCopy","subarray","digest","bitLength","view","DataView","setUint32","floor","hex","async","computeSha256","sha256","CHUNK_SIZE","chunk","arrayBuffer","log","round","normalizePath","replace","segment","join","getRelativeDirectory","relativePath","normalizedPath","lastSlashIndex","joinUploadFolder","baseFolder","relativeDirectory","hasLeadingSlash","joinedPath","filesToUploadEntries","files","from","webkitRelativePath","readFileEntry","entry","resolve","reject","readAllDirectoryEntries","directoryEntry","reader","createReader","entries","batch","readEntries","collectFromEntry","parentPath","isFile","isDirectory","child","collectFromHandle","handle","kind","values","getFile","collectFilesFromDataTransferItems","fileItems","handles","all","getAsFileSystemHandle","index","webkitGetAsEntry","getAsFile","UploadFileItem","selectedUrlForm","useCustomUrl","customUrlPrefix","urlPrefix","maxUploading","exceptionList","fileListLength","localUidCounter","maxRetryCount","retryTimer","retryDelay","uploadQueue","activeUploads","maxConcurrentUploads","abortControllers","Map","pasteFocusTarget","scrollContainer","setScrollTop","immediate","platform","userAgentData","location","protocol","host","handlePaste","handlePasteShortcut","storeAutoReUpload","createLocalUid","applyUploadPath","normalizedRelativePath","uploadRelativePath","copyUploadPath","sourceFile","targetFile","getFileUploadFolder","fileItem","find","createUploadRequest","onProgress","evt","uploadedFile","uploadLocalEntries","allSettled","processedFile","File","folderInput","click","dataTransfer","waitingItem","uploadingItem","uploadSingleFile","HF_DIRECT_THRESHOLD","uploadToHuggingFaceDirect","DISCORD_CHUNK_THRESHOLD","uploadFileInChunks","CHUNK_THRESHOLD","processUploadQueue","nextFile","shift","onUploadComplete","needServerCompress","targetUploadFolder","abortController","AbortController","formData","FormData","append","encodeURIComponent","signal","onUploadProgress","progressEvent","percentCompleted","loaded","total","percent","res","code","finally","delete","fileSize","fileType","totalChunks","ceil","precomputedSha256","initFormData","initResponse","uploadId","maxConcurrency","chunkProgress","nextChunkIndex","hasError","errorMsg","isCancelled","uploadChunk","chunkIndex","retryCount","maxRetries","totalPercent","reduce","warn","pool","currentIndex","duration","mergeFormData","closeAll","cleanupUploadResources","cleanupError","has","abort","timeout","saveToHistory","newRecord","scheduleAutoRetry","canConvertToWebp","convertedFile","convertImageToWebp","toFixed","needCustomCompress","isLtLim","pushFileToQueue","fileUrl","newFile","controller","clear","isEditablePasteTarget","element","nodeType","Node","TEXT_NODE","parentElement","tagName","isContentEditable","closest","isPasteShortcut","ctrlKey","metaKey","altKey","receiver","clipboardPasteReceiver","activeElement","focus","preventScroll","releasePasteReceiver","focusTarget","isConnected","blur","isPasteReceiver","clipboardData","stringItems","fileEntries","preventDefault","uploadFromUrl","validUrls","getAsString","callback","mdUrl","htmlUrl","ubbUrl","text","urlPattern","post","responseType","headers","disposition","filenameRegex","filenameStarRegex","matches","exec","decodeURIComponent","pathname","checkResult","filesToRetry","retryFailedFiles","isManualRetry","clearTimeout","aborted","sampleBytes","fileSample","btoa","fromCharCode","uploadInfoRes","uploadInfo","alreadyExists","needsLfs","uploadAction","header","chunk_size","uploadToHuggingFaceMultipart","uploadRes","commitRes","fullId","filePath","formattedResponse","completionUrl","chunkSize","parseInt","parts","completeParts","totalParts","part","DOMException","etag","partNumber","progress","completeResponse","oid","img","canvas","ctx","originalName","newName","webpFile","revokeObjectURL","glow","uploadCardGlow","rect","currentTarget","getBoundingClientRect","clientX","left","clientY","top","beforeDestroy","inputValue","onFocus","handleFocus","onBlur","handleBlur","onInput","handleInput","suggestions","onMousedown","selectItem","dropdownVisible","directoryTreeRoot","directoryTreeLoaded","directoryTreeLoading","directoryChildrenMap","focusTime","isFocused","refreshSuggestions","ensureDirectoryTreeLoaded","normalizeDirectoryPath","inputRef","getDirectorySuggestions","normalized","endsWith","buildDirectoryChildrenMap","treeRoot","walk","parseDirectoryQuery","normalizedInput","raw","segmentInput","parentSegments","queryString","parentChildren","keyword","_component_ToggleDark","_component_DirectorySuggestionInput","_component_DirectoryTreePicker","_component_Logo","_component_UploadForm","_component_UploadSettingsDialog","_component_Footer","_component_UploadHistory","onCommand","handleDesktopMenuCommand","command","announcementAvailable","$i18n","locale","isFolderInputActive","showDirectorySuggestions","handleFolderInputFocus","handleFolderInputBlur","onSelect","handleDirectorySelect","handleChangeUploadMethod","handleMobileMenuCommand","getThemeIcon","getThemeText","isQuickToolbarOpen","handleQuickToolbarLeave","handleQuickToolbarCommand","openCompressDialog","onMouseenter","handleQuickToolbarMoreEnter","toggleQuickToolbar","ownerName","showUrlDialog","changeUrlForm","showCompressDialog","showAnnouncementDialog","center","footer","acknowledgeAnnouncement","announcementContent","showHistory","onClose","mixins","backgroundManager","useDefaultWallPaper","isQuickToolbarPinned","displayedAnnouncementRefreshAt","themeMode","updateCompressConfig","updateStoreUploadChannel","newChannelList","savedChannelName","storeChannelName","updateStoreUploadNameType","validateUploadFolder","strictResult","storeUploadFolder","announcement","initializeBackground","uploadCopyUrlForm","compressConfig","parseBoolean","defaultCustomerCompress","parseNumber","defaultCompressQuality","defaultCompressBar","defaultConvertToWebp","storeUploadChannel","defaultUploadChannel","storeAutoRetry","storeUploadNameType","defaultUploadNameType","customUrlSettings","storeUploadMethod","fetchAvailableChannels","defaultUploadFolder","showAnnouncementIfNeeded","UploadForm","Footer","ToggleDark","Logo","UploadHistory","UploadSettingsDialog","DirectoryTreePicker","DirectorySuggestionInput","defaultChannelName","handleManage","$router","defaultValue","num","parseFloat","openUrlDialog","handleLogout","authType","withCredentials","closeQuickToolbar","handleShowAnnouncement","openAnnouncement","info","getAnnouncementRefreshAt","refreshAt","announcementRefreshAt","isFinite","acknowledgedRefreshAt","isRedirecting","options","credentials","router","disableFooter","thisYear","footerLink","xmlns","$attrs","fontAwesomeIcon","inheritAttrs","icons","cfr2","s3","discord"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"js/502.ff024e4c.js","mappings":"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","sources":["webpack://sanyue_imghub/./node_modules/image-conversion/build/conversion.js","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue?9e0f","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue?6984","webpack://sanyue_imghub/./src/components/ToggleDark.vue?611b","webpack://sanyue_imghub/./src/components/ToggleDark.vue","webpack://sanyue_imghub/./src/components/ToggleDark.vue?0bce","webpack://sanyue_imghub/./src/components/Logo.vue?235d","webpack://sanyue_imghub/./src/components/Logo.vue","webpack://sanyue_imghub/./src/components/Logo.vue?4125","webpack://sanyue_imghub/./src/utils/pathValidator.js","webpack://sanyue_imghub/./src/components/upload/UploadHistory.vue?942e","webpack://sanyue_imghub/./src/components/upload/UploadHistory.vue","webpack://sanyue_imghub/./src/components/upload/UploadHistory.vue?d5f5","webpack://sanyue_imghub/./src/components/upload/UploadSettingsDialog.vue?8a66","webpack://sanyue_imghub/./src/components/upload/UploadSettingsDialog.vue","webpack://sanyue_imghub/./src/components/upload/UploadSettingsDialog.vue?adb2","webpack://sanyue_imghub/./src/components/upload/UploadFileItem.vue?e1ad","webpack://sanyue_imghub/./src/components/upload/UploadFileItem.vue","webpack://sanyue_imghub/./src/components/upload/UploadFileItem.vue?420c","webpack://sanyue_imghub/./src/components/upload/UploadForm.vue?2068","webpack://sanyue_imghub/./src/utils/upload/urlBuilder.js","webpack://sanyue_imghub/./src/utils/upload/sha256.js","webpack://sanyue_imghub/./src/utils/upload/directoryTraversal.js","webpack://sanyue_imghub/./src/components/upload/UploadForm.vue","webpack://sanyue_imghub/./src/components/upload/UploadForm.vue?bdbd","webpack://sanyue_imghub/./src/components/DirectorySuggestionInput.vue?6707","webpack://sanyue_imghub/./src/components/DirectorySuggestionInput.vue","webpack://sanyue_imghub/./src/components/DirectorySuggestionInput.vue?69c3","webpack://sanyue_imghub/./src/views/UploadHome.vue?05cf","webpack://sanyue_imghub/./src/views/UploadHome.vue","webpack://sanyue_imghub/./src/views/UploadHome.vue?af00","webpack://sanyue_imghub/./src/utils/fetchWithAuth.js","webpack://sanyue_imghub/./node_modules/image-conversion/index.js","webpack://sanyue_imghub/./src/components/Footer.vue?4f81","webpack://sanyue_imghub/./src/components/Footer.vue","webpack://sanyue_imghub/./src/components/Footer.vue?d468","webpack://sanyue_imghub/./src/components/icons/ChannelIcon.vue?3436","webpack://sanyue_imghub/./src/components/icons/ChannelIcon.vue","webpack://sanyue_imghub/./src/components/icons/ChannelIcon.vue?8c05"],"sourcesContent":["!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.imageConversion=e():t.imageConversion=e()}(this,(function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=0)}([function(t,e,n){\"use strict\";var r;function o(t){return[\"image/png\",\"image/jpeg\",\"image/gif\"].some(e=>e===t)}n.r(e),n.d(e,\"canvastoDataURL\",(function(){return a})),n.d(e,\"canvastoFile\",(function(){return c})),n.d(e,\"dataURLtoFile\",(function(){return s})),n.d(e,\"dataURLtoImage\",(function(){return l})),n.d(e,\"downloadFile\",(function(){return d})),n.d(e,\"filetoDataURL\",(function(){return f})),n.d(e,\"imagetoCanvas\",(function(){return g})),n.d(e,\"urltoBlob\",(function(){return w})),n.d(e,\"urltoImage\",(function(){return m})),n.d(e,\"compress\",(function(){return p})),n.d(e,\"compressAccurately\",(function(){return b})),n.d(e,\"EImageType\",(function(){return r})),function(t){t.PNG=\"image/png\",t.JPEG=\"image/jpeg\",t.GIF=\"image/gif\"}(r||(r={}));var i=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function a(t,e=.92,n=r.JPEG){return i(this,void 0,void 0,(function*(){return o(n)||(n=r.JPEG),t.toDataURL(n,e)}))}function c(t,e=.92,n=r.JPEG){return new Promise(r=>t.toBlob(t=>r(t),n,e))}var u=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function s(t,e){return u(this,void 0,void 0,(function*(){const n=t.split(\",\");let r=n[0].match(/:(.*?);/)[1];const i=atob(n[1]);let a=i.length;const c=new Uint8Array(a);for(;a--;)c[a]=i.charCodeAt(a);return o(e)&&(r=e),new Blob([c],{type:r})}))}function l(t){return new Promise((e,n)=>{const r=new Image;r.onload=()=>e(r),r.onerror=()=>n(new Error(\"dataURLtoImage(): dataURL is illegal\")),r.src=t})}function d(t,e){const n=document.createElement(\"a\");n.href=window.URL.createObjectURL(t),n.download=e||Date.now().toString(36),document.body.appendChild(n);const r=document.createEvent(\"MouseEvents\");r.initEvent(\"click\",!1,!1),n.dispatchEvent(r),document.body.removeChild(n)}function f(t){return new Promise(e=>{const n=new FileReader;n.onloadend=t=>e(t.target.result),n.readAsDataURL(t)})}var h=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function g(t,e={}){return h(this,void 0,void 0,(function*(){const n=Object.assign({},e),r=document.createElement(\"canvas\"),o=r.getContext(\"2d\");let i,a;for(const t in n)Object.prototype.hasOwnProperty.call(n,t)&&(n[t]=Number(n[t]));if(n.scale){const e=n.scale>0&&n.scale<10?n.scale:1;a=t.width*e,i=t.height*e}else a=n.width||n.height*t.width/t.height||t.width,i=n.height||n.width*t.height/t.width||t.height;switch([5,6,7,8].some(t=>t===n.orientation)?(r.height=a,r.width=i):(r.height=i,r.width=a),n.orientation){case 3:o.rotate(180*Math.PI/180),o.drawImage(t,-r.width,-r.height,r.width,r.height);break;case 6:o.rotate(90*Math.PI/180),o.drawImage(t,0,-r.width,r.height,r.width);break;case 8:o.rotate(270*Math.PI/180),o.drawImage(t,-r.height,0,r.height,r.width);break;case 2:o.translate(r.width,0),o.scale(-1,1),o.drawImage(t,0,0,r.width,r.height);break;case 4:o.translate(r.width,0),o.scale(-1,1),o.rotate(180*Math.PI/180),o.drawImage(t,-r.width,-r.height,r.width,r.height);break;case 5:o.translate(r.width,0),o.scale(-1,1),o.rotate(90*Math.PI/180),o.drawImage(t,0,-r.width,r.height,r.width);break;case 7:o.translate(r.width,0),o.scale(-1,1),o.rotate(270*Math.PI/180),o.drawImage(t,-r.height,0,r.height,r.width);break;default:o.drawImage(t,0,0,r.width,r.height)}return r}))}function w(t){return fetch(t).then(t=>t.blob())}function m(t){return new Promise((e,n)=>{const r=new Image;r.onload=()=>e(r),r.onerror=()=>n(new Error(\"urltoImage(): Image failed to load, please check the image URL\")),r.src=t})}var y=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function p(t,e={}){return y(this,void 0,void 0,(function*(){if(!(t instanceof Blob))throw new Error(\"compress(): First arg must be a Blob object or a File object.\");if(\"object\"!=typeof e&&(e=Object.assign({quality:e})),e.quality=Number(e.quality),Number.isNaN(e.quality))return t;const n=yield f(t);let i=n.split(\",\")[0].match(/:(.*?);/)[1],c=r.JPEG;o(e.type)&&(c=e.type,i=e.type);const u=yield l(n),d=yield g(u,Object.assign({},e)),h=yield a(d,e.quality,c),w=yield s(h,i);return w.size>t.size?t:w}))}function b(t,e={}){return y(this,void 0,void 0,(function*(){if(!(t instanceof Blob))throw new Error(\"compressAccurately(): First arg must be a Blob object or a File object.\");if(\"object\"!=typeof e&&(e=Object.assign({size:e})),e.size=Number(e.size),Number.isNaN(e.size))return t;if(1024*e.size>t.size)return t;e.accuracy=Number(e.accuracy),(!e.accuracy||e.accuracy<.8||e.accuracy>.99)&&(e.accuracy=.95);const n=e.size*(2-e.accuracy)*1024,i=1024*e.size,c=e.size*e.accuracy*1024,u=yield f(t);let d=u.split(\",\")[0].match(/:(.*?);/)[1],h=r.JPEG;o(e.type)&&(h=e.type,d=e.type);const w=yield l(u),m=yield g(w,Object.assign({},e));let y,p=.5;const b=[null,null];for(let t=1;t<=7;t++){y=yield a(m,p,h);const e=.75*y.length;if(7===t){(ne)&&(y=[y,...b].filter(t=>t).sort((t,e)=>Math.abs(.75*t.length-i)-Math.abs(.75*e.length-i))[0]);break}if(ne))break;b[0]=y,p+=Math.pow(.5,t+1)}}const v=yield s(y,d);return v.size>t.size?t:v}))}}])}));","import { renderSlot as _renderSlot, withModifiers as _withModifiers, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createBlock as _createBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, Fragment as _Fragment } from \"vue\";\nconst _hoisted_1 = {\n class: \"directory-tree-picker\"\n};\nconst _hoisted_2 = {\n class: \"tree-container\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_4 = {\n class: \"error-text\"\n};\nconst _hoisted_5 = {\n class: \"node-label\"\n};\nconst _hoisted_6 = {\n class: \"tree-container\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_8 = {\n class: \"error-text\"\n};\nconst _hoisted_9 = {\n class: \"node-label\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tree = _resolveComponent(\"el-tree\");\n const _component_el_popover = _resolveComponent(\"el-popover\");\n const _component_el_drawer = _resolveComponent(\"el-drawer\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [$options.isDesktop ? (_openBlock(), _createBlock(_component_el_popover, {\n key: 0,\n visible: $data.popoverVisible,\n \"onUpdate:visible\": _cache[1] || (_cache[1] = $event => $data.popoverVisible = $event),\n placement: \"bottom-start\",\n width: 320,\n trigger: \"click\",\n \"popper-class\": \"directory-tree-popover\",\n \"show-arrow\": true,\n \"hide-after\": 0,\n \"show-after\": 50,\n transition: \"el-zoom-in-top\"\n }, {\n reference: _withCtx(() => [_createElementVNode(\"span\", {\n class: \"popover-trigger-wrapper\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"]))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)])]),\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_2, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_4, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRef\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_5, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 3\n }, 8, [\"visible\"])) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createElementVNode(\"span\", {\n class: \"drawer-trigger-wrapper\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.openDrawer && $options.openDrawer(...args))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)]), _createVNode(_component_el_drawer, {\n modelValue: $data.drawerVisible,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.drawerVisible = $event),\n direction: \"btt\",\n size: \"60%\",\n \"show-close\": true,\n \"with-header\": true,\n \"z-index\": 3000,\n title: _ctx.$t('directoryTree.selectDirectory'),\n class: \"directory-tree-drawer\"\n }, {\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_6, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_8, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRefMobile\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree mobile-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_9, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 1\n }, 8, [\"modelValue\", \"title\"])], 64))]);\n}","import axios from '@/utils/axios';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'DirectoryTreePicker',\n props: {\n currentDirectory: {\n type: String,\n default: ''\n },\n source: {\n type: String,\n default: 'upload',\n validator: value => ['upload', 'admin'].includes(value)\n }\n },\n data() {\n return {\n popoverVisible: false,\n drawerVisible: false,\n treeData: [],\n loading: false,\n error: '',\n treeProps: {\n children: 'children',\n label: 'name'\n },\n windowWidth: window.innerWidth\n };\n },\n computed: {\n isDesktop() {\n return this.windowWidth >= 769;\n }\n },\n watch: {\n popoverVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 弹窗关闭后延迟折叠所有节点,避免下次打开时出现折叠动画\n setTimeout(() => {\n if (!this.popoverVisible && this.$refs.treeRef) {\n const store = this.$refs.treeRef.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 200);\n }\n },\n drawerVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 抽屉关闭后延迟折叠所有节点\n setTimeout(() => {\n if (!this.drawerVisible && this.$refs.treeRefMobile) {\n const store = this.$refs.treeRefMobile.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 300);\n }\n },\n currentDirectory(newVal) {\n this.$nextTick(() => {\n if (this.$refs.treeRef && newVal) {\n this.$refs.treeRef.setCurrentKey(newVal);\n }\n if (this.$refs.treeRefMobile && newVal) {\n this.$refs.treeRefMobile.setCurrentKey(newVal);\n }\n });\n }\n },\n mounted() {\n window.addEventListener('resize', this.handleResize);\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.handleResize);\n },\n methods: {\n handleResize() {\n this.windowWidth = window.innerWidth;\n },\n openDrawer() {\n this.drawerVisible = true;\n },\n async fetchDirectoryTree() {\n this.loading = true;\n this.error = '';\n try {\n let data;\n if (this.source === 'admin') {\n const response = await fetchWithAuth('/api/directoryTree', {\n method: 'GET'\n });\n if (!response.ok) {\n if (response.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.serverError');\n }\n return;\n }\n data = await response.json();\n } else {\n const response = await axios.get('/api/directoryTree', {\n withAuthCode: true\n });\n data = response.data;\n }\n if (data.tree) {\n this.treeData = [data.tree];\n } else {\n this.treeData = [];\n }\n } catch (err) {\n console.error('Failed to fetch directory tree:', err);\n if (err.response?.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.loadFailed');\n }\n } finally {\n this.loading = false;\n }\n },\n handleNodeClick(data) {\n let path = data.path;\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n } else if (!path) {\n path = '/';\n }\n this.$emit('select', path);\n this.popoverVisible = false;\n this.drawerVisible = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DirectoryTreePicker.vue?vue&type=template&id=62eab69a&scoped=true\"\nimport script from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\nexport * from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\n\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=0&id=62eab69a&scoped=true&lang=css\"\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=1&id=62eab69a&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-62eab69a\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, Transition as _Transition, withCtx as _withCtx, createVNode as _createVNode } from \"vue\";\nconst _hoisted_1 = {\n id: \"themeMask\"\n};\nconst _hoisted_2 = [\"cx\", \"cy\", \"r\"];\nconst _hoisted_3 = [\"r\"];\nconst _hoisted_4 = [\"opacity\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"div\", {\n id: \"themeToggle\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.handleToggleClick && $options.handleToggleClick(...args))\n }, [_createVNode(_Transition, {\n name: \"icon-fade\",\n mode: \"out-in\"\n }, {\n default: _withCtx(() => [!$data.isAuto ? (_openBlock(), _createElementBlock(\"svg\", {\n key: \"sun-moon\",\n class: _normalizeClass([\"theme_toggle_svg\", {\n 'dark': $data.isDark\n }]),\n width: \"1.5em\",\n height: \"1.5em\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n \"stroke-width\": \"2\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n stroke: \"currentColor\"\n }, [_createElementVNode(\"mask\", _hoisted_1, [_cache[1] || (_cache[1] = _createElementVNode(\"rect\", {\n x: \"0\",\n y: \"0\",\n width: \"100%\",\n height: \"100%\",\n fill: \"white\"\n }, null, -1)), _createElementVNode(\"circle\", {\n class: \"theme_toggle_circle1\",\n fill: \"black\",\n cx: $data.isDark ? '50%' : '100%',\n cy: $data.isDark ? '23%' : '0%',\n r: $data.isDark ? '9' : '5'\n }, null, 8, _hoisted_2)]), _createElementVNode(\"circle\", {\n class: \"theme_toggle_circle2\",\n cx: \"12\",\n cy: \"12\",\n r: $data.isDark ? '9' : '5',\n mask: \"url(#themeMask)\"\n }, null, 8, _hoisted_3), _createElementVNode(\"g\", {\n class: \"theme_toggle_g\",\n stroke: \"currentColor\",\n opacity: $data.isDark ? 0 : 1\n }, [...(_cache[2] || (_cache[2] = [_createElementVNode(\"line\", {\n x1: \"12\",\n y1: \"1\",\n x2: \"12\",\n y2: \"3\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"12\",\n y1: \"21\",\n x2: \"12\",\n y2: \"23\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"4.22\",\n y1: \"4.22\",\n x2: \"5.64\",\n y2: \"5.64\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"18.36\",\n y1: \"18.36\",\n x2: \"19.78\",\n y2: \"19.78\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"1\",\n y1: \"12\",\n x2: \"3\",\n y2: \"12\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"21\",\n y1: \"12\",\n x2: \"23\",\n y2: \"12\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"4.22\",\n y1: \"19.78\",\n x2: \"5.64\",\n y2: \"18.36\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"18.36\",\n y1: \"5.64\",\n x2: \"19.78\",\n y2: \"4.22\"\n }, null, -1)]))], 8, _hoisted_4)], 2)) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: \"auto-mode\",\n icon: \"circle-half-stroke\",\n class: \"auto-icon\",\n style: {\n \"font-size\": \"1.5em\",\n \"color\": \"var(--theme-toggle-color)\"\n }\n }))]),\n _: 1\n })]);\n}","export default {\n name: 'ToggleDark',\n data() {\n return {\n isDark: this.$store.getters.useDarkMode,\n isAuto: !this.$store.getters.cusDarkMode\n };\n },\n methods: {\n handleToggleClick() {\n // 三种状态循环:亮色 -> 暗色 -> 跟随系统 -> 亮色\n if (this.isAuto) {\n // 当前是自动模式,切换到亮色\n this.isDark = false;\n this.isAuto = false;\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', false);\n } else if (!this.isDark) {\n // 当前是亮色,切换到暗色\n this.isDark = true;\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', true);\n } else {\n // 当前是暗色,切换到跟随系统\n this.isAuto = true;\n this.$store.commit('setCusDarkMode', false);\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./ToggleDark.vue?vue&type=template&id=e9449eac&scoped=true\"\nimport script from \"./ToggleDark.vue?vue&type=script&lang=js\"\nexport * from \"./ToggleDark.vue?vue&type=script&lang=js\"\n\nimport \"./ToggleDark.vue?vue&type=style&index=0&id=e9449eac&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-e9449eac\"]])\n\nexport default __exports__","import { normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = [\"href\", \"target\"];\nconst _hoisted_2 = [\"alt\", \"src\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return _openBlock(), _createElementBlock(\"a\", {\n href: $options.logoHref,\n target: $props.target,\n class: _normalizeClass(_ctx.logo - _ctx.link)\n }, [_createElementVNode(\"img\", {\n class: _normalizeClass($options.logoClasses),\n alt: $props.alt,\n src: $options.logoUrl\n }, null, 10, _hoisted_2)], 10, _hoisted_1);\n}","import { mapGetters } from 'vuex';\nexport default {\n name: 'Logo',\n props: {\n // Logo链接地址(可被用户配置覆盖)\n href: {\n type: String,\n default: 'https://github.com/MarSeventh/CloudFlare-ImgBed'\n },\n // 链接打开方式\n target: {\n type: String,\n default: '_blank',\n // _blank, _self, _parent, _top\n validator: value => ['_blank', '_self', '_parent', '_top'].includes(value)\n },\n // 图片alt文本\n alt: {\n type: String,\n default: 'Sanyue logo'\n },\n // 自定义logo图片URL(可选)\n customSrc: {\n type: String,\n default: ''\n },\n // Logo位置样式\n position: {\n type: String,\n default: 'fixed',\n // fixed, relative, absolute\n validator: value => ['fixed', 'relative', 'absolute', 'static'].includes(value)\n },\n // Logo大小\n size: {\n type: String,\n default: 'normal',\n // small, normal, large\n validator: value => ['small', 'normal', 'large'].includes(value)\n },\n // 是否启用悬停动画\n enableHover: {\n type: Boolean,\n default: true\n },\n // 是否允许使用用户配置的链接(仅上传页面启用)\n useConfigLink: {\n type: Boolean,\n default: false\n }\n },\n computed: {\n ...mapGetters(['userConfig']),\n logoUrl() {\n // 优先级:customSrc > 用户配置 > 默认图片\n return this.customSrc || this.userConfig?.logoUrl || require('../assets/logo.png');\n },\n logoHref() {\n // 只有启用 useConfigLink 时才使用用户配置的链接\n if (this.useConfigLink && this.userConfig?.logoLink) {\n return this.userConfig.logoLink;\n }\n return this.href;\n },\n logoClasses() {\n return {\n 'logo': true,\n [`logo--${this.position}`]: true,\n [`logo--${this.size}`]: true,\n 'logo--hover-enabled': this.enableHover\n };\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./Logo.vue?vue&type=template&id=5c73638c&scoped=true\"\nimport script from \"./Logo.vue?vue&type=script&lang=js\"\nexport * from \"./Logo.vue?vue&type=script&lang=js\"\n\nimport \"./Logo.vue?vue&type=style&index=0&id=5c73638c&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5c73638c\"]])\n\nexport default __exports__","/**\r\n * 路径验证器模块\r\n * 提供共享的文件夹路径验证功能,供 AdminDashBoard 和 UploadHome 共同使用\r\n */\r\nimport i18n from '@/locales'\r\n\r\n/**\r\n * 验证文件夹路径的合法性\r\n * @param {string} path - 要验证的路径\r\n * @param {{ strict?: boolean }} options - 选项,strict 为 true 时检查末尾单独的 \".\"(默认 true)\r\n * @returns {{ valid: boolean, error?: string }} 验证结果\r\n */\r\nexport function validateFolderPath(path, { strict = true } = {}) {\r\n // 如果路径为空或仅为空白字符,返回有效(表示根目录)\r\n if (!path || path.trim() === '') {\r\n return { valid: true };\r\n }\r\n \r\n // 如果路径仅为 \"/\",返回有效(表示根目录)\r\n if (path === '/') {\r\n return { valid: true };\r\n }\r\n \r\n // 检查路径是否以 \"/\" 开头\r\n if (!path.startsWith('/')) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.pathMustStartWithSlash') \r\n };\r\n }\r\n\r\n // 检查路径穿越:包含 .. 的路径段\r\n if (/(?:^|\\/)\\.\\.(\\/|$)/.test(path) || path.includes('..')) {\r\n return {\r\n valid: false,\r\n error: i18n.global.t('validation.pathTraversalNotAllowed')\r\n };\r\n }\r\n\r\n // 检查路径中单独的 . 段\r\n // strict 模式检查 /./ 和末尾 /.,非 strict 模式仅检查 /./ 以允许用户继续输入如 /.123\r\n const dotPattern = strict ? /\\/\\.(\\/|$)/ : /\\/\\.\\//;\r\n if (dotPattern.test(path)) {\r\n return {\r\n valid: false,\r\n error: i18n.global.t('validation.singleDotNotAllowed')\r\n };\r\n }\r\n\r\n // 检查路径是否包含连续的斜杠\r\n if (path.includes('//')) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.consecutiveSlashNotAllowed') \r\n };\r\n }\r\n \r\n // 检查路径是否包含非法字符\r\n // 非法字符包括: \\ : * ? \" ' < > | 空格 ( ) [ ] { } # % ^ ` ~ ; @ & = + $ ,\r\n const invalidChars = /[\\\\:\\*\\?\"'<>\\| \\(\\)\\[\\]\\{\\}#%\\^`~;@&=\\+\\$,]/;\r\n if (invalidChars.test(path)) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.invalidCharacters') \r\n };\r\n }\r\n \r\n return { valid: true };\r\n}\r\n","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass } from \"vue\";\nconst _hoisted_1 = {\n class: \"history-header\"\n};\nconst _hoisted_2 = {\n class: \"header-left\"\n};\nconst _hoisted_3 = {\n class: \"record-count\"\n};\nconst _hoisted_4 = {\n class: \"header-right\"\n};\nconst _hoisted_5 = {\n class: \"timeline-header\"\n};\nconst _hoisted_6 = {\n class: \"date-label\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"grid-view\"\n};\nconst _hoisted_8 = {\n class: \"grid-preview\"\n};\nconst _hoisted_9 = [\"src\"];\nconst _hoisted_10 = [\"src\"];\nconst _hoisted_11 = {\n key: 2,\n class: \"file-icon-wrapper\"\n};\nconst _hoisted_12 = {\n class: \"grid-overlay\"\n};\nconst _hoisted_13 = {\n class: \"grid-actions\"\n};\nconst _hoisted_14 = {\n class: \"grid-info\"\n};\nconst _hoisted_15 = [\"title\"];\nconst _hoisted_16 = {\n class: \"upload-time\"\n};\nconst _hoisted_17 = {\n key: 1,\n class: \"list-view\"\n};\nconst _hoisted_18 = {\n class: \"list-preview\"\n};\nconst _hoisted_19 = [\"src\"];\nconst _hoisted_20 = [\"src\"];\nconst _hoisted_21 = {\n key: 2,\n class: \"file-icon-wrapper-small\"\n};\nconst _hoisted_22 = {\n class: \"list-info\"\n};\nconst _hoisted_23 = [\"title\"];\nconst _hoisted_24 = [\"title\"];\nconst _hoisted_25 = {\n class: \"list-meta\"\n};\nconst _hoisted_26 = {\n class: \"upload-time\"\n};\nconst _hoisted_27 = {\n class: \"list-actions\"\n};\nconst _hoisted_28 = {\n key: 0,\n class: \"load-more-container\"\n};\nconst _hoisted_29 = {\n key: 0,\n class: \"loading-indicator\"\n};\nconst _hoisted_30 = {\n key: 1,\n class: \"load-more-hint\"\n};\nconst _hoisted_31 = {\n key: 1,\n class: \"no-more-hint\"\n};\nconst _hoisted_32 = {\n key: 1,\n class: \"empty-state\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n return _openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"history-container\", {\n 'active': $props.show\n }])\n }, [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"h2\", null, _toDisplayString(_ctx.$t('uploadHistory.title')), 1), _createElementVNode(\"span\", _hoisted_3, _toDisplayString(_ctx.$t('uploadHistory.totalRecords', {\n count: $data.totalCount\n })), 1)]), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadHistory.switchView'),\n placement: \"bottom\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n circle: \"\",\n onClick: $options.toggleViewMode\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: $data.viewMode === 'grid' ? 'list' : 'th-large'\n }, null, 8, [\"icon\"])]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadHistory.clearRecords'),\n placement: \"bottom\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n circle: \"\",\n type: \"danger\",\n onClick: $options.clearHistory\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_button, {\n circle: \"\",\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$emit('close'))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"times\"\n })]),\n _: 1\n })])]), $data.historyList.length > 0 ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"history-content\",\n ref: \"historyContent\",\n onScroll: _cache[3] || (_cache[3] = (...args) => $options.handleScroll && $options.handleScroll(...args))\n }, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.groupedHistory, group => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: group.date,\n class: \"history-group\"\n }, [_createElementVNode(\"div\", _hoisted_5, [_cache[4] || (_cache[4] = _createElementVNode(\"div\", {\n class: \"timeline-dot\"\n }, null, -1)), _createElementVNode(\"span\", _hoisted_6, _toDisplayString(group.date), 1)]), $data.viewMode === 'grid' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(group.items, item => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: item.time,\n class: \"grid-item\"\n }, [_createElementVNode(\"div\", _hoisted_8, [$options.isImage(item.name) ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: item.url,\n loading: \"lazy\",\n onError: _cache[1] || (_cache[1] = (...args) => $options.handleImageError && $options.handleImageError(...args))\n }, null, 40, _hoisted_9)) : $options.isVideo(item.name) ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n src: item.url,\n muted: \"\"\n }, null, 8, _hoisted_10)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\",\n class: \"file-icon\"\n })])), _createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"div\", _hoisted_13, [_createVNode(_component_el_button, {\n circle: \"\",\n size: \"default\",\n type: \"primary\",\n onClick: $event => $options.copyLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"default\",\n class: \"action-btn-view\",\n onClick: $event => $options.openLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"external-link-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"default\",\n type: \"danger\",\n onClick: $event => $options.deleteItem(item)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"])])])]), _createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"div\", {\n class: \"file-name\",\n title: item.name\n }, _toDisplayString(item.name), 9, _hoisted_15), _createElementVNode(\"div\", _hoisted_16, _toDisplayString($options.formatTime(item.time)), 1)])]);\n }), 128))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(group.items, item => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: item.time,\n class: \"list-item\"\n }, [_createElementVNode(\"div\", _hoisted_18, [$options.isImage(item.name) ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: item.url,\n loading: \"lazy\",\n onError: _cache[2] || (_cache[2] = (...args) => $options.handleImageError && $options.handleImageError(...args))\n }, null, 40, _hoisted_19)) : $options.isVideo(item.name) ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n src: item.url,\n muted: \"\"\n }, null, 8, _hoisted_20)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_21, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\"\n })]))]), _createElementVNode(\"div\", _hoisted_22, [_createElementVNode(\"div\", {\n class: \"file-name\",\n title: item.name\n }, _toDisplayString(item.name), 9, _hoisted_23), _createElementVNode(\"div\", {\n class: \"file-url\",\n title: item.url\n }, _toDisplayString(item.url), 9, _hoisted_24)]), _createElementVNode(\"div\", _hoisted_25, [_createElementVNode(\"div\", _hoisted_26, _toDisplayString($options.formatTime(item.time)), 1)]), _createElementVNode(\"div\", _hoisted_27, [_createVNode(_component_el_button, {\n circle: \"\",\n size: \"small\",\n type: \"primary\",\n onClick: $event => $options.copyLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"small\",\n class: \"action-btn-view\",\n onClick: $event => $options.openLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"external-link-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"small\",\n type: \"danger\",\n onClick: $event => $options.deleteItem(item)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"])])]);\n }), 128))]))]);\n }), 128)), $options.hasMore ? (_openBlock(), _createElementBlock(\"div\", _hoisted_28, [$data.loadingMore ? (_openBlock(), _createElementBlock(\"div\", _hoisted_29, [_createVNode(_component_font_awesome_icon, {\n icon: \"spinner\",\n spin: \"\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadHistory.loading')), 1)])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_30, _toDisplayString(_ctx.$t('uploadHistory.pullToLoadMore')), 1))])) : $data.historyList.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_31, _toDisplayString(_ctx.$t('uploadHistory.noMoreRecords')), 1)) : _createCommentVNode(\"\", true)], 544)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_32, [_createVNode(_component_font_awesome_icon, {\n icon: \"history\",\n class: \"empty-icon\"\n }), _createElementVNode(\"p\", null, _toDisplayString(_ctx.$t('uploadHistory.emptyHistory')), 1)]))], 2);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nexport default {\n name: 'UploadHistory',\n props: {\n show: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n historyList: [],\n allHistory: [],\n // 完整历史记录\n viewMode: 'grid',\n // 'grid' or 'list'\n pageSize: 30,\n // 每次加载数量\n currentPage: 0,\n loadingMore: false,\n totalCount: 0\n };\n },\n watch: {\n show(val) {\n if (val) {\n this.resetAndLoad();\n }\n }\n },\n computed: {\n hasMore() {\n return this.historyList.length < this.totalCount;\n },\n groupedHistory() {\n const groups = {};\n this.historyList.forEach(item => {\n const date = new Date(item.time);\n const dateStr = `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`;\n if (!groups[dateStr]) {\n groups[dateStr] = [];\n }\n groups[dateStr].push(item);\n });\n\n // Sort dates descending\n return Object.keys(groups).sort((a, b) => new Date(b) - new Date(a)).map(date => ({\n date,\n items: groups[date]\n }));\n }\n },\n mounted() {\n // Load view mode preference\n const savedMode = localStorage.getItem('historyViewMode');\n if (savedMode) {\n this.viewMode = savedMode;\n }\n },\n methods: {\n resetAndLoad() {\n this.historyList = [];\n this.currentPage = 0;\n this.loadAllHistory();\n this.loadMore();\n },\n loadAllHistory() {\n try {\n const history = JSON.parse(localStorage.getItem('uploadHistory') || '[]');\n // Sort by time desc\n this.allHistory = history.sort((a, b) => b.time - a.time);\n this.totalCount = this.allHistory.length;\n } catch (e) {\n console.error('Failed to load history', e);\n this.allHistory = [];\n this.totalCount = 0;\n }\n },\n loadMore() {\n if (this.loadingMore || !this.hasMore) return;\n this.loadingMore = true;\n\n // 模拟异步加载,避免阻塞UI\n setTimeout(() => {\n const start = this.currentPage * this.pageSize;\n const end = start + this.pageSize;\n const newItems = this.allHistory.slice(start, end);\n this.historyList = [...this.historyList, ...newItems];\n this.currentPage++;\n this.loadingMore = false;\n }, 50);\n },\n handleScroll(e) {\n const container = e.target;\n const scrollTop = container.scrollTop;\n const scrollHeight = container.scrollHeight;\n const clientHeight = container.clientHeight;\n\n // 距离底部 100px 时加载更多\n if (scrollHeight - scrollTop - clientHeight < 100) {\n this.loadMore();\n }\n },\n toggleViewMode() {\n this.viewMode = this.viewMode === 'grid' ? 'list' : 'grid';\n localStorage.setItem('historyViewMode', this.viewMode);\n },\n clearHistory() {\n this.$confirm(this.$t('uploadHistory.clearConfirmMessage'), this.$t('uploadHistory.clearConfirmTitle'), {\n confirmButtonText: this.$t('uploadHistory.clearConfirmOk'),\n cancelButtonText: this.$t('uploadHistory.clearConfirmCancel'),\n type: 'warning'\n }).then(() => {\n this.historyList = [];\n this.allHistory = [];\n this.totalCount = 0;\n this.currentPage = 0;\n localStorage.removeItem('uploadHistory');\n this.$message.success(this.$t('uploadHistory.recordsCleared'));\n }).catch(() => {});\n },\n deleteItem(item) {\n this.$confirm(this.$t('uploadHistory.deleteConfirmMessage'), this.$t('uploadHistory.clearConfirmTitle'), {\n confirmButtonText: this.$t('uploadHistory.clearConfirmOk'),\n cancelButtonText: this.$t('uploadHistory.clearConfirmCancel'),\n type: 'warning'\n }).then(() => {\n // Remove from lists\n this.historyList = this.historyList.filter(i => i.time !== item.time);\n this.allHistory = this.allHistory.filter(i => i.time !== item.time);\n this.totalCount = this.allHistory.length;\n\n // Update localStorage\n try {\n localStorage.setItem('uploadHistory', JSON.stringify(this.allHistory));\n this.$message.success(this.$t('uploadHistory.recordDeleted'));\n } catch (e) {\n console.error('Failed to update history', e);\n }\n }).catch(() => {});\n },\n isImage(fileName) {\n const imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'tiff', 'ico', 'avif', 'heic', 'jfif', 'pjpeg', 'pjp'];\n const extension = fileName ? fileName.split('.').pop().toLowerCase() : '';\n return imageExtensions.includes(extension);\n },\n isVideo(fileName) {\n const videoExtensions = ['mp4', 'webm', 'ogg', 'mkv'];\n const extension = fileName ? fileName.split('.').pop().toLowerCase() : '';\n return videoExtensions.includes(extension);\n },\n formatTime(timestamp) {\n const date = new Date(timestamp);\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n const hours = String(date.getHours()).padStart(2, '0');\n const minutes = String(date.getMinutes()).padStart(2, '0');\n const seconds = String(date.getSeconds()).padStart(2, '0');\n return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;\n },\n copyLink(url) {\n navigator.clipboard.writeText(url).then(() => {\n this.$message.success(this.$t('uploadHistory.linkCopied'));\n }).catch(() => {\n this.$message.error(this.$t('uploadHistory.copyFailed'));\n });\n },\n openLink(url) {\n window.open(url, '_blank');\n },\n handleImageError(e) {\n e.target.src = require('@/assets/404.png');\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadHistory.vue?vue&type=template&id=7da2f8c2&scoped=true\"\nimport script from \"./UploadHistory.vue?vue&type=script&lang=js\"\nexport * from \"./UploadHistory.vue?vue&type=script&lang=js\"\n\nimport \"./UploadHistory.vue?vue&type=style&index=0&id=7da2f8c2&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7da2f8c2\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"dialog-section\"\n};\nconst _hoisted_2 = {\n class: \"section-header\"\n};\nconst _hoisted_3 = {\n class: \"section-title\"\n};\nconst _hoisted_4 = {\n class: \"section-content\"\n};\nconst _hoisted_5 = {\n class: \"setting-item channel-type-setting\"\n};\nconst _hoisted_6 = {\n class: \"channel-type-toolbar\"\n};\nconst _hoisted_7 = {\n class: \"setting-label\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"channel-empty-state\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_10 = {\n class: \"setting-label\"\n};\nconst _hoisted_11 = {\n class: \"setting-item\"\n};\nconst _hoisted_12 = {\n class: \"setting-label\"\n};\nconst _hoisted_13 = {\n class: \"setting-item\"\n};\nconst _hoisted_14 = {\n class: \"setting-label\"\n};\nconst _hoisted_15 = {\n class: \"dialog-section\"\n};\nconst _hoisted_16 = {\n class: \"section-header\"\n};\nconst _hoisted_17 = {\n class: \"section-title\"\n};\nconst _hoisted_18 = {\n class: \"section-content\"\n};\nconst _hoisted_19 = {\n class: \"dialog-section\"\n};\nconst _hoisted_20 = {\n class: \"section-header\"\n};\nconst _hoisted_21 = {\n class: \"section-title\"\n};\nconst _hoisted_22 = {\n class: \"section-content\"\n};\nconst _hoisted_23 = {\n class: \"setting-item\"\n};\nconst _hoisted_24 = {\n class: \"setting-label\"\n};\nconst _hoisted_25 = {\n class: \"setting-item\"\n};\nconst _hoisted_26 = {\n class: \"setting-label\"\n};\nconst _hoisted_27 = {\n key: 0,\n class: \"setting-item slider-item\"\n};\nconst _hoisted_28 = {\n class: \"setting-label\"\n};\nconst _hoisted_29 = {\n class: \"slider-wrapper\"\n};\nconst _hoisted_30 = {\n class: \"slider-input-wrapper\"\n};\nconst _hoisted_31 = {\n key: 1,\n class: \"setting-item slider-item\"\n};\nconst _hoisted_32 = {\n class: \"setting-label\"\n};\nconst _hoisted_33 = {\n class: \"slider-wrapper\"\n};\nconst _hoisted_34 = {\n class: \"slider-input-wrapper\"\n};\nconst _hoisted_35 = {\n key: 0,\n class: \"dialog-section\"\n};\nconst _hoisted_36 = {\n class: \"section-header\"\n};\nconst _hoisted_37 = {\n class: \"section-title\"\n};\nconst _hoisted_38 = {\n class: \"section-content\"\n};\nconst _hoisted_39 = {\n class: \"setting-item\"\n};\nconst _hoisted_40 = {\n class: \"setting-label\"\n};\nconst _hoisted_41 = {\n class: \"dialog-action\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_radio_button = _resolveComponent(\"el-radio-button\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_ChannelIcon = _resolveComponent(\"ChannelIcon\");\n const _component_el_radio = _resolveComponent(\"el-radio\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_slider = _resolveComponent(\"el-slider\");\n const _component_el_input_number = _resolveComponent(\"el-input-number\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: _ctx.$t('uploadSettings.title'),\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $event => $options.visible = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog settings-dialog-scope upload-settings-dialog\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"span\", _hoisted_3, _toDisplayString(_ctx.$t('uploadSettings.uploadChannel')), 1)]), _createElementVNode(\"div\", _hoisted_4, [_createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"div\", _hoisted_6, [_createElementVNode(\"span\", _hoisted_7, _toDisplayString(_ctx.$t('uploadSettings.channelType')), 1), _createVNode(_component_el_radio_group, {\n modelValue: $data.channelVisibility,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.channelVisibility = $event),\n size: \"small\",\n class: \"channel-visibility-filter\",\n onChange: $options.handleChannelVisibilityChange\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio_button, {\n label: \"all\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.allChannels')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio_button, {\n label: \"configured\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.configuredChannelsOnly')), 1)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\", \"onChange\"])]), _createVNode(_component_el_radio_group, {\n \"model-value\": $props.uploadChannel,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => _ctx.$emit('update:uploadChannel', $event)),\n class: \"radio-card-group compact\"\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.visibleChannelOptions, channel => {\n return _openBlock(), _createBlock(_component_el_radio, {\n key: channel.value,\n label: channel.value,\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_ChannelIcon, {\n type: channel.value,\n class: \"channel-icon\"\n }, null, 8, [\"type\"]), _createElementVNode(\"span\", null, _toDisplayString(channel.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"model-value\"]), $data.channelVisibility === 'configured' && $options.visibleChannelOptions.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, _toDisplayString(_ctx.$t('uploadSettings.noConfiguredChannels')), 1)) : _createCommentVNode(\"\", true)]), $props.currentChannelList.length > 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createElementVNode(\"span\", _hoisted_10, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.channelName')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.channelNameTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_select, {\n \"model-value\": $props.channelName,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => _ctx.$emit('update:channelName', $event)),\n placeholder: _ctx.$t('uploadSettings.autoSelect'),\n clearable: \"\",\n class: \"setting-input\"\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.currentChannelList, ch => {\n return _openBlock(), _createBlock(_component_el_option, {\n key: ch.name,\n label: ch.name,\n value: ch.name\n }, null, 8, [\"label\", \"value\"]);\n }), 128))]),\n _: 1\n }, 8, [\"model-value\", \"placeholder\"])])) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"span\", _hoisted_12, _toDisplayString(_ctx.$t('uploadSettings.uploadDirectory')), 1), _createVNode(_component_el_input, {\n \"model-value\": $props.uploadFolder,\n \"onUpdate:modelValue\": $options.handleUploadFolderInput,\n placeholder: _ctx.$t('uploadSettings.uploadDirectoryPlaceholder'),\n class: \"setting-input\"\n }, null, 8, [\"model-value\", \"onUpdate:modelValue\", \"placeholder\"])]), _createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"span\", _hoisted_14, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.autoSwitch')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.autoSwitchTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_switch, {\n \"model-value\": $props.autoRetry,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => _ctx.$emit('update:autoRetry', $event))\n }, null, 8, [\"model-value\"])])])]), _createElementVNode(\"div\", _hoisted_15, [_createElementVNode(\"div\", _hoisted_16, [_createElementVNode(\"span\", _hoisted_17, _toDisplayString(_ctx.$t('uploadSettings.fileNaming')), 1)]), _createElementVNode(\"div\", _hoisted_18, [_createVNode(_component_el_radio_group, {\n \"model-value\": $props.uploadNameType,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => _ctx.$emit('update:uploadNameType', $event)),\n class: \"radio-card-group grid-2x2\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio, {\n label: \"default\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cog\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadSettings.namingDefault')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"index\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"hashtag\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadSettings.namingIndex')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"origin\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"file-signature\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadSettings.namingOrigin')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"short\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"compress-alt\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadSettings.namingShort')), 1)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"model-value\"])])]), _createElementVNode(\"div\", _hoisted_19, [_createElementVNode(\"div\", _hoisted_20, [_createElementVNode(\"span\", _hoisted_21, _toDisplayString(_ctx.$t('uploadSettings.filePreprocess')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.filePreprocessTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_22, [_createElementVNode(\"div\", _hoisted_23, [_createElementVNode(\"span\", _hoisted_24, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.convertToWebp')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.convertToWebpTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_switch, {\n \"model-value\": $props.convertToWebp,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => _ctx.$emit('update:convertToWebp', $event))\n }, null, 8, [\"model-value\"])]), _createElementVNode(\"div\", _hoisted_25, [_createElementVNode(\"span\", _hoisted_26, _toDisplayString(_ctx.$t('uploadSettings.fileCompress')), 1), _createVNode(_component_el_switch, {\n \"model-value\": $props.customerCompress,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => _ctx.$emit('update:customerCompress', $event))\n }, null, 8, [\"model-value\"])]), $props.customerCompress ? (_openBlock(), _createElementBlock(\"div\", _hoisted_27, [_createElementVNode(\"span\", _hoisted_28, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.compressThreshold')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.compressThresholdTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_29, [_createVNode(_component_el_slider, {\n \"model-value\": $props.compressBar,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = $event => _ctx.$emit('update:compressBar', $event)),\n min: 1,\n max: 20,\n \"format-tooltip\": value => `${value} MB`\n }, null, 8, [\"model-value\", \"format-tooltip\"]), _createElementVNode(\"div\", _hoisted_30, [_createVNode(_component_el_input_number, {\n \"model-value\": $props.compressBar,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => _ctx.$emit('update:compressBar', $event)),\n min: 1,\n max: 20,\n step: 1,\n \"value-on-clear\": 1,\n class: \"slider-input\",\n \"controls-position\": \"right\"\n }, null, 8, [\"model-value\"]), _cache[14] || (_cache[14] = _createElementVNode(\"span\", {\n class: \"slider-unit\"\n }, \"MB\", -1))])])])) : _createCommentVNode(\"\", true), $props.customerCompress ? (_openBlock(), _createElementBlock(\"div\", _hoisted_31, [_createElementVNode(\"span\", _hoisted_32, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.expectedSize')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.expectedSizeTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_33, [_createVNode(_component_el_slider, {\n \"model-value\": $props.compressQuality,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = $event => _ctx.$emit('update:compressQuality', $event)),\n min: 0.5,\n max: $props.compressBar,\n step: 0.1,\n \"format-tooltip\": value => `${value} MB`\n }, null, 8, [\"model-value\", \"max\", \"format-tooltip\"]), _createElementVNode(\"div\", _hoisted_34, [_createVNode(_component_el_input_number, {\n \"model-value\": $props.compressQuality,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => _ctx.$emit('update:compressQuality', $event)),\n min: 0.5,\n max: $props.compressBar,\n step: 0.1,\n precision: 1,\n \"value-on-clear\": 0.5,\n class: \"slider-input\",\n \"controls-position\": \"right\"\n }, null, 8, [\"model-value\", \"max\"]), _cache[15] || (_cache[15] = _createElementVNode(\"span\", {\n class: \"slider-unit\"\n }, \"MB\", -1))])])])) : _createCommentVNode(\"\", true)])]), $props.uploadChannel === 'telegram' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_35, [_createElementVNode(\"div\", _hoisted_36, [_createElementVNode(\"span\", _hoisted_37, _toDisplayString(_ctx.$t('uploadSettings.serverCompress')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.serverCompressTooltip'),\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_38, [_createElementVNode(\"div\", _hoisted_39, [_createElementVNode(\"span\", _hoisted_40, _toDisplayString(_ctx.$t('uploadSettings.enableCompress')), 1), _createVNode(_component_el_switch, {\n \"model-value\": $props.serverCompress,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => _ctx.$emit('update:serverCompress', $event))\n }, null, 8, [\"model-value\"])])])])) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_41, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[12] || (_cache[12] = $event => $options.visible = false),\n class: \"confirm-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.confirm')), 1)]),\n _: 1\n })])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]);\n}","import ChannelIcon from '@/components/icons/ChannelIcon.vue';\nconst CHANNEL_OPTIONS = [{\n value: 'telegram',\n label: 'TG'\n}, {\n value: 'cfr2',\n label: 'R2'\n}, {\n value: 's3',\n label: 'S3'\n}, {\n value: 'discord',\n label: 'DC'\n}, {\n value: 'huggingface',\n label: 'HF'\n}, {\n value: 'webdav',\n label: 'WD'\n}];\nexport default {\n name: 'UploadSettingsDialog',\n components: {\n ChannelIcon\n },\n data() {\n return {\n channelVisibility: 'configured'\n };\n },\n methods: {\n hasConfiguredChannels(channelType) {\n const channels = this.availableChannels[channelType];\n return Array.isArray(channels) && channels.length > 0;\n },\n handleChannelVisibilityChange(visibility) {\n if (visibility !== 'configured') {\n return;\n }\n this.ensureConfiguredChannelSelected();\n },\n ensureConfiguredChannelSelected() {\n if (this.channelVisibility !== 'configured' || this.hasConfiguredChannels(this.uploadChannel)) {\n return;\n }\n const firstConfiguredChannel = this.visibleChannelOptions[0];\n if (firstConfiguredChannel) {\n this.$emit('update:uploadChannel', firstConfiguredChannel.value);\n }\n },\n handleUploadFolderInput(val) {\n // 自动补全前导 /\n if (val && !val.startsWith('/')) {\n val = '/' + val;\n }\n this.$emit('update:uploadFolder', val);\n }\n },\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n uploadChannel: {\n type: String,\n default: 'telegram'\n },\n channelName: {\n type: String,\n default: ''\n },\n availableChannels: {\n type: Object,\n default: () => ({})\n },\n currentChannelList: {\n type: Array,\n default: () => []\n },\n uploadFolder: {\n type: String,\n default: ''\n },\n autoRetry: {\n type: Boolean,\n default: true\n },\n uploadNameType: {\n type: String,\n default: 'default'\n },\n convertToWebp: {\n type: Boolean,\n default: false\n },\n customerCompress: {\n type: Boolean,\n default: true\n },\n compressBar: {\n type: Number,\n default: 5\n },\n compressQuality: {\n type: Number,\n default: 4\n },\n serverCompress: {\n type: Boolean,\n default: true\n }\n },\n emits: ['update:modelValue', 'update:uploadChannel', 'update:channelName', 'update:uploadFolder', 'update:autoRetry', 'update:uploadNameType', 'update:convertToWebp', 'update:customerCompress', 'update:compressBar', 'update:compressQuality', 'update:serverCompress'],\n watch: {\n availableChannels: {\n handler() {\n this.ensureConfiguredChannelSelected();\n },\n deep: true\n }\n },\n computed: {\n visible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n visibleChannelOptions() {\n if (this.channelVisibility === 'all') {\n return CHANNEL_OPTIONS;\n }\n return CHANNEL_OPTIONS.filter(channel => this.hasConfiguredChannels(channel.value));\n },\n dialogWidth() {\n return window.innerWidth > 768 ? '50%' : '90%';\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadSettingsDialog.vue?vue&type=template&id=25aa00bd&scoped=true\"\nimport script from \"./UploadSettingsDialog.vue?vue&type=script&lang=js\"\nexport * from \"./UploadSettingsDialog.vue?vue&type=script&lang=js\"\n\nimport \"@/styles/settings-dialog.css?vue&type=style&index=0&lang=css&external\"\nimport \"./UploadSettingsDialog.vue?vue&type=style&index=1&id=25aa00bd&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-25aa00bd\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, withCtx as _withCtx } from \"vue\";\nconst _hoisted_1 = {\n class: \"upload-list-item\"\n};\nconst _hoisted_2 = [\"href\"];\nconst _hoisted_3 = {\n key: 0,\n style: {\n \"width\": \"10vw\",\n \"border-radius\": \"12px\"\n },\n autoplay: \"\",\n muted: \"\",\n playsinline: \"\",\n loop: \"\"\n};\nconst _hoisted_4 = [\"src\"];\nconst _hoisted_5 = [\"src\"];\nconst _hoisted_6 = {\n key: 2,\n style: {\n \"width\": \"10vw\",\n \"border-radius\": \"12px\"\n }\n};\nconst _hoisted_7 = {\n class: \"upload-list-item-content\"\n};\nconst _hoisted_8 = {\n class: \"upload-list-item-name-wrapper\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"upload-list-item-url\"\n};\nconst _hoisted_10 = {\n class: \"upload-list-item-url-row\"\n};\nconst _hoisted_11 = {\n class: \"upload-list-item-url-row\"\n};\nconst _hoisted_12 = {\n key: 1,\n class: \"upload-list-item-progress\"\n};\nconst _hoisted_13 = {\n class: \"upload-list-item-action\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_text = _resolveComponent(\"el-text\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_progress = _resolveComponent(\"el-progress\");\n const _component_Link = _resolveComponent(\"Link\");\n const _component_el_icon = _resolveComponent(\"el-icon\");\n const _component_Delete = _resolveComponent(\"Delete\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"a\", {\n href: $props.file.url,\n target: \"_blank\",\n class: \"upload-list-item-preview\"\n }, [$options.isVideo($props.file.name) ? (_openBlock(), _createElementBlock(\"video\", _hoisted_3, [_createElementVNode(\"source\", {\n src: $props.file.url,\n type: \"video/mp4\"\n }, null, 8, _hoisted_4), _cache[7] || (_cache[7] = _createTextVNode(\" Your browser does not support the video tag. \", -1))])) : $options.isImage($props.file.name) ? (_openBlock(), _createElementBlock(\"img\", {\n key: 1,\n style: {\n \"width\": \"10vw\",\n \"border-radius\": \"12px\"\n },\n src: $props.file.url,\n onError: _cache[0] || (_cache[0] = $event => _ctx.$emit('preview-error', $props.file))\n }, null, 40, _hoisted_5)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\",\n class: \"file-icon\"\n })]))], 8, _hoisted_2), _createElementVNode(\"div\", _hoisted_7, [_createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_el_text, {\n class: \"upload-list-item-name\",\n truncated: \"\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.truncateFilename($props.file.name)), 1)]),\n _: 1\n })]), $props.file.status === 'done' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createElementVNode(\"div\", _hoisted_10, [_createVNode(_component_el_input, {\n modelValue: $props.file.finalURL,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $props.file.finalURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[8] || (_cache[8] = [_createTextVNode(\"URL\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"]), _createVNode(_component_el_input, {\n modelValue: $props.file.mdURL,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $props.file.mdURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[9] || (_cache[9] = [_createTextVNode(\"MarkDown\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"])]), _createElementVNode(\"div\", _hoisted_11, [_createVNode(_component_el_input, {\n modelValue: $props.file.htmlURL,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $props.file.htmlURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[10] || (_cache[10] = [_createTextVNode(\"HTML\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"]), _createVNode(_component_el_input, {\n modelValue: $props.file.ubbURL,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $props.file.ubbURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[11] || (_cache[11] = [_createTextVNode(\"BBCode\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"])])])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [_createVNode(_component_el_progress, {\n percentage: $props.file.progreess,\n status: $props.file.status,\n \"show-text\": false\n }, null, 8, [\"percentage\", \"status\"])]))]), _createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"button\", {\n class: \"modern-file-action-btn modern-file-action-btn-primary\",\n onClick: _cache[5] || (_cache[5] = $event => _ctx.$emit('copy', $props.file))\n }, [_createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Link)]),\n _: 1\n })]), _createElementVNode(\"button\", {\n class: \"modern-file-action-btn modern-file-action-btn-danger\",\n onClick: _cache[6] || (_cache[6] = $event => _ctx.$emit('remove', $props.file))\n }, [_createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Delete)]),\n _: 1\n })])])]);\n}","import { Link, Delete } from '@element-plus/icons-vue';\nconst IMAGE_EXTENSIONS = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'tiff', 'ico', 'avif', 'heic', 'jfif', 'pjpeg', 'pjp', 'raw', 'cr2', 'nef', 'dng', 'eps', 'ai', 'emf', 'wmf'];\nconst VIDEO_EXTENSIONS = ['mp4', 'webm', 'ogg', 'mkv'];\nexport default {\n name: 'UploadFileItem',\n components: {\n Link,\n Delete\n },\n props: {\n file: {\n type: Object,\n required: true\n }\n },\n emits: ['copy', 'remove', 'preview-error'],\n computed: {\n urlSize() {\n return window.innerWidth < 768 ? 'small' : 'default';\n }\n },\n methods: {\n isImage(fileName) {\n const ext = fileName.split('.').pop().toLowerCase();\n return IMAGE_EXTENSIONS.includes(ext);\n },\n isVideo(fileName) {\n const ext = fileName.split('.').pop().toLowerCase();\n return VIDEO_EXTENSIONS.includes(ext);\n },\n truncateFilename(filename, maxLength = 20) {\n if (!filename || filename.length <= maxLength) return filename;\n const lastDotIndex = filename.lastIndexOf('.');\n let name, ext;\n if (lastDotIndex > 0) {\n name = filename.substring(0, lastDotIndex);\n ext = filename.substring(lastDotIndex);\n } else {\n name = filename;\n ext = '';\n }\n const keepEnd = ext.length + 4;\n const keepStart = maxLength - keepEnd - 3;\n if (keepStart <= 0) return filename.substring(0, maxLength - 3) + '...';\n return name.substring(0, keepStart) + '...' + name.slice(-4) + ext;\n },\n selectAllText(event) {\n navigator.clipboard.writeText(event.target.value).then(() => {\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.copySuccess')\n });\n }).catch(() => {\n this.$message({\n type: 'error',\n message: this.$t('uploadForm.copyFailed')\n });\n });\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadFileItem.vue?vue&type=template&id=4a46527b&scoped=true\"\nimport script from \"./UploadFileItem.vue?vue&type=script&lang=js\"\nexport * from \"./UploadFileItem.vue?vue&type=script&lang=js\"\n\nimport \"./UploadFileItem.vue?vue&type=style&index=0&id=4a46527b&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4a46527b\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, normalizeClass as _normalizeClass, withCtx as _withCtx, createVNode as _createVNode, withModifiers as _withModifiers, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment } from \"vue\";\nconst _hoisted_1 = {\n class: \"upload-form\"\n};\nconst _hoisted_2 = {\n ref: \"clipboardPasteReceiver\",\n class: \"clipboard-paste-receiver\",\n tabindex: \"-1\",\n \"aria-hidden\": \"true\"\n};\nconst _hoisted_3 = {\n class: \"upload-card-glow\",\n ref: \"uploadCardGlow\"\n};\nconst _hoisted_4 = {\n class: \"upload-prompt-row\"\n};\nconst _hoisted_5 = [\"innerHTML\"];\nconst _hoisted_6 = [\"aria-label\"];\nconst _hoisted_7 = {\n key: 0,\n class: \"upload-card\"\n};\nconst _hoisted_8 = {\n class: \"paste-card-actions\"\n};\nconst _hoisted_9 = [\"aria-label\"];\nconst _hoisted_10 = [\"aria-pressed\"];\nconst _hoisted_11 = [\"aria-pressed\"];\nconst _hoisted_12 = {\n class: \"upload-list-container\"\n};\nconst _hoisted_13 = {\n class: \"upload-list-dashboard-action\"\n};\nconst _hoisted_14 = {\n class: \"modern-action-group\"\n};\nconst _hoisted_15 = {\n class: \"modern-dropdown-item-content\"\n};\nconst _hoisted_16 = {\n class: \"modern-action-btn modern-action-btn-danger\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_icon = _resolveComponent(\"el-icon\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_upload = _resolveComponent(\"el-upload\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_card = _resolveComponent(\"el-card\");\n const _component_List = _resolveComponent(\"List\");\n const _component_Checked = _resolveComponent(\"Checked\");\n const _component_Failed = _resolveComponent(\"Failed\");\n const _component_el_text = _resolveComponent(\"el-text\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_dropdown_item = _resolveComponent(\"el-dropdown-item\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n const _component_UploadFileItem = _resolveComponent(\"UploadFileItem\");\n const _component_el_scrollbar = _resolveComponent(\"el-scrollbar\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"textarea\", _hoisted_2, null, 512), _createElementVNode(\"div\", {\n class: \"upload-card-wrapper\",\n onMousemove: _cache[2] || (_cache[2] = (...args) => $options.handleUploadCardMouseMove && $options.handleUploadCardMouseMove(...args)),\n onMouseleave: _cache[3] || (_cache[3] = (...args) => $options.handleUploadCardMouseLeave && $options.handleUploadCardMouseLeave(...args)),\n onDropCapture: _cache[4] || (_cache[4] = _withModifiers((...args) => $options.handleDrop && $options.handleDrop(...args), [\"stop\", \"prevent\"]))\n }, [_createElementVNode(\"div\", _hoisted_3, null, 512), $props.uploadMethod === 'default' ? (_openBlock(), _createBlock(_component_el_upload, {\n key: 0,\n class: _normalizeClass([\"upload-card\", {\n 'is-uploading': $data.uploading,\n 'upload-card-busy': $data.fileList.length\n }]),\n drag: \"\",\n multiple: \"\",\n \"http-request\": $options.uploadFile,\n onSuccess: $options.handleSuccess,\n \"on-error\": $options.handleError,\n \"before-upload\": $options.beforeUpload,\n \"on-progress\": $options.handleProgress,\n \"file-list\": $data.fileList,\n \"show-file-list\": false\n }, {\n default: _withCtx(() => [_createVNode(_component_el_icon, {\n class: _normalizeClass([\"el-icon--upload\", {\n 'upload-list-busy': $data.fileList.length\n }])\n }, {\n default: _withCtx(() => [...(_cache[12] || (_cache[12] = [_createElementVNode(\"svg\", {\n class: \"upload-plus-icon\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n \"stroke-width\": \"1.25\",\n \"stroke-linecap\": \"round\",\n \"aria-hidden\": \"true\"\n }, [_createElementVNode(\"path\", {\n d: \"M12 7v10\"\n }), _createElementVNode(\"path\", {\n d: \"M7 12h10\"\n })], -1)]))]),\n _: 1\n }, 8, [\"class\"]), _createElementVNode(\"div\", _hoisted_4, [_createElementVNode(\"div\", {\n class: _normalizeClass([\"el-upload__text\", {\n 'upload-list-busy': $data.fileList.length\n }]),\n innerHTML: _ctx.$t('upload.dragUploadText', {\n pasteShortcut: $options.pasteShortcut\n })\n }, null, 10, _hoisted_5), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.selectFolderUpload'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n type: \"button\",\n class: _normalizeClass([\"folder-upload-icon-button\", {\n 'upload-list-busy': $data.fileList.length\n }]),\n \"aria-label\": _ctx.$t('upload.selectFolderUpload'),\n onClick: _cache[0] || (_cache[0] = _withModifiers((...args) => $options.openFolderPicker && $options.openFolderPicker(...args), [\"stop\", \"prevent\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\"\n })], 10, _hoisted_6)]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])]),\n _: 1\n }, 8, [\"class\", \"http-request\", \"onSuccess\", \"on-error\", \"before-upload\", \"on-progress\", \"file-list\"])) : _createCommentVNode(\"\", true), _createElementVNode(\"input\", {\n ref: \"folderInput\",\n class: \"folder-upload-input\",\n type: \"file\",\n webkitdirectory: \"\",\n directory: \"\",\n multiple: \"\",\n onChange: _cache[1] || (_cache[1] = (...args) => $options.handleFolderSelection && $options.handleFolderSelection(...args))\n }, null, 544)], 32), $props.uploadMethod === 'paste' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [_createVNode(_component_el_card, {\n class: _normalizeClass([\"paste-card\", {\n 'is-uploading': $data.uploading,\n 'upload-card-busy': $data.fileList.length\n }])\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.pastedUrls,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $data.pastedUrls = $event),\n class: \"upload-card-textarea\",\n placeholder: _ctx.$t('upload.pasteUrlPlaceholder'),\n type: \"textarea\",\n rows: $data.fileList.length ? 4 : 14\n }, null, 8, [\"modelValue\", \"placeholder\", \"rows\"]), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_el_button, {\n class: \"paste-card-upload-button\",\n type: \"primary\",\n size: $options.pasteCardMethodButtonSize,\n onClick: $options.handleUploadPasteUrls\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.pasteUploadBtn')), 1)]),\n _: 1\n }, 8, [\"size\", \"onClick\"]), _createElementVNode(\"div\", {\n class: _normalizeClass([\"paste-card-method-group\", {\n 'is-external': $data.pasteUploadMethod === 'external'\n }]),\n role: \"group\",\n \"aria-label\": _ctx.$t('upload.switchUploadMethod')\n }, [_createElementVNode(\"button\", {\n class: _normalizeClass([\"paste-card-method-button\", {\n 'is-active': $data.pasteUploadMethod === 'save'\n }]),\n type: \"button\",\n \"aria-pressed\": $data.pasteUploadMethod === 'save',\n onClick: _cache[6] || (_cache[6] = $event => $data.pasteUploadMethod = 'save')\n }, _toDisplayString(_ctx.$t('upload.pasteSave')), 11, _hoisted_10), _createElementVNode(\"button\", {\n class: _normalizeClass([\"paste-card-method-button\", {\n 'is-active': $data.pasteUploadMethod === 'external'\n }]),\n type: \"button\",\n \"aria-pressed\": $data.pasteUploadMethod === 'external',\n onClick: _cache[7] || (_cache[7] = $event => $data.pasteUploadMethod = 'external')\n }, _toDisplayString(_ctx.$t('upload.pasteExternal')), 11, _hoisted_11)], 10, _hoisted_9)])]),\n _: 1\n }, 8, [\"class\"])])) : _createCommentVNode(\"\", true), _createVNode(_component_el_card, {\n class: _normalizeClass([\"upload-list-card\", {\n 'upload-list-busy': $data.fileList.length\n }])\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_12, [_createVNode(_component_el_scrollbar, {\n onScroll: $options.handleScroll,\n ref: \"scrollContainer\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-list-dashboard\", {\n 'list-scrolled': $data.listScrolled\n }])\n }, [_createVNode(_component_el_text, {\n class: \"upload-list-dashboard-title\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_List)]),\n _: 1\n }), _createTextVNode(_toDisplayString($options.uploadingCount + $options.waitingCount) + \" \", 1), _createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Checked)]),\n _: 1\n }), _createTextVNode(_toDisplayString($options.uploadSuccessCount) + \" \", 1), _createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Failed)]),\n _: 1\n }), _createTextVNode(_toDisplayString($options.uploadErrorCount), 1)]),\n _: 1\n }), _createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"div\", _hoisted_14, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.copyAll'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"modern-action-btn modern-action-btn-copy\",\n onClick: _cache[8] || (_cache[8] = (...args) => $options.copyAll && $options.copyAll(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.retryFailed'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown, null, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, {\n class: \"modern-dropdown-menu\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, null, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_15, [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadForm.autoRetry')), 1), _createVNode(_component_el_switch, {\n modelValue: $data.autoReUpload,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $data.autoReUpload = $event),\n onChange: $options.handleAutoRetryChange,\n size: \"small\"\n }, null, 8, [\"modelValue\", \"onChange\"])])]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"modern-action-btn modern-action-btn-retry\",\n onClick: _cache[9] || (_cache[9] = (...args) => $options.retryError && $options.retryError(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n })])]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.clearList'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown, null, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, {\n class: \"modern-dropdown-menu\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n onClick: $options.clearFileList\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.clearAll')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_dropdown_item, {\n onClick: $options.clearSuccessList\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.clearUploaded')), 1)]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"button\", _hoisted_16, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })])]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])])], 2), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.fileList.slice().reverse(), file => {\n return _openBlock(), _createBlock(_component_UploadFileItem, {\n key: file.uid,\n file: file,\n onCopy: $options.handleCopy,\n onRemove: $options.handleRemove,\n onPreviewError: _cache[11] || (_cache[11] = f => f.url = require('@/assets/404.png'))\n }, null, 8, [\"file\", \"onCopy\", \"onRemove\"]);\n }), 128))]),\n _: 1\n }, 8, [\"onScroll\"])])]),\n _: 1\n }, 8, [\"class\"])]);\n}","/**\r\n * URL 构建工具函数\r\n * 用于生成各种格式的文件链接(原始链接、Markdown、HTML、BBCode)\r\n */\r\n\r\n/**\r\n * 根据 srcID 和文件名生成所有格式的 URL\r\n * @param {string} srcID - 文件资源 ID\r\n * @param {string} name - 文件名\r\n * @param {string} rootUrl - 链接前缀\r\n * @returns {{ finalURL: string, mdURL: string, htmlURL: string, ubbURL: string }}\r\n */\r\nexport function buildFileUrls(srcID, name, rootUrl) {\r\n const url = rootUrl + srcID\r\n return {\r\n finalURL: url,\r\n mdURL: `![${name}](${url})`,\r\n htmlURL: `\"${name}\"`,\r\n ubbURL: `[img]${url}[/img]`\r\n }\r\n}\r\n\r\n/**\r\n * 根据 selectedUrlForm 获取对应格式的 URL 值\r\n * @param {object} file - 文件对象,包含 finalURL/mdURL/htmlURL/ubbURL\r\n * @param {string} format - 格式类型:'url' | 'md' | 'html' | 'ubb'\r\n * @returns {string}\r\n */\r\nexport function getUrlByFormat(file, format) {\r\n const map = {\r\n url: file.finalURL,\r\n md: file.mdURL,\r\n html: file.htmlURL,\r\n ubb: file.ubbURL\r\n }\r\n return map[format] || file.finalURL\r\n}\r\n\r\n/**\r\n * 批量更新文件列表中的 URL(当自定义链接前缀变化时)\r\n * @param {Array} fileList - 文件列表\r\n * @param {string} rootUrl - 新的链接前缀\r\n */\r\nexport function updateFileListUrls(fileList, rootUrl) {\r\n fileList.forEach(item => {\r\n if (item.uploadChannel === 'external') {\r\n return\r\n }\r\n const urls = buildFileUrls(item.srcID, item.name, rootUrl)\r\n Object.assign(item, urls)\r\n })\r\n}\r\n","/**\r\n * SHA256 计算工具\r\n * 纯 JavaScript 实现的增量 SHA256 哈希算法,支持任意大小文件\r\n */\r\n\r\n// SHA256 常量\r\nconst K = new Uint32Array([\r\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\r\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\r\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\r\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\r\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\r\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\r\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\r\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\r\n])\r\n\r\nconst rotr = (x, n) => (x >>> n) | (x << (32 - n))\r\n\r\nfunction processBlock(block, H) {\r\n const W = new Uint32Array(64)\r\n\r\n for (let i = 0; i < 16; i++) {\r\n W[i] = (block[i * 4] << 24) | (block[i * 4 + 1] << 16) | (block[i * 4 + 2] << 8) | block[i * 4 + 3]\r\n }\r\n\r\n for (let i = 16; i < 64; i++) {\r\n const s0 = rotr(W[i - 15], 7) ^ rotr(W[i - 15], 18) ^ (W[i - 15] >>> 3)\r\n const s1 = rotr(W[i - 2], 17) ^ rotr(W[i - 2], 19) ^ (W[i - 2] >>> 10)\r\n W[i] = (W[i - 16] + s0 + W[i - 7] + s1) >>> 0\r\n }\r\n\r\n let [a, b, c, d, e, f, g, h] = H\r\n\r\n for (let i = 0; i < 64; i++) {\r\n const S1 = rotr(e, 6) ^ rotr(e, 11) ^ rotr(e, 25)\r\n const ch = (e & f) ^ (~e & g)\r\n const temp1 = (h + S1 + ch + K[i] + W[i]) >>> 0\r\n const S0 = rotr(a, 2) ^ rotr(a, 13) ^ rotr(a, 22)\r\n const maj = (a & b) ^ (a & c) ^ (b & c)\r\n const temp2 = (S0 + maj) >>> 0\r\n\r\n h = g; g = f; f = e\r\n e = (d + temp1) >>> 0\r\n d = c; c = b; b = a\r\n a = (temp1 + temp2) >>> 0\r\n }\r\n\r\n H[0] = (H[0] + a) >>> 0\r\n H[1] = (H[1] + b) >>> 0\r\n H[2] = (H[2] + c) >>> 0\r\n H[3] = (H[3] + d) >>> 0\r\n H[4] = (H[4] + e) >>> 0\r\n H[5] = (H[5] + f) >>> 0\r\n H[6] = (H[6] + g) >>> 0\r\n H[7] = (H[7] + h) >>> 0\r\n}\r\n\r\n/**\r\n * 创建增量 SHA256 哈希器\r\n * @returns {{ update: (data: Uint8Array) => void, digest: () => string }}\r\n */\r\nexport function createSha256() {\r\n let H = new Uint32Array([\r\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\r\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\r\n ])\r\n\r\n let buffer = new Uint8Array(64)\r\n let bufferLength = 0\r\n let totalLength = 0\r\n\r\n return {\r\n update(data) {\r\n totalLength += data.length\r\n let offset = 0\r\n\r\n if (bufferLength > 0) {\r\n const needed = 64 - bufferLength\r\n const toCopy = Math.min(needed, data.length)\r\n buffer.set(data.subarray(0, toCopy), bufferLength)\r\n bufferLength += toCopy\r\n offset = toCopy\r\n\r\n if (bufferLength === 64) {\r\n processBlock(buffer, H)\r\n bufferLength = 0\r\n }\r\n }\r\n\r\n while (offset + 64 <= data.length) {\r\n processBlock(data.subarray(offset, offset + 64), H)\r\n offset += 64\r\n }\r\n\r\n if (offset < data.length) {\r\n buffer.set(data.subarray(offset), 0)\r\n bufferLength = data.length - offset\r\n }\r\n },\r\n digest() {\r\n const bitLength = totalLength * 8\r\n\r\n // Padding\r\n buffer[bufferLength++] = 0x80\r\n\r\n if (bufferLength > 56) {\r\n buffer.fill(0, bufferLength, 64)\r\n processBlock(buffer, H)\r\n bufferLength = 0\r\n }\r\n\r\n buffer.fill(0, bufferLength, 56)\r\n\r\n // Length in bits (big-endian, 64-bit)\r\n const view = new DataView(buffer.buffer)\r\n view.setUint32(56, Math.floor(bitLength / 0x100000000), false)\r\n view.setUint32(60, bitLength >>> 0, false)\r\n\r\n processBlock(buffer, H)\r\n\r\n // Convert to hex\r\n let hex = ''\r\n for (let i = 0; i < 8; i++) {\r\n hex += H[i].toString(16).padStart(8, '0')\r\n }\r\n return hex\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * 计算文件的 SHA256 哈希\r\n * 使用增量哈希算法,支持任意大小文件\r\n * @param {File} file - 要计算哈希的文件\r\n * @returns {Promise} SHA256 哈希值(十六进制字符串)\r\n */\r\nexport async function computeSha256(file) {\r\n const sha256 = createSha256()\r\n\r\n const CHUNK_SIZE = 4 * 1024 * 1024 // 4MB chunks\r\n let offset = 0\r\n\r\n while (offset < file.size) {\r\n const chunk = file.slice(offset, Math.min(offset + CHUNK_SIZE, file.size))\r\n const buffer = await chunk.arrayBuffer()\r\n sha256.update(new Uint8Array(buffer))\r\n offset += CHUNK_SIZE\r\n\r\n // 每处理 20MB 打印一次进度\r\n if (offset % (20 * 1024 * 1024) < CHUNK_SIZE) {\r\n console.log(`SHA256 progress: ${Math.min(100, Math.round(offset / file.size * 100))}%`)\r\n }\r\n }\r\n\r\n return sha256.digest()\r\n}\r\n","function normalizePath(path = '') {\r\n return String(path)\r\n .replace(/\\\\/g, '/')\r\n .split('/')\r\n .filter(segment => segment && segment !== '.')\r\n .map(segment => segment === '..' ? '_' : segment)\r\n .join('/')\r\n}\r\n\r\nexport function getRelativeDirectory(relativePath = '') {\r\n const normalizedPath = normalizePath(relativePath)\r\n const lastSlashIndex = normalizedPath.lastIndexOf('/')\r\n return lastSlashIndex === -1 ? '' : normalizedPath.slice(0, lastSlashIndex)\r\n}\r\n\r\nexport function joinUploadFolder(baseFolder = '', relativeDirectory = '') {\r\n const hasLeadingSlash = /^[\\\\/]/.test(String(baseFolder).trim())\r\n const joinedPath = [normalizePath(baseFolder), normalizePath(relativeDirectory)]\r\n .filter(Boolean)\r\n .join('/')\r\n\r\n if (!joinedPath) return ''\r\n return hasLeadingSlash ? `/${joinedPath}` : joinedPath\r\n}\r\n\r\nexport function filesToUploadEntries(files = []) {\r\n return Array.from(files).map(file => ({\r\n file,\r\n relativePath: normalizePath(file.webkitRelativePath || file.relativePath || file.name)\r\n }))\r\n}\r\n\r\nfunction readFileEntry(entry) {\r\n return new Promise((resolve, reject) => entry.file(resolve, reject))\r\n}\r\n\r\nasync function readAllDirectoryEntries(directoryEntry) {\r\n const reader = directoryEntry.createReader()\r\n const entries = []\r\n\r\n // Chromium may return directory entries in batches (commonly 100 at a time).\r\n while (true) {\r\n const batch = await new Promise((resolve, reject) => reader.readEntries(resolve, reject))\r\n if (!batch.length) break\r\n entries.push(...batch)\r\n }\r\n\r\n return entries\r\n}\r\n\r\nasync function collectFromEntry(entry, parentPath, result) {\r\n const relativePath = normalizePath([parentPath, entry.name].filter(Boolean).join('/'))\r\n\r\n if (entry.isFile) {\r\n const file = await readFileEntry(entry)\r\n result.push({ file, relativePath })\r\n return\r\n }\r\n\r\n if (entry.isDirectory) {\r\n const children = await readAllDirectoryEntries(entry)\r\n for (const child of children) {\r\n await collectFromEntry(child, relativePath, result)\r\n }\r\n }\r\n}\r\n\r\nasync function collectFromHandle(handle, parentPath, result) {\r\n const relativePath = normalizePath([parentPath, handle.name].filter(Boolean).join('/'))\r\n\r\n if (handle.kind === 'file') {\r\n result.push({ file: await handle.getFile(), relativePath })\r\n return\r\n }\r\n\r\n if (handle.kind === 'directory') {\r\n for await (const child of handle.values()) {\r\n await collectFromHandle(child, relativePath, result)\r\n }\r\n }\r\n}\r\n\r\nexport async function collectFilesFromDataTransferItems(items = []) {\r\n const fileItems = Array.from(items).filter(item => item.kind === 'file')\r\n const result = []\r\n\r\n // Resolve handles while still in the drop/paste event call chain when possible.\r\n const handles = await Promise.all(fileItems.map(async item => {\r\n if (typeof item.getAsFileSystemHandle !== 'function') return null\r\n try {\r\n return await item.getAsFileSystemHandle()\r\n } catch {\r\n return null\r\n }\r\n }))\r\n\r\n for (let index = 0; index < fileItems.length; index++) {\r\n const item = fileItems[index]\r\n const handle = handles[index]\r\n\r\n if (handle) {\r\n await collectFromHandle(handle, '', result)\r\n continue\r\n }\r\n\r\n const entry = typeof item.webkitGetAsEntry === 'function' ? item.webkitGetAsEntry() : null\r\n if (entry) {\r\n await collectFromEntry(entry, '', result)\r\n continue\r\n }\r\n\r\n const file = item.getAsFile?.()\r\n if (file) result.push(...filesToUploadEntries([file]))\r\n }\r\n\r\n return result\r\n}\r\n","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.find.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport \"core-js/modules/es.iterator.reduce.js\";\nimport \"core-js/modules/es.typed-array.with.js\";\nimport \"core-js/modules/esnext.uint8-array.set-from-base64.js\";\nimport \"core-js/modules/esnext.uint8-array.set-from-hex.js\";\nimport \"core-js/modules/esnext.uint8-array.to-base64.js\";\nimport \"core-js/modules/esnext.uint8-array.to-hex.js\";\nimport \"core-js/modules/web.dom-exception.stack.js\";\nimport axios from '@/utils/axios';\nimport * as imageConversion from 'image-conversion';\nimport { mapGetters } from 'vuex';\nimport { buildFileUrls, updateFileListUrls, getUrlByFormat } from '@/utils/upload/urlBuilder';\nimport { computeSha256 } from '@/utils/upload/sha256';\nimport { collectFilesFromDataTransferItems, filesToUploadEntries, getRelativeDirectory, joinUploadFolder } from '@/utils/upload/directoryTraversal';\nimport UploadFileItem from '@/components/upload/UploadFileItem.vue';\nexport default {\n name: 'UploadForm',\n components: {\n UploadFileItem\n },\n props: {\n selectedUrlForm: {\n type: String,\n default: 'url',\n required: false\n },\n customerCompress: {\n type: Boolean,\n default: true,\n required: false\n },\n compressQuality: {\n type: Number,\n default: 4,\n required: false\n },\n compressBar: {\n type: Number,\n default: 5,\n required: false\n },\n serverCompress: {\n type: Boolean,\n default: true,\n required: false\n },\n uploadChannel: {\n type: String,\n default: 'telegram',\n required: false\n },\n channelName: {\n type: String,\n default: '',\n required: false\n },\n uploadNameType: {\n type: String,\n default: 'default',\n required: false\n },\n useCustomUrl: {\n type: String,\n default: 'false',\n required: false\n },\n customUrlPrefix: {\n type: String,\n default: '',\n required: false\n },\n autoRetry: {\n type: Boolean,\n default: true,\n required: false\n },\n urlPrefix: {\n type: String,\n default: '',\n required: false\n },\n uploadMethod: {\n type: String,\n default: 'default',\n required: false\n },\n uploadFolder: {\n type: String,\n default: '',\n required: false\n },\n convertToWebp: {\n type: Boolean,\n default: false,\n required: false\n }\n },\n data() {\n return {\n fileList: [],\n uploading: false,\n maxUploading: 6,\n exceptionList: [],\n listScrolled: false,\n fileListLength: 0,\n localUidCounter: 0,\n pastedUrls: '',\n pasteUploadMethod: 'save',\n // 失败文件自动重试相关\n autoReUpload: true,\n maxRetryCount: 10,\n // 最大重试次数\n retryTimer: null,\n // 自动重试定时器\n retryDelay: 12000,\n // 重试延迟时间(毫秒)\n // 批量上传并发控制\n uploadQueue: [],\n // 等待上传的文件队列\n activeUploads: 0,\n // 当前正在上传的文件数\n maxConcurrentUploads: 6,\n // 最大并发上传数\n // 取消上传控制\n abortControllers: new Map(),\n // 存储每个文件的 AbortController\n pasteFocusTarget: null\n };\n },\n watch: {\n fileList: {\n handler() {\n if (this.fileList.length > this.fileListLength) {\n this.$nextTick(() => {\n setTimeout(() => {\n if (this.$refs.scrollContainer) {\n // this.$refs.scrollContainer.setScrollTop(this.$refs.scrollContainer.wrapRef.scrollHeight) // 滚动到底部\n this.$refs.scrollContainer.setScrollTop(0); // 滚动到顶部\n }\n }, 100);\n });\n }\n this.fileListLength = this.fileList.length;\n },\n deep: true\n },\n useCustomUrl: {\n handler() {\n updateFileListUrls(this.fileList, this.rootUrl);\n },\n immediate: true\n },\n customUrlPrefix: {\n handler() {\n if (this.useCustomUrl === 'true') {\n updateFileListUrls(this.fileList, this.rootUrl);\n }\n },\n immediate: true\n },\n autoReUpload(val) {\n this.$store.commit('setStoreAutoReUpload', val);\n }\n },\n computed: {\n ...mapGetters(['storeAutoReUpload']),\n uploadSuccessCount() {\n return this.fileList.filter(item => item.status === 'done' || item.status === 'success').length;\n },\n uploadErrorCount() {\n return this.fileList.filter(item => item.status === 'exception').length;\n },\n uploadingCount() {\n return this.fileList.filter(item => item.status === 'uploading').length;\n },\n waitingCount() {\n return this.uploadQueue.length;\n },\n urlSize() {\n // 移动端为small\n return window.innerWidth < 768 ? 'small' : 'default';\n },\n disableTooltip() {\n return window.innerWidth < 768;\n },\n pasteShortcut() {\n const platform = navigator.userAgentData?.platform || navigator.platform || '';\n return /mac|iphone|ipad|ipod/i.test(platform) ? 'Cmd + V' : 'Ctrl + V';\n },\n rootUrl() {\n // 链接前缀,优先级:用户自定义 > urlPrefix > 默认\n return this.useCustomUrl === 'true' ? this.customUrlPrefix : this.urlPrefix || `${window.location.protocol}//${window.location.host}/file/`;\n },\n pasteCardMethodButtonSize() {\n if (this.fileList.length) {\n return 'small';\n } else {\n return window.innerWidth < 768 ? 'small' : 'medium';\n }\n }\n },\n mounted() {\n document.addEventListener('paste', this.handlePaste);\n document.addEventListener('keydown', this.handlePasteShortcut);\n this.autoReUpload = this.storeAutoReUpload;\n },\n beforeUnmount() {\n document.removeEventListener('paste', this.handlePaste);\n document.removeEventListener('keydown', this.handlePasteShortcut);\n // 清理状态\n this.uploadQueue = [];\n this.fileList = [];\n this.activeUploads = 0;\n },\n methods: {\n createLocalUid() {\n this.localUidCounter += 1;\n return `local-${Date.now()}-${this.localUidCounter}`;\n },\n applyUploadPath(file, relativePath = file.name) {\n const normalizedRelativePath = String(relativePath || file.name).replace(/\\\\/g, '/').replace(/^\\/+/, '');\n file.uploadRelativePath = normalizedRelativePath;\n file.uploadFolder = joinUploadFolder(this.uploadFolder, getRelativeDirectory(normalizedRelativePath));\n return file;\n },\n copyUploadPath(sourceFile, targetFile) {\n targetFile.uploadRelativePath = sourceFile.uploadRelativePath || sourceFile.name;\n targetFile.uploadFolder = sourceFile.uploadFolder ?? this.uploadFolder;\n return targetFile;\n },\n getFileUploadFolder(file) {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n return fileItem?.uploadFolder ?? file.file.uploadFolder ?? this.uploadFolder;\n },\n createUploadRequest(file) {\n return {\n file,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, uploadedFile) => this.handleSuccess(response, uploadedFile),\n onError: (error, uploadedFile) => this.handleError(error, uploadedFile)\n };\n },\n async uploadLocalEntries(entries) {\n await Promise.allSettled(entries.map(async ({\n file,\n relativePath\n }) => {\n file.uid = this.createLocalUid();\n this.applyUploadPath(file, relativePath);\n const processedFile = await this.beforeUpload(file);\n if (processedFile instanceof File) {\n this.uploadFile(this.createUploadRequest(processedFile));\n }\n }));\n },\n openFolderPicker() {\n this.$refs.folderInput?.click();\n },\n async handleFolderSelection(event) {\n const entries = filesToUploadEntries(event.target.files);\n event.target.value = '';\n await this.uploadLocalEntries(entries);\n },\n async handleDrop(event) {\n const dataTransfer = event.dataTransfer;\n if (!dataTransfer) return;\n const entries = dataTransfer.items?.length ? await collectFilesFromDataTransferItems(dataTransfer.items) : filesToUploadEntries(dataTransfer.files);\n if (entries.length) await this.uploadLocalEntries(entries);\n },\n // 文件名中间截断,保留前缀和扩展名\n truncateFilename(filename, maxLength = 20) {\n if (!filename || filename.length <= maxLength) {\n return filename;\n }\n const lastDotIndex = filename.lastIndexOf('.');\n let name, ext;\n if (lastDotIndex > 0) {\n name = filename.substring(0, lastDotIndex);\n ext = filename.substring(lastDotIndex);\n } else {\n name = filename;\n ext = '';\n }\n // 保留扩展名和部分前后缀\n const keepEnd = ext.length + 4; // 扩展名 + 4个字符\n const keepStart = maxLength - keepEnd - 3; // 3个字符留给...\n if (keepStart <= 0) {\n return filename.substring(0, maxLength - 3) + '...';\n }\n return name.substring(0, keepStart) + '...' + name.slice(-4) + ext;\n },\n uploadFile(file) {\n // 如果fileList中不存在该文件,说明已被删除,直接返回\n if (!this.fileList.find(item => item.uid === file.file.uid)) {\n return;\n }\n\n // 并发控制:如果当前上传数已达上限,加入队列等待\n if (this.activeUploads >= this.maxConcurrentUploads) {\n this.uploadQueue.push(file);\n const waitingItem = this.fileList.find(item => item.uid === file.file.uid);\n if (waitingItem) waitingItem.status = 'waiting';\n return;\n }\n\n // 开始上传,增加计数\n this.activeUploads++;\n const uploadingItem = this.fileList.find(item => item.uid === file.file.uid);\n if (uploadingItem) uploadingItem.status = 'uploading';\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n const uploadChannel = fileItem?.uploadChannel || this.uploadChannel;\n\n // 如果上传渠道为外链,直接使用外链上传\n if (uploadChannel === 'external') {\n this.uploadSingleFile(file);\n return;\n }\n\n // HuggingFace 渠道:根据文件大小选择上传方式\n // 小文件(<20MB):通过 CF Workers 代理上传\n // 大文件(>=20MB):前端直传到 HuggingFace S3,绕过 CF Workers 限制\n if (uploadChannel === 'huggingface') {\n const HF_DIRECT_THRESHOLD = 20 * 1024 * 1024; // 20MB\n if (file.file.size >= HF_DIRECT_THRESHOLD) {\n this.uploadToHuggingFaceDirect(file);\n } else {\n this.uploadSingleFile(file);\n }\n return;\n }\n\n // Discord 渠道:限制 10MB,超过 9MB 就用分块上传(留安全余量)\n if (uploadChannel === 'discord') {\n const DISCORD_CHUNK_THRESHOLD = 9 * 1024 * 1024; // 9MB\n if (file.file.size > DISCORD_CHUNK_THRESHOLD) {\n this.uploadFileInChunks(file);\n } else {\n this.uploadSingleFile(file);\n }\n return;\n }\n\n // 其他渠道,检查文件大小,决定是否使用分块上传\n const CHUNK_THRESHOLD = 20 * 1024 * 1024; // 20MB\n if (file.file.size > CHUNK_THRESHOLD) {\n this.uploadFileInChunks(file);\n } else {\n this.uploadSingleFile(file);\n }\n },\n // 处理上传队列中的下一个文件\n processUploadQueue() {\n // 如果队列为空或已达并发上限,不处理\n if (this.uploadQueue.length === 0 || this.activeUploads >= this.maxConcurrentUploads) {\n return;\n }\n\n // 从队列中取出下一个文件并上传\n const nextFile = this.uploadQueue.shift();\n if (nextFile && this.fileList.find(item => item.uid === nextFile.file.uid)) {\n this.uploadFile(nextFile);\n } else {\n // 如果文件已被删除,继续处理下一个\n this.processUploadQueue();\n }\n },\n // 上传完成后的清理工作(成功或失败都调用)\n onUploadComplete() {\n this.activeUploads = Math.max(0, this.activeUploads - 1);\n\n // 处理队列中的下一个文件\n this.processUploadQueue();\n\n // 更新上传状态\n if (this.activeUploads === 0 && this.uploadQueue.length === 0) {\n this.uploading = false;\n }\n },\n // 单文件上传\n async uploadSingleFile(file) {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (!fileItem) return; // 文件已被删除\n\n const needServerCompress = fileItem.serverCompress;\n const uploadChannel = fileItem.uploadChannel || this.uploadChannel;\n const autoRetry = this.autoRetry && uploadChannel !== 'external';\n const uploadNameType = uploadChannel === 'external' ? 'default' : this.uploadNameType;\n const targetUploadFolder = this.getFileUploadFolder(file);\n\n // 创建 AbortController 用于取消上传\n const abortController = new AbortController();\n this.abortControllers.set(file.file.uid, abortController);\n const formData = new FormData();\n formData.append('file', file.file);\n if (uploadChannel === 'external') {\n formData.append('url', file.file.url);\n }\n\n // HuggingFace 渠道:在前端预计算 SHA256,避免后端 CPU 超时\n if (uploadChannel === 'huggingface') {\n try {\n console.log('Computing SHA256 for HuggingFace upload...');\n const sha256 = await computeSha256(file.file);\n formData.append('sha256', sha256);\n console.log('SHA256 computed:', sha256);\n } catch (err) {\n console.error('Failed to compute SHA256:', err);\n // 继续上传,让后端计算(可能会超时)\n }\n }\n axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(targetUploadFolder),\n method: 'post',\n data: formData,\n withAuthCode: true,\n signal: abortController.signal,\n // 添加取消信号\n onUploadProgress: progressEvent => {\n const percentCompleted = Math.round(progressEvent.loaded / progressEvent.total * 100);\n file.onProgress({\n percent: percentCompleted,\n file: file.file\n });\n }\n }).then(res => {\n file.onSuccess(res, file.file);\n }).catch(err => {\n // 如果是取消操作,不加入异常列表\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED') {\n console.log('上传已取消:', file.file.name);\n return;\n }\n if (err.response && err.response.status !== 401) {\n this.exceptionList.push(file);\n file.onError(err, file.file);\n } else if (!err.response) {\n // 网络错误(如 ERR_HTTP2_PROTOCOL_ERROR),也加入异常列表\n this.exceptionList.push(file);\n file.onError(err, file.file);\n }\n }).finally(() => {\n // 清理 AbortController\n this.abortControllers.delete(file.file.uid);\n // 调用并发控制的完成回调\n this.onUploadComplete();\n });\n },\n // 分块上传\n async uploadFileInChunks(file) {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (!fileItem) return; // 文件已被删除\n\n const uploadChannel = fileItem.uploadChannel || this.uploadChannel;\n\n // 创建 AbortController 用于取消上传\n const abortController = new AbortController();\n this.abortControllers.set(file.file.uid, abortController);\n\n // Discord 使用 9MB 分块(留安全余量,Discord 限制 10MB)\n // Telegram 使用 16MB 分块(TG Bot getFile 下载限制 20MB,留 4MB 安全余量)\n // 其他渠道使用 16MB 分块\n const CHUNK_SIZE = uploadChannel === 'discord' ? 9 * 1024 * 1024 // 9MB for Discord\n : 16 * 1024 * 1024; // 16MB for Telegram and others (TG getFile limit: 20MB)\n\n const fileSize = file.file.size;\n const fileType = file.file.type || 'application/octet-stream';\n const totalChunks = Math.ceil(fileSize / CHUNK_SIZE);\n const needServerCompress = fileItem.serverCompress;\n const autoRetry = this.autoRetry && uploadChannel !== 'external';\n const uploadNameType = uploadChannel === 'external' ? 'default' : this.uploadNameType;\n const targetUploadFolder = this.getFileUploadFolder(file);\n\n // HuggingFace 渠道:在前端预计算 SHA256\n let precomputedSha256 = null;\n if (uploadChannel === 'huggingface') {\n try {\n console.log('Computing SHA256 for HuggingFace chunked upload...');\n precomputedSha256 = await computeSha256(file.file);\n console.log('SHA256 computed:', precomputedSha256);\n } catch (err) {\n console.error('Failed to compute SHA256:', err);\n }\n }\n try {\n // 第一步:初始化分块上传,获取uploadId\n const initFormData = new FormData();\n initFormData.append('originalFileName', file.file.name);\n initFormData.append('originalFileType', fileType);\n initFormData.append('totalChunks', totalChunks.toString());\n const initResponse = await axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(targetUploadFolder) + '&initChunked=true',\n method: 'post',\n data: initFormData,\n withAuthCode: true\n });\n if (!initResponse.data.success) {\n throw new Error(this.$t('uploadForm.chunkInitFailed') + ': ' + initResponse.data.message);\n }\n const uploadId = initResponse.data.uploadId;\n console.log('分块上传初始化成功,uploadId:', uploadId);\n\n // 记录 totalChunks 和 uploadId 到文件项,用于后续清理\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (fileItem) {\n fileItem.totalChunks = totalChunks;\n fileItem.uploadId = uploadId;\n }\n\n // 第二步:并发上传所有分块\n const maxConcurrency = 3; // 最大并发数\n const chunkProgress = new Array(totalChunks).fill(0);\n let nextChunkIndex = 0;\n let hasError = false;\n let errorMsg = '';\n let isCancelled = false; // 标记是否被取消\n\n const uploadChunk = async chunkIndex => {\n if (hasError || isCancelled) return;\n const start = chunkIndex * CHUNK_SIZE;\n const end = Math.min(start + CHUNK_SIZE, fileSize);\n const chunk = file.file.slice(start, end);\n const formData = new FormData();\n formData.append('file', chunk, `${file.file.name}.part${chunkIndex.toString().padStart(3, '0')}`);\n formData.append('chunkIndex', chunkIndex.toString());\n formData.append('totalChunks', totalChunks.toString());\n formData.append('uploadId', uploadId);\n formData.append('originalFileName', file.file.name);\n formData.append('originalFileType', fileType);\n let retryCount = 0;\n const maxRetries = 3;\n while (retryCount < maxRetries) {\n if (hasError || isCancelled) return;\n try {\n await axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(targetUploadFolder) + '&chunked=true',\n method: 'post',\n data: formData,\n withAuthCode: true,\n signal: abortController.signal,\n // 添加取消信号\n onUploadProgress: progressEvent => {\n if (hasError || isCancelled) return;\n const percent = Math.round(progressEvent.loaded / progressEvent.total * 100);\n chunkProgress[chunkIndex] = percent;\n const totalPercent = Math.round(chunkProgress.reduce((a, b) => a + b, 0) / totalChunks);\n file.onProgress({\n percent: totalPercent,\n file: file.file\n });\n }\n });\n return; // Success\n } catch (err) {\n // 如果是取消操作,直接返回\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED') {\n isCancelled = true;\n console.log('分块上传已取消:', file.file.name);\n return;\n }\n retryCount++;\n console.warn(`分块 ${chunkIndex + 1}/${totalChunks} 上传失败 (重试 ${retryCount}/${maxRetries}):`, err);\n if (retryCount >= maxRetries) {\n hasError = true;\n errorMsg = `分块 ${chunkIndex + 1}/${totalChunks} 上传失败: ${err.message}`;\n throw new Error(errorMsg);\n }\n // 等待后重试\n await new Promise(resolve => setTimeout(resolve, 2000 * retryCount));\n }\n }\n };\n\n // 创建并发池\n const pool = [];\n for (let i = 0; i < maxConcurrency; i++) {\n pool.push((async () => {\n while (nextChunkIndex < totalChunks && !hasError && !isCancelled) {\n const currentIndex = nextChunkIndex++;\n try {\n await uploadChunk(currentIndex);\n } catch (e) {\n if (!isCancelled) {\n hasError = true;\n errorMsg = e.message;\n }\n break;\n }\n }\n })());\n }\n await Promise.all(pool);\n\n // 如果被取消,直接返回\n if (isCancelled) {\n console.log('分块上传已取消,跳过合并步骤');\n return;\n }\n if (hasError) {\n throw new Error(errorMsg || this.$t('uploadForm.uploadError'));\n }\n\n // 第三步:所有分块上传完成,发送合并请求\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.chunkMerging'),\n duration: 0 // 不自动关闭\n });\n const mergeFormData = new FormData();\n mergeFormData.append('uploadId', uploadId);\n mergeFormData.append('totalChunks', totalChunks.toString());\n mergeFormData.append('originalFileName', file.file.name);\n mergeFormData.append('originalFileType', fileType);\n // HuggingFace 渠道:传递预计算的 SHA256\n if (precomputedSha256) {\n mergeFormData.append('sha256', precomputedSha256);\n }\n const response = await axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(targetUploadFolder) + '&chunked=true&merge=true',\n method: 'post',\n data: mergeFormData,\n withAuthCode: true\n });\n\n // 关闭提示\n this.$message.closeAll();\n\n // 同步处理完成\n file.onSuccess(response, file.file);\n } catch (err) {\n // 如果是取消操作,不加入异常列表\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED') {\n console.log('分块上传已取消:', file.file.name);\n return;\n }\n console.error('分块上传失败:', err);\n\n // 如果有uploadId,清理相关资源\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (fileItem && fileItem.uploadId) {\n this.cleanupUploadResources(fileItem.uploadId, fileItem.totalChunks).then(() => {\n console.log(`已清理分块上传失败的资源: ${fileItem.uploadId}`);\n }).catch(cleanupError => {\n console.warn('清理分块上传失败资源时出错:', cleanupError);\n });\n }\n if (err.response && err.response.status !== 401) {\n this.exceptionList.push(file);\n file.onError(err, file.file);\n } else if (!err.response) {\n // 网络错误,也加入异常列表\n this.exceptionList.push(file);\n file.onError(err, file.file);\n }\n } finally {\n // 清理 AbortController\n this.abortControllers.delete(file.file.uid);\n // 调用并发控制的完成回调\n this.onUploadComplete();\n }\n },\n handleRemove(file) {\n // 如果文件正在上传,取消上传\n if (this.abortControllers.has(file.uid)) {\n this.abortControllers.get(file.uid).abort();\n this.abortControllers.delete(file.uid);\n }\n // 从上传队列中移除(如果在等待中)\n this.uploadQueue = this.uploadQueue.filter(item => item.file.uid !== file.uid);\n // 从文件列表中移除\n this.fileList = this.fileList.filter(item => item.uid !== file.uid);\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.deleted', {\n name: this.truncateFilename(file.name)\n })\n });\n },\n // 清理上传资源\n async cleanupUploadResources(uploadId, totalChunks = 0) {\n try {\n await axios({\n url: `/upload?cleanup=true&uploadId=${uploadId}&totalChunks=${totalChunks}`,\n method: 'get',\n withAuthCode: true,\n timeout: 5000\n });\n console.log(`清理上传资源成功: ${uploadId}`);\n } catch (error) {\n console.warn('清理上传资源失败:', error);\n }\n },\n handleSuccess(response, file) {\n const fileItem = this.fileList.find(item => item.uid === file.uid);\n if (!fileItem) return; // 文件已被删除\n\n try {\n // 对上传渠道为外链的,不修改链接\n const uploadChannel = fileItem.uploadChannel || this.uploadChannel;\n if (uploadChannel !== 'external') {\n // 从response.data[0].src中去除/file/前缀\n const srcID = response.data[0].src.replace('/file/', '');\n fileItem.url = `${window.location.protocol}//${window.location.host}/file/` + srcID;\n const urls = buildFileUrls(srcID, file.name, this.rootUrl);\n Object.assign(fileItem, urls);\n fileItem.srcID = srcID;\n }\n fileItem.progreess = 100;\n fileItem.status = 'success';\n\n // Save to history\n this.saveToHistory(fileItem);\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.uploadSuccess', {\n name: this.truncateFilename(file.name)\n })\n });\n setTimeout(() => {\n const item = this.fileList.find(item => item.uid === file.uid);\n if (item) item.status = 'done';\n }, 1000);\n } catch (error) {\n this.$message.error(this.$t('uploadForm.uploadFailed', {\n name: this.truncateFilename(file.name)\n }));\n fileItem.status = 'exception';\n }\n // 注意:并发控制的 onUploadComplete 已在各上传方法的 finally 中调用\n },\n saveToHistory(fileItem) {\n try {\n const history = JSON.parse(localStorage.getItem('uploadHistory') || '[]');\n const newRecord = {\n name: fileItem.name,\n url: fileItem.finalURL,\n time: Date.now(),\n type: fileItem.name.split('.').pop().toLowerCase()\n };\n history.push(newRecord);\n localStorage.setItem('uploadHistory', JSON.stringify(history));\n } catch (e) {\n console.error('Failed to save history', e);\n }\n },\n handleError(err, file) {\n const fileItem = this.fileList.find(item => item.uid === file.uid);\n if (!fileItem) return; // 文件已被删除\n\n this.$message.error(this.$t('uploadForm.uploadFailed', {\n name: this.truncateFilename(file.name)\n }));\n fileItem.status = 'exception';\n\n // 如果开启了自动重试,安排自动重试\n if (this.autoReUpload) {\n this.scheduleAutoRetry();\n }\n // 注意:并发控制的 onUploadComplete 已在各上传方法的 finally 中调用\n },\n handleCopy(file) {\n const status = this.fileList.find(item => item.uid === file.uid).status;\n if (status !== 'done' && status !== 'success') {\n this.$message({\n type: 'warning',\n message: this.$t('uploadForm.fileNotUploaded')\n });\n return;\n }\n navigator.clipboard.writeText(getUrlByFormat(file, this.selectedUrlForm));\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.copySuccess')\n });\n },\n beforeUpload(file) {\n return new Promise(async (resolve, reject) => {\n let processedFile = file;\n\n // WebP 转换:在压缩之前进行\n // 条件:1.开启WebP转换 2.文件类型为图片 3.不是WebP/GIF/SVG格式\n const canConvertToWebp = this.convertToWebp && file.type.includes('image') && !file.type.includes('webp') && !file.type.includes('gif') && !file.type.includes('svg');\n if (canConvertToWebp) {\n try {\n const convertedFile = await this.convertImageToWebp(file);\n if (convertedFile) {\n processedFile = convertedFile;\n console.log(`WebP转换成功: ${file.name} -> ${convertedFile.name}, 大小: ${(file.size / 1024).toFixed(1)}KB -> ${(convertedFile.size / 1024).toFixed(1)}KB`);\n }\n } catch (err) {\n console.warn('WebP转换失败,使用原文件:', err);\n // 转换失败,继续使用原文件\n }\n }\n\n // 客户端压缩条件:1.文件类型为图片 2.开启客户端压缩,且文件大小大于压缩阈值\n const needCustomCompress = processedFile.type.includes('image') && this.customerCompress && processedFile.size / 1024 / 1024 > this.compressBar;\n const isLtLim = processedFile.size / 1024 / 1024 <= 1024 || this.uploadChannel !== 'telegram';\n const pushFileToQueue = (file, serverCompress) => {\n const fileUrl = URL.createObjectURL(file);\n this.fileList.push({\n uid: file.uid,\n name: file.uploadRelativePath || file.name,\n url: fileUrl,\n finalURL: '',\n mdURL: '',\n htmlURL: '',\n ubbURL: '',\n srcID: '',\n status: 'uploading',\n progreess: 0,\n serverCompress: serverCompress,\n uploadFolder: file.uploadFolder ?? this.uploadFolder,\n retryCount: 0\n });\n resolve(file);\n };\n if (needCustomCompress) {\n //尝试压缩图片\n imageConversion.compressAccurately(processedFile, 1024 * this.compressQuality).then(res => {\n //如果压缩后大于1024MB,且上传渠道为telegram,则不上传\n if (res.size / 1024 / 1024 > 1024 && this.uploadChannel === 'telegram') {\n this.$message.error(this.$t('uploadForm.compressedFileTooLarge', {\n name: processedFile.name\n }));\n reject(this.$t('uploadForm.fileSizeTooLarge'));\n }\n this.uploading = true;\n //将res包装成新的file\n const newFile = new File([res], processedFile.name, {\n type: res.type\n });\n newFile.uid = file.uid;\n this.copyUploadPath(processedFile, newFile);\n\n //开启服务端压缩条件:1.开启服务端压缩 2.文件大小小于10MB 3.上传渠道为Telegram\n const needServerCompress = this.serverCompress && newFile.size / 1024 / 1024 < 10 && this.uploadChannel === 'telegram';\n pushFileToQueue(newFile, needServerCompress);\n }).catch(err => {\n this.$message.error(this.$t('uploadForm.compressFailedCannotUpload', {\n name: processedFile.name\n }));\n reject(err);\n });\n } else if (isLtLim) {\n this.uploading = true;\n\n // 开启服务端压缩条件:1.上传渠道为Telegram 2.开启服务端压缩 3.如果为图片,则文件大小小于10MB,否则不限制大小\n const needServerCompress = this.uploadChannel === 'telegram' && this.serverCompress && (processedFile.type.includes('image') ? processedFile.size / 1024 / 1024 < 10 : true);\n pushFileToQueue(processedFile, needServerCompress);\n } else {\n this.$message.error(this.$t('uploadForm.fileTooLarge', {\n name: processedFile.name\n }));\n reject(this.$t('uploadForm.fileSizeTooLarge'));\n }\n });\n },\n handleProgress(event) {\n const fileItem = this.fileList.find(item => item.uid === event.file.uid);\n if (fileItem) {\n fileItem.progreess = event.percent;\n }\n },\n copyAll() {\n const urls = this.fileList.filter(item => item.status === 'done' || item.status === 'success').map(item => getUrlByFormat(item, this.selectedUrlForm)).join('\\n');\n navigator.clipboard.writeText(urls);\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.copyAllSuccess')\n });\n },\n clearFileList() {\n if (this.fileList.length > 0) {\n // 取消所有正在上传的文件\n this.abortControllers.forEach((controller, uid) => {\n controller.abort();\n });\n this.abortControllers.clear();\n // 清空上传队列\n this.uploadQueue = [];\n // 清空文件列表\n this.fileList = [];\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.fileListCleared')\n });\n } else {\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.fileListEmpty')\n });\n }\n },\n clearSuccessList() {\n if (this.uploadSuccessCount > 0) {\n this.fileList = this.fileList.filter(item => item.status !== 'done' && item.status !== 'success');\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.successFilesCleared')\n });\n } else {\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.successFilesEmpty')\n });\n }\n },\n isEditablePasteTarget(target) {\n const element = target?.nodeType === Node.TEXT_NODE ? target.parentElement : target;\n if (!element) return false;\n const tagName = element.tagName;\n return tagName === 'INPUT' || tagName === 'TEXTAREA' || element.isContentEditable || Boolean(element.closest?.('[contenteditable=\"true\"]'));\n },\n handlePasteShortcut(event) {\n const isPasteShortcut = (event.ctrlKey || event.metaKey) && !event.altKey && String(event.key).toLowerCase() === 'v';\n if (!isPasteShortcut || this.isEditablePasteTarget(event.target)) return;\n const receiver = this.$refs.clipboardPasteReceiver;\n if (!receiver) return;\n this.pasteFocusTarget = document.activeElement;\n receiver.value = '';\n try {\n receiver.focus({\n preventScroll: true\n });\n } catch {\n receiver.focus();\n }\n },\n releasePasteReceiver(target) {\n const receiver = this.$refs.clipboardPasteReceiver;\n if (!receiver || target !== receiver) return;\n receiver.value = '';\n const focusTarget = this.pasteFocusTarget;\n this.pasteFocusTarget = null;\n setTimeout(() => {\n if (focusTarget?.isConnected && typeof focusTarget.focus === 'function') {\n try {\n focusTarget.focus({\n preventScroll: true\n });\n } catch {\n focusTarget.focus();\n }\n } else {\n receiver.blur();\n }\n if (document.activeElement === receiver) receiver.blur();\n }, 0);\n },\n async handlePaste(event) {\n // 当粘贴位置是文本框时,不执行该操作\n const isPasteReceiver = event.target === this.$refs.clipboardPasteReceiver;\n if (!isPasteReceiver && this.isEditablePasteTarget(event.target)) {\n return;\n }\n const clipboardData = event.clipboardData;\n if (!clipboardData) {\n this.releasePasteReceiver(event.target);\n return;\n }\n const items = Array.from(clipboardData.items || []);\n const fileItems = items.filter(item => item.kind === 'file');\n const stringItems = items.filter(item => item.kind === 'string');\n const fileEntries = filesToUploadEntries(clipboardData.files || []);\n if (isPasteReceiver) event.preventDefault();\n this.releasePasteReceiver(event.target);\n if (fileEntries.length > 0 || fileItems.length > 0) {\n event.preventDefault();\n let entries = [];\n if (fileItems.length) {\n try {\n entries = await collectFilesFromDataTransferItems(fileItems);\n } catch (error) {\n console.warn('Failed to parse clipboard items, falling back to clipboard files:', error);\n }\n }\n // Safari may expose file items without supporting their entry APIs.\n if (!entries.length) entries = fileEntries;\n if (entries.length) await this.uploadLocalEntries(entries);\n }\n if (stringItems.length > 0) this.uploadFromUrl(stringItems);\n },\n handleUploadPasteUrls() {\n // 用于上传在上传文本框中粘贴的外链\n const urls = this.pastedUrls.split('\\n');\n // 处理空行和首尾空字符,链接须符合URL规范\n const validUrls = urls.map(url => url.trim()).filter(url => url !== '').filter(url => /^(https?:\\/\\/[^\\s$.?#].[^\\s]*)$/.test(url));\n\n // 根据粘贴上传方式进行上传\n if (this.pasteUploadMethod === 'save') {\n // 正常上传\n this.uploadFromUrl(validUrls.map(url => {\n return {\n kind: 'string',\n getAsString: callback => {\n callback(url);\n }\n };\n }));\n } else if (this.pasteUploadMethod === 'external') {\n // 仅保存外链,使用 external 渠道上传\n for (let i = 0; i < validUrls.length; i++) {\n const url = validUrls[i];\n const fileName = url.split('/').pop();\n const mdUrl = `![${fileName}](${url})`;\n const htmlUrl = `\"${fileName}\"`;\n const ubbUrl = `[img]${url}[/img]`;\n // 将 url 作为文件内容,文件名为 URL 的最后一部分\n const file = new File([], url.split('/').pop(), {\n type: 'text/plain'\n });\n file.uid = Date.now() + i;\n file.url = url;\n this.fileList.push({\n uid: file.uid,\n name: file.name,\n url: url,\n finalURL: url,\n mdURL: mdUrl,\n htmlURL: htmlUrl,\n ubbURL: ubbUrl,\n srcID: url,\n status: 'uploading',\n progreess: 0,\n serverCompress: false,\n uploadChannel: 'external',\n retryCount: 0\n });\n // 上传\n this.uploadFile({\n file: file,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n }\n }\n },\n uploadFromUrl(items) {\n for (let i = 0; i < items.length; i++) {\n if (items[i].kind === 'string') {\n items[i].getAsString(text => {\n const urlPattern = /^(https?:\\/\\/[^\\s$.?#].[^\\s]*)$/;\n let fileName = '';\n if (urlPattern.test(text)) {\n axios.post('/api/fetchRes', {\n url: text\n }, {\n responseType: 'blob',\n withAuthCode: true\n }).then(response => {\n const contentType = response.headers['content-type'];\n if (response.status == 200) {\n // 提取文件名\n const disposition = response.headers['content-disposition'];\n if (disposition) {\n const filenameRegex = /filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/;\n const filenameStarRegex = /filename\\*\\s*=\\s*UTF-8''([^;\\n]*)/; // 处理 filename*\n\n let matches = filenameRegex.exec(disposition);\n if (matches != null && matches[1]) {\n fileName = matches[1].replace(/['\"]/g, '');\n // 尝试解码\n try {\n fileName = decodeURIComponent(fileName);\n } catch (e) {\n fileName = '';\n }\n }\n if (fileName === '') {\n matches = filenameStarRegex.exec(disposition); // 尝试匹配 filename*\n if (matches != null && matches[1]) {\n fileName = decodeURIComponent(matches[1]);\n }\n }\n }\n // 尝试从URL中提取文件名\n if (fileName === '') {\n const url = new URL(text);\n fileName = url.pathname.split('/').pop();\n }\n // 未提取到文件名,使用默认文件名\n if (fileName === '') {\n // 获取文件后缀\n const url = new URL(text);\n let extension = url.pathname.split('.').pop();\n // 未能从URL提取有效后缀,使用bin作为默认后缀\n if (!extension || extension === '' || extension.length > 10) {\n extension = 'bin';\n }\n fileName = 'PastedFile' + Date.now() + i + '.' + extension;\n }\n\n // 读取文件内容\n const blob = response.data;\n const file = new File([blob], fileName, {\n type: blob.type\n });\n file.uid = Date.now() + i;\n // 接收beforeUpload的Promise对象\n const checkResult = this.beforeUpload(file);\n if (checkResult instanceof Promise) {\n checkResult.then(newFile => {\n if (newFile instanceof File) {\n this.uploadFile({\n file: newFile,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n }\n }).catch(err => {\n console.log(err);\n });\n }\n } else {\n throw new Error('URL地址请求失败');\n }\n }).catch(error => {\n this.$message({\n type: 'warning',\n message: this.$t('uploadForm.urlRequestFailed')\n });\n });\n }\n });\n }\n }\n },\n handleScroll(event) {\n this.listScrolled = event.scrollTop > 0 && this.fileList.length > 0;\n },\n retryError() {\n if (this.exceptionList.length > 0) {\n const filesToRetry = [...this.exceptionList];\n this.exceptionList = [];\n this.retryFailedFiles(filesToRetry, true);\n } else {\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.noFailedFiles')\n });\n }\n },\n handleAutoRetryChange(val) {\n this.$message({\n type: val ? 'success' : 'info',\n message: val ? this.$t('uploadForm.autoRetryOn') : this.$t('uploadForm.autoRetryOff')\n });\n\n // 如果开启自动重试且有失败文件,立即开始重试\n if (val && this.exceptionList.length > 0) {\n this.scheduleAutoRetry();\n }\n },\n retryFailedFiles(files, isManualRetry = false) {\n files.forEach(file => {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (!fileItem) return;\n\n // 手动重试开启一轮新的尝试,不受上一轮自动重试次数限制\n if (isManualRetry) fileItem.retryCount = 0;\n const retryCount = fileItem.retryCount || 0;\n if (isManualRetry || retryCount < this.maxRetryCount) {\n if (!isManualRetry) fileItem.retryCount = retryCount + 1;\n fileItem.progreess = 0;\n this.uploadFile({\n file: file.file,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n } else {\n // 达到自动重试上限后保留失败请求,供用户手动重试\n fileItem.status = 'exception';\n this.exceptionList.push(file);\n this.$message({\n type: 'warning',\n message: this.$t('uploadForm.maxRetryReached', {\n name: file.name,\n max: this.maxRetryCount\n })\n });\n }\n });\n },\n scheduleAutoRetry() {\n if (this.retryTimer) {\n clearTimeout(this.retryTimer);\n }\n this.retryTimer = setTimeout(() => {\n if (this.autoReUpload && this.exceptionList.length > 0) {\n const filesToRetry = [...this.exceptionList];\n this.exceptionList = [];\n this.retryFailedFiles(filesToRetry);\n }\n }, this.retryDelay);\n },\n // HuggingFace 大文件直传(绕过 CF Workers 限制)\n // 流程:前端计算 SHA256 → 获取 S3 上传 URL → 直传到 S3 → 提交文件引用\n async uploadToHuggingFaceDirect(file) {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (!fileItem) return;\n\n // 创建 AbortController 用于取消上传\n const abortController = new AbortController();\n this.abortControllers.set(file.file.uid, abortController);\n const targetUploadFolder = this.getFileUploadFolder(file);\n try {\n console.log('=== HuggingFace Direct Upload ===');\n console.log('File:', file.file.name, 'Size:', file.file.size);\n\n // 1. 计算 SHA256\n file.onProgress({\n percent: 5,\n file: file.file\n });\n console.log('Computing SHA256...');\n const sha256 = await computeSha256(file.file);\n console.log('SHA256:', sha256);\n\n // 检查是否已取消\n if (abortController.signal.aborted) {\n console.log('HuggingFace 上传已取消:', file.file.name);\n return;\n }\n\n // 2. 获取文件样本(前512字节的base64)\n const sampleBytes = new Uint8Array(await file.file.slice(0, 512).arrayBuffer());\n const fileSample = btoa(String.fromCharCode(...sampleBytes));\n\n // 3. 获取 LFS 上传 URL\n file.onProgress({\n percent: 10,\n file: file.file\n });\n console.log('Getting LFS upload URL...');\n const uploadInfoRes = await axios({\n url: '/upload/huggingface/getUploadUrl',\n method: 'post',\n data: {\n fileSize: file.file.size,\n fileName: file.file.name,\n fileType: file.file.type,\n sha256,\n fileSample,\n channelName: this.channelName,\n // 传递指定的渠道名称\n uploadNameType: this.uploadNameType,\n uploadFolder: targetUploadFolder\n },\n withAuthCode: true,\n signal: abortController.signal\n });\n if (!uploadInfoRes.data.success) {\n throw new Error(uploadInfoRes.data.error || 'Failed to get upload URL');\n }\n const uploadInfo = uploadInfoRes.data;\n console.log('Upload info:', uploadInfo);\n\n // 检查文件是否已存在\n if (uploadInfo.alreadyExists) {\n console.log('File already exists in LFS, skipping upload');\n file.onProgress({\n percent: 90,\n file: file.file\n });\n } else if (uploadInfo.needsLfs && uploadInfo.uploadAction) {\n // 4. 直接上传到 S3\n const {\n href,\n header\n } = uploadInfo.uploadAction;\n if (header?.chunk_size) {\n // 分片上传\n await this.uploadToHuggingFaceMultipart(file, uploadInfo, abortController);\n } else {\n // 基本上传\n console.log('Uploading to S3 (basic)...');\n const uploadRes = await fetch(href, {\n method: 'PUT',\n headers: header || {},\n body: file.file,\n signal: abortController.signal\n });\n if (!uploadRes.ok) {\n const error = await uploadRes.text();\n throw new Error(`S3 upload failed: ${uploadRes.status} - ${error}`);\n }\n console.log('S3 upload complete');\n }\n }\n\n // 检查是否已取消\n if (abortController.signal.aborted) {\n console.log('HuggingFace 上传已取消:', file.file.name);\n return;\n }\n\n // 5. 提交文件引用\n file.onProgress({\n percent: 95,\n file: file.file\n });\n console.log('Committing file...');\n const commitRes = await axios({\n url: '/upload/huggingface/commitUpload',\n method: 'post',\n data: {\n fullId: uploadInfo.fullId,\n filePath: uploadInfo.filePath,\n sha256,\n fileSize: file.file.size,\n fileName: file.file.name,\n fileType: file.file.type,\n channelName: uploadInfo.channelName\n },\n withAuthCode: true,\n signal: abortController.signal\n });\n if (!commitRes.data.success) {\n throw new Error(commitRes.data.error || 'Failed to commit file');\n }\n console.log('Upload complete:', commitRes.data);\n // 转换响应格式以匹配 handleSuccess 期望的格式\n const formattedResponse = {\n data: [{\n src: commitRes.data.src\n }]\n };\n file.onSuccess(formattedResponse, file.file);\n } catch (err) {\n // 如果是取消操作,不加入异常列表\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED' || err.name === 'AbortError') {\n console.log('HuggingFace 上传已取消:', file.file.name);\n return;\n }\n console.error('HuggingFace direct upload error:', err);\n this.exceptionList.push(file);\n file.onError(err, file.file);\n } finally {\n // 清理 AbortController\n this.abortControllers.delete(file.file.uid);\n // 调用并发控制的完成回调\n this.onUploadComplete();\n }\n },\n // HuggingFace 分片上传到 S3\n async uploadToHuggingFaceMultipart(file, uploadInfo, abortController) {\n const {\n uploadAction\n } = uploadInfo;\n const {\n href: completionUrl,\n header\n } = uploadAction;\n const chunkSize = parseInt(header.chunk_size);\n\n // 获取所有分片的上传 URL\n const parts = Object.keys(header).filter(key => /^[0-9]+$/.test(key));\n console.log(`Multipart upload: ${parts.length} parts, chunk size: ${chunkSize}`);\n const completeParts = [];\n const totalParts = parts.length;\n for (const part of parts) {\n // 检查是否已取消\n if (abortController && abortController.signal.aborted) {\n console.log('HuggingFace 分片上传已取消');\n throw new DOMException('Upload cancelled', 'AbortError');\n }\n const index = parseInt(part) - 1;\n const start = index * chunkSize;\n const end = Math.min(start + chunkSize, file.file.size);\n const chunk = file.file.slice(start, end);\n console.log(`Uploading part ${part}/${totalParts}`);\n const response = await fetch(header[part], {\n method: 'PUT',\n body: chunk,\n signal: abortController ? abortController.signal : undefined\n });\n if (!response.ok) {\n throw new Error(`Failed to upload part ${part}: ${response.status}`);\n }\n const etag = response.headers.get('ETag');\n if (!etag) {\n throw new Error(`No ETag for part ${part}`);\n }\n completeParts.push({\n partNumber: parseInt(part),\n etag\n });\n\n // 更新进度(10% - 90%)\n const progress = 10 + Math.round(parseInt(part) / totalParts * 80);\n file.onProgress({\n percent: progress,\n file: file.file\n });\n }\n\n // 检查是否已取消\n if (abortController && abortController.signal.aborted) {\n console.log('HuggingFace 分片上传已取消');\n throw new DOMException('Upload cancelled', 'AbortError');\n }\n\n // 完成分片上传\n console.log('Completing multipart upload...');\n const completeResponse = await fetch(completionUrl, {\n method: 'POST',\n headers: {\n 'Accept': 'application/vnd.git-lfs+json',\n 'Content-Type': 'application/vnd.git-lfs+json'\n },\n body: JSON.stringify({\n oid: uploadInfo.oid,\n parts: completeParts\n }),\n signal: abortController ? abortController.signal : undefined\n });\n if (!completeResponse.ok) {\n const error = await completeResponse.text();\n throw new Error(`Multipart complete failed: ${completeResponse.status} - ${error}`);\n }\n console.log('Multipart upload complete');\n },\n // 将图片转换为 WebP 格式\n async convertImageToWebp(file) {\n return new Promise((resolve, reject) => {\n // 不支持转换的格式直接返回 null\n if (file.type.includes('gif') || file.type.includes('svg') || file.type.includes('webp')) {\n resolve(null);\n return;\n }\n const img = new Image();\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n img.onload = () => {\n canvas.width = img.width;\n canvas.height = img.height;\n ctx.drawImage(img, 0, 0);\n canvas.toBlob(blob => {\n if (blob) {\n // 修改文件名:将原扩展名替换为 .webp\n const originalName = file.name;\n const lastDotIndex = originalName.lastIndexOf('.');\n const newName = lastDotIndex > 0 ? originalName.substring(0, lastDotIndex) + '.webp' : originalName + '.webp';\n const webpFile = new File([blob], newName, {\n type: 'image/webp'\n });\n webpFile.uid = file.uid;\n this.copyUploadPath(file, webpFile);\n resolve(webpFile);\n } else {\n reject(new Error('WebP 转换失败'));\n }\n\n // 清理\n URL.revokeObjectURL(img.src);\n }, 'image/webp', 0.92); // 0.92 质量参数,平衡质量和大小\n };\n img.onerror = () => {\n URL.revokeObjectURL(img.src);\n reject(new Error(this.$t('uploadForm.imageLoadFailed')));\n };\n img.src = URL.createObjectURL(file);\n });\n },\n // 拖拽上传卡片鼠标移动事件 - 悬浮光斑效果\n handleUploadCardMouseMove(e) {\n const glow = this.$refs.uploadCardGlow;\n if (!glow) return;\n const rect = e.currentTarget.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n glow.style.opacity = '1';\n glow.style.left = x + 'px';\n glow.style.top = y + 'px';\n },\n // 拖拽上传卡片鼠标离开事件\n handleUploadCardMouseLeave() {\n const glow = this.$refs.uploadCardGlow;\n if (!glow) return;\n glow.style.opacity = '0';\n }\n },\n beforeDestroy() {\n // 清理定时器\n if (this.retryTimer) {\n clearTimeout(this.retryTimer);\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadForm.vue?vue&type=template&id=991f3af6&scoped=true\"\nimport script from \"./UploadForm.vue?vue&type=script&lang=js\"\nexport * from \"./UploadForm.vue?vue&type=script&lang=js\"\n\nimport \"./UploadForm.vue?vue&type=style&index=0&id=991f3af6&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-991f3af6\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, withModifiers as _withModifiers, createElementVNode as _createElementVNode, vShow as _vShow, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"directory-suggestion-input\",\n ref: \"wrapperRef\"\n};\nconst _hoisted_2 = {\n class: \"suggestion-dropdown\"\n};\nconst _hoisted_3 = {\n class: \"suggestion-list\"\n};\nconst _hoisted_4 = [\"title\", \"onMousedown\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_input = _resolveComponent(\"el-input\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_input, {\n ref: \"inputRef\",\n modelValue: $options.inputValue,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $options.inputValue = $event),\n placeholder: $props.placeholder,\n onFocus: $options.handleFocus,\n onBlur: $options.handleBlur,\n onInput: $options.handleInput\n }, null, 8, [\"modelValue\", \"placeholder\", \"onFocus\", \"onBlur\", \"onInput\"]), _withDirectives(_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"ul\", _hoisted_3, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.suggestions, (item, index) => {\n return _openBlock(), _createElementBlock(\"li\", {\n key: index,\n class: \"suggestion-item\",\n title: item.value,\n onMousedown: _withModifiers($event => $options.selectItem(item), [\"prevent\"])\n }, _toDisplayString(item.value), 41, _hoisted_4);\n }), 128))])], 512), [[_vShow, $data.dropdownVisible && $data.suggestions.length > 0]])], 512);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport axios from '@/utils/axios';\nexport default {\n name: 'DirectorySuggestionInput',\n props: {\n modelValue: {\n type: String,\n default: ''\n },\n placeholder: {\n type: String,\n default: ''\n }\n },\n emits: ['update:modelValue', 'focus', 'blur', 'select'],\n data() {\n return {\n directoryTreeRoot: null,\n directoryTreeLoaded: false,\n directoryTreeLoading: false,\n directoryChildrenMap: {},\n focusTime: null,\n dropdownVisible: false,\n isFocused: false,\n suggestions: []\n };\n },\n computed: {\n inputValue: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n }\n },\n watch: {\n modelValue() {\n // 外部修改 modelValue 时也刷新建议\n if (this.isFocused) {\n this.refreshSuggestions();\n }\n }\n },\n methods: {\n handleFocus() {\n this.isFocused = true;\n this.focusTime = Date.now();\n this.ensureDirectoryTreeLoaded();\n this.$emit('focus');\n setTimeout(() => {\n if (this.isFocused) {\n this.refreshSuggestions();\n this.dropdownVisible = true;\n }\n }, 500);\n },\n handleBlur() {\n this.isFocused = false;\n this.dropdownVisible = false;\n this.$emit('blur');\n },\n handleInput(val) {\n // val 是 el-input @input 事件传来的最新值\n this.$nextTick(() => {\n this.refreshSuggestions();\n if (this.isFocused) {\n this.dropdownVisible = true;\n }\n });\n },\n selectItem(item) {\n const path = item.value;\n this.inputValue = path;\n this.$emit('select', path);\n const normalizedPath = this.normalizeDirectoryPath(path);\n const children = this.directoryChildrenMap[normalizedPath];\n if (children && children.length > 0) {\n this.$nextTick(() => {\n this.refreshSuggestions();\n this.dropdownVisible = true;\n this.$refs.inputRef?.focus();\n });\n } else {\n this.dropdownVisible = false;\n }\n },\n refreshSuggestions() {\n this.suggestions = this.getDirectorySuggestions(this.modelValue || '');\n },\n normalizeDirectoryPath(path) {\n if (!path) return '/';\n let normalized = path;\n if (!normalized.startsWith('/')) normalized = '/' + normalized;\n if (normalized !== '/' && !normalized.endsWith('/')) normalized += '/';\n return normalized;\n },\n buildDirectoryChildrenMap(treeRoot) {\n const map = {};\n const walk = node => {\n const parentPath = this.normalizeDirectoryPath(node.path);\n const children = Array.isArray(node.children) ? node.children : [];\n map[parentPath] = children.map(child => ({\n name: child.name,\n path: this.normalizeDirectoryPath(child.path)\n }));\n children.forEach(walk);\n };\n walk(treeRoot);\n this.directoryChildrenMap = map;\n },\n async ensureDirectoryTreeLoaded() {\n if (this.directoryTreeLoaded || this.directoryTreeLoading) return;\n this.directoryTreeLoading = true;\n try {\n const response = await axios.get('/api/directoryTree', {\n withAuthCode: true\n });\n const tree = response?.data?.tree;\n if (tree) {\n this.directoryTreeRoot = tree;\n this.buildDirectoryChildrenMap(tree);\n this.directoryTreeLoaded = true;\n }\n } catch (error) {\n console.error('Failed to load directory tree for autocomplete:', error);\n } finally {\n this.directoryTreeLoading = false;\n }\n },\n parseDirectoryQuery(value) {\n const normalizedInput = value && value.startsWith('/') ? value : `/${value || ''}`;\n const raw = normalizedInput.slice(1);\n const parts = raw.split('/');\n const segmentInput = parts[parts.length - 1] || '';\n const parentSegments = parts.slice(0, -1).filter(Boolean);\n const parentPath = parentSegments.length > 0 ? `/${parentSegments.join('/')}/` : '/';\n return {\n segmentInput,\n parentPath\n };\n },\n getDirectorySuggestions(queryString) {\n const {\n segmentInput,\n parentPath\n } = this.parseDirectoryQuery(queryString);\n const parentChildren = this.directoryChildrenMap[parentPath] || [];\n if (!segmentInput) {\n return parentChildren.slice(0, 10).map(item => ({\n value: item.path\n }));\n }\n const keyword = segmentInput.toLowerCase();\n return parentChildren.filter(item => item.name.toLowerCase().startsWith(keyword)).slice(0, 10).map(item => ({\n value: item.path\n }));\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DirectorySuggestionInput.vue?vue&type=template&id=28b8eda7&scoped=true\"\nimport script from \"./DirectorySuggestionInput.vue?vue&type=script&lang=js\"\nexport * from \"./DirectorySuggestionInput.vue?vue&type=script&lang=js\"\n\nimport \"./DirectorySuggestionInput.vue?vue&type=style&index=0&id=28b8eda7&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-28b8eda7\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"container\"\n};\nconst _hoisted_2 = {\n class: \"upload-home\"\n};\nconst _hoisted_3 = {\n class: \"quick-toolbar-actions\"\n};\nconst _hoisted_4 = {\n class: \"quick-toolbar-actions-inner\"\n};\nconst _hoisted_5 = {\n class: \"header\"\n};\nconst _hoisted_6 = {\n class: \"title\"\n};\nconst _hoisted_7 = {\n class: \"title-crayon-text\",\n \"aria-hidden\": \"true\"\n};\nconst _hoisted_8 = {\n class: \"title-base-text\"\n};\nconst _hoisted_9 = {\n class: \"main-title\",\n href: \"https://github.com/MarSeventh/CloudFlare-ImgBed\",\n target: \"_blank\"\n};\nconst _hoisted_10 = {\n class: \"dialog-section\"\n};\nconst _hoisted_11 = {\n class: \"section-header\"\n};\nconst _hoisted_12 = {\n class: \"section-title\"\n};\nconst _hoisted_13 = {\n class: \"section-content\"\n};\nconst _hoisted_14 = {\n class: \"dialog-section\"\n};\nconst _hoisted_15 = {\n class: \"section-header\"\n};\nconst _hoisted_16 = {\n class: \"section-title\"\n};\nconst _hoisted_17 = {\n class: \"section-content\"\n};\nconst _hoisted_18 = {\n class: \"setting-item\"\n};\nconst _hoisted_19 = {\n class: \"setting-label\"\n};\nconst _hoisted_20 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_21 = {\n class: \"setting-label\"\n};\nconst _hoisted_22 = {\n class: \"dialog-action\"\n};\nconst _hoisted_23 = [\"innerHTML\"];\nconst _hoisted_24 = {\n class: \"dialog-footer\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_ToggleDark = _resolveComponent(\"ToggleDark\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dropdown_item = _resolveComponent(\"el-dropdown-item\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n const _component_DirectorySuggestionInput = _resolveComponent(\"DirectorySuggestionInput\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_DirectoryTreePicker = _resolveComponent(\"DirectoryTreePicker\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_Logo = _resolveComponent(\"Logo\");\n const _component_UploadForm = _resolveComponent(\"UploadForm\");\n const _component_el_radio = _resolveComponent(\"el-radio\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _component_UploadSettingsDialog = _resolveComponent(\"UploadSettingsDialog\");\n const _component_Footer = _resolveComponent(\"Footer\");\n const _component_UploadHistory = _resolveComponent(\"UploadHistory\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createVNode(_component_ToggleDark, {\n class: \"toggle-dark-button desktop-only\"\n }), _createVNode(_component_el_dropdown, {\n class: \"more-dropdown desktop-only\",\n trigger: \"click\",\n onCommand: $options.handleDesktopMenuCommand\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, null, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n command: \"showHistory\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"history\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.history')), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"showAnnouncement\",\n disabled: !$options.announcementAvailable\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"bullhorn\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.announcement')), 1)]),\n _: 1\n }, 8, [\"disabled\"]), _createVNode(_component_el_dropdown_item, {\n command: \"toggleLanguage\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"globe\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$i18n.locale === 'zh-CN' ? 'English' : '简体中文'), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"viewDocs\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"book\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.viewDocs')), 1)]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"more-button\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"ellipsis-v\",\n size: \"lg\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"onCommand\"]), _createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-folder-container\", {\n 'no-announcement': !$options.announcementAvailable\n }])\n }, [_createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-folder\", {\n 'active': $data.isFolderInputActive\n }])\n }, [$options.showDirectorySuggestions ? (_openBlock(), _createBlock(_component_DirectorySuggestionInput, {\n key: 0,\n modelValue: $data.uploadFolder,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.uploadFolder = $event),\n class: \"inner-folder-input\",\n placeholder: _ctx.$t('upload.folderPlaceholder'),\n onFocus: $options.handleFolderInputFocus,\n onBlur: $options.handleFolderInputBlur,\n onSelect: $options.handleDirectorySelect\n }, null, 8, [\"modelValue\", \"placeholder\", \"onFocus\", \"onBlur\", \"onSelect\"])) : (_openBlock(), _createBlock(_component_el_input, {\n key: 1,\n class: \"inner-folder-input\",\n modelValue: $data.uploadFolder,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $data.uploadFolder = $event),\n placeholder: _ctx.$t('upload.folderPlaceholder'),\n onFocus: $options.handleFolderInputFocus,\n onBlur: $options.handleFolderInputBlur\n }, null, 8, [\"modelValue\", \"placeholder\", \"onFocus\", \"onBlur\"]))], 2), $options.showDirectorySuggestions ? (_openBlock(), _createBlock(_component_DirectoryTreePicker, {\n key: 0,\n \"current-directory\": $data.uploadFolder,\n source: \"upload\",\n onSelect: $options.handleDirectorySelect\n }, {\n trigger: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"directory-tree-trigger\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-tree\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"current-directory\", \"onSelect\"])) : _createCommentVNode(\"\", true)], 2), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('upload.switchUploadMethod'),\n placement: \"bottom\",\n disabled: $options.disableTooltip,\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"upload-method-button desktop-only\",\n onClick: $options.handleChangeUploadMethod\n }, {\n default: _withCtx(() => [$data.uploadMethod === 'default' ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"folder-open\",\n class: \"upload-method-icon\",\n size: \"lg\"\n })) : $data.uploadMethod === 'paste' ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 1,\n icon: \"paste\",\n class: \"upload-method-icon\",\n size: \"lg\"\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"content\", \"disabled\"]), _createVNode(_component_el_dropdown, {\n class: \"mobile-more-dropdown mobile-only\",\n trigger: \"click\",\n onCommand: $options.handleMobileMenuCommand\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, null, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n command: \"toggleTheme\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: $options.getThemeIcon(),\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }, null, 8, [\"icon\"]), _createTextVNode(\" \" + _toDisplayString($options.getThemeText()), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"toggleUploadMethod\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: $data.uploadMethod === 'default' ? 'paste' : 'folder-open',\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }, null, 8, [\"icon\"]), _createTextVNode(\" \" + _toDisplayString($data.uploadMethod === 'default' ? _ctx.$t('upload.pasteUpload') : _ctx.$t('upload.fileUpload')), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"showHistory\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"history\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.history')), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"showAnnouncement\",\n disabled: !$options.announcementAvailable\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"bullhorn\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.announcement')), 1)]),\n _: 1\n }, 8, [\"disabled\"]), _createVNode(_component_el_dropdown_item, {\n command: \"toggleLanguage\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"globe\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$i18n.locale === 'zh-CN' ? 'English' : '简体中文'), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"viewDocs\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"book\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.viewDocs')), 1)]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"mobile-more-button\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"ellipsis-v\",\n size: \"lg\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"onCommand\"]), _createElementVNode(\"div\", {\n class: _normalizeClass([\"quick-toolbar\", {\n 'is-expanded': $data.isQuickToolbarOpen\n }]),\n onMouseleave: _cache[5] || (_cache[5] = (...args) => $options.handleQuickToolbarLeave && $options.handleQuickToolbarLeave(...args))\n }, [_createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip || !$data.isQuickToolbarOpen,\n content: _ctx.$t('upload.logout'),\n placement: \"left\",\n \"hide-after\": 0,\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"quick-toolbar-button\",\n onClick: _cache[2] || (_cache[2] = $event => $options.handleQuickToolbarCommand('logout'))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"sign-out-alt\",\n class: \"quick-toolbar-icon\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip || !$data.isQuickToolbarOpen,\n content: _ctx.$t('upload.manage'),\n placement: \"left\",\n \"hide-after\": 0,\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"quick-toolbar-button\",\n onClick: _cache[3] || (_cache[3] = $event => $options.handleQuickToolbarCommand('manage'))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cog\",\n class: \"quick-toolbar-icon\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip || !$data.isQuickToolbarOpen,\n content: _ctx.$t('upload.linkFormat'),\n placement: \"left\",\n \"hide-after\": 0,\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"quick-toolbar-button\",\n onClick: _cache[4] || (_cache[4] = $event => $options.handleQuickToolbarCommand('linkFormat'))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"quick-toolbar-icon\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.settings'),\n placement: \"left\",\n \"hide-after\": 0,\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"quick-toolbar-button\",\n onClick: $options.openCompressDialog\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud-upload\",\n class: \"quick-toolbar-icon\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_button, {\n class: _normalizeClass([\"quick-toolbar-button quick-toolbar-more\", {\n 'is-active': $data.isQuickToolbarOpen\n }]),\n \"aria-expanded\": $data.isQuickToolbarOpen,\n onMouseenter: $options.handleQuickToolbarMoreEnter,\n onClick: $options.toggleQuickToolbar\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"chevron-down\",\n class: \"quick-toolbar-icon quick-toolbar-toggle-icon\"\n })]),\n _: 1\n }, 8, [\"class\", \"aria-expanded\", \"onMouseenter\", \"onClick\"])], 34), _createVNode(_component_Logo, {\n useConfigLink: true\n }), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"h1\", _hoisted_6, [_createElementVNode(\"span\", _hoisted_7, _toDisplayString($options.ownerName) + \" ImgHub\", 1), _createElementVNode(\"span\", _hoisted_8, [_createElementVNode(\"a\", _hoisted_9, _toDisplayString($options.ownerName), 1), _cache[24] || (_cache[24] = _createTextVNode(\" ImgHub \", -1))])])]), _createVNode(_component_UploadForm, {\n selectedUrlForm: $data.selectedUrlForm,\n customerCompress: $data.customerCompress,\n compressQuality: $data.compressQuality,\n compressBar: $data.compressBar,\n serverCompress: $data.serverCompress,\n uploadChannel: $data.uploadChannel,\n channelName: $data.channelName,\n uploadNameType: $data.uploadNameType,\n useCustomUrl: $data.useCustomUrl,\n customUrlPrefix: $data.customUrlPrefix,\n autoRetry: $data.autoRetry,\n urlPrefix: $options.urlPrefix,\n uploadMethod: $data.uploadMethod,\n uploadFolder: $data.uploadFolder,\n convertToWebp: $data.convertToWebp,\n class: \"upload\"\n }, null, 8, [\"selectedUrlForm\", \"customerCompress\", \"compressQuality\", \"compressBar\", \"serverCompress\", \"uploadChannel\", \"channelName\", \"uploadNameType\", \"useCustomUrl\", \"customUrlPrefix\", \"autoRetry\", \"urlPrefix\", \"uploadMethod\", \"uploadFolder\", \"convertToWebp\"]), _createVNode(_component_el_dialog, {\n title: _ctx.$t('settings.linkFormatTitle'),\n modelValue: $data.showUrlDialog,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $data.showUrlDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog settings-dialog-scope\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_10, [_createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"span\", _hoisted_12, _toDisplayString(_ctx.$t('settings.defaultCopyLink')), 1)]), _createElementVNode(\"div\", _hoisted_13, [_createVNode(_component_el_radio_group, {\n modelValue: $data.selectedUrlForm,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.selectedUrlForm = $event),\n onChange: $options.changeUrlForm,\n class: \"radio-card-group grid-2x2\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio, {\n value: \"url\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('settings.rawLink')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n value: \"md\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"code\",\n class: \"radio-icon\"\n }), _cache[25] || (_cache[25] = _createElementVNode(\"span\", null, \"MarkDown\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n value: \"html\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"code-branch\",\n class: \"radio-icon\"\n }), _cache[26] || (_cache[26] = _createElementVNode(\"span\", null, \"HTML\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n value: \"ubb\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"quote-right\",\n class: \"radio-icon\"\n }), _cache[27] || (_cache[27] = _createElementVNode(\"span\", null, \"BBCode\", -1))]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\", \"onChange\"])])]), _createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"div\", _hoisted_15, [_createElementVNode(\"span\", _hoisted_16, _toDisplayString(_ctx.$t('settings.customLink')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('settings.customLinkTooltip'),\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_17, [_createElementVNode(\"div\", _hoisted_18, [_createElementVNode(\"span\", _hoisted_19, _toDisplayString(_ctx.$t('settings.enableCustom')), 1), _createVNode(_component_el_switch, {\n modelValue: $data.useCustomUrl,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = $event => $data.useCustomUrl = $event),\n \"active-value\": \"true\",\n \"inactive-value\": \"false\"\n }, null, 8, [\"modelValue\"])]), $data.useCustomUrl === 'true' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_20, [_createElementVNode(\"span\", _hoisted_21, _toDisplayString(_ctx.$t('settings.customPrefix')), 1), _createVNode(_component_el_input, {\n modelValue: $data.customUrlPrefix,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => $data.customUrlPrefix = $event),\n placeholder: _ctx.$t('settings.customPrefixPlaceholder'),\n class: \"setting-input\"\n }, null, 8, [\"modelValue\", \"placeholder\"])])) : _createCommentVNode(\"\", true)])]), _createElementVNode(\"div\", _hoisted_22, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[9] || (_cache[9] = $event => $data.showUrlDialog = false),\n class: \"confirm-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('settings.confirm')), 1)]),\n _: 1\n })])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]), _createVNode(_component_UploadSettingsDialog, {\n modelValue: $data.showCompressDialog,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => $data.showCompressDialog = $event),\n uploadChannel: $data.uploadChannel,\n \"onUpdate:uploadChannel\": _cache[12] || (_cache[12] = $event => $data.uploadChannel = $event),\n channelName: $data.channelName,\n \"onUpdate:channelName\": _cache[13] || (_cache[13] = $event => $data.channelName = $event),\n availableChannels: $data.availableChannels,\n currentChannelList: $options.currentChannelList,\n uploadFolder: $data.uploadFolder,\n \"onUpdate:uploadFolder\": _cache[14] || (_cache[14] = $event => $data.uploadFolder = $event),\n autoRetry: $data.autoRetry,\n \"onUpdate:autoRetry\": _cache[15] || (_cache[15] = $event => $data.autoRetry = $event),\n uploadNameType: $data.uploadNameType,\n \"onUpdate:uploadNameType\": _cache[16] || (_cache[16] = $event => $data.uploadNameType = $event),\n convertToWebp: $data.convertToWebp,\n \"onUpdate:convertToWebp\": _cache[17] || (_cache[17] = $event => $data.convertToWebp = $event),\n customerCompress: $data.customerCompress,\n \"onUpdate:customerCompress\": _cache[18] || (_cache[18] = $event => $data.customerCompress = $event),\n compressBar: $data.compressBar,\n \"onUpdate:compressBar\": _cache[19] || (_cache[19] = $event => $data.compressBar = $event),\n compressQuality: $data.compressQuality,\n \"onUpdate:compressQuality\": _cache[20] || (_cache[20] = $event => $data.compressQuality = $event),\n serverCompress: $data.serverCompress,\n \"onUpdate:serverCompress\": _cache[21] || (_cache[21] = $event => $data.serverCompress = $event)\n }, null, 8, [\"modelValue\", \"uploadChannel\", \"channelName\", \"availableChannels\", \"currentChannelList\", \"uploadFolder\", \"autoRetry\", \"uploadNameType\", \"convertToWebp\", \"customerCompress\", \"compressBar\", \"compressQuality\", \"serverCompress\"])]), _createVNode(_component_Footer, {\n class: \"footer\"\n }), _createVNode(_component_el_dialog, {\n title: _ctx.$t('upload.announcementTitle'),\n modelValue: $data.showAnnouncementDialog,\n \"onUpdate:modelValue\": _cache[22] || (_cache[22] = $event => $data.showAnnouncementDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n \"close-on-click-modal\": false,\n \"close-on-press-escape\": false,\n center: \"\"\n }, {\n footer: _withCtx(() => [_createElementVNode(\"span\", _hoisted_24, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $options.acknowledgeAnnouncement\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.announcementAck')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", {\n innerHTML: $data.announcementContent\n }, null, 8, _hoisted_23)]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]), _createVNode(_component_UploadHistory, {\n show: $data.showHistory,\n onClose: _cache[23] || (_cache[23] = $event => $data.showHistory = false)\n }, null, 8, [\"show\"])]);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.some.js\";\nimport UploadForm from '@/components/upload/UploadForm.vue';\nimport Footer from '@/components/Footer.vue';\nimport ToggleDark from '@/components/ToggleDark.vue';\nimport Logo from '@/components/Logo.vue';\nimport { setLocale } from '@/locales';\nimport UploadHistory from '@/components/upload/UploadHistory.vue';\nimport UploadSettingsDialog from '@/components/upload/UploadSettingsDialog.vue';\nimport DirectoryTreePicker from '@/components/DirectoryTreePicker.vue';\nimport DirectorySuggestionInput from '@/components/DirectorySuggestionInput.vue';\nimport backgroundManager from '@/mixins/backgroundManager';\nimport axios from '@/utils/axios';\nimport { ref } from 'vue';\nimport { mapGetters } from 'vuex';\nimport { validateFolderPath } from '@/utils/pathValidator';\nexport default {\n name: 'UploadHome',\n mixins: [backgroundManager],\n data() {\n return {\n selectedUrlForm: ref(''),\n showUrlDialog: false,\n showCompressDialog: false,\n customerCompress: true,\n //上传前压缩\n compressQuality: 4,\n //压缩后大小\n compressBar: 5,\n //压缩阈值\n convertToWebp: false,\n //转换为WebP格式\n serverCompress: true,\n //服务器端压缩\n uploadChannel: '',\n //上传渠道\n channelName: '',\n //指定的渠道名称\n availableChannels: {},\n //可用渠道列表\n uploadNameType: '',\n //上传文件命名方式\n customUrlPrefix: '',\n //自定义链接前缀\n useCustomUrl: 'false',\n //是否启用自定义链接格式\n autoRetry: true,\n //失败自动切换\n useDefaultWallPaper: false,\n uploadMethod: 'default',\n //上传方式\n uploadFolder: '',\n // 上传文件夹\n isFolderInputActive: false,\n isQuickToolbarOpen: false,\n isQuickToolbarPinned: false,\n showAnnouncementDialog: false,\n // 控制公告弹窗的显示\n announcementContent: '',\n // 公告内容\n displayedAnnouncementRefreshAt: null,\n // 当前弹窗所展示的公告版本\n showHistory: false,\n themeMode: 'auto' // 主题模式:light, dark, auto\n };\n },\n watch: {\n customerCompress(val) {\n this.updateCompressConfig('customerCompress', val);\n },\n compressQuality(val) {\n this.updateCompressConfig('compressQuality', val);\n },\n compressBar(val) {\n // 确保值在有效范围内\n if (val === null || val === undefined || val < 1) {\n this.compressBar = 1;\n return;\n }\n // 确保期望大小不超过压缩阈值\n if (this.compressQuality > val) {\n this.compressQuality = val;\n }\n this.updateCompressConfig('compressBar', val);\n },\n serverCompress(val) {\n this.updateCompressConfig('serverCompress', val);\n },\n convertToWebp(val) {\n this.updateCompressConfig('convertToWebp', val);\n },\n uploadChannel(val) {\n this.updateStoreUploadChannel(val);\n // 切换渠道类型时,检查持久化的渠道名是否在新渠道列表中\n const newChannelList = this.availableChannels[val] || [];\n const savedChannelName = this.storeChannelName;\n if (savedChannelName && newChannelList.some(ch => ch.name === savedChannelName)) {\n // 持久化的渠道名在新渠道列表中,恢复它\n this.channelName = savedChannelName;\n } else {\n // 否则清空\n this.channelName = '';\n }\n },\n channelName(val) {\n // 确保清空时保存空字符串而不是null\n this.$store.commit('setStoreChannelName', val || '');\n },\n uploadNameType(val) {\n this.updateStoreUploadNameType(val);\n },\n customUrlPrefix(val) {\n this.$store.commit('setCustomUrlSettings', {\n key: 'customUrlPrefix',\n value: val\n });\n },\n useCustomUrl(val) {\n this.$store.commit('setCustomUrlSettings', {\n key: 'useCustomUrl',\n value: val\n });\n },\n autoRetry(val) {\n this.$store.commit('setStoreAutoRetry', val);\n },\n uploadFolder(val) {\n // 实时输入时用非 strict 模式,不检查末尾的单独 . 以允许继续输入如 .123\n if (this.validateUploadFolder(val, false)) {\n // 非 strict 通过后,再用 strict 模式静默检查,只有完全合法才更新 store\n const strictResult = validateFolderPath(val, {\n strict: true\n });\n if (strictResult.valid) {\n this.$store.commit('setStoreUploadFolder', val);\n }\n // strict 不通过时不更新 store,等失焦时提示并回滚\n } else {\n this.$nextTick(() => {\n this.uploadFolder = this.storeUploadFolder;\n });\n }\n }\n },\n computed: {\n ...mapGetters(['userConfig', 'uploadCopyUrlForm', 'compressConfig', 'storeUploadChannel', 'storeChannelName', 'storeUploadNameType', 'customUrlSettings', 'storeAutoRetry', 'storeUploadMethod', 'storeUploadFolder']),\n ownerName() {\n return this.userConfig?.ownerName || 'Sanyue';\n },\n dialogWidth() {\n return window.innerWidth > 768 ? '50%' : '90%';\n },\n disableTooltip() {\n return window.innerWidth < 768;\n },\n urlPrefix() {\n // 全局自定义链接前缀\n return this.userConfig?.urlPrefix || `${window.location.protocol}//${window.location.host}/file/`;\n },\n announcementAvailable() {\n return !!this.userConfig?.announcement;\n },\n // 是否显示目录候选项(从 userConfig 获取)\n showDirectorySuggestions() {\n return this.userConfig?.showDirectorySuggestions ?? false;\n },\n // 当前渠道类型对应的渠道列表\n currentChannelList() {\n return this.availableChannels[this.uploadChannel] || [];\n }\n },\n mounted() {\n // 初始化背景图,启用自动创建元素\n this.initializeBackground('uploadBkImg', '.container', true, true);\n\n // 读取用户选择的链接格式\n this.selectedUrlForm = this.uploadCopyUrlForm || 'url';\n // 读取用户选择的压缩设置(优先用户设置,其次系统默认配置)\n this.customerCompress = this.compressConfig.customerCompress ?? this.parseBoolean(this.userConfig?.defaultCustomerCompress, true);\n this.compressQuality = this.compressConfig.compressQuality ?? this.parseNumber(this.userConfig?.defaultCompressQuality, 4);\n this.compressBar = this.compressConfig.compressBar ?? this.parseNumber(this.userConfig?.defaultCompressBar, 5);\n this.serverCompress = this.compressConfig.serverCompress ?? true;\n this.convertToWebp = this.compressConfig.convertToWebp ?? this.parseBoolean(this.userConfig?.defaultConvertToWebp, false);\n // 读取用户选择的上传渠道\n this.uploadChannel = this.storeUploadChannel || this.userConfig?.defaultUploadChannel || 'telegram';\n // 用户定义的失败自动切换\n this.autoRetry = this.storeAutoRetry;\n // 读取用户选择的上传文件命名方式\n this.uploadNameType = this.storeUploadNameType || this.userConfig?.defaultUploadNameType || 'default';\n // 读取用户自定义链接格式\n this.customUrlPrefix = this.customUrlSettings.customUrlPrefix;\n this.useCustomUrl = this.customUrlSettings.useCustomUrl;\n // 读取用户偏好的上传方式\n this.uploadMethod = this.storeUploadMethod;\n // 获取可用渠道列表\n this.fetchAvailableChannels();\n // 读取用户设置的上传文件夹\n this.uploadFolder = this.storeUploadFolder || this.userConfig?.defaultUploadFolder || '';\n\n // 从 Vuex store 读取主题模式状态\n const cusDarkMode = this.$store.getters.cusDarkMode;\n const useDarkMode = this.$store.getters.useDarkMode;\n if (!cusDarkMode) {\n this.themeMode = 'auto';\n } else if (useDarkMode) {\n this.themeMode = 'dark';\n } else {\n this.themeMode = 'light';\n }\n this.showAnnouncementIfNeeded();\n },\n components: {\n UploadForm,\n Footer,\n ToggleDark,\n Logo,\n UploadHistory,\n UploadSettingsDialog,\n DirectoryTreePicker,\n DirectorySuggestionInput\n },\n methods: {\n // 获取可用渠道列表\n async fetchAvailableChannels() {\n try {\n const response = await axios.get('/api/channels', {\n withAuthCode: true\n });\n if (response.data) {\n this.availableChannels = response.data;\n // 恢复渠道名称:优先持久化的值,其次系统默认配置\n const savedChannelName = this.storeChannelName;\n const defaultChannelName = this.userConfig?.defaultChannelName;\n const currentChannelList = this.availableChannels[this.uploadChannel] || [];\n\n // 如果用户主动清空过(savedChannelName === ''),则保持为空\n // 如果从未选择过(savedChannelName === null/undefined),则使用默认值\n if (savedChannelName && currentChannelList.some(ch => ch.name === savedChannelName)) {\n this.channelName = savedChannelName;\n } else if (savedChannelName === '' || savedChannelName === null || savedChannelName === undefined) {\n // 用户主动清空或从未选择,检查是否使用默认值\n if (savedChannelName !== '' && defaultChannelName && currentChannelList.some(ch => ch.name === defaultChannelName)) {\n this.channelName = defaultChannelName;\n }\n // 如果 savedChannelName === '',说明用户主动清空,保持为空\n }\n }\n } catch (error) {\n console.error('Failed to fetch available channels:', error);\n }\n },\n // 验证上传文件夹路径的合法性\n validateUploadFolder(path, strict = true) {\n // 自动补全前导 /\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n this.uploadFolder = path;\n }\n const result = validateFolderPath(path, {\n strict\n });\n if (!result.valid) {\n this.$message.error(result.error);\n return false;\n }\n return true;\n },\n handleFolderInputFocus() {\n this.isFolderInputActive = true;\n },\n handleFolderInputBlur() {\n this.isFolderInputActive = false;\n // 失焦时自动补全前导 /\n if (this.uploadFolder && !this.uploadFolder.startsWith('/')) {\n this.uploadFolder = '/' + this.uploadFolder;\n }\n // 失焦时做完整校验(包括末尾单独的 .)\n if (!this.validateUploadFolder(this.uploadFolder, true)) {\n this.$nextTick(() => {\n this.uploadFolder = this.storeUploadFolder;\n });\n }\n },\n handleManage() {\n this.$router.push('/dashboard');\n },\n // 解析布尔值\n parseBoolean(value, defaultValue) {\n if (value === undefined || value === null) return defaultValue;\n if (typeof value === 'boolean') return value;\n if (typeof value === 'string') return value === 'true';\n return defaultValue;\n },\n // 解析数字\n parseNumber(value, defaultValue) {\n if (value === undefined || value === null) return defaultValue;\n const num = parseFloat(value);\n return isNaN(num) ? defaultValue : num;\n },\n openUrlDialog() {\n this.showUrlDialog = true;\n },\n handleLogout() {\n axios.post('/api/auth/logout', {\n authType: 'user'\n }, {\n withCredentials: true\n }).finally(() => {\n this.$store.commit('setUserLoggedIn', false);\n this.$router.push('/login');\n this.$message.success(this.$t('upload.logoutSuccess'));\n });\n },\n changeUrlForm() {\n this.$store.commit('setUploadCopyUrlForm', this.selectedUrlForm);\n },\n openCompressDialog() {\n this.showCompressDialog = true;\n },\n updateCompressConfig(key, value) {\n this.$store.commit('setCompressConfig', {\n key,\n value\n });\n },\n updateStoreUploadChannel(value) {\n this.$store.commit('setStoreUploadChannel', value);\n },\n updateStoreUploadNameType(value) {\n this.$store.commit('setStoreUploadNameType', value);\n },\n handleQuickToolbarMoreEnter() {\n this.isQuickToolbarOpen = true;\n },\n handleQuickToolbarLeave() {\n if (!this.isQuickToolbarPinned) {\n this.isQuickToolbarOpen = false;\n }\n },\n toggleQuickToolbar() {\n this.isQuickToolbarPinned = !this.isQuickToolbarPinned;\n this.isQuickToolbarOpen = this.isQuickToolbarPinned;\n },\n closeQuickToolbar() {\n this.isQuickToolbarPinned = false;\n this.isQuickToolbarOpen = false;\n },\n handleQuickToolbarCommand(command) {\n this.closeQuickToolbar();\n if (command === 'linkFormat') {\n this.openUrlDialog();\n } else if (command === 'manage') {\n this.handleManage();\n } else if (command === 'logout') {\n this.handleLogout();\n }\n },\n handleChangeUploadMethod() {\n this.uploadMethod = this.uploadMethod === 'default' ? 'paste' : 'default';\n this.$store.commit('setUploadMethod', this.uploadMethod);\n },\n handleMobileMenuCommand(command) {\n if (command === 'toggleTheme') {\n // 循环切换:auto -> light -> dark -> auto\n if (this.themeMode === 'auto') {\n // 切换到亮色\n this.themeMode = 'light';\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', false);\n } else if (this.themeMode === 'light') {\n // 切换到暗色\n this.themeMode = 'dark';\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', true);\n } else {\n // 切换到自动\n this.themeMode = 'auto';\n this.$store.commit('setCusDarkMode', false);\n }\n } else if (command === 'toggleUploadMethod') {\n this.handleChangeUploadMethod();\n } else if (command === 'viewDocs') {\n window.open('https://cfbed.sanyue.de/qa/', '_blank');\n } else if (command === 'showHistory') {\n this.showHistory = true;\n } else if (command === 'showAnnouncement') {\n this.handleShowAnnouncement();\n } else if (command === 'toggleLanguage') {\n const next = this.$i18n.locale === 'zh-CN' ? 'en' : 'zh-CN';\n setLocale(next);\n }\n },\n handleDesktopMenuCommand(command) {\n if (command === 'viewDocs') {\n window.open('https://cfbed.sanyue.de/qa/', '_blank');\n } else if (command === 'showHistory') {\n this.showHistory = true;\n } else if (command === 'showAnnouncement') {\n this.handleShowAnnouncement();\n } else if (command === 'toggleLanguage') {\n const next = this.$i18n.locale === 'zh-CN' ? 'en' : 'zh-CN';\n setLocale(next);\n }\n },\n getThemeIcon() {\n // 显示下一个模式的图标\n if (this.themeMode === 'auto') return 'sun'; // auto -> light\n if (this.themeMode === 'light') return 'moon'; // light -> dark\n return 'adjust'; // dark -> auto\n },\n getThemeText() {\n // 显示下一个模式的文字\n if (this.themeMode === 'auto') return this.$t('theme.lightMode');\n if (this.themeMode === 'light') return this.$t('theme.darkMode');\n return this.$t('theme.autoMode');\n },\n handleShowAnnouncement() {\n const announcement = this.userConfig?.announcement;\n if (announcement) {\n this.openAnnouncement(announcement);\n } else {\n this.$message.info(this.$t('upload.noAnnouncement'));\n }\n },\n getAnnouncementRefreshAt() {\n const refreshAt = Number(this.userConfig?.announcementRefreshAt);\n return Number.isFinite(refreshAt) && refreshAt > 0 ? refreshAt : null;\n },\n openAnnouncement(announcement) {\n this.announcementContent = announcement;\n this.displayedAnnouncementRefreshAt = this.getAnnouncementRefreshAt();\n this.showAnnouncementDialog = true;\n },\n showAnnouncementIfNeeded() {\n const announcement = this.userConfig?.announcement;\n if (!announcement) return;\n const refreshAt = this.getAnnouncementRefreshAt();\n if (refreshAt) {\n const acknowledgedRefreshAt = Number(localStorage.getItem('announcementAcknowledgedRefreshAt'));\n if (!Number.isFinite(acknowledgedRefreshAt) || refreshAt > acknowledgedRefreshAt) {\n this.openAnnouncement(announcement);\n }\n return;\n }\n\n // 尚未产生刷新时间的旧公告在升级后再展示一次,确认后使用新版时间标记。\n if (!localStorage.getItem('announcementAcknowledgedAt')) {\n this.openAnnouncement(announcement);\n }\n },\n acknowledgeAnnouncement() {\n localStorage.setItem('announcementAcknowledgedAt', String(Date.now()));\n if (this.displayedAnnouncementRefreshAt) {\n localStorage.setItem('announcementAcknowledgedRefreshAt', String(this.displayedAnnouncementRefreshAt));\n }\n this.showAnnouncementDialog = false;\n },\n // 处理目录选择\n handleDirectorySelect(path) {\n // 填入选择的目录路径\n this.uploadFolder = path;\n // 触发路径验证逻辑\n if (this.validateUploadFolder(path, true)) {\n this.$store.commit('setStoreUploadFolder', path);\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadHome.vue?vue&type=template&id=9426cafc&scoped=true\"\nimport script from \"./UploadHome.vue?vue&type=script&lang=js\"\nexport * from \"./UploadHome.vue?vue&type=script&lang=js\"\n\nimport \"./UploadHome.vue?vue&type=style&index=0&id=9426cafc&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-9426cafc\"]])\n\nexport default __exports__","import store from '@/store'\r\nimport router from '@/router'\r\n\r\nlet isRedirecting = false;\r\n\r\nexport default async function fetchWithAuth(url, options = {}) {\r\n // 开发环境下添加 /api 前缀\r\n url = process.env.NODE_ENV === 'production' ? url : `/api${url}`;\r\n\r\n // 确保包含凭据(HttpOnly Cookie 会自动携带)\r\n options.credentials = 'include';\r\n\r\n options.headers = {\r\n ...options.headers,\r\n };\r\n\r\n const response = await fetch(url, options);\r\n\r\n if (response.status === 401 && !isRedirecting) {\r\n isRedirecting = true;\r\n store.commit('setAdminLoggedIn', false);\r\n // 静默跳转登录页,不弹出错误提示(路由守卫负责认证 UX)\r\n router.push('/adminLogin').finally(() => {\r\n isRedirecting = false;\r\n });\r\n }\r\n\r\n return response;\r\n}\r\n","module.exports = require(\"./build/conversion.js\");\n","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from \"vue\";\nconst _hoisted_1 = {\n key: 0,\n class: \"page-footer\"\n};\nconst _hoisted_2 = [\"href\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return !$options.disableFooter ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"p\", null, [_createTextVNode(\"© 2024-\" + _toDisplayString($options.thisYear) + \" Designed by \", 1), _cache[0] || (_cache[0] = _createElementVNode(\"a\", {\n class: \"footer-name\",\n href: \"https://github.com/MarSeventh\",\n target: \"_blank\"\n }, \"SanyueQi\", -1)), _cache[1] || (_cache[1] = _createTextVNode(\" for You! \", -1)), _createElementVNode(\"a\", {\n href: $options.footerLink,\n target: \"_blank\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"paper-plane\",\n class: \"footer-link-icon\"\n })], 8, _hoisted_2)])])) : _createCommentVNode(\"\", true);\n}","import { mapGetters } from 'vuex';\nexport default {\n name: 'Footer',\n computed: {\n ...mapGetters(['userConfig']),\n footerLink() {\n return this.userConfig?.footerLink || 'https://github.com/MarSeventh';\n },\n thisYear() {\n return new Date().getFullYear();\n },\n disableFooter() {\n return this.userConfig?.disableFooter || false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./Footer.vue?vue&type=template&id=08acbaa9&scoped=true\"\nimport script from \"./Footer.vue?vue&type=script&lang=js\"\nexport * from \"./Footer.vue?vue&type=script&lang=js\"\n\nimport \"./Footer.vue?vue&type=style&index=0&id=08acbaa9&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-08acbaa9\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, mergeProps as _mergeProps, createStaticVNode as _createStaticVNode } from \"vue\";\nconst _hoisted_1 = {\n key: 0,\n class: \"channel-svg-icon\",\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = {\n key: 1,\n class: \"channel-svg-icon\",\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_3 = {\n key: 2,\n class: \"channel-svg-icon\",\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"span\", _mergeProps(_ctx.$attrs, {\n class: ['channel-icon-wrapper', `channel-brand-${$props.type}`]\n }), [$props.type === 'telegram' ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [...(_cache[0] || (_cache[0] = [_createElementVNode(\"path\", {\n d: \"M417.28 795.733333 429.226667 615.253333 756.906667 320C771.413333 306.773333 753.92 300.373333 734.72 311.893333L330.24 567.466667 155.306667 512C117.76 501.333333 117.333333 475.306667 163.84 456.533333L845.226667 193.706667C876.373333 179.626667 906.24 201.386667 894.293333 249.173333L778.24 795.733333C770.133333 834.56 746.666667 843.946667 714.24 826.026667L537.6 695.466667 452.693333 777.813333C442.88 787.626667 434.773333 795.733333 417.28 795.733333Z\"\n }, null, -1)]))])) : $props.type === 'huggingface' ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_2, [...(_cache[1] || (_cache[1] = [_createStaticVNode(\"\", 9)]))])) : $props.type === 'webdav' ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_3, [...(_cache[2] || (_cache[2] = [_createElementVNode(\"path\", {\n d: \"M446.293333 810.666667C384 898.986667 262.4 921.173333 174.506667 859.733333c-87.466667-61.44-107.946667-183.893333-46.506667-273.066666a195.626667 195.626667 0 0 1 152.746667-84.48l2.133333 61.013333c-38.826667 2.986667-76.373333 23.04-100.693333 58.026667-42.666667 61.44-29.44 144.213333 29.013333 185.6 58.88 40.96 141.226667 25.173333 183.893333-35.84 13.226667-19.2 20.906667-40.106667 23.893334-61.44v-43.093334l238.08-1.706666 2.986666-4.693334c22.613333-39.253333 71.68-52.906667 110.08-30.72a81.066667 81.066667 0 0 1 29.013334 110.933334c-22.613333 38.826667-72.106667 52.48-110.506667 30.293333-17.493333-9.813333-29.866667-25.6-35.413333-43.52l-173.653334 0.853333a211.626667 211.626667 0 0 1-33.28 82.773334m310.613334-304.64c107.946667 13.226667 184.746667 110.08 171.52 216.32-13.226667 106.666667-111.36 182.186667-219.306667 168.96a197.504 197.504 0 0 1-146.346667-94.293334l52.906667-30.72a137.386667 137.386667 0 0 0 98.986667 61.866667c74.666667 8.96 140.8-41.813333 149.76-113.066667 8.96-71.253333-43.946667-136.533333-117.76-145.493333-23.04-2.56-45.226667 0.426667-65.28 7.68l-36.266667 18.773333-110.08-203.52h-9.386667a81.322667 81.322667 0 0 1-78.933333-83.2c1.28-44.373333 39.68-78.933333 84.48-77.226666 44.8 2.56 80.213333 38.826667 78.933333 83.2-0.853333 18.773333-8.106667 35.84-19.626666 49.066666l81.066666 149.76c26.453333-8.533333 55.466667-11.52 85.333334-8.106666M352 389.973333c-42.666667-100.266667 2.56-215.04 101.12-256.853333 98.986667-41.813333 213.333333 5.546667 256 105.813333 25.173333 58.453333 20.053333 122.453333-8.533333 173.653334l-52.906667-30.72c17.92-34.56 20.906667-76.8 3.84-116.48-29.013333-68.266667-106.24-101.12-172.373333-73.386667-66.56 28.16-96.426667 106.666667-67.413334 174.933333 11.946667 28.16 32 49.92 56.32 64.426667l16.64 8.96-130.986666 212.906667c1.28 2.133333 2.986667 4.693333 4.266666 8.106666 20.906667 38.826667 6.4 87.893333-32.853333 108.8-38.826667 20.906667-87.893333 5.546667-109.226667-34.56-20.906667-39.68-6.4-88.746667 32.853334-109.653333 16.64-8.96 34.986667-11.093333 52.48-7.253333l98.56-160.853334c-20.053333-18.346667-37.12-41.386667-47.786667-67.84z\"\n }, null, -1)]))])) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 3,\n icon: $options.fontAwesomeIcon\n }, null, 8, [\"icon\"]))], 16);\n}","export default {\n name: 'ChannelIcon',\n inheritAttrs: false,\n props: {\n type: {\n type: String,\n required: true\n }\n },\n computed: {\n fontAwesomeIcon() {\n const icons = {\n cfr2: ['fab', 'cloudflare'],\n s3: ['fab', 'aws'],\n discord: ['fab', 'discord']\n };\n return icons[this.type] || 'server';\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./ChannelIcon.vue?vue&type=template&id=ce6ff2ce&scoped=true\"\nimport script from \"./ChannelIcon.vue?vue&type=script&lang=js\"\nexport * from \"./ChannelIcon.vue?vue&type=script&lang=js\"\n\nimport \"./ChannelIcon.vue?vue&type=style&index=0&id=ce6ff2ce&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-ce6ff2ce\"]])\n\nexport default __exports__"],"names":["t","e","module","exports","this","n","r","o","i","l","call","m","c","d","Object","defineProperty","enumerable","get","Symbol","toStringTag","value","__esModule","create","bind","default","prototype","hasOwnProperty","p","s","some","a","f","g","w","b","PNG","JPEG","GIF","Promise","u","next","throw","done","then","apply","toDataURL","toBlob","split","match","atob","length","Uint8Array","charCodeAt","Blob","type","Image","onload","onerror","Error","src","document","createElement","href","window","URL","createObjectURL","download","Date","now","toString","body","appendChild","createEvent","initEvent","dispatchEvent","removeChild","FileReader","onloadend","target","result","readAsDataURL","h","assign","getContext","Number","scale","width","height","orientation","rotate","Math","PI","drawImage","translate","fetch","blob","y","quality","isNaN","size","accuracy","filter","sort","abs","pow","v","_hoisted_1","class","_hoisted_2","_hoisted_3","key","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","_component_el_tree","_component_el_popover","_component_el_drawer","_directive_loading","isDesktop","visible","popoverVisible","$event","placement","trigger","transition","reference","onClick","$slots","undefined","error","icon","fetchDirectoryTree","$t","_","ref","data","treeData","props","treeProps","currentDirectory","onNodeClick","handleNodeClick","node","path","expanded","name","loading","args","openDrawer","modelValue","drawerVisible","direction","title","String","source","validator","includes","children","label","windowWidth","innerWidth","computed","watch","newVal","setTimeout","$refs","treeRef","store","nodesMap","treeRefMobile","$nextTick","setCurrentKey","mounted","addEventListener","handleResize","beforeUnmount","removeEventListener","methods","response","fetchWithAuth","method","ok","status","json","axios","withAuthCode","tree","err","console","startsWith","$emit","__exports__","id","handleToggleClick","mode","isAuto","style","isDark","viewBox","fill","stroke","x","cx","cy","mask","opacity","x1","y1","x2","y2","$store","getters","useDarkMode","cusDarkMode","commit","logoHref","logo","link","logoClasses","alt","logoUrl","customSrc","position","enableHover","Boolean","useConfigLink","userConfig","logoLink","validateFolderPath","strict","trim","valid","i18n","global","test","dotPattern","invalidChars","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_component_el_tooltip","show","count","totalCount","content","circle","toggleViewMode","viewMode","clearHistory","historyList","onScroll","handleScroll","groupedHistory","group","date","items","item","time","isImage","url","onError","handleImageError","isVideo","muted","copyLink","openLink","deleteItem","formatTime","hasMore","loadingMore","spin","allHistory","pageSize","currentPage","val","resetAndLoad","groups","forEach","dateStr","getFullYear","getMonth","padStart","getDate","push","keys","map","savedMode","localStorage","getItem","loadAllHistory","loadMore","history","JSON","parse","start","end","newItems","slice","container","scrollTop","scrollHeight","clientHeight","setItem","$confirm","confirmButtonText","cancelButtonText","removeItem","$message","success","catch","stringify","fileName","imageExtensions","extension","pop","toLowerCase","videoExtensions","timestamp","year","month","day","hours","getHours","minutes","getMinutes","seconds","getSeconds","navigator","clipboard","writeText","open","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_hoisted_41","_component_el_radio_button","_component_el_radio_group","_component_ChannelIcon","_component_el_radio","_component_el_option","_component_el_select","_component_el_input","_component_el_switch","_component_el_slider","_component_el_input_number","_component_el_dialog","dialogWidth","channelVisibility","onChange","handleChannelVisibilityChange","uploadChannel","visibleChannelOptions","channel","currentChannelList","channelName","placeholder","clearable","ch","uploadFolder","handleUploadFolderInput","autoRetry","uploadNameType","convertToWebp","customerCompress","compressBar","min","max","step","compressQuality","precision","serverCompress","CHANNEL_OPTIONS","components","ChannelIcon","hasConfiguredChannels","channelType","channels","availableChannels","Array","isArray","visibility","ensureConfiguredChannelSelected","firstConfiguredChannel","emits","handler","deep","set","autoplay","playsinline","loop","_component_el_text","_component_el_progress","_component_Link","_component_el_icon","_component_Delete","file","truncated","truncateFilename","finalURL","readonly","selectAllText","urlSize","prepend","mdURL","htmlURL","ubbURL","percentage","progreess","IMAGE_EXTENSIONS","VIDEO_EXTENSIONS","Link","Delete","required","ext","filename","maxLength","lastDotIndex","lastIndexOf","substring","keepEnd","keepStart","event","message","tabindex","_component_el_upload","_component_el_card","_component_List","_component_Checked","_component_Failed","_component_el_dropdown_item","_component_el_dropdown_menu","_component_el_dropdown","_component_UploadFileItem","_component_el_scrollbar","onMousemove","handleUploadCardMouseMove","onMouseleave","handleUploadCardMouseLeave","onDropCapture","handleDrop","uploadMethod","uploading","fileList","drag","multiple","uploadFile","onSuccess","handleSuccess","handleError","beforeUpload","handleProgress","innerHTML","pasteShortcut","disabled","disableTooltip","openFolderPicker","webkitdirectory","directory","handleFolderSelection","pastedUrls","rows","pasteCardMethodButtonSize","handleUploadPasteUrls","pasteUploadMethod","role","listScrolled","uploadingCount","waitingCount","uploadSuccessCount","uploadErrorCount","copyAll","dropdown","autoReUpload","handleAutoRetryChange","retryError","clearFileList","clearSuccessList","reverse","uid","onCopy","handleCopy","onRemove","handleRemove","onPreviewError","buildFileUrls","srcID","rootUrl","getUrlByFormat","format","md","html","ubb","updateFileListUrls","urls","K","Uint32Array","rotr","processBlock","block","H","W","s0","s1","S1","temp1","S0","maj","temp2","createSha256","buffer","bufferLength","totalLength","update","offset","needed","toCopy","subarray","digest","bitLength","view","DataView","setUint32","floor","hex","async","computeSha256","sha256","CHUNK_SIZE","chunk","arrayBuffer","log","round","normalizePath","replace","segment","join","getRelativeDirectory","relativePath","normalizedPath","lastSlashIndex","joinUploadFolder","baseFolder","relativeDirectory","hasLeadingSlash","joinedPath","filesToUploadEntries","files","from","webkitRelativePath","readFileEntry","entry","resolve","reject","readAllDirectoryEntries","directoryEntry","reader","createReader","entries","batch","readEntries","collectFromEntry","parentPath","isFile","isDirectory","child","collectFromHandle","handle","kind","values","getFile","collectFilesFromDataTransferItems","fileItems","handles","all","getAsFileSystemHandle","index","webkitGetAsEntry","getAsFile","UploadFileItem","selectedUrlForm","useCustomUrl","customUrlPrefix","urlPrefix","maxUploading","exceptionList","fileListLength","localUidCounter","maxRetryCount","retryTimer","retryDelay","uploadQueue","activeUploads","maxConcurrentUploads","abortControllers","Map","pasteFocusTarget","scrollContainer","setScrollTop","immediate","platform","userAgentData","location","protocol","host","handlePaste","handlePasteShortcut","storeAutoReUpload","createLocalUid","applyUploadPath","normalizedRelativePath","uploadRelativePath","copyUploadPath","sourceFile","targetFile","getFileUploadFolder","fileItem","find","createUploadRequest","onProgress","evt","uploadedFile","uploadLocalEntries","allSettled","processedFile","File","folderInput","click","dataTransfer","waitingItem","uploadingItem","uploadSingleFile","HF_DIRECT_THRESHOLD","uploadToHuggingFaceDirect","DISCORD_CHUNK_THRESHOLD","uploadFileInChunks","CHUNK_THRESHOLD","processUploadQueue","nextFile","shift","onUploadComplete","needServerCompress","targetUploadFolder","abortController","AbortController","formData","FormData","append","encodeURIComponent","signal","onUploadProgress","progressEvent","percentCompleted","loaded","total","percent","res","code","finally","delete","fileSize","fileType","totalChunks","ceil","precomputedSha256","initFormData","initResponse","uploadId","maxConcurrency","chunkProgress","nextChunkIndex","hasError","errorMsg","isCancelled","uploadChunk","chunkIndex","retryCount","maxRetries","totalPercent","reduce","warn","pool","currentIndex","duration","mergeFormData","closeAll","cleanupUploadResources","cleanupError","has","abort","timeout","saveToHistory","newRecord","scheduleAutoRetry","canConvertToWebp","convertedFile","convertImageToWebp","toFixed","needCustomCompress","isLtLim","pushFileToQueue","fileUrl","newFile","controller","clear","isEditablePasteTarget","element","nodeType","Node","TEXT_NODE","parentElement","tagName","isContentEditable","closest","isPasteShortcut","ctrlKey","metaKey","altKey","receiver","clipboardPasteReceiver","activeElement","focus","preventScroll","releasePasteReceiver","focusTarget","isConnected","blur","isPasteReceiver","clipboardData","stringItems","fileEntries","preventDefault","uploadFromUrl","validUrls","getAsString","callback","mdUrl","htmlUrl","ubbUrl","text","urlPattern","post","responseType","headers","disposition","filenameRegex","filenameStarRegex","matches","exec","decodeURIComponent","pathname","checkResult","filesToRetry","retryFailedFiles","isManualRetry","clearTimeout","aborted","sampleBytes","fileSample","btoa","fromCharCode","uploadInfoRes","uploadInfo","alreadyExists","needsLfs","uploadAction","header","chunk_size","uploadToHuggingFaceMultipart","uploadRes","commitRes","fullId","filePath","formattedResponse","completionUrl","chunkSize","parseInt","parts","completeParts","totalParts","part","DOMException","etag","partNumber","progress","completeResponse","oid","img","canvas","ctx","originalName","newName","webpFile","revokeObjectURL","glow","uploadCardGlow","rect","currentTarget","getBoundingClientRect","clientX","left","clientY","top","beforeDestroy","inputValue","onFocus","handleFocus","onBlur","handleBlur","onInput","handleInput","suggestions","onMousedown","selectItem","dropdownVisible","directoryTreeRoot","directoryTreeLoaded","directoryTreeLoading","directoryChildrenMap","focusTime","isFocused","refreshSuggestions","ensureDirectoryTreeLoaded","normalizeDirectoryPath","inputRef","getDirectorySuggestions","normalized","endsWith","buildDirectoryChildrenMap","treeRoot","walk","parseDirectoryQuery","normalizedInput","raw","segmentInput","parentSegments","queryString","parentChildren","keyword","_component_ToggleDark","_component_DirectorySuggestionInput","_component_DirectoryTreePicker","_component_Logo","_component_UploadForm","_component_UploadSettingsDialog","_component_Footer","_component_UploadHistory","onCommand","handleDesktopMenuCommand","command","announcementAvailable","$i18n","locale","isFolderInputActive","showDirectorySuggestions","handleFolderInputFocus","handleFolderInputBlur","onSelect","handleDirectorySelect","handleChangeUploadMethod","handleMobileMenuCommand","getThemeIcon","getThemeText","isQuickToolbarOpen","handleQuickToolbarLeave","handleQuickToolbarCommand","openCompressDialog","onMouseenter","handleQuickToolbarMoreEnter","toggleQuickToolbar","ownerName","showUrlDialog","changeUrlForm","showCompressDialog","showAnnouncementDialog","center","footer","acknowledgeAnnouncement","announcementContent","showHistory","onClose","mixins","backgroundManager","useDefaultWallPaper","isQuickToolbarPinned","displayedAnnouncementRefreshAt","themeMode","updateCompressConfig","updateStoreUploadChannel","newChannelList","savedChannelName","storeChannelName","updateStoreUploadNameType","validateUploadFolder","strictResult","storeUploadFolder","announcement","initializeBackground","uploadCopyUrlForm","compressConfig","parseBoolean","defaultCustomerCompress","parseNumber","defaultCompressQuality","defaultCompressBar","defaultConvertToWebp","storeUploadChannel","defaultUploadChannel","storeAutoRetry","storeUploadNameType","defaultUploadNameType","customUrlSettings","storeUploadMethod","fetchAvailableChannels","defaultUploadFolder","showAnnouncementIfNeeded","UploadForm","Footer","ToggleDark","Logo","UploadHistory","UploadSettingsDialog","DirectoryTreePicker","DirectorySuggestionInput","defaultChannelName","handleManage","$router","defaultValue","num","parseFloat","openUrlDialog","handleLogout","authType","withCredentials","closeQuickToolbar","handleShowAnnouncement","openAnnouncement","info","getAnnouncementRefreshAt","refreshAt","announcementRefreshAt","isFinite","acknowledgedRefreshAt","isRedirecting","options","credentials","router","disableFooter","thisYear","footerLink","xmlns","$attrs","fontAwesomeIcon","inheritAttrs","icons","cfr2","s3","discord"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/502.ff024e4c.js.map.gz b/frontend-dist/js/502.ff024e4c.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..b9f7b2cebc1b77d457325d6151bf3025770144b2 GIT binary patch literal 85300 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,i.uX)(),(0,i.CE)("div",{key:t.index,class:(0,n.C4)(["menu-item",{"is-active":s.activeIndex===t.index}]),onClick:e=>d.handleSelect(t.index)},[(0,i.bF)(h,{icon:t.icon,class:"menu-icon"},null,8,["icon"]),(0,i.Lk)("span",l,(0,n.v_)(e.$t(t.titleKey)),1)],10,o))),128))]),(0,i.Lk)("div",{class:"toggle-button",onClick:t[0]||(t[0]=(...e)=>d.toggleCollapse&&d.toggleCollapse(...e))},[(0,i.bF)(h,{icon:s.isCollapse?"angle-double-right":"angle-double-left"},null,8,["icon"])])],6)}var c={name:"SysConfigTabs",props:{activeIndex:{type:String,default:"status"},isCollapse:{type:Boolean,default:!1}},data(){return{expandedWidth:null,menuItems:[{index:"status",icon:"chart-bar",titleKey:"sysConfigTabs.systemStatus"},{index:"upload",icon:"cloud-upload",titleKey:"sysConfigTabs.uploadSettings"},{index:"security",icon:"shield",titleKey:"sysConfigTabs.securitySettings"},{index:"page",icon:"pager",titleKey:"sysConfigTabs.pageSettings"},{index:"others",icon:"cog",titleKey:"sysConfigTabs.otherSettings"}]}},computed:{collapsedWidth(){return window.innerWidth<=768?50:56},sidebarStyle(){return this.isCollapse?{width:this.collapsedWidth+"px"}:this.expandedWidth?{width:this.expandedWidth+"px"}:{}}},watch:{"$i18n.locale"(){this.$nextTick(()=>this.measureWidth())}},methods:{toggleCollapse(){this.$emit("update:isCollapse",!this.isCollapse)},checkMobile(){const e=window.innerWidth<=768;this.$emit("update:isCollapse",e)},handleSelect(e){this.$emit("update:activeIndex",e)},measureWidth(){const e=this.$refs.sidebar;if(!e)return;const t=e.style.width,s=e.style.transition,i=e.classList.contains("is-collapsed");e.style.transition="none",i&&e.classList.remove("is-collapsed"),e.style.width="auto",e.offsetWidth;const n=e.scrollWidth;e.style.width=t,i&&e.classList.add("is-collapsed"),e.offsetWidth,e.style.transition=s,this.expandedWidth=n}},mounted(){this.checkMobile(),this.$nextTick(()=>this.measureWidth()),window.addEventListener("resize",this.checkMobile)},beforeDestroy(){window.removeEventListener("resize",this.checkMobile)}},d=s(71241);const h=(0,d.A)(c,[["render",r],["__scopeId","data-v-418ec867"]]);var u=h,p=s(54880),g=(s(85331),s(77128),s(78507)),f=(s(213),s(20620));const m={class:"container"},b={class:"header-content admin-header-content"},y={class:"header-action"};function x(e,t,s,a,o,l){const r=f.A,c=(0,i.g2)("font-awesome-icon"),d=g.R7,h=p.bZ,x=u;return(0,i.uX)(),(0,i.CE)("div",m,[(0,i.bF)(h,null,{default:(0,i.k6)(()=>[(0,i.Lk)("div",b,[(0,i.bF)(r,{activeTab:"systemConfig"}),(0,i.Lk)("div",y,[(0,i.bF)(d,{disabled:l.disableTooltip,content:e.$t("sysConfig.logout"),placement:"bottom"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{icon:"sign-out-alt",class:"header-icon",onClick:l.handleLogout},null,8,["onClick"])]),_:1},8,["disabled","content"])])])]),_:1}),(0,i.bF)(x,{activeIndex:o.activeIndex,"onUpdate:activeIndex":t[0]||(t[0]=e=>o.activeIndex=e),isCollapse:o.isSidebarCollapse,"onUpdate:isCollapse":t[1]||(t[1]=e=>o.isSidebarCollapse=e)},null,8,["activeIndex","isCollapse"]),((0,i.uX)(),(0,i.Wv)((0,i.$y)(l.currentComponent),{class:(0,n.C4)(["main-container",{collapsed:o.isSidebarCollapse}])},null,8,["class"]))])}s(44114);var v=s(99114),k=(s(30694),s(57009)),_=(s(78450),s(69655)),w=(s(2893),s(9267)),C=(s(15616),s(45130));const S={class:"date-range-calendar"},F={class:"selected-range"},T={class:"selected-range-inputs"},M=["aria-label"],P={class:"date-range-separator"},D=["aria-label"],A={class:"calendar-header"},$=["aria-label"],L={class:"calendar-title"},V=["aria-label"],E={class:"calendar-weekdays"},I={class:"calendar-grid"},U=["onClick"];function O(e,t,s,a,o,l){const r=(0,i.g2)("font-awesome-icon");return(0,i.uX)(),(0,i.CE)("div",S,[(0,i.Lk)("div",F,[(0,i.Lk)("div",T,[(0,i.bo)((0,i.Lk)("input",{"onUpdate:modelValue":t[0]||(t[0]=e=>o.inputStart=e),class:"date-input",type:"text",inputmode:"numeric","aria-label":l.startDateLabel,onChange:t[1]||(t[1]=(...e)=>l.handleManualInput&&l.handleManualInput(...e))},null,40,M),[[C.Jo,o.inputStart,void 0,{trim:!0}]]),(0,i.Lk)("span",P,(0,n.v_)(l.rangeSeparator),1),(0,i.bo)((0,i.Lk)("input",{"onUpdate:modelValue":t[2]||(t[2]=e=>o.inputEnd=e),class:"date-input",type:"text",inputmode:"numeric","aria-label":l.endDateLabel,onChange:t[3]||(t[3]=(...e)=>l.handleManualInput&&l.handleManualInput(...e))},null,40,D),[[C.Jo,o.inputEnd,void 0,{trim:!0}]])])]),(0,i.Lk)("div",A,[(0,i.Lk)("button",{type:"button",class:"calendar-nav","aria-label":l.previousMonthLabel,onClick:t[4]||(t[4]=(...e)=>l.goToPreviousMonth&&l.goToPreviousMonth(...e))},[(0,i.bF)(r,{icon:"chevron-left"})],8,$),(0,i.Lk)("div",L,(0,n.v_)(l.monthTitle),1),(0,i.Lk)("button",{type:"button",class:"calendar-nav","aria-label":l.nextMonthLabel,onClick:t[5]||(t[5]=(...e)=>l.goToNextMonth&&l.goToNextMonth(...e))},[(0,i.bF)(r,{icon:"chevron-right"})],8,V)]),(0,i.Lk)("div",E,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(l.weekdayLabels,e=>((0,i.uX)(),(0,i.CE)("span",{key:e},(0,n.v_)(e),1))),128))]),(0,i.Lk)("div",I,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(l.calendarDays,e=>((0,i.uX)(),(0,i.CE)("button",{key:e.key,type:"button",class:(0,n.C4)(["calendar-day",{"is-muted":!e.isCurrentMonth,"is-today":e.isToday,"is-range-start":e.key===o.draftStart,"is-range-end":e.key===o.draftEnd,"is-in-range":l.isInRange(e.key)}]),onClick:t=>l.selectDay(e.key)},(0,n.v_)(e.dayOfMonth),11,U))),128))])])}const R=864e5;function W(e){return String(e).padStart(2,"0")}function B(e){return`${e.getFullYear()}-${W(e.getMonth()+1)}-${W(e.getDate())}`}function z(e){if("string"!==typeof e)return null;const t=e.trim().match(/^(\d{4})[-/](\d{1,2})[-/](\d{1,2})$/);if(!t)return null;const s=Number(t[1]),i=Number(t[2])-1,n=Number(t[3]),a=new Date(s,i,n);return a.getFullYear()!==s||a.getMonth()!==i||a.getDate()!==n?null:(a.setHours(0,0,0,0),a)}function N(e,t){return new Date(e.getFullYear(),e.getMonth()+t,1)}var j={name:"DateRangeCalendar",props:{modelValue:{type:Array,default:()=>[]}},emits:["update:modelValue","change"],data(){const e=new Date;return e.setHours(0,0,0,0),{displayYear:e.getFullYear(),displayMonth:e.getMonth(),draftStart:"",draftEnd:"",inputStart:"",inputEnd:"",awaitingEnd:!1}},computed:{previousMonthLabel(){return this.$t("dateRangeCalendar.previousMonth")},nextMonthLabel(){return this.$t("dateRangeCalendar.nextMonth")},startDateLabel(){return this.$t("dateRangeCalendar.startDate")},endDateLabel(){return this.$t("dateRangeCalendar.endDate")},rangeSeparator(){return this.$t("dateRangeCalendar.rangeSeparator")},monthTitle(){return this.$t("dateRangeCalendar.monthTitle",{year:this.displayYear,month:W(this.displayMonth+1)})},weekdayLabels(){return[this.$t("dateRangeCalendar.weekdaySun"),this.$t("dateRangeCalendar.weekdayMon"),this.$t("dateRangeCalendar.weekdayTue"),this.$t("dateRangeCalendar.weekdayWed"),this.$t("dateRangeCalendar.weekdayThu"),this.$t("dateRangeCalendar.weekdayFri"),this.$t("dateRangeCalendar.weekdaySat")]},calendarDays(){const e=new Date(this.displayYear,this.displayMonth,1),t=new Date(this.displayYear,this.displayMonth,1-e.getDay()),s=B(new Date);return Array.from({length:42},(e,i)=>{const n=new Date(t.getTime()+i*R),a=B(n);return{key:a,dayOfMonth:n.getDate(),isCurrentMonth:n.getMonth()===this.displayMonth,isToday:a===s}})}},watch:{modelValue:{immediate:!0,handler(e){this.syncFromModel(e)}}},methods:{syncFromModel(e){const t=z(e?.[0]),s=z(e?.[1]);this.draftStart=t?B(t):"",this.draftEnd=s?B(s):"",this.inputStart=this.draftStart,this.inputEnd=this.draftEnd,this.awaitingEnd=!1;const i=t||s;i&&(this.displayYear=i.getFullYear(),this.displayMonth=i.getMonth())},goToPreviousMonth(){const e=N(new Date(this.displayYear,this.displayMonth,1),-1);this.displayYear=e.getFullYear(),this.displayMonth=e.getMonth()},goToNextMonth(){const e=N(new Date(this.displayYear,this.displayMonth,1),1);this.displayYear=e.getFullYear(),this.displayMonth=e.getMonth()},selectDay(e){if(!this.draftStart||this.draftEnd||!this.awaitingEnd)return this.draftStart=e,this.draftEnd="",this.inputStart=e,this.inputEnd="",void(this.awaitingEnd=!0);const t=ethis.draftStart&&el.fetchIndexInfo&&l.fetchIndexInfo(...e))},[(0,i.Lk)("div",re,[(0,i.bF)(r,{icon:"database"})]),(0,i.Lk)("div",ce,[(0,i.Lk)("div",de,(0,n.v_)(e.$t("sysStatus.totalFiles")),1),(0,i.Lk)("div",he,(0,n.v_)(o.indexInfo.totalFiles?.toLocaleString()||"0"),1),(0,i.Lk)("div",ue,(0,n.v_)(e.$t("sysStatus.clickToRefresh")),1)])]),(0,i.Lk)("div",pe,[(0,i.Lk)("div",ge,[(0,i.bF)(r,{icon:"clock"})]),(0,i.Lk)("div",fe,[(0,i.Lk)("div",me,(0,n.v_)(e.$t("sysStatus.indexUpdateTime")),1),(0,i.Lk)("div",be,(0,n.v_)(l.formatTime(o.indexInfo.lastUpdated)),1),(0,i.Lk)("div",ye,(0,n.v_)(l.getTimeAgo(o.indexInfo.lastUpdated)),1)])]),(0,i.Lk)("div",{class:"overview-card system-version",onClick:t[1]||(t[1]=(...e)=>l.openReleases&&l.openReleases(...e))},[(0,i.Lk)("div",xe,[(0,i.bF)(r,{icon:"code-branch"})]),(0,i.Lk)("div",ve,[(0,i.Lk)("div",ke,(0,n.v_)(e.$t("sysStatus.systemVersion")),1),(0,i.Lk)("div",_e,"v"+(0,n.v_)(o.version),1),(0,i.Lk)("div",we,(0,n.v_)(e.$t("sysStatus.clickToViewChangelog")),1)])])]),(0,i.Lk)("div",Ce,[(0,i.Lk)("div",Se,[(0,i.Lk)("div",Fe,[(0,i.Lk)("div",Te,[(0,i.bF)(r,{icon:"chart-line"}),(0,i.Lk)("span",null,(0,n.v_)(e.$t("sysStatus.uploadTrend")),1),(0,i.bF)(c,{class:"trend-calendar-btn",circle:"","aria-label":e.$t("sysStatus.selectDateRange"),onClick:l.openTrendDateDialog},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"calendar"})]),_:1},8,["aria-label","onClick"])]),(0,i.Lk)("div",Me,[(0,i.bF)(h,{modelValue:o.trendGroupBy,"onUpdate:modelValue":t[2]||(t[2]=e=>o.trendGroupBy=e),size:"small",class:"trend-group-switch","aria-label":e.$t("sysStatus.uploadTrendGroupBy")},{default:(0,i.k6)(()=>[(0,i.bF)(d,{label:"channel"},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysStatus.byChannelType")),1)]),_:1}),(0,i.bF)(d,{label:"channelName"},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysStatus.byChannelName")),1)]),_:1})]),_:1},8,["modelValue","aria-label"])])]),(0,i.bF)(p,{modelValue:o.trendDatePickerVisible,"onUpdate:modelValue":t[4]||(t[4]=e=>o.trendDatePickerVisible=e),title:e.$t("sysStatus.selectDateRange"),width:l.trendDateDialogWidth,class:"trend-date-dialog","align-center":"","append-to-body":""},{default:(0,i.k6)(()=>[(0,i.Lk)("div",Pe,[(0,i.bF)(u,{modelValue:o.trendDateRange,"onUpdate:modelValue":t[3]||(t[3]=e=>o.trendDateRange=e),onChange:l.handleTrendDateRangeChange},null,8,["modelValue","onChange"])])]),_:1},8,["modelValue","title","width"]),(0,i.Lk)("div",De,[l.hasTrendData?((0,i.uX)(),(0,i.CE)("div",$e,[(0,i.bF)(f,{data:l.uploadTrendChartData,options:l.lineChartOptions},null,8,["data","options"])])):((0,i.uX)(),(0,i.CE)("div",Ae,[(0,i.bF)(r,{icon:"inbox"}),(0,i.Lk)("span",null,(0,n.v_)(e.$t("sysStatus.noData")),1)]))])]),(0,i.Lk)("div",Le,[(0,i.Lk)("div",Ve,[(0,i.bF)(r,{icon:"share-alt"}),(0,i.Lk)("span",null,(0,n.v_)(e.$t("sysStatus.channelDistribution")),1)]),(0,i.Lk)("div",Ee,[0===Object.keys(o.indexInfo.channelStats||{}).length?((0,i.uX)(),(0,i.CE)("div",Ie,[(0,i.bF)(r,{icon:"inbox"}),(0,i.Lk)("span",null,(0,n.v_)(e.$t("sysStatus.noData")),1)])):((0,i.uX)(),(0,i.CE)("div",Ue,[(0,i.Lk)("div",Oe,[(0,i.bF)(m,{data:l.channelChartData,options:l.chartOptions},null,8,["data","options"]),(0,i.Lk)("div",Re,[(0,i.Lk)("div",We,(0,n.v_)(o.indexInfo.totalFiles?.toLocaleString()||"0"),1),(0,i.Lk)("div",Be,(0,n.v_)(e.$t("sysStatus.totalFilesLabel")),1)])]),(0,i.Lk)("div",ze,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.indexInfo.channelStats,(e,t,s)=>((0,i.uX)(),(0,i.CE)("div",{key:t,class:"legend-item"},[(0,i.Lk)("span",{class:"legend-color",style:(0,n.Tr)({background:l.getChartColor(s)})},null,4),(0,i.Lk)("span",Ne,(0,n.v_)(t),1),(0,i.Lk)("span",je,(0,n.v_)(e.toLocaleString()),1),(0,i.Lk)("span",He,(0,n.v_)(l.getPercentage(e,o.indexInfo.totalFiles))+"%",1)]))),128))])]))])]),(0,i.Lk)("div",qe,[(0,i.Lk)("div",Xe,[(0,i.bF)(r,{icon:"file-alt"}),(0,i.Lk)("span",null,(0,n.v_)(e.$t("sysStatus.fileStatusDistribution")),1)]),(0,i.Lk)("div",Ke,[0===Object.keys(o.indexInfo.typeStats||{}).length?((0,i.uX)(),(0,i.CE)("div",Qe,[(0,i.bF)(r,{icon:"inbox"}),(0,i.Lk)("span",null,(0,n.v_)(e.$t("sysStatus.noData")),1)])):((0,i.uX)(),(0,i.CE)("div",Ye,[(0,i.Lk)("div",Ge,[(0,i.bF)(m,{data:l.typeChartData,options:l.chartOptions},null,8,["data","options"]),(0,i.Lk)("div",Je,[(0,i.Lk)("div",Ze,(0,n.v_)(Object.keys(o.indexInfo.typeStats).length),1),(0,i.Lk)("div",et,(0,n.v_)(e.$t("sysStatus.statusTypes")),1)])]),(0,i.Lk)("div",tt,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(l.aggregatedTypeStats,(e,t,s)=>((0,i.uX)(),(0,i.CE)("div",{key:t,class:"legend-item"},[(0,i.Lk)("span",{class:"legend-color",style:(0,n.Tr)({background:l.getTypeChartColor(s)})},null,4),(0,i.Lk)("span",st,(0,n.v_)(t),1),(0,i.Lk)("span",it,(0,n.v_)(e.toLocaleString()),1),(0,i.Lk)("span",nt,(0,n.v_)(l.getPercentage(e,o.indexInfo.totalFiles))+"%",1)]))),128))])]))])])]),(0,i.Lk)("div",at,[(0,i.Lk)("div",ot,[(0,i.Lk)("div",lt,[(0,i.bF)(r,{icon:"tools"}),(0,i.Lk)("span",null,(0,n.v_)(e.$t("sysStatus.systemMaintenance")),1)]),(0,i.Lk)("div",rt,[o.isProcessing?((0,i.uX)(),(0,i.CE)("div",ct,[(0,i.Lk)("div",dt,[(0,i.Lk)("span",ht,(0,n.v_)(l.phaseDescription),1),(0,i.Lk)("span",ut,(0,n.v_)(Math.round(o.processingProgress.percentage))+"%",1)]),(0,i.bF)(b,{percentage:o.processingProgress.percentage,"stroke-width":12,"show-text":!1,class:"progress-bar"},null,8,["percentage"]),(0,i.Lk)("div",pt,[o.processingProgress.current>0?((0,i.uX)(),(0,i.CE)("span",gt,[(0,i.bF)(r,{icon:"file-alt"}),(0,i.eW)(" "+(0,n.v_)(o.processingProgress.current.toLocaleString())+" ",1),o.processingProgress.total>0?((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[(0,i.eW)(" / "+(0,n.v_)(o.processingProgress.total.toLocaleString()),1)],64)):(0,i.Q3)("",!0),(0,i.eW)(" "+(0,n.v_)(e.$t("sysStatus.records")),1)])):(0,i.Q3)("",!0),l.estimatedTimeRemaining?((0,i.uX)(),(0,i.CE)("span",ft,[(0,i.bF)(r,{icon:"clock"}),(0,i.eW)(" "+(0,n.v_)(l.estimatedTimeRemaining),1)])):(0,i.Q3)("",!0)]),o.processingProgress.message?((0,i.uX)(),(0,i.CE)("div",mt,(0,n.v_)(o.processingProgress.message),1)):(0,i.Q3)("",!0),(0,i.bF)(c,{type:"danger",plain:"",size:"small",onClick:l.cancelOperation,class:"cancel-btn"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"times"}),(0,i.eW)(" "+(0,n.v_)(e.$t("sysStatus.cancelOperation")),1)]),_:1},8,["onClick"])])):o.processingError?((0,i.uX)(),(0,i.CE)("div",bt,[(0,i.Lk)("div",yt,[(0,i.bF)(r,{icon:"exclamation-triangle"})]),(0,i.Lk)("div",xt,[(0,i.Lk)("div",vt,(0,n.v_)(o.processingError.message),1),o.processingError.suggestion?((0,i.uX)(),(0,i.CE)("div",kt,(0,n.v_)(o.processingError.suggestion),1)):(0,i.Q3)("",!0)]),(0,i.Lk)("div",_t,[o.processingError.recoverable?((0,i.uX)(),(0,i.Wv)(c,{key:0,type:"primary",size:"small",onClick:l.retryOperation},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"redo"}),(0,i.eW)(" "+(0,n.v_)(e.$t("sysStatus.retry")),1)]),_:1},8,["onClick"])):(0,i.Q3)("",!0),(0,i.bF)(c,{type:"default",size:"small",onClick:l.dismissError},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysStatus.close")),1)]),_:1},8,["onClick"])])])):((0,i.uX)(),(0,i.CE)("div",wt,[(0,i.bF)(y,{content:e.$t("sysStatus.rebuildTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{type:"primary",loading:o.rebuilding,disabled:o.isProcessing,onClick:l.rebuildIndex,class:"action-btn rebuild-btn"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"sync-alt"}),(0,i.eW)(" "+(0,n.v_)(o.rebuilding?e.$t("sysStatus.rebuilding"):e.$t("sysStatus.rebuildIndex")),1)]),_:1},8,["loading","disabled","onClick"])]),_:1},8,["content"]),(0,i.bF)(y,{content:e.$t("sysStatus.backupTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{type:"success",loading:o.backing,disabled:o.isProcessing,onClick:l.backupData,class:"action-btn backup-btn"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"download"}),(0,i.eW)(" "+(0,n.v_)(o.backing?e.$t("sysStatus.backingUp"):e.$t("sysStatus.backupData")),1)]),_:1},8,["loading","disabled","onClick"])]),_:1},8,["content"]),(0,i.bF)(y,{content:e.$t("sysStatus.restoreTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",Ct,[(0,i.Lk)("input",{type:"file",ref:"fileInput",accept:".json",onChange:t[5]||(t[5]=(...e)=>l.handleFileSelect&&l.handleFileSelect(...e)),style:{display:"none"}},null,544),(0,i.bF)(c,{type:"warning",loading:o.restoring,disabled:o.isProcessing,onClick:l.selectRestoreFile,class:"action-btn restore-btn"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"upload"}),(0,i.eW)(" "+(0,n.v_)(o.restoring?e.$t("sysStatus.restoring"):e.$t("sysStatus.restoreData")),1)]),_:1},8,["loading","disabled","onClick"])])]),_:1},8,["content"])]))])])]),o.indexInfo.newestFile||o.indexInfo.oldestFile?((0,i.uX)(),(0,i.CE)("div",St,[o.indexInfo.newestFile?((0,i.uX)(),(0,i.CE)("div",{key:0,class:"file-info-card info-card-newest",onClick:t[8]||(t[8]=e=>l.openFileInNewTab(o.indexInfo.newestFile))},[l.isImageFile(o.indexInfo.newestFile)&&!o.loadErrors["newest"]?((0,i.uX)(),(0,i.Wv)(x,{key:0,src:"/file/"+o.indexInfo.newestFile.id+"?from=admin",fit:"cover",class:"card-bg-media",onError:t[6]||(t[6]=e=>l.handleImageError("newest"))},null,8,["src"])):l.isVideoFile(o.indexInfo.newestFile)&&!o.loadErrors["newest"]?((0,i.uX)(),(0,i.CE)("video",{key:1,src:"/file/"+o.indexInfo.newestFile.id+"?from=admin",class:"card-bg-media",muted:"",loop:"",autoplay:"",onError:t[7]||(t[7]=e=>l.handleImageError("newest"))},null,40,Ft)):((0,i.uX)(),(0,i.CE)("div",Tt,[(0,i.bF)(r,{icon:"file-alt",class:"fallback-icon"})])),(0,i.Lk)("div",Mt,[(0,i.bF)(r,{icon:"arrow-up"}),(0,i.Lk)("span",null,(0,n.v_)(e.$t("sysStatus.latestUpload")),1)]),(0,i.Lk)("div",Pt,[(0,i.Lk)("div",Dt,(0,n.v_)(o.indexInfo.newestFile.metadata?.FileName||o.indexInfo.newestFile.id),1),(0,i.Lk)("div",At,(0,n.v_)(l.formatTime(o.indexInfo.newestFile.metadata?.TimeStamp)),1)])])):(0,i.Q3)("",!0),o.indexInfo.oldestFile?((0,i.uX)(),(0,i.CE)("div",{key:1,class:"file-info-card info-card-oldest",onClick:t[11]||(t[11]=e=>l.openFileInNewTab(o.indexInfo.oldestFile))},[l.isImageFile(o.indexInfo.oldestFile)&&!o.loadErrors["oldest"]?((0,i.uX)(),(0,i.Wv)(x,{key:0,src:"/file/"+o.indexInfo.oldestFile.id+"?from=admin",fit:"cover",class:"card-bg-media",onError:t[9]||(t[9]=e=>l.handleImageError("oldest"))},null,8,["src"])):l.isVideoFile(o.indexInfo.oldestFile)&&!o.loadErrors["oldest"]?((0,i.uX)(),(0,i.CE)("video",{key:1,src:"/file/"+o.indexInfo.oldestFile.id+"?from=admin",class:"card-bg-media",muted:"",loop:"",autoplay:"",onError:t[10]||(t[10]=e=>l.handleImageError("oldest"))},null,40,$t)):((0,i.uX)(),(0,i.CE)("div",Lt,[(0,i.bF)(r,{icon:"file-alt",class:"fallback-icon"})])),(0,i.Lk)("div",Vt,[(0,i.bF)(r,{icon:"arrow-down"}),(0,i.Lk)("span",null,(0,n.v_)(e.$t("sysStatus.earliestUpload")),1)]),(0,i.Lk)("div",Et,[(0,i.Lk)("div",It,(0,n.v_)(o.indexInfo.oldestFile.metadata?.FileName||o.indexInfo.oldestFile.id),1),(0,i.Lk)("div",Ut,(0,n.v_)(l.formatTime(o.indexInfo.oldestFile.metadata?.TimeStamp)),1)])])):(0,i.Q3)("",!0)])):(0,i.Q3)("",!0)])),[[C,o.loading]])}s(18111),s(7588),s(61701),s(18237),s(17642),s(58004),s(33853),s(45876),s(32475),s(15024),s(31698);var Rt=s(70797),Wt={rE:"2.7.7"},Bt=(s(20116),s(91114));s(22489),s(13579); -/*! - * @kurkle/color v0.3.4 - * https://github.com/kurkle/color#readme - * (c) 2024 Jukka Kurkela - * Released under the MIT License - */ -function zt(e){return e+.5|0}const Nt=(e,t,s)=>Math.max(Math.min(e,s),t);function jt(e){return Nt(zt(2.55*e),0,255)}function Ht(e){return Nt(zt(255*e),0,255)}function qt(e){return Nt(zt(e/2.55)/100,0,1)}function Xt(e){return Nt(zt(100*e),0,100)}const Kt={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},Qt=[..."0123456789ABCDEF"],Yt=e=>Qt[15&e],Gt=e=>Qt[(240&e)>>4]+Qt[15&e],Jt=e=>(240&e)>>4===(15&e),Zt=e=>Jt(e.r)&&Jt(e.g)&&Jt(e.b)&&Jt(e.a);function es(e){var t,s=e.length;return"#"===e[0]&&(4===s||5===s?t={r:255&17*Kt[e[1]],g:255&17*Kt[e[2]],b:255&17*Kt[e[3]],a:5===s?17*Kt[e[4]]:255}:7!==s&&9!==s||(t={r:Kt[e[1]]<<4|Kt[e[2]],g:Kt[e[3]]<<4|Kt[e[4]],b:Kt[e[5]]<<4|Kt[e[6]],a:9===s?Kt[e[7]]<<4|Kt[e[8]]:255})),t}const ts=(e,t)=>e<255?t(e):"";function ss(e){var t=Zt(e)?Yt:Gt;return e?"#"+t(e.r)+t(e.g)+t(e.b)+ts(e.a,t):void 0}const is=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function ns(e,t,s){const i=t*Math.min(s,1-s),n=(t,n=(t+e/30)%12)=>s-i*Math.max(Math.min(n-3,9-n,1),-1);return[n(0),n(8),n(4)]}function as(e,t,s){const i=(i,n=(i+e/60)%6)=>s-s*t*Math.max(Math.min(n,4-n,1),0);return[i(5),i(3),i(1)]}function os(e,t,s){const i=ns(e,1,.5);let n;for(t+s>1&&(n=1/(t+s),t*=n,s*=n),n=0;n<3;n++)i[n]*=1-t-s,i[n]+=t;return i}function ls(e,t,s,i,n){return e===n?(t-s)/i+(t.5?d/(2-a-o):d/(a+o),r=ls(s,i,n,d,a),r=60*r+.5),[0|r,c||0,l]}function cs(e,t,s,i){return(Array.isArray(t)?e(t[0],t[1],t[2]):e(t,s,i)).map(Ht)}function ds(e,t,s){return cs(ns,e,t,s)}function hs(e,t,s){return cs(os,e,t,s)}function us(e,t,s){return cs(as,e,t,s)}function ps(e){return(e%360+360)%360}function gs(e){const t=is.exec(e);let s,i=255;if(!t)return;t[5]!==s&&(i=t[6]?jt(+t[5]):Ht(+t[5]));const n=ps(+t[2]),a=+t[3]/100,o=+t[4]/100;return s="hwb"===t[1]?hs(n,a,o):"hsv"===t[1]?us(n,a,o):ds(n,a,o),{r:s[0],g:s[1],b:s[2],a:i}}function fs(e,t){var s=rs(e);s[0]=ps(s[0]+t),s=ds(s),e.r=s[0],e.g=s[1],e.b=s[2]}function ms(e){if(!e)return;const t=rs(e),s=t[0],i=Xt(t[1]),n=Xt(t[2]);return e.a<255?`hsla(${s}, ${i}%, ${n}%, ${qt(e.a)})`:`hsl(${s}, ${i}%, ${n}%)`}const bs={x:"dark",Z:"light",Y:"re",X:"blu",W:"gr",V:"medium",U:"slate",A:"ee",T:"ol",S:"or",B:"ra",C:"lateg",D:"ights",R:"in",Q:"turquois",E:"hi",P:"ro",O:"al",N:"le",M:"de",L:"yello",F:"en",K:"ch",G:"arks",H:"ea",I:"ightg",J:"wh"},ys={OiceXe:"f0f8ff",antiquewEte:"faebd7",aqua:"ffff",aquamarRe:"7fffd4",azuY:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"0",blanKedOmond:"ffebcd",Xe:"ff",XeviTet:"8a2be2",bPwn:"a52a2a",burlywood:"deb887",caMtXe:"5f9ea0",KartYuse:"7fff00",KocTate:"d2691e",cSO:"ff7f50",cSnflowerXe:"6495ed",cSnsilk:"fff8dc",crimson:"dc143c",cyan:"ffff",xXe:"8b",xcyan:"8b8b",xgTMnPd:"b8860b",xWay:"a9a9a9",xgYF:"6400",xgYy:"a9a9a9",xkhaki:"bdb76b",xmagFta:"8b008b",xTivegYF:"556b2f",xSange:"ff8c00",xScEd:"9932cc",xYd:"8b0000",xsOmon:"e9967a",xsHgYF:"8fbc8f",xUXe:"483d8b",xUWay:"2f4f4f",xUgYy:"2f4f4f",xQe:"ced1",xviTet:"9400d3",dAppRk:"ff1493",dApskyXe:"bfff",dimWay:"696969",dimgYy:"696969",dodgerXe:"1e90ff",fiYbrick:"b22222",flSOwEte:"fffaf0",foYstWAn:"228b22",fuKsia:"ff00ff",gaRsbSo:"dcdcdc",ghostwEte:"f8f8ff",gTd:"ffd700",gTMnPd:"daa520",Way:"808080",gYF:"8000",gYFLw:"adff2f",gYy:"808080",honeyMw:"f0fff0",hotpRk:"ff69b4",RdianYd:"cd5c5c",Rdigo:"4b0082",ivSy:"fffff0",khaki:"f0e68c",lavFMr:"e6e6fa",lavFMrXsh:"fff0f5",lawngYF:"7cfc00",NmoncEffon:"fffacd",ZXe:"add8e6",ZcSO:"f08080",Zcyan:"e0ffff",ZgTMnPdLw:"fafad2",ZWay:"d3d3d3",ZgYF:"90ee90",ZgYy:"d3d3d3",ZpRk:"ffb6c1",ZsOmon:"ffa07a",ZsHgYF:"20b2aa",ZskyXe:"87cefa",ZUWay:"778899",ZUgYy:"778899",ZstAlXe:"b0c4de",ZLw:"ffffe0",lime:"ff00",limegYF:"32cd32",lRF:"faf0e6",magFta:"ff00ff",maPon:"800000",VaquamarRe:"66cdaa",VXe:"cd",VScEd:"ba55d3",VpurpN:"9370db",VsHgYF:"3cb371",VUXe:"7b68ee",VsprRggYF:"fa9a",VQe:"48d1cc",VviTetYd:"c71585",midnightXe:"191970",mRtcYam:"f5fffa",mistyPse:"ffe4e1",moccasR:"ffe4b5",navajowEte:"ffdead",navy:"80",Tdlace:"fdf5e6",Tive:"808000",TivedBb:"6b8e23",Sange:"ffa500",SangeYd:"ff4500",ScEd:"da70d6",pOegTMnPd:"eee8aa",pOegYF:"98fb98",pOeQe:"afeeee",pOeviTetYd:"db7093",papayawEp:"ffefd5",pHKpuff:"ffdab9",peru:"cd853f",pRk:"ffc0cb",plum:"dda0dd",powMrXe:"b0e0e6",purpN:"800080",YbeccapurpN:"663399",Yd:"ff0000",Psybrown:"bc8f8f",PyOXe:"4169e1",saddNbPwn:"8b4513",sOmon:"fa8072",sandybPwn:"f4a460",sHgYF:"2e8b57",sHshell:"fff5ee",siFna:"a0522d",silver:"c0c0c0",skyXe:"87ceeb",UXe:"6a5acd",UWay:"708090",UgYy:"708090",snow:"fffafa",sprRggYF:"ff7f",stAlXe:"4682b4",tan:"d2b48c",teO:"8080",tEstN:"d8bfd8",tomato:"ff6347",Qe:"40e0d0",viTet:"ee82ee",JHt:"f5deb3",wEte:"ffffff",wEtesmoke:"f5f5f5",Lw:"ffff00",LwgYF:"9acd32"};function xs(){const e={},t=Object.keys(ys),s=Object.keys(bs);let i,n,a,o,l;for(i=0;i>16&255,a>>8&255,255&a]}return e}let vs;function ks(e){vs||(vs=xs(),vs.transparent=[0,0,0,0]);const t=vs[e.toLowerCase()];return t&&{r:t[0],g:t[1],b:t[2],a:4===t.length?t[3]:255}}const _s=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;function ws(e){const t=_s.exec(e);let s,i,n,a=255;if(t){if(t[7]!==s){const e=+t[7];a=t[8]?jt(e):Nt(255*e,0,255)}return s=+t[1],i=+t[3],n=+t[5],s=255&(t[2]?jt(s):Nt(s,0,255)),i=255&(t[4]?jt(i):Nt(i,0,255)),n=255&(t[6]?jt(n):Nt(n,0,255)),{r:s,g:i,b:n,a:a}}}function Cs(e){return e&&(e.a<255?`rgba(${e.r}, ${e.g}, ${e.b}, ${qt(e.a)})`:`rgb(${e.r}, ${e.g}, ${e.b})`)}const Ss=e=>e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055,Fs=e=>e<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4);function Ts(e,t,s){const i=Fs(qt(e.r)),n=Fs(qt(e.g)),a=Fs(qt(e.b));return{r:Ht(Ss(i+s*(Fs(qt(t.r))-i))),g:Ht(Ss(n+s*(Fs(qt(t.g))-n))),b:Ht(Ss(a+s*(Fs(qt(t.b))-a))),a:e.a+s*(t.a-e.a)}}function Ms(e,t,s){if(e){let i=rs(e);i[t]=Math.max(0,Math.min(i[t]+i[t]*s,0===t?360:1)),i=ds(i),e.r=i[0],e.g=i[1],e.b=i[2]}}function Ps(e,t){return e?Object.assign(t||{},e):e}function Ds(e){var t={r:0,g:0,b:0,a:255};return Array.isArray(e)?e.length>=3&&(t={r:e[0],g:e[1],b:e[2],a:255},e.length>3&&(t.a=Ht(e[3]))):(t=Ps(e,{r:0,g:0,b:0,a:1}),t.a=Ht(t.a)),t}function As(e){return"r"===e.charAt(0)?ws(e):gs(e)}class $s{constructor(e){if(e instanceof $s)return e;const t=typeof e;let s;"object"===t?s=Ds(e):"string"===t&&(s=es(e)||ks(e)||As(e)),this._rgb=s,this._valid=!!s}get valid(){return this._valid}get rgb(){var e=Ps(this._rgb);return e&&(e.a=qt(e.a)),e}set rgb(e){this._rgb=Ds(e)}rgbString(){return this._valid?Cs(this._rgb):void 0}hexString(){return this._valid?ss(this._rgb):void 0}hslString(){return this._valid?ms(this._rgb):void 0}mix(e,t){if(e){const s=this.rgb,i=e.rgb;let n;const a=t===n?.5:t,o=2*a-1,l=s.a-i.a,r=((o*l===-1?o:(o+l)/(1+o*l))+1)/2;n=1-r,s.r=255&r*s.r+n*i.r+.5,s.g=255&r*s.g+n*i.g+.5,s.b=255&r*s.b+n*i.b+.5,s.a=a*s.a+(1-a)*i.a,this.rgb=s}return this}interpolate(e,t){return e&&(this._rgb=Ts(this._rgb,e._rgb,t)),this}clone(){return new $s(this.rgb)}alpha(e){return this._rgb.a=Ht(e),this}clearer(e){const t=this._rgb;return t.a*=1-e,this}greyscale(){const e=this._rgb,t=zt(.3*e.r+.59*e.g+.11*e.b);return e.r=e.g=e.b=t,this}opaquer(e){const t=this._rgb;return t.a*=1+e,this}negate(){const e=this._rgb;return e.r=255-e.r,e.g=255-e.g,e.b=255-e.b,this}lighten(e){return Ms(this._rgb,2,e),this}darken(e){return Ms(this._rgb,2,-e),this}saturate(e){return Ms(this._rgb,1,e),this}desaturate(e){return Ms(this._rgb,1,-e),this}rotate(e){return fs(this._rgb,e),this}} -/*! - * Chart.js v4.5.1 - * https://www.chartjs.org - * (c) 2025 Chart.js Contributors - * Released under the MIT License - */ -function Ls(){}const Vs=(()=>{let e=0;return()=>e++})();function Es(e){return null===e||void 0===e}function Is(e){if(Array.isArray&&Array.isArray(e))return!0;const t=Object.prototype.toString.call(e);return"[object"===t.slice(0,7)&&"Array]"===t.slice(-6)}function Us(e){return null!==e&&"[object Object]"===Object.prototype.toString.call(e)}function Os(e){return("number"===typeof e||e instanceof Number)&&isFinite(+e)}function Rs(e,t){return Os(e)?e:t}function Ws(e,t){return"undefined"===typeof e?t:e}const Bs=(e,t)=>"string"===typeof e&&e.endsWith("%")?parseFloat(e)/100:+e/t,zs=(e,t)=>"string"===typeof e&&e.endsWith("%")?parseFloat(e)/100*t:+e;function Ns(e,t,s){if(e&&"function"===typeof e.call)return e.apply(s,t)}function js(e,t,s,i){let n,a,o;if(Is(e))if(a=e.length,i)for(n=a-1;n>=0;n--)t.call(s,e[n],n);else for(n=0;ne,x:e=>e.x,y:e=>e.y};function Zs(e){const t=e.split("."),s=[];let i="";for(const n of t)i+=n,i.endsWith("\\")?i=i.slice(0,-1)+".":(s.push(i),i="");return s}function ei(e){const t=Zs(e);return e=>{for(const s of t){if(""===s)break;e=e&&e[s]}return e}}function ti(e,t){const s=Js[t]||(Js[t]=ei(t));return s(e)}function si(e){return e.charAt(0).toUpperCase()+e.slice(1)}const ii=e=>"undefined"!==typeof e,ni=e=>"function"===typeof e,ai=(e,t)=>{if(e.size!==t.size)return!1;for(const s of e)if(!t.has(s))return!1;return!0};function oi(e){return"mouseup"===e.type||"click"===e.type||"contextmenu"===e.type}const li=Math.PI,ri=2*li,ci=ri+li,di=Number.POSITIVE_INFINITY,hi=li/180,ui=li/2,pi=li/4,gi=2*li/3,fi=Math.log10,mi=Math.sign;function bi(e,t,s){return Math.abs(e-t)e-t).pop(),t}function vi(e){return"symbol"===typeof e||"object"===typeof e&&null!==e&&!(Symbol.toPrimitive in e||"toString"in e||"valueOf"in e)}function ki(e){return!vi(e)&&!isNaN(parseFloat(e))&&isFinite(e)}function _i(e,t){const s=Math.round(e);return s-t<=e&&s+t>=e}function wi(e,t,s){let i,n,a;for(i=0,n=e.length;ir&&c=Math.min(t,s)-i&&e<=Math.max(t,s)+i}function Ei(e,t,s){s=s||(s=>e[s]1)i=a+n>>1,s(i)?a=i:n=i;return{lo:a,hi:n}}const Ii=(e,t,s,i)=>Ei(e,s,i?i=>{const n=e[i][t];return ne[i][t]Ei(e,s,i=>e[i][t]>=s);function Oi(e,t,s){let i=0,n=e.length;while(ii&&e[n-1]>s)n--;return i>0||n{const s="_onData"+si(t),i=e[t];Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value(...t){const n=i.apply(this,t);return e._chartjs.listeners.forEach(e=>{"function"===typeof e[s]&&e[s](...t)}),n}})}))}function Bi(e,t){const s=e._chartjs;if(!s)return;const i=s.listeners,n=i.indexOf(t);-1!==n&&i.splice(n,1),i.length>0||(Ri.forEach(t=>{delete e[t]}),delete e._chartjs)}function zi(e){const t=new Set(e);return t.size===e.length?e:Array.from(t)}const Ni=function(){return"undefined"===typeof window?function(e){return e()}:window.requestAnimationFrame}();function ji(e,t){let s=[],i=!1;return function(...n){s=n,i||(i=!0,Ni.call(window,()=>{i=!1,e.apply(t,s)}))}}function Hi(e,t){let s;return function(...i){return t?(clearTimeout(s),s=setTimeout(e,t,i)):e.apply(this,i),t}}const qi=e=>"start"===e?"left":"end"===e?"right":"center",Xi=(e,t,s)=>"start"===e?t:"end"===e?s:(t+s)/2,Ki=(e,t,s,i)=>{const n=i?"left":"right";return e===n?s:"center"===e?(t+s)/2:t};function Qi(e,t,s){const i=t.length;let n=0,a=i;if(e._sorted){const{iScale:o,vScale:l,_parsed:r}=e,c=e.dataset&&e.dataset.options?e.dataset.options.spanGaps:null,d=o.axis,{min:h,max:u,minDefined:p,maxDefined:g}=o.getUserBounds();if(p){if(n=Math.min(Ii(r,d,h).lo,s?i:Ii(t,d,o.getPixelForValue(h)).lo),c){const e=r.slice(0,n+1).reverse().findIndex(e=>!Es(e[l.axis]));n-=Math.max(0,e)}n=$i(n,0,i-1)}if(g){let e=Math.max(Ii(r,o.axis,u,!0).hi+1,s?0:Ii(t,d,o.getPixelForValue(u),!0).hi+1);if(c){const t=r.slice(e-1).findIndex(e=>!Es(e[l.axis]));e+=Math.max(0,t)}a=$i(e,n,i)-n}else a=i-n}return{start:n,count:a}}function Yi(e){const{xScale:t,yScale:s,_scaleRanges:i}=e,n={xmin:t.min,xmax:t.max,ymin:s.min,ymax:s.max};if(!i)return e._scaleRanges=n,!0;const a=i.xmin!==t.min||i.xmax!==t.max||i.ymin!==s.min||i.ymax!==s.max;return Object.assign(i,n),a}const Gi=e=>0===e||1===e,Ji=(e,t,s)=>-Math.pow(2,10*(e-=1))*Math.sin((e-t)*ri/s),Zi=(e,t,s)=>Math.pow(2,-10*e)*Math.sin((e-t)*ri/s)+1,en={linear:e=>e,easeInQuad:e=>e*e,easeOutQuad:e=>-e*(e-2),easeInOutQuad:e=>(e/=.5)<1?.5*e*e:-.5*(--e*(e-2)-1),easeInCubic:e=>e*e*e,easeOutCubic:e=>(e-=1)*e*e+1,easeInOutCubic:e=>(e/=.5)<1?.5*e*e*e:.5*((e-=2)*e*e+2),easeInQuart:e=>e*e*e*e,easeOutQuart:e=>-((e-=1)*e*e*e-1),easeInOutQuart:e=>(e/=.5)<1?.5*e*e*e*e:-.5*((e-=2)*e*e*e-2),easeInQuint:e=>e*e*e*e*e,easeOutQuint:e=>(e-=1)*e*e*e*e+1,easeInOutQuint:e=>(e/=.5)<1?.5*e*e*e*e*e:.5*((e-=2)*e*e*e*e+2),easeInSine:e=>1-Math.cos(e*ui),easeOutSine:e=>Math.sin(e*ui),easeInOutSine:e=>-.5*(Math.cos(li*e)-1),easeInExpo:e=>0===e?0:Math.pow(2,10*(e-1)),easeOutExpo:e=>1===e?1:1-Math.pow(2,-10*e),easeInOutExpo:e=>Gi(e)?e:e<.5?.5*Math.pow(2,10*(2*e-1)):.5*(2-Math.pow(2,-10*(2*e-1))),easeInCirc:e=>e>=1?e:-(Math.sqrt(1-e*e)-1),easeOutCirc:e=>Math.sqrt(1-(e-=1)*e),easeInOutCirc:e=>(e/=.5)<1?-.5*(Math.sqrt(1-e*e)-1):.5*(Math.sqrt(1-(e-=2)*e)+1),easeInElastic:e=>Gi(e)?e:Ji(e,.075,.3),easeOutElastic:e=>Gi(e)?e:Zi(e,.075,.3),easeInOutElastic(e){const t=.1125,s=.45;return Gi(e)?e:e<.5?.5*Ji(2*e,t,s):.5+.5*Zi(2*e-1,t,s)},easeInBack(e){const t=1.70158;return e*e*((t+1)*e-t)},easeOutBack(e){const t=1.70158;return(e-=1)*e*((t+1)*e+t)+1},easeInOutBack(e){let t=1.70158;return(e/=.5)<1?e*e*((1+(t*=1.525))*e-t)*.5:.5*((e-=2)*e*((1+(t*=1.525))*e+t)+2)},easeInBounce:e=>1-en.easeOutBounce(1-e),easeOutBounce(e){const t=7.5625,s=2.75;return e<1/s?t*e*e:e<2/s?t*(e-=1.5/s)*e+.75:e<2.5/s?t*(e-=2.25/s)*e+.9375:t*(e-=2.625/s)*e+.984375},easeInOutBounce:e=>e<.5?.5*en.easeInBounce(2*e):.5*en.easeOutBounce(2*e-1)+.5};function tn(e){if(e&&"object"===typeof e){const t=e.toString();return"[object CanvasPattern]"===t||"[object CanvasGradient]"===t}return!1}function sn(e){return tn(e)?e:new $s(e)}function nn(e){return tn(e)?e:new $s(e).saturate(.5).darken(.1).hexString()}const an=["x","y","borderWidth","radius","tension"],on=["color","borderColor","backgroundColor"];function ln(e){e.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),e.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:e=>"onProgress"!==e&&"onComplete"!==e&&"fn"!==e}),e.set("animations",{colors:{type:"color",properties:on},numbers:{type:"number",properties:an}}),e.describe("animations",{_fallback:"animation"}),e.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:e=>0|e}}}})}function rn(e){e.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})}const cn=new Map;function dn(e,t){t=t||{};const s=e+JSON.stringify(t);let i=cn.get(s);return i||(i=new Intl.NumberFormat(e,t),cn.set(s,i)),i}function hn(e,t,s){return dn(t,s).format(e)}const un={values(e){return Is(e)?e:""+e},numeric(e,t,s){if(0===e)return"0";const i=this.chart.options.locale;let n,a=e;if(s.length>1){const t=Math.max(Math.abs(s[0].value),Math.abs(s[s.length-1].value));(t<1e-4||t>1e15)&&(n="scientific"),a=pn(e,s)}const o=fi(Math.abs(a)),l=isNaN(o)?1:Math.max(Math.min(-1*Math.floor(o),20),0),r={notation:n,minimumFractionDigits:l,maximumFractionDigits:l};return Object.assign(r,this.options.ticks.format),hn(e,i,r)},logarithmic(e,t,s){if(0===e)return"0";const i=s[t].significand||e/Math.pow(10,Math.floor(fi(e)));return[1,2,3,5,10,15].includes(i)||t>.8*s.length?un.numeric.call(this,e,t,s):""}};function pn(e,t){let s=t.length>3?t[2].value-t[1].value:t[1].value-t[0].value;return Math.abs(s)>=1&&e!==Math.floor(e)&&(s=e-Math.floor(e)),s}var gn={formatters:un};function fn(e){e.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(e,t)=>t.lineWidth,tickColor:(e,t)=>t.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:gn.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),e.route("scale.ticks","color","","color"),e.route("scale.grid","color","","borderColor"),e.route("scale.border","color","","borderColor"),e.route("scale.title","color","","color"),e.describe("scale",{_fallback:!1,_scriptable:e=>!e.startsWith("before")&&!e.startsWith("after")&&"callback"!==e&&"parser"!==e,_indexable:e=>"borderDash"!==e&&"tickBorderDash"!==e&&"dash"!==e}),e.describe("scales",{_fallback:"scale"}),e.describe("scale.ticks",{_scriptable:e=>"backdropPadding"!==e&&"callback"!==e,_indexable:e=>"backdropPadding"!==e})}const mn=Object.create(null),bn=Object.create(null);function yn(e,t){if(!t)return e;const s=t.split(".");for(let i=0,n=s.length;ie.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(e,t)=>nn(t.backgroundColor),this.hoverBorderColor=(e,t)=>nn(t.borderColor),this.hoverColor=(e,t)=>nn(t.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(e),this.apply(t)}set(e,t){return xn(this,e,t)}get(e){return yn(this,e)}describe(e,t){return xn(bn,e,t)}override(e,t){return xn(mn,e,t)}route(e,t,s,i){const n=yn(this,e),a=yn(this,s),o="_"+t;Object.defineProperties(n,{[o]:{value:n[t],writable:!0},[t]:{enumerable:!0,get(){const e=this[o],t=a[i];return Us(e)?Object.assign({},t,e):Ws(e,t)},set(e){this[o]=e}}})}apply(e){e.forEach(e=>e(this))}}var kn=new vn({_scriptable:e=>!e.startsWith("on"),_indexable:e=>"events"!==e,hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[ln,rn,fn]);function _n(e){return!e||Es(e.size)||Es(e.family)?null:(e.style?e.style+" ":"")+(e.weight?e.weight+" ":"")+e.size+"px "+e.family}function wn(e,t,s,i,n){let a=t[n];return a||(a=t[n]=e.measureText(n).width,s.push(n)),a>i&&(i=a),i}function Cn(e,t,s,i){i=i||{};let n=i.data=i.data||{},a=i.garbageCollect=i.garbageCollect||[];i.font!==t&&(n=i.data={},a=i.garbageCollect=[],i.font=t),e.save(),e.font=t;let o=0;const l=s.length;let r,c,d,h,u;for(r=0;rs.length){for(r=0;r0&&e.stroke()}}function Pn(e,t,s){return s=s||.5,!t||e&&e.x>t.left-s&&e.xt.top-s&&e.y0&&""!==a.strokeColor;let r,c;for(e.save(),e.font=n.string,Vn(e,a),r=0;r+e||0;function Nn(e,t){const s={},i=Us(t),n=i?Object.keys(t):t,a=Us(e)?i?s=>Ws(e[s],e[t[s]]):t=>e[t]:()=>e;for(const o of n)s[o]=zn(a(o));return s}function jn(e){return Nn(e,{top:"y",right:"x",bottom:"y",left:"x"})}function Hn(e){return Nn(e,["topLeft","topRight","bottomLeft","bottomRight"])}function qn(e){const t=jn(e);return t.width=t.left+t.right,t.height=t.top+t.bottom,t}function Xn(e,t){e=e||{},t=t||kn.font;let s=Ws(e.size,t.size);"string"===typeof s&&(s=parseInt(s,10));let i=Ws(e.style,t.style);i&&!(""+i).match(Wn)&&(console.warn('Invalid font style specified: "'+i+'"'),i=void 0);const n={family:Ws(e.family,t.family),lineHeight:Bn(Ws(e.lineHeight,t.lineHeight),s),size:s,style:i,weight:Ws(e.weight,t.weight),string:""};return n.string=_n(n),n}function Kn(e,t,s,i){let n,a,o,l=!0;for(n=0,a=e.length;ns&&0===e?0:e+t;return{min:o(i,-Math.abs(a)),max:o(n,a)}}function Yn(e,t){return Object.assign(Object.create(e),t)}function Gn(e,t=[""],s,i,n=()=>e[0]){const a=s||e;"undefined"===typeof i&&(i=pa("_fallback",e));const o={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:e,_rootScopes:a,_fallback:i,_getTarget:n,override:s=>Gn([s,...e],t,a,i)};return new Proxy(o,{deleteProperty(t,s){return delete t[s],delete t._keys,delete e[0][s],!0},get(s,i){return sa(s,i,()=>ua(i,t,e,s))},getOwnPropertyDescriptor(e,t){return Reflect.getOwnPropertyDescriptor(e._scopes[0],t)},getPrototypeOf(){return Reflect.getPrototypeOf(e[0])},has(e,t){return ga(e).includes(t)},ownKeys(e){return ga(e)},set(e,t,s){const i=e._storage||(e._storage=n());return e[t]=i[t]=s,delete e._keys,!0}})}function Jn(e,t,s,i){const n={_cacheable:!1,_proxy:e,_context:t,_subProxy:s,_stack:new Set,_descriptors:Zn(e,i),setContext:t=>Jn(e,t,s,i),override:n=>Jn(e.override(n),t,s,i)};return new Proxy(n,{deleteProperty(t,s){return delete t[s],delete e[s],!0},get(e,t,s){return sa(e,t,()=>ia(e,t,s))},getOwnPropertyDescriptor(t,s){return t._descriptors.allKeys?Reflect.has(e,s)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(e,s)},getPrototypeOf(){return Reflect.getPrototypeOf(e)},has(t,s){return Reflect.has(e,s)},ownKeys(){return Reflect.ownKeys(e)},set(t,s,i){return e[s]=i,delete t[s],!0}})}function Zn(e,t={scriptable:!0,indexable:!0}){const{_scriptable:s=t.scriptable,_indexable:i=t.indexable,_allKeys:n=t.allKeys}=e;return{allKeys:n,scriptable:s,indexable:i,isScriptable:ni(s)?s:()=>s,isIndexable:ni(i)?i:()=>i}}const ea=(e,t)=>e?e+si(t):t,ta=(e,t)=>Us(t)&&"adapters"!==e&&(null===Object.getPrototypeOf(t)||t.constructor===Object);function sa(e,t,s){if(Object.prototype.hasOwnProperty.call(e,t)||"constructor"===t)return e[t];const i=s();return e[t]=i,i}function ia(e,t,s){const{_proxy:i,_context:n,_subProxy:a,_descriptors:o}=e;let l=i[t];return ni(l)&&o.isScriptable(t)&&(l=na(t,l,e,s)),Is(l)&&l.length&&(l=aa(t,l,e,o.isIndexable)),ta(t,l)&&(l=Jn(l,n,a&&a[t],o)),l}function na(e,t,s,i){const{_proxy:n,_context:a,_subProxy:o,_stack:l}=s;if(l.has(e))throw new Error("Recursion detected: "+Array.from(l).join("->")+"->"+e);l.add(e);let r=t(a,o||i);return l.delete(e),ta(e,r)&&(r=ca(n._scopes,n,e,r)),r}function aa(e,t,s,i){const{_proxy:n,_context:a,_subProxy:o,_descriptors:l}=s;if("undefined"!==typeof a.index&&i(e))return t[a.index%t.length];if(Us(t[0])){const s=t,i=n._scopes.filter(e=>e!==s);t=[];for(const r of s){const s=ca(i,n,e,r);t.push(Jn(s,a,o&&o[e],l))}}return t}function oa(e,t,s){return ni(e)?e(t,s):e}const la=(e,t)=>!0===e?t:"string"===typeof e?ti(t,e):void 0;function ra(e,t,s,i,n){for(const a of t){const t=la(s,a);if(t){e.add(t);const a=oa(t._fallback,s,n);if("undefined"!==typeof a&&a!==s&&a!==i)return a}else if(!1===t&&"undefined"!==typeof i&&s!==i)return null}return!1}function ca(e,t,s,i){const n=t._rootScopes,a=oa(t._fallback,s,i),o=[...e,...n],l=new Set;l.add(i);let r=da(l,o,s,a||s,i);return null!==r&&(("undefined"===typeof a||a===s||(r=da(l,o,a,r,i),null!==r))&&Gn(Array.from(l),[""],n,a,()=>ha(t,s,i)))}function da(e,t,s,i,n){while(s)s=ra(e,t,s,i,n);return s}function ha(e,t,s){const i=e._getTarget();t in i||(i[t]={});const n=i[t];return Is(n)&&Us(s)?s:n||{}}function ua(e,t,s,i){let n;for(const a of t)if(n=pa(ea(a,e),s),"undefined"!==typeof n)return ta(e,n)?ca(s,i,e,n):n}function pa(e,t){for(const s of t){if(!s)continue;const t=s[e];if("undefined"!==typeof t)return t}}function ga(e){let t=e._keys;return t||(t=e._keys=fa(e._scopes)),t}function fa(e){const t=new Set;for(const s of e)for(const e of Object.keys(s).filter(e=>!e.startsWith("_")))t.add(e);return Array.from(t)}function ma(e,t,s,i){const{iScale:n}=e,{key:a="r"}=this._parsing,o=new Array(i);let l,r,c,d;for(l=0,r=i;lt"x"===e?"y":"x";function va(e,t,s,i){const n=e.skip?t:e,a=t,o=s.skip?t:s,l=Mi(a,n),r=Mi(o,a);let c=l/(l+r),d=r/(l+r);c=isNaN(c)?0:c,d=isNaN(d)?0:d;const h=i*c,u=i*d;return{previous:{x:a.x-h*(o.x-n.x),y:a.y-h*(o.y-n.y)},next:{x:a.x+u*(o.x-n.x),y:a.y+u*(o.y-n.y)}}}function ka(e,t,s){const i=e.length;let n,a,o,l,r,c=ya(e,0);for(let d=0;d!e.skip)),"monotone"===t.cubicInterpolationMode)wa(e,n);else{let s=i?e[e.length-1]:e[0];for(a=0,o=e.length;ae.ownerDocument.defaultView.getComputedStyle(e,null);function Aa(e,t){return Da(e).getPropertyValue(t)}const $a=["top","right","bottom","left"];function La(e,t,s){const i={};s=s?"-"+s:"";for(let n=0;n<4;n++){const a=$a[n];i[a]=parseFloat(e[t+"-"+a+s])||0}return i.width=i.left+i.right,i.height=i.top+i.bottom,i}const Va=(e,t,s)=>(e>0||t>0)&&(!s||!s.shadowRoot);function Ea(e,t){const s=e.touches,i=s&&s.length?s[0]:e,{offsetX:n,offsetY:a}=i;let o,l,r=!1;if(Va(n,a,e.target))o=n,l=a;else{const e=t.getBoundingClientRect();o=i.clientX-e.left,l=i.clientY-e.top,r=!0}return{x:o,y:l,box:r}}function Ia(e,t){if("native"in e)return e;const{canvas:s,currentDevicePixelRatio:i}=t,n=Da(s),a="border-box"===n.boxSizing,o=La(n,"padding"),l=La(n,"border","width"),{x:r,y:c,box:d}=Ea(e,s),h=o.left+(d&&l.left),u=o.top+(d&&l.top);let{width:p,height:g}=t;return a&&(p-=o.width+l.width,g-=o.height+l.height),{x:Math.round((r-h)/p*s.width/i),y:Math.round((c-u)/g*s.height/i)}}function Ua(e,t,s){let i,n;if(void 0===t||void 0===s){const a=e&&Ma(e);if(a){const e=a.getBoundingClientRect(),o=Da(a),l=La(o,"border","width"),r=La(o,"padding");t=e.width-r.width-l.width,s=e.height-r.height-l.height,i=Pa(o.maxWidth,a,"clientWidth"),n=Pa(o.maxHeight,a,"clientHeight")}else t=e.clientWidth,s=e.clientHeight}return{width:t,height:s,maxWidth:i||di,maxHeight:n||di}}const Oa=e=>Math.round(10*e)/10;function Ra(e,t,s,i){const n=Da(e),a=La(n,"margin"),o=Pa(n.maxWidth,e,"clientWidth")||di,l=Pa(n.maxHeight,e,"clientHeight")||di,r=Ua(e,t,s);let{width:c,height:d}=r;if("content-box"===n.boxSizing){const e=La(n,"border","width"),t=La(n,"padding");c-=t.width+e.width,d-=t.height+e.height}c=Math.max(0,c-a.width),d=Math.max(0,i?c/i:d-a.height),c=Oa(Math.min(c,o,r.maxWidth)),d=Oa(Math.min(d,l,r.maxHeight)),c&&!d&&(d=Oa(c/2));const h=void 0!==t||void 0!==s;return h&&i&&r.height&&d>r.height&&(d=r.height,c=Oa(Math.floor(d*i))),{width:c,height:d}}function Wa(e,t,s){const i=t||1,n=Oa(e.height*i),a=Oa(e.width*i);e.height=Oa(e.height),e.width=Oa(e.width);const o=e.canvas;return o.style&&(s||!o.style.height&&!o.style.width)&&(o.style.height=`${e.height}px`,o.style.width=`${e.width}px`),(e.currentDevicePixelRatio!==i||o.height!==n||o.width!==a)&&(e.currentDevicePixelRatio=i,o.height=n,o.width=a,e.ctx.setTransform(i,0,0,i,0,0),!0)}const Ba=function(){let e=!1;try{const t={get passive(){return e=!0,!1}};Ta()&&(window.addEventListener("test",null,t),window.removeEventListener("test",null,t))}catch(t){}return e}();function za(e,t){const s=Aa(e,t),i=s&&s.match(/^(\d+)(\.\d+)?px$/);return i?+i[1]:void 0}function Na(e,t,s,i){return{x:e.x+s*(t.x-e.x),y:e.y+s*(t.y-e.y)}}function ja(e,t,s,i){return{x:e.x+s*(t.x-e.x),y:"middle"===i?s<.5?e.y:t.y:"after"===i?s<1?e.y:t.y:s>0?t.y:e.y}}function Ha(e,t,s,i){const n={x:e.cp2x,y:e.cp2y},a={x:t.cp1x,y:t.cp1y},o=Na(e,n,s),l=Na(n,a,s),r=Na(a,t,s),c=Na(o,l,s),d=Na(l,r,s);return Na(c,d,s)}const qa=function(e,t){return{x(s){return e+e+t-s},setWidth(e){t=e},textAlign(e){return"center"===e?e:"right"===e?"left":"right"},xPlus(e,t){return e-t},leftForLtr(e,t){return e-t}}},Xa=function(){return{x(e){return e},setWidth(e){},textAlign(e){return e},xPlus(e,t){return e+t},leftForLtr(e,t){return e}}};function Ka(e,t,s){return e?qa(t,s):Xa()}function Qa(e,t){let s,i;"ltr"!==t&&"rtl"!==t||(s=e.canvas.style,i=[s.getPropertyValue("direction"),s.getPropertyPriority("direction")],s.setProperty("direction",t,"important"),e.prevTextDirection=i)}function Ya(e,t){void 0!==t&&(delete e.prevTextDirection,e.canvas.style.setProperty("direction",t[0],t[1]))}function Ga(e){return"angle"===e?{between:Ai,compare:Pi,normalize:Di}:{between:Vi,compare:(e,t)=>e-t,normalize:e=>e}}function Ja({start:e,end:t,count:s,loop:i,style:n}){return{start:e%s,end:t%s,loop:i&&(t-e+1)%s===0,style:n}}function Za(e,t,s){const{property:i,start:n,end:a}=s,{between:o,normalize:l}=Ga(i),r=t.length;let c,d,{start:h,end:u,loop:p}=e;if(p){for(h+=r,u+=r,c=0,d=r;cr(n,b,f)&&0!==l(n,b),k=()=>0===l(a,f)||r(a,b,f),_=()=>y||v(),w=()=>!y||k();for(let C=d,S=d;C<=h;++C)m=t[C%o],m.skip||(f=c(m[i]),f!==b&&(y=r(f,n,a),null===x&&_()&&(x=0===l(f,n)?C:S),null!==x&&w()&&(g.push(Ja({start:x,end:C,loop:u,count:o,style:p})),x=null),S=C,b=f));return null!==x&&g.push(Ja({start:x,end:h,loop:u,count:o,style:p})),g}function to(e,t){const s=[],i=e.segments;for(let n=0;nn&&e[a%t].skip)a--;return a%=t,{start:n,end:a}}function io(e,t,s,i){const n=e.length,a=[];let o,l=t,r=e[t];for(o=t+1;o<=s;++o){const s=e[o%n];s.skip||s.stop?r.skip||(i=!1,a.push({start:t%n,end:(o-1)%n,loop:i}),t=l=s.stop?o:null):(l=o,r.skip&&(t=o)),r=s}return null!==l&&a.push({start:t%n,end:l%n,loop:i}),a}function no(e,t){const s=e.points,i=e.options.spanGaps,n=s.length;if(!n)return[];const a=!!e._loop,{start:o,end:l}=so(s,n,a,i);if(!0===i)return ao(e,[{start:o,end:l,loop:a}],s,t);const r=li({chart:e,initial:t.initial,numSteps:a,currentStep:Math.min(s-t.start,a)}))}_refresh(){this._request||(this._running=!0,this._request=Ni.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(e=Date.now()){let t=0;this._charts.forEach((s,i)=>{if(!s.running||!s.items.length)return;const n=s.items;let a,o=n.length-1,l=!1;for(;o>=0;--o)a=n[o],a._active?(a._total>s.duration&&(s.duration=a._total),a.tick(e),l=!0):(n[o]=n[n.length-1],n.pop());l&&(i.draw(),this._notify(i,s,e,"progress")),n.length||(s.running=!1,this._notify(i,s,e,"complete"),s.initial=!1),t+=n.length}),this._lastDate=e,0===t&&(this._running=!1)}_getAnims(e){const t=this._charts;let s=t.get(e);return s||(s={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},t.set(e,s)),s}listen(e,t,s){this._getAnims(e).listeners[t].push(s)}add(e,t){t&&t.length&&this._getAnims(e).items.push(...t)}has(e){return this._getAnims(e).items.length>0}start(e){const t=this._charts.get(e);t&&(t.running=!0,t.start=Date.now(),t.duration=t.items.reduce((e,t)=>Math.max(e,t._duration),0),this._refresh())}running(e){if(!this._running)return!1;const t=this._charts.get(e);return!!(t&&t.running&&t.items.length)}stop(e){const t=this._charts.get(e);if(!t||!t.items.length)return;const s=t.items;let i=s.length-1;for(;i>=0;--i)s[i].cancel();t.items=[],this._notify(e,t,Date.now(),"complete")}remove(e){return this._charts.delete(e)}}var go=new po;const fo="transparent",mo={boolean(e,t,s){return s>.5?t:e},color(e,t,s){const i=sn(e||fo),n=i.valid&&sn(t||fo);return n&&n.valid?n.mix(i,s).hexString():t},number(e,t,s){return e+(t-e)*s}};class bo{constructor(e,t,s,i){const n=t[s];i=Kn([e.to,i,n,e.from]);const a=Kn([e.from,n,i]);this._active=!0,this._fn=e.fn||mo[e.type||typeof a],this._easing=en[e.easing]||en.linear,this._start=Math.floor(Date.now()+(e.delay||0)),this._duration=this._total=Math.floor(e.duration),this._loop=!!e.loop,this._target=t,this._prop=s,this._from=a,this._to=i,this._promises=void 0}active(){return this._active}update(e,t,s){if(this._active){this._notify(!1);const i=this._target[this._prop],n=s-this._start,a=this._duration-n;this._start=s,this._duration=Math.floor(Math.max(a,e.duration)),this._total+=n,this._loop=!!e.loop,this._to=Kn([e.to,t,i,e.from]),this._from=Kn([e.from,i,t])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(e){const t=e-this._start,s=this._duration,i=this._prop,n=this._from,a=this._loop,o=this._to;let l;if(this._active=n!==o&&(a||t1?2-l:l,l=this._easing(Math.min(1,Math.max(0,l))),this._target[i]=this._fn(n,o,l))}wait(){const e=this._promises||(this._promises=[]);return new Promise((t,s)=>{e.push({res:t,rej:s})})}_notify(e){const t=e?"res":"rej",s=this._promises||[];for(let i=0;i{const n=e[i];if(!Us(n))return;const a={};for(const e of t)a[e]=n[e];(Is(n.properties)&&n.properties||[i]).forEach(e=>{e!==i&&s.has(e)||s.set(e,a)})})}_animateOptions(e,t){const s=t.options,i=vo(e,s);if(!i)return[];const n=this._createAnimations(i,s);return s.$shared&&xo(e.options.$animations,s).then(()=>{e.options=s},()=>{}),n}_createAnimations(e,t){const s=this._properties,i=[],n=e.$animations||(e.$animations={}),a=Object.keys(t),o=Date.now();let l;for(l=a.length-1;l>=0;--l){const r=a[l];if("$"===r.charAt(0))continue;if("options"===r){i.push(...this._animateOptions(e,t));continue}const c=t[r];let d=n[r];const h=s.get(r);if(d){if(h&&d.active()){d.update(h,c,o);continue}d.cancel()}h&&h.duration?(n[r]=d=new bo(h,e,r,c),i.push(d)):e[r]=c}return i}update(e,t){if(0===this._properties.size)return void Object.assign(e,t);const s=this._createAnimations(e,t);return s.length?(go.add(this._chart,s),!0):void 0}}function xo(e,t){const s=[],i=Object.keys(t);for(let n=0;n0||!s&&t<0)return n.index}return null}function $o(e,t){const{chart:s,_cachedMeta:i}=e,n=s._stacks||(s._stacks={}),{iScale:a,vScale:o,index:l}=i,r=a.axis,c=o.axis,d=Mo(a,o,i),h=t.length;let u;for(let p=0;ps[e].axis===t).shift()}function Vo(e,t){return Yn(e,{active:!1,dataset:void 0,datasetIndex:t,index:t,mode:"default",type:"dataset"})}function Eo(e,t,s){return Yn(e,{active:!1,dataIndex:t,parsed:void 0,raw:void 0,element:s,index:t,mode:"default",type:"data"})}function Io(e,t){const s=e.controller.index,i=e.vScale&&e.vScale.axis;if(i){t=t||e._parsed;for(const e of t){const t=e._stacks;if(!t||void 0===t[i]||void 0===t[i][s])return;delete t[i][s],void 0!==t[i]._visualValues&&void 0!==t[i]._visualValues[s]&&delete t[i]._visualValues[s]}}}const Uo=e=>"reset"===e||"none"===e,Oo=(e,t)=>t?e:Object.assign({},e),Ro=(e,t,s)=>e&&!t.hidden&&t._stacked&&{keys:Co(s,!0),values:null};class Wo{constructor(e,t){this.chart=e,this._ctx=e.ctx,this.index=t,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const e=this._cachedMeta;this.configure(),this.linkScales(),e._stacked=To(e.vScale,e),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(e){this.index!==e&&Io(this._cachedMeta),this.index=e}linkScales(){const e=this.chart,t=this._cachedMeta,s=this.getDataset(),i=(e,t,s,i)=>"x"===e?t:"r"===e?i:s,n=t.xAxisID=Ws(s.xAxisID,Lo(e,"x")),a=t.yAxisID=Ws(s.yAxisID,Lo(e,"y")),o=t.rAxisID=Ws(s.rAxisID,Lo(e,"r")),l=t.indexAxis,r=t.iAxisID=i(l,n,a,o),c=t.vAxisID=i(l,a,n,o);t.xScale=this.getScaleForId(n),t.yScale=this.getScaleForId(a),t.rScale=this.getScaleForId(o),t.iScale=this.getScaleForId(r),t.vScale=this.getScaleForId(c)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(e){return this.chart.scales[e]}_getOtherScale(e){const t=this._cachedMeta;return e===t.iScale?t.vScale:t.iScale}reset(){this._update("reset")}_destroy(){const e=this._cachedMeta;this._data&&Bi(this._data,this),e._stacked&&Io(e)}_dataCheck(){const e=this.getDataset(),t=e.data||(e.data=[]),s=this._data;if(Us(t)){const e=this._cachedMeta;this._data=Fo(t,e)}else if(s!==t){if(s){Bi(s,this);const e=this._cachedMeta;Io(e),e._parsed=[]}t&&Object.isExtensible(t)&&Wi(t,this),this._syncList=[],this._data=t}}addElements(){const e=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(e.dataset=new this.datasetElementType)}buildOrUpdateElements(e){const t=this._cachedMeta,s=this.getDataset();let i=!1;this._dataCheck();const n=t._stacked;t._stacked=To(t.vScale,t),t.stack!==s.stack&&(i=!0,Io(t),t.stack=s.stack),this._resyncElements(e),(i||n!==t._stacked)&&($o(this,t._parsed),t._stacked=To(t.vScale,t))}configure(){const e=this.chart.config,t=e.datasetScopeKeys(this._type),s=e.getOptionScopes(this.getDataset(),t,!0);this.options=e.createResolver(s,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(e,t){const{_cachedMeta:s,_data:i}=this,{iScale:n,_stacked:a}=s,o=n.axis;let l,r,c,d=0===e&&t===i.length||s._sorted,h=e>0&&s._parsed[e-1];if(!1===this._parsing)s._parsed=i,s._sorted=!0,c=i;else{c=Is(i[e])?this.parseArrayData(s,i,e,t):Us(i[e])?this.parseObjectData(s,i,e,t):this.parsePrimitiveData(s,i,e,t);const n=()=>null===r[o]||h&&r[o]t||d=0;--h)if(!p()){this.updateRangeFromParsed(r,e,u,l);break}return r}getAllParsedValues(e){const t=this._cachedMeta._parsed,s=[];let i,n,a;for(i=0,n=t.length;i=0&&ethis.getContext(s,i,t),g=r.resolveNamedOptions(h,u,p,d);return g.$shared&&(g.$shared=l,n[a]=Object.freeze(Oo(g,l))),g}_resolveAnimations(e,t,s){const i=this.chart,n=this._cachedDataOpts,a=`animation-${t}`,o=n[a];if(o)return o;let l;if(!1!==i.options.animation){const i=this.chart.config,n=i.datasetAnimationScopeKeys(this._type,t),a=i.getOptionScopes(this.getDataset(),n);l=i.createResolver(a,this.getContext(e,s,t))}const r=new yo(i,l&&l.animations);return l&&l._cacheable&&(n[a]=Object.freeze(r)),r}getSharedOptions(e){if(e.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},e))}includeOptions(e,t){return!t||Uo(e)||this.chart._animationsDisabled}_getSharedOptions(e,t){const s=this.resolveDataElementOptions(e,t),i=this._sharedOptions,n=this.getSharedOptions(s),a=this.includeOptions(t,n)||n!==i;return this.updateSharedOptions(n,t,s),{sharedOptions:n,includeOptions:a}}updateElement(e,t,s,i){Uo(i)?Object.assign(e,s):this._resolveAnimations(t,i).update(e,s)}updateSharedOptions(e,t,s){e&&!Uo(t)&&this._resolveAnimations(void 0,t).update(e,s)}_setStyle(e,t,s,i){e.active=i;const n=this.getStyle(t,i);this._resolveAnimations(t,s,i).update(e,{options:!i&&this.getSharedOptions(n)||n})}removeHoverStyle(e,t,s){this._setStyle(e,s,"active",!1)}setHoverStyle(e,t,s){this._setStyle(e,s,"active",!0)}_removeDatasetHoverStyle(){const e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,"active",!1)}_setDatasetHoverStyle(){const e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,"active",!0)}_resyncElements(e){const t=this._data,s=this._cachedMeta.data;for(const[o,l,r]of this._syncList)this[o](l,r);this._syncList=[];const i=s.length,n=t.length,a=Math.min(n,i);a&&this.parse(0,a),n>i?this._insertElements(i,n-i,e):n{for(e.length+=t,o=e.length-1;o>=a;o--)e[o]=e[o-t]};for(l(n),o=e;oe-t))}return e._cache.$bar}function zo(e){const t=e.iScale,s=Bo(t,e.type);let i,n,a,o,l=t._length;const r=()=>{32767!==a&&-32768!==a&&(ii(o)&&(l=Math.min(l,Math.abs(a-o)||l)),o=a)};for(i=0,n=s.length;i0?n[e-1]:null,l=eMath.abs(l)&&(r=l,c=o),t[s.axis]=c,t._custom={barStart:r,barEnd:c,start:n,end:a,min:o,max:l}}function qo(e,t,s,i){return Is(e)?Ho(e,t,s,i):t[s.axis]=s.parse(e,i),t}function Xo(e,t,s,i){const n=e.iScale,a=e.vScale,o=n.getLabels(),l=n===a,r=[];let c,d,h,u;for(c=s,d=s+i;c=s?1:-1)}function Yo(e){let t,s,i,n,a;return e.horizontal?(t=e.base>e.x,s="left",i="right"):(t=e.basee.controller.options.grouped),n=s.options.stacked,a=[],o=this._cachedMeta.controller.getParsed(t),l=o&&o[s.axis],r=e=>{const t=e._parsed.find(e=>e[s.axis]===l),i=t&&t[e.vScale.axis];if(Es(i)||isNaN(i))return!0};for(const c of i)if((void 0===t||!r(c))&&((!1===n||-1===a.indexOf(c.stack)||void 0===n&&void 0===c.stack)&&a.push(c.stack),c.index===e))break;return a.length||a.push(void 0),a}_getStackCount(e){return this._getStacks(void 0,e).length}_getAxisCount(){return this._getAxis().length}getFirstScaleIdForIndexAxis(){const e=this.chart.scales,t=this.chart.options.indexAxis;return Object.keys(e).filter(s=>e[s].axis===t).shift()}_getAxis(){const e={},t=this.getFirstScaleIdForIndexAxis();for(const s of this.chart.data.datasets)e[Ws("x"===this.chart.options.indexAxis?s.xAxisID:s.yAxisID,t)]=!0;return Object.keys(e)}_getStackIndex(e,t,s){const i=this._getStacks(e,s),n=void 0!==t?i.indexOf(t):-1;return-1===n?i.length-1:n}_getRuler(){const e=this.options,t=this._cachedMeta,s=t.iScale,i=[];let n,a;for(n=0,a=t.data.length;n=0;--s)t=Math.max(t,e[s].size(this.resolveDataElementOptions(s))/2);return t>0&&t}getLabelAndValue(e){const t=this._cachedMeta,s=this.chart.data.labels||[],{xScale:i,yScale:n}=t,a=this.getParsed(e),o=i.getLabelForValue(a.x),l=n.getLabelForValue(a.y),r=a._custom;return{label:s[e]||"",value:"("+o+", "+l+(r?", "+r:"")+")"}}update(e){const t=this._cachedMeta.data;this.updateElements(t,0,t.length,e)}updateElements(e,t,s,i){const n="reset"===i,{iScale:a,vScale:o}=this._cachedMeta,{sharedOptions:l,includeOptions:r}=this._getSharedOptions(t,i),c=a.axis,d=o.axis;for(let h=t;hAi(e,l,r,!0)?1:Math.max(t,t*s,i,i*s),g=(e,t,i)=>Ai(e,l,r,!0)?-1:Math.min(t,t*s,i,i*s),f=p(0,c,h),m=p(ui,d,u),b=g(li,c,h),y=g(li+ui,d,u);i=(f-b)/2,n=(m-y)/2,a=-(f+b)/2,o=-(m+y)/2}return{ratioX:i,ratioY:n,offsetX:a,offsetY:o}}(0,Bt.A)(il,"id","bubble"),(0,Bt.A)(il,"defaults",{datasetElementType:!1,dataElementType:"point",animations:{numbers:{type:"number",properties:["x","y","borderWidth","radius"]}}}),(0,Bt.A)(il,"overrides",{scales:{x:{type:"linear"},y:{type:"linear"}}});class al extends Wo{constructor(e,t){super(e,t),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(e,t){const s=this.getDataset().data,i=this._cachedMeta;if(!1===this._parsing)i._parsed=s;else{let n,a,o=e=>+s[e];if(Us(s[e])){const{key:e="value"}=this._parsing;o=t=>+ti(s[t],e)}for(n=e,a=e+t;n0&&!isNaN(e)?ri*(Math.abs(e)/t):0}getLabelAndValue(e){const t=this._cachedMeta,s=this.chart,i=s.data.labels||[],n=hn(t._parsed[e],s.options.locale);return{label:i[e]||"",value:n}}getMaxBorderWidth(e){let t=0;const s=this.chart;let i,n,a,o,l;if(!e)for(i=0,n=s.data.datasets.length;i"spacing"!==e,_indexable:e=>"spacing"!==e&&!e.startsWith("borderDash")&&!e.startsWith("hoverBorderDash")}),(0,Bt.A)(al,"overrides",{aspectRatio:1,plugins:{legend:{labels:{generateLabels(e){const t=e.data,{labels:{pointStyle:s,textAlign:i,color:n,useBorderRadius:a,borderRadius:o}}=e.legend.options;return t.labels.length&&t.datasets.length?t.labels.map((t,l)=>{const r=e.getDatasetMeta(0),c=r.controller.getStyle(l);return{text:t,fillStyle:c.backgroundColor,fontColor:n,hidden:!e.getDataVisibility(l),lineDash:c.borderDash,lineDashOffset:c.borderDashOffset,lineJoin:c.borderJoinStyle,lineWidth:c.borderWidth,strokeStyle:c.borderColor,textAlign:i,pointStyle:s,borderRadius:a&&(o||c.borderRadius),index:l}}):[]}},onClick(e,t,s){s.chart.toggleDataVisibility(t.index),s.chart.update()}}}});class ol extends Wo{initialize(){this.enableOptionSharing=!0,this.supportsDecimation=!0,super.initialize()}update(e){const t=this._cachedMeta,{dataset:s,data:i=[],_dataset:n}=t,a=this.chart._animationsDisabled;let{start:o,count:l}=Qi(t,i,a);this._drawStart=o,this._drawCount=l,Yi(t)&&(o=0,l=i.length),s._chart=this.chart,s._datasetIndex=this.index,s._decimated=!!n._decimated,s.points=i;const r=this.resolveDatasetElementOptions(e);this.options.showLine||(r.borderWidth=0),r.segment=this.options.segment,this.updateElement(s,void 0,{animated:!a,options:r},e),this.updateElements(i,o,l,e)}updateElements(e,t,s,i){const n="reset"===i,{iScale:a,vScale:o,_stacked:l,_dataset:r}=this._cachedMeta,{sharedOptions:c,includeOptions:d}=this._getSharedOptions(t,i),h=a.axis,u=o.axis,{spanGaps:p,segment:g}=this.options,f=ki(p)?p:Number.POSITIVE_INFINITY,m=this.chart._animationsDisabled||n||"none"===i,b=t+s,y=e.length;let x=t>0&&this.getParsed(t-1);for(let v=0;v=b){p.skip=!0;continue}const y=this.getParsed(v),k=Es(y[u]),_=p[h]=a.getPixelForValue(y[h],v),w=p[u]=n||k?o.getBasePixel():o.getPixelForValue(l?this.applyStack(o,y,l):y[u],v);p.skip=isNaN(_)||isNaN(w)||k,p.stop=v>0&&Math.abs(y[h]-x[h])>f,g&&(p.parsed=y,p.raw=r.data[v]),d&&(p.options=c||this.resolveDataElementOptions(v,s.active?"active":i)),m||this.updateElement(s,v,p,i),x=y}}getMaxOverflow(){const e=this._cachedMeta,t=e.dataset,s=t.options&&t.options.borderWidth||0,i=e.data||[];if(!i.length)return s;const n=i[0].size(this.resolveDataElementOptions(0)),a=i[i.length-1].size(this.resolveDataElementOptions(i.length-1));return Math.max(s,n,a)/2}draw(){const e=this._cachedMeta;e.dataset.updateControlPoints(this.chart.chartArea,e.iScale.axis),super.draw()}}(0,Bt.A)(ol,"id","line"),(0,Bt.A)(ol,"defaults",{datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1}),(0,Bt.A)(ol,"overrides",{scales:{_index_:{type:"category"},_value_:{type:"linear"}}});class ll extends Wo{constructor(e,t){super(e,t),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(e){const t=this._cachedMeta,s=this.chart,i=s.data.labels||[],n=hn(t._parsed[e].r,s.options.locale);return{label:i[e]||"",value:n}}parseObjectData(e,t,s,i){return ma.bind(this)(e,t,s,i)}update(e){const t=this._cachedMeta.data;this._updateRadius(),this.updateElements(t,0,t.length,e)}getMinMax(){const e=this._cachedMeta,t={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};return e.data.forEach((e,s)=>{const i=this.getParsed(s).r;!isNaN(i)&&this.chart.getDataVisibility(s)&&(it.max&&(t.max=i))}),t}_updateRadius(){const e=this.chart,t=e.chartArea,s=e.options,i=Math.min(t.right-t.left,t.bottom-t.top),n=Math.max(i/2,0),a=Math.max(s.cutoutPercentage?n/100*s.cutoutPercentage:1,0),o=(n-a)/e.getVisibleDatasetCount();this.outerRadius=n-o*this.index,this.innerRadius=this.outerRadius-o}updateElements(e,t,s,i){const n="reset"===i,a=this.chart,o=a.options,l=o.animation,r=this._cachedMeta.rScale,c=r.xCenter,d=r.yCenter,h=r.getIndexAngle(0)-.5*li;let u,p=h;const g=360/this.countVisibleElements();for(u=0;u{!isNaN(this.getParsed(s).r)&&this.chart.getDataVisibility(s)&&t++}),t}_computeAngle(e,t,s){return this.chart.getDataVisibility(e)?Ci(this.resolveDataElementOptions(e,t).angle||s):0}}(0,Bt.A)(ll,"id","polarArea"),(0,Bt.A)(ll,"defaults",{dataElementType:"arc",animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:"number",properties:["x","y","startAngle","endAngle","innerRadius","outerRadius"]}},indexAxis:"r",startAngle:0}),(0,Bt.A)(ll,"overrides",{aspectRatio:1,plugins:{legend:{labels:{generateLabels(e){const t=e.data;if(t.labels.length&&t.datasets.length){const{labels:{pointStyle:s,color:i}}=e.legend.options;return t.labels.map((t,n)=>{const a=e.getDatasetMeta(0),o=a.controller.getStyle(n);return{text:t,fillStyle:o.backgroundColor,strokeStyle:o.borderColor,fontColor:i,lineWidth:o.borderWidth,pointStyle:s,hidden:!e.getDataVisibility(n),index:n}})}return[]}},onClick(e,t,s){s.chart.toggleDataVisibility(t.index),s.chart.update()}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}});class rl extends al{}(0,Bt.A)(rl,"id","pie"),(0,Bt.A)(rl,"defaults",{cutout:0,rotation:0,circumference:360,radius:"100%"});class cl extends Wo{getLabelAndValue(e){const t=this._cachedMeta.vScale,s=this.getParsed(e);return{label:t.getLabels()[e],value:""+t.getLabelForValue(s[t.axis])}}parseObjectData(e,t,s,i){return ma.bind(this)(e,t,s,i)}update(e){const t=this._cachedMeta,s=t.dataset,i=t.data||[],n=t.iScale.getLabels();if(s.points=i,"resize"!==e){const t=this.resolveDatasetElementOptions(e);this.options.showLine||(t.borderWidth=0);const a={_loop:!0,_fullLoop:n.length===i.length,options:t};this.updateElement(s,void 0,a,e)}this.updateElements(i,0,i.length,e)}updateElements(e,t,s,i){const n=this._cachedMeta.rScale,a="reset"===i;for(let o=t;o0&&this.getParsed(t-1);for(let x=t;x0&&Math.abs(s[u]-y[u])>m,f&&(c.parsed=s,c.raw=r.data[x]),h&&(c.options=d||this.resolveDataElementOptions(x,t.active?"active":i)),b||this.updateElement(t,x,c,i),y=s}this.updateSharedOptions(d,i,c)}getMaxOverflow(){const e=this._cachedMeta,t=e.data||[];if(!this.options.showLine){let e=0;for(let s=t.length-1;s>=0;--s)e=Math.max(e,t[s].size(this.resolveDataElementOptions(s))/2);return e>0&&e}const s=e.dataset,i=s.options&&s.options.borderWidth||0;if(!t.length)return i;const n=t[0].size(this.resolveDataElementOptions(0)),a=t[t.length-1].size(this.resolveDataElementOptions(t.length-1));return Math.max(i,n,a)/2}}(0,Bt.A)(dl,"id","scatter"),(0,Bt.A)(dl,"defaults",{datasetElementType:!1,dataElementType:"point",showLine:!1,fill:!1}),(0,Bt.A)(dl,"overrides",{interaction:{mode:"point"},scales:{x:{type:"linear"},y:{type:"linear"}}});function hl(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class ul{static override(e){Object.assign(ul.prototype,e)}constructor(e){(0,Bt.A)(this,"options",void 0),this.options=e||{}}init(){}formats(){return hl()}parse(){return hl()}format(){return hl()}add(){return hl()}diff(){return hl()}startOf(){return hl()}endOf(){return hl()}}var pl={_date:ul};function gl(e,t,s,i){const{controller:n,data:a,_sorted:o}=e,l=n._cachedMeta.iScale,r=e.dataset&&e.dataset.options?e.dataset.options.spanGaps:null;if(l&&t===l.axis&&"r"!==t&&o&&a.length){const o=l._reversePixels?Ui:Ii;if(!i){const i=o(a,t,s);if(r){const{vScale:t}=n._cachedMeta,{_parsed:s}=e,a=s.slice(0,i.lo+1).reverse().findIndex(e=>!Es(e[t.axis]));i.lo-=Math.max(0,a);const o=s.slice(i.hi).findIndex(e=>!Es(e[t.axis]));i.hi+=Math.max(0,o)}return i}if(n._sharedOptions){const e=a[0],i="function"===typeof e.getRange&&e.getRange(t);if(i){const e=o(a,t,s-i),n=o(a,t,s+i);return{lo:e.lo,hi:n.hi}}}}return{lo:0,hi:a.length-1}}function fl(e,t,s,i,n){const a=e.getSortedVisibleDatasetMetas(),o=s[t];for(let l=0,r=a.length;l{e[o]&&e[o](t[s],n)&&(a.push({element:e,datasetIndex:i,index:r}),l=l||e.inRange(t.x,t.y,n))}),i&&!l?[]:a}var _l={evaluateInteractionItems:fl,modes:{index(e,t,s,i){const n=Ia(t,e),a=s.axis||"x",o=s.includeInvisible||!1,l=s.intersect?bl(e,n,a,i,o):vl(e,n,a,!1,i,o),r=[];return l.length?(e.getSortedVisibleDatasetMetas().forEach(e=>{const t=l[0].index,s=e.data[t];s&&!s.skip&&r.push({element:s,datasetIndex:e.index,index:t})}),r):[]},dataset(e,t,s,i){const n=Ia(t,e),a=s.axis||"xy",o=s.includeInvisible||!1;let l=s.intersect?bl(e,n,a,i,o):vl(e,n,a,!1,i,o);if(l.length>0){const t=l[0].datasetIndex,s=e.getDatasetMeta(t).data;l=[];for(let e=0;ee.pos===t)}function Sl(e,t){return e.filter(e=>-1===wl.indexOf(e.pos)&&e.box.axis===t)}function Fl(e,t){return e.sort((e,s)=>{const i=t?s:e,n=t?e:s;return i.weight===n.weight?i.index-n.index:i.weight-n.weight})}function Tl(e){const t=[];let s,i,n,a,o,l;for(s=0,i=(e||[]).length;se.box.fullSize),!0),i=Fl(Cl(t,"left"),!0),n=Fl(Cl(t,"right")),a=Fl(Cl(t,"top"),!0),o=Fl(Cl(t,"bottom")),l=Sl(t,"x"),r=Sl(t,"y");return{fullSize:s,leftAndTop:i.concat(a),rightAndBottom:n.concat(r).concat(o).concat(l),chartArea:Cl(t,"chartArea"),vertical:i.concat(n).concat(r),horizontal:a.concat(o).concat(l)}}function Al(e,t,s,i){return Math.max(e[s],t[s])+Math.max(e[i],t[i])}function $l(e,t){e.top=Math.max(e.top,t.top),e.left=Math.max(e.left,t.left),e.bottom=Math.max(e.bottom,t.bottom),e.right=Math.max(e.right,t.right)}function Ll(e,t,s,i){const{pos:n,box:a}=s,o=e.maxPadding;if(!Us(n)){s.size&&(e[n]-=s.size);const t=i[s.stack]||{size:0,count:1};t.size=Math.max(t.size,s.horizontal?a.height:a.width),s.size=t.size/t.count,e[n]+=s.size}a.getPadding&&$l(o,a.getPadding());const l=Math.max(0,t.outerWidth-Al(o,e,"left","right")),r=Math.max(0,t.outerHeight-Al(o,e,"top","bottom")),c=l!==e.w,d=r!==e.h;return e.w=l,e.h=r,s.horizontal?{same:c,other:d}:{same:d,other:c}}function Vl(e){const t=e.maxPadding;function s(s){const i=Math.max(t[s]-e[s],0);return e[s]+=i,i}e.y+=s("top"),e.x+=s("left"),s("right"),s("bottom")}function El(e,t){const s=t.maxPadding;function i(e){const i={left:0,top:0,right:0,bottom:0};return e.forEach(e=>{i[e]=Math.max(t[e],s[e])}),i}return i(e?["left","right"]:["top","bottom"])}function Il(e,t,s,i){const n=[];let a,o,l,r,c,d;for(a=0,o=e.length,c=0;a{"function"===typeof e.beforeLayout&&e.beforeLayout()});const d=r.reduce((e,t)=>t.box.options&&!1===t.box.options.display?e:e+1,0)||1,h=Object.freeze({outerWidth:t,outerHeight:s,padding:n,availableWidth:a,availableHeight:o,vBoxMaxWidth:a/2/d,hBoxMaxHeight:o/2}),u=Object.assign({},n);$l(u,qn(i));const p=Object.assign({maxPadding:u,w:a,h:o,x:n.left,y:n.top},n),g=Pl(r.concat(c),h);Il(l.fullSize,p,h,g),Il(r,p,h,g),Il(c,p,h,g)&&Il(r,p,h,g),Vl(p),Ol(l.leftAndTop,p,h,g),p.x+=p.w,p.y+=p.h,Ol(l.rightAndBottom,p,h,g),e.chartArea={left:p.left,top:p.top,right:p.left+p.w,bottom:p.top+p.h,height:p.h,width:p.w},js(l.chartArea,t=>{const s=t.box;Object.assign(s,e.chartArea),s.update(p.w,p.h,{left:0,top:0,right:0,bottom:0})})}};class Wl{acquireContext(e,t){}releaseContext(e){return!1}addEventListener(e,t,s){}removeEventListener(e,t,s){}getDevicePixelRatio(){return 1}getMaximumSize(e,t,s,i){return t=Math.max(0,t||e.width),s=s||e.height,{width:t,height:Math.max(0,i?Math.floor(t/i):s)}}isAttached(e){return!0}updateConfig(e){}}class Bl extends Wl{acquireContext(e){return e&&e.getContext&&e.getContext("2d")||null}updateConfig(e){e.options.animation=!1}}const zl="$chartjs",Nl={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},jl=e=>null===e||""===e;function Hl(e,t){const s=e.style,i=e.getAttribute("height"),n=e.getAttribute("width");if(e[zl]={initial:{height:i,width:n,style:{display:s.display,height:s.height,width:s.width}}},s.display=s.display||"block",s.boxSizing=s.boxSizing||"border-box",jl(n)){const t=za(e,"width");void 0!==t&&(e.width=t)}if(jl(i))if(""===e.style.height)e.height=e.width/(t||2);else{const t=za(e,"height");void 0!==t&&(e.height=t)}return e}const ql=!!Ba&&{passive:!0};function Xl(e,t,s){e&&e.addEventListener(t,s,ql)}function Kl(e,t,s){e&&e.canvas&&e.canvas.removeEventListener(t,s,ql)}function Ql(e,t){const s=Nl[e.type]||e.type,{x:i,y:n}=Ia(e,t);return{type:s,chart:t,native:e,x:void 0!==i?i:null,y:void 0!==n?n:null}}function Yl(e,t){for(const s of e)if(s===t||s.contains(t))return!0}function Gl(e,t,s){const i=e.canvas,n=new MutationObserver(e=>{let t=!1;for(const s of e)t=t||Yl(s.addedNodes,i),t=t&&!Yl(s.removedNodes,i);t&&s()});return n.observe(document,{childList:!0,subtree:!0}),n}function Jl(e,t,s){const i=e.canvas,n=new MutationObserver(e=>{let t=!1;for(const s of e)t=t||Yl(s.removedNodes,i),t=t&&!Yl(s.addedNodes,i);t&&s()});return n.observe(document,{childList:!0,subtree:!0}),n}const Zl=new Map;let er=0;function tr(){const e=window.devicePixelRatio;e!==er&&(er=e,Zl.forEach((t,s)=>{s.currentDevicePixelRatio!==e&&t()}))}function sr(e,t){Zl.size||window.addEventListener("resize",tr),Zl.set(e,t)}function ir(e){Zl.delete(e),Zl.size||window.removeEventListener("resize",tr)}function nr(e,t,s){const i=e.canvas,n=i&&Ma(i);if(!n)return;const a=ji((e,t)=>{const i=n.clientWidth;s(e,t),i{const t=e[0],s=t.contentRect.width,i=t.contentRect.height;0===s&&0===i||a(s,i)});return o.observe(n),sr(e,a),o}function ar(e,t,s){s&&s.disconnect(),"resize"===t&&ir(e)}function or(e,t,s){const i=e.canvas,n=ji(t=>{null!==e.ctx&&s(Ql(t,e))},e);return Xl(i,t,n),n}class lr extends Wl{acquireContext(e,t){const s=e&&e.getContext&&e.getContext("2d");return s&&s.canvas===e?(Hl(e,t),s):null}releaseContext(e){const t=e.canvas;if(!t[zl])return!1;const s=t[zl].initial;["height","width"].forEach(e=>{const i=s[e];Es(i)?t.removeAttribute(e):t.setAttribute(e,i)});const i=s.style||{};return Object.keys(i).forEach(e=>{t.style[e]=i[e]}),t.width=t.width,delete t[zl],!0}addEventListener(e,t,s){this.removeEventListener(e,t);const i=e.$proxies||(e.$proxies={}),n={attach:Gl,detach:Jl,resize:nr},a=n[t]||or;i[t]=a(e,t,s)}removeEventListener(e,t){const s=e.$proxies||(e.$proxies={}),i=s[t];if(!i)return;const n={attach:ar,detach:ar,resize:ar},a=n[t]||Kl;a(e,t,i),s[t]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(e,t,s,i){return Ra(e,t,s,i)}isAttached(e){const t=e&&Ma(e);return!(!t||!t.isConnected)}}function rr(e){return!Ta()||"undefined"!==typeof OffscreenCanvas&&e instanceof OffscreenCanvas?Bl:lr}class cr{constructor(){(0,Bt.A)(this,"x",void 0),(0,Bt.A)(this,"y",void 0),(0,Bt.A)(this,"active",!1),(0,Bt.A)(this,"options",void 0),(0,Bt.A)(this,"$animations",void 0)}tooltipPosition(e){const{x:t,y:s}=this.getProps(["x","y"],e);return{x:t,y:s}}hasValue(){return ki(this.x)&&ki(this.y)}getProps(e,t){const s=this.$animations;if(!t||!s)return this;const i={};return e.forEach(e=>{i[e]=s[e]&&s[e].active()?s[e]._to:this[e]}),i}}function dr(e,t){const s=e.options.ticks,i=hr(e),n=Math.min(s.maxTicksLimit||i,i),a=s.major.enabled?pr(t):[],o=a.length,l=a[0],r=a[o-1],c=[];if(o>n)return gr(t,c,a,o/n),c;const d=ur(a,t,n);if(o>0){let e,s;const i=o>1?Math.round((r-l)/(o-1)):null;for(fr(t,c,d,Es(i)?0:l-i,l),e=0,s=o-1;en)return e}return Math.max(n,1)}function pr(e){const t=[];let s,i;for(s=0,i=e.length;s"left"===e?"right":"right"===e?"left":e,yr=(e,t,s)=>"top"===t||"left"===t?e[t]+s:e[t]-s,xr=(e,t)=>Math.min(t||e,e);function vr(e,t){const s=[],i=e.length/t,n=e.length;let a=0;for(;ao+l)))return c}function _r(e,t){js(e,e=>{const s=e.gc,i=s.length/2;let n;if(i>t){for(n=0;ni?i:s,i=n&&s>i?s:i,{min:Rs(s,Rs(i,s)),max:Rs(i,Rs(s,i))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const e=this.chart.data;return this.options.labels||(this.isHorizontal()?e.xLabels:e.yLabels)||e.labels||[]}getLabelItems(e=this.chart.chartArea){const t=this._labelItems||(this._labelItems=this._computeLabelItems(e));return t}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){Ns(this.options.beforeUpdate,[this])}update(e,t,s){const{beginAtZero:i,grace:n,ticks:a}=this.options,o=a.sampleSize;this.beforeUpdate(),this.maxWidth=e,this.maxHeight=t,this._margins=s=Object.assign({left:0,right:0,top:0,bottom:0},s),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+s.left+s.right:this.height+s.top+s.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=Qn(this,n,i),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const l=o=n||s<=1||!this.isHorizontal())return void(this.labelRotation=i);const c=this._getLabelSizes(),d=c.widest.width,h=c.highest.height,u=$i(this.chart.width-d,0,this.maxWidth);a=e.offset?this.maxWidth/s:u/(s-1),d+6>a&&(a=u/(s-(e.offset?.5:1)),o=this.maxHeight-wr(e.grid)-t.padding-Cr(e.title,this.chart.options.font),l=Math.sqrt(d*d+h*h),r=Si(Math.min(Math.asin($i((c.highest.height+6)/a,-1,1)),Math.asin($i(o/l,-1,1))-Math.asin($i(h/l,-1,1)))),r=Math.max(i,Math.min(n,r))),this.labelRotation=r}afterCalculateLabelRotation(){Ns(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){Ns(this.options.beforeFit,[this])}fit(){const e={width:0,height:0},{chart:t,options:{ticks:s,title:i,grid:n}}=this,a=this._isVisible(),o=this.isHorizontal();if(a){const a=Cr(i,t.options.font);if(o?(e.width=this.maxWidth,e.height=wr(n)+a):(e.height=this.maxHeight,e.width=wr(n)+a),s.display&&this.ticks.length){const{first:t,last:i,widest:n,highest:a}=this._getLabelSizes(),l=2*s.padding,r=Ci(this.labelRotation),c=Math.cos(r),d=Math.sin(r);if(o){const t=s.mirror?0:d*n.width+c*a.height;e.height=Math.min(this.maxHeight,e.height+t+l)}else{const t=s.mirror?0:c*n.width+d*a.height;e.width=Math.min(this.maxWidth,e.width+t+l)}this._calculatePadding(t,i,d,c)}}this._handleMargins(),o?(this.width=this._length=t.width-this._margins.left-this._margins.right,this.height=e.height):(this.width=e.width,this.height=this._length=t.height-this._margins.top-this._margins.bottom)}_calculatePadding(e,t,s,i){const{ticks:{align:n,padding:a},position:o}=this.options,l=0!==this.labelRotation,r="top"!==o&&"x"===this.axis;if(this.isHorizontal()){const o=this.getPixelForTick(0)-this.left,c=this.right-this.getPixelForTick(this.ticks.length-1);let d=0,h=0;l?r?(d=i*e.width,h=s*t.height):(d=s*e.height,h=i*t.width):"start"===n?h=t.width:"end"===n?d=e.width:"inner"!==n&&(d=e.width/2,h=t.width/2),this.paddingLeft=Math.max((d-o+a)*this.width/(this.width-o),0),this.paddingRight=Math.max((h-c+a)*this.width/(this.width-c),0)}else{let s=t.height/2,i=e.height/2;"start"===n?(s=0,i=e.height):"end"===n&&(s=t.height,i=0),this.paddingTop=s+a,this.paddingBottom=i+a}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){Ns(this.options.afterFit,[this])}isHorizontal(){const{axis:e,position:t}=this.options;return"top"===t||"bottom"===t||"x"===e}isFullSize(){return this.options.fullSize}_convertTicksToLabels(e){let t,s;for(this.beforeTickToLabelConversion(),this.generateTickLabels(e),t=0,s=e.length;t({width:a[e]||0,height:o[e]||0});return{first:w(0),last:w(t-1),widest:w(k),highest:w(_),widths:a,heights:o}}getLabelForValue(e){return e}getPixelForValue(e,t){return NaN}getValueForPixel(e){}getPixelForTick(e){const t=this.ticks;return e<0||e>t.length-1?null:this.getPixelForValue(t[e].value)}getPixelForDecimal(e){this._reversePixels&&(e=1-e);const t=this._startPixel+e*this._length;return Li(this._alignToPixels?Sn(this.chart,t,0):t)}getDecimalForPixel(e){const t=(e-this._startPixel)/this._length;return this._reversePixels?1-t:t}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:e,max:t}=this;return e<0&&t<0?t:e>0&&t>0?e:0}getContext(e){const t=this.ticks||[];if(e>=0&&eo*i?o/s:l/i:l*i0}_computeGridLineItems(e){const t=this.axis,s=this.chart,i=this.options,{grid:n,position:a,border:o}=i,l=n.offset,r=this.isHorizontal(),c=this.ticks,d=c.length+(l?1:0),h=wr(n),u=[],p=o.setContext(this.getContext()),g=p.display?p.width:0,f=g/2,m=function(e){return Sn(s,e,g)};let b,y,x,v,k,_,w,C,S,F,T,M;if("top"===a)b=m(this.bottom),_=this.bottom-h,C=b-f,F=m(e.top)+f,M=e.bottom;else if("bottom"===a)b=m(this.top),F=e.top,M=m(e.bottom)-f,_=b+f,C=this.top+h;else if("left"===a)b=m(this.right),k=this.right-h,w=b-f,S=m(e.left)+f,T=e.right;else if("right"===a)b=m(this.left),S=e.left,T=m(e.right)-f,k=b+f,w=this.left+h;else if("x"===t){if("center"===a)b=m((e.top+e.bottom)/2+.5);else if(Us(a)){const e=Object.keys(a)[0],t=a[e];b=m(this.chart.scales[e].getPixelForValue(t))}F=e.top,M=e.bottom,_=b+f,C=_+h}else if("y"===t){if("center"===a)b=m((e.left+e.right)/2);else if(Us(a)){const e=Object.keys(a)[0],t=a[e];b=m(this.chart.scales[e].getPixelForValue(t))}k=b-f,w=k-h,S=e.left,T=e.right}const P=Ws(i.ticks.maxTicksLimit,d),D=Math.max(1,Math.ceil(d/P));for(y=0;y0&&(a-=i/2);break}h={left:a,top:n,width:i+t.width,height:s+t.height,color:e.backdropColor}}f.push({label:x,font:C,textOffset:T,options:{rotation:g,color:s,strokeColor:l,strokeWidth:c,textAlign:u,textBaseline:M,translation:[v,k],backdrop:h}})}return f}_getXAxisLabelAlignment(){const{position:e,ticks:t}=this.options,s=-Ci(this.labelRotation);if(s)return"top"===e?"left":"right";let i="center";return"start"===t.align?i="left":"end"===t.align?i="right":"inner"===t.align&&(i="inner"),i}_getYAxisLabelAlignment(e){const{position:t,ticks:{crossAlign:s,mirror:i,padding:n}}=this.options,a=this._getLabelSizes(),o=e+n,l=a.widest.width;let r,c;return"left"===t?i?(c=this.right+n,"near"===s?r="left":"center"===s?(r="center",c+=l/2):(r="right",c+=l)):(c=this.right-o,"near"===s?r="right":"center"===s?(r="center",c-=l/2):(r="left",c=this.left)):"right"===t?i?(c=this.left+n,"near"===s?r="right":"center"===s?(r="center",c-=l/2):(r="left",c-=l)):(c=this.left+o,"near"===s?r="left":"center"===s?(r="center",c+=l/2):(r="right",c=this.right)):r="right",{textAlign:r,x:c}}_computeLabelArea(){if(this.options.ticks.mirror)return;const e=this.chart,t=this.options.position;return"left"===t||"right"===t?{top:0,left:this.left,bottom:e.height,right:this.right}:"top"===t||"bottom"===t?{top:this.top,left:0,bottom:this.bottom,right:e.width}:void 0}drawBackground(){const{ctx:e,options:{backgroundColor:t},left:s,top:i,width:n,height:a}=this;t&&(e.save(),e.fillStyle=t,e.fillRect(s,i,n,a),e.restore())}getLineWidthForValue(e){const t=this.options.grid;if(!this._isVisible()||!t.display)return 0;const s=this.ticks,i=s.findIndex(t=>t.value===e);if(i>=0){const e=t.setContext(this.getContext(i));return e.lineWidth}return 0}drawGrid(e){const t=this.options.grid,s=this.ctx,i=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(e));let n,a;const o=(e,t,i)=>{i.width&&i.color&&(s.save(),s.lineWidth=i.width,s.strokeStyle=i.color,s.setLineDash(i.borderDash||[]),s.lineDashOffset=i.borderDashOffset,s.beginPath(),s.moveTo(e.x,e.y),s.lineTo(t.x,t.y),s.stroke(),s.restore())};if(t.display)for(n=0,a=i.length;n{this.drawBackground(),this.drawGrid(e),this.drawTitle()}},{z:i,draw:()=>{this.drawBorder()}},{z:t,draw:e=>{this.drawLabels(e)}}]:[{z:t,draw:e=>{this.draw(e)}}]}getMatchingVisibleMetas(e){const t=this.chart.getSortedVisibleDatasetMetas(),s=this.axis+"AxisID",i=[];let n,a;for(n=0,a=t.length;n{const i=s.split("."),n=i.pop(),a=[e].concat(i).join("."),o=t[s].split("."),l=o.pop(),r=o.join(".");kn.route(a,n,r,l)})}function Lr(e){return"id"in e&&"defaults"in e}class Vr{constructor(){this.controllers=new Dr(Wo,"datasets",!0),this.elements=new Dr(cr,"elements"),this.plugins=new Dr(Object,"plugins"),this.scales=new Dr(Pr,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...e){this._each("register",e)}remove(...e){this._each("unregister",e)}addControllers(...e){this._each("register",e,this.controllers)}addElements(...e){this._each("register",e,this.elements)}addPlugins(...e){this._each("register",e,this.plugins)}addScales(...e){this._each("register",e,this.scales)}getController(e){return this._get(e,this.controllers,"controller")}getElement(e){return this._get(e,this.elements,"element")}getPlugin(e){return this._get(e,this.plugins,"plugin")}getScale(e){return this._get(e,this.scales,"scale")}removeControllers(...e){this._each("unregister",e,this.controllers)}removeElements(...e){this._each("unregister",e,this.elements)}removePlugins(...e){this._each("unregister",e,this.plugins)}removeScales(...e){this._each("unregister",e,this.scales)}_each(e,t,s){[...t].forEach(t=>{const i=s||this._getRegistryForType(t);s||i.isForType(t)||i===this.plugins&&t.id?this._exec(e,i,t):js(t,t=>{const i=s||this._getRegistryForType(t);this._exec(e,i,t)})})}_exec(e,t,s){const i=si(e);Ns(s["before"+i],[],s),t[e](s),Ns(s["after"+i],[],s)}_getRegistryForType(e){for(let t=0;te.filter(e=>!t.some(t=>e.plugin.id===t.plugin.id));this._notify(i(t,s),e,"stop"),this._notify(i(s,t),e,"start")}}function Ur(e){const t={},s=[],i=Object.keys(Er.plugins.items);for(let a=0;a1&&jr(e[0].toLowerCase());if(t)return t}throw new Error(`Cannot determine type of '${e}' axis. Please provide 'axis' or 'position' option.`)}function Xr(e,t,s){if(s[t+"AxisID"]===e)return{axis:t}}function Kr(e,t){if(t.data&&t.data.datasets){const s=t.data.datasets.filter(t=>t.xAxisID===e||t.yAxisID===e);if(s.length)return Xr(e,"x",s[0])||Xr(e,"y",s[0])}return{}}function Qr(e,t){const s=mn[e.type]||{scales:{}},i=t.scales||{},n=Br(e.type,t),a=Object.create(null);return Object.keys(i).forEach(t=>{const o=i[t];if(!Us(o))return console.error(`Invalid scale configuration for scale: ${t}`);if(o._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${t}`);const l=qr(t,o,Kr(t,e),kn.scales[o.type]),r=Nr(l,n),c=s.scales||{};a[t]=Ys(Object.create(null),[{axis:l},o,c[l],c[r]])}),e.data.datasets.forEach(s=>{const n=s.type||e.type,o=s.indexAxis||Br(n,t),l=mn[n]||{},r=l.scales||{};Object.keys(r).forEach(e=>{const t=zr(e,o),n=s[t+"AxisID"]||t;a[n]=a[n]||Object.create(null),Ys(a[n],[{axis:t},i[n],r[e]])})}),Object.keys(a).forEach(e=>{const t=a[e];Ys(t,[kn.scales[t.type],kn.scale])}),a}function Yr(e){const t=e.options||(e.options={});t.plugins=Ws(t.plugins,{}),t.scales=Qr(e,t)}function Gr(e){return e=e||{},e.datasets=e.datasets||[],e.labels=e.labels||[],e}function Jr(e){return e=e||{},e.data=Gr(e.data),Yr(e),e}const Zr=new Map,ec=new Set;function tc(e,t){let s=Zr.get(e);return s||(s=t(),Zr.set(e,s),ec.add(s)),s}const sc=(e,t,s)=>{const i=ti(t,s);void 0!==i&&e.add(i)};class ic{constructor(e){this._config=Jr(e),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(e){this._config.type=e}get data(){return this._config.data}set data(e){this._config.data=Gr(e)}get options(){return this._config.options}set options(e){this._config.options=e}get plugins(){return this._config.plugins}update(){const e=this._config;this.clearCache(),Yr(e)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(e){return tc(e,()=>[[`datasets.${e}`,""]])}datasetAnimationScopeKeys(e,t){return tc(`${e}.transition.${t}`,()=>[[`datasets.${e}.transitions.${t}`,`transitions.${t}`],[`datasets.${e}`,""]])}datasetElementScopeKeys(e,t){return tc(`${e}-${t}`,()=>[[`datasets.${e}.elements.${t}`,`datasets.${e}`,`elements.${t}`,""]])}pluginScopeKeys(e){const t=e.id,s=this.type;return tc(`${s}-plugin-${t}`,()=>[[`plugins.${t}`,...e.additionalOptionScopes||[]]])}_cachedScopes(e,t){const s=this._scopeCache;let i=s.get(e);return i&&!t||(i=new Map,s.set(e,i)),i}getOptionScopes(e,t,s){const{options:i,type:n}=this,a=this._cachedScopes(e,s),o=a.get(t);if(o)return o;const l=new Set;t.forEach(t=>{e&&(l.add(e),t.forEach(t=>sc(l,e,t))),t.forEach(e=>sc(l,i,e)),t.forEach(e=>sc(l,mn[n]||{},e)),t.forEach(e=>sc(l,kn,e)),t.forEach(e=>sc(l,bn,e))});const r=Array.from(l);return 0===r.length&&r.push(Object.create(null)),ec.has(t)&&a.set(t,r),r}chartOptionScopes(){const{options:e,type:t}=this;return[e,mn[t]||{},kn.datasets[t]||{},{type:t},kn,bn]}resolveNamedOptions(e,t,s,i=[""]){const n={$shared:!0},{resolver:a,subPrefixes:o}=nc(this._resolverCache,e,i);let l=a;if(oc(a,t)){n.$shared=!1,s=ni(s)?s():s;const t=this.createResolver(e,s,o);l=Jn(a,s,t)}for(const r of t)n[r]=l[r];return n}createResolver(e,t,s=[""],i){const{resolver:n}=nc(this._resolverCache,e,s);return Us(t)?Jn(n,t,void 0,i):n}}function nc(e,t,s){let i=e.get(t);i||(i=new Map,e.set(t,i));const n=s.join();let a=i.get(n);if(!a){const e=Gn(t,s);a={resolver:e,subPrefixes:s.filter(e=>!e.toLowerCase().includes("hover"))},i.set(n,a)}return a}const ac=e=>Us(e)&&Object.getOwnPropertyNames(e).some(t=>ni(e[t]));function oc(e,t){const{isScriptable:s,isIndexable:i}=Zn(e);for(const n of t){const t=s(n),a=i(n),o=(a||t)&&e[n];if(t&&(ni(o)||ac(o))||a&&Is(o))return!0}return!1}var lc="4.5.1";const rc=["top","bottom","left","right","chartArea"];function cc(e,t){return"top"===e||"bottom"===e||-1===rc.indexOf(e)&&"x"===t}function dc(e,t){return function(s,i){return s[e]===i[e]?s[t]-i[t]:s[e]-i[e]}}function hc(e){const t=e.chart,s=t.options.animation;t.notifyPlugins("afterRender"),Ns(s&&s.onComplete,[e],t)}function uc(e){const t=e.chart,s=t.options.animation;Ns(s&&s.onProgress,[e],t)}function pc(e){return Ta()&&"string"===typeof e?e=document.getElementById(e):e&&e.length&&(e=e[0]),e&&e.canvas&&(e=e.canvas),e}const gc={},fc=e=>{const t=pc(e);return Object.values(gc).filter(e=>e.canvas===t).pop()};function mc(e,t,s){const i=Object.keys(e);for(const n of i){const i=+n;if(i>=t){const a=e[n];delete e[n],(s>0||i>t)&&(e[i+s]=a)}}}function bc(e,t,s,i){return s&&"mouseout"!==e.type?i?t:e:null}class yc{static register(...e){Er.add(...e),xc()}static unregister(...e){Er.remove(...e),xc()}constructor(e,t){const s=this.config=new ic(t),i=pc(e),n=fc(i);if(n)throw new Error("Canvas is already in use. Chart with ID '"+n.id+"' must be destroyed before the canvas with ID '"+n.canvas.id+"' can be reused.");const a=s.createResolver(s.chartOptionScopes(),this.getContext());this.platform=new(s.platform||rr(i)),this.platform.updateConfig(s);const o=this.platform.acquireContext(i,a.aspectRatio),l=o&&o.canvas,r=l&&l.height,c=l&&l.width;this.id=Vs(),this.ctx=o,this.canvas=l,this.width=c,this.height=r,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new Ir,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=Hi(e=>this.update(e),a.resizeDelay||0),this._dataChanges=[],gc[this.id]=this,o&&l?(go.listen(this,"complete",hc),go.listen(this,"progress",uc),this._initialize(),this.attached&&this.update()):console.error("Failed to create chart: can't acquire context from the given item")}get aspectRatio(){const{options:{aspectRatio:e,maintainAspectRatio:t},width:s,height:i,_aspectRatio:n}=this;return Es(e)?t&&n?n:i?s/i:null:e}get data(){return this.config.data}set data(e){this.config.data=e}get options(){return this._options}set options(e){this.config.options=e}get registry(){return Er}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():Wa(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Fn(this.canvas,this.ctx),this}stop(){return go.stop(this),this}resize(e,t){go.running(this)?this._resizeBeforeDraw={width:e,height:t}:this._resize(e,t)}_resize(e,t){const s=this.options,i=this.canvas,n=s.maintainAspectRatio&&this.aspectRatio,a=this.platform.getMaximumSize(i,e,t,n),o=s.devicePixelRatio||this.platform.getDevicePixelRatio(),l=this.width?"resize":"attach";this.width=a.width,this.height=a.height,this._aspectRatio=this.aspectRatio,Wa(this,o,!0)&&(this.notifyPlugins("resize",{size:a}),Ns(s.onResize,[this,a],this),this.attached&&this._doResize(l)&&this.render())}ensureScalesHaveIDs(){const e=this.options,t=e.scales||{};js(t,(e,t)=>{e.id=t})}buildOrUpdateScales(){const e=this.options,t=e.scales,s=this.scales,i=Object.keys(s).reduce((e,t)=>(e[t]=!1,e),{});let n=[];t&&(n=n.concat(Object.keys(t).map(e=>{const s=t[e],i=qr(e,s),n="r"===i,a="x"===i;return{options:s,dposition:n?"chartArea":a?"bottom":"left",dtype:n?"radialLinear":a?"category":"linear"}}))),js(n,t=>{const n=t.options,a=n.id,o=qr(a,n),l=Ws(n.type,t.dtype);void 0!==n.position&&cc(n.position,o)===cc(t.dposition)||(n.position=t.dposition),i[a]=!0;let r=null;if(a in s&&s[a].type===l)r=s[a];else{const e=Er.getScale(l);r=new e({id:a,type:l,ctx:this.ctx,chart:this}),s[r.id]=r}r.init(n,e)}),js(i,(e,t)=>{e||delete s[t]}),js(s,e=>{Rl.configure(this,e,e.options),Rl.addBox(this,e)})}_updateMetasets(){const e=this._metasets,t=this.data.datasets.length,s=e.length;if(e.sort((e,t)=>e.index-t.index),s>t){for(let e=t;et.length&&delete this._stacks,e.forEach((e,s)=>{0===t.filter(t=>t===e._dataset).length&&this._destroyDatasetMeta(s)})}buildOrUpdateControllers(){const e=[],t=this.data.datasets;let s,i;for(this._removeUnreferencedMetasets(),s=0,i=t.length;s{this.getDatasetMeta(t).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(e){const t=this.config;t.update();const s=this._options=t.createResolver(t.chartOptionScopes(),this.getContext()),i=this._animationsDisabled=!s.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins("beforeUpdate",{mode:e,cancelable:!0}))return;const n=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let a=0;for(let r=0,c=this.data.datasets.length;r{e.reset()}),this._updateDatasets(e),this.notifyPlugins("afterUpdate",{mode:e}),this._layers.sort(dc("z","_idx"));const{_active:o,_lastEvent:l}=this;l?this._eventHandler(l,!0):o.length&&this._updateHoverStyles(o,o,!0),this.render()}_updateScales(){js(this.scales,e=>{Rl.removeBox(this,e)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const e=this.options,t=new Set(Object.keys(this._listeners)),s=new Set(e.events);ai(t,s)&&!!this._responsiveListeners===e.responsive||(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:e}=this,t=this._getUniformDataChanges()||[];for(const{method:s,start:i,count:n}of t){const t="_removeElements"===s?-n:n;mc(e,i,t)}}_getUniformDataChanges(){const e=this._dataChanges;if(!e||!e.length)return;this._dataChanges=[];const t=this.data.datasets.length,s=t=>new Set(e.filter(e=>e[0]===t).map((e,t)=>t+","+e.splice(1).join(","))),i=s(0);for(let n=1;ne.split(",")).map(e=>({method:e[1],start:+e[2],count:+e[3]}))}_updateLayout(e){if(!1===this.notifyPlugins("beforeLayout",{cancelable:!0}))return;Rl.update(this,this.width,this.height,e);const t=this.chartArea,s=t.width<=0||t.height<=0;this._layers=[],js(this.boxes,e=>{s&&"chartArea"===e.position||(e.configure&&e.configure(),this._layers.push(...e._layers()))},this),this._layers.forEach((e,t)=>{e._idx=t}),this.notifyPlugins("afterLayout")}_updateDatasets(e){if(!1!==this.notifyPlugins("beforeDatasetsUpdate",{mode:e,cancelable:!0})){for(let e=0,t=this.data.datasets.length;e=0;--t)this._drawDataset(e[t]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(e){const t=this.ctx,s={meta:e,index:e.index,cancelable:!0},i=uo(this,e);!1!==this.notifyPlugins("beforeDatasetDraw",s)&&(i&&Dn(t,i),e.controller.draw(),i&&An(t),s.cancelable=!1,this.notifyPlugins("afterDatasetDraw",s))}isPointInArea(e){return Pn(e,this.chartArea,this._minPadding)}getElementsAtEventForMode(e,t,s,i){const n=_l.modes[t];return"function"===typeof n?n(this,e,s,i):[]}getDatasetMeta(e){const t=this.data.datasets[e],s=this._metasets;let i=s.filter(e=>e&&e._dataset===t).pop();return i||(i={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:t&&t.order||0,index:e,_dataset:t,_parsed:[],_sorted:!1},s.push(i)),i}getContext(){return this.$context||(this.$context=Yn(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(e){const t=this.data.datasets[e];if(!t)return!1;const s=this.getDatasetMeta(e);return"boolean"===typeof s.hidden?!s.hidden:!t.hidden}setDatasetVisibility(e,t){const s=this.getDatasetMeta(e);s.hidden=!t}toggleDataVisibility(e){this._hiddenIndices[e]=!this._hiddenIndices[e]}getDataVisibility(e){return!this._hiddenIndices[e]}_updateVisibility(e,t,s){const i=s?"show":"hide",n=this.getDatasetMeta(e),a=n.controller._resolveAnimations(void 0,i);ii(t)?(n.data[t].hidden=!s,this.update()):(this.setDatasetVisibility(e,s),a.update(n,{visible:s}),this.update(t=>t.datasetIndex===e?i:void 0))}hide(e,t){this._updateVisibility(e,t,!1)}show(e,t){this._updateVisibility(e,t,!0)}_destroyDatasetMeta(e){const t=this._metasets[e];t&&t.controller&&t.controller._destroy(),delete this._metasets[e]}_stop(){let e,t;for(this.stop(),go.remove(this),e=0,t=this.data.datasets.length;e{t.addEventListener(this,s,i),e[s]=i},i=(e,t,s)=>{e.offsetX=t,e.offsetY=s,this._eventHandler(e)};js(this.options.events,e=>s(e,i))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const e=this._responsiveListeners,t=this.platform,s=(s,i)=>{t.addEventListener(this,s,i),e[s]=i},i=(s,i)=>{e[s]&&(t.removeEventListener(this,s,i),delete e[s])},n=(e,t)=>{this.canvas&&this.resize(e,t)};let a;const o=()=>{i("attach",o),this.attached=!0,this.resize(),s("resize",n),s("detach",a)};a=()=>{this.attached=!1,i("resize",n),this._stop(),this._resize(0,0),s("attach",o)},t.isAttached(this.canvas)?o():a()}unbindEvents(){js(this._listeners,(e,t)=>{this.platform.removeEventListener(this,t,e)}),this._listeners={},js(this._responsiveListeners,(e,t)=>{this.platform.removeEventListener(this,t,e)}),this._responsiveListeners=void 0}updateHoverStyle(e,t,s){const i=s?"set":"remove";let n,a,o,l;for("dataset"===t&&(n=this.getDatasetMeta(e[0].datasetIndex),n.controller["_"+i+"DatasetHoverStyle"]()),o=0,l=e.length;o{const s=this.getDatasetMeta(e);if(!s)throw new Error("No dataset found at index "+e);return{datasetIndex:e,element:s.data[t],index:t}}),i=!Hs(s,t);i&&(this._active=s,this._lastEvent=null,this._updateHoverStyles(s,t))}notifyPlugins(e,t,s){return this._plugins.notify(this,e,t,s)}isPluginEnabled(e){return 1===this._plugins._cache.filter(t=>t.plugin.id===e).length}_updateHoverStyles(e,t,s){const i=this.options.hover,n=(e,t)=>e.filter(e=>!t.some(t=>e.datasetIndex===t.datasetIndex&&e.index===t.index)),a=n(t,e),o=s?e:n(e,t);a.length&&this.updateHoverStyle(a,i.mode,!1),o.length&&i.mode&&this.updateHoverStyle(o,i.mode,!0)}_eventHandler(e,t){const s={event:e,replay:t,cancelable:!0,inChartArea:this.isPointInArea(e)},i=t=>(t.options.events||this.options.events).includes(e.native.type);if(!1===this.notifyPlugins("beforeEvent",s,i))return;const n=this._handleEvent(e,t,s.inChartArea);return s.cancelable=!1,this.notifyPlugins("afterEvent",s,i),(n||s.changed)&&this.render(),this}_handleEvent(e,t,s){const{_active:i=[],options:n}=this,a=t,o=this._getActiveElements(e,i,s,a),l=oi(e),r=bc(e,this._lastEvent,s,l);s&&(this._lastEvent=null,Ns(n.onHover,[e,o,this],this),l&&Ns(n.onClick,[e,o,this],this));const c=!Hs(o,i);return(c||t)&&(this._active=o,this._updateHoverStyles(o,i,t)),this._lastEvent=r,c}_getActiveElements(e,t,s,i){if("mouseout"===e.type)return[];if(!s)return t;const n=this.options.hover;return this.getElementsAtEventForMode(e,n.mode,n,i)}}function xc(){return js(yc.instances,e=>e._plugins.invalidate())}function vc(e,t,s){const{startAngle:i,x:n,y:a,outerRadius:o,innerRadius:l,options:r}=t,{borderWidth:c,borderJoinStyle:d}=r,h=Math.min(c/o,Di(i-s));if(e.beginPath(),e.arc(n,a,o-c/2,i+h/2,s-h/2),l>0){const t=Math.min(c/l,Di(i-s));e.arc(n,a,l+c/2,s-t/2,i+t/2,!0)}else{const t=Math.min(c/2,o*Di(i-s));if("round"===d)e.arc(n,a,t,s-li/2,i+li/2,!0);else if("bevel"===d){const o=2*t*t,l=-o*Math.cos(s+li/2)+n,r=-o*Math.sin(s+li/2)+a,c=o*Math.cos(i+li/2)+n,d=o*Math.sin(i+li/2)+a;e.lineTo(l,r),e.lineTo(c,d)}}e.closePath(),e.moveTo(0,0),e.rect(0,0,e.canvas.width,e.canvas.height),e.clip("evenodd")}function kc(e,t,s){const{startAngle:i,pixelMargin:n,x:a,y:o,outerRadius:l,innerRadius:r}=t;let c=n/l;e.beginPath(),e.arc(a,o,l,i-c,s+c),r>n?(c=n/r,e.arc(a,o,r,s+c,i-c,!0)):e.arc(a,o,n,s+ui,i-ui),e.closePath(),e.clip()}function _c(e){return Nn(e,["outerStart","outerEnd","innerStart","innerEnd"])}function wc(e,t,s,i){const n=_c(e.options.borderRadius),a=(s-t)/2,o=Math.min(a,i*t/2),l=e=>{const t=(s-Math.min(a,e))*i/2;return $i(e,0,Math.min(a,t))};return{outerStart:l(n.outerStart),outerEnd:l(n.outerEnd),innerStart:$i(n.innerStart,0,o),innerEnd:$i(n.innerEnd,0,o)}}function Cc(e,t,s,i){return{x:s+e*Math.cos(t),y:i+e*Math.sin(t)}}function Sc(e,t,s,i,n,a){const{x:o,y:l,startAngle:r,pixelMargin:c,innerRadius:d}=t,h=Math.max(t.outerRadius+i+s-c,0),u=d>0?d+i+s+c:0;let p=0;const g=n-r;if(i){const e=d>0?d-i:0,t=h>0?h-i:0,s=(e+t)/2,n=0!==s?g*s/(s+i):g;p=(g-n)/2}const f=Math.max(.001,g*h-s/li)/h,m=(g-f)/2,b=r+m+p,y=n-m-p,{outerStart:x,outerEnd:v,innerStart:k,innerEnd:_}=wc(t,u,h,y-b),w=h-x,C=h-v,S=b+x/w,F=y-v/C,T=u+k,M=u+_,P=b+k/T,D=y-_/M;if(e.beginPath(),a){const t=(S+F)/2;if(e.arc(o,l,h,S,t),e.arc(o,l,h,t,F),v>0){const t=Cc(C,F,o,l);e.arc(t.x,t.y,v,F,y+ui)}const s=Cc(M,y,o,l);if(e.lineTo(s.x,s.y),_>0){const t=Cc(M,D,o,l);e.arc(t.x,t.y,_,y+ui,D+Math.PI)}const i=(y-_/u+(b+k/u))/2;if(e.arc(o,l,u,y-_/u,i,!0),e.arc(o,l,u,i,b+k/u,!0),k>0){const t=Cc(T,P,o,l);e.arc(t.x,t.y,k,P+Math.PI,b-ui)}const n=Cc(w,b,o,l);if(e.lineTo(n.x,n.y),x>0){const t=Cc(w,S,o,l);e.arc(t.x,t.y,x,b-ui,S)}}else{e.moveTo(o,l);const t=Math.cos(S)*h+o,s=Math.sin(S)*h+l;e.lineTo(t,s);const i=Math.cos(F)*h+o,n=Math.sin(F)*h+l;e.lineTo(i,n)}e.closePath()}function Fc(e,t,s,i,n){const{fullCircles:a,startAngle:o,circumference:l}=t;let r=t.endAngle;if(a){Sc(e,t,s,i,r,n);for(let t=0;t=li&&0===p&&"miter"!==d&&vc(e,t,f),a||(Sc(e,t,s,i,f,n),e.stroke())}(0,Bt.A)(yc,"defaults",kn),(0,Bt.A)(yc,"instances",gc),(0,Bt.A)(yc,"overrides",mn),(0,Bt.A)(yc,"registry",Er),(0,Bt.A)(yc,"version",lc),(0,Bt.A)(yc,"getChart",fc);class Mc extends cr{constructor(e){super(),(0,Bt.A)(this,"circumference",void 0),(0,Bt.A)(this,"endAngle",void 0),(0,Bt.A)(this,"fullCircles",void 0),(0,Bt.A)(this,"innerRadius",void 0),(0,Bt.A)(this,"outerRadius",void 0),(0,Bt.A)(this,"pixelMargin",void 0),(0,Bt.A)(this,"startAngle",void 0),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,e&&Object.assign(this,e)}inRange(e,t,s){const i=this.getProps(["x","y"],s),{angle:n,distance:a}=Ti(i,{x:e,y:t}),{startAngle:o,endAngle:l,innerRadius:r,outerRadius:c,circumference:d}=this.getProps(["startAngle","endAngle","innerRadius","outerRadius","circumference"],s),h=(this.options.spacing+this.options.borderWidth)/2,u=Ws(d,l-o),p=Ai(n,o,l)&&o!==l,g=u>=ri||p,f=Vi(a,r+h,c+h);return g&&f}getCenterPoint(e){const{x:t,y:s,startAngle:i,endAngle:n,innerRadius:a,outerRadius:o}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius"],e),{offset:l,spacing:r}=this.options,c=(i+n)/2,d=(a+o+r+l)/2;return{x:t+Math.cos(c)*d,y:s+Math.sin(c)*d}}tooltipPosition(e){return this.getCenterPoint(e)}draw(e){const{options:t,circumference:s}=this,i=(t.offset||0)/4,n=(t.spacing||0)/2,a=t.circular;if(this.pixelMargin="inner"===t.borderAlign?.33:0,this.fullCircles=s>ri?Math.floor(s/ri):0,0===s||this.innerRadius<0||this.outerRadius<0)return;e.save();const o=(this.startAngle+this.endAngle)/2;e.translate(Math.cos(o)*i,Math.sin(o)*i);const l=1-Math.sin(Math.min(li,s||0)),r=i*l;e.fillStyle=t.backgroundColor,e.strokeStyle=t.borderColor,Fc(e,this,r,n,a),Tc(e,this,r,n,a),e.restore()}}function Pc(e,t,s=t){e.lineCap=Ws(s.borderCapStyle,t.borderCapStyle),e.setLineDash(Ws(s.borderDash,t.borderDash)),e.lineDashOffset=Ws(s.borderDashOffset,t.borderDashOffset),e.lineJoin=Ws(s.borderJoinStyle,t.borderJoinStyle),e.lineWidth=Ws(s.borderWidth,t.borderWidth),e.strokeStyle=Ws(s.borderColor,t.borderColor)}function Dc(e,t,s){e.lineTo(s.x,s.y)}function Ac(e){return e.stepped?$n:e.tension||"monotone"===e.cubicInterpolationMode?Ln:Dc}function $c(e,t,s={}){const i=e.length,{start:n=0,end:a=i-1}=s,{start:o,end:l}=t,r=Math.max(n,o),c=Math.min(a,l),d=nl&&a>l;return{count:i,start:r,loop:t.loop,ilen:c(o+(c?l-e:e))%a,x=()=>{p!==g&&(e.lineTo(m,g),e.lineTo(m,p),e.lineTo(m,f))};for(r&&(h=n[y(0)],e.moveTo(h.x,h.y)),d=0;d<=l;++d){if(h=n[y(d)],h.skip)continue;const t=h.x,s=h.y,i=0|t;i===u?(sg&&(g=s),m=(b*m+t)/++b):(x(),e.lineTo(t,s),u=i,b=0,p=g=s),f=s}x()}function Ec(e){const t=e.options,s=t.borderDash&&t.borderDash.length,i=!e._decimated&&!e._loop&&!t.tension&&"monotone"!==t.cubicInterpolationMode&&!t.stepped&&!s;return i?Vc:Lc}function Ic(e){return e.stepped?ja:e.tension||"monotone"===e.cubicInterpolationMode?Ha:Na}function Uc(e,t,s,i){let n=t._path;n||(n=t._path=new Path2D,t.path(n,s,i)&&n.closePath()),Pc(e,t.options),e.stroke(n)}function Oc(e,t,s,i){const{segments:n,options:a}=t,o=Ec(t);for(const l of n)Pc(e,a,l.style),e.beginPath(),o(e,t,l,{start:s,end:s+i-1})&&e.closePath(),e.stroke()}(0,Bt.A)(Mc,"id","arc"),(0,Bt.A)(Mc,"defaults",{borderAlign:"center",borderColor:"#fff",borderDash:[],borderDashOffset:0,borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0,circular:!0,selfJoin:!1}),(0,Bt.A)(Mc,"defaultRoutes",{backgroundColor:"backgroundColor"}),(0,Bt.A)(Mc,"descriptors",{_scriptable:!0,_indexable:e=>"borderDash"!==e});const Rc="function"===typeof Path2D;function Wc(e,t,s,i){Rc&&!t.options.segment?Uc(e,t,s,i):Oc(e,t,s,i)}class Bc extends cr{constructor(e){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,e&&Object.assign(this,e)}updateControlPoints(e,t){const s=this.options;if((s.tension||"monotone"===s.cubicInterpolationMode)&&!s.stepped&&!this._pointsUpdated){const i=s.spanGaps?this._loop:this._fullLoop;Fa(this._points,s,e,i,t),this._pointsUpdated=!0}}set points(e){this._points=e,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=no(this,this.options.segment))}first(){const e=this.segments,t=this.points;return e.length&&t[e[0].start]}last(){const e=this.segments,t=this.points,s=e.length;return s&&t[e[s-1].end]}interpolate(e,t){const s=this.options,i=e[t],n=this.points,a=to(this,{property:t,start:i,end:i});if(!a.length)return;const o=[],l=Ic(s);let r,c;for(r=0,c=a.length;r"borderDash"!==e&&"fill"!==e});class Nc extends cr{constructor(e){super(),(0,Bt.A)(this,"parsed",void 0),(0,Bt.A)(this,"skip",void 0),(0,Bt.A)(this,"stop",void 0),this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,e&&Object.assign(this,e)}inRange(e,t,s){const i=this.options,{x:n,y:a}=this.getProps(["x","y"],s);return Math.pow(e-n,2)+Math.pow(t-a,2){t=id(e,t,n);const o=n[e],l=n[t];null!==i?(a.push({x:o.x,y:i}),a.push({x:l.x,y:i})):null!==s&&(a.push({x:s,y:o.y}),a.push({x:s,y:l.y}))}),a}function id(e,t,s){for(;t>e;t--){const e=s[t];if(!isNaN(e.x)&&!isNaN(e.y))break}return t}function nd(e,t,s,i){return e&&t?i(e[s],t[s]):e?e[s]:t?t[s]:0}function ad(e,t){let s=[],i=!1;return Is(e)?(i=!0,s=e):s=sd(e,t),s.length?new Bc({points:s,options:{tension:0},_loop:i,_fullLoop:i}):null}function od(e){return e&&!1!==e.fill}function ld(e,t,s){const i=e[t];let n=i.fill;const a=[t];let o;if(!s)return n;while(!1!==n&&-1===a.indexOf(n)){if(!Os(n))return n;if(o=e[n],!o)return!1;if(o.visible)return n;a.push(n),n=o.fill}return!1}function rd(e,t,s){const i=ud(e);if(Us(i))return!isNaN(i.value)&&i;let n=parseFloat(i);return Os(n)&&Math.floor(n)===n?cd(i[0],t,n,s):["origin","start","end","stack","shape"].indexOf(i)>=0&&i}function cd(e,t,s,i){return"-"!==e&&"+"!==e||(s=t+s),!(s===t||s<0||s>=i)&&s}function dd(e,t){let s=null;return"start"===e?s=t.bottom:"end"===e?s=t.top:Us(e)?s=t.getPixelForValue(e.value):t.getBasePixel&&(s=t.getBasePixel()),s}function hd(e,t,s){let i;return i="start"===e?s:"end"===e?t.options.reverse?t.min:t.max:Us(e)?e.value:t.getBaseValue(),i}function ud(e){const t=e.options,s=t.fill;let i=Ws(s&&s.target,s);return void 0===i&&(i=!!t.backgroundColor),!1!==i&&null!==i&&(!0===i?"origin":i)}function pd(e){const{scale:t,index:s,line:i}=e,n=[],a=i.segments,o=i.points,l=gd(t,s);l.push(ad({x:null,y:t.bottom},i));for(let r=0;r=0;--o){const t=n[o].$filler;t&&(t.line.updateControlPoints(a,t.axis),i&&t.fill&&wd(e.ctx,t,a))}},beforeDatasetsDraw(e,t,s){if("beforeDatasetsDraw"!==s.drawTime)return;const i=e.getSortedVisibleDatasetMetas();for(let n=i.length-1;n>=0;--n){const t=i[n].$filler;od(t)&&wd(e.ctx,t,e.chartArea)}},beforeDatasetDraw(e,t,s){const i=t.meta.$filler;od(i)&&"beforeDatasetDraw"===s.drawTime&&wd(e.ctx,i,e.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const Ad=(e,t)=>{let{boxHeight:s=t,boxWidth:i=t}=e;return e.usePointStyle&&(s=Math.min(s,t),i=e.pointStyleWidth||Math.min(i,t)),{boxWidth:i,boxHeight:s,itemHeight:Math.max(t,s)}},$d=(e,t)=>null!==e&&null!==t&&e.datasetIndex===t.datasetIndex&&e.index===t.index;class Ld extends cr{constructor(e){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=e.chart,this.options=e.options,this.ctx=e.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(e,t,s){this.maxWidth=e,this.maxHeight=t,this._margins=s,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const e=this.options.labels||{};let t=Ns(e.generateLabels,[this.chart],this)||[];e.filter&&(t=t.filter(t=>e.filter(t,this.chart.data))),e.sort&&(t=t.sort((t,s)=>e.sort(t,s,this.chart.data))),this.options.reverse&&t.reverse(),this.legendItems=t}fit(){const{options:e,ctx:t}=this;if(!e.display)return void(this.width=this.height=0);const s=e.labels,i=Xn(s.font),n=i.size,a=this._computeTitleHeight(),{boxWidth:o,itemHeight:l}=Ad(s,n);let r,c;t.font=i.string,this.isHorizontal()?(r=this.maxWidth,c=this._fitRows(a,n,o,l)+10):(c=this.maxHeight,r=this._fitCols(a,i,o,l)+10),this.width=Math.min(r,e.maxWidth||this.maxWidth),this.height=Math.min(c,e.maxHeight||this.maxHeight)}_fitRows(e,t,s,i){const{ctx:n,maxWidth:a,options:{labels:{padding:o}}}=this,l=this.legendHitBoxes=[],r=this.lineWidths=[0],c=i+o;let d=e;n.textAlign="left",n.textBaseline="middle";let h=-1,u=-c;return this.legendItems.forEach((e,p)=>{const g=s+t/2+n.measureText(e.text).width;(0===p||r[r.length-1]+g+2*o>a)&&(d+=c,r[r.length-(p>0?0:1)]=0,u+=c,h++),l[p]={left:0,top:u,row:h,width:g,height:i},r[r.length-1]+=g+o}),d}_fitCols(e,t,s,i){const{ctx:n,maxHeight:a,options:{labels:{padding:o}}}=this,l=this.legendHitBoxes=[],r=this.columnSizes=[],c=a-e;let d=o,h=0,u=0,p=0,g=0;return this.legendItems.forEach((e,a)=>{const{itemWidth:f,itemHeight:m}=Vd(s,t,n,e,i);a>0&&u+m+2*o>c&&(d+=h+o,r.push({width:h,height:u}),p+=h+o,g++,h=u=0),l[a]={left:p,top:u,col:g,width:f,height:m},h=Math.max(h,f),u+=m+o}),d+=h,r.push({width:h,height:u}),d}adjustHitBoxes(){if(!this.options.display)return;const e=this._computeTitleHeight(),{legendHitBoxes:t,options:{align:s,labels:{padding:i},rtl:n}}=this,a=Ka(n,this.left,this.width);if(this.isHorizontal()){let n=0,o=Xi(s,this.left+i,this.right-this.lineWidths[n]);for(const l of t)n!==l.row&&(n=l.row,o=Xi(s,this.left+i,this.right-this.lineWidths[n])),l.top+=this.top+e+i,l.left=a.leftForLtr(a.x(o),l.width),o+=l.width+i}else{let n=0,o=Xi(s,this.top+e+i,this.bottom-this.columnSizes[n].height);for(const l of t)l.col!==n&&(n=l.col,o=Xi(s,this.top+e+i,this.bottom-this.columnSizes[n].height)),l.top=o,l.left+=this.left+i,l.left=a.leftForLtr(a.x(l.left),l.width),o+=l.height+i}}isHorizontal(){return"top"===this.options.position||"bottom"===this.options.position}draw(){if(this.options.display){const e=this.ctx;Dn(e,this),this._draw(),An(e)}}_draw(){const{options:e,columnSizes:t,lineWidths:s,ctx:i}=this,{align:n,labels:a}=e,o=kn.color,l=Ka(e.rtl,this.left,this.width),r=Xn(a.font),{padding:c}=a,d=r.size,h=d/2;let u;this.drawTitle(),i.textAlign=l.textAlign("left"),i.textBaseline="middle",i.lineWidth=.5,i.font=r.string;const{boxWidth:p,boxHeight:g,itemHeight:f}=Ad(a,d),m=function(e,t,s){if(isNaN(p)||p<=0||isNaN(g)||g<0)return;i.save();const n=Ws(s.lineWidth,1);if(i.fillStyle=Ws(s.fillStyle,o),i.lineCap=Ws(s.lineCap,"butt"),i.lineDashOffset=Ws(s.lineDashOffset,0),i.lineJoin=Ws(s.lineJoin,"miter"),i.lineWidth=n,i.strokeStyle=Ws(s.strokeStyle,o),i.setLineDash(Ws(s.lineDash,[])),a.usePointStyle){const o={radius:g*Math.SQRT2/2,pointStyle:s.pointStyle,rotation:s.rotation,borderWidth:n},r=l.xPlus(e,p/2),c=t+h;Mn(i,o,r,c,a.pointStyleWidth&&p)}else{const a=t+Math.max((d-g)/2,0),o=l.leftForLtr(e,p),r=Hn(s.borderRadius);i.beginPath(),Object.values(r).some(e=>0!==e)?On(i,{x:o,y:a,w:p,h:g,radius:r}):i.rect(o,a,p,g),i.fill(),0!==n&&i.stroke()}i.restore()},b=function(e,t,s){Un(i,s.text,e,t+f/2,r,{strikethrough:s.hidden,textAlign:l.textAlign(s.textAlign)})},y=this.isHorizontal(),x=this._computeTitleHeight();u=y?{x:Xi(n,this.left+c,this.right-s[0]),y:this.top+c+x,line:0}:{x:this.left+c,y:Xi(n,this.top+x+c,this.bottom-t[0].height),line:0},Qa(this.ctx,e.textDirection);const v=f+c;this.legendItems.forEach((o,d)=>{i.strokeStyle=o.fontColor,i.fillStyle=o.fontColor;const g=i.measureText(o.text).width,f=l.textAlign(o.textAlign||(o.textAlign=a.textAlign)),k=p+h+g;let _=u.x,w=u.y;l.setWidth(this.width),y?d>0&&_+k+c>this.right&&(w=u.y+=v,u.line++,_=u.x=Xi(n,this.left+c,this.right-s[u.line])):d>0&&w+v>this.bottom&&(_=u.x=_+t[u.line].width+c,u.line++,w=u.y=Xi(n,this.top+x+c,this.bottom-t[u.line].height));const C=l.x(_);if(m(C,w,o),_=Ki(f,_+p+h,y?_+k:this.right,e.rtl),b(l.x(_),w,o),y)u.x+=k+c;else if("string"!==typeof o.text){const e=r.lineHeight;u.y+=Ud(o,e)+c}else u.y+=v}),Ya(this.ctx,e.textDirection)}drawTitle(){const e=this.options,t=e.title,s=Xn(t.font),i=qn(t.padding);if(!t.display)return;const n=Ka(e.rtl,this.left,this.width),a=this.ctx,o=t.position,l=s.size/2,r=i.top+l;let c,d=this.left,h=this.width;if(this.isHorizontal())h=Math.max(...this.lineWidths),c=this.top+r,d=Xi(e.align,d,this.right-h);else{const t=this.columnSizes.reduce((e,t)=>Math.max(e,t.height),0);c=r+Xi(e.align,this.top,this.bottom-t-e.labels.padding-this._computeTitleHeight())}const u=Xi(o,d,d+h);a.textAlign=n.textAlign(qi(o)),a.textBaseline="middle",a.strokeStyle=t.color,a.fillStyle=t.color,a.font=s.string,Un(a,t.text,u,c,s)}_computeTitleHeight(){const e=this.options.title,t=Xn(e.font),s=qn(e.padding);return e.display?t.lineHeight+s.height:0}_getLegendItemAt(e,t){let s,i,n;if(Vi(e,this.left,this.right)&&Vi(t,this.top,this.bottom))for(n=this.legendHitBoxes,s=0;se.length>t.length?e:t)),t+s.size/2+i.measureText(n).width}function Id(e,t,s){let i=e;return"string"!==typeof t.text&&(i=Ud(t,s)),i}function Ud(e,t){const s=e.text?e.text.length:0;return t*s}function Od(e,t){return!("mousemove"!==e&&"mouseout"!==e||!t.onHover&&!t.onLeave)||!(!t.onClick||"click"!==e&&"mouseup"!==e)}var Rd={id:"legend",_element:Ld,start(e,t,s){const i=e.legend=new Ld({ctx:e.ctx,options:s,chart:e});Rl.configure(e,i,s),Rl.addBox(e,i)},stop(e){Rl.removeBox(e,e.legend),delete e.legend},beforeUpdate(e,t,s){const i=e.legend;Rl.configure(e,i,s),i.options=s},afterUpdate(e){const t=e.legend;t.buildLabels(),t.adjustHitBoxes()},afterEvent(e,t){t.replay||e.legend.handleEvent(t.event)},defaults:{display:!0,position:"top",align:"center",fullSize:!0,reverse:!1,weight:1e3,onClick(e,t,s){const i=t.datasetIndex,n=s.chart;n.isDatasetVisible(i)?(n.hide(i),t.hidden=!0):(n.show(i),t.hidden=!1)},onHover:null,onLeave:null,labels:{color:e=>e.chart.options.color,boxWidth:40,padding:10,generateLabels(e){const t=e.data.datasets,{labels:{usePointStyle:s,pointStyle:i,textAlign:n,color:a,useBorderRadius:o,borderRadius:l}}=e.legend.options;return e._getSortedDatasetMetas().map(e=>{const r=e.controller.getStyle(s?0:void 0),c=qn(r.borderWidth);return{text:t[e.index].label,fillStyle:r.backgroundColor,fontColor:a,hidden:!e.visible,lineCap:r.borderCapStyle,lineDash:r.borderDash,lineDashOffset:r.borderDashOffset,lineJoin:r.borderJoinStyle,lineWidth:(c.width+c.height)/4,strokeStyle:r.borderColor,pointStyle:i||r.pointStyle,rotation:r.rotation,textAlign:n||r.textAlign,borderRadius:o&&(l||r.borderRadius),datasetIndex:e.index}},this)}},title:{color:e=>e.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:e=>!e.startsWith("on"),labels:{_scriptable:e=>!["generateLabels","filter","sort"].includes(e)}}};new WeakMap;const Wd={average(e){if(!e.length)return!1;let t,s,i=new Set,n=0,a=0;for(t=0,s=e.length;te+t)/i.size;return{x:o,y:n/a}},nearest(e,t){if(!e.length)return!1;let s,i,n,a=t.x,o=t.y,l=Number.POSITIVE_INFINITY;for(s=0,i=e.length;s-1?e.split("\n"):e}function Nd(e,t){const{element:s,datasetIndex:i,index:n}=t,a=e.getDatasetMeta(i).controller,{label:o,value:l}=a.getLabelAndValue(n);return{chart:e,label:o,parsed:a.getParsed(n),raw:e.data.datasets[i].data[n],formattedValue:l,dataset:a.getDataset(),dataIndex:n,datasetIndex:i,element:s}}function jd(e,t){const s=e.chart.ctx,{body:i,footer:n,title:a}=e,{boxWidth:o,boxHeight:l}=t,r=Xn(t.bodyFont),c=Xn(t.titleFont),d=Xn(t.footerFont),h=a.length,u=n.length,p=i.length,g=qn(t.padding);let f=g.height,m=0,b=i.reduce((e,t)=>e+t.before.length+t.lines.length+t.after.length,0);if(b+=e.beforeBody.length+e.afterBody.length,h&&(f+=h*c.lineHeight+(h-1)*t.titleSpacing+t.titleMarginBottom),b){const e=t.displayColors?Math.max(l,r.lineHeight):r.lineHeight;f+=p*e+(b-p)*r.lineHeight+(b-1)*t.bodySpacing}u&&(f+=t.footerMarginTop+u*d.lineHeight+(u-1)*t.footerSpacing);let y=0;const x=function(e){m=Math.max(m,s.measureText(e).width+y)};return s.save(),s.font=c.string,js(e.title,x),s.font=r.string,js(e.beforeBody.concat(e.afterBody),x),y=t.displayColors?o+2+t.boxPadding:0,js(i,e=>{js(e.before,x),js(e.lines,x),js(e.after,x)}),y=0,s.font=d.string,js(e.footer,x),s.restore(),m+=g.width,{width:m,height:f}}function Hd(e,t){const{y:s,height:i}=t;return se.height-i/2?"bottom":"center"}function qd(e,t,s,i){const{x:n,width:a}=i,o=s.caretSize+s.caretPadding;return"left"===e&&n+a+o>t.width||("right"===e&&n-a-o<0||void 0)}function Xd(e,t,s,i){const{x:n,width:a}=s,{width:o,chartArea:{left:l,right:r}}=e;let c="center";return"center"===i?c=n<=(l+r)/2?"left":"right":n<=a/2?c="left":n>=o-a/2&&(c="right"),qd(c,e,t,s)&&(c="center"),c}function Kd(e,t,s){const i=s.yAlign||t.yAlign||Hd(e,s);return{xAlign:s.xAlign||t.xAlign||Xd(e,t,s,i),yAlign:i}}function Qd(e,t){let{x:s,width:i}=e;return"right"===t?s-=i:"center"===t&&(s-=i/2),s}function Yd(e,t,s){let{y:i,height:n}=e;return"top"===t?i+=s:i-="bottom"===t?n+s:n/2,i}function Gd(e,t,s,i){const{caretSize:n,caretPadding:a,cornerRadius:o}=e,{xAlign:l,yAlign:r}=s,c=n+a,{topLeft:d,topRight:h,bottomLeft:u,bottomRight:p}=Hn(o);let g=Qd(t,l);const f=Yd(t,r,c);return"center"===r?"left"===l?g+=c:"right"===l&&(g-=c):"left"===l?g-=Math.max(d,u)+n:"right"===l&&(g+=Math.max(h,p)+n),{x:$i(g,0,i.width-t.width),y:$i(f,0,i.height-t.height)}}function Jd(e,t,s){const i=qn(s.padding);return"center"===t?e.x+e.width/2:"right"===t?e.x+e.width-i.right:e.x+i.left}function Zd(e){return Bd([],zd(e))}function eh(e,t,s){return Yn(e,{tooltip:t,tooltipItems:s,type:"tooltip"})}function th(e,t){const s=t&&t.dataset&&t.dataset.tooltip&&t.dataset.tooltip.callbacks;return s?e.override(s):e}const sh={beforeTitle:Ls,title(e){if(e.length>0){const t=e[0],s=t.chart.data.labels,i=s?s.length:0;if(this&&this.options&&"dataset"===this.options.mode)return t.dataset.label||"";if(t.label)return t.label;if(i>0&&t.dataIndex{const t={before:[],lines:[],after:[]},n=th(s,e);Bd(t.before,zd(ih(n,"beforeLabel",this,e))),Bd(t.lines,ih(n,"label",this,e)),Bd(t.after,zd(ih(n,"afterLabel",this,e))),i.push(t)}),i}getAfterBody(e,t){return Zd(ih(t.callbacks,"afterBody",this,e))}getFooter(e,t){const{callbacks:s}=t,i=ih(s,"beforeFooter",this,e),n=ih(s,"footer",this,e),a=ih(s,"afterFooter",this,e);let o=[];return o=Bd(o,zd(i)),o=Bd(o,zd(n)),o=Bd(o,zd(a)),o}_createItems(e){const t=this._active,s=this.chart.data,i=[],n=[],a=[];let o,l,r=[];for(o=0,l=t.length;oe.filter(t,i,n,s))),e.itemSort&&(r=r.sort((t,i)=>e.itemSort(t,i,s))),js(r,t=>{const s=th(e.callbacks,t);i.push(ih(s,"labelColor",this,t)),n.push(ih(s,"labelPointStyle",this,t)),a.push(ih(s,"labelTextColor",this,t))}),this.labelColors=i,this.labelPointStyles=n,this.labelTextColors=a,this.dataPoints=r,r}update(e,t){const s=this.options.setContext(this.getContext()),i=this._active;let n,a=[];if(i.length){const e=Wd[s.position].call(this,i,this._eventPosition);a=this._createItems(s),this.title=this.getTitle(a,s),this.beforeBody=this.getBeforeBody(a,s),this.body=this.getBody(a,s),this.afterBody=this.getAfterBody(a,s),this.footer=this.getFooter(a,s);const t=this._size=jd(this,s),o=Object.assign({},e,t),l=Kd(this.chart,s,o),r=Gd(s,o,l,this.chart);this.xAlign=l.xAlign,this.yAlign=l.yAlign,n={opacity:1,x:r.x,y:r.y,width:t.width,height:t.height,caretX:e.x,caretY:e.y}}else 0!==this.opacity&&(n={opacity:0});this._tooltipItems=a,this.$context=void 0,n&&this._resolveAnimations().update(this,n),e&&s.external&&s.external.call(this,{chart:this.chart,tooltip:this,replay:t})}drawCaret(e,t,s,i){const n=this.getCaretPosition(e,s,i);t.lineTo(n.x1,n.y1),t.lineTo(n.x2,n.y2),t.lineTo(n.x3,n.y3)}getCaretPosition(e,t,s){const{xAlign:i,yAlign:n}=this,{caretSize:a,cornerRadius:o}=s,{topLeft:l,topRight:r,bottomLeft:c,bottomRight:d}=Hn(o),{x:h,y:u}=e,{width:p,height:g}=t;let f,m,b,y,x,v;return"center"===n?(x=u+g/2,"left"===i?(f=h,m=f-a,y=x+a,v=x-a):(f=h+p,m=f+a,y=x-a,v=x+a),b=f):(m="left"===i?h+Math.max(l,c)+a:"right"===i?h+p-Math.max(r,d)-a:this.caretX,"top"===n?(y=u,x=y-a,f=m-a,b=m+a):(y=u+g,x=y+a,f=m+a,b=m-a),v=y),{x1:f,x2:m,x3:b,y1:y,y2:x,y3:v}}drawTitle(e,t,s){const i=this.title,n=i.length;let a,o,l;if(n){const r=Ka(s.rtl,this.x,this.width);for(e.x=Jd(this,s.titleAlign,s),t.textAlign=r.textAlign(s.titleAlign),t.textBaseline="middle",a=Xn(s.titleFont),o=s.titleSpacing,t.fillStyle=s.titleColor,t.font=a.string,l=0;l0!==e)?(e.beginPath(),e.fillStyle=n.multiKeyBackground,On(e,{x:t,y:p,w:r,h:l,radius:o}),e.fill(),e.stroke(),e.fillStyle=a.backgroundColor,e.beginPath(),On(e,{x:s,y:p+1,w:r-2,h:l-2,radius:o}),e.fill()):(e.fillStyle=n.multiKeyBackground,e.fillRect(t,p,r,l),e.strokeRect(t,p,r,l),e.fillStyle=a.backgroundColor,e.fillRect(s,p+1,r-2,l-2))}e.fillStyle=this.labelTextColors[s]}drawBody(e,t,s){const{body:i}=this,{bodySpacing:n,bodyAlign:a,displayColors:o,boxHeight:l,boxWidth:r,boxPadding:c}=s,d=Xn(s.bodyFont);let h=d.lineHeight,u=0;const p=Ka(s.rtl,this.x,this.width),g=function(s){t.fillText(s,p.x(e.x+u),e.y+h/2),e.y+=h+n},f=p.textAlign(a);let m,b,y,x,v,k,_;for(t.textAlign=a,t.textBaseline="middle",t.font=d.string,e.x=Jd(this,f,s),t.fillStyle=s.bodyColor,js(this.beforeBody,g),u=o&&"right"!==f?"center"===a?r/2+c:r+2+c:0,x=0,k=i.length;x0&&t.stroke()}_updateAnimationTarget(e){const t=this.chart,s=this.$animations,i=s&&s.x,n=s&&s.y;if(i||n){const s=Wd[e.position].call(this,this._active,this._eventPosition);if(!s)return;const a=this._size=jd(this,e),o=Object.assign({},s,this._size),l=Kd(t,e,o),r=Gd(e,o,l,t);i._to===r.x&&n._to===r.y||(this.xAlign=l.xAlign,this.yAlign=l.yAlign,this.width=a.width,this.height=a.height,this.caretX=s.x,this.caretY=s.y,this._resolveAnimations().update(this,r))}}_willRender(){return!!this.opacity}draw(e){const t=this.options.setContext(this.getContext());let s=this.opacity;if(!s)return;this._updateAnimationTarget(t);const i={width:this.width,height:this.height},n={x:this.x,y:this.y};s=Math.abs(s)<.001?0:s;const a=qn(t.padding),o=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;t.enabled&&o&&(e.save(),e.globalAlpha=s,this.drawBackground(n,e,i,t),Qa(e,t.textDirection),n.y+=a.top,this.drawTitle(n,e,t),this.drawBody(n,e,t),this.drawFooter(n,e,t),Ya(e,t.textDirection),e.restore())}getActiveElements(){return this._active||[]}setActiveElements(e,t){const s=this._active,i=e.map(({datasetIndex:e,index:t})=>{const s=this.chart.getDatasetMeta(e);if(!s)throw new Error("Cannot find a dataset at index "+e);return{datasetIndex:e,element:s.data[t],index:t}}),n=!Hs(s,i),a=this._positionChanged(i,t);(n||a)&&(this._active=i,this._eventPosition=t,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(e,t,s=!0){if(t&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const i=this.options,n=this._active||[],a=this._getActiveElements(e,n,t,s),o=this._positionChanged(a,e),l=t||!Hs(a,n)||o;return l&&(this._active=a,(i.enabled||i.external)&&(this._eventPosition={x:e.x,y:e.y},this.update(!0,t))),l}_getActiveElements(e,t,s,i){const n=this.options;if("mouseout"===e.type)return[];if(!i)return t.filter(e=>this.chart.data.datasets[e.datasetIndex]&&void 0!==this.chart.getDatasetMeta(e.datasetIndex).controller.getParsed(e.index));const a=this.chart.getElementsAtEventForMode(e,n.mode,n,s);return n.reverse&&a.reverse(),a}_positionChanged(e,t){const{caretX:s,caretY:i,options:n}=this,a=Wd[n.position].call(this,e,t);return!1!==a&&(s!==a.x||i!==a.y)}}(0,Bt.A)(nh,"positioners",Wd);var ah={id:"tooltip",_element:nh,positioners:Wd,afterInit(e,t,s){s&&(e.tooltip=new nh({chart:e,options:s}))},beforeUpdate(e,t,s){e.tooltip&&e.tooltip.initialize(s)},reset(e,t,s){e.tooltip&&e.tooltip.initialize(s)},afterDraw(e){const t=e.tooltip;if(t&&t._willRender()){const s={tooltip:t};if(!1===e.notifyPlugins("beforeTooltipDraw",{...s,cancelable:!0}))return;t.draw(e.ctx),e.notifyPlugins("afterTooltipDraw",s)}},afterEvent(e,t){if(e.tooltip){const s=t.replay;e.tooltip.handleEvent(t.event,s,t.inChartArea)&&(t.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(e,t)=>t.bodyFont.size,boxWidth:(e,t)=>t.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:sh},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:e=>"filter"!==e&&"itemSort"!==e&&"external"!==e,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};const oh=(e,t,s,i)=>("string"===typeof t?(s=e.push(t)-1,i.unshift({index:s,label:t})):isNaN(t)&&(s=null),s);function lh(e,t,s,i){const n=e.indexOf(t);if(-1===n)return oh(e,t,s,i);const a=e.lastIndexOf(t);return n!==a?s:n}const rh=(e,t)=>null===e?null:$i(Math.round(e),0,t);function ch(e){const t=this.getLabels();return e>=0&&et.length-1?null:this.getPixelForValue(t[e].value)}getValueForPixel(e){return Math.round(this._startValue+this.getDecimalForPixel(e)*this._valueRange)}getBasePixel(){return this.bottom}}function hh(e,t){const s=[],i=1e-14,{bounds:n,step:a,min:o,max:l,precision:r,count:c,maxTicks:d,maxDigits:h,includeBounds:u}=e,p=a||1,g=d-1,{min:f,max:m}=t,b=!Es(o),y=!Es(l),x=!Es(c),v=(m-f)/(h+1);let k,_,w,C,S=yi((m-f)/g/p)*p;if(Sg&&(S=yi(C*S/g/p)*p),Es(r)||(k=Math.pow(10,r),S=Math.ceil(S*k)/k),"ticks"===n?(_=Math.floor(f/S)*S,w=Math.ceil(m/S)*S):(_=f,w=m),b&&y&&a&&_i((l-o)/a,S/1e3)?(C=Math.round(Math.min((l-o)/S,d)),S=(l-o)/C,_=o,w=l):x?(_=b?o:_,w=y?l:w,C=c-1,S=(w-_)/C):(C=(w-_)/S,C=bi(C,Math.round(C),S/1e3)?Math.round(C):Math.ceil(C));const F=Math.max(Fi(S),Fi(_));k=Math.pow(10,Es(r)?F:r),_=Math.round(_*k)/k,w=Math.round(w*k)/k;let T=0;for(b&&(u&&_!==o?(s.push({value:o}),_l)break;s.push({value:e})}return y&&u&&w!==l?s.length&&bi(s[s.length-1].value,l,uh(l,v,e))?s[s.length-1].value=l:s.push({value:l}):y&&w!==l||s.push({value:w}),s}function uh(e,t,{horizontal:s,minRotation:i}){const n=Ci(i),a=(s?Math.sin(n):Math.cos(n))||.001,o=.75*t*(""+e).length;return Math.min(t/a,o)}(0,Bt.A)(dh,"id","category"),(0,Bt.A)(dh,"defaults",{ticks:{callback:ch}});class ph extends Pr{constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(e,t){return Es(e)||("number"===typeof e||e instanceof Number)&&!isFinite(+e)?null:+e}handleTickRangeOptions(){const{beginAtZero:e}=this.options,{minDefined:t,maxDefined:s}=this.getUserBounds();let{min:i,max:n}=this;const a=e=>i=t?i:e,o=e=>n=s?n:e;if(e){const e=mi(i),t=mi(n);e<0&&t<0?o(0):e>0&&t>0&&a(0)}if(i===n){let t=0===n?1:Math.abs(.05*n);o(n+t),e||a(i-t)}this.min=i,this.max=n}getTickLimit(){const e=this.options.ticks;let t,{maxTicksLimit:s,stepSize:i}=e;return i?(t=Math.ceil(this.max/i)-Math.floor(this.min/i)+1,t>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${i} would result generating up to ${t} ticks. Limiting to 1000.`),t=1e3)):(t=this.computeTickLimit(),s=s||11),s&&(t=Math.min(s,t)),t}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const e=this.options,t=e.ticks;let s=this.getTickLimit();s=Math.max(2,s);const i={maxTicks:s,bounds:e.bounds,min:e.min,max:e.max,precision:t.precision,step:t.stepSize,count:t.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:t.minRotation||0,includeBounds:!1!==t.includeBounds},n=this._range||this,a=hh(i,n);return"ticks"===e.bounds&&wi(a,this,"value"),e.reverse?(a.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),a}configure(){const e=this.ticks;let t=this.min,s=this.max;if(super.configure(),this.options.offset&&e.length){const i=(s-t)/Math.max(e.length-1,1)/2;t-=i,s+=i}this._startValue=t,this._endValue=s,this._valueRange=s-t}getLabelForValue(e){return hn(e,this.chart.options.locale,this.options.ticks.format)}}class gh extends ph{determineDataLimits(){const{min:e,max:t}=this.getMinMax(!0);this.min=Os(e)?e:0,this.max=Os(t)?t:1,this.handleTickRangeOptions()}computeTickLimit(){const e=this.isHorizontal(),t=e?this.width:this.height,s=Ci(this.options.ticks.minRotation),i=(e?Math.sin(s):Math.cos(s))||.001,n=this._resolveTickFontOptions(0);return Math.ceil(t/Math.min(40,n.lineHeight/i))}getPixelForValue(e){return null===e?NaN:this.getPixelForDecimal((e-this._startValue)/this._valueRange)}getValueForPixel(e){return this._startValue+this.getDecimalForPixel(e)*this._valueRange}}(0,Bt.A)(gh,"id","linear"),(0,Bt.A)(gh,"defaults",{ticks:{callback:gn.formatters.numeric}});const fh=e=>Math.floor(fi(e)),mh=(e,t)=>Math.pow(10,fh(e)+t);function bh(e){const t=e/Math.pow(10,fh(e));return 1===t}function yh(e,t,s){const i=Math.pow(10,s),n=Math.floor(e/i),a=Math.ceil(t/i);return a-n}function xh(e,t){const s=t-e;let i=fh(s);while(yh(e,t,i)>10)i++;while(yh(e,t,i)<10)i--;return Math.min(i,fh(e))}function vh(e,{min:t,max:s}){t=Rs(e.min,t);const i=[],n=fh(t);let a=xh(t,s),o=a<0?Math.pow(10,Math.abs(a)):1;const l=Math.pow(10,a),r=n>a?Math.pow(10,n):0,c=Math.round((t-r)*o)/o,d=Math.floor((t-r)/l/10)*l*10;let h=Math.floor((c-d)/Math.pow(10,a)),u=Rs(e.min,Math.round((r+d+h*Math.pow(10,a))*o)/o);while(u=10?h=h<15?15:20:h++,h>=20&&(a++,h=2,o=a>=0?1:o),u=Math.round((r+d+h*Math.pow(10,a))*o)/o;const p=Rs(e.max,u);return i.push({value:p,major:bh(p),significand:h}),i}class kh extends Pr{constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(e,t){const s=ph.prototype.parse.apply(this,[e,t]);if(0!==s)return Os(s)&&s>0?s:null;this._zero=!0}determineDataLimits(){const{min:e,max:t}=this.getMinMax(!0);this.min=Os(e)?Math.max(0,e):null,this.max=Os(t)?Math.max(0,t):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!Os(this._userMin)&&(this.min=e===mh(this.min,0)?mh(this.min,-1):mh(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:e,maxDefined:t}=this.getUserBounds();let s=this.min,i=this.max;const n=t=>s=e?s:t,a=e=>i=t?i:e;s===i&&(s<=0?(n(1),a(10)):(n(mh(s,-1)),a(mh(i,1)))),s<=0&&n(mh(i,-1)),i<=0&&a(mh(s,1)),this.min=s,this.max=i}buildTicks(){const e=this.options,t={min:this._userMin,max:this._userMax},s=vh(t,this);return"ticks"===e.bounds&&wi(s,this,"value"),e.reverse?(s.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),s}getLabelForValue(e){return void 0===e?"0":hn(e,this.chart.options.locale,this.options.ticks.format)}configure(){const e=this.min;super.configure(),this._startValue=fi(e),this._valueRange=fi(this.max)-fi(e)}getPixelForValue(e){return void 0!==e&&0!==e||(e=this.min),null===e||isNaN(e)?NaN:this.getPixelForDecimal(e===this.min?0:(fi(e)-this._startValue)/this._valueRange)}getValueForPixel(e){const t=this.getDecimalForPixel(e);return Math.pow(10,this._startValue+t*this._valueRange)}}function _h(e){const t=e.ticks;if(t.display&&e.display){const e=qn(t.backdropPadding);return Ws(t.font&&t.font.size,kn.font.size)+e.height}return 0}function wh(e,t,s){return s=Is(s)?s:[s],{w:Cn(e,t.string,s),h:s.length*t.lineHeight}}function Ch(e,t,s,i,n){return e===i||e===n?{start:t-s/2,end:t+s/2}:en?{start:t-s,end:t}:{start:t,end:t+s}}function Sh(e){const t={l:e.left+e._padding.left,r:e.right-e._padding.right,t:e.top+e._padding.top,b:e.bottom-e._padding.bottom},s=Object.assign({},t),i=[],n=[],a=e._pointLabels.length,o=e.options.pointLabels,l=o.centerPointLabels?li/a:0;for(let r=0;rt.r&&(l=(i.end-t.r)/a,e.r=Math.max(e.r,t.r+l)),n.startt.b&&(r=(n.end-t.b)/o,e.b=Math.max(e.b,t.b+r))}function Th(e,t,s){const i=e.drawingArea,{extra:n,additionalAngle:a,padding:o,size:l}=s,r=e.getPointPosition(t,i+n+o,a),c=Math.round(Si(Di(r.angle+ui))),d=$h(r.y,l.h,c),h=Dh(c),u=Ah(r.x,l.w,h);return{visible:!0,x:r.x,y:d,textAlign:h,left:u,top:d,right:u+l.w,bottom:d+l.h}}function Mh(e,t){if(!t)return!0;const{left:s,top:i,right:n,bottom:a}=e,o=Pn({x:s,y:i},t)||Pn({x:s,y:a},t)||Pn({x:n,y:i},t)||Pn({x:n,y:a},t);return!o}function Ph(e,t,s){const i=[],n=e._pointLabels.length,a=e.options,{centerPointLabels:o,display:l}=a.pointLabels,r={extra:_h(a)/2,additionalAngle:o?li/n:0};let c;for(let d=0;d270||s<90)&&(e-=t),e}function Lh(e,t,s){const{left:i,top:n,right:a,bottom:o}=s,{backdropColor:l}=t;if(!Es(l)){const s=Hn(t.borderRadius),r=qn(t.backdropPadding);e.fillStyle=l;const c=i-r.left,d=n-r.top,h=a-i+r.width,u=o-n+r.height;Object.values(s).some(e=>0!==e)?(e.beginPath(),On(e,{x:c,y:d,w:h,h:u,radius:s}),e.fill()):e.fillRect(c,d,h,u)}}function Vh(e,t){const{ctx:s,options:{pointLabels:i}}=e;for(let n=t-1;n>=0;n--){const t=e._pointLabelItems[n];if(!t.visible)continue;const a=i.setContext(e.getPointLabelContext(n));Lh(s,a,t);const o=Xn(a.font),{x:l,y:r,textAlign:c}=t;Un(s,e._pointLabels[n],l,r+o.lineHeight/2,o,{color:a.color,textAlign:c,textBaseline:"middle"})}}function Eh(e,t,s,i){const{ctx:n}=e;if(s)n.arc(e.xCenter,e.yCenter,t,0,ri);else{let s=e.getPointPosition(0,t);n.moveTo(s.x,s.y);for(let a=1;a{const s=Ns(this.options.pointLabels.callback,[e,t],this);return s||0===s?s:""}).filter((e,t)=>this.chart.getDataVisibility(t))}fit(){const e=this.options;e.display&&e.pointLabels.display?Sh(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(e,t,s,i){this.xCenter+=Math.floor((e-t)/2),this.yCenter+=Math.floor((s-i)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(e,t,s,i))}getIndexAngle(e){const t=ri/(this._pointLabels.length||1),s=this.options.startAngle||0;return Di(e*t+Ci(s))}getDistanceFromCenterForValue(e){if(Es(e))return NaN;const t=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-e)*t:(e-this.min)*t}getValueForDistanceFromCenter(e){if(Es(e))return NaN;const t=e/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-t:this.min+t}getPointLabelContext(e){const t=this._pointLabels||[];if(e>=0&&e{if(0!==t||0===t&&this.min<0){l=this.getDistanceFromCenterForValue(e.value);const s=this.getContext(t),o=i.setContext(s),r=n.setContext(s);Ih(this,o,l,a,r)}}),s.display){for(e.save(),o=a-1;o>=0;o--){const i=s.setContext(this.getPointLabelContext(o)),{color:n,lineWidth:a}=i;a&&n&&(e.lineWidth=a,e.strokeStyle=n,e.setLineDash(i.borderDash),e.lineDashOffset=i.borderDashOffset,l=this.getDistanceFromCenterForValue(t.reverse?this.min:this.max),r=this.getPointPosition(o,l),e.beginPath(),e.moveTo(this.xCenter,this.yCenter),e.lineTo(r.x,r.y),e.stroke())}e.restore()}}drawBorder(){}drawLabels(){const e=this.ctx,t=this.options,s=t.ticks;if(!s.display)return;const i=this.getIndexAngle(0);let n,a;e.save(),e.translate(this.xCenter,this.yCenter),e.rotate(i),e.textAlign="center",e.textBaseline="middle",this.ticks.forEach((i,o)=>{if(0===o&&this.min>=0&&!t.reverse)return;const l=s.setContext(this.getContext(o)),r=Xn(l.font);if(n=this.getDistanceFromCenterForValue(this.ticks[o].value),l.showLabelBackdrop){e.font=r.string,a=e.measureText(i.label).width,e.fillStyle=l.backdropColor;const t=qn(l.backdropPadding);e.fillRect(-a/2-t.left,-n-r.size/2-t.top,a+t.width,r.size+t.height)}Un(e,i.label,0,-n,r,{color:l.color,strokeColor:l.textStrokeColor,strokeWidth:l.textStrokeWidth})}),e.restore()}drawTitle(){}}(0,Bt.A)(Oh,"id","radialLinear"),(0,Bt.A)(Oh,"defaults",{display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:gn.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback(e){return e},padding:5,centerPointLabels:!1}}),(0,Bt.A)(Oh,"defaultRoutes",{"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"}),(0,Bt.A)(Oh,"descriptors",{angleLines:{_fallback:"grid"}});const Rh={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},Wh=Object.keys(Rh);function Bh(e,t){return e-t}function zh(e,t){if(Es(t))return null;const s=e._adapter,{parser:i,round:n,isoWeekday:a}=e._parseOpts;let o=t;return"function"===typeof i&&(o=i(o)),Os(o)||(o="string"===typeof i?s.parse(o,i):s.parse(o)),null===o?null:(n&&(o="week"!==n||!ki(a)&&!0!==a?s.startOf(o,n):s.startOf(o,"isoWeek",a)),+o)}function Nh(e,t,s,i){const n=Wh.length;for(let a=Wh.indexOf(e);a=Wh.indexOf(s);a--){const s=Wh[a];if(Rh[s].common&&e._adapter.diff(n,i,s)>=t-1)return s}return Wh[s?Wh.indexOf(s):0]}function Hh(e){for(let t=Wh.indexOf(e)+1,s=Wh.length;t=t?s[i]:s[n];e[a]=!0}}else e[t]=!0}function Xh(e,t,s,i){const n=e._adapter,a=+n.startOf(t[0].value,i),o=t[t.length-1].value;let l,r;for(l=a;l<=o;l=+n.add(l,1,i))r=s[l],r>=0&&(t[r].major=!0);return t}function Kh(e,t,s){const i=[],n={},a=t.length;let o,l;for(o=0;o+e.value))}initOffsets(e=[]){let t,s,i=0,n=0;this.options.offset&&e.length&&(t=this.getDecimalForValue(e[0]),i=1===e.length?1-t:(this.getDecimalForValue(e[1])-t)/2,s=this.getDecimalForValue(e[e.length-1]),n=1===e.length?s:(s-this.getDecimalForValue(e[e.length-2]))/2);const a=e.length<3?.5:.25;i=$i(i,0,a),n=$i(n,0,a),this._offsets={start:i,end:n,factor:1/(i+1+n)}}_generate(){const e=this._adapter,t=this.min,s=this.max,i=this.options,n=i.time,a=n.unit||Nh(n.minUnit,t,s,this._getLabelCapacity(t)),o=Ws(i.ticks.stepSize,1),l="week"===a&&n.isoWeekday,r=ki(l)||!0===l,c={};let d,h,u=t;if(r&&(u=+e.startOf(u,"isoWeek",l)),u=+e.startOf(u,r?"day":a),e.diff(s,t,a)>1e5*o)throw new Error(t+" and "+s+" are too far apart with stepSize of "+o+" "+a);const p="data"===i.ticks.source&&this.getDataTimestamps();for(d=u,h=0;d+e)}getLabelForValue(e){const t=this._adapter,s=this.options.time;return s.tooltipFormat?t.format(e,s.tooltipFormat):t.format(e,s.displayFormats.datetime)}format(e,t){const s=this.options,i=s.time.displayFormats,n=this._unit,a=t||i[n];return this._adapter.format(e,a)}_tickFormatFunction(e,t,s,i){const n=this.options,a=n.ticks.callback;if(a)return Ns(a,[e,t,s],this);const o=n.time.displayFormats,l=this._unit,r=this._majorUnit,c=l&&o[l],d=r&&o[r],h=s[t],u=r&&d&&h&&h.major;return this._adapter.format(e,i||(u?d:c))}generateTickLabels(e){let t,s,i;for(t=0,s=e.length;t0?o:1}getDataTimestamps(){let e,t,s=this._cache.data||[];if(s.length)return s;const i=this.getMatchingVisibleMetas();if(this._normalized&&i.length)return this._cache.data=i[0].controller.getAllParsedValues(this);for(e=0,t=i.length;e=e[l].pos&&t<=e[r].pos&&({lo:l,hi:r}=Ii(e,"pos",t)),({pos:i,time:a}=e[l]),({pos:n,time:o}=e[r])):(t>=e[l].time&&t<=e[r].time&&({lo:l,hi:r}=Ii(e,"time",t)),({time:i,pos:a}=e[l]),({time:n,pos:o}=e[r]));const c=n-i;return c?a+(o-a)*(t-i)/c:a}(0,Bt.A)(Qh,"id","time"),(0,Bt.A)(Qh,"defaults",{bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",callback:!1,major:{enabled:!1}}});class Gh extends Qh{constructor(e){super(e),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const e=this._getTimestampsForTable(),t=this._table=this.buildLookupTable(e);this._minPos=Yh(t,this.min),this._tableRange=Yh(t,this.max)-this._minPos,super.initOffsets(e)}buildLookupTable(e){const{min:t,max:s}=this,i=[],n=[];let a,o,l,r,c;for(a=0,o=e.length;a=t&&r<=s&&i.push(r);if(i.length<2)return[{time:t,pos:0},{time:s,pos:1}];for(a=0,o=i.length;ae-t)}_getTimestampsForTable(){let e=this._cache.all||[];if(e.length)return e;const t=this.getDataTimestamps(),s=this.getLabelTimestamps();return e=t.length&&s.length?this.normalize(t.concat(s)):t.length?t:s,e=this._cache.all=e,e}getDecimalForValue(e){return(Yh(this._table,e)-this._minPos)/this._tableRange}getValueForPixel(e){const t=this._offsets,s=this.getDecimalForPixel(e)/t.factor-t.end;return Yh(this._table,s*this._tableRange+this._minPos,!0)}}(0,Bt.A)(Gh,"id","timeseries"),(0,Bt.A)(Gh,"defaults",Qh.defaults);var Jh=s(90144);const Zh={data:{type:Object,required:!0},options:{type:Object,default:()=>({})},plugins:{type:Array,default:()=>[]},datasetIdKey:{type:String,default:"label"},updateMode:{type:String,default:void 0}},eu={ariaLabel:{type:String},ariaDescribedby:{type:String}},tu={type:{type:String,required:!0},destroyDelay:{type:Number,default:0},...Zh,...eu},su="2"===i.rE[0]?(e,t)=>Object.assign(e,{attrs:t}):(e,t)=>Object.assign(e,t);function iu(e){return(0,Jh.ju)(e)?(0,Jh.ux)(e):e}function nu(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e;return(0,Jh.ju)(t)?new Proxy(e,{}):e}function au(e,t){const s=e.options;s&&t&&Object.assign(s,t)}function ou(e,t){e.labels=t}function lu(e,t,s){const i=[];e.datasets=t.map(t=>{const n=e.datasets.find(e=>e[s]===t[s]);return n&&t.data&&!i.includes(n)?(i.push(n),Object.assign(n,t),n):{...t}})}function ru(e,t){const s={labels:[],datasets:[]};return ou(s,e.labels),lu(s,e.datasets,t),s}const cu=(0,i.pM)({props:tu,setup(e,t){let{expose:s,slots:n}=t;const a=(0,Jh.KR)(null),o=(0,Jh.IJ)(null);s({chart:o});const l=()=>{if(!a.value)return;const{type:t,data:s,options:i,plugins:n,datasetIdKey:l}=e,r=ru(s,l),c=nu(r,s);o.value=new yc(a.value,{type:t,data:c,options:{...i},plugins:n})},r=()=>{const t=(0,Jh.ux)(o.value);t&&(e.destroyDelay>0?setTimeout(()=>{t.destroy(),o.value=null},e.destroyDelay):(t.destroy(),o.value=null))},c=t=>{t.update(e.updateMode)};return(0,i.sV)(l),(0,i.hi)(r),(0,i.wB)([()=>e.options,()=>e.data],(t,s)=>{let[n,a]=t,[l,r]=s;const d=(0,Jh.ux)(o.value);if(!d)return;let h=!1;if(n){const e=iu(n),t=iu(l);e&&e!==t&&(au(d,e),h=!0)}if(a){const t=iu(a.labels),s=iu(r.labels),i=iu(a.datasets),n=iu(r.datasets);t!==s&&(ou(d.config.data,t),h=!0),i&&i!==n&&(lu(d.config.data,i,e.datasetIdKey),h=!0)}h&&(0,i.dY)(()=>{c(d)})},{deep:!0}),()=>(0,i.h)("canvas",{role:"img","aria-label":e.ariaLabel,"aria-describedby":e.ariaDescribedby,ref:a},[(0,i.h)("p",{},[n.default?n.default():""])])}});function du(e,t){return yc.register(t),(0,i.pM)({props:Zh,setup(t,s){let{expose:n}=s;const a=(0,Jh.IJ)(null),o=e=>{a.value=e?.chart};return n({chart:a}),()=>(0,i.h)(cu,su({ref:o},{type:e,...t}))}})}const hu=du("doughnut",al),uu=du("line",ol);s(79577),s(41549),s(49797),s(49631),s(35623);class pu extends Error{constructor(e,t,s=!1,i=""){super(e),this.name="BatchOperationError",this.code=t,this.recoverable=s,this.suggestion=i}}const gu={401:()=>new pu("认证失败,请重新登录","AUTH_FAILED",!1,"请刷新页面并重新登录"),403:()=>new pu("权限不足或请求被拒绝","FORBIDDEN",!1,"请确认您有管理员权限"),400:e=>new pu(`请求数据无效: ${e}`,"INVALID_DATA",!0,"请检查数据格式后重试"),500:()=>new pu("服务器内部错误","SERVER_ERROR",!0,"请稍后重试,如果问题持续请联系管理员"),NETWORK:()=>new pu("网络连接失败","NETWORK_ERROR",!0,"请检查网络连接后重试"),ABORT:()=>new pu("操作已取消","ABORTED",!1,"")};function fu(e,t=""){if("AbortError"===e.name)return gu.ABORT();if(e instanceof Response||e&&"number"===typeof e.status){const s=gu[e.status];return s?s(t):new pu(`请求失败: ${e.status}`,"HTTP_ERROR",!0,"请稍后重试")}return e instanceof TypeError&&e.message.includes("fetch")?gu.NETWORK():new pu(e.message||"未知错误","UNKNOWN_ERROR",!0,"请稍后重试")}class mu{constructor(e={}){this.batchSize=e.batchSize||1e3,this.onProgress=e.onProgress||(()=>{}),this.onError=e.onError||(()=>{}),this.abortController=null}async fetchAllRecords(e=!1){this.abortController=new AbortController;const t=[];let s=null,i=0,n=0;try{do{if(this.abortController.signal.aborted)break;const a=await this.fetchBatch(s,e);t.push(...a.records),s=a.nextCursor,i+=a.records.length,n++,this.onProgress({phase:"fetching",current:i,batchCount:n,message:`已获取 ${i} 条记录...`})}while(s&&!this.abortController.signal.aborted);if(this.abortController.signal.aborted)throw gu.ABORT();return t}catch(a){const e=a instanceof pu?a:fu(a);throw this.onError(e),e}}async fetchBatch(e,t){const s=new URLSearchParams;e&&s.set("cursor",e),t&&s.set("includeValue","true"),s.set("limit",String(this.batchSize));try{const e=await(0,Rt.A)(`/api/manage/batch/list?${s}`,{signal:this.abortController.signal});if(!e.ok){let t="";try{const s=await e.json();t=s.error||""}catch{}throw fu(e,t)}const t=await e.json();if(!t.success)throw new pu(t.error||"请求失败","API_ERROR",!0,"请稍后重试");return{records:t.records||[],nextCursor:t.nextCursor||null,totalProcessed:t.totalProcessed||0}}catch(i){if(i instanceof pu)throw i;throw fu(i)}}abort(){this.abortController&&this.abortController.abort()}isAborted(){return!!this.abortController&&this.abortController.signal.aborted}reset(){this.abortController=null}}var bu=mu;class yu{constructor(e={}){this.chunkSize=e.chunkSize||null,this.maxRetries=e.maxRetries||3,this.retryDelay=e.retryDelay||1e3,this.onProgress=e.onProgress||(()=>{}),this.onError=e.onError||(()=>{}),this.sessionId=this.generateSessionId(),this.aborted=!1}async fetchConfig(){try{const e=await(0,Rt.A)("/api/manage/batch/index/config");if(!e.ok)throw new Error("获取配置失败");const t=await e.json();if(t.success)return{chunkSize:t.chunkSize||500,databaseType:t.databaseType||"unknown"};throw new Error(t.error||"获取配置失败")}catch(e){return console.warn("Failed to fetch index config, using default:",e),{chunkSize:500,databaseType:"unknown"}}}async rebuild(){this.aborted=!1;try{if(!this.chunkSize){const e=await this.fetchConfig();this.chunkSize=e.chunkSize}this.onProgress({phase:"fetching",message:"正在获取数据...",current:0});const e=new bu({onProgress:e=>this.onProgress({...e,phase:"fetching"}),onError:e=>this.onError(e)}),t=await e.fetchAllRecords(!1);if(this.aborted)throw new pu("操作已取消","ABORTED",!1,"");if(this.onProgress({phase:"sorting",message:"正在排序...",current:0,total:t.length}),this.sortByTimestampDescending(t),this.aborted)throw new pu("操作已取消","ABORTED",!1,"");const s=this.splitIntoChunks(t);for(let i=0;i{const s=e.metadata&&e.metadata.TimeStamp||0,i=t.metadata&&t.metadata.TimeStamp||0;return i-s})}splitIntoChunks(e){const t=[];for(let s=0;se.toString(16).padStart(2,"0")).join("")}let n=2166136261,a=2166136261;for(let o=0;o>>0,a=Math.imul(a^i[o],16777635)>>>0;return n.toString(16).padStart(8,"0")+a.toString(16).padStart(8,"0")}createHttpError(e,t=""){switch(e){case 401:return new pu("认证失败,请重新登录","AUTH_FAILED",!1,"请刷新页面并重新登录");case 403:return new pu("权限不足或请求被拒绝","FORBIDDEN",!1,"请确认您有管理员权限");case 400:return new pu(`请求数据无效: ${t}`,"INVALID_DATA",!0,"请检查数据格式后重试");case 404:return new pu("会话不存在","SESSION_NOT_FOUND",!1,"请重新开始索引重建");case 410:return new pu("会话已过期","SESSION_EXPIRED",!1,"请重新开始索引重建");case 500:default:return new pu(`服务器错误: ${t||e}`,"SERVER_ERROR",!0,"请稍后重试")}}sleep(e){return new Promise(t=>setTimeout(t,e))}abort(){this.aborted=!0}reset(){this.aborted=!1,this.sessionId=this.generateSessionId()}}var xu=yu;class vu{constructor(e={}){this.onProgress=e.onProgress||(()=>{}),this.processor=null}async generateBackup(){this.processor=new bu({onProgress:e=>this.onProgress({...e,phase:"fetching"})});const e=await this.processor.fetchAllRecords(!0);this.onProgress({phase:"building",message:"正在构建备份数据..."});const t={timestamp:Date.now(),version:Wt.rE,data:{fileCount:e.length,files:{},settings:{}}};for(const n of e)t.data.files[n.id]={metadata:n.metadata,value:n.value||null};const s=await this.fetchSettings();t.data.settings=s,this.onProgress({phase:"downloading",message:"正在生成下载..."}),this.downloadBackup(t);const i=Object.keys(s).length;return{success:!0,fileCount:e.length,settingsCount:i}}async fetchSettings(){try{const e=await(0,Rt.A)("/api/manage/batch/settings");if(!e.ok)return console.warn("Failed to fetch settings:",e.status),{};const t=await e.json();return t.settings||{}}catch(e){return console.warn("Failed to fetch settings:",e),{}}}downloadBackup(e){const t=JSON.stringify(e,null,2),s=new Blob([t],{type:"application/json"}),i=URL.createObjectURL(s),n=document.createElement("a");n.href=i,n.download=`imgbed_backup_${(new Date).toISOString().split("T")[0]}.json`,document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(i)}abort(){this.processor&&this.processor.abort()}isAborted(){return!!this.processor&&this.processor.isAborted()}}var ku=vu;class _u{constructor(e={}){this.chunkSize=e.chunkSize||50,this.maxRetries=e.maxRetries||3,this.retryDelay=e.retryDelay||1e3,this.onProgress=e.onProgress||(()=>{}),this.onError=e.onError||(()=>{}),this.aborted=!1}async restore(e){if(this.aborted=!1,!e||!e.data)throw new pu("备份文件格式无效","INVALID_BACKUP",!1,"请选择有效的备份文件");const{files:t={},settings:s={}}=e.data,i=Object.entries(t),n=Object.entries(s),a=i.length,o=n.length,l=a+o;let r=0,c=0,d=0,h=0;try{this.onProgress({phase:"restoring_files",message:"正在恢复文件数据...",current:0,total:l});const t=this.splitIntoChunks(i,this.chunkSize);for(let e=0;esetTimeout(t,e))}abort(){this.aborted=!0}}var wu=_u;yc.register(Mc,ah,Rd,dh,gh,Nc,Bc,Dd);const Cu=864e5;function Su(e){return String(e).padStart(2,"0")}function Fu(e){return`${e.getFullYear()}-${Su(e.getMonth()+1)}-${Su(e.getDate())}`}function Tu(){const e=new Date;e.setHours(0,0,0,0);const t=new Date(e.getTime()-6*Cu);return[Fu(t),Fu(e)]}var Mu={name:"SysCogStatus",components:{Doughnut:hu,Line:uu,DateRangeCalendar:q},data(){return{loading:!1,rebuilding:!1,backing:!1,restoring:!1,indexInfo:{},indexInfoLoaded:!1,indexInfoError:!1,currentTime:new Date,clockTimer:null,version:Wt.rE,loadErrors:{newest:!1,oldest:!1},trendGroupBy:"channel",trendDatePickerVisible:!1,trendDateRange:Tu(),channelColors:["#8B5CF6","#EC4899","#06B6D4","#10B981","#F59E0B","#EF4444","#2563EB","#84CC16"],typeColors:["#10B981","#3B82F6","#F59E0B","#EF4444","#8B5CF6","#EC4899","#06B6D4","#84CC16"],trendColors:["#2563EB","#10B981","#F59E0B","#EF4444","#8B5CF6","#06B6D4","#EC4899","#84CC16","#64748B"],isProcessing:!1,processingPhase:"",processingProgress:{current:0,total:0,message:"",percentage:0},processingError:null,processingStartTime:null,currentRebuilder:null,currentBackupGenerator:null,currentRestoreProcessor:null}},computed:{currentLocale(){return String(this.$i18n.locale||"zh-CN")},indexedFileCount(){return Number(this.indexInfo.totalFiles||0)},uploadChannelCount(){return Object.keys(this.indexInfo.channelStats||{}).length},systemHealthState(){return this.indexInfoError?"attention":this.indexInfoLoaded?"healthy":"checking"},systemHealthLabel(){return this.$t(`sysStatus.health${this.systemHealthState.charAt(0).toUpperCase()}${this.systemHealthState.slice(1)}`)},greetingTitle(){const e=this.currentTime.getHours();return e<5?this.$t("sysStatus.greetingLateNight"):e<11?this.$t("sysStatus.greetingMorning"):e<14?this.$t("sysStatus.greetingNoon"):e<18?this.$t("sysStatus.greetingAfternoon"):e<23?this.$t("sysStatus.greetingEvening"):this.$t("sysStatus.greetingLateNight")},systemStatusSummary(){return this.indexInfoError?this.$t("sysStatus.summaryUnavailable"):this.indexInfoLoaded?0===this.indexedFileCount?this.$t("sysStatus.summaryEmpty"):0===this.uploadChannelCount?this.$t("sysStatus.summaryIndexed",{files:this.indexedFileCount.toLocaleString(this.currentLocale)}):this.$t("sysStatus.summaryHealthy",{files:this.indexedFileCount.toLocaleString(this.currentLocale),channels:this.uploadChannelCount.toLocaleString(this.currentLocale)}):this.$t("sysStatus.summaryChecking")},currentDateLabel(){return new Intl.DateTimeFormat(this.currentLocale,{year:"numeric",month:"long",day:"numeric",weekday:"long"}).format(this.currentTime)},currentTimeLabel(){return new Intl.DateTimeFormat(this.currentLocale,{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1}).format(this.currentTime)},timeZoneLabel(){const e=Intl.DateTimeFormat().resolvedOptions().timeZone||this.$t("sysStatus.localTimezone"),t=-this.currentTime.getTimezoneOffset(),s=t>=0?"+":"-",i=Math.abs(t),n=Math.floor(i/60),a=i%60,o=0===a?`UTC${s}${n}`:`UTC${s}${n}:${String(a).padStart(2,"0")}`;return`${e} · ${o}`},channelChartData(){const e=this.indexInfo.channelStats||{};return{labels:Object.keys(e),datasets:[{data:Object.values(e),backgroundColor:this.channelColors.slice(0,Object.keys(e).length),borderWidth:0}]}},typeChartData(){const e=this.aggregatedTypeStats;return{labels:Object.keys(e),datasets:[{data:Object.values(e),backgroundColor:this.typeColors.slice(0,Object.keys(e).length),borderWidth:0}]}},aggregatedTypeStats(){const e=this.indexInfo.typeStats||{},t={};for(const[s,i]of Object.entries(e)){const e="Block"===s?this.$t("sysStatus.blocked"):this.$t("sysStatus.normalStatus");t[e]=(t[e]||0)+i}return t},currentTrendGroup(){const e=this.indexInfo.uploadTrend||{},t=e.groupBy||{};return t[this.trendGroupBy]||{series:[]}},trendRawLabels(){const e=this.indexInfo.uploadTrend||{};return e.labels||[]},trendRangeCrossesYear(){const e=new Set;return this.trendRawLabels.forEach(t=>{this.extractTrendLabelDates(t).forEach(t=>e.add(t.year))}),e.size>1},trendDisplayLabels(){return this.trendRawLabels.map(e=>this.formatTrendAxisLabel(e))},hasTrendData(){const e=this.indexInfo.uploadTrend||{};return(e.labels||[]).length>0},trendDateDialogWidth(){return window.innerWidth>768?"420px":"90%"},uploadTrendChartData(){const e=this.indexInfo.uploadTrend||{},t=this.currentTrendGroup.series||[],s="#F97316";return{labels:this.trendDisplayLabels,datasets:[{label:this.$t("sysStatus.totalUploads"),data:e.total||[],borderColor:s,backgroundColor:this.hexToRgba(s,.1),pointBackgroundColor:s,pointBorderColor:s,borderWidth:3,pointRadius:2,pointHoverRadius:5,tension:.28,fill:!1},...t.map((e,t)=>{const s=this.getTrendColor(t);return{label:this.formatTrendSeriesName(e),data:e.data||[],borderColor:s,backgroundColor:this.hexToRgba(s,.12),pointBackgroundColor:s,pointBorderColor:s,borderWidth:2,pointRadius:2,pointHoverRadius:5,tension:.32,fill:!1}})]}},lineChartOptions(){const e="#64748B";return{responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:{legend:{display:!0,position:"bottom",labels:{usePointStyle:!0,boxWidth:8,boxHeight:8,padding:16,color:e}},tooltip:{backgroundColor:"rgba(0, 0, 0, 0.8)",titleColor:"#fff",bodyColor:"#fff",padding:12,cornerRadius:8,displayColors:!0,callbacks:{title:e=>{const t=e?.[0]?.dataIndex;return this.trendRawLabels[t]||""},label:e=>{const t=e.parsed||{},s=void 0!==t.y?t.y:e.raw;return` ${e.dataset.label}: ${Number(s||0).toLocaleString()} ${this.$t("sysStatus.uploadsUnit")}`}}}},scales:{x:{grid:{display:!1},ticks:{color:e,maxTicksLimit:8,autoSkip:!0}},y:{beginAtZero:!0,grid:{color:"rgba(148, 163, 184, 0.18)"},ticks:{color:e,precision:0,callback:e=>Number(e).toLocaleString()}}}}},chartOptions(){return{responsive:!0,maintainAspectRatio:!0,cutout:"65%",hoverOffset:8,layout:{padding:10},plugins:{legend:{display:!1},tooltip:{backgroundColor:"rgba(0, 0, 0, 0.8)",titleColor:"#fff",bodyColor:"#fff",padding:12,cornerRadius:8,displayColors:!0,z:100,callbacks:{label:e=>{const t=e.raw,s=e.dataset.data.reduce((e,t)=>e+t,0),i=(t/s*100).toFixed(1);return` ${t.toLocaleString()} (${i}%)`}}}},animation:{animateRotate:!0,animateScale:!0}}},estimatedTimeRemaining(){if(!this.isProcessing||!this.processingStartTime)return"";if(0===this.processingProgress.current||0===this.processingProgress.percentage)return"";const e=Date.now()-this.processingStartTime,t=this.processingProgress.percentage/100;if(t<=0)return"";const s=e/t,i=s-e;if(i<=0)return this.$t("sysStatus.aboutToComplete");const n=Math.ceil(i/1e3);if(n<60)return this.$t("sysStatus.seconds",{count:n});const a=Math.ceil(n/60);if(a<60)return this.$t("sysStatus.minutes",{count:a});const o=Math.floor(a/60),l=a%60;return this.$t("sysStatus.hoursMinutes",{hours:o,minutes:l})},phaseDescription(){const e={fetching:this.$t("sysStatus.phaseFetching"),sorting:this.$t("sysStatus.phaseSorting"),uploading:this.$t("sysStatus.phaseUploading"),finalizing:this.$t("sysStatus.phaseFinalizing"),building:this.$t("sysStatus.phaseBuilding"),downloading:this.$t("sysStatus.phaseDownloading"),restoring_files:this.$t("sysStatus.phaseRestoringFiles"),restoring_settings:this.$t("sysStatus.phaseRestoringSettings"),completed:this.$t("sysStatus.phaseCompleted"),retrying:this.$t("sysStatus.phaseRetrying")};return e[this.processingPhase]||this.processingPhase}},mounted(){this.fetchIndexInfo(),this.clockTimer=window.setInterval(()=>{this.currentTime=new Date},1e3)},beforeUnmount(){this.clockTimer&&(window.clearInterval(this.clockTimer),this.clockTimer=null)},methods:{getChartColor(e){return this.channelColors[e%this.channelColors.length]},getTypeChartColor(e){return this.typeColors[e%this.typeColors.length]},getTrendColor(e){return this.trendColors[e%this.trendColors.length]},formatTrendSeriesName(e){return e?.isOther||"__other__"===e?.name?this.$t("sysStatus.otherChannels"):e?.name||this.$t("sysStatus.unknown")},hexToRgba(e,t){const s=(e||"").replace("#","");if(6!==s.length)return`rgba(37, 99, 235, ${t})`;const i=parseInt(s.slice(0,2),16),n=parseInt(s.slice(2,4),16),a=parseInt(s.slice(4,6),16);return`rgba(${i}, ${n}, ${a}, ${t})`},extractTrendLabelDates(e){const t=String(e||"").match(/\d{4}-\d{2}-\d{2}/g)||[];return t.map(e=>{const[t,s,i]=e.split("-").map(Number);return{year:t,month:s,day:i}})},formatTrendAxisLabel(e){const t=this.extractTrendLabelDates(e);if(0===t.length)return e;const s=(e,t)=>{const s=`${e.month}/${e.day}`;return t?`${e.year}/${s}`:s};if(1===t.length)return s(t[0],this.trendRangeCrossesYear);const[i,n]=t;if(!this.trendRangeCrossesYear)return`${s(i,!1)}-${s(n,!1)}`;const a=i.year===n.year?s(n,!1):s(n,!0);return`${s(i,!0)}-${a}`},openTrendDateDialog(){this.trendDatePickerVisible=!0},handleTrendDateRangeChange(e){Array.isArray(e)&&2===e.length&&e[0]&&e[1]&&(this.trendDatePickerVisible=!1,this.fetchIndexInfo())},getTrendDateRangeParams(){return Array.isArray(this.trendDateRange)&&2===this.trendDateRange.length||(this.trendDateRange=Tu()),{startDate:this.trendDateRange[0],endDate:this.trendDateRange[1]}},async fetchIndexInfo(){this.loading=!0,this.indexInfoError=!1;try{const{startDate:e,endDate:t}=this.getTrendDateRangeParams(),s=new URLSearchParams({action:"info",timezoneOffset:String((new Date).getTimezoneOffset()),trendMaxPoints:"90",trendSeriesLimit:"8",trendStartDate:e,trendEndDate:t}),i=await(0,Rt.A)(`/api/manage/list?${s.toString()}`,{method:"GET"});if(!i.ok)throw new Error("API请求失败");{const e=await i.json();this.indexInfo=e,this.indexInfoLoaded=!0}}catch(e){console.error("获取索引信息失败:",e),this.indexInfoError=!0,this.$message.error(this.$t("sysStatus.fetchIndexFailed"))}finally{this.loading=!1}},async rebuildIndex(){if(this.isProcessing)this.$message.warning(this.$t("sysStatus.operationInProgress"));else{this.rebuilding=!0,this.isProcessing=!0,this.processingError=null,this.processingStartTime=Date.now(),this.processingProgress={current:0,total:0,message:"",percentage:0},this.currentRebuilder=new xu({onProgress:e=>this.handleProgress(e),onError:e=>this.handleError(e)});try{const e=await this.currentRebuilder.rebuild();this.$message.success(this.$t("sysStatus.rebuildSuccess",{count:e.totalFiles.toLocaleString()})),setTimeout(()=>{this.fetchIndexInfo()},1e3)}catch(e){if("ABORTED"!==e.code){const t=e.suggestion?`${e.message}。${e.suggestion}`:e.message;this.$message.error(t),this.processingError={message:e.message,suggestion:e.suggestion,recoverable:e.recoverable}}}finally{this.rebuilding=!1,this.isProcessing=!1,this.currentRebuilder=null,this.processingStartTime=null}}},async backupData(){if(this.isProcessing)this.$message.warning(this.$t("sysStatus.operationInProgress"));else{this.backing=!0,this.isProcessing=!0,this.processingError=null,this.processingStartTime=Date.now(),this.processingProgress={current:0,total:0,message:"",percentage:0},this.currentBackupGenerator=new ku({onProgress:e=>this.handleProgress(e)});try{const e=await this.currentBackupGenerator.generateBackup(),t=e.settingsCount>0?this.$t("sysStatus.backupSuccessWithSettings",{fileCount:e.fileCount.toLocaleString(),settingsCount:e.settingsCount}):this.$t("sysStatus.backupSuccess",{count:e.fileCount.toLocaleString()});this.$message.success(t)}catch(e){if("ABORTED"!==e.code){const t=e.suggestion?`${e.message}。${e.suggestion}`:e.message;this.$message.error(t),this.processingError={message:e.message,suggestion:e.suggestion,recoverable:e.recoverable}}}finally{this.backing=!1,this.isProcessing=!1,this.currentBackupGenerator=null,this.processingStartTime=null}}},selectRestoreFile(){this.restoring||this.$refs.fileInput.click()},async handleFileSelect(e){const t=e.target.files[0];if(t)if(t.name.endsWith(".json")){try{await this.$confirm(this.$t("sysStatus.restoreConfirmMessage"),this.$t("sysStatus.restoreConfirmTitle"),{confirmButtonText:this.$t("sysStatus.restoreConfirmOk"),cancelButtonText:this.$t("sysStatus.restoreConfirmCancel"),type:"warning"}),await this.restoreData(t)}catch(s){"cancel"!==s&&console.error("确认恢复失败:",s)}e.target.value=""}else this.$message.error(this.$t("sysStatus.selectJsonFile"))},async restoreData(e){if(this.isProcessing)this.$message.warning(this.$t("sysStatus.operationInProgress"));else{this.restoring=!0,this.isProcessing=!0,this.processingError=null,this.processingStartTime=Date.now(),this.processingProgress={current:0,total:0,message:"",percentage:0};try{const s=await e.text();let i;try{i=JSON.parse(s)}catch(t){throw new Error(this.$t("sysStatus.invalidBackupFile"))}this.currentRestoreProcessor=new wu({chunkSize:100,onProgress:e=>this.handleProgress(e),onError:e=>this.handleError(e)});const n=await this.currentRestoreProcessor.restore(i);this.restoring=!1,this.isProcessing=!1,this.currentRestoreProcessor=null,this.processingStartTime=null,this.$message.success(this.$t("sysStatus.restoreSuccess",{files:n.restoredFiles,settings:n.restoredSettings})),await new Promise(e=>setTimeout(e,500)),await this.rebuildIndex()}catch(s){if(console.error("恢复数据失败:",s),this.restoring=!1,this.isProcessing=!1,this.currentRestoreProcessor=null,this.processingStartTime=null,"ABORTED"!==s.code){const e=s.suggestion?`${s.message}。${s.suggestion}`:s.message;this.$message.error(this.$t("sysStatus.restoreFailed")+": "+e),this.processingError={message:s.message,suggestion:s.suggestion,recoverable:s.recoverable}}}}},formatTime(e){if(!e)return this.$t("sysStatus.unknown");const t=new Date(e);return t.toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})},getPercentage(e,t){return t&&0!==t?Math.round(e/t*100):0},getTimeAgo(e){if(!e)return"";const t=Date.now(),s=t-e,i=Math.floor(s/6e4),n=Math.floor(s/36e5),a=Math.floor(s/864e5);return a>0?this.$t("sysStatus.daysAgo",{count:a}):n>0?this.$t("sysStatus.hoursAgo",{count:n}):i>0?this.$t("sysStatus.minutesAgo",{count:i}):this.$t("sysStatus.justNow")},handleImageError(e){this.loadErrors[e]=!0},isValidPreview(e,t){return!this.loadErrors[e]&&(!!t?.metadata?.FileType&&(t.metadata.FileType.includes("image")||t.metadata.FileType.includes("video")))},openReleases(){window.open("https://github.com/MarSeventh/CloudFlare-ImgBed/releases","_blank")},isImageFile(e){if(!e)return!1;if(e.metadata?.FileType?.includes("image"))return!0;const t=e.metadata?.FileName||e.id||"",s=t.substring(t.lastIndexOf(".")+1).toLowerCase(),i=["jpg","jpeg","png","gif","bmp","webp","svg","ico","tiff","tif","avif","heic","heif"];return i.includes(s)},isVideoFile(e){if(!e)return!1;if(e.metadata?.FileType?.includes("video"))return!0;const t=e.metadata?.FileName||e.id||"",s=t.substring(t.lastIndexOf(".")+1).toLowerCase(),i=["mp4","webm","ogg","avi","mov","flv","wmv","mkv","m4v","3gp","mpeg","mpg"];return i.includes(s)},openFileInNewTab(e){e?.id&&window.open("/file/"+e.id+"?from=admin","_blank")},handleProgress(e){this.processingPhase=e.phase,this.processingProgress.message=e.message||"",this.processingProgress.current=e.current||0,"fetching"===e.phase?(this.processingProgress.total=e.total||0,e.total&&e.total>0?this.processingProgress.percentage=Math.min(60,e.current/e.total*60):this.processingProgress.percentage=Math.min(50,15*Math.log10(e.current+1))):"sorting"===e.phase?(this.processingProgress.percentage=65,this.processingProgress.total=e.total||this.processingProgress.total):"uploading"===e.phase?(this.processingProgress.total=e.total||0,e.total&&e.total>0&&(this.processingProgress.percentage=70+e.current/e.total*25)):"finalizing"===e.phase?this.processingProgress.percentage=97:"building"===e.phase?this.processingProgress.percentage=80:"downloading"===e.phase?this.processingProgress.percentage=95:"restoring_files"===e.phase?(this.processingProgress.total=e.total||0,this.processingProgress.percentage=e.percentage||0):"restoring_settings"===e.phase?(this.processingProgress.total=e.total||0,this.processingProgress.percentage=e.percentage||80):"completed"===e.phase?this.processingProgress.percentage=100:"retrying"===e.phase&&(this.processingProgress.message=e.message)},handleError(e){console.error("批量操作错误:",e),this.processingError={message:e.message,suggestion:e.suggestion,recoverable:e.recoverable}},cancelOperation(){this.currentRebuilder&&(this.currentRebuilder.abort(),this.$message.info(this.$t("sysStatus.cancellingRebuild"))),this.currentBackupGenerator&&(this.currentBackupGenerator.abort(),this.$message.info(this.$t("sysStatus.cancellingRebuild"))),this.currentRestoreProcessor&&(this.currentRestoreProcessor.abort(),this.$message.info(this.$t("sysStatus.cancellingRebuild")))},retryOperation(){this.processingError=null,this.rebuilding?(this.rebuilding=!1,this.isProcessing=!1,this.$nextTick(()=>{this.rebuildIndex()})):this.backing&&(this.backing=!1,this.isProcessing=!1,this.$nextTick(()=>{this.backupData()}))},dismissError(){this.processingError=null}}};const Pu=(0,d.A)(Mu,[["render",Ot],["__scopeId","data-v-776bcef4"]]);var Du=Pu,Au=s(59869),$u=(s(70415),s(73565),s(82006)),Lu=(s(98642),s(81418)),Vu=(s(50333),s(39623)),Eu=(s(29092),s(63003),s(76018)),Iu=(s(96808),s(67819),s(55558)),Uu=(s(10456),s(12687)),Ou=(s(18785),s(97769));const Ru=["onClick"];function Wu(e,t,s,a,o,l){const r=(0,i.g2)("font-awesome-icon"),c=Ou.A;return(0,i.uX)(),(0,i.CE)("div",{class:(0,n.C4)(["custom-select",{"is-open":o.isOpen}]),style:(0,n.Tr)({width:s.width})},[(0,i.Lk)("div",{class:"custom-select-trigger",onClick:t[0]||(t[0]=(...e)=>l.toggleDropdown&&l.toggleDropdown(...e))},[(0,i.Lk)("span",{class:(0,n.C4)(["custom-select-value",{"is-placeholder":!s.modelValue}])},(0,n.v_)(l.displayLabel),3),(0,i.bF)(r,{icon:"chevron-down",class:"custom-select-arrow"})]),(0,i.bF)(C.eB,{name:"dropdown-fade"},{default:(0,i.k6)(()=>[(0,i.bo)((0,i.Lk)("div",{class:"custom-select-dropdown",onClick:t[1]||(t[1]=(0,C.D$)(()=>{},["stop"]))},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(s.options,t=>((0,i.uX)(),(0,i.CE)("div",{key:t.value,class:(0,n.C4)(["custom-select-option",{"is-selected":s.modelValue===t.value}]),onClick:e=>l.selectOption(t.value)},[(0,i.RG)(e.$slots,"option",{option:t},()=>[t.channelType?((0,i.uX)(),(0,i.Wv)(c,{key:0,type:t.channelType,class:(0,n.C4)(["option-icon",t.iconClass])},null,8,["type","class"])):t.icon?((0,i.uX)(),(0,i.Wv)(r,{key:1,icon:t.icon,class:(0,n.C4)(["option-icon",t.iconClass])},null,8,["icon","class"])):(0,i.Q3)("",!0),(0,i.Lk)("span",null,(0,n.v_)(t.label),1)],!0)],10,Ru))),128))],512),[[C.aG,o.isOpen]])]),_:3})],6)}var Bu={name:"CustomSelect",components:{ChannelIcon:Ou.A},props:{modelValue:{type:[String,Number],default:""},options:{type:Array,required:!0},placeholder:{type:String,default:""},width:{type:String,default:"160px"}},emits:["update:modelValue","change"],data(){return{isOpen:!1}},computed:{resolvedPlaceholder(){return this.placeholder||this.$t("common.select")},displayLabel(){const e=this.options.find(e=>e.value===this.modelValue);return e?e.label:this.resolvedPlaceholder}},mounted(){document.addEventListener("click",this.handleClickOutside)},beforeUnmount(){document.removeEventListener("click",this.handleClickOutside)},methods:{toggleDropdown(){this.isOpen=!this.isOpen},selectOption(e){this.$emit("update:modelValue",e),this.$emit("change",e),this.isOpen=!1},handleClickOutside(e){this.$el.contains(e.target)||(this.isOpen=!1)}}};const zu=(0,d.A)(Bu,[["render",Wu],["__scopeId","data-v-b9420432"]]);var Nu=zu;const ju={class:"upload-settings"},Hu={class:"page-header"},qu={class:"first-title"},Xu={class:"header-actions"},Ku={class:"group-header"},Qu={class:"group-title"},Yu={key:0,class:"load-balance-switch"},Gu={class:"switch-label"},Ju={key:0,class:"channel-cards"},Zu=["onMousemove","onMouseleave"],ep={class:"card-header"},tp={class:"card-title"},sp={class:"channel-name"},ip={class:"card-body"},np={class:"card-info"},ap={class:"info-item"},op={class:"info-text"},lp={key:0,class:"info-item"},rp={class:"info-text"},cp={key:1,class:"info-item"},dp=["title"],hp={class:"info-item"},up={class:"info-text"},pp={key:0,class:"info-item"},gp=["title"],fp={class:"info-item"},mp={class:"info-text"},bp={class:"info-item"},yp={class:"info-text"},xp={class:"info-item"},vp={class:"info-text"},kp={class:"info-item"},_p=["title"],wp={key:0,class:"info-item"},Cp=["title"],Sp={key:0,class:"quota-mini"},Fp={class:"quota-text"},Tp={class:"card-actions"},Mp={key:1,class:"empty-tip"},Pp={class:"channel-type-option"},Dp={key:0,class:"form-warning",style:{"margin-top":"0"}},Ap=["innerHTML"],$p={class:"form-warning"},Lp={class:"quota-label"},Vp={class:"quota-status"};function Ep(e,t,s,a,o,l){const r=(0,i.g2)("font-awesome-icon"),c=g.R7,d=Nu,h=K.S2,u=Ou.A,p=Uu.u,f=Iu.qi,m=_.ve,b=Eu.P9,y=Eu.AV,x=$u.xE,k=Vu.WK,S=Lu.lq,F=$u.US,T=w.kZ,M=Au.MF,P=Au.TS,D=v.A;return(0,i.bo)(((0,i.uX)(),(0,i.CE)("div",ju,[(0,i.Lk)("div",Hu,[(0,i.Lk)("h3",qu,[(0,i.eW)((0,n.v_)(e.$t("sysUpload.title"))+" ",1),(0,i.bF)(c,{content:e.$t("sysUpload.titleTooltip"),placement:"right"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",class:"help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",Xu,[(0,i.bF)(d,{modelValue:o.channelFilter,"onUpdate:modelValue":t[0]||(t[0]=e=>o.channelFilter=e),options:l.filterOptions,placeholder:e.$t("sysUpload.filterPlaceholder"),width:"160px"},null,8,["modelValue","options","placeholder"]),(0,i.bF)(h,{type:"primary",onClick:t[1]||(t[1]=e=>o.showAddDialog=!0),class:"add-btn"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"plus",style:{"margin-right":"6px"}}),(0,i.eW)(" "+(0,n.v_)(e.$t("sysUpload.addChannel")),1)]),_:1})])]),((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(l.filteredChannels,s=>((0,i.uX)(),(0,i.CE)("div",{key:s.value,class:"channel-group"},[(0,i.Lk)("div",Ku,[(0,i.Lk)("div",Qu,[(0,i.bF)(u,{type:s.value,class:"group-icon"},null,8,["type"]),(0,i.Lk)("span",null,(0,n.v_)(s.label),1),(0,i.bF)(p,{size:"small",type:"info",class:"channel-count"},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(l.getChannelList(s.value).length),1)]),_:2},1024)]),l.hasLoadBalance(s.value)?((0,i.uX)(),(0,i.CE)("div",Yu,[(0,i.Lk)("span",Gu,(0,n.v_)(e.$t("sysUpload.loadBalance")),1),(0,i.bF)(f,{modelValue:l.getSettings(s.value).loadBalance.enabled,"onUpdate:modelValue":e=>l.getSettings(s.value).loadBalance.enabled=e,size:"small",onChange:l.saveSettings},null,8,["modelValue","onUpdate:modelValue","onChange"])])):(0,i.Q3)("",!0)]),l.getChannelList(s.value).length>0?((0,i.uX)(),(0,i.CE)("div",Ju,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(l.getChannelList(s.value),(a,o)=>((0,i.uX)(),(0,i.CE)("div",{key:a.name||o,class:(0,n.C4)(["channel-card",[s.value,{disabled:!a.enabled,fixed:a.fixed}]]),onMousemove:e=>l.handleCardMouseMove(e,s.value,o),onMouseleave:e=>l.handleCardMouseLeave(s.value,o)},[(0,i.Lk)("div",{class:"card-glow",ref_for:!0,ref:`glow-${s.value}-${o}`},null,512),(0,i.Lk)("div",ep,[(0,i.Lk)("div",tp,[(0,i.Lk)("span",sp,(0,n.v_)(a.name||e.$t("sysUpload.unnamedChannel")),1),a.fixed?((0,i.uX)(),(0,i.Wv)(p,{key:0,size:"small",type:"warning"},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysUpload.envVariable")),1)]),_:1})):(0,i.Q3)("",!0)]),(0,i.bF)(f,{modelValue:a.enabled,"onUpdate:modelValue":e=>a.enabled=e,size:"small",onClick:t[2]||(t[2]=(0,C.D$)(()=>{},["stop"])),onChange:l.saveSettings},null,8,["modelValue","onUpdate:modelValue","onChange"])]),(0,i.Lk)("div",ip,[(0,i.Lk)("div",np,["telegram"===s.value?((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[(0,i.Lk)("div",ap,[(0,i.bF)(r,{icon:"robot",class:"info-icon"}),(0,i.Lk)("span",op,"Bot: "+(0,n.v_)(l.maskText(a.botToken)),1)]),a.chatId?((0,i.uX)(),(0,i.CE)("div",lp,[(0,i.bF)(r,{icon:"comments",class:"info-icon"}),(0,i.Lk)("span",rp,"Channel: "+(0,n.v_)(l.maskText(a.chatId)),1)])):(0,i.Q3)("",!0)],64)):"cfr2"===s.value?((0,i.uX)(),(0,i.CE)("div",cp,[(0,i.bF)(r,{icon:"link",class:"info-icon"}),(0,i.Lk)("span",{class:"info-text",title:a.publicUrl},(0,n.v_)(a.publicUrl||e.$t("sysUpload.notSet")),9,dp)])):"s3"===s.value?((0,i.uX)(),(0,i.CE)(i.FK,{key:2},[(0,i.Lk)("div",hp,[(0,i.bF)(r,{icon:"server",class:"info-icon"}),(0,i.Lk)("span",up,(0,n.v_)(a.bucketName||e.$t("sysUpload.notSet")),1)]),a.endpoint?((0,i.uX)(),(0,i.CE)("div",pp,[(0,i.bF)(r,{icon:"link",class:"info-icon"}),(0,i.Lk)("span",{class:"info-text",title:a.endpoint},(0,n.v_)(a.endpoint),9,gp)])):(0,i.Q3)("",!0)],64)):"discord"===s.value?((0,i.uX)(),(0,i.CE)(i.FK,{key:3},[(0,i.Lk)("div",fp,[(0,i.bF)(r,{icon:"robot",class:"info-icon"}),(0,i.Lk)("span",mp,"Bot: "+(0,n.v_)(l.maskText(a.botToken)),1)]),(0,i.Lk)("div",bp,[(0,i.bF)(r,{icon:"hashtag",class:"info-icon"}),(0,i.Lk)("span",yp,"Channel: "+(0,n.v_)(l.maskText(a.channelId)),1)]),a.isNitro?((0,i.uX)(),(0,i.Wv)(p,{key:0,size:"small",type:"success"},{default:(0,i.k6)(()=>[...t[78]||(t[78]=[(0,i.eW)("Nitro",-1)])]),_:1})):(0,i.Q3)("",!0)],64)):"huggingface"===s.value?((0,i.uX)(),(0,i.CE)(i.FK,{key:4},[(0,i.Lk)("div",xp,[(0,i.bF)(r,{icon:"database",class:"info-icon"}),(0,i.Lk)("span",vp,(0,n.v_)(a.repo||e.$t("sysUpload.notSet")),1)]),a.isPrivate?((0,i.uX)(),(0,i.Wv)(p,{key:0,size:"small",type:"warning"},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysUpload.privateRepo")),1)]),_:1})):(0,i.Q3)("",!0)],64)):"webdav"===s.value?((0,i.uX)(),(0,i.CE)(i.FK,{key:5},[(0,i.Lk)("div",kp,[(0,i.bF)(r,{icon:"folder",class:"info-icon"}),(0,i.Lk)("span",{class:"info-text",title:a.baseUrl},(0,n.v_)(a.baseUrl||e.$t("sysUpload.notSet")),9,_p)]),a.publicUrl?((0,i.uX)(),(0,i.CE)("div",wp,[(0,i.bF)(r,{icon:"link",class:"info-icon"}),(0,i.Lk)("span",{class:"info-text",title:a.publicUrl},(0,n.v_)(a.publicUrl),9,Cp)])):(0,i.Q3)("",!0)],64)):(0,i.Q3)("",!0)]),a.quota?.enabled?((0,i.uX)(),(0,i.CE)("div",Sp,[(0,i.bF)(m,{percentage:l.getQuotaPercentage(a),status:l.getQuotaStatus(a),"stroke-width":6},null,8,["percentage","status"]),(0,i.Lk)("span",Fp,(0,n.v_)(l.getQuotaText(a)),1)])):(0,i.Q3)("",!0)]),(0,i.Lk)("div",Tp,[(0,i.bF)(h,{text:"",type:"primary",size:"small",onClick:e=>l.openDetailDialog(s.value,o)},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"eye",style:{"margin-right":"4px"}}),(0,i.eW)((0,n.v_)(e.$t("sysUpload.detail")),1)]),_:1},8,["onClick"]),(0,i.bF)(h,{text:"",type:"primary",size:"small",onClick:e=>l.openEditDialog(s.value,o)},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"edit",style:{"margin-right":"4px"}}),(0,i.eW)((0,n.v_)(e.$t("sysUpload.editBtn")),1)]),_:1},8,["onClick"]),(0,i.bF)(h,{text:"",type:"danger",size:"small",onClick:e=>l.deleteChannel(s.value,o),disabled:a.fixed},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"trash-alt",style:{"margin-right":"4px"}}),(0,i.eW)((0,n.v_)(e.$t("sysUpload.deleteBtn")),1)]),_:1},8,["onClick","disabled"])])],42,Zu))),128))])):((0,i.uX)(),(0,i.CE)("div",Mp,[(0,i.bF)(r,{icon:"inbox",class:"empty-icon"}),(0,i.Lk)("span",null,(0,n.v_)(e.$t("sysUpload.noChannels",{type:s.label})),1)]))]))),128)),(0,i.bF)(T,{modelValue:o.showAddDialog,"onUpdate:modelValue":t[35]||(t[35]=e=>o.showAddDialog=e),title:e.$t("sysUpload.addDialogTitle"),class:"channel-dialog","destroy-on-close":"",onClosed:l.resetAddForm},{footer:(0,i.k6)(()=>[(0,i.bF)(h,{onClick:t[34]||(t[34]=e=>o.showAddDialog=!1)},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysUpload.cancel")),1)]),_:1}),"cfr2"!==o.newChannel.type?((0,i.uX)(),(0,i.Wv)(h,{key:0,type:"primary",onClick:l.confirmAddChannel},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysUpload.confirmAdd")),1)]),_:1},8,["onClick"])):(0,i.Q3)("",!0)]),default:(0,i.k6)(()=>[(0,i.bF)(F,{model:o.newChannel,"label-position":"top",ref:"addForm",rules:l.addRules},{default:(0,i.k6)(()=>[(0,i.bF)(x,{label:e.$t("sysUpload.channelTypeLabel"),prop:"type"},{default:(0,i.k6)(()=>[(0,i.bF)(y,{modelValue:o.newChannel.type,"onUpdate:modelValue":t[3]||(t[3]=e=>o.newChannel.type=e),placeholder:e.$t("sysUpload.channelTypePlaceholder"),style:{width:"100%"},onChange:l.onChannelTypeChange},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.addableChannels,e=>((0,i.uX)(),(0,i.Wv)(b,{key:e.value,label:e.label,value:e.value},{default:(0,i.k6)(()=>[(0,i.Lk)("span",Pp,[(0,i.bF)(u,{type:e.value,class:"select-option-icon"},null,8,["type"]),(0,i.Lk)("span",null,(0,n.v_)(e.label),1)])]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue","placeholder","onChange"])]),_:1},8,["label"]),"cfr2"===o.newChannel.type?((0,i.uX)(),(0,i.CE)("div",Dp,[(0,i.bF)(r,{icon:"info-circle",style:{"margin-right":"6px"}}),(0,i.Lk)("span",{innerHTML:e.$t("sysUpload.r2ConfigNote")},null,8,Ap)])):((0,i.uX)(),(0,i.CE)(i.FK,{key:1},[(0,i.bF)(x,{prop:"name"},{label:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysUpload.channelNameLabel"))+" ",1),(0,i.bF)(c,{content:e.$t("sysUpload.channelNameImmutableTip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"exclamation-triangle",class:"inline-warning-icon"})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.name,"onUpdate:modelValue":t[4]||(t[4]=e=>o.newChannel.name=e),placeholder:e.$t("sysUpload.channelNamePlaceholder")},null,8,["modelValue","placeholder"])]),_:1}),"telegram"===o.newChannel.type?((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[(0,i.bF)(x,{label:e.$t("sysUpload.botTokenLabel"),prop:"botToken"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.botToken,"onUpdate:modelValue":t[5]||(t[5]=e=>o.newChannel.botToken=e),type:"password","show-password":"",placeholder:e.$t("sysUpload.botTokenPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),(0,i.bF)(x,{label:e.$t("sysUpload.chatIdLabel"),prop:"chatId"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.chatId,"onUpdate:modelValue":t[6]||(t[6]=e=>o.newChannel.chatId=e),type:"password","show-password":"",placeholder:e.$t("sysUpload.chatIdPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),(0,i.bF)(x,{label:e.$t("sysUpload.proxyDomain")},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.proxyUrl,"onUpdate:modelValue":t[7]||(t[7]=e=>o.newChannel.proxyUrl=e),placeholder:e.$t("sysUpload.proxyDomainPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"])],64)):"s3"===o.newChannel.type?((0,i.uX)(),(0,i.CE)(i.FK,{key:1},[(0,i.bF)(x,{label:e.$t("sysUpload.endpointLabel"),prop:"endpoint"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.endpoint,"onUpdate:modelValue":t[8]||(t[8]=e=>o.newChannel.endpoint=e),placeholder:e.$t("sysUpload.endpointPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),(0,i.bF)(x,null,{label:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysUpload.cdnDomain"))+" ",1),(0,i.bF)(c,{content:e.$t("sysUpload.cdnDomainTip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.cdnDomain,"onUpdate:modelValue":t[9]||(t[9]=e=>o.newChannel.cdnDomain=e),placeholder:e.$t("sysUpload.cdnDomainPlaceholder")},null,8,["modelValue","placeholder"])]),_:1}),(0,i.bF)(x,{label:e.$t("sysUpload.bucketName"),prop:"bucketName"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.bucketName,"onUpdate:modelValue":t[10]||(t[10]=e=>o.newChannel.bucketName=e),placeholder:e.$t("sysUpload.bucketNamePlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),(0,i.bF)(x,{label:e.$t("sysUpload.bucketRegion"),prop:"region"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.region,"onUpdate:modelValue":t[11]||(t[11]=e=>o.newChannel.region=e),placeholder:e.$t("sysUpload.bucketRegionPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),(0,i.bF)(x,{label:e.$t("sysUpload.accessKeyId"),prop:"accessKeyId"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.accessKeyId,"onUpdate:modelValue":t[12]||(t[12]=e=>o.newChannel.accessKeyId=e),type:"password","show-password":"",placeholder:e.$t("sysUpload.accessKeyIdPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),(0,i.bF)(x,{label:e.$t("sysUpload.secretAccessKey"),prop:"secretAccessKey"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.secretAccessKey,"onUpdate:modelValue":t[13]||(t[13]=e=>o.newChannel.secretAccessKey=e),type:"password","show-password":"",placeholder:e.$t("sysUpload.secretAccessKeyPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),(0,i.bF)(x,null,{label:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysUpload.pathStyle"))+" ",1),(0,i.bF)(c,{content:e.$t("sysUpload.pathStyleTip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(f,{modelValue:o.newChannel.pathStyle,"onUpdate:modelValue":t[14]||(t[14]=e=>o.newChannel.pathStyle=e)},null,8,["modelValue"])]),_:1}),(0,i.bF)(x,{label:e.$t("sysUpload.quotaLimit")},{default:(0,i.k6)(()=>[(0,i.bF)(f,{modelValue:o.newChannel.quota.enabled,"onUpdate:modelValue":t[15]||(t[15]=e=>o.newChannel.quota.enabled=e)},null,8,["modelValue"])]),_:1},8,["label"]),o.newChannel.quota?.enabled?((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[(0,i.bF)(x,{label:e.$t("sysUpload.quotaLimitGB")},{default:(0,i.k6)(()=>[(0,i.bF)(S,{modelValue:o.newChannel.quota.limitGB,"onUpdate:modelValue":t[16]||(t[16]=e=>o.newChannel.quota.limitGB=e),min:.1,step:1,precision:1},null,8,["modelValue"])]),_:1},8,["label"]),(0,i.bF)(x,{label:e.$t("sysUpload.quotaThreshold")},{default:(0,i.k6)(()=>[(0,i.bF)(S,{modelValue:o.newChannel.quota.threshold,"onUpdate:modelValue":t[17]||(t[17]=e=>o.newChannel.quota.threshold=e),min:50,max:100,step:5},null,8,["modelValue"])]),_:1},8,["label"])],64)):(0,i.Q3)("",!0)],64)):"discord"===o.newChannel.type?((0,i.uX)(),(0,i.CE)(i.FK,{key:2},[(0,i.bF)(x,{label:e.$t("sysUpload.botTokenLabel"),prop:"botToken"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.botToken,"onUpdate:modelValue":t[18]||(t[18]=e=>o.newChannel.botToken=e),type:"password","show-password":"",placeholder:e.$t("sysUpload.botTokenPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),(0,i.bF)(x,{label:e.$t("sysUpload.channelIdLabel"),prop:"channelId"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.channelId,"onUpdate:modelValue":t[19]||(t[19]=e=>o.newChannel.channelId=e),type:"password","show-password":"",placeholder:e.$t("sysUpload.channelIdPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),(0,i.bF)(x,{label:e.$t("sysUpload.proxyDomain")},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.proxyUrl,"onUpdate:modelValue":t[20]||(t[20]=e=>o.newChannel.proxyUrl=e),placeholder:e.$t("sysUpload.proxyDomainPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),(0,i.bF)(x,null,{label:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysUpload.nitroMember"))+" ",1),(0,i.bF)(c,{content:e.$t("sysUpload.nitroTip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(f,{modelValue:o.newChannel.isNitro,"onUpdate:modelValue":t[21]||(t[21]=e=>o.newChannel.isNitro=e)},null,8,["modelValue"])]),_:1}),(0,i.Lk)("div",$p,[(0,i.bF)(r,{icon:"exclamation-triangle",style:{"margin-right":"6px"}}),(0,i.eW)(" "+(0,n.v_)(e.$t("sysUpload.discordWarning")),1)])],64)):"huggingface"===o.newChannel.type?((0,i.uX)(),(0,i.CE)(i.FK,{key:3},[(0,i.bF)(x,{label:e.$t("sysUpload.repoName"),prop:"repo"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.repo,"onUpdate:modelValue":t[22]||(t[22]=e=>o.newChannel.repo=e),placeholder:e.$t("sysUpload.repoNamePlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),(0,i.bF)(x,{label:e.$t("sysUpload.accessToken"),prop:"token"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.token,"onUpdate:modelValue":t[23]||(t[23]=e=>o.newChannel.token=e),type:"password","show-password":"",placeholder:e.$t("sysUpload.accessTokenPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),(0,i.bF)(x,null,{label:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysUpload.privateRepo"))+" ",1),(0,i.bF)(c,{content:e.$t("sysUpload.privateRepoTip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(f,{modelValue:o.newChannel.isPrivate,"onUpdate:modelValue":t[24]||(t[24]=e=>o.newChannel.isPrivate=e)},null,8,["modelValue"])]),_:1})],64)):"webdav"===o.newChannel.type?((0,i.uX)(),(0,i.CE)(i.FK,{key:4},[(0,i.bF)(x,{label:e.$t("sysUpload.webdavBaseUrl"),prop:"baseUrl"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.baseUrl,"onUpdate:modelValue":t[25]||(t[25]=e=>o.newChannel.baseUrl=e),placeholder:e.$t("sysUpload.webdavBaseUrlPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),(0,i.bF)(x,{label:e.$t("sysUpload.webdavUsername")},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.username,"onUpdate:modelValue":t[26]||(t[26]=e=>o.newChannel.username=e),placeholder:e.$t("sysUpload.webdavUsernamePlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),(0,i.bF)(x,{label:e.$t("sysUpload.webdavPassword")},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.password,"onUpdate:modelValue":t[27]||(t[27]=e=>o.newChannel.password=e),type:"password","show-password":"",placeholder:e.$t("sysUpload.webdavPasswordPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),(0,i.bF)(x,null,{label:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysUpload.publicUrl"))+" ",1),(0,i.bF)(c,{content:e.$t("sysUpload.webdavPublicUrlTip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.publicUrl,"onUpdate:modelValue":t[28]||(t[28]=e=>o.newChannel.publicUrl=e),placeholder:e.$t("sysUpload.webdavPublicUrlPlaceholder")},null,8,["modelValue","placeholder"])]),_:1}),(0,i.bF)(x,{label:e.$t("sysUpload.webdavHeaders")},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.newChannel.headersText,"onUpdate:modelValue":t[29]||(t[29]=e=>o.newChannel.headersText=e),type:"textarea",autosize:{minRows:2},placeholder:e.$t("sysUpload.webdavHeadersPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),(0,i.bF)(x,null,{label:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysUpload.webdavCreateDirectory"))+" ",1),(0,i.bF)(c,{content:e.$t("sysUpload.webdavCreateDirectoryTip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(f,{modelValue:o.newChannel.createDirectory,"onUpdate:modelValue":t[30]||(t[30]=e=>o.newChannel.createDirectory=e)},null,8,["modelValue"])]),_:1}),(0,i.bF)(x,{label:e.$t("sysUpload.quotaLimit")},{default:(0,i.k6)(()=>[(0,i.bF)(f,{modelValue:o.newChannel.quota.enabled,"onUpdate:modelValue":t[31]||(t[31]=e=>o.newChannel.quota.enabled=e)},null,8,["modelValue"])]),_:1},8,["label"]),o.newChannel.quota?.enabled?((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[(0,i.bF)(x,{label:e.$t("sysUpload.quotaLimitGB")},{default:(0,i.k6)(()=>[(0,i.bF)(S,{modelValue:o.newChannel.quota.limitGB,"onUpdate:modelValue":t[32]||(t[32]=e=>o.newChannel.quota.limitGB=e),min:.1,step:1,precision:1},null,8,["modelValue"])]),_:1},8,["label"]),(0,i.bF)(x,{label:e.$t("sysUpload.quotaThreshold")},{default:(0,i.k6)(()=>[(0,i.bF)(S,{modelValue:o.newChannel.quota.threshold,"onUpdate:modelValue":t[33]||(t[33]=e=>o.newChannel.quota.threshold=e),min:50,max:100,step:5},null,8,["modelValue"])]),_:1},8,["label"])],64)):(0,i.Q3)("",!0)],64)):(0,i.Q3)("",!0)],64))]),_:1},8,["model","rules"])]),_:1},8,["modelValue","title","onClosed"]),(0,i.bF)(T,{modelValue:o.showDetailDialog,"onUpdate:modelValue":t[37]||(t[37]=e=>o.showDetailDialog=e),title:e.$t("sysUpload.detailDialogTitle",{name:o.currentChannel?.name||""}),class:"channel-dialog",onClosed:l.resetDetailData},{footer:(0,i.k6)(()=>[(0,i.bF)(h,{onClick:t[36]||(t[36]=e=>o.showDetailDialog=!1)},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysUpload.closeBtn")),1)]),_:1}),(0,i.bF)(h,{type:"primary",onClick:l.openEditFromDetail},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysUpload.editBtn")),1)]),_:1},8,["onClick"])]),default:(0,i.k6)(()=>[(0,i.bF)(P,{column:1,border:""},{default:(0,i.k6)(()=>[(0,i.bF)(M,{label:e.$t("sysUpload.channelNameDetail")},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(o.currentChannel?.name),1)]),_:1},8,["label"]),(0,i.bF)(M,{label:e.$t("sysUpload.channelTypeDetail")},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(l.getChannelTypeLabel(o.currentChannelType)),1)]),_:1},8,["label"]),(0,i.bF)(M,{label:e.$t("sysUpload.statusLabel")},{default:(0,i.k6)(()=>[(0,i.bF)(p,{type:o.currentChannel?.enabled?"success":"info"},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(o.currentChannel?.enabled?e.$t("sysUpload.enabled"):e.$t("sysUpload.disabled")),1)]),_:1},8,["type"])]),_:1},8,["label"]),o.currentChannel?.fixed?((0,i.uX)(),(0,i.Wv)(M,{key:0,label:e.$t("sysUpload.configSource")},{default:(0,i.k6)(()=>[(0,i.bF)(p,{type:"warning"},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysUpload.envVariable")),1)]),_:1})]),_:1},8,["label"])):(0,i.Q3)("",!0),"telegram"===o.currentChannelType?((0,i.uX)(),(0,i.CE)(i.FK,{key:1},[(0,i.bF)(M,{label:e.$t("sysUpload.botTokenLabel")},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(l.maskText(o.currentChannel?.botToken,10)),1)]),_:1},8,["label"]),(0,i.bF)(M,{label:e.$t("sysUpload.chatIdLabel")},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(l.maskText(o.currentChannel?.chatId,6)),1)]),_:1},8,["label"]),(0,i.bF)(M,{label:e.$t("sysUpload.proxyDomain")},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(o.currentChannel?.proxyUrl||e.$t("sysUpload.notSet")),1)]),_:1},8,["label"])],64)):"cfr2"===o.currentChannelType?((0,i.uX)(),(0,i.Wv)(M,{key:2,label:e.$t("sysUpload.publicUrl")},{default:(0,i.k6)(()=>[(0,i.bF)(k,{"model-value":o.currentChannel?.publicUrl||e.$t("sysUpload.notSet"),readonly:""},null,8,["model-value"])]),_:1},8,["label"])):"s3"===o.currentChannelType?((0,i.uX)(),(0,i.CE)(i.FK,{key:3},[(0,i.bF)(M,{label:e.$t("sysUpload.endpointLabel")},{default:(0,i.k6)(()=>[(0,i.bF)(k,{"model-value":o.currentChannel?.endpoint,readonly:""},null,8,["model-value"])]),_:1},8,["label"]),(0,i.bF)(M,{label:e.$t("sysUpload.cdnDomain")},{default:(0,i.k6)(()=>[(0,i.bF)(k,{"model-value":o.currentChannel?.cdnDomain||e.$t("sysUpload.notSet"),readonly:""},null,8,["model-value"])]),_:1},8,["label"]),(0,i.bF)(M,{label:e.$t("sysUpload.bucketName")},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(o.currentChannel?.bucketName),1)]),_:1},8,["label"]),(0,i.bF)(M,{label:e.$t("sysUpload.bucketRegion")},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(o.currentChannel?.region),1)]),_:1},8,["label"]),(0,i.bF)(M,{label:e.$t("sysUpload.pathStyle")},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(o.currentChannel?.pathStyle?e.$t("sysUpload.isPathStyle"):e.$t("sysUpload.isNotPathStyle")),1)]),_:1},8,["label"])],64)):"discord"===o.currentChannelType?((0,i.uX)(),(0,i.CE)(i.FK,{key:4},[(0,i.bF)(M,{label:e.$t("sysUpload.botTokenLabel")},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(l.maskText(o.currentChannel?.botToken,10)),1)]),_:1},8,["label"]),(0,i.bF)(M,{label:e.$t("sysUpload.channelIdLabel")},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(l.maskText(o.currentChannel?.channelId,6)),1)]),_:1},8,["label"]),(0,i.bF)(M,{label:e.$t("sysUpload.proxyDomain")},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(o.currentChannel?.proxyUrl||e.$t("sysUpload.notSet")),1)]),_:1},8,["label"]),(0,i.bF)(M,{label:e.$t("sysUpload.nitroMember")},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(o.currentChannel?.isNitro?e.$t("sysUpload.isPathStyle"):e.$t("sysUpload.isNotPathStyle")),1)]),_:1},8,["label"])],64)):"huggingface"===o.currentChannelType?((0,i.uX)(),(0,i.CE)(i.FK,{key:5},[(0,i.bF)(M,{label:e.$t("sysUpload.repoName")},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(o.currentChannel?.repo),1)]),_:1},8,["label"]),(0,i.bF)(M,{label:e.$t("sysUpload.privateRepo")},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(o.currentChannel?.isPrivate?e.$t("sysUpload.isPathStyle"):e.$t("sysUpload.isNotPathStyle")),1)]),_:1},8,["label"])],64)):"webdav"===o.currentChannelType?((0,i.uX)(),(0,i.CE)(i.FK,{key:6},[(0,i.bF)(M,{label:e.$t("sysUpload.webdavBaseUrl")},{default:(0,i.k6)(()=>[(0,i.bF)(k,{"model-value":o.currentChannel?.baseUrl,readonly:""},null,8,["model-value"])]),_:1},8,["label"]),(0,i.bF)(M,{label:e.$t("sysUpload.publicUrl")},{default:(0,i.k6)(()=>[(0,i.bF)(k,{"model-value":o.currentChannel?.publicUrl||e.$t("sysUpload.notSet"),readonly:""},null,8,["model-value"])]),_:1},8,["label"]),(0,i.bF)(M,{label:e.$t("sysUpload.webdavUsername")},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(o.currentChannel?.username||e.$t("sysUpload.notSet")),1)]),_:1},8,["label"]),(0,i.bF)(M,{label:e.$t("sysUpload.webdavHeaders")},{default:(0,i.k6)(()=>[(0,i.bF)(k,{"model-value":l.formatHeaders(o.currentChannel?.headers),type:"textarea",autosize:{minRows:2},readonly:""},null,8,["model-value"])]),_:1},8,["label"]),(0,i.bF)(M,{label:e.$t("sysUpload.webdavCreateDirectory")},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(!1!==o.currentChannel?.createDirectory?e.$t("sysUpload.isPathStyle"):e.$t("sysUpload.isNotPathStyle")),1)]),_:1},8,["label"])],64)):(0,i.Q3)("",!0),o.currentChannel?.quota?.enabled?((0,i.uX)(),(0,i.CE)(i.FK,{key:7},[(0,i.bF)(M,{label:e.$t("sysUpload.quotaLimit")},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(o.currentChannel?.quota?.limitGB)+" GB",1)]),_:1},8,["label"]),(0,i.bF)(M,{label:e.$t("sysUpload.quotaThreshold")},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(o.currentChannel?.quota?.threshold)+"%",1)]),_:1},8,["label"]),(0,i.bF)(M,null,{label:(0,i.k6)(()=>[(0,i.Lk)("span",Lp,[(0,i.eW)((0,n.v_)(e.$t("sysUpload.currentUsage"))+" ",1),(0,i.bF)(h,{link:"",type:"primary",onClick:l.refreshQuota,class:"refresh-btn"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"sync-alt",class:(0,n.C4)({"fa-spin":o.quotaLoading})},null,8,["class"])]),_:1},8,["onClick"])])]),default:(0,i.k6)(()=>[(0,i.Lk)("div",Vp,[(0,i.bF)(m,{percentage:l.getQuotaPercentage(o.currentChannel),status:l.getQuotaStatus(o.currentChannel),"stroke-width":16,"text-inside":!0,format:()=>l.getQuotaText(o.currentChannel)},null,8,["percentage","status","format"]),(0,i.Lk)("div",{class:(0,n.C4)(["quota-info",{"quota-warning":l.isQuotaExceeded(o.currentChannel)}])},(0,n.v_)(l.getQuotaStatusText(o.currentChannel)),3)])]),_:1})],64)):(0,i.Q3)("",!0)]),_:1})]),_:1},8,["modelValue","title","onClosed"]),(0,i.bF)(T,{modelValue:o.showEditDialog,"onUpdate:modelValue":t[77]||(t[77]=e=>o.showEditDialog=e),title:e.$t("sysUpload.editDialogTitle",{name:o.editChannel?.name||""}),class:"channel-dialog","destroy-on-close":"",onClosed:l.resetEditData},{footer:(0,i.k6)(()=>[(0,i.bF)(h,{onClick:t[76]||(t[76]=e=>o.showEditDialog=!1)},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysUpload.cancel")),1)]),_:1}),(0,i.bF)(h,{type:"primary",onClick:l.confirmEditChannel},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysUpload.saveChanges")),1)]),_:1},8,["onClick"])]),default:(0,i.k6)(()=>[(0,i.bF)(F,{model:o.editChannel,"label-position":"top",ref:"editForm",rules:l.editRules},{default:(0,i.k6)(()=>[(0,i.bF)(x,{prop:"name"},{label:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysUpload.channelNameLabel"))+" ",1),(0,i.bF)(c,{content:e.$t("sysUpload.channelNameEditDisabledTip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"exclamation-triangle",class:"inline-warning-icon"})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.name,"onUpdate:modelValue":t[38]||(t[38]=e=>o.editChannel.name=e),disabled:""},null,8,["modelValue"])]),_:1}),(0,i.bF)(x,{label:e.$t("sysUpload.enableChannel")},{default:(0,i.k6)(()=>[(0,i.bF)(f,{modelValue:o.editChannel.enabled,"onUpdate:modelValue":t[39]||(t[39]=e=>o.editChannel.enabled=e)},null,8,["modelValue"])]),_:1},8,["label"]),"telegram"===o.currentChannelType?((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[(0,i.bF)(x,{label:e.$t("sysUpload.botTokenLabel"),prop:"botToken"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.botToken,"onUpdate:modelValue":t[40]||(t[40]=e=>o.editChannel.botToken=e),disabled:o.editChannel.fixed,type:"password","show-password":""},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(x,{label:e.$t("sysUpload.chatIdLabel"),prop:"chatId"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.chatId,"onUpdate:modelValue":t[41]||(t[41]=e=>o.editChannel.chatId=e),disabled:o.editChannel.fixed,type:"password","show-password":""},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(x,{label:e.$t("sysUpload.proxyDomain")},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.proxyUrl,"onUpdate:modelValue":t[42]||(t[42]=e=>o.editChannel.proxyUrl=e),placeholder:e.$t("sysUpload.proxyDomainPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"])],64)):"cfr2"===o.currentChannelType?((0,i.uX)(),(0,i.CE)(i.FK,{key:1},[(0,i.bF)(x,{label:e.$t("sysUpload.publicUrl")},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.publicUrl,"onUpdate:modelValue":t[43]||(t[43]=e=>o.editChannel.publicUrl=e)},null,8,["modelValue"])]),_:1},8,["label"]),(0,i.bF)(x,{label:e.$t("sysUpload.quotaLimit")},{default:(0,i.k6)(()=>[(0,i.bF)(f,{modelValue:o.editChannel.quota.enabled,"onUpdate:modelValue":t[44]||(t[44]=e=>o.editChannel.quota.enabled=e),onChange:t[45]||(t[45]=e=>l.onQuotaEnabledChange(e,o.editChannel))},null,8,["modelValue"])]),_:1},8,["label"]),o.editChannel.quota?.enabled?((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[(0,i.bF)(x,{label:e.$t("sysUpload.quotaLimitGB")},{default:(0,i.k6)(()=>[(0,i.bF)(S,{modelValue:o.editChannel.quota.limitGB,"onUpdate:modelValue":t[46]||(t[46]=e=>o.editChannel.quota.limitGB=e),min:.1,step:1,precision:1},null,8,["modelValue"])]),_:1},8,["label"]),(0,i.bF)(x,{label:e.$t("sysUpload.quotaThreshold")},{default:(0,i.k6)(()=>[(0,i.bF)(S,{modelValue:o.editChannel.quota.threshold,"onUpdate:modelValue":t[47]||(t[47]=e=>o.editChannel.quota.threshold=e),min:50,max:100,step:5},null,8,["modelValue"])]),_:1},8,["label"])],64)):(0,i.Q3)("",!0)],64)):"s3"===o.currentChannelType?((0,i.uX)(),(0,i.CE)(i.FK,{key:2},[(0,i.bF)(x,{label:e.$t("sysUpload.endpointLabel"),prop:"endpoint"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.endpoint,"onUpdate:modelValue":t[48]||(t[48]=e=>o.editChannel.endpoint=e),disabled:o.editChannel.fixed},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(x,null,{label:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysUpload.cdnDomain"))+" ",1),(0,i.bF)(c,{content:e.$t("sysUpload.cdnDomainTip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.cdnDomain,"onUpdate:modelValue":t[49]||(t[49]=e=>o.editChannel.cdnDomain=e),placeholder:e.$t("sysUpload.cdnDomainPlaceholder")},null,8,["modelValue","placeholder"])]),_:1}),(0,i.bF)(x,{label:e.$t("sysUpload.bucketName"),prop:"bucketName"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.bucketName,"onUpdate:modelValue":t[50]||(t[50]=e=>o.editChannel.bucketName=e),disabled:o.editChannel.fixed},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(x,{label:e.$t("sysUpload.bucketRegion"),prop:"region"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.region,"onUpdate:modelValue":t[51]||(t[51]=e=>o.editChannel.region=e),disabled:o.editChannel.fixed},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(x,{label:e.$t("sysUpload.accessKeyId"),prop:"accessKeyId"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.accessKeyId,"onUpdate:modelValue":t[52]||(t[52]=e=>o.editChannel.accessKeyId=e),disabled:o.editChannel.fixed,type:"password","show-password":""},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(x,{label:e.$t("sysUpload.secretAccessKey"),prop:"secretAccessKey"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.secretAccessKey,"onUpdate:modelValue":t[53]||(t[53]=e=>o.editChannel.secretAccessKey=e),disabled:o.editChannel.fixed,type:"password","show-password":""},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(x,null,{label:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysUpload.pathStyle"))+" ",1),(0,i.bF)(c,{content:e.$t("sysUpload.pathStyleTip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(f,{modelValue:o.editChannel.pathStyle,"onUpdate:modelValue":t[54]||(t[54]=e=>o.editChannel.pathStyle=e),disabled:o.editChannel.fixed},null,8,["modelValue","disabled"])]),_:1}),(0,i.bF)(x,{label:e.$t("sysUpload.quotaLimit")},{default:(0,i.k6)(()=>[(0,i.bF)(f,{modelValue:o.editChannel.quota.enabled,"onUpdate:modelValue":t[55]||(t[55]=e=>o.editChannel.quota.enabled=e),onChange:t[56]||(t[56]=e=>l.onQuotaEnabledChange(e,o.editChannel))},null,8,["modelValue"])]),_:1},8,["label"]),o.editChannel.quota?.enabled?((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[(0,i.bF)(x,{label:e.$t("sysUpload.quotaLimitGB")},{default:(0,i.k6)(()=>[(0,i.bF)(S,{modelValue:o.editChannel.quota.limitGB,"onUpdate:modelValue":t[57]||(t[57]=e=>o.editChannel.quota.limitGB=e),min:.1,step:1,precision:1},null,8,["modelValue"])]),_:1},8,["label"]),(0,i.bF)(x,{label:e.$t("sysUpload.quotaThreshold")},{default:(0,i.k6)(()=>[(0,i.bF)(S,{modelValue:o.editChannel.quota.threshold,"onUpdate:modelValue":t[58]||(t[58]=e=>o.editChannel.quota.threshold=e),min:50,max:100,step:5},null,8,["modelValue"])]),_:1},8,["label"])],64)):(0,i.Q3)("",!0)],64)):"discord"===o.currentChannelType?((0,i.uX)(),(0,i.CE)(i.FK,{key:3},[(0,i.bF)(x,{label:e.$t("sysUpload.botTokenLabel"),prop:"botToken"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.botToken,"onUpdate:modelValue":t[59]||(t[59]=e=>o.editChannel.botToken=e),disabled:o.editChannel.fixed,type:"password","show-password":""},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(x,{label:e.$t("sysUpload.channelIdLabel"),prop:"channelId"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.channelId,"onUpdate:modelValue":t[60]||(t[60]=e=>o.editChannel.channelId=e),disabled:o.editChannel.fixed,type:"password","show-password":""},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(x,{label:e.$t("sysUpload.proxyDomain")},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.proxyUrl,"onUpdate:modelValue":t[61]||(t[61]=e=>o.editChannel.proxyUrl=e),placeholder:e.$t("sysUpload.proxyDomainPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),(0,i.bF)(x,null,{label:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysUpload.nitroMember"))+" ",1),(0,i.bF)(c,{content:e.$t("sysUpload.nitroTip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(f,{modelValue:o.editChannel.isNitro,"onUpdate:modelValue":t[62]||(t[62]=e=>o.editChannel.isNitro=e)},null,8,["modelValue"])]),_:1})],64)):"huggingface"===o.currentChannelType?((0,i.uX)(),(0,i.CE)(i.FK,{key:4},[(0,i.bF)(x,{label:e.$t("sysUpload.repoName"),prop:"repo"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.repo,"onUpdate:modelValue":t[63]||(t[63]=e=>o.editChannel.repo=e),disabled:o.editChannel.fixed},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(x,{label:e.$t("sysUpload.accessToken"),prop:"token"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.token,"onUpdate:modelValue":t[64]||(t[64]=e=>o.editChannel.token=e),disabled:o.editChannel.fixed,type:"password","show-password":""},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(x,null,{label:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysUpload.privateRepo"))+" ",1),(0,i.bF)(c,{content:e.$t("sysUpload.privateRepoTip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(f,{modelValue:o.editChannel.isPrivate,"onUpdate:modelValue":t[65]||(t[65]=e=>o.editChannel.isPrivate=e)},null,8,["modelValue"])]),_:1})],64)):"webdav"===o.currentChannelType?((0,i.uX)(),(0,i.CE)(i.FK,{key:5},[(0,i.bF)(x,{label:e.$t("sysUpload.webdavBaseUrl"),prop:"baseUrl"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.baseUrl,"onUpdate:modelValue":t[66]||(t[66]=e=>o.editChannel.baseUrl=e),disabled:o.editChannel.fixed},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(x,{label:e.$t("sysUpload.webdavUsername")},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.username,"onUpdate:modelValue":t[67]||(t[67]=e=>o.editChannel.username=e),disabled:o.editChannel.fixed},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(x,{label:e.$t("sysUpload.webdavPassword")},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.password,"onUpdate:modelValue":t[68]||(t[68]=e=>o.editChannel.password=e),disabled:o.editChannel.fixed,type:"password","show-password":""},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(x,null,{label:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysUpload.publicUrl"))+" ",1),(0,i.bF)(c,{content:e.$t("sysUpload.webdavPublicUrlTip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.publicUrl,"onUpdate:modelValue":t[69]||(t[69]=e=>o.editChannel.publicUrl=e),placeholder:e.$t("sysUpload.webdavPublicUrlPlaceholder")},null,8,["modelValue","placeholder"])]),_:1}),(0,i.bF)(x,{label:e.$t("sysUpload.webdavHeaders")},{default:(0,i.k6)(()=>[(0,i.bF)(k,{modelValue:o.editChannel.headersText,"onUpdate:modelValue":t[70]||(t[70]=e=>o.editChannel.headersText=e),type:"textarea",autosize:{minRows:2},placeholder:e.$t("sysUpload.webdavHeadersPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),(0,i.bF)(x,null,{label:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysUpload.webdavCreateDirectory"))+" ",1),(0,i.bF)(c,{content:e.$t("sysUpload.webdavCreateDirectoryTip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(f,{modelValue:o.editChannel.createDirectory,"onUpdate:modelValue":t[71]||(t[71]=e=>o.editChannel.createDirectory=e)},null,8,["modelValue"])]),_:1}),(0,i.bF)(x,{label:e.$t("sysUpload.quotaLimit")},{default:(0,i.k6)(()=>[(0,i.bF)(f,{modelValue:o.editChannel.quota.enabled,"onUpdate:modelValue":t[72]||(t[72]=e=>o.editChannel.quota.enabled=e),onChange:t[73]||(t[73]=e=>l.onQuotaEnabledChange(e,o.editChannel))},null,8,["modelValue"])]),_:1},8,["label"]),o.editChannel.quota?.enabled?((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[(0,i.bF)(x,{label:e.$t("sysUpload.quotaLimitGB")},{default:(0,i.k6)(()=>[(0,i.bF)(S,{modelValue:o.editChannel.quota.limitGB,"onUpdate:modelValue":t[74]||(t[74]=e=>o.editChannel.quota.limitGB=e),min:.1,step:1,precision:1},null,8,["modelValue"])]),_:1},8,["label"]),(0,i.bF)(x,{label:e.$t("sysUpload.quotaThreshold")},{default:(0,i.k6)(()=>[(0,i.bF)(S,{modelValue:o.editChannel.quota.threshold,"onUpdate:modelValue":t[75]||(t[75]=e=>o.editChannel.quota.threshold=e),min:50,max:100,step:5},null,8,["modelValue"])]),_:1},8,["label"])],64)):(0,i.Q3)("",!0)],64)):(0,i.Q3)("",!0)]),_:1},8,["model","rules"])]),_:1},8,["modelValue","title","onClosed"])])),[[D,o.loading]])}var Ip={components:{ChannelIcon:Ou.A,CustomSelect:Nu},data(){return{channelFilter:"",channels:[{value:"telegram",label:"Telegram"},{value:"cfr2",label:"CloudFlare R2"},{value:"s3",label:"S3"},{value:"discord",label:"Discord"},{value:"huggingface",label:"HuggingFace"},{value:"webdav",label:"WebDAV"}],addableChannels:[{value:"telegram",label:"Telegram"},{value:"cfr2",label:"CloudFlare R2"},{value:"s3",label:"S3"},{value:"discord",label:"Discord"},{value:"huggingface",label:"HuggingFace"},{value:"webdav",label:"WebDAV"}],telegramSettings:{loadBalance:{enabled:!1},channels:[]},cfr2Settings:{channels:[]},s3Settings:{loadBalance:{enabled:!1},channels:[]},discordSettings:{loadBalance:{enabled:!1},channels:[]},huggingfaceSettings:{loadBalance:{enabled:!1},channels:[]},webdavSettings:{loadBalance:{enabled:!1},channels:[]},showAddDialog:!1,showDetailDialog:!1,showEditDialog:!1,currentChannelType:"",currentChannelIndex:-1,currentChannel:null,editChannel:{},newChannel:{type:"",name:"",enabled:!0,botToken:"",chatId:"",proxyUrl:"",endpoint:"",cdnDomain:"",bucketName:"",region:"auto",accessKeyId:"",secretAccessKey:"",pathStyle:!1,quota:{enabled:!1,limitGB:10,threshold:95},channelId:"",isNitro:!1,repo:"",token:"",isPrivate:!1,baseUrl:"",username:"",password:"",publicUrl:"",headersText:"",createDirectory:!0},quotaStats:{},quotaLoading:!1,loading:!1}},computed:{filterOptions(){return[{value:"",label:this.$t("common.all")},...this.channels.map(e=>({value:e.value,label:e.label,channelType:e.value}))]},filteredChannels(){return this.channelFilter?this.channels.filter(e=>e.value===this.channelFilter):this.channels},addRules(){return{type:[{required:!0,message:this.$t("sysUpload.channelTypePlaceholder"),trigger:"change"}],name:[{required:!0,message:this.$t("sysUpload.channelNamePlaceholder"),trigger:"blur"},{pattern:/^[\u4e00-\u9fa5a-zA-Z0-9_-]+$/,message:this.$t("sysUpload.channelNamePlaceholder"),trigger:"blur"}],botToken:[{required:!0,message:this.$t("sysUpload.botTokenPlaceholder"),trigger:"blur"}],chatId:[{required:!0,message:this.$t("sysUpload.chatIdPlaceholder"),trigger:"blur"}],channelId:[{required:!0,message:this.$t("sysUpload.channelIdPlaceholder"),trigger:"blur"}],endpoint:[{required:!0,message:this.$t("sysUpload.endpointPlaceholder"),trigger:"blur"}],bucketName:[{required:!0,message:this.$t("sysUpload.bucketNamePlaceholder"),trigger:"blur"}],region:[{required:!0,message:this.$t("sysUpload.bucketRegionPlaceholder"),trigger:"blur"}],accessKeyId:[{required:!0,message:this.$t("sysUpload.accessKeyIdPlaceholder"),trigger:"blur"}],secretAccessKey:[{required:!0,message:this.$t("sysUpload.secretAccessKeyPlaceholder"),trigger:"blur"}],repo:[{required:!0,message:this.$t("sysUpload.repoNamePlaceholder"),trigger:"blur"}],token:[{required:!0,message:this.$t("sysUpload.accessTokenPlaceholder"),trigger:"blur"}],baseUrl:[{required:!0,message:this.$t("sysUpload.webdavBaseUrlPlaceholder"),trigger:"blur"}]}},editRules(){return{name:[{required:!0,message:this.$t("sysUpload.channelNamePlaceholder"),trigger:"blur"},{pattern:/^[\u4e00-\u9fa5a-zA-Z0-9_-]+$/,message:this.$t("sysUpload.channelNamePlaceholder"),trigger:"blur"}],botToken:[{required:!0,message:this.$t("sysUpload.botTokenPlaceholder"),trigger:"blur"}],chatId:[{required:!0,message:this.$t("sysUpload.chatIdPlaceholder"),trigger:"blur"}],channelId:[{required:!0,message:this.$t("sysUpload.channelIdPlaceholder"),trigger:"blur"}],endpoint:[{required:!0,message:this.$t("sysUpload.endpointPlaceholder"),trigger:"blur"}],bucketName:[{required:!0,message:this.$t("sysUpload.bucketNamePlaceholder"),trigger:"blur"}],region:[{required:!0,message:this.$t("sysUpload.bucketRegionPlaceholder"),trigger:"blur"}],accessKeyId:[{required:!0,message:this.$t("sysUpload.accessKeyIdPlaceholder"),trigger:"blur"}],secretAccessKey:[{required:!0,message:this.$t("sysUpload.secretAccessKeyPlaceholder"),trigger:"blur"}],repo:[{required:!0,message:this.$t("sysUpload.repoNamePlaceholder"),trigger:"blur"}],token:[{required:!0,message:this.$t("sysUpload.accessTokenPlaceholder"),trigger:"blur"}],baseUrl:[{required:!0,message:this.$t("sysUpload.webdavBaseUrlPlaceholder"),trigger:"blur"}]}}},methods:{handleCardMouseMove(e,t,s){const i=e.currentTarget,n=i.getBoundingClientRect(),a=e.clientX-n.left,o=e.clientY-n.top,l=`glow-${t}-${s}`,r=this.$refs[l];r&&r[0]&&(r[0].style.opacity="1",r[0].style.left=`${a}px`,r[0].style.top=`${o}px`)},handleCardMouseLeave(e,t){const s=`glow-${e}-${t}`,i=this.$refs[s];i&&i[0]&&(i[0].style.opacity="0")},getChannelTypeLabel(e){const t=this.channels.find(t=>t.value===e);return t?t.label:e},getChannelList(e){return this.getSettings(e)?.channels||[]},getSettings(e){const t={telegram:this.telegramSettings,cfr2:this.cfr2Settings,s3:this.s3Settings,discord:this.discordSettings,huggingface:this.huggingfaceSettings,webdav:this.webdavSettings};return t[e]},hasLoadBalance(e){return["telegram","s3","discord","huggingface","webdav"].includes(e)},maskText(e,t=4){return e?e.length<=2*t?"****":e.slice(0,t)+"****"+e.slice(-t):this.$t("sysUpload.notSet")},formatHeaders(e){return!e||"object"===typeof e&&0===Object.keys(e).length?this.$t("sysUpload.notSet"):"string"===typeof e?e:JSON.stringify(e,null,2)},headersToText(e){return e?"string"===typeof e?e:JSON.stringify(e,null,2):""},parseHeadersText(e){if(!e||!e.trim())return{};try{const t=JSON.parse(e);return!t||"object"!==typeof t||Array.isArray(t)?null:t}catch(t){return null}},openDetailDialog(e,t){this.currentChannelType=e,this.currentChannelIndex=t,this.currentChannel=this.getChannelList(e)[t],this.showDetailDialog=!0},openEditDialog(e,t){this.currentChannelType=e,this.currentChannelIndex=t;const s=this.getChannelList(e)[t];this.editChannel=JSON.parse(JSON.stringify(s)),"webdav"===e&&(this.editChannel.headersText=this.headersToText(this.editChannel.headers),this.editChannel.createDirectory=!1!==this.editChannel.createDirectory),this.editChannel.quota||(this.editChannel.quota={enabled:!1,limitGB:10,threshold:95}),this.showEditDialog=!0},openEditFromDetail(){this.showDetailDialog=!1,this.openEditDialog(this.currentChannelType,this.currentChannelIndex)},resetAddForm(){this.newChannel={type:"",name:"",enabled:!0,botToken:"",chatId:"",proxyUrl:"",endpoint:"",bucketName:"",region:"auto",accessKeyId:"",secretAccessKey:"",pathStyle:!1,quota:{enabled:!1,limitGB:10,threshold:95},channelId:"",isNitro:!1,repo:"",token:"",isPrivate:!1,baseUrl:"",username:"",password:"",publicUrl:"",headersText:"",createDirectory:!0}},resetDetailData(){this.currentChannel=null},resetEditData(){this.editChannel={}},onChannelTypeChange(){const{type:e,name:t}=this.newChannel;this.newChannel={type:e,name:t,enabled:!0,botToken:"",chatId:"",proxyUrl:"",endpoint:"",cdnDomain:"",bucketName:"",region:"auto",accessKeyId:"",secretAccessKey:"",pathStyle:!1,quota:{enabled:!1,limitGB:10,threshold:95},channelId:"",isNitro:!1,repo:"",token:"",isPrivate:!1,baseUrl:"",username:"",password:"",publicUrl:"",headersText:"",createDirectory:!0}},confirmAddChannel(){this.$refs.addForm.validate(e=>{if(!e)return;const{type:t,name:s}=this.newChannel,i=this.getSettings(t),n=["Telegram_env","R2_env","S3_env","Discord_env","HuggingFace_env","WebDAV_env"];if(n.includes(s))return void this.$message.warning(this.$t("sysUpload.reservedName"));const a=i.channels.some(e=>e.name===s);if(a)return void this.$message.warning(this.$t("sysUpload.duplicateName"));let o={id:i.channels.length+1,name:this.newChannel.name,type:t,savePath:"database",enabled:!0,fixed:!1};if("telegram"===t)Object.assign(o,{botToken:this.newChannel.botToken,chatId:this.newChannel.chatId,proxyUrl:this.newChannel.proxyUrl});else if("s3"===t)Object.assign(o,{endpoint:this.newChannel.endpoint,cdnDomain:this.newChannel.cdnDomain,bucketName:this.newChannel.bucketName,region:this.newChannel.region,accessKeyId:this.newChannel.accessKeyId,secretAccessKey:this.newChannel.secretAccessKey,pathStyle:this.newChannel.pathStyle,quota:{...this.newChannel.quota}});else if("discord"===t)Object.assign(o,{botToken:this.newChannel.botToken,channelId:this.newChannel.channelId,proxyUrl:this.newChannel.proxyUrl,isNitro:this.newChannel.isNitro});else if("huggingface"===t)Object.assign(o,{repo:this.newChannel.repo,token:this.newChannel.token,isPrivate:this.newChannel.isPrivate});else if("webdav"===t){const e=this.parseHeadersText(this.newChannel.headersText);if(null===e)return void this.$message.warning(this.$t("sysUpload.webdavHeadersInvalid"));Object.assign(o,{baseUrl:this.newChannel.baseUrl,username:this.newChannel.username,password:this.newChannel.password,publicUrl:this.newChannel.publicUrl,headers:e,createDirectory:!1!==this.newChannel.createDirectory,quota:{...this.newChannel.quota}})}i.channels.push(o),this.showAddDialog=!1,this.saveSettings()})},confirmEditChannel(){this.$refs.editForm.validate(e=>{if(!e)return;const t=this.getSettings(this.currentChannelType),s=this.currentChannelIndex,i=t.channels[s]?.name||this.editChannel.name,n={...this.editChannel,name:i};if("webdav"===this.currentChannelType){const e=this.parseHeadersText(n.headersText);if(null===e)return void this.$message.warning(this.$t("sysUpload.webdavHeadersInvalid"));n.headers=e,n.createDirectory=!1!==n.createDirectory,delete n.headersText}t.channels[this.currentChannelIndex]=n,this.showEditDialog=!1,this.saveSettings()})},deleteChannel(e,t){const s=this.getChannelList(e)[t];s.fixed?this.$message.warning(this.$t("sysUpload.fixedChannelCannotDelete")):this.$confirm(this.$t("sysUpload.deleteChannelConfirm"),this.$t("common.warning"),{confirmButtonText:this.$t("common.confirm"),cancelButtonText:this.$t("common.cancel"),type:"warning"}).then(()=>{const s=this.getSettings(e);s.channels.splice(t,1),s.channels.forEach((e,t)=>{e.id=t+1}),this.saveSettings()}).catch(()=>{})},saveSettings(){const e={telegram:this.telegramSettings,cfr2:this.cfr2Settings,s3:this.s3Settings,discord:this.discordSettings,huggingface:this.huggingfaceSettings,webdav:this.webdavSettings};(0,Rt.A)("/api/manage/sysConfig/upload",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}).then(()=>{this.$message.success(this.$t("sysOthers.settingsSaved"))})},async refreshQuota(){this.quotaLoading=!0;try{const e=await(0,Rt.A)("/api/manage/quota",{method:"POST"}),t=await e.json();if(t.success)this.quotaStats=t.channelStats||{};else{const e=await(0,Rt.A)("/api/manage/quota"),t=await e.json();t.success&&(this.quotaStats=t.quotaStats||{})}}catch(e){console.error("Failed to refresh quota stats:",e)}finally{this.quotaLoading=!1}},async loadQuotaStats(){try{const e=await(0,Rt.A)("/api/manage/quota"),t=await e.json();t.success&&(this.quotaStats=t.quotaStats||{})}catch(e){console.error("Failed to load quota stats:",e)}},getChannelUsedGB(e){const t=this.quotaStats[e.name];return t?(t.usedMB||0)/1024:0},getQuotaPercentage(e){const t=this.getChannelUsedGB(e),s=e.quota?.limitGB||10,i=t/s*100;return Math.min(100,Math.round(10*i)/10)},getQuotaStatus(e){const t=this.getQuotaPercentage(e),s=e.quota?.threshold||95;return t>=s?"exception":t>=80?"warning":"success"},getQuotaText(e){const t=this.getChannelUsedGB(e),s=e.quota?.limitGB||10;return`${t.toFixed(2)} / ${s} GB`},isQuotaExceeded(e){const t=this.getQuotaPercentage(e),s=e.quota?.threshold||95;return t>=s},getQuotaStatusText(e){const t=this.getQuotaPercentage(e),s=e.quota?.threshold||95;return t>=s?`⚠️ 已达到容量阈值 (${s}%),渠道写入已暂停`:t>=80?"⚡ 容量使用较高,接近阈值":"✓ 容量正常"},async onQuotaEnabledChange(e,t){if(e&&t.name){const e=this.quotaStats[t.name];e||this.$confirm(this.$t("sysUpload.quotaInitConfirm"),this.$t("sysUpload.quotaInitTitle"),{confirmButtonText:this.$t("sysUpload.quotaInitConfirmBtn"),cancelButtonText:this.$t("sysUpload.quotaInitCancelBtn"),type:"info"}).then(async()=>{await this.recalculateQuota()}).catch(()=>{this.$message.info(this.$t("sysUpload.quotaInitLater"))})}},async recalculateQuota(){this.quotaLoading=!0;try{this.$message.info(this.$t("sysUpload.quotaCalculating"));const e=await(0,Rt.A)("/api/manage/quota",{method:"POST"}),t=await e.json();t.success?(this.quotaStats=t.channelStats||{},this.$message.success(this.$t("sysUpload.quotaCalculateSuccess"))):this.$message.error(this.$t("sysUpload.quotaCalculateError")+(t.error||""))}catch(e){console.error("Failed to recalculate quota:",e),this.$message.error(this.$t("sysUpload.quotaCalculateFailed"))}finally{this.quotaLoading=!1}}},mounted(){this.loading=!0,(0,Rt.A)("/api/manage/sysConfig/upload").then(e=>e.json()).then(e=>{this.telegramSettings=e.telegram,e.cfr2&&e.cfr2.channels&&(e.cfr2.channels=e.cfr2.channels.map(e=>({...e,quota:e.quota||{enabled:!1,limitGB:10,threshold:95}}))),this.cfr2Settings=e.cfr2,e.s3&&e.s3.channels&&(e.s3.channels=e.s3.channels.map(e=>({...e,quota:e.quota||{enabled:!1,limitGB:10,threshold:95}}))),this.s3Settings=e.s3,e.discord&&e.discord.channels&&(e.discord.channels=e.discord.channels.map(e=>({...e,proxyUrl:e.proxyUrl||""}))),this.discordSettings=e.discord||{loadBalance:{},channels:[]},e.huggingface&&e.huggingface.channels&&(e.huggingface.channels=e.huggingface.channels.map(e=>({...e,isPrivate:e.isPrivate||!1}))),this.huggingfaceSettings=e.huggingface||{loadBalance:{},channels:[]},e.webdav&&e.webdav.channels&&(e.webdav.channels=e.webdav.channels.map(e=>({...e,username:e.username||"",password:e.password||"",publicUrl:e.publicUrl||"",headers:e.headers||{},createDirectory:!1!==e.createDirectory,quota:e.quota||{enabled:!1,limitGB:10,threshold:95}}))),this.webdavSettings=e.webdav||{loadBalance:{},channels:[]},this.loadQuotaStats()}).finally(()=>{this.loading=!1})}};const Up=(0,d.A)(Ip,[["render",Ep],["__scopeId","data-v-0082a519"]]);var Op=Up,Rp=s(98469);s(49187);const Wp={class:"save-text"};function Bp(e,t,s,a,o,l){const r=(0,i.g2)("font-awesome-icon");return(0,i.uX)(),(0,i.Wv)(C.eB,{name:"fade-up"},{default:(0,i.k6)(()=>[(0,i.bo)((0,i.Lk)("div",{class:(0,n.C4)(["floating-save-btn",{"is-loading":s.loading}]),onClick:t[0]||(t[0]=(...e)=>l.handleClick&&l.handleClick(...e))},[s.loading?((0,i.uX)(),(0,i.Wv)(r,{key:0,icon:"spinner",spin:""})):((0,i.uX)(),(0,i.Wv)(r,{key:1,icon:"save"})),(0,i.Lk)("span",Wp,(0,n.v_)(s.loading?e.$t("floatingSave.saving"):e.$t("floatingSave.save")),1)],2),[[C.aG,o.visible]])]),_:1})}var zp={name:"FloatingSaveButton",emits:["click"],props:{loading:{type:Boolean,default:!1},show:{type:Boolean,default:!0}},data(){return{visible:!1}},watch:{show:{immediate:!0,handler(e){e?setTimeout(()=>{this.visible=!0},600):this.visible=!1}}},methods:{handleClick(){this.loading||this.$emit("click")}}};const Np=(0,d.A)(zp,[["render",Bp],["__scopeId","data-v-9cef95d2"]]);var jp=Np,Hp=s(84757);s(5802),s(64752),s(38736);const qp={class:"security-settings"},Xp={class:"first-settings"},Kp={class:"first-title"},Qp={class:"second-title"},Yp={style:{display:"flex",gap:"8px",width:"100%"}},Gp={class:"second-title"},Jp={style:{display:"flex",gap:"8px",width:"100%"}},Zp={class:"second-title token-title"},eg={class:"token-actions"},tg={class:"token-table-container"},sg={class:"table-cell-content"},ig={class:"table-cell-content"},ng={class:"token-display"},ag={class:"table-cell-content"},og={class:"table-cell-content"},lg={class:"table-cell-content"},rg={class:"table-cell-content"},cg={class:"table-cell-content action-buttons"},dg={class:"first-settings"},hg={class:"first-title"},ug={class:"second-title"},pg={class:"second-title"},gg={class:"query-param-list"},fg={class:"query-param-list"},mg={class:"first-settings"},bg={class:"first-title"},yg={class:"second-title"},xg={class:"second-title"},vg={class:"second-title"},kg={class:"second-title"},_g={class:"form-item-hint"},wg={class:"form-item-hint"},Cg={style:{display:"flex",gap:"10px",width:"100%"}},Sg={class:"dialog-footer"},Fg={style:{display:"flex",gap:"10px",width:"100%"}},Tg={class:"dialog-footer"},Mg={class:"token-result"},Pg={style:{"margin-bottom":"15px",color:"#e6a23c"}},Dg={class:"dialog-footer"};function Ag(e,t,s,a,o,l){const r=Vu.WK,c=Rp.dI,d=$u.xE,h=$u.US,u=(0,i.g2)("font-awesome-icon"),p=K.S2,f=Hp.o8,m=Uu.u,b=Hp.Up,y=g.R7,x=Iu.qi,k=Eu.P9,_=Eu.AV,S=Lu.lq,F=jp,T=Rp.o5,M=w.kZ,P=v.A;return(0,i.bo)(((0,i.uX)(),(0,i.CE)("div",qp,[(0,i.Lk)("div",Xp,[(0,i.Lk)("h3",Kp,(0,n.v_)(e.$t("sysSecurity.authManagement")),1),(0,i.Lk)("h4",Qp,(0,n.v_)(e.$t("sysSecurity.userAuth")),1),(0,i.bF)(h,{model:o.authSettings.user,rules:l.userPassRules,ref:"userPassForm","label-width":"120px"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{label:e.$t("sysSecurity.uploadPassword"),prop:"authCode"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",Yp,[(0,i.bF)(r,{modelValue:o.authSettings.user.authCode,"onUpdate:modelValue":t[0]||(t[0]=e=>o.authSettings.user.authCode=e),type:"password","show-password":"",onInput:l.handleUserPassInput,autocomplete:"new-password",placeholder:o.authSettings.user._hasPassword?e.$t("sysSecurity.passwordUnchanged"):"",disabled:o.clearUserPassword},null,8,["modelValue","onInput","placeholder","disabled"]),o.authSettings.user._hasPassword?((0,i.uX)(),(0,i.Wv)(c,{key:0,modelValue:o.clearUserPassword,"onUpdate:modelValue":t[1]||(t[1]=e=>o.clearUserPassword=e),onChange:l.handleClearUserPassword},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysSecurity.clearPassword")),1)]),_:1},8,["modelValue","onChange"])):(0,i.Q3)("",!0)])]),_:1},8,["label"]),(0,i.bF)(C.eB,{name:"fade-slide",mode:"out-in"},{default:(0,i.k6)(()=>[o.showUserPassConfirm?((0,i.uX)(),(0,i.Wv)(d,{label:e.$t("sysSecurity.confirmPassword"),prop:"confirmNewUserPassword",key:"user-confirm"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{modelValue:o.authSettings.user.confirmNewUserPassword,"onUpdate:modelValue":t[2]||(t[2]=e=>o.authSettings.user.confirmNewUserPassword=e),type:"password","show-password":"",autocomplete:"new-password"},null,8,["modelValue"])]),_:1},8,["label"])):(0,i.Q3)("",!0)]),_:1})]),_:1},8,["model","rules"]),(0,i.Lk)("h4",Gp,(0,n.v_)(e.$t("sysSecurity.adminAuth")),1),(0,i.bF)(h,{model:o.authSettings.admin,rules:l.adminPassRules,ref:"adminPassForm","label-width":"120px"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{label:e.$t("sysSecurity.adminUsername"),prop:"adminUsername"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{modelValue:o.authSettings.admin.adminUsername,"onUpdate:modelValue":t[3]||(t[3]=e=>o.authSettings.admin.adminUsername=e),autocomplete:"new-password",disabled:o.clearAdminPassword},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(d,{label:e.$t("sysSecurity.adminPassword"),prop:"adminPassword"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",Jp,[(0,i.bF)(r,{modelValue:o.authSettings.admin.adminPassword,"onUpdate:modelValue":t[4]||(t[4]=e=>o.authSettings.admin.adminPassword=e),type:"password","show-password":"",onInput:l.handleAdminPassInput,autocomplete:"new-password",placeholder:o.authSettings.admin._hasPassword?e.$t("sysSecurity.passwordUnchanged"):"",disabled:o.clearAdminPassword},null,8,["modelValue","onInput","placeholder","disabled"]),o.authSettings.admin._hasPassword?((0,i.uX)(),(0,i.Wv)(c,{key:0,modelValue:o.clearAdminPassword,"onUpdate:modelValue":t[5]||(t[5]=e=>o.clearAdminPassword=e),onChange:l.handleClearAdminPassword},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysSecurity.clearPassword")),1)]),_:1},8,["modelValue","onChange"])):(0,i.Q3)("",!0)])]),_:1},8,["label"]),(0,i.bF)(C.eB,{name:"fade-slide",mode:"out-in"},{default:(0,i.k6)(()=>[o.showAdminPassConfirm?((0,i.uX)(),(0,i.Wv)(d,{label:e.$t("sysSecurity.confirmPassword"),prop:"confirmNewAdminPassword",key:"admin-confirm"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{modelValue:o.authSettings.admin.confirmNewAdminPassword,"onUpdate:modelValue":t[6]||(t[6]=e=>o.authSettings.admin.confirmNewAdminPassword=e),type:"password","show-password":"",autocomplete:"new-password"},null,8,["modelValue"])]),_:1},8,["label"])):(0,i.Q3)("",!0)]),_:1})]),_:1},8,["model","rules"]),(0,i.Lk)("h4",Zp,[(0,i.eW)((0,n.v_)(e.$t("sysSecurity.apiTokenManagement"))+" ",1),(0,i.Lk)("a",eg,[(0,i.bF)(p,{type:"primary",size:"small",onClick:t[7]||(t[7]=e=>o.showCreateTokenDialog=!0),circle:""},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"plus"})]),_:1})])]),(0,i.Lk)("div",tg,[(0,i.bo)(((0,i.uX)(),(0,i.Wv)(b,{data:o.apiTokens,class:"token-table"},{default:(0,i.k6)(()=>[(0,i.bF)(f,{prop:"name",label:e.$t("sysSecurity.tokenName"),"header-align":"center"},{default:(0,i.k6)(e=>[(0,i.Lk)("div",sg,(0,n.v_)(e.row.name),1)]),_:1},8,["label"]),(0,i.bF)(f,{prop:"token",label:e.$t("sysSecurity.tokenValue"),"header-align":"center"},{default:(0,i.k6)(e=>[(0,i.Lk)("div",ig,[(0,i.Lk)("span",ng,(0,n.v_)(e.row.token),1)])]),_:1},8,["label"]),(0,i.bF)(f,{prop:"permissions",label:e.$t("sysSecurity.permissions"),"header-align":"center"},{default:(0,i.k6)(e=>[(0,i.Lk)("div",ag,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.row.permissions,e=>((0,i.uX)(),(0,i.Wv)(m,{key:e,size:"small",class:"permission-tag"},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(l.getPermissionText(e)),1)]),_:2},1024))),128))])]),_:1},8,["label"]),(0,i.bF)(f,{prop:"createdAt",label:e.$t("sysSecurity.createdAt"),"header-align":"center"},{default:(0,i.k6)(e=>[(0,i.Lk)("div",og,(0,n.v_)(l.formatDate(e.row.createdAt)),1)]),_:1},8,["label"]),(0,i.bF)(f,{label:e.$t("sysSecurity.status"),"header-align":"center",width:"90"},{default:(0,i.k6)(e=>[(0,i.Lk)("div",lg,[(0,i.bF)(m,{type:"active"===l.getTokenStatus(e.row.expiresAt).status?"success":"danger",size:"small"},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(l.getTokenStatus(e.row.expiresAt).label),1)]),_:2},1032,["type"])])]),_:1},8,["label"]),(0,i.bF)(f,{label:e.$t("sysSecurity.expiresAt"),"header-align":"center"},{default:(0,i.k6)(e=>[(0,i.Lk)("div",rg,(0,n.v_)(l.getTokenStatus(e.row.expiresAt).expiresText),1)]),_:1},8,["label"]),(0,i.bF)(f,{label:e.$t("sysSecurity.operation"),fixed:"right","header-align":"center"},{default:(0,i.k6)(t=>[(0,i.Lk)("div",cg,[(0,i.bF)(p,{class:"action-button",size:"small",onClick:e=>l.editToken(t.row)},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysSecurity.editBtn")),1)]),_:1},8,["onClick"]),(0,i.bF)(p,{class:"action-button",size:"small",type:"danger",onClick:e=>l.deleteToken(t.row.id)},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysSecurity.deleteBtn")),1)]),_:1},8,["onClick"])])]),_:1},8,["label"])]),_:1},8,["data"])),[[P,o.tokenLoading]])])]),(0,i.Lk)("div",dg,[(0,i.Lk)("h3",hg,(0,n.v_)(e.$t("sysSecurity.uploadManagement")),1),(0,i.Lk)("h4",ug,[(0,i.eW)((0,n.v_)(e.$t("sysSecurity.imageReview"))+" ",1),(0,i.bF)(y,{content:e.$t("sysSecurity.imageReviewTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"question-circle",style:{"margin-left":"5px",cursor:"pointer"}})]),_:1},8,["content"])]),(0,i.bF)(h,{model:o.uploadSettings.moderate,"label-width":"120px"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{label:e.$t("sysSecurity.enableReview")},{default:(0,i.k6)(()=>[(0,i.bF)(x,{modelValue:o.uploadSettings.moderate.enabled,"onUpdate:modelValue":t[8]||(t[8]=e=>o.uploadSettings.moderate.enabled=e)},null,8,["modelValue"])]),_:1},8,["label"]),(0,i.bF)(d,{label:e.$t("sysSecurity.reviewChannel")},{default:(0,i.k6)(()=>[(0,i.bF)(_,{modelValue:o.uploadSettings.moderate.channel,"onUpdate:modelValue":t[9]||(t[9]=e=>o.uploadSettings.moderate.channel=e),placeholder:e.$t("sysSecurity.reviewChannelPlaceholder")},{default:(0,i.k6)(()=>[(0,i.bF)(k,{label:"moderatecontent.com",value:"moderatecontent.com"}),(0,i.bF)(k,{label:"nsfwjs",value:"nsfwjs"})]),_:1},8,["modelValue","placeholder"])]),_:1},8,["label"]),"moderatecontent.com"===o.uploadSettings.moderate.channel?((0,i.uX)(),(0,i.Wv)(d,{key:0,label:e.$t("sysSecurity.apiKey")},{default:(0,i.k6)(()=>[(0,i.bF)(r,{modelValue:o.uploadSettings.moderate.moderateContentApiKey,"onUpdate:modelValue":t[10]||(t[10]=e=>o.uploadSettings.moderate.moderateContentApiKey=e)},null,8,["modelValue"])]),_:1},8,["label"])):(0,i.Q3)("",!0),"nsfwjs"===o.uploadSettings.moderate.channel?((0,i.uX)(),(0,i.Wv)(d,{key:1,label:e.$t("sysSecurity.apiPath")},{default:(0,i.k6)(()=>[(0,i.bF)(r,{modelValue:o.uploadSettings.moderate.nsfwApiPath,"onUpdate:modelValue":t[11]||(t[11]=e=>o.uploadSettings.moderate.nsfwApiPath=e),placeholder:"https://nsfwjs.your.domain"},null,8,["modelValue"])]),_:1},8,["label"])):(0,i.Q3)("",!0)]),_:1},8,["model"]),(0,i.Lk)("h4",pg,[(0,i.eW)((0,n.v_)(e.$t("sysSecurity.ipQuery"))+" ",1),(0,i.bF)(y,{content:e.$t("sysSecurity.ipQueryTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"question-circle",style:{"margin-left":"5px",cursor:"pointer"}})]),_:1},8,["content"])]),(0,i.bF)(h,{model:o.uploadSettings.ipQuery,"label-width":"120px"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{label:e.$t("sysSecurity.enableIpQuery")},{default:(0,i.k6)(()=>[(0,i.bF)(x,{modelValue:o.uploadSettings.ipQuery.enabled,"onUpdate:modelValue":t[12]||(t[12]=e=>o.uploadSettings.ipQuery.enabled=e)},null,8,["modelValue"])]),_:1},8,["label"]),(0,i.bF)(d,{label:e.$t("sysSecurity.ipQueryChannel")},{default:(0,i.k6)(()=>[(0,i.bF)(_,{modelValue:o.uploadSettings.ipQuery.channel,"onUpdate:modelValue":t[13]||(t[13]=e=>o.uploadSettings.ipQuery.channel=e),placeholder:e.$t("sysSecurity.ipQueryChannelPlaceholder")},{default:(0,i.k6)(()=>[(0,i.bF)(k,{label:e.$t("sysSecurity.customApi"),value:"customApi"},null,8,["label"])]),_:1},8,["modelValue","placeholder"])]),_:1},8,["label"]),"customApi"===o.uploadSettings.ipQuery.channel?((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[(0,i.bF)(d,{label:e.$t("sysSecurity.apiPath")},{default:(0,i.k6)(()=>[(0,i.bF)(r,{modelValue:o.uploadSettings.ipQuery.customApi.url,"onUpdate:modelValue":t[14]||(t[14]=e=>o.uploadSettings.ipQuery.customApi.url=e),placeholder:"https://api.example.com/ip"},null,8,["modelValue"])]),_:1},8,["label"]),(0,i.bF)(d,{label:e.$t("sysSecurity.queryParams")},{default:(0,i.k6)(()=>[(0,i.Lk)("div",gg,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.uploadSettings.ipQuery.customApi.params,(t,s)=>((0,i.uX)(),(0,i.CE)("div",{key:s,class:"query-param-row"},[(0,i.bF)(r,{modelValue:t.key,"onUpdate:modelValue":e=>t.key=e,placeholder:e.$t("sysSecurity.paramNamePlaceholder")},null,8,["modelValue","onUpdate:modelValue","placeholder"]),(0,i.bF)(r,{modelValue:t.value,"onUpdate:modelValue":e=>t.value=e,placeholder:e.$t("sysSecurity.paramValuePlaceholder")},null,8,["modelValue","onUpdate:modelValue","placeholder"]),(0,i.bF)(p,{type:"danger",plain:"",circle:"",onClick:e=>l.removeIpQueryParam(s),disabled:o.uploadSettings.ipQuery.customApi.params.length<=1},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"trash-alt"})]),_:1},8,["onClick","disabled"])]))),128)),(0,i.bF)(p,{type:"primary",plain:"",onClick:l.addIpQueryParam},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"plus"}),(0,i.Lk)("span",null,(0,n.v_)(e.$t("sysSecurity.addQueryParam")),1)]),_:1},8,["onClick"])])]),_:1},8,["label"]),(0,i.bF)(d,null,{label:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysSecurity.responseFields"))+" ",1),(0,i.bF)(y,{content:e.$t("sysSecurity.responseFieldsTip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"question-circle",style:{"margin-left":"5px",cursor:"pointer"}})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.Lk)("div",fg,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.uploadSettings.ipQuery.customApi.responseFields,(t,s)=>((0,i.uX)(),(0,i.CE)("div",{key:s,class:"response-field-row"},[(0,i.bF)(r,{modelValue:o.uploadSettings.ipQuery.customApi.responseFields[s],"onUpdate:modelValue":e=>o.uploadSettings.ipQuery.customApi.responseFields[s]=e,placeholder:e.$t("sysSecurity.responseFieldPathPlaceholder")},null,8,["modelValue","onUpdate:modelValue","placeholder"]),(0,i.bF)(p,{plain:"",circle:"",onClick:e=>l.moveIpQueryResponseField(s,-1),disabled:0===s},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"arrow-up"})]),_:1},8,["onClick","disabled"]),(0,i.bF)(p,{plain:"",circle:"",onClick:e=>l.moveIpQueryResponseField(s,1),disabled:s===o.uploadSettings.ipQuery.customApi.responseFields.length-1},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"arrow-down"})]),_:1},8,["onClick","disabled"]),(0,i.bF)(p,{type:"danger",plain:"",circle:"",onClick:e=>l.removeIpQueryResponseField(s)},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"trash-alt"})]),_:1},8,["onClick"])]))),128)),(0,i.bF)(p,{type:"primary",plain:"",onClick:l.addIpQueryResponseField},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"plus"}),(0,i.Lk)("span",null,(0,n.v_)(e.$t("sysSecurity.addResponseField")),1)]),_:1},8,["onClick"])])]),_:1})],64)):(0,i.Q3)("",!0)]),_:1},8,["model"])]),(0,i.Lk)("div",mg,[(0,i.Lk)("h3",bg,(0,n.v_)(e.$t("sysSecurity.accessManagement")),1),(0,i.Lk)("h4",yg,(0,n.v_)(e.$t("sysSecurity.domainFilter")),1),(0,i.bF)(h,{model:o.accessSettings,"label-width":"120px"},{default:(0,i.k6)(()=>[(0,i.bF)(d,null,{label:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysSecurity.allowedDomains"))+" ",1),(0,i.bF)(y,{content:e.$t("sysSecurity.allowedDomainsTooltip"),placement:"top","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"question-circle",style:{"margin-left":"5px",cursor:"pointer"}})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(r,{modelValue:o.accessSettings.allowedDomains,"onUpdate:modelValue":t[15]||(t[15]=e=>o.accessSettings.allowedDomains=e)},null,8,["modelValue"])]),_:1})]),_:1},8,["model"]),(0,i.Lk)("h4",xg,(0,n.v_)(e.$t("sysSecurity.whiteListMode")),1),(0,i.bF)(h,{model:o.accessSettings,rules:l.accessRules,ref:"accessForm","label-width":"120px"},{default:(0,i.k6)(()=>[(0,i.bF)(d,null,{label:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysSecurity.enableWhiteList"))+" ",1),(0,i.bF)(y,{content:e.$t("sysSecurity.enableWhiteListTooltip"),placement:"top","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"question-circle",style:{"margin-left":"5px",cursor:"pointer"}})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(x,{modelValue:o.accessSettings.whiteListMode,"onUpdate:modelValue":t[16]||(t[16]=e=>o.accessSettings.whiteListMode=e)},null,8,["modelValue"])]),_:1})]),_:1},8,["model","rules"]),(0,i.Lk)("h4",vg,(0,n.v_)(e.$t("sysSecurity.imageTransform")),1),(0,i.bF)(h,{model:o.accessSettings,rules:l.accessRules,ref:"imageTransformForm","label-width":"120px"},{default:(0,i.k6)(()=>[(0,i.bF)(d,null,{label:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysSecurity.enableImageTransform"))+" ",1),(0,i.bF)(y,{content:e.$t("sysSecurity.enableImageTransformTooltip"),placement:"top","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"question-circle",style:{"margin-left":"5px",cursor:"pointer"}})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(x,{modelValue:o.accessSettings.imageTransformEnabled,"onUpdate:modelValue":t[17]||(t[17]=e=>o.accessSettings.imageTransformEnabled=e)},null,8,["modelValue"])]),_:1}),o.accessSettings.imageTransformEnabled?((0,i.uX)(),(0,i.Wv)(d,{key:0,prop:"imageTransformAllowedSizes"},{label:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysSecurity.imageTransformAllowedSizes"))+" ",1),(0,i.bF)(y,{content:e.$t("sysSecurity.imageTransformAllowedSizesHint"),placement:"top","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"question-circle",style:{"margin-left":"5px",cursor:"pointer"}})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(r,{modelValue:o.accessSettings.imageTransformAllowedSizes,"onUpdate:modelValue":t[18]||(t[18]=e=>o.accessSettings.imageTransformAllowedSizes=e),placeholder:e.$t("sysSecurity.imageTransformAllowedSizesPlaceholder")},null,8,["modelValue","placeholder"])]),_:1})):(0,i.Q3)("",!0)]),_:1},8,["model","rules"]),(0,i.Lk)("h4",kg,(0,n.v_)(e.$t("sysSecurity.sessionSecurityPolicy")),1),(0,i.bF)(h,{model:o.accessSettings,"label-width":"120px"},{default:(0,i.k6)(()=>[(0,i.bF)(d,null,{label:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysSecurity.secureMode"))+" ",1),(0,i.bF)(y,{content:e.$t("sysSecurity.secureModeTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"question-circle",style:{"margin-left":"5px",cursor:"pointer"}})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(x,{modelValue:o.accessSettings.sessionSecure,"onUpdate:modelValue":t[19]||(t[19]=e=>o.accessSettings.sessionSecure=e)},null,8,["modelValue"])]),_:1}),(0,i.bF)(d,{label:e.$t("sysSecurity.userSessionMaxAge"),prop:"userSessionMaxAge"},{default:(0,i.k6)(()=>[(0,i.bF)(S,{modelValue:o.accessSettings.userSessionMaxAge,"onUpdate:modelValue":t[20]||(t[20]=e=>o.accessSettings.userSessionMaxAge=e),min:1,max:3650,step:1,precision:0,"controls-position":"right"},null,8,["modelValue"]),(0,i.Lk)("span",_g,(0,n.v_)(e.$t("sysSecurity.sessionMaxAgeUnit")),1)]),_:1},8,["label"]),(0,i.bF)(d,{label:e.$t("sysSecurity.adminSessionMaxAge"),prop:"adminSessionMaxAge"},{default:(0,i.k6)(()=>[(0,i.bF)(S,{modelValue:o.accessSettings.adminSessionMaxAge,"onUpdate:modelValue":t[21]||(t[21]=e=>o.accessSettings.adminSessionMaxAge=e),min:1,max:3650,step:1,precision:0,"controls-position":"right"},null,8,["modelValue"]),(0,i.Lk)("span",wg,(0,n.v_)(e.$t("sysSecurity.sessionMaxAgeUnit")),1)]),_:1},8,["label"])]),_:1},8,["model"])]),(0,i.bF)(F,{show:!o.loading,onClick:l.saveSettings},null,8,["show","onClick"]),(0,i.bF)(M,{modelValue:o.showCreateTokenDialog,"onUpdate:modelValue":t[29]||(t[29]=e=>o.showCreateTokenDialog=e),title:e.$t("sysSecurity.createTokenTitle"),width:l.dialogWidth},{footer:(0,i.k6)(()=>[(0,i.Lk)("span",Sg,[(0,i.bF)(p,{onClick:t[28]||(t[28]=e=>o.showCreateTokenDialog=!1)},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("common.cancel")),1)]),_:1}),(0,i.bF)(p,{type:"primary",onClick:l.createToken},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysSecurity.createBtn")),1)]),_:1},8,["onClick"])])]),default:(0,i.k6)(()=>[(0,i.bF)(h,{model:o.newToken,rules:l.tokenRules,ref:"tokenForm","label-width":"100px"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{label:e.$t("sysSecurity.tokenNameLabel"),prop:"name"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{modelValue:o.newToken.name,"onUpdate:modelValue":t[22]||(t[22]=e=>o.newToken.name=e),placeholder:e.$t("sysSecurity.tokenNamePlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),(0,i.bF)(d,{label:e.$t("sysSecurity.permissionsLabel"),prop:"permissions"},{default:(0,i.k6)(()=>[(0,i.bF)(T,{modelValue:o.newToken.permissions,"onUpdate:modelValue":t[23]||(t[23]=e=>o.newToken.permissions=e)},{default:(0,i.k6)(()=>[(0,i.bF)(c,{label:"upload"},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysSecurity.permUpload")),1)]),_:1}),(0,i.bF)(c,{label:"delete"},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysSecurity.permDelete")),1)]),_:1}),(0,i.bF)(c,{label:"list"},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysSecurity.permList")),1)]),_:1}),(0,i.bF)(c,{label:"manage"},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysSecurity.permManage")),1)]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["label"]),(0,i.bF)(d,{label:e.$t("sysSecurity.neverExpire")},{default:(0,i.k6)(()=>[(0,i.bF)(x,{modelValue:o.newToken.neverExpire,"onUpdate:modelValue":t[24]||(t[24]=e=>o.newToken.neverExpire=e),onChange:l.onCreateNeverExpireChange},null,8,["modelValue","onChange"])]),_:1},8,["label"]),o.newToken.neverExpire?(0,i.Q3)("",!0):((0,i.uX)(),(0,i.Wv)(d,{key:0,label:e.$t("sysSecurity.validPeriod"),prop:"expirationValue"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",Cg,[(0,i.bF)(S,{modelValue:o.newToken.expirationValue,"onUpdate:modelValue":t[25]||(t[25]=e=>o.newToken.expirationValue=e),min:1,step:1,"controls-position":"right",style:{flex:"1"}},null,8,["modelValue"]),(0,i.bF)(_,{modelValue:o.newToken.expirationUnit,"onUpdate:modelValue":t[26]||(t[26]=e=>o.newToken.expirationUnit=e),style:{width:"100px"}},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.timeUnitOptions,t=>((0,i.uX)(),(0,i.Wv)(k,{key:t.value,label:e.$t(t.labelKey),value:t.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])])]),_:1},8,["label"])),o.newToken.neverExpire?(0,i.Q3)("",!0):((0,i.uX)(),(0,i.Wv)(d,{key:1,label:e.$t("sysSecurity.autoDeleteOnExpire")},{default:(0,i.k6)(()=>[(0,i.bF)(x,{modelValue:o.newToken.autoDelete,"onUpdate:modelValue":t[27]||(t[27]=e=>o.newToken.autoDelete=e)},null,8,["modelValue"])]),_:1},8,["label"]))]),_:1},8,["model","rules"])]),_:1},8,["modelValue","title","width"]),(0,i.bF)(M,{modelValue:o.showEditTokenDialog,"onUpdate:modelValue":t[37]||(t[37]=e=>o.showEditTokenDialog=e),title:e.$t("sysSecurity.editTokenTitle"),width:l.dialogWidth},{footer:(0,i.k6)(()=>[(0,i.Lk)("span",Tg,[(0,i.bF)(p,{onClick:t[36]||(t[36]=e=>o.showEditTokenDialog=!1)},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("common.cancel")),1)]),_:1}),(0,i.bF)(p,{type:"primary",onClick:l.updateToken},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysSecurity.updateBtn")),1)]),_:1},8,["onClick"])])]),default:(0,i.k6)(()=>[(0,i.bF)(h,{model:o.editingToken,rules:l.editTokenRules,ref:"editTokenForm","label-width":"100px"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{label:e.$t("sysSecurity.tokenNameLabel")},{default:(0,i.k6)(()=>[(0,i.bF)(r,{modelValue:o.editingToken.name,"onUpdate:modelValue":t[30]||(t[30]=e=>o.editingToken.name=e),disabled:""},null,8,["modelValue"])]),_:1},8,["label"]),(0,i.bF)(d,{label:e.$t("sysSecurity.permissionsLabel"),prop:"permissions"},{default:(0,i.k6)(()=>[(0,i.bF)(T,{modelValue:o.editingToken.permissions,"onUpdate:modelValue":t[31]||(t[31]=e=>o.editingToken.permissions=e)},{default:(0,i.k6)(()=>[(0,i.bF)(c,{label:"upload"},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysSecurity.permUpload")),1)]),_:1}),(0,i.bF)(c,{label:"delete"},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysSecurity.permDelete")),1)]),_:1}),(0,i.bF)(c,{label:"list"},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysSecurity.permList")),1)]),_:1}),(0,i.bF)(c,{label:"manage"},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysSecurity.permManage")),1)]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["label"]),(0,i.bF)(d,{label:e.$t("sysSecurity.neverExpire")},{default:(0,i.k6)(()=>[(0,i.bF)(x,{modelValue:o.editingToken.neverExpire,"onUpdate:modelValue":t[32]||(t[32]=e=>o.editingToken.neverExpire=e),onChange:l.onEditNeverExpireChange},null,8,["modelValue","onChange"])]),_:1},8,["label"]),o.editingToken.neverExpire?(0,i.Q3)("",!0):((0,i.uX)(),(0,i.Wv)(d,{key:0,label:e.$t("sysSecurity.validPeriod"),prop:"expirationValue"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",Fg,[(0,i.bF)(S,{modelValue:o.editingToken.expirationValue,"onUpdate:modelValue":t[33]||(t[33]=e=>o.editingToken.expirationValue=e),min:1,step:1,"controls-position":"right",style:{flex:"1"}},null,8,["modelValue"]),(0,i.bF)(_,{modelValue:o.editingToken.expirationUnit,"onUpdate:modelValue":t[34]||(t[34]=e=>o.editingToken.expirationUnit=e),style:{width:"100px"}},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.timeUnitOptions,t=>((0,i.uX)(),(0,i.Wv)(k,{key:t.value,label:e.$t(t.labelKey),value:t.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])])]),_:1},8,["label"])),o.editingToken.neverExpire?(0,i.Q3)("",!0):((0,i.uX)(),(0,i.Wv)(d,{key:1,label:e.$t("sysSecurity.autoDeleteOnExpire")},{default:(0,i.k6)(()=>[(0,i.bF)(x,{modelValue:o.editingToken.autoDelete,"onUpdate:modelValue":t[35]||(t[35]=e=>o.editingToken.autoDelete=e)},null,8,["modelValue"])]),_:1},8,["label"]))]),_:1},8,["model","rules"])]),_:1},8,["modelValue","title","width"]),(0,i.bF)(M,{modelValue:o.showTokenResultDialog,"onUpdate:modelValue":t[40]||(t[40]=e=>o.showTokenResultDialog=e),title:e.$t("sysSecurity.tokenCreatedTitle"),width:l.dialogWidth},{footer:(0,i.k6)(()=>[(0,i.Lk)("span",Dg,[(0,i.bF)(p,{type:"primary",onClick:t[39]||(t[39]=e=>o.showTokenResultDialog=!1)},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysSecurity.savedBtn")),1)]),_:1})])]),default:(0,i.k6)(()=>[(0,i.Lk)("div",Mg,[(0,i.Lk)("p",Pg,[(0,i.bF)(u,{icon:"exclamation-triangle",style:{"margin-right":"5px"}}),(0,i.eW)(" "+(0,n.v_)(e.$t("sysSecurity.tokenCreatedWarning")),1)]),(0,i.bF)(h,{"label-width":"100px"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{label:e.$t("sysSecurity.tokenNameLabel")},{default:(0,i.k6)(()=>[(0,i.Lk)("span",null,(0,n.v_)(o.createdToken.name),1)]),_:1},8,["label"]),(0,i.bF)(d,{label:e.$t("sysSecurity.fullToken")},{default:(0,i.k6)(()=>[(0,i.bF)(r,{modelValue:o.createdToken.token,"onUpdate:modelValue":t[38]||(t[38]=e=>o.createdToken.token=e),readonly:""},{append:(0,i.k6)(()=>[(0,i.bF)(p,{onClick:l.copyToken},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysSecurity.copyBtn")),1)]),_:1},8,["onClick"])]),_:1},8,["modelValue"])]),_:1},8,["label"])]),_:1})])]),_:1},8,["modelValue","title","width"])])),[[P,o.loading]])}s(81148);const $g={s:1e3,m:6e4,h:36e5,d:864e5};function Lg(e,t,s){if(!Number.isFinite(t)||t<=0)throw new Error("有效期数值必须大于 0");const i="string"===typeof e?new Date(e):new Date(e.getTime());if($g[s])return new Date(i.getTime()+t*$g[s]).toISOString();if("M"===s)return i.setUTCMonth(i.getUTCMonth()+t),i.toISOString();if("Y"===s)return i.setUTCFullYear(i.getUTCFullYear()+t),i.toISOString();throw new Error(`无效的时间单位: ${s}`)}function Vg(e){const t=new Date(e),s=t.getFullYear(),i=String(t.getMonth()+1).padStart(2,"0"),n=String(t.getDate()).padStart(2,"0"),a=String(t.getHours()).padStart(2,"0"),o=String(t.getMinutes()).padStart(2,"0"),l=String(t.getSeconds()).padStart(2,"0");return`${s}-${i}-${n} ${a}:${o}:${l}`}function Eg(e,t=new Date){if(null===e||void 0===e)return{status:"active",label:"有效",expiresText:"永不过期"};const s=new Date(e),i=t instanceof Date?t:new Date(t),n=Vg(e);return i.getTime()>s.getTime()?{status:"expired",label:"已过期",expiresText:n}:{status:"active",label:"有效",expiresText:n}}var Ig={components:{FloatingSaveButton:jp},data(){return{authSettings:{user:{},admin:{}},uploadSettings:{moderate:{},ipQuery:{enabled:!1,channel:"customApi",customApi:{url:"",params:[{key:"ip",value:"{ip}"}],responseFields:[]}}},accessSettings:{},apiTokens:[],loading:!0,tokenLoading:!1,oriUserPassword:"",oriAdminPassword:"",showUserPassConfirm:!1,showAdminPassConfirm:!1,clearUserPassword:!1,clearAdminPassword:!1,showCreateTokenDialog:!1,showEditTokenDialog:!1,showTokenResultDialog:!1,timeUnitOptions:[{labelKey:"sysSecurity.timeUnitSeconds",value:"s"},{labelKey:"sysSecurity.timeUnitMinutes",value:"m"},{labelKey:"sysSecurity.timeUnitHours",value:"h"},{labelKey:"sysSecurity.timeUnitDays",value:"d"},{labelKey:"sysSecurity.timeUnitMonths",value:"M"},{labelKey:"sysSecurity.timeUnitYears",value:"Y"}],newToken:{name:"",owner:"",permissions:[],neverExpire:!0,expirationValue:1,expirationUnit:"d",autoDelete:!1},editingToken:{id:"",name:"",owner:"",permissions:[],neverExpire:!0,expirationValue:1,expirationUnit:"d",autoDelete:!1},createdToken:{name:"",token:""}}},computed:{dialogWidth(){return window.innerWidth>768?"50%":"90%"},userPassRules(){return{authCode:[{validator:(e,t,s)=>{const i=["%","&","?","#","/"],n=i.some(e=>t&&t.includes(e));n?s(new Error(this.$t("sysSecurity.passwordUrlReserved"))):s()},trigger:"blur"}],confirmNewUserPassword:[{validator:(e,t,s)=>{t?t!==this.authSettings.user.authCode?s(new Error(this.$t("sysSecurity.passwordMismatch"))):s():s(new Error(this.$t("sysSecurity.confirmUploadPassword")))},trigger:"blur"}]}},adminPassRules(){return{confirmNewAdminPassword:[{validator:(e,t,s)=>{t?t!==this.authSettings.admin.adminPassword?s(new Error(this.$t("sysSecurity.passwordMismatch"))):s():s(new Error(this.$t("sysSecurity.confirmAdminPassword")))},trigger:"blur"}]}},accessRules(){const e=(e,t,s)=>{!Number.isInteger(t)||t<1||t>3650?s(new Error(this.$t("sysSecurity.sessionMaxAgeInvalid"))):s()},t=(e,t,s)=>{if(!this.accessSettings.imageTransformEnabled||!t||!t.trim())return void s();const i=t.split(",").map(e=>e.trim().toLowerCase()).filter(Boolean),n=i.every(e=>{const t=e.match(/^(auto|[1-9]\d*)x(auto|[1-9]\d*)$/);return!(!t||"auto"===t[1]&&"auto"===t[2])&&t.slice(1).every(e=>"auto"===e||Number(e)<=4096)});n?s():s(new Error(this.$t("sysSecurity.imageTransformAllowedSizesInvalid")))};return{userSessionMaxAge:[{validator:e,trigger:"change"}],adminSessionMaxAge:[{validator:e,trigger:"change"}],imageTransformAllowedSizes:[{validator:t,trigger:["blur","change"]}]}},tokenRules(){return{name:[{required:!0,message:this.$t("sysSecurity.tokenNameRequired"),trigger:"blur"}],permissions:[{required:!0,message:this.$t("sysSecurity.permissionsRequired"),trigger:"change"}],expirationValue:[{validator:(e,t,s)=>{this.newToken.neverExpire||t&&!(t<=0)?s():s(new Error(this.$t("sysSecurity.validPeriodRequired")))},trigger:"blur"}]}},editTokenRules(){return{permissions:[{required:!0,message:this.$t("sysSecurity.permissionsRequired"),trigger:"change"}],expirationValue:[{validator:(e,t,s)=>{this.editingToken.neverExpire||t&&!(t<=0)?s():s(new Error(this.$t("sysSecurity.validPeriodRequired")))},trigger:"blur"}]}}},methods:{normalizeIpQuerySettings(e={}){const t=e.ipQuery||{},s=t.customApi||{},i=Array.isArray(s.params)&&s.params.length>0?s.params.map(e=>({key:e?.key||"",value:e?.value||""})):[{key:"ip",value:"{ip}"}],n=Array.isArray(s.responseFields)?s.responseFields.map(e=>"string"===typeof e?e:e?.path||""):[];return{...e,moderate:e.moderate||{},ipQuery:{enabled:t.enabled??!1,channel:t.channel||"customApi",customApi:{url:s.url||"",params:i,responseFields:n}}}},addIpQueryParam(){this.uploadSettings.ipQuery.customApi.params.push({key:"",value:""})},removeIpQueryParam(e){this.uploadSettings.ipQuery.customApi.params.length<=1||this.uploadSettings.ipQuery.customApi.params.splice(e,1)},addIpQueryResponseField(){this.uploadSettings.ipQuery.customApi.responseFields.push("")},removeIpQueryResponseField(e){this.uploadSettings.ipQuery.customApi.responseFields.splice(e,1)},moveIpQueryResponseField(e,t){const s=this.uploadSettings.ipQuery.customApi.responseFields,i=e+t;if(i<0||i>=s.length)return;const[n]=s.splice(e,1);s.splice(i,0,n)},handleUserPassInput(){this.authSettings.user.authCode!==this.oriUserPassword?this.showUserPassConfirm=!0:this.showUserPassConfirm=!1},handleAdminPassInput(){this.authSettings.admin.adminPassword!==this.oriAdminPassword?this.showAdminPassConfirm=!0:this.showAdminPassConfirm=!1},handleClearUserPassword(e){e&&(this.authSettings.user.authCode="",this.showUserPassConfirm=!1)},handleClearAdminPassword(e){e&&(this.authSettings.admin.adminPassword="",this.authSettings.admin.adminUsername="",this.showAdminPassConfirm=!1)},getPermissionText(e){const t={upload:this.$t("sysSecurity.permUpload"),delete:this.$t("sysSecurity.permDelete"),list:this.$t("sysSecurity.permList"),manage:this.$t("sysSecurity.permManage")};return t[e]||e},formatDate(e){return new Date(e).toLocaleString("zh-CN")},async loadApiTokens(){this.tokenLoading=!0;try{const e=await(0,Rt.A)("/api/manage/apiTokens"),t=await e.json();this.apiTokens=t.tokens||[]}catch(e){this.$message.error(this.$t("sysSecurity.tokenListFailed"))}finally{this.tokenLoading=!1}},createToken(){this.$refs.tokenForm.validate(async e=>{if(e)try{this.newToken.owner="admin";let e=null,t=!1;this.newToken.neverExpire||(e=Lg(new Date,this.newToken.expirationValue,this.newToken.expirationUnit),t=this.newToken.autoDelete);const s=await(0,Rt.A)("/api/manage/apiTokens",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:this.newToken.name,owner:this.newToken.owner,permissions:this.newToken.permissions,expiresAt:e,autoDelete:t})}),i=await s.json();s.ok?(this.createdToken={name:i.name,token:i.token},this.showCreateTokenDialog=!1,this.showTokenResultDialog=!0,this.newToken={name:"",owner:"",permissions:[],neverExpire:!0,expirationValue:1,expirationUnit:"d",autoDelete:!1},await this.loadApiTokens(),this.$message.success(this.$t("sysSecurity.tokenCreateSuccess"))):this.$message.error(i.error||this.$t("sysSecurity.tokenCreateFailed"))}catch(t){this.$message.error(this.$t("sysSecurity.tokenCreateFailed"))}})},editToken(e){const t=null!==e.expiresAt&&void 0!==e.expiresAt;this.editingToken={id:e.id,name:e.name,owner:e.owner,permissions:[...e.permissions],neverExpire:!t,expirationValue:1,expirationUnit:"d",autoDelete:e.autoDelete||!1},this.showEditTokenDialog=!0},updateToken(){this.$refs.editTokenForm.validate(async e=>{if(e)try{let e=null,t=!1;this.editingToken.neverExpire||(e=Lg(new Date,this.editingToken.expirationValue,this.editingToken.expirationUnit),t=this.editingToken.autoDelete);const s=await(0,Rt.A)("/api/manage/apiTokens",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({tokenId:this.editingToken.id,permissions:this.editingToken.permissions,expiresAt:e,autoDelete:t})}),i=await s.json();s.ok?(this.showEditTokenDialog=!1,await this.loadApiTokens(),this.$message.success(this.$t("sysSecurity.tokenUpdateSuccess"))):this.$message.error(i.error||this.$t("sysSecurity.tokenUpdateFailed"))}catch(t){this.$message.error(this.$t("sysSecurity.tokenUpdateFailed"))}})},async deleteToken(e){try{await this.$confirm(this.$t("sysSecurity.tokenDeleteConfirm"),this.$t("sysSecurity.tokenDeleteConfirmTitle"),{confirmButtonText:this.$t("sysSecurity.tokenDeleteConfirmOk"),cancelButtonText:this.$t("sysSecurity.tokenDeleteConfirmCancel"),type:"warning"});const t=await(0,Rt.A)(`/api/manage/apiTokens?id=${e}`,{method:"DELETE"}),s=await t.json();t.ok?(await this.loadApiTokens(),this.$message.success(this.$t("sysSecurity.tokenDeleteSuccess"))):this.$message.error(s.error||this.$t("sysSecurity.tokenDeleteFailed"))}catch(t){"cancel"!==t&&this.$message.error(this.$t("sysSecurity.tokenDeleteFailed"))}},async copyToken(){try{await navigator.clipboard.writeText(this.createdToken.token),this.$message.success(this.$t("sysSecurity.tokenCopied"))}catch(e){this.$message.error(this.$t("sysSecurity.copyFailed"))}},onCreateNeverExpireChange(e){e&&(this.newToken.autoDelete=!1)},onEditNeverExpireChange(e){e&&(this.editingToken.autoDelete=!1)},getTokenStatus(e){return Eg(e)},saveSettings(){let e=[];e.push(new Promise(e=>{this.$refs.userPassForm.validate(t=>{e(t)})})),e.push(new Promise(e=>{this.$refs.adminPassForm.validate(t=>{e(t)})})),e.push(new Promise(e=>{this.$refs.accessForm.validate(t=>{e(t)})})),e.push(new Promise(e=>{this.$refs.imageTransformForm.validate(t=>{e(t)})})),Promise.all(e).then(e=>{const t=e.every(e=>e);if(!t)return;if(this.accessSettings.userSessionMaxAge<1||!Number.isInteger(this.accessSettings.userSessionMaxAge)||this.accessSettings.userSessionMaxAge>3650||this.accessSettings.adminSessionMaxAge<1||!Number.isInteger(this.accessSettings.adminSessionMaxAge)||this.accessSettings.adminSessionMaxAge>3650)return void this.$message.error(this.$t("sysSecurity.sessionMaxAgeInvalid"));const s={auth:this.authSettings,upload:this.uploadSettings,access:this.accessSettings};delete s.auth.user.confirmNewUserPassword,delete s.auth.admin.confirmNewAdminPassword,this.clearUserPassword&&(s.auth.user._clear=!0,s.auth.user.authCode=""),this.clearAdminPassword&&(s.auth.admin._clear=!0,s.auth.admin.adminPassword=""),(0,Rt.A)("/api/manage/sysConfig/security",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s)}).then(e=>e.json()).then(e=>{if(e.adminPasswordChanged){const e=this.$t("sysSecurity.adminPasswordChangedRelogin");return this.$message.warning(e),void setTimeout(()=>{this.$store.commit("setAdminLoggedIn",!1),this.$router.push("/adminLogin")},1500)}this.$message.success(this.$t("sysSecurity.settingsSaved")),this.authSettings.user.authCode="",this.authSettings.admin.adminPassword="",this.oriUserPassword="",this.oriAdminPassword="",s.auth.user.authCode&&!s.auth.user._clear?this.authSettings.user._hasPassword=!0:s.auth.user._clear&&(this.authSettings.user._hasPassword=!1),s.auth.admin.adminPassword&&!s.auth.admin._clear?this.authSettings.admin._hasPassword=!0:s.auth.admin._clear&&(this.authSettings.admin._hasPassword=!1),this.showUserPassConfirm=!1,this.showAdminPassConfirm=!1,this.clearUserPassword=!1,this.clearAdminPassword=!1}).catch(()=>{})})}},mounted(){this.loading=!0,(0,Rt.A)("/api/manage/sysConfig/security").then(e=>e.json()).then(e=>{this.authSettings=e.auth,this.uploadSettings=this.normalizeIpQuerySettings(e.upload),this.accessSettings={imageTransformEnabled:!1,imageTransformAllowedSizes:"",...e.access},this.oriUserPassword="",this.oriAdminPassword="",this.authSettings.user.confirmNewUserPassword="",this.authSettings.admin.confirmNewAdminPassword="",this.loadApiTokens()}).finally(()=>{this.loading=!1})}};const Ug=(0,d.A)(Ig,[["render",Ag],["__scopeId","data-v-264510a6"]]);var Og=Ug;const Rg={class:"page-settings"},Wg={class:"first-title"},Bg={key:5,class:"announcement-refresh-option"};function zg(e,t,s,a,o,l){const r=(0,i.g2)("font-awesome-icon"),c=g.R7,d=Eu.P9,h=Eu.AV,u=Iu.qi,p=Vu.WK,f=Rp.dI,m=$u.xE,b=$u.US,y=jp,x=v.A;return(0,i.bo)(((0,i.uX)(),(0,i.CE)("div",Rg,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(l.groupedSettings,(s,a)=>((0,i.uX)(),(0,i.CE)("div",{key:a,class:"first-settings"},[(0,i.Lk)("h3",Wg,(0,n.v_)(a),1),(0,i.bF)(b,{model:o.settings,"label-width":"150px"},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(s,(s,a)=>((0,i.uX)(),(0,i.Wv)(m,{key:s.id,class:(0,n.C4)({"announcement-manual-height":"announcement"===s.id&&null!==o.announcementManualHeight}),style:(0,n.Tr)("announcement"===s.id&&null!==o.announcementManualHeight?{"--announcement-manual-height":`${o.announcementManualHeight}px`}:void 0)},{label:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(l.localized(s,"label"))+" ",1),s.tooltip?((0,i.uX)(),(0,i.Wv)(c,{key:0,content:l.localized(s,"tooltip"),placement:"top","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",style:{"margin-left":"5px",cursor:"pointer"}})]),_:1},8,["content"])):(0,i.Q3)("",!0)]),default:(0,i.k6)(()=>["select"===s.type?((0,i.uX)(),(0,i.Wv)(h,{key:0,modelValue:s.value,"onUpdate:modelValue":e=>s.value=e,disabled:s.fixed,placeholder:l.localized(s,"placeholder"),style:{width:"100%"}},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(s.options,e=>((0,i.uX)(),(0,i.Wv)(d,{key:e.value,label:l.localizedOption(e),value:e.value},null,8,["label","value"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue","disabled","placeholder"])):"channelName"===s.type?((0,i.uX)(),(0,i.Wv)(h,{key:1,modelValue:s.value,"onUpdate:modelValue":e=>s.value=e,disabled:!l.currentUploadChannel||0===l.currentChannelList.length,placeholder:e.$t("sysPage.channelSelectPlaceholder"),clearable:"",style:{width:"100%"}},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(l.currentChannelList,e=>((0,i.uX)(),(0,i.Wv)(d,{key:e.name,label:e.name,value:e.name},null,8,["label","value"]))),128))]),_:1},8,["modelValue","onUpdate:modelValue","disabled","placeholder"])):"boolean"===s.type?((0,i.uX)(),(0,i.Wv)(u,{key:2,modelValue:s.value,"onUpdate:modelValue":e=>s.value=e,disabled:s.fixed},null,8,["modelValue","onUpdate:modelValue","disabled"])):"textarea"===s.type?((0,i.uX)(),(0,i.Wv)(p,{key:3,modelValue:s.value,"onUpdate:modelValue":e=>s.value=e,type:"textarea",autosize:{minRows:2,maxRows:"announcement"===s.id?8:void 0},resize:"vertical",disabled:s.fixed,placeholder:l.localized(s,"placeholder"),onMousedown:e=>l.handleAnnouncementResizeStart(e,s)},null,8,["modelValue","onUpdate:modelValue","autosize","disabled","placeholder","onMousedown"])):((0,i.uX)(),(0,i.Wv)(p,{key:4,modelValue:s.value,"onUpdate:modelValue":e=>s.value=e,disabled:s.fixed,placeholder:l.localized(s,"placeholder")},null,8,["modelValue","onUpdate:modelValue","disabled","placeholder"])),"announcement"===s.id?((0,i.uX)(),(0,i.CE)("div",Bg,[(0,i.bF)(f,{modelValue:o.refreshAnnouncement,"onUpdate:modelValue":t[0]||(t[0]=e=>o.refreshAnnouncement=e)},{default:(0,i.k6)(()=>[(0,i.eW)((0,n.v_)(e.$t("sysPage.refreshAnnouncement")),1)]),_:1},8,["modelValue"])])):(0,i.Q3)("",!0)]),_:2},1032,["class","style"]))),128))]),_:2},1032,["model"])]))),128)),(0,i.bF)(y,{show:!o.loading,onClick:l.saveSettings},null,8,["show","onClick"])])),[[x,o.loading]])}var Ng=s(457),jg={components:{FloatingSaveButton:jp},data(){return{settings:{config:[]},loading:!0,refreshAnnouncement:!1,announcementManualHeight:null,announcementResizeMouseUpHandler:null,availableChannels:{}}},computed:{isEn(){return"en"===this.$i18n.locale},groupedSettings(){const e={};return this.settings.config&&this.settings.config.forEach(t=>{const s=this.isEn?t.category_en||t.category||this.$t("sysPage.otherSettings"):t.category||this.$t("sysPage.otherSettings");e[s]||(e[s]=[]),e[s].push(t)}),e},currentUploadChannel(){const e=this.settings.config?.find(e=>"defaultUploadChannel"===e.id);return e?.value||""},currentChannelList(){return this.availableChannels[this.currentUploadChannel]||[]}},watch:{currentUploadChannel(e,t){if(e!==t){const t=this.settings.config?.find(e=>"defaultChannelName"===e.id);if(t){const s=this.availableChannels[e]||[];s.some(e=>e.name===t.value)||(t.value="")}}}},methods:{localized(e,t){return this.isEn&&e[t+"_en"]?e[t+"_en"]:e[t]||""},localizedOption(e){return this.isEn&&e.label_en?e.label_en:e.label},handleAnnouncementResizeStart(e,t){if("announcement"!==t.id)return;const s=e.target.closest?.("textarea");if(!s)return;const i=s.getBoundingClientRect(),n=24,a=e.clientX>=i.right-n&&e.clientY>=i.bottom-n;if(!a)return;const o=s.closest(".el-form-item");this.announcementResizeMouseUpHandler&&window.removeEventListener("mouseup",this.announcementResizeMouseUpHandler);const l=s.offsetHeight;s.style.height=`${l}px`,o?.classList.remove("announcement-manual-height"),this.announcementResizeMouseUpHandler=()=>{const e=s.offsetHeight,t=Math.abs(e-l)>1?e:this.announcementManualHeight;null!==t&&(this.announcementManualHeight=t,o?.style.setProperty("--announcement-manual-height",`${t}px`),o?.classList.add("announcement-manual-height")),this.announcementResizeMouseUpHandler=null},window.addEventListener("mouseup",this.announcementResizeMouseUpHandler,{once:!0})},saveSettings(){(0,Rt.A)("/api/manage/sysConfig/page",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...this.settings,refreshAnnouncement:this.refreshAnnouncement})}).then(()=>{this.refreshAnnouncement=!1,this.$message.success(this.$t("sysPage.settingsSaved"))})},async fetchAvailableChannels(){try{const e=await Ng.A.get("/api/channels");e.data&&(this.availableChannels=e.data)}catch(e){console.error("Failed to fetch available channels:",e)}}},beforeUnmount(){this.announcementResizeMouseUpHandler&&window.removeEventListener("mouseup",this.announcementResizeMouseUpHandler)},mounted(){this.loading=!0,this.fetchAvailableChannels(),(0,Rt.A)("/api/manage/sysConfig/page").then(e=>e.json()).then(e=>{this.settings=e,this.settings.config&&this.settings.config.forEach(e=>{void 0!==e.value&&null!==e.value&&""!==e.value||void 0===e.default||(e.value=e.default),"boolean"===e.type&&"string"===typeof e.value&&(e.value="true"===e.value)})}).finally(()=>{this.loading=!1})}};const Hg=(0,d.A)(jg,[["render",zg],["__scopeId","data-v-342e4dda"]]);var qg=Hg;const Xg={class:"others-settings"},Kg={class:"first-settings"},Qg={class:"first-title"},Yg={class:"first-title"},Gg={class:"first-title"},Jg={class:"first-title"},Zg=["innerHTML"],ef={class:"first-title"};function tf(e,t,s,a,o,l){const r=(0,i.g2)("font-awesome-icon"),c=g.R7,d=Iu.qi,h=$u.xE,u=$u.US,p=Vu.WK,f=Eu.P9,m=Eu.AV,b=jp,y=v.A;return(0,i.bo)(((0,i.uX)(),(0,i.CE)("div",Xg,[(0,i.Lk)("div",Kg,[(0,i.Lk)("h3",Qg,[(0,i.eW)((0,n.v_)(e.$t("sysOthers.remoteTelemetry"))+" ",1),(0,i.bF)(c,{content:e.$t("sysOthers.remoteTelemetryTooltip"),placement:"right"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",style:{"margin-left":"5px",cursor:"pointer"}})]),_:1},8,["content"])]),(0,i.bF)(u,{model:o.settings.telemetry,"label-width":"120px"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{label:e.$t("sysOthers.enable")},{default:(0,i.k6)(()=>[(0,i.bF)(d,{modelValue:o.settings.telemetry.enabled,"onUpdate:modelValue":t[0]||(t[0]=e=>o.settings.telemetry.enabled=e),disabled:o.settings.telemetry.fixed},null,8,["modelValue","disabled"])]),_:1},8,["label"])]),_:1},8,["model"]),(0,i.Lk)("h3",Yg,[(0,i.eW)((0,n.v_)(e.$t("sysOthers.cloudflareApiToken"))+" ",1),(0,i.bF)(c,{content:e.$t("sysOthers.cloudflareApiTokenTooltip"),placement:"right","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",style:{"margin-left":"5px",cursor:"pointer"}})]),_:1},8,["content"])]),(0,i.bF)(u,{model:o.settings.cloudflareApiToken,"label-width":"120px"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{label:e.$t("sysOthers.zoneId")},{default:(0,i.k6)(()=>[(0,i.bF)(p,{modelValue:o.settings.cloudflareApiToken.CF_ZONE_ID,"onUpdate:modelValue":t[1]||(t[1]=e=>o.settings.cloudflareApiToken.CF_ZONE_ID=e),disabled:o.settings.cloudflareApiToken.fixed},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(h,{label:e.$t("sysOthers.accountEmail")},{default:(0,i.k6)(()=>[(0,i.bF)(p,{modelValue:o.settings.cloudflareApiToken.CF_EMAIL,"onUpdate:modelValue":t[2]||(t[2]=e=>o.settings.cloudflareApiToken.CF_EMAIL=e),disabled:o.settings.cloudflareApiToken.fixed},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(h,{label:"API Key"},{default:(0,i.k6)(()=>[(0,i.bF)(p,{modelValue:o.settings.cloudflareApiToken.CF_API_KEY,"onUpdate:modelValue":t[3]||(t[3]=e=>o.settings.cloudflareApiToken.CF_API_KEY=e),disabled:o.settings.cloudflareApiToken.fixed,type:"password","show-password":"",autocomplete:"new-password"},null,8,["modelValue","disabled"])]),_:1})]),_:1},8,["model"]),(0,i.Lk)("h3",Gg,[(0,i.eW)((0,n.v_)(e.$t("sysOthers.randomImageApi"))+" ",1),(0,i.bF)(c,{content:e.$t("sysOthers.randomImageApiTooltip"),placement:"right"},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",style:{"margin-left":"5px",cursor:"pointer"}})]),_:1},8,["content"])]),(0,i.bF)(u,{model:o.settings.randomImageAPI,"label-width":"120px"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{label:e.$t("sysOthers.enable")},{default:(0,i.k6)(()=>[(0,i.bF)(d,{modelValue:o.settings.randomImageAPI.enabled,"onUpdate:modelValue":t[4]||(t[4]=e=>o.settings.randomImageAPI.enabled=e),disabled:o.settings.randomImageAPI.fixed},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(h,{prop:"randomImageAPI.allowedDir"},{label:(0,i.k6)(()=>[(0,i.Lk)("span",null,(0,n.v_)(e.$t("sysOthers.directory")),1),(0,i.bF)(c,{content:e.$t("sysOthers.directoryTooltip"),placement:"right","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",style:{"margin-left":"5px",cursor:"pointer"}})]),_:1},8,["content"])]),default:(0,i.k6)(()=>[(0,i.bF)(p,{modelValue:o.settings.randomImageAPI.allowedDir,"onUpdate:modelValue":t[5]||(t[5]=e=>o.settings.randomImageAPI.allowedDir=e),disabled:o.settings.randomImageAPI.fixed},null,8,["modelValue","disabled"])]),_:1})]),_:1},8,["model"]),(0,i.Lk)("h3",Jg,[(0,i.eW)((0,n.v_)(e.$t("sysOthers.publicBrowse"))+" ",1),(0,i.bF)(c,{content:e.$t("sysOthers.publicBrowseTooltip"),placement:"right","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",style:{"margin-left":"5px",cursor:"pointer"}})]),_:1},8,["content"])]),(0,i.bF)(u,{model:o.settings.publicBrowse,"label-width":"120px"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{label:e.$t("sysOthers.enable")},{default:(0,i.k6)(()=>[(0,i.bF)(d,{modelValue:o.settings.publicBrowse.enabled,"onUpdate:modelValue":t[6]||(t[6]=e=>o.settings.publicBrowse.enabled=e),disabled:o.settings.publicBrowse.fixed},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(h,{prop:"publicBrowse.allowedDir"},{label:(0,i.k6)(()=>[(0,i.Lk)("span",null,(0,n.v_)(e.$t("sysOthers.openDirectory")),1),(0,i.bF)(c,{placement:"right","raw-content":""},{content:(0,i.k6)(()=>[(0,i.Lk)("div",{style:{"max-width":"320px","line-height":"1.6"},innerHTML:e.$t("sysOthers.openDirectoryTooltip")},null,8,Zg)]),default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",style:{"margin-left":"5px",cursor:"pointer"}})]),_:1})]),default:(0,i.k6)(()=>[(0,i.bF)(p,{modelValue:o.settings.publicBrowse.allowedDir,"onUpdate:modelValue":t[7]||(t[7]=e=>o.settings.publicBrowse.allowedDir=e),disabled:o.settings.publicBrowse.fixed,placeholder:"wallpaper,photos,album"},null,8,["modelValue","disabled"])]),_:1})]),_:1},8,["model"]),(0,i.Lk)("h3",ef,[(0,i.eW)((0,n.v_)(e.$t("sysOthers.webdav"))+" ",1),(0,i.bF)(c,{content:e.$t("sysOthers.webdavTooltip"),placement:"right","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(r,{icon:"question-circle",style:{"margin-left":"5px",cursor:"pointer"}})]),_:1},8,["content"])]),(0,i.bF)(u,{model:o.settings.webDAV,"label-width":"120px"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{label:e.$t("sysOthers.enable")},{default:(0,i.k6)(()=>[(0,i.bF)(d,{modelValue:o.settings.webDAV.enabled,"onUpdate:modelValue":t[8]||(t[8]=e=>o.settings.webDAV.enabled=e),disabled:o.settings.webDAV.fixed},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(h,{label:e.$t("sysOthers.webdavUsername")},{default:(0,i.k6)(()=>[(0,i.bF)(p,{modelValue:o.settings.webDAV.username,"onUpdate:modelValue":t[9]||(t[9]=e=>o.settings.webDAV.username=e),disabled:o.settings.webDAV.fixed},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(h,{label:e.$t("sysOthers.webdavPassword")},{default:(0,i.k6)(()=>[(0,i.bF)(p,{modelValue:o.settings.webDAV.password,"onUpdate:modelValue":t[10]||(t[10]=e=>o.settings.webDAV.password=e),disabled:o.settings.webDAV.fixed,type:"password","show-password":"",autocomplete:"new-password"},null,8,["modelValue","disabled"])]),_:1},8,["label"]),(0,i.bF)(h,{label:e.$t("sysOthers.webdavUploadChannel")},{default:(0,i.k6)(()=>[(0,i.bF)(m,{modelValue:o.settings.webDAV.uploadChannel,"onUpdate:modelValue":t[11]||(t[11]=e=>o.settings.webDAV.uploadChannel=e),disabled:o.settings.webDAV.fixed,placeholder:e.$t("sysOthers.webdavDefaultChannel"),clearable:""},{default:(0,i.k6)(()=>[(0,i.bF)(f,{label:"Telegram",value:"telegram"}),(0,i.bF)(f,{label:"Cloudflare R2",value:"cfr2"}),(0,i.bF)(f,{label:"S3",value:"s3"}),(0,i.bF)(f,{label:"Discord",value:"discord"}),(0,i.bF)(f,{label:"HuggingFace",value:"huggingface"}),(0,i.bF)(f,{label:"WebDAV",value:"webdav"})]),_:1},8,["modelValue","disabled","placeholder"])]),_:1},8,["label"]),o.settings.webDAV.uploadChannel&&l.webdavChannelList.length>1?((0,i.uX)(),(0,i.Wv)(h,{key:0,label:e.$t("sysOthers.webdavChannelName")},{default:(0,i.k6)(()=>[(0,i.bF)(m,{modelValue:o.settings.webDAV.channelName,"onUpdate:modelValue":t[12]||(t[12]=e=>o.settings.webDAV.channelName=e),disabled:o.settings.webDAV.fixed,placeholder:e.$t("uploadSettings.autoSelect"),clearable:""},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(l.webdavChannelList,e=>((0,i.uX)(),(0,i.Wv)(f,{key:e.name,label:e.name,value:e.name},null,8,["label","value"]))),128))]),_:1},8,["modelValue","disabled","placeholder"])]),_:1},8,["label"])):(0,i.Q3)("",!0)]),_:1},8,["model"])]),(0,i.bF)(b,{show:!o.loading,onClick:l.saveSettings},null,8,["show","onClick"])])),[[y,o.loading]])}var sf={components:{FloatingSaveButton:jp},data(){return{settings:{telemetry:{},randomImageAPI:{},cloudflareApiToken:{},webDAV:{},publicBrowse:{}},availableChannels:{},loading:!0}},computed:{webdavChannelList(){const e=this.settings.webDAV?.uploadChannel;return e&&this.availableChannels[e]||[]}},watch:{"settings.webDAV.uploadChannel"(){this.settings.webDAV&&(this.settings.webDAV.channelName="")}},methods:{saveSettings(){(0,Rt.A)("/api/manage/sysConfig/others",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(this.settings)}).then(()=>this.$message.success(this.$t("sysOthers.settingsSaved")))},async fetchAvailableChannels(){try{const e=await(0,Rt.A)("/api/channels");e.ok&&(this.availableChannels=await e.json())}catch(e){console.error("Failed to fetch available channels:",e)}}},mounted(){this.loading=!0,(0,Rt.A)("/api/manage/sysConfig/others").then(e=>e.json()).then(e=>{this.settings=e}).finally(()=>{this.loading=!1}),this.fetchAvailableChannels()}};const nf=(0,d.A)(sf,[["render",tf],["__scopeId","data-v-69ae97d8"]]);var af=nf,of=s(48903),lf={name:"SystemConfig",mixins:[of.A],data(){return{activeIndex:"status",isSidebarCollapse:!1}},watch:{"$route.hash":{immediate:!0,handler(e){this.activeIndex=e.replace("#",""),window.scrollTo(0,0)}},activeIndex(e){const t=`#${e}`;this.$router.push({hash:t})}},components:{DashboardTabs:f.A,SysConfigTabs:u,SysCogStatus:Du,SysCogUpload:Op,SysCogSecurity:Og,SysCogPage:qg,SysCogOthers:af},computed:{disableTooltip(){return window.innerWidth<768},currentComponent(){const e=this.$route.hash.replace("#","");switch(e){case"status":return Du;case"upload":return Op;case"security":return Og;case"page":return qg;case"others":return af;default:return Du}}},methods:{handleLogout(){const e="/api/auth/logout";fetch(e,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({authType:"admin"})}).finally(()=>{this.$store.commit("setAdminLoggedIn",!1),this.$router.push("/adminLogin")})},setDefaultHash(){const e="#status";window.location.hash=e,this.activeIndex=e.replace("#","")}},mounted(){this.initializeBackground("adminBkImg",".container",!1,!0),window.location.hash||this.setDefaultHash()}};const rf=(0,d.A)(lf,[["render",x],["__scopeId","data-v-7e9e1ae0"]]);var cf=rf},63003:function(e,t,s){s(85331)},64752:function(e,t,s){s(85331),s(38736),s(18785)},70415:function(e,t,s){s(85331),s(73565)},73565:function(e,t,s){s(85331)},91114:function(e,t,s){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function n(e,t){if("object"!=i(e)||!e)return e;var s=e[Symbol.toPrimitive];if(void 0!==s){var n=s.call(e,t||"default");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}function a(e){var t=n(e,"string");return"symbol"==i(t)?t:t+""}function o(e,t,s){return(t=a(t))in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,e}s.d(t,{A:function(){return o}})},97769:function(e,t,s){s.d(t,{A:function(){return h}});var i=s(56768);const n={key:0,class:"channel-svg-icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},a={key:1,class:"channel-svg-icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},o={key:2,class:"channel-svg-icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"};function l(e,t,s,l,r,c){const d=(0,i.g2)("font-awesome-icon");return(0,i.uX)(),(0,i.CE)("span",(0,i.v6)(e.$attrs,{class:["channel-icon-wrapper",`channel-brand-${s.type}`]}),["telegram"===s.type?((0,i.uX)(),(0,i.CE)("svg",n,[...t[0]||(t[0]=[(0,i.Lk)("path",{d:"M417.28 795.733333 429.226667 615.253333 756.906667 320C771.413333 306.773333 753.92 300.373333 734.72 311.893333L330.24 567.466667 155.306667 512C117.76 501.333333 117.333333 475.306667 163.84 456.533333L845.226667 193.706667C876.373333 179.626667 906.24 201.386667 894.293333 249.173333L778.24 795.733333C770.133333 834.56 746.666667 843.946667 714.24 826.026667L537.6 695.466667 452.693333 777.813333C442.88 787.626667 434.773333 795.733333 417.28 795.733333Z"},null,-1)])])):"huggingface"===s.type?((0,i.uX)(),(0,i.CE)("svg",a,[...t[1]||(t[1]=[(0,i.Fv)('',9)])])):"webdav"===s.type?((0,i.uX)(),(0,i.CE)("svg",o,[...t[2]||(t[2]=[(0,i.Lk)("path",{d:"M446.293333 810.666667C384 898.986667 262.4 921.173333 174.506667 859.733333c-87.466667-61.44-107.946667-183.893333-46.506667-273.066666a195.626667 195.626667 0 0 1 152.746667-84.48l2.133333 61.013333c-38.826667 2.986667-76.373333 23.04-100.693333 58.026667-42.666667 61.44-29.44 144.213333 29.013333 185.6 58.88 40.96 141.226667 25.173333 183.893333-35.84 13.226667-19.2 20.906667-40.106667 23.893334-61.44v-43.093334l238.08-1.706666 2.986666-4.693334c22.613333-39.253333 71.68-52.906667 110.08-30.72a81.066667 81.066667 0 0 1 29.013334 110.933334c-22.613333 38.826667-72.106667 52.48-110.506667 30.293333-17.493333-9.813333-29.866667-25.6-35.413333-43.52l-173.653334 0.853333a211.626667 211.626667 0 0 1-33.28 82.773334m310.613334-304.64c107.946667 13.226667 184.746667 110.08 171.52 216.32-13.226667 106.666667-111.36 182.186667-219.306667 168.96a197.504 197.504 0 0 1-146.346667-94.293334l52.906667-30.72a137.386667 137.386667 0 0 0 98.986667 61.866667c74.666667 8.96 140.8-41.813333 149.76-113.066667 8.96-71.253333-43.946667-136.533333-117.76-145.493333-23.04-2.56-45.226667 0.426667-65.28 7.68l-36.266667 18.773333-110.08-203.52h-9.386667a81.322667 81.322667 0 0 1-78.933333-83.2c1.28-44.373333 39.68-78.933333 84.48-77.226666 44.8 2.56 80.213333 38.826667 78.933333 83.2-0.853333 18.773333-8.106667 35.84-19.626666 49.066666l81.066666 149.76c26.453333-8.533333 55.466667-11.52 85.333334-8.106666M352 389.973333c-42.666667-100.266667 2.56-215.04 101.12-256.853333 98.986667-41.813333 213.333333 5.546667 256 105.813333 25.173333 58.453333 20.053333 122.453333-8.533333 173.653334l-52.906667-30.72c17.92-34.56 20.906667-76.8 3.84-116.48-29.013333-68.266667-106.24-101.12-172.373333-73.386667-66.56 28.16-96.426667 106.666667-67.413334 174.933333 11.946667 28.16 32 49.92 56.32 64.426667l16.64 8.96-130.986666 212.906667c1.28 2.133333 2.986667 4.693333 4.266666 8.106666 20.906667 38.826667 6.4 87.893333-32.853333 108.8-38.826667 20.906667-87.893333 5.546667-109.226667-34.56-20.906667-39.68-6.4-88.746667 32.853334-109.653333 16.64-8.96 34.986667-11.093333 52.48-7.253333l98.56-160.853334c-20.053333-18.346667-37.12-41.386667-47.786667-67.84z"},null,-1)])])):((0,i.uX)(),(0,i.Wv)(d,{key:3,icon:c.fontAwesomeIcon},null,8,["icon"]))],16)}var r={name:"ChannelIcon",inheritAttrs:!1,props:{type:{type:String,required:!0}},computed:{fontAwesomeIcon(){const e={cfr2:["fab","cloudflare"],s3:["fab","aws"],discord:["fab","discord"]};return e[this.type]||"server"}}},c=s(71241);const d=(0,c.A)(r,[["render",l],["__scopeId","data-v-ce6ff2ce"]]);var h=d},98642:function(e,t,s){s(85331)}}]); -//# sourceMappingURL=757.47b4e4b0.js.map \ No newline at end of file diff --git a/frontend-dist/js/757.47b4e4b0.js.gz b/frontend-dist/js/757.47b4e4b0.js.gz deleted file mode 100644 index f402a79b997d93b10f0fda3877b035cc2ae3f31c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 108378 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 z z>YDyVQdXh%G@Pk%+MK9KnpChraLvHls9E;KXJB+;yN>ZC>mACM?yOy%@<(;4I1Xe&pJ7tJ2<};0r)gd z!E@nFc9l+$!`d}P&&j>PG5f3nCX}Zm;)e1=0BtlN)d`au?6q+Ok5V;FuFz^j!G^h+ z0W~yuF+ZTw$>KtR-fj_w{r~D{&z_$ssD^}2! z?TY@{1l*^SqA1ydwWB}4DrLG}2#+kKl|s&XCnm2l(7M+(nR_hiC2s`=|Ah*9p>}ju zJ?1(rz})Txh3+)I5v`s-kl~)~*6gGgieuK?$)}4lm$r%Er`eejzi+q+sxGXePw{bw z-fsALJ3H{0bTc>THv3<_|FUwu6SGf~$>ao_{oN7CCn#EVA?Ba%6;+x#3HU6l&*vwD zQ8C>?4*E;ALvVG!R6DczWU}+eum8ID|72A)Pe;WRX!gI_`|H<#{`#+9{ngzt7*tHj z{ERBLV+VNv$iWRLF;|>!4bECr;S7OQFBy%}srqWO>^1?JYMNljV^NX`&Qh2vXT3;SZ&(z zfuyVawm@rCpbUU0vV6VB^0Ty@l^I@rdWdNc!ayI;_s3hPtcHXK zK2kKkm7IDKHlqVmb)bR=TC&!=hdS*hCfGXYNQv?Xd3ju>C+4IqE-M_7+pT^J!S@bb ziQ%;St^kvJ1Zl8ms`(5`S4!Aq!U3L_MO{zQ@se8U zRb3`kP%*2%n@=XM%O7C%tp`DP_ZkjT@jU{7OWFye1$&M})z;OizPp@vm$$Nl@F6=KUYu z?u?63wew?ovV*g0v$FBm{Nwp|hwl!5e)IgTRR-3@d~}YH8bh-+Er6*Nm-$xDy#uM( zzJkBSt27_mH}e@iM=Wam4hTf2clblSh9;WL@ymFF{Bk~PX>pP!zFIM_)yraD%U7fq zvx8z++wD;<7^3G(Ly4iRGxJ57!@&gs52z(~3J$TV%M@yR9f#FefQZ7!7E-PY zGlo!yspapXz?;m#lNnT~kis@E&_O&KWlpj_Par-PeBA6!bD;7QE|L9K$=_izL2w!- zQZ33TiSxEVC~GP=z@Hwv;k(y|&pU6QbnRx{PS zEB&B2ZiR~yRI?}raOXH~2^A$Gb01)SgRfVSlM1g`U?;H7k>H!h-tNGz-$Q>nvDXp# zv7zE$e38I|T!5${+_8A;4C$3MUJE~K+Z4SI49l)DdW%0oZ!U`f#e?=uQI6ag!DiyU z3$qOJ4Q`=}A{!e#zJos;6~ZT2s+ ze1}hvHdY4rtgU^In4`FIM=XJE;M~pKv=ZZGKzR-+>4-&2bM+D}m?U$--Wt;E-a8iG*T7wUZ6ffloXj`1621r1tG#h^u3N^5iK_ z&HX_z1Lpx3w2Fz2R9$@hXzq8H#s~8RI-VL|EQ+ZH>qP(x#THDn!>ZnXl%*)l1gh`C zSbg$9xKL(fdqxEb=-#eoqyRiwn5X9@uxz+nYG z@=_YPHNe(ha;X4_BkunYdw&A}nl9n4JLQw{*y&z#yuUP5uXdxsYd7%lW6)5o>$<&Y z$GhSJCptpP;FWq{+Znp@fANL2@>*?^GQ-oth^d)Bp`&m&`VOymNV0=fEt0&Hicq6| zAa4LiSatv}5VOJmlwi0PM!K%DXuR**w?jx@hGW@Kmr2{MFLetbJFo&kIo_5BCF~l2f7yI-r}r04bV!e|5nVPFq9xArdy&sjps75t4UuDuNI^;#H8~<#L5#G|9a_5L z0UB+-#+PvSA}x&5NopO;y8D}cW=v*T`K2*FM@81RAz2OOj)Xip)$!$C^ZwpZL@aHFI2?P~e1%xke zQ^WNIwe<89pz1CF=wX_C@V%&};PzEIq!>@;JR6U}l?Iv_2vSc{)RovQQyJnMoA+)m z-V^K$vy92YysxtnwD`Wq)MdX&)sBQPpnq%!3H>TA&x=WF?#EOre!QV0IC^7qSr%Zr zf%~^j0ZkXqa~MQSq~x+|RjBHaV9S>Xy#d%6rvNttDNkw&4Fu>|Fzt{_BHX>YD~_xl zZ&IPn^QZ-8p4ZtVcF~(=qq3-q(|YG{F-zZ$%4}BK%idRi{>z{CywQq~rK561u%DY! zg%leOtkiI{tMgD;^$MNn?7i_lIM7NYt^nbySy(wi?Ch8y!9fcmwcQ@s@(Ol@3PCmI zR$k=k7As@f)@>vBM&znU{!xywh5rH9iQTT#*g+jyu?h|Wa&=-iiZVOHTxC{SQx%wk z-O;s61(rrNADyF`c_26gjnlz_*##~qv_`v2BAvxy8R0o?B9CX01Sz<|F{<+pv`W70 zQ)C9&<=@V17)!t3a7l z=KzKZYQPkktfG~O7DXI{kn3u?-NQ{iCWbFnV}uOP%?&$LdNmDe@MscnJcHGU&q9p2 zc7G8xdB8ARhY|J`0mgqeDNd3JbKf0%MF_n{Hum#)R!moVdEC;|YPr2lr$%h^g#HLK zc(bXe_#wHmNw2UAoK( z#3dA+lH6n@a6pi{L>fU^WL6e6sgu+EA}fm=T?>H?jL;Z$Hs>wi=#r;`^{manh3YLj z_;$K%@&p3{$(G1dI^G#h2OP>Os^7%ti;5X`AQ zl;as6!|>Eu70i43^Znp9bN$s{{_^MB)cfP!?)}@<`})3MoMP?Jp96b>IQ65x61*&u zvG-8(aTADSUREwL297WE1456t4>0!Ll*f=Ryl}`Nha9?3%A{OaJnSm1bzqN&^RXEO zmm2KDB&Ym|VJslOmHt|B=C?9(W1a8{wXxl4tp;DF^NX0en`&RFNeggi*c$G5hoUs# zw_NqeTBV#Z^H_lLm&Gg=pT_PgwxJ^^cdV>h%G0WY<-0L+7HI&y3jwyc1X0$SH>KMF z)ag;5mLa8RCl2m98A=gZ+G0m@jNONHQFZWb*AK{tbPE1u{GIe z5ahPIx3}}-v;KKKoqXMgU%Ox5|9YoBPy0ls?>yD(>BJEWJeBkGs&?+m0E*S807_mL z+7>T=x@jXdS8O}&uXgDM{;(wGWl1E<%J`Jq1OWL20ZC5l4Sfc|X79s!03Z`9R&qhu zC?A?|)U~rg?mUZIAVnv_od_Z`Uh4VY@(23>@{9(LAbqMvA|N+4L`!s=kv#c_QG=Ir zQW&SQkT#I?v=Vq2)h^2DgrGMNL&5zza^}z2tmaW(8X#!Y_( zvQ7-vGULq6on7+&1H!7T{J2I`6%Xy^1U_lhTceG_o8m^M3imbl?s;{by$+CdAgi9* zAi%DUL~!u{S@o=#z9rwBs3$(6m1+n4O`{HUY)Y&`HqteumZMSLM-n(4iBnI#1DEAd zZ7b`cM(z}RaR&oFEWTe5i-S6;Ew_WW{6*b}yLeEk8?H9>`Hei-;!~~Si9hOEj&o0w z>B)MG;$UxMpwzs6oG)H8z^a>4ypQihhMTIq0cZF|@v{^x7-hW5V;k?%sOBPJBC#8^ z@ms?-rVwBlOt4mh@h*FCXbz0~(4KiMe?GLDFpyrek)vzhatnpY{} zme>bFn^UkmG&o&BvU%%`g@PQgj)A8s@|gCzRMQ~~ z9mVW-2Re=t$^mGGC|?(F2g5L`RN2)h7QR%9(2#!oXzpQYt)U`SAf~NFY1`xC_c(qRLH+G@ z#oyP!=8;sUrJJ$LvSnHi+sbBz?O^Oq9Km)+PzW74^91y4Ibj>66_+4E9 zTHbj^4@_cb`M4zmVwu+QlU%84Sda3$d}afL*9nqyLIEYUUmnk=xb*Vyy0ruAMD1(* zfFT3lel&KDCdo-Uc{H>?r^zox`Dn;1wrBppx{OD|BwyUzn8R%Jp#e(d@~41z7U(+w zNg)G(Ih#$Qs2N3u0yGFlb~Xdu2X>&+flR@dB7js7ppDN|CFt7G@eQ?1Z!8n$S2hPo zcHuL1gaS`8uZy=IvRMZk=n*yT*_(|%yq@8~M;)`OSS%_Gj4s*>Qt}>V1i0rO+Go^| zj3`1nF9B28;T2?g$2JQf0*AiD$B&VAdXZ;cl@$AzqI{8$vk{)qg7hy%IY@I*4}r5U z%JsfzhX-S56HTxK?|k}76O{CQ3PxL=l;gUT^--{y@|p$0R{Cb|SZ7PNLwt1XeKW{y zhe46+f@MWTg3iZ5lMltzI7SOD1z3uQr{}uTQyE>Nn_h|xMf-~djSc;TXH0( z$<@my6*&k3#>Me$+m)W9*zGnl<|+LR9AI*ptUBQW<&WR(VLyt%DrxrO_Rh2r;!)_It|kME))ituHr;Y!H(DxMkHJG z6@3nBgr=pp58eKa7*3%?5HYjrtD`Hqu}pWu6zxrsLgn+WK#Yy$^4@Pr)-Bgo+bE%b z8k9TAj!Dqb-tF^A&1svuZG%9i*8c3q8_Op*-S>8P^Vo+&y1oRWCm#lO#AxQbZm4r| zuZam~I1{{G{l>MUx0C+LGxlKuPYME&hvVEd*7FD zcAY-(OWWV$SV-8N&ZL^Argk1X_ZDJBkCzm9o{x`X)4WRBK*Id@^L!lOG|-8rZ?YX( zZ&$MJG#|_RN37a&$eSl8wj2E1Z(nCrq6b?$Cr^~MmK7|P;PVXAvQz&&A43)-_gz-5 zbfn!OB+hL2Otr>5ofnqPH4Kl)(X)eZ9ti1KuSu>bL}HqSZ4<0Z)tuWpp6j~#!M&8` z=)tV}7J!1n+w4%k`mvb^5=)A!&K)HCle z4;AXvd*<86FTZ*B=EZsnH$A|}G?2Bus|(1Yi%DpoBCOJ;&|0K-W!E?8`Zq;hi<}ZY z^DY^W|6V4eWx7FoDblp9s_I6s9lEi=OE@u{O3?~e7in3gkKsGbf$87}qXIUeM_{1C zMA_z%O_6Pe@+CieWQ+03ecJ-vs=g_U>2pY@dtj_44YKR@_%*hO>2{GOqzc85c=yD1 z0qY*Y^JBAZ06{>$zwe4e^|)``U6Fclmez+-g+^@eC7(A+eTMyz*EOwKQx(OJ?ivVa zWVUnG-tK^Il)t5R7D9*;*sa#24aZ?VpF##o_A6#C?f7?+F9h>$NGrB-LsmiGaA2K1 zS7xb@Z#^_e1l+0kzS(g!_SZQbT;wkEd%@c?NdMqk5yyoW|AEU3xghHvclS5D2;h}J zrlGc@hKoYIaagRhl>c64Ox)zm2L}eyx-x_!Ilt5GT1rnvWarXH_;qpvS$m|EGPp$HO1sQ#Vb@vn&^&$QT1N z8qKGu(HK)6xPg-_vpoF=yW&!NV%T7dbo?iJ3Dq$X7XTFE8Y1z8(nYiVpB$i?%3 z^8i2cY`d=p8Fe+podm=P2OZ!{!{h^YA0u;@aL$WKa1B4;71(#H=;KGxuZKA1+xF$s z;61s`9fh`?Zd2}JV$AqukXA}#A1CEWa+W>?^W6xdc%Z)BUEDuPq{(mSk7oSy*$6EG zqw{odHrm&3ULuD)8+kTrXU<;a?MPDDhq`^OAtxq^1+|E*{D7e!kRJ5tY;=?zABS$| z271F;n|FIetp!n_ZKz%Dj0R(b<@zcqSvA|yS&VITq)oL}CTuQxWTg4-rPZ15eo8-T zo3+b!qUT_prRP+T_bt4<>_)VT1s;tgMRr^sW)vx13o^tpl4;kaWtJ(>_%VW<-yMYa1k)pLL zXsvR1D0*0=q1nPmTP?U1L=2WhNRSUcSREU*55;>Hgb@g+uE5*2p46~>P(CN&yk}+( zNSLMfu1m&4BBTw+f$JaEykR#Q*ykm3`sPiBMSrJM=`e9{v~XFx?|F%z{QB<2N{M@c za@Iq{H-F#glxZE4rRtV3D9HtbyJi1;qvu>&cikCYgeydwS4>40+d}#&9xA=^lvqVKW#pReO~n2pEiR(=^1RK#G{3eGq}9P zCfQp}pqu{qZnVs(_Az{dr|2)XdXGNquguVDvKox@T63PB;7OMJP2d5oy?)6`Zk-{m z9`f3mV_U<;rpZ+wW7u4d4VV3`C_AH5Z(XeBGe%Hhf!`llHumPr9T6*)!5wjQdN#<$ z`|H(UoJFYPpcGXt(2VFRg~QO)u_TcbH5TBiXaUdywLYq^B2?($(N);904tq)i-L^+ zW@KVWRM?=#4up+*FM>>V7nWJ+z z%)Pm*^K|Yu@@?+wNT^jE6YPG|Z<^Xf$hWA=viISw77JH?a@#e-^2U4uBVX=8 zf`FOzT@oM#3ld`^2SFRjRaULjwXhy)XutRDJi6MZS^KNxs&$Q`zGHc(tU+2c1nCGF zRG|Co(J=vw=z8zYSlLAi;RETFw=M}Bk9F#|*M5tM9aL?8YxS4A!B)O{8Gkb=09>es zd(l(SO-M)dRf|q&F>kSCorbf0a_MIDhBTTQ0+dPsB>1Z(%LCuHudH{~{0zPxU4Yjp zw1ko{eKf|H;N-2oRlggBgHDe@LxeV#>M5ldi+uebJkm=v;(|Qj*V8Pw(QqiuiyvA3jP`(wCc+Zo!ukG6E8M|(JMy(0;Gr6*1a=Z@2(hPhCI-WAcv<=?8e*5C^#Xp|Ed-2^jFTQ(m z_;Xhg!6g(Y0-a(a-#!2P<2aFEAvY-Lk6PKMU~MlUw@&ZE?2)(z+DA-vw(CSuTrBNF zr1~UkiB)CYH(Xnacw4dLYQ3zK&b~QH;Cc*J>NVH?<}3PDmcL4_I<_Ufs;3!k9J!_B zPLjc%a%%{~2})&3tL908TGSJ3dI!1oZ{qL`)3i=1(S=t@Jpv4`e-QNRD|p>e;R{X2 zVWbgphSf$JD_de|aETS+WPT8#A3Zl|Izz`j|JlkIM8d9js(>%X*5rXCOhQB}HfXr? zq%{>Mj%oShN~ZU4=j|(p&I0{;aDb!`gbiU`;9*hXL&R^S**jTK9u^Cl3xW#UAS-er zPikp}q)+vI$LY_&k_Lny;eUtlWZ!A}puAo#vV4|9`Tw82ckhnk$o2)lO5oF%s)AGr z=;uflTnzX$_h7>qeA>RU7Nn|DQkqg`oy;txvZ%l2Ys`Gd`3ST2BO>;Wh^z04uEufQAHUG;YxF&KlK-d)#)&UoFN@YAbjiV7l>9u7Ud(Q=`WelSsrquh z=!#Ucqkx+zovqZ$NplgNnQXvj`4X%u0M{0EnA6PSlv$dGmXs|i^r1YV5Wc{2L;Yy_ zq(`3b)|-n0-bDy3O71@Ro+M&CE6<9_axyE%=Ets_l>{{a139Z_v---$V0&CGjc__6 z+KO(UC3yN=6ivxtoATMr9v>SbG^&6@bdg}(N9gj!sPi-@6q8!)_Ix%Qs*No3W#$;Z zoov9rv5ylcD%`Un;#r;HOriP<{@rS>Y)KY~_7(jcx@?81)EEWcJ1x4af+14Tu9J;; z550cIEl*~r zE}#%Mr^R_$J?{Qz(bSna2lHSyKs|8Y+KyG_ji#)B$N=*-hf}cr-9A-{CTMG#7xu83 zJ@cxmPxDg{N7R6tXhTqf$coPeOaQp?U%}BLzzBDM4o6bYppJ=b_wi|4H>bQm+pcH~ zo3#7T?UBUX{(0CV6?cF42>bnCtP>^3!{HZG0{9ix;vp-OjfI+PMV@OUvi!R~the~?W_J7LHx}u4T_DN$C7q^|aM^d|U*G`(%<=US(`?kn|QtbFl zp#So}XhGC0z>UVzG=ZFwzNVzE+0WKfmun~jC&70ouj|i(lh*&)iTRx;06)9<*b7n+ zmQ38SI_z1r?B6WP*_8Rd^aiEOBAa8L{K190mt)sXNb%tiKQMeTS)z@@jgxE~5I2dl zA&%Cm#^G)_D*>{V!nPCfnhJ~&BH}&(1z?s}MU&4Q;erPV5Uz=Bfup4&64HmFfymF* z`Hb%ae7M*Jg+}Shx8YS4Z7r+wXN;3^B&qG!Vm761wd0oR>O;{G>;0x?UOBAsku{+A zb!DQFkv$5X1@>@rKyjxR#QAVI4UB&Raf2oWGDZ9+UZx?E3|&>k=y?>{zhg+;0%1{M zS`mrY8ZH!5vjp2Lz#gAEx`3?Qq;47@vaX_k&zlm4NYOybO7s``-Tx_Fs)UD3#G>bj#hD6E#TeTdG~lVn#l z;hgm4f$Cp1g#%r0EnDS}6o$RQ3j+6i1Cl(;z+5icjw7c`*chHVb>Sw;pT9L7^=Et0 z)q6fniuIaC_QB$$+`cUmtrwE@mmx+2`7<(UfeeFDNLMYnadS{B7CkU2=vAi7i3o zNs&fMqJ6Q`F0ie-C4c_itCv5#dHnsG1A`feo0|h(9fnl`s#i`iJ?|hOlpWhU3c~aK zvwwf~0|Rs4(mFAyPOyH-Cyy5E?z1_OJ%&&pzGmAe8L9JKdqSJ+SI1w8=W=|x# zi`4%*%NMungo4-GxAd5o#Z_5T&{R#1gK?Ylbm>gDV6T;veCA$I4O4Qq=K-j3u!C)D z>nuZ2v2bz(&YPaeTPh*2Zi}_yfrC#%=dB!k`c&SjMgvX1t8%ZeQ8co9Q>QnD`Y1P` z+L`@tcabgqbl;bS&+wLlcT`H-E1~!gr*wX?t65~ zf$P~>CUSL_x&UF+l?J9->d~gjG#iiI)2Y@r%-7Oqr>QKv^y|+Z?avtk+0q5wbEa~l z`NLS{z)f1IbdT|qvXD?lS*b79<|*~fS!3PvdnWZj+pxXYZ$tR!EtLFwUB7RKReo7$ z`5%cotGX-Cmak@ua}4^NUly53T1+H6atsAddQKR<-$)|q&zgKsh4M(-*+H0fAmf6j z9&YBw&*D}s1UUy0b+G-FZ=VhQ^;uZlZ+AVhM`q=YXb5>Ayi3(qRjx$MJOwX=Y#K-aT9Pv3BX6y zcdsK+AVnmo>xY=z2CRr2h-_vLg2isdaYj zFAkhc(WauR+A>aTEec(f=NC}wLNhh{`{r5O0Rl8hv0PXQ1oQ?mv4KDVQ;0qmh7-!H z4hSMN_^?GtM5rEX@SsHxWMKCpw=y=@c{^5txH1&Xz!mGP)YN1^0u^WIp1yX6i8JP~ z8MOjn-*1TnBT|PhnUM(sS>+$?W9a&UQxg>>X`;Ze1IRRU%SArTPeIqX6b3$OjqjSj zFcfSUCt8lAr+33>g!jgOM*K-H@Q@0PK*O=u@98{-O)!G%jsCyq&%f7|7f~kmhPBv)`DGsCrI$EgeTZx|9E6gZz68sQ)!+taqt`@V`Us?`-O%=8uqy8!JCQ+WcWeUm0r>e4}v_LAX zU;Pf4#oaIOHN_HlcOc3`o;+qDP>i*SU--7{5)GWmqW0kyT)nJ1bw?X%npFJJZc^Sq zN`uQ0ja>MOn?QZbetQS>52e5fKEVH?f;TX!WkVXiJnh{iZdsL2UXp25oVv3^5CYHt zIBH?J8&5t&*Vj=Ea$EIHhvtGX*BgWfKHr7viz0+};=or}^m|R*#Hi9hq<{gJLBPORy_;QNAsVbY+ zmt_U^Ck$ass=T)5pfb6GwIa-S3~@Xmuu9N+&5;Jsw_sq2|%~CeOLK3yZLzf z>q6j!b@_YTT@V|=UZSMeN5d{UiQ4`__s%^_hcbOnk^qMSHZpf4)!t`fVlNF}WaNO! z`?OTwPbO{v8%tCGAT7jtq^n_XW1l5l@h6<`d;89y-)wcA0^6+ z63gf9lQzhbQgR*E7Qep8!Px&h@+j%ioLYZW6;D|C7is1U_@9lO7+08MiG!wUR+Kb!@1Ubog~zx$%B!$cvBpNFmmfrENbK9UQKLhh1r78 zV=)8!He-$Q(5uq{);H`Z2PT5xq_7|q`nCo_+;S9h(_PeUG42a^_Q_gXVz^{@E*EkJ zxvi0+u~aAHp_ZBCQVmwWw-c8c*=wz7wpDqmqt>P)`- zBx<%2Yt9{6a`#@D+TJxW6Ve@!=1#`&a_Z*9fRj4sRp4=~CVGuO>P-;jow%o!bxd`> z!0UvH*k!Jl&2O*JdyjQwCB*VU!)~Z4uO=5D*uikkoP!+0KulWCy@%WQf1_>QyIiw$ zTmpUnOgcbu2;qzl7%X44H=Fo^J#=eF;2 znVDZR^DCOu;Fh3$P0=&prTdygBH#>U#^VfUCfJb`0$*T5j%I|o)}F2>;{&k%P1xfQ zIagLW-!eEeo4U63>;v9skp7YmppPwP%%r;>GoG^_54QkC#$?On^Rt^RE%~u8bCOQ{ z_|e>ef6#%sSpn2G1Z`b;3g_laHtACjmEOx7c{JO5(lGf)2itBPDna}Tr@>v+pr|-4 ztZUy?p+4xVl5R+lIo+}d)QL;ec1Xs*8RGfy@Z*_-M0dM^Y7*C}8&G1<5{tjTC*Xl{ zW=eFV&MPJY6mpyUM#dQ&%*PkR-S;c87rzpFfz>*v{rC4Ufs9 zo#S6mMoMz>Sqs*)XreoM>EwrC2%o%&vd%+Yqg7iZ*E0~DuObW*B9;^YV7I;w}d{M7=QqbY(5+3iAZGv+JV>1PW>Dh&i%jMJTJ6XTzQj@@2sn^pTqe zTP)QzSrUy8A7hY-a(az{3x+qWM5i7cm(%ML0?2U6bZ*6eT8(<4Q1~k6hKBdN{RZ9Y z_Ja@tXL{Xy9{TOSyPMx;-~?4echLsc0QPqehR2UBc_W^)`957LA^>$+F%whIx^nJ# zr}Glxlwwz6Xfu_pp*d2(93dpLel>pJXcrp*NM^Ng`*a;d6}M3_inm77t+IJXD%_m(I$$>W`zN1ngvlq>r+H&gW4Dc1c=pm}ER z1f+ZkAIWJ4FetGAYi}~@g1us6QPgLJdWZayshJsGoEvS{#P($%&{+ z!p>Vaiw;6NZK9;G3%aef64Kx1ja;VCsm6nXSSuPvb7E`=Km|j#8Bmu%buujh;(=g) zeM?Qf(1P%qTNDs{w1feb~^T=G8eM~zr z7`VHvJW|jFXZjkmL#9WViLzf&_6_@7E8LPBUAj2ktg+G#LcOIdugU&{z%n8R?$#|| zG9|5Fj~8os!-s2#ZJ)sUUnKz5un*CY!Oxwom_Az^@WfM{!yTRQZor6IhT$R5`IUDV z(ly%nmQZZ00{`q_8@~lhEJ)fP~T6~S(1cq}0Q~Hex7GMG60zT2Rx`L6_ zJgjTR-Hk$bAR-c=_p1xznOS4I7b38y)AwE9&rG+3|6D(SzaC@;k{|^VmJigajkWxu z|2if@IP#$Y6%ck6%ljGt1Q=tXVOTzJi)16Vs>ydbv7V^SAiCMzzQPZzEvyKRwkb>( zTQlr90m?`PJFWVtyR>FJJdwTgK@%%`bhkI>1A)&1HrTUGL&tbsI}SWFsJXr$*|myw zzutD;uQ#kaniuts{aP=40?j5KybTPw)9AI8)3siAW&V4;Vc|K`XY=LB4Ut!nJj599n#>RH_c`6rMTgRY0A3TW z{B`|6eUrabF;z+xQf1f@z|C4Fmt|Hr2maV*;Z*|rE15`}F4N|hVfF5a1Zm%->P~HH z_j#3uQh1w?2fT=Zfc3Q~euYBzIGDpWa+_qBh#iDB+el@+JcgYYh1jxBHuGggFVR8MtHZ#F1>}3~el>K_wl<1tdfEmr|gHqLbnpl}M<#KQe>M zayp$AgYD%d%SiGOOrPi4Ylr4eMY!-0Rx3 zqb79+*DW0ou@7)lTK+q$|8=imsk>dHiYbKvLzx6cMq+S&Wu@2&bqO1Dwwv>TGXFp8 zG5vSfzBw}54Bje;t(xn=+z%d%7y0bWmi6^Ww`ePC*zRH8c1`_0`HY9jeC@v`%O#)I zuAF{gTi>rY^0!}0lI)aamIQ(waqeY+2;DOuE+O?ZG5ZZx^srU zv$`r~%f0gKcUipOafv={g?3$({#N!(dSh;Me6ewh;YAt@Q8az$$n4!e>@BVr0iAy& zfdzCryr93yC-0|CJr5eX1_AU?uMR+SNQuuF94qFPEo1DkteK}zxeQJ6zQqZ1& z`yUYh?Z+xu7$G^REj*O0$hMV0{*vyS!LG1gGcmh*l|&^*@0$~KH{rF1AQNKF_Ee{p zdW}7_89^z`$!ZgyxxFg8$pu}1miyCll(&VG92}?(3E*4K0Wmznr%jQ+KMd<(rn0}D zwRLc;m4kJ8R(+#G8j=_q6BJb`L7}lr)|Nw~`?bHCEvg`<<6uXYqrVl!M?6f>%!DCga*= z-_hoKdyRr~;O&nvphfah{sU>(YXtJ4D7uF|yw;X#vZI4T)3(*@v6o8sJiVK)a%I1FBE2e<{UXd@6#tSmOxx5L+iyJ`rE54 zHf`LQ!XW(r=bZ0-;=Z-UkzaV*{*#WrpTN&P_=%8@Yj*8TN`l{WUt8Z3p_aW~eVXzg zv?mGJ!oUVCJSyuV<7{x`@F!C{z1Z|k*G~+S7oBc5JrsnUqqV!unYnQ663#iZLEQbK ztsEDU79{o}_Vx9}>WwoOK;CslD7IZs1U~kv5604%zzq@-aG9q~eg%St^QK-@(_s=U z%Cq>VE+_KrE9zoKVL}yFQh*}`Qxg=Hy5a76+~yyOVE}1V&StN>x{0pDcY`XieU;h64)ziN7MsvK{JC!jzXNkdrCgvvvYa(f^}!#Wq8Ah2;8Ql8Vm z9yD%Q8G?p|Vl&t7dVE@(m({Dhy9mYsfShmY;r#yiIy3Y8<7M0!e13qRAB3N2gu@Nw zLft(*r#YcICXve~)v?@=wooWv_3bwK)ywKhbS7Bb#oKDA1!yl}yj&iltN9 zf>dNp+JmMoPLrkRlP)$x48K3jYiQ0Cx>jUaU%;|DMhjVp!Xx6(DlJE(8fDqL@u~jG5WovD=qt= z^wrX^y{4R&5z40JJjv?3-FQ6O@cFV_HvnYdw&?$IUH>hYyu$#z<$PiQyu#u28D5^@ zrWD!q{V6iqOVnqLuQzeIktcE30r-Hf#iOW6fsh?vXxmc;2Gj0i!L|nEz{4qxkouV6 zo|j|D#VLZ(6nPTXm|n1gJmmVqoXpBO=0OUFAJfe%PSHwZL!M6>kcs=eKBM9Zv)F1{ zG@#CS>1^fk9?()@`5s`1Sj+`_n$S~;P0jGT2AHJ`OZzc0!#1KjG#zZ^eUGfX9d>Ti z>rv7|P*3!tl2bi8{G>|?0|#z;tV%&Vh9qSZqg4b!M6Wf-wBug1rgAk*2!$|I@d`sM z7O$wMymPIZ7w87~oP#WRAbEFy6oILo3jNV*q8*#Z*xIAA;*!w$16iNnL>Jfy+{qm*-!D`)L3qSFG_&GB^e4162t?ax%Zq8eFB%>B2 zWC*T_L=)A=#Sa9}%suM|Ar3t#gT{o4PpUn3Uk_5 znwSz-o>}hSICRk_(UzN7wBkaPurW~Z8bGD-gV+W8`zX`9%A2Wyi#qR03YC3;8_Qhe ztvM}<%G4iq5{CK$)W|X9>#oBGN)rfXns2|-EZQt1yvpxxm%@VMeT}sf9Y4% zNspY}H~-s#IroikYI@zq-(vHx+322T3flAAfjNyj*WV|7qWWs=K4G}&(ylu9$M!r_?$FaYgTB^gZzr7Vnw? zxrGe0B}vgPW?he0Um~V~6JKEmH;S+PU~Ca-Nr(#7qRWq|zbD9n&`TGI*6&wu=g zMaTF9v%q`>;!PL^88AWKR7_HFHYxjd5T!}{U0U5$f-g0m_V@WpB;X|z7lI8Tv#qS% z!nG0aiS*jDp4%yZ-d^U{Ps{VNi!LmT{vg8K^o{M_DE9W?j-^Bx=8=q+cOb*4f?Jkt z)ed3xOZ8RuRe3qD8$b{(n)6~s$kl`Kc>ki9&5Nep$7vb=+QLTXylm;$X6A;k4~T5S zCHE(FQ;cmEF8E7DbHyPLrp1}Lxq%4kEe8j&`43E9Ei>b)eZ&d;{fBzd6_jbUGS5*q z`=q{{*A<0rxPyV`i)-0UGnwUWYu-S+KNRO>+cisC4vKQTfMCT)G&0jpYWT-CucKtq zfx+V4g;Len+g23*+l0cHEj z{{8Z7?1Qr5N0%)#`u7HW;b5XyESHvtxb@T?5O`@)C^irc)UL3(g0uz~qG<2}84IFr zKMbK%aBQ%GEJVj4 zAV*bqltT|#3^#8I7e`!l$yp}Y@lq$YkcxPdNcVYar44~fu9Yp(kGp0t9+tV&ql4jqj?lC&S`0dJk$)%*9AB(S%)1gzlvBVF4Mj5h`zD_?MLu1M zxeRzsd6ayWq^y~q@L(N1q)M36ZgC&DlPqRjil@~1RN&xDw(PedPiw{kBTJY1>{Wfw zdk>R6Cgn6bL39s33YeUsSQ`bvYA58A4==W`sMejiFSqp$H}8#UF)O;l=z#^hiYf*` zXsp7n*fFM`#FYgZM78U;f~&x-xhfi{f3S-dC3A;8N$u_Lo9ER<(UhH_HUmjSs;PNj z6mwHtmo0+#+fVKu!&$QpB74}J7sJHml9^-byQD^s{MLsZr@Dx7si=s`gu}5C5ZnW@ zQz!OK>&mpYOs4v3^WnA-wa{JfcRu`d6DsNn@~gYkSJ_UQa^BUAuh8|2KAsjqrM|>r zdXZBdYGkLSt2%!epViH?d~yNgeqJ=)QoP^XC5Ing|+OLRhZrm%IN^36(R?6`?eX_?)c=x zfTQLIB|I-0i2Kw89CG+s^VrWQ6qzo=@yT>flmzK~_!if>H2bS^ck+`ibpv71G9R)v zZ}IQUyq)Cpvdd@XZ>cu}|2xL&!xzA-SpmLHi<6H| zCI=Ys^I6fsl2vV&SCay(`@ZfVydp9vWy_@*%^XKoPxxWL6;sy!mw;yaCvJUU*8@wW zW^x#UE@u{us&YGbY;BgnHkt@166oFTVRarRN0pt`EtOSbV-7=NEXEX zlbHc!amDuc%}W$lLewJM4LS6Tb{mKf?GCm3AD>5)i@dbL^!3I@wkjxDHufb>c)b1kPKTh4Qb9T#k;`$lgQUXgCn+i9^cD>g&K4qC?b? zEl5#cKQ<7fSc!|(T^8L%J#`gHj>NTo%-uP0uco{?R|+qybvb9btmkm8!W4G7O|*j4 zyb*8>C<6$KHpTha3tk~V+NonhR;gl{vD>#{5aV*HbtpV_*Tuw*wJFYVz@s%#vHSbx z?|C(yLA1nr4hSr~U@|mtTOdBbfl6gA&D;Sl-FD70`uv-jaajrG3$vE)X$#NjUUM%;@$Li95s!Vb^cnC0ryTMM)GV30=|kzc+dEea@9e)$Rp z3a`~%k}t@Bk7Crhq+MY8KcylUjaM zxJcOR;$Vw!IoO1*%rX9}KXHvD8hPBD^Vc|R9uK5PbxvIB>!SHkPKr$ev$ti10X5ty zN*`&Mo7NN+umw}kuGEcrhnMX;Qxost?1julUB5?7$W_^0h@jEHAB|n~*RnN4?M-=k zSxn2kD`rb$UrTvw+Pbdb-<(?oj$u|#%1&fE%V%u?A-k<15`8G9j4BJ^(oa!_InA)s z_MC!$tSQ0fw^__dn=@H7s65VXAVu}C!)>`@hwVLzUWU%-@2Ohl?;!2 z@K9YDH#fqqLga*A{_S`Ibb1CiS&C7{yuF~=mIrPY%50>pKIF3!h_Jt2_xH^|E{aM~ zKF@Au`~+u~dtSFKn|#B}=Vn?jPOVY*{=R6yv}LzI&xEmgPTV-YsWWp`n7W!R%~f7? zbg#KGbv3d27<&I-74q}t0vM!OVY>2?bT5T@_qLu*pMcTuJLu%B2Fu!NYT)uAiX1&3 zXoQG!R?xK%k%UeQdflUBV74@H_~v*E+89JdVJ^CE-X84lpO@Xm;&eQzFZcN|zfVu~ zU)%k%Z5Ktm|F`>p`m3~rl6)?o-U)Pj6p;iwAWy&HS8$>yoI^82{Z3giU$ExD#?&!_ zk>SoqSQv4S*Aj3&n6=lHr>~L_zV7m_cya;ppQ3!+CDEcnhwHr-^H~TGH>s<$^4vy$ zgCk1j-jv=GI45w{puCnuU>z#OOYd)1fpvsa(B`w574A}Dp;vVcJ4$l&5RZY}_l&zm)L{7%NrWD6d%fZ(LPOVD|e7&NV5&QQ0FSo z&H&&e&&(_5b}-wn2)5;rTKU(>Uwlf7gt zF~WeP$t@hZ!{d0odH^5zs;~#DutmZkv81EZI{p5^hu7}E39}U zNW*^6P;tX3p}_iv@Kp1B`N-}Ys*P&A!6&-?9!)V9^P4PoQ(LQWv`2XU6g51qI8O*7Wm7~Y|w_IQM%E<*Zu zU3laN2pzC}j;)%f=o(wJ*ow0NlHc$N0a0X0V#_vXJ z2?h}xTrWCJOn$^_amsPvx=kL^v3cALoQ<(49|33O`D<$y zZ|^a-lMnAuZ0@sC*p$;jYvx5m zrzdnSl7sOsMnKF1=c3k5uiIZ#NVvAK43x2oT!9#32CJ-R#kin@|D43X++nJH(d15l zhv^3fsldCy8iE}AxT*2mc~f66`y0HJvW&uej|*thLd-5;f;Y2C_OZ^7qh zJ^q435Y>Dn8b$JYlK$kzdU7H>v3Tdd0j&o1z+r&+H%qNHl=XK^P)6SMwuW%)v-duK z9$P33aduqomf*z6cUwq+F;k?X~LW~cO=Nf3>P%P4W?=mmr%Ba04eti7c3y*+sUc76439(s2`nG;!K0Wc5RlGyVrhzu1 zf7F&|sFu|bO5qL;X>}V=>G#DlO{V=!yf2oPI;#<9<~T`kh}eYGC_H%1V;u^{4~VLC zFeC}#u-Bag$`UY>4w8;oO#-C@4N4LyE3IM)Zs?=U{6ca}K(~=b@Nkedqn#>Fk|Hhq zSv{9opor;+-{^AjFP}%eqLV#Rz4w#MS}giQ@gt6-Jn|zF$)*M$|CddV$*M)gF0E z3422k)zIZX6ms$wG2CK9Q@CZIe~`s%eGYpq^JwqHCV6TzIYqSHRPnA;x+;_}rgnkP zVp*p+~4D(jy*@k)^{V!<7{~-k545hYgd1VrRuVE=Y6fG;um zc~xH06Z3zQWe9R0?kkG3c3P*$c38;;%S5$n7Vn*2jj=B@{=<#`A(n}k*00*JbU5l; zW>In5S2LF1DxVA*N^e7RR?lYj6)ZdGw7}?^)ot~ANL#+0wfl;+n!;C+9YjbU1c7t>8ccw(_d)u?W zMXlR!@V!6Wh;s3^-hyH|uikNAUEA%KcU#o+NfdF-KC*@i=@nIIivZ;fx$>FRkw3B- zj!#xAu5P7!DY@^rN}dOvPOcFt?!Ps$Hg$=HjjJnU z@r|mzm9=M7DDBJUt@08Z8Cfvi$@n&6-(y2)g7!LNIQv|Q4jTg>S#u5gOBp$lKBDDR zLMWWjC<&p@Mc(>78qz?dasFUoJ82S!pLTn_gx56Lr3Zv40dww%0Txi?VB7Pq0rUgI zKyN6R+)WW8YRbwe0}g!`Pm4eQ@xHB?F7l`yk>GX~C7tx$zw#mg5>C_JL*rNI3K@R2 z;>(ZrI$_(o-b#+=O>tIU7wt)U3FQK^`~gr1r&hjU&kuG+nDW_b!De+ZI0;tT*|XmK zp}okPVoJt$T6uKSI19CQar%lYT#-h{84)H#BMea5`d&ylWiLRog~Yk7iehSQXnpfI zIITEFyH)PIISPEEykV}l<{LWW&`0+B5S#<~??VAA+%8V-@Zgcd+F(>5TEj-i9h>K! zb)zM7O)LkQFW@|AF52Htq6HgFV1sR@SOQO6{agS}K(W7SBSSHFvI1Lsc^2uGH3x;|>&HKBG2 zSXW1V?a_bRvxUMHb*;(sNK58a-=07m_+GP}*BqUf=Gszk%;KJQI6z`G7>#`FT+P&Y zWf+erHZix%xX^lCmBRgQA3UN0MsVr--{X;6n0EAyD!t zwia<&T|W{zc{VvXI2QT%QM5Hee+1~RqS3G`hoVOi&Lx~lw96A~$EhP}7b=Fo2Uy28^>f3BaKYz*uaPq{gv?(054yxGU)GDR)www_H2ViL zuu1odRg%K6-)bpSAyG6$ifTqfuYCe0&lBrCqYTtCWq}mToANnWkLBzEeimTL7Wz)S zwUW$d|FOtt5eg8z2>6S;ccd%E+p>K!D<|&}cxN~N3)c5lA9A4g9Mv-8%lnDH@BF8? zW&5fwtL}N_em|`*UoYka35`a4WtB7FF__#jb|u%aA^Oe!zWMK6yH|qUVd47;fdDbK zp(_k~C7-;{&tXV)B?mPvz&LiY4m7&}NR@Ug#H25Rc@$NFb7)ou|8>|vM85v*`RL$5t#BIZCqD&AenzWu<`3?-2}X9>hq>( z+uwiupEfMpzcs_M=iJIn&_S;Q@57wcGN3_0D31veMXMysOl}@b{R^OOqAaWo9Ag8I zyRNvLBcR8kx@vOLo+A1kKbgyl(VJ-Igkce&vZH>I6y;Gn!}5%gM`p!n9QvDsqb=r_ zfo6cS2?+HNnIJ~3b+CK`ng#FH!?=FadV=6nV~+^^&GPwFAZAKuFDL_?4+d`5ZV-SR zLR~->kpz~fIn2m^EDA)KAGV9h1>Bs!{-2AYS&mdk;Gg4rC#e7=u1T7&-X;N@inJAZ z+tw2RFGC52o9H3&{-_JLOa5RQ_k$aX*nP$u6wJQG8FPOA90IlIp76ODCam4KJ4a$o zosF9gO@<5wgz4jE9MIEnf|X9jwyvWiu6E=?gsk+l0Fa8mUtAVVIYD(G+SVaPLWbW` z9>mi2wm$t;pbxlgR=pD{EUS**l6T)1O9>Q7=?{;n=?KZlviSAsuhMka2NVj^QEyRy zD9l5151qHTfvA3iW%=`69P){Mp{_G8W_g&NS%yKW)46gHimbnSA4g-C7WVf|(ay@M z+hbszy{fqG_8`0_LLmMcEWSs;y|x zDW1nUz^ZmX0Gk@>_IWqj`pIpT7-!E@*z6Qt*4UdHbJKcV$e^{9nc~tW^5O?QwP-E0 zD1#{VlkVDgO?`0PmVFe_aF2{_#C>pmS6yX5s-(FzF>IaPy%xJ^wj`rOnpA^6kHEEg zA7}s`1<`N$n?T@eQOsFP&2-U_9V0AyI|jH%Gz}quN7ok!vR!ll4n6U;h=qhs08f5i zbPfTXMk6!XDAqnn4Sbd_Db$sN;i7bmHciej!I!qnC-2(?z#V=*tyz(x3Na?`(*ne0 zugdFUW;>Ux#K{l(GQ0($--jaZoV%%eOJabjipK2x==Sfhw8Y#zx*?s*qXYNE2U%B? zM5`;3Rx4IF2|M(8UA5(h;)Q54-K!QKLf`dGx^seZJ*HwhK$sFr>VxzL5HXjjDlX8I z?RhmVCyCE4?7P<8@*+5S#8U>Z>l@!6JoQSCe_H>5^NCCniOhzV^%V6Gn1kI8AZ_Hy z8ZE-pVwPhxg?ri&08AJdq0Y{zJ4cVFQ}N_=;LH3FKA+X6`Ha*A^V}Xk$DSQC$vO#b zFG!ihWBvHi+zQ@*&cvCJtnmTopyW~J)WK8Qzx4d0e^x+*P-Z*%NDm`5RfxpDsEkF>TQyvhr!(mJ`mrFXCs|xRPZ-=Ep*HK6yTBb3P zgE$~fTU16O+qW$6l~m{NU{~_sZ}C#q^6hdser4{Zp768hM+fFc=N#hdXhn;Cf<1;&X9{8h=Q=wtKz zOkI9uYc&wYTR~?WW-{-_A(%;Y|0#^@#7KZ&k$sPPlPXgphIn@|TM}|Tgif4F#=-Fj zQ&qX|c+l^+YdXHa53u@^#mt%`+d|CgJYo)P-zFTWC+}u2xZR!Lv=3ZZaI@#zr?|Xr z>+#mOa2Y|<>eajzZnivrLbmsf1x+s!s}%#_fBF}YFoP6M_qdRY-?S5{MGty*EE3pXiVDZ7suucBbcVlPClfPyG_P2o_y z1~T_%2n=k(>Hx3R*XHOkCPUs0#r@V`p2gpL0Gi#kc)R3f1$Jc(q}hlQW?EhrRm+xU z3VYW@{JOZ|&x`K6{JOkcT*Bv} z-GssQ*ZcCWimR}9;X!l}!epD_BPxikOs4=&B<)J6QU;x zdYoXeJo>tQ$sIfYtYHWUDdqhfyIB)ud= z2t7fGxwI7}GSHrw25Kw|A=4Do#iSUL8mye^NkmN%zDTu^wMAY&{ngH=gt12;Y!IvK z2eQNGf-%W$&ROwaV7w-ICnU;Ir?L3>GM^8JVSnSv<4JY}1xQ%}uBZpS>!rqIQV>P$ z5Bao2bZ~F{(F~F~y@86#eXVm_9{`yqkeFqMGM#5?O;Qegw;oBu8FQd}@yJ`c99WB+ zph}Qm>FOH%>qS`=d6TMfl6S><-4M9xjIzl}S1P1ruiza|J#LB2u&O^snF>}JmDc(w zDaTQn-Mf!|;vNt^ctftI0Sb|7jljLIgE*%$sHZ#_gj*zyk(_Kxnkgx3r({`c`UGN; zWGU*4vtkNd-IBdAx{SOh?4L|*jw7UbA`2Fj$~_sKK72|z*htH6-xl~?Ug_%QI_|4N z{8|$kS0Wgqa@DIh$1c{jZ|5*>24teX{7@a!a;lCGogG)3`ZnpV58Ts2e<9Hld`re& zbwFnX(>x4B@yI@1`)|D%w@seI32VBLmAry4H>~ckp7Y)KU?iX z+aa-XD%J&mrid3@>d@T1TPDI-v+|bhWg+LVOnATg4#WEv95baO^fTnXoqztTLOsMdsZ|>HSw)SB2TyI2d-NLHGE(!3`Dz1 z$TNe*H4ja&Da3U1xsrM{Jx{JO>zRwyvtv|zenZ$`jD>TJ1R2VaMg*Xe`&@3WIV-9_Hok6=50xt&hJc|uJbI-FNn^gI z`ja7+9q_0tC?hLF_bv-h9=!E=c$(J2l}Z68BV{NnGFVm2d;7NWKY)?w!pnD?lWn%_ zv!VbI!kYW=DWIzIjWyEM;lUSG(QnZEC7J~mNGBswqd78Yb7JejM4j(LiT12^7Rr_< z;om8p<{?@IuRT+<9(-dZ3=TS;c$sllR`2b5bR(DKPg9Cj@?VEtz$!7Z(;z*B$pdL3 zVbvdk;xKvv=51S^SHqxNnSLn+4IHRG^M_%OX_SRE=x!e*(%@|LRjqT5dbqe?ZM?ac z93Ar{YEdu|jJK2~C7>d>Y} z9SmmTaIGM+5K-I&Y9h)6H`^0R(=VX>f#x`=+eG<~__nW&bWMRVDek$=F=QJojoq(X!-b#Ohd z!X1nf{(S%b{eQu~C-o(4lD$9v`Op8yAOCd!FMmy#?2Ki^*I2}y)DLo$?#$f4J_6T1 z8;6#0Ax4StZG95-{eAPDi*;prnTg=a5POg1k)X>4k{5o*oxYZ{Bh_IqUwHV-My;ql zayCZ!VR8h5oT*;Yf>Z2RVs213J*gLL`pc|ZS-k>Wu<9J60tz0{g$i_hV*hh*1IKvd zJGR=EFC-kPBXdii!P~dPyT$stNj`+U-K3Gt_rW4wm9rTc*CM(ms&e5J&~qCdgfegf z3PS^5*3wBf5CXf52ovCPdKuQ{Sa)QT$b85LrPN`c`7T94!r$tfO!!7C~P60Ghb%nNY=Ugi~ zrXc7b`ic^mS@H^{x{y848#FU|Yd#FP*z|ob7_lT@>gjJKCfNHYA#$W{P*^Y^@(!kgl) zaMMBUtu`9Ks;I$O0;2A97{O~Cz|i;5{-J7CQ>%2LTj4b>lG;Ac({3ZaBq_r>S)}M< zQWdMrrc-Lj9RMg3oYT%qOzVb0Mm_?QPpb6-BkECP(-4)mWEJ;JpiaN#@C1gs^~_g= zFc-IO_1jc~v}3J_6zkoczN|bZmYoz{F{+Z6>S0>`8n}d|B@={WGjFE(IWM{&s}f8_o_gcw;Yh{V7S512mqm9`Pn}aGvPCO+9&*JI4}*S-C{Dbn zZ6HND3ib|%c!_&h5yEyYDi7Kf`g7_5YS+%4XS8qV8hBOPghzJb(n>|;g*_+}`eLf3 zFRO$ldL&4Ef>XAwHUZ+)zDCY)SWfAEZ4aD7brr1&99)(SPtY0n_?``lcP)e;q_LlX zFasfcz!NJ2soBIz`tOejXlal+G@{6130tN`(s2Al+%B^-4p2g{#x_&nrO1TYTwPk0v}n7jG$gA+bd`0I}+ zt3F-DkIZa%(FHT$i)vQ1VC2H4mDZv59X|5jS$~Ch#1jw?`i?8TsO$HjDlk_U<>bOl z^0vqv(}RpZ*yx`YXckpWfoXV$oD5ep-l#x}d0uIF*#D%Xa=7z`3!WH${uYUiAnZg!1GCrf%Q>2mA!I-`b+?|wBE?$CP3sB*vH8TZHNO>24IE`voaexI ztvgTBE5u%{PzP_P?y8&sdkStfB_OIa1u<5^V zWKYX|q|7_sn7>yy^ehiciRQ&q{s>Kqhc{9}e_+ZLpt9Om_eR^?#Nw-$@|w--LccKV z-luKgFS~zt-M*wf&rCx8zfR#QRqpnxI!7l>VFp08CU*ChQe`!yL55B2axg;0o~WisxZd&KPjzi)$V<_%-0oSB7LaKsY9DGO)*&zunE}8mz8xa+32F8>>0OkeF=k@rPMW= zBa|K!Uuy%K{{6J(fHwKnXKz{bPNT>`^_iudKn7bgq-ORNjmD+TJlBBkv)=5G{P|}~ zppkO~xIZ(@@R;XS+ZFjV1F<&jC|8PEVVovv(}tGKP*r=CH&gb49%abnb>uF=nh8k= z9a}A#t;5i^hi*Ua7~4GEzRd~8<;nOrV%dYM(SOGip&tf4@@UBEn3X_`+lu)ST}<@u z3-lyOMqvx>U?&ImwP>6tuA_EHk^?q_*<>@Rjr$Ihu=egrlrrW@SZIZYlfAr+x>{{1 zX`Y4h1T`KwxYGP55GEjyy|drwH`-W_s*V%>uhvMx8X8#+2RjN}iG9Cuz!_SmM9c`c zU~av5FlyP-p0?>F_EPq!+pvee$WsC;`eF|WtZW@0rqAVW4~Q>9dDG`({feceWT9c{ z9?8ufBK_Lii&=Xy@}W2byYuVos0ZzeFT}qeN9_V=}Ji1q3<~z~MxWFF85}Tn^%}naLnU)p4Z-;FG5fI1c>;)oQvJ7yJXs*~%p$XhFmSO|@;oMm@3(dH9S8>s`v{dd9N&Uq&J81C7f^pBvE9c| zMSBeYl`!~>3oA8F7IJA2BiK_mJ{4;_beO)mk57Uj_gX3H5qWd)SQc|E%W37$CSMa_ zNA8^gly(2@+veI?_T&6GD}M{CDwJA^)H!o+X(o(q;(r6_9{ApC{vL_vxCua`~(-hl{i|kCel<2R87r8JkV$lDQN;>t`(Rhm5neYKM%>5y2lV{62@sX=r&dP47 zCNMJ}dLNcs&c9dbQh{Ul`J`tr^n#+LWUD*uT`AP0G5Kdc9yhe6g-I2m>>1#;Es6@FeS-=W zBh{UPSt!`p!Ji$XES*`{kbR>R4DJY<+`MY)%d+(vRh)YVpooft8}8F;l$;IZxY6>V zyB^DdO7?;hNIPT>yzhHTunYt4+mykn+kP+8dqokMi~8z|H?u}0l6+Uj4t8tqF?pCA z>(_gMVQ%Z`mvlIb&KGxQ7>Ki#=jobuEohU5%+lgIe@?pE$8z(^4#Mx&D)NMI?~_%S z>s%U@cEe7E+6n0=GG!fTB6edTo+jOO6n51*@ro&s&YO%`Hn|AhJtBnAb#{jm`Al>s zIK>Vvswrkg-a2kC&goFJVx08;=Gec zB85jt@X=ijYyIO7FI?uWkEfhfwGH6Ik8RNeQ@#TRAJp)J`x+XCrtTF1uA2zFw$b7- z?6RgT66ZKD+EtrcV4ADV6WB<-&8N^$cG9&~X+su|Nj{}Xwl=y$|FRHey|1+G7{?ku zaw&&iNR}EKbg0P8b!L{jC&jovJ8O&XCv#-355v@-&5>CiuCZwMHVqoqLhXct4VB5K z7Mh1S3MXiLBkuJ6QAmEhHqa?BzXbO5%}U<_eLE#l`ak8K5nZ8MXj5-smV=s=9!OAD zGZ*p*=RpAD6`%|>s6pmN7oTcinquS*SOX_!pISOtgV^A+WJIvY%0=P;@9#pq>u`0XHG8 zWsw;G1%3}O*>(tr*+dVKF>oDxh#kEP?mTkvt4*eH=Je-8# zW9)dF9&7(e1~}!`QF({ILAr53e=g6;Vv6P*6cGVb9A2A_YJ9E=C7-P3EiW&NDTKpB z=XRz8t!ZoUY!-GU7Fk_nL!J!esLUmJ(I}}%SlS8^oHC@|R*;b)R1D~&o5h^{^vTZA zu!1@u2^64oMT6TzA5(}J1Gav+kkmyU5deW+f(!f{1t+(GIV~Xe${bSywD&Fk1+1wH(FjvDD=$lA zSjj5KE;o4S5a>U^325r=BSYfCU}&srspqIwdN|fx*$RO9mx#?;u0(c1Fin}E?x!yU zJ8&w^oKm9j8fy@W>cy+-_A&4A2_R3SDvbgfvX>Gcj9^jh#-X~NPkHk^e;RC^`iv(U zHjnKBh2jk=-e4Sp)jgvkL)+^5iF%7bIM&u+4mZb~w-17J16HlANWux;-&Jk3p87zb zEkHpC?n%6@UnYIp$M{Wq*p_E!@R$>bn$m{i*6FydFN@(44Ju-V$5JPu!9^*)66d3D zlWBotVKi^(z)%hv70n{Fb}Y7f>z#LSB#nVQxy@%KW@5_&)c zO~J%O6>MyOed_`0!eRocwnnXmpMR0iME`B19MMuozcpIX2dy)$5G`kvSMxA}BhwyNRo3pjfAk z3*dtJ@^sRbFXrsCeT4dlkmAzFW%nGd-cnp!5LschAvBHOh_v5KUQri<8(l?UCNMtB z*wH)%`Q5E~O!EepG8%)FXQK2~-txSHj(BO_Ev%cHx^H}CV&2m=qG4kTZ05wrdDaH# zt~ObktXlv@2bq(m*rSPDb4q*mhuj(=AO_LD1N}@oK5=G#kyef(b*bUG`9i6goiX%Q zX)jRkUI3#AN_Kb2r+tj~_gy1!eZQlc-yQg-0bh>bv>b%bu(-An-6s@l8u5oN^48Q7 z}>9 z!bV{892}2?lLQ0=rnpe57R!&Uqw|Y6MK13fJCedTWDiV9a%M1SZP(CzAx7O}=E) z(c*&_Z%@p4btj}~4IQ+i6W~|~XSbNmfE%9`c8AWJdQ!Bl+o70~h+5N*75Gru;Et5#d}}#SrZr32_?nj?39AqFd%)>K?g}3_o_9$GKEjNdId%*wO=1-Jh$o9@ zPzevy6=TM=6{o$YK1~vnxZwkiZ<9o3dufPcCevPka)sRAVR$?4XP;&`#W2tVkr|8h z1An{^d|$hduMv9St226hvXb}ao_Xb?Ql`M-66}LGE@sa>Z{@`rF%9V|B6725Uem2h zbs?$4Xtf2AM7)Eo9HzE#A48((j_^6Ltsvdu(|D(uq6zPtmnKi3PkjzWlxqIMhfx{e zZI1{ak=Y;@B<9_%-rk@4d zKGg%;@qSN}#4}MQ_1!nCUn=Ywds>m1^e>f@Z+Spo`@G=!3Sv8w-SHy9hCTeH;`}#n^Xhz7 zd{cB+MNy##(PK#Xwy7^)k&n-t$3JG~?~h-6`}WoIEQoxx@(n>$=b{m(LNo#esiCLk z*;!`ZR&{fU@lUa_46bh1g|{dr{C8+4Q9b`Vz63PaU?@$IPqEya`c+fU+cm}Q4pKEx z1oy|y#BBxk!E)6E2OlZ3+X3Kk_PUsz4Kd;mnb{FyL|L7)5#58QnO8YHZYIyHTCAw1 zI2YiD0>L_Y^YF_B_4GVfV6K$GNh=x%)wKZ7_^R?h#9M}2IutdXqW8)_$c%%2{Exb< z@WNUJ!EYJ*5n95wpO6ZrEMSU>h`hiO-f#A%@OPq?2A{@8u&fR$2 zVpu`f;%P}`5T?n>p2GW#{(}R1_6+oaUYa{Q4Ax&c!6xLmdZ6=@x0aq5*Ecl@ubw9c zZWDW;Ws|L+07y=LD=)s~5aaskk|km1$bc0|!WJ0I$W&IJb*dpC$P@{%HlyU@p*Jg2h8vC4;mYkl}Gh$K1w03fHZi zuInvYBEfIjOaMv;%@-L+w*XrXt5WBUH=zaP2D#biG7HyUwg!n~MiOUfJ2I&+3x|+u zyH0+4&>?CaJ8o$s%r_iWhAicYEUK<-irF$_Ek7tHa)g^$R0IS9OZKKV=pu>zKuNdi z=R-L~+?T7uyhqfu3qnbSDdKI3laBZ))0zo7p~U*lVE0Z(<^L#p+ygrR%V{a9mK;N)?@$O zh9R?ra83Sa)zs$pr1C(GpdR}#I22D0R8edwQSezcO%_{)B=|{PeJGmF44cgSzyHtw z{eO*MU*dH%3JGrW=A!8GH}y|H4;xQ8J4p0Dul=9PfRyT)y*@BtR;t)qtjmsXd0>_@ z1F)_l!^-n`{yJgZT;5DTC<}Hts4dbr%<0m!1qdPWTUo(DEY3QzxaW{ivkwIl1gh8= zTnJ)+pH)-w!Q9{5+k2S9e;#18y9J@r!MA-8iu;#eIPq^H@sFJLQKWrbllE7U_9ssJ zV#twVj3J%;r`)Qef$Kb_|0Y%Bo9C8;Z(erU!z5PC4J5ut;u3{8H%YsUb> z2OOZ;)9v0Hg_pIfnSOz+!921*5*6N69O!{V3CBR&l=&s)wBe^%?>3uX*31WQ!xF-`j?5+k}e@%(cH_rB+8?Fz`6jbt3Z3ema zRFl4#`l`!6d|#h)jjpm`vZr^GZI8r7##Q1>7tH$~rJ8`~CeX(rZG}6DJW%g2QPk~2 zfNI9#+<3U-xb8jOAK%@TJXxn?Fz$}jz45(!_cLR=r{|Kl|Gs(kd=x!vJvhYqtcW{v ziZU!a$4Shf0xnpakz= zAp-LQ9L4ku+k4Dwl-$pIB4a25epXGlDf_IN9=TBWq6iJsD14#YRJ<(B-5 zpZdQBTaxPEZBr&Lnyl~I`h<-sd7va^=Z&~dp1qlP{MFCN-xTrqTY@wuM;vP4Qv~F1 zIKaQ{L_q%Ldv-q{>N~Dhf8TpAxSdHmuU2X)dYjRjzDT3N%01hah!1#em6}fS)7MV$ zdhjaFu(qFVZ6GGvy0&G!;-Z6c_&+BH@{BaXdKfXwvc({tk%m|gVRKD=19*mdTUWF4 zVT-jyS}g=>!hf1vXtNv$;(R?pQGRe_vFIg7b5Chg<@1h(JT}Q`4MpwlNLs-dVpqGj z8VxA3qmbN(FE!pYxXG!%s<=&r%}Y!)K2k?~&peg6GWja9;Eh%xHRN0l)D4NShk z3ii$8A7eHBXAU^%zcr5YQyuRwdJg~R+G3w$hGi3;=Iw?2`z6n@)Ze5{wun3PVQs0z z<5_vm7_69KAl`DfM27;$&X63mMfakt3h2?$ca8uC{2I?Vi<8TQ;|Q&;M)FdC($@A! znjGCxEFI*6S#z1Z8PCU$)`qA@k>1n7_O+9Zker@X;7_jg;&&Ty%2-%bm|Ak4+9=M)T6C_j%-IO9Q-Df$Ezz@7$(yw|0(HP4$K3qAP(wwSC&o4X}Q8C z{52+AjqNEp5OCnD^p?^hH|V!$Q%%W3 zK*6Ap)S&sfMWEq!x>Zwsd#z_Hixc@-TU;pPRC@AQxof#uOuD)mPR_i>tzFCu84*r; zH$-?^7Fku%*q%&E(UHs{Xn69w)>9_4XeDVfi&R@4IfWR05{qGE++!3ii#ale;7rDO z+m`1QV{br?)Rj{G0M1e5R`HX!FTmeF``@9DhvWA`ATp$x9^Z)U+Kva;V6Cc-pf-YQV{(&dwKh|YBCJ_L2@M8?c1Kc$f{$T4Zm)OUyGf&6n}rYoxkM{ zzX=$=Rp8jBGJ`#u6O$`;+i$FJ+d~;|W1!c0z3s{XX7`6axG!}P9aT{*Y2x5btT-2c|?H?=o0lGs|YLbxkkNT?)b)zUg=l;C`uDFuQD z!A$>2Ww&b~^4la^Krgdp^Tbo%CiP#!!wpga2-%I+`v>dp>wqL7MS4U_eKxCs%~2Wl z@eL>}mxK!0Q|BWY0axzYuSL4tzh7?=9T#6r`3H&in>bh@*K}8NNuf5WYx1g{fpcd1 zG}r^4-uryi)LIhW>3wV23T2#0DoEG$RN;OIu1%a0CvV}Mb_Xgxlyd>nH}-Y%0wT@M zM{mt2zke)w*kcw2@6hP5e1tv8TmvWzk@Cxp_T9 zAMwn*of9k*h`%xjYEjJR#Z+Zl<8oTcd|`WR|NEK^CNlH(6jsCjUQ;dWl)?(Rb1zWN z57ps-o-7*Bwydd+y{3ZN2-@Hqs)PK$k+!bu*aX@ND%#0=*cC#kSe!DN9bX=-5f!0^)9z^UzP%Zuh(+vi$mcA-4UP$? zd*P@Qp{}Wr1i-p7NE@vYvu>!)9;dj{mx3k*;?Fg83Zb>G(tXf1T9NCTDp@F=V(Z|WhXgOZg0T1GBQ9y=nhmaEXD`kXew zcNB3_?>Qyhq>~&4)1JA{hL!nco2Z97#F}lagp=4LlYfO)q|$~}^d(ajjeacuIFyL#_-Gfo6I0kXF+|k z9ld2o^oW<{uCz-x2l7|i{{(|i;+_&F6m4dJbwTIT(tg(ZsK-me#1R(xO7N zz`S!6-Zk&=0E((ZUms>X=`x%lzZ+0)trfQ?QE0uPl%%&rM66>D5(}ggM4i`P6Ot~@ z+@(pf)Wjuv$c~Ib(3z^Z?$VKGKyiA*5q?lBVR*^?)dA#`10ZqyI+of3tH4y#2XjCL z>`@|cgB2*#K#zyk31MjW*dq!9v1dwiV9L?R{5PVOCpvfvGQI7474tj*8O#lQp98Ks z1sx}ht=vy;JI||s&F8JTT%g!d1eT}34rS%zih0Zon5aOP%vM~~t!ti}u`n*<$yJeZ zgCH(`VLcD#W|^nQvvQU#3ZMH>%Fb`d6~U(4c_j|ur7c(CGyAIfrdzk5Q~!0-{nt(R zUpL)9{iZw1+wRrww;eY}R~*S7+WwpFQ|`Fk?xOs|`A<%}IxF}MrIYl1^;2dp%j)OM zT;|t56VTw#${&g)T?kTdZ0KnK7hiKsgP&D~@5fZ`>f(Ryx#+*bb;?HIEvkJugf?Hqi5sE{7Mu5!r zRwbf52JhF-+Me6XvlaE=R-e=jAQw5D$+7vq?sz1y=ovwJe*iGwSvkdBGw$sxE}Yhb z3%fdXPY2hXU*O@r(aB+CkDb2BSD(t~h~~=C|8iDF>jAE9H^CY4_5MbIXbHx?7@U!YZ1sGetOPM)_sx&&%+~1tB z;j*wNMlrk;P=g35NQ$L{pzGyJ9q^yAnYYto0yw_~ioG}uxiS<=L6ufaYMbbhk={}= zQeT|;dra`XlLqdxUynk*!yL#rcf4BtldZe>nUZ8x**{63+}ozjCRA>baGA6KFp>W# zy9ZUrfFI5<`xg9Crn)L0pr#jBhMqer#5eJQ;2{J530fA^ z6fg4-bWJ)}XvLH~B%$sDTNZ6os1o8|1xh_mgOkCvL&HF)E0Mf(uk=!o_ z!T#`3>U&LfhO%*S*@`J+rHq@nAiznu;Nl#}bpb;Z%F3cHH^g993dtFSaECZb!Ol#5 zb1d8Dedz6vZHIb-R{D;JBDNDfh1}`+_>s*A<$($TDWzf#o_9z_@?pu7BR&}+f zg&#HbfS+kWxKwHQ^wAx-l?a@M58h#LC`8Z667v6J?_IdtxUqE6zXH$cWswm@NzS9Y zsmNZo6Hk1PWBb_dPIA>+c8M%Wl~7fjs-i@;!vB8PegN1TK#`Q~^vs+)-D|~S;SFp6 z8~gEXy#RsSldMYR>ha9jVj`p?3xI42gi}Wzq9dj@gk<{sV}`f!=N_^)R|!V0r-d>l zCd09yry$zym=b^7fW*rQTHJgXt4@H+jzyHE`7o=iSzfox4<@t0$RQW1G0=we16K9H zfhPwc1m&!*xY@m+3I=yghBdbBb0PN=<+$zm(txz;&MWDyDD$2ZXj9F1Ip--0O%@+S zC$^r`yHSAL^vY{i=gB3kVtWj%UXIC$XlfyKFHTxRo#zn&bNni2n($HmGG9qF_~&5ZixAaA5OR;iy|cf7XtPf{PJW4C^k201xFR)?H! z=i{`K4vomhR8Tl-;#GEj@p-rC^tAgU$Wp zEeLCqa5i~EIlHL@F@oyvGu$ds1nZ9{ynX3vsGi(wNF~j{3fqr$EGpsg#EN$LG)sC= zYls-_Hz&uyix`N5Wnt};6$F}8GBvFXM+|be1vv`^Nw%>k?e$rbfdmFBftbf*5OwtUQhruoDEQ)3XPS@slbhnOtq927`ydl}=(}arn z_5>vQ;G*C(5ZcZ$ z{pi$)$Qg^^ZhSohwL0d0yo6~O93*zDK|wU}$tXoGgje!gG4rdy5GIxW^cgfUtR6XJ z8NQoJ@d?KDB$*jfZ1%4P!nnxlV<>cwRX)_5)#_sEs?Eq_{NTT+D&+H`!_bm#dDMjpv4vO%fg@HQh1z1z2Ra~T)eU#t>;YIR#y-?3 zznDD$sd&(b)59f2r-nF5Y6h)%pyj?r`Ez=vwwM|2wVi8P5UOW@uoq@620~H(BAWi? zGd2CoAbsrL1sdehT5OO{T4Jg}_N6KQncJ0nG=hM0ZIMmC-FObWu6fcFyjmyk25fun z0x9TwN3iL26okeS5T^)6P8^nm5TIdY1d!r!qO?qx9pEidC*sid9U|k_a2f+(*0Pa_ z!;Ej(-vRH4N14#f)eaG2cnII`X;zCVGef4EDiF(!@DBa$pd_{cL`Z>5CT98QV?Y@k zGa1;-;Fy>%56pEh@|Jez-5(en?VQ5N?d5e{)#h0?okHIl`x-7m*aL6k%K|kMvl`;U zk8?#on>nk`1Km(GbUWQ8sCX)7c{Z86fw|8oZ}Kr(>)jPKp{?G%dGZ1by5V0A1-W%h zax?%G$OpH{aA^Z`mNmKmby?NLKdZ9MrXIo8+z?CU@?b<<``fHm=1Eo)^GY}g*7EQN z?3fWTKv6GBu@2|Jx7y%{S#9e4BC97;2olI&s~WtBGB!*0FXSg#?bJ$8l50r&rJRJv z_^Gr^^^f(aLu+j(FY@+DRzJZqy|XNF)urN#!Bq2X+F67v$gL9&jU&&0v2UQ_#MLwa zZn4SXU#trLpvscBR$qkrg3xmViaQ5nH3KZ*wymxPh-D)z|Dk113U1p&E_2LX7l<|( z(oXoMFKDdp#>DL61^`t+s=o@-iE#u)A9sUTU+5Wr-}T?Mp&9q*#)cEu-C5`gZ7&wG zKHIqK`cikz^}_XCWzfc^w=};vu{_CCeihqU{#MLhaim80dtjA%R}k>+DqH9{hIm;$ zG6!Z9#-3DV67UHw92DLdM5|ZX;wSv?4~j~yHWL=V>$YLZ9X$geBV~9?%J!o$iY**m z9O^d-3;_5E!AuNs`YQV8fV*iQV~OlM(Utv!iu`1YoF$4_qOaUvK|9k#AzIst|Fx|s zoPjmrg4fOaZC-*w+LHj5JJ|hkrkzvi^3}b1ar7&5rLcY$MyvC5Rjk#gf)DmTKlZpfLK>%RT56ouMCB*WZpkXPC>MTBn zpCAlX70wqhCiZq;OO(~@MSdQT<~>#Y@4p*MtL|@0AY9zi$Qw&kZ8dvC7w6sTbp&oJ zh-xM(-nP$tq=nt~m2}jnKizKQe(!rK@k3FhM#H;>vdd{-Yw*RZ6`8wbt~ zsniP$;fz0F)G~H<&X)rx^AKG2mQ@AvA*7@2iR0B>M+0$F%C5O5S;sliSwTn4;E{q@ z6eE;Kihd;S>&=Ln5&PkC#0|PHwM1By!GJs4bPv4YG~K+<&_+FRF}8w-dOi=OMD>rcNwP_^-PNLTlUJK0@dt?H9II8mcdPSknU z(MPpwJ1gz#=~=R;tH4uql@#nF5fjV1mMwc@=TW!CVCQF9Dd$u0(T{rm3`Y5Grsw!)8?HFPI?JORrb)OS_qCNppkQ()ef z{FkkozL}rxLAI?xAPD^-h5hiw3Y#!b_)5TE;d?BbOkP&?RW`M6Z4z!kR)M^Rz9{gY zA*VrHD*X3`|4n#A73Db?I=!)F2PV5B|NJ^Xhp#aN8Q7{*Gw3_O`GyPg$m~&JhmGnz zg{eQPz_PQz4LG`T6T3Wwpsii^_ls+Rv>Xr{b8qALfy%e&GnJD9H8vVR?s48(GLehrru zd50Pb)vOcLj%@5FMy3pwXO+Z}zD1Uean4tk&2{{>GzPMP!JX6+-w@EyWPhkRA}N zXWLqNcK5;+gT{htrJO#N`HS#oJNb29R+Gt2Kcz&72fj@QRsZ_^4)sAdma~hywgxvj z*4cV>UI#O{LI2oUdX4t;W7`5Y^KQz{yS79vY&E7$F!af22P9+mXXRP}bBFR%NSJ*^ zoxwfo^ZuKa|C4C0YkI^BF85 zJVHL$@*hmEDXwPI{Bb>&;4jo&6k=NcD3Duzpyoed-d1FD#` z->=a@5Sv zo~$K9-d88>1$&5`>Tg7l@Rub0V4NK08UB3~H{OjND>n9>yF zX~>rw$Ye`M?M17;Gaad_jPV{sBb>JHCmt4KzpvL{iS9;Zhevg@4$rIl`)qvK>&d%KA`fo9)_fnr zSS>ZiC-dprOOZ#Ag_(q>BH^vwW6`L@2qG(e+TV*2wKYUzHBa1OCTL3M5wLEH&CQ@i z3ANPS3}(WXmf9&}rD8d|WlB@cW-fv{iRa=`PVn@Q=?F6I?R5m`n^az35#GLh1D+6V|J2JN(Kgn`1??rG6 z2f8w%&vXQukyUb~&poo0d<+H<&p-}C>{?(ZM9d#3!|*SZ*x>1Hmq0&qy{%)>JS)ng z%?GA4#8S#^5jONT!Iu80GXQVwpdPVI>uU>~l=?%M*LTR~nw9ZC?pVvy3Z8=tRax}S zolVg?*LhP-uXD=AtK2ZC4&4#iMb>KGh}Zp?|7cDyx8I0J2FH>pq~TD}6y(?z79*Bl zY}|Wc^ZrV*b@DbMtl6HXKOjtQZHP_1I>#J+Fc6tB49lmBQQ(dc@ z_UUCu*F4L~`RKv8w*&7g^=a3?AKfGqV#TgMFckEw&30@vf>#TDvvE1;*Tdt$k2%_# zdh%Rz$(;RutHJKrcZ5g)V zN<7J$97}cdPiE=GuNlnz2d;Do$^xr^gXKJ5K>Z<;}e^H4ecrHKlM`-;Hb?_H@9=|-a2ouRiY}oHStvE zFG{l0b>yl#;CU97uoqdhX8wNqA9=$z@&<1dcn6U~{8W!b4phEV;&4l-BJ5asMEh|> zGj&84x0gD=_87^R778MW>FyLXbe@!F^I|%A3)~LM7}U$w0>9C@$-K)H$7i|xH4@#e zm8VqG26-`jZJy-Q>c&Toqu)K*zrGVDQzAVBQqq*$#mI`ZN9u}Sv1CHQp(CQ63!0L^ z&fDEhg9Rm_@?4d_`s5)CN`HlzECQJ9$owkmMq?A2DjK}gPl-u9`So-l=Ahpt7mWlf z0lw_W+^$xg5hylZqE z2%~)6%3?ihmKD+=><47?3yKkY@;0Mqf@inaNvQczjKwaC$s{jjZY17$*<2RqEmh5c z%$=)=MY-B52UWi3>Eb^ZGsx>{gN=1m>Tp{07QvdliuKK;R*a<8fNR;H* z{=NoZck8Qtts+kv*6<&a0d%*upO#Y3Cm0Qv;$rky1Aw-=rf~|uoA-c z#834=^kv|ymM4gvEV(|%$D*9uLOg*%Mpx<4R%+AK$r!0I-aY=?HU@b6`{v!N?_Q0- zjL}#YeE7H?Tfcy!Y}!1VI1ZH@37mPC*Z^$O4#Ar=IQ_!Lomxl>@}>Q{lwT!yi~S`x zLIm4s?OIf`%KEc*-owHM+&e0w@go8b`&^V6lx*A!)EKKve7 zqK3*e5-0zGuQpduOBx5EuqmoVLxXr5SM~6UN?B7$$Pg5Do5B}zpFTz-_}}-j-!1n` zK4kHcP4b?^J2p~HB$XljMtQO%$-bzv-zlz{G^m6t&Eh5J~Hyj7MK^f-ghjF(k{dP z@#&LA=E$Z=n%6_<-EHoRy`C*=uxmOgDDI8Tge=Jx+ z7f#wiX|WQkD%NRuQo9$+^@CeZ`LWTo70nOsqj0d<jDjq6F8veG7fDl~c z-xYMYf;kj97r7pg0*^@~4%ZyKeC&fqhUu`5CGbYxFx-L-jr#Fk*IHe{V1Y{>fnLu` z|F=I$pYpdmFksr4bRg`v2i`wtgYjO>lyxyuot{A80*cOcg#J#(_lPy9HkqTsn8!GZ zSqvd7cZ3bDQOWHIxn8Xet*caDHhXAGGzQg^OiyX0xSQD-#i$>%BP&Z(@#l)QhTLFi z+kL026i9{S^#PsOs~T$aA_|^l5T1EiK^RD9?5cnT!-cZ&iq$i>khj{g3kS>twMdd; zT?SaIvyApMj?TdaJYgwh${uCk?lv!%l}zNytaD;exmwk z$pL3S68vl$fvaKNC_LhaA49;~bS@R7{L&TQn2v*$v*C+`i0&nXGQ^_HU&J=hDG%-~ zeJ$6;!HR{7ueEbShmT2+YYPtxDM$y!i}n= zr8?S}FV!?l_{9?4v%aC-@p5iqWFuE-6$bHsA>Fw;V?lQh&n-tZI*Aw|3OGwrjL8_3 zN;R*r4dN})wU;67=l|Ih|1~!SE>2fn|NS=w56|z7<%Uhc1%kb?{HRTFzAb+xZXtC$ zrI{-k^l=joK-@dz@j!XzO2^Cfdj%1MZUg>Y^53_JCDYVnwKvMDeG4K$x7m?{ z;|-obdD#wO#B&fzJEXMX6r}Z*BB-GR0$RHj?RhQkEpyJ`%*SimLPE3 zEkWQNbl*k!G41Q{j4zm|<#9~sj#95G2L%0M+_;sIa)NCP_+}_nq4?>7Ib-z7#uYlFWkEjTp0AgcWbrjfIvvEX)%ju!y#qT>_VpC z5vK9Zi?YX)k6D8Uk%S-57Cl@m%%>i*0StLj_AGKW<_#W}n!LwtFQfyATgeEOjB_hm z3(&7tF(BglEj(LeHzLbg4vP<^b%B|k%pfZ7?=^q@N128QhZTNY>hTHVrMNuLE z(F8(aPl{$dZyIC=K(GgfM(5RZTHS#A6Kaiyzc!|5nt9%gNORQWxw&lHSu@(-zbM+v z`Ppz>UF{=@{@U!@Li9TDb+`9R8w3uL8#LV!HYB+@ z0XQS&2RK9cl%2PE&GJDG^=HL{@3Z>C+oOi!eZ~Z&%&2U$8aEE1*w+!=rMYnhNzM5XS3 zSGU4(VU^{mQ_0y^Krn2KUZ{_-o}-itqjhmpxoK_X7Ya9s6C#WeEIDD5j~7Lwv2Vym z9t&NgnSn~i4hV3W6rYA=|3t*71@nHo*z8b>`b8aEkwxqwtV5pP;|u`WE?mc*!-(c% z6Y*{E z)z0P+U7tV_f9QJ4CFlZ!*nS-Xg1y6%$Q4<)72R+k(@-9B+G@QM*h0i+TeGa&t?J$9 z!j9ddJUiqucV5xEc;KU|K@Uf%?pZeTNUF0Pd~_l*nN8Dt&|O2BO|xY+PdC6x8$*^2 ze7Lw5`2|WHYQ%1TmoM78#xsLy5HZ#8RluR(02&egrjJ&)Z;?LR>ElT@1LR)#0x=5f zVv<7_zQZsuMMbsoQ$9{;t7jFXBDU4*Yy!~7_)8cPz)$V9sY4pCwIj%;#YOoR9;IYP z04Vl9!@m^(>m!anSzD}`vwYFk9WmfOD)!qNi^mwV1c?9pYoIQ+xWpgssX$vArEZJ2 z#Xn(N_oiT-14{mZIj_nVK6`XD!~{L77C%^IZJPz&oC_P%(0*JYgdJBW1Rn0&aNdw* zJBkqd9&p_^AYR7&QS{4MLc6AY)gDpZg|3u!{Y2r~bXBWVEEbnJ=$u7$Z}Y1k@*o_C znifj+A#slU)I;Is`~R4u(HP=|;aq19nhk-%)Gx=_KX?9MXZjOnDnu&&EuT$f0Z&`M z3q~JFO@*+(H5kD&E0;&!jSqjZiz)uS0x**Dytoh{?iF4rYjH?195 zuv=46HOQjXxb#6K@&Q4C9+VlbU@Fyesqr4EEKDeBM1lBP(u}XRLlmxwNYA9Ml4x5u zECutL%0;~iO{$vEz?0S9nnBFpAtuD}srA_a9G zx?(?F=Hv{_-6$IDh3f)LbzbL)&0bdKVxHAm+2(oU+u=dFDk1B*s^LvBUBVEqvKBD& znhLIO>s)-66;p`%0k4@nt0_|DtZGnVFcfcI_pYTbtvzYn_CGk_hO*Cj}C;ThC*A4td4F9qF}^ zd}=7Ayo#x;)Vt?2M$v2ZsgC2pcOL%fb04Szg`5C$4OirTySEdsi6uhEApqW+oXUQZ zV{+ASKuTE;lbEQ8dneB>`7E&vy5r72ZbkG#h%zM4A$hzK+HNCrJ0nTMDjk&RvS`ov zX|d+PVb3(2y6T)BFsN;*&g}t*)eH^Yqvod0W~M6J%3RH-Z84kXggjwx_*~?pudOO` zm6c04xz39g6rEL>hvqSkCy%-GlY_u)t|% zP#wlqM`v|1VE_yE8w#Z7hHDT1k-SC3RBkbM$7=F4&8{M^JTY_f*tx^8`hN4-@`FD7 z{)ofHIqrxTdg9R@z3g_p-6ipXz)@eGRxZy$GW7?^4rxoLuuL^o z**;-|-wHC*Ov*T$g4bW0Luuqy{Q8PT$MuxW$h8+#$`RA6%CsO2Hy0J0&fo+{tDz5u zhXeo{P0p@9ef2RQRxUmXnD~#Q?~&) z$^?XaA3%%pVa?%&CtEx}XiI$evyKBWffKCaO5@pZa_DHuTw}tLJfgF;*St6~*V2|d zSN>3HiqCG}I4^rP`E}m3_Kei>p?m7#9lzVcC)uYyiu8Fsax^2a0#rKjF(Yq;fvMYR z`dX;l=?|zeqW6{8to7=4I`BfQf#B(-Isf{XlIOVmmJ)}v){^zO`(AM72xuV1WP2g! zc~Vz5r@~jlo5k}st_yiaWr}lN0gn zDsoDlfLxG!>ed@SJge##EiN^GBpcTLz?Qnv8{VJ2GCk4ks>_mB-opMHvEXZFam`Q% zN|d=5u_`CyYI@4g$d4rw9xZeoXk}bY10tb8`D}_v{`I5lq8t$I%sOae_c%qcA5Tak z`x<&;dgkQIE;3%lLTP>Igzz)+aQ2!JFcxX6*^ZMGq_fa$?;M3OnPUY(_xaCUG^)w0 z#!NZMdT((XZCQ!@-cyU>bISi)Psw@-haQ3!-i{DLY#{I4fp{T>vRzR@aOXI|+=^k$ zRBo2mTF)Y9)iRcGg*V(wgpIcGa{4H#rn@l%^Mkv}JukEA`7@tWKKu0>rV-9gq`gJ6 zp>`@GVuSJ;&1XQsJ)fneA%5$*uRW5G^tTd`NRxT@;2M5?w7uXolHLlti;olJ?(e(U zpLTCRX1UDjN_IzMj^vSfWdKI_07#5MgtRZ(uN12PSO#@oD3^u`(f*uOQbL0eb9 z<(p?ul8Iq-g2+kH)r`c1Jui+ zZA`wHfoYu8vvDo9B&e}+i&}(HWH07*4yH1QjfoL+s~IweePwRUJM@*aCeds)0}=U6 z^#wgX-~OLB?;gNOsVwKcP1Z^deYLh- z-i3CHQzR9NjRIi_MLol&y2^XkAdS4nXUIW6c!k8~x{RBmLnH$dD$l||rvUaT&2o@% zGYX9v-K$^}*)_&n+>b(KS*aIGL}kKX(e>B$&m{Pa-~ps(9gV$Z4(q){lur{HH&5q# zFZs4w=@UN0$5{oe5%d7mJX^9V-mbbANQ;q;8yF}HS|uTJgJVa@nWd*yTNl6O?PU!H zg6d=>pnn-7-m;LRBwrcy1V8qpc?P(Pj~r|NoIETG?j$#Wr4qyb=fAmTI+#nun*3)!(w6}R2L$m%QI zlu<+e1hKL>jzn8&$+C>&W`_;8ir8ZhHM-q$?$l=wbHob{DyEfzd6f=l0G3r?6wA4D@yRNKofUtUn*1bvq68 z$lyzd!iQ|!g4+o0T?xa7$A})?n*OidMUE(Tk4>kJz*8Q$FgWWacgT=)A4!>ZLT6T% z#l4VMffr3Bcb?pu?uGoqwaMIryc%>1{q8~BrdvsLW0f!;iJjCoUWaL!Z`J1GHlGNo zuaGBd$!`_gY{$HoHydq+_#w`sg{!VqLb!@)>}!W5_-|2&XEz9A5F8VvsC0B3R& z8%JL=3}#?K?NP+hV0y_$(8zyJI5=2jfa4}uqFQ+05asc(ty+11-~0$r!Pvw;BiJ;R zx7Nlff{_rUuoxX0K02rc-w!8F7!HSlR@Pq$OQSWfovU;dAOr=0U+;Z3$>jC&nZ~<5vY@35thyztR<%EjHVVzIrP-;}-#0I-8=A_S-27JJ4<@mE za)H*h@S!NnycTx01G@uA#!u|KtMg|wuBv)clpu?BP(id#!6LADDy9~Do>*F8)=yH& zC+dk}uVmL~|8CkN{c!SUqEhe$uc9@%_-^rsrPerw5)xmN7my5m@jF<9r)WmspYncG zs^EX|Jt>vm;XP>{iMbOD{jR=4SnEDwql~R42*CXuqx85%IhI12D^TbE1UAT2pY0;h z*do4wYv=I{{{v`8pMBYJ7zB62+Z?&d8*9}*$B>&~%WgNZ_3=e(4|i5yrfp-j&4`S6 za5+o`Jz!f2(n(G)30OxzF!dBrW}XD`11@&@MO=w|DMk~+IdN+I-@Xbym4g>6@C9~$ zveL#tQ>qkUP$5Jq5-vzfMAfmXgNY<)>xZm_@QfMWOwh9O8~4BiD+BUt+D1+j&Rle-rfy}^I?pCcbkwf%Y1S6k zx#tp#(iE+Z{33n9>ADJcRt{iw`EaS3V(KNCt6Wv{CI_rev}=h{s(HH;8KyX!$m7^8 zJ&@lt*;URx^q>PhTfsmMLgNCtHtydy_iQct9S8oOcz0Lji#!A9{S(A*w{=6`PQ8Up z^fFJm)a#MR4#|95_2~yFKz$NrySo)UYvs&{1rQB9ofhNYwrgOOMkD-ADIkSI0GMO2fvp9y1^g_~xOPhU>-YIeNn%Uj7rlB~+ z&9EX9QQXI1xr2ZxO>=jV^F*_!dekuicM>Ft9fzyoMOeWIABA7+N?UG?dl<;VzL3>M zeHOQ!xa$}S^W5}$U3W|JX1RagsPmF>y4;!GUl$wDp|!cw5bN^|jp19W@%e0LL(O(- z7y)Iq7X6c^*`j}X2IU!8Y~>AvCGTX0nQa;|E)Lg$ki=Vo6!L4*Ld&_I;O4_-9k&Re zBe2T6*FDB4w6}!C@giiFdF?<;r;OHRdl2N$CMdL4nKkZN(^fM|_eT~Nu8~4Sc{vUj z2PvQCZLX43{a{lvhn-9Ya)_BmxT~gVb7c5)ZqeA$p*;_J+c&@w)^l6ayUU_6c?pLZ zJMkCiQXb-1vhihBUgVAGT^AW}p)@`0s?+D%M9a;x0q&vB8?c#b=+TdL4DsD@2SnaK zfBoRk9!&2J5VJ{g`PlWx&jRvCGRIj=&%-LFF0;a*L8hc6DkiUIkhN zeBd`+C772{oOp;mfG-das&MDo{N}IU{Ket+%E`RT$l%I;wLn0s0tft$ zXDNTYVXv#hgM)*Ccn@VB#E-;jpm(y5H8cRAgT9vs93LGQkuNpDk;!{dVwMGum2u&+ zDqt(dZ!fyyrRpa@0VXjjlxm2k!ZtH9lud^^s2Dbv)y;Nw$?z`zLE$EsFIW}dlP_8K z%^m~n0_JB2V`ZV|05Fe;>5epKivBqq>>~4 zu_iaK#)z(r!kIS~bnu_&HFi0(8R5GqZY`xpW}MCNXvG2k>Lh)0G%+qH8vWVaUz-Mcx3JoY&o5a zK^~@R*B%b=X*P>(uZ^Q)of)m#(;122d#!Y}TdKI%P~6tSjS8Wurxf{5I63X*MoRRZwRCSZG!e4dC-CXBT zx$y~ipJSmUx1+cy%`(~TyJJ5D99lE3i&COBM+ugbIBb$`2)EHUBNRvc0Ww2R|Rzb+#Nh z`5tM$Ac4Ge*0lwF4uRWAx8U*S&BtN6+X^)heg_JE(zQ*}EHnwb<7!-sXv6cS`$ z-cJEA=z=od4PeWc^JD_Oof$0t~17V+hf@1em?WvHwgc z_}flRgG2%W&bS%IE$Asxnt5_!6M>+rtSSuIx18<=c<1^E$i8 z31xgX&Bi$iHQTBJtU$x2Wf^C4f>XAnuv>%P{6Z+s1<*MukbvPQ)?-8pb{*nYB6>j- zth^Lvgp0T6NDLSH+q@N`I&u-v&|egl>mU(33#+xtZD-Me1|E4Cns(5P=2M#=LbC82 zC`nU}i2M0;c$qc0NqYUnJA78bisaKF&-QDcUFB{D!vuB#Y_f(*goHN6@O3FZ?(R~& zr!JEWv~;rpwrCJw16qTWVovcq{5mk6?W8Jqz=jo!3PBcgT}*PgwhkDVo^+Fd*lS*9 zFGajWnsy6Uh$BIr<8k0^w{Gp(FwPR{u{jwIhfvjNLMIAOI(Wgkrb3iH*CcpBa-ELD z1OG>}Pt@X_*n}Y5ZJU43TfI-*#wha)&Rl0N2s_k%Yb)9`*Ba8mZ5qx;n`S`yEKPit zJp_VORjYHYvAag6E~V9OQGUmFfjKrW=T~QWJ$(J@?ellf|Ni~^=P#cFlDhvTgEaW`3s_W(3_U?G;n+JU`uX)@r|piEh{Le&j5y{eyLJw2!g8L)YCDb(HS zgLP~{-p?j!`$DJ&gH|{Bka}qIxmm%|5Xr8s;C4s+x?u(pt#l_kEWEL5#Jmgg#i3>( zt5t4W4(SahHFi$U4Vg$ZrkPD4_{kFPOqNG`W4kX_kdLkG&;cEmA}lhbGBr1GOI80) z|D2qzxMXo|3xG9O12ntG{Q}VtaC&dC2sO~_gXHJ3no#X_`IwP$tBHAEQoT*DY3tBv zfyPQ!0&EvTqO4lRqNJA5a-nH!5;wg%@9q5KALUNpJT!ZUp*)(Iz6_vE z(sClg6-B5K!hRHpJuWA7A2^j<9JxtG1C;{!SyngsWE52U8ozRVR%M#qj8e*#6FG`g z{Cq-^ekY#bSOVC|5e>!4GpKCXK2K7wFS4;bmFPj0el9)3`l(rhtdv9HYg!~E3MbOE0hwEzZNPx)m+QZEr1Sk^2v(w8_Vj05t)rnGtCo6qU< z&Jx}Q4hm2D762RP5cp@xU%;i`2zX{T?V$Fna|}B`So5q6h9231%MHlji=@8>JP_djyJ3X@Q{FdU7)6_JXW1CBoNOVL`Xhz{dV+2f z+6FJ40M}p8@>G*0uOtLdgn z3B5Bpgh*to427IdSGLNWnmzqOtiAPKW(I?6*z0V_>I&KOzCZJDhq%#;iXDM;)hiAc z_nZihmj3!?*KSOjmI<-*nsk zOBcs?Jia(5j&hrfIBltnD=~3za`XU0GqsA~Y7*qinV%uuCzn_3sICRJoJ?v7L*OWG z@bP3~?_1Y1l=kr*EM2B8>#AZN#f}gYcr9NQW&R6!eKO-tuDp_QU%EOVJiM2o!J)J? z-`WER{RZ?i36)g5mVVU>&QP)w#T&@Haawt8cFbDg+F9!QQsVHcCwhCPOtp@w1`}HDv>{BygW?r_N#ZLuJgOyMWpw8{+`S;4Q%% zOSy0{e*Bs{3KVm|scx*U+ya1Hd+bD6J48V9$gao8PGCr_Sn|eUI7T&#s6(pM!(%a4 zw;<^%WXpbFcP8UR&3?Kw3pS6!nio;ci@4@(NS~j~^h>>%-8|sr{oJEs3%O%3 z{B?4_r1!O7TeHXX7}4CijR2*3HyVmm9;Sgu^V^lLWwss+#PNJOL5t8>(RX;%JQ8ditinp5KTT&kIdc^ zmr^ue%gsAyT8+sc#qS#DnR3Ru)d}cR{az}{qAg^o7<5B{lCmPG#abyxjiMU1}wErMY~IzWy5aR@={7N1VW>*=pgmZ z%^sW(yxY??tT{7uKd=t>&T=#F=eutgDzz8a9$>q=VzrWQEU;Ekb@EsrNvjh;PB<7y z4$AD&iBIg5J+5`3r6}aMQ3+d_Be0bxiEY+8|*Ex-y6b~fift*RmM$trf&Bn@5D z(!JO<_{ceTHADNcXaDG<(~B>@@-|2o8Q-QlL!^E4xV}KA!I9~y8AN?W-KeYe0 zG+01iBftz07$xEFA)0C7Hs^KQNd%&xUfPAlc7fa7*-2q9VqVPCSrewF%8G$9bf{|? zwM<~a;j*Nvr#U&%rB07Fz{&7H$V3+p8ciE_BrG_5wksPIMTMfENgR(X5rqu;v=w&Y z>Rbc7yt`&+WOn=s&mhB6m54s{ovA5nA*x#KjSi~vV+<*YyLXKJONGNDdx7K4U1Ojg zVWUfNH2SI5uJxEgk`wg91Ujwi`F#J2674ryUUs+Q2U zM))F)gk&~$Pzv0{MCK0vF%=#|*Q|p9c&Du}pYr<(eY;Yb1FtXbxMU6PSK$hR9)MPH zZ7eWgNS->FIZ@ub|NXZm1L=6?1Di$8X5P)rW(pk5R^jQYPr0p6SEs%B*n^p*?&5eo z4?kcNGMh6eV-EFsc@5sa&LbTyk190ZH#bFl>G&t)S?h~AS~HW8)AMs*&e}VDa9*Jw z5Rt-1cP+4`iF4(!MTg3M=S@DY>dCjiU8 zY@CyOz>rH0h0Q%>-DhvLwipKn`Qn!}(x~U-wyJyNH08$J%x8Hm;>PgdmW_*6+Po7k zT874AGFCTzSJtZL*n2vwTx6)-kvPuAm-$4v`E+HJ8$9aCpR$b={K;<6j&wYK=^b=l zTqw*3#b&u28vT!g?qzL8hP+*^SpT+UqURzzbF4{or({92#Ao7+0MjQj#Nj_o2YxDUY zMA@vih{VQVY8Sd=1~i`__N}*W=g!*-Ahyn%YI>dfWV}Ww6ZA?wDkw322hsPm z!-zc?{3+4Fd@260$y+Py!S5ITcR%9Z#0(Gf63AkLk`?7!?v6M}iau)4eRUjyDXy44 zKMuxg6VD>VPopV>UWke6TyhRHc3$WCKl7e%xZh#OAM|*;=mT>0Qe3$svEP5UHb}jY z_L2fTKN)I;2pV9JxO)1E0|0wflpc+(8)Dk6`F8AiD!G}IIhz+wfqZByW@$$h+OeIs zg1)1aWA&Exwwr78@{;YV^<`3Z3xNUJA&Fbweo*pTw&T$vTrneVqitWh{m62DVEumR zDTX-$s(IqB`rzdf(ht|sCFOQ1|}idKs9b16p>T4A*pZC-SydR>8GYEjol54Q^ykPJ>`#P4EpD4ZejT#vI(wxSHYBvXx-n71q8&p?#VroHYwa zt-IC2$8)r8`kR_%a^0q#X}X0C4X}~i-G}8x0_jnC!41<2c``Xmz@tP29LA{S0s;NH zz4M>4=Nx~&^_D|OG_na`-W}LWDbny7GXCwtl3e61efp#g8{bdQ>?7h%7ZjCB4?GBq zez)q+x2;%C(%r7B4SoNNmln135x39z#}*U=+~VHa5b6T?E1Z{Jn#!CQK}r?WDk12T zWVP{0t+MD>lACLhsNYAa9O`A{mkahkzo@lWzoaE7|)|28i z8Eob``BTlCyap&laHyY{%n(kKvxY|uJqU{2R^TL9oG&8}zDB(Q$VeY6>F9c(>g3G5 zUg$xHzN2_~>uS>(S#*1ckpd1CSV(-@P~kH`0&Y22XjGsDgtcJGnxTAW%>^0A7HLVu z5V<28w1!PdTtpGOB6bwf!o`$hV90F0yQiK+;m8XIp&ZBQ>ZaD7|etDY&+UH?iuv2FEqp;%iyoqc9*V zD=3tjU$f@svIcJ~f1I*`4@7okj~lcaR(YoF zcxgzT#=Svh%Ffrf9ub^V8o2C3=N}-lE#quUo6S8gJGQ9Xpoaq$r92qlaG_(AhsjHk z%q}I~##5wSGPa&DLP({LV7;r z8-Pe!ls!sdzVJ06Mb4nhtV)RGofnkSVwbt7`8n`8}vq*XN(V?E954zZ4(B}^Ms zyEwEycyA^47{4E25^-xZ#zrxHXk0KuvpfVWqsjs$Kn8I(LW|1>k)=GReo3i&iPShI zf$hC@NKA}kw|f+C$j={#0U-wW9&%@481rBlZ8eL>u(x&$sS%2hZ;LOnhaJdCTP)oJ zH~3BN4n5bAe#-iFtxtw($eP=4a)a1%`5rh~3*Kv~Sz7B{<{vsCu>Rqm-;CI!G zR~~&U_Z}LKIgcy9kSh-v0+L&FEj_Ji$I?gRw_S(emSK!{JBBs%OW+qg434?{(8Xa6 zhoL+p{5W>kj$C6x^-!LYUbbbv-Dve`9EonuT16plA45X8{oy zf`?Hb2By#kzu~)Xi{R^Ib?D-+FT&vKj=5~nMn!qwNRFOH^;rAi$algP!H?sr1WUd) z=&@tjwnhtbxp^*y{eb)&j6eoUR@tA5c*)yEOil!`?TBD&8%BH$tnZ{a9f%oR^k8-R z16ZU0RY0o0r41<@MjCd$lx{tj4)&%aDzTjdyf9(TIT`V<9kz{vRV>V|ImB}=B1YM2 zClC&V3J;rper{f54ajjP6LW=`f#U^mb>EFO_={Ug-;q&2}IzK0nU^fu+Z3?l65KiLHd%hq62#lPGr5MF8cpu>|;1<;hY3D%&nTZZepoCXW zekWaJ*z}#4hobByK+mvq0}6{on#XZbj{)D;a+4yShO`q8C?Fl2#9NGq*%Kj3l*_*tb91KYr=!VSiU=H-6aN9ruTs^knJmw9Kx3Sw6bc zDdrQ|N9c|0$5h~0+1LQRsQ*ks0@iFe9J0U>y_K4-GT>I(kp>P}hy5dKB|9+JU)f9Q zoHZw(G{sGhQDwm`C+-1!g$|sYYK|$0W0q)0r2hW9a)h)SBjddQ5eq(LLy%fze%FnD z6viMd*H>U~q1V%SBP%@Y`%2B8WQJrIF^;(u3RI$L(`W|vdeJnbat;9otalB%$7@!v zL`>dUeo>SVIzt0q-~CW9CJx6zTTO9eixIDf3Q)D=&}6@;uQwwfpId&v9Ql(~CD^-C z&VtCWN)0g@H|>&MKYTbo2P!blf6TKw@1ChGPNH=azwI0nNv7uz*x{~u1S;&D%P8>^ z=QDo0WAp)tvx7VP6Y0$sf|=?uQCTuFDK06w&>vI!^HYNx2QRE#O1*e`x%%q@JutAG zj~D3W)v}W*Www0^2%!V&^)|>H5W6=mixxnagyYHYb_F#kMi(ps!)Sc^^8;iX5e8{D zfGEnGA#V%}_!(s#Y(`g1r_j`^^LL~;O2c9XuX9L?U*=|4b=yDGgR!e8x_v4Kd8m+t z{q&fcashBfpH=l!X75Rdlaji)+~KN_n|*8PaA2$KHs43#W9bEkf!muFzvX0XM!^;GNj{NmV6?yz z{#tQ;q+-5{KeFso)~m#%BW`p-qG6S6X`!Ab#HWd>$BF!C3T+1L-5$oIa0Z6;+~`j7z`{qPiUfYxAhE7VLsC!9gWE@bqx!aKX zxDcPDN==Hw18_er$m`b1Qj}}6*k5`dchhF|1w?qf0fZlmqvB$nW{7c#c_FlYRjpC* zlGUa&pOGoHTkarX z89yI4Taa&IL#{Gf@EC929p-T0Gs4I_%;QjIW?_KS7;0t~MmfEU{WVNX|7erl2ZBU- zx3NM+Q6uOuIDz4H+Fn`(w*=%mtEy?9l`HeEo~O&#d1>{LeB|7qC>g#+s2lh0NspUQ zzzbr4&*xDDk1&r+6|^h-gZN{F?vggXUw@tkGD&fjNt+6GB=BVCR2tTeK+v1S#B&?6 zmDMdq_E9L}2ov##qEgTse1CYj|NZ15$G9aBuGFAt=Q^*Krn!QMX*44R`u$d>DYKai zQDelEqU0qz1CE<#@LO}3?|o?=nFBL2;bh+#nVKv<>v?;*+{cK*O9tzN_gH>4YnLJ( zpljeVYb01p*(wV}3x5k(q*{_0r6j(Eq1IeNC0(-)Wz)yg z*=2?=3q7-5R_BlBh|Ajg!6&Mi$RG;CR*4U6ysjqd zXNPI2F8jnurQ`^c`k_F%j|&wQ?Gg%!!mP{sn5hV3EOj%3fZGsqdqt^3UlOb5PG}7E zyP}A{U~S~ep_~y}MXE4Wk3~sRVO^UvSdwK!(c&WQ-~V>&?lTBvMxD=8^L{K`mxM6g zN4IY?%ZeIcGF5GatGUuK#Le4f*5Gytr4OT>i9T6sN9G;dCRAiZz^te`!8FWEAHuv6J zV*LI;=GnC8*Ty>5>XMcop1K-n0fX;7`;v&>5V0TJ@4tt&MlN>&Eoe{32r^Us4)PWk zWmV^I&^zw?>zqBl>v>S8y*u*ttS>Kh8IMpM@v4|tgy|!nSDOm>ZB3}eTRE~ zd~xIhBX?I~ZWMF((Tbs-3rW}~Fd8<~$o!>=c$~=RM6(g7n zFioZxj7SNZO19Fy$|kup?5*atuL?3=X4knpHF64(RLw6gUA-7F33~>e#mGni{h2k4 zaWwp-Lqtu?oBS%jI?HSH0WdV3P5N|W!utL9=$x}v`xWUY4kFp?t8%(z`eqRnZ=E-YbRujMR>G?qj1+L7#gMJ%CQ>XLAiIQmJgxSDd<2gHpPD!yO~R!mZZZ& zdvbnwqm=G4k60so$9$F}^*KmfGh{qL@q2Q*lKXnkysq=>qMA3;W!Q=T;%9SWV0*kD z;vvM+&yPBxwvj-nTRtBGU^q#+uc~>ISMyZV40o6+SNVIXrrBM$CDgA8y~%!3LDr*2Tp|Ugr~b(BO04-Z))s zn-opDLYG;S;N8|-zY($_2yz)d;TN}vNrm^PAo}D%G!0i5kTSA#z%%w(u1qp7~Yxh-OKBph$<$=!|^jv2KKxxoEG7IR$n9#A_Z|v z`4(;-OHc$d&F%GWwOS$o_Tc7;)%u%5quS5|)m~RWh6zCPRNFOJN&TxE#rggYrQ;%S zW*}j<5sYo+>WC3R*KFHLMjt8HU}T!RQgT+!NBIGlRa=}dUr*;3McMQ$#x#|L0qhLS z?Ql4xc^hZtIG+OZH^RpfNH#3RZ&0`ecvr)To17si5TxKO)i1(aR^5Uwbx%G$^(?F+ zWZh=5J@laCb{zYJeA5SFoIVW9O%89J`4sr7Y&wUR3%cVWf@@KV0IkhXuhhKBpFsw} z6GI1w)Y4JBMt08RBNj_wCkIi5G~l7+QTl;D1x+t2kF&FipKEmZq6VR8BUKUIa8R{> z$tV%UDzO@Tf;A)C1AaXa1u^GupAREb&ZkrUXyz2_mSE8U+3rNDgmsrMnc2GdYqlJYC5qQSF!+`X^ou2OXL+kGT+D~jw#K) z$=>!d)g@sX=^L}}S4^f481 zO%ZH=M`ht|+H%fjLoCB&Uh}7~4h{z1j<~@Vck-;sU(MV9GtcTaTqJJ-BI+yWAh?iU zTo_VH+8Lw(7Dwh}XR$LdJAiY&gIZDegLI(q7jZ!DuU~e&M0hpuh+>TTCK`7`0gItb zHSfp%;NT!Uc^n}z1nMY?^prT8-hd;QAH3glJ78zJlh_X`L7XM@T{qE;>tfbcVs_ut zC%Q*_5Q+u~5o6MzCk4IH&=|{qw1Bh0XM1$o-n_?G71fOwb37$(o>fO==I&}%YpC+Q zbsy#;TM(Wovg0!BB(4#%cL)0l@OH#|A)8K@d@C1T;_$&e{=wJZ-adE*`-0@d{TAS1 zk%&e4ol^=2_iuxLE3S|Se>={mIW@F19PW>+I>-ME8%P-b+JNmd=e9oHVAGunLIy#i`LENm|eQzS(@E=H08-8pCGt?<5f*EBwBVu zat<<*7E#7g7i7cD5}ac>ktn znn(1H4rGqTA7oBIvKI_&4mIdm2N4{O>{(S)NeY@Or`JU{wzfPp6+Ib}k1RhP9#fcK z`t_}jX&lZv2lvIirxBId2(76nGDYEgnzi{wRWE7N+E{$_izD%IK)nLk*PSuvxBd$v zOdrYzZFIvR8lOE^{EMqC^w~Og2U|3o@_0){?>i4e_rVu0^8dp1jqc_Zcg@A%YqOdb zyfeTa&f^>4;p6y!o~%76zK9{#!&C278uTB^dX1E?N!p0Q*I|b{%{rnIZXGP{k;l*q zO%I@M_0)0Eg&WpL6XH`8x!PE&gqR8A+-|Nz>C&-^>_^wkn9GGLIE-gb&g%>$qCJ1O zsJE()UaU@3w=dk08pKK7G@tfJE}Cc1Lmqb@JprRxgKLD(C+~>4?ts>ppPf?}!62Tx zK&0l+x}IES7YcpPu8lQCv{F-$L%)C{FA5%adsUR*(PqFykN;kY>G@j®DQ;-?5K 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 vYt>a4&|9miV)(nq?@inG2VWc<{Q3U}w.popoverVisible=e),placement:"bottom-start",width:320,trigger:"click","popper-class":"directory-tree-popover","show-arrow":!0,"hide-after":0,"show-after":50,transition:"el-zoom-in-top"},{reference:(0,l.k6)(()=>[(0,l.Lk)("span",{class:"popover-trigger-wrapper",onClick:t[0]||(t[0]=(0,d.D$)(()=>{},["stop"]))},[(0,l.RG)(e.$slots,"trigger",{},void 0,!0)])]),default:(0,l.k6)(()=>[(0,l.bo)(((0,l.uX)(),(0,l.CE)("div",u,[w.error?((0,l.uX)(),(0,l.CE)("div",f,[(0,l.bF)(F,{icon:"exclamation-circle",class:"error-icon"}),(0,l.Lk)("span",m,(0,c.v_)(w.error),1),(0,l.bF)(C,{type:"primary",size:"small",onClick:_.fetchDirectoryTree},{default:(0,l.k6)(()=>[(0,l.eW)((0,c.v_)(e.$t("directoryTree.retry")),1)]),_:1},8,["onClick"])])):((0,l.uX)(),(0,l.Wv)(T,{key:1,ref:"treeRef",data:w.treeData,props:w.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":a.currentDirectory,class:"directory-tree",onNodeClick:_.handleNodeClick},{default:(0,l.k6)(({node:e,data:t})=>[(0,l.Lk)("span",{class:(0,c.C4)(["tree-node",{"is-current":t.path===a.currentDirectory}])},[(0,l.bF)(F,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,l.Lk)("span",p,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[E,w.loading]])]),_:3},8,["visible"])):((0,l.uX)(),(0,l.CE)(l.FK,{key:1},[(0,l.Lk)("span",{class:"drawer-trigger-wrapper",onClick:t[2]||(t[2]=(...e)=>_.openDrawer&&_.openDrawer(...e))},[(0,l.RG)(e.$slots,"trigger",{},void 0,!0)]),(0,l.bF)(L,{modelValue:w.drawerVisible,"onUpdate:modelValue":t[3]||(t[3]=e=>w.drawerVisible=e),direction:"btt",size:"60%","show-close":!0,"with-header":!0,"z-index":3e3,title:e.$t("directoryTree.selectDirectory"),class:"directory-tree-drawer"},{default:(0,l.k6)(()=>[(0,l.bo)(((0,l.uX)(),(0,l.CE)("div",g,[w.error?((0,l.uX)(),(0,l.CE)("div",b,[(0,l.bF)(F,{icon:"exclamation-circle",class:"error-icon"}),(0,l.Lk)("span",v,(0,c.v_)(w.error),1),(0,l.bF)(C,{type:"primary",size:"small",onClick:_.fetchDirectoryTree},{default:(0,l.k6)(()=>[(0,l.eW)((0,c.v_)(e.$t("directoryTree.retry")),1)]),_:1},8,["onClick"])])):((0,l.uX)(),(0,l.Wv)(T,{key:1,ref:"treeRefMobile",data:w.treeData,props:w.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":a.currentDirectory,class:"directory-tree mobile-tree",onNodeClick:_.handleNodeClick},{default:(0,l.k6)(({node:e,data:t})=>[(0,l.Lk)("span",{class:(0,c.C4)(["tree-node",{"is-current":t.path===a.currentDirectory}])},[(0,l.bF)(F,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,l.Lk)("span",k,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[E,w.loading]])]),_:1},8,["modelValue","title"])],64))])}var w=a(457),_=a(70797),F={name:"DirectoryTreePicker",props:{currentDirectory:{type:String,default:""},source:{type:String,default:"upload",validator:e=>["upload","admin"].includes(e)}},data(){return{popoverVisible:!1,drawerVisible:!1,treeData:[],loading:!1,error:"",treeProps:{children:"children",label:"name"},windowWidth:window.innerWidth}},computed:{isDesktop(){return this.windowWidth>=769}},watch:{popoverVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.popoverVisible&&this.$refs.treeRef){const e=this.$refs.treeRef.store;for(const t in e.nodesMap)e.nodesMap[t].expanded=!1}},200)},drawerVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.drawerVisible&&this.$refs.treeRefMobile){const e=this.$refs.treeRefMobile.store;for(const t in e.nodesMap)e.nodesMap[t].expanded=!1}},300)},currentDirectory(e){this.$nextTick(()=>{this.$refs.treeRef&&e&&this.$refs.treeRef.setCurrentKey(e),this.$refs.treeRefMobile&&e&&this.$refs.treeRefMobile.setCurrentKey(e)})}},mounted(){window.addEventListener("resize",this.handleResize)},beforeUnmount(){window.removeEventListener("resize",this.handleResize)},methods:{handleResize(){this.windowWidth=window.innerWidth},openDrawer(){this.drawerVisible=!0},async fetchDirectoryTree(){this.loading=!0,this.error="";try{let e;if("admin"===this.source){const t=await(0,_.A)("/api/directoryTree",{method:"GET"});if(!t.ok)return void(401===t.status?this.error=this.$t("directoryTree.authFailed"):this.error=this.$t("directoryTree.serverError"));e=await t.json()}else{const t=await w.A.get("/api/directoryTree",{withAuthCode:!0});e=t.data}e.tree?this.treeData=[e.tree]:this.treeData=[]}catch(e){console.error("Failed to fetch directory tree:",e),401===e.response?.status?this.error=this.$t("directoryTree.authFailed"):this.error=this.$t("directoryTree.loadFailed")}finally{this.loading=!1}},handleNodeClick(e){let t=e.path;t&&!t.startsWith("/")?t="/"+t:t||(t="/"),this.$emit("select",t),this.popoverVisible=!1,this.drawerVisible=!1}}},C=a(71241);const T=(0,C.A)(F,[["render",y],["__scopeId","data-v-62eab69a"]]);var S=T},34396:function(e,t,a){"use strict";a(85331),a(4885)},34896:function(e,t,a){"use strict";a(85331)},37952:function(e,t,a){"use strict";a(85331),a(97197)},40670:function(e,t,a){"use strict";a(85331),a(99648),a(19104),a(85970)},44813:function(e,t,a){a(44114),a(18111),a(22489),a(7588),a(79577),a(41549),a(49797),a(49631),a(35623),a(59848),function(t){e.exports=t()}(function(){return function e(t,a,i){function n(r,o){if(!a[r]){if(!t[r]){var l=void 0;if(!o&&l)return require(r,!0);if(s)return s(r,!0);var d=new Error("Cannot find module '"+r+"'");throw d.code="MODULE_NOT_FOUND",d}var c=a[r]={exports:{}};t[r][0].call(c.exports,function(e){var a=t[r][1][e];return n(a||e)},c,c.exports,e,t,a,i)}return a[r].exports}for(var s=void 0,r=0;r>2,o=(3&t)<<4|a>>4,l=1>6:64,d=2>4,a=(15&r)<<4|(o=s.indexOf(e.charAt(d++)))>>2,i=(3&o)<<6|(l=s.indexOf(e.charAt(d++))),u[c++]=t,64!==o&&(u[c++]=a),64!==l&&(u[c++]=i);return u}},{"./support":30,"./utils":32}],2:[function(e,t,a){"use strict";var i=e("./external"),n=e("./stream/DataWorker"),s=e("./stream/Crc32Probe"),r=e("./stream/DataLengthProbe");function o(e,t,a,i,n){this.compressedSize=e,this.uncompressedSize=t,this.crc32=a,this.compression=i,this.compressedContent=n}o.prototype={getContentWorker:function(){var e=new n(i.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new r("data_length")),t=this;return e.on("end",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),e},getCompressedWorker:function(){return new n(i.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},o.createWorkerFrom=function(e,t,a){return e.pipe(new s).pipe(new r("uncompressedSize")).pipe(t.compressWorker(a)).pipe(new r("compressedSize")).withStreamInfo("compression",t)},t.exports=o},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(e,t,a){"use strict";var i=e("./stream/GenericWorker");a.STORE={magic:"\0\0",compressWorker:function(){return new i("STORE compression")},uncompressWorker:function(){return new i("STORE decompression")}},a.DEFLATE=e("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(e,t,a){"use strict";var i=e("./utils"),n=function(){for(var e,t=[],a=0;a<256;a++){e=a;for(var i=0;i<8;i++)e=1&e?3988292384^e>>>1:e>>>1;t[a]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?"string"!==i.getTypeOf(e)?function(e,t,a,i){var s=n,r=i+a;e^=-1;for(var o=i;o>>8^s[255&(e^t[o])];return-1^e}(0|t,e,e.length,0):function(e,t,a,i){var s=n,r=i+a;e^=-1;for(var o=i;o>>8^s[255&(e^t.charCodeAt(o))];return-1^e}(0|t,e,e.length,0):0}},{"./utils":32}],5:[function(e,t,a){"use strict";a.base64=!1,a.binary=!1,a.dir=!1,a.createFolders=!0,a.date=null,a.compression=null,a.compressionOptions=null,a.comment=null,a.unixPermissions=null,a.dosPermissions=null},{}],6:[function(e,t,a){"use strict";var i=null;i="undefined"!=typeof Promise?Promise:e("lie"),t.exports={Promise:i}},{lie:37}],7:[function(e,t,a){"use strict";var i="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,n=e("pako"),s=e("./utils"),r=e("./stream/GenericWorker"),o=i?"uint8array":"array";function l(e,t){r.call(this,"FlateWorker/"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}a.magic="\b\0",s.inherits(l,r),l.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},l.prototype.flush=function(){r.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},l.prototype.cleanUp=function(){r.prototype.cleanUp.call(this),this._pako=null},l.prototype._createPako=function(){this._pako=new n[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var e=this;this._pako.onData=function(t){e.push({data:t,meta:e.meta})}},a.compressWorker=function(e){return new l("Deflate",e)},a.uncompressWorker=function(){return new l("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(e,t,a){"use strict";function i(e,t){var a,i="";for(a=0;a>>=8;return i}function n(e,t,a,n,r,c){var h,u,f=e.file,m=e.compression,p=c!==o.utf8encode,g=s.transformTo("string",c(f.name)),b=s.transformTo("string",o.utf8encode(f.name)),v=f.comment,k=s.transformTo("string",c(v)),y=s.transformTo("string",o.utf8encode(v)),w=b.length!==f.name.length,_=y.length!==v.length,F="",C="",T="",S=f.dir,L=f.date,E={crc32:0,compressedSize:0,uncompressedSize:0};t&&!a||(E.crc32=e.crc32,E.compressedSize=e.compressedSize,E.uncompressedSize=e.uncompressedSize);var $=0;t&&($|=8),p||!w&&!_||($|=2048);var x=0,D=0;S&&(x|=16),"UNIX"===r?(D=798,x|=function(e,t){var a=e;return e||(a=t?16893:33204),(65535&a)<<16}(f.unixPermissions,S)):(D=20,x|=function(e){return 63&(e||0)}(f.dosPermissions)),h=L.getUTCHours(),h<<=6,h|=L.getUTCMinutes(),h<<=5,h|=L.getUTCSeconds()/2,u=L.getUTCFullYear()-1980,u<<=4,u|=L.getUTCMonth()+1,u<<=5,u|=L.getUTCDate(),w&&(C=i(1,1)+i(l(g),4)+b,F+="up"+i(C.length,2)+C),_&&(T=i(1,1)+i(l(k),4)+y,F+="uc"+i(T.length,2)+T);var I="";return I+="\n\0",I+=i($,2),I+=m.magic,I+=i(h,2),I+=i(u,2),I+=i(E.crc32,4),I+=i(E.compressedSize,4),I+=i(E.uncompressedSize,4),I+=i(g.length,2),I+=i(F.length,2),{fileRecord:d.LOCAL_FILE_HEADER+I+g+F,dirRecord:d.CENTRAL_FILE_HEADER+i(D,2)+I+i(k.length,2)+"\0\0\0\0"+i(x,4)+i(n,4)+g+F+k}}var s=e("../utils"),r=e("../stream/GenericWorker"),o=e("../utf8"),l=e("../crc32"),d=e("../signature");function c(e,t,a,i){r.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=a,this.encodeFileName=i,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}s.inherits(c,r),c.prototype.push=function(e){var t=e.meta.percent||0,a=this.entriesCount,i=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,r.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:a?(t+100*(a-i-1))/a:100}}))},c.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var a=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:a.fileRecord,meta:{percent:0}})}else this.accumulate=!0},c.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,a=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(a.dirRecord),t)this.push({data:function(e){return d.DATA_DESCRIPTOR+i(e.crc32,4)+i(e.compressedSize,4)+i(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:a.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},c.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t=this.index;t--)a=(a<<8)+this.byteAt(t);return this.index+=e,a},readString:function(e){return i.transformTo("string",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=n},{"../utils":32}],19:[function(e,t,a){"use strict";var i=e("./Uint8ArrayReader");function n(e){i.call(this,e)}e("../utils").inherits(n,i),n.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(e,t,a){"use strict";var i=e("./DataReader");function n(e){i.call(this,e)}e("../utils").inherits(n,i),n.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},n.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},n.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},n.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{"../utils":32,"./DataReader":18}],21:[function(e,t,a){"use strict";var i=e("./ArrayReader");function n(e){i.call(this,e)}e("../utils").inherits(n,i),n.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{"../utils":32,"./ArrayReader":17}],22:[function(e,t,a){"use strict";var i=e("../utils"),n=e("../support"),s=e("./ArrayReader"),r=e("./StringReader"),o=e("./NodeBufferReader"),l=e("./Uint8ArrayReader");t.exports=function(e){var t=i.getTypeOf(e);return i.checkSupport(t),"string"!==t||n.uint8array?"nodebuffer"===t?new o(e):n.uint8array?new l(i.transformTo("uint8array",e)):new s(i.transformTo("array",e)):new r(e)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(e,t,a){"use strict";a.LOCAL_FILE_HEADER="PK",a.CENTRAL_FILE_HEADER="PK",a.CENTRAL_DIRECTORY_END="PK",a.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",a.ZIP64_CENTRAL_DIRECTORY_END="PK",a.DATA_DESCRIPTOR="PK\b"},{}],24:[function(e,t,a){"use strict";var i=e("./GenericWorker"),n=e("../utils");function s(e){i.call(this,"ConvertWorker to "+e),this.destType=e}n.inherits(s,i),s.prototype.processChunk=function(e){this.push({data:n.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{"../utils":32,"./GenericWorker":28}],25:[function(e,t,a){"use strict";var i=e("./GenericWorker"),n=e("../crc32");function s(){i.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}e("../utils").inherits(s,i),s.prototype.processChunk=function(e){this.streamInfo.crc32=n(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(e,t,a){"use strict";var i=e("../utils"),n=e("./GenericWorker");function s(e){n.call(this,"DataLengthProbe for "+e),this.propName=e,this.withStreamInfo(e,0)}i.inherits(s,n),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}n.prototype.processChunk.call(this,e)},t.exports=s},{"../utils":32,"./GenericWorker":28}],27:[function(e,t,a){"use strict";var i=e("../utils"),n=e("./GenericWorker");function s(e){n.call(this,"DataWorker");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=i.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}i.inherits(s,n),s.prototype.cleanUp=function(){n.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,i.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(i.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":e=this.data.substring(this.index,t);break;case"uint8array":e=this.data.subarray(this.index,t);break;case"array":case"nodebuffer":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{"../utils":32,"./GenericWorker":28}],28:[function(e,t,a){"use strict";function i(e){this.name=e||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}i.prototype={push:function(e){this.emit("data",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit("error",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit("error",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var a=0;a "+e:e}},t.exports=i},{}],29:[function(e,t,a){"use strict";var i=e("../utils"),n=e("./ConvertWorker"),s=e("./GenericWorker"),r=e("../base64"),o=e("../support"),l=e("../external"),d=null;if(o.nodestream)try{d=e("../nodejs/NodejsStreamOutputAdapter")}catch(e){}function c(e,t){return new l.Promise(function(a,n){var s=[],o=e._internalType,l=e._outputType,d=e._mimeType;e.on("data",function(e,a){s.push(e),t&&t(a)}).on("error",function(e){s=[],n(e)}).on("end",function(){try{var e=function(e,t,a){switch(e){case"blob":return i.newBlob(i.transformTo("arraybuffer",t),a);case"base64":return r.encode(t);default:return i.transformTo(e,t)}}(l,function(e,t){var a,i=0,n=null,s=0;for(a=0;a>>6:(a<65536?t[r++]=224|a>>>12:(t[r++]=240|a>>>18,t[r++]=128|a>>>12&63),t[r++]=128|a>>>6&63),t[r++]=128|63&a);return t}(e)},a.utf8decode=function(e){return n.nodebuffer?i.transformTo("nodebuffer",e).toString("utf-8"):function(e){var t,a,n,s,r=e.length,l=new Array(2*r);for(t=a=0;t>10&1023,l[a++]=56320|1023&n)}return l.length!==a&&(l.subarray?l=l.subarray(0,a):l.length=a),i.applyFromCharCode(l)}(e=i.transformTo(n.uint8array?"uint8array":"array",e))},i.inherits(d,r),d.prototype.processChunk=function(e){var t=i.transformTo(n.uint8array?"uint8array":"array",e.data);if(this.leftOver&&this.leftOver.length){if(n.uint8array){var s=t;(t=new Uint8Array(s.length+this.leftOver.length)).set(this.leftOver,0),t.set(s,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var r=function(e,t){var a;for((t=t||e.length)>e.length&&(t=e.length),a=t-1;0<=a&&128==(192&e[a]);)a--;return a<0||0===a?t:a+o[e[a]]>t?a:t}(t),l=t;r!==t.length&&(n.uint8array?(l=t.subarray(0,r),this.leftOver=t.subarray(r,t.length)):(l=t.slice(0,r),this.leftOver=t.slice(r,t.length))),this.push({data:a.utf8decode(l),meta:e.meta})},d.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:a.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},a.Utf8DecodeWorker=d,i.inherits(c,r),c.prototype.processChunk=function(e){this.push({data:a.utf8encode(e.data),meta:e.meta})},a.Utf8EncodeWorker=c},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(e,t,a){"use strict";var i=e("./support"),n=e("./base64"),s=e("./nodejsUtils"),r=e("./external");function o(e){return e}function l(e,t){for(var a=0;a>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=i(this.extraFields[1].value);this.uncompressedSize===n.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===n.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===n.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===n.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,a,i,n=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4>>6:(a<65536?t[r++]=224|a>>>12:(t[r++]=240|a>>>18,t[r++]=128|a>>>12&63),t[r++]=128|a>>>6&63),t[r++]=128|63&a);return t},a.buf2binstring=function(e){return l(e,e.length)},a.binstring2buf=function(e){for(var t=new i.Buf8(e.length),a=0,n=t.length;a>10&1023,d[i++]=56320|1023&n)}return l(d,i)},a.utf8border=function(e,t){var a;for((t=t||e.length)>e.length&&(t=e.length),a=t-1;0<=a&&128==(192&e[a]);)a--;return a<0||0===a?t:a+r[e[a]]>t?a:t}},{"./common":41}],43:[function(e,t,a){"use strict";t.exports=function(e,t,a,i){for(var n=65535&e,s=e>>>16&65535,r=0;0!==a;){for(a-=r=2e3>>1:e>>>1;t[a]=e}return t}();t.exports=function(e,t,a,n){var s=i,r=n+a;e^=-1;for(var o=n;o>>8^s[255&(e^t[o])];return-1^e}},{}],46:[function(e,t,a){"use strict";var i,n=e("../utils/common"),s=e("./trees"),r=e("./adler32"),o=e("./crc32"),l=e("./messages"),d=0,c=4,h=0,u=-2,f=-1,m=4,p=2,g=8,b=9,v=286,k=30,y=19,w=2*v+1,_=15,F=3,C=258,T=C+F+1,S=42,L=113,E=1,$=2,x=3,D=4;function I(e,t){return e.msg=l[t],t}function A(e){return(e<<1)-(4e.avail_out&&(a=e.avail_out),0!==a&&(n.arraySet(e.output,t.pending_buf,t.pending_out,a,e.next_out),e.next_out+=a,t.pending_out+=a,e.total_out+=a,e.avail_out-=a,t.pending-=a,0===t.pending&&(t.pending_out=0))}function z(e,t){s._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,B(e.strm)}function U(e,t){e.pending_buf[e.pending++]=t}function R(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function W(e,t){var a,i,n=e.max_chain_length,s=e.strstart,r=e.prev_length,o=e.nice_match,l=e.strstart>e.w_size-T?e.strstart-(e.w_size-T):0,d=e.window,c=e.w_mask,h=e.prev,u=e.strstart+C,f=d[s+r-1],m=d[s+r];e.prev_length>=e.good_match&&(n>>=2),o>e.lookahead&&(o=e.lookahead);do{if(d[(a=t)+r]===m&&d[a+r-1]===f&&d[a]===d[s]&&d[++a]===d[s+1]){s+=2,a++;do{}while(d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&sl&&0!=--n);return r<=e.lookahead?r:e.lookahead}function O(e){var t,a,i,s,l,d,c,h,u,f,m=e.w_size;do{if(s=e.window_size-e.lookahead-e.strstart,e.strstart>=m+(m-T)){for(n.arraySet(e.window,e.window,m,m,0),e.match_start-=m,e.strstart-=m,e.block_start-=m,t=a=e.hash_size;i=e.head[--t],e.head[t]=m<=i?i-m:0,--a;);for(t=a=m;i=e.prev[--t],e.prev[t]=m<=i?i-m:0,--a;);s+=m}if(0===e.strm.avail_in)break;if(d=e.strm,c=e.window,h=e.strstart+e.lookahead,u=s,f=void 0,f=d.avail_in,u=F)for(l=e.strstart-e.insert,e.ins_h=e.window[l],e.ins_h=(e.ins_h<=F&&(e.ins_h=(e.ins_h<=F)if(i=s._tr_tally(e,e.strstart-e.match_start,e.match_length-F),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=F){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<=F&&(e.ins_h=(e.ins_h<=F&&e.match_length<=e.prev_length){for(n=e.strstart+e.lookahead-F,i=s._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-F),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=n&&(e.ins_h=(e.ins_h<e.pending_buf_size-5&&(a=e.pending_buf_size-5);;){if(e.lookahead<=1){if(O(e),0===e.lookahead&&t===d)return E;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var i=e.block_start+a;if((0===e.strstart||e.strstart>=i)&&(e.lookahead=e.strstart-i,e.strstart=i,z(e,!1),0===e.strm.avail_out))return E;if(e.strstart-e.block_start>=e.w_size-T&&(z(e,!1),0===e.strm.avail_out))return E}return e.insert=0,t===c?(z(e,!0),0===e.strm.avail_out?x:D):(e.strstart>e.block_start&&(z(e,!1),e.strm.avail_out),E)}),new V(4,4,8,4,N),new V(4,5,16,8,N),new V(4,6,32,32,N),new V(4,4,16,16,M),new V(8,16,32,32,M),new V(8,16,128,128,M),new V(8,32,128,256,M),new V(32,128,258,1024,M),new V(32,258,258,4096,M)],a.deflateInit=function(e,t){return Z(e,t,g,15,8,0)},a.deflateInit2=Z,a.deflateReset=K,a.deflateResetKeep=j,a.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?u:(e.state.gzhead=t,h):u},a.deflate=function(e,t){var a,n,r,l;if(!e||!e.state||5>8&255),U(n,n.gzhead.time>>16&255),U(n,n.gzhead.time>>24&255),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(U(n,255&n.gzhead.extra.length),U(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=o(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(U(n,0),U(n,0),U(n,0),U(n,0),U(n,0),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,3),n.status=L);else{var f=g+(n.w_bits-8<<4)<<8;f|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(f|=32),f+=31-f%31,n.status=L,R(n,f),0!==n.strstart&&(R(n,e.adler>>>16),R(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(r=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>r&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),B(e),r=n.pending,n.pending!==n.pending_buf_size));)U(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>r&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){r=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>r&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),B(e),r=n.pending,n.pending===n.pending_buf_size)){l=1;break}l=n.gzindexr&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),0===l&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){r=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>r&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),B(e),r=n.pending,n.pending===n.pending_buf_size)){l=1;break}l=n.gzindexr&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),0===l&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&B(e),n.pending+2<=n.pending_buf_size&&(U(n,255&e.adler),U(n,e.adler>>8&255),e.adler=0,n.status=L)):n.status=L),0!==n.pending){if(B(e),0===e.avail_out)return n.last_flush=-1,h}else if(0===e.avail_in&&A(t)<=A(a)&&t!==c)return I(e,-5);if(666===n.status&&0!==e.avail_in)return I(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==d&&666!==n.status){var m=2===n.strategy?function(e,t){for(var a;;){if(0===e.lookahead&&(O(e),0===e.lookahead)){if(t===d)return E;break}if(e.match_length=0,a=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,a&&(z(e,!1),0===e.strm.avail_out))return E}return e.insert=0,t===c?(z(e,!0),0===e.strm.avail_out?x:D):e.last_lit&&(z(e,!1),0===e.strm.avail_out)?E:$}(n,t):3===n.strategy?function(e,t){for(var a,i,n,r,o=e.window;;){if(e.lookahead<=C){if(O(e),e.lookahead<=C&&t===d)return E;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=F&&0e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=F?(a=s._tr_tally(e,1,e.match_length-F),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(a=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),a&&(z(e,!1),0===e.strm.avail_out))return E}return e.insert=0,t===c?(z(e,!0),0===e.strm.avail_out?x:D):e.last_lit&&(z(e,!1),0===e.strm.avail_out)?E:$}(n,t):i[n.level].func(n,t);if(m!==x&&m!==D||(n.status=666),m===E||m===x)return 0===e.avail_out&&(n.last_flush=-1),h;if(m===$&&(1===t?s._tr_align(n):5!==t&&(s._tr_stored_block(n,0,0,!1),3===t&&(P(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),B(e),0===e.avail_out))return n.last_flush=-1,h}return t!==c?h:n.wrap<=0?1:(2===n.wrap?(U(n,255&e.adler),U(n,e.adler>>8&255),U(n,e.adler>>16&255),U(n,e.adler>>24&255),U(n,255&e.total_in),U(n,e.total_in>>8&255),U(n,e.total_in>>16&255),U(n,e.total_in>>24&255)):(R(n,e.adler>>>16),R(n,65535&e.adler)),B(e),0=a.w_size&&(0===o&&(P(a.head),a.strstart=0,a.block_start=0,a.insert=0),f=new n.Buf8(a.w_size),n.arraySet(f,t,m-a.w_size,a.w_size,0),t=f,m=a.w_size),l=e.avail_in,d=e.next_in,c=e.input,e.avail_in=m,e.next_in=0,e.input=t,O(a);a.lookahead>=F;){for(i=a.strstart,s=a.lookahead-(F-1);a.ins_h=(a.ins_h<>>=y=k>>>24,m-=y,0===(y=k>>>16&255))S[s++]=65535&k;else{if(!(16&y)){if(0==(64&y)){k=p[(65535&k)+(f&(1<>>=y,m-=y),m<15&&(f+=T[i++]<>>=y=k>>>24,m-=y,!(16&(y=k>>>16&255))){if(0==(64&y)){k=g[(65535&k)+(f&(1<>>=y,m-=y,(y=s-r)<_){if(c<(y=_-y)&&a.sane){e.msg="invalid distance too far back",a.mode=30;break e}if(C=u,(F=0)===h){if(F+=d-y,y>3,f&=(1<<(m-=w<<3))-1,e.next_in=i,e.next_out=s,e.avail_in=i>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function g(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new i.Buf16(320),this.work=new i.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function b(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=u,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new i.Buf32(f),t.distcode=t.distdyn=new i.Buf32(m),t.sane=1,t.back=-1,c):h}function v(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,b(e)):h}function k(e,t){var a,i;return e&&e.state?(i=e.state,t<0?(a=0,t=-t):(a=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=r.wsize?(i.arraySet(r.window,t,a-r.wsize,r.wsize,0),r.wnext=0,r.whave=r.wsize):(n<(s=r.wsize-r.wnext)&&(s=n),i.arraySet(r.window,t,a-n,s,r.wnext),(n-=s)?(i.arraySet(r.window,t,a-n,n,0),r.wnext=n,r.whave=r.wsize):(r.wnext+=s,r.wnext===r.wsize&&(r.wnext=0),r.whave>>8&255,a.check=s(a.check,O,2,0),w=y=0,a.mode=2;break}if(a.flags=0,a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&y)<<8)+(y>>8))%31){e.msg="incorrect header check",a.mode=30;break}if(8!=(15&y)){e.msg="unknown compression method",a.mode=30;break}if(w-=4,B=8+(15&(y>>>=4)),0===a.wbits)a.wbits=B;else if(B>a.wbits){e.msg="invalid window size",a.mode=30;break}a.dmax=1<>8&1),512&a.flags&&(O[0]=255&y,O[1]=y>>>8&255,a.check=s(a.check,O,2,0)),w=y=0,a.mode=3;case 3:for(;w<32;){if(0===v)break e;v--,y+=f[g++]<>>8&255,O[2]=y>>>16&255,O[3]=y>>>24&255,a.check=s(a.check,O,4,0)),w=y=0,a.mode=4;case 4:for(;w<16;){if(0===v)break e;v--,y+=f[g++]<>8),512&a.flags&&(O[0]=255&y,O[1]=y>>>8&255,a.check=s(a.check,O,2,0)),w=y=0,a.mode=5;case 5:if(1024&a.flags){for(;w<16;){if(0===v)break e;v--,y+=f[g++]<>>8&255,a.check=s(a.check,O,2,0)),w=y=0}else a.head&&(a.head.extra=null);a.mode=6;case 6:if(1024&a.flags&&(v<(S=a.length)&&(S=v),S&&(a.head&&(B=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Array(a.head.extra_len)),i.arraySet(a.head.extra,f,g,S,B)),512&a.flags&&(a.check=s(a.check,f,S,g)),v-=S,g+=S,a.length-=S),a.length))break e;a.length=0,a.mode=7;case 7:if(2048&a.flags){if(0===v)break e;for(S=0;B=f[g+S++],a.head&&B&&a.length<65536&&(a.head.name+=String.fromCharCode(B)),B&&S>9&1,a.head.done=!0),e.adler=a.check=0,a.mode=12;break;case 10:for(;w<32;){if(0===v)break e;v--,y+=f[g++]<>>=7&w,w-=7&w,a.mode=27;break}for(;w<3;){if(0===v)break e;v--,y+=f[g++]<>>=1)){case 0:a.mode=14;break;case 1:if(C(a),a.mode=20,6!==t)break;y>>>=2,w-=2;break e;case 2:a.mode=17;break;case 3:e.msg="invalid block type",a.mode=30}y>>>=2,w-=2;break;case 14:for(y>>>=7&w,w-=7&w;w<32;){if(0===v)break e;v--,y+=f[g++]<>>16^65535)){e.msg="invalid stored block lengths",a.mode=30;break}if(a.length=65535&y,w=y=0,a.mode=15,6===t)break e;case 15:a.mode=16;case 16:if(S=a.length){if(v>>=5,w-=5,a.ndist=1+(31&y),y>>>=5,w-=5,a.ncode=4+(15&y),y>>>=4,w-=4,286>>=3,w-=3}for(;a.have<19;)a.lens[N[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,U={bits:a.lenbits},z=o(0,a.lens,0,19,a.lencode,0,a.work,U),a.lenbits=U.bits,z){e.msg="invalid code lengths set",a.mode=30;break}a.have=0,a.mode=19;case 19:for(;a.have>>16&255,D=65535&W,!(($=W>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>>=$,w-=$,a.lens[a.have++]=D;else{if(16===D){for(R=$+2;w>>=$,w-=$,0===a.have){e.msg="invalid bit length repeat",a.mode=30;break}B=a.lens[a.have-1],S=3+(3&y),y>>>=2,w-=2}else if(17===D){for(R=$+3;w>>=$)),y>>>=3,w-=3}else{for(R=$+7;w>>=$)),y>>>=7,w-=7}if(a.have+S>a.nlen+a.ndist){e.msg="invalid bit length repeat",a.mode=30;break}for(;S--;)a.lens[a.have++]=B}}if(30===a.mode)break;if(0===a.lens[256]){e.msg="invalid code -- missing end-of-block",a.mode=30;break}if(a.lenbits=9,U={bits:a.lenbits},z=o(l,a.lens,0,a.nlen,a.lencode,0,a.work,U),a.lenbits=U.bits,z){e.msg="invalid literal/lengths set",a.mode=30;break}if(a.distbits=6,a.distcode=a.distdyn,U={bits:a.distbits},z=o(d,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,U),a.distbits=U.bits,z){e.msg="invalid distances set",a.mode=30;break}if(a.mode=20,6===t)break e;case 20:a.mode=21;case 21:if(6<=v&&258<=k){e.next_out=b,e.avail_out=k,e.next_in=g,e.avail_in=v,a.hold=y,a.bits=w,r(e,F),b=e.next_out,m=e.output,k=e.avail_out,g=e.next_in,f=e.input,v=e.avail_in,y=a.hold,w=a.bits,12===a.mode&&(a.back=-1);break}for(a.back=0;x=(W=a.lencode[y&(1<>>16&255,D=65535&W,!(($=W>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>I)])>>>16&255,D=65535&W,!(I+($=W>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>>=I,w-=I,a.back+=I}if(y>>>=$,w-=$,a.back+=$,a.length=D,0===x){a.mode=26;break}if(32&x){a.back=-1,a.mode=12;break}if(64&x){e.msg="invalid literal/length code",a.mode=30;break}a.extra=15&x,a.mode=22;case 22:if(a.extra){for(R=a.extra;w>>=a.extra,w-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=23;case 23:for(;x=(W=a.distcode[y&(1<>>16&255,D=65535&W,!(($=W>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>I)])>>>16&255,D=65535&W,!(I+($=W>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>>=I,w-=I,a.back+=I}if(y>>>=$,w-=$,a.back+=$,64&x){e.msg="invalid distance code",a.mode=30;break}a.offset=D,a.extra=15&x,a.mode=24;case 24:if(a.extra){for(R=a.extra;w>>=a.extra,w-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){e.msg="invalid distance too far back",a.mode=30;break}a.mode=25;case 25:if(0===k)break e;if(S=F-k,a.offset>S){if((S=a.offset-S)>a.whave&&a.sane){e.msg="invalid distance too far back",a.mode=30;break}L=S>a.wnext?(S-=a.wnext,a.wsize-S):a.wnext-S,S>a.length&&(S=a.length),E=a.window}else E=m,L=b-a.offset,S=a.length;for(kv?(y=U[R+h[C]],A[P+h[C]]):(y=96,0),f=1<>$)+(m-=f)]=k<<24|y<<16|w,0!==m;);for(f=1<>=1;if(0!==f?(I&=f-1,I+=f):I=0,C++,0==--B[F]){if(F===S)break;F=t[a+h[C]]}if(L>>7)]}function U(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function R(e,t,a){e.bi_valid>p-a?(e.bi_buf|=t<>p-e.bi_valid,e.bi_valid+=a-p):(e.bi_buf|=t<>>=1,a<<=1,0<--t;);return a>>>1}function N(e,t,a){var i,n,s=new Array(m+1),r=0;for(i=1;i<=m;i++)s[i]=r=r+a[i-1]<<1;for(n=0;n<=t;n++){var o=e[2*n+1];0!==o&&(e[2*n]=O(s[o]++,o))}}function M(e){var t;for(t=0;t>1;1<=a;a--)j(e,s,a);for(n=l;a=e.heap[1],e.heap[1]=e.heap[e.heap_len--],j(e,s,1),i=e.heap[1],e.heap[--e.heap_max]=a,e.heap[--e.heap_max]=i,s[2*n]=s[2*a]+s[2*i],e.depth[n]=(e.depth[a]>=e.depth[i]?e.depth[a]:e.depth[i])+1,s[2*a+1]=s[2*i+1]=n,e.heap[1]=n++,j(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var a,i,n,s,r,o,l=t.dyn_tree,d=t.max_code,c=t.stat_desc.static_tree,h=t.stat_desc.has_stree,u=t.stat_desc.extra_bits,p=t.stat_desc.extra_base,g=t.stat_desc.max_length,b=0;for(s=0;s<=m;s++)e.bl_count[s]=0;for(l[2*e.heap[e.heap_max]+1]=0,a=e.heap_max+1;a>=7;i>>=1)if(1&a&&0!==e.dyn_ltree[2*t])return n;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return s;for(t=32;t>>3,(o=e.static_len+3+7>>>3)<=r&&(r=o)):r=o=a+5,a+4<=r&&-1!==t?q(e,t,a,i):4===e.strategy||o===r?(R(e,2+(i?1:0),3),K(e,T,S)):(R(e,4+(i?1:0),3),function(e,t,a,i){var n;for(R(e,t-257,5),R(e,a-1,5),R(e,i-4,4),n=0;n>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&a,e.last_lit++,0===t?e.dyn_ltree[2*a]++:(e.matches++,t--,e.dyn_ltree[2*(E[a]+d+1)]++,e.dyn_dtree[2*z(t)]++),e.last_lit===e.lit_bufsize-1},a._tr_align=function(e){R(e,2,3),W(e,b,T),function(e){16===e.bi_valid?(U(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{"../utils/common":41}],53:[function(e,t,a){"use strict";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,i){(function(e){!function(e,t){"use strict";if(!e.setImmediate){var a,i,n,s,r=1,o={},l=!1,d=e.document,c=Object.getPrototypeOf&&Object.getPrototypeOf(e);c=c&&c.setTimeout?c:e,a="[object process]"==={}.toString.call(e.process)?function(e){process.nextTick(function(){u(e)})}:function(){if(e.postMessage&&!e.importScripts){var t=!0,a=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=a,t}}()?(s="setImmediate$"+Math.random()+"$",e.addEventListener?e.addEventListener("message",f,!1):e.attachEvent("onmessage",f),function(t){e.postMessage(s+t,"*")}):e.MessageChannel?((n=new MessageChannel).port1.onmessage=function(e){u(e.data)},function(e){n.port2.postMessage(e)}):d&&"onreadystatechange"in d.createElement("script")?(i=d.documentElement,function(e){var t=d.createElement("script");t.onreadystatechange=function(){u(e),t.onreadystatechange=null,i.removeChild(t),t=null},i.appendChild(t)}):function(e){setTimeout(u,0,e)},c.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),i=0;iI.dialogVisible=e),title:a.isBatchMove?e.$t("moveFile.batchTitle"):e.$t("moveFile.title"),width:"500px","show-close":!0,class:"move-dialog",onClose:I.handleClose},{footer:(0,c.k6)(()=>[(0,c.Lk)("span",g,[(0,c.bF)(B,{onClick:I.handleClose},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.cancel")),1)]),_:1},8,["onClick"]),(0,c.bF)(B,{type:"primary",loading:D.loading,onClick:I.handleConfirm},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.confirm")),1)]),_:1},8,["loading","onClick"])])]),default:(0,c.k6)(()=>[(0,c.Lk)("div",f,[(0,c.Lk)("div",m,[(0,c.bF)(A,{modelValue:D.targetPath,"onUpdate:modelValue":t[0]||(t[0]=e=>D.targetPath=e),placeholder:e.$t("moveFile.targetPlaceholder"),class:"move-path-input"},{prepend:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.targetDirectory")),1)]),_:1},8,["modelValue","placeholder"]),(0,c.bF)(z,{"current-directory":a.currentDirectory,source:"admin",onSelect:I.handleDirectorySelect},{trigger:(0,c.k6)(()=>[(0,c.bF)(B,{class:"directory-picker-trigger"},{default:(0,c.k6)(()=>[(0,c.bF)(P,{icon:"folder-tree"})]),_:1})]),_:1},8,["current-directory","onSelect"])]),(0,c.Lk)("p",p,(0,h.v_)(e.$t("moveFile.hint")),1)])]),_:1},8,["modelValue","title","onClose"])):((0,c.uX)(),(0,c.Wv)(W,{key:1,modelValue:I.dialogVisible,"onUpdate:modelValue":t[5]||(t[5]=e=>I.dialogVisible=e),title:a.isBatchMove?e.$t("moveFile.batchTitle"):e.$t("moveFile.title"),direction:"btt",size:"auto","show-close":!0,class:"move-drawer",onClose:I.handleClose},{footer:(0,c.k6)(()=>[(0,c.Lk)("div",$,[(0,c.bF)(B,{onClick:I.handleClose,class:"footer-btn"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.cancel")),1)]),_:1},8,["onClick"]),(0,c.bF)(B,{type:"primary",loading:D.loading,onClick:I.handleConfirm,class:"footer-btn"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.confirm")),1)]),_:1},8,["loading","onClick"])])]),default:(0,c.k6)(()=>[(0,c.Lk)("div",b,[(0,c.Lk)("div",v,[(0,c.Lk)("div",k,(0,h.v_)(e.$t("moveFile.targetDirectory")),1),(0,c.Lk)("div",y,[(0,c.bF)(A,{modelValue:D.targetPath,"onUpdate:modelValue":t[2]||(t[2]=e=>D.targetPath=e),placeholder:e.$t("moveFile.targetPlaceholder"),class:"move-path-input"},null,8,["modelValue","placeholder"]),(0,c.bF)(B,{class:"directory-picker-trigger",onClick:t[3]||(t[3]=e=>D.showTreePicker=!0)},{default:(0,c.k6)(()=>[(0,c.bF)(P,{icon:"folder-tree"})]),_:1})]),(0,c.Lk)("p",w,(0,h.v_)(e.$t("moveFile.hintMobile")),1)]),D.showTreePicker?((0,c.uX)(),(0,c.CE)("div",_,[(0,c.Lk)("div",F,[(0,c.Lk)("span",C,(0,h.v_)(e.$t("moveFile.selectDirectory")),1),(0,c.bF)(B,{text:"",onClick:t[4]||(t[4]=e=>D.showTreePicker=!1)},{default:(0,c.k6)(()=>[(0,c.bF)(P,{icon:"times"})]),_:1})]),(0,c.bo)(((0,c.uX)(),(0,c.CE)("div",T,[D.treeError?((0,c.uX)(),(0,c.CE)("div",S,[(0,c.bF)(P,{icon:"exclamation-circle",class:"error-icon"}),(0,c.Lk)("span",L,(0,h.v_)(D.treeError),1),(0,c.bF)(B,{type:"primary",size:"small",onClick:I.fetchDirectoryTree},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.retry")),1)]),_:1},8,["onClick"])])):((0,c.uX)(),(0,c.Wv)(R,{key:1,ref:"treeRef",data:D.treeData,props:D.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":a.currentDirectory,class:"directory-tree",onNodeClick:I.handleTreeNodeClick},{default:(0,c.k6)(({node:e,data:t})=>[(0,c.Lk)("span",{class:(0,h.C4)(["tree-node",{"is-current":t.path===a.currentDirectory}])},[(0,c.bF)(P,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,c.Lk)("span",E,(0,h.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[O,D.treeLoading]])])):(0,c.Q3)("",!0)])]),_:1},8,["modelValue","title","onClose"]))])}var D=a(70797),I={name:"MoveFileDialog",components:{DirectoryTreePicker:o.A},props:{modelValue:{type:Boolean,default:!1},currentDirectory:{type:String,default:""},isBatchMove:{type:Boolean,default:!1},initialPath:{type:String,default:"/"}},emits:["update:modelValue","confirm","close"],data(){return{targetPath:"/",loading:!1,windowWidth:window.innerWidth,showTreePicker:!1,treeData:[],treeLoading:!1,treeError:"",treeProps:{children:"children",label:"name"}}},computed:{dialogVisible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},isDesktop(){return this.windowWidth>768}},watch:{modelValue(e){e&&(this.targetPath=this.initialPath||"/",this.showTreePicker=!1)},showTreePicker(e){e&&!this.isDesktop&&this.fetchDirectoryTree()}},mounted(){window.addEventListener("resize",this.handleResize)},beforeUnmount(){window.removeEventListener("resize",this.handleResize)},methods:{handleResize(){this.windowWidth=window.innerWidth},handleDirectorySelect(e){this.targetPath=e},handleConfirm(){this.$emit("confirm",this.targetPath)},handleClose(){this.$emit("update:modelValue",!1),this.$emit("close")},async fetchDirectoryTree(){this.treeLoading=!0,this.treeError="";try{const e=await(0,D.A)("/api/directoryTree",{method:"GET"});if(!e.ok)return void(401===e.status?this.treeError=this.$t("moveFile.authFailed"):this.treeError=this.$t("moveFile.serverError"));const t=await e.json();t.tree?this.treeData=[t.tree]:this.treeData=[]}catch(e){console.error("Failed to fetch directory tree:",e),this.treeError=this.$t("moveFile.loadTreeFailed")}finally{this.treeLoading=!1}},handleTreeNodeClick(e){let t=e.path;t&&!t.startsWith("/")?t="/"+t:t||(t="/"),this.targetPath=t,this.showTreePicker=!1}}},A=a(71241);const P=(0,A.A)(I,[["render",x],["__scopeId","data-v-7aaa437c"]]);var B=P,z=a(45130);const U={class:"mobile-drawer-header"},R={class:"mobile-drawer-title"},W={class:"mobile-drawer-content"},O=["onClick"];function N(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon");return(0,c.uX)(),(0,c.Wv)(c.Im,{to:"body"},[(0,c.bF)(z.eB,{name:"drawer-slide"},{default:(0,c.k6)(()=>[a.modelValue?((0,c.uX)(),(0,c.CE)("div",{key:0,class:"mobile-drawer-overlay",onClick:t[3]||(t[3]=(...e)=>s.close&&s.close(...e))},[(0,c.Lk)("div",{class:"mobile-drawer",onClick:t[2]||(t[2]=(0,z.D$)(()=>{},["stop"]))},[(0,c.Lk)("div",U,[(0,c.Lk)("span",R,(0,h.v_)(e.$t("mobileDirectory.title")),1),(0,c.bF)(r,{icon:"times",class:"mobile-drawer-close",onClick:s.close},null,8,["onClick"])]),(0,c.Lk)("div",W,[(0,c.Lk)("div",{class:(0,h.C4)(["mobile-drawer-item",{active:!a.currentPath}]),onClick:t[0]||(t[0]=e=>s.navigate(""))},[(0,c.bF)(r,{icon:"home",class:"mobile-drawer-item-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileDirectory.rootDirectory")),1)],2),((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.pathParts,(e,t)=>((0,c.uX)(),(0,c.CE)("div",{key:t,class:(0,h.C4)(["mobile-drawer-item",{active:t===s.pathParts.length-1}]),style:(0,h.Tr)({paddingLeft:16*(t+1)+16+"px"}),onClick:e=>s.navigate(s.pathParts.slice(0,t+1).join("/"))},[(0,c.bF)(r,{icon:"folder",class:"mobile-drawer-item-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e),1)],14,O))),128)),a.currentPath?((0,c.uX)(),(0,c.CE)("div",{key:0,class:"mobile-drawer-back",onClick:t[1]||(t[1]=(...e)=>s.goBack&&s.goBack(...e))},[(0,c.bF)(r,{icon:"arrow-left",class:"mobile-drawer-item-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileDirectory.goBack")),1)])):(0,c.Q3)("",!0)])])])):(0,c.Q3)("",!0)]),_:1})])}a(18111),a(22489);var M={name:"MobileDirectoryDrawer",props:{modelValue:{type:Boolean,default:!1},currentPath:{type:String,default:""}},emits:["update:modelValue","navigate","goBack"],computed:{pathParts(){return this.currentPath.split("/").filter(Boolean)}},methods:{close(){this.$emit("update:modelValue",!1)},navigate(e){this.$emit("navigate",e),this.close()},goBack(){this.$emit("goBack"),this.close()}}};const V=(0,A.A)(M,[["render",N],["__scopeId","data-v-feeadb1c"]]);var X=V;const j={class:"bottom-sheet-header"},K={class:"bottom-sheet-title"},Z={class:"bottom-sheet-content"};function G(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon");return(0,c.uX)(),(0,c.Wv)(c.Im,{to:"body"},[(0,c.bF)(z.eB,{name:"bottom-sheet"},{default:(0,c.k6)(()=>[a.modelValue?((0,c.uX)(),(0,c.CE)("div",{key:0,class:"bottom-sheet-overlay",onClick:t[9]||(t[9]=(...e)=>s.close&&s.close(...e))},[(0,c.Lk)("div",{class:"bottom-sheet",onClick:t[8]||(t[8]=(0,z.D$)(()=>{},["stop"]))},[(0,c.Lk)("div",j,[t[10]||(t[10]=(0,c.Lk)("div",{class:"bottom-sheet-handle"},null,-1)),(0,c.Lk)("span",K,(0,h.v_)(a.title),1)]),(0,c.Lk)("div",Z,[a.isFolder?((0,c.uX)(),(0,c.CE)(c.FK,{key:1},[(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[5]||(t[5]=e=>s.handleAction("folderCopy"))},[(0,c.bF)(r,{icon:"copy",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.copyLink")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[6]||(t[6]=e=>s.handleAction("move"))},[(0,c.bF)(r,{icon:"file-export",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.moveFolder")),1)])],64)):((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[0]||(t[0]=e=>s.handleAction("detail"))},[(0,c.bF)(r,{icon:"info-circle",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.viewDetail")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[1]||(t[1]=e=>s.handleAction("copy"))},[(0,c.bF)(r,{icon:"copy",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.copyLink")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[2]||(t[2]=e=>s.handleAction("download"))},[(0,c.bF)(r,{icon:"download",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.downloadFile")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[3]||(t[3]=e=>s.handleAction("move"))},[(0,c.bF)(r,{icon:"file-export",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.moveFile")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[4]||(t[4]=e=>s.handleAction("tag"))},[(0,c.bF)(r,{icon:"tags",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.tagManagement")),1)])],64)),(0,c.Lk)("div",{class:"bottom-sheet-item bottom-sheet-danger",onClick:t[7]||(t[7]=e=>s.handleAction("delete"))},[(0,c.bF)(r,{icon:"trash-alt",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(a.isFolder?e.$t("mobileAction.deleteFolder"):e.$t("mobileAction.deleteFile")),1)])])])])):(0,c.Q3)("",!0)]),_:1})])}var H={name:"MobileActionSheet",props:{modelValue:{type:Boolean,default:!1},title:{type:String,default:""},isFolder:{type:Boolean,default:!1}},emits:["update:modelValue","action"],methods:{close(){this.$emit("update:modelValue",!1)},handleAction(e){this.$emit("action",e),this.close()}}};const Q=(0,A.A)(H,[["render",G],["__scopeId","data-v-f5c66568"]]);var q=Q,Y=a(4275),J=a(11012),ee=a(89559),te=(a(85332),a(12687)),ae=(a(18785),a(69655)),ie=(a(2893),a(78507));a(213),a(44114);const ne={class:"ai-tags"},se={class:"ai-toolbar"},re={class:"ai-heading"},oe={class:"ai-heading-icon"},le={key:0,class:"ai-empty"},de={class:"ai-empty-icon"},ce={class:"ai-empty-title"},he={key:1,class:"ai-empty ai-ready"},ue={class:"ai-empty-icon"},fe={class:"ai-empty-title"},me={key:2,class:"ai-progress"},pe={class:"ai-progress-label"},ge={key:3,class:"ai-results"},be={class:"ai-result-heading"},ve={class:"ai-file"},ke={key:1,class:"ai-tag-list"},ye={key:0,class:"ai-empty-title"},we={key:4,class:"ai-footer"},_e={class:"ai-selection"},Fe={class:"ai-footer-actions"};function Ce(e,t,a,n,s,r){const o=(0,c.g2)("font-awesome-icon"),d=ie.R7,u=l.S2,f=ae.ve,m=te.u,p=ee.KR,g=J.mO,b=i.A;return(0,c.bo)(((0,c.uX)(),(0,c.CE)("section",ne,[(0,c.Lk)("div",se,[(0,c.Lk)("div",re,[(0,c.Lk)("span",oe,[(0,c.bF)(o,{icon:"robot"})]),(0,c.Lk)("h4",null,(0,h.v_)(e.$t("aiTags.tab")),1),(0,c.bF)(d,{content:e.$t("aiTags.hint"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"question-circle",class:"help-icon"})]),_:1},8,["content"])]),s.available?((0,c.uX)(),(0,c.Wv)(u,{key:0,type:"primary",loading:s.generating,disabled:a.disabled||s.saving||!a.files.length,onClick:t[0]||(t[0]=e=>r.generate(!1))},{default:(0,c.k6)(()=>[s.generating?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(o,{key:0,icon:"tags"})),(0,c.eW)((0,h.v_)(e.$t("aiTags.generate")),1)]),_:1},8,["loading","disabled"])):(0,c.Q3)("",!0)]),s.loadingConfig||s.available?!s.available||s.rows.length||s.generating?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.CE)("div",he,[(0,c.Lk)("span",ue,[(0,c.bF)(o,{icon:"tags"})]),(0,c.Lk)("span",fe,(0,h.v_)(e.$t("aiTags.ready")),1)])):((0,c.uX)(),(0,c.CE)("div",le,[(0,c.Lk)("span",de,[(0,c.bF)(o,{icon:"cog"})]),(0,c.Lk)("span",ce,(0,h.v_)(s.configError||e.$t("aiTags.disabled")),1),(0,c.bF)(u,{type:"primary",plain:"",onClick:t[1]||(t[1]=t=>e.$router.push("/systemConfig#ai"))},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"cog"}),(0,c.eW)((0,h.v_)(e.$t("aiTags.settings")),1)]),_:1})])),s.generating?((0,c.uX)(),(0,c.CE)("div",me,[(0,c.Lk)("div",pe,[(0,c.Lk)("span",null,(0,h.v_)(e.$t("aiTags.progress",{done:s.completed,total:s.workTotal})),1),(0,c.bF)(u,{size:"small",onClick:r.cancel},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("aiTags.cancel")),1)]),_:1},8,["onClick"])]),(0,c.bF)(f,{percentage:s.workTotal?Math.round(s.completed/s.workTotal*100):0,"show-text":!1,"stroke-width":6},null,8,["percentage"])])):(0,c.Q3)("",!0),s.rows.length?((0,c.uX)(),(0,c.CE)("div",ge,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.rows,t=>((0,c.uX)(),(0,c.CE)("div",{key:t.fileId,class:"ai-result"},[(0,c.Lk)("div",be,[(0,c.bF)(o,{icon:"image",class:"ai-file-icon"}),(0,c.Lk)("span",ve,(0,h.v_)(r.fileName(t.fileId)),1),t.applied?((0,c.uX)(),(0,c.Wv)(m,{key:0,size:"small",type:"success",effect:"light"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"check"}),(0,c.eW)(" "+(0,h.v_)(e.$t("aiTags.saved")),1)]),_:1})):(0,c.Q3)("",!0)]),t.error?((0,c.uX)(),(0,c.Wv)(p,{key:0,title:r.errorText(t.error),type:"error","show-icon":"",closable:!1},null,8,["title"])):((0,c.uX)(),(0,c.CE)("div",ke,[t.applied?((0,c.uX)(!0),(0,c.CE)(c.FK,{key:0},(0,c.pI)(t.selected,e=>((0,c.uX)(),(0,c.Wv)(m,{key:e,type:"success",effect:"light"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1024))),128)):((0,c.uX)(),(0,c.CE)(c.FK,{key:1},[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(t.tags,e=>((0,c.uX)(),(0,c.Wv)(g,{key:e,checked:t.selected.includes(e),"aria-disabled":a.disabled||s.saving||s.generating,onChange:a=>r.toggleTag(t,e)},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["checked","aria-disabled","onChange"]))),128)),t.tags.length?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.CE)("span",ye,(0,h.v_)(e.$t("aiTags.noTags")),1))],64))])),t.saveError?((0,c.uX)(),(0,c.Wv)(p,{key:2,title:t.saveError,type:"warning","show-icon":"",closable:!1,class:"ai-save-error"},null,8,["title"])):(0,c.Q3)("",!0)]))),128))])):(0,c.Q3)("",!0),s.rows.length&&!s.generating?((0,c.uX)(),(0,c.CE)("div",we,[(0,c.Lk)("span",_e,(0,h.v_)(e.$t("aiTags.selection",{count:r.selectedCount})),1),(0,c.Lk)("div",Fe,[r.retryFiles.length?((0,c.uX)(),(0,c.Wv)(u,{key:0,disabled:a.disabled||s.saving,onClick:t[2]||(t[2]=e=>r.generate(!0))},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"redo"}),(0,c.eW)((0,h.v_)(e.$t("aiTags.retry")),1)]),_:1},8,["disabled"])):(0,c.Q3)("",!0),(0,c.bF)(u,{type:"primary",loading:s.saving,disabled:a.disabled||!r.pending.length,onClick:r.apply},{default:(0,c.k6)(()=>[s.saving?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(o,{key:0,icon:"save"})),(0,c.eW)((0,h.v_)(e.$t("aiTags.apply")),1)]),_:1},8,["loading","disabled","onClick"])])])):(0,c.Q3)("",!0)])),[[b,s.loadingConfig]])}a(20116),a(61701),a(18237),a(13579);var Te=a(84344),Se={name:"AITagPanel",props:{files:{type:Array,required:!0},disabled:{type:Boolean,default:!1}},emits:["applied","busy"],data(){return{available:!1,configError:"",loadingConfig:!0,batchSize:3,generating:!1,saving:!1,rows:[],completed:0,workTotal:0}},computed:{fileSignature(){return JSON.stringify(this.files.map(e=>e.name))},selectedCount(){return this.pending.reduce((e,t)=>e+t.selected.length,0)},retryFiles(){return this.files.filter(e=>this.rows.some(t=>t.fileId===e.name&&t.error))},pending(){return this.rows.filter(e=>!e.error&&!e.applied&&e.selected.length)}},watch:{fileSignature(){this.cancel(),this.rows=[]}},async mounted(){try{const e=await(0,Te.Lh)("/api/manage/ai/tags");this.available=e.enabled,this.batchSize=e.maxBatchSize}catch(e){this.configError=this.errorText(e)}finally{this.loadingConfig=!1}},beforeUnmount(){this.cancel()},methods:{fileName(e){return this.files.find(t=>t.name===e)?.metadata?.FileName||e},errorText(e){return(0,Te.wt)(e,this.$t,this.$te)},toggleTag(e,t){this.disabled||this.saving||this.generating||(e.selected=e.selected.includes(t)?e.selected.filter(e=>e!==t):[...e.selected,t])},cancel(){this.controller?.abort()},async generate(e){if(this.disabled||this.generating||this.saving)return;const t=e?this.retryFiles:[...this.files],a=this.fileSignature;e||(this.rows=[]);const i=new AbortController;this.controller=i,this.generating=!0,this.completed=0,this.workTotal=t.length,this.$emit("busy",!0);try{await(0,Te.hP)(t,{signal:i.signal,batchSize:this.batchSize,onResult:e=>{if(i.signal.aborted||a!==this.fileSignature)return;const t={...e,selected:[...e.tags||[]],applied:!1,saveError:""},n=this.rows.findIndex(t=>t.fileId===e.fileId);-1===n?this.rows.push(t):this.rows.splice(n,1,t),this.completed++}})}catch(n){if(a!==this.fileSignature)return;if("AbortError"===n.name)for(const e of t)if(!this.rows.some(t=>t.fileId===e.name&&!t.error)){const t=this.rows.findIndex(t=>t.fileId===e.name),a={fileId:e.name,error:{message:"CANCELLED"},selected:[],applied:!1};-1===t?this.rows.push(a):"CANCELLED"===this.rows[t].error?.message&&this.rows.splice(t,1,a)}"AbortError"!==n.name&&this.$message.error(this.errorText(n))}finally{this.generating=!1,this.$emit("busy",!1)}},async apply(){if(!(this.disabled||this.saving||this.generating)){this.saving=!0,this.$emit("busy",!0);try{await(0,Te.EY)(this.pending.map(e=>({fileId:e.fileId,tags:e.selected,sourceIdentity:e.sourceIdentity,repairIndex:!!e.indexPending})),e=>{const t=this.rows.find(t=>t.fileId===e.fileId);t&&(t.indexPending=!!e.indexPending,t.applied=e.saved&&!e.indexPending,t.saveError=e.indexPending?this.$t("aiTags.indexPending"):e.error?this.errorText(e.error):"",e.saved&&this.$emit("applied",[e]))})}catch(e){this.$message.error(this.errorText(e))}finally{this.saving=!1,this.$emit("busy",!1)}}}}};const Le=(0,A.A)(Se,[["render",Ce],["__scopeId","data-v-954f5f34"]]);var Ee=Le;const $e={class:"batch-tag-container"},xe={class:"tab-content"},De={class:"tab-description"},Ie={class:"input-section"},Ae={key:0,class:"suggestions-panel"},Pe=["onClick"],Be={class:"tags-to-add-section"},ze={key:0,class:"tags-container"},Ue={key:1,class:"empty-message"},Re={class:"action-buttons"},We={class:"tab-content"},Oe={class:"tab-description"},Ne={key:0,class:"common-tags-section"},Me={class:"tags-container"},Ve={key:1,class:"empty-message"},Xe={class:"tab-content"},je={class:"tab-description"},Ke={class:"action-buttons"},Ze={class:"tab-content ai-tab-content"};function Ge(e,t,a,i,n,s){const o=(0,c.g2)("font-awesome-icon"),u=l.S2,f=ee.KR,m=d.WK,p=te.u,g=Y.v$,b=Ee,v=Y.q,k=r.kZ;return(0,c.uX)(),(0,c.Wv)(k,{title:e.$t("batchTag.title"),modelValue:s.visible,"onUpdate:modelValue":t[3]||(t[3]=e=>s.visible=e),width:s.dialogWidth,"before-close":s.beforeClose,onClose:s.handleClose},{default:(0,c.k6)(()=>[(0,c.Lk)("div",$e,[n.pendingIndexIds.length?((0,c.uX)(),(0,c.Wv)(f,{key:0,title:e.$t("tagManagement.indexPending"),type:"warning","show-icon":"",closable:!1},{default:(0,c.k6)(()=>[(0,c.bF)(u,{size:"small",loading:n.loading,disabled:n.aiBusy,onClick:s.repairIndex},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"redo"}),(0,c.eW)(" "+(0,h.v_)(e.$t("aiTags.retry")),1)]),_:1},8,["loading","disabled","onClick"])]),_:1},8,["title"])):(0,c.Q3)("",!0),(0,c.bF)(v,{modelValue:n.activeTab,"onUpdate:modelValue":t[2]||(t[2]=e=>n.activeTab=e),type:"border-card","before-leave":s.beforeTabChange},{default:(0,c.k6)(()=>[(0,c.bF)(g,{label:e.$t("batchTag.addTab"),name:"add"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",xe,[(0,c.Lk)("p",De,(0,h.v_)(e.$t("batchTag.addDescription",{count:s.fileCount})),1),(0,c.Lk)("div",Ie,[(0,c.bF)(m,{modelValue:n.inputTag,"onUpdate:modelValue":t[0]||(t[0]=e=>n.inputTag=e),disabled:n.loading||n.aiBusy,placeholder:e.$t("batchTag.inputPlaceholder"),onKeyup:(0,z.jR)(s.handleAddInputTag,["enter"]),onInput:s.handleInputChange,clearable:""},{append:(0,c.k6)(()=>[(0,c.bF)(u,{onClick:s.handleAddInputTag,type:"primary",disabled:n.loading||n.aiBusy},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"plus"})]),_:1},8,["onClick","disabled"])]),_:1},8,["modelValue","disabled","placeholder","onKeyup","onInput"]),n.showSuggestions&&n.suggestions.length>0?((0,c.uX)(),(0,c.CE)("div",Ae,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.suggestions,e=>((0,c.uX)(),(0,c.CE)("div",{key:e,class:"suggestion-item",onClick:t=>s.selectSuggestion(e)},(0,h.v_)(e),9,Pe))),128))])):(0,c.Q3)("",!0)]),(0,c.Lk)("div",Be,[(0,c.Lk)("h4",null,(0,h.v_)(e.$t("batchTag.pendingTags")),1),n.tagsToAdd.length>0?((0,c.uX)(),(0,c.CE)("div",ze,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.tagsToAdd,e=>((0,c.uX)(),(0,c.Wv)(p,{key:e,closable:!n.loading&&!n.aiBusy,onClose:t=>s.removeFromToAdd(e),class:"tag-item"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["closable","onClose"]))),128))])):((0,c.uX)(),(0,c.CE)("div",Ue,(0,h.v_)(e.$t("batchTag.noPendingTags")),1))]),(0,c.Lk)("div",Re,[(0,c.bF)(u,{type:"primary",onClick:s.executeAddTags,loading:n.loading,disabled:0===n.tagsToAdd.length},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("batchTag.addToAllFiles")),1)]),_:1},8,["onClick","loading","disabled"])])])]),_:1},8,["label"]),(0,c.bF)(g,{label:e.$t("batchTag.removeTab"),name:"remove"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",We,[(0,c.Lk)("p",Oe,(0,h.v_)(e.$t("batchTag.removeDescription")),1),n.commonTags.length>0?((0,c.uX)(),(0,c.CE)("div",Ne,[(0,c.Lk)("h4",null,(0,h.v_)(e.$t("batchTag.commonTags")),1),(0,c.Lk)("div",Me,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.commonTags,e=>((0,c.uX)(),(0,c.Wv)(p,{key:e,closable:!n.loading&&!n.aiBusy,onClose:t=>s.handleRemoveCommonTag(e),class:"tag-item",type:"warning"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["closable","onClose"]))),128))])])):((0,c.uX)(),(0,c.CE)("div",Ve,(0,h.v_)(e.$t("batchTag.noCommonTags")),1))])]),_:1},8,["label"]),(0,c.bF)(g,{label:e.$t("batchTag.clearTab"),name:"clear"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",Xe,[(0,c.Lk)("p",je,(0,h.v_)(e.$t("batchTag.clearDescription",{count:s.fileCount})),1),(0,c.bF)(f,{title:e.$t("batchTag.clearWarningTitle"),type:"warning",description:e.$t("batchTag.clearWarningDesc"),closable:!1,style:{"margin-bottom":"20px"},center:""},null,8,["title","description"]),(0,c.Lk)("div",Ke,[(0,c.bF)(u,{type:"danger",onClick:s.handleClearAllTags,loading:n.loading},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("batchTag.confirmClearAll")),1)]),_:1},8,["onClick","loading"])])])]),_:1},8,["label"]),(0,c.bF)(g,{label:e.$t("aiTags.tab"),name:"ai",lazy:""},{default:(0,c.k6)(()=>[(0,c.Lk)("div",Ze,[s.visible?((0,c.uX)(),(0,c.Wv)(b,{key:0,files:s.selectedFilesOnly,disabled:n.loading,onBusy:t[1]||(t[1]=e=>n.aiBusy=e),onApplied:s.handleAIResults},null,8,["files","disabled","onApplied"])):(0,c.Q3)("",!0)])]),_:1},8,["label"])]),_:1},8,["modelValue","before-leave"])])]),_:1},8,["title","modelValue","width","before-close","onClose"])}a(81148),a(17642),a(58004),a(33853),a(45876),a(32475),a(15024),a(31698);var He=a(51219),Qe=a(12933),qe={name:"BatchTagDialog",components:{AITagPanel:Ee},props:{modelValue:{type:Boolean,default:!1},selectedFiles:{type:Array,required:!0,default:()=>[]}},emits:["update:modelValue","tagsUpdated"],data(){return{activeTab:"add",inputTag:"",tagsToAdd:[],commonTags:[],suggestions:[],showSuggestions:!1,loading:!1,pendingIndexIds:[],aiBusy:!1,debounceTimer:null}},computed:{visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return"min(600px, 90vw)"},selectedFilesOnly(){return this.selectedFiles.filter(e=>!e.isFolder)},fileCount(){return this.selectedFilesOnly.length},fileIds(){return this.selectedFilesOnly.map(e=>e.name)}},watch:{visible(e){e?this.loadCommonTags():this.resetData()},activeTab(e){"remove"===e&&this.loadCommonTags()}},beforeUnmount(){clearTimeout(this.debounceTimer)},methods:{beforeClose(e){this.aiBusy||this.loading||e()},beforeTabChange(){return!this.aiBusy&&!this.loading},handleAIResults(e){this.updateSavedTags(e)},updateSavedTags(e){const t=new Set(this.pendingIndexIds);for(const a of e)a.saved&&(a.indexPending?t.add(a.fileId):t.delete(a.fileId));this.pendingIndexIds=[...t],this.$emit("tagsUpdated",e),this.loadCommonTags(e)},finishTagOperation(e,t){return this.updateSavedTags(e.results),e.success?He.nk.success(this.$t(t,{count:e.updated})):He.nk.warning(this.$t("batchTag.partialSave",{saved:e.results.filter(e=>e.saved&&!e.indexPending).length,total:e.results.length})),e.success},async repairIndex(){if(!this.loading&&!this.aiBusy){this.loading=!0;try{const e=await(0,D.A)("/api/manage/tags/batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileIds:this.pendingIndexIds,tags:[],action:"add",repairIndexIds:this.pendingIndexIds})});if(!e.ok)throw new Error;this.finishTagOperation(await e.json(),"batchTag.addSuccess")}catch{He.nk.error(this.$t("batchTag.addFailed"))}finally{this.loading=!1}}},resetData(){this.tagsToAdd=[],this.inputTag="",this.showSuggestions=!1,this.activeTab="add",this.pendingIndexIds=[]},loadCommonTags(e=[]){const t=new Map(e.filter(e=>e.saved).map(e=>[e.fileId,e.tags])),a=this.selectedFilesOnly.map(e=>t.get(e.name)||e.metadata?.Tags||[]);this.commonTags=a.length?a[0].filter(e=>a.every(t=>t.includes(e))):[]},handleInputChange(){clearTimeout(this.debounceTimer),this.inputTag&&0!==this.inputTag.trim().length?this.debounceTimer=setTimeout(()=>{this.fetchSuggestions()},300):this.showSuggestions=!1},async fetchSuggestions(){try{const e=this.inputTag.trim().toLowerCase(),t=await(0,D.A)(`/api/manage/tags/autocomplete?prefix=${encodeURIComponent(e)}&limit=10`,{method:"GET"});if(t.ok){const e=await t.json();this.suggestions=(e.tags||[]).filter(e=>!this.tagsToAdd.includes(e)),this.showSuggestions=this.suggestions.length>0}}catch(e){console.error("Error fetching suggestions:",e)}},selectSuggestion(e){this.inputTag=e,this.showSuggestions=!1,this.handleAddInputTag()},handleAddInputTag(){if(this.loading||this.aiBusy)return;const e=this.inputTag.trim();if(e){if(this.tagsToAdd.includes(e))return He.nk.warning(this.$t("batchTag.tagAlreadyInList")),this.inputTag="",void(this.showSuggestions=!1);this.tagsToAdd.push(e),this.inputTag="",this.showSuggestions=!1}},removeFromToAdd(e){if(this.loading||this.aiBusy)return;const t=this.tagsToAdd.indexOf(e);t>-1&&this.tagsToAdd.splice(t,1)},async executeAddTags(){if(!this.loading&&!this.aiBusy)if(0!==this.tagsToAdd.length){this.loading=!0;try{const e=await(0,D.A)("/api/manage/tags/batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileIds:this.fileIds,repairIndexIds:this.pendingIndexIds,action:"add",tags:this.tagsToAdd})});if(!e.ok)throw new Error(this.$t("batchTag.addFailed"));{const t=await e.json();this.finishTagOperation(t,"batchTag.addSuccess")&&(this.tagsToAdd=[])}}catch(e){console.error("Error adding tags:",e),He.nk.error(this.$t("batchTag.addFailed"))}finally{this.loading=!1}}else He.nk.warning(this.$t("batchTag.pleaseAddTags"))},async handleRemoveCommonTag(e){if(!this.loading&&!this.aiBusy){this.loading=!0;try{const t=await(0,D.A)("/api/manage/tags/batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileIds:this.fileIds,repairIndexIds:this.pendingIndexIds,action:"remove",tags:[e]})});if(!t.ok)throw new Error(this.$t("batchTag.removeFailed"));{const e=await t.json();this.finishTagOperation(e,"batchTag.removeSuccess")}}catch(t){console.error("Error removing tag:",t),He.nk.error(this.$t("batchTag.removeFailed"))}finally{this.loading=!1}}},handleClearAllTags(){this.loading||this.aiBusy||Qe.s.confirm(this.$t("batchTag.clearConfirmMessage",{count:this.fileCount}),this.$t("batchTag.clearConfirmTitle"),{confirmButtonText:this.$t("batchTag.clearConfirmOk"),cancelButtonText:this.$t("batchTag.clearConfirmCancel"),type:"warning"}).then(()=>{this.executeClearTags()}).catch(()=>{He.nk.info(this.$t("batchTag.clearCancelled"))})},async executeClearTags(){if(!this.loading&&!this.aiBusy){this.loading=!0;try{const e=await(0,D.A)("/api/manage/tags/batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileIds:this.fileIds,repairIndexIds:this.pendingIndexIds,action:"set",tags:[]})});if(!e.ok)throw new Error(this.$t("batchTag.clearFailed"));{const t=await e.json();this.finishTagOperation(t,"batchTag.clearSuccess")}}catch(e){console.error("Error clearing tags:",e),He.nk.error(this.$t("batchTag.clearFailed"))}finally{this.loading=!1}}},handleClose(){this.aiBusy||this.loading||(this.visible=!1)}}};const Ye=(0,A.A)(qe,[["render",Ge],["__scopeId","data-v-2bcde7ae"]]);var Je=Ye,et=a(813);a(34896);const tt={class:"tag-management-container"},at={class:"input-section"},it={key:0,class:"suggestions-panel"},nt=["onClick"],st={class:"current-tags-section"},rt={key:0,class:"tags-container"},ot={key:1,class:"empty-message"},lt={class:"popular-tags-section"},dt={key:0,class:"tags-container"},ct={key:1,class:"empty-message"},ht={key:2,class:"empty-message"},ut={class:"dialog-footer"};function ft(e,t,a,i,n,s){const o=(0,c.g2)("font-awesome-icon"),u=l.S2,f=d.WK,m=te.u,p=(0,c.g2)("Loading"),g=et.tk,b=ee.KR,v=Ee,k=r.kZ;return(0,c.uX)(),(0,c.Wv)(k,{title:e.$t("tagManagement.title"),modelValue:s.visible,"onUpdate:modelValue":t[2]||(t[2]=e=>s.visible=e),width:s.dialogWidth,"before-close":s.beforeClose,onClose:s.handleClose},{footer:(0,c.k6)(()=>[(0,c.Lk)("span",ut,[(0,c.bF)(u,{disabled:n.aiBusy||n.loading,onClick:s.handleClose},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("tagManagement.close")),1)]),_:1},8,["disabled","onClick"])])]),default:(0,c.k6)(()=>[(0,c.Lk)("div",tt,[(0,c.Lk)("div",at,[(0,c.bF)(f,{modelValue:n.inputTag,"onUpdate:modelValue":t[0]||(t[0]=e=>n.inputTag=e),disabled:n.aiBusy||n.loading,placeholder:e.$t("tagManagement.inputPlaceholder"),onKeyup:(0,z.jR)(s.handleAddTag,["enter"]),onInput:s.handleInputChange,clearable:""},{append:(0,c.k6)(()=>[(0,c.bF)(u,{onClick:s.handleAddTag,type:"primary",disabled:n.aiBusy||n.loading},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"plus"})]),_:1},8,["onClick","disabled"])]),_:1},8,["modelValue","disabled","placeholder","onKeyup","onInput"]),n.showSuggestions&&n.suggestions.length>0?((0,c.uX)(),(0,c.CE)("div",it,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.suggestions,e=>((0,c.uX)(),(0,c.CE)("div",{key:e,class:"suggestion-item",onClick:t=>s.selectSuggestion(e)},(0,h.v_)(e),9,nt))),128))])):(0,c.Q3)("",!0)]),(0,c.Lk)("div",st,[(0,c.Lk)("h4",null,(0,h.v_)(e.$t("tagManagement.currentTags")),1),n.currentTags.length>0?((0,c.uX)(),(0,c.CE)("div",rt,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.currentTags,e=>((0,c.uX)(),(0,c.Wv)(m,{key:e,closable:!n.aiBusy&&!n.loading,onClose:t=>s.handleRemoveTag(e),class:"tag-item"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["closable","onClose"]))),128))])):((0,c.uX)(),(0,c.CE)("div",ot,(0,h.v_)(e.$t("tagManagement.noTags")),1))]),(0,c.Lk)("div",lt,[(0,c.Lk)("h4",null,(0,h.v_)(e.$t("tagManagement.popularTags")),1),n.popularTags.length>0?((0,c.uX)(),(0,c.CE)("div",dt,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.popularTags,e=>((0,c.uX)(),(0,c.Wv)(m,{key:e,onClick:t=>s.handleAddPopularTag(e),class:"tag-item clickable",type:"info"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClick"]))),128))])):n.loadingPopularTags?((0,c.uX)(),(0,c.CE)("div",ct,[(0,c.bF)(g,{class:"is-loading"},{default:(0,c.k6)(()=>[(0,c.bF)(p)]),_:1}),(0,c.eW)(" "+(0,h.v_)(e.$t("tagManagement.loading")),1)])):((0,c.uX)(),(0,c.CE)("div",ht,(0,h.v_)(e.$t("tagManagement.noPopularTags")),1))]),n.indexPending?((0,c.uX)(),(0,c.Wv)(b,{key:0,title:e.$t("tagManagement.indexPending"),type:"warning","show-icon":"",closable:!1},{default:(0,c.k6)(()=>[(0,c.bF)(u,{size:"small",loading:n.loading,disabled:n.aiBusy,onClick:s.repairIndex},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"redo"}),(0,c.eW)(" "+(0,h.v_)(e.$t("aiTags.retry")),1)]),_:1},8,["loading","disabled","onClick"])]),_:1},8,["title"])):(0,c.Q3)("",!0),s.visible?((0,c.uX)(),(0,c.Wv)(v,{key:1,class:"single-ai-panel",files:s.aiFiles,disabled:n.loading,onBusy:t[1]||(t[1]=e=>n.aiBusy=e),onApplied:s.handleAIResults},null,8,["files","disabled","onApplied"])):(0,c.Q3)("",!0)])]),_:1},8,["title","modelValue","width","before-close","onClose"])}var mt=a(57477),pt={name:"TagManagementDialog",components:{Loading:mt.Loading,AITagPanel:Ee},props:{modelValue:{type:Boolean,default:!1},fileId:{type:String,required:!0},fileMetadata:{type:Object,default:()=>({})}},emits:["update:modelValue","tagsUpdated"],data(){return{currentTags:[],inputTag:"",suggestions:[],popularTags:[],showSuggestions:!1,loading:!1,indexPending:!1,aiBusy:!1,loadingPopularTags:!1,debounceTimer:null}},computed:{aiFiles(){return this.fileId?[{name:this.fileId,metadata:this.fileMetadata}]:[]},visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return"min(500px, 90vw)"}},watch:{visible(e){e&&(this.loadFileTags(),this.loadPopularTags())}},beforeUnmount(){clearTimeout(this.debounceTimer)},methods:{beforeClose(e){this.aiBusy||this.loading||e()},handleAIResults(e){const t=e.find(e=>e.fileId===this.fileId);t&&(this.currentTags=t.tags,this.$emit("tagsUpdated",t.tags))},async repairIndex(){if(!this.aiBusy&&!this.loading){this.loading=!0;try{const e=await(0,Te.Lh)(`/api/manage/tags/${encodeURIComponent(this.fileId)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"add",tags:[],repairIndex:!0})});this.currentTags=e.tags,this.indexPending=!!e.indexPending,this.$emit("tagsUpdated",this.currentTags)}catch(e){He.nk.error((0,Te.wt)(e,this.$t,this.$te))}finally{this.loading=!1}}},async loadFileTags(){this.loading=!0;try{const e=await(0,D.A)(`/api/manage/tags/${encodeURIComponent(this.fileId)}`,{method:"GET"});if(!e.ok)throw new Error("Failed to load tags");{const t=await e.json();this.currentTags=t.tags||[]}}catch(e){console.error("Error loading file tags:",e),He.nk.error(this.$t("tagManagement.loadFailed"))}finally{this.loading=!1}},async loadPopularTags(){this.loadingPopularTags=!0;try{const e=await(0,D.A)("/api/manage/tags/autocomplete?limit=20",{method:"GET"});if(e.ok){const t=await e.json();this.popularTags=(t.tags||[]).filter(e=>!this.currentTags.includes(e))}}catch(e){console.error("Error loading popular tags:",e)}finally{this.loadingPopularTags=!1}},handleInputChange(){clearTimeout(this.debounceTimer),this.inputTag&&0!==this.inputTag.trim().length?this.debounceTimer=setTimeout(()=>{this.fetchSuggestions()},300):this.showSuggestions=!1},async fetchSuggestions(){try{const e=this.inputTag.trim().toLowerCase(),t=await(0,D.A)(`/api/manage/tags/autocomplete?prefix=${encodeURIComponent(e)}&limit=10`,{method:"GET"});if(t.ok){const e=await t.json();this.suggestions=(e.tags||[]).filter(e=>!this.currentTags.includes(e)),this.showSuggestions=this.suggestions.length>0}}catch(e){console.error("Error fetching suggestions:",e)}},selectSuggestion(e){this.inputTag=e,this.showSuggestions=!1,this.handleAddTag()},async handleAddTag(){if(this.aiBusy||this.loading)return;const e=this.inputTag.trim();if(e){if(this.currentTags.includes(e))return He.nk.warning(this.$t("tagManagement.tagExists")),this.inputTag="",void(this.showSuggestions=!1);this.loading=!0;try{const t=await(0,D.A)(`/api/manage/tags/${encodeURIComponent(this.fileId)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"add",repairIndex:this.indexPending,tags:[e]})});if(t.ok){const e=await t.json();this.currentTags=e.tags||[],this.indexPending=!!e.indexPending,this.inputTag="",this.showSuggestions=!1,e.indexPending||He.nk.success(this.$t("tagManagement.addSuccess")),this.$emit("tagsUpdated",this.currentTags),this.loadPopularTags()}else{const e=await t.json();He.nk.error((0,Te.wt)(e.error||{code:"INTERNAL_ERROR"},this.$t,this.$te))}}catch(t){console.error("Error adding tag:",t),He.nk.error(this.$t("tagManagement.addFailed"))}finally{this.loading=!1}}},async handleRemoveTag(e){if(!this.aiBusy&&!this.loading){this.loading=!0;try{const t=await(0,D.A)(`/api/manage/tags/${encodeURIComponent(this.fileId)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"remove",repairIndex:this.indexPending,tags:[e]})});if(!t.ok)throw new Error(this.$t("tagManagement.removeFailed"));{const e=await t.json();this.currentTags=e.tags||[],this.indexPending=!!e.indexPending,e.indexPending||He.nk.success(this.$t("tagManagement.removeSuccess")),this.$emit("tagsUpdated",this.currentTags),this.loadPopularTags()}}catch(t){console.error("Error removing tag:",t),He.nk.error(this.$t("tagManagement.removeFailed"))}finally{this.loading=!1}}},handleAddPopularTag(e){this.aiBusy||this.loading||(this.inputTag=e,this.handleAddTag())},handleClose(){this.aiBusy||this.loading||(this.visible=!1,this.inputTag="",this.showSuggestions=!1,this.currentTags=[],this.indexPending=!1,this.popularTags=[])}}};const gt=(0,A.A)(pt,[["render",ft],["__scopeId","data-v-8ac449fe"]]);var bt=gt,vt=a(55558),kt=(a(10456),a(66810)),yt=(a(4885),a(82006)),wt=(a(98642),a(63003),a(59869)),_t=(a(70415),a(73565),a(57009));a(78450);const Ft={class:"detail-actions"},Ct={class:"preview-section"},Tt={class:"preview-content"},St=["src"],Lt=["src"],Et={key:1},$t={key:1},xt={key:0,style:{display:"flex","align-items":"center",gap:"6px"}},Dt={key:1,style:{color:"var(--el-text-color-secondary)"}},It={key:0,style:{display:"flex","flex-wrap":"wrap",gap:"5px"}},At={key:1,style:{color:"var(--el-text-color-secondary)"}};function Pt(e,t,a,i,n,s){const o=(0,c.g2)("font-awesome-icon"),u=l.S2,f=d.WK,m=Y.v$,p=Y.q,g=_t.Zq,b=wt.MF,v=te.u,k=wt.TS,y=yt.xE,w=yt.US,_=r.kZ;return(0,c.uX)(),(0,c.Wv)(_,{title:e.$t("fileDetail.title"),modelValue:s.visible,"onUpdate:modelValue":t[24]||(t[24]=e=>s.visible=e),width:s.dialogWidth},{default:(0,c.k6)(()=>[(0,c.Lk)("div",Ft,[n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:0,type:"primary",onClick:t[0]||(t[0]=t=>e.$emit("download")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"download",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.download")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:1,type:"primary",onClick:t[1]||(t[1]=t=>e.$emit("tagManagement")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"tags",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.tags")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:2,type:"primary",onClick:t[2]||(t[2]=t=>e.$emit("block")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"ban",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.blacklist")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:3,type:"primary",onClick:t[3]||(t[3]=t=>e.$emit("white")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"shield-alt",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.whitelist")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:4,type:"danger",onClick:t[4]||(t[4]=t=>e.$emit("delete")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"trash-alt",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.deleteBtn")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:5,type:"warning",onClick:t[5]||(t[5]=e=>s.startEdit()),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"edit",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.edit")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:6,type:"info",onClick:t[6]||(t[6]=e=>s.openRenameDialog()),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"i-cursor",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.rename")),1)]),_:1})),n.isEditing?((0,c.uX)(),(0,c.Wv)(u,{key:7,type:"success",onClick:t[7]||(t[7]=e=>s.saveMetadata()),round:"",size:"small",class:"detail-action",loading:n.editSaving},{default:(0,c.k6)(()=>[n.editSaving?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(o,{key:0,icon:"save",style:{"margin-right":"3px"}})),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.save")),1)]),_:1},8,["loading"])):(0,c.Q3)("",!0),n.isEditing?((0,c.uX)(),(0,c.Wv)(u,{key:8,onClick:t[8]||(t[8]=e=>s.cancelEdit()),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("fileDetail.cancel")),1)]),_:1})):(0,c.Q3)("",!0)]),(0,c.bF)(p,{modelValue:n.activeTab,"onUpdate:modelValue":t[16]||(t[16]=e=>n.activeTab=e),onTabClick:s.handleTabClick,style:{"margin-bottom":"10px"}},{default:(0,c.k6)(()=>[(0,c.bF)(m,{label:e.$t("fileDetail.originUrl"),name:"originUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.originUrl,"onUpdate:modelValue":t[9]||(t[9]=e=>a.urls.originUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1},8,["label"]),(0,c.bF)(m,{label:"Markdown",name:"mdUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.mdUrl,"onUpdate:modelValue":t[10]||(t[10]=e=>a.urls.mdUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),(0,c.bF)(m,{label:"HTML",name:"htmlUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.htmlUrl,"onUpdate:modelValue":t[11]||(t[11]=e=>a.urls.htmlUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),(0,c.bF)(m,{label:"BBCode",name:"bbUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.bbUrl,"onUpdate:modelValue":t[12]||(t[12]=e=>a.urls.bbUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),a.file?.metadata?.TgFileId?((0,c.uX)(),(0,c.Wv)(m,{key:0,label:"TG File ID",name:"tgId"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.tgId,"onUpdate:modelValue":t[13]||(t[13]=e=>a.urls.tgId=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1})):(0,c.Q3)("",!0),a.file?.metadata?.S3Location?((0,c.uX)(),(0,c.Wv)(m,{key:1,label:"S3 Location",name:"s3Location"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.S3Location,"onUpdate:modelValue":t[14]||(t[14]=e=>a.urls.S3Location=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1})):(0,c.Q3)("",!0),a.file?.metadata?.S3CdnFileUrl?((0,c.uX)(),(0,c.Wv)(m,{key:2,label:"S3 CDN URL",name:"s3CdnFileUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.S3CdnFileUrl,"onUpdate:modelValue":t[15]||(t[15]=e=>a.urls.S3CdnFileUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1})):(0,c.Q3)("",!0)]),_:1},8,["modelValue","onTabClick"]),(0,c.Lk)("div",Ct,[(0,c.Lk)("div",Tt,[s.isVideo?((0,c.uX)(),(0,c.CE)("video",{key:0,src:a.fileLink,autoplay:"",muted:"",loop:"",class:"video-preview",onClick:t[17]||(t[17]=(...e)=>s.openImageLink&&s.openImageLink(...e))},null,8,St)):s.isAudio?((0,c.uX)(),(0,c.CE)("audio",{key:1,src:a.fileLink,controls:"",autoplay:"",class:"audio-preview"},null,8,Lt)):s.isImage?((0,c.uX)(),(0,c.Wv)(g,{key:2,src:a.fileLink,"preview-src-list":[a.fileLink],"preview-teleported":!0,fit:"contain",lazy:"",class:"image-preview"},null,8,["src","preview-src-list"])):((0,c.uX)(),(0,c.Wv)(o,{key:3,icon:"file",class:"file-icon-detail"}))])]),(0,c.bF)(k,{border:"",column:s.descColumn},{default:(0,c.k6)(()=>[(0,c.bF)(b,{label:e.$t("fileDetail.fileNameLabel")},{default:(0,c.k6)(()=>[n.isEditing?((0,c.uX)(),(0,c.Wv)(f,{key:0,modelValue:n.editForm.FileName,"onUpdate:modelValue":t[18]||(t[18]=e=>n.editForm.FileName=e),size:"small",placeholder:e.$t("fileDetail.fileNamePlaceholder")},null,8,["modelValue","placeholder"])):((0,c.uX)(),(0,c.CE)("span",Et,(0,h.v_)(a.file?.metadata?.FileName||a.file?.name),1))]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.fileType")},{default:(0,c.k6)(()=>[n.isEditing?((0,c.uX)(),(0,c.Wv)(f,{key:0,modelValue:n.editForm.FileType,"onUpdate:modelValue":t[19]||(t[19]=e=>n.editForm.FileType=e),size:"small",placeholder:e.$t("fileDetail.fileTypePlaceholder")},null,8,["modelValue","placeholder"])):((0,c.uX)(),(0,c.CE)("span",$t,(0,h.v_)(a.file?.metadata?.FileType||e.$t("fileDetail.unknown")),1))]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.fileSizeLabel")},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(s.fileSizeDisplay),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.imageDimensions")},{default:(0,c.k6)(()=>[s.imageDimensions?((0,c.uX)(),(0,c.CE)("div",xt,[(0,c.Lk)("span",null,(0,h.v_)(a.file?.metadata?.Width)+" × "+(0,h.v_)(a.file?.metadata?.Height),1),(0,c.bF)(v,{size:"small",type:"info",style:{display:"inline-flex","align-items":"center","justify-content":"center"}},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(s.orientationIcon),1)]),_:1})])):((0,c.uX)(),(0,c.CE)("span",Dt,(0,h.v_)(e.$t("fileDetail.noDimensions")),1))]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.uploadTimeLabel")},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(s.uploadTime),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.channelTypeAndName")},{default:(0,c.k6)(()=>[(0,c.bF)(v,{size:"small",type:"info",style:{"margin-right":"6px"}},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(a.file?.metadata?.Channel||e.$t("fileDetail.unknown")),1)]),_:1}),(0,c.Lk)("span",null,(0,h.v_)(a.file?.metadata?.ChannelName||"-"),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.accessStatusAndReview")},{default:(0,c.k6)(()=>[(0,c.bF)(v,{size:"small",type:s.accessTagType,style:{"margin-right":"6px"}},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(s.accessType),1)]),_:1},8,["type"]),(0,c.Lk)("span",null,(0,h.v_)(a.file?.metadata?.Label||e.$t("fileDetail.noTags")),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.uploadIP")},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(a.file?.metadata?.UploadIP||e.$t("fileDetail.unknown")),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.uploadAddressLabel")},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(a.file?.metadata?.UploadAddress||e.$t("fileDetail.unknown")),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.fileTags")},{default:(0,c.k6)(()=>[a.file?.metadata?.Tags&&a.file?.metadata?.Tags.length>0?((0,c.uX)(),(0,c.CE)("div",It,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(a.file?.metadata?.Tags,e=>((0,c.uX)(),(0,c.Wv)(v,{key:e,size:"small"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1024))),128))])):((0,c.uX)(),(0,c.CE)("span",At,(0,h.v_)(e.$t("fileDetail.noTags")),1))]),_:1},8,["label"])]),_:1},8,["column"]),(0,c.bF)(_,{modelValue:n.showRenameDialog,"onUpdate:modelValue":t[23]||(t[23]=e=>n.showRenameDialog=e),title:e.$t("fileDetail.renameTitle"),width:s.dialogWidth,"append-to-body":""},{footer:(0,c.k6)(()=>[(0,c.bF)(u,{onClick:t[21]||(t[21]=e=>s.closeRenameDialog())},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("fileDetail.renameCancel")),1)]),_:1}),(0,c.bF)(u,{type:"primary",onClick:t[22]||(t[22]=e=>s.submitRename()),loading:n.renameSaving,disabled:!n.renameValidation.valid},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("fileDetail.renameConfirm")),1)]),_:1},8,["loading","disabled"])]),default:(0,c.k6)(()=>[(0,c.bF)(w,{onSubmit:(0,z.D$)(s.submitRename,["prevent"])},{default:(0,c.k6)(()=>[(0,c.bF)(y,{label:e.$t("fileDetail.renameLabel"),error:n.renameValidation.error},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:n.renameForm.newFileId,"onUpdate:modelValue":t[20]||(t[20]=e=>n.renameForm.newFileId=e),placeholder:e.$t("fileDetail.renamePlaceholder"),onInput:s.validateRenameInput,clearable:""},null,8,["modelValue","placeholder","onInput"])]),_:1},8,["label","error"])]),_:1},8,["onSubmit"])]),_:1},8,["modelValue","title","width"])]),_:1},8,["title","modelValue","width"])}const Bt=/[\\:\*\?"'<>\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;function zt(e,t){return e&&""!==e.trim()?e===t?{valid:!1,error:"文件名未发生变化"}:e.includes("..")?{valid:!1,error:'文件名不能包含路径穿越字符 ".."'}:/\/\.\//.test(e)||/^\.\//.test(e)?{valid:!1,error:'文件名不能包含单独的 "." 路径段'}:Bt.test(e)?{valid:!1,error:"文件名包含非法字符,请使用合法的文件名格式"}:e.includes("//")?{valid:!1,error:"文件名不能包含连续的斜杠"}:{valid:!0}:{valid:!1,error:"文件名不能为空"}}var Ut={name:"FileDetailDialog",props:{modelValue:{type:Boolean,default:!1},file:{type:Object,default:null},fileLink:{type:String,default:""},urls:{type:Object,default:()=>({originUrl:"",mdUrl:"",htmlUrl:"",bbUrl:"",tgId:"",S3Location:"",S3CdnFileUrl:""})}},emits:["update:modelValue","download","tagManagement","block","white","delete","metadataUpdated","fileRenamed"],watch:{visible(e){e||(this.isEditing=!1,this.editSaving=!1)}},data(){return{activeTab:"originUrl",isEditing:!1,editForm:{FileName:"",FileType:""},editSaving:!1,showRenameDialog:!1,renameForm:{newFileId:""},renameValidation:{valid:!0,error:""},renameSaving:!1}},computed:{visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return window.innerWidth<768?"95%":"900px"},descColumn(){return window.innerWidth<768?1:2},isVideo(){const e=this.file?.metadata?.FileType?.toLowerCase()||"";if(e.includes("video"))return!0;const t=this.file?.name?.toLowerCase()||"";return t.endsWith(".mp4")||t.endsWith(".webm")||t.endsWith(".mov")||t.endsWith(".avi")},isAudio(){const e=this.file?.metadata?.FileType?.toLowerCase()||"";if(e.includes("audio"))return!0;const t=this.file?.name?.toLowerCase()||"";return t.endsWith(".mp3")||t.endsWith(".wav")||t.endsWith(".ogg")||t.endsWith(".flac")},isImage(){const e=this.file?.metadata?.FileType?.toLowerCase()||"";if(e.includes("image"))return!0;const t=this.file?.name?.toLowerCase()||"";return t.endsWith(".jpg")||t.endsWith(".jpeg")||t.endsWith(".png")||t.endsWith(".gif")||t.endsWith(".webp")||t.endsWith(".svg")||t.endsWith(".bmp")||t.endsWith(".avif")||t.endsWith(".heic")||t.endsWith(".heif")},uploadTime(){return this.file?.metadata?.TimeStamp?new Date(this.file.metadata.TimeStamp).toLocaleString():this.$t("fileDetail.unknown")},accessType(){const e=this.file?.metadata?.ListType,t=this.file?.metadata?.Label;return"White"===e?this.$t("fileDetail.accessNormalWhitelist"):"Block"===e?this.$t("fileDetail.accessBlockedBlacklist"):"adult"===t?this.$t("fileDetail.accessBlockedReview"):this.$t("fileDetail.accessNormal")},accessTagType(){const e=this.file?.metadata?.ListType,t=this.file?.metadata?.Label;return"White"===e?"success":"Block"===e||"adult"===t?"danger":"success"},imageDimensions(){const e=this.file?.metadata?.Width,t=this.file?.metadata?.Height;return!(!e||!t)||null},orientationIcon(){const e=this.file?.metadata?.Width,t=this.file?.metadata?.Height;if(!e||!t)return"";const a=e/t;return a>1.1?this.$t("fileDetail.orientationLandscape"):a<.9?this.$t("fileDetail.orientationPortrait"):this.$t("fileDetail.orientationSquare")},fileSizeDisplay(){const e=this.file?.metadata?.FileSizeBytes,t=this.file?.metadata?.FileSize;return e?e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(2)} KB`:`${(e/1024/1024).toFixed(2)} MB`:t?`${t} MB`:this.$t("fileDetail.unknown")}},methods:{handleVideoClick(e){const t=e.target;t.paused?t.play():t.pause()},handleTabClick(){},handleUrlClick(e){const t=e.target;t.select(),navigator.clipboard.writeText(t.value).then(()=>{He.nk.success(this.$t("fileDetail.linkCopied"))})},openImageLink(){this.fileLink&&window.open(this.fileLink,"_blank")},startEdit(){this.editForm.FileName=this.file?.metadata?.FileName||"",this.editForm.FileType=this.file?.metadata?.FileType||"",this.isEditing=!0},cancelEdit(){this.isEditing=!1,this.editForm.FileName=this.file?.metadata?.FileName||"",this.editForm.FileType=this.file?.metadata?.FileType||"",this.editSaving=!1},async saveMetadata(){this.editSaving=!0;try{const e=this.file.name,t=await(0,D.A)(`/api/manage/metadata/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({FileName:this.editForm.FileName,FileType:this.editForm.FileType})});if(!t.ok){const e=await t.json().catch(()=>({}));throw new Error(e.message||this.$t("fileDetail.metadataSaveFailed"))}{const a=await t.json();He.nk.success(this.$t("fileDetail.metadataSaved")),this.isEditing=!1,this.$emit("metadataUpdated",e,a.metadata)}}catch(e){console.error("Error saving metadata:",e),He.nk.error(e.message||this.$t("fileDetail.metadataSaveFailed"))}finally{this.editSaving=!1}},openRenameDialog(){this.renameForm.newFileId=this.file?.name||"",this.renameValidation={valid:!0,error:""},this.showRenameDialog=!0},closeRenameDialog(){this.showRenameDialog=!1,this.renameForm.newFileId="",this.renameValidation={valid:!0,error:""}},validateRenameInput(){const e=zt(this.renameForm.newFileId,this.file?.name||"");this.renameValidation={valid:e.valid,error:e.error||""}},async submitRename(){if(!this.renameSaving&&(this.validateRenameInput(),this.renameValidation.valid)){this.renameSaving=!0;try{const e=this.file.name,t=await(0,D.A)(`/api/manage/rename/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({newFileId:this.renameForm.newFileId})});if(t.ok){const a=await t.json();He.nk.success(this.$t("fileDetail.renameSuccess")),this.showRenameDialog=!1,this.$emit("fileRenamed",e,this.renameForm.newFileId,a.metadata)}else{if(409!==t.status){const e=await t.json().catch(()=>({}));throw new Error(e.message||this.$t("fileDetail.renameFailed"))}this.renameValidation={valid:!1,error:this.$t("fileDetail.renameConflict")}}}catch(e){console.error("Error renaming file:",e),He.nk.error(e.message||this.$t("fileDetail.renameFailed"))}finally{this.renameSaving=!1}}}}};const Rt=(0,A.A)(Ut,[["render",Pt],["__scopeId","data-v-550287cc"]]);var Wt=Rt;const Ot={key:0,class:"batch-floating-bar"},Nt={class:"batch-selection-summary"},Mt={class:"batch-selection-count"},Vt={class:"batch-floating-actions"};function Xt(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon"),o=l.S2,d=ie.R7;return(0,c.uX)(),(0,c.Wv)(z.eB,{name:"batch-toolbar"},{default:(0,c.k6)(()=>[a.selectedCount>0?((0,c.uX)(),(0,c.CE)("div",Ot,[(0,c.bF)(d,{disabled:s.disableTooltip,content:e.$t("dashboard.clearSelection"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.bF)(o,{class:"batch-floating-btn ghost","aria-label":e.$t("dashboard.clearSelection"),onClick:s.handleClear},{default:(0,c.k6)(()=>[(0,c.bF)(r,{icon:"times",class:"batch-floating-icon"})]),_:1},8,["aria-label","onClick"])]),_:1},8,["disabled","content"]),(0,c.bF)(d,{disabled:s.disableTooltip,content:`${a.selectedCount} ${e.$t("dashboard.selectedItems")}`,placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("div",Nt,[(0,c.Lk)("span",Mt,(0,h.v_)(a.selectedCount),1)])]),_:1},8,["disabled","content"]),t[0]||(t[0]=(0,c.Lk)("span",{class:"batch-toolbar-divider"},null,-1)),(0,c.Lk)("div",Vt,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.actions,t=>((0,c.uX)(),(0,c.Wv)(d,{key:t.command,disabled:s.disableTooltip,content:e.$t(t.label),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.bF)(o,{class:(0,h.C4)(["batch-floating-btn",t.className]),"aria-label":e.$t(t.label),onClick:e=>s.handleAction(t.command)},{default:(0,c.k6)(()=>[(0,c.bF)(r,{icon:t.icon,class:"batch-floating-icon"},null,8,["icon"])]),_:2},1032,["class","aria-label","onClick"])]),_:2},1032,["disabled","content"]))),128))])])):(0,c.Q3)("",!0)]),_:1})}var jt={name:"BatchActionBar",props:{selectedCount:{type:Number,required:!0}},emits:["action","clear"],data(){return{actions:[{command:"copy",label:"dashboard.copy",icon:"copy",className:"copy"},{command:"download",label:"dashboard.download",icon:"download",className:"download"},{command:"move",label:"dashboard.move",icon:"file-export",className:"move"},{command:"tagManagement",label:"dashboard.tagManagement",icon:"tags",className:"tag"},{command:"ban",label:"dashboard.addToBlacklist",icon:"ban",className:"ban"},{command:"white",label:"dashboard.addToWhitelist",icon:"shield-alt",className:"white"},{command:"delete",label:"dashboard.delete",icon:"trash-alt",className:"danger"}]}},computed:{disableTooltip(){return window.innerWidth<768}},methods:{handleAction(e){this.$emit("action",e)},handleClear(){this.$emit("clear")}}};const Kt=(0,A.A)(jt,[["render",Xt],["__scopeId","data-v-49301bcc"]]);var Zt=Kt,Gt=a(54880),Ht=(a(4318),a(77815)),Qt=(a(72907),a(98469));a(38736);const qt={class:"list-col list-col-checkbox"},Yt=["src"],Jt=["src"],ea=["title"],ta={class:"filename-start"},aa={class:"filename-end"},ia={class:"list-col list-col-tags"},na={key:1,class:"list-empty"},sa={class:"list-col list-col-channel"},ra={class:"list-col list-col-channel-name"},oa={key:0,class:"channel-name-box"},la={key:1,class:"list-empty"},da={class:"list-col list-col-address"},ca={key:0,class:"address-box"},ha={key:1,class:"list-empty"},ua={class:"list-col list-col-size"},fa={class:"list-col list-col-date"},ma={class:"list-col list-col-actions"};function pa(e,t,a,i,n,s){const r=Qt.dI,o=(0,c.g2)("font-awesome-icon"),l=ie.R7;return(0,c.uX)(),(0,c.CE)("div",{class:"list-item",onTouchstart:t[10]||(t[10]=t=>e.$emit("touchstart",t)),onTouchend:t[11]||(t[11]=t=>e.$emit("touchend",t)),onTouchmove:t[12]||(t[12]=t=>e.$emit("touchmove",t))},[(0,c.Lk)("div",qt,[(0,c.bF)(r,{modelValue:n.localSelected,"onUpdate:modelValue":t[0]||(t[0]=e=>n.localSelected=e),onClick:t[1]||(t[1]=(0,z.D$)(()=>{},["stop"])),onChange:s.handleSelectChange},null,8,["modelValue","onChange"])]),(0,c.Lk)("div",{class:"list-col list-col-preview",onClick:t[2]||(t[2]=(...e)=>s.handlePreviewClick&&s.handlePreviewClick(...e))},[s.isFolder?((0,c.uX)(),(0,c.Wv)(o,{key:0,icon:"folder-open",class:"list-folder-icon"})):s.isVideo?((0,c.uX)(),(0,c.CE)("video",{key:1,src:a.fileLink,class:"list-preview-img",muted:"",preload:"metadata"},null,8,Yt)):s.isImage?((0,c.uX)(),(0,c.CE)("img",{key:2,src:a.fileLink,class:"list-preview-img",loading:"lazy",decoding:"async"},null,8,Jt)):((0,c.uX)(),(0,c.Wv)(o,{key:3,icon:"file",class:"list-file-icon"}))]),(0,c.Lk)("div",{class:"list-col list-col-name",onClick:t[3]||(t[3]=(...e)=>s.handlePreviewClick&&s.handlePreviewClick(...e))},[(0,c.Lk)("span",{class:"filename-ellipsis",title:s.displayName},[(0,c.Lk)("span",ta,(0,h.v_)(s.fileNameStart),1),(0,c.Lk)("span",aa,(0,h.v_)(s.fileNameEnd),1)],8,ea)]),(0,c.Lk)("div",ia,[!s.isFolder&&a.item.metadata?.Tags&&a.item.metadata.Tags.length>0?((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(a.item.metadata.Tags.slice(0,3),(e,t)=>((0,c.uX)(),(0,c.CE)("span",{key:t,class:"color-tag",style:(0,h.Tr)({background:s.getTagColor(t)})},(0,h.v_)(e),5))),128)),a.item.metadata.Tags.length>3?((0,c.uX)(),(0,c.CE)("span",{key:0,class:"color-tag color-tag-more",style:(0,h.Tr)({background:s.getTagColor(3)})},"+"+(0,h.v_)(a.item.metadata.Tags.length-3),5)):(0,c.Q3)("",!0)],64)):((0,c.uX)(),(0,c.CE)("span",na,"-"))]),(0,c.Lk)("div",sa,(0,h.v_)(s.isFolder?"-":a.item.metadata?.Channel||a.item.channelTag||"-"),1),(0,c.Lk)("div",ra,[!s.isFolder&&a.item.metadata?.ChannelName?((0,c.uX)(),(0,c.CE)("div",oa,(0,h.v_)(a.item.metadata.ChannelName),1)):((0,c.uX)(),(0,c.CE)("span",la,"-"))]),(0,c.Lk)("div",da,[!s.isFolder&&a.item.metadata?.UploadIP?((0,c.uX)(),(0,c.CE)("div",ca,(0,h.v_)(a.item.metadata.UploadIP),1)):((0,c.uX)(),(0,c.CE)("span",ha,"-"))]),(0,c.Lk)("div",ua,(0,h.v_)(s.isFolder?"-":s.fileSizeDisplay),1),(0,c.Lk)("div",fa,(0,h.v_)(s.uploadDate),1),(0,c.Lk)("div",ma,[s.isFolder?((0,c.uX)(),(0,c.CE)(c.FK,{key:1},[(0,c.bF)(l,{content:e.$t("dashboard.copyLink"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[7]||(t[7]=(0,z.D$)(t=>e.$emit("folderCopy"),["stop"]))},[(0,c.bF)(o,{icon:"copy"})])]),_:1},8,["content"]),(0,c.bF)(l,{content:e.$t("dashboard.moveFile"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[8]||(t[8]=(0,z.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(o,{icon:"file-export"})])]),_:1},8,["content"])],64)):((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[(0,c.bF)(l,{content:e.$t("dashboard.copyLink"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[4]||(t[4]=(0,z.D$)(t=>e.$emit("copy"),["stop"]))},[(0,c.bF)(o,{icon:"copy"})])]),_:1},8,["content"]),(0,c.bF)(l,{content:e.$t("dashboard.downloadFile"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[5]||(t[5]=(0,z.D$)(t=>e.$emit("download"),["stop"]))},[(0,c.bF)(o,{icon:"download"})])]),_:1},8,["content"]),(0,c.bF)(l,{content:e.$t("dashboard.moveFile"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[6]||(t[6]=(0,z.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(o,{icon:"file-export"})])]),_:1},8,["content"])],64)),(0,c.bF)(l,{content:e.$t("dashboard.delete"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn list-action-danger",onClick:t[9]||(t[9]=(0,z.D$)(t=>e.$emit("delete"),["stop"]))},[(0,c.bF)(o,{icon:"trash-alt"})])]),_:1},8,["content"])])],32)}var ga={name:"FileListItem",props:{item:{type:Object,required:!0},selected:{type:Boolean,default:!1},fileLink:{type:String,default:""}},emits:["update:selected","enter","detail","copy","folderCopy","move","delete","download","touchstart","touchend","touchmove"],data(){return{localSelected:this.selected,tagColors:["#f472b6","#a78bfa","#60a5fa","#34d399"]}},computed:{isFolder(){return this.item.isFolder||this.item.name?.endsWith("/")},isVideo(){const e=this.item.name?.toLowerCase()||"";return e.endsWith(".mp4")||e.endsWith(".webm")||e.endsWith(".mov")||e.endsWith(".avi")},isImage(){const e=this.item.name?.toLowerCase()||"";return e.endsWith(".jpg")||e.endsWith(".jpeg")||e.endsWith(".png")||e.endsWith(".gif")||e.endsWith(".webp")||e.endsWith(".svg")||e.endsWith(".bmp")},displayName(){if(this.isFolder){const e=this.item.name.split("/").filter(Boolean);return e[e.length-1]||this.item.name}return this.item.metadata?.FileName||this.getFileName(this.item.name)},fileNameStart(){const e=this.displayName;return e.length<=20?e:e.slice(0,-8)},fileNameEnd(){const e=this.displayName;return e.length<=20?"":e.slice(-8)},uploadDate(){return this.item.uploaded?new Date(this.item.uploaded).toLocaleDateString():this.item.metadata?.TimeStamp?new Date(this.item.metadata.TimeStamp).toLocaleDateString():"-"},fileSizeDisplay(){const e=this.item.metadata?.FileSizeBytes,t=this.item.metadata?.FileSize;return e?e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(2)} MB`:t?`${t} MB`:"-"}},watch:{selected(e){this.localSelected=e}},methods:{handleSelectChange(e){this.localSelected=e,this.$emit("update:selected",e)},handlePreviewClick(){this.isFolder?this.$emit("enter"):this.$emit("detail")},getFileName(e){const t=(e||"").split("/");return t[t.length-1]},getTagColor(e){return this.tagColors[e%this.tagColors.length]}}};const ba=(0,A.A)(ga,[["render",pa],["__scopeId","data-v-25a3242c"]]);var va=ba,ka=a(70683);a(95385);const ya={class:"file-short-info"},wa={key:0,class:"success-tag"},_a={key:1,class:"fail-tag"},Fa={key:2,class:"success-tag"},Ca={key:3,class:"primary-tag"},Ta={key:0,style:{"margin-left":"2px"}},Sa={key:0,class:"skeleton-wrapper"},La={class:"error-text"},Ea=["src"],$a={class:"error-text"},xa={key:3,class:"file-preview"},Da={class:"card-bottom-overlay"},Ia={class:"file-name-row"},Aa={class:"file-name"},Pa={class:"action-bar"},Ba={class:"action-bar-left"},za={class:"action-bar-right"};function Ua(e,t,a,i,n,s){const r=Qt.dI,o=(0,c.g2)("font-awesome-icon"),l=_t.Zq,d=ie.R7,u=ka.Ik;return(0,c.uX)(),(0,c.Wv)(u,{class:"img-card",onTouchstart:t[17]||(t[17]=t=>e.$emit("touchstart",t)),onTouchend:t[18]||(t[18]=t=>e.$emit("touchend",t)),onTouchmove:t[19]||(t[19]=t=>e.$emit("touchmove",t))},{default:(0,c.k6)(()=>[(0,c.bF)(r,{modelValue:n.localSelected,"onUpdate:modelValue":t[0]||(t[0]=e=>n.localSelected=e),onChange:t[1]||(t[1]=t=>e.$emit("update:selected",n.localSelected))},null,8,["modelValue"]),(0,c.Lk)("div",ya,["White"===a.item.metadata?.ListType?((0,c.uX)(),(0,c.CE)("div",wa,(0,h.v_)(s.channelTag),1)):"Block"===a.item.metadata?.ListType||"adult"===a.item.metadata?.Label?((0,c.uX)(),(0,c.CE)("div",_a,(0,h.v_)(s.channelTag),1)):((0,c.uX)(),(0,c.CE)("div",Fa,(0,h.v_)(s.channelTag),1)),a.item.metadata?.Tags&&a.item.metadata?.Tags.length>0?((0,c.uX)(),(0,c.CE)("div",Ca,[(0,c.bF)(o,{icon:"tag",style:{"margin-right":"3px","font-size":"12px"}}),(0,c.eW)(" "+(0,h.v_)(a.item.metadata.Tags[0])+" ",1),a.item.metadata.Tags.length>1?((0,c.uX)(),(0,c.CE)("span",Ta," (+"+(0,h.v_)(a.item.metadata.Tags.length-1)+") ",1)):(0,c.Q3)("",!0)])):(0,c.Q3)("",!0)]),s.isVideo?((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[n.videoLoading?((0,c.uX)(),(0,c.CE)("div",Sa)):n.videoError?((0,c.uX)(),(0,c.CE)("div",{key:1,class:"error-wrapper",onClick:t[2]||(t[2]=t=>e.$emit("detail"))},[(0,c.bF)(o,{icon:"exclamation-triangle",class:"error-icon"}),(0,c.Lk)("span",La,(0,h.v_)(e.$t("dashboard.loadFailed")),1)])):(0,c.Q3)("",!0),(0,c.bo)((0,c.Lk)("video",{src:a.fileLink,muted:"",loop:"",preload:"metadata",class:"video-preview",onClick:t[3]||(t[3]=(...e)=>s.handleVideoClick&&s.handleVideoClick(...e)),onMouseenter:t[4]||(t[4]=e=>s.handleVideoHover(e,!0)),onMouseleave:t[5]||(t[5]=e=>s.handleVideoHover(e,!1)),onFullscreenchange:t[6]||(t[6]=(...e)=>s.handleFullscreenChange&&s.handleFullscreenChange(...e)),onWebkitfullscreenchange:t[7]||(t[7]=(...e)=>s.handleFullscreenChange&&s.handleFullscreenChange(...e)),onLoadeddata:t[8]||(t[8]=e=>n.videoLoading=!1),onError:t[9]||(t[9]=(...e)=>s.handleVideoError&&s.handleVideoError(...e))},null,40,Ea),[[z.aG,!n.videoLoading&&!n.videoError]])],64)):s.isAudio?((0,c.uX)(),(0,c.CE)("div",{key:1,class:"file-preview audio-card-preview",onClick:t[10]||(t[10]=t=>e.$emit("detail"))},[(0,c.bF)(o,{icon:"music",class:"file-icon audio-icon"})])):s.isImage?((0,c.uX)(),(0,c.Wv)(l,{key:2,"preview-teleported":!0,src:a.fileLink,"preview-src-list":a.previewSrcList,fit:"cover",lazy:"",decoding:"async",class:"image-preview"},{placeholder:(0,c.k6)(()=>[...t[20]||(t[20]=[(0,c.Lk)("div",{class:"skeleton-wrapper"},null,-1)])]),error:(0,c.k6)(()=>[(0,c.Lk)("div",{class:"error-wrapper",onClick:t[11]||(t[11]=(0,z.D$)(t=>e.$emit("detail"),["stop"]))},[(0,c.bF)(o,{icon:"image",class:"error-icon"}),(0,c.Lk)("span",$a,(0,h.v_)(e.$t("dashboard.loadFailed")),1)])]),_:1},8,["src","preview-src-list"])):((0,c.uX)(),(0,c.CE)("div",xa,[(0,c.bF)(o,{icon:"file",class:"file-icon"})])),(0,c.Lk)("div",Da,[(0,c.Lk)("div",Ia,[(0,c.Lk)("span",Aa,(0,h.v_)(s.displayName),1)]),(0,c.Lk)("div",Pa,[(0,c.Lk)("div",Ba,[(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.detail"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[12]||(t[12]=(0,z.D$)(t=>e.$emit("detail"),["stop"]))},[(0,c.bF)(o,{icon:"info-circle"})])]),_:1},8,["disabled","content"])]),(0,c.Lk)("div",za,[(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.moveFile"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[13]||(t[13]=(0,z.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(o,{icon:"file-export"})])]),_:1},8,["disabled","content"]),(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.delete"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn action-btn-danger",onClick:t[14]||(t[14]=(0,z.D$)(t=>e.$emit("delete"),["stop"]))},[(0,c.bF)(o,{icon:"trash-alt"})])]),_:1},8,["disabled","content"]),(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.downloadFile"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[15]||(t[15]=(0,z.D$)(t=>e.$emit("download"),["stop"]))},[(0,c.bF)(o,{icon:"download"})])]),_:1},8,["disabled","content"]),(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.copyLink"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[16]||(t[16]=(0,z.D$)(t=>e.$emit("copy"),["stop"]))},[(0,c.bF)(o,{icon:"copy"})])]),_:1},8,["disabled","content"])])])])]),_:1})}var Ra={name:"FileCard",props:{item:{type:Object,required:!0},selected:{type:Boolean,default:!1},fileLink:{type:String,required:!0},previewSrcList:{type:Array,default:()=>[]},disableTooltip:{type:Boolean,default:!1}},emits:["update:selected","detail","copy","move","delete","download","touchstart","touchend","touchmove"],data(){return{localSelected:this.selected,videoLoading:!0,videoError:!1}},computed:{channelTag(){return this.item.channelTag||""},isVideo(){const e=this.item.metadata?.FileType?.toLowerCase()||"";if(e.includes("video"))return!0;const t=this.item.name?.toLowerCase()||"";return t.endsWith(".mp4")||t.endsWith(".webm")||t.endsWith(".mov")||t.endsWith(".avi")},isAudio(){const e=this.item.metadata?.FileType?.toLowerCase()||"";if(e.includes("audio"))return!0;const t=this.item.name?.toLowerCase()||"";return t.endsWith(".mp3")||t.endsWith(".wav")||t.endsWith(".ogg")||t.endsWith(".flac")},isImage(){const e=this.item.metadata?.FileType?.toLowerCase()||"";if(e.includes("image"))return!0;const t=this.item.name?.toLowerCase()||"";return t.endsWith(".jpg")||t.endsWith(".jpeg")||t.endsWith(".png")||t.endsWith(".gif")||t.endsWith(".webp")||t.endsWith(".svg")||t.endsWith(".bmp")||t.endsWith(".avif")||t.endsWith(".heic")||t.endsWith(".heif")},displayName(){const e=this.item.metadata?.FileName||this.item.name||"",t=e.split("/");return t[t.length-1]}},watch:{selected(e){this.localSelected=e},fileLink(){this.videoLoading=!0,this.videoError=!1}},methods:{handleVideoError(){this.videoLoading=!1,this.videoError=!0},handleVideoClick(e){const t=e.target;t.requestFullscreen?t.requestFullscreen():t.webkitRequestFullscreen?t.webkitRequestFullscreen():t.mozRequestFullScreen?t.mozRequestFullScreen():t.msRequestFullscreen&&t.msRequestFullscreen()},handleFullscreenChange(e){const t=e.target,a=document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement;a?(t.muted=!1,t.loop=!1):(t.muted=!0,t.loop=!0,t.pause(),t.currentTime=0)},handleVideoHover(e,t){const a=e.target;t?a.play().catch(()=>{}):(a.pause(),a.currentTime=0)}}};const Wa=(0,A.A)(Ra,[["render",Ua],["__scopeId","data-v-956fb02e"]]);var Oa=Wa;const Na={class:"card-bottom-overlay"},Ma={class:"file-name-row"},Va={class:"file-name"},Xa={key:0,class:"action-bar"},ja={class:"action-bar-right"};function Ka(e,t,a,i,n,s){const r=Qt.dI,o=(0,c.g2)("font-awesome-icon"),l=ie.R7,d=ka.Ik;return(0,c.uX)(),(0,c.Wv)(d,{class:"img-card folder-card",onTouchstart:t[6]||(t[6]=t=>e.$emit("touchstart",t)),onTouchend:t[7]||(t[7]=t=>e.$emit("touchend",t)),onTouchmove:t[8]||(t[8]=t=>e.$emit("touchmove",t))},{default:(0,c.k6)(()=>[(0,c.bF)(r,{modelValue:n.localSelected,"onUpdate:modelValue":t[0]||(t[0]=e=>n.localSelected=e),onChange:t[1]||(t[1]=t=>e.$emit("update:selected",n.localSelected))},null,8,["modelValue"]),(0,c.Lk)("div",{class:"folder-icon",onClick:t[2]||(t[2]=t=>e.$emit("enter"))},[(0,c.bF)(o,{icon:"folder-open",class:"folder-icon-svg"})]),(0,c.Lk)("div",Na,[(0,c.Lk)("div",Ma,[(0,c.Lk)("span",Va,(0,h.v_)(s.folderName),1)]),a.showActions?((0,c.uX)(),(0,c.CE)("div",Xa,[t[9]||(t[9]=(0,c.Lk)("div",{class:"action-bar-left"},null,-1)),(0,c.Lk)("div",ja,[(0,c.bF)(l,{disabled:a.disableTooltip,content:e.$t("dashboard.copyLink"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[3]||(t[3]=(0,z.D$)(t=>e.$emit("copy"),["stop"]))},[(0,c.bF)(o,{icon:"copy"})])]),_:1},8,["disabled","content"]),(0,c.bF)(l,{disabled:a.disableTooltip,content:e.$t("dashboard.moveFile"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[4]||(t[4]=(0,z.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(o,{icon:"file-export"})])]),_:1},8,["disabled","content"]),(0,c.bF)(l,{disabled:a.disableTooltip,content:e.$t("dashboard.delete"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn action-btn-danger",onClick:t[5]||(t[5]=(0,z.D$)(t=>e.$emit("delete"),["stop"]))},[(0,c.bF)(o,{icon:"trash-alt"})])]),_:1},8,["disabled","content"])])])):(0,c.Q3)("",!0)])]),_:1})}var Za={name:"FolderCard",props:{name:{type:String,required:!0},selected:{type:Boolean,default:!1},showActions:{type:Boolean,default:!0},disableTooltip:{type:Boolean,default:!1}},emits:["update:selected","enter","copy","move","delete","touchstart","touchend","touchmove"],data(){return{localSelected:this.selected}},computed:{folderName(){const e=this.name.split("/").filter(Boolean);return e[e.length-1]||this.name}},watch:{selected(e){this.localSelected=e}}};const Ga=(0,A.A)(Za,[["render",Ka],["__scopeId","data-v-534cf01b"]]);var Ha=Ga;function Qa(e,t,a,i,n,s){return"card"===a.type?((0,c.uX)(!0),(0,c.CE)(c.FK,{key:0},(0,c.pI)(a.count,e=>((0,c.uX)(),(0,c.CE)("div",{key:"skeleton-"+e,class:"skeleton-card"},[...t[0]||(t[0]=[(0,c.Lk)("div",{class:"skeleton-image"},null,-1),(0,c.Lk)("div",{class:"skeleton-info"},[(0,c.Lk)("div",{class:"skeleton-text"})],-1)])]))),128)):"list"===a.type?((0,c.uX)(!0),(0,c.CE)(c.FK,{key:1},(0,c.pI)(a.count,e=>((0,c.uX)(),(0,c.CE)("div",{key:"list-skeleton-"+e,class:"list-item skeleton-list-item"},[...t[1]||(t[1]=[(0,c.Fv)('

',10)])]))),128)):(0,c.Q3)("",!0)}var qa={name:"SkeletonLoader",props:{type:{type:String,default:"card",validator:e=>["card","list"].includes(e)},count:{type:Number,default:15}}};const Ya=(0,A.A)(qa,[["render",Qa],["__scopeId","data-v-070880ec"]]);var Ja=Ya,ei=a(81095),ti=a(62086),ai=(a(40670),a(88830),a(23597),a(58165));a(34396),a(3261);const ii=["aria-checked"];function ni(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon");return(0,c.uX)(),(0,c.CE)("span",{class:(0,h.C4)(["dashboard-checkbox",[`dashboard-checkbox--${a.variant}`,{checked:a.checked,indeterminate:a.indeterminate&&!a.checked}]]),role:"checkbox","aria-checked":s.ariaChecked,tabindex:"0",onClick:t[0]||(t[0]=(...e)=>s.handleClick&&s.handleClick(...e)),onKeydown:[t[1]||(t[1]=(0,z.jR)((0,z.D$)((...e)=>s.handleClick&&s.handleClick(...e),["prevent"]),["enter"])),t[2]||(t[2]=(0,z.jR)((0,z.D$)((...e)=>s.handleClick&&s.handleClick(...e),["prevent"]),["space"]))]},[(0,c.bF)(r,{icon:s.markIcon,class:"dashboard-checkbox-mark"},null,8,["icon"])],42,ii)}var si={name:"DashboardCheckbox",props:{checked:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},variant:{type:String,default:"breadcrumb",validator:e=>["breadcrumb"].includes(e)}},emits:["click"],computed:{ariaChecked(){return this.checked?"true":this.indeterminate?"mixed":"false"},markIcon(){return this.indeterminate&&!this.checked?"minus":"check"}},methods:{handleClick(e){this.$emit("click",e)}}};const ri=(0,A.A)(si,[["render",ni],["__scopeId","data-v-3757bfa7"]]);var oi=ri,li=(a(77128),a(49187),a(77788));a(72099);const di={class:"el-dropdown-link filter-trigger"},ci={class:"filter-section"},hi={class:"filter-title"},ui={class:"filter-options"},fi={class:"filter-section"},mi={class:"filter-title"},pi={class:"filter-options"},gi={class:"filter-section"},bi={class:"filter-title"},vi={class:"filter-options"},ki={class:"filter-section"},yi={class:"filter-title"},wi={class:"filter-options"},_i={class:"filter-section"},Fi={class:"filter-title"},Ci={class:"filter-options"},Ti={key:0,class:"filter-section"},Si={class:"filter-title"},Li={class:"filter-options"},Ei={key:0,class:"channel-divider"},$i={class:"channel-group-title"},xi={class:"filter-actions"};function Di(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon"),o=li.z_,d=Qt.dI,u=Qt.o5,f=l.S2,m=ti.Iy,p=ti.dW;return(0,c.uX)(),(0,c.Wv)(p,{"hide-on-click":!1,trigger:"click",class:"filter-dropdown",ref:"dropdownRef"},{dropdown:(0,c.k6)(()=>[(0,c.bF)(m,{class:"filter-dropdown-menu"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",ci,[(0,c.Lk)("div",hi,(0,h.v_)(e.$t("filter.accessStatus")),1),(0,c.Lk)("div",ui,[(0,c.bF)(u,{modelValue:n.localFilters.accessStatus,"onUpdate:modelValue":t[0]||(t[0]=e=>n.localFilters.accessStatus=e),onChange:t[1]||(t[1]=e=>s.handleFilterChange("accessStatus"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.accessStatusOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"accessStatus-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",fi,[(0,c.Lk)("div",mi,(0,h.v_)(e.$t("filter.blackWhiteList")),1),(0,c.Lk)("div",pi,[(0,c.bF)(u,{modelValue:n.localFilters.listType,"onUpdate:modelValue":t[2]||(t[2]=e=>n.localFilters.listType=e),onChange:t[3]||(t[3]=e=>s.handleFilterChange("listType"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.listTypeOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"listType-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",gi,[(0,c.Lk)("div",bi,(0,h.v_)(e.$t("filter.reviewResult")),1),(0,c.Lk)("div",vi,[(0,c.bF)(u,{modelValue:n.localFilters.label,"onUpdate:modelValue":t[4]||(t[4]=e=>n.localFilters.label=e),onChange:t[5]||(t[5]=e=>s.handleFilterChange("label"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.labelOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"label-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",ki,[(0,c.Lk)("div",yi,(0,h.v_)(e.$t("filter.fileType")),1),(0,c.Lk)("div",wi,[(0,c.bF)(u,{modelValue:n.localFilters.fileType,"onUpdate:modelValue":t[6]||(t[6]=e=>n.localFilters.fileType=e),onChange:t[7]||(t[7]=e=>s.handleFilterChange("fileType"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.fileTypeOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"fileType-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",_i,[(0,c.Lk)("div",Fi,(0,h.v_)(e.$t("filter.channelType")),1),(0,c.Lk)("div",Ci,[(0,c.bF)(u,{modelValue:n.localFilters.channel,"onUpdate:modelValue":t[8]||(t[8]=e=>n.localFilters.channel=e),onChange:t[9]||(t[9]=e=>s.handleFilterChange("channel"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.channelOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"channel-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),a.channelNameOptions.length>0?((0,c.uX)(),(0,c.CE)("div",Ti,[(0,c.Lk)("div",Si,(0,h.v_)(e.$t("filter.channelName")),1),(0,c.Lk)("div",Li,[(0,c.bF)(u,{modelValue:n.localFilters.channelName,"onUpdate:modelValue":t[10]||(t[10]=e=>n.localFilters.channelName=e),onChange:t[11]||(t[11]=e=>s.handleFilterChange("channelName"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.groupedChannelNames,(e,t)=>((0,c.uX)(),(0,c.CE)(c.FK,{key:"group-"+e.type},[t>0?((0,c.uX)(),(0,c.CE)("div",Ei)):(0,c.Q3)("",!0),(0,c.Lk)("div",$i,(0,h.v_)(e.typeLabel),1),((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(e.channels,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"channelName-"+e.type+"-"+e.name,label:e.type+":"+e.name},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.name),1)]),_:2},1032,["label"]))),128))],64))),128))]),_:1},8,["modelValue"])])])):(0,c.Q3)("",!0),(0,c.Lk)("div",xi,[(0,c.bF)(f,{size:"small",onClick:s.clearFilters,disabled:0===s.activeFilterCount},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("filter.clearFilters")),1)]),_:1},8,["onClick","disabled"])])]),_:1})]),default:(0,c.k6)(()=>[(0,c.Lk)("span",di,[(0,c.bF)(o,{value:s.activeFilterCount,hidden:0===s.activeFilterCount,class:"filter-badge"},{default:(0,c.k6)(()=>[(0,c.bF)(r,{icon:"filter",class:"header-icon"})]),_:1},8,["value","hidden"])])]),_:1},512)}a(7588);var Ii={name:"FilterDropdown",props:{filters:{type:Object,default:()=>({accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]})},channelNameOptions:{type:Array,default:()=>[]}},emits:["update:filters","change"],data(){return{localFilters:{accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]}}},computed:{accessStatusOptions(){return[{label:this.$t("filter.normal"),value:"normal"},{label:this.$t("filter.blocked"),value:"blocked"}]},listTypeOptions(){return[{label:this.$t("filter.whiteList"),value:"White"},{label:this.$t("filter.blackList"),value:"Block"},{label:this.$t("filter.notSet"),value:"None"}]},labelOptions(){return[{label:this.$t("filter.normal"),value:"normal"},{label:this.$t("filter.teenContent"),value:"teen"},{label:this.$t("filter.adultContent"),value:"adult"}]},fileTypeOptions(){return[{label:this.$t("filter.image"),value:"image"},{label:this.$t("filter.video"),value:"video"},{label:this.$t("filter.audio"),value:"audio"},{label:this.$t("filter.other"),value:"other"}]},channelOptions(){return[{label:"Telegram",value:"TelegramNew"},{label:"Cloudflare R2",value:"CloudflareR2"},{label:"S3",value:"S3"},{label:"Discord",value:"Discord"},{label:"HuggingFace",value:"HuggingFace"},{label:"WebDAV",value:"WebDAV"},{label:this.$t("filter.externalLink"),value:"External"}]},activeFilterCount(){return Object.values(this.localFilters).reduce((e,t)=>e+t.length,0)},groupedChannelNames(){const e={};return this.channelNameOptions.forEach(t=>{e[t.type]||(e[t.type]={type:t.type,typeLabel:t.typeLabel,channels:[]}),e[t.type].channels.push(t)}),Object.values(e)}},watch:{filters:{handler(e){this.localFilters={accessStatus:Array.isArray(e.accessStatus)?[...e.accessStatus]:[],listType:Array.isArray(e.listType)?[...e.listType]:[],label:Array.isArray(e.label)?[...e.label]:[],fileType:Array.isArray(e.fileType)?[...e.fileType]:[],channel:Array.isArray(e.channel)?[...e.channel]:[],channelName:Array.isArray(e.channelName)?[...e.channelName]:[]}},immediate:!0,deep:!0}},methods:{handleFilterChange(e){this.$emit("update:filters",{...this.localFilters}),this.$emit("change",{type:e,filters:{...this.localFilters}})},clearFilters(){this.localFilters={accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]},this.$emit("update:filters",{...this.localFilters}),this.$emit("change",{type:"clear",filters:{...this.localFilters}})}}};const Ai=(0,A.A)(Ii,[["render",Di],["__scopeId","data-v-42919522"]]);var Pi=Ai,Bi=a(20620);const zi={class:"container"},Ui={class:"header-content admin-header-content"},Ri={class:"search-area"},Wi={class:"search-card"},Oi={class:"actions"},Ni={class:"el-dropdown-link"},Mi={class:"breadcrumb-container"},Vi=["title","aria-pressed"],Xi=["title","aria-pressed"],ji=["title"],Ki={class:"breadcrumb-sort-icon",viewBox:"0 0 30 18","aria-hidden":"true"},Zi={key:0,class:"sort-field-glyph"},Gi={key:1,class:"sort-field-glyph"},Hi={key:2,class:"sort-field-glyph"},Qi={key:3,class:"sort-field-glyph"},qi={key:4,class:"sort-order-glyph",d:"M23 13.5V4.5M19 8.5L23 4.5L27 8.5"},Yi={key:5,class:"sort-order-glyph",d:"M23 4.5V13.5M19 9.5L23 13.5L27 9.5"},Ji={class:"sort-order-wrapper"},en={class:"mobile-directory-path"},tn={class:"breadcrumb desktop-only"},an=["title"],nn={key:1,class:"empty-state"},sn={class:"empty-text"},rn={class:"empty-hint"},on={class:"list-header"},ln={class:"list-col list-col-checkbox"},dn={class:"list-col list-col-preview"},cn={class:"list-col list-col-name"},hn={class:"list-col list-col-tags"},un={class:"list-col list-col-channel"},fn={class:"list-col list-col-channel-name"},mn={class:"list-col list-col-address"},pn={class:"list-col list-col-size"},gn={class:"list-col list-col-date"},bn={class:"list-col list-col-actions"},vn={key:1,class:"empty-state list-empty"},kn={class:"empty-text"},yn={class:"empty-hint"},wn={class:"pagination-container"},_n={class:"pagination-center"},Fn={class:"pagination-right"},Cn={class:"page-total"},Tn={class:"page-jump"},Sn={class:"dialog-section"},Ln={class:"section-header"},En={class:"section-title"},$n={class:"section-content"},xn={class:"dialog-section"},Dn={class:"section-header"},In={class:"section-title"},An={class:"section-content"},Pn={class:"setting-item"},Bn={class:"setting-label"},zn={key:0,class:"setting-item"},Un={class:"setting-label"},Rn={class:"dialog-action"};function Wn(e,t,a,i,n,s){const o=Bi.A,u=(0,c.g2)("font-awesome-icon"),f=d.WK,m=Pi,p=ie.R7,g=Gt.bZ,b=oi,v=kt.Zh,k=kt.MQ,y=ai.fR,w=ti.c6,_=ti.Iy,F=ti.dW,C=ei.WZ,T=ei.vp,S=Ja,L=Ha,E=Oa,$=Qt.dI,x=va,D=Ht.aQ,I=l.S2,A=Gt.ZO,P=Gt.lX,U=Zt,R=Wt,W=kt.ll,O=vt.qi,N=r.kZ,M=bt,V=Je,j=q,K=X,Z=B;return(0,c.uX)(),(0,c.CE)("div",zi,[(0,c.bF)(P,null,{default:(0,c.k6)(()=>[(0,c.bF)(g,null,{default:(0,c.k6)(()=>[(0,c.Lk)("div",Ui,[(0,c.bF)(o,{activeTab:"dashboard"}),(0,c.Lk)("div",Ri,[(0,c.Lk)("div",Wi,[(0,c.bF)(f,{modelValue:n.tempSearch,"onUpdate:modelValue":t[0]||(t[0]=e=>n.tempSearch=e),size:"small",placeholder:e.$t("dashboard.searchPlaceholder"),onKeyup:(0,z.jR)(s.handleSearch,["enter"])},{suffix:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"search",class:"search-icon",onClick:s.handleSearch},null,8,["onClick"])]),_:1},8,["modelValue","placeholder","onKeyup"])]),(0,c.bF)(m,{filters:n.filters,"onUpdate:filters":t[1]||(t[1]=e=>n.filters=e),channelNameOptions:n.channelNameOptions,onChange:s.handleFilterChange},null,8,["filters","channelNameOptions","onChange"])]),(0,c.Lk)("div",Oi,[(0,c.bF)(p,{disabled:s.disableTooltip,content:e.$t("dashboard.linkFormat"),placement:"bottom","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("span",Ni,[(0,c.bF)(u,{icon:"link",class:"header-icon",onClick:t[2]||(t[2]=e=>n.showUrlDialog=!0)})])]),_:1},8,["disabled","content"]),(0,c.bF)(p,{disabled:s.disableTooltip,content:e.$t("dashboard.logout"),placement:"bottom","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"sign-out-alt",class:"header-icon",onClick:s.handleLogout},null,8,["onClick"])]),_:1},8,["disabled","content"])])])]),_:1}),(0,c.bF)(A,{class:(0,h.C4)(["main-container",{"has-batch-toolbar":n.selectedFiles.length>0}])},{default:(0,c.k6)(()=>[(0,c.Lk)("div",Mi,[(0,c.bF)(b,{checked:s.selectPage,indeterminate:s.selectedPageFiles&&!s.selectPage,variant:"breadcrumb",onClick:s.handleSelectPage},null,8,["checked","indeterminate","onClick"]),(0,c.Lk)("div",{class:(0,h.C4)(["breadcrumb-view-toggle",{"is-list":"list"===n.viewMode}]),role:"group"},[(0,c.Lk)("button",{class:(0,h.C4)(["breadcrumb-view-button",{"is-active":"card"===n.viewMode}]),type:"button",title:e.$t("dashboard.cardView"),"aria-pressed":"card"===n.viewMode,onClick:t[3]||(t[3]=e=>s.setViewMode("card"))},[(0,c.bF)(u,{icon:"th-large",class:"breadcrumb-view-icon"})],10,Vi),(0,c.Lk)("button",{class:(0,h.C4)(["breadcrumb-view-button",{"is-active":"list"===n.viewMode}]),type:"button",title:e.$t("dashboard.listView"),"aria-pressed":"list"===n.viewMode,onClick:t[4]||(t[4]=e=>s.setViewMode("list"))},[(0,c.bF)(u,{icon:"list",class:"breadcrumb-view-icon"})],10,Xi)],2),(0,c.bF)(F,{trigger:"click",class:"breadcrumb-sort-dropdown",onCommand:s.setSortField},{dropdown:(0,c.k6)(()=>[(0,c.bF)(_,{class:"sort-dropdown-menu"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",Ji,[(0,c.bF)(k,{modelValue:n.sortOrder,"onUpdate:modelValue":t[5]||(t[5]=e=>n.sortOrder=e),size:"small",onChange:s.setSortOrder},{default:(0,c.k6)(()=>[(0,c.bF)(v,{label:"asc"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("dashboard.sortAsc")),1)]),_:1}),(0,c.bF)(v,{label:"desc"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("dashboard.sortDesc")),1)]),_:1})]),_:1},8,["modelValue","onChange"])]),(0,c.bF)(y,{class:"sort-divider"}),(0,c.bF)(w,{command:"time",class:(0,h.C4)({"is-selected":"time"===n.sortField})},{default:(0,c.k6)(()=>[(0,c.Lk)("span",null,(0,h.v_)(e.$t("dashboard.sortByTime")),1),"time"===n.sortField?((0,c.uX)(),(0,c.Wv)(u,{key:0,icon:"check",class:"sort-field-check"})):(0,c.Q3)("",!0)]),_:1},8,["class"]),(0,c.bF)(w,{command:"size",class:(0,h.C4)({"is-selected":"size"===n.sortField})},{default:(0,c.k6)(()=>[(0,c.Lk)("span",null,(0,h.v_)(e.$t("dashboard.sortBySize")),1),"size"===n.sortField?((0,c.uX)(),(0,c.Wv)(u,{key:0,icon:"check",class:"sort-field-check"})):(0,c.Q3)("",!0)]),_:1},8,["class"]),(0,c.bF)(w,{command:"rawName",class:(0,h.C4)({"is-selected":"rawName"===n.sortField})},{default:(0,c.k6)(()=>[(0,c.Lk)("span",null,(0,h.v_)(e.$t("dashboard.sortByRawName")),1),"rawName"===n.sortField?((0,c.uX)(),(0,c.Wv)(u,{key:0,icon:"check",class:"sort-field-check"})):(0,c.Q3)("",!0)]),_:1},8,["class"]),(0,c.bF)(w,{command:"fileName",class:(0,h.C4)({"is-selected":"fileName"===n.sortField})},{default:(0,c.k6)(()=>[(0,c.Lk)("span",null,(0,h.v_)(e.$t("dashboard.sortByFileName")),1),"fileName"===n.sortField?((0,c.uX)(),(0,c.Wv)(u,{key:0,icon:"check",class:"sort-field-check"})):(0,c.Q3)("",!0)]),_:1},8,["class"])]),_:1})]),default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"breadcrumb-sort-button",type:"button",title:s.sortLabel},[((0,c.uX)(),(0,c.CE)("svg",Ki,["time"===n.sortField?((0,c.uX)(),(0,c.CE)("g",Zi,[...t[32]||(t[32]=[(0,c.Lk)("circle",{cx:"7.5",cy:"9",r:"5.5"},null,-1),(0,c.Lk)("path",{d:"M7.5 5.5V9L10 10.5"},null,-1)])])):"size"===n.sortField?((0,c.uX)(),(0,c.CE)("g",Gi,[...t[33]||(t[33]=[(0,c.Lk)("path",{d:"M2 4H13M2 9H10M2 14H7"},null,-1)])])):"rawName"===n.sortField?((0,c.uX)(),(0,c.CE)("g",Hi,[...t[34]||(t[34]=[(0,c.Lk)("path",{d:"M5.5 3L4 15M11 3L9.5 15M2.5 7H13M2 11H12.5"},null,-1)])])):((0,c.uX)(),(0,c.CE)("g",Qi,[...t[35]||(t[35]=[(0,c.Lk)("path",{d:"M2.5 14L7.5 3L12.5 14M4.3 10H10.7"},null,-1)])])),"asc"===n.sortOrder?((0,c.uX)(),(0,c.CE)("path",qi)):((0,c.uX)(),(0,c.CE)("path",Yi))]))],8,ji)]),_:1},8,["onCommand"]),(0,c.Lk)("div",{class:"mobile-directory-trigger",onClick:t[6]||(t[6]=e=>n.showMobileDirectoryDrawer=!0)},[(0,c.bF)(u,{icon:"folder-open",class:"mobile-directory-icon"}),(0,c.Lk)("span",en,(0,h.v_)(n.currentPath&&n.currentPath.split("/").filter(Boolean).length>0?n.currentPath.split("/").filter(Boolean).pop():e.$t("dashboard.rootDirectory")),1),(0,c.bF)(u,{icon:"chevron-down",class:"mobile-directory-arrow"})]),(0,c.Lk)("div",tn,[(0,c.bF)(T,{separator:"/"},{default:(0,c.k6)(()=>[(0,c.bF)(C,{onClick:t[7]||(t[7]=e=>s.navigateToFolder(""))},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"home",class:"breadcrumb-home-icon"})]),_:1}),((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.currentPath.split("/").filter(Boolean),(e,t)=>((0,c.uX)(),(0,c.Wv)(C,{key:t,onClick:e=>s.navigateToFolder(n.currentPath.split("/").filter(Boolean).slice(0,t+1).join("/"))},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClick"]))),128))]),_:1})]),(0,c.Lk)("span",{class:"stats-badge",title:e.$t("dashboard.totalFiles",{count:e.$data.Number})},[(0,c.bF)(u,{icon:"database",class:"stats-badge-icon"}),(0,c.eW)(" "+(0,h.v_)(n.Number),1)],8,an)]),"card"===n.viewMode?((0,c.uX)(),(0,c.CE)("div",{key:0,class:(0,h.C4)(["content",{"is-drag-selecting":i.isDragging}]),ref:"cardContainerRef",onTouchstartPassive:t[8]||(t[8]=(...e)=>s.handlePageSwipeStart&&s.handlePageSwipeStart(...e)),onTouchendPassive:t[9]||(t[9]=(...e)=>s.handlePageSwipeEnd&&s.handlePageSwipeEnd(...e)),onTouchcancelPassive:t[10]||(t[10]=(...e)=>s.resetPageSwipe&&s.resetPageSwipe(...e))},[n.loading?((0,c.uX)(),(0,c.Wv)(S,{key:0,type:"card",count:n.pageSize},null,8,["count"])):0===s.paginatedTableData.length?((0,c.uX)(),(0,c.CE)("div",nn,[(0,c.bF)(u,{icon:"folder-open",class:"empty-icon"}),(0,c.Lk)("p",sn,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.noMatchingFiles"):e.$t("dashboard.currentDirEmpty")),1),(0,c.Lk)("p",rn,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.adjustSearchHint"):e.$t("dashboard.uploadHint")),1)])):((0,c.uX)(!0),(0,c.CE)(c.FK,{key:2},(0,c.pI)(s.paginatedTableData,(e,t)=>((0,c.uX)(),(0,c.CE)(c.FK,{key:t},[s.isFolder(e)?((0,c.uX)(),(0,c.Wv)(L,{key:0,name:e.name,selected:e.selected,"onUpdate:selected":t=>e.selected=t,showActions:!n.isSearchMode,disableTooltip:s.disableTooltip,onEnter:t=>s.enterFolder(e.name),onCopy:t=>s.handleFolderCopy(e.name),onMove:a=>s.handleMove(t,e.name),onDelete:a=>s.handleDelete(t,e.name),onTouchstart:a=>s.handleFolderTouchStart(e,t),onTouchend:s.handleTouchEnd,onTouchmove:s.handleTouchEnd},null,8,["name","selected","onUpdate:selected","showActions","disableTooltip","onEnter","onCopy","onMove","onDelete","onTouchstart","onTouchend","onTouchmove"])):((0,c.uX)(),(0,c.Wv)(E,{key:1,item:e,selected:e.selected,"onUpdate:selected":t=>e.selected=t,fileLink:s.getFileLink(e.name),previewSrcList:e.previewSrcList,disableTooltip:s.disableTooltip,onDetail:a=>s.openDetailDialog(t,e.name),onCopy:a=>s.handleCopy(t,e.name),onMove:a=>s.handleMove(t,e.name),onDelete:a=>s.handleDelete(t,e.name),onDownload:t=>s.handleDownload(e.name),onTouchstart:a=>s.handleTouchStart(e,t),onTouchend:s.handleTouchEnd,onTouchmove:s.handleTouchEnd},null,8,["item","selected","onUpdate:selected","fileLink","previewSrcList","disableTooltip","onDetail","onCopy","onMove","onDelete","onDownload","onTouchstart","onTouchend","onTouchmove"]))],64))),128))],34)):((0,c.uX)(),(0,c.CE)("div",{key:1,class:(0,h.C4)(["list-view",{"is-drag-selecting":i.isDragging}]),ref:"listContainerRef",onTouchstartPassive:t[12]||(t[12]=(...e)=>s.handlePageSwipeStart&&s.handlePageSwipeStart(...e)),onTouchendPassive:t[13]||(t[13]=(...e)=>s.handlePageSwipeEnd&&s.handlePageSwipeEnd(...e)),onTouchcancelPassive:t[14]||(t[14]=(...e)=>s.resetPageSwipe&&s.resetPageSwipe(...e))},[(0,c.Lk)("div",on,[(0,c.Lk)("div",ln,[(0,c.bF)($,{"model-value":s.isSelectAll,indeterminate:s.isIndeterminate,onClick:t[11]||(t[11]=(0,z.D$)(()=>{},["stop"])),onChange:s.handleSelectAllPage},null,8,["model-value","indeterminate","onChange"])]),(0,c.Lk)("div",dn,(0,h.v_)(e.$t("dashboard.preview")),1),(0,c.Lk)("div",cn,(0,h.v_)(e.$t("dashboard.fileName")),1),(0,c.Lk)("div",hn,(0,h.v_)(e.$t("dashboard.tags")),1),(0,c.Lk)("div",un,(0,h.v_)(e.$t("dashboard.channelType")),1),(0,c.Lk)("div",fn,(0,h.v_)(e.$t("dashboard.channelNameCol")),1),(0,c.Lk)("div",mn,(0,h.v_)(e.$t("dashboard.uploadAddress")),1),(0,c.Lk)("div",pn,(0,h.v_)(e.$t("dashboard.fileSize")),1),(0,c.Lk)("div",gn,(0,h.v_)(e.$t("dashboard.uploadTime")),1),(0,c.Lk)("div",bn,(0,h.v_)(e.$t("dashboard.actions")),1)]),n.loading?((0,c.uX)(),(0,c.Wv)(S,{key:0,type:"list",count:n.pageSize},null,8,["count"])):0===s.paginatedTableData.length?((0,c.uX)(),(0,c.CE)("div",vn,[(0,c.bF)(u,{icon:"folder-open",class:"empty-icon"}),(0,c.Lk)("p",kn,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.noMatchingFiles"):e.$t("dashboard.currentDirEmpty")),1),(0,c.Lk)("p",yn,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.adjustSearchHint"):e.$t("dashboard.uploadHint")),1)])):((0,c.uX)(!0),(0,c.CE)(c.FK,{key:2},(0,c.pI)(s.paginatedTableData,(e,t)=>((0,c.uX)(),(0,c.Wv)(x,{key:t,item:e,selected:e.selected,"onUpdate:selected":t=>e.selected=t,fileLink:s.getFileLink(e.name),onEnter:t=>s.enterFolder(e.name),onDetail:a=>s.openDetailDialog(t,e.name),onCopy:a=>s.handleCopy(t,e.name),onFolderCopy:t=>s.handleFolderCopy(e.name),onMove:a=>s.handleMove(t,e.name),onDelete:a=>s.handleDelete(t,e.name),onDownload:t=>s.handleDownload(e.name),onTouchstart:a=>s.isFolder(e)?s.handleFolderTouchStart(e,t):s.handleTouchStart(e,t),onTouchend:s.handleTouchEnd,onTouchmove:s.handleTouchEnd},null,8,["item","selected","onUpdate:selected","fileLink","onEnter","onDetail","onCopy","onFolderCopy","onMove","onDelete","onDownload","onTouchstart","onTouchend","onTouchmove"]))),128))],34)),i.isDragging?((0,c.uX)(),(0,c.CE)("div",{key:2,class:"drag-select-overlay",style:(0,h.Tr)({position:"fixed",left:i.selectionRect.left+"px",top:i.selectionRect.top+"px",width:i.selectionRect.width+"px",height:i.selectionRect.height+"px"})},null,4)):(0,c.Q3)("",!0),(0,c.Lk)("div",wn,[(0,c.Lk)("div",_n,[(0,c.bF)(D,{background:"",layout:"prev, pager, next",total:s.filteredTableData.length,"page-size":n.pageSize,"current-page":n.currentPage,"pager-count":s.pagerCount,onCurrentChange:s.handlePageChange},null,8,["total","page-size","current-page","pager-count","onCurrentChange"]),(0,c.bF)(I,{type:"primary",onClick:s.refreshFileList,class:"refresh-btn"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"sync",class:(0,h.C4)({"fa-spin":n.refreshLoading})},null,8,["class"])]),_:1},8,["onClick"]),n.currentPage===Math.ceil(s.filteredTableData.length/n.pageSize)?((0,c.uX)(),(0,c.Wv)(I,{key:0,type:"primary",onClick:s.loadMoreData,loading:n.loading,class:"load-more"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("dashboard.loadMore")),1)]),_:1},8,["onClick","loading"])):(0,c.Q3)("",!0)]),(0,c.Lk)("div",Fn,[(0,c.Lk)("span",Cn,(0,h.v_)(e.$t("dashboard.totalPages",{count:s.realTotalPages})),1),(0,c.Lk)("div",Tn,[(0,c.Lk)("span",null,(0,h.v_)(e.$t("dashboard.jumpTo")),1),(0,c.bF)(f,{modelValue:n.jumpPage,"onUpdate:modelValue":t[15]||(t[15]=e=>n.jumpPage=e),size:"small",class:"jump-input",onKeyup:(0,z.jR)(s.handleJumpPage,["enter"])},null,8,["modelValue","onKeyup"]),(0,c.bF)(I,{size:"small",type:"primary",onClick:s.handleJumpPage,class:"jump-btn"},{default:(0,c.k6)(()=>[...t[36]||(t[36]=[(0,c.eW)("GO",-1)])]),_:1},8,["onClick"])])])])]),_:1},8,["class"])]),_:1}),(0,c.bF)(U,{"selected-count":n.selectedFiles.length,onAction:s.handleBatchAction,onClear:s.clearSelection},null,8,["selected-count","onAction","onClear"]),(0,c.bF)(R,{modelValue:n.showdetailDialog,"onUpdate:modelValue":t[16]||(t[16]=e=>n.showdetailDialog=e),file:n.detailFile,fileLink:s.getFileLink(n.detailFile?.name),urls:s.allUrl,onDownload:t[17]||(t[17]=e=>s.handleDownload(n.detailFile?.name)),onTagManagement:t[18]||(t[18]=e=>s.handleTagManagement(n.detailFile?.name)),onBlock:t[19]||(t[19]=e=>s.handleBlock(n.detailFile?.name)),onWhite:t[20]||(t[20]=e=>s.handleWhite(n.detailFile?.name)),onDelete:t[21]||(t[21]=e=>s.handleDetailDelete(n.detailFile?.name)),onMetadataUpdated:s.handleMetadataUpdated,onFileRenamed:s.handleFileRenamed},null,8,["modelValue","file","fileLink","urls","onMetadataUpdated","onFileRenamed"]),(0,c.bF)(N,{title:e.$t("dashboard.linkFormat"),modelValue:n.showUrlDialog,"onUpdate:modelValue":t[26]||(t[26]=e=>n.showUrlDialog=e),width:s.dialogWidth,"show-close":!1,class:"settings-dialog settings-dialog-scope"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",Sn,[(0,c.Lk)("div",Ln,[(0,c.Lk)("span",En,(0,h.v_)(e.$t("settings.defaultCopyLink")),1)]),(0,c.Lk)("div",$n,[(0,c.bF)(k,{modelValue:n.defaultUrlFormat,"onUpdate:modelValue":t[22]||(t[22]=e=>n.defaultUrlFormat=e),class:"radio-card-group grid-2x2"},{default:(0,c.k6)(()=>[(0,c.bF)(W,{label:"originUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"link",class:"radio-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("settings.rawLink")),1)]),_:1}),(0,c.bF)(W,{label:"mdUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"code",class:"radio-icon"}),t[37]||(t[37]=(0,c.Lk)("span",null,"Markdown",-1))]),_:1}),(0,c.bF)(W,{label:"htmlUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"code-branch",class:"radio-icon"}),t[38]||(t[38]=(0,c.Lk)("span",null,"HTML",-1))]),_:1}),(0,c.bF)(W,{label:"bbUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"quote-right",class:"radio-icon"}),t[39]||(t[39]=(0,c.Lk)("span",null,"BBCode",-1))]),_:1}),(0,c.bF)(W,{label:"tgId",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"paper-plane",class:"radio-icon"}),t[40]||(t[40]=(0,c.Lk)("span",null,"TG File ID",-1))]),_:1}),(0,c.bF)(W,{label:"s3Location",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"cloud",class:"radio-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("settings.s3Link")),1)]),_:1})]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",xn,[(0,c.Lk)("div",Dn,[(0,c.Lk)("span",In,(0,h.v_)(e.$t("settings.customLink")),1),(0,c.bF)(p,{content:e.$t("settings.customLinkTooltip"),placement:"top","raw-content":""},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,c.Lk)("div",An,[(0,c.Lk)("div",Pn,[(0,c.Lk)("span",Bn,(0,h.v_)(e.$t("settings.enableCustom")),1),(0,c.bF)(O,{modelValue:n.useCustomUrl,"onUpdate:modelValue":t[23]||(t[23]=e=>n.useCustomUrl=e),"active-value":"true","inactive-value":"false"},null,8,["modelValue"])]),"true"===n.useCustomUrl?((0,c.uX)(),(0,c.CE)("div",zn,[(0,c.Lk)("span",Un,(0,h.v_)(e.$t("settings.customPrefix")),1),(0,c.bF)(f,{modelValue:n.customUrlPrefix,"onUpdate:modelValue":t[24]||(t[24]=e=>n.customUrlPrefix=e),placeholder:e.$t("settings.customPrefixPlaceholder"),class:"setting-input"},null,8,["modelValue","placeholder"])])):(0,c.Q3)("",!0)])]),(0,c.Lk)("div",Rn,[(0,c.bF)(I,{type:"primary",onClick:t[25]||(t[25]=e=>n.showUrlDialog=!1),class:"confirm-btn"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("settings.confirm")),1)]),_:1})])]),_:1},8,["title","modelValue","width"]),(0,c.bF)(M,{modelValue:n.showTagDialog,"onUpdate:modelValue":t[27]||(t[27]=e=>n.showTagDialog=e),fileId:n.currentTagFile,fileMetadata:s.tagFileMetadata,onTagsUpdated:s.handleTagsUpdated},null,8,["modelValue","fileId","fileMetadata","onTagsUpdated"]),(0,c.bF)(V,{modelValue:n.showBatchTagDialog,"onUpdate:modelValue":t[28]||(t[28]=e=>n.showBatchTagDialog=e),selectedFiles:n.selectedFiles,onTagsUpdated:s.handleBatchTagsUpdated},null,8,["modelValue","selectedFiles","onTagsUpdated"]),(0,c.bF)(j,{modelValue:n.showMobileActionModal,"onUpdate:modelValue":t[29]||(t[29]=e=>n.showMobileActionModal=e),title:n.mobileActionIsFolder?s.getFolderName(n.mobileActionFile?.name||""):n.mobileActionFile?.metadata?.FileName||s.getFileName(n.mobileActionFile?.name||""),isFolder:n.mobileActionIsFolder,onAction:s.handleMobileAction},null,8,["modelValue","title","isFolder","onAction"]),(0,c.bF)(K,{modelValue:n.showMobileDirectoryDrawer,"onUpdate:modelValue":t[30]||(t[30]=e=>n.showMobileDirectoryDrawer=e),currentPath:n.currentPath,onNavigate:s.navigateToFolder,onGoBack:s.handleGoBack},null,8,["modelValue","currentPath","onNavigate","onGoBack"]),(0,c.bF)(Z,{modelValue:n.showMoveDialog,"onUpdate:modelValue":t[31]||(t[31]=e=>n.showMoveDialog=e),"current-directory":n.currentPath,"is-batch-move":n.isBatchMove,"initial-path":n.moveTargetPath,onConfirm:s.confirmMove},null,8,["modelValue","current-directory","is-batch-move","initial-path","onConfirm"])])}var On=a(60782),Nn=a(44813),Mn=a.n(Nn),Vn=a(54047),Xn=a(46638);class jn{constructor(){this.FILE_LIST_PATH="data/fileList.json",this.fileListCache=null,this.storageWarningShown=!1}getLocalFileList(){const e=this.getMutableFileList();return{...e,files:[...e.files||[]],directories:[...e.directories||[]]}}getMutableFileList(){if(this.fileListCache)return this.fileListCache;try{const e=localStorage.getItem(this.FILE_LIST_PATH);return this.fileListCache=e?JSON.parse(e):this.createEmptyFileList(),this.fileListCache}catch(e){return console.error("Error reading local file list:",e),this.fileListCache=this.createEmptyFileList(),this.fileListCache}}updateFileListCache(e){this.fileListCache=e||this.createEmptyFileList();const t=this.persistFileListCache();return{cacheUpdated:!0,persisted:t}}persistFileListCache(){try{return localStorage.setItem(this.FILE_LIST_PATH,JSON.stringify(this.fileListCache)),!0}catch(e){return this.handleStoragePersistError(e),!1}}createEmptyFileList(){return{files:[],directories:[]}}handleStoragePersistError(e){console.warn("File list is kept in memory because localStorage persistence failed:",e);try{localStorage.removeItem(this.FILE_LIST_PATH)}catch(t){console.warn("Failed to remove stale file list cache:",t)}this.storageWarningShown||(this.storageWarningShown=!0,He.nk.warning(Xn.Ay.global.t("dashboard.fileListMemoryCacheWarning")))}addFile(e){try{const t=this.getMutableFileList();return t.files.push(e),this.updateFileListCache(t).cacheUpdated}catch(t){return console.error("Error adding file:",t),!1}}addFolder(e){try{const t=this.getMutableFileList();return!t.directories.includes(e)&&(t.directories.push(e),this.updateFileListCache(t).cacheUpdated)}catch(t){return console.error("Error adding folder:",t),!1}}moveFile(e,t,a=!1,i=""){try{let n=this.getMutableFileList();if(a){const t=n.directories.indexOf(e);-1!==t&&n.directories.splice(t,1)}else{const t=n.files.findIndex(t=>t.name===e);-1!==t&&n.files.splice(t,1)}if(t.startsWith(i)){const e=t.substring(i.length).split("/");if(e.length>1){const t=i+e[0];n.directories.includes(t)||n.directories.push(t)}}return this.updateFileListCache(n).cacheUpdated}catch(n){return console.error("Error moving file:",n),!1}}removeFile(e){try{let t=this.getMutableFileList();return t.files=t.files.filter(t=>t.name!==e),this.updateFileListCache(t).cacheUpdated}catch(t){return console.error("Error removing file:",t),!1}}removeFolder(e){try{let t=this.getMutableFileList();return t.files=t.files.filter(t=>!t.name.startsWith(e+"/")),t.directories=t.directories.filter(t=>t!==e),this.updateFileListCache(t).cacheUpdated}catch(t){return console.error("Error removing folder:",t),!1}}getFilesInFolder(e){try{const t=this.getMutableFileList(),a=t.files.filter(t=>t.name.startsWith(e+"/")),i=t.directories.filter(t=>t.startsWith(e+"/"));return{files:a,directories:i}}catch(t){return console.error("Error getting files in folder:",t),{files:[],directories:[]}}}buildFilterParams(e){let t="";return e.accessStatus&&e.accessStatus.length>0&&(t+=`&accessStatus=${encodeURIComponent(e.accessStatus.join(","))}`),e.listType&&e.listType.length>0&&(t+=`&listType=${encodeURIComponent(e.listType.join(","))}`),e.label&&e.label.length>0&&(t+=`&label=${encodeURIComponent(e.label.join(","))}`),e.fileType&&e.fileType.length>0&&(t+=`&fileType=${encodeURIComponent(e.fileType.join(","))}`),e.channel&&e.channel.length>0&&(t+=`&channel=${encodeURIComponent(e.channel.join(","))}`),e.channelName&&e.channelName.length>0&&(t+=`&channelName=${encodeURIComponent(e.channelName.join(","))}`),t}async refreshFileList(e,t="",a="",i="",n={}){t=t.trim();try{let s=`/api/manage/list?count=60&dir=${e}&search=${encodeURIComponent(t)}`;a&&(s+=`&includeTags=${encodeURIComponent(a)}`),i&&(s+=`&excludeTags=${encodeURIComponent(i)}`),s+=this.buildFilterParams(n);const r=await(0,D.A)(s,{method:"GET"}),o=await r.json();return o.isIndexedResponse||He.nk.warning(Xn.Ay.global.t("dashboard.indexingWarning")),this.updateFileListCache(o).cacheUpdated}catch(s){return console.error("Error refreshing file list:",s),!1}}async loadMoreFiles(e,t="",a="",i="",n=60,s={}){t=t.trim();try{const r=this.getMutableFileList(),o=r.files.length;let l=`/api/manage/list?dir=${e}&start=${o}&count=${n}&search=${encodeURIComponent(t)}`;a&&(l+=`&includeTags=${encodeURIComponent(a)}`),i&&(l+=`&excludeTags=${encodeURIComponent(i)}`),l+=this.buildFilterParams(s);const d=await(0,D.A)(l,{method:"GET"}),c=await d.json();return r.files.push(...c.files),this.updateFileListCache(r).cacheUpdated}catch(r){return console.error("Error loading more files:",r),{files:[],directories:[]}}}}const Kn=new jn;var Zn=a(62388),Gn=a(48903),Hn=a(90144);function Qn(e,t){return!(e.right<=t.left||e.left>=t.right||e.bottom<=t.top||e.top>=t.bottom)}function qn(e,t){const a=Math.min(e.x,t.x),i=Math.min(e.y,t.y),n=Math.abs(t.x-e.x),s=Math.abs(t.y-e.y);return{left:a,top:i,width:n,height:s,right:a+n,bottom:i+s}}function Yn(e){const{modes:t,mainSelector:a=".main-container",viewMode:i,items:n}=e,s=(0,Hn.KR)(!1),r=(0,Hn.KR)({left:0,top:0,width:0,height:0,right:0,bottom:0});let o=null,l=[],d=!1;const h=768;let u=!1;const f=50,m=10;let p=null,g="";function b(){const e=(0,Hn.BA)(i);return t[e]||void 0}function v(){const e=(0,Hn.BA)(i);return("card"===e||"list"===e)&&window.innerWidth>h}function k(){v()?u||I():u&&(P(),A())}function y(e){const t=e.target,i=t.closest(a);if(!i)return!1;const n=b();if(n){const e=t.closest(n.itemSelector);if(e){const t=(0,Hn.BA)(n.containerRef);if(t&&t.contains(e))return!1}}const s=t.closest("button, a, input, .el-input, .el-dropdown, .el-checkbox, .el-breadcrumb, .el-pagination, .el-pager, .header-content, .breadcrumb-container");return!s}function w(e){return e.shiftKey||e.ctrlKey||e.metaKey}function _(){const e=(0,Hn.BA)(n);l=e.map(e=>!!e.selected)}let F=0;function C(){function e(){const t=window.innerHeight;let a=0;F>=t-f?a=m:F<=f&&(a=-m),0!==a&&(window.scrollBy(0,a),o&&(o.y-=a,r.value=qn(o,{x:r.value.right>=o.x?r.value.right:r.value.left,y:F}),E())),p=requestAnimationFrame(e)}null===p&&(p=requestAnimationFrame(e))}function T(){null!==p&&(cancelAnimationFrame(p),p=null)}function S(){g=document.body.style.userSelect,document.body.style.userSelect="none"}function L(){document.body.style.userSelect=g}function E(){const e=b();if(!e)return;const t=(0,Hn.BA)(e.containerRef);if(!t)return;const a=(0,Hn.BA)(n),i=r.value,s={left:i.left,top:i.top,right:i.right,bottom:i.bottom},o=t.querySelectorAll(e.itemSelector);a.forEach((e,t)=>{const a=o[t];if(!a)return;const i=a.getBoundingClientRect(),n={left:i.left,top:i.top,right:i.right,bottom:i.bottom},r=Qn(s,n);d&&l[t]?e.selected=!0:e.selected=r})}function $(e){if(0===e.button&&y(e)){if(o={x:e.clientX,y:e.clientY},d=w(e),_(),!d){const e=(0,Hn.BA)(n);e.forEach(e=>{e.selected=!1})}s.value=!0,r.value=qn(o,o),S(),document.addEventListener("mousemove",x),document.addEventListener("mouseup",D)}}function x(e){if(!s.value||!o)return;const t={x:e.clientX,y:e.clientY};F=e.clientY,r.value=qn(o,t),E();const a=window.innerHeight;F<=f||F>=a-f?C():T()}function D(e){s.value&&(T(),L(),s.value=!1,r.value={left:0,top:0,width:0,height:0,right:0,bottom:0},o=null,document.removeEventListener("mousemove",x),document.removeEventListener("mouseup",D))}function I(){u||(document.addEventListener("mousedown",$),u=!0)}function A(){u&&(document.removeEventListener("mousedown",$),u=!1)}function P(){s.value&&(T(),L(),s.value=!1,r.value={left:0,top:0,width:0,height:0,right:0,bottom:0},o=null,document.removeEventListener("mousemove",x),document.removeEventListener("mouseup",D))}function B(){k()}return(0,c.wB)(()=>(0,Hn.BA)(i),()=>{P(),k()}),(0,c.sV)(()=>{v()&&I(),window.addEventListener("resize",B)}),(0,c.xo)(()=>{P(),L(),T(),A(),window.removeEventListener("resize",B)}),{isDragging:s,selectionRect:r}}const Jn=["time","size","rawName","fileName"],es=["asc","desc"];function ts(e,t,a){try{const i=localStorage.getItem(e);return t.includes(i)?i:a}catch{return a}}var as={name:"AdminDashBoard",mixins:[Gn.A],data(){return{Number:0,directFileCount:0,directFolderCount:0,showLogoutButton:!1,tableData:[],tempSearch:"",search:"",searchKeywords:"",searchIncludeTags:"",searchExcludeTags:"",isSearchMode:!1,currentPage:1,pageSize:15,selectedFiles:[],sortField:ts("sortField",Jn,"time"),sortOrder:ts("sortOrder",es,"desc"),isUploading:!1,showdetailDialog:!1,detailFile:null,activeUrlTab:"originUrl",defaultUrlFormat:"originUrl",showUrlDialog:!1,useCustomUrl:"false",customUrlPrefix:"",loading:!1,currentPath:"",refreshLoading:!1,showTagDialog:!1,showBatchTagDialog:!1,currentTagFile:"",viewMode:"card",showMobileActionModal:!1,mobileActionFile:null,mobileActionIndex:-1,mobileActionIsFolder:!1,longPressTimer:null,showMobileDirectoryDrawer:!1,jumpPage:"",filters:{accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]},channelNameOptions:[],showMoveDialog:!1,moveTargetPath:"/",moveFileKey:"",moveFileIndex:-1,isBatchMove:!1,pageSwipeStartX:null,pageSwipeStartY:null,pageSwipeStartTime:0}},components:{DashboardTabs:Bi.A,TagManagementDialog:bt,BatchTagDialog:Je,SkeletonLoader:Ja,FileCard:Oa,FolderCard:Ha,FileListItem:va,FileDetailDialog:Wt,BatchActionBar:Zt,MobileActionSheet:q,MobileDirectoryDrawer:X,DashboardCheckbox:oi,FilterDropdown:Pi,MoveFileDialog:B,LanguageSwitcher:Vn.A},setup(){const e=(0,Hn.KR)(null),t=(0,Hn.KR)(null),a=(0,Hn.KR)("card"),i=(0,Hn.KR)([]),{isDragging:n,selectionRect:s}=Yn({modes:{card:{containerRef:e,itemSelector:".img-card"},list:{containerRef:t,itemSelector:".list-item"}},viewMode:a,items:i});return{cardContainerRef:e,listContainerRef:t,viewModeRef:a,itemsRef:i,isDragging:n,selectionRect:s}},computed:{tagFileMetadata(){return this.tableData.find(e=>e.name===this.currentTagFile)?.metadata||{}},...(0,On.L8)(["adminUrlSettings","userConfig"]),filteredTableData(){return this.tableData},totalPages(){return Math.ceil(this.filteredTableData.length/this.pageSize)||1},realTotalPages(){const e=this.directFolderCount+this.directFileCount;return Math.ceil(e/this.pageSize)||1},activeFilterCount(){return Object.values(this.filters).reduce((e,t)=>e+(Array.isArray(t)?t.length:0),0)},hasSearchOrFilter(){return this.isSearchMode||this.activeFilterCount>0},paginatedTableData(){const e=this.sortData(this.filteredTableData),t=(this.currentPage-1)*this.pageSize,a=t+this.pageSize;let i=e.slice(t,a);const n=i.filter(e=>this.isImage(e)).map(e=>this.getFileLink(e.name));return i.forEach(e=>{this.isImage(e)&&(e.previewSrcList=n.slice(n.indexOf(this.getFileLink(e.name))).concat(n.slice(0,n.indexOf(this.getFileLink(e.name)))))}),i.forEach(e=>{"TelegramNew"===e.metadata?.Channel||"Telegram"===e.metadata?.Channel?e.channelTag="TG":"CloudflareR2"===e.metadata?.Channel?e.channelTag="R2":"S3"===e.metadata?.Channel?e.channelTag="S3":"Discord"===e.metadata?.Channel?e.channelTag="DC":"HuggingFace"===e.metadata?.Channel?e.channelTag="HF":"WebDAV"===e.metadata?.Channel?e.channelTag="WD":"External"===e.metadata?.Channel?e.channelTag=this.$t("dashboard.externalTag"):e.channelTag=this.$t("dashboard.unknownTag")}),i},sortLabel(){const e={time:"dashboard.sortByTime",size:"dashboard.sortBySize",rawName:"dashboard.sortByRawName",fileName:"dashboard.sortByFileName"},t=this.$t(e[this.sortField]||e.time),a=this.$t("desc"===this.sortOrder?"dashboard.sortDesc":"dashboard.sortAsc");return`${t} · ${a}`},dialogWidth(){return window.innerWidth>768?"50%":"90%"},detailDialogWidth(){return window.innerWidth>768?"70%":"90%"},accessType(){return"White"===this.detailFile?.metadata?.ListType?this.$t("filter.normal"):"Block"===this.detailFile?.metadata?.ListType||"adult"===this.detailFile?.metadata?.Label?this.$t("filter.blocked"):this.$t("filter.normal")},allUrl(){return"External"===this.detailFile?.metadata?.Channel?{originUrl:`${this.detailFile?.metadata?.ExternalLink}`,mdUrl:`![${this.detailFile?.metadata?.FileName||this.detailFile?.name}](${this.detailFile?.metadata?.ExternalLink})`,htmlUrl:`${this.detailFile?.metadata?.FileName||this.detailFile?.name}`,bbUrl:`[img]${this.detailFile?.metadata?.ExternalLink}[/img]`,tgId:this.detailFile?.metadata?.TgFileId||this.$t("fileDetail.unknown"),S3Location:this.detailFile?.metadata?.S3Location||this.$t("fileDetail.unknown"),S3CdnFileUrl:this.detailFile?.metadata?.S3CdnFileUrl||this.$t("fileDetail.unknown")}:{originUrl:`${this.rootUrl}${this.detailFile?.name}`,mdUrl:`![${this.detailFile?.metadata?.FileName||this.detailFile?.name}](${this.rootUrl}${this.detailFile?.name})`,htmlUrl:`${this.detailFile?.metadata?.FileName||this.detailFile?.name}`,bbUrl:`[img]${this.rootUrl}${this.detailFile?.name}[/img]`,tgId:this.detailFile?.metadata?.TgFileId||this.$t("fileDetail.unknown"),S3Location:this.detailFile?.metadata?.S3Location||this.$t("fileDetail.unknown"),S3CdnFileUrl:this.detailFile?.metadata?.S3CdnFileUrl||this.$t("fileDetail.unknown")}},tableColumnNum(){return window.innerWidth>768?3:1},tablePreviewSpan(){return window.innerWidth>768?2:1},disableTooltip(){return window.innerWidth<768},selectPage(){return this.paginatedTableData.every(e=>e.selected)},selectedPageFiles(){return this.paginatedTableData.some(e=>e.selected)},rootUrl(){return"true"===this.useCustomUrl?this.customUrlPrefix:this.userConfig?.urlPrefix||`${document.location.origin}/file/`},isSelectAll:{get(){return this.paginatedTableData.length>0&&this.paginatedTableData.every(e=>e.selected)},set(e){this.paginatedTableData.forEach(t=>t.selected=e)}},isIndeterminate(){const e=this.paginatedTableData.filter(e=>e.selected).length;return e>0&&ee.selected&&!this.selectedFiles.includes(e))),this.selectedFiles=this.selectedFiles.filter(e=>e.selected),this.selectedFiles=this.selectedFiles.filter(t=>e.includes(t))},deep:!0},defaultUrlFormat(e){localStorage.setItem("defaultUrlFormat",e)},showdetailDialog(e){e&&(this.activeUrlTab=this.defaultUrlFormat||"originUrl")},customUrlPrefix(e){this.$store.commit("setAdminUrlSettings",{key:"customUrlPrefix",value:e})},useCustomUrl(e){this.$store.commit("setAdminUrlSettings",{key:"useCustomUrl",value:e})},currentPath(e){this.tableData.forEach(e=>e.selected=!1)}},methods:{setViewMode(e){this.viewMode!==e&&(this.viewMode=e,localStorage.setItem("viewMode",this.viewMode))},handleSelectAllPage(e){this.paginatedTableData.forEach(t=>t.selected=e)},handleTouchStart(e,t){this.longPressTimer=setTimeout(()=>{this.mobileActionFile=e,this.mobileActionIndex=t,this.mobileActionIsFolder=!1,this.showMobileActionModal=!0},500)},handleTouchEnd(){this.longPressTimer&&(clearTimeout(this.longPressTimer),this.longPressTimer=null)},handleFolderTouchStart(e,t){this.longPressTimer=setTimeout(()=>{this.mobileActionFile=e,this.mobileActionIndex=t,this.mobileActionIsFolder=!0,this.showMobileActionModal=!0},500)},handleMobileAction(e){const t=this.mobileActionFile,a=this.mobileActionIndex;if(this.showMobileActionModal=!1,t)switch(e){case"detail":this.openDetailDialog(a,t.name);break;case"copy":this.handleCopy(a,t.name);break;case"folderCopy":this.handleFolderCopy(t.name);break;case"download":this.handleDownload(t.name);break;case"move":this.handleMove(a,t.name);break;case"delete":this.handleDelete(a,t.name);break;case"tag":this.handleTagManagement(t.name);break}},handleGoBack(){const e=this.currentPath.split("/").filter(Boolean);if(e.length>0){e.pop();const t=e.join("/");this.navigateToFolder(t)}this.showMobileDirectoryDrawer=!1},getTagColor(e){const t=["linear-gradient(135deg, #667eea 0%, #764ba2 100%)","linear-gradient(135deg, #f093fb 0%, #f5576c 100%)","linear-gradient(135deg, #4facfe 0%, #00f2fe 100%)","linear-gradient(135deg, #43e97b 0%, #38f9d7 100%)","linear-gradient(135deg, #fa709a 0%, #fee140 100%)","linear-gradient(135deg, #a8edea 0%, #fed6e3 100%)"];return t[e%t.length]},handleVideoHover(e,t){const a=e.target;t?a.play().catch(()=>{}):(a.pause(),a.currentTime=0)},formatFileSize(e){if(!e||0===e)return"-";if(e=Number(e),isNaN(e))return"-";const t=["B","KB","MB","GB","TB"];let a=0;while(e>=1024&&a0?1:0)+" "+t[a]},handleSearch(){if(this.search=this.tempSearch,this.isSearchMode=""!==this.search.trim(),this.currentPage=1,this.search&&this.search.trim()){const e=[],t=[];let a=this.search;const i=/-#([\w\u4e00-\u9fa5\u3040-\u309f\u30a0-\u30ff\uac00-\ud7af\.\+\-]+)/g;a=a.replace(i,(e,a)=>(t.push(a.toLowerCase())," "));const n=/#([\w\u4e00-\u9fa5\u3040-\u309f\u30a0-\u30ff\uac00-\ud7af\.\+\-]+)/g;a=a.replace(n,(t,a)=>(e.push(a.toLowerCase())," ")),this.searchKeywords=a.replace(/\s+/g," ").trim(),this.searchIncludeTags=e.join(","),this.searchExcludeTags=t.join(","),console.log("Search keywords:",this.searchKeywords),console.log("Include tags:",this.searchIncludeTags),console.log("Exclude tags:",this.searchExcludeTags)}else this.searchKeywords="",this.searchIncludeTags="",this.searchExcludeTags="";this.refreshFileList()},handleFilterChange({type:e,filters:t}){this.filters=t,this.currentPage=1,this.refreshFileList()},clearFilters(){this.filters={listType:[],label:[],fileType:[],channel:[],channelName:[]},this.currentPage=1,this.refreshFileList()},async extractChannelNames(){try{const e=await(0,D.A)("/api/channels?includeDisabled=true",{method:"GET"});if(e.ok){const t=await e.json(),a=[],i={telegram:"Telegram",cfr2:"Cloudflare R2",s3:"S3",discord:"Discord",huggingface:"HuggingFace",webdav:"WebDAV"};Object.entries(t).forEach(([e,t])=>{Array.isArray(t)&&t.length>0&&t.forEach(t=>{t.name&&a.push({name:t.name,type:t.type,typeLabel:i[e]||e,value:`${t.type}:${t.name}`})})}),a.sort((e,t)=>e.type!==t.type?e.type.localeCompare(t.type):e.name.localeCompare(t.name)),this.channelNameOptions=a}}catch(e){console.error("Failed to fetch channel names:",e)}},handleDownload(e){const t=document.createElement("a");t.href=this.getFileLink(e),t.download=e,t.click()},openDetailDialog(e,t){this.detailFile=this.paginatedTableData[e],this.showdetailDialog=!0},handleTabClick(e){this.activeUrlTab=e.props.name},handleUrlClick(e){navigator.clipboard.writeText(e.target.value).then(()=>{this.$message({type:"success",message:this.$t("dashboard.copySuccess")})}).catch(()=>{this.$message({type:"error",message:this.$t("dashboard.copyFailed")})})},handleDetailDelete(e){this.$confirm(this.$t("dashboard.deleteConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{(0,D.A)(`/api/manage/delete/${e}`,{method:"GET"}).then(t=>{if(!t.ok)return Promise.reject("Request failed");{const t=this.tableData.findIndex(t=>t.name===e);-1!==t&&this.tableData.splice(t,1)}}).then(()=>{this.updateStats(-1,!1),this.$message.success(this.$t("dashboard.deleteSuccess")),this.showdetailDialog=!1}).catch(()=>this.$message.error(this.$t("dashboard.deleteFailed")))}).catch(()=>console.log("Delete cancelled"))},handleBlock(e){this.$confirm(this.$t("dashboard.blockConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{(0,D.A)(`/api/manage/block/${e}`,{method:"GET"}).then(t=>{if(!t.ok)return Promise.reject("Request failed");{const t=this.tableData.findIndex(t=>t.name===e);-1!==t&&(this.tableData[t].metadata.ListType="Block")}}).then(()=>{this.$message.success(this.$t("dashboard.blockSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.blockFailed")))}).catch(()=>console.log("Block cancelled"))},handleWhite(e){this.$confirm(this.$t("dashboard.whiteConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{(0,D.A)(`/api/manage/white/${e}`,{method:"GET"}).then(t=>{if(!t.ok)return Promise.reject("Request failed");{const t=this.tableData.findIndex(t=>t.name===e);-1!==t&&(this.tableData[t].metadata.ListType="White")}}).then(()=>{this.$message.success(this.$t("dashboard.whiteSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.whiteFailed")))}).catch(()=>console.log("White cancelled"))},handleDelete(e,t){const a=this.tableData.find(e=>e.name===t).isFolder;this.$confirm(a?this.$t("dashboard.deleteFolderConfirm"):this.$t("dashboard.deleteFileConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{(0,D.A)(`/api/manage/delete/${t}?folder=${a}`,{method:"GET"}).then(e=>{if(!e.ok)return Promise.reject("Request failed");{const e=this.tableData.findIndex(e=>e.name===t);-1!==e&&this.tableData.splice(e,1)}}).then(()=>{this.updateStats(-1,!1),Kn.removeFile(t),this.$message.success(this.$t("dashboard.deleteSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.deleteFailed")))}).catch(()=>console.log("Delete cancelled"))},handleBatchDelete(){this.$confirm(this.$t("dashboard.batchDeleteConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{const e=this.selectedFiles.map(e=>{const t=e.isFolder;return(0,D.A)(`/api/manage/delete/${e.name}?folder=${t}`,{method:"GET"})});Promise.all(e).then(e=>{let t=0;e.forEach((e,a)=>{if(e.ok){t++;const e=this.tableData.findIndex(e=>e.name===this.selectedFiles[a].name);-1!==e&&this.tableData.splice(e,1),Kn.removeFile(this.selectedFiles[a].name)}}),this.selectedFiles=[],this.updateStats(-t,!1),this.$message.success(this.$t("dashboard.batchDeleteSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.batchDeleteFailed")))}).catch(()=>console.log("Batch delete cancelled"))},async handleBatchCopy(){const e=this.selectedFiles.filter(e=>!e.isFolder),t=this.selectedFiles.filter(e=>e.isFolder);let a=null;t.length>0&&(a=this.$loading({lock:!0,text:this.$t("dashboard.fetchingFileList")}));try{let n=[...e];for(const e of t)try{const t=await(0,D.A)(`/api/manage/list?dir=${encodeURIComponent(e.name)}&recursive=true&count=-1`,{method:"GET"}),a=await t.json();a.files&&a.files.length>0&&(n=n.concat(a.files))}catch(i){console.error(`获取文件夹 ${e.name} 内容失败:`,i)}if(a&&a.close(),0===n.length)return void this.$message.warning(this.$t("dashboard.noLinksAvailable"));const s=n.map(e=>this.generateFileLink(e.name,e.metadata)).filter(e=>e);if(0===s.length)return void this.$message.warning(this.$t("dashboard.noLinksAvailable"));const r=s.join("\n");navigator.clipboard?(await navigator.clipboard.writeText(r),this.$message.success(this.$t("dashboard.batchCopySuccess",{count:s.length}))):this.copyToClipboardFallback(r)}catch(i){a&&a.close(),console.error("Batch copy failed:",i),this.$message.error(this.$t("dashboard.batchCopyFailed"))}},copyToClipboardFallback(e){const t=document.createElement("textarea");document.body.appendChild(t),t.style.position="fixed",t.style.clip="rect(0 0 0 0)",t.style.top="10px",t.value=e,t.select(),document.execCommand("copy"),document.body.removeChild(t),this.$message.success(this.$t("dashboard.batchCopyLinksSuccess"))},handleCopy(e,t){let a="";if("External"===this.paginatedTableData[e].metadata?.Channel)switch(this.defaultUrlFormat){case"originUrl":a=this.paginatedTableData[e].metadata?.ExternalLink;break;case"mdUrl":a=`![${this.paginatedTableData[e].metadata?.FileName||t}](${this.paginatedTableData[e].metadata?.ExternalLink})`;break;case"htmlUrl":a=`${this.paginatedTableData[e].metadata?.FileName||t}`;break;case"bbUrl":a=`[img]${this.paginatedTableData[e].metadata?.ExternalLink}[/img]`;break;case"tgId":a=this.paginatedTableData[e].metadata?.TgFileId||"none";break;case"s3Location":a=this.paginatedTableData[e].metadata?.S3Location||"none";break}else switch(this.defaultUrlFormat){case"originUrl":a=`${this.rootUrl}${t}`;break;case"mdUrl":a=`![${this.paginatedTableData[e].metadata?.FileName||t}](${this.rootUrl}${t})`;break;case"htmlUrl":a=`${this.paginatedTableData[e].metadata?.FileName||t}`;break;case"bbUrl":a=`[img]${this.rootUrl}${t}[/img]`;break;case"tgId":a=this.paginatedTableData[e].metadata?.TgFileId||"none";break;case"s3Location":a=this.paginatedTableData[e].metadata?.S3Location||"none";break}navigator.clipboard?navigator.clipboard.writeText(a).then(()=>this.$message.success(this.$t("dashboard.copyFileLinkSuccess"))):this.copyToClipboardFallback(a)},async loadMoreData(){this.loading=!0;try{await Kn.loadMoreFiles(this.currentPath,this.searchKeywords,this.searchIncludeTags,this.searchExcludeTags,60,this.filters),await this.fetchFileList()}catch(e){this.$message.error(this.$t("dashboard.loadMoreFailed"))}finally{this.loading=!1}},updateStats(e,t=!1){t?this.Number=e:this.Number+=e},setSortField(e){Jn.includes(e)&&(this.sortField=e,this.currentPage=1,localStorage.setItem("sortField",e))},setSortOrder(e){es.includes(e)&&(this.sortOrder=e,this.currentPage=1,localStorage.setItem("sortOrder",e))},sortData(e){if(!Array.isArray(e))return[];const t=e.filter(e=>e.isFolder),a=e.filter(e=>!e.isFolder),i=e=>{const t=e=>{if(null===e||void 0===e||""===e)return null;const t=Number(e);return Number.isFinite(t)?t:null},a=t(e.metadata?.FileSizeBytes);if(null!==a)return a;const i=t(e.metadata?.FileSize);return null!==i?1024*i*1024:t(e.size)??0},n=e=>{switch(this.sortField){case"size":return i(e);case"rawName":return e.metadata?.RawName||e.name||"";case"fileName":return e.metadata?.FileName||e.name||"";case"time":default:return e.metadata?.TimeStamp?new Date(e.metadata.TimeStamp).getTime():0}},s=(e,t)=>{const a=n(e),i=n(t);let s=0;return s="string"===typeof a||"string"===typeof i?String(a||"").localeCompare(String(i||"")):a-i,"desc"===this.sortOrder?-s:s};return t.sort(s),a.sort(s),t.concat(a)},handleVideoClick(e){const t=e.target;t.requestFullscreen?t.requestFullscreen():t.webkitRequestFullscreen?t.webkitRequestFullscreen():t.mozRequestFullScreen?t.mozRequestFullScreen():t.msRequestFullscreen&&t.msRequestFullscreen()},handleLogout(){const e="/api/auth/logout";fetch(e,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({authType:"admin"})}).finally(()=>{this.$store.commit("setAdminLoggedIn",!1),this.$router.push("/adminLogin")})},handleSelectPage(){this.selectPage?this.paginatedTableData.forEach(e=>e.selected=!1):this.paginatedTableData.forEach(e=>e.selected=!0)},clearSelection(){this.tableData.forEach(e=>e.selected=!1),this.selectedFiles=[]},handleBatchAction(e){"copy"===e?this.handleBatchCopy():"delete"===e?this.handleBatchDelete():"download"===e?this.handleBatchDownload():"move"===e?this.handleBatchMove():"tagManagement"===e?this.handleBatchTagManagement():"ban"===e?this.handleBatchBlock():"white"===e&&this.handleBatchWhite()},handleMove(e,t){this.moveFileKey=t,this.moveFileIndex=e,this.isBatchMove=!1,this.moveTargetPath="/",this.showMoveDialog=!0},handleBatchMove(){this.isBatchMove=!0,this.moveTargetPath="/",this.showMoveDialog=!0},confirmMove(e){const t=e,a=(0,Zn.G)(t);if(!a.valid)return void this.$message.error(a.error);const i=t.replace(/^\/+/,"")+(t.endsWith("/")||""===t?"":"/");i!==this.currentPath?(this.showMoveDialog=!1,this.isBatchMove?this.executeBatchMove(i):this.executeSingleMove(i)):this.$message.warning(this.$t("dashboard.moveTargetSameAsCurrent"))},executeSingleMove(e){const t=this.moveFileKey,a=this.tableData.find(e=>e.name===t)?.isFolder;(0,D.A)(`/api/manage/move/${t}?folder=${a}&dist=${encodeURIComponent(e)}`,{method:"GET"}).then(i=>{if(!i.ok)return Promise.reject("Request failed");{const i=this.tableData.findIndex(e=>e.name===t);if(-1!==i){const n=e+t.split("/").pop();Kn.moveFile(t,n,a,this.currentPath),this.tableData.splice(i,1),this.$nextTick(()=>{const e=[...this.tableData];this.tableData=[],this.$nextTick(()=>{this.tableData=e})})}this.updateStats(-1,!1),this.$message.success(this.$t("dashboard.moveSuccess"))}}).then(()=>{this.refreshLocalFileList()}).catch(()=>this.$message.error(this.$t("dashboard.moveFailed")))},executeBatchMove(e){const t=this.selectedFiles.map(t=>{const a=t.isFolder;return(0,D.A)(`/api/manage/move/${t.name}?folder=${a}&dist=${encodeURIComponent(e)}`,{method:"GET"})});Promise.all(t).then(t=>{let a=0;t.forEach((t,i)=>{if(t.ok){a++;const t=this.selectedFiles[i];t.selected=!1;const n=this.tableData.findIndex(e=>e.name===t.name);if(-1!==n){const a=e+t.name.split("/").pop();Kn.moveFile(t.name,a,t.isFolder,this.currentPath),this.tableData.splice(n,1)}}}),this.$nextTick(()=>{const e=[...this.tableData];this.tableData=[],this.$nextTick(()=>{this.tableData=e})}),this.updateStats(-a,!1),this.$message.success(this.$t("dashboard.moveSuccess"))}).then(()=>{this.refreshLocalFileList()}).catch(()=>this.$message.error(this.$t("dashboard.moveFailed")))},handleBatchBlock(){this.$confirm(this.$t("dashboard.batchBlockConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{const e=this.selectedFiles.map(e=>e.isFolder?Promise.resolve({ok:!1}):(0,D.A)(`/api/manage/block/${e.name}`,{method:"GET"}));Promise.all(e).then(e=>{e.forEach((e,t)=>{if(e.ok){const e=this.tableData.findIndex(e=>e.name===this.selectedFiles[t].name);-1!==e&&(this.tableData[e].metadata.ListType="Block")}}),this.$message.success(this.$t("dashboard.batchBlockSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.batchBlockFailed")))}).catch(()=>console.log("Batch block cancelled"))},handleBatchWhite(){this.$confirm(this.$t("dashboard.batchWhiteConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{const e=this.selectedFiles.map(e=>e.isFolder?Promise.resolve({ok:!1}):(0,D.A)(`/api/manage/white/${e.name}`,{method:"GET"}));Promise.all(e).then(e=>{e.forEach((e,t)=>{if(e.ok){const e=this.tableData.findIndex(e=>e.name===this.selectedFiles[t].name);-1!==e&&(this.tableData[e].metadata.ListType="White")}}),this.$message.success(this.$t("dashboard.batchWhiteSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.batchWhiteFailed")))}).catch(()=>console.log("Batch white cancelled"))},handleBatchDownload(){const e=new(Mn()),t=e.folder("files"),a={},i=this.selectedFiles.map(async e=>{if(e.isFolder)return;const i=await fetch(this.getFileLink(e.name)),n=await i.blob();let s=e.metadata?.FileName||e.name;if(a[s]){const t=s.substring(s.lastIndexOf(".")),i=s.substring(0,s.lastIndexOf("."));s=`${i}(${a[s]})${t}`,a[e.name]++}else a[s]=1;t.file(s,n)});Promise.all(i).then(()=>e.generateAsync({type:"blob"})).then(e=>{const t=document.createElement("a");t.href=URL.createObjectURL(e),t.download="files.zip",t.click()})},isVideo(e){if(this.isAudio(e))return!1;let t=e.metadata?.FileType?.includes("video");if(!t){const a=["mp4","webm","ogg","avi","mov","flv","wmv","mkv","rmvb","3gp","mpg","mpeg","m4v","f4v","rm","asf","dat","ts","vob","swf","divx","xvid","m2ts","mts","m2v","3g2","3gp2","3gpp","3gpp2","mpe","m1v","mpv","mpv2","mp2v","m2t","m2ts","m2v","m4v"],i=e.name.substring(e.name.lastIndexOf(".")+1).toLowerCase();t=a.includes(i)}return t},isAudio(e){let t=e.metadata?.FileType?.includes("audio");if(!t){const a=["mp3","wav","flac","aac","ogg","wma","m4a","ape","aiff","alac","opus","mid","midi","m4b","m4p","m4r","amr","au","ra","ram"],i=e.name.substring(e.name.lastIndexOf(".")+1).toLowerCase();t=a.includes(i)}return t},isImage(e){let t=e.metadata?.FileType?.includes("image");if(!t){const a=["jpg","jpeg","png","gif","bmp","webp","svg","ico","tiff","tif","psd","ai","eps","raw","cr2","nef","orf","sr2","dng","arw","rw2","raf","pef","x3f","srf","erf","mrw","nrw","kdc","dcr","mef","mos","crw","raf","rwl","srw","3fr","fff","iiq","qtk","bay","k25","kdc","dcs","drf","dng","erf","kdc","mdc","mef","mos","mrw","nef","nrw","orf","pef","ptx","pxn","r3d","raf","raw","rwl","rw2","rwz","sr2","srf","x3f"],i=e.name.substring(e.name.lastIndexOf(".")+1).toLowerCase();t=a.includes(i)}return t},getFileLink(e){const t=`/file/${e}?from=admin`;return t},handlePageChange(e){this.currentPage=e,this.currentPage===Math.ceil(this.tableData.length/this.pageSize)&&this.loadMoreData()},isMobileViewport(){return window.innerWidth<768},updateResponsivePageSize(){const e=this.isMobileViewport()?16:15;if(this.pageSize===e)return;const t=(this.currentPage-1)*this.pageSize;this.pageSize=e,this.currentPage=Math.min(Math.floor(t/e)+1,this.realTotalPages)},isSwipeIgnoredTarget(e){return Boolean(e?.closest?.("button, a, input, textarea, select, .el-checkbox, .action-btn, .list-action-btn"))},handlePageSwipeStart(e){if(!this.isMobileViewport()||this.isDragging||this.loading||this.showMobileActionModal||this.showMobileDirectoryDrawer||this.isSwipeIgnoredTarget(e.target))return void this.resetPageSwipe();const t=e.touches?.[0];t&&(this.pageSwipeStartX=t.clientX,this.pageSwipeStartY=t.clientY,this.pageSwipeStartTime=Date.now())},async handlePageSwipeEnd(e){if(null===this.pageSwipeStartX||null===this.pageSwipeStartY)return;const t=e.changedTouches?.[0];if(!t)return void this.resetPageSwipe();const a=t.clientX-this.pageSwipeStartX,i=t.clientY-this.pageSwipeStartY,n=Date.now()-this.pageSwipeStartTime;if(this.resetPageSwipe(),n>700||Math.abs(a)<64||Math.abs(a)<1.35*Math.abs(i))return;const s=a<0?this.currentPage+1:this.currentPage-1;await this.goToSwipePage(s)},resetPageSwipe(){this.pageSwipeStartX=null,this.pageSwipeStartY=null,this.pageSwipeStartTime=0},async goToSwipePage(e){e<1||e>this.realTotalPages||e===this.currentPage||(e>this.totalPages?await this.loadMoreDataUntilPage(e):this.handlePageChange(e))},handleJumpPage(){const e=parseInt(this.jumpPage);isNaN(e)||e<1?this.$message.warning(this.$t("dashboard.invalidPageNumber")):e>this.realTotalPages?this.$message.warning(this.$t("dashboard.pageExceedsMax",{max:this.realTotalPages})):(e>this.totalPages?(this.$message.info(this.$t("dashboard.loadingData")),this.loadMoreDataUntilPage(e)):this.currentPage=e,this.jumpPage="")},async loadMoreDataUntilPage(e){this.loading=!0;try{const t=e*this.pageSize,a=this.filteredTableData.filter(e=>e.isFolder).length,i=this.filteredTableData.filter(e=>!e.isFolder).length,n=Math.max(0,t-a-i);n>0&&(await Kn.loadMoreFiles(this.currentPath,this.searchKeywords,this.searchIncludeTags,this.searchExcludeTags,n,this.filters),await this.fetchFileList()),this.currentPage=Math.min(e,this.totalPages)}catch(t){this.$message.error(this.$t("dashboard.loadDataFailed"))}finally{this.loading=!1}},isFolder(e){if(e.isFolder)return!0;let t=e.name;if(t.startsWith("http")&&(t=t.split("/file/")[1]),t&&t.includes("/")){const e=this.currentPath?t.substring(this.currentPath.length):t;return""===this.currentPath?!t.split("/")[0].includes("."):e.includes("/")}return!1},getFolderName(e){let t="";if(e&&e.includes("/")){const a=e.split("/");if(""===this.currentPath)t=a[0];else{const a=e.substring(this.currentPath.length);t=a.split("/")[0]}}else t=e;const a=20;if(t.length>a){const e=Math.floor((a-3)/2),i=Math.ceil((a-3)/2);return`${t.substring(0,e)}...${t.substring(t.length-i)}`}return t},getFileName(e){let t=e.split("/").pop();const a=20;if(t.length>a){const e=Math.floor((a-3)/2),i=Math.ceil((a-3)/2);return`${t.substring(0,e)}...${t.substring(t.length-i)}`}return t},getFileNameStart(e){if(!e)return"";if(e.length<=30)return e;const t=e.lastIndexOf(".");if(t>0){const a=e.substring(0,t),i=Math.min(a.length,Math.floor(.6*e.length));return a.substring(0,i)}return e.substring(0,Math.floor(.6*e.length))},getFileNameEnd(e){if(!e)return"";if(e.length<=30)return"";const t=e.lastIndexOf(".");if(t>0){const a=e.substring(t),i=e.substring(0,t),n=Math.min(8,Math.floor(.2*i.length));return"…"+i.substring(i.length-n)+a}const a=Math.min(10,Math.floor(.3*e.length));return"…"+e.substring(e.length-a)},enterFolder(e){this.currentPage=1,this.currentPath=e+(e.endsWith("/")?"":"/"),this.refreshFileList()},navigateToFolder(e){this.currentPage=1,this.currentPath=e?e+(e.endsWith("/")?"":"/"):"",this.refreshFileList()},async fetchFileList(){this.loading=!0;try{const e=Kn.getLocalFileList(),t=new Set(e.directories||[]),a=e.files||[],i=Array.from(t).map(e=>({name:e,isFolder:!0,selected:!1,metadata:{FileName:e.split("/").pop()}})),n=a.map(e=>({name:e.name,isFolder:!1,selected:!1,metadata:e.metadata}));this.tableData=[...i,...n],this.updateStats(e.totalCount,!0),this.directFileCount=e.directFileCount||0,this.directFolderCount=e.directFolderCount||0}catch(e){console.error("Error fetching file list:",e),this.$message.error(this.$t("dashboard.fetchFileListFailed"))}finally{this.loading=!1}},async refreshFileList(){this.refreshLoading=!0,this.loading=!0;try{const e=await Kn.refreshFileList(this.currentPath,this.searchKeywords,this.searchIncludeTags,this.searchExcludeTags,this.filters);if(!e)throw new Error("Refresh failed");await this.fetchFileList()}catch(e){!e.message?.includes("Unauthorized")&&this.$store.state.adminLoggedIn&&(console.error("Error refreshing file list:",e),this.$message.error(this.$t("dashboard.refreshFailed")))}finally{this.refreshLoading=!1,this.loading=!1}},async refreshLocalFileList(){this.refreshLoading=!0,this.loading=!0;try{await this.fetchFileList()}catch(e){console.error("Error refreshing local file list:",e),this.$message.error(this.$t("dashboard.refreshFailed"))}finally{this.refreshLoading=!1,this.loading=!1}},handleTagManagement(e){this.currentTagFile=e,this.showTagDialog=!0},handleBatchTagManagement(){0!==this.selectedFiles.length?this.showBatchTagDialog=!0:this.$message.warning(this.$t("dashboard.selectFilesFirst"))},handleTagsUpdated(e){this.handleBatchTagsUpdated([{fileId:this.currentTagFile,tags:e,saved:!0}])},handleBatchTagsUpdated(e){const t=new Map(e.filter(e=>e.saved).map(e=>[e.fileId,e.tags]));for(const i of this.tableData)t.has(i.name)&&(i.metadata={...i.metadata,Tags:t.get(i.name)});this.detailFile&&t.has(this.detailFile.name)&&(this.detailFile.metadata={...this.detailFile.metadata,Tags:t.get(this.detailFile.name)});const a=Kn.getLocalFileList();for(const i of a.files||[])t.has(i.name)&&(i.metadata={...i.metadata,Tags:t.get(i.name)});Kn.updateFileListCache(a)},handleMetadataUpdated(e,t){const a=this.tableData.findIndex(t=>t.name===e);-1!==a&&(this.tableData[a].metadata={...this.tableData[a].metadata,...t}),this.detailFile&&this.detailFile.name===e&&(this.detailFile.metadata={...this.detailFile.metadata,...t})},handleFileRenamed(e,t,a){const i=this.tableData.findIndex(t=>t.name===e);-1!==i&&(this.tableData[i].name=t,this.tableData[i].metadata={...this.tableData[i].metadata,...a}),this.detailFile&&this.detailFile.name===e&&(this.detailFile.name=t,this.detailFile.metadata={...this.detailFile.metadata,...a},this.showdetailDialog=!1,this.$nextTick(()=>{this.showdetailDialog=!0}))},generateFileLink(e,t){const a="External"===t?.Channel,i=a?t?.ExternalLink:`${this.rootUrl}${e}`,n=t?.FileName||e;switch(this.defaultUrlFormat){case"originUrl":return i;case"mdUrl":return`![${n}](${i})`;case"htmlUrl":return`${n}`;case"bbUrl":return`[img]${i}[/img]`;case"tgId":return t?.TgFileId||"";case"s3Location":return t?.S3Location||"";default:return i}},async handleFolderCopy(e){const t=this.$loading({lock:!0,text:this.$t("dashboard.fetchingFileList")});try{const a=await(0,D.A)(`/api/manage/list?dir=${encodeURIComponent(e)}&recursive=true&count=-1`,{method:"GET"}),i=await a.json();if(t.close(),!i.files||0===i.files.length)return void this.$message.warning(this.$t("dashboard.folderEmptyNoLinks"));const n=i.files.map(e=>this.generateFileLink(e.name,e.metadata)).filter(e=>e);if(0===n.length)return void this.$message.warning(this.$t("dashboard.noLinksAvailable"));const s=n.join("\n");navigator.clipboard?(await navigator.clipboard.writeText(s),this.$message.success(this.$t("dashboard.copiedFileLinks",{count:n.length}))):(this.copyToClipboardFallback(s),this.$message.success(this.$t("dashboard.copiedFileLinks",{count:n.length})))}catch(a){t.close(),console.error("Copy folder links failed:",a),this.$message.error(this.$t("dashboard.copyFolderLinksFailed"))}}},mounted(){this.initializeBackground("adminBkImg",".container",!1,!0),this.updateResponsivePageSize(),window.addEventListener("resize",this.updateResponsivePageSize),this.loading=!0,this.showLogoutButton=this.$store.state.adminLoggedIn,this.refreshFileList().then(()=>this.extractChannelNames()).catch(e=>{"Unauthorized"!==e.message&&this.$message.error(this.$t("dashboard.syncDataError"))}).finally(()=>{this.loading=!1}),this.customUrlPrefix=this.adminUrlSettings.customUrlPrefix,this.useCustomUrl=this.adminUrlSettings.useCustomUrl;const e=localStorage.getItem("viewMode");"card"!==e&&"list"!==e||(this.viewMode=e)},beforeUnmount(){window.removeEventListener("resize",this.updateResponsivePageSize)}};const is=(0,A.A)(as,[["render",Wn],["__scopeId","data-v-8a33a938"]]);var ns=is},62388:function(e,t,a){"use strict";a.d(t,{G:function(){return n}});var i=a(46638);function n(e,{strict:t=!0}={}){if(!e||""===e.trim())return{valid:!0};if("/"===e)return{valid:!0};if(!e.startsWith("/"))return{valid:!1,error:i.Ay.global.t("validation.pathMustStartWithSlash")};if(/(?:^|\/)\.\.(\/|$)/.test(e)||e.includes(".."))return{valid:!1,error:i.Ay.global.t("validation.pathTraversalNotAllowed")};const a=t?/\/\.(\/|$)/:/\/\.\//;if(a.test(e))return{valid:!1,error:i.Ay.global.t("validation.singleDotNotAllowed")};if(e.includes("//"))return{valid:!1,error:i.Ay.global.t("validation.consecutiveSlashNotAllowed")};const n=/[\\:\*\?"'<>\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;return n.test(e)?{valid:!1,error:i.Ay.global.t("validation.invalidCharacters")}:{valid:!0}}},63003:function(e,t,a){"use strict";a(85331)},70415:function(e,t,a){"use strict";a(85331),a(73565)},72907:function(e,t,a){"use strict";a(85331),a(96808),a(29092)},73565:function(e,t,a){"use strict";a(85331)},79899:function(e,t,a){"use strict";a(85331)},84344:function(e,t,a){"use strict";a.d(t,{EY:function(){return u},Lh:function(){return d},hP:function(){return h},wt:function(){return o}});a(44114),a(18111),a(61701),a(13579),a(64979);var i=a(70797);const n=262144,s=20971520;function r(e){if(e?.aborted)throw new DOMException("Cancelled","AbortError")}function o(e,t,a){const i=e?.code||e?.message,n=`aiErrors.${i}`,s=a(n)?t(n,{status:e.details?.status||e.status}):t("aiErrors.NETWORK_ERROR"),r=["code","type","requestId"].filter(t=>e?.details?.[t]).map(a=>`${t(`aiErrors.${a}`)}: ${e.details[a]}`);return r.length?`${s} (${r.join(", ")})`:s}const l=e=>({code:e.code||e.message,message:e.message,...e.details?{details:e.details}:{}});async function d(e,t={}){const a=await(0,i.A)(e,t);let n;try{n=await a.json()}catch{const e=new Error(`HTTP ${a.status}`);throw e.code=401===a.status?"AUTH_REQUIRED":a.ok?"INVALID_RESPONSE":"HTTP_ERROR",e.details={status:a.status},e}if(!n||"object"!==typeof n||Array.isArray(n)){const e=new Error("INVALID_RESPONSE");throw e.code="INVALID_RESPONSE",e}if(!a.ok){const e=new Error(n.error?.message||n.message||`HTTP ${a.status}`);throw e.code=n.error?.code||(401===a.status?"AUTH_REQUIRED":"HTTP_ERROR"),e.details={status:a.status,...n.error?.details},e}return n}async function c(e,t){r(t);const a=e.metadata?.FileType?.toLowerCase();if(a&&!["image/jpeg","image/png","image/webp","image/avif","image/gif"].includes(a))throw new Error("UNSUPPORTED_IMAGE");if(Number(e.metadata?.FileSizeBytes)>s)throw new Error("IMAGE_TOO_LARGE");const o=e.name.split("/").map(encodeURIComponent).join("/"),l=await(0,i.A)(`/file/${o}`,{signal:t});if(!l.ok){const e=new Error(`HTTP ${l.status}`);throw e.code="IMAGE_FETCH_FAILED",e.details={status:l.status},e}if(Number(l.headers.get("Content-Length"))>s)throw await(l.body?.cancel()),new Error("IMAGE_TOO_LARGE");const d=l.body.getReader(),c=[];let h=0;try{while(1){r(t);const{value:e,done:a}=await d.read();if(a)break;if(h+=e.byteLength,h>s)throw await d.cancel(),new Error("IMAGE_TOO_LARGE");c.push(e)}}finally{d.releaseLock()}const u=new Blob(c,{type:l.headers.get("Content-Type")||a});let f,m;r(t);try{"function"===typeof createImageBitmap?f=await createImageBitmap(u):(m=URL.createObjectURL(u),f=new Image,await new Promise((e,t)=>{f.onload=e,f.onerror=()=>t(new Error("UNSUPPORTED_IMAGE")),f.src=m})),r(t);const e=f.width||f.naturalWidth,a=f.height||f.naturalHeight;if(!e||!a)throw new Error("UNSUPPORTED_IMAGE");const i=document.createElement("canvas"),s=Math.min(1,768/Math.max(e,a));i.width=Math.max(1,Math.round(e*s)),i.height=Math.max(1,Math.round(a*s));const o=i.getContext("2d");o.fillStyle="#ffffff",o.fillRect(0,0,i.width,i.height),o.drawImage(f,0,0,i.width,i.height);for(const l of[.8,.6,.4]){r(t);const e=await new Promise(e=>i.toBlob(e,"image/jpeg",l));if(e&&e.size<=n&&(e.size<=131072||.4===l))return e}throw new Error("PREVIEW_TOO_LARGE")}catch(p){if(t?.aborted||"AbortError"===p.name||"PREVIEW_TOO_LARGE"===p.message)throw p;throw new Error("UNSUPPORTED_IMAGE")}finally{f?.close?.(),m&&URL.revokeObjectURL(m)}}async function h(e,{signal:t,batchSize:a=3,onResult:i,prepare:n=c}={}){a=Math.max(1,Math.min(3,a));const s=[];for(let c=0;c({fileId:e.file.name})))),h.forEach((e,t)=>u.append(`image${t}`,e.image,"preview.jpg"));try{const e=await d("/api/manage/ai/tags",{method:"POST",body:u,signal:t});if(r(t),!Array.isArray(e.results)||e.results.length!==h.length)throw new Error("INVALID_RESPONSE");for(let t=0;t"string"!==typeof e)||!/^[a-f0-9]{64}$/.test(a.sourceIdentity)))throw new Error("INVALID_RESPONSE")}for(const t of e.results)s.push(t),i?.(t)}catch(o){if(t?.aborted||"AbortError"===o.name)throw o;for(const e of h){const t={fileId:e.file.name,error:l(o)};s.push(t),i?.(t)}}}return s}async function u(e,t){const a=[];for(let n=0;n!e||e.fileId!==s[t].fileId||"boolean"!==typeof e.saved||e.saved&&(!Array.isArray(e.tags)||e.tags.some(e=>"string"!==typeof e))))throw new Error("INVALID_RESPONSE");for(const i of e.results)a.push(i),t?.(i)}catch(i){for(const e of s){const n={fileId:e.fileId,saved:!1,error:l(i)};a.push(n),t?.(n)}}}return a}},88830:function(e,t,a){"use strict";a(85331)},95385:function(e,t,a){"use strict";a(85331)},98642:function(e,t,a){"use strict";a(85331)}}]); +//# sourceMappingURL=787.b5df6f2f.js.map \ No newline at end of file diff --git a/frontend-dist/js/787.b5df6f2f.js.gz b/frontend-dist/js/787.b5df6f2f.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..ec2524ab6ac244fb004c020c62b2f67adac17346 GIT binary patch literal 64489 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 literal 0 HcmV?d00001 diff --git a/frontend-dist/js/787.b5df6f2f.js.map b/frontend-dist/js/787.b5df6f2f.js.map new file mode 100644 index 0000000..8cbfdcc --- /dev/null +++ b/frontend-dist/js/787.b5df6f2f.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/787.b5df6f2f.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue?9e0f","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue?6984","webpack://sanyue_imghub/./node_modules/jszip/dist/jszip.min.js","webpack://sanyue_imghub/./src/components/dashboard/MoveFileDialog.vue?cb6d","webpack://sanyue_imghub/./src/components/dashboard/MoveFileDialog.vue","webpack://sanyue_imghub/./src/components/dashboard/MoveFileDialog.vue?cba1","webpack://sanyue_imghub/./src/components/dashboard/MobileDirectoryDrawer.vue?2da6","webpack://sanyue_imghub/./src/components/dashboard/MobileDirectoryDrawer.vue","webpack://sanyue_imghub/./src/components/dashboard/MobileDirectoryDrawer.vue?256e","webpack://sanyue_imghub/./src/components/dashboard/MobileActionSheet.vue?df02","webpack://sanyue_imghub/./src/components/dashboard/MobileActionSheet.vue","webpack://sanyue_imghub/./src/components/dashboard/MobileActionSheet.vue?f2e3","webpack://sanyue_imghub/./src/components/dashboard/AITagPanel.vue?35ad","webpack://sanyue_imghub/./src/components/dashboard/AITagPanel.vue","webpack://sanyue_imghub/./src/components/dashboard/AITagPanel.vue?056e","webpack://sanyue_imghub/./src/components/dashboard/BatchTagDialog.vue?4f66","webpack://sanyue_imghub/./src/components/dashboard/BatchTagDialog.vue","webpack://sanyue_imghub/./src/components/dashboard/BatchTagDialog.vue?9ca8","webpack://sanyue_imghub/./src/components/dashboard/TagManagementDialog.vue?9971","webpack://sanyue_imghub/./src/components/dashboard/TagManagementDialog.vue","webpack://sanyue_imghub/./src/components/dashboard/TagManagementDialog.vue?e3f8","webpack://sanyue_imghub/./src/components/dashboard/FileDetailDialog.vue?8ba4","webpack://sanyue_imghub/./src/utils/fileIdValidator.js","webpack://sanyue_imghub/./src/components/dashboard/FileDetailDialog.vue","webpack://sanyue_imghub/./src/components/dashboard/FileDetailDialog.vue?8cda","webpack://sanyue_imghub/./src/components/dashboard/BatchActionBar.vue?7b8a","webpack://sanyue_imghub/./src/components/dashboard/BatchActionBar.vue","webpack://sanyue_imghub/./src/components/dashboard/BatchActionBar.vue?ed70","webpack://sanyue_imghub/./src/components/dashboard/FileListItem.vue?3a10","webpack://sanyue_imghub/./src/components/dashboard/FileListItem.vue","webpack://sanyue_imghub/./src/components/dashboard/FileListItem.vue?6ed7","webpack://sanyue_imghub/./src/components/dashboard/FileCard.vue?f1ae","webpack://sanyue_imghub/./src/components/dashboard/FileCard.vue","webpack://sanyue_imghub/./src/components/dashboard/FileCard.vue?8969","webpack://sanyue_imghub/./src/components/dashboard/FolderCard.vue?cd9e","webpack://sanyue_imghub/./src/components/dashboard/FolderCard.vue","webpack://sanyue_imghub/./src/components/dashboard/FolderCard.vue?a03e","webpack://sanyue_imghub/./src/components/dashboard/SkeletonLoader.vue?c47a","webpack://sanyue_imghub/./src/components/dashboard/SkeletonLoader.vue","webpack://sanyue_imghub/./src/components/dashboard/SkeletonLoader.vue?4854","webpack://sanyue_imghub/./src/components/dashboard/DashboardCheckbox.vue?f571","webpack://sanyue_imghub/./src/components/dashboard/DashboardCheckbox.vue","webpack://sanyue_imghub/./src/components/dashboard/DashboardCheckbox.vue?06e7","webpack://sanyue_imghub/./src/components/dashboard/FilterDropdown.vue?3dd3","webpack://sanyue_imghub/./src/components/dashboard/FilterDropdown.vue","webpack://sanyue_imghub/./src/components/dashboard/FilterDropdown.vue?09c8","webpack://sanyue_imghub/./src/views/AdminDashBoard.vue?bbd3","webpack://sanyue_imghub/./src/utils/fileManager.js","webpack://sanyue_imghub/./src/utils/dashboard/rectIntersects.js","webpack://sanyue_imghub/./src/utils/dashboard/useDragSelect.js","webpack://sanyue_imghub/./src/views/AdminDashBoard.vue","webpack://sanyue_imghub/./src/views/AdminDashBoard.vue?40d2","webpack://sanyue_imghub/./src/utils/pathValidator.js","webpack://sanyue_imghub/./src/utils/aiTags.js"],"sourcesContent":["import { renderSlot as _renderSlot, withModifiers as _withModifiers, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createBlock as _createBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, Fragment as _Fragment } from \"vue\";\nconst _hoisted_1 = {\n class: \"directory-tree-picker\"\n};\nconst _hoisted_2 = {\n class: \"tree-container\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_4 = {\n class: \"error-text\"\n};\nconst _hoisted_5 = {\n class: \"node-label\"\n};\nconst _hoisted_6 = {\n class: \"tree-container\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_8 = {\n class: \"error-text\"\n};\nconst _hoisted_9 = {\n class: \"node-label\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tree = _resolveComponent(\"el-tree\");\n const _component_el_popover = _resolveComponent(\"el-popover\");\n const _component_el_drawer = _resolveComponent(\"el-drawer\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [$options.isDesktop ? (_openBlock(), _createBlock(_component_el_popover, {\n key: 0,\n visible: $data.popoverVisible,\n \"onUpdate:visible\": _cache[1] || (_cache[1] = $event => $data.popoverVisible = $event),\n placement: \"bottom-start\",\n width: 320,\n trigger: \"click\",\n \"popper-class\": \"directory-tree-popover\",\n \"show-arrow\": true,\n \"hide-after\": 0,\n \"show-after\": 50,\n transition: \"el-zoom-in-top\"\n }, {\n reference: _withCtx(() => [_createElementVNode(\"span\", {\n class: \"popover-trigger-wrapper\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"]))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)])]),\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_2, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_4, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRef\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_5, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 3\n }, 8, [\"visible\"])) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createElementVNode(\"span\", {\n class: \"drawer-trigger-wrapper\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.openDrawer && $options.openDrawer(...args))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)]), _createVNode(_component_el_drawer, {\n modelValue: $data.drawerVisible,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.drawerVisible = $event),\n direction: \"btt\",\n size: \"60%\",\n \"show-close\": true,\n \"with-header\": true,\n \"z-index\": 3000,\n title: _ctx.$t('directoryTree.selectDirectory'),\n class: \"directory-tree-drawer\"\n }, {\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_6, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_8, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRefMobile\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree mobile-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_9, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 1\n }, 8, [\"modelValue\", \"title\"])], 64))]);\n}","import axios from '@/utils/axios';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'DirectoryTreePicker',\n props: {\n currentDirectory: {\n type: String,\n default: ''\n },\n source: {\n type: String,\n default: 'upload',\n validator: value => ['upload', 'admin'].includes(value)\n }\n },\n data() {\n return {\n popoverVisible: false,\n drawerVisible: false,\n treeData: [],\n loading: false,\n error: '',\n treeProps: {\n children: 'children',\n label: 'name'\n },\n windowWidth: window.innerWidth\n };\n },\n computed: {\n isDesktop() {\n return this.windowWidth >= 769;\n }\n },\n watch: {\n popoverVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 弹窗关闭后延迟折叠所有节点,避免下次打开时出现折叠动画\n setTimeout(() => {\n if (!this.popoverVisible && this.$refs.treeRef) {\n const store = this.$refs.treeRef.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 200);\n }\n },\n drawerVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 抽屉关闭后延迟折叠所有节点\n setTimeout(() => {\n if (!this.drawerVisible && this.$refs.treeRefMobile) {\n const store = this.$refs.treeRefMobile.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 300);\n }\n },\n currentDirectory(newVal) {\n this.$nextTick(() => {\n if (this.$refs.treeRef && newVal) {\n this.$refs.treeRef.setCurrentKey(newVal);\n }\n if (this.$refs.treeRefMobile && newVal) {\n this.$refs.treeRefMobile.setCurrentKey(newVal);\n }\n });\n }\n },\n mounted() {\n window.addEventListener('resize', this.handleResize);\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.handleResize);\n },\n methods: {\n handleResize() {\n this.windowWidth = window.innerWidth;\n },\n openDrawer() {\n this.drawerVisible = true;\n },\n async fetchDirectoryTree() {\n this.loading = true;\n this.error = '';\n try {\n let data;\n if (this.source === 'admin') {\n const response = await fetchWithAuth('/api/directoryTree', {\n method: 'GET'\n });\n if (!response.ok) {\n if (response.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.serverError');\n }\n return;\n }\n data = await response.json();\n } else {\n const response = await axios.get('/api/directoryTree', {\n withAuthCode: true\n });\n data = response.data;\n }\n if (data.tree) {\n this.treeData = [data.tree];\n } else {\n this.treeData = [];\n }\n } catch (err) {\n console.error('Failed to fetch directory tree:', err);\n if (err.response?.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.loadFailed');\n }\n } finally {\n this.loading = false;\n }\n },\n handleNodeClick(data) {\n let path = data.path;\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n } else if (!path) {\n path = '/';\n }\n this.$emit('select', path);\n this.popoverVisible = false;\n this.drawerVisible = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DirectoryTreePicker.vue?vue&type=template&id=62eab69a&scoped=true\"\nimport script from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\nexport * from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\n\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=0&id=62eab69a&scoped=true&lang=css\"\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=1&id=62eab69a&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-62eab69a\"]])\n\nexport default __exports__","/*!\n\nJSZip v3.10.1 - A JavaScript class for generating and reading zip files\n\n\n(c) 2009-2016 Stuart Knightley \nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/main/LICENSE\n*/\n\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=e()}}(function(){return function s(a,o,h){function u(r,e){if(!o[r]){if(!a[r]){var t=\"function\"==typeof require&&require;if(!e&&t)return t(r,!0);if(l)return l(r,!0);var n=new Error(\"Cannot find module '\"+r+\"'\");throw n.code=\"MODULE_NOT_FOUND\",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return u(t||e)},i,i.exports,s,a,o,h)}return o[r].exports}for(var l=\"function\"==typeof require&&require,e=0;e>2,s=(3&t)<<4|r>>4,a=1>6:64,o=2>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),l[h++]=t,64!==s&&(l[h++]=r),64!==a&&(l[h++]=n);return l}},{\"./support\":30,\"./utils\":32}],2:[function(e,t,r){\"use strict\";var n=e(\"./external\"),i=e(\"./stream/DataWorker\"),s=e(\"./stream/Crc32Probe\"),a=e(\"./stream/DataLengthProbe\");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a(\"data_length\")),t=this;return e.on(\"end\",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a(\"uncompressedSize\")).pipe(t.compressWorker(r)).pipe(new a(\"compressedSize\")).withStreamInfo(\"compression\",t)},t.exports=o},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(e,t,r){\"use strict\";var n=e(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(){return new n(\"STORE compression\")},uncompressWorker:function(){return new n(\"STORE decompression\")}},r.DEFLATE=e(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(e,t,r){\"use strict\";var n=e(\"./utils\");var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?\"string\"!==n.getTypeOf(e)?function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}(0|t,e,e.length,0):function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t.charCodeAt(a))];return-1^e}(0|t,e,e.length,0):0}},{\"./utils\":32}],5:[function(e,t,r){\"use strict\";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){\"use strict\";var n=null;n=\"undefined\"!=typeof Promise?Promise:e(\"lie\"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,i=e(\"pako\"),s=e(\"./utils\"),a=e(\"./stream/GenericWorker\"),o=n?\"uint8array\":\"array\";function h(e,t){a.call(this,\"FlateWorker/\"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic=\"\\b\\0\",s.inherits(h,a),h.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new h(\"Deflate\",e)},r.uncompressWorker=function(){return new h(\"Inflate\",{})}},{\"./stream/GenericWorker\":28,\"./utils\":32,pako:38}],8:[function(e,t,r){\"use strict\";function A(e,t){var r,n=\"\";for(r=0;r>>=8;return n}function n(e,t,r,n,i,s){var a,o,h=e.file,u=e.compression,l=s!==O.utf8encode,f=I.transformTo(\"string\",s(h.name)),c=I.transformTo(\"string\",O.utf8encode(h.name)),d=h.comment,p=I.transformTo(\"string\",s(d)),m=I.transformTo(\"string\",O.utf8encode(d)),_=c.length!==h.name.length,g=m.length!==d.length,b=\"\",v=\"\",y=\"\",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),\"UNIX\"===i?(C=798,z|=function(e,t){var r=e;return e||(r=t?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(e){return 63&(e||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+c,b+=\"up\"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+=\"uc\"+A(y.length,2)+y);var E=\"\";return E+=\"\\n\\0\",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+\"\\0\\0\\0\\0\"+A(z,4)+A(n,4)+f+b+p}}var I=e(\"../utils\"),i=e(\"../stream/GenericWorker\"),O=e(\"../utf8\"),B=e(\"../crc32\"),R=e(\"../signature\");function s(e,t,r,n){i.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}I.inherits(s,i),s.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,i.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},s.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},s.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:function(e){return R.DATA_DESCRIPTOR+A(e.crc32,4)+A(e.compressedSize,4)+A(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},s.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo(\"string\",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{\"../utils\":32}],19:[function(e,t,r){\"use strict\";var n=e(\"./Uint8ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],21:[function(e,t,r){\"use strict\";var n=e(\"./ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../support\"),s=e(\"./ArrayReader\"),a=e(\"./StringReader\"),o=e(\"./NodeBufferReader\"),h=e(\"./Uint8ArrayReader\");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),\"string\"!==t||i.uint8array?\"nodebuffer\"===t?new o(e):i.uint8array?new h(n.transformTo(\"uint8array\",e)):new s(n.transformTo(\"array\",e)):new a(e)}},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(e,t,r){\"use strict\";r.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",r.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",r.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",r.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",r.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],24:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../utils\");function s(e){n.call(this,\"ConvertWorker to \"+e),this.destType=e}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../crc32\");function s(){n.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}e(\"../utils\").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataLengthProbe for \"+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataWorker\");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":e=this.data.substring(this.index,t);break;case\"uint8array\":e=this.data.subarray(this.index,t);break;case\"array\":case\"nodebuffer\":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(e,t,r){\"use strict\";function n(e){this.name=e||\"default\",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(e){this.emit(\"data\",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit(\"error\",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit(\"error\",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r \"+e:e}},t.exports=n},{}],29:[function(e,t,r){\"use strict\";var h=e(\"../utils\"),i=e(\"./ConvertWorker\"),s=e(\"./GenericWorker\"),u=e(\"../base64\"),n=e(\"../support\"),a=e(\"../external\"),o=null;if(n.nodestream)try{o=e(\"../nodejs/NodejsStreamOutputAdapter\")}catch(e){}function l(e,o){return new a.Promise(function(t,r){var n=[],i=e._internalType,s=e._outputType,a=e._mimeType;e.on(\"data\",function(e,t){n.push(e),o&&o(t)}).on(\"error\",function(e){n=[],r(e)}).on(\"end\",function(){try{var e=function(e,t,r){switch(e){case\"blob\":return h.newBlob(h.transformTo(\"arraybuffer\",t),r);case\"base64\":return u.encode(t);default:return h.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return h.nodebuffer?o.transformTo(\"nodebuffer\",e).toString(\"utf-8\"):function(e){var t,r,n,i,s=e.length,a=new Array(2*s);for(t=r=0;t>10&1023,a[r++]=56320|1023&n)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(e=o.transformTo(h.uint8array?\"uint8array\":\"array\",e))},o.inherits(a,n),a.prototype.processChunk=function(e){var t=o.transformTo(h.uint8array?\"uint8array\":\"array\",e.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}(t),i=t;n!==t.length&&(h.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(l,n),l.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta})},s.Utf8EncodeWorker=l},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(e,t,a){\"use strict\";var o=e(\"./support\"),h=e(\"./base64\"),r=e(\"./nodejsUtils\"),u=e(\"./external\");function n(e){return e}function l(e,t){for(var r=0;r>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return l(e,e.length)},r.binstring2buf=function(e){for(var t=new h.Buf8(e.length),r=0,n=t.length;r>10&1023,o[n++]=56320|1023&i)}return l(o,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}},{\"./common\":41}],43:[function(e,t,r){\"use strict\";t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}},{}],46:[function(e,t,r){\"use strict\";var h,c=e(\"../utils/common\"),u=e(\"./trees\"),d=e(\"./adler32\"),p=e(\"./crc32\"),n=e(\"./messages\"),l=0,f=4,m=0,_=-2,g=-1,b=4,i=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(e,t){return e.msg=n[t],t}function T(e){return(e<<1)-(4e.avail_out&&(r=e.avail_out),0!==r&&(c.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function N(e,t){u._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,F(e.strm)}function U(e,t){e.pending_buf[e.pending++]=t}function P(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function L(e,t){var r,n,i=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,h=e.strstart>e.w_size-z?e.strstart-(e.w_size-z):0,u=e.window,l=e.w_mask,f=e.prev,c=e.strstart+S,d=u[s+a-1],p=u[s+a];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(u[(r=t)+a]===p&&u[r+a-1]===d&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&sh&&0!=--i);return a<=e.lookahead?a:e.lookahead}function j(e){var t,r,n,i,s,a,o,h,u,l,f=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=f+(f-z)){for(c.arraySet(e.window,e.window,f,f,0),e.match_start-=f,e.strstart-=f,e.block_start-=f,t=r=e.hash_size;n=e.head[--t],e.head[t]=f<=n?n-f:0,--r;);for(t=r=f;n=e.prev[--t],e.prev[t]=f<=n?n-f:0,--r;);i+=f}if(0===e.strm.avail_in)break;if(a=e.strm,o=e.window,h=e.strstart+e.lookahead,u=i,l=void 0,l=a.avail_in,u=x)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x)if(n=u._tr_tally(e,e.strstart-e.match_start,e.match_length-x),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=x){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-x,n=u._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-x),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(j(e),0===e.lookahead&&t===l)return A;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,N(e,!1),0===e.strm.avail_out))return A;if(e.strstart-e.block_start>=e.w_size-z&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):(e.strstart>e.block_start&&(N(e,!1),e.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(e,t){return Y(e,t,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?_:(e.state.gzhead=t,m):_},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5>8&255),U(n,n.gzhead.time>>16&255),U(n,n.gzhead.time>>24&255),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(U(n,255&n.gzhead.extra.length),U(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(U(n,0),U(n,0),U(n,0),U(n,0),U(n,0),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,3),n.status=E);else{var a=v+(n.w_bits-8<<4)<<8;a|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=32),a+=31-a%31,n.status=E,P(n,a),0!==n.strstart&&(P(n,e.adler>>>16),P(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending!==n.pending_buf_size));)U(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&F(e),n.pending+2<=n.pending_buf_size&&(U(n,255&e.adler),U(n,e.adler>>8&255),e.adler=0,n.status=E)):n.status=E),0!==n.pending){if(F(e),0===e.avail_out)return n.last_flush=-1,m}else if(0===e.avail_in&&T(t)<=T(r)&&t!==f)return R(e,-5);if(666===n.status&&0!==e.avail_in)return R(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==l&&666!==n.status){var o=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(j(e),0===e.lookahead)){if(t===l)return A;break}if(e.match_length=0,r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=S){if(j(e),e.lookahead<=S&&t===l)return A;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=x&&0e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=x?(r=u._tr_tally(e,1,e.match_length-x),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):h[n.level].func(n,t);if(o!==O&&o!==B||(n.status=666),o===A||o===O)return 0===e.avail_out&&(n.last_flush=-1),m;if(o===I&&(1===t?u._tr_align(n):5!==t&&(u._tr_stored_block(n,0,0,!1),3===t&&(D(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),F(e),0===e.avail_out))return n.last_flush=-1,m}return t!==f?m:n.wrap<=0?1:(2===n.wrap?(U(n,255&e.adler),U(n,e.adler>>8&255),U(n,e.adler>>16&255),U(n,e.adler>>24&255),U(n,255&e.total_in),U(n,e.total_in>>8&255),U(n,e.total_in>>16&255),U(n,e.total_in>>24&255)):(P(n,e.adler>>>16),P(n,65535&e.adler)),F(e),0=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new c.Buf8(r.w_size),c.arraySet(u,t,l-r.w_size,r.w_size,0),t=u,l=r.w_size),a=e.avail_in,o=e.next_in,h=e.input,e.avail_in=l,e.next_in=0,e.input=t,j(r);r.lookahead>=x;){for(n=r.strstart,i=r.lookahead-(x-1);r.ins_h=(r.ins_h<>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else{if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(d&(1<>>=y,p-=y),p<15&&(d+=z[n++]<>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(d&(1<>>=y,p-=y,(y=s-a)>3,d&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new I.Buf32(n),t.distcode=t.distdyn=new I.Buf32(i),t.sane=1,t.back=-1,N):U}function o(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,a(e)):U}function h(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=s.wsize?(I.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),I.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(I.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg=\"incorrect header check\",r.mode=30;break}if(8!=(15&u)){e.msg=\"unknown compression method\",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>>8&255,r.check=B(r.check,E,2,0)),l=u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(d=r.length)&&(d=o),d&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,n,s,d,k)),512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,r.length-=d),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&d>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break e;o--,u+=n[s++]<>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;u>>>=2,l-=2;break e;case 2:r.mode=17;break;case 3:e.msg=\"invalid block type\",r.mode=30}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break e;o--,u+=n[s++]<>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(d=r.length){if(o>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286>>=3,l-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=_,l-=_,r.lens[r.have++]=b;else{if(16===b){for(z=_+2;l>>=_,l-=_,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=30;break}k=r.lens[r.have-1],d=3+(3&u),u>>>=2,l-=2}else if(17===b){for(z=_+3;l>>=_)),u>>>=3,l-=3}else{for(z=_+7;l>>=_)),u>>>=7,l-=7}if(r.have+d>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=30;break}for(;d--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=o&&258<=h){e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,R(e,c),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,64&g){e.msg=\"invalid distance code\",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===h)break e;if(d=c-h,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break}p=d>r.wnext?(d-=r.wnext,r.wsize-d):r.wnext-d,d>r.length&&(d=r.length),m=r.window}else m=i,p=a-r.offset,d=r.length;for(hd?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=t[r+a[v]]}if(k>>7)]}function U(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function P(e,t,r){e.bi_valid>d-r?(e.bi_buf|=t<>d-e.bi_valid,e.bi_valid+=r-d):(e.bi_buf|=t<>>=1,r<<=1,0<--t;);return r>>>1}function Z(e,t,r){var n,i,s=new Array(g+1),a=0;for(n=1;n<=g;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=j(s[o]++,o))}}function W(e){var t;for(t=0;t>1;1<=r;r--)G(e,s,r);for(i=h;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],G(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,G(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,a,o,h=t.dyn_tree,u=t.max_code,l=t.stat_desc.static_tree,f=t.stat_desc.has_stree,c=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=g;s++)e.bl_count[s]=0;for(h[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)p<(s=h[2*h[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),h[2*n+1]=s,u>=7;n>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return o;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return h;for(t=32;t>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?J(e,t,r,n):4===e.strategy||s===i?(P(e,2+(n?1:0),3),K(e,z,C)):(P(e,4+(n?1:0),3),function(e,t,r,n){var i;for(P(e,t-257,5),P(e,r-1,5),P(e,n-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(A[r]+u+1)]++,e.dyn_dtree[2*N(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){P(e,2,3),L(e,m,z),function(e){16===e.bi_valid?(U(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{\"../utils/common\":41}],53:[function(e,t,r){\"use strict\";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){(function(e){!function(r,n){\"use strict\";if(!r.setImmediate){var i,s,t,a,o=1,h={},u=!1,l=r.document,e=Object.getPrototypeOf&&Object.getPrototypeOf(r);e=e&&e.setTimeout?e:r,i=\"[object process]\"==={}.toString.call(r.process)?function(e){process.nextTick(function(){c(e)})}:function(){if(r.postMessage&&!r.importScripts){var e=!0,t=r.onmessage;return r.onmessage=function(){e=!1},r.postMessage(\"\",\"*\"),r.onmessage=t,e}}()?(a=\"setImmediate$\"+Math.random()+\"$\",r.addEventListener?r.addEventListener(\"message\",d,!1):r.attachEvent(\"onmessage\",d),function(e){r.postMessage(a+e,\"*\")}):r.MessageChannel?((t=new MessageChannel).port1.onmessage=function(e){c(e.data)},function(e){t.port2.postMessage(e)}):l&&\"onreadystatechange\"in l.createElement(\"script\")?(s=l.documentElement,function(e){var t=l.createElement(\"script\");t.onreadystatechange=function(){c(e),t.onreadystatechange=null,s.removeChild(t),t=null},s.appendChild(t)}):function(e){setTimeout(c,0,e)},e.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r $options.dialogVisible = $event),\n title: $props.isBatchMove ? _ctx.$t('moveFile.batchTitle') : _ctx.$t('moveFile.title'),\n width: \"500px\",\n \"show-close\": true,\n class: \"move-dialog\",\n onClose: $options.handleClose\n }, {\n footer: _withCtx(() => [_createElementVNode(\"span\", _hoisted_5, [_createVNode(_component_el_button, {\n onClick: $options.handleClose\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.cancel')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n loading: $data.loading,\n onClick: $options.handleConfirm\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.confirm')), 1)]),\n _: 1\n }, 8, [\"loading\", \"onClick\"])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_input, {\n modelValue: $data.targetPath,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.targetPath = $event),\n placeholder: _ctx.$t('moveFile.targetPlaceholder'),\n class: \"move-path-input\"\n }, {\n prepend: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.targetDirectory')), 1)]),\n _: 1\n }, 8, [\"modelValue\", \"placeholder\"]), _createVNode(_component_DirectoryTreePicker, {\n \"current-directory\": $props.currentDirectory,\n source: \"admin\",\n onSelect: $options.handleDirectorySelect\n }, {\n trigger: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"directory-picker-trigger\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-tree\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"current-directory\", \"onSelect\"])]), _createElementVNode(\"p\", _hoisted_4, _toDisplayString(_ctx.$t('moveFile.hint')), 1)])]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"onClose\"])) : (_openBlock(), _createBlock(_component_el_drawer, {\n key: 1,\n modelValue: $options.dialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $options.dialogVisible = $event),\n title: $props.isBatchMove ? _ctx.$t('moveFile.batchTitle') : _ctx.$t('moveFile.title'),\n direction: \"btt\",\n size: \"auto\",\n \"show-close\": true,\n class: \"move-drawer\",\n onClose: $options.handleClose\n }, {\n footer: _withCtx(() => [_createElementVNode(\"div\", _hoisted_18, [_createVNode(_component_el_button, {\n onClick: $options.handleClose,\n class: \"footer-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.cancel')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n loading: $data.loading,\n onClick: $options.handleConfirm,\n class: \"footer-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.confirm')), 1)]),\n _: 1\n }, 8, [\"loading\", \"onClick\"])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createElementVNode(\"div\", _hoisted_7, [_createElementVNode(\"div\", _hoisted_8, _toDisplayString(_ctx.$t('moveFile.targetDirectory')), 1), _createElementVNode(\"div\", _hoisted_9, [_createVNode(_component_el_input, {\n modelValue: $data.targetPath,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.targetPath = $event),\n placeholder: _ctx.$t('moveFile.targetPlaceholder'),\n class: \"move-path-input\"\n }, null, 8, [\"modelValue\", \"placeholder\"]), _createVNode(_component_el_button, {\n class: \"directory-picker-trigger\",\n onClick: _cache[3] || (_cache[3] = $event => $data.showTreePicker = true)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-tree\"\n })]),\n _: 1\n })]), _createElementVNode(\"p\", _hoisted_10, _toDisplayString(_ctx.$t('moveFile.hintMobile')), 1)]), $data.showTreePicker ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"span\", _hoisted_13, _toDisplayString(_ctx.$t('moveFile.selectDirectory')), 1), _createVNode(_component_el_button, {\n text: \"\",\n onClick: _cache[4] || (_cache[4] = $event => $data.showTreePicker = false)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"times\"\n })]),\n _: 1\n })]), _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_14, [$data.treeError ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_16, _toDisplayString($data.treeError), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRef\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree\",\n onNodeClick: $options.handleTreeNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_17, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.treeLoading]])])) : _createCommentVNode(\"\", true)])]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"onClose\"]))]);\n}","import DirectoryTreePicker from '@/components/DirectoryTreePicker.vue';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'MoveFileDialog',\n components: {\n DirectoryTreePicker\n },\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n currentDirectory: {\n type: String,\n default: ''\n },\n isBatchMove: {\n type: Boolean,\n default: false\n },\n initialPath: {\n type: String,\n default: '/'\n }\n },\n emits: ['update:modelValue', 'confirm', 'close'],\n data() {\n return {\n targetPath: '/',\n loading: false,\n windowWidth: window.innerWidth,\n // 移动端内嵌树相关\n showTreePicker: false,\n treeData: [],\n treeLoading: false,\n treeError: '',\n treeProps: {\n children: 'children',\n label: 'name'\n }\n };\n },\n computed: {\n dialogVisible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n isDesktop() {\n return this.windowWidth > 768;\n }\n },\n watch: {\n modelValue(newVal) {\n if (newVal) {\n this.targetPath = this.initialPath || '/';\n this.showTreePicker = false;\n }\n },\n showTreePicker(newVal) {\n if (newVal && !this.isDesktop) {\n this.fetchDirectoryTree();\n }\n }\n },\n mounted() {\n window.addEventListener('resize', this.handleResize);\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.handleResize);\n },\n methods: {\n handleResize() {\n this.windowWidth = window.innerWidth;\n },\n handleDirectorySelect(path) {\n this.targetPath = path;\n },\n handleConfirm() {\n this.$emit('confirm', this.targetPath);\n },\n handleClose() {\n this.$emit('update:modelValue', false);\n this.$emit('close');\n },\n // 移动端内嵌树相关方法\n async fetchDirectoryTree() {\n this.treeLoading = true;\n this.treeError = '';\n try {\n const response = await fetchWithAuth('/api/directoryTree', {\n method: 'GET'\n });\n if (!response.ok) {\n if (response.status === 401) {\n this.treeError = this.$t('moveFile.authFailed');\n } else {\n this.treeError = this.$t('moveFile.serverError');\n }\n return;\n }\n const data = await response.json();\n if (data.tree) {\n this.treeData = [data.tree];\n } else {\n this.treeData = [];\n }\n } catch (err) {\n console.error('Failed to fetch directory tree:', err);\n this.treeError = this.$t('moveFile.loadTreeFailed');\n } finally {\n this.treeLoading = false;\n }\n },\n handleTreeNodeClick(data) {\n let path = data.path;\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n } else if (!path) {\n path = '/';\n }\n this.targetPath = path;\n this.showTreePicker = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./MoveFileDialog.vue?vue&type=template&id=7aaa437c&scoped=true\"\nimport script from \"./MoveFileDialog.vue?vue&type=script&lang=js\"\nexport * from \"./MoveFileDialog.vue?vue&type=script&lang=js\"\n\nimport \"./MoveFileDialog.vue?vue&type=style&index=0&id=7aaa437c&scoped=true&lang=css\"\nimport \"./MoveFileDialog.vue?vue&type=style&index=1&id=7aaa437c&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7aaa437c\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeClass as _normalizeClass, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, Transition as _Transition, withCtx as _withCtx, Teleport as _Teleport, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"mobile-drawer-header\"\n};\nconst _hoisted_2 = {\n class: \"mobile-drawer-title\"\n};\nconst _hoisted_3 = {\n class: \"mobile-drawer-content\"\n};\nconst _hoisted_4 = [\"onClick\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createBlock(_Teleport, {\n to: \"body\"\n }, [_createVNode(_Transition, {\n name: \"drawer-slide\"\n }, {\n default: _withCtx(() => [$props.modelValue ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"mobile-drawer-overlay\",\n onClick: _cache[3] || (_cache[3] = (...args) => $options.close && $options.close(...args))\n }, [_createElementVNode(\"div\", {\n class: \"mobile-drawer\",\n onClick: _cache[2] || (_cache[2] = _withModifiers(() => {}, [\"stop\"]))\n }, [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"span\", _hoisted_2, _toDisplayString(_ctx.$t('mobileDirectory.title')), 1), _createVNode(_component_font_awesome_icon, {\n icon: \"times\",\n class: \"mobile-drawer-close\",\n onClick: $options.close\n }, null, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", {\n class: _normalizeClass([\"mobile-drawer-item\", {\n active: !$props.currentPath\n }]),\n onClick: _cache[0] || (_cache[0] = $event => $options.navigate(''))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"mobile-drawer-item-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileDirectory.rootDirectory')), 1)], 2), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.pathParts, (folder, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: index,\n class: _normalizeClass([\"mobile-drawer-item\", {\n active: index === $options.pathParts.length - 1\n }]),\n style: _normalizeStyle({\n paddingLeft: (index + 1) * 16 + 16 + 'px'\n }),\n onClick: $event => $options.navigate($options.pathParts.slice(0, index + 1).join('/'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder\",\n class: \"mobile-drawer-item-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(folder), 1)], 14, _hoisted_4);\n }), 128)), $props.currentPath ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"mobile-drawer-back\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.goBack && $options.goBack(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-left\",\n class: \"mobile-drawer-item-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileDirectory.goBack')), 1)])) : _createCommentVNode(\"\", true)])])])) : _createCommentVNode(\"\", true)]),\n _: 1\n })]);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nexport default {\n name: 'MobileDirectoryDrawer',\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n currentPath: {\n type: String,\n default: ''\n }\n },\n emits: ['update:modelValue', 'navigate', 'goBack'],\n computed: {\n pathParts() {\n return this.currentPath.split('/').filter(Boolean);\n }\n },\n methods: {\n close() {\n this.$emit('update:modelValue', false);\n },\n navigate(path) {\n this.$emit('navigate', path);\n this.close();\n },\n goBack() {\n this.$emit('goBack');\n this.close();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./MobileDirectoryDrawer.vue?vue&type=template&id=feeadb1c&scoped=true\"\nimport script from \"./MobileDirectoryDrawer.vue?vue&type=script&lang=js\"\nexport * from \"./MobileDirectoryDrawer.vue?vue&type=script&lang=js\"\n\nimport \"./MobileDirectoryDrawer.vue?vue&type=style&index=0&id=feeadb1c&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-feeadb1c\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, resolveComponent as _resolveComponent, createVNode as _createVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, Transition as _Transition, withCtx as _withCtx, Teleport as _Teleport, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"bottom-sheet-header\"\n};\nconst _hoisted_2 = {\n class: \"bottom-sheet-title\"\n};\nconst _hoisted_3 = {\n class: \"bottom-sheet-content\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createBlock(_Teleport, {\n to: \"body\"\n }, [_createVNode(_Transition, {\n name: \"bottom-sheet\"\n }, {\n default: _withCtx(() => [$props.modelValue ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"bottom-sheet-overlay\",\n onClick: _cache[9] || (_cache[9] = (...args) => $options.close && $options.close(...args))\n }, [_createElementVNode(\"div\", {\n class: \"bottom-sheet\",\n onClick: _cache[8] || (_cache[8] = _withModifiers(() => {}, [\"stop\"]))\n }, [_createElementVNode(\"div\", _hoisted_1, [_cache[10] || (_cache[10] = _createElementVNode(\"div\", {\n class: \"bottom-sheet-handle\"\n }, null, -1)), _createElementVNode(\"span\", _hoisted_2, _toDisplayString($props.title), 1)]), _createElementVNode(\"div\", _hoisted_3, [!$props.isFolder ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [_createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[0] || (_cache[0] = $event => $options.handleAction('detail'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"info-circle\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.viewDetail')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[1] || (_cache[1] = $event => $options.handleAction('copy'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.copyLink')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[2] || (_cache[2] = $event => $options.handleAction('download'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"download\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.downloadFile')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[3] || (_cache[3] = $event => $options.handleAction('move'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.moveFile')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[4] || (_cache[4] = $event => $options.handleAction('tag'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"tags\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.tagManagement')), 1)])], 64)) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[5] || (_cache[5] = $event => $options.handleAction('folderCopy'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.copyLink')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[6] || (_cache[6] = $event => $options.handleAction('move'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.moveFolder')), 1)])], 64)), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item bottom-sheet-danger\",\n onClick: _cache[7] || (_cache[7] = $event => $options.handleAction('delete'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString($props.isFolder ? _ctx.$t('mobileAction.deleteFolder') : _ctx.$t('mobileAction.deleteFile')), 1)])])])])) : _createCommentVNode(\"\", true)]),\n _: 1\n })]);\n}","export default {\n name: 'MobileActionSheet',\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n title: {\n type: String,\n default: ''\n },\n isFolder: {\n type: Boolean,\n default: false\n }\n },\n emits: ['update:modelValue', 'action'],\n methods: {\n close() {\n this.$emit('update:modelValue', false);\n },\n handleAction(action) {\n this.$emit('action', action);\n this.close();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./MobileActionSheet.vue?vue&type=template&id=f5c66568&scoped=true\"\nimport script from \"./MobileActionSheet.vue?vue&type=script&lang=js\"\nexport * from \"./MobileActionSheet.vue?vue&type=script&lang=js\"\n\nimport \"./MobileActionSheet.vue?vue&type=style&index=0&id=f5c66568&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-f5c66568\"]])\n\nexport default __exports__","import \"core-js/modules/es.array.push.js\";\nimport { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, createElementBlock as _createElementBlock, renderList as _renderList, Fragment as _Fragment, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"ai-tags\"\n};\nconst _hoisted_2 = {\n class: \"ai-toolbar\"\n};\nconst _hoisted_3 = {\n class: \"ai-heading\"\n};\nconst _hoisted_4 = {\n class: \"ai-heading-icon\"\n};\nconst _hoisted_5 = {\n key: 0,\n class: \"ai-empty\"\n};\nconst _hoisted_6 = {\n class: \"ai-empty-icon\"\n};\nconst _hoisted_7 = {\n class: \"ai-empty-title\"\n};\nconst _hoisted_8 = {\n key: 1,\n class: \"ai-empty ai-ready\"\n};\nconst _hoisted_9 = {\n class: \"ai-empty-icon\"\n};\nconst _hoisted_10 = {\n class: \"ai-empty-title\"\n};\nconst _hoisted_11 = {\n key: 2,\n class: \"ai-progress\"\n};\nconst _hoisted_12 = {\n class: \"ai-progress-label\"\n};\nconst _hoisted_13 = {\n key: 3,\n class: \"ai-results\"\n};\nconst _hoisted_14 = {\n class: \"ai-result-heading\"\n};\nconst _hoisted_15 = {\n class: \"ai-file\"\n};\nconst _hoisted_16 = {\n key: 1,\n class: \"ai-tag-list\"\n};\nconst _hoisted_17 = {\n key: 0,\n class: \"ai-empty-title\"\n};\nconst _hoisted_18 = {\n key: 4,\n class: \"ai-footer\"\n};\nconst _hoisted_19 = {\n class: \"ai-selection\"\n};\nconst _hoisted_20 = {\n class: \"ai-footer-actions\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_progress = _resolveComponent(\"el-progress\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_check_tag = _resolveComponent(\"el-check-tag\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _withDirectives((_openBlock(), _createElementBlock(\"section\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"span\", _hoisted_4, [_createVNode(_component_font_awesome_icon, {\n icon: \"robot\"\n })]), _createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('aiTags.tab')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('aiTags.hint'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), $data.available ? (_openBlock(), _createBlock(_component_el_button, {\n key: 0,\n type: \"primary\",\n loading: $data.generating,\n disabled: $props.disabled || $data.saving || !$props.files.length,\n onClick: _cache[0] || (_cache[0] = $event => $options.generate(false))\n }, {\n default: _withCtx(() => [!$data.generating ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"tags\"\n })) : _createCommentVNode(\"\", true), _createTextVNode(_toDisplayString(_ctx.$t('aiTags.generate')), 1)]),\n _: 1\n }, 8, [\"loading\", \"disabled\"])) : _createCommentVNode(\"\", true)]), !$data.loadingConfig && !$data.available ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [_createElementVNode(\"span\", _hoisted_6, [_createVNode(_component_font_awesome_icon, {\n icon: \"cog\"\n })]), _createElementVNode(\"span\", _hoisted_7, _toDisplayString($data.configError || _ctx.$t('aiTags.disabled')), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n plain: \"\",\n onClick: _cache[1] || (_cache[1] = $event => _ctx.$router.push('/systemConfig#ai'))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cog\"\n }), _createTextVNode(_toDisplayString(_ctx.$t('aiTags.settings')), 1)]),\n _: 1\n })])) : $data.available && !$data.rows.length && !$data.generating ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [_createElementVNode(\"span\", _hoisted_9, [_createVNode(_component_font_awesome_icon, {\n icon: \"tags\"\n })]), _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('aiTags.ready')), 1)])) : _createCommentVNode(\"\", true), $data.generating ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('aiTags.progress', {\n done: $data.completed,\n total: $data.workTotal\n })), 1), _createVNode(_component_el_button, {\n size: \"small\",\n onClick: $options.cancel\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('aiTags.cancel')), 1)]),\n _: 1\n }, 8, [\"onClick\"])]), _createVNode(_component_el_progress, {\n percentage: $data.workTotal ? Math.round($data.completed / $data.workTotal * 100) : 0,\n \"show-text\": false,\n \"stroke-width\": 6\n }, null, 8, [\"percentage\"])])) : _createCommentVNode(\"\", true), $data.rows.length ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.rows, row => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: row.fileId,\n class: \"ai-result\"\n }, [_createElementVNode(\"div\", _hoisted_14, [_createVNode(_component_font_awesome_icon, {\n icon: \"image\",\n class: \"ai-file-icon\"\n }), _createElementVNode(\"span\", _hoisted_15, _toDisplayString($options.fileName(row.fileId)), 1), row.applied ? (_openBlock(), _createBlock(_component_el_tag, {\n key: 0,\n size: \"small\",\n type: \"success\",\n effect: \"light\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"check\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('aiTags.saved')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true)]), row.error ? (_openBlock(), _createBlock(_component_el_alert, {\n key: 0,\n title: $options.errorText(row.error),\n type: \"error\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8, [\"title\"])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_16, [row.applied ? (_openBlock(true), _createElementBlock(_Fragment, {\n key: 0\n }, _renderList(row.selected, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n type: \"success\",\n effect: \"light\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1024);\n }), 128)) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(row.tags, tag => {\n return _openBlock(), _createBlock(_component_el_check_tag, {\n key: tag,\n checked: row.selected.includes(tag),\n \"aria-disabled\": $props.disabled || $data.saving || $data.generating,\n onChange: $event => $options.toggleTag(row, tag)\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"checked\", \"aria-disabled\", \"onChange\"]);\n }), 128)), !row.tags.length ? (_openBlock(), _createElementBlock(\"span\", _hoisted_17, _toDisplayString(_ctx.$t('aiTags.noTags')), 1)) : _createCommentVNode(\"\", true)], 64))])), row.saveError ? (_openBlock(), _createBlock(_component_el_alert, {\n key: 2,\n title: row.saveError,\n type: \"warning\",\n \"show-icon\": \"\",\n closable: false,\n class: \"ai-save-error\"\n }, null, 8, [\"title\"])) : _createCommentVNode(\"\", true)]);\n }), 128))])) : _createCommentVNode(\"\", true), $data.rows.length && !$data.generating ? (_openBlock(), _createElementBlock(\"div\", _hoisted_18, [_createElementVNode(\"span\", _hoisted_19, _toDisplayString(_ctx.$t('aiTags.selection', {\n count: $options.selectedCount\n })), 1), _createElementVNode(\"div\", _hoisted_20, [$options.retryFiles.length ? (_openBlock(), _createBlock(_component_el_button, {\n key: 0,\n disabled: $props.disabled || $data.saving,\n onClick: _cache[2] || (_cache[2] = $event => $options.generate(true))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n }), _createTextVNode(_toDisplayString(_ctx.$t('aiTags.retry')), 1)]),\n _: 1\n }, 8, [\"disabled\"])) : _createCommentVNode(\"\", true), _createVNode(_component_el_button, {\n type: \"primary\",\n loading: $data.saving,\n disabled: $props.disabled || !$options.pending.length,\n onClick: $options.apply\n }, {\n default: _withCtx(() => [!$data.saving ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"save\"\n })) : _createCommentVNode(\"\", true), _createTextVNode(_toDisplayString(_ctx.$t('aiTags.apply')), 1)]),\n _: 1\n }, 8, [\"loading\", \"disabled\", \"onClick\"])])])) : _createCommentVNode(\"\", true)])), [[_directive_loading, $data.loadingConfig]]);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.find.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport \"core-js/modules/es.iterator.reduce.js\";\nimport \"core-js/modules/es.iterator.some.js\";\nimport { apiJSON, aiErrorText, generateTagSuggestions, applyTagSuggestions } from '@/utils/aiTags';\nexport default {\n name: 'AITagPanel',\n props: {\n files: {\n type: Array,\n required: true\n },\n disabled: {\n type: Boolean,\n default: false\n }\n },\n emits: ['applied', 'busy'],\n data() {\n return {\n available: false,\n configError: '',\n loadingConfig: true,\n batchSize: 3,\n generating: false,\n saving: false,\n rows: [],\n completed: 0,\n workTotal: 0\n };\n },\n computed: {\n fileSignature() {\n return JSON.stringify(this.files.map(file => file.name));\n },\n selectedCount() {\n return this.pending.reduce((count, row) => count + row.selected.length, 0);\n },\n retryFiles() {\n return this.files.filter(file => this.rows.some(row => row.fileId === file.name && row.error));\n },\n pending() {\n return this.rows.filter(row => !row.error && !row.applied && row.selected.length);\n }\n },\n watch: {\n fileSignature() {\n this.cancel();\n this.rows = [];\n }\n },\n async mounted() {\n try {\n const config = await apiJSON('/api/manage/ai/tags');\n this.available = config.enabled;\n this.batchSize = config.maxBatchSize;\n } catch (error) {\n this.configError = this.errorText(error);\n } finally {\n this.loadingConfig = false;\n }\n },\n beforeUnmount() {\n this.cancel();\n },\n methods: {\n fileName(id) {\n return this.files.find(file => file.name === id)?.metadata?.FileName || id;\n },\n errorText(error) {\n return aiErrorText(error, this.$t, this.$te);\n },\n toggleTag(row, tag) {\n if (this.disabled || this.saving || this.generating) return;\n row.selected = row.selected.includes(tag) ? row.selected.filter(item => item !== tag) : [...row.selected, tag];\n },\n cancel() {\n this.controller?.abort();\n },\n async generate(retry) {\n if (this.disabled || this.generating || this.saving) return;\n const files = retry ? this.retryFiles : [...this.files];\n const signature = this.fileSignature;\n if (!retry) this.rows = [];\n const controller = new AbortController();\n this.controller = controller;\n this.generating = true;\n this.completed = 0;\n this.workTotal = files.length;\n this.$emit('busy', true);\n try {\n await generateTagSuggestions(files, {\n signal: controller.signal,\n batchSize: this.batchSize,\n onResult: result => {\n if (controller.signal.aborted || signature !== this.fileSignature) return;\n const row = {\n ...result,\n selected: [...(result.tags || [])],\n applied: false,\n saveError: ''\n };\n const index = this.rows.findIndex(item => item.fileId === result.fileId);\n if (index === -1) this.rows.push(row);else this.rows.splice(index, 1, row);\n this.completed++;\n }\n });\n } catch (error) {\n if (signature !== this.fileSignature) return;\n if (error.name === 'AbortError') {\n for (const file of files) {\n if (!this.rows.some(row => row.fileId === file.name && !row.error)) {\n const index = this.rows.findIndex(row => row.fileId === file.name);\n const row = {\n fileId: file.name,\n error: {\n message: 'CANCELLED'\n },\n selected: [],\n applied: false\n };\n if (index === -1) this.rows.push(row);else if (this.rows[index].error?.message === 'CANCELLED') this.rows.splice(index, 1, row);\n }\n }\n }\n if (error.name !== 'AbortError') this.$message.error(this.errorText(error));\n } finally {\n this.generating = false;\n this.$emit('busy', false);\n }\n },\n async apply() {\n if (this.disabled || this.saving || this.generating) return;\n this.saving = true;\n this.$emit('busy', true);\n try {\n await applyTagSuggestions(this.pending.map(row => ({\n fileId: row.fileId,\n tags: row.selected,\n sourceIdentity: row.sourceIdentity,\n repairIndex: !!row.indexPending\n })), result => {\n const row = this.rows.find(item => item.fileId === result.fileId);\n if (!row) return;\n row.indexPending = !!result.indexPending;\n row.applied = result.saved && !result.indexPending;\n row.saveError = result.indexPending ? this.$t('aiTags.indexPending') : result.error ? this.errorText(result.error) : '';\n if (result.saved) this.$emit('applied', [result]);\n });\n } catch (error) {\n this.$message.error(this.errorText(error));\n } finally {\n this.saving = false;\n this.$emit('busy', false);\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./AITagPanel.vue?vue&type=template&id=954f5f34&scoped=true\"\nimport script from \"./AITagPanel.vue?vue&type=script&lang=js\"\nexport * from \"./AITagPanel.vue?vue&type=script&lang=js\"\n\nimport \"./AITagPanel.vue?vue&type=style&index=0&id=954f5f34&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-954f5f34\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, withKeys as _withKeys, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"batch-tag-container\"\n};\nconst _hoisted_2 = {\n class: \"tab-content\"\n};\nconst _hoisted_3 = {\n class: \"tab-description\"\n};\nconst _hoisted_4 = {\n class: \"input-section\"\n};\nconst _hoisted_5 = {\n key: 0,\n class: \"suggestions-panel\"\n};\nconst _hoisted_6 = [\"onClick\"];\nconst _hoisted_7 = {\n class: \"tags-to-add-section\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"tags-container\"\n};\nconst _hoisted_9 = {\n key: 1,\n class: \"empty-message\"\n};\nconst _hoisted_10 = {\n class: \"action-buttons\"\n};\nconst _hoisted_11 = {\n class: \"tab-content\"\n};\nconst _hoisted_12 = {\n class: \"tab-description\"\n};\nconst _hoisted_13 = {\n key: 0,\n class: \"common-tags-section\"\n};\nconst _hoisted_14 = {\n class: \"tags-container\"\n};\nconst _hoisted_15 = {\n key: 1,\n class: \"empty-message\"\n};\nconst _hoisted_16 = {\n class: \"tab-content\"\n};\nconst _hoisted_17 = {\n class: \"tab-description\"\n};\nconst _hoisted_18 = {\n class: \"action-buttons\"\n};\nconst _hoisted_19 = {\n class: \"tab-content ai-tab-content\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_AITagPanel = _resolveComponent(\"AITagPanel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: _ctx.$t('batchTag.title'),\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $options.visible = $event),\n width: $options.dialogWidth,\n \"before-close\": $options.beforeClose,\n onClose: $options.handleClose\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [$data.pendingIndexIds.length ? (_openBlock(), _createBlock(_component_el_alert, {\n key: 0,\n title: _ctx.$t('tagManagement.indexPending'),\n type: \"warning\",\n \"show-icon\": \"\",\n closable: false\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n size: \"small\",\n loading: $data.loading,\n disabled: $data.aiBusy,\n onClick: $options.repairIndex\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('aiTags.retry')), 1)]),\n _: 1\n }, 8, [\"loading\", \"disabled\", \"onClick\"])]),\n _: 1\n }, 8, [\"title\"])) : _createCommentVNode(\"\", true), _createVNode(_component_el_tabs, {\n modelValue: $data.activeTab,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.activeTab = $event),\n type: \"border-card\",\n \"before-leave\": $options.beforeTabChange\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tab_pane, {\n label: _ctx.$t('batchTag.addTab'),\n name: \"add\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"p\", _hoisted_3, _toDisplayString(_ctx.$t('batchTag.addDescription', {\n count: $options.fileCount\n })), 1), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_input, {\n modelValue: $data.inputTag,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.inputTag = $event),\n disabled: $data.loading || $data.aiBusy,\n placeholder: _ctx.$t('batchTag.inputPlaceholder'),\n onKeyup: _withKeys($options.handleAddInputTag, [\"enter\"]),\n onInput: $options.handleInputChange,\n clearable: \"\"\n }, {\n append: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: $options.handleAddInputTag,\n type: \"primary\",\n disabled: $data.loading || $data.aiBusy\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"plus\"\n })]),\n _: 1\n }, 8, [\"onClick\", \"disabled\"])]),\n _: 1\n }, 8, [\"modelValue\", \"disabled\", \"placeholder\", \"onKeyup\", \"onInput\"]), $data.showSuggestions && $data.suggestions.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.suggestions, tag => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: tag,\n class: \"suggestion-item\",\n onClick: $event => $options.selectSuggestion(tag)\n }, _toDisplayString(tag), 9, _hoisted_6);\n }), 128))])) : _createCommentVNode(\"\", true)]), _createElementVNode(\"div\", _hoisted_7, [_createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('batchTag.pendingTags')), 1), $data.tagsToAdd.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.tagsToAdd, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n closable: !$data.loading && !$data.aiBusy,\n onClose: $event => $options.removeFromToAdd(tag),\n class: \"tag-item\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"closable\", \"onClose\"]);\n }), 128))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_9, _toDisplayString(_ctx.$t('batchTag.noPendingTags')), 1))]), _createElementVNode(\"div\", _hoisted_10, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $options.executeAddTags,\n loading: $data.loading,\n disabled: $data.tagsToAdd.length === 0\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('batchTag.addToAllFiles')), 1)]),\n _: 1\n }, 8, [\"onClick\", \"loading\", \"disabled\"])])])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_tab_pane, {\n label: _ctx.$t('batchTag.removeTab'),\n name: \"remove\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"p\", _hoisted_12, _toDisplayString(_ctx.$t('batchTag.removeDescription')), 1), $data.commonTags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [_createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('batchTag.commonTags')), 1), _createElementVNode(\"div\", _hoisted_14, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.commonTags, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n closable: !$data.loading && !$data.aiBusy,\n onClose: $event => $options.handleRemoveCommonTag(tag),\n class: \"tag-item\",\n type: \"warning\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"closable\", \"onClose\"]);\n }), 128))])])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_15, _toDisplayString(_ctx.$t('batchTag.noCommonTags')), 1))])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_tab_pane, {\n label: _ctx.$t('batchTag.clearTab'),\n name: \"clear\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_16, [_createElementVNode(\"p\", _hoisted_17, _toDisplayString(_ctx.$t('batchTag.clearDescription', {\n count: $options.fileCount\n })), 1), _createVNode(_component_el_alert, {\n title: _ctx.$t('batchTag.clearWarningTitle'),\n type: \"warning\",\n description: _ctx.$t('batchTag.clearWarningDesc'),\n closable: false,\n style: {\n \"margin-bottom\": \"20px\"\n },\n center: \"\"\n }, null, 8, [\"title\", \"description\"]), _createElementVNode(\"div\", _hoisted_18, [_createVNode(_component_el_button, {\n type: \"danger\",\n onClick: $options.handleClearAllTags,\n loading: $data.loading\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('batchTag.confirmClearAll')), 1)]),\n _: 1\n }, 8, [\"onClick\", \"loading\"])])])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_tab_pane, {\n label: _ctx.$t('aiTags.tab'),\n name: \"ai\",\n lazy: \"\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_19, [$options.visible ? (_openBlock(), _createBlock(_component_AITagPanel, {\n key: 0,\n files: $options.selectedFilesOnly,\n disabled: $data.loading,\n onBusy: _cache[1] || (_cache[1] = $event => $data.aiBusy = $event),\n onApplied: $options.handleAIResults\n }, null, 8, [\"files\", \"disabled\", \"onApplied\"])) : _createCommentVNode(\"\", true)])]),\n _: 1\n }, 8, [\"label\"])]),\n _: 1\n }, 8, [\"modelValue\", \"before-leave\"])])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\", \"before-close\", \"onClose\"]);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.every.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport \"core-js/modules/es.set.difference.v2.js\";\nimport \"core-js/modules/es.set.intersection.v2.js\";\nimport \"core-js/modules/es.set.is-disjoint-from.v2.js\";\nimport \"core-js/modules/es.set.is-subset-of.v2.js\";\nimport \"core-js/modules/es.set.is-superset-of.v2.js\";\nimport \"core-js/modules/es.set.symmetric-difference.v2.js\";\nimport \"core-js/modules/es.set.union.v2.js\";\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nimport AITagPanel from './AITagPanel.vue';\nexport default {\n name: 'BatchTagDialog',\n components: {\n AITagPanel\n },\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n selectedFiles: {\n type: Array,\n required: true,\n default: () => []\n }\n },\n emits: ['update:modelValue', 'tagsUpdated'],\n data() {\n return {\n activeTab: 'add',\n inputTag: '',\n tagsToAdd: [],\n commonTags: [],\n suggestions: [],\n showSuggestions: false,\n loading: false,\n pendingIndexIds: [],\n aiBusy: false,\n debounceTimer: null\n };\n },\n computed: {\n visible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n dialogWidth() {\n return 'min(600px, 90vw)';\n },\n selectedFilesOnly() {\n // 排除文件夹,只保留文件\n return this.selectedFiles.filter(file => !file.isFolder);\n },\n fileCount() {\n return this.selectedFilesOnly.length;\n },\n fileIds() {\n return this.selectedFilesOnly.map(file => file.name);\n }\n },\n watch: {\n visible(newVal) {\n if (newVal) {\n this.loadCommonTags();\n } else {\n this.resetData();\n }\n },\n activeTab(newTab) {\n if (newTab === 'remove') {\n this.loadCommonTags();\n }\n }\n },\n beforeUnmount() {\n clearTimeout(this.debounceTimer);\n },\n methods: {\n beforeClose(done) {\n if (!this.aiBusy && !this.loading) done();\n },\n beforeTabChange() {\n return !this.aiBusy && !this.loading;\n },\n handleAIResults(results) {\n this.updateSavedTags(results);\n },\n updateSavedTags(results) {\n const pending = new Set(this.pendingIndexIds);\n for (const result of results) {\n if (result.saved) {\n if (result.indexPending) pending.add(result.fileId);else pending.delete(result.fileId);\n }\n }\n this.pendingIndexIds = [...pending];\n this.$emit('tagsUpdated', results);\n this.loadCommonTags(results);\n },\n finishTagOperation(data, successKey) {\n this.updateSavedTags(data.results);\n if (data.success) ElMessage.success(this.$t(successKey, {\n count: data.updated\n }));else ElMessage.warning(this.$t('batchTag.partialSave', {\n saved: data.results.filter(result => result.saved && !result.indexPending).length,\n total: data.results.length\n }));\n return data.success;\n },\n async repairIndex() {\n if (this.loading || this.aiBusy) return;\n this.loading = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/batch', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n fileIds: this.pendingIndexIds,\n tags: [],\n action: 'add',\n repairIndexIds: this.pendingIndexIds\n })\n });\n if (!response.ok) throw new Error();\n this.finishTagOperation(await response.json(), 'batchTag.addSuccess');\n } catch {\n ElMessage.error(this.$t('batchTag.addFailed'));\n } finally {\n this.loading = false;\n }\n },\n resetData() {\n this.tagsToAdd = [];\n this.inputTag = '';\n this.showSuggestions = false;\n this.activeTab = 'add';\n this.pendingIndexIds = [];\n },\n loadCommonTags(results = []) {\n const updates = new Map(results.filter(result => result.saved).map(result => [result.fileId, result.tags]));\n const allTags = this.selectedFilesOnly.map(file => updates.get(file.name) || file.metadata?.Tags || []);\n this.commonTags = allTags.length ? allTags[0].filter(tag => allTags.every(tags => tags.includes(tag))) : [];\n },\n handleInputChange() {\n clearTimeout(this.debounceTimer);\n if (!this.inputTag || this.inputTag.trim().length === 0) {\n this.showSuggestions = false;\n return;\n }\n this.debounceTimer = setTimeout(() => {\n this.fetchSuggestions();\n }, 300);\n },\n async fetchSuggestions() {\n try {\n const prefix = this.inputTag.trim().toLowerCase();\n const response = await fetchWithAuth(`/api/manage/tags/autocomplete?prefix=${encodeURIComponent(prefix)}&limit=10`, {\n method: 'GET'\n });\n if (response.ok) {\n const data = await response.json();\n this.suggestions = (data.tags || []).filter(tag => !this.tagsToAdd.includes(tag));\n this.showSuggestions = this.suggestions.length > 0;\n }\n } catch (error) {\n console.error('Error fetching suggestions:', error);\n }\n },\n selectSuggestion(tag) {\n this.inputTag = tag;\n this.showSuggestions = false;\n this.handleAddInputTag();\n },\n handleAddInputTag() {\n if (this.loading || this.aiBusy) return;\n const tag = this.inputTag.trim();\n if (!tag) {\n return;\n }\n if (this.tagsToAdd.includes(tag)) {\n ElMessage.warning(this.$t('batchTag.tagAlreadyInList'));\n this.inputTag = '';\n this.showSuggestions = false;\n return;\n }\n this.tagsToAdd.push(tag);\n this.inputTag = '';\n this.showSuggestions = false;\n },\n removeFromToAdd(tag) {\n if (this.loading || this.aiBusy) return;\n const index = this.tagsToAdd.indexOf(tag);\n if (index > -1) {\n this.tagsToAdd.splice(index, 1);\n }\n },\n async executeAddTags() {\n if (this.loading || this.aiBusy) return;\n if (this.tagsToAdd.length === 0) {\n ElMessage.warning(this.$t('batchTag.pleaseAddTags'));\n return;\n }\n this.loading = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/batch', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n fileIds: this.fileIds,\n repairIndexIds: this.pendingIndexIds,\n action: 'add',\n tags: this.tagsToAdd\n })\n });\n if (response.ok) {\n const data = await response.json();\n if (this.finishTagOperation(data, 'batchTag.addSuccess')) this.tagsToAdd = [];\n } else {\n throw new Error(this.$t('batchTag.addFailed'));\n }\n } catch (error) {\n console.error('Error adding tags:', error);\n ElMessage.error(this.$t('batchTag.addFailed'));\n } finally {\n this.loading = false;\n }\n },\n async handleRemoveCommonTag(tag) {\n if (this.loading || this.aiBusy) return;\n this.loading = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/batch', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n fileIds: this.fileIds,\n repairIndexIds: this.pendingIndexIds,\n action: 'remove',\n tags: [tag]\n })\n });\n if (response.ok) {\n const data = await response.json();\n this.finishTagOperation(data, 'batchTag.removeSuccess');\n } else {\n throw new Error(this.$t('batchTag.removeFailed'));\n }\n } catch (error) {\n console.error('Error removing tag:', error);\n ElMessage.error(this.$t('batchTag.removeFailed'));\n } finally {\n this.loading = false;\n }\n },\n handleClearAllTags() {\n if (this.loading || this.aiBusy) return;\n ElMessageBox.confirm(this.$t('batchTag.clearConfirmMessage', {\n count: this.fileCount\n }), this.$t('batchTag.clearConfirmTitle'), {\n confirmButtonText: this.$t('batchTag.clearConfirmOk'),\n cancelButtonText: this.$t('batchTag.clearConfirmCancel'),\n type: 'warning'\n }).then(() => {\n this.executeClearTags();\n }).catch(() => {\n ElMessage.info(this.$t('batchTag.clearCancelled'));\n });\n },\n async executeClearTags() {\n if (this.loading || this.aiBusy) return;\n this.loading = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/batch', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n fileIds: this.fileIds,\n repairIndexIds: this.pendingIndexIds,\n action: 'set',\n tags: []\n })\n });\n if (response.ok) {\n const data = await response.json();\n this.finishTagOperation(data, 'batchTag.clearSuccess');\n } else {\n throw new Error(this.$t('batchTag.clearFailed'));\n }\n } catch (error) {\n console.error('Error clearing tags:', error);\n ElMessage.error(this.$t('batchTag.clearFailed'));\n } finally {\n this.loading = false;\n }\n },\n handleClose() {\n if (this.aiBusy || this.loading) return;\n this.visible = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./BatchTagDialog.vue?vue&type=template&id=2bcde7ae&scoped=true\"\nimport script from \"./BatchTagDialog.vue?vue&type=script&lang=js\"\nexport * from \"./BatchTagDialog.vue?vue&type=script&lang=js\"\n\nimport \"./BatchTagDialog.vue?vue&type=style&index=0&id=2bcde7ae&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2bcde7ae\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, withKeys as _withKeys, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"tag-management-container\"\n};\nconst _hoisted_2 = {\n class: \"input-section\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"suggestions-panel\"\n};\nconst _hoisted_4 = [\"onClick\"];\nconst _hoisted_5 = {\n class: \"current-tags-section\"\n};\nconst _hoisted_6 = {\n key: 0,\n class: \"tags-container\"\n};\nconst _hoisted_7 = {\n key: 1,\n class: \"empty-message\"\n};\nconst _hoisted_8 = {\n class: \"popular-tags-section\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"tags-container\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"empty-message\"\n};\nconst _hoisted_11 = {\n key: 2,\n class: \"empty-message\"\n};\nconst _hoisted_12 = {\n class: \"dialog-footer\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_Loading = _resolveComponent(\"Loading\");\n const _component_el_icon = _resolveComponent(\"el-icon\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_AITagPanel = _resolveComponent(\"AITagPanel\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: _ctx.$t('tagManagement.title'),\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $options.visible = $event),\n width: $options.dialogWidth,\n \"before-close\": $options.beforeClose,\n onClose: $options.handleClose\n }, {\n footer: _withCtx(() => [_createElementVNode(\"span\", _hoisted_12, [_createVNode(_component_el_button, {\n disabled: $data.aiBusy || $data.loading,\n onClick: $options.handleClose\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('tagManagement.close')), 1)]),\n _: 1\n }, 8, [\"disabled\", \"onClick\"])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createVNode(_component_el_input, {\n modelValue: $data.inputTag,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.inputTag = $event),\n disabled: $data.aiBusy || $data.loading,\n placeholder: _ctx.$t('tagManagement.inputPlaceholder'),\n onKeyup: _withKeys($options.handleAddTag, [\"enter\"]),\n onInput: $options.handleInputChange,\n clearable: \"\"\n }, {\n append: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: $options.handleAddTag,\n type: \"primary\",\n disabled: $data.aiBusy || $data.loading\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"plus\"\n })]),\n _: 1\n }, 8, [\"onClick\", \"disabled\"])]),\n _: 1\n }, 8, [\"modelValue\", \"disabled\", \"placeholder\", \"onKeyup\", \"onInput\"]), $data.showSuggestions && $data.suggestions.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.suggestions, tag => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: tag,\n class: \"suggestion-item\",\n onClick: $event => $options.selectSuggestion(tag)\n }, _toDisplayString(tag), 9, _hoisted_4);\n }), 128))])) : _createCommentVNode(\"\", true)]), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('tagManagement.currentTags')), 1), $data.currentTags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.currentTags, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n closable: !$data.aiBusy && !$data.loading,\n onClose: $event => $options.handleRemoveTag(tag),\n class: \"tag-item\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"closable\", \"onClose\"]);\n }), 128))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_7, _toDisplayString(_ctx.$t('tagManagement.noTags')), 1))]), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('tagManagement.popularTags')), 1), $data.popularTags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.popularTags, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n onClick: $event => $options.handleAddPopularTag(tag),\n class: \"tag-item clickable\",\n type: \"info\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"onClick\"]);\n }), 128))])) : $data.loadingPopularTags ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_icon, {\n class: \"is-loading\"\n }, {\n default: _withCtx(() => [_createVNode(_component_Loading)]),\n _: 1\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('tagManagement.loading')), 1)])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, _toDisplayString(_ctx.$t('tagManagement.noPopularTags')), 1))]), $data.indexPending ? (_openBlock(), _createBlock(_component_el_alert, {\n key: 0,\n title: _ctx.$t('tagManagement.indexPending'),\n type: \"warning\",\n \"show-icon\": \"\",\n closable: false\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n size: \"small\",\n loading: $data.loading,\n disabled: $data.aiBusy,\n onClick: $options.repairIndex\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('aiTags.retry')), 1)]),\n _: 1\n }, 8, [\"loading\", \"disabled\", \"onClick\"])]),\n _: 1\n }, 8, [\"title\"])) : _createCommentVNode(\"\", true), $options.visible ? (_openBlock(), _createBlock(_component_AITagPanel, {\n key: 1,\n class: \"single-ai-panel\",\n files: $options.aiFiles,\n disabled: $data.loading,\n onBusy: _cache[1] || (_cache[1] = $event => $data.aiBusy = $event),\n onApplied: $options.handleAIResults\n }, null, 8, [\"files\", \"disabled\", \"onApplied\"])) : _createCommentVNode(\"\", true)])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\", \"before-close\", \"onClose\"]);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.find.js\";\nimport { ElMessage } from 'element-plus';\nimport { Loading } from '@element-plus/icons-vue';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nimport AITagPanel from './AITagPanel.vue';\nimport { apiJSON, aiErrorText } from '@/utils/aiTags';\nexport default {\n name: 'TagManagementDialog',\n components: {\n Loading,\n AITagPanel\n },\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n fileId: {\n type: String,\n required: true\n },\n fileMetadata: {\n type: Object,\n default: () => ({})\n }\n },\n emits: ['update:modelValue', 'tagsUpdated'],\n data() {\n return {\n currentTags: [],\n inputTag: '',\n suggestions: [],\n popularTags: [],\n showSuggestions: false,\n loading: false,\n indexPending: false,\n aiBusy: false,\n loadingPopularTags: false,\n debounceTimer: null\n };\n },\n computed: {\n aiFiles() {\n return this.fileId ? [{\n name: this.fileId,\n metadata: this.fileMetadata\n }] : [];\n },\n visible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n dialogWidth() {\n return 'min(500px, 90vw)';\n }\n },\n watch: {\n visible(newVal) {\n if (newVal) {\n this.loadFileTags();\n this.loadPopularTags();\n }\n }\n },\n beforeUnmount() {\n clearTimeout(this.debounceTimer);\n },\n methods: {\n beforeClose(done) {\n if (!this.aiBusy && !this.loading) done();\n },\n handleAIResults(results) {\n const result = results.find(item => item.fileId === this.fileId);\n if (result) {\n this.currentTags = result.tags;\n this.$emit('tagsUpdated', result.tags);\n }\n },\n async repairIndex() {\n if (this.aiBusy || this.loading) return;\n this.loading = true;\n try {\n const data = await apiJSON(`/api/manage/tags/${encodeURIComponent(this.fileId)}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n action: 'add',\n tags: [],\n repairIndex: true\n })\n });\n this.currentTags = data.tags;\n this.indexPending = !!data.indexPending;\n this.$emit('tagsUpdated', this.currentTags);\n } catch (error) {\n ElMessage.error(aiErrorText(error, this.$t, this.$te));\n } finally {\n this.loading = false;\n }\n },\n async loadFileTags() {\n this.loading = true;\n try {\n const response = await fetchWithAuth(`/api/manage/tags/${encodeURIComponent(this.fileId)}`, {\n method: 'GET'\n });\n if (response.ok) {\n const data = await response.json();\n this.currentTags = data.tags || [];\n } else {\n throw new Error('Failed to load tags');\n }\n } catch (error) {\n console.error('Error loading file tags:', error);\n ElMessage.error(this.$t('tagManagement.loadFailed'));\n } finally {\n this.loading = false;\n }\n },\n async loadPopularTags() {\n this.loadingPopularTags = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/autocomplete?limit=20', {\n method: 'GET'\n });\n if (response.ok) {\n const data = await response.json();\n this.popularTags = (data.tags || []).filter(tag => !this.currentTags.includes(tag));\n }\n } catch (error) {\n console.error('Error loading popular tags:', error);\n } finally {\n this.loadingPopularTags = false;\n }\n },\n handleInputChange() {\n clearTimeout(this.debounceTimer);\n if (!this.inputTag || this.inputTag.trim().length === 0) {\n this.showSuggestions = false;\n return;\n }\n this.debounceTimer = setTimeout(() => {\n this.fetchSuggestions();\n }, 300);\n },\n async fetchSuggestions() {\n try {\n const prefix = this.inputTag.trim().toLowerCase();\n const response = await fetchWithAuth(`/api/manage/tags/autocomplete?prefix=${encodeURIComponent(prefix)}&limit=10`, {\n method: 'GET'\n });\n if (response.ok) {\n const data = await response.json();\n this.suggestions = (data.tags || []).filter(tag => !this.currentTags.includes(tag));\n this.showSuggestions = this.suggestions.length > 0;\n }\n } catch (error) {\n console.error('Error fetching suggestions:', error);\n }\n },\n selectSuggestion(tag) {\n this.inputTag = tag;\n this.showSuggestions = false;\n this.handleAddTag();\n },\n async handleAddTag() {\n if (this.aiBusy || this.loading) return;\n const tag = this.inputTag.trim();\n if (!tag) {\n return;\n }\n if (this.currentTags.includes(tag)) {\n ElMessage.warning(this.$t('tagManagement.tagExists'));\n this.inputTag = '';\n this.showSuggestions = false;\n return;\n }\n this.loading = true;\n try {\n const response = await fetchWithAuth(`/api/manage/tags/${encodeURIComponent(this.fileId)}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n action: 'add',\n repairIndex: this.indexPending,\n tags: [tag]\n })\n });\n if (response.ok) {\n const data = await response.json();\n this.currentTags = data.tags || [];\n this.indexPending = !!data.indexPending;\n this.inputTag = '';\n this.showSuggestions = false;\n if (!data.indexPending) ElMessage.success(this.$t('tagManagement.addSuccess'));\n this.$emit('tagsUpdated', this.currentTags);\n\n // 重新加载常用标签\n this.loadPopularTags();\n } else {\n const error = await response.json();\n ElMessage.error(aiErrorText(error.error || {\n code: 'INTERNAL_ERROR'\n }, this.$t, this.$te));\n }\n } catch (error) {\n console.error('Error adding tag:', error);\n ElMessage.error(this.$t('tagManagement.addFailed'));\n } finally {\n this.loading = false;\n }\n },\n async handleRemoveTag(tag) {\n if (this.aiBusy || this.loading) return;\n this.loading = true;\n try {\n const response = await fetchWithAuth(`/api/manage/tags/${encodeURIComponent(this.fileId)}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n action: 'remove',\n repairIndex: this.indexPending,\n tags: [tag]\n })\n });\n if (response.ok) {\n const data = await response.json();\n this.currentTags = data.tags || [];\n this.indexPending = !!data.indexPending;\n if (!data.indexPending) ElMessage.success(this.$t('tagManagement.removeSuccess'));\n this.$emit('tagsUpdated', this.currentTags);\n\n // 重新加载常用标签\n this.loadPopularTags();\n } else {\n throw new Error(this.$t('tagManagement.removeFailed'));\n }\n } catch (error) {\n console.error('Error removing tag:', error);\n ElMessage.error(this.$t('tagManagement.removeFailed'));\n } finally {\n this.loading = false;\n }\n },\n handleAddPopularTag(tag) {\n if (this.aiBusy || this.loading) return;\n this.inputTag = tag;\n this.handleAddTag();\n },\n handleClose() {\n if (this.aiBusy || this.loading) return;\n this.visible = false;\n this.inputTag = '';\n this.showSuggestions = false;\n this.currentTags = [];\n this.indexPending = false;\n this.popularTags = [];\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./TagManagementDialog.vue?vue&type=template&id=8ac449fe&scoped=true\"\nimport script from \"./TagManagementDialog.vue?vue&type=script&lang=js\"\nexport * from \"./TagManagementDialog.vue?vue&type=script&lang=js\"\n\nimport \"./TagManagementDialog.vue?vue&type=style&index=0&id=8ac449fe&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-8ac449fe\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, renderList as _renderList, Fragment as _Fragment, withModifiers as _withModifiers } from \"vue\";\nconst _hoisted_1 = {\n class: \"detail-actions\"\n};\nconst _hoisted_2 = {\n class: \"preview-section\"\n};\nconst _hoisted_3 = {\n class: \"preview-content\"\n};\nconst _hoisted_4 = [\"src\"];\nconst _hoisted_5 = [\"src\"];\nconst _hoisted_6 = {\n key: 1\n};\nconst _hoisted_7 = {\n key: 1\n};\nconst _hoisted_8 = {\n key: 0,\n style: {\n \"display\": \"flex\",\n \"align-items\": \"center\",\n \"gap\": \"6px\"\n }\n};\nconst _hoisted_9 = {\n key: 1,\n style: {\n \"color\": \"var(--el-text-color-secondary)\"\n }\n};\nconst _hoisted_10 = {\n key: 0,\n style: {\n \"display\": \"flex\",\n \"flex-wrap\": \"wrap\",\n \"gap\": \"5px\"\n }\n};\nconst _hoisted_11 = {\n key: 1,\n style: {\n \"color\": \"var(--el-text-color-secondary)\"\n }\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_el_image = _resolveComponent(\"el-image\");\n const _component_el_descriptions_item = _resolveComponent(\"el-descriptions-item\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_descriptions = _resolveComponent(\"el-descriptions\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: _ctx.$t('fileDetail.title'),\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[24] || (_cache[24] = $event => $options.visible = $event),\n width: $options.dialogWidth\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [!$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 0,\n type: \"primary\",\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$emit('download')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"download\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.download')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 1,\n type: \"primary\",\n onClick: _cache[1] || (_cache[1] = $event => _ctx.$emit('tagManagement')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"tags\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.tags')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 2,\n type: \"primary\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('block')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"ban\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.blacklist')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 3,\n type: \"primary\",\n onClick: _cache[3] || (_cache[3] = $event => _ctx.$emit('white')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"shield-alt\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.whitelist')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 4,\n type: \"danger\",\n onClick: _cache[4] || (_cache[4] = $event => _ctx.$emit('delete')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.deleteBtn')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 5,\n type: \"warning\",\n onClick: _cache[5] || (_cache[5] = $event => $options.startEdit()),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"edit\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.edit')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 6,\n type: \"info\",\n onClick: _cache[6] || (_cache[6] = $event => $options.openRenameDialog()),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"i-cursor\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.rename')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), $data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 7,\n type: \"success\",\n onClick: _cache[7] || (_cache[7] = $event => $options.saveMetadata()),\n round: \"\",\n size: \"small\",\n class: \"detail-action\",\n loading: $data.editSaving\n }, {\n default: _withCtx(() => [!$data.editSaving ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"save\",\n style: {\n \"margin-right\": \"3px\"\n }\n })) : _createCommentVNode(\"\", true), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.save')), 1)]),\n _: 1\n }, 8, [\"loading\"])) : _createCommentVNode(\"\", true), $data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 8,\n onClick: _cache[8] || (_cache[8] = $event => $options.cancelEdit()),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('fileDetail.cancel')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true)]), _createVNode(_component_el_tabs, {\n modelValue: $data.activeTab,\n \"onUpdate:modelValue\": _cache[16] || (_cache[16] = $event => $data.activeTab = $event),\n onTabClick: $options.handleTabClick,\n style: {\n \"margin-bottom\": \"10px\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tab_pane, {\n label: _ctx.$t('fileDetail.originUrl'),\n name: \"originUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.originUrl,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = $event => $props.urls.originUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_tab_pane, {\n label: \"Markdown\",\n name: \"mdUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.mdUrl,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $props.urls.mdUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n }), _createVNode(_component_el_tab_pane, {\n label: \"HTML\",\n name: \"htmlUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.htmlUrl,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => $props.urls.htmlUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n }), _createVNode(_component_el_tab_pane, {\n label: \"BBCode\",\n name: \"bbUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.bbUrl,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = $event => $props.urls.bbUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n }), $props.file?.metadata?.TgFileId ? (_openBlock(), _createBlock(_component_el_tab_pane, {\n key: 0,\n label: \"TG File ID\",\n name: \"tgId\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.tgId,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $event => $props.urls.tgId = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n })) : _createCommentVNode(\"\", true), $props.file?.metadata?.S3Location ? (_openBlock(), _createBlock(_component_el_tab_pane, {\n key: 1,\n label: \"S3 Location\",\n name: \"s3Location\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.S3Location,\n \"onUpdate:modelValue\": _cache[14] || (_cache[14] = $event => $props.urls.S3Location = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n })) : _createCommentVNode(\"\", true), $props.file?.metadata?.S3CdnFileUrl ? (_openBlock(), _createBlock(_component_el_tab_pane, {\n key: 2,\n label: \"S3 CDN URL\",\n name: \"s3CdnFileUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.S3CdnFileUrl,\n \"onUpdate:modelValue\": _cache[15] || (_cache[15] = $event => $props.urls.S3CdnFileUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"modelValue\", \"onTabClick\"]), _createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"div\", _hoisted_3, [$options.isVideo ? (_openBlock(), _createElementBlock(\"video\", {\n key: 0,\n src: $props.fileLink,\n autoplay: \"\",\n muted: \"\",\n loop: \"\",\n class: \"video-preview\",\n onClick: _cache[17] || (_cache[17] = (...args) => $options.openImageLink && $options.openImageLink(...args))\n }, null, 8, _hoisted_4)) : $options.isAudio ? (_openBlock(), _createElementBlock(\"audio\", {\n key: 1,\n src: $props.fileLink,\n controls: \"\",\n autoplay: \"\",\n class: \"audio-preview\"\n }, null, 8, _hoisted_5)) : $options.isImage ? (_openBlock(), _createBlock(_component_el_image, {\n key: 2,\n src: $props.fileLink,\n \"preview-src-list\": [$props.fileLink],\n \"preview-teleported\": true,\n fit: \"contain\",\n lazy: \"\",\n class: \"image-preview\"\n }, null, 8, [\"src\", \"preview-src-list\"])) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 3,\n icon: \"file\",\n class: \"file-icon-detail\"\n }))])]), _createVNode(_component_el_descriptions, {\n border: \"\",\n column: $options.descColumn\n }, {\n default: _withCtx(() => [_createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.fileNameLabel')\n }, {\n default: _withCtx(() => [$data.isEditing ? (_openBlock(), _createBlock(_component_el_input, {\n key: 0,\n modelValue: $data.editForm.FileName,\n \"onUpdate:modelValue\": _cache[18] || (_cache[18] = $event => $data.editForm.FileName = $event),\n size: \"small\",\n placeholder: _ctx.$t('fileDetail.fileNamePlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])) : (_openBlock(), _createElementBlock(\"span\", _hoisted_6, _toDisplayString($props.file?.metadata?.FileName || $props.file?.name), 1))]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.fileType')\n }, {\n default: _withCtx(() => [$data.isEditing ? (_openBlock(), _createBlock(_component_el_input, {\n key: 0,\n modelValue: $data.editForm.FileType,\n \"onUpdate:modelValue\": _cache[19] || (_cache[19] = $event => $data.editForm.FileType = $event),\n size: \"small\",\n placeholder: _ctx.$t('fileDetail.fileTypePlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])) : (_openBlock(), _createElementBlock(\"span\", _hoisted_7, _toDisplayString($props.file?.metadata?.FileType || _ctx.$t('fileDetail.unknown')), 1))]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.fileSizeLabel')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.fileSizeDisplay), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.imageDimensions')\n }, {\n default: _withCtx(() => [$options.imageDimensions ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [_createElementVNode(\"span\", null, _toDisplayString($props.file?.metadata?.Width) + \" × \" + _toDisplayString($props.file?.metadata?.Height), 1), _createVNode(_component_el_tag, {\n size: \"small\",\n type: \"info\",\n style: {\n \"display\": \"inline-flex\",\n \"align-items\": \"center\",\n \"justify-content\": \"center\"\n }\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.orientationIcon), 1)]),\n _: 1\n })])) : (_openBlock(), _createElementBlock(\"span\", _hoisted_9, _toDisplayString(_ctx.$t('fileDetail.noDimensions')), 1))]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.uploadTimeLabel')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.uploadTime), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.channelTypeAndName')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tag, {\n size: \"small\",\n type: \"info\",\n style: {\n \"margin-right\": \"6px\"\n }\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.Channel || _ctx.$t('fileDetail.unknown')), 1)]),\n _: 1\n }), _createElementVNode(\"span\", null, _toDisplayString($props.file?.metadata?.ChannelName || '-'), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.accessStatusAndReview')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tag, {\n size: \"small\",\n type: $options.accessTagType,\n style: {\n \"margin-right\": \"6px\"\n }\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.accessType), 1)]),\n _: 1\n }, 8, [\"type\"]), _createElementVNode(\"span\", null, _toDisplayString($props.file?.metadata?.Label || _ctx.$t('fileDetail.noTags')), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.uploadIP')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.UploadIP || _ctx.$t('fileDetail.unknown')), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.uploadAddressLabel')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.UploadAddress || _ctx.$t('fileDetail.unknown')), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.fileTags')\n }, {\n default: _withCtx(() => [$props.file?.metadata?.Tags && $props.file?.metadata?.Tags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.file?.metadata?.Tags, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n size: \"small\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1024);\n }), 128))])) : (_openBlock(), _createElementBlock(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('fileDetail.noTags')), 1))]),\n _: 1\n }, 8, [\"label\"])]),\n _: 1\n }, 8, [\"column\"]), _createVNode(_component_el_dialog, {\n modelValue: $data.showRenameDialog,\n \"onUpdate:modelValue\": _cache[23] || (_cache[23] = $event => $data.showRenameDialog = $event),\n title: _ctx.$t('fileDetail.renameTitle'),\n width: $options.dialogWidth,\n \"append-to-body\": \"\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[21] || (_cache[21] = $event => $options.closeRenameDialog())\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('fileDetail.renameCancel')), 1)]),\n _: 1\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[22] || (_cache[22] = $event => $options.submitRename()),\n loading: $data.renameSaving,\n disabled: !$data.renameValidation.valid\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('fileDetail.renameConfirm')), 1)]),\n _: 1\n }, 8, [\"loading\", \"disabled\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n onSubmit: _withModifiers($options.submitRename, [\"prevent\"])\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('fileDetail.renameLabel'),\n error: $data.renameValidation.error\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.renameForm.newFileId,\n \"onUpdate:modelValue\": _cache[20] || (_cache[20] = $event => $data.renameForm.newFileId = $event),\n placeholder: _ctx.$t('fileDetail.renamePlaceholder'),\n onInput: $options.validateRenameInput,\n clearable: \"\"\n }, null, 8, [\"modelValue\", \"placeholder\", \"onInput\"])]),\n _: 1\n }, 8, [\"label\", \"error\"])]),\n _: 1\n }, 8, [\"onSubmit\"])]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"width\"])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]);\n}","/**\r\n * File_ID 验证器模块\r\n * 提供 File_ID 格式验证功能,用于重命名操作的前端校验\r\n * 非法字符规则复用 pathValidator 的字符集\r\n */\r\n\r\n/**\r\n * 非法字符正则表达式\r\n * 非法字符包括: \\ : * ? \" ' < > | 空格 ( ) [ ] { } # % ^ ` ~ ; @ & = + $ ,\r\n * 与 pathValidator.js 保持一致\r\n */\r\nconst INVALID_CHARS = /[\\\\:\\*\\?\"'<>\\| \\(\\)\\[\\]\\{\\}#%\\^`~;@&=\\+\\$,]/;\r\n\r\n/**\r\n * 验证 File_ID 格式\r\n * @param {string} newFileId - 新的 File_ID\r\n * @param {string} currentFileId - 当前 File_ID\r\n * @returns {{ valid: boolean, error?: string }}\r\n */\r\nexport function validateFileId(newFileId, currentFileId) {\r\n // 1. 空值/纯空白检测\r\n if (!newFileId || newFileId.trim() === '') {\r\n return {\r\n valid: false,\r\n error: '文件名不能为空'\r\n };\r\n }\r\n\r\n // 2. 与当前 File_ID 相同检测\r\n if (newFileId === currentFileId) {\r\n return {\r\n valid: false,\r\n error: '文件名未发生变化'\r\n };\r\n }\r\n\r\n // 3. 路径穿越检测\r\n if (newFileId.includes('..')) {\r\n return {\r\n valid: false,\r\n error: '文件名不能包含路径穿越字符 \"..\"'\r\n };\r\n }\r\n\r\n // 3.5 单独的 . 路径段检测(仅检查 /./ 或开头 ./,不检查末尾以允许继续输入如 .123)\r\n if (/\\/\\.\\//.test(newFileId) || /^\\.\\//.test(newFileId)) {\r\n return {\r\n valid: false,\r\n error: '文件名不能包含单独的 \".\" 路径段'\r\n };\r\n }\r\n\r\n // 4. 非法字符检测(复用 pathValidator 的字符规则)\r\n if (INVALID_CHARS.test(newFileId)) {\r\n return {\r\n valid: false,\r\n error: '文件名包含非法字符,请使用合法的文件名格式'\r\n };\r\n }\r\n\r\n // 5. 连续斜杠检测\r\n if (newFileId.includes('//')) {\r\n return {\r\n valid: false,\r\n error: '文件名不能包含连续的斜杠'\r\n };\r\n }\r\n\r\n return { valid: true };\r\n}\r\n","import { ElMessage } from 'element-plus';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nimport { validateFileId } from '@/utils/fileIdValidator';\nexport default {\n name: 'FileDetailDialog',\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n file: {\n type: Object,\n default: null\n },\n fileLink: {\n type: String,\n default: ''\n },\n urls: {\n type: Object,\n default: () => ({\n originUrl: '',\n mdUrl: '',\n htmlUrl: '',\n bbUrl: '',\n tgId: '',\n S3Location: '',\n S3CdnFileUrl: ''\n })\n }\n },\n emits: ['update:modelValue', 'download', 'tagManagement', 'block', 'white', 'delete', 'metadataUpdated', 'fileRenamed'],\n watch: {\n visible(val) {\n if (!val) {\n // 关闭弹窗时退出编辑状态\n this.isEditing = false;\n this.editSaving = false;\n }\n }\n },\n data() {\n return {\n activeTab: 'originUrl',\n isEditing: false,\n editForm: {\n FileName: '',\n FileType: ''\n },\n editSaving: false,\n showRenameDialog: false,\n renameForm: {\n newFileId: ''\n },\n renameValidation: {\n valid: true,\n error: ''\n },\n renameSaving: false\n };\n },\n computed: {\n visible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n dialogWidth() {\n return window.innerWidth < 768 ? '95%' : '900px';\n },\n descColumn() {\n return window.innerWidth < 768 ? 1 : 2;\n },\n isVideo() {\n // 先通过 content-type 判断\n const fileType = this.file?.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('video')) return true;\n // 再通过文件后缀判断\n const name = this.file?.name?.toLowerCase() || '';\n return name.endsWith('.mp4') || name.endsWith('.webm') || name.endsWith('.mov') || name.endsWith('.avi');\n },\n isAudio() {\n // 先通过 content-type 判断\n const fileType = this.file?.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('audio')) return true;\n // 再通过文件后缀判断\n const name = this.file?.name?.toLowerCase() || '';\n return name.endsWith('.mp3') || name.endsWith('.wav') || name.endsWith('.ogg') || name.endsWith('.flac');\n },\n isImage() {\n // 先通过 content-type 判断\n const fileType = this.file?.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('image')) return true;\n // 再通过文件后缀判断\n const name = this.file?.name?.toLowerCase() || '';\n return name.endsWith('.jpg') || name.endsWith('.jpeg') || name.endsWith('.png') || name.endsWith('.gif') || name.endsWith('.webp') || name.endsWith('.svg') || name.endsWith('.bmp') || name.endsWith('.avif') || name.endsWith('.heic') || name.endsWith('.heif');\n },\n uploadTime() {\n if (this.file?.metadata?.TimeStamp) {\n return new Date(this.file.metadata.TimeStamp).toLocaleString();\n }\n return this.$t('fileDetail.unknown');\n },\n accessType() {\n const listType = this.file?.metadata?.ListType;\n const label = this.file?.metadata?.Label;\n if (listType === 'White') return this.$t('fileDetail.accessNormalWhitelist');\n if (listType === 'Block') return this.$t('fileDetail.accessBlockedBlacklist');\n if (label === 'adult') return this.$t('fileDetail.accessBlockedReview');\n return this.$t('fileDetail.accessNormal');\n },\n accessTagType() {\n const listType = this.file?.metadata?.ListType;\n const label = this.file?.metadata?.Label;\n if (listType === 'White') return 'success';\n if (listType === 'Block') return 'danger';\n if (label === 'adult') return 'danger';\n return 'success';\n },\n imageDimensions() {\n const width = this.file?.metadata?.Width;\n const height = this.file?.metadata?.Height;\n if (width && height) return true;\n return null;\n },\n orientationIcon() {\n const width = this.file?.metadata?.Width;\n const height = this.file?.metadata?.Height;\n if (!width || !height) return '';\n const ratio = width / height;\n if (ratio > 1.1) return this.$t('fileDetail.orientationLandscape');\n if (ratio < 0.9) return this.$t('fileDetail.orientationPortrait');\n return this.$t('fileDetail.orientationSquare');\n },\n fileSizeDisplay() {\n const sizeBytes = this.file?.metadata?.FileSizeBytes;\n const sizeMB = this.file?.metadata?.FileSize;\n if (sizeBytes) {\n // 根据大小选择合适的单位\n if (sizeBytes < 1024) {\n return `${sizeBytes} B`;\n } else if (sizeBytes < 1024 * 1024) {\n return `${(sizeBytes / 1024).toFixed(2)} KB`;\n } else {\n return `${(sizeBytes / 1024 / 1024).toFixed(2)} MB`;\n }\n } else if (sizeMB) {\n return `${sizeMB} MB`;\n }\n return this.$t('fileDetail.unknown');\n }\n },\n methods: {\n handleVideoClick(e) {\n const video = e.target;\n if (video.paused) video.play();else video.pause();\n },\n handleTabClick() {},\n handleUrlClick(e) {\n const input = e.target;\n input.select();\n navigator.clipboard.writeText(input.value).then(() => {\n ElMessage.success(this.$t('fileDetail.linkCopied'));\n });\n },\n openImageLink() {\n if (this.fileLink) {\n window.open(this.fileLink, '_blank');\n }\n },\n startEdit() {\n this.editForm.FileName = this.file?.metadata?.FileName || '';\n this.editForm.FileType = this.file?.metadata?.FileType || '';\n this.isEditing = true;\n },\n cancelEdit() {\n this.isEditing = false;\n this.editForm.FileName = this.file?.metadata?.FileName || '';\n this.editForm.FileType = this.file?.metadata?.FileType || '';\n this.editSaving = false;\n },\n async saveMetadata() {\n this.editSaving = true;\n try {\n const fileId = this.file.name;\n const response = await fetchWithAuth(`/api/manage/metadata/${fileId}`, {\n method: 'PATCH',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n FileName: this.editForm.FileName,\n FileType: this.editForm.FileType\n })\n });\n if (response.ok) {\n const data = await response.json();\n ElMessage.success(this.$t('fileDetail.metadataSaved'));\n this.isEditing = false;\n this.$emit('metadataUpdated', fileId, data.metadata);\n } else {\n const error = await response.json().catch(() => ({}));\n throw new Error(error.message || this.$t('fileDetail.metadataSaveFailed'));\n }\n } catch (error) {\n console.error('Error saving metadata:', error);\n ElMessage.error(error.message || this.$t('fileDetail.metadataSaveFailed'));\n } finally {\n this.editSaving = false;\n }\n },\n openRenameDialog() {\n this.renameForm.newFileId = this.file?.name || '';\n this.renameValidation = {\n valid: true,\n error: ''\n };\n this.showRenameDialog = true;\n },\n closeRenameDialog() {\n this.showRenameDialog = false;\n this.renameForm.newFileId = '';\n this.renameValidation = {\n valid: true,\n error: ''\n };\n },\n validateRenameInput() {\n const result = validateFileId(this.renameForm.newFileId, this.file?.name || '');\n this.renameValidation = {\n valid: result.valid,\n error: result.error || ''\n };\n },\n async submitRename() {\n if (this.renameSaving) return;\n\n // Validate input first\n this.validateRenameInput();\n if (!this.renameValidation.valid) {\n return;\n }\n this.renameSaving = true;\n try {\n const oldFileId = this.file.name;\n const response = await fetchWithAuth(`/api/manage/rename/${oldFileId}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n newFileId: this.renameForm.newFileId\n })\n });\n if (response.ok) {\n const data = await response.json();\n ElMessage.success(this.$t('fileDetail.renameSuccess'));\n this.showRenameDialog = false;\n this.$emit('fileRenamed', oldFileId, this.renameForm.newFileId, data.metadata);\n } else if (response.status === 409) {\n // Conflict — target File_ID already exists\n this.renameValidation = {\n valid: false,\n error: this.$t('fileDetail.renameConflict')\n };\n } else {\n const error = await response.json().catch(() => ({}));\n throw new Error(error.message || this.$t('fileDetail.renameFailed'));\n }\n } catch (error) {\n console.error('Error renaming file:', error);\n ElMessage.error(error.message || this.$t('fileDetail.renameFailed'));\n } finally {\n this.renameSaving = false;\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FileDetailDialog.vue?vue&type=template&id=550287cc&scoped=true\"\nimport script from \"./FileDetailDialog.vue?vue&type=script&lang=js\"\nexport * from \"./FileDetailDialog.vue?vue&type=script&lang=js\"\n\nimport \"./FileDetailDialog.vue?vue&type=style&index=0&id=550287cc&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-550287cc\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, createBlock as _createBlock, createCommentVNode as _createCommentVNode, Transition as _Transition } from \"vue\";\nconst _hoisted_1 = {\n key: 0,\n class: \"batch-floating-bar\"\n};\nconst _hoisted_2 = {\n class: \"batch-selection-summary\"\n};\nconst _hoisted_3 = {\n class: \"batch-selection-count\"\n};\nconst _hoisted_4 = {\n class: \"batch-floating-actions\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n return _openBlock(), _createBlock(_Transition, {\n name: \"batch-toolbar\"\n }, {\n default: _withCtx(() => [$props.selectedCount > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('dashboard.clearSelection'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"batch-floating-btn ghost\",\n \"aria-label\": _ctx.$t('dashboard.clearSelection'),\n onClick: $options.handleClear\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"times\",\n class: \"batch-floating-icon\"\n })]),\n _: 1\n }, 8, [\"aria-label\", \"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: `${$props.selectedCount} ${_ctx.$t('dashboard.selectedItems')}`,\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"span\", _hoisted_3, _toDisplayString($props.selectedCount), 1)])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _cache[0] || (_cache[0] = _createElementVNode(\"span\", {\n class: \"batch-toolbar-divider\"\n }, null, -1)), _createElementVNode(\"div\", _hoisted_4, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.actions, action => {\n return _openBlock(), _createBlock(_component_el_tooltip, {\n key: action.command,\n disabled: $options.disableTooltip,\n content: _ctx.$t(action.label),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: _normalizeClass([\"batch-floating-btn\", action.className]),\n \"aria-label\": _ctx.$t(action.label),\n onClick: $event => $options.handleAction(action.command)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: action.icon,\n class: \"batch-floating-icon\"\n }, null, 8, [\"icon\"])]),\n _: 2\n }, 1032, [\"class\", \"aria-label\", \"onClick\"])]),\n _: 2\n }, 1032, [\"disabled\", \"content\"]);\n }), 128))])])) : _createCommentVNode(\"\", true)]),\n _: 1\n });\n}","export default {\n name: 'BatchActionBar',\n props: {\n selectedCount: {\n type: Number,\n required: true\n }\n },\n emits: ['action', 'clear'],\n data() {\n return {\n actions: [{\n command: 'copy',\n label: 'dashboard.copy',\n icon: 'copy',\n className: 'copy'\n }, {\n command: 'download',\n label: 'dashboard.download',\n icon: 'download',\n className: 'download'\n }, {\n command: 'move',\n label: 'dashboard.move',\n icon: 'file-export',\n className: 'move'\n }, {\n command: 'tagManagement',\n label: 'dashboard.tagManagement',\n icon: 'tags',\n className: 'tag'\n }, {\n command: 'ban',\n label: 'dashboard.addToBlacklist',\n icon: 'ban',\n className: 'ban'\n }, {\n command: 'white',\n label: 'dashboard.addToWhitelist',\n icon: 'shield-alt',\n className: 'white'\n }, {\n command: 'delete',\n label: 'dashboard.delete',\n icon: 'trash-alt',\n className: 'danger'\n }]\n };\n },\n computed: {\n disableTooltip() {\n return window.innerWidth < 768;\n }\n },\n methods: {\n handleAction(command) {\n this.$emit('action', command);\n },\n handleClear() {\n this.$emit('clear');\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./BatchActionBar.vue?vue&type=template&id=49301bcc&scoped=true\"\nimport script from \"./BatchActionBar.vue?vue&type=script&lang=js\"\nexport * from \"./BatchActionBar.vue?vue&type=script&lang=js\"\n\nimport \"./BatchActionBar.vue?vue&type=style&index=0&id=49301bcc&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-49301bcc\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, withModifiers as _withModifiers, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, normalizeStyle as _normalizeStyle, withCtx as _withCtx } from \"vue\";\nconst _hoisted_1 = {\n class: \"list-col list-col-checkbox\"\n};\nconst _hoisted_2 = [\"src\"];\nconst _hoisted_3 = [\"src\"];\nconst _hoisted_4 = [\"title\"];\nconst _hoisted_5 = {\n class: \"filename-start\"\n};\nconst _hoisted_6 = {\n class: \"filename-end\"\n};\nconst _hoisted_7 = {\n class: \"list-col list-col-tags\"\n};\nconst _hoisted_8 = {\n key: 1,\n class: \"list-empty\"\n};\nconst _hoisted_9 = {\n class: \"list-col list-col-channel\"\n};\nconst _hoisted_10 = {\n class: \"list-col list-col-channel-name\"\n};\nconst _hoisted_11 = {\n key: 0,\n class: \"channel-name-box\"\n};\nconst _hoisted_12 = {\n key: 1,\n class: \"list-empty\"\n};\nconst _hoisted_13 = {\n class: \"list-col list-col-address\"\n};\nconst _hoisted_14 = {\n key: 0,\n class: \"address-box\"\n};\nconst _hoisted_15 = {\n key: 1,\n class: \"list-empty\"\n};\nconst _hoisted_16 = {\n class: \"list-col list-col-size\"\n};\nconst _hoisted_17 = {\n class: \"list-col list-col-date\"\n};\nconst _hoisted_18 = {\n class: \"list-col list-col-actions\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n return _openBlock(), _createElementBlock(\"div\", {\n class: \"list-item\",\n onTouchstart: _cache[10] || (_cache[10] = $event => _ctx.$emit('touchstart', $event)),\n onTouchend: _cache[11] || (_cache[11] = $event => _ctx.$emit('touchend', $event)),\n onTouchmove: _cache[12] || (_cache[12] = $event => _ctx.$emit('touchmove', $event))\n }, [_createElementVNode(\"div\", _hoisted_1, [_createVNode(_component_el_checkbox, {\n modelValue: $data.localSelected,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.localSelected = $event),\n onClick: _cache[1] || (_cache[1] = _withModifiers(() => {}, [\"stop\"])),\n onChange: $options.handleSelectChange\n }, null, 8, [\"modelValue\", \"onChange\"])]), _createElementVNode(\"div\", {\n class: \"list-col list-col-preview\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.handlePreviewClick && $options.handlePreviewClick(...args))\n }, [$options.isFolder ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"folder-open\",\n class: \"list-folder-icon\"\n })) : $options.isVideo ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n src: $props.fileLink,\n class: \"list-preview-img\",\n muted: \"\",\n preload: \"metadata\"\n }, null, 8, _hoisted_2)) : $options.isImage ? (_openBlock(), _createElementBlock(\"img\", {\n key: 2,\n src: $props.fileLink,\n class: \"list-preview-img\",\n loading: \"lazy\",\n decoding: \"async\"\n }, null, 8, _hoisted_3)) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 3,\n icon: \"file\",\n class: \"list-file-icon\"\n }))]), _createElementVNode(\"div\", {\n class: \"list-col list-col-name\",\n onClick: _cache[3] || (_cache[3] = (...args) => $options.handlePreviewClick && $options.handlePreviewClick(...args))\n }, [_createElementVNode(\"span\", {\n class: \"filename-ellipsis\",\n title: $options.displayName\n }, [_createElementVNode(\"span\", _hoisted_5, _toDisplayString($options.fileNameStart), 1), _createElementVNode(\"span\", _hoisted_6, _toDisplayString($options.fileNameEnd), 1)], 8, _hoisted_4)]), _createElementVNode(\"div\", _hoisted_7, [!$options.isFolder && $props.item.metadata?.Tags && $props.item.metadata.Tags.length > 0 ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.item.metadata.Tags.slice(0, 3), (tag, tagIndex) => {\n return _openBlock(), _createElementBlock(\"span\", {\n key: tagIndex,\n class: \"color-tag\",\n style: _normalizeStyle({\n background: $options.getTagColor(tagIndex)\n })\n }, _toDisplayString(tag), 5);\n }), 128)), $props.item.metadata.Tags.length > 3 ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: \"color-tag color-tag-more\",\n style: _normalizeStyle({\n background: $options.getTagColor(3)\n })\n }, \"+\" + _toDisplayString($props.item.metadata.Tags.length - 3), 5)) : _createCommentVNode(\"\", true)], 64)) : (_openBlock(), _createElementBlock(\"span\", _hoisted_8, \"-\"))]), _createElementVNode(\"div\", _hoisted_9, _toDisplayString($options.isFolder ? '-' : $props.item.metadata?.Channel || $props.item.channelTag || '-'), 1), _createElementVNode(\"div\", _hoisted_10, [!$options.isFolder && $props.item.metadata?.ChannelName ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, _toDisplayString($props.item.metadata.ChannelName), 1)) : (_openBlock(), _createElementBlock(\"span\", _hoisted_12, \"-\"))]), _createElementVNode(\"div\", _hoisted_13, [!$options.isFolder && $props.item.metadata?.UploadIP ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, _toDisplayString($props.item.metadata.UploadIP), 1)) : (_openBlock(), _createElementBlock(\"span\", _hoisted_15, \"-\"))]), _createElementVNode(\"div\", _hoisted_16, _toDisplayString($options.isFolder ? '-' : $options.fileSizeDisplay), 1), _createElementVNode(\"div\", _hoisted_17, _toDisplayString($options.uploadDate), 1), _createElementVNode(\"div\", _hoisted_18, [!$options.isFolder ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [_createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.copyLink'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[4] || (_cache[4] = _withModifiers($event => _ctx.$emit('copy'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.downloadFile'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[5] || (_cache[5] = _withModifiers($event => _ctx.$emit('download'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"download\"\n })])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.moveFile'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[6] || (_cache[6] = _withModifiers($event => _ctx.$emit('move'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\"\n })])]),\n _: 1\n }, 8, [\"content\"])], 64)) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.copyLink'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[7] || (_cache[7] = _withModifiers($event => _ctx.$emit('folderCopy'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.moveFile'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[8] || (_cache[8] = _withModifiers($event => _ctx.$emit('move'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\"\n })])]),\n _: 1\n }, 8, [\"content\"])], 64)), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.delete'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn list-action-danger\",\n onClick: _cache[9] || (_cache[9] = _withModifiers($event => _ctx.$emit('delete'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })])]),\n _: 1\n }, 8, [\"content\"])])], 32);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nexport default {\n name: 'FileListItem',\n props: {\n item: {\n type: Object,\n required: true\n },\n selected: {\n type: Boolean,\n default: false\n },\n fileLink: {\n type: String,\n default: ''\n }\n },\n emits: ['update:selected', 'enter', 'detail', 'copy', 'folderCopy', 'move', 'delete', 'download', 'touchstart', 'touchend', 'touchmove'],\n data() {\n return {\n localSelected: this.selected,\n tagColors: ['#f472b6', '#a78bfa', '#60a5fa', '#34d399']\n };\n },\n computed: {\n isFolder() {\n // 检查 isFolder 属性或名称以 / 结尾\n return this.item.isFolder || this.item.name?.endsWith('/');\n },\n isVideo() {\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.mp4') || name.endsWith('.webm') || name.endsWith('.mov') || name.endsWith('.avi');\n },\n isImage() {\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.jpg') || name.endsWith('.jpeg') || name.endsWith('.png') || name.endsWith('.gif') || name.endsWith('.webp') || name.endsWith('.svg') || name.endsWith('.bmp');\n },\n displayName() {\n if (this.isFolder) {\n const parts = this.item.name.split('/').filter(Boolean);\n return parts[parts.length - 1] || this.item.name;\n }\n return this.item.metadata?.FileName || this.getFileName(this.item.name);\n },\n fileNameStart() {\n const name = this.displayName;\n if (name.length <= 20) return name;\n return name.slice(0, -8);\n },\n fileNameEnd() {\n const name = this.displayName;\n if (name.length <= 20) return '';\n return name.slice(-8);\n },\n uploadDate() {\n if (this.item.uploaded) {\n return new Date(this.item.uploaded).toLocaleDateString();\n }\n if (this.item.metadata?.TimeStamp) {\n return new Date(this.item.metadata.TimeStamp).toLocaleDateString();\n }\n return '-';\n },\n fileSizeDisplay() {\n const sizeBytes = this.item.metadata?.FileSizeBytes;\n const sizeMB = this.item.metadata?.FileSize;\n if (sizeBytes) {\n if (sizeBytes < 1024) {\n return `${sizeBytes} B`;\n } else if (sizeBytes < 1024 * 1024) {\n return `${(sizeBytes / 1024).toFixed(1)} KB`;\n } else {\n return `${(sizeBytes / 1024 / 1024).toFixed(2)} MB`;\n }\n } else if (sizeMB) {\n return `${sizeMB} MB`;\n }\n return '-';\n }\n },\n watch: {\n selected(val) {\n this.localSelected = val;\n }\n },\n methods: {\n handleSelectChange(value) {\n this.localSelected = value;\n this.$emit('update:selected', value);\n },\n handlePreviewClick() {\n if (this.isFolder) {\n this.$emit('enter');\n } else {\n this.$emit('detail');\n }\n },\n getFileName(name) {\n const parts = (name || '').split('/');\n return parts[parts.length - 1];\n },\n getTagColor(index) {\n return this.tagColors[index % this.tagColors.length];\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FileListItem.vue?vue&type=template&id=25a3242c&scoped=true\"\nimport script from \"./FileListItem.vue?vue&type=script&lang=js\"\nexport * from \"./FileListItem.vue?vue&type=script&lang=js\"\n\nimport \"./FileListItem.vue?vue&type=style&index=0&id=25a3242c&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-25a3242c\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, vShow as _vShow, withDirectives as _withDirectives, Fragment as _Fragment, withModifiers as _withModifiers, withCtx as _withCtx, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"file-short-info\"\n};\nconst _hoisted_2 = {\n key: 0,\n class: \"success-tag\"\n};\nconst _hoisted_3 = {\n key: 1,\n class: \"fail-tag\"\n};\nconst _hoisted_4 = {\n key: 2,\n class: \"success-tag\"\n};\nconst _hoisted_5 = {\n key: 3,\n class: \"primary-tag\"\n};\nconst _hoisted_6 = {\n key: 0,\n style: {\n \"margin-left\": \"2px\"\n }\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"skeleton-wrapper\"\n};\nconst _hoisted_8 = {\n class: \"error-text\"\n};\nconst _hoisted_9 = [\"src\"];\nconst _hoisted_10 = {\n class: \"error-text\"\n};\nconst _hoisted_11 = {\n key: 3,\n class: \"file-preview\"\n};\nconst _hoisted_12 = {\n class: \"card-bottom-overlay\"\n};\nconst _hoisted_13 = {\n class: \"file-name-row\"\n};\nconst _hoisted_14 = {\n class: \"file-name\"\n};\nconst _hoisted_15 = {\n class: \"action-bar\"\n};\nconst _hoisted_16 = {\n class: \"action-bar-left\"\n};\nconst _hoisted_17 = {\n class: \"action-bar-right\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_image = _resolveComponent(\"el-image\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_card = _resolveComponent(\"el-card\");\n return _openBlock(), _createBlock(_component_el_card, {\n class: \"img-card\",\n onTouchstart: _cache[17] || (_cache[17] = $event => _ctx.$emit('touchstart', $event)),\n onTouchend: _cache[18] || (_cache[18] = $event => _ctx.$emit('touchend', $event)),\n onTouchmove: _cache[19] || (_cache[19] = $event => _ctx.$emit('touchmove', $event))\n }, {\n default: _withCtx(() => [_createVNode(_component_el_checkbox, {\n modelValue: $data.localSelected,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.localSelected = $event),\n onChange: _cache[1] || (_cache[1] = $event => _ctx.$emit('update:selected', $data.localSelected))\n }, null, 8, [\"modelValue\"]), _createElementVNode(\"div\", _hoisted_1, [$props.item.metadata?.ListType === 'White' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _toDisplayString($options.channelTag), 1)) : $props.item.metadata?.ListType === 'Block' || $props.item.metadata?.Label === 'adult' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _toDisplayString($options.channelTag), 1)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_4, _toDisplayString($options.channelTag), 1)), $props.item.metadata?.Tags && $props.item.metadata?.Tags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [_createVNode(_component_font_awesome_icon, {\n icon: \"tag\",\n style: {\n \"margin-right\": \"3px\",\n \"font-size\": \"12px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString($props.item.metadata.Tags[0]) + \" \", 1), $props.item.metadata.Tags.length > 1 ? (_openBlock(), _createElementBlock(\"span\", _hoisted_6, \" (+\" + _toDisplayString($props.item.metadata.Tags.length - 1) + \") \", 1)) : _createCommentVNode(\"\", true)])) : _createCommentVNode(\"\", true)]), $options.isVideo ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [$data.videoLoading ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7)) : $data.videoError ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"error-wrapper\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('detail'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-triangle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_ctx.$t('dashboard.loadFailed')), 1)])) : _createCommentVNode(\"\", true), _withDirectives(_createElementVNode(\"video\", {\n src: $props.fileLink,\n muted: \"\",\n loop: \"\",\n preload: \"metadata\",\n class: \"video-preview\",\n onClick: _cache[3] || (_cache[3] = (...args) => $options.handleVideoClick && $options.handleVideoClick(...args)),\n onMouseenter: _cache[4] || (_cache[4] = $event => $options.handleVideoHover($event, true)),\n onMouseleave: _cache[5] || (_cache[5] = $event => $options.handleVideoHover($event, false)),\n onFullscreenchange: _cache[6] || (_cache[6] = (...args) => $options.handleFullscreenChange && $options.handleFullscreenChange(...args)),\n onWebkitfullscreenchange: _cache[7] || (_cache[7] = (...args) => $options.handleFullscreenChange && $options.handleFullscreenChange(...args)),\n onLoadeddata: _cache[8] || (_cache[8] = $event => $data.videoLoading = false),\n onError: _cache[9] || (_cache[9] = (...args) => $options.handleVideoError && $options.handleVideoError(...args))\n }, null, 40, _hoisted_9), [[_vShow, !$data.videoLoading && !$data.videoError]])], 64)) : $options.isAudio ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"file-preview audio-card-preview\",\n onClick: _cache[10] || (_cache[10] = $event => _ctx.$emit('detail'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"music\",\n class: \"file-icon audio-icon\"\n })])) : $options.isImage ? (_openBlock(), _createBlock(_component_el_image, {\n key: 2,\n \"preview-teleported\": true,\n src: $props.fileLink,\n \"preview-src-list\": $props.previewSrcList,\n fit: \"cover\",\n lazy: \"\",\n decoding: \"async\",\n class: \"image-preview\"\n }, {\n placeholder: _withCtx(() => [...(_cache[20] || (_cache[20] = [_createElementVNode(\"div\", {\n class: \"skeleton-wrapper\"\n }, null, -1)]))]),\n error: _withCtx(() => [_createElementVNode(\"div\", {\n class: \"error-wrapper\",\n onClick: _cache[11] || (_cache[11] = _withModifiers($event => _ctx.$emit('detail'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"image\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('dashboard.loadFailed')), 1)])]),\n _: 1\n }, 8, [\"src\", \"preview-src-list\"])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\",\n class: \"file-icon\"\n })])), _createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"span\", _hoisted_14, _toDisplayString($options.displayName), 1)]), _createElementVNode(\"div\", _hoisted_15, [_createElementVNode(\"div\", _hoisted_16, [_createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.detail'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[12] || (_cache[12] = _withModifiers($event => _ctx.$emit('detail'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"info-circle\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])]), _createElementVNode(\"div\", _hoisted_17, [_createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.moveFile'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[13] || (_cache[13] = _withModifiers($event => _ctx.$emit('move'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.delete'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn action-btn-danger\",\n onClick: _cache[14] || (_cache[14] = _withModifiers($event => _ctx.$emit('delete'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.downloadFile'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[15] || (_cache[15] = _withModifiers($event => _ctx.$emit('download'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"download\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.copyLink'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[16] || (_cache[16] = _withModifiers($event => _ctx.$emit('copy'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])])])]),\n _: 1\n });\n}","export default {\n name: 'FileCard',\n props: {\n item: {\n type: Object,\n required: true\n },\n selected: {\n type: Boolean,\n default: false\n },\n fileLink: {\n type: String,\n required: true\n },\n previewSrcList: {\n type: Array,\n default: () => []\n },\n disableTooltip: {\n type: Boolean,\n default: false\n }\n },\n emits: ['update:selected', 'detail', 'copy', 'move', 'delete', 'download', 'touchstart', 'touchend', 'touchmove'],\n data() {\n return {\n localSelected: this.selected,\n videoLoading: true,\n videoError: false\n };\n },\n computed: {\n channelTag() {\n return this.item.channelTag || '';\n },\n isVideo() {\n // 先通过 content-type 判断\n const fileType = this.item.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('video')) return true;\n // 再通过文件后缀判断\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.mp4') || name.endsWith('.webm') || name.endsWith('.mov') || name.endsWith('.avi');\n },\n isAudio() {\n // 先通过 content-type 判断\n const fileType = this.item.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('audio')) return true;\n // 再通过文件后缀判断\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.mp3') || name.endsWith('.wav') || name.endsWith('.ogg') || name.endsWith('.flac');\n },\n isImage() {\n // 先通过 content-type 判断\n const fileType = this.item.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('image')) return true;\n // 再通过文件后缀判断\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.jpg') || name.endsWith('.jpeg') || name.endsWith('.png') || name.endsWith('.gif') || name.endsWith('.webp') || name.endsWith('.svg') || name.endsWith('.bmp') || name.endsWith('.avif') || name.endsWith('.heic') || name.endsWith('.heif');\n },\n displayName() {\n const fileName = this.item.metadata?.FileName || this.item.name || '';\n const parts = fileName.split('/');\n return parts[parts.length - 1];\n }\n },\n watch: {\n selected(val) {\n this.localSelected = val;\n },\n fileLink() {\n // 链接变化时重置加载状态\n this.videoLoading = true;\n this.videoError = false;\n }\n },\n methods: {\n handleVideoError() {\n this.videoLoading = false;\n this.videoError = true;\n },\n handleVideoClick(e) {\n const video = e.target;\n if (video.requestFullscreen) {\n video.requestFullscreen();\n } else if (video.webkitRequestFullscreen) {\n video.webkitRequestFullscreen();\n } else if (video.mozRequestFullScreen) {\n video.mozRequestFullScreen();\n } else if (video.msRequestFullscreen) {\n video.msRequestFullscreen();\n }\n },\n handleFullscreenChange(e) {\n const video = e.target;\n const isFullscreen = document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement;\n if (isFullscreen) {\n // 进入全屏:取消静音和循环\n video.muted = false;\n video.loop = false;\n } else {\n // 退出全屏:恢复静音和循环,暂停并重置\n video.muted = true;\n video.loop = true;\n video.pause();\n video.currentTime = 0;\n }\n },\n handleVideoHover(e, isEnter) {\n const video = e.target;\n if (isEnter) {\n video.play().catch(() => {});\n } else {\n video.pause();\n video.currentTime = 0;\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FileCard.vue?vue&type=template&id=956fb02e&scoped=true\"\nimport script from \"./FileCard.vue?vue&type=script&lang=js\"\nexport * from \"./FileCard.vue?vue&type=script&lang=js\"\n\nimport \"./FileCard.vue?vue&type=style&index=0&id=956fb02e&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-956fb02e\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, withModifiers as _withModifiers, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"card-bottom-overlay\"\n};\nconst _hoisted_2 = {\n class: \"file-name-row\"\n};\nconst _hoisted_3 = {\n class: \"file-name\"\n};\nconst _hoisted_4 = {\n key: 0,\n class: \"action-bar\"\n};\nconst _hoisted_5 = {\n class: \"action-bar-right\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_card = _resolveComponent(\"el-card\");\n return _openBlock(), _createBlock(_component_el_card, {\n class: \"img-card folder-card\",\n onTouchstart: _cache[6] || (_cache[6] = $event => _ctx.$emit('touchstart', $event)),\n onTouchend: _cache[7] || (_cache[7] = $event => _ctx.$emit('touchend', $event)),\n onTouchmove: _cache[8] || (_cache[8] = $event => _ctx.$emit('touchmove', $event))\n }, {\n default: _withCtx(() => [_createVNode(_component_el_checkbox, {\n modelValue: $data.localSelected,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.localSelected = $event),\n onChange: _cache[1] || (_cache[1] = $event => _ctx.$emit('update:selected', $data.localSelected))\n }, null, 8, [\"modelValue\"]), _createElementVNode(\"div\", {\n class: \"folder-icon\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('enter'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"folder-icon-svg\"\n })]), _createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"span\", _hoisted_3, _toDisplayString($options.folderName), 1)]), $props.showActions ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [_cache[9] || (_cache[9] = _createElementVNode(\"div\", {\n class: \"action-bar-left\"\n }, null, -1)), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.copyLink'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[3] || (_cache[3] = _withModifiers($event => _ctx.$emit('copy'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.moveFile'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[4] || (_cache[4] = _withModifiers($event => _ctx.$emit('move'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.delete'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn action-btn-danger\",\n onClick: _cache[5] || (_cache[5] = _withModifiers($event => _ctx.$emit('delete'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])])) : _createCommentVNode(\"\", true)])]),\n _: 1\n });\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nexport default {\n name: 'FolderCard',\n props: {\n name: {\n type: String,\n required: true\n },\n selected: {\n type: Boolean,\n default: false\n },\n showActions: {\n type: Boolean,\n default: true\n },\n disableTooltip: {\n type: Boolean,\n default: false\n }\n },\n emits: ['update:selected', 'enter', 'copy', 'move', 'delete', 'touchstart', 'touchend', 'touchmove'],\n data() {\n return {\n localSelected: this.selected\n };\n },\n computed: {\n folderName() {\n const parts = this.name.split('/').filter(Boolean);\n return parts[parts.length - 1] || this.name;\n }\n },\n watch: {\n selected(val) {\n this.localSelected = val;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FolderCard.vue?vue&type=template&id=534cf01b&scoped=true\"\nimport script from \"./FolderCard.vue?vue&type=script&lang=js\"\nexport * from \"./FolderCard.vue?vue&type=script&lang=js\"\n\nimport \"./FolderCard.vue?vue&type=style&index=0&id=534cf01b&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-534cf01b\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, createCommentVNode as _createCommentVNode, createStaticVNode as _createStaticVNode } from \"vue\";\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return $props.type === 'card' ? (_openBlock(true), _createElementBlock(_Fragment, {\n key: 0\n }, _renderList($props.count, i => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: 'skeleton-' + i,\n class: \"skeleton-card\"\n }, [...(_cache[0] || (_cache[0] = [_createElementVNode(\"div\", {\n class: \"skeleton-image\"\n }, null, -1), _createElementVNode(\"div\", {\n class: \"skeleton-info\"\n }, [_createElementVNode(\"div\", {\n class: \"skeleton-text\"\n })], -1)]))]);\n }), 128)) : $props.type === 'list' ? (_openBlock(true), _createElementBlock(_Fragment, {\n key: 1\n }, _renderList($props.count, i => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: 'list-skeleton-' + i,\n class: \"list-item skeleton-list-item\"\n }, [...(_cache[1] || (_cache[1] = [_createStaticVNode(\"
\", 10)]))]);\n }), 128)) : _createCommentVNode(\"\", true);\n}","export default {\n name: 'SkeletonLoader',\n props: {\n type: {\n type: String,\n default: 'card',\n validator: value => ['card', 'list'].includes(value)\n },\n count: {\n type: Number,\n default: 15\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./SkeletonLoader.vue?vue&type=template&id=070880ec&scoped=true\"\nimport script from \"./SkeletonLoader.vue?vue&type=script&lang=js\"\nexport * from \"./SkeletonLoader.vue?vue&type=script&lang=js\"\n\nimport \"./SkeletonLoader.vue?vue&type=style&index=0&id=070880ec&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-070880ec\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withModifiers as _withModifiers, withKeys as _withKeys, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = [\"aria-checked\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"span\", {\n class: _normalizeClass([\"dashboard-checkbox\", [`dashboard-checkbox--${$props.variant}`, {\n 'checked': $props.checked,\n 'indeterminate': $props.indeterminate && !$props.checked\n }]]),\n role: \"checkbox\",\n \"aria-checked\": $options.ariaChecked,\n tabindex: \"0\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.handleClick && $options.handleClick(...args)),\n onKeydown: [_cache[1] || (_cache[1] = _withKeys(_withModifiers((...args) => $options.handleClick && $options.handleClick(...args), [\"prevent\"]), [\"enter\"])), _cache[2] || (_cache[2] = _withKeys(_withModifiers((...args) => $options.handleClick && $options.handleClick(...args), [\"prevent\"]), [\"space\"]))]\n }, [_createVNode(_component_font_awesome_icon, {\n icon: $options.markIcon,\n class: \"dashboard-checkbox-mark\"\n }, null, 8, [\"icon\"])], 42, _hoisted_1);\n}","export default {\n name: 'DashboardCheckbox',\n props: {\n checked: {\n type: Boolean,\n default: false\n },\n indeterminate: {\n type: Boolean,\n default: false\n },\n variant: {\n type: String,\n default: 'breadcrumb',\n validator: value => ['breadcrumb'].includes(value)\n }\n },\n emits: ['click'],\n computed: {\n ariaChecked() {\n if (this.checked) return 'true';\n if (this.indeterminate) return 'mixed';\n return 'false';\n },\n markIcon() {\n return this.indeterminate && !this.checked ? 'minus' : 'check';\n }\n },\n methods: {\n handleClick(event) {\n this.$emit('click', event);\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DashboardCheckbox.vue?vue&type=template&id=3757bfa7&scoped=true\"\nimport script from \"./DashboardCheckbox.vue?vue&type=script&lang=js\"\nexport * from \"./DashboardCheckbox.vue?vue&type=script&lang=js\"\n\nimport \"./DashboardCheckbox.vue?vue&type=style&index=0&id=3757bfa7&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3757bfa7\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"el-dropdown-link filter-trigger\"\n};\nconst _hoisted_2 = {\n class: \"filter-section\"\n};\nconst _hoisted_3 = {\n class: \"filter-title\"\n};\nconst _hoisted_4 = {\n class: \"filter-options\"\n};\nconst _hoisted_5 = {\n class: \"filter-section\"\n};\nconst _hoisted_6 = {\n class: \"filter-title\"\n};\nconst _hoisted_7 = {\n class: \"filter-options\"\n};\nconst _hoisted_8 = {\n class: \"filter-section\"\n};\nconst _hoisted_9 = {\n class: \"filter-title\"\n};\nconst _hoisted_10 = {\n class: \"filter-options\"\n};\nconst _hoisted_11 = {\n class: \"filter-section\"\n};\nconst _hoisted_12 = {\n class: \"filter-title\"\n};\nconst _hoisted_13 = {\n class: \"filter-options\"\n};\nconst _hoisted_14 = {\n class: \"filter-section\"\n};\nconst _hoisted_15 = {\n class: \"filter-title\"\n};\nconst _hoisted_16 = {\n class: \"filter-options\"\n};\nconst _hoisted_17 = {\n key: 0,\n class: \"filter-section\"\n};\nconst _hoisted_18 = {\n class: \"filter-title\"\n};\nconst _hoisted_19 = {\n class: \"filter-options\"\n};\nconst _hoisted_20 = {\n key: 0,\n class: \"channel-divider\"\n};\nconst _hoisted_21 = {\n class: \"channel-group-title\"\n};\nconst _hoisted_22 = {\n class: \"filter-actions\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_badge = _resolveComponent(\"el-badge\");\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_el_checkbox_group = _resolveComponent(\"el-checkbox-group\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n return _openBlock(), _createBlock(_component_el_dropdown, {\n \"hide-on-click\": false,\n trigger: \"click\",\n class: \"filter-dropdown\",\n ref: \"dropdownRef\"\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, {\n class: \"filter-dropdown-menu\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"div\", _hoisted_3, _toDisplayString(_ctx.$t('filter.accessStatus')), 1), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.accessStatus,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.localFilters.accessStatus = $event),\n onChange: _cache[1] || (_cache[1] = $event => $options.handleFilterChange('accessStatus'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.accessStatusOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'accessStatus-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"div\", _hoisted_6, _toDisplayString(_ctx.$t('filter.blackWhiteList')), 1), _createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.listType,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.localFilters.listType = $event),\n onChange: _cache[3] || (_cache[3] = $event => $options.handleFilterChange('listType'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.listTypeOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'listType-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"div\", _hoisted_9, _toDisplayString(_ctx.$t('filter.reviewResult')), 1), _createElementVNode(\"div\", _hoisted_10, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.label,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $data.localFilters.label = $event),\n onChange: _cache[5] || (_cache[5] = $event => $options.handleFilterChange('label'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.labelOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'label-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"div\", _hoisted_12, _toDisplayString(_ctx.$t('filter.fileType')), 1), _createElementVNode(\"div\", _hoisted_13, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.fileType,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.localFilters.fileType = $event),\n onChange: _cache[7] || (_cache[7] = $event => $options.handleFilterChange('fileType'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.fileTypeOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'fileType-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"div\", _hoisted_15, _toDisplayString(_ctx.$t('filter.channelType')), 1), _createElementVNode(\"div\", _hoisted_16, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.channel,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => $data.localFilters.channel = $event),\n onChange: _cache[9] || (_cache[9] = $event => $options.handleFilterChange('channel'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.channelOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'channel-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), $props.channelNameOptions.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [_createElementVNode(\"div\", _hoisted_18, _toDisplayString(_ctx.$t('filter.channelName')), 1), _createElementVNode(\"div\", _hoisted_19, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.channelName,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $data.localFilters.channelName = $event),\n onChange: _cache[11] || (_cache[11] = $event => $options.handleFilterChange('channelName'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.groupedChannelNames, (group, index) => {\n return _openBlock(), _createElementBlock(_Fragment, {\n key: 'group-' + group.type\n }, [index > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_20)) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_21, _toDisplayString(group.typeLabel), 1), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(group.channels, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'channelName-' + option.type + '-' + option.name,\n label: option.type + ':' + option.name\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.name), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))], 64);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])])) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_22, [_createVNode(_component_el_button, {\n size: \"small\",\n onClick: $options.clearFilters,\n disabled: $options.activeFilterCount === 0\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('filter.clearFilters')), 1)]),\n _: 1\n }, 8, [\"onClick\", \"disabled\"])])]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_1, [_createVNode(_component_el_badge, {\n value: $options.activeFilterCount,\n hidden: $options.activeFilterCount === 0,\n class: \"filter-badge\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"filter\",\n class: \"header-icon\"\n })]),\n _: 1\n }, 8, [\"value\", \"hidden\"])])]),\n _: 1\n }, 512);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.reduce.js\";\nexport default {\n name: 'FilterDropdown',\n props: {\n filters: {\n type: Object,\n default: () => ({\n accessStatus: [],\n // 访问状态: 'normal'(正常), 'blocked'(已屏蔽)\n listType: [],\n // 黑白名单: 'White', 'Block', 'none'\n label: [],\n fileType: [],\n channel: [],\n channelName: []\n })\n },\n channelNameOptions: {\n type: Array,\n default: () => []\n }\n },\n emits: ['update:filters', 'change'],\n data() {\n return {\n localFilters: {\n accessStatus: [],\n listType: [],\n label: [],\n fileType: [],\n channel: [],\n channelName: []\n }\n };\n },\n computed: {\n // 访问状态选项(综合判断 ListType 和 Label)\n // 正常: ListType !== 'Block' && Label !== 'adult'\n // 已屏蔽: ListType === 'Block' || Label === 'adult'\n accessStatusOptions() {\n return [{\n label: this.$t('filter.normal'),\n value: 'normal'\n }, {\n label: this.$t('filter.blocked'),\n value: 'blocked'\n }];\n },\n // 黑白名单选项(直接使用 ListType 字段值)\n listTypeOptions() {\n return [{\n label: this.$t('filter.whiteList'),\n value: 'White'\n }, {\n label: this.$t('filter.blackList'),\n value: 'Block'\n }, {\n label: this.$t('filter.notSet'),\n value: 'None'\n }];\n },\n // 审查结果选项\n labelOptions() {\n return [{\n label: this.$t('filter.normal'),\n value: 'normal'\n }, {\n label: this.$t('filter.teenContent'),\n value: 'teen'\n }, {\n label: this.$t('filter.adultContent'),\n value: 'adult'\n }];\n },\n fileTypeOptions() {\n return [{\n label: this.$t('filter.image'),\n value: 'image'\n }, {\n label: this.$t('filter.video'),\n value: 'video'\n }, {\n label: this.$t('filter.audio'),\n value: 'audio'\n }, {\n label: this.$t('filter.other'),\n value: 'other'\n }];\n },\n channelOptions() {\n return [{\n label: 'Telegram',\n value: 'TelegramNew'\n }, {\n label: 'Cloudflare R2',\n value: 'CloudflareR2'\n }, {\n label: 'S3',\n value: 'S3'\n }, {\n label: 'Discord',\n value: 'Discord'\n }, {\n label: 'HuggingFace',\n value: 'HuggingFace'\n }, {\n label: 'WebDAV',\n value: 'WebDAV'\n }, {\n label: this.$t('filter.externalLink'),\n value: 'External'\n }];\n },\n activeFilterCount() {\n return Object.values(this.localFilters).reduce((count, arr) => count + arr.length, 0);\n },\n // 按类型分组渠道名称\n groupedChannelNames() {\n const groups = {};\n this.channelNameOptions.forEach(option => {\n if (!groups[option.type]) {\n groups[option.type] = {\n type: option.type,\n typeLabel: option.typeLabel,\n channels: []\n };\n }\n groups[option.type].channels.push(option);\n });\n return Object.values(groups);\n }\n },\n watch: {\n filters: {\n handler(newFilters) {\n this.localFilters = {\n accessStatus: Array.isArray(newFilters.accessStatus) ? [...newFilters.accessStatus] : [],\n listType: Array.isArray(newFilters.listType) ? [...newFilters.listType] : [],\n label: Array.isArray(newFilters.label) ? [...newFilters.label] : [],\n fileType: Array.isArray(newFilters.fileType) ? [...newFilters.fileType] : [],\n channel: Array.isArray(newFilters.channel) ? [...newFilters.channel] : [],\n channelName: Array.isArray(newFilters.channelName) ? [...newFilters.channelName] : []\n };\n },\n immediate: true,\n deep: true\n }\n },\n methods: {\n handleFilterChange(type) {\n this.$emit('update:filters', {\n ...this.localFilters\n });\n this.$emit('change', {\n type,\n filters: {\n ...this.localFilters\n }\n });\n },\n clearFilters() {\n this.localFilters = {\n accessStatus: [],\n listType: [],\n label: [],\n fileType: [],\n channel: [],\n channelName: []\n };\n this.$emit('update:filters', {\n ...this.localFilters\n });\n this.$emit('change', {\n type: 'clear',\n filters: {\n ...this.localFilters\n }\n });\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FilterDropdown.vue?vue&type=template&id=42919522&scoped=true\"\nimport script from \"./FilterDropdown.vue?vue&type=script&lang=js\"\nexport * from \"./FilterDropdown.vue?vue&type=script&lang=js\"\n\nimport \"./FilterDropdown.vue?vue&type=style&index=0&id=42919522&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-42919522\"]])\n\nexport default __exports__","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport { resolveComponent as _resolveComponent, createVNode as _createVNode, withKeys as _withKeys, withCtx as _withCtx, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createBlock as _createBlock, renderList as _renderList, Fragment as _Fragment, withModifiers as _withModifiers, normalizeStyle as _normalizeStyle } from \"vue\";\nconst _hoisted_1 = {\n class: \"container\"\n};\nconst _hoisted_2 = {\n class: \"header-content admin-header-content\"\n};\nconst _hoisted_3 = {\n class: \"search-area\"\n};\nconst _hoisted_4 = {\n class: \"search-card\"\n};\nconst _hoisted_5 = {\n class: \"actions\"\n};\nconst _hoisted_6 = {\n class: \"el-dropdown-link\"\n};\nconst _hoisted_7 = {\n class: \"breadcrumb-container\"\n};\nconst _hoisted_8 = [\"title\", \"aria-pressed\"];\nconst _hoisted_9 = [\"title\", \"aria-pressed\"];\nconst _hoisted_10 = [\"title\"];\nconst _hoisted_11 = {\n class: \"breadcrumb-sort-icon\",\n viewBox: \"0 0 30 18\",\n \"aria-hidden\": \"true\"\n};\nconst _hoisted_12 = {\n key: 0,\n class: \"sort-field-glyph\"\n};\nconst _hoisted_13 = {\n key: 1,\n class: \"sort-field-glyph\"\n};\nconst _hoisted_14 = {\n key: 2,\n class: \"sort-field-glyph\"\n};\nconst _hoisted_15 = {\n key: 3,\n class: \"sort-field-glyph\"\n};\nconst _hoisted_16 = {\n key: 4,\n class: \"sort-order-glyph\",\n d: \"M23 13.5V4.5M19 8.5L23 4.5L27 8.5\"\n};\nconst _hoisted_17 = {\n key: 5,\n class: \"sort-order-glyph\",\n d: \"M23 4.5V13.5M19 9.5L23 13.5L27 9.5\"\n};\nconst _hoisted_18 = {\n class: \"sort-order-wrapper\"\n};\nconst _hoisted_19 = {\n class: \"mobile-directory-path\"\n};\nconst _hoisted_20 = {\n class: \"breadcrumb desktop-only\"\n};\nconst _hoisted_21 = [\"title\"];\nconst _hoisted_22 = {\n key: 1,\n class: \"empty-state\"\n};\nconst _hoisted_23 = {\n class: \"empty-text\"\n};\nconst _hoisted_24 = {\n class: \"empty-hint\"\n};\nconst _hoisted_25 = {\n class: \"list-header\"\n};\nconst _hoisted_26 = {\n class: \"list-col list-col-checkbox\"\n};\nconst _hoisted_27 = {\n class: \"list-col list-col-preview\"\n};\nconst _hoisted_28 = {\n class: \"list-col list-col-name\"\n};\nconst _hoisted_29 = {\n class: \"list-col list-col-tags\"\n};\nconst _hoisted_30 = {\n class: \"list-col list-col-channel\"\n};\nconst _hoisted_31 = {\n class: \"list-col list-col-channel-name\"\n};\nconst _hoisted_32 = {\n class: \"list-col list-col-address\"\n};\nconst _hoisted_33 = {\n class: \"list-col list-col-size\"\n};\nconst _hoisted_34 = {\n class: \"list-col list-col-date\"\n};\nconst _hoisted_35 = {\n class: \"list-col list-col-actions\"\n};\nconst _hoisted_36 = {\n key: 1,\n class: \"empty-state list-empty\"\n};\nconst _hoisted_37 = {\n class: \"empty-text\"\n};\nconst _hoisted_38 = {\n class: \"empty-hint\"\n};\nconst _hoisted_39 = {\n class: \"pagination-container\"\n};\nconst _hoisted_40 = {\n class: \"pagination-center\"\n};\nconst _hoisted_41 = {\n class: \"pagination-right\"\n};\nconst _hoisted_42 = {\n class: \"page-total\"\n};\nconst _hoisted_43 = {\n class: \"page-jump\"\n};\nconst _hoisted_44 = {\n class: \"dialog-section\"\n};\nconst _hoisted_45 = {\n class: \"section-header\"\n};\nconst _hoisted_46 = {\n class: \"section-title\"\n};\nconst _hoisted_47 = {\n class: \"section-content\"\n};\nconst _hoisted_48 = {\n class: \"dialog-section\"\n};\nconst _hoisted_49 = {\n class: \"section-header\"\n};\nconst _hoisted_50 = {\n class: \"section-title\"\n};\nconst _hoisted_51 = {\n class: \"section-content\"\n};\nconst _hoisted_52 = {\n class: \"setting-item\"\n};\nconst _hoisted_53 = {\n class: \"setting-label\"\n};\nconst _hoisted_54 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_55 = {\n class: \"setting-label\"\n};\nconst _hoisted_56 = {\n class: \"dialog-action\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_DashboardTabs = _resolveComponent(\"DashboardTabs\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_FilterDropdown = _resolveComponent(\"FilterDropdown\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_header = _resolveComponent(\"el-header\");\n const _component_DashboardCheckbox = _resolveComponent(\"DashboardCheckbox\");\n const _component_el_radio_button = _resolveComponent(\"el-radio-button\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_el_divider = _resolveComponent(\"el-divider\");\n const _component_el_dropdown_item = _resolveComponent(\"el-dropdown-item\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n const _component_el_breadcrumb_item = _resolveComponent(\"el-breadcrumb-item\");\n const _component_el_breadcrumb = _resolveComponent(\"el-breadcrumb\");\n const _component_SkeletonLoader = _resolveComponent(\"SkeletonLoader\");\n const _component_FolderCard = _resolveComponent(\"FolderCard\");\n const _component_FileCard = _resolveComponent(\"FileCard\");\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_FileListItem = _resolveComponent(\"FileListItem\");\n const _component_el_pagination = _resolveComponent(\"el-pagination\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_main = _resolveComponent(\"el-main\");\n const _component_el_container = _resolveComponent(\"el-container\");\n const _component_BatchActionBar = _resolveComponent(\"BatchActionBar\");\n const _component_FileDetailDialog = _resolveComponent(\"FileDetailDialog\");\n const _component_el_radio = _resolveComponent(\"el-radio\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _component_TagManagementDialog = _resolveComponent(\"TagManagementDialog\");\n const _component_BatchTagDialog = _resolveComponent(\"BatchTagDialog\");\n const _component_MobileActionSheet = _resolveComponent(\"MobileActionSheet\");\n const _component_MobileDirectoryDrawer = _resolveComponent(\"MobileDirectoryDrawer\");\n const _component_MoveFileDialog = _resolveComponent(\"MoveFileDialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_container, null, {\n default: _withCtx(() => [_createVNode(_component_el_header, null, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createVNode(_component_DashboardTabs, {\n activeTab: \"dashboard\"\n }), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_input, {\n modelValue: $data.tempSearch,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.tempSearch = $event),\n size: \"small\",\n placeholder: _ctx.$t('dashboard.searchPlaceholder'),\n onKeyup: _withKeys($options.handleSearch, [\"enter\"])\n }, {\n suffix: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"search\",\n class: \"search-icon\",\n onClick: $options.handleSearch\n }, null, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"modelValue\", \"placeholder\", \"onKeyup\"])]), _createVNode(_component_FilterDropdown, {\n filters: $data.filters,\n \"onUpdate:filters\": _cache[1] || (_cache[1] = $event => $data.filters = $event),\n channelNameOptions: $data.channelNameOptions,\n onChange: $options.handleFilterChange\n }, null, 8, [\"filters\", \"channelNameOptions\", \"onChange\"])]), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('dashboard.linkFormat'),\n placement: \"bottom\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_6, [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"header-icon\",\n onClick: _cache[2] || (_cache[2] = $event => $data.showUrlDialog = true)\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('dashboard.logout'),\n placement: \"bottom\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"sign-out-alt\",\n class: \"header-icon\",\n onClick: $options.handleLogout\n }, null, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])])]),\n _: 1\n }), _createVNode(_component_el_main, {\n class: _normalizeClass([\"main-container\", {\n 'has-batch-toolbar': $data.selectedFiles.length > 0\n }])\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_DashboardCheckbox, {\n checked: $options.selectPage,\n indeterminate: $options.selectedPageFiles && !$options.selectPage,\n variant: \"breadcrumb\",\n onClick: $options.handleSelectPage\n }, null, 8, [\"checked\", \"indeterminate\", \"onClick\"]), _createElementVNode(\"div\", {\n class: _normalizeClass([\"breadcrumb-view-toggle\", {\n 'is-list': $data.viewMode === 'list'\n }]),\n role: \"group\"\n }, [_createElementVNode(\"button\", {\n class: _normalizeClass([\"breadcrumb-view-button\", {\n 'is-active': $data.viewMode === 'card'\n }]),\n type: \"button\",\n title: _ctx.$t('dashboard.cardView'),\n \"aria-pressed\": $data.viewMode === 'card',\n onClick: _cache[3] || (_cache[3] = $event => $options.setViewMode('card'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"th-large\",\n class: \"breadcrumb-view-icon\"\n })], 10, _hoisted_8), _createElementVNode(\"button\", {\n class: _normalizeClass([\"breadcrumb-view-button\", {\n 'is-active': $data.viewMode === 'list'\n }]),\n type: \"button\",\n title: _ctx.$t('dashboard.listView'),\n \"aria-pressed\": $data.viewMode === 'list',\n onClick: _cache[4] || (_cache[4] = $event => $options.setViewMode('list'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"list\",\n class: \"breadcrumb-view-icon\"\n })], 10, _hoisted_9)], 2), _createVNode(_component_el_dropdown, {\n trigger: \"click\",\n class: \"breadcrumb-sort-dropdown\",\n onCommand: $options.setSortField\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, {\n class: \"sort-dropdown-menu\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_18, [_createVNode(_component_el_radio_group, {\n modelValue: $data.sortOrder,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $data.sortOrder = $event),\n size: \"small\",\n onChange: $options.setSortOrder\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio_button, {\n label: \"asc\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('dashboard.sortAsc')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio_button, {\n label: \"desc\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('dashboard.sortDesc')), 1)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\", \"onChange\"])]), _createVNode(_component_el_divider, {\n class: \"sort-divider\"\n }), _createVNode(_component_el_dropdown_item, {\n command: \"time\",\n class: _normalizeClass({\n 'is-selected': $data.sortField === 'time'\n })\n }, {\n default: _withCtx(() => [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('dashboard.sortByTime')), 1), $data.sortField === 'time' ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"check\",\n class: \"sort-field-check\"\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"class\"]), _createVNode(_component_el_dropdown_item, {\n command: \"size\",\n class: _normalizeClass({\n 'is-selected': $data.sortField === 'size'\n })\n }, {\n default: _withCtx(() => [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('dashboard.sortBySize')), 1), $data.sortField === 'size' ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"check\",\n class: \"sort-field-check\"\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"class\"]), _createVNode(_component_el_dropdown_item, {\n command: \"rawName\",\n class: _normalizeClass({\n 'is-selected': $data.sortField === 'rawName'\n })\n }, {\n default: _withCtx(() => [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('dashboard.sortByRawName')), 1), $data.sortField === 'rawName' ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"check\",\n class: \"sort-field-check\"\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"class\"]), _createVNode(_component_el_dropdown_item, {\n command: \"fileName\",\n class: _normalizeClass({\n 'is-selected': $data.sortField === 'fileName'\n })\n }, {\n default: _withCtx(() => [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('dashboard.sortByFileName')), 1), $data.sortField === 'fileName' ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"check\",\n class: \"sort-field-check\"\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"class\"])]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"breadcrumb-sort-button\",\n type: \"button\",\n title: $options.sortLabel\n }, [(_openBlock(), _createElementBlock(\"svg\", _hoisted_11, [$data.sortField === 'time' ? (_openBlock(), _createElementBlock(\"g\", _hoisted_12, [...(_cache[32] || (_cache[32] = [_createElementVNode(\"circle\", {\n cx: \"7.5\",\n cy: \"9\",\n r: \"5.5\"\n }, null, -1), _createElementVNode(\"path\", {\n d: \"M7.5 5.5V9L10 10.5\"\n }, null, -1)]))])) : $data.sortField === 'size' ? (_openBlock(), _createElementBlock(\"g\", _hoisted_13, [...(_cache[33] || (_cache[33] = [_createElementVNode(\"path\", {\n d: \"M2 4H13M2 9H10M2 14H7\"\n }, null, -1)]))])) : $data.sortField === 'rawName' ? (_openBlock(), _createElementBlock(\"g\", _hoisted_14, [...(_cache[34] || (_cache[34] = [_createElementVNode(\"path\", {\n d: \"M5.5 3L4 15M11 3L9.5 15M2.5 7H13M2 11H12.5\"\n }, null, -1)]))])) : (_openBlock(), _createElementBlock(\"g\", _hoisted_15, [...(_cache[35] || (_cache[35] = [_createElementVNode(\"path\", {\n d: \"M2.5 14L7.5 3L12.5 14M4.3 10H10.7\"\n }, null, -1)]))])), $data.sortOrder === 'asc' ? (_openBlock(), _createElementBlock(\"path\", _hoisted_16)) : (_openBlock(), _createElementBlock(\"path\", _hoisted_17))]))], 8, _hoisted_10)]),\n _: 1\n }, 8, [\"onCommand\"]), _createElementVNode(\"div\", {\n class: \"mobile-directory-trigger\",\n onClick: _cache[6] || (_cache[6] = $event => $data.showMobileDirectoryDrawer = true)\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"mobile-directory-icon\"\n }), _createElementVNode(\"span\", _hoisted_19, _toDisplayString($data.currentPath && $data.currentPath.split('/').filter(Boolean).length > 0 ? $data.currentPath.split('/').filter(Boolean).pop() : _ctx.$t('dashboard.rootDirectory')), 1), _createVNode(_component_font_awesome_icon, {\n icon: \"chevron-down\",\n class: \"mobile-directory-arrow\"\n })]), _createElementVNode(\"div\", _hoisted_20, [_createVNode(_component_el_breadcrumb, {\n separator: \"/\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_breadcrumb_item, {\n onClick: _cache[7] || (_cache[7] = $event => $options.navigateToFolder(''))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"breadcrumb-home-icon\"\n })]),\n _: 1\n }), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.currentPath.split('/').filter(Boolean), (folder, index) => {\n return _openBlock(), _createBlock(_component_el_breadcrumb_item, {\n key: index,\n onClick: $event => $options.navigateToFolder($data.currentPath.split('/').filter(Boolean).slice(0, index + 1).join('/'))\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(folder), 1)]),\n _: 2\n }, 1032, [\"onClick\"]);\n }), 128))]),\n _: 1\n })]), _createElementVNode(\"span\", {\n class: \"stats-badge\",\n title: _ctx.$t('dashboard.totalFiles', {\n count: _ctx.$data.Number\n })\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"database\",\n class: \"stats-badge-icon\"\n }), _createTextVNode(\" \" + _toDisplayString($data.Number), 1)], 8, _hoisted_21)]), $data.viewMode === 'card' ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([\"content\", {\n 'is-drag-selecting': $setup.isDragging\n }]),\n ref: \"cardContainerRef\",\n onTouchstartPassive: _cache[8] || (_cache[8] = (...args) => $options.handlePageSwipeStart && $options.handlePageSwipeStart(...args)),\n onTouchendPassive: _cache[9] || (_cache[9] = (...args) => $options.handlePageSwipeEnd && $options.handlePageSwipeEnd(...args)),\n onTouchcancelPassive: _cache[10] || (_cache[10] = (...args) => $options.resetPageSwipe && $options.resetPageSwipe(...args))\n }, [$data.loading ? (_openBlock(), _createBlock(_component_SkeletonLoader, {\n key: 0,\n type: \"card\",\n count: $data.pageSize\n }, null, 8, [\"count\"])) : $options.paginatedTableData.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_22, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"empty-icon\"\n }), _createElementVNode(\"p\", _hoisted_23, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.noMatchingFiles') : _ctx.$t('dashboard.currentDirEmpty')), 1), _createElementVNode(\"p\", _hoisted_24, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.adjustSearchHint') : _ctx.$t('dashboard.uploadHint')), 1)])) : (_openBlock(true), _createElementBlock(_Fragment, {\n key: 2\n }, _renderList($options.paginatedTableData, (item, index) => {\n return _openBlock(), _createElementBlock(_Fragment, {\n key: index\n }, [$options.isFolder(item) ? (_openBlock(), _createBlock(_component_FolderCard, {\n key: 0,\n name: item.name,\n selected: item.selected,\n \"onUpdate:selected\": $event => item.selected = $event,\n showActions: !$data.isSearchMode,\n disableTooltip: $options.disableTooltip,\n onEnter: $event => $options.enterFolder(item.name),\n onCopy: $event => $options.handleFolderCopy(item.name),\n onMove: $event => $options.handleMove(index, item.name),\n onDelete: $event => $options.handleDelete(index, item.name),\n onTouchstart: $event => $options.handleFolderTouchStart(item, index),\n onTouchend: $options.handleTouchEnd,\n onTouchmove: $options.handleTouchEnd\n }, null, 8, [\"name\", \"selected\", \"onUpdate:selected\", \"showActions\", \"disableTooltip\", \"onEnter\", \"onCopy\", \"onMove\", \"onDelete\", \"onTouchstart\", \"onTouchend\", \"onTouchmove\"])) : (_openBlock(), _createBlock(_component_FileCard, {\n key: 1,\n item: item,\n selected: item.selected,\n \"onUpdate:selected\": $event => item.selected = $event,\n fileLink: $options.getFileLink(item.name),\n previewSrcList: item.previewSrcList,\n disableTooltip: $options.disableTooltip,\n onDetail: $event => $options.openDetailDialog(index, item.name),\n onCopy: $event => $options.handleCopy(index, item.name),\n onMove: $event => $options.handleMove(index, item.name),\n onDelete: $event => $options.handleDelete(index, item.name),\n onDownload: $event => $options.handleDownload(item.name),\n onTouchstart: $event => $options.handleTouchStart(item, index),\n onTouchend: $options.handleTouchEnd,\n onTouchmove: $options.handleTouchEnd\n }, null, 8, [\"item\", \"selected\", \"onUpdate:selected\", \"fileLink\", \"previewSrcList\", \"disableTooltip\", \"onDetail\", \"onCopy\", \"onMove\", \"onDelete\", \"onDownload\", \"onTouchstart\", \"onTouchend\", \"onTouchmove\"]))], 64);\n }), 128))], 34)) : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: _normalizeClass([\"list-view\", {\n 'is-drag-selecting': $setup.isDragging\n }]),\n ref: \"listContainerRef\",\n onTouchstartPassive: _cache[12] || (_cache[12] = (...args) => $options.handlePageSwipeStart && $options.handlePageSwipeStart(...args)),\n onTouchendPassive: _cache[13] || (_cache[13] = (...args) => $options.handlePageSwipeEnd && $options.handlePageSwipeEnd(...args)),\n onTouchcancelPassive: _cache[14] || (_cache[14] = (...args) => $options.resetPageSwipe && $options.resetPageSwipe(...args))\n }, [_createElementVNode(\"div\", _hoisted_25, [_createElementVNode(\"div\", _hoisted_26, [_createVNode(_component_el_checkbox, {\n \"model-value\": $options.isSelectAll,\n indeterminate: $options.isIndeterminate,\n onClick: _cache[11] || (_cache[11] = _withModifiers(() => {}, [\"stop\"])),\n onChange: $options.handleSelectAllPage\n }, null, 8, [\"model-value\", \"indeterminate\", \"onChange\"])]), _createElementVNode(\"div\", _hoisted_27, _toDisplayString(_ctx.$t('dashboard.preview')), 1), _createElementVNode(\"div\", _hoisted_28, _toDisplayString(_ctx.$t('dashboard.fileName')), 1), _createElementVNode(\"div\", _hoisted_29, _toDisplayString(_ctx.$t('dashboard.tags')), 1), _createElementVNode(\"div\", _hoisted_30, _toDisplayString(_ctx.$t('dashboard.channelType')), 1), _createElementVNode(\"div\", _hoisted_31, _toDisplayString(_ctx.$t('dashboard.channelNameCol')), 1), _createElementVNode(\"div\", _hoisted_32, _toDisplayString(_ctx.$t('dashboard.uploadAddress')), 1), _createElementVNode(\"div\", _hoisted_33, _toDisplayString(_ctx.$t('dashboard.fileSize')), 1), _createElementVNode(\"div\", _hoisted_34, _toDisplayString(_ctx.$t('dashboard.uploadTime')), 1), _createElementVNode(\"div\", _hoisted_35, _toDisplayString(_ctx.$t('dashboard.actions')), 1)]), $data.loading ? (_openBlock(), _createBlock(_component_SkeletonLoader, {\n key: 0,\n type: \"list\",\n count: $data.pageSize\n }, null, 8, [\"count\"])) : $options.paginatedTableData.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_36, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"empty-icon\"\n }), _createElementVNode(\"p\", _hoisted_37, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.noMatchingFiles') : _ctx.$t('dashboard.currentDirEmpty')), 1), _createElementVNode(\"p\", _hoisted_38, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.adjustSearchHint') : _ctx.$t('dashboard.uploadHint')), 1)])) : (_openBlock(true), _createElementBlock(_Fragment, {\n key: 2\n }, _renderList($options.paginatedTableData, (item, index) => {\n return _openBlock(), _createBlock(_component_FileListItem, {\n key: index,\n item: item,\n selected: item.selected,\n \"onUpdate:selected\": $event => item.selected = $event,\n fileLink: $options.getFileLink(item.name),\n onEnter: $event => $options.enterFolder(item.name),\n onDetail: $event => $options.openDetailDialog(index, item.name),\n onCopy: $event => $options.handleCopy(index, item.name),\n onFolderCopy: $event => $options.handleFolderCopy(item.name),\n onMove: $event => $options.handleMove(index, item.name),\n onDelete: $event => $options.handleDelete(index, item.name),\n onDownload: $event => $options.handleDownload(item.name),\n onTouchstart: $event => $options.isFolder(item) ? $options.handleFolderTouchStart(item, index) : $options.handleTouchStart(item, index),\n onTouchend: $options.handleTouchEnd,\n onTouchmove: $options.handleTouchEnd\n }, null, 8, [\"item\", \"selected\", \"onUpdate:selected\", \"fileLink\", \"onEnter\", \"onDetail\", \"onCopy\", \"onFolderCopy\", \"onMove\", \"onDelete\", \"onDownload\", \"onTouchstart\", \"onTouchend\", \"onTouchmove\"]);\n }), 128))], 34)), $setup.isDragging ? (_openBlock(), _createElementBlock(\"div\", {\n key: 2,\n class: \"drag-select-overlay\",\n style: _normalizeStyle({\n position: 'fixed',\n left: $setup.selectionRect.left + 'px',\n top: $setup.selectionRect.top + 'px',\n width: $setup.selectionRect.width + 'px',\n height: $setup.selectionRect.height + 'px'\n })\n }, null, 4)) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_39, [_createElementVNode(\"div\", _hoisted_40, [_createVNode(_component_el_pagination, {\n background: \"\",\n layout: \"prev, pager, next\",\n total: $options.filteredTableData.length,\n \"page-size\": $data.pageSize,\n \"current-page\": $data.currentPage,\n \"pager-count\": $options.pagerCount,\n onCurrentChange: $options.handlePageChange\n }, null, 8, [\"total\", \"page-size\", \"current-page\", \"pager-count\", \"onCurrentChange\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $options.refreshFileList,\n class: \"refresh-btn\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"sync\",\n class: _normalizeClass({\n 'fa-spin': $data.refreshLoading\n })\n }, null, 8, [\"class\"])]),\n _: 1\n }, 8, [\"onClick\"]), $data.currentPage === Math.ceil($options.filteredTableData.length / $data.pageSize) ? (_openBlock(), _createBlock(_component_el_button, {\n key: 0,\n type: \"primary\",\n onClick: $options.loadMoreData,\n loading: $data.loading,\n class: \"load-more\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('dashboard.loadMore')), 1)]),\n _: 1\n }, 8, [\"onClick\", \"loading\"])) : _createCommentVNode(\"\", true)]), _createElementVNode(\"div\", _hoisted_41, [_createElementVNode(\"span\", _hoisted_42, _toDisplayString(_ctx.$t('dashboard.totalPages', {\n count: $options.realTotalPages\n })), 1), _createElementVNode(\"div\", _hoisted_43, [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('dashboard.jumpTo')), 1), _createVNode(_component_el_input, {\n modelValue: $data.jumpPage,\n \"onUpdate:modelValue\": _cache[15] || (_cache[15] = $event => $data.jumpPage = $event),\n size: \"small\",\n class: \"jump-input\",\n onKeyup: _withKeys($options.handleJumpPage, [\"enter\"])\n }, null, 8, [\"modelValue\", \"onKeyup\"]), _createVNode(_component_el_button, {\n size: \"small\",\n type: \"primary\",\n onClick: $options.handleJumpPage,\n class: \"jump-btn\"\n }, {\n default: _withCtx(() => [...(_cache[36] || (_cache[36] = [_createTextVNode(\"GO\", -1)]))]),\n _: 1\n }, 8, [\"onClick\"])])])])]),\n _: 1\n }, 8, [\"class\"])]),\n _: 1\n }), _createVNode(_component_BatchActionBar, {\n \"selected-count\": $data.selectedFiles.length,\n onAction: $options.handleBatchAction,\n onClear: $options.clearSelection\n }, null, 8, [\"selected-count\", \"onAction\", \"onClear\"]), _createVNode(_component_FileDetailDialog, {\n modelValue: $data.showdetailDialog,\n \"onUpdate:modelValue\": _cache[16] || (_cache[16] = $event => $data.showdetailDialog = $event),\n file: $data.detailFile,\n fileLink: $options.getFileLink($data.detailFile?.name),\n urls: $options.allUrl,\n onDownload: _cache[17] || (_cache[17] = $event => $options.handleDownload($data.detailFile?.name)),\n onTagManagement: _cache[18] || (_cache[18] = $event => $options.handleTagManagement($data.detailFile?.name)),\n onBlock: _cache[19] || (_cache[19] = $event => $options.handleBlock($data.detailFile?.name)),\n onWhite: _cache[20] || (_cache[20] = $event => $options.handleWhite($data.detailFile?.name)),\n onDelete: _cache[21] || (_cache[21] = $event => $options.handleDetailDelete($data.detailFile?.name)),\n onMetadataUpdated: $options.handleMetadataUpdated,\n onFileRenamed: $options.handleFileRenamed\n }, null, 8, [\"modelValue\", \"file\", \"fileLink\", \"urls\", \"onMetadataUpdated\", \"onFileRenamed\"]), _createVNode(_component_el_dialog, {\n title: _ctx.$t('dashboard.linkFormat'),\n modelValue: $data.showUrlDialog,\n \"onUpdate:modelValue\": _cache[26] || (_cache[26] = $event => $data.showUrlDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog settings-dialog-scope\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_44, [_createElementVNode(\"div\", _hoisted_45, [_createElementVNode(\"span\", _hoisted_46, _toDisplayString(_ctx.$t('settings.defaultCopyLink')), 1)]), _createElementVNode(\"div\", _hoisted_47, [_createVNode(_component_el_radio_group, {\n modelValue: $data.defaultUrlFormat,\n \"onUpdate:modelValue\": _cache[22] || (_cache[22] = $event => $data.defaultUrlFormat = $event),\n class: \"radio-card-group grid-2x2\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio, {\n label: \"originUrl\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('settings.rawLink')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"mdUrl\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"code\",\n class: \"radio-icon\"\n }), _cache[37] || (_cache[37] = _createElementVNode(\"span\", null, \"Markdown\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"htmlUrl\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"code-branch\",\n class: \"radio-icon\"\n }), _cache[38] || (_cache[38] = _createElementVNode(\"span\", null, \"HTML\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"bbUrl\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"quote-right\",\n class: \"radio-icon\"\n }), _cache[39] || (_cache[39] = _createElementVNode(\"span\", null, \"BBCode\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"tgId\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"paper-plane\",\n class: \"radio-icon\"\n }), _cache[40] || (_cache[40] = _createElementVNode(\"span\", null, \"TG File ID\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"s3Location\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('settings.s3Link')), 1)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_48, [_createElementVNode(\"div\", _hoisted_49, [_createElementVNode(\"span\", _hoisted_50, _toDisplayString(_ctx.$t('settings.customLink')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('settings.customLinkTooltip'),\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_51, [_createElementVNode(\"div\", _hoisted_52, [_createElementVNode(\"span\", _hoisted_53, _toDisplayString(_ctx.$t('settings.enableCustom')), 1), _createVNode(_component_el_switch, {\n modelValue: $data.useCustomUrl,\n \"onUpdate:modelValue\": _cache[23] || (_cache[23] = $event => $data.useCustomUrl = $event),\n \"active-value\": \"true\",\n \"inactive-value\": \"false\"\n }, null, 8, [\"modelValue\"])]), $data.useCustomUrl === 'true' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_54, [_createElementVNode(\"span\", _hoisted_55, _toDisplayString(_ctx.$t('settings.customPrefix')), 1), _createVNode(_component_el_input, {\n modelValue: $data.customUrlPrefix,\n \"onUpdate:modelValue\": _cache[24] || (_cache[24] = $event => $data.customUrlPrefix = $event),\n placeholder: _ctx.$t('settings.customPrefixPlaceholder'),\n class: \"setting-input\"\n }, null, 8, [\"modelValue\", \"placeholder\"])])) : _createCommentVNode(\"\", true)])]), _createElementVNode(\"div\", _hoisted_56, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[25] || (_cache[25] = $event => $data.showUrlDialog = false),\n class: \"confirm-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('settings.confirm')), 1)]),\n _: 1\n })])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]), _createVNode(_component_TagManagementDialog, {\n modelValue: $data.showTagDialog,\n \"onUpdate:modelValue\": _cache[27] || (_cache[27] = $event => $data.showTagDialog = $event),\n fileId: $data.currentTagFile,\n fileMetadata: $options.tagFileMetadata,\n onTagsUpdated: $options.handleTagsUpdated\n }, null, 8, [\"modelValue\", \"fileId\", \"fileMetadata\", \"onTagsUpdated\"]), _createVNode(_component_BatchTagDialog, {\n modelValue: $data.showBatchTagDialog,\n \"onUpdate:modelValue\": _cache[28] || (_cache[28] = $event => $data.showBatchTagDialog = $event),\n selectedFiles: $data.selectedFiles,\n onTagsUpdated: $options.handleBatchTagsUpdated\n }, null, 8, [\"modelValue\", \"selectedFiles\", \"onTagsUpdated\"]), _createVNode(_component_MobileActionSheet, {\n modelValue: $data.showMobileActionModal,\n \"onUpdate:modelValue\": _cache[29] || (_cache[29] = $event => $data.showMobileActionModal = $event),\n title: $data.mobileActionIsFolder ? $options.getFolderName($data.mobileActionFile?.name || '') : $data.mobileActionFile?.metadata?.FileName || $options.getFileName($data.mobileActionFile?.name || ''),\n isFolder: $data.mobileActionIsFolder,\n onAction: $options.handleMobileAction\n }, null, 8, [\"modelValue\", \"title\", \"isFolder\", \"onAction\"]), _createVNode(_component_MobileDirectoryDrawer, {\n modelValue: $data.showMobileDirectoryDrawer,\n \"onUpdate:modelValue\": _cache[30] || (_cache[30] = $event => $data.showMobileDirectoryDrawer = $event),\n currentPath: $data.currentPath,\n onNavigate: $options.navigateToFolder,\n onGoBack: $options.handleGoBack\n }, null, 8, [\"modelValue\", \"currentPath\", \"onNavigate\", \"onGoBack\"]), _createVNode(_component_MoveFileDialog, {\n modelValue: $data.showMoveDialog,\n \"onUpdate:modelValue\": _cache[31] || (_cache[31] = $event => $data.showMoveDialog = $event),\n \"current-directory\": $data.currentPath,\n \"is-batch-move\": $data.isBatchMove,\n \"initial-path\": $data.moveTargetPath,\n onConfirm: $options.confirmMove\n }, null, 8, [\"modelValue\", \"current-directory\", \"is-batch-move\", \"initial-path\", \"onConfirm\"])]);\n}","// 文件管理器工具类\r\nimport fetchWithAuth from '@/utils/fetchWithAuth';\r\nimport { ElMessage } from 'element-plus';\r\nimport i18n from '@/locales';\r\n\r\nclass FileManager {\r\n constructor() {\r\n this.FILE_LIST_PATH = 'data/fileList.json';\r\n this.fileListCache = null;\r\n this.storageWarningShown = false;\r\n }\r\n\r\n // 从本地存储读取文件列表\r\n getLocalFileList() {\r\n const fileList = this.getMutableFileList();\r\n return {\r\n ...fileList,\r\n files: [...(fileList.files || [])],\r\n directories: [...(fileList.directories || [])],\r\n };\r\n }\r\n\r\n getMutableFileList() {\r\n if (this.fileListCache) {\r\n return this.fileListCache;\r\n }\r\n\r\n try {\r\n const fileList = localStorage.getItem(this.FILE_LIST_PATH);\r\n this.fileListCache = fileList ? JSON.parse(fileList) : this.createEmptyFileList();\r\n return this.fileListCache;\r\n } catch (error) {\r\n console.error('Error reading local file list:', error);\r\n this.fileListCache = this.createEmptyFileList();\r\n return this.fileListCache;\r\n }\r\n }\r\n\r\n // 更新内存缓存,并尽量持久化到 localStorage\r\n updateFileListCache(fileList) {\r\n this.fileListCache = fileList || this.createEmptyFileList();\r\n const persisted = this.persistFileListCache();\r\n\r\n return {\r\n cacheUpdated: true,\r\n persisted,\r\n };\r\n }\r\n\r\n persistFileListCache() {\r\n try {\r\n localStorage.setItem(this.FILE_LIST_PATH, JSON.stringify(this.fileListCache));\r\n return true;\r\n } catch (error) {\r\n this.handleStoragePersistError(error);\r\n return false;\r\n }\r\n }\r\n\r\n createEmptyFileList() {\r\n return { files: [], directories: [] };\r\n }\r\n\r\n handleStoragePersistError(error) {\r\n console.warn('File list is kept in memory because localStorage persistence failed:', error);\r\n\r\n try {\r\n localStorage.removeItem(this.FILE_LIST_PATH);\r\n } catch (removeError) {\r\n console.warn('Failed to remove stale file list cache:', removeError);\r\n }\r\n\r\n if (!this.storageWarningShown) {\r\n this.storageWarningShown = true;\r\n ElMessage.warning(i18n.global.t('dashboard.fileListMemoryCacheWarning'));\r\n }\r\n }\r\n\r\n // 添加新文件到列表\r\n addFile(newFile) {\r\n try {\r\n const fileList = this.getMutableFileList();\r\n fileList.files.push(newFile);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error adding file:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 添加新文件夹\r\n addFolder(folderName) {\r\n try {\r\n const fileList = this.getMutableFileList();\r\n if (!fileList.directories.includes(folderName)) {\r\n fileList.directories.push(folderName);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n }\r\n return false; // 文件夹已存在\r\n } catch (error) {\r\n console.error('Error adding folder:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 移动文件或文件夹\r\n moveFile(oldPath, newPath, isFolder = false, currentPath = '') {\r\n try {\r\n let fileList = this.getMutableFileList();\r\n \r\n if (isFolder) {\r\n // 更新目录列表\r\n const oldFolderIndex = fileList.directories.indexOf(oldPath);\r\n if (oldFolderIndex !== -1) {\r\n fileList.directories.splice(oldFolderIndex, 1);\r\n }\r\n\r\n } else {\r\n // 移动单个文件\r\n const fileIndex = fileList.files.findIndex(file => file.name === oldPath);\r\n if (fileIndex !== -1) {\r\n // 从旧位置移除\r\n fileList.files.splice(fileIndex, 1);\r\n }\r\n\r\n }\r\n\r\n // 如果新路径包含当前目录的直接子目录,则添加直接子目录\r\n if (newPath.startsWith(currentPath)) {\r\n const pathArray = newPath.substring(currentPath.length).split('/');\r\n if (pathArray.length > 1) {\r\n const newFolder = currentPath + pathArray[0];\r\n if (!fileList.directories.includes(newFolder)) {\r\n fileList.directories.push(newFolder);\r\n }\r\n }\r\n }\r\n\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error moving file:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 从列表中删除文件\r\n removeFile(fileName) {\r\n try {\r\n let fileList = this.getMutableFileList();\r\n fileList.files = fileList.files.filter(file => file.name !== fileName);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error removing file:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 从列表中删除文件夹(同时删除该文件夹下的所有文件)\r\n removeFolder(folderName) {\r\n try {\r\n let fileList = this.getMutableFileList();\r\n fileList.files = fileList.files.filter(file => !file.name.startsWith(folderName + '/'));\r\n fileList.directories = fileList.directories.filter(dir => dir !== folderName);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error removing folder:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 获取指定目录下的文件和子目录\r\n getFilesInFolder(folderName) {\r\n try {\r\n const fileList = this.getMutableFileList();\r\n const files = fileList.files.filter(file => file.name.startsWith(folderName + '/'));\r\n const subdirectories = fileList.directories.filter(dir => dir.startsWith(folderName + '/'));\r\n return { files, directories: subdirectories };\r\n } catch (error) {\r\n console.error('Error getting files in folder:', error);\r\n return { files: [], directories: [] };\r\n }\r\n }\r\n\r\n // 构建筛选参数URL\r\n buildFilterParams(filters) {\r\n let params = '';\r\n // 访问状态筛选(综合判断)\r\n if (filters.accessStatus && filters.accessStatus.length > 0) {\r\n params += `&accessStatus=${encodeURIComponent(filters.accessStatus.join(','))}`;\r\n }\r\n // 黑白名单筛选(直接使用 ListType 字段)\r\n if (filters.listType && filters.listType.length > 0) {\r\n params += `&listType=${encodeURIComponent(filters.listType.join(','))}`;\r\n }\r\n if (filters.label && filters.label.length > 0) {\r\n params += `&label=${encodeURIComponent(filters.label.join(','))}`;\r\n }\r\n if (filters.fileType && filters.fileType.length > 0) {\r\n params += `&fileType=${encodeURIComponent(filters.fileType.join(','))}`;\r\n }\r\n if (filters.channel && filters.channel.length > 0) {\r\n params += `&channel=${encodeURIComponent(filters.channel.join(','))}`;\r\n }\r\n if (filters.channelName && filters.channelName.length > 0) {\r\n params += `&channelName=${encodeURIComponent(filters.channelName.join(','))}`;\r\n }\r\n return params;\r\n }\r\n\r\n // 更新文件列表\r\n async refreshFileList(dir, search = '', includeTags = '', excludeTags = '', filters = {}) {\r\n search = search.trim();\r\n try {\r\n let url = `/api/manage/list?count=60&dir=${dir}&search=${encodeURIComponent(search)}`;\r\n if (includeTags) {\r\n url += `&includeTags=${encodeURIComponent(includeTags)}`;\r\n }\r\n if (excludeTags) {\r\n url += `&excludeTags=${encodeURIComponent(excludeTags)}`;\r\n }\r\n // 添加筛选参数(支持多选)\r\n url += this.buildFilterParams(filters);\r\n \r\n const response = await fetchWithAuth(url, {\r\n method: 'GET',\r\n });\r\n const newFileList = await response.json();\r\n if (!newFileList.isIndexedResponse) {\r\n ElMessage.warning(i18n.global.t('dashboard.indexingWarning'));\r\n }\r\n // 保存包含新字段的完整数据\r\n return this.updateFileListCache(newFileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error refreshing file list:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 读取更多数据\r\n async loadMoreFiles(dir, search = '', includeTags = '', excludeTags = '', count = 60, filters = {}) {\r\n search = search.trim();\r\n try {\r\n const fileList = this.getMutableFileList();\r\n const start = fileList.files.length;\r\n\r\n let url = `/api/manage/list?dir=${dir}&start=${start}&count=${count}&search=${encodeURIComponent(search)}`;\r\n if (includeTags) {\r\n url += `&includeTags=${encodeURIComponent(includeTags)}`;\r\n }\r\n if (excludeTags) {\r\n url += `&excludeTags=${encodeURIComponent(excludeTags)}`;\r\n }\r\n // 添加筛选参数(支持多选)\r\n url += this.buildFilterParams(filters);\r\n\r\n const response = await fetchWithAuth(url, {\r\n method: 'GET',\r\n });\r\n \r\n const moreFiles = await response.json();\r\n fileList.files.push(...moreFiles.files);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error loading more files:', error);\r\n return { files: [], directories: [] };\r\n }\r\n }\r\n}\r\n\r\nexport const fileManager = new FileManager();\r\n","/**\r\n * 矩形工具函数\r\n * 用于框选(rubber-band selection)功能中的矩形计算和相交检测\r\n */\r\n\r\n/**\r\n * 判断两个矩形是否相交\r\n * @param {Object} rectA - { left, top, right, bottom }\r\n * @param {Object} rectB - { left, top, right, bottom }\r\n * @returns {boolean} 是否存在重叠区域\r\n */\r\nexport function rectIntersects(rectA, rectB) {\r\n return !(\r\n rectA.right <= rectB.left ||\r\n rectA.left >= rectB.right ||\r\n rectA.bottom <= rectB.top ||\r\n rectA.top >= rectB.bottom\r\n );\r\n}\r\n\r\n/**\r\n * 根据起始点和当前点计算选区矩形\r\n * @param {Object} start - { x, y } 起始鼠标坐标\r\n * @param {Object} current - { x, y } 当前鼠标坐标\r\n * @returns {Object} { left, top, width, height, right, bottom }\r\n */\r\nexport function calcSelectionRect(start, current) {\r\n const left = Math.min(start.x, current.x);\r\n const top = Math.min(start.y, current.y);\r\n const width = Math.abs(current.x - start.x);\r\n const height = Math.abs(current.y - start.y);\r\n return { left, top, width, height, right: left + width, bottom: top + height };\r\n}\r\n","import { ref, watch, onMounted, onBeforeUnmount, toValue } from 'vue';\r\nimport { rectIntersects, calcSelectionRect } from './rectIntersects.js';\r\n\r\n/**\r\n * Vue 3 Composable:框选(rubber-band selection)核心逻辑,支持多视图模式\r\n *\r\n * @param {Object} options\r\n * @param {Object} options.modes - Per-view-mode configuration\r\n * @param {Object} options.modes.card - Card view config\r\n * @param {import('vue').Ref} options.modes.card.containerRef\r\n * @param {string} options.modes.card.itemSelector - e.g. '.img-card'\r\n * @param {Object} options.modes.list - List view config\r\n * @param {import('vue').Ref} options.modes.list.containerRef\r\n * @param {string} options.modes.list.itemSelector - e.g. '.list-item'\r\n * @param {string} [options.mainSelector='.main-container'] - 主内容区域的 CSS 选择器,框选只能从该区域内开始\r\n * @param {import('vue').Ref} options.viewMode - 当前视图模式\r\n * @param {import('vue').Ref} options.items - 当前页的数据项(paginatedTableData)\r\n * @returns {{ isDragging: import('vue').Ref, selectionRect: import('vue').Ref }}\r\n */\r\nexport function useDragSelect(options) {\r\n const {\r\n modes,\r\n mainSelector = '.main-container',\r\n viewMode,\r\n items,\r\n } = options;\r\n\r\n // --- Reactive state ---\r\n const isDragging = ref(false);\r\n const selectionRect = ref({ left: 0, top: 0, width: 0, height: 0, right: 0, bottom: 0 });\r\n\r\n // --- Internal (non-reactive) state ---\r\n let startPoint = null; // { x, y } viewport coordinates at mousedown\r\n let preSelectSnapshot = []; // boolean[] snapshot of items[i].selected before drag\r\n let isAppendMode = false; // whether Shift/Ctrl/Cmd was held at mousedown\r\n\r\n // --- Enable/disable state ---\r\n const MOBILE_BREAKPOINT = 768; // px – at or below this width, drag-select is disabled\r\n let listenerAttached = false; // tracks whether the container mousedown listener is active\r\n\r\n // --- Auto-scroll state ---\r\n const EDGE_THRESHOLD = 50; // px from viewport edge to trigger auto-scroll\r\n const SCROLL_SPEED = 10; // px per frame to scroll\r\n let autoScrollTimer = null; // requestAnimationFrame ID for auto-scroll\r\n\r\n // --- Text selection prevention state ---\r\n let savedUserSelect = ''; // saved document.body.style.userSelect before drag\r\n\r\n // ------------------------------------------------------------------\r\n // Mode resolution helper\r\n // ------------------------------------------------------------------\r\n\r\n /**\r\n * Returns the configuration for the current viewMode.\r\n * @returns {{ containerRef: import('vue').Ref, itemSelector: string } | undefined}\r\n */\r\n function getActiveConfig() {\r\n const mode = toValue(viewMode);\r\n return modes[mode] || undefined;\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Enable / disable helpers\r\n // ------------------------------------------------------------------\r\n\r\n /**\r\n * Determine whether drag-select should be enabled.\r\n * Returns true when viewMode is 'card' or 'list' AND window width > 768px.\r\n */\r\n function shouldEnable() {\r\n const mode = toValue(viewMode);\r\n return (mode === 'card' || mode === 'list') && window.innerWidth > MOBILE_BREAKPOINT;\r\n }\r\n\r\n /**\r\n * Conditionally attach or detach the container listener based on shouldEnable().\r\n * Also cancels any active drag when detaching.\r\n */\r\n function syncListenerState() {\r\n if (shouldEnable()) {\r\n if (!listenerAttached) {\r\n attachContainerListener();\r\n }\r\n } else {\r\n if (listenerAttached) {\r\n cancelDrag();\r\n detachContainerListener();\r\n }\r\n }\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Helpers\r\n // ------------------------------------------------------------------\r\n\r\n /**\r\n * 判断 mousedown 目标是否为可启动框选的空白区域。\r\n * 必须在主内容区域内,且不在卡片、交互元素上。\r\n */\r\n function isBlankArea(event) {\r\n const target = event.target;\r\n // 必须在主内容区域(el-main)内\r\n const mainArea = target.closest(mainSelector);\r\n if (!mainArea) return false;\r\n // 排除当前模式的可选元素\r\n const config = getActiveConfig();\r\n if (config) {\r\n const itemEl = target.closest(config.itemSelector);\r\n if (itemEl) {\r\n const container = toValue(config.containerRef);\r\n if (container && container.contains(itemEl)) {\r\n return false;\r\n }\r\n }\r\n }\r\n // 排除交互元素(按钮、输入框、链接、下拉菜单、分页等)\r\n const interactive = target.closest('button, a, input, .el-input, .el-dropdown, .el-checkbox, .el-breadcrumb, .el-pagination, .el-pager, .header-content, .breadcrumb-container');\r\n if (interactive) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Determine whether a modifier key for append-select is pressed.\r\n */\r\n function hasAppendModifier(event) {\r\n return event.shiftKey || event.ctrlKey || event.metaKey;\r\n }\r\n\r\n /**\r\n * Save a snapshot of the current selected state for all items.\r\n */\r\n function saveSnapshot() {\r\n const currentItems = toValue(items);\r\n preSelectSnapshot = currentItems.map((item) => !!item.selected);\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Auto-scroll helpers\r\n // ------------------------------------------------------------------\r\n\r\n /** The last known clientY during a drag – updated by onMouseMove. */\r\n let lastClientY = 0;\r\n\r\n /**\r\n * Start the auto-scroll loop. On each animation frame we check whether the\r\n * mouse is within EDGE_THRESHOLD of the top or bottom of the viewport and\r\n * scroll accordingly. The selection rectangle and card hit-testing are also\r\n * updated after each scroll step so the visual feedback stays in sync.\r\n */\r\n function startAutoScroll() {\r\n if (autoScrollTimer !== null) return; // already running\r\n\r\n function scrollStep() {\r\n const viewportHeight = window.innerHeight;\r\n let scrollDelta = 0;\r\n\r\n if (lastClientY >= viewportHeight - EDGE_THRESHOLD) {\r\n // Near bottom edge → scroll down\r\n scrollDelta = SCROLL_SPEED;\r\n } else if (lastClientY <= EDGE_THRESHOLD) {\r\n // Near top edge → scroll up\r\n scrollDelta = -SCROLL_SPEED;\r\n }\r\n\r\n if (scrollDelta !== 0) {\r\n window.scrollBy(0, scrollDelta);\r\n\r\n // After scrolling, the viewport-relative positions of cards change,\r\n // but the mouse hasn't moved. We need to adjust the start point so\r\n // the selection rectangle accounts for the scroll offset, then\r\n // re-run hit-testing.\r\n if (startPoint) {\r\n startPoint.y -= scrollDelta;\r\n selectionRect.value = calcSelectionRect(startPoint, { x: selectionRect.value.right >= startPoint.x ? selectionRect.value.right : selectionRect.value.left, y: lastClientY });\r\n updateSelection();\r\n }\r\n }\r\n\r\n // Continue the loop\r\n autoScrollTimer = requestAnimationFrame(scrollStep);\r\n }\r\n\r\n autoScrollTimer = requestAnimationFrame(scrollStep);\r\n }\r\n\r\n /**\r\n * Stop the auto-scroll loop and clean up the timer.\r\n */\r\n function stopAutoScroll() {\r\n if (autoScrollTimer !== null) {\r\n cancelAnimationFrame(autoScrollTimer);\r\n autoScrollTimer = null;\r\n }\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Text selection prevention helpers\r\n // ------------------------------------------------------------------\r\n\r\n /**\r\n * Disable text selection on the document body during drag.\r\n */\r\n function disableTextSelection() {\r\n savedUserSelect = document.body.style.userSelect;\r\n document.body.style.userSelect = 'none';\r\n }\r\n\r\n /**\r\n * Restore the original text selection behavior on the document body.\r\n */\r\n function restoreTextSelection() {\r\n document.body.style.userSelect = savedUserSelect;\r\n }\r\n\r\n /**\r\n * Update the selected state of every item based on the current selection rectangle.\r\n */\r\n function updateSelection() {\r\n const config = getActiveConfig();\r\n if (!config) return;\r\n\r\n const container = toValue(config.containerRef);\r\n if (!container) return;\r\n\r\n const currentItems = toValue(items);\r\n const rect = selectionRect.value;\r\n\r\n // Build the selection rect in {left, top, right, bottom} format for intersection test\r\n const selRect = {\r\n left: rect.left,\r\n top: rect.top,\r\n right: rect.right,\r\n bottom: rect.bottom,\r\n };\r\n\r\n // Query all item DOM elements inside the container using the active mode's selector\r\n const itemElements = container.querySelectorAll(config.itemSelector);\r\n\r\n // Iterate over items and corresponding DOM elements\r\n currentItems.forEach((item, index) => {\r\n const itemEl = itemElements[index];\r\n if (!itemEl) return;\r\n\r\n const itemRect = itemEl.getBoundingClientRect();\r\n const itemBounds = {\r\n left: itemRect.left,\r\n top: itemRect.top,\r\n right: itemRect.right,\r\n bottom: itemRect.bottom,\r\n };\r\n\r\n const intersects = rectIntersects(selRect, itemBounds);\r\n\r\n if (isAppendMode) {\r\n // Append mode: keep original state, toggle on if intersects\r\n // If originally selected, stay selected regardless\r\n // If not originally selected, select if intersects\r\n if (preSelectSnapshot[index]) {\r\n item.selected = true;\r\n } else {\r\n item.selected = intersects;\r\n }\r\n } else {\r\n // Non-append mode: selected = intersects only\r\n item.selected = intersects;\r\n }\r\n });\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Mouse event handlers\r\n // ------------------------------------------------------------------\r\n\r\n function onMouseDown(event) {\r\n // 仅响应鼠标左键\r\n if (event.button !== 0) return;\r\n\r\n // 点击在卡片上时不启动框选\r\n if (!isBlankArea(event)) return;\r\n\r\n // Record start point (viewport coordinates)\r\n startPoint = { x: event.clientX, y: event.clientY };\r\n\r\n // Determine append mode from modifier keys at the moment of mousedown\r\n isAppendMode = hasAppendModifier(event);\r\n\r\n // 保存选中状态快照\r\n saveSnapshot();\r\n\r\n // 非追加模式下先清除所有选中\r\n if (!isAppendMode) {\r\n const currentItems = toValue(items);\r\n currentItems.forEach((item) => {\r\n item.selected = false;\r\n });\r\n }\r\n\r\n // Start dragging\r\n isDragging.value = true;\r\n selectionRect.value = calcSelectionRect(startPoint, startPoint);\r\n\r\n // 防止文本选中\r\n disableTextSelection();\r\n\r\n // Attach document-level listeners for move and up\r\n document.addEventListener('mousemove', onMouseMove);\r\n document.addEventListener('mouseup', onMouseUp);\r\n }\r\n\r\n function onMouseMove(event) {\r\n if (!isDragging.value || !startPoint) return;\r\n\r\n const currentPoint = { x: event.clientX, y: event.clientY };\r\n\r\n // Track last clientY for auto-scroll\r\n lastClientY = event.clientY;\r\n\r\n // Update selection rectangle\r\n selectionRect.value = calcSelectionRect(startPoint, currentPoint);\r\n\r\n // Update card selection based on intersection\r\n updateSelection();\r\n\r\n // Start or continue auto-scroll if near viewport edges\r\n const viewportHeight = window.innerHeight;\r\n if (lastClientY <= EDGE_THRESHOLD || lastClientY >= viewportHeight - EDGE_THRESHOLD) {\r\n startAutoScroll();\r\n } else {\r\n stopAutoScroll();\r\n }\r\n }\r\n\r\n function onMouseUp(_event) {\r\n if (!isDragging.value) return;\r\n\r\n // 停止自动滚动\r\n stopAutoScroll();\r\n\r\n // 恢复文本选中\r\n restoreTextSelection();\r\n\r\n // End dragging\r\n isDragging.value = false;\r\n selectionRect.value = { left: 0, top: 0, width: 0, height: 0, right: 0, bottom: 0 };\r\n startPoint = null;\r\n\r\n // Clean up document-level listeners\r\n document.removeEventListener('mousemove', onMouseMove);\r\n document.removeEventListener('mouseup', onMouseUp);\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Lifecycle: attach / detach container listener\r\n // ------------------------------------------------------------------\r\n\r\n function attachContainerListener() {\r\n if (!listenerAttached) {\r\n document.addEventListener('mousedown', onMouseDown);\r\n listenerAttached = true;\r\n }\r\n }\r\n\r\n function detachContainerListener() {\r\n if (listenerAttached) {\r\n document.removeEventListener('mousedown', onMouseDown);\r\n listenerAttached = false;\r\n }\r\n }\r\n\r\n /**\r\n * Force-stop any in-progress drag (e.g. when viewMode changes).\r\n */\r\n function cancelDrag() {\r\n if (isDragging.value) {\r\n stopAutoScroll();\r\n restoreTextSelection();\r\n isDragging.value = false;\r\n selectionRect.value = { left: 0, top: 0, width: 0, height: 0, right: 0, bottom: 0 };\r\n startPoint = null;\r\n document.removeEventListener('mousemove', onMouseMove);\r\n document.removeEventListener('mouseup', onMouseUp);\r\n }\r\n }\r\n\r\n // 监听 viewMode 变化,启用/禁用框选\r\n // Always cancel any in-progress drag when viewMode changes (Requirement 2.3),\r\n // then re-evaluate whether listeners should be attached for the new mode.\r\n watch(\r\n () => toValue(viewMode),\r\n () => {\r\n cancelDrag();\r\n syncListenerState();\r\n }\r\n );\r\n\r\n // --- Window resize handler ---\r\n function onWindowResize() {\r\n syncListenerState();\r\n }\r\n\r\n onMounted(() => {\r\n // 仅在满足条件时启用\r\n if (shouldEnable()) {\r\n attachContainerListener();\r\n }\r\n // Always listen for resize to dynamically enable/disable\r\n window.addEventListener('resize', onWindowResize);\r\n });\r\n\r\n onBeforeUnmount(() => {\r\n cancelDrag();\r\n restoreTextSelection();\r\n stopAutoScroll();\r\n detachContainerListener();\r\n window.removeEventListener('resize', onWindowResize);\r\n });\r\n\r\n return {\r\n isDragging,\r\n selectionRect,\r\n };\r\n}\r\n","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.every.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.find.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport \"core-js/modules/es.iterator.reduce.js\";\nimport \"core-js/modules/es.iterator.some.js\";\nimport \"core-js/modules/es.set.difference.v2.js\";\nimport \"core-js/modules/es.set.intersection.v2.js\";\nimport \"core-js/modules/es.set.is-disjoint-from.v2.js\";\nimport \"core-js/modules/es.set.is-subset-of.v2.js\";\nimport \"core-js/modules/es.set.is-superset-of.v2.js\";\nimport \"core-js/modules/es.set.symmetric-difference.v2.js\";\nimport \"core-js/modules/es.set.union.v2.js\";\nimport { mapGetters } from 'vuex';\nimport JSZip from 'jszip';\nimport DashboardTabs from '@/components/DashboardTabs.vue';\nimport TagManagementDialog from '@/components/dashboard/TagManagementDialog.vue';\nimport BatchTagDialog from '@/components/dashboard/BatchTagDialog.vue';\nimport SkeletonLoader from '@/components/dashboard/SkeletonLoader.vue';\nimport FileCard from '@/components/dashboard/FileCard.vue';\nimport FolderCard from '@/components/dashboard/FolderCard.vue';\nimport MoveFileDialog from '@/components/dashboard/MoveFileDialog.vue';\nimport FileListItem from '@/components/dashboard/FileListItem.vue';\nimport FileDetailDialog from '@/components/dashboard/FileDetailDialog.vue';\nimport BatchActionBar from '@/components/dashboard/BatchActionBar.vue';\nimport MobileActionSheet from '@/components/dashboard/MobileActionSheet.vue';\nimport MobileDirectoryDrawer from '@/components/dashboard/MobileDirectoryDrawer.vue';\nimport DashboardCheckbox from '@/components/dashboard/DashboardCheckbox.vue';\nimport FilterDropdown from '@/components/dashboard/FilterDropdown.vue';\nimport LanguageSwitcher from '@/components/LanguageSwitcher.vue';\nimport { fileManager } from '@/utils/fileManager';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nimport { validateFolderPath } from '@/utils/pathValidator';\nimport backgroundManager from '@/mixins/backgroundManager';\nimport { ref } from 'vue';\nimport { useDragSelect } from '@/utils/dashboard/useDragSelect.js';\nconst SORT_FIELDS = ['time', 'size', 'rawName', 'fileName'];\nconst SORT_ORDERS = ['asc', 'desc'];\nfunction getStoredSortValue(key, validValues, fallback) {\n try {\n const value = localStorage.getItem(key);\n return validValues.includes(value) ? value : fallback;\n } catch {\n return fallback;\n }\n}\nexport default {\n name: 'AdminDashBoard',\n mixins: [backgroundManager],\n data() {\n return {\n Number: 0,\n directFileCount: 0,\n // 当前目录直接子文件数量\n directFolderCount: 0,\n // 当前目录直接子文件夹数量\n showLogoutButton: false,\n tableData: [],\n tempSearch: '',\n search: '',\n searchKeywords: '',\n // Keywords only (without tag filters) for backend search\n searchIncludeTags: '',\n // 包含的标签,逗号分隔\n searchExcludeTags: '',\n // 排除的标签,逗号分隔\n isSearchMode: false,\n currentPage: 1,\n pageSize: 15,\n selectedFiles: [],\n sortField: getStoredSortValue('sortField', SORT_FIELDS, 'time'),\n sortOrder: getStoredSortValue('sortOrder', SORT_ORDERS, 'desc'),\n isUploading: false,\n showdetailDialog: false,\n detailFile: null,\n activeUrlTab: 'originUrl',\n defaultUrlFormat: 'originUrl',\n showUrlDialog: false,\n useCustomUrl: 'false',\n // 是否启用自定义链接\n customUrlPrefix: '',\n // 自定义链接前缀\n loading: false,\n // 加载状态\n currentPath: '',\n // 当前文件夹路径\n refreshLoading: false,\n showTagDialog: false,\n // 标签管理对话框\n showBatchTagDialog: false,\n // 批量标签管理对话框\n currentTagFile: '',\n // 当前标签管理的文件\n viewMode: 'card',\n // 视图模式:card 或 list\n showMobileActionModal: false,\n // 移动端操作模态框\n mobileActionFile: null,\n // 当前移动端操作的文件\n mobileActionIndex: -1,\n // 当前移动端操作的文件索引\n mobileActionIsFolder: false,\n // 是否为文件夹操作\n longPressTimer: null,\n // 长按计时器\n showMobileDirectoryDrawer: false,\n // 移动端目录抽屉\n jumpPage: '',\n // 跳转页码输入\n // 筛选相关状态(数组形式支持多选)\n filters: {\n accessStatus: [],\n // 访问状态: 'normal'(正常), 'blocked'(已屏蔽)\n listType: [],\n // 黑白名单: 'White', 'Block', 'None'\n label: [],\n // 审查结果: 'normal', 'teen', 'adult'\n fileType: [],\n // 文件类型: 'image', 'video', 'audio', 'other'\n channel: [],\n // 渠道类型: 'TelegramNew', 'CloudflareR2', 'S3', 'Discord', 'HuggingFace', 'WebDAV', 'External'\n channelName: [] // 渠道名称: 动态获取\n },\n channelNameOptions: [],\n // 动态从文件列表中提取\n // 移动文件对话框相关状态\n showMoveDialog: false,\n // 移动文件对话框\n moveTargetPath: '/',\n // 移动目标路径\n moveFileKey: '',\n // 当前移动的文件key\n moveFileIndex: -1,\n // 当前移动的文件索引\n isBatchMove: false,\n // 是否为批量移动\n pageSwipeStartX: null,\n pageSwipeStartY: null,\n pageSwipeStartTime: 0\n };\n },\n components: {\n DashboardTabs,\n TagManagementDialog,\n BatchTagDialog,\n SkeletonLoader,\n FileCard,\n FolderCard,\n FileListItem,\n FileDetailDialog,\n BatchActionBar,\n MobileActionSheet,\n MobileDirectoryDrawer,\n DashboardCheckbox,\n FilterDropdown,\n MoveFileDialog,\n LanguageSwitcher\n },\n setup() {\n const cardContainerRef = ref(null);\n const listContainerRef = ref(null);\n const viewModeRef = ref('card');\n const itemsRef = ref([]);\n const {\n isDragging,\n selectionRect\n } = useDragSelect({\n modes: {\n card: {\n containerRef: cardContainerRef,\n itemSelector: '.img-card'\n },\n list: {\n containerRef: listContainerRef,\n itemSelector: '.list-item'\n }\n },\n viewMode: viewModeRef,\n items: itemsRef\n });\n return {\n cardContainerRef,\n listContainerRef,\n viewModeRef,\n itemsRef,\n isDragging,\n selectionRect\n };\n },\n computed: {\n tagFileMetadata() {\n return this.tableData.find(file => file.name === this.currentTagFile)?.metadata || {};\n },\n ...mapGetters(['adminUrlSettings', 'userConfig']),\n filteredTableData() {\n return this.tableData;\n },\n totalPages() {\n return Math.ceil(this.filteredTableData.length / this.pageSize) || 1;\n },\n // 基于当前文件夹直接子文件和子文件夹数量计算的真实总页数\n realTotalPages() {\n const total = this.directFolderCount + this.directFileCount;\n return Math.ceil(total / this.pageSize) || 1;\n },\n // 计算当前激活的筛选条件数量(数组形式)\n activeFilterCount() {\n return Object.values(this.filters).reduce((count, arr) => count + (Array.isArray(arr) ? arr.length : 0), 0);\n },\n // 判断是否处于搜索或筛选模式\n hasSearchOrFilter() {\n return this.isSearchMode || this.activeFilterCount > 0;\n },\n paginatedTableData() {\n const sortedData = this.sortData(this.filteredTableData);\n const start = (this.currentPage - 1) * this.pageSize;\n const end = start + this.pageSize;\n let data = sortedData.slice(start, end);\n // 增加previewSrcList属性,用于预览图片\n const fullList = data.filter(file => this.isImage(file)).map(file => this.getFileLink(file.name));\n data.forEach(file => {\n if (this.isImage(file)) {\n // 重新排序,索引大于等于当前索引的元素在前,否则在后\n file.previewSrcList = fullList.slice(fullList.indexOf(this.getFileLink(file.name))).concat(fullList.slice(0, fullList.indexOf(this.getFileLink(file.name))));\n }\n });\n // 增加channelTag属性,用于显示渠道信息\n data.forEach(file => {\n if (file.metadata?.Channel === 'TelegramNew' || file.metadata?.Channel === 'Telegram') {\n file.channelTag = 'TG';\n } else if (file.metadata?.Channel === 'CloudflareR2') {\n file.channelTag = 'R2';\n } else if (file.metadata?.Channel === 'S3') {\n file.channelTag = 'S3';\n } else if (file.metadata?.Channel === 'Discord') {\n file.channelTag = 'DC';\n } else if (file.metadata?.Channel === 'HuggingFace') {\n file.channelTag = 'HF';\n } else if (file.metadata?.Channel === 'WebDAV') {\n file.channelTag = 'WD';\n } else if (file.metadata?.Channel === 'External') {\n file.channelTag = this.$t('dashboard.externalTag');\n } else {\n file.channelTag = this.$t('dashboard.unknownTag');\n }\n });\n return data;\n },\n sortLabel() {\n const labelKeys = {\n time: 'dashboard.sortByTime',\n size: 'dashboard.sortBySize',\n rawName: 'dashboard.sortByRawName',\n fileName: 'dashboard.sortByFileName'\n };\n const fieldLabel = this.$t(labelKeys[this.sortField] || labelKeys.time);\n const orderLabel = this.$t(this.sortOrder === 'desc' ? 'dashboard.sortDesc' : 'dashboard.sortAsc');\n return `${fieldLabel} · ${orderLabel}`;\n },\n dialogWidth() {\n return window.innerWidth > 768 ? '50%' : '90%';\n },\n detailDialogWidth() {\n return window.innerWidth > 768 ? '70%' : '90%';\n },\n accessType() {\n if (this.detailFile?.metadata?.ListType === 'White') {\n return this.$t('filter.normal');\n } else if (this.detailFile?.metadata?.ListType === 'Block' || this.detailFile?.metadata?.Label === 'adult') {\n return this.$t('filter.blocked');\n } else {\n return this.$t('filter.normal');\n }\n },\n allUrl() {\n // 外链图片均采用外链\n if (this.detailFile?.metadata?.Channel === 'External') {\n return {\n 'originUrl': `${this.detailFile?.metadata?.ExternalLink}`,\n 'mdUrl': `![${this.detailFile?.metadata?.FileName || this.detailFile?.name}](${this.detailFile?.metadata?.ExternalLink})`,\n 'htmlUrl': `\"${this.detailFile?.metadata?.FileName`,\n 'bbUrl': `[img]${this.detailFile?.metadata?.ExternalLink}[/img]`,\n 'tgId': this.detailFile?.metadata?.TgFileId || this.$t('fileDetail.unknown'),\n 'S3Location': this.detailFile?.metadata?.S3Location || this.$t('fileDetail.unknown'),\n 'S3CdnFileUrl': this.detailFile?.metadata?.S3CdnFileUrl || this.$t('fileDetail.unknown')\n };\n } else {\n return {\n 'originUrl': `${this.rootUrl}${this.detailFile?.name}`,\n 'mdUrl': `![${this.detailFile?.metadata?.FileName || this.detailFile?.name}](${this.rootUrl}${this.detailFile?.name})`,\n 'htmlUrl': `\"${this.detailFile?.metadata?.FileName`,\n 'bbUrl': `[img]${this.rootUrl}${this.detailFile?.name}[/img]`,\n 'tgId': this.detailFile?.metadata?.TgFileId || this.$t('fileDetail.unknown'),\n 'S3Location': this.detailFile?.metadata?.S3Location || this.$t('fileDetail.unknown'),\n 'S3CdnFileUrl': this.detailFile?.metadata?.S3CdnFileUrl || this.$t('fileDetail.unknown')\n };\n }\n },\n tableColumnNum() {\n return window.innerWidth > 768 ? 3 : 1;\n },\n tablePreviewSpan() {\n return window.innerWidth > 768 ? 2 : 1;\n },\n disableTooltip() {\n return window.innerWidth < 768;\n },\n selectPage() {\n // 如果当前页所有文件都被选中,则返回 true,否则返回 false\n return this.paginatedTableData.every(file => file.selected);\n },\n selectedPageFiles() {\n // 如果当前页有文件被选中,则返回 true,否则返回 false\n return this.paginatedTableData.some(file => file.selected);\n },\n rootUrl() {\n // 链接前缀,优先级:用户自定义 > urlPrefix > 默认\n return this.useCustomUrl === 'true' ? this.customUrlPrefix : this.userConfig?.urlPrefix || `${document.location.origin}/file/`;\n },\n isSelectAll: {\n get() {\n return this.paginatedTableData.length > 0 && this.paginatedTableData.every(file => file.selected);\n },\n set(val) {\n this.paginatedTableData.forEach(file => file.selected = val);\n }\n },\n isIndeterminate() {\n const selectedCount = this.paginatedTableData.filter(file => file.selected).length;\n return selectedCount > 0 && selectedCount < this.paginatedTableData.length;\n },\n pagerCount() {\n return window.innerWidth < 768 ? 5 : 7;\n }\n },\n watch: {\n // Sync viewMode data property to the ref used by useDragSelect\n viewMode: {\n handler(newVal) {\n this.viewModeRef = newVal;\n },\n immediate: true\n },\n // Sync paginatedTableData computed property to the ref used by useDragSelect\n paginatedTableData: {\n handler(newVal) {\n this.itemsRef = newVal;\n },\n immediate: true\n },\n tableData: {\n handler(newData) {\n // selectedFiles 增加 newData中新选中,不包含在 selectedFiles 中的文件\n this.selectedFiles = this.selectedFiles.concat(newData.filter(file => file.selected && !this.selectedFiles.includes(file)));\n // selectedFiles 删掉 newData 中已取消选中的文件\n this.selectedFiles = this.selectedFiles.filter(file => file.selected);\n // selectedFiles 删掉 tableData 中已删除的文件\n this.selectedFiles = this.selectedFiles.filter(file => newData.includes(file));\n },\n deep: true\n },\n defaultUrlFormat(newFormat) {\n localStorage.setItem('defaultUrlFormat', newFormat);\n },\n showdetailDialog(newVal) {\n if (newVal) {\n this.activeUrlTab = this.defaultUrlFormat || 'originUrl';\n }\n },\n customUrlPrefix(val) {\n this.$store.commit('setAdminUrlSettings', {\n key: 'customUrlPrefix',\n value: val\n });\n },\n useCustomUrl(val) {\n this.$store.commit('setAdminUrlSettings', {\n key: 'useCustomUrl',\n value: val\n });\n },\n currentPath(val) {\n // 页面切换时,取消选择的内容\n this.tableData.forEach(file => file.selected = false);\n }\n },\n methods: {\n // 切换视图模式\n setViewMode(mode) {\n if (this.viewMode === mode) {\n return;\n }\n this.viewMode = mode;\n localStorage.setItem('viewMode', this.viewMode);\n },\n // 列表视图全选当前页\n handleSelectAllPage(val) {\n this.paginatedTableData.forEach(file => file.selected = val);\n },\n // 移动端长按开始\n handleTouchStart(item, index) {\n this.longPressTimer = setTimeout(() => {\n this.mobileActionFile = item;\n this.mobileActionIndex = index;\n this.mobileActionIsFolder = false;\n this.showMobileActionModal = true;\n }, 500); // 500ms 长按触发\n },\n // 移动端长按结束/取消\n handleTouchEnd() {\n if (this.longPressTimer) {\n clearTimeout(this.longPressTimer);\n this.longPressTimer = null;\n }\n },\n // 文件夹长按开始\n handleFolderTouchStart(item, index) {\n this.longPressTimer = setTimeout(() => {\n this.mobileActionFile = item;\n this.mobileActionIndex = index;\n this.mobileActionIsFolder = true;\n this.showMobileActionModal = true;\n }, 500);\n },\n // 处理移动端操作\n handleMobileAction(action) {\n const file = this.mobileActionFile;\n const index = this.mobileActionIndex;\n this.showMobileActionModal = false;\n if (!file) return;\n switch (action) {\n case 'detail':\n this.openDetailDialog(index, file.name);\n break;\n case 'copy':\n this.handleCopy(index, file.name);\n break;\n case 'folderCopy':\n this.handleFolderCopy(file.name);\n break;\n case 'download':\n this.handleDownload(file.name);\n break;\n case 'move':\n this.handleMove(index, file.name);\n break;\n case 'delete':\n this.handleDelete(index, file.name);\n break;\n case 'tag':\n this.handleTagManagement(file.name);\n break;\n }\n },\n // 返回上一级目录\n handleGoBack() {\n const pathParts = this.currentPath.split('/').filter(Boolean);\n if (pathParts.length > 0) {\n pathParts.pop();\n const parentPath = pathParts.join('/');\n this.navigateToFolder(parentPath);\n }\n this.showMobileDirectoryDrawer = false;\n },\n // 获取标签颜色\n getTagColor(index) {\n const colors = ['linear-gradient(135deg, #667eea 0%, #764ba2 100%)', 'linear-gradient(135deg, #f093fb 0%, #f5576c 100%)', 'linear-gradient(135deg, #4facfe 0%, #00f2fe 100%)', 'linear-gradient(135deg, #43e97b 0%, #38f9d7 100%)', 'linear-gradient(135deg, #fa709a 0%, #fee140 100%)', 'linear-gradient(135deg, #a8edea 0%, #fed6e3 100%)'];\n return colors[index % colors.length];\n },\n // 视频hover播放控制\n handleVideoHover(event, isEnter) {\n const video = event.target;\n if (isEnter) {\n video.play().catch(() => {});\n } else {\n video.pause();\n video.currentTime = 0;\n }\n },\n // 格式化文件大小\n formatFileSize(bytes) {\n if (!bytes || bytes === 0) return '-';\n bytes = Number(bytes);\n if (isNaN(bytes)) return '-';\n const units = ['B', 'KB', 'MB', 'GB', 'TB'];\n let i = 0;\n while (bytes >= 1024 && i < units.length - 1) {\n bytes /= 1024;\n i++;\n }\n return bytes.toFixed(i > 0 ? 1 : 0) + ' ' + units[i];\n },\n handleSearch() {\n this.search = this.tempSearch;\n this.isSearchMode = this.search.trim() !== '';\n this.currentPage = 1; // 重置到第一页\n\n // 解析搜索字符串,提取标签和关键字\n // 支持 #tag 表示包含标签,-#tag 表示排除标签\n if (this.search && this.search.trim()) {\n const includeTags = [];\n const excludeTags = [];\n\n // 匹配 -#tag 和 #tag\n let searchText = this.search;\n\n // 先匹配排除标签 -#tag\n const excludeTagRegex = /-#([\\w\\u4e00-\\u9fa5\\u3040-\\u309f\\u30a0-\\u30ff\\uac00-\\ud7af\\.\\+\\-]+)/g;\n searchText = searchText.replace(excludeTagRegex, (match, tag) => {\n excludeTags.push(tag.toLowerCase());\n return ' ';\n });\n\n // 再匹配包含标签 #tag\n const includeTagRegex = /#([\\w\\u4e00-\\u9fa5\\u3040-\\u309f\\u30a0-\\u30ff\\uac00-\\ud7af\\.\\+\\-]+)/g;\n searchText = searchText.replace(includeTagRegex, (match, tag) => {\n includeTags.push(tag.toLowerCase());\n return ' ';\n });\n\n // 清理剩余的关键字(去除多余空格)\n this.searchKeywords = searchText.replace(/\\s+/g, ' ').trim();\n\n // 构建标签查询字符串\n this.searchIncludeTags = includeTags.join(',');\n this.searchExcludeTags = excludeTags.join(',');\n console.log('Search keywords:', this.searchKeywords);\n console.log('Include tags:', this.searchIncludeTags);\n console.log('Exclude tags:', this.searchExcludeTags);\n } else {\n this.searchKeywords = '';\n this.searchIncludeTags = '';\n this.searchExcludeTags = '';\n }\n this.refreshFileList();\n },\n // 处理筛选变化(来自 FilterDropdown 组件)\n handleFilterChange({\n type,\n filters\n }) {\n this.filters = filters;\n this.currentPage = 1; // 重置到第一页\n this.refreshFileList();\n },\n // 清除所有筛选条件\n clearFilters() {\n this.filters = {\n listType: [],\n label: [],\n fileType: [],\n channel: [],\n channelName: []\n };\n this.currentPage = 1;\n this.refreshFileList();\n },\n // 从 API 获取所有渠道名称\n async extractChannelNames() {\n try {\n const response = await fetchWithAuth('/api/channels?includeDisabled=true', {\n method: 'GET'\n });\n if (response.ok) {\n const channels = await response.json();\n const channelOptions = [];\n\n // 类型映射(显示名称)\n const typeLabels = {\n telegram: 'Telegram',\n cfr2: 'Cloudflare R2',\n s3: 'S3',\n discord: 'Discord',\n huggingface: 'HuggingFace',\n webdav: 'WebDAV'\n };\n\n // 按类型提取渠道名称,channel.type是类型内部存储名称(可能根据版本有变化),type是类型对外名称\n Object.entries(channels).forEach(([type, channelList]) => {\n if (Array.isArray(channelList) && channelList.length > 0) {\n channelList.forEach(channel => {\n if (channel.name) {\n channelOptions.push({\n name: channel.name,\n type: channel.type,\n typeLabel: typeLabels[type] || type,\n // 使用 channel.type:channel.name 作为唯一标识\n value: `${channel.type}:${channel.name}`\n });\n }\n });\n }\n });\n\n // 按类型和名称排序\n channelOptions.sort((a, b) => {\n if (a.type !== b.type) {\n return a.type.localeCompare(b.type);\n }\n return a.name.localeCompare(b.name);\n });\n this.channelNameOptions = channelOptions;\n }\n } catch (error) {\n console.error('Failed to fetch channel names:', error);\n }\n },\n handleDownload(key) {\n const link = document.createElement('a');\n link.href = this.getFileLink(key);\n link.download = key;\n link.click();\n },\n openDetailDialog(index, key) {\n this.detailFile = this.paginatedTableData[index];\n this.showdetailDialog = true;\n },\n handleTabClick(tab) {\n this.activeUrlTab = tab.props.name;\n },\n handleUrlClick(event) {\n // 复制到剪贴板\n navigator.clipboard.writeText(event.target.value).then(() => {\n this.$message({\n type: 'success',\n message: this.$t('dashboard.copySuccess')\n });\n }).catch(() => {\n this.$message({\n type: 'error',\n message: this.$t('dashboard.copyFailed')\n });\n });\n },\n handleDetailDelete(key) {\n this.$confirm(this.$t('dashboard.deleteConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n fetchWithAuth(`/api/manage/delete/${key}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n this.tableData.splice(fileIndex, 1);\n }\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.updateStats(-1, false);\n this.$message.success(this.$t('dashboard.deleteSuccess'));\n this.showdetailDialog = false;\n }).catch(() => this.$message.error(this.$t('dashboard.deleteFailed')));\n }).catch(() => console.log('Delete cancelled'));\n },\n handleBlock(key) {\n this.$confirm(this.$t('dashboard.blockConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n fetchWithAuth(`/api/manage/block/${key}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata.ListType = 'Block';\n }\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.$message.success(this.$t('dashboard.blockSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.blockFailed')));\n }).catch(() => console.log('Block cancelled'));\n },\n handleWhite(key) {\n this.$confirm(this.$t('dashboard.whiteConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n fetchWithAuth(`/api/manage/white/${key}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata.ListType = 'White';\n }\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.$message.success(this.$t('dashboard.whiteSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.whiteFailed')));\n }).catch(() => console.log('White cancelled'));\n },\n handleDelete(index, key) {\n // 判断是否为文件夹\n const isFolder = this.tableData.find(file => file.name === key).isFolder;\n this.$confirm(isFolder ? this.$t('dashboard.deleteFolderConfirm') : this.$t('dashboard.deleteFileConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n fetchWithAuth(`/api/manage/delete/${key}?folder=${isFolder}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n this.tableData.splice(fileIndex, 1);\n }\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.updateStats(-1, false);\n fileManager.removeFile(key);\n this.$message.success(this.$t('dashboard.deleteSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.deleteFailed')));\n }).catch(() => console.log('Delete cancelled'));\n },\n handleBatchDelete() {\n this.$confirm(this.$t('dashboard.batchDeleteConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n const promises = this.selectedFiles.map(file => {\n const isFolder = file.isFolder;\n return fetchWithAuth(`/api/manage/delete/${file.name}?folder=${isFolder}`, {\n method: 'GET'\n });\n });\n Promise.all(promises).then(results => {\n let successNum = 0;\n results.forEach((response, index) => {\n if (response.ok) {\n successNum++;\n const fileIndex = this.tableData.findIndex(file => file.name === this.selectedFiles[index].name);\n if (fileIndex !== -1) {\n this.tableData.splice(fileIndex, 1);\n }\n fileManager.removeFile(this.selectedFiles[index].name);\n }\n });\n this.selectedFiles = [];\n this.updateStats(-successNum, false);\n this.$message.success(this.$t('dashboard.batchDeleteSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.batchDeleteFailed')));\n }).catch(() => console.log('Batch delete cancelled'));\n },\n async handleBatchCopy() {\n // 分离文件和文件夹\n const files = this.selectedFiles.filter(item => !item.isFolder);\n const folders = this.selectedFiles.filter(item => item.isFolder);\n\n // 如果有文件夹,显示加载状态\n let loading = null;\n if (folders.length > 0) {\n loading = this.$loading({\n lock: true,\n text: this.$t('dashboard.fetchingFileList')\n });\n }\n try {\n // 收集所有文件(包括文件夹内的文件)\n let allFiles = [...files];\n\n // 递归获取所有文件夹内的文件\n for (const folder of folders) {\n try {\n const response = await fetchWithAuth(`/api/manage/list?dir=${encodeURIComponent(folder.name)}&recursive=true&count=-1`, {\n method: 'GET'\n });\n const data = await response.json();\n if (data.files && data.files.length > 0) {\n allFiles = allFiles.concat(data.files);\n }\n } catch (error) {\n console.error(`获取文件夹 ${folder.name} 内容失败:`, error);\n }\n }\n if (loading) loading.close();\n if (allFiles.length === 0) {\n this.$message.warning(this.$t('dashboard.noLinksAvailable'));\n return;\n }\n\n // 生成所有链接\n const links = allFiles.map(file => {\n return this.generateFileLink(file.name, file.metadata);\n }).filter(link => link);\n if (links.length === 0) {\n this.$message.warning(this.$t('dashboard.noLinksAvailable'));\n return;\n }\n\n // 复制到剪贴板\n const text = links.join('\\n');\n if (navigator.clipboard) {\n await navigator.clipboard.writeText(text);\n this.$message.success(this.$t('dashboard.batchCopySuccess', {\n count: links.length\n }));\n } else {\n this.copyToClipboardFallback(text);\n }\n } catch (error) {\n if (loading) loading.close();\n console.error('Batch copy failed:', error);\n this.$message.error(this.$t('dashboard.batchCopyFailed'));\n }\n },\n copyToClipboardFallback(text) {\n const textarea = document.createElement('textarea');\n document.body.appendChild(textarea);\n textarea.style.position = 'fixed';\n textarea.style.clip = 'rect(0 0 0 0)';\n textarea.style.top = '10px';\n textarea.value = text;\n textarea.select();\n document.execCommand('copy');\n document.body.removeChild(textarea);\n this.$message.success(this.$t('dashboard.batchCopyLinksSuccess'));\n },\n handleCopy(index, key) {\n let text = '';\n if (this.paginatedTableData[index].metadata?.Channel === 'External') {\n switch (this.defaultUrlFormat) {\n case 'originUrl':\n text = this.paginatedTableData[index].metadata?.ExternalLink;\n break;\n case 'mdUrl':\n text = `![${this.paginatedTableData[index].metadata?.FileName || key}](${this.paginatedTableData[index].metadata?.ExternalLink})`;\n break;\n case 'htmlUrl':\n text = `\"${this.paginatedTableData[index].metadata?.FileName`;\n break;\n case 'bbUrl':\n text = `[img]${this.paginatedTableData[index].metadata?.ExternalLink}[/img]`;\n break;\n case 'tgId':\n text = this.paginatedTableData[index].metadata?.TgFileId || 'none';\n break;\n case 's3Location':\n text = this.paginatedTableData[index].metadata?.S3Location || 'none';\n break;\n }\n } else {\n switch (this.defaultUrlFormat) {\n case 'originUrl':\n text = `${this.rootUrl}${key}`;\n break;\n case 'mdUrl':\n text = `![${this.paginatedTableData[index].metadata?.FileName || key}](${this.rootUrl}${key})`;\n break;\n case 'htmlUrl':\n text = `\"${this.paginatedTableData[index].metadata?.FileName`;\n break;\n case 'bbUrl':\n text = `[img]${this.rootUrl}${key}[/img]`;\n break;\n case 'tgId':\n text = this.paginatedTableData[index].metadata?.TgFileId || 'none';\n break;\n case 's3Location':\n text = this.paginatedTableData[index].metadata?.S3Location || 'none';\n break;\n }\n }\n navigator.clipboard ? navigator.clipboard.writeText(text).then(() => this.$message.success(this.$t('dashboard.copyFileLinkSuccess'))) : this.copyToClipboardFallback(text);\n },\n async loadMoreData() {\n this.loading = true;\n try {\n // 传递标签参数和筛选参数到后端\n await fileManager.loadMoreFiles(this.currentPath, this.searchKeywords, this.searchIncludeTags, this.searchExcludeTags, 60, this.filters);\n // 获取新的文件列表后\n await this.fetchFileList();\n } catch (error) {\n this.$message.error(this.$t('dashboard.loadMoreFailed'));\n } finally {\n this.loading = false;\n }\n },\n updateStats(num, init = false) {\n if (init) {\n this.Number = num;\n } else {\n this.Number += num;\n }\n },\n setSortField(field) {\n if (!SORT_FIELDS.includes(field)) return;\n this.sortField = field;\n this.currentPage = 1;\n localStorage.setItem('sortField', field);\n },\n setSortOrder(order) {\n if (!SORT_ORDERS.includes(order)) return;\n this.sortOrder = order;\n this.currentPage = 1;\n localStorage.setItem('sortOrder', order);\n },\n sortData(data) {\n if (!Array.isArray(data)) return [];\n const folders = data.filter(file => file.isFolder);\n const files = data.filter(file => !file.isFolder);\n const getSizeInBytes = item => {\n const parseSize = value => {\n if (value === null || value === undefined || value === '') return null;\n const parsedValue = Number(value);\n return Number.isFinite(parsedValue) ? parsedValue : null;\n };\n const sizeInBytes = parseSize(item.metadata?.FileSizeBytes);\n if (sizeInBytes !== null) return sizeInBytes;\n const sizeInMegabytes = parseSize(item.metadata?.FileSize);\n if (sizeInMegabytes !== null) return sizeInMegabytes * 1024 * 1024;\n return parseSize(item.size) ?? 0;\n };\n const getValue = item => {\n switch (this.sortField) {\n case 'size':\n return getSizeInBytes(item);\n case 'rawName':\n return item.metadata?.RawName || item.name || '';\n case 'fileName':\n return item.metadata?.FileName || item.name || '';\n case 'time':\n default:\n return item.metadata?.TimeStamp ? new Date(item.metadata.TimeStamp).getTime() : 0;\n }\n };\n const compare = (a, b) => {\n const valA = getValue(a);\n const valB = getValue(b);\n let result = 0;\n if (typeof valA === 'string' || typeof valB === 'string') {\n result = String(valA || '').localeCompare(String(valB || ''));\n } else {\n result = valA - valB;\n }\n return this.sortOrder === 'desc' ? -result : result;\n };\n folders.sort(compare);\n files.sort(compare);\n return folders.concat(files);\n },\n handleVideoClick(event) {\n const videoElement = event.target;\n if (videoElement.requestFullscreen) {\n videoElement.requestFullscreen();\n } else if (videoElement.webkitRequestFullscreen) {\n // Safari/Old Chrome\n videoElement.webkitRequestFullscreen();\n } else if (videoElement.mozRequestFullScreen) {\n // Firefox\n videoElement.mozRequestFullScreen();\n } else if (videoElement.msRequestFullscreen) {\n // IE/Edge\n videoElement.msRequestFullscreen();\n }\n },\n handleLogout() {\n const url = process.env.NODE_ENV === 'production' ? '/api/auth/logout' : '/api/api/auth/logout';\n fetch(url, {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n authType: 'admin'\n })\n }).finally(() => {\n this.$store.commit('setAdminLoggedIn', false);\n this.$router.push('/adminLogin');\n });\n },\n handleSelectPage() {\n if (this.selectPage) {\n this.paginatedTableData.forEach(file => file.selected = false);\n } else {\n this.paginatedTableData.forEach(file => file.selected = true);\n }\n },\n clearSelection() {\n this.tableData.forEach(file => file.selected = false);\n this.selectedFiles = [];\n },\n handleBatchAction(command) {\n if (command === 'copy') {\n this.handleBatchCopy();\n } else if (command === 'delete') {\n this.handleBatchDelete();\n } else if (command === 'download') {\n this.handleBatchDownload();\n } else if (command === 'move') {\n this.handleBatchMove();\n } else if (command === 'tagManagement') {\n this.handleBatchTagManagement();\n } else if (command === 'ban') {\n this.handleBatchBlock();\n } else if (command === 'white') {\n this.handleBatchWhite();\n }\n },\n handleMove(index, key) {\n // 打开自定义移动对话框\n this.moveFileKey = key;\n this.moveFileIndex = index;\n this.isBatchMove = false;\n this.moveTargetPath = '/';\n this.showMoveDialog = true;\n },\n handleBatchMove() {\n // 打开自定义移动对话框(批量模式)\n this.isBatchMove = true;\n this.moveTargetPath = '/';\n this.showMoveDialog = true;\n },\n // 确认移动操作\n confirmMove(targetPath) {\n const value = targetPath;\n // 使用共享验证器验证路径\n const validation = validateFolderPath(value);\n if (!validation.valid) {\n this.$message.error(validation.error);\n return;\n }\n // 去掉开头的 /,结尾若没有 /,则加上\n const newPath = value.replace(/^\\/+/, '') + (value.endsWith('/') ? '' : value === '' ? '' : '/');\n // 判断目标文件夹是否是当前文件夹\n if (newPath === this.currentPath) {\n this.$message.warning(this.$t('dashboard.moveTargetSameAsCurrent'));\n return;\n }\n\n // 关闭对话框\n this.showMoveDialog = false;\n if (this.isBatchMove) {\n // 批量移动\n this.executeBatchMove(newPath);\n } else {\n // 单个文件移动\n this.executeSingleMove(newPath);\n }\n },\n // 执行单个文件移动\n executeSingleMove(newPath) {\n const key = this.moveFileKey;\n const isFolder = this.tableData.find(file => file.name === key)?.isFolder;\n fetchWithAuth(`/api/manage/move/${key}?folder=${isFolder}&dist=${encodeURIComponent(newPath)}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n // 更新本地文件管理器\n const newKey = newPath + key.split('/').pop();\n fileManager.moveFile(key, newKey, isFolder, this.currentPath);\n // 移除文件\n this.tableData.splice(fileIndex, 1);\n // 强制重新渲染内容\n this.$nextTick(() => {\n const tempData = [...this.tableData];\n this.tableData = [];\n this.$nextTick(() => {\n this.tableData = tempData;\n });\n });\n }\n this.updateStats(-1, false);\n this.$message.success(this.$t('dashboard.moveSuccess'));\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.refreshLocalFileList();\n }).catch(() => this.$message.error(this.$t('dashboard.moveFailed')));\n },\n // 执行批量移动\n executeBatchMove(newPath) {\n const promises = this.selectedFiles.map(file => {\n const isFolder = file.isFolder;\n return fetchWithAuth(`/api/manage/move/${file.name}?folder=${isFolder}&dist=${encodeURIComponent(newPath)}`, {\n method: 'GET'\n });\n });\n Promise.all(promises).then(results => {\n let successNum = 0;\n results.forEach((response, index) => {\n if (response.ok) {\n successNum++;\n const file = this.selectedFiles[index];\n file.selected = false;\n const fileIndex = this.tableData.findIndex(f => f.name === file.name);\n if (fileIndex !== -1) {\n // 更新本地文件管理器\n const newKey = newPath + file.name.split('/').pop();\n fileManager.moveFile(file.name, newKey, file.isFolder, this.currentPath);\n // 移除文件\n this.tableData.splice(fileIndex, 1);\n }\n }\n });\n // 强制重新渲染内容\n this.$nextTick(() => {\n const tempData = [...this.tableData];\n this.tableData = [];\n this.$nextTick(() => {\n this.tableData = tempData;\n });\n });\n this.updateStats(-successNum, false);\n this.$message.success(this.$t('dashboard.moveSuccess'));\n }).then(() => {\n this.refreshLocalFileList();\n }).catch(() => this.$message.error(this.$t('dashboard.moveFailed')));\n },\n handleBatchBlock() {\n this.$confirm(this.$t('dashboard.batchBlockConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n // 跳过文件夹\n const promises = this.selectedFiles.map(file => {\n if (file.isFolder) {\n return Promise.resolve({\n ok: false\n });\n }\n return fetchWithAuth(`/api/manage/block/${file.name}`, {\n method: 'GET'\n });\n });\n Promise.all(promises).then(results => {\n results.forEach((response, index) => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === this.selectedFiles[index].name);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata.ListType = 'Block';\n }\n }\n });\n this.$message.success(this.$t('dashboard.batchBlockSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.batchBlockFailed')));\n }).catch(() => console.log('Batch block cancelled'));\n },\n handleBatchWhite() {\n this.$confirm(this.$t('dashboard.batchWhiteConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n // 跳过文件夹\n const promises = this.selectedFiles.map(file => {\n if (file.isFolder) {\n return Promise.resolve({\n ok: false\n });\n }\n return fetchWithAuth(`/api/manage/white/${file.name}`, {\n method: 'GET'\n });\n });\n Promise.all(promises).then(results => {\n results.forEach((response, index) => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === this.selectedFiles[index].name);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata.ListType = 'White';\n }\n }\n });\n this.$message.success(this.$t('dashboard.batchWhiteSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.batchWhiteFailed')));\n }).catch(() => console.log('Batch white cancelled'));\n },\n handleBatchDownload() {\n // 将选中文件打包成 zip 文件下载\n const zip = new JSZip();\n const folder = zip.folder('files');\n // 构造Promise数组,等待所有文件下载完成后再打包\n const fileNameCount = {}; // 用于跟踪文件名出现的次数\n\n const downloadPromises = this.selectedFiles.map(async file => {\n // 跳过文件夹\n if (file.isFolder) {\n return;\n }\n const response = await fetch(this.getFileLink(file.name));\n const blob = await response.blob();\n // 检查文件名是否已经存在\n let fileName = file.metadata?.FileName || file.name;\n if (fileNameCount[fileName]) {\n // 如果已经存在,则在文件名后加上编号\n const extension = fileName.substring(fileName.lastIndexOf('.'));\n const baseName = fileName.substring(0, fileName.lastIndexOf('.'));\n fileName = `${baseName}(${fileNameCount[fileName]})${extension}`;\n fileNameCount[file.name]++;\n } else {\n // 如果不存在,则初始化为1\n fileNameCount[fileName] = 1;\n }\n // 将文件添加到 zip 文件夹中\n folder.file(fileName, blob);\n });\n Promise.all(downloadPromises).then(() => zip.generateAsync({\n type: 'blob'\n })).then(blob => {\n const link = document.createElement('a');\n link.href = URL.createObjectURL(blob);\n link.download = 'files.zip';\n link.click();\n });\n },\n isVideo(file) {\n // 排除音频文件\n if (this.isAudio(file)) return false;\n let flag = file.metadata?.FileType?.includes('video');\n // 用文件名后缀判断是否为视频文件\n if (!flag) {\n const videoExtensions = ['mp4', 'webm', 'ogg', 'avi', 'mov', 'flv', 'wmv', 'mkv', 'rmvb', '3gp', 'mpg', 'mpeg', 'm4v', 'f4v', 'rm', 'asf', 'dat', 'ts', 'vob', 'swf', 'divx', 'xvid', 'm2ts', 'mts', 'm2v', '3g2', '3gp2', '3gpp', '3gpp2', 'mpe', 'm1v', 'mpv', 'mpv2', 'mp2v', 'm2t', 'm2ts', 'm2v', 'm4v'];\n const extension = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();\n flag = videoExtensions.includes(extension);\n }\n return flag;\n },\n isAudio(file) {\n let flag = file.metadata?.FileType?.includes('audio');\n // 用文件名后缀判断是否为音频文件\n if (!flag) {\n const audioExtensions = ['mp3', 'wav', 'flac', 'aac', 'ogg', 'wma', 'm4a', 'ape', 'aiff', 'alac', 'opus', 'mid', 'midi', 'm4b', 'm4p', 'm4r', 'amr', 'au', 'ra', 'ram'];\n const extension = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();\n flag = audioExtensions.includes(extension);\n }\n return flag;\n },\n isImage(file) {\n let flag = file.metadata?.FileType?.includes('image');\n // 用文件名后缀判断是否为图片文件\n if (!flag) {\n const imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'ico', 'tiff', 'tif', 'psd', 'ai', 'eps', 'raw', 'cr2', 'nef', 'orf', 'sr2', 'dng', 'arw', 'rw2', 'raf', 'pef', 'x3f', 'srf', 'erf', 'mrw', 'nrw', 'kdc', 'dcr', 'mef', 'mos', 'crw', 'raf', 'rwl', 'srw', '3fr', 'fff', 'iiq', 'qtk', 'bay', 'k25', 'kdc', 'dcs', 'drf', 'dng', 'erf', 'kdc', 'mdc', 'mef', 'mos', 'mrw', 'nef', 'nrw', 'orf', 'pef', 'ptx', 'pxn', 'r3d', 'raf', 'raw', 'rwl', 'rw2', 'rwz', 'sr2', 'srf', 'x3f'];\n const extension = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();\n flag = imageExtensions.includes(extension);\n }\n return flag;\n },\n getFileLink(filename) {\n const fileLink = process.env.NODE_ENV === 'production' ? `/file/${filename}?from=admin` : `/api/file/${filename}?from=admin`;\n return fileLink;\n },\n handlePageChange(page) {\n this.currentPage = page;\n // 到最后一页时,加载更多数据\n if (this.currentPage === Math.ceil(this.tableData.length / this.pageSize)) {\n this.loadMoreData();\n }\n },\n isMobileViewport() {\n return window.innerWidth < 768;\n },\n updateResponsivePageSize() {\n const nextPageSize = this.isMobileViewport() ? 16 : 15;\n if (this.pageSize === nextPageSize) return;\n const firstVisibleIndex = (this.currentPage - 1) * this.pageSize;\n this.pageSize = nextPageSize;\n this.currentPage = Math.min(Math.floor(firstVisibleIndex / nextPageSize) + 1, this.realTotalPages);\n },\n isSwipeIgnoredTarget(target) {\n return Boolean(target?.closest?.('button, a, input, textarea, select, .el-checkbox, .action-btn, .list-action-btn'));\n },\n handlePageSwipeStart(event) {\n if (!this.isMobileViewport() || this.isDragging || this.loading || this.showMobileActionModal || this.showMobileDirectoryDrawer || this.isSwipeIgnoredTarget(event.target)) {\n this.resetPageSwipe();\n return;\n }\n const touch = event.touches?.[0];\n if (!touch) return;\n this.pageSwipeStartX = touch.clientX;\n this.pageSwipeStartY = touch.clientY;\n this.pageSwipeStartTime = Date.now();\n },\n async handlePageSwipeEnd(event) {\n if (this.pageSwipeStartX === null || this.pageSwipeStartY === null) return;\n const touch = event.changedTouches?.[0];\n if (!touch) {\n this.resetPageSwipe();\n return;\n }\n const deltaX = touch.clientX - this.pageSwipeStartX;\n const deltaY = touch.clientY - this.pageSwipeStartY;\n const elapsed = Date.now() - this.pageSwipeStartTime;\n this.resetPageSwipe();\n if (elapsed > 700 || Math.abs(deltaX) < 64 || Math.abs(deltaX) < Math.abs(deltaY) * 1.35) {\n return;\n }\n const targetPage = deltaX < 0 ? this.currentPage + 1 : this.currentPage - 1;\n await this.goToSwipePage(targetPage);\n },\n resetPageSwipe() {\n this.pageSwipeStartX = null;\n this.pageSwipeStartY = null;\n this.pageSwipeStartTime = 0;\n },\n async goToSwipePage(page) {\n if (page < 1 || page > this.realTotalPages || page === this.currentPage) return;\n if (page > this.totalPages) {\n await this.loadMoreDataUntilPage(page);\n return;\n }\n this.handlePageChange(page);\n },\n // 跳转到指定页码\n handleJumpPage() {\n const page = parseInt(this.jumpPage);\n if (isNaN(page) || page < 1) {\n this.$message.warning(this.$t('dashboard.invalidPageNumber'));\n return;\n }\n if (page > this.realTotalPages) {\n this.$message.warning(this.$t('dashboard.pageExceedsMax', {\n max: this.realTotalPages\n }));\n return;\n }\n // 如果目标页超过当前已加载的页数,需要先加载更多数据\n if (page > this.totalPages) {\n this.$message.info(this.$t('dashboard.loadingData'));\n this.loadMoreDataUntilPage(page);\n } else {\n this.currentPage = page;\n }\n this.jumpPage = '';\n },\n // 加载数据直到指定页\n async loadMoreDataUntilPage(targetPage) {\n this.loading = true;\n try {\n // 计算目标页需要的文件数量(不包含文件夹)\n // 目标页最后一个项目的索引 = targetPage * pageSize\n // 需要的文件数 = 目标索引 - 已有文件夹数量\n const targetIndex = targetPage * this.pageSize;\n const currentFolderCount = this.filteredTableData.filter(item => item.isFolder).length;\n const currentFileCount = this.filteredTableData.filter(item => !item.isFolder).length;\n\n // 需要加载的文件数量 = 目标位置需要的文件数 - 当前已加载的文件数\n const neededFileCount = Math.max(0, targetIndex - currentFolderCount - currentFileCount);\n if (neededFileCount > 0) {\n await fileManager.loadMoreFiles(this.currentPath, this.searchKeywords, this.searchIncludeTags, this.searchExcludeTags, neededFileCount, this.filters);\n await this.fetchFileList();\n }\n this.currentPage = Math.min(targetPage, this.totalPages);\n } catch (error) {\n this.$message.error(this.$t('dashboard.loadDataFailed'));\n } finally {\n this.loading = false;\n }\n },\n // 判断是否为文件夹\n isFolder(item) {\n // 如果是已经标记为文件夹的项目,直接返回true\n if (item.isFolder) {\n return true;\n }\n\n // 获取真实的文件路径(去除URL前缀)\n let path = item.name;\n if (path.startsWith('http')) {\n path = path.split('/file/')[1];\n }\n\n // 如果文件名包含'/',需要判断是否是当前路径下的文件\n if (path && path.includes('/')) {\n // 获取相对于当前路径的部分\n const relativePath = this.currentPath ? path.substring(this.currentPath.length) : path;\n\n // 如果在根目录,第一个斜杠前的部分就是文件夹\n if (this.currentPath === '') {\n return !path.split('/')[0].includes('.');\n }\n\n // 如果在子文件夹中,检查相对路径是否还包含其他文件夹\n return relativePath.includes('/');\n }\n return false;\n },\n // 获取文件夹名称\n getFolderName(path) {\n let folderName = '';\n // 如果是文件夹路径,只返回最后一级文件夹名\n if (path && path.includes('/')) {\n const parts = path.split('/');\n // 如果是根目录下的文件夹\n if (this.currentPath === '') {\n folderName = parts[0];\n } else {\n // 如果是子文件夹\n const relativePath = path.substring(this.currentPath.length);\n folderName = relativePath.split('/')[0];\n }\n } else {\n folderName = path;\n }\n const maxLength = 20; // Adjust max length as needed\n if (folderName.length > maxLength) {\n const startLength = Math.floor((maxLength - 3) / 2);\n const endLength = Math.ceil((maxLength - 3) / 2);\n return `${folderName.substring(0, startLength)}...${folderName.substring(folderName.length - endLength)}`;\n }\n return folderName;\n },\n // 获取文件名称(去除路径和URL前缀)\n getFileName(path) {\n let fileName = path.split('/').pop();\n const maxLength = 20; // Adjust max length as needed, ensure it fits in one line\n if (fileName.length > maxLength) {\n const startLength = Math.floor((maxLength - 3) / 2);\n const endLength = Math.ceil((maxLength - 3) / 2);\n return `${fileName.substring(0, startLength)}...${fileName.substring(fileName.length - endLength)}`;\n }\n return fileName;\n },\n // 获取文件名前半部分(用于中间省略效果)\n getFileNameStart(name) {\n if (!name) return '';\n // 如果文件名较短,返回全部\n if (name.length <= 30) return name;\n // 保留开头部分(约60%的长度用于显示前半部分)\n const dotIndex = name.lastIndexOf('.');\n if (dotIndex > 0) {\n // 有扩展名的情况:返回文件名主体部分\n const baseName = name.substring(0, dotIndex);\n const keepLength = Math.min(baseName.length, Math.floor(name.length * 0.6));\n return baseName.substring(0, keepLength);\n }\n // 无扩展名的情况\n return name.substring(0, Math.floor(name.length * 0.6));\n },\n // 获取文件名后半部分(用于中间省略效果)\n getFileNameEnd(name) {\n if (!name) return '';\n // 如果文件名较短,返回空\n if (name.length <= 30) return '';\n // 保留末尾部分(包含扩展名)\n const dotIndex = name.lastIndexOf('.');\n if (dotIndex > 0) {\n // 有扩展名的情况:返回最后几个字符 + 扩展名\n const ext = name.substring(dotIndex);\n const baseName = name.substring(0, dotIndex);\n const keepLength = Math.min(8, Math.floor(baseName.length * 0.2));\n return '…' + baseName.substring(baseName.length - keepLength) + ext;\n }\n // 无扩展名的情况\n const keepLength = Math.min(10, Math.floor(name.length * 0.3));\n return '…' + name.substring(name.length - keepLength);\n },\n // 进入文件夹\n enterFolder(folderPath) {\n this.currentPage = 1;\n // 确保路径末尾有 '/'\n this.currentPath = folderPath + (folderPath.endsWith('/') ? '' : '/');\n // 刷新文件列表,到指定currentPath下\n this.refreshFileList();\n },\n // 导航到指定文件夹\n navigateToFolder(path) {\n this.currentPage = 1;\n // 确保空路径时不添加 '/'\n this.currentPath = path ? path + (path.endsWith('/') ? '' : '/') : '';\n // 刷新文件列表,到指定currentPath下\n this.refreshFileList();\n },\n // 获取文件列表\n async fetchFileList() {\n this.loading = true;\n try {\n // 从本地存储获取数据\n const data = fileManager.getLocalFileList();\n\n // 解析返回的数据\n const folders = new Set(data.directories || []);\n const files = data.files || [];\n\n // 处理文件夹数据\n const folderItems = Array.from(folders).map(folder => ({\n name: folder,\n isFolder: true,\n selected: false,\n metadata: {\n FileName: folder.split('/').pop()\n }\n }));\n\n // 处理文件数据\n const fileItems = files.map(file => ({\n name: file.name,\n isFolder: false,\n selected: false,\n metadata: file.metadata\n }));\n\n // 更新表格数据\n this.tableData = [...folderItems, ...fileItems];\n\n // 更新统计信息\n this.updateStats(data.totalCount, true);\n\n // 更新直接文件和文件夹数量\n this.directFileCount = data.directFileCount || 0;\n this.directFolderCount = data.directFolderCount || 0;\n } catch (error) {\n console.error('Error fetching file list:', error);\n this.$message.error(this.$t('dashboard.fetchFileListFailed'));\n } finally {\n this.loading = false;\n }\n },\n // 刷新文件列表\n async refreshFileList() {\n this.refreshLoading = true;\n this.loading = true;\n try {\n // 传递标签参数和筛选参数到后端\n const success = await fileManager.refreshFileList(this.currentPath, this.searchKeywords, this.searchIncludeTags, this.searchExcludeTags, this.filters);\n if (success) {\n await this.fetchFileList();\n } else {\n throw new Error('Refresh failed');\n }\n } catch (error) {\n // 认证失败由 fetchWithAuth 统一处理跳转,不重复提示\n if (!error.message?.includes('Unauthorized') && this.$store.state.adminLoggedIn) {\n console.error('Error refreshing file list:', error);\n this.$message.error(this.$t('dashboard.refreshFailed'));\n }\n } finally {\n this.refreshLoading = false;\n this.loading = false;\n }\n },\n // 刷新本地文件列表\n async refreshLocalFileList() {\n this.refreshLoading = true;\n this.loading = true;\n try {\n await this.fetchFileList();\n } catch (error) {\n console.error('Error refreshing local file list:', error);\n this.$message.error(this.$t('dashboard.refreshFailed'));\n } finally {\n this.refreshLoading = false;\n this.loading = false;\n }\n },\n // Tag management methods\n handleTagManagement(fileId) {\n this.currentTagFile = fileId;\n this.showTagDialog = true;\n },\n handleBatchTagManagement() {\n if (this.selectedFiles.length === 0) {\n this.$message.warning(this.$t('dashboard.selectFilesFirst'));\n return;\n }\n this.showBatchTagDialog = true;\n },\n handleTagsUpdated(tags) {\n this.handleBatchTagsUpdated([{\n fileId: this.currentTagFile,\n tags,\n saved: true\n }]);\n },\n handleBatchTagsUpdated(results) {\n const updates = new Map(results.filter(result => result.saved).map(result => [result.fileId, result.tags]));\n for (const file of this.tableData) {\n if (updates.has(file.name)) file.metadata = {\n ...file.metadata,\n Tags: updates.get(file.name)\n };\n }\n if (this.detailFile && updates.has(this.detailFile.name)) {\n this.detailFile.metadata = {\n ...this.detailFile.metadata,\n Tags: updates.get(this.detailFile.name)\n };\n }\n const cached = fileManager.getLocalFileList();\n for (const file of cached.files || []) {\n if (updates.has(file.name)) file.metadata = {\n ...file.metadata,\n Tags: updates.get(file.name)\n };\n }\n fileManager.updateFileListCache(cached);\n },\n handleMetadataUpdated(fileId, updatedMetadata) {\n // 更新 tableData 中对应文件的 metadata\n const fileIndex = this.tableData.findIndex(f => f.name === fileId);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata = {\n ...this.tableData[fileIndex].metadata,\n ...updatedMetadata\n };\n }\n // 如果 detailFile 正在显示该文件,同步更新 detailFile\n if (this.detailFile && this.detailFile.name === fileId) {\n this.detailFile.metadata = {\n ...this.detailFile.metadata,\n ...updatedMetadata\n };\n }\n },\n handleFileRenamed(oldFileId, newFileId, updatedMetadata) {\n // 更新 tableData 中对应文件的 name(File_ID)和 metadata\n const fileIndex = this.tableData.findIndex(f => f.name === oldFileId);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].name = newFileId;\n this.tableData[fileIndex].metadata = {\n ...this.tableData[fileIndex].metadata,\n ...updatedMetadata\n };\n }\n // 更新 detailFile 引用并关闭/重新打开详情弹窗以刷新链接\n if (this.detailFile && this.detailFile.name === oldFileId) {\n this.detailFile.name = newFileId;\n this.detailFile.metadata = {\n ...this.detailFile.metadata,\n ...updatedMetadata\n };\n // 关闭详情弹窗,然后在下一个 tick 重新打开以刷新所有链接\n this.showdetailDialog = false;\n this.$nextTick(() => {\n this.showdetailDialog = true;\n });\n }\n },\n // 生成单个文件链接\n generateFileLink(key, metadata) {\n const isExternal = metadata?.Channel === 'External';\n const baseUrl = isExternal ? metadata?.ExternalLink : `${this.rootUrl}${key}`;\n const fileName = metadata?.FileName || key;\n switch (this.defaultUrlFormat) {\n case 'originUrl':\n return baseUrl;\n case 'mdUrl':\n return `![${fileName}](${baseUrl})`;\n case 'htmlUrl':\n return `\"${fileName}\"`;\n case 'bbUrl':\n return `[img]${baseUrl}[/img]`;\n case 'tgId':\n return metadata?.TgFileId || '';\n case 's3Location':\n return metadata?.S3Location || '';\n default:\n return baseUrl;\n }\n },\n // 复制文件夹中所有文件的链接\n async handleFolderCopy(folderName) {\n // 显示加载状态\n const loading = this.$loading({\n lock: true,\n text: this.$t('dashboard.fetchingFileList')\n });\n try {\n // 调用 list API 递归获取文件夹内所有文件\n const response = await fetchWithAuth(`/api/manage/list?dir=${encodeURIComponent(folderName)}&recursive=true&count=-1`, {\n method: 'GET'\n });\n const data = await response.json();\n loading.close();\n if (!data.files || data.files.length === 0) {\n this.$message.warning(this.$t('dashboard.folderEmptyNoLinks'));\n return;\n }\n\n // 根据当前链接格式生成所有文件链接\n const links = data.files.map(file => {\n return this.generateFileLink(file.name, file.metadata);\n }).filter(link => link);\n if (links.length === 0) {\n this.$message.warning(this.$t('dashboard.noLinksAvailable'));\n return;\n }\n\n // 复制到剪贴板\n const text = links.join('\\n');\n if (navigator.clipboard) {\n await navigator.clipboard.writeText(text);\n this.$message.success(this.$t('dashboard.copiedFileLinks', {\n count: links.length\n }));\n } else {\n this.copyToClipboardFallback(text);\n this.$message.success(this.$t('dashboard.copiedFileLinks', {\n count: links.length\n }));\n }\n } catch (error) {\n loading.close();\n console.error('Copy folder links failed:', error);\n this.$message.error(this.$t('dashboard.copyFolderLinksFailed'));\n }\n }\n },\n mounted() {\n // 初始化背景图\n this.initializeBackground('adminBkImg', '.container', false, true);\n this.updateResponsivePageSize();\n window.addEventListener('resize', this.updateResponsivePageSize);\n this.loading = true;\n // 路由守卫已通过 /api/auth/sessionCheck 验证认证状态\n this.showLogoutButton = this.$store.state.adminLoggedIn;\n // 首次加载时刷新文件列表\n this.refreshFileList().then(() => {\n // 获取所有渠道名称\n return this.extractChannelNames();\n }).catch(err => {\n if (err.message !== 'Unauthorized') {\n this.$message.error(this.$t('dashboard.syncDataError'));\n }\n }).finally(() => {\n this.loading = false;\n });\n\n // 读取自定义链接设置项\n this.customUrlPrefix = this.adminUrlSettings.customUrlPrefix;\n this.useCustomUrl = this.adminUrlSettings.useCustomUrl;\n\n // 恢复视图模式偏好\n const savedViewMode = localStorage.getItem('viewMode');\n if (savedViewMode === 'card' || savedViewMode === 'list') {\n this.viewMode = savedViewMode;\n }\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.updateResponsivePageSize);\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./AdminDashBoard.vue?vue&type=template&id=8a33a938&scoped=true\"\nimport script from \"./AdminDashBoard.vue?vue&type=script&lang=js\"\nexport * from \"./AdminDashBoard.vue?vue&type=script&lang=js\"\n\nimport \"@/styles/settings-dialog.css?vue&type=style&index=0&lang=css&external\"\nimport \"@/styles/admin-common.css?vue&type=style&index=1&id=8a33a938&scoped=true&lang=css&external\"\nimport \"./AdminDashBoard.vue?vue&type=style&index=2&id=8a33a938&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-8a33a938\"]])\n\nexport default __exports__","/**\r\n * 路径验证器模块\r\n * 提供共享的文件夹路径验证功能,供 AdminDashBoard 和 UploadHome 共同使用\r\n */\r\nimport i18n from '@/locales'\r\n\r\n/**\r\n * 验证文件夹路径的合法性\r\n * @param {string} path - 要验证的路径\r\n * @param {{ strict?: boolean }} options - 选项,strict 为 true 时检查末尾单独的 \".\"(默认 true)\r\n * @returns {{ valid: boolean, error?: string }} 验证结果\r\n */\r\nexport function validateFolderPath(path, { strict = true } = {}) {\r\n // 如果路径为空或仅为空白字符,返回有效(表示根目录)\r\n if (!path || path.trim() === '') {\r\n return { valid: true };\r\n }\r\n \r\n // 如果路径仅为 \"/\",返回有效(表示根目录)\r\n if (path === '/') {\r\n return { valid: true };\r\n }\r\n \r\n // 检查路径是否以 \"/\" 开头\r\n if (!path.startsWith('/')) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.pathMustStartWithSlash') \r\n };\r\n }\r\n\r\n // 检查路径穿越:包含 .. 的路径段\r\n if (/(?:^|\\/)\\.\\.(\\/|$)/.test(path) || path.includes('..')) {\r\n return {\r\n valid: false,\r\n error: i18n.global.t('validation.pathTraversalNotAllowed')\r\n };\r\n }\r\n\r\n // 检查路径中单独的 . 段\r\n // strict 模式检查 /./ 和末尾 /.,非 strict 模式仅检查 /./ 以允许用户继续输入如 /.123\r\n const dotPattern = strict ? /\\/\\.(\\/|$)/ : /\\/\\.\\//;\r\n if (dotPattern.test(path)) {\r\n return {\r\n valid: false,\r\n error: i18n.global.t('validation.singleDotNotAllowed')\r\n };\r\n }\r\n\r\n // 检查路径是否包含连续的斜杠\r\n if (path.includes('//')) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.consecutiveSlashNotAllowed') \r\n };\r\n }\r\n \r\n // 检查路径是否包含非法字符\r\n // 非法字符包括: \\ : * ? \" ' < > | 空格 ( ) [ ] { } # % ^ ` ~ ; @ & = + $ ,\r\n const invalidChars = /[\\\\:\\*\\?\"'<>\\| \\(\\)\\[\\]\\{\\}#%\\^`~;@&=\\+\\$,]/;\r\n if (invalidChars.test(path)) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.invalidCharacters') \r\n };\r\n }\r\n \r\n return { valid: true };\r\n}\r\n","import fetchWithAuth from '@/utils/fetchWithAuth';\n\nexport const MAX_PREVIEW_BYTES = 256 * 1024;\nconst MAX_ORIGINAL_BYTES = 20 * 1024 * 1024;\nfunction checkAbort(signal) {\n if (signal?.aborted) throw new DOMException('Cancelled', 'AbortError');\n}\n\nexport function aiErrorText(error, translate, hasTranslation) {\n const code = error?.code || error?.message;\n const key = `aiErrors.${code}`;\n const message = hasTranslation(key)\n ? translate(key, { status: error.details?.status || error.status })\n : translate('aiErrors.NETWORK_ERROR');\n const details = ['code', 'type', 'requestId'].filter(field => error?.details?.[field])\n .map(field => `${translate(`aiErrors.${field}`)}: ${error.details[field]}`);\n return details.length ? `${message} (${details.join(', ')})` : message;\n}\n\nconst errorResult = error => ({ code: error.code || error.message, message: error.message, ...(error.details ? { details: error.details } : {}) });\n\nexport async function apiJSON(url, options = {}) {\n const response = await fetchWithAuth(url, options);\n let data;\n try { data = await response.json(); }\n catch {\n const error = new Error(`HTTP ${response.status}`);\n error.code = response.status === 401 ? 'AUTH_REQUIRED' : response.ok ? 'INVALID_RESPONSE' : 'HTTP_ERROR';\n error.details = { status: response.status };\n throw error;\n }\n if (!data || typeof data !== 'object' || Array.isArray(data)) {\n const error = new Error('INVALID_RESPONSE');\n error.code = 'INVALID_RESPONSE';\n throw error;\n }\n if (!response.ok) {\n const error = new Error(data.error?.message || data.message || `HTTP ${response.status}`);\n error.code = data.error?.code || (response.status === 401 ? 'AUTH_REQUIRED' : 'HTTP_ERROR');\n error.details = { status: response.status, ...data.error?.details };\n throw error;\n }\n return data;\n}\n\nexport async function makeImagePreview(file, signal) {\n checkAbort(signal);\n const type = file.metadata?.FileType?.toLowerCase();\n if (type && !['image/jpeg', 'image/png', 'image/webp', 'image/avif', 'image/gif'].includes(type)) throw new Error('UNSUPPORTED_IMAGE');\n if (Number(file.metadata?.FileSizeBytes) > MAX_ORIGINAL_BYTES) throw new Error('IMAGE_TOO_LARGE');\n const path = file.name.split('/').map(encodeURIComponent).join('/');\n const response = await fetchWithAuth(`/file/${path}`, { signal });\n if (!response.ok) {\n const error = new Error(`HTTP ${response.status}`);\n error.code = 'IMAGE_FETCH_FAILED';\n error.details = { status: response.status };\n throw error;\n }\n if (Number(response.headers.get('Content-Length')) > MAX_ORIGINAL_BYTES) {\n await response.body?.cancel();\n throw new Error('IMAGE_TOO_LARGE');\n }\n const reader = response.body.getReader();\n const chunks = [];\n let size = 0;\n try {\n while (true) {\n checkAbort(signal);\n const { value, done } = await reader.read();\n if (done) break;\n size += value.byteLength;\n if (size > MAX_ORIGINAL_BYTES) { await reader.cancel(); throw new Error('IMAGE_TOO_LARGE'); }\n chunks.push(value);\n }\n } finally { reader.releaseLock(); }\n const blob = new Blob(chunks, { type: response.headers.get('Content-Type') || type });\n checkAbort(signal);\n let image, objectUrl;\n try {\n if (typeof createImageBitmap === 'function') image = await createImageBitmap(blob);\n else {\n objectUrl = URL.createObjectURL(blob);\n image = new Image();\n await new Promise((resolve, reject) => {\n image.onload = resolve;\n image.onerror = () => reject(new Error('UNSUPPORTED_IMAGE'));\n image.src = objectUrl;\n });\n }\n checkAbort(signal);\n const width = image.width || image.naturalWidth;\n const height = image.height || image.naturalHeight;\n if (!width || !height) throw new Error('UNSUPPORTED_IMAGE');\n const canvas = document.createElement('canvas');\n const scale = Math.min(1, 768 / Math.max(width, height));\n canvas.width = Math.max(1, Math.round(width * scale));\n canvas.height = Math.max(1, Math.round(height * scale));\n const context = canvas.getContext('2d');\n context.fillStyle = '#ffffff';\n context.fillRect(0, 0, canvas.width, canvas.height);\n context.drawImage(image, 0, 0, canvas.width, canvas.height);\n for (const quality of [0.8, 0.6, 0.4]) {\n checkAbort(signal);\n const preview = await new Promise(resolve => canvas.toBlob(resolve, 'image/jpeg', quality));\n if (preview && preview.size <= MAX_PREVIEW_BYTES && (preview.size <= 128 * 1024 || quality === 0.4)) return preview;\n }\n throw new Error('PREVIEW_TOO_LARGE');\n } catch (error) {\n if (signal?.aborted || error.name === 'AbortError' || error.message === 'PREVIEW_TOO_LARGE') throw error;\n throw new Error('UNSUPPORTED_IMAGE');\n } finally {\n image?.close?.();\n if (objectUrl) URL.revokeObjectURL(objectUrl);\n }\n}\n\nexport async function generateTagSuggestions(files, { signal, batchSize = 3, onResult, prepare = makeImagePreview } = {}) {\n batchSize = Math.max(1, Math.min(3, batchSize));\n const results = [];\n for (let start = 0; start < files.length; start += batchSize) {\n checkAbort(signal);\n const prepared = [];\n // Limit browser memory: only retain previews for the current small batch.\n for (const file of files.slice(start, start + batchSize)) {\n try { prepared.push({ file, image: await prepare(file, signal) }); }\n catch (error) {\n if (signal?.aborted || error.name === 'AbortError') throw error;\n const result = { fileId: file.name, error: errorResult(error) };\n results.push(result); onResult?.(result);\n }\n }\n checkAbort(signal);\n if (!prepared.length) continue;\n const form = new FormData();\n form.append('items', JSON.stringify(prepared.map(item => ({ fileId: item.file.name }))));\n prepared.forEach((item, index) => form.append(`image${index}`, item.image, 'preview.jpg'));\n try {\n const data = await apiJSON('/api/manage/ai/tags', { method: 'POST', body: form, signal });\n checkAbort(signal);\n if (!Array.isArray(data.results) || data.results.length !== prepared.length) throw new Error('INVALID_RESPONSE');\n for (let index = 0; index < prepared.length; index++) {\n const result = data.results[index];\n if (!result || result.fileId !== prepared[index].file.name || (!result.error && (!Array.isArray(result.tags) || result.tags.some(tag => typeof tag !== 'string') || !/^[a-f0-9]{64}$/.test(result.sourceIdentity)))) throw new Error('INVALID_RESPONSE');\n }\n for (const result of data.results) { results.push(result); onResult?.(result); }\n } catch (error) {\n if (signal?.aborted || error.name === 'AbortError') throw error;\n for (const item of prepared) {\n const result = { fileId: item.file.name, error: errorResult(error) };\n results.push(result); onResult?.(result);\n }\n }\n }\n return results;\n}\n\nexport async function applyTagSuggestions(items, onResult) {\n const results = [];\n for (let start = 0; start < items.length; start += 50) {\n const batch = items.slice(start, start + 50);\n try {\n const data = await apiJSON('/api/manage/tags/apply', {\n method: 'POST', headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ items: batch })\n });\n if (!Array.isArray(data.results) || data.results.length !== batch.length || data.results.some((result, index) => !result || result.fileId !== batch[index].fileId || typeof result.saved !== 'boolean' || (result.saved && (!Array.isArray(result.tags) || result.tags.some(tag => typeof tag !== 'string'))))) {\n throw new Error('INVALID_RESPONSE');\n }\n for (const result of data.results) { results.push(result); onResult?.(result); }\n } catch (error) {\n for (const item of batch) {\n const result = { fileId: item.fileId, saved: false, error: errorResult(error) };\n results.push(result); onResult?.(result);\n }\n }\n }\n return results;\n}\n"],"names":["_hoisted_1","class","_hoisted_2","_hoisted_3","key","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","_component_el_tree","_component_el_popover","_component_el_drawer","_directive_loading","isDesktop","visible","popoverVisible","$event","placement","width","trigger","transition","reference","onClick","$slots","undefined","default","error","icon","type","size","fetchDirectoryTree","$t","_","ref","data","treeData","props","treeProps","currentDirectory","onNodeClick","handleNodeClick","node","path","expanded","name","loading","args","openDrawer","modelValue","drawerVisible","direction","title","String","source","validator","value","includes","children","label","windowWidth","window","innerWidth","computed","this","watch","newVal","setTimeout","$refs","treeRef","store","nodesMap","treeRefMobile","$nextTick","setCurrentKey","mounted","addEventListener","handleResize","beforeUnmount","removeEventListener","methods","response","fetchWithAuth","method","ok","status","json","axios","get","withAuthCode","tree","err","console","startsWith","$emit","__exports__","e","module","exports","s","a","o","h","u","r","t","l","n","Error","code","i","call","length","d","c","p","encode","f","getTypeOf","charCodeAt","push","charAt","join","decode","substr","replace","uint8array","Uint8Array","Array","indexOf","compressedSize","uncompressedSize","crc32","compression","compressedContent","prototype","getContentWorker","Promise","resolve","pipe","uncompressWorker","on","streamInfo","data_length","getCompressedWorker","withStreamInfo","createWorkerFrom","compressWorker","STORE","magic","DEFLATE","base64","binary","dir","createFolders","date","compressionOptions","comment","unixPermissions","dosPermissions","lie","Uint16Array","Uint32Array","_pako","_pakoAction","_pakoOptions","meta","inherits","processChunk","_createPako","transformTo","flush","cleanUp","raw","level","onData","pako","A","fromCharCode","file","O","utf8encode","I","m","g","b","v","y","w","k","x","S","z","C","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCFullYear","getUTCMonth","getUTCDate","B","E","fileRecord","R","LOCAL_FILE_HEADER","dirRecord","CENTRAL_FILE_HEADER","bytesWritten","zipComment","zipPlatform","encodeFileName","streamFiles","accumulate","contentBuffer","dirRecords","currentSourceOffset","entriesCount","currentFile","_sources","percent","openedSource","closedSource","DATA_DESCRIPTOR","shift","CENTRAL_DIRECTORY_END","prepareNextSource","previous","isPaused","pause","resume","registerPrevious","end","generatedError","lock","generateWorker","platform","forEach","options","_compressWorker","arguments","files","Object","create","root","clone","loadAsync","support","defaults","version","external","decompressed","extend","checkCRC32","optimizedBinaryString","decodeFileName","utf8decode","isNode","isStream","reject","prepareContent","then","load","all","fileNameStr","fileCommentStr","unsafeOriginalName","_upstreamEnded","_bindStream","_stream","Readable","_helper","emit","_read","Buffer","newBufferFrom","from","allocBuffer","alloc","fill","isBuffer","Date","toUpperCase","parseInt","slice","substring","lastIndexOf","toString","filter","test","folder","remove","generate","generateInternalStream","mimeType","toLowerCase","checkSupport","generateAsync","generateNodeStream","toNodejsStream","stream","byteAt","zero","lastIndexOfSignature","readAndCheckSignature","readData","checkOffset","index","checkIndex","setIndex","skip","readInt","readString","readDate","UTC","subarray","ZIP64_CENTRAL_DIRECTORY_LOCATOR","ZIP64_CENTRAL_DIRECTORY_END","destType","propName","dataIsReady","max","_tickScheduled","_tickAndRepeat","delay","isFinished","_tick","Math","min","extraStreamInfo","isLocked","_listeners","mergeStreamInfo","hasOwnProperty","nodestream","_internalType","_outputType","_mimeType","newBlob","concat","apply","set","_worker","objectMode","array","string","arraybuffer","ArrayBuffer","nodebuffer","blob","Blob","self","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","append","getBlob","leftOver","applyFromCharCode","Utf8DecodeWorker","Utf8EncodeWorker","stringifyByChunk","stringifyByChar","applyCanBeUsed","floor","buffer","byteLength","split","pop","MAX_VALUE_16BITS","MAX_VALUE_32BITS","pretty","setImmediate","FileReader","onload","target","result","onerror","readAsArrayBuffer","setimmediate","loadOptions","checkSignature","reader","isSignature","readBlockEndOfCentral","diskNumber","diskWithCentralDirStart","centralDirRecordsOnThisDisk","centralDirRecords","centralDirSize","centralDirOffset","zipCommentLength","readBlockZip64EndOfCentral","zip64EndOfCentralSize","zip64ExtensibleData","id","readBlockZip64EndOfCentralLocator","diskWithZip64CentralDirStart","relativeOffsetEndOfZip64CentralDir","disksCount","readLocalFiles","localHeaderOffset","readLocalPart","handleUTF8","processAttributes","readCentralDir","zip64","readCentralPart","readEndOfCentral","abs","prepareReader","isEncrypted","bitFlag","useUTF8","fileNameLength","fileName","compressionMethod","versionMadeBy","extraFieldsLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","readExtraFields","parseZIP64ExtraField","fileComment","extraFields","findExtraFieldUnicodePath","findExtraFieldUnicodeComment","_data","_dataBinary","internalStream","_decompressWorker","async","nodeStream","MutationObserver","WebKitMutationObserver","document","createTextNode","observe","characterData","MessageChannel","createElement","onreadystatechange","parentNode","removeChild","documentElement","appendChild","port1","onmessage","port2","postMessage","global","TypeError","state","queue","outcome","promise","onFulfilled","callFulfilled","otherCallFulfilled","onRejected","callRejected","otherCallRejected","finally","constructor","catch","race","immediate","assign","chunkSize","windowBits","memLevel","strategy","to","gzip","msg","ended","chunks","strm","avail_out","deflateInit2","header","deflateSetHeader","dictionary","string2buf","deflateSetDictionary","_dict_set","input","next_in","avail_in","output","Buf8","next_out","deflate","onEnd","buf2binstring","shrinkBuf","deflateEnd","flattenChunks","Deflate","deflateRaw","inflateInit2","Z_OK","inflateGetHeader","Z_FINISH","Z_NO_FLUSH","binstring2buf","inflate","Z_NEED_DICT","inflateSetDictionary","Z_BUF_ERROR","Z_STREAM_END","Z_SYNC_FLUSH","utf8border","buf2string","arraySet","inflateEnd","Inflate","inflateRaw","ungzip","Int32Array","setTyped","Buf16","Buf32","Z_PARTIAL_FLUSH","Z_FULL_FLUSH","Z_BLOCK","Z_TREES","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","Z_BINARY","Z_TEXT","Z_UNKNOWN","Z_DEFLATED","T","D","F","pending","pending_buf","pending_out","total_out","N","_tr_flush_block","block_start","strstart","U","P","L","max_chain_length","prev_length","nice_match","w_size","w_mask","prev","good_match","lookahead","match_start","j","window_size","hash_size","head","wrap","adler","total_in","insert","ins_h","hash_shift","hash_mask","Z","match_length","_tr_tally","max_lazy_match","last_lit","W","prev_match","match_available","M","good_length","max_lazy","nice_length","max_chain","func","H","pending_buf_size","gzhead","gzindex","last_flush","w_bits","hash_bits","dyn_ltree","dyn_dtree","bl_tree","l_desc","d_desc","bl_desc","bl_count","heap","heap_len","heap_max","depth","l_buf","lit_bufsize","d_buf","opt_len","static_len","matches","bi_buf","bi_valid","G","data_type","_tr_init","K","Y","deflateInit","deflateReset","deflateResetKeep","text","hcrc","extra","time","os","_tr_align","_tr_stored_block","deflateInfo","xflags","extra_len","done","dmax","wsize","whave","wnext","hold","bits","lencode","distcode","lenbits","distbits","mode","sane","last","havedict","flags","check","total","wbits","offset","ncode","nlen","ndist","have","next","lens","work","lendyn","distdyn","back","was","inflateReset","inflateReset2","inflateResetKeep","inflateInit","inflateInfo","static_tree","extra_bits","extra_base","elems","max_length","has_stree","dyn_tree","max_code","stat_desc","X","V","q","J","getPrototypeOf","process","nextTick","importScripts","random","attachEvent","Function","callback","clearImmediate","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_component_el_input","_component_DirectoryTreePicker","_component_el_dialog","dialogVisible","isBatchMove","onClose","handleClose","footer","handleConfirm","targetPath","placeholder","prepend","onSelect","handleDirectorySelect","showTreePicker","treeError","handleTreeNodeClick","treeLoading","components","DirectoryTreePicker","Boolean","initialPath","emits","val","close","active","currentPath","navigate","pathParts","style","paddingLeft","goBack","isFolder","handleAction","action","_hoisted_19","_hoisted_20","_component_el_tooltip","_component_el_progress","_component_el_tag","_component_el_alert","_component_el_check_tag","content","available","generating","disabled","saving","loadingConfig","rows","configError","plain","$router","completed","workTotal","cancel","percentage","round","row","fileId","applied","effect","errorText","closable","selected","tag","tags","checked","onChange","toggleTag","saveError","count","selectedCount","retryFiles","required","batchSize","fileSignature","JSON","stringify","map","reduce","some","config","enabled","maxBatchSize","find","metadata","FileName","$te","item","controller","abort","retry","signature","AbortController","signal","onResult","aborted","findIndex","splice","message","$message","sourceIdentity","repairIndex","indexPending","saved","_component_el_tab_pane","_component_AITagPanel","_component_el_tabs","dialogWidth","beforeClose","pendingIndexIds","aiBusy","activeTab","beforeTabChange","fileCount","inputTag","onKeyup","handleAddInputTag","onInput","handleInputChange","clearable","showSuggestions","suggestions","selectSuggestion","tagsToAdd","removeFromToAdd","executeAddTags","commonTags","handleRemoveCommonTag","description","center","handleClearAllTags","lazy","selectedFilesOnly","onBusy","onApplied","handleAIResults","AITagPanel","selectedFiles","debounceTimer","fileIds","loadCommonTags","resetData","newTab","clearTimeout","results","updateSavedTags","Set","add","delete","finishTagOperation","successKey","success","updated","warning","headers","body","repairIndexIds","updates","Map","allTags","Tags","every","trim","fetchSuggestions","prefix","encodeURIComponent","confirm","confirmButtonText","cancelButtonText","executeClearTags","info","_component_Loading","_component_el_icon","handleAddTag","currentTags","handleRemoveTag","popularTags","handleAddPopularTag","loadingPopularTags","aiFiles","Loading","fileMetadata","loadFileTags","loadPopularTags","_component_el_image","_component_el_descriptions_item","_component_el_descriptions","_component_el_form_item","_component_el_form","isEditing","startEdit","openRenameDialog","saveMetadata","editSaving","cancelEdit","onTabClick","handleTabClick","urls","originUrl","readonly","handleUrlClick","mdUrl","htmlUrl","bbUrl","TgFileId","tgId","S3Location","S3CdnFileUrl","isVideo","src","fileLink","autoplay","muted","loop","openImageLink","isAudio","controls","isImage","fit","border","column","descColumn","editForm","FileType","fileSizeDisplay","imageDimensions","Width","Height","orientationIcon","uploadTime","Channel","ChannelName","accessTagType","accessType","Label","UploadIP","UploadAddress","showRenameDialog","closeRenameDialog","submitRename","renameSaving","renameValidation","valid","onSubmit","renameForm","newFileId","validateRenameInput","INVALID_CHARS","validateFileId","currentFileId","fileType","endsWith","TimeStamp","toLocaleString","listType","ListType","height","ratio","sizeBytes","FileSizeBytes","sizeMB","FileSize","toFixed","handleVideoClick","video","paused","play","select","navigator","clipboard","writeText","open","oldFileId","disableTooltip","handleClear","actions","command","className","Number","_component_el_checkbox","onTouchstart","onTouchend","onTouchmove","localSelected","handleSelectChange","handlePreviewClick","preload","decoding","displayName","fileNameStart","fileNameEnd","tagIndex","background","getTagColor","channelTag","uploadDate","tagColors","parts","getFileName","uploaded","toLocaleDateString","_component_el_card","videoLoading","videoError","onMouseenter","handleVideoHover","onMouseleave","onFullscreenchange","handleFullscreenChange","onWebkitfullscreenchange","onLoadeddata","onError","handleVideoError","previewSrcList","requestFullscreen","webkitRequestFullscreen","mozRequestFullScreen","msRequestFullscreen","isFullscreen","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","currentTime","isEnter","folderName","showActions","variant","indeterminate","role","ariaChecked","tabindex","handleClick","onKeydown","markIcon","event","_hoisted_21","_hoisted_22","_component_el_badge","_component_el_checkbox_group","_component_el_dropdown_menu","_component_el_dropdown","dropdown","localFilters","accessStatus","handleFilterChange","accessStatusOptions","option","listTypeOptions","labelOptions","fileTypeOptions","channel","channelOptions","channelNameOptions","channelName","groupedChannelNames","group","typeLabel","channels","clearFilters","activeFilterCount","hidden","filters","values","arr","groups","handler","newFilters","isArray","deep","viewBox","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_42","_hoisted_43","_hoisted_44","_hoisted_45","_hoisted_46","_hoisted_47","_hoisted_48","_hoisted_49","_hoisted_50","_hoisted_51","_hoisted_52","_hoisted_53","_hoisted_54","_hoisted_55","_hoisted_56","_component_DashboardTabs","_component_FilterDropdown","_component_el_header","_component_DashboardCheckbox","_component_el_radio_button","_component_el_radio_group","_component_el_divider","_component_el_dropdown_item","_component_el_breadcrumb_item","_component_el_breadcrumb","_component_SkeletonLoader","_component_FolderCard","_component_FileCard","_component_FileListItem","_component_el_pagination","_component_el_main","_component_el_container","_component_BatchActionBar","_component_FileDetailDialog","_component_el_radio","_component_el_switch","_component_TagManagementDialog","_component_BatchTagDialog","_component_MobileActionSheet","_component_MobileDirectoryDrawer","_component_MoveFileDialog","tempSearch","handleSearch","suffix","showUrlDialog","handleLogout","selectPage","selectedPageFiles","handleSelectPage","viewMode","setViewMode","onCommand","setSortField","sortOrder","setSortOrder","sortField","sortLabel","cx","cy","showMobileDirectoryDrawer","separator","navigateToFolder","isDragging","onTouchstartPassive","handlePageSwipeStart","onTouchendPassive","handlePageSwipeEnd","onTouchcancelPassive","resetPageSwipe","pageSize","paginatedTableData","hasSearchOrFilter","isSearchMode","onEnter","enterFolder","onCopy","handleFolderCopy","onMove","handleMove","onDelete","handleDelete","handleFolderTouchStart","handleTouchEnd","getFileLink","onDetail","openDetailDialog","handleCopy","onDownload","handleDownload","handleTouchStart","isSelectAll","isIndeterminate","handleSelectAllPage","onFolderCopy","position","left","selectionRect","top","layout","filteredTableData","currentPage","pagerCount","onCurrentChange","handlePageChange","refreshFileList","refreshLoading","ceil","loadMoreData","realTotalPages","jumpPage","handleJumpPage","onAction","handleBatchAction","onClear","clearSelection","showdetailDialog","detailFile","allUrl","onTagManagement","handleTagManagement","onBlock","handleBlock","onWhite","handleWhite","handleDetailDelete","onMetadataUpdated","handleMetadataUpdated","onFileRenamed","handleFileRenamed","defaultUrlFormat","useCustomUrl","customUrlPrefix","showTagDialog","currentTagFile","tagFileMetadata","onTagsUpdated","handleTagsUpdated","showBatchTagDialog","handleBatchTagsUpdated","showMobileActionModal","mobileActionIsFolder","getFolderName","mobileActionFile","handleMobileAction","onNavigate","onGoBack","handleGoBack","showMoveDialog","moveTargetPath","onConfirm","confirmMove","FileManager","FILE_LIST_PATH","fileListCache","storageWarningShown","getLocalFileList","fileList","getMutableFileList","directories","localStorage","getItem","parse","createEmptyFileList","updateFileListCache","persisted","persistFileListCache","cacheUpdated","setItem","handleStoragePersistError","warn","removeItem","removeError","ElMessage","i18n","addFile","newFile","addFolder","moveFile","oldPath","newPath","oldFolderIndex","fileIndex","pathArray","newFolder","removeFile","removeFolder","getFilesInFolder","subdirectories","buildFilterParams","params","search","includeTags","excludeTags","url","newFileList","isIndexedResponse","loadMoreFiles","start","moreFiles","fileManager","rectIntersects","rectA","rectB","right","bottom","calcSelectionRect","current","useDragSelect","modes","mainSelector","items","startPoint","preSelectSnapshot","isAppendMode","MOBILE_BREAKPOINT","listenerAttached","EDGE_THRESHOLD","SCROLL_SPEED","autoScrollTimer","savedUserSelect","getActiveConfig","toValue","shouldEnable","syncListenerState","attachContainerListener","cancelDrag","detachContainerListener","isBlankArea","mainArea","closest","itemEl","itemSelector","container","containerRef","contains","interactive","hasAppendModifier","shiftKey","ctrlKey","metaKey","saveSnapshot","currentItems","lastClientY","startAutoScroll","scrollStep","viewportHeight","innerHeight","scrollDelta","scrollBy","updateSelection","requestAnimationFrame","stopAutoScroll","cancelAnimationFrame","disableTextSelection","userSelect","restoreTextSelection","rect","selRect","itemElements","querySelectorAll","itemRect","getBoundingClientRect","itemBounds","intersects","onMouseDown","button","clientX","clientY","onMouseMove","onMouseUp","currentPoint","_event","onWindowResize","onMounted","onBeforeUnmount","SORT_FIELDS","SORT_ORDERS","getStoredSortValue","validValues","fallback","mixins","backgroundManager","directFileCount","directFolderCount","showLogoutButton","tableData","searchKeywords","searchIncludeTags","searchExcludeTags","isUploading","activeUrlTab","mobileActionIndex","longPressTimer","moveFileKey","moveFileIndex","pageSwipeStartX","pageSwipeStartY","pageSwipeStartTime","DashboardTabs","TagManagementDialog","BatchTagDialog","SkeletonLoader","FileCard","FolderCard","FileListItem","FileDetailDialog","BatchActionBar","MobileActionSheet","MobileDirectoryDrawer","DashboardCheckbox","FilterDropdown","MoveFileDialog","LanguageSwitcher","setup","cardContainerRef","listContainerRef","viewModeRef","itemsRef","card","list","totalPages","sortedData","sortData","fullList","labelKeys","rawName","fieldLabel","orderLabel","detailDialogWidth","ExternalLink","rootUrl","tableColumnNum","tablePreviewSpan","userConfig","urlPrefix","location","origin","newData","newFormat","$store","commit","parentPath","colors","formatFileSize","bytes","isNaN","units","searchText","excludeTagRegex","match","includeTagRegex","log","extractChannelNames","typeLabels","telegram","cfr2","s3","discord","huggingface","webdav","entries","channelList","sort","localeCompare","link","href","download","click","tab","$confirm","updateStats","handleBatchDelete","promises","successNum","handleBatchCopy","folders","$loading","allFiles","links","generateFileLink","copyToClipboardFallback","textarea","clip","execCommand","fetchFileList","num","init","field","order","getSizeInBytes","parseSize","parsedValue","isFinite","sizeInBytes","sizeInMegabytes","getValue","RawName","getTime","compare","valA","valB","videoElement","fetch","credentials","authType","handleBatchDownload","handleBatchMove","handleBatchTagManagement","handleBatchBlock","handleBatchWhite","validation","executeBatchMove","executeSingleMove","newKey","tempData","refreshLocalFileList","zip","fileNameCount","downloadPromises","extension","baseName","URL","createObjectURL","flag","videoExtensions","audioExtensions","imageExtensions","filename","page","isMobileViewport","updateResponsivePageSize","nextPageSize","firstVisibleIndex","isSwipeIgnoredTarget","touch","touches","now","changedTouches","deltaX","deltaY","elapsed","targetPage","goToSwipePage","loadMoreDataUntilPage","targetIndex","currentFolderCount","currentFileCount","neededFileCount","relativePath","maxLength","startLength","endLength","getFileNameStart","dotIndex","keepLength","getFileNameEnd","ext","folderPath","folderItems","fileItems","totalCount","adminLoggedIn","has","cached","updatedMetadata","isExternal","baseUrl","initializeBackground","adminUrlSettings","savedViewMode","validateFolderPath","strict","dotPattern","invalidChars","MAX_PREVIEW_BYTES","MAX_ORIGINAL_BYTES","checkAbort","DOMException","aiErrorText","translate","hasTranslation","details","errorResult","apiJSON","makeImagePreview","getReader","read","releaseLock","image","objectUrl","createImageBitmap","Image","naturalWidth","naturalHeight","canvas","scale","context","getContext","fillStyle","fillRect","drawImage","quality","preview","toBlob","revokeObjectURL","generateTagSuggestions","prepare","prepared","form","FormData","applyTagSuggestions","batch"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/787.b5df6f2f.js.map.gz b/frontend-dist/js/787.b5df6f2f.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..2dc33480359cc2cd1381e23cc68e43a007076b33 GIT binary patch literal 161615 zcmV(!K;^$5iwFP!000023hcdETjRRYHvC`qDSf@nL*6snaR!nAVGNu#0Wv`n!W8)a z{C8P(OLa?jLb`jcwfD2%=cGHxvMiNKrJC#i``7#Z>}4<+|Lgy5|M=I#;PL)n|My?R zm-YRF{r_{jd-t&Su=VhNhA;p6@voP@{nyJNj*{p{D~ejtk2H#Y{z#%^ z7$;fF@sH0qN^1$Vm!*A_wWnVHdK5K&q*2nWNtgR5t<|Z=p)_}+wAP^JrZ%^z`G~%A z?2S_Noi_D2)dA0_`P?;Eew;q5- zp5rJPmQAm>_(vm3-edE}v-x8te|(rf=5b-SdX#L(KaR6GT}4qh8+Q_$IljkPm+K!% z6eR=m`|S9~b+!=O@n;PqCQ&l34`YSNvzg%8xmni5kNYTj`0*5HL*JSe{b)qdaU?&h zQPk*W|6X)l_h=BCMX#sHkBca}%0}n_7wS=Rl9=Itw4>xa>)nep3`zR&k8U=#G)nG% z{PcfSqvS5hW`3P*X41*#Ts93?GFCl`%*H1G!EqF|vre<}y1?VdMjRz4J^A!B&aJ~N zz8yvP*{c@@Y(K7|WVh@_y*57^FBse`%yc`BqN>^0s~^Wv@?K61YJ~H;$iNcr(qp2# z)HUz}>=$*kllgg{{X8(6S87c%w1`>;p^j#NbT5vQCV``#P4PNw7{pihTV^TsD5{%5 z9}Qey%&7gE9rYqgjuQFVj*_DjGr_*#)JObdl3}rVrQ9rB`I%X{`R?4j)i{W=xm16A z#8LEVP}YzMJ9DGp}^ttaMluW6r<_5;M@B1)Pv+kMlwbrAnJi;^3G z%DS}mvi(SI1*49muh zo%K6=cXNA=qjZ`m%E;OUXZ929uEDxSn$7DfJAXX`t=D8$wuCV`lD*eWxyVk4PP0LX z^(Irfu!lWrWV<`8-W2YxS)>7mz%|3A4A$mh_RkdCePVX)BU^5=U%4$DOehJRn}(dw zun5SdxaMxEWkez)cILF~m;uk`vd5ohN4j6`uZ)hBvxVihwSxDcu+%r4b_{n2zQ1&fePrjwe=8dQq4-HiwRz@JpttjctaL8NPJ}dpb z&nRJ<5q{IN9wnU@P@=MTga=8KJbdXzpBx!PfBFR?xKCHr*)k$%J35TM_+=v4CR{!K z?CX0W}_n)kCwrVXlog|9xN9NV@ zj20)Aig|Tt(6HK^fMsoDoNtB}HS@S%HftWmJ^4}{vO-%Rn3NJUWJ1MJ*rlC4O@=u6 zS@UjcZiAf^a!H2DaoPP5o$aUQju@3Kywb6`8nQ9c69bTJu~92qP`79H==2vBbSFYU zm!?|JKy+`8tB69C+-gjhZY5jI`(M4948Bn_Th1WfGV6Jem7K{r&K7X)K{g`=wXEYj zuH-=8FjGCv&|uwrT$hy}WiOV3C)q10UaUve{ls8VhGNl~!L~btZujOi4g`O1%m_cT z6K~iHY>Zi7Iuy}wBoqS}|DbQ|${SUONGBQgM`l&&Es#3nT~474;fUVJJYcj z>z*3Yo4lh>c0shp2AYQhbK5i?aqP15I+7RVD$Xw62eT9^{?1~_ve9JbQ#KK*JZ;|hHM2*SwKtX zE|_ch4PC*kENo+jv;Fwh;P){GEoHqkjxULlx_Q6xX4uP3D~{4H z%%vSAQO`%9#PU-W!L@sPetUAb?i?0H$EUdX8&Pr-8OB_IG%7plv>glIYHnkrqe^O7 z*W@y?>~nhlEK52Nv@`P<8wkx}JOZU2fJFkm_K!yW$5k?}8%0%X&n$M!oKth9nd=kR zx*=YrO4g(8IGSt2uzXd19RC>0+;lK3yxg2oHq$f%VPt5u zjF57N>}Q2KWaG%h@eQ*TZ${LSX&8{3X6c89jCXp9D+FF0>O5T4kpZD}(;0MW;tG~w zEU#n;Ig;OxXv%s%;rAq)Z)$|p^jZ;j8Y`G-Pzwb8x3dUvRU=Y6Fi3BKOHVG%1`W{G z$;vkxhS0snK!vR7#J()ozrI`p24w#p(_WvWCBvg6H~&j|N;_5XFk630Bfc3y@Twm# z9og@-;0r+~U2Id}FUaA3wq!$S*R!983g$tq=ipX5SG6+`*uBw~4QjzAVIXOnN!vX&O=CrJf!Tys%?SDwDk;dx&L2N(Qo3lkJo1(kO2o$U84 z#)-<%4y3}+Jt4{F=TkX~o{Z2`H@r=HrSQW0vcr3VqacW8k+=FO(_i!!>8DKLE9Qe? zUZ@i2z$a!Op8e)~k$yT@+`0VROQL8mp~ba96Rt%2lwAZ@!oXz6>o(;|UYC8Kl{NXa zo`C!b@inYY!t0n~0eX2gmi0BjCA`l5!O_Tmb{Mh08=|E!In^Pg`~7zlZs7bW;LXn? zBJlDMkk|ca(ZhybSY^6AmEs$w#Porr1bU+P!R3t~Ac2@i{eXN6&3( zd`UA4R5Z%8cn(@}WJk~mWi5#n;v53c6Xj~UwBUmnJV5sEW@*W_pRtdo0|%^^~jihlB1PKkhL&^&X0?;FxMs4@OPqLD!iD6X*sXClc( z-u<3Up$X1|*y94Q(&ZS+V0^pR_}=q@W7%otyvtyvR2(H3boKVTqnR|70^&Nc;Mg^C z;z5NvpA)!y#1WYF_2d7@1sYBN)i_?b&UZs2KC7#&v*_+$bmIr`aOX&dT{Fkj%%!^S zE(X`sm!%HO1!mS)9ZJ)voKX(5*eXcy6Rx@JpK;kTxQ2RXO=8_jCuL@Lr_%4aENE_Y zP}1~Lw$_EL5p?9OEc8mZ$>{}xWv`dNB_C$sh)Er;JEIF}eX%_|{2PrkFA__bh7_A05l^yvPfL&e=buvc2WqEd>Od z7^~meFjZ9))IkHm{{cXi^_r(VPkicCy1%4)3}35uA=zJ8!)Mi8=U-J`B-lzwR&T2XP049RVVNm^8}s+Yt01a-URSu z-ZLvFZ`(++;1hFF<)1Q&Zq0$+Q{sbs5{sWGt$mdE`MwK&}sw2YyG*HKz8tJ3f zQ<4qu6}@J{P41O>|FMw0va&`p*|Oyw4YA3_9TR6sa+!euDM{oqnJi$Iz^be0K@>uN zfg@5eF8j5SDs2tvN@W3E$sT^nyoMg{kj;fS4d+>BLP360A7y&4=p-m59`daQs4 z(b;8Pt^)meL`>Ua6^)xqURNl9ev+-+P3cB{79`w`(U!eGsNhwjIKx3qq02QWn@#GS z)sA1Xw&&E6o1pUrjkuojE9l#?x0I2W5~cz9Z+6WzUs3|af^SWQ9l=gxVHFbSzsgp? z$|m!{L%yeEM3Bh>DOmMd`17@5@Ad5K6KQ;}*c;n?kuVpIvzQ!w0kS3FFk}O7#=t(a zbQucoO%r=~vcEQD_Pb@)48X-;N1kn$G4eREq)fz1@%tiX|FvSj=hQ$mY5Ee#z8yjn zqe8c$V5lT)f-O|Vw~<3-@TZEhk7eRYtHlTKlnpG-OlH5<5+A0hZGM$~wrAbwfCgY= zKPqy(;}#~ezNo{o zx{XBXI;L-#ao~!v;8nu`J}eo7_gj<>7xlR?YAA!5q}+quJMRv)t=j4?=oU-Us^l zD@hHaVM>|knv1|wz>0EcQsIS|Pk+e9&a3+3mi*qXva*pZ&9wzGvb94q(=Xd2m-|{> zHCO8*<@64PpRF=`HZaaA*I!ju(vA)dDxfF$)hFpWuCcT*F^$HAP@RhI`}t4~y`kOG z^m3@0(N}4DJ7lHRyEJ|r>ZIq=^m(Xq>6bKZ99l;;Yzpop@qmOhb47N8iSWPT#3Ld{ z&IWbP?B;V>zku}uGMM4M2N_IgQ_gn3Y$0P90uLzr!V%5o;sXrV#EWUYYI%0U|EAFT z!9<}8IQRBETmOE{EHegps%wX*vTU*kQjtc-HRdSPK2PofHNE*rf&x&VE6T#|)>x2p zJB-Z*MgkcziLV-Sim!E5-R^h-=##*2>~#l=A|EXWhqRnCC!UE%M24zg#Z$y#7#`YF zAjk0$*jdg=Dd0axLRqG?Cst2lCTOI-L+`*O_U0MZ7@RKz&V3J@eA3LQ+tpP8H2e!; zAs3W)tV{ASsIQ&@3vYG>pfgL{BVi4c@X7kBifg|Wh^$1Ob>H)zSZ~(s$(r}%$uYE! z6EiBxL3NziODwlxhT0hT{=u#r1Cw|1XU3zg4dQ@7=Vk69{_;#R36+xIHq7g22Se!-IvFNx~Ax>wGx-Epiw<+R7Y%69f_!JVacM^fE` zVJFFJ*WU2X4WTFRKF8M1VFW-AE6lKv%nF+3#0Ee-`=TaDWTh0Gk>f3HRS#|~6bJQj z5tvU&n7}^aUhc0^f0N%s=YRYTYHH;)+w6y6H+v- zmCcIgIj%ov#Jt*}v?;Zk5-G*C!R`ka~&_ExkNRg3syD zj&V?3zl0Qa`~JR|GcOw0D#xC*^n$PQ3P(_+XFIj+Z4#br);z_sn?uj@xBv`>IW6Eh zo1jkM4W#;vUR^0fzfPu-oRP{o2I=Jr+eD!6wBEouZD(zX5v5ETK^U2?*ibA@vOlA` zDt9;QRj`U!sWbH{pb0;gbvY%KN{6exlRg>b}{M@L5Kaz>gWyLV|!^#3@8?WQAVhL2) zYNa5Lsd7DGw=dCY!MfM7mPO-*0n1<=pnPQy#TRgA&b@XD%R|{Jt_BOdX{TJP0w~M zUWON}TP4o!Ic7&w2RIpYD^{SxoWH;X207xf26U==-d@=&b!%u^!d{*03CeMPVC!Dw z61)@_gP1@5S`(2zR&>YvPbSXiMpehpb>(}_#_ZOLy@eW~J?)iv+vkL^XmTj*+#&6@ z8-7GSAcVYeG)*z8TeDsY$!eU zM3jV`_QH~9=YQ~6^>CUH8G_-y$39e;rPxYf12keS{6z&D=ZBdy$OZySIK((=CMR?j=f#zqM-K% zsqZ{bR=rP@rFW1B?vtZc9X%JAL<;O0%4zww3?Zbx3)6-eERE%+x+$(qTP^dkM}ncC z(N6grbHJpoilpsEfv~BLH9KP4-ECNw%WOh@1%1PJjxBjzv2nIfm)%_(HCDNNh_lz6 z9ajsK2aEI@7;IDaW6&T7<8)fpg(DBX%)VD4e$d<&o>+^=Gbh%H+a5u6Zg8uuo>0U3 zpXfGp{Ee1@3=ri_LVn&G{Ox!1jWhkWcRT0UdlrCI?DfycGO@SCM*=?SLbk0YF7J0E zkubRf@|iHtd?3pyH9}T=+bKa7;i?`(tI{M3l??LKu$Q1Y1vL_(NT!-BV7O$A2|S_< z8E!1WOE{4HEb^j)Vb`47x0F@D>VaH05VHp{q%dPEHM`$rw%4ei<@!&N+ChGsSS4XJCWp!+*vH1bGdB|W@GuJQT7K?i zfzF9?aL+R2uo+4*TMZ?d)20qTXoB@}&X9-HFl!caZXfO|4kzX5UPHmW-_R{Npri6m zZ{h1L`#?h{>4jk<=ZIm&QJf4zeWeY@Vj@B)8bS7+Nre_VHv5P%t1prBn+4YWKp9je z3GLpX^eu&Y)>#%9hqAy=vD3v?w?k@`kFp}bUQID**0kod3?JPMO)7UDqgs?Jj)pML_UXW{;*h zy9T}4k-;)Gy=Lgij0IUw{j zMhK#Yjwu7|W=Ka!W>GXz;&L6>r!)aaHmT1tyW5)p%QD;Mbws^_vbnc7wSWNwI1RZX zHbuaL5@%iR*oVMr=1TwGI8;lOUKn4{dhDf9w1;#9zKLW>Y=2%QjJ4pV-1ZvZ>!ka` z{UcAdk61Z9u9MwW=-CPPmZ8H}vTiU`K1n}lz}h@vLm-;UFTXc)78{2tnEg&;fyId3 zh|kDy^pkf&_;81tAE|0~#s$#>ZZdDa830L1I7S;QKcwXq;UNzX&kbwGA@m9mrlTHW z*7xLyB0ZYk2c|vrMp`SCN z%_d2B^P&lv3HwegvMF;fYmak&YkM$t0j#&(bCnSM2_>=~~<0_i`*0d^Tz%L!7}>yH`T*U;?L@>jvSM1zI*60Bx_S{?t{~c+6YjiL{wRj)CaF@kve2 z7M;Id%Oa$q;JJ~`DbPd@@K}%p4*X+agkg@0zYHDXuoe0aEKnG^jJ}@DR)0+rli1D7 ziZ${aN{AG}3$^nGe!r)PB34%?Eh==$Q4kEd-C9-SPk{?o@vrw%y~rUeuu$dwQ>|Nj zy1<#qYjCSMH%te2>ga43(V=n`J7rO4CwCxHLt;@WS8S?4g=Tf^?YNkQ0JVuwSH zFbY07&9&cfm?E{GlVr*5Q%H9JayiIObsIX4jJ-AXRAv)?Z;>S$S{Y4h0(F2gOyHY? zlq76Eh5nkfm;EDUtALz?6Y=yq%JHtwES>kA#Fl)VupDI(TmBo#v&WMq&yI3OWppCp z|JFk2_K>ON^&*5pVrZdy2h zuThubw)Oc)<<*(jc_OD~x)1_8Ewb~8M$pO8uSW}5U3Z@5MTf#e{en+=ZfAJ@)uMpl zNH+o>*b!cT+{*DR{t0L+Ox9YuweNItuB=Ac;ml^02~3}|MD~tIL=eFP`{r5_j(EWG z^c@4EBgX%i6HT6|>|80Pqz!{aCAcp_N_KeGOOE(0_s@dARXCAG^^w$VTShYegiz2O z@;#&Cz8n1lS5ZK?7t`$j8RQwr_9t-vB?j@g;Jz9+H<6g*_wpYwb@@>@WM}uAyxn`p zdNNkwWi+=y-)A-4+#Xy1<%ssjd;mF|{&UBBHNMOd*)`%V#bq)s*qpahxfD+RV>XAf zeEkWVmUA@r{EB4*JyV#dkUV>qoSqh0`OtKh_pS|&Kw6M)Pw(TMrkQ!Esa`%2IjQxq zbs3({$o=<_QapFPp62FdE26#eO=LzccVXM>gJhmThP%VXu6}`III9>y$H*PzJK7#C z%SShHJ~754MP~nEb2He4U5JGPu`_z}nq_!XXuC5?|P1B$e?W=v^(so7Is(C2X}06Zd%4^9+-rIX?gCiv!v)Ipj}!zGUMQfgpcU*#gsV6_eX zPuNBjxryqZNj~@9+KJk9)=w5GIC^bmR{L#cMEER>$tDVw`Jl}{!^fVtCq*O(1YVAG zF0V&6y$)$-q}!Y1TkjwHDRUheII$UzfCaf5-FZr9ZE$Y>JmPd#;&XYtIOO_QQJhmY zBK43JOctkXv>wF?0!POxhAxFVCLM7uvHnKl@r?UJ6O~Nf%oV0%k$k3{teu7EH@# zf~08i>9MM?;iGzlN+HHn+vXF5!()$_yEGn8JSN;fb%slCv!lAGmK*leX*77Y$4_3O z4RTHx|CG*7ijM`BG&tkgqYrljWIW7Dr4V#Y!RI0|4tk z#@+4c?;`6;tvh_DBAxV8S&ex<7eZmzDaUmPhXLEIJ=5BG&PXhA42sE`nX7G0>#o+ff}&8X~a4 zY99q19&DEtbJiPSC_~`{m*n)A7xjlQdCIl}zek%YmTAb18+(-K9JiCurRb$@ed8&D z<)u-O=Z1Icv#p*q65}a1pMfB3IFOGc57dcG7fFEMYFqF5wwLUO{I~w86gq!(?wd)2 zZgQh2XxKAmj8u){^A{4x!XuOhv1keLUnaM8<5!smYeAz4h|0r}0>KI#5vl9g0-gP6 z;J^r}kl=!4BtVGWtgbi27Wptiide30U~v{Pu42(FFQ66fRL_s|W;ez|w}V@b4g~qj zj%_tdZ`}6^doVxCf!IIdv&nOyA@qdsI)nKNM_ng(XG3Qizjr7LF4@AJB6mZZZqfk* z&Tq^na6Jlm;raQy?3HYoOKXjDda|WyCJGd3%Q8n)SnIk#YV}mQ(&R-zXdVu#V&!Q! zHH1N_2hz^ad7K}6T47`EE>6m%nYu4I--1)hm#s&?qe=awI4+A!0A8jV_Nju zvE(^FrZx41LGPdZdN8JFpq19vSB<-*xX9BbQI~oKF^feCV7WH+&UNnQvNv1D!k8c1 z1iD7uXMz~K6xU9Yp-P-TsT!d=FxPmbO*Y({Dy^n0%g*7EPP(=u0dx1 za%`!tu7&ONmEtv0-gKFbp-DoT24d#=I;LH8q!ajd5NCx7nb zUYKu<6LOHQMiG6Z7U+)UWY_!(k%h;+!U^94gg3vW^td{B`XYKnu9k>EFgKF8H;<3m zVSi21j=moA&DlFO=l}|bf&${6yxU|yyXR9;o}A?BsKITzM$Tq7D%t_^%M(H{mK2LP z(It$%$D8MQk6$04lF=IeBq4a?;I0AafHo~8Xf7~@i+a zjPZnObaR=uux#6J{hb<^NctnKzv~-|1vNzWdOi!(lA@nEp@^1xu1s3iaawyza#OIH zo3|>Gl2!C7v(-VA^L=(MzJ{)fO%6Fd)L|(4wc6K*?3^6(s=2s{OZd(Dyya2e3;vuU zq&X>{d*?XsA%Cvy&=GS+>e@sllO=1JBzUC2Ir0lI-QJ3A zQa-&hay36w3cvkN0nt&o+9Qg!AV~2;3NzqtlHRkpTR46=#Ik2gUoM=zzDt6(lG5S8 zT;oqJCynC&&Y>Q&^}_|n>=i^f^?a#JJYrK%oA@y_S3PqzK5aL;uAP{iX9(k3p)0x< zBdywKt4wk1Qjh`ihd#cZz7_=^whhs zjhXSpYLHB3_hYYWygy6DoiFeCIA-mG|18L0xp|VWKoLlpM06vH4}%|y1`cIIocP(- zvks?WH9FRRIZ|NjSPS3bGz@xJDS-RP40cf_vU7shIZeHM)>7K3S@cVty;z&L3sswY zOi3m`B+42Kl)eKxHgH$p_P~qXL%;Qw7ap&*yPCPo9R23v(MB%QLpYjWM}@rw;6Q_0 zWGEL1`V}}sJ{DDXwb91Qj*HPFtvHMICJ%+b=ulNXM0H#d=+4B}+8cApK@gGsG95@) z%K4Z5N-fZF&%!eZ8$i^^pitW8)Rq)SQVJo-6 zQ;W((`+CY3+U+R`?C_qm6$_ondKxT}a=JhLj-)P*Oel*Y1bp*^Y#g5=o8!pm<`IT8 zjxsfI5@z40It(VH{e*4pU+raj-Y~OA0WXLMYT~+#1=p*uJ0J#Se4;E&mk}&O_LfGv zuuLMR9waCz9uo>iu~Ga z7svi9@hUn@YPU#idJ9^~V}_gY8_AbLL#MYzI)!X`72r1!Rj&z8J zK%3r=soIREL6SmyZ?&zHqFF$mc{$Npyq+zZ1q?Pj4edN_tUQrNb2vY0Imcq&5UFCT z+$L1|@UFem{OyX&wVYJ7cOsVhW76@)xdfN!)d$yc5~v0$f$as^+3f+x+4hR@Iv|{r zDgYjvFNxKz2Wh5s>>Z1;o1xvv&&Id3+4UK#$XgIR4i>CAnCGfXEm)q#(J7&KoQ;G`HWo++s9!h0)^BL{7@z0BnJLf`%r{|#Ue zOVgn@DFVs0imDq&1sl6)sT{`l>t_J2Z+R3zn$6yCZt&-^E~oa7t;YZO{x6^Cf=PUP zru!$P0C}MRG2huk6%J9D{fB%kn#>Kqw?a*vcbVOWiKj0?mi5x0F<;0tXfs(>WTUM& z^?SRJ#Vkr5S5#o5$w>!EKPJioH-#FdQQ$%K(qxyd51HS*Z8szv?b0t_2mSRZj81v= z4g5yC789RtD^RP^L!^V{IY^yiy}?WnxYD(Tmw7YW*9LQJrP#Eskpc|$&L$@kMk4 zAD=Ewp-P(`C~@gMkL9Q;d@K1xNe_XNpSYCgrYg>)%841ZL@C*^MMp}K#>Y8XYex+F z;u3snZQ90GLv}-ULky1I6B*FnJ))4cl=bMqBrn(r4d{VaEbJ}O4Atx8N#H6R`R=~k zhq>akfzWvxp6WF(6Kg+aB4HR%JQtYz2g7%5?Rh=T^36bJWr_e~_0LQ2f;;}@aG`65 z>h^&(asi)es1&JNr+2R;lJP#INWU+#)*M+b!{qpvBZ$x^B6ScAk+1#84BV?NrWJ>r z*w_XR7(0KPXSl$9lk#spi{HsinqE%z{Joy$%7ne0a>YEOmX`NEPpN9zY0e`J@9kca ztFNHS#wn=4dYirIo%a26X_cyGfk=jHjH3RzAZXpYT*+Eypm0X{%W72L@ma{owiWtZ z4ttr*UFcVp+B@dmE-F4I^@iX|e2_-bL0XtJ zK_gF!Dp(li)liWlC8Uhf?V$>aMNNeX z=ktYRLiw)W%Y_Yy`mX1j?fJg2ryO)II{|u?1jKzelq{okO6Tb_w3LFUZE<3aVG82O zN6RbIj#E{tiCT-2@%PSbwX>}IT$b^9fj$2E4gh%aMc${glmDktV&fuLnpl~t&9fYb zR^=n=0I!^7>6Ba=d<5dJ?-vm+?tr5{FG9h0FO#ZU!6qfx-ICwiXMV|UQ^rFKZ#~i| zPR^|5!x7G10o>jNGFb0_i&_^bt5^E2=NeQ$i_airC+bYzz-OF&(oWyy2#|}#OWaGc zymHb(1&um0)Lx94Uy7w)M0JtK_`?dM!%KnPx#Y$MJ7;S`jS&-eCfb=xJD_p1m%bZk z!bZtNw(Pjz#{IR<&UKZAvzxjjA&1OA67JT8WoE02v@Io4@ztpWtoW|I%Cui3Zw>z1 zIX6q%ifw3}x3Q~N6}imyOa!v3;H|) zT@POixaLPt+g=()y>xd8eL1*5NCrL}P`}`NAC@^#tz`dvJaANM{gb-Ca!+~kY_7Dt^zlU8tdA$+ik}4e^avHng%B_B&;eh7Xbe=7v-vOt zb;cwPC+s$5S|*SmT_BaJz_)RcUaBF35GpXUqGTB~*VnY^hX1{_?P zV^%u1{;VNGdYXG+8MR9hh|f8vbl;6C2!(O+;r*7f+BmZ#mt@sYACXg@Qr2}#RwVp> zsb}tos)Vko+UPuIM$szhQrWz|SUq|UvY^UvAuT(y9VquluH)6f4w>!ry20{6&2o}9 zdP`lkZ^!b6no=y`x1B@As+kZw#ZGG*?a9$-QCs&H8z@hlu$0LTS9Hh>wwo&{wunt8?H(;jou0 zuCRkxK+EMP&W^}~rV@EXPiga6L_&k5(oZN#w!$49A zwMEf6zi{0{favhSL(KZzLx$mnE`KDf)8mpOJb>rH%Sch-ddtJ4*WiBDbXu%9XdlGH#%Vb`{4|kCoi1gr)KO2P}F!;tTW+GySs5^*kZ&*`zf=JVVPJ_BL|YPaU9* z7Q5+-*Q%TB>AI*!$C^ zstcA#k?m!b?QpQP;5Szi3Z%=Rg55Wf9*a_GE+|c_X*C(SD_qQbfa1v&W;w_5>`BPa zwyU5>f&)^FqPn8H>9vBqck_dBcrV-P@!4PCAofHxKJ|#pfnW_dIh1CaS6FT}5SmvD z3ShcwoKsgi9ukPdIaj}eiivw-xNwr57@lp=cU2bT*k9$ceSVy&0eL-lZIY`B1>=!V zMi}LRBS&u4*}6H8)k}+SYMU|5I-oh!i#YZ*o2{21yVtSup1G)H-X(8``WKKe)w?e8 zQa~D6H?itW*m-O|iWOdRI#l&re{YB7IBU9q?PcXSt7OXzHE5p~>ZUckT#(FfP3R1^ zu%Phf=Y_g{KCU*3;d_Egny5_5TUcL^>T}QD(Qizf12|ueV4^=d4$-PkhzO>qQXjpfMZrk9?#`^$XniX|7UnE;WTM5F=3**-Mv9 zLLho{DN$8<)iSGW-d$Qobz#ZW3w*GSt`||D<1FV=1t7n?-9udYTNi9fnqC%GF=u_L z9_?caJVzLc_}9XiXc%f4a3ZRgF%3U4Iza=zM*mXxNC^ATMfwpfREExBL(?Yb6d&2l z)o>eL!lH8o)j(NU10z{)#50DszPTD4&$P+6e7++dZ&|gsRRw7N1ASz!Y@pAj=_om% z_AkSz^!z8!Kyl=a^-Hn@7>{@P@FWQ>1a1#2p~)4XnYsl?h6Y*`r3piZFWX5oSNSQ1 z_AiNa3lg}4dP0jzDGtkZsF4xng7Y=H;W?)YWrfI9tZGwUkaN^`<*^-PnlcX;W>yBt zD=Na&V$bq<45unVemhNB*KtA7or!^0WacNa7x-=Ml2s~vfwtipA~pQ#vda^oJ|#^FLg`oPSFFs;?`~kR`02^^3U{HN=%CmrK6T zZJFAR&5&j}-Yd36?1_nHcIA2Eh=*%Q23WiH*ej!r7kJ!w8XXGJa762lvt4P3S-yCB z;Qjg`Ufo}ZVd~0=_`0N^t3+$TO7NCM(OZJe>xorknDCJPc0il@80UQolrCC-ZF4~( zvcqGVEqa+JcF#0}krYHj>Od1odBSe*LGXNuIrejo#!ROH7O0PUynOX0{~=HjWo08S#DEBG$NlaQaI( zjPq1i1iT{GbK3*C68+(HcSQf|KF&qr5mhI5*e8|YeZN{nhKThy%lPp4>cNd_NQO6} zjcw%}+%+t2(=W5F1E zHE*SXhyyTs=C~K3n~zuAqrnmpdW@-@`Zy1LuQ0M~!KNAW*%(D0EAQTD+n2-)-+GQ7 zZbGUo@Eq_y#L79p<_iYSgCbeSqyjtD9Bfwz;+k)y%|!#gUFdyZ;(38QJ+@Yw*M}4SjK1XidEuhlrvW{9*s#Px z8goS#-8tdjg-a%6i3Y`R+66V};_H`H)9}O!raq;a!UI|FFvbiV?oV~dQPt0`l>E?~8@a6Yo0?X>8ktvxtXvEGcIKmv5zXW*y(Ods zros1ofP|VoV&~qHF#5cZ5z?Ut4b7MR+6aSn=TvLX#*sF^jU(lHw=F`~mhdOg9FR!b zVcmEokf>@(VXYlCb&xwStixu)dLZ+APy9z_aUP-$BZ%RfIq)^2=pv<{-=@c5lMh`s zp+mj0=w#+#1=HH$At6AB+ei2eKQR{fye@sDLhlD9z zLWqHEz^iO)FTbr<;Ww46rOC6g6jaSEsH(y) zksI{_&^(m`@41Nk_C1HoIW%J(z4hP4#|T!bN4a|s z;F<>2h3LebhfAUv2NNrP;I?(tV6#IzQA{H+r)k~R5pkJ?kUH}~Toy`K_Ag`ozAAV& z>QLUm&f@OkvgC~?SA@tuTQPZ)3O?=JP`N$nwRfXg>K`KV})==&vqZFPcVrD$iZunbn={`w_TL&c3{woORKeuuJj9(f(i z{Vm`?AR(S?djst<*hkl(E3e+7rX5PVwG3LgZr)5vg^Mszy^(Y}o~V)F6JLoO-VQ)S~7K;@%4 zj`-)XV&1DeMAi-{Cke;4LfO4>)z$O4=PkONlOkwCHtF%2k!E(y=BHyqmIo@?j8_FU zuQ-j7_k4a$pWEuF=QuEGr^8!pU+PfUwNDKzmUbDZs*XMQ8Zs~6dlNzP>zay3t#v5t zYsZdbT(vrSM>GhvH$-afU*oC~e{LcI=9YMjm8E1wlFJrfp zTkO0OT)b71aRulHq8xa_m0p#bW$uS)odZFE z@vVK!D0voMy|~63UT}%ru+?xB%az>uroDj0K3~FOUs$^b@x^dY z8+whvGU(#LRKE##rxEMT#B zQR;>iYe|larl6NUVwR1qDE%dVH|SuZ=vjM@O`8z~BJa^i++X0}{shMyc&Ocw!hR&^Fq5G_z!lvv ze+v?KkP?UMy;&I+Zg9ZYiSXL%(r?G%xyk)^&5auuTyA>U4H!qm zv0ahwc}*s@d&8JCb7GQl?Ybs%03-s9yd+B5yAiXUHxgv0Q-0SQPccw={D=g_C&!xR z=cnHw1}1yes)dBT*cQ4w^%_f{y0XOW>*D1*w(I?x_d&+H=A*dHgv=fChi~4>ZM@4o z>0=#G0(|kZ{YT^QhR)2B?98nD2QrhQzeyY&;+*lA?DB}nN756Y3e0CCl%^mA;%fRG zX{zoGut=B!f6yjCR82Vh?l}o0>MPu-f!r1t=*_l_5SnMg{pb# zu`_{C)f4V#{Bu=N2>uCwfr!-n-lhU4%9u-!j=b8VA98IE1u%P8ihQ$9VbbHbm}*x~ zBob}6!3j)7Ayk+O@KVi3FhaEDnmtFX9HD&H>k4G@Q5;Dc^SdZgR+QS1<%Wk z3YXKL3$me6VKrCK$=qW{1yh=wa9wbebb90}YSvv+%gw0cK6SInP}N+@)lfJ}g-lhw z8+H8|-~3v=Od=kn#;xUzxhGz&ELDK98id00s2Cvf`b}dhkxsr}N2`2`Q>~uSru0s@ zEbkQ={5vS*;=FWj^k|SH;o#@$xbP2boAU`m=3k06fZHfJE{FgK>8eP2`OW*%*x&ch_t52X5v{{mG)%Z&q+QUuH$F zgaxj;Y#R3+6H3X#@-_Nt=R1m8Mcu%K-v$w`QV7Q%5E5UtXh2R?r=s=Cwfa#)Ct6%= z_z+k7-&JflMMCjh#V@iTW+d<25>1m?{D=+;+K@Lx3=9i_hzc!R*UX+$Y$R(*mQ)Z( zsR+Qhs5BDQ8LH{cR$f@}7{qk1L)z!-|1DhnJB5o0HGt)iD*m@V@qcc8VnuK0za)tM zrZ~xYH%Fi^re; z%>{CE0?Sw;b$e`(qs|A|Exlb2Zj*Wtt`w1fXvkDWw676)b3|TE zAzh_JmCCtuuqXcx#Tc(xYU*X&U&z(gRsfwzAaSEc%cq!A*WGAshM)R#7OUL+66caJ z8lz^c7xkIGS<|@NNz6`$^vy(Qw^1*}`s#Dcxla;(koftZ;VLSBxMd}po-9$)nDE@a zQD|!JZXuH(SFc#Q1^w<4$)Xm-Jd)vJS#eI{%FTyPNpj3#JG~}93&l>v77~>VVz}+i z<|}8;+~50V;e%TAOUJTGl&M0isF4&LEUQk5t@6_SVL1D)Qp-E9sPbYoerD) zD_s1??eT}0<%V5WP3u(>oTxAoSTOFfyQEBAkMa(l(CvK|DnPRVH)J;BZgIMD1VxoN z-@(?cII7&TLhRaFc)T{v*WMxaZ*;?ItSvD^!S8bCR=jFu@ICpf#Gl#|p?d$C|AG-K zv2PjQ5q|5fD@NG6e{seK^EO1Oty{63c@qncFVMS7;D(Q87gx|%H*{Ry=!$W> zYyWaL51O_hXmq(du;;vB2=qU-`w9<5z3;Q9$mX)!&4s}|%V0BkG7+$C-v($ik;nV1 zzwZ;PHgvGCjOWX?AxW3203J^n0@=6 z(jpvET{#B;6HO?9dzQc6yUMtpbFD;y*6_}6Q+1*7OzIMeP9U9SOOOPtH#vQhc_^yk z%Ulh-LkeH>+f{&*91NtRHItV(Sh>2z%T?WA|EIJ!;dS7Ei)yiQyX>bhy(>kL&Bh7e zt`J9~d$Bl60C zLsFm*EJOBF4C`2eXM9=smIDz)+X~-l!Pci2iNg_q0N0}ELezqVxQRpVv&pWG*o4ny z;qCC^0nbVS$6)B7<2bVVL8GC&rmXi7#bOe3n{rAgylaxIU6XVJ>{;g>orq;?>KuPe zRC_1X&VgAGp6>-kf*htB6Iqv%NT3Zp8sCj(d`!I2z_C0m8BGUz_I$C97)Pgfq!PL0 zD+#3SwBUTM-Lb2_a2=IAtAGt%6O3G!cY9JRxPQ;+@RE?XLGNCIlJ5)t8b}4HVfc2S zI3C>#{kyjlFw4LDqv5wm^eR;fK7&(+>%C@q5);61$LD>!Xd;Er_U}k+uGz&HZv3uz zUraigYfbcsnc9Bjt^&TxKgjNK_>}j?_aW2hagLhXOK(Q~lu!LXI(*+m1=D)3uw0wX z{w)m@&qHrHf&I2bxdcxcl_5d_7Qc)DxIci^Hr+@b4>s@U)4+yl(T(6Cz1-V`!}r1V`Z*;r@IP=3_i6&a9@*_~b&lc+cgeS6SBj8TbZYZ!i)z zXukXkD7pyl{`VsIH(Uhv5DLQgi^%Dxtm^B2DQ)(xY_Ao%M*P7;diMR5u*AtENhLKz_-0e1L$@~4@dpTO+_PbG^M26@P;@e7uK(=Da8fde z*Ty{;ja&b{tIo;awcMnl#n+*n?7RGxVkb-&TOq7+qiU8B6Mx~rEN=RLvN+-jbSfqW zx-kn z<9#r@CkZ$k;<=62rC`@*a{HP|ujhL~I}>XtwaP|)&u`!n8SlmzZPF(%h$$MMq~n`Fb5oQx&;3|GJVVdXgRbOJKJ(J2)xFvgso(ek z@fGAeXmVFR==fjKXYxR~Qsws+HEql9UXOgn`UwBscu=2*P3ia6kG1XHuAoPak9c{2 zs6Vl$+7Suxn*e-|+&re}_sK7R*_V5scgiN3x9;gmlQG{24DSFbt>qPKre1w%TDxa- zS(njXda?SCyyB||RfSgxz`xOnd;v=zbQv@G#DJQH()3}0Y6vEnkQ*Hz)jW0ui9Wga zyWiUxSP);uv4$HKO^v~K!F#Xt9ZR_XR#{cuVpL=Ak+NsjsYgOU&Lhj`SFzHy|&iK4QNH z+&Dzzi0iNRAAaGR*_(!U#Yj&BI*4O5P6k9brf7WY(L~;Xme2h93_V{4M4(>n>jOGs z?`Ztso^v#=5#d=EjQt!Cf%-zf4GS5cmdi!E-OFW1hhqi_Xje9_5;wRBS-i6j0!nw} zqTT`7DLv$?^~p#F6-wgddj=Tu_^ss$9ln4ud=h1M;a^i(I$Tfi@^*(*{9kgG_U@>d z?Va~2#~fhH9l6$V8^bZ#Uax@MfuIk*3m2F5a$wKfLo)hO9^NAmPPY}}#Fce8ppqBw z721+d;`L!hgRliJQ-~&8ves=UvzeM{_hbt=ko{g0B8hYP3`KJ{-|^svS&kxuKRWh) zik0-<_bd1+=sNf*W}o{-vJhM~*uTR{|K{v?Dsb6=A`w`HsE|J_WdwY0lGJqXZ?W{9eZy zKCsW#P!xO{!fV6q)v&4nGR+D7JGj@&4yZa1y1LD$WUs64_3++7H+=m-IzXLayOXoe zNEn?j5`50>S#v?bvpeql_+aUkk=XCN?&cx^l@b-luJ`iS4ZBRC+%K0}G>J6IHsaoq zKO`~O>q@mhci0>$#sS7P3dRHkW9FQQG}C=icYpM?2lWbjeF)*R=kb0ZP`Np>|>7RBp1wmLuN!2>ap4+R}Qy?mgDHtUW_-QA&hhR2w*$Xnu2vXwP5ve61` z7|-{iC!_C8xqZJN{=nU95$Rn<53FhcZ3`dyN>pH;743Z;Zr*n!;@BrSy zYOJs~=N~FTjMP#sUP`8Ut1M7W6)8jL2Dn*x0#3uU_`w~yS|?FAuh6NMyCMDO-*%!p zWWUwPf6lo+zUyR!9y#tG(EbSW_T$hGyO?JgRElD~gsN4nPCmoegSwM;Oe=H;H7A-I zgy>nN5BxZLE0YWiC?Tu&$#HmOlcP2-s=ROH1I zQn&6YCfWs3JU*z0{_!d^!n~gfvl z*eQ4FSX6T8;%kNw)JmQ9eNr3v|H4_BvCGKyg_O_ji{%JvjJ%4s&VUKL%^#&~W19A5 zBiG(qgPTP0z267N%M5235&7UN8@qq^$iWRS5)v=`O^PY7F z{$Ky_!fT7C5Kz|Ucf`qsN&ttvc87BX4_}IJQiKm0Z{FgIqoc z?x7@YvKRiYS@1oj%0V`ZI&4Vz>kT`nScMWH^C@LdQ6ks=cR&?U)hgfp1IT!*0sQO9 z|Kj2=;-Y+DKUsu|x3i31Z$O-TD2z0Ozw2lNvjYX`|zD@Z?iMjJfu2H&j6)Q?DfG?O4&%nT|>~ z0Yiuy2N0FtWZ1cEKLXCbZYij+P-OO1L8w1W;x<(m+CX+~qn zcy2ht=XvZAp&FUxA$g2`S`Sg8RT9{!Mx7h)tP*2<5TwR{nmP{sQ;RW zL)O2YoMk||*2t9#iCYjDE*kZCG4te5t(bZ8v9FX8PlR+wyQx*)`?^0N*?0V~AO8j1 z<+4srYWs~&G#woK$AUo)*cfdTWJ@}!7VW!EwEEvx=56}BtXUccfUdU}{$IRVkPp~# zUJ%Pw3Dm5JH>-LQB0Ig8D`_avJv$_A&nukRIQ%K;Ue&9qNBlQJjYgq)&CmkRGAJ_2 zr5!=dQ_PpYRTdcx4?4CYvhn*^*<`pppGKLon%dp=tcxzhdqxhd;#!HW(H!LfbZapDU9uTSC3;J3Ps+SdZsr-~PSNZBe7OSU8aI$uG0s%+63 zOJ>4AiauTVY-TepNa|R1HGJ}%eQJC#=Hx@V(czdoy&xkyh$(^E<=0Cdt^!S;TnHs0 zEdm$)_YTPG8cjPA>IaVXqnq<|eRYv}c~4hh&6M#EX!FSU2aE%qtMgIDZcZvnBXLKJ zY;?^eiJ}Q7I^r@eniozlLc@n^TR|S$&3?Q>I#p8)R*d#fL$bY(@y81{zT%IqA^Fm8 zqw#GRQ!ob_pNFyDB{MYc3@P|#7mZ`8Q}cw#ii#@W_A3%rz|)!Hk3IQFg9->N&560c z5@a|T=pSBMS9D0qL@p;T2PV>AE*on3zqp%D`5N5j1W3T+uQSdr2SncNPr;amm z=RuuWBb_6fq{PH_yP&9O-Nw;{ zw%NwUp!Jez>ZDB5+rYPMPv{fTirX7Ub_d};W8^;tx3hGpQ2v)xs_49 z0JT9JWa-3r%v1z&Yc5JNTV6ZNCjMMpmudX1LMCx{_>-c_v+S*}1u1IE)=Iap)bqpA*9{Y12@UtA+)PD5jZ3}f z)yy(n#UR#qBTmfv;~LUE2(p7fxQ+jO|EZbaRDR0`` z?Nn7ull?tt^@TK$6}u!t_W-ZXzQwD$uT&`q7N89jAVy_n+>n%YB%kdTEY^VtNy_XBdr1`al3!S%TEX*Z z7IA)N=(sDv^*ok24k|?cE6imN*pJ~06!N#HyH?>4o*g;|j1o9nFoR7hq|{7;n1qN7 zZ!M;B_cmv>l+#hCWI%j_S4`Zo-7<3z(wwS1r7k~~DZHk92!C&aVfCP|l&`tsF<-sp z+<&lm9|A(&zZ@L?p&iicNXv9Jc+efIdDluAzxJfU(O_DJuBa;=hT={^!7inf{tD~- z@_`jzbJJY$3A7TVcgjuB@4sLbu2aAV1pDC7VqBq250+aLW|Jt$SIW1RyFOAr*XoG~ zQw{jz5*NeW^9t_Pm@$URph`$t3p_Qs{NWulyZg-Na&<0^P>5)4RgXs2G7AEj-a6#IlA^;q> z#D%u974=*uZ_0n~GYM2-K~0sB!kbG}_}~&uK}F<`5s9C3{IM~D_?cDJ+eBkQCXTI< z;qwjPtJ}8Uh$|nV@qne=l9h6~=f3U9jU_Y|B+FRie(UJBHsnTprpG<|=sDoVAsTb3 zJVp$iNBr@`jbr@LE35vXFNCi5NIHf7W1v1Tj1Fcv8BxN8DMoxA#hUSNhQ^l>XAwZ- z+lZ48*abfF0`c|HBd-U4JaNx48YkRyYA0_S&6M!R%OjnFC9cF;Pni* z*x|JH1wk;=q7(==#RhIgIa$6dkO67~Sax!*lDi&u~V+4Q{l0 zxh*IXw(d+(KQxL_==wU1>D_<%hM!3m*W!iuqsEWTtB9y%{$#-Vy~PpVS$nkh30bD>FLIR zowhP`P{b%9OIn$$#e^XWIb&QHsjr;+6Wvv~9!pZ(3CjKn(we*?HaWF@42op4MaO}c zIB3UD^>oWl&$go?0SxOMz<3Oa>99G%}vNHFGOG8sfzQ!e{7D~&s;$&t)*vG z=KEeOTTnaopYKYJn+da2o`zpsdsqi4XX0&068MzvCQHr2a$iekf=Q%one-=Nv_(7# zTZ&-OEQS)=N+pEhNnnqWohDMbhuMYf#ls=M_M62if~KjT2z*JoF!pU@1GPvr@P|cy zl*EyE7dvR_{0RL@vVi?v?!u}_Z zxs&87eA~&pc^55a>E!q6O`aBmGyIBGvXA>QsfM@G6{nuJ=p5kVukPdK0R7s4MEp;^ zb=y1ebm_u*aRyoXals5rOWtyT{|?5x^xPy?=*NL5juPlYiC?$upsX|F(=+MLwx;e- zi*MH^+UxEZyNLVsA*FWm>drYaP|oSWwfXQm*X5ersI6}I=6{T_F06kDksOCoRQl(I zQhY(WfubA_EB|uJkzvJmqcNzzdN{pv-M6**1<+m}uu6!hbTL=%w8NoGWj=IDm%8Uo_-a97S6z z?oi=@`4Fw%ZZ8h+9e+{Am7*Iweysit#KO2uu1+l6ufLJHRu;o=tL!{d{z|A7J#+&s zefVDv?;b}$crHiiup_3DzNMc3<8av>-a-N(I?Tb}4Ei=DcuE#;#z3OJX8rg-4a}}! z!IIf;lvR_p--~~JQ%nvf-1OI^OKlsdBw#t^sp?v6o!1Uu!#+SQV#_w129q|r+g@C> z6vN#}*2j4q3~XY!JQV>XF@Fr3u;Y}R7k22Ln^nB^Pf07Yc(*LVwjd)YMqZ;u1NAKo zv(Xc(0x2yVche>yadGG0J6IY~ZBLh;A<-|!x%%dh6%SUb+JjM}B)ZrcpDMEqZ%<1| zNm`cLfhxQoDgEw^v1Y{MyQa!xcV;CMVnmo73!kb z0zaSGHD_+LMr4mcw5p-6e$H(2%iB}1!gc0?BHfR3I#=$EwzFV6%pCJEtcG5_?0&S8 zj;X*o`%h0~wq+H6;B7Lk^rzis}9gZb9J-QehNBd0D+PmPS;s?jgdRISBPw6==6!k+E68k5gy zk>3!D+(w26rv2^td-r_p+JWbK2X*N6T;5Q5?WuL?c?w_gt&+&UmNKqU=lN$SE=&bdfLAXyX;wI{P(eK`wp=^6q;zku+JK_ z#E+2kjYj*F!9lzk`!e|+-To+w`!^7#wbaXVl6?$;4)7uOLnAB#ln83Zzwa)THOXnm zU7;w=bEtUrnR4FVV13(_zf1}$T$35>E%ounm?H!7wi8Fu&Nm2%;PY8!A)MSxV~;p87PwS z(OiOu{|sn^AHy{JGINB`!`@)ArGFm)bo@PkYTx}DdxH{rlEN_Q;ldDy=(Uc9Ihn+NnBLIY^#xp6jI!BOeHnu-xA7W+!p) z_{pr!T^y<56TMH{lvZCs2&FBZ?f0^gOp#{_&;sXd9C-6`mu@HO!n9FiRjUx-2cmT$ zC_Q6I27}85_K=8d7I`~G4cZ@~InxxTLPwZ+O{aN>-_V?~3}3qRy*e%7k_i4%TZ!jb zei!H<9`F8E8;WEKx*-wgP0~+-Bx%^2iJ5kIVPLV$lVBFOXiN)zOYGLyN$wJ}zMuPe zdH>LkmKJ(OzjduP#P{BCq&W26c#EUx?T@@SR=Eu(UQ*Y8n@3Bw=ZUx3vc3Q&tArl> z7ECs~fiFF@8`|Tb64wU8V&%wet7DkT&)1xK8=A9O zyfS6EmQ^^D38&fYSKv-DoEA*-v&RD$bn!LT2xAH=o6W(|hbn;4)%g zcPZ}QRyv_%;-jkOCqm}n-VIkco-c^ugxFbJ>{yJgmxXD);ni!r`n?p$$gDl-Q|=x} zV|AS*-g&vp zs$>4=|LE~9`p12;u{iMeKjfcmzV*KxmdnATmbHcdIEf`Fu#x=71Jtd5+Fg`^dReN1 zBvc&zVNm;6O?<`*R-Cf!Fa6oppL5E0OljdLL*9X`<~^o_EEoEC<1+WSPlZTcE`tc4 z`4wj{p?g$$^G4tdmV`M^AUCh2lp=pSC2)@_I-4q)lj?=(fvBonoBbd3B1ycAxS@YA zYS0LZm^U+Ax(XXoZ=XZ3bi+mFD&8IQ+*C}ic)yibCfD|p5YDLY9OQbwA#sSp>3t88 zW4fQ{EbUZ6X@bfWx|bhv*=ux8_uM0Ewhfw8s}UZ$g*d^L*&Iq3r6>ZQP>ChzA;}CK zu-H8Zi8GM&azl>IdzjeakUNcpVC-M%w4cEYUxxLwg?Bp!)IptiIn4Lfj z8A=6CR2Xc%!gY5z1+Q`*^_NYvM2-STYm4HG-!`*49yFj%M8zUfffn3Q+oVXVa0WwlRk^;3Z;Ss zq(Ai=6Z)Re|GM?y2}&IDG=wpXnemGP28Il}PjDunoF&?X4(`c=-t~gN_pfk`>7niPN4r~=_(=;w(Zi#Qod4k3~pkRGpv_3LqKPFK4tX*r<=PX{k zfo>@;A{4Ox`;`@{cj#ys$R(u>VggCRxR0XyuuWpW!snt>T%KpQvP3>V55Nu!W2 zG9xv@AOcFlcy14*O9OgBmVmROXpN)Xmnh}8o-hipke}?DNd#+H$$2EoCKK!bPQR(k zgb06{W7vy-t}1c-WB>en=eD9?@y|@~8)@q=&Razp9Q&zSa$n{;&YK{t0pZHp)E%Ng>u5ta> zD%B*DEQtcFFO-6)Qi+IaQIc>NC3bnbLV=&9+Stswe;Q4!xjS!(fERY#z707m_rXcm zRuc*@8IjC3dhj!Oz(@4aXHR?u`ku|$z91%aYBp6QGmR3x#AlGP??Hp!sIcHm_T97wje7b|2NlBJ{m^}%w=J&Zg)ub2+ONf+dZXXX?hHL#kxNLIo zUsGlVxLwfu{fF<~x9pp~zww~X_d|L=KRe_D7l9vwBo5IlPR3hL$glLVjrT%11yUb) zC4l2T$oPF2Lu^mvGU^~?lTK?k2YY%8i5yg(i^xlEz=B-7U$KSRx4C!;36FBsC)BsG zORnWr(o2Zqw#Z(>t(tqHMl>`cc zZ5Dkd5w)R7Tk6>Z!Cfy&kc(7GVZxv;)4S;q79}S~*l{GPTp2e(gbg z_Z~dL0j@D2W@ZE=+5tx`J#cPyH1bS5YE7SN`!{JP*D=-RU~v&vuzspC|AoxpfZ=PYuIfo95FQP1a&d<2clac$*+dCf)*+A%v=B|3Ipd?!$h#b@hBDsX!y+JaNn6~>eZBb#pf~jIMU~*!AAUcNdDWv+mOP{$ zK9@kD%0<)*I=-6%>SZIp&%I|SW~sv=C-<|@jsy%t_6f7k4$ZUDeITB&ydqrwbHxUa zD;sw3Af8(xlTAF{QNc;Epx3uNEFUnb#glgzqaev!NWon#v>Y}H`8ZV>1b3{>{UrpG zRjG}zbU+>dW@B{%Fi?=DWF;4VO0N;F@ghd(n|uj2JzFmT#n6ikaMeCdutV$-)JODe z6pGU)fzRAiCDcbcIT0AZ^qF(y>zdVrtyTbyu+6_b{HLPSpRnZbL=UpZ2QxEzM|Pwp zd7x8-rt&!Zc}Utm@BVv#K+36*Hi@N57i({~aW99AZ7$Fg5Z=>5qSwJS;VB|spN-1w z<2mjSJ%Vd03YYOsjKz{pOun-@T8SkOYW@-SAAaXMqQI}QC4scPWOg8xkDf;8W;@`awD-@j(yWgQH1#hWD>M0OJGd!(?>>79K zi;)XfIexN!BLU47@*X-NQed8zdHIgS*(C?Io=^)CsM(%@CfolZ=u%&X4#X;~fD_rl zF2V`lLY;(en{NeTo!e(Eb%@`2gvtKh`fiMwP|HuR-)DtG7SVG*VX>@{+gP_z{#YAM zwp(ee{A9K&UNze#0|Z8szXfT1bG3Z<$kC})d^c^Zfg(W=1c3*@!7qeu z^d*+GAw8+Xk}mecp`-Wtuk#dHUC>aHP(MzN0tr7x(ZCoQp(DWe6Ne0D_qS*{2s@Jl zup%E$eDj}t8}Usf2RK8CR}G^sZ^Dzb^b6kE@FA<7kNINgCK>^M*$y(2FsESM$+Lw) zT2;gAjw9@C-I`&%Bl|`AlA}R;h#<3G*;uaeNzXt6N|lrJRp!{SB{`Gn%fpDP2)dS# z$-G1kuhXY-VZBE}=@c@Uf-}+LBzMq)j%7TVrAjz$sNPqlnc})=FxKJY#gSLD4SMf-W zdxl-?#O{F+{pt)ALUUoxGozCk*T%V5PMj zq38N}V|-N=e~XwHUP61*grFB3Z|os6#9+ ze1fm;;NQ*NcPj_)uYe;qq+sfU`pv0#*6gdt_dt-m$rt=1tSDQ%Ya?v9o-?iEl}^is zbofEG+#i;Ki?K1q*RZWVq>YBXZhhB+w&tF%Yvim-YcCt*?3Yv6i=pv64(Snr0}1!# z#F}TH_ky1laXdDvh7fOsQSeY3SS`sn^Y!sK>Os9@ya&%7Ni@<7Zy$q;o7bGdKyh1U zdHJ^%W6SZF3e95Fl0Li>PE6Vmi|5d(BedZZei_NWiU6`0Z~GY+>B=A%utxl^5cuT# z2O98KIBib9V&PZX;W`U`oMNx@4yYGwbd}K zkKo9nRT`6_`y-eVJC;tjZ-38N`9rueqZHo4zlYm&0BCj%I$c}=PDjKB!xno6D!M0g z+@WVdY3Nd_XZoC`OWNLwQ$tpqOwXXev-DKKda+2C`aO#`>5^t}^mvd(F=y4B$&)c~ z-8EhHy7bi0qFbKBg$wT%m@`DT2%LQJSAb$QW~1IQ~ z(L@?@*n9Hfi6$GD(^KFQIsu=p8ti7MnI|ip8(A~(>i&u4W+40S07G?_w=C+3;Nzy& zEPRuv)+_V+aFYxD#&0Z@IoFY#%#2wwqVGzFqNB@821x}EB%kavsAV)nws_)C4Xo2= z|B3tDqEQ%0O_NKzz>^hrIe)T` zdF7|DdanYnquxQUkDoX~g&;N^-EY%B^8`vUdM!nyTRhoGDg4cwj5j%Y#(T1KLg*c7 z)x2&J*1ENMo0^IJBZ%iJ($7mR7 zleHOhM5X!L(CKy?j*fGU{7LchUh&vQ6mH4K%Vac5ku2CZnM!&a%woQ!f}Ld<-|Fhw zqDe5aHI%2^pSzBR;G2%5c~+U5NKid$nd3*K7b>@aNkTr!0g}|h9BCnNOcbZV zfAf7$YoFFTqc%r%7#y#Uv1*7aMuK8Ndd>-rsCAHwy9b^YFIziC~6pzBMx-mVq)-G^suWtdlt7cI(ab_voT}oe*$L;wK_U3+ffdI9=P25cdp6jOZL+#uO6h*a? z7!$ie_Hg*P(d5Ya0VTD91K7bL)@Q7lPHKAI| znrWu5_j(q6TqIh15Y=*?(?f;ZZlfC7f`9kH0nMeJ*?m>fp6GH$S3V!1Y6G3vTeGyP z%q7Xoj!^g1c6(18x`RHe_pP-12}}3Q?`QeL{aor8XmyO~X9rFgeF;nGA+mA9ljNZ2 zhA)S%_ISzS;Yb~8$vG;6-7F0gB*`;;jd{^K%Zop(cSMg?q$)eGQeiRdL(EqKK9fh~ z3ruy7gqwR833m)NRluC(K)I0{JHxN~r~>2elQXWbP&!wcM~cMD&8dQCRbIX!v%*|I zt{2#?&WgU>206IFslZ+zS2Au!dOr+Pr7IKZ?_@mSsfvA*)PWMM3Pc@)7+Jp)5W!+YNg{*66>ub+Usu$P`PGwyem?~*@&+}~ZcgVe0=<~???LL303@plP zWT1c5tO_?ux}X|so*#roY2Oy5v&Vm1l-8LbF#>RGuUAJ4rHmBnp^xKfFD`cww7NdE zSrcmJ;G8ecNW#nVtO=QKjj#f#>oS)PArub>yn485>= zqO6bZSMnS?^tKiyN6)FL)Q2o}pP$Hon3UZRB|F$+h!m-X)F%_6n5K;b3DI8o;aP}o zy~WD<@~EM|3>x?SidhiW=bc4Q*enf2x7H_Ni5Ob)s$fBMV+$fhf3}3Wf3T&`PJ*D* zviRSXA_5<)GppsMN!-f-^ay9T%v)L;-;m@&Y{N z2sM!Cx>4c*dQ=N91)OE2GtRbf*GIy1`D{BQ;X;VTI%bbPM|JrK-OtBO8%o(eRy^qOvN0vwhl4zG9U{Td;@)P!95-@ln3=9a?% z%Q5n#qgADmS?g&qk_uob>R1~PYoF1ZUWFQ{Z|d8dS~S3>sGKeh4W{mXx#T6GgnA+! z4h4#{l5n7Ckc~y%b(jl{i0AOX*MN zkL~hIgPE1}T)WzJSWs@C`yt&JJZqR(o71Vn*AVV@9=J`T{}y%r1NnqWX^R z#~v{uSV*0P>@R%f7P&Z02QDzytEa+J>MT_1rAl9Rh5B*S-B3b(pYsdPNNYatx&T5@ zmjU-&LQGsPH<+O&(Tu%%f7xr5d~qR0V- ztD3-eLv|2xTw6_#D;&NH+AUnh1U62!Zb$~B5d&n^XRJ!1?!Y3is)X}AkQUNA(n_l@ z7f2Tff`IjTS)XZv{A)=UIKXFNs$EZH8kPo>IpPSIx7PT0-t!{8#KMAc$I^QGs7Nm*hXKPg})FW!&o|SiV zOR4&&1johIM(B%hh7vN%xBT6{i<|ke`mOct8DxP5|FDJoiG*7Yqhwt{#!^vuoJn8>NEHNGODgC4heZMI8 z6{C}%`6%|W1zSUtHa?n-eC4Fo@aY*vh&eo00t$8tE2kR`e{bo3t2?dWx2&_n+Un;( zS|e8@8CC)@Rpgnj`BbQmHu6M+HIgu|#v9UJRy?I^4~)4E`A;sM;mA(qTP_|)p2@Leatv1F)v|_6$FuN|d!OOQ z43-D?Pf&9cMD}L?hQn7~X+VPW@J)SNOO>qzPCy_Q?;k&W$my@GGf6S}Oj3_Kli(LR zponhSz>hjV>f&1KqnbOcaDnjzHp8q{Vq`!G#FsD7xjbp}i@CH^)VdI2H)kbs5vdT; zK>!tq7JPh$3#~n%Q_{mS_!9JchMLV*@Ata}j`@MwXb9pJF=0|7ZK%xvJZ*pXqi^3Q^#`Hbq&jD^ZiP zXn5)m&rSEA7-M*9vj5Q3{B<1ldR4cdKhtd}OP+}AcJXgs2!E2=?LWsP35nQ<28s4p zH`Mn@P4|7L{^YvsUf1`YzY)M;sO+8k>k?rU059I25lUK3&E5snR5hvsw9(g5=bzJ2 zQL51=416L84X?Cr99srLn6cN@nts> zgL(Si^5T21SG^~KbiTG1rw?2nNKZI7xs9}*$?IwE!^?%hy`sLiG^YdiH%|wnN`Yhr znz_|p=IN(Ke)8P|-aQf!l$^y2`hgf7<XZotqx*C?yOa}!b!MS`h9bMe*N#OhHUo(v$^8>}g&AkNOScurSWfeYeQ|4wb#zd~Ep zbK12=?4(riL)As)QD5DiU?%-P%BzrRR52J!HKrtk)QSeg`a}KNTk=WNrUW40r_6$Vw9e}59M?3Cljj7bt97U%hMS7tb=+Td7^(JcJ zilC3bN7TBXZ9!wu;k7rR7AOWr7^16a}tskWj9*-i#3^84*ZF3 zNc}BZYijTiwWfG?sG+m#$KK|?h*jhW^|alYAiY!gWtaPGp&thoB1}m7zeUM@Tj#rK zrw2lPw?6ijUOYlH0Vuom9xl0Em_0!RrchsX}q9tnPVWt1X zBG*bVXq|oYfXK|*I9bJ+`C-gOE+gBgf-faP=-0B8YJr@Tbq{7jEh+}#36^QUy)Cyf zN6osGX`0}6+{c2?Q9?NSt5(@LL*}0r~!oc^-fs2^0uz;*bZNj%>$fkU1xO8cjni z3^;%i0e4ef>@Y5YZWjF!n*RXFGX4SI!11`Sf{>ltLUd{O;Xx7JwZ=TR@z8>qR;C$( zr1+W@=-LCG;{s1dQ9BH1oSicN&LJRQ9aYcp(er(*QYe}a*1f?SL>_bM=KbRwIdX&D;qh! zB?Sjm6IB`#rSQ!4T&Fo$&@Pc)+e=psB*$|gs8C_fq1v$LzX+=ucnC9Cy#{H902TRNAAzO{k|eA8#<62tjsl?Cvv|xJxIiM(I1AO2Oju=ToFeE6zNtPAsT|hp{FW>CH;IF}p z^`xix$u1GTYwn4+?dBvdM;zo1PnXRi25YoJT(auwn@w`Bs?km1Nq-(y*Uf4C6Qx&! zbBR+_M*I|?Yz^x={#>0ZT9^4lv!^FBa8TaJV&z*+ZEtV=yjwmH!HobS)FOch9UsnW zJoj7IMzfxH^xv++8^pi~F5m_ThxzNYoz2B|E+Z7Kgd&J@_=D+1cmL+IfQRAl^yBWdPKGmXm67cftk_P$ zepDKj1b1EA2@eN6RuANUA4ss0*axV!lbD{sQ2 zn%)MoqofYF!~5A$iigV?Gw2=BP2x#V6*WQ+lg}U*vPBmj1oQ8n=(pX+(=V~Je5m6Z zzR3C1F={NY{7L9upRMaU_o&_^793s|CYF(TNf{GN*o=o`*vO}B!}dMh+sk=#l(c*X z`!jp*5+bvLB$Z=f#AZ&*R0&{yVjT!zkMYDGFB7bJ??(OW2X%)9It*woz z^P!EY7qv0Z9LW=uytG7m=T@Q{mD(#}gS!qP6zEwuiR*0p`sddfe33Fa z4Ny&H*#1*I$l)8Hq+M2y zdguw!IZoALC9gRH%n!7)C67@`OUbj45+mCI*4H`qoS9s@8sMQG!T<^+g-OU4E$fa) zJGtDA9h@EzcDW;Fq*4>PI+1p5FdX2?<)h%k%V||nfRWPlB?9c#@J?N*`;At_YMPPK zhwC^AK2FELb}NLf%j_*^yH^9f*FPSvDXsUhNg5$*m;<@5hIK$t`s8j;_Ul>dvhGY` zL$u3uT*+3n4lqbD@FYdYl$nfV6sFDoJcjWNu=mhcxHB0U9rcE0 zlV~hMVQ1xob&VUKZ8C?s)NNO&pLfPSP|-^mog&$tm9h*_M?7CHWw7@_4>=xM9fSlL z)%j4*D2b+HTgK~DX0s+IEyCQ$5gy1jdyXk+KT;2)n6dK%qV9ttal3yv%H0#V~;Qmh% zy1*IlDB5wrbCyBc>BM5$t&IeL$$)qxB}8{{hk4wJBTh?24E~&C<2%>uNQ|}396S3a zgqYv?q-%|~=IwUy?IvO_{kKwR7!iGmCjVa}?(KN5PYgJnTk8!)&m%#9A%_()R|C~< zOHj?A8Mg!2@}bm=kDQ4fCTi;(kb&Qizl@7R-PtY<@jAnlS*`weDoOpz_)fpYM}#3o99+Ln$j62cs7VEXOHLTUu%gz|;bksm4h;as0rB0!xVm zkJheeZGp58VtYbBHd)k5WOMOknJ+Ale$GVE5mX#>AMo33j(%|gnwLo zp&osQFD^RT)gW&n7?EIu8B{GO8J-Pff~2t)Ma)m?S5X=0TGEd?QIDA$YPV?d|6B@} z^$d+Obt(IZUmJ#E5cA-WM9|P);usE+XA5)Vi58ymMiuR6BaBNYTd}=rdhX%T^l9F@ ziP>t^m+$6fGcwV3<84YpA*m12baS7_Oyh^?N@luawDLGVUT-Cq4?K zB~-bZKvk$SI9%9%GE_#O#RjfgrfS0+)-_7&N6F?pImd^XEZh+{oghPaZ%D4D!Ired z{?Uy@jEwvmTOltsR|mAv%ZCed$f8m+a2WY6lZ| z)`S?SS#Yx3l$oVD!>-n{icvtcyNSNsGlCki%aZVnaGHY9c|Z)@RThU6Mp2@X<*A3` zb0ecdSU_@EtqzfWfvpm~607?dd9YJL>=f9VscacSHP{<*GucZk5hkq5s=Y=Ph#Vw# zdVym`PBoBr&!U$2a!Uu% z2aD+_#}|@vwY7zLNZ_}~SwQJ2>G&Gz22D4}G&o(&a2>$8kczX_&e7FHYgJR+kibk; zBX`RZN=%lMzHn>B2sammx*oay=z=@JSr-;EOv+eUsl<0gl6I;_)2flCRb*Am9_2+E zQiW{|rPBS&u4t!D%;;RA%CD5d4%0mZpH0gUBFP!?76Au}My@Z-US8hD@8t^hBhH$i zmU>IqpJCHFqDyOn#mV2Y-{-Ie^=l|kxAi_Ap!1H|{1bFe9a)_CDqN~UoZXn6zxE@v z^NU7ag%!8k??&`QrO9QWJUa zFwzLPsAAil9IJ}qwU?5jKxtZ(Km&S%g_1U<@*ZyS|9?hlyq<~LhKV@SaT8FTSQC5s z5&lVC;-CC^{vn^H%_@&kjI!pUsB{vIWt79UjDo6Y##cr0w6!FYS!1?~lYHc=fz*9F zBz$Xo2r?HtEfgBw*!Ji#BaLxSRZrSHVQmJaf~uq1rL;eKA8I*+$)OJ^Eyj( z<7XeZ+i>nXFmNs?eBIl>3bDj2 ztPKjv=ei45u8qU*tc~5(YlF_-xHh~qYh(Axwef5MiyAt~Jll#oN&952_L6yERPkpU zAlz#9{r6Ck-=;DGD7lwbvCcn-ecXK|_VLqAUyWP58reAfW2nSUuxMrwhqy%S@>0M4 zEYwzM0Ad3c;HqXr8VR zs{L-oOTR9b%2#8Zy68<(vx`;Ku1HALTQAR*k^Cc2vp7oT7ST1*#wr$Uw#oQ~90+Qb zRr|^x#hTF0ySgx(#Fwbh-}I27m|$|?Im5T1o`wi z2+V<(V{o-i)Mg>0Krk8Y`54^%wO}(=Wh205XJ_%!BxZOLN4qbaL~gV@K_PU=dDaRN~II7n15eNG5R6=H#}=}VQa1pq(m6Tr_DlY|n?F|U3T z{IfBE!S@`WL249am?!eJN1D;s;}F3?Y_no#M=E}qgzssCeMMR zdxwaOr8-4qFlxxQBejH}2r4l?XFB{rWmGU@3-R1Q%&e zzd&}sCTCB-lyRlb{#>>NZasM&W&@1VjRRYO^&Es-5IZ+sM9W^1{J)?kCYt zTh%uwhq&sS2PH&GQPp+z+n|Htkw6FK)YYH^rg7Ih29huis$md8Gz#PBVH>EYPTbvY$lZPIB8c5Uu-fwVTl_V+#)Sq>4NWRMu`wD%Pq<0M3Tp*+C^>M5RbWK*P^r}Xtthz%C@Bm5A*%X$y^t{ za2y`ZvygX7d9B|>5sYgQD1vlWMtkwkXI7equmepCI}rM59Q&?tDuJfXT*Zvf0n0>- z3*h`9Vzo)uphe%kvl^J$2H#*4=u4U^;XYV+fHTjVPomwa$?>k{lb4(DKY4Gk23b~n z{sh|K;M#eP96Pm9$vLT}G=`O{CTezTV-)823#%@wqF;8Y0Sh?*Rmk4`CLCdYB^<%3 zdkO~c7&yY98iphEfJZRV|NiRSM}C^?EcEMb;sn!Nzi&*PoZc#HS^O8Zn0iR}*Vcx~ zRcUqhpn3pQK=upFq&>@-uvK=(_zTXN*cue~!?n$)w54{0Gms~~f~*$@d?-4889y~t z*#PCdP`L`oQyopYz57*^1Fh>1ldkz&q%$RXj(-{HI)9vUjo+diJCecL@c$jN_kV`xXuE??!cm~It^I#3;+h{J+96A3Nw2c6{jGZ{={r~&*P>eArdqHV zO@Kz*-)5{-mJr}x<#>rk@YutqVj~)I*gejGvd_pfn23}zU}aOG6kHERmjSE9+HN!6=lf15?)5vzvD($$!NhY0Xmf9?4IX7Sy&*v+-ub-y+X@jwc(j2XSH?`!>%AVA_oINQ7ysc>9EhVsS zj&ssCK0*3RqR1k5Zqi>)-V|K`U4dbsy2(m|e;8#0U?6w}%h$-r`fIOXUxfwunKVHN zD*1JFQmHG+QlqNBOqOl#9HYFPyeV2oBFpIO$fDtCK{{-ePlu+V!}FKXp-#0^m=607 z&;cPoo%ENp$3;4{{{%lY0{n3N038q^+RA=8Kh%V(P;Iwnf-&uANBKQOoE&BnYVV%5YG0XnvFC$ubZt9W#^mzI< zc^y=T;PYJk+U?U~7$WFnEs2+bE9)1bdW(@9}Et8 zEbWkRCSWy4oY-DOwI6W`J;jDr( zdL8f7S4_v5{vMMo0n`GP;5$@}^HBSW9UL9|wYRWzMTlu}E> zJQIl%t#V>UhfdlVCn;;T;HOII2Phei?f>g!#m@3+_bsHJtG~@eNp#YGUJ_6+GltXRGlzG1cj^t7HpHYdS_I7Sy8>bMd^mb!9dGc*K}b?6ig3waUR1O0>m$ZdtbkpF0c4&KS@LJi!| z#?jkbeOjs0`X*QO?@%BU#lAAh1>$=%1%e(esC1)_QOy`H5*;**>n>VYyqzyVpkFUvEJDzxoLg%2N;uIC$_LOtN=mfe z`8enb@rE_ep21-0?9pOT$Jh_DdT_Oa&aC>aDO!6utzuPVOz@3B={qXGj$yF-yq~k8 z{*a;5MyHr%4r}m^bqD_G(|6WV)QQEHEsC%u^g0f@<#A-}n$mY+fq4ink7=hsqkY{6 zU;7pN)*W0qBr0QUaz!$IGN zTMcR!?S)R28T^#Z~BR;35a{Mq8vsNXH4 zsACLs%2b75o^FcTLZPqP(OyskeTdWWHe3HbnSHKXPLsB;Q609 z#VN8WHl}Ij+)tV0yxf{_J2k+~Cd^Yc;e21`{U~{7LP2?x?7v$d16oc}Qi3MVd5>g% zgTp|w930SrShkE6nLo;$zT|K`)7C0`F->!^4d_n_cZ%n1mZJu4B1}%5^o$Ma=yRm} z%1crX+7oS#MVc{{9l~ie2)aBCv`zNI#^J#dd-l5}VK(4wK z*Bam7>qqOH%O6_b)mamRWQ|8v&IUuAmgFDwKc31Nx!WM^@HrVX<8@MY*tXWHM?JKL zfE$jw8{(xG%pD>MG8yX1T%k)89!cb5o&j4CB{+K`B{?PQfd{~nkknzRR)%4JkdR;F zU=MQrM+eFC1eY+*tAl+fvudS)kgPPi-oBeG9Gi^QJ?55HK}CJJRHFcs60NXNE^-hF z%&4=#eX=$p*I&C-z_aH){9}DQZ+&}`|H5yBVS&HhDHXVAgw|Bb(uA(Jl6;q*0-H(` z3urjn<~+#-xnhbT{NsYDL~-&6@WnCA7YU0mVC+MiFUI)6?kr|lbvSQ~6bIW!KQsgv zE{q-e59+?-2&$1&XNACpLjq_@4jC&Hx<70D8``RAn}AcM<$kMMpd*;|z=}drtK4u? zICraDOLZ7}^dlGNs+zu8ze#&_Zh+>3?SfS$)*c@k9q;fdvPTrVW%?T|5^x zR+LXauS}H`u*0}U@xp6ZHsI|@32)F&(%7NXrM2%`pBu>G4dqruAIH5i4o3cW`$l2# zR7EA%@KaZpDY9}-LANI{o*9Xh^<~3`kQI$>nx{04Yxu$A5(D67$M^H*KJI62;pkdb zP?m-cKIlWnu*G!1G3$Ae45R$?_vwm$M88Qs#6jlF?#plLXMBxYvA2t5JO*q!v(!1g z{NL!We-==Fjw4EpK!un_sgolEaFHJ?y~nJ-ZJmgS_d%+-Hk0$XNa`J$h<8hpOyv2u zGRJ%>Zkkk_Fh$6pzn6S4(Zej{?xWG$I8(bM&N6H|YzghT2@GxtNMV%O=zYMAQ6 z54rZpK0Km@x!ZAM?TX`s7qE0#f#f+` zGf0j&y&vZG5O2q9#5bQ~h=P@aVu^yq+Nk+vW`wr?U%F2Pv>G>yPvj|aO>F^`6U)3+ zTVTK+A0i^&{XXK~8$xg>u?^9JY{~*RL08PI*G*)(kv4r&4@UV2Y2(F98-h?J2#eLD zxPWr@_p&q`>H%t-Ie3NK1XRu_^MMp4A6VZptQRO&NRbK8no>a)ndJkke(R88Q)5ty zSjYt_=xxv=8!tu_rvIEM#7Y?;9UdGl7%s1uP|}8i6!nw*BzGSvz96paV^D(m?26s| zro;%dm5f#OTTLZ@GyOqC?t^XdH0S6#I^RJi`tl+Aa_W!O7RY%Tso%hZM=<6dYqOx^ zMeSG8)C`UT{#st&sm|+lCX=!WfKw)QYq8cMg@NlXWlCsboymQZd}5mur<@weU#1W+ z8FcHQK|?QFSEkpUNCT>Tz&4&wzT?U7f%@GgJCW|O_|ZhVEep#DQ~W)p;=L}f@l~Hu ztLU-YxHn&0iEt;*d1~U=_$JO734g!VsD)$8t4|R5EPTvBrYxo*DG&b4Tkco%ctJHO zpN2#sw^`o+<)!-5UtQ{+{;ZqFK9t#;4pyZS?MqmAO^pl~tmj%eh$~r!5bQL4A7ILV z?wcQB@G(tilhkmvhuo20!0S4JdY|ykoYOnQJ)J**XJJ*r_7~-I9V*JjX?p&YN4Wx( z9(PBlkE>)qx=hymJu3X9Ui6CDM1iWGg?b6BB9qD7xFyk8Aui>m59gkS0A%x)^YBfn zBfHS-a_W``ZM?CHp{E%?k}8tdtK1;1r6$~8v@19LO{c?!H=HoAID~)hg+CnNUbWro9W4k(stP6TDm@U6MiSE zC{#?csD8XUbiU5hYvg-{=*mrFb*bdj{9;k4*T|L&7vFpPT*E2(k;{e8s*l662HyZA zUJlAKLZ2+0Qy~LYUi>&vz^RQB1P1cT=O8rUL`LGZ=)gIq=p0I9PT79oeGERs_m57h z#Q2*JybsS89gKH(F4R`ql&lcgq_Zsq&_wGpB6EG1-LZVRya2r;`Z8PMfYnA^G61av zVgA^TUm&Si>2pH*{FaMpl{Ks=5=wL$*9Pj8<0VX~xRaQ&&-v6eh{c!i7s zNy66^sTcgh!3$N1>FqsBQy5eu;-p?J-5M+$H~q^ocQfazn7e#nUnu3RbTcW(M@Kz| z!{W*@p=lOrz3QOw;SOx9{dipT4e;u_)q!R()RX%{?-hRGCw>#UC`%{JBh7pEPvD$?3CMel}NT*dkMj==m14_MJSx zbD(k;-8`Rc=4?5-iNZjen;@evL7?k81^*B4MrS;vOv#rHFP-?Wd1F=?SiL1*lv=(~ zeozci%eyC7Wsq$uogg+%B?u{9Oju%my$PK))JpEK3Rt(yv`R1_3DAAcgpGxZrVpLw z!jvqtK1eOy&1_Xu%i3H~AN)WM0m?Q}Rw9^5;+j6WbbO$f^l_p_Mo!T>=`Au-J5;93 zu;tP9IZRJ?Bbv=P{$*AO-b^$o5olc-0;7sJIfKMCoIJgy6Ha`^r9~l%L=-^ts?&s= z5TJKL0Ka3S!ZjV++{P9bn!s%%7U0cM{karnzY$&0)I31fM@6 zrw8nuBWrq|#ab=KDoRM~9Z%;HMJeIyCw$T;Q-!DMk+!w6UO*>gpnFM!nRTHDlWM1WOCxAKdKV#X43j}}@OFRVt?>caHlW3M% z0L1aX&oUpR*jKSk>aQU{*RI68xJZDZ{J%wWe$g~UN;XdEP>i9&{7dNoXur?Wfs^19 z9VQp)Fpj6g8{3W)6r@-AyMX=kEolCnZY?Z-b{oL*?*>*mxF=&d(@}QOp$1n35!8kI z5-b+SKG~KHwry!CD9AnHyHH;BUn+kSV}3mp$*P-YV;hxSR12AET7<^G%s;4=iwof%-R`lo@pG&=Bx02Vxu&qI_}=netH5g6EX2v9E1 z#?Td>?ziMj+0Jcm3J88tz??{8Dmn0SBwN7-=zOYHd_9QA^ANE+u&VWmHMP?y=k4XK z9<+oujvD7j`Q*~O;c4z!w@hp337;w85790b*+T=wH1Ys~e1Us2l#(GV0vt5J`(IcS zhPg{+z7+z+n&`6@^+SO+;4Q_=wnCSW*dz#?ni{#k={{P@2=~$PCb}R^@XQLrmqq>Ng2!fl)Q=a*D~K2nCx^L76E{x1gyngPY|}M%ntb&9um2^p;)iz>Url zF^zVF*rE14Q2AoiGixk^zC8C~wtkuqH=?|w=6P*(wL4mm?qRGG;UjreERW^hHD|&7 zLSCw}(ZEpFE)&?w*J1ULrs zBid|lk8&Jpli956I}Xug2JGCWq<0A!%CoA84?e*oO>85@aw*CuSgd(T8MOyoa=S$f z6UcsY;rNfhs+E%C_Nt_{3*F$Wk$G)>XvA$GukDSG zFS?X@H)gFKFRoP^LJVk(%2f$)(@r1(ZXlQKg>1Mw5$-yPsMV}YR<-RhnEW<(OI8oS z{~Z(Zq}Bu@L@hlAn%S;nQWJ;KHgM?ExZb(J^#c5Fu6%!PJND&4WudN0jI6ha%ZAm< zCid0^!P+}3SWVWckWn@&lW^E=s;m@e)U9pJuFtcw% zGx=?josWw6cNi-1&k3CIKSG|=-@-frkEi!L9?vhN&VO}j_0AIq*2GK(;~~vl)*5 zb&uqkd{+N~VgHGQR{vA8{nuo)vR%ZOQ)tZjmYyy;WkXcMYzoCnf$Wm4EH%^~RD4en z7tlWIDFUBaQhnCr=5X~9k-I}ansJtxM8VDykkoGQVj!Iae0orj;j}vk7Fx&R2ih`O zDfa5)Nqfc>JoG$LvSRoNTbs*2rxmL1H}ijjw&U{8IXY<7`@;VT#xs|HF8S`t{^>kX zf8oq6AbY9U$Q6Z(t>l^hKJ6%t)?0c^jFlOaVQ49{d?hy~gHA@~`AT6-*8ZI=@|Dt< zB0h>Yw>SqL^=(n1%?kFGIbG60iLlR2FFxf6rJsUqN3c^aIZtt>qW2nSZ%@{QGc0jt zEq6(CPl4Etd?jkqN=O7%&09&9n#XtFzdDnf_bWP4Q$_d7!~ctY74pOdy??{#%e~J9 zv(5jxpsr8(+h8G_I^3?RR<9jy*;9wxRYjn+!)<%&aJ$Mzt{ras|L+`bi0WKvYu)Ro zd<@Um_!wS8@kKY+6;F!~>|v8rBI(zt5RFNna#9(#=BF=$@nvsL9v&<-)E2J8^MpdF%R ztPq2Eo58h4h(f~XqCX%MF80aawJWszN?OLQ5HKn1s~<8cXl-n;4x0`(B@1rJc~3Q1 zb#?)xn!XaFIzwOKk+OErKMnhz6xZRERn?^Xm@|B;)<8$xh zP-kC@e5y ze&neWM1zB=$rR$2LCB<3boQ4=BW6TYqyofi6Wa0_({!~pD3CtaBCf4~O>$5v*$A9t zD3wf6CxmIJoA=+$^id5TY)DU3FJ_JGpn&hy?K4}8=QG%L`$oI3jxOdMwyLMM%%ie&Ido?`a6m3AQ9dCKk%KNP_wq# z^s#tCc+)2ca(mau^f2%HfmPr3B*POI{J`SYV8c=fNQH&CuJ{^OU?IX;);BY)&h6!i zgq5%R*wrG*Tne^QUI-I*O3tcJOg6`qhS@gBUE zyi}TCJep7;z&ae7Uvbs6Fp8q-#}2^G+OSGvl*|jXGLFHPJM>QzktncFPgb_Y4pHny z!kDAB_B1Gm6A+2^xTrIi*VO(u_v&v46$K^N3^P@crjn0k7aGfduaQt&iRgq+5pXDhbhEQi0)R-%%Ug|?qpv#$jm zCPh-_#bl)UY{zBO7y?K+q9=Uh!X#!zX~n~4SXX)@w5h5rlhUuZ7PeAVx%vVgBg+GW z7t&BH_0jB&A<%NDo*W~QB2pJvhLL&Ff+8iG0CBcVXXAn5{DD2B7#YyKfx2iwv)>eN z`#w%_@k%QiAu*=|g@*MhA`8`#tbl|537M`)xx%GW=L20(3Y0}PxiQm^;dK7|lSUxw zERV+;&`N3*20&V1Y@PI;}LpQw9<-dn|_iIV31W_8*WUMUo=vze9@bd?|ACzbi#Pz$0At z`U5-?yVGC|6rV+kA5cfoq|-@~IbU~K_M75$g6AGpKINe^rKK$%0yAay z3z(?jtF$-^G>qAnq{mHEl-#7U|86#=42`_8N7RHOd%s#f`jyR2=d5A5t4(m3c_86Q zYYOMuO!>^22bw07k+uwG)HZTOYE zXIHPHWWonojLV%W;wCNHJ;2vs-t3umH6jmu*TMwR=CT9T`*xd!~@+# zX1~KQ4tR=9N}UNG=s2Zpv@rf;UwyEWIV+5Hq4L!;mCUKaJ&(R2oV$lJ2VfIr>JRsj zv?_&9+$<@G%~8c41)LkXQtpNaIUB0L?U9^}tWcm!NAZ{v6768ZPfQ~FwKhb6*{@91Rbs0$12dyr(iP6HbXC_NcAos?9^ldI=cK7lymU>) zW>?2ayCYd)*-kc|6@NGixLp_SOa{HCoNTd!^`fHvqRXUTklwEZ4HddguhqwTU4w3* ztrhk|HsRJDxoA{5_G8?4<4Q}Dj?OLjAVxDii|?I)k9PL)G>VwQ=>FHR!A zIJetrpZntVPX~MMtCiwutOo|7vRd15fHv zKmme7^eFu7-H;K(&wmp51jR(&gr$?~Z!-E`BXp}{Zas%?y~cm7ZEkh0p0Tb!RxATY zo06_3eq``7|IedywlL&lg>}85E7?f$B>Vb8 zl1ic+*cnO{;h?OpnrM$@UAVuR5e+s{yuE5r^&J0qiZXi$QjfEAp##Xz?F`~GWjnzz zq5!i-w@^X7A0!RYd+bz$UV)T7QU>z|molM}sn1)hWK@lG0&@**FD#g$km%{_qZ=yj z2X9k_RR0o~`5i6EmrlgXtE4$C)RshFa}n!zYvG@b{QAoJ`tl}l3BS&}1z_G!Umh4> zM2(P){v`~Hr|o4H`R)r*7hdhz7hK_NsbXVtOjYLK$Bz=@t6{Htnj}sVW~EA;Fsqp4 zgjrJ+@ag$UjG@Mznc_F$JnhS;#Y(6w-v}0_5+$uj0LUYou-|rn(Q1ahfu`HpC*nEi zclT-MeU^}4GA>`$JwLdbD%XG0`Po(XC%(_oP({MXbyBEkkLcS6u0F@Y&m%7HLd9VG zl0RD+fA!V(e7{GgwNekck@5>GeAijHoFCTH$C3I(*_MCi2`tl)x*^4Tsf1&DF1I)5 zpI?WbPlpQ&2FZ1ZzMQcypVB%yBU)i(f4HcRD-e%R3fwB&w-SL{Nqq|%?2qkRgR!zI z2n_@GM*1F>&>08rO~zKuyqjs@-Yjr$9=Nv%w7Cr2Tj_gP3}_v==LO!|1nzAE-`fT5 z?F07?fqTb5o2ipF!_$FHWCD+6#}?6Zfm?a|Rv~b!I9Aq5Ed}nC^*xX{H;KT#q`rsj z-k$^}a$SmJ3MxHXwr=hmBP;NC27Zyva}(DyK&W*NA*()SQPunyew0&Q*r z_qKt1yTHAD;CqL_y<^~esldJTL|GV!OyFKN&}QzW&B&C0g}`IQKoh0Fy|R7pQ)q|; zr4_{zwknI9aSD&vt#pb$tn<4;!&6RDb>+zqJAi2VgV7P_e^QK`fQr!c12r2}q#wAG zt33VCEd=lsdnX26ag;l}MMgzVe4637C1v+dH}3k4QwCU1rfYV48T^&PdubVHFFOfh zJ|@aUNv-J76nj%nKTUwHvJ4M`Hw+$cokil zD`?vK&O_JMoUIG8BsTtOqE>MH}sC^B`IZf+36W=FSq2-vUSh~39%9@2?^*l6*|QO`(36= zo0}*cB29)~rIX{H5I8-x@RFlQtDhC5H87uf#az=N=;W(VFN4Y18nfcf&oa|nk2JSq z>{6aSvSPdaatOcGJDceC!^`BPS41aGE{wf19BA)No({c@99>aqnS2aXDw~qKA)-5!AvNufh15hCk!^c!){RQVbZz(@5w|ea+4e;!`j_ph(b)l%t`6aK;D?IIPpYY8rbA3q*t-OnilOr12iK*iHY00Uw zpWIf8u0bD<7^%)A?9a68A#x27XuxLrK(qpIpbB1|gcf0G2wSQ5PY?(|+_pp195T#3ZJVy(6* zWdeSl%{V+`hUmp4axM|87O zf~?xQ#&Q!X+eyP_Kk4j@*RVgtW9{A{^K2{nL;x)97)t9M@QB)zr#yctBPdvL4*T4zHe0%-|5yv{8QANr z`<0#6ADz`pE`9Y7{%ZI1tC=tQs^@>Tr2MaTLS;&W%@Yvuy4GvD^`)}MRKnfRAJdw~ zw2>zK6>Nz^6foLzLe%>@uOS{*;g?C!z=O~fwE5Cc|FuZt-It-U0 z669FA=x%Bm&=yrzkwGXup%6Wu(GU3)oRD1qe0=pe02Vz5tAXi~5T)r41K66ui8BDU z1~`My12(f)PG1KZboPR_ZtkxYft4fk9MK?&dk(C;9R|(bWwA(K`#y5$WfrNIdExkC z>T8o71r0*({*IujO^gadRIYnTN8Yq3oEVF-4O)?K&({!Ux(N{7pu8CPtMk>AQV*RR zS^tJjNv(PFSrFj3Uh~t5b>N(DW;$7tmrlcLy+#8yLuh$Ii!C3x&CK8*T}Neec6|_oz>{O`Cz&KzucD$)I4O3;-{DGN?(d&&hiY@gsY?*o%Vh%Yl#8xqd+VChr zsvrWR9a&u^C?W0AHeNky&#<%cLw^edC*W;2D}7atJQC@mrqLN^x?VV?N-sdbIW2}2?YZ6?x~kM!=>G1zsc@5R+ttq7 zJ50aOHmq>ynA3OC*#6JG)_ReN!-4)N}4LQEl zn!&uIKG*Y@BiMW)i(IlOTMF2nsMFJ^_%_Hq;eoJ*I5PL>Mtk)WEJ_ASIHG<=zC%herveU zDN_brJ;UI|s_dv_Rd-fq-2DQyH?@-GJ9KF+tm}PrXN6ZKZXr4iI2 zR_bf=OrU{=InQSkN*2gq`sUtdlM{Sd89S9AU4$Rkbp}8U*Ib-QcG&ijm#2wif?)WEpYDoKQw-|V9w;)A- z8=%`Ph64{i9riW{?*9Y_;@`}H{2yKlF(R^{#f_X>4Pt{ER&uonog!OFF3#!{It$$F zvpU7){rL)=Vo;0FDK58sg-((FlR8Dn+`hp`$OBoTgT6p8FpJMl|rT}ub>Mk>n09*QkIy5qPH-sd#Zt2aS6X)fhQJp6;lc< zRH;A)FP#-gKjk&apxeSCC6UEoLt)R;+Ep3}#dni2c2!T_5Vc*Qe$H9J1l-hPc0jLh z=e*FDS|>_ljd#Fn!tArL8N^f@fetuj-kd>rOVn{ZI)E*RR&BWYOt4ncKRmv%p^vEJ z2@7#>h3GL$pz^XLZbIPP(u(lj-{@@v!u9TLh|z9IOgfSKl?p}sebzR7;xq)#CR1UG z2IQP-UtOVIlJhv1oanLbcuDNgm#YlL>ty)J|F8aeXlBh2H=p^7Z|Xm8%Dv5K)A z&l=itoYYD)^WjTa@5;K-r6rA%*9(1yfuFuNrN6Xd^SAX72)MMwW#j{MMyt!|H|QPl zJX@ZEfVWoq_`)#)@(VA&nIqyepiIK7iqh4GWajOac697q3Y8cxqK^RXU$41tJi}m> z)eA*dhtfw0O{ygsmzKwOY{$F2eQ40y227SERxt=1ePzR`pn8U2OcA=0bM z&23gX8Pk3h*`Viwjsnw@zoNMVznqR~tUBk$%2za&;g|DqjcIjpb_LyXEB{~>-CVi4 zS!f#zKhiF(&|HGy7$8oQe7(OWMEh1ou6v`qY25&1*VNDW-&^&ikq3iXc^--I#2Qt@ zfUIM{w9n0h*=25~cfkBfD8yNnvIqPm7CeBLQw^l4L%2G!s5q#rp_GZ?RkodoJ?1!$ zG%SS53+KY^_uh=?8MH%K&G9<4>R0P4QZlXess|ZCq3O~O=)0`%aCp^{Pm|@Lk=qXo z$9Ky9p57E)X4-6}&rus`9a0^Hah*H6y9?!axAo=SeG}@g8*7c5OLIQaX<}5;(L2<| z{&v2kzptO`FJCxO(&+lV#}a+#M_=Wj7gQx1x?&gSzB$#X|e}o%B?hQ zy@g?kFmUhY;>af#Mjkjo?H@u1sQFr-@3oG6#nAaBs4qZ+UsVsQ=;+Bgp74*#t~nE> zHqCw0gyq0^wmk)tuo95Br?hx`YQk8^tMsEcou6doft@k?SUlPgZcdN{J-EG4aDD1`5J z10#S}ckv@&C!f{(g#|d;yZK=6b89*&_`OeF(R+SL?Br;Tz0X!ToTbd_{+fKV8=2=` z7ic11%k;aESZh<(e#s_M_{uhXckpV}A5QK#gFPXmyDPG9MmMGwjVV=0>7*H3%iU4~ z$py;wi5?n=4(RQ%Ol#A*=vCX-2*ov46fs*25p||8zRVEyisKHyByw_ueiW6g9@Zq7 zg4kd+lZAKu+`v;d1{8ROk`Rsf#@N$KE^1h~PwKyDSZRyX^KLn0lknKIqs6Uvg}B9c z;J8GbvZ%7S{9%tME17TgNJ}V^fyZ$%mRD>cr5-?T0@&_XJj}I6wSD9{@yrW@7B_?v zSHG!miHcfyl$QpJZm4RJQ2j!{uiEG*)u>zWD3E){`kB#2g(qt$^PDkKUbN`L|@WFi+jS`|YFyD)M%WtM{V zh@%@+mZ9$tLSLE5sIMTF&=nm@tS8{RbNPTR%GvT{NKxJQsK`7933Ri36HLrdCuVEB zRX57mEvgVZ`-pQy>b0Juns91J&wG=%yH&PGPUXRfs<bH<2jwtbdWw9@2EOd@Z19GkTTnGw@!WTQ}5hq$w^O)9z=Wfn? z@@)ga8E1vJofRg7t!36a)ifv=U}QDJrnJO7q$z4ZcOIGOOrt3!L`Gr8z&tL2`ebDm zD8}24PFJi0;%JN-5sp@Ljz6*8)K7D*KHz+WS+vqQU~+P>;JYhw6rN6Fru>7qW(^TG zJ-q52v^7^m#b4X-?EZ!_z0rQ~;&Jc6(L|@P2kc)5L}l3`$i%beIJ8V?l$c?+7@TES z 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

允许公开浏览的目录,多个目录用逗号分隔

示例:wallpaper,photos,album

支持子目录:2026/lucky,2026/rich

访问链接:https://你的域名/browse/2026/lucky

","webdav":"WebDAV","webdavTooltip":"启用后,可以通过WebDAV协议访问和管理图片","webdavUsername":"用户名","webdavPassword":"密码","webdavUploadChannel":"上传渠道","webdavDefaultChannel":"默认渠道","webdavChannelName":"指定渠道名","settingsSaved":"设置已保存"},"customerConfig":{"uploadFileList":"上传文件列表","fileNameCol":"文件名","filePreview":"文件预览","uploadTimeCol":"上传时间","ipAddress":"IP地址","address":"地址","uploadCount":"上传次数","allowUpload":"允许上传","allow":"允许","deny":"禁止","loadMore":"加载更多","loadError":"加载更多数据时出错,请检查网络连接","syncError":"同步数据时出错,请检查网络连接"},"publicBrowse":{"searchPlaceholder":"搜索文件名 或 #页码","fileCount":"{count} 个文件","loading":"加载中...","retry":"重试","creditText":"该图库由林酱贡献代码","loadingMore":"加载中...","allLoaded":"已加载全部","creditLink":"林酱贡献","browseDisabled":"公开浏览功能未启用","directoryNotAllowed":"该目录不允许公开访问","accessDenied":"访问被拒绝","loadFailed":"加载失败,请重试","rootDirectory":"根目录","copyLink":"复制链接","copied":"已复制","downloadBtn":"下载","swipeHint":"← 滑动切换 →","rotate90":"旋转90°"},"transformMedia":{"download":"下载","playbackSpeed":"播放速度","normalSpeed":"正常","playMode":"播放模式","stopAfterPlay":"播完停止","sequentialPlay":"顺序播放","loopSingle":"单曲循环","more":"更多"},"directoryTree":{"selectDirectory":"选择目录","retry":"重试","authFailed":"认证失败,请重新登录","serverError":"服务器错误,请稍后重试","loadFailed":"加载目录树失败,请检查网络连接"},"floatingSave":{"saving":"保存中","save":"保存"},"theme":{"lightMode":"浅色模式","darkMode":"深色模式","autoMode":"自动模式"},"common":{"confirm":"确定","cancel":"取消","close":"关闭","save":"保存","delete":"删除","edit":"编辑","copy":"复制","download":"下载","retry":"重试","loading":"加载中...","success":"成功","failed":"失败","warning":"警告","info":"提示","yes":"是","no":"否","all":"全部类型","select":"请选择"},"validation":{"pathMustStartWithSlash":"目标目录必须以 \\"/\\" 开头","pathTraversalNotAllowed":"目标目录不能包含路径穿越字符 \\"..\\"","singleDotNotAllowed":"目标目录不能包含单独的 \\".\\" 路径段","consecutiveSlashNotAllowed":"目标目录不能包含连续的斜杠","invalidCharacters":"目标目录包含非法字符,请使用合法的路径格式","uploadDirReplace":"上传目录"},"language":{"switchTo":"中/En","switchLanguage":"切换语言"},"whitelist":{"title":"白名单模式已启用","description":"抱歉,当前已开启白名单模式,上传的图片需要审核通过后才能展示,请等待审核通过后再进行访问。","goHome":"返回首页","goBack":"返回上页","helpText":"您可以尝试:","uploadImage":"图片上传","refreshPage":"刷新页面"}}'),l=JSON.parse('{"login":{"title":"Login to {owner} ImgHub","adminTitle":"Admin Login","password":"Password","username":"Username","passwordPlaceholder":"Enter auth code","usernamePlaceholder":"Enter username","adminPasswordPlaceholder":"Enter password","submit":"Login","success":"Login successful","failed":"Login failed, please check your password","adminFailed":"Invalid username or password","serverError":"Server error","systemError":"System error","authRequired":"Please authenticate first!","authFailed":"Authentication failed!"},"upload":{"folderPlaceholder":"Upload directory","pasteUpload":"Paste Upload","fileUpload":"File Upload","selectFolderUpload":"Choose a folder to upload","dragUploadText":"Drag Click or {pasteShortcut} to paste upload","pasteUrlPlaceholder":"Paste external links, separate multiple links with line breaks","pasteUploadBtn":"Upload","pasteSave":"Save","pasteExternal":"External","history":"Upload History","announcement":"Announcements","noAnnouncement":"No announcements","announcementTitle":"Announcement","announcementAck":"Got it!","settings":"Upload Settings","linkFormat":"Link Format","manage":"Management","logout":"Logout","logoutSuccess":"Logged out","viewDocs":"Documentation","switchUploadMethod":"Switch Upload Method","copyAll":"Copy All","retryFailed":"Retry Failed","clearList":"Clear List","clearAll":"Clear All","clearUploaded":"Clear Uploaded"},"uploadForm":{"deleted":"{name} deleted","uploadSuccess":"{name} uploaded successfully","uploadFailed":"{name} upload failed","compressFailedCannotUpload":"{name} compression failed, cannot upload!","fileTooLarge":"{name} file too large, cannot upload!","compressedFileTooLarge":"{name} still too large after compression, cannot upload!","copySuccess":"Copied successfully","copyFailed":"Copy failed","copyAllSuccess":"All copied successfully","fileNotUploaded":"File not uploaded, cannot copy link","fileListCleared":"File list cleared","fileListEmpty":"File list is empty","successFilesCleared":"Uploaded files cleared","successFilesEmpty":"No uploaded files","noFailedFiles":"No failed files","autoRetryOn":"Auto retry enabled","autoRetryOff":"Auto retry disabled","autoRetry":"Auto Retry","maxRetryReached":"{name} reached max retry limit ({max}), stopping","urlRequestFailed":"URL request from clipboard failed","chunkMerging":"Chunk upload complete, merging file, please wait...","fileSizeTooLarge":"File too large","chunkInitFailed":"Failed to init chunked upload","uploadError":"Upload error occurred","imageLoadFailed":"Image load failed"},"uploadSettings":{"title":"Upload Settings","uploadChannel":"Upload Channel","channelType":"Channel Type","allChannels":"All Channels","configuredChannelsOnly":"Configured Only","noConfiguredChannels":"No configured channels","channelName":"Channel Name","channelNameTooltip":"Select a specific channel name. If not selected, load balancing or default channel will be used","autoSelect":"Auto Select","uploadDirectory":"Upload Directory","uploadDirectoryPlaceholder":"Enter upload directory path","autoSwitch":"Auto Switch","autoSwitchTooltip":"For non-chunked uploads, automatically switch to another channel on failure","fileNaming":"File Naming","namingDefault":"Default","namingIndex":"Prefix Only","namingOrigin":"Original Name","namingShort":"Short Link","filePreprocess":"File Preprocessing","filePreprocessTooltip":"Convert format and compress locally before upload, only applies to image files","convertToWebp":"Convert to WebP","convertToWebpTooltip":"Convert images to WebP format before upload to reduce file size. Falls back to original format on failure","fileCompress":"File Compression","compressThreshold":"Compression Threshold","compressThresholdTooltip":"Set image size threshold, files exceeding this will be auto-compressed (MB)","expectedSize":"Expected Size","expectedSizeTooltip":"Set expected image size after compression (MB)","serverCompress":"Server-side Compression","serverCompressTooltip":"1. Compress on Telegram side, only applies to image files uploaded via Telegram channel
2. If image size (after local compression) exceeds 10MB, this setting is ignored
3. For high-resolution, transparent background images, it\'s recommended to disable server compression to avoid issues","enableCompress":"Enable Compression","confirm":"OK"},"uploadHistory":{"title":"History","totalRecords":"{count} records","switchView":"Switch View","clearRecords":"Clear Records","loading":"Loading...","pullToLoadMore":"Pull to load more","noMoreRecords":"No more records","emptyHistory":"No upload history","linkCopied":"Link copied","copyFailed":"Copy failed","clearConfirmTitle":"Notice","clearConfirmMessage":"Are you sure you want to clear all upload records?","clearConfirmOk":"OK","clearConfirmCancel":"Cancel","recordsCleared":"Records cleared","deleteConfirmMessage":"Are you sure you want to delete this record?","recordDeleted":"Record deleted"},"settings":{"linkFormatTitle":"Link Format Settings","defaultCopyLink":"Default Copy Format","rawLink":"Raw Link","customLink":"Custom Link","customLinkTooltip":"Default link is https://your.domain/file/xxx.jpg
If custom link format is enabled, only the xxx.jpg part is kept, please enter the rest manually","enableCustom":"Enable Custom","customPrefix":"Custom Prefix","customPrefixPlaceholder":"Enter custom link prefix","confirm":"OK","s3Link":"S3 Link"},"dashboard":{"searchPlaceholder":"Search: #tag -#exclude","sortAsc":"Ascending","sortDesc":"Descending","sortByTime":"Time","sortBySize":"Size","sortByRawName":"File ID","sortByFileName":"File Name","selectedItems":"selected","clearSelection":"Clear selection","copy":"Copy","delete":"Delete","download":"Download","move":"Move","tagManagement":"Tag Management","addToBlacklist":"Add to Blacklist","addToWhitelist":"Add to Whitelist","linkFormat":"Link Format","listView":"List View","cardView":"Card View","logout":"Logout","rootDirectory":"Root","totalFiles":"{count} files","noMatchingFiles":"No matching files or folders found","currentDirEmpty":"Current directory is empty","adjustSearchHint":"Try adjusting search criteria or filters","uploadHint":"Uploaded files will appear here","loadMore":"Load More","totalPages":"{count} pages","jumpTo":"Go to","preview":"Preview","fileName":"File Name","tags":"Tags","channelType":"Channel Type","channelNameCol":"Channel Name","uploadAddress":"Upload Address","fileSize":"Size","uploadTime":"Upload Time","actions":"Actions","externalTag":"External","unknownTag":"Unknown","detail":"Detail","copyLink":"Copy Link","moveFile":"Move","downloadFile":"Download","loadFailed":"Load failed","copySuccess":"Copied successfully","copyFailed":"Copy failed","deleteConfirm":"This will permanently delete this file. Continue?","deleteConfirmTitle":"Notice","deleteConfirmOk":"OK","deleteConfirmCancel":"Cancel","deleteSuccess":"Deleted successfully","deleteFailed":"Delete failed","blockConfirm":"This will add the file to blacklist. Continue?","blockSuccess":"Added to blacklist successfully","blockFailed":"Failed to add to blacklist","whiteConfirm":"This will add the file to whitelist. Continue?","whiteSuccess":"Added to whitelist successfully","whiteFailed":"Failed to add to whitelist","deleteFolderConfirm":"This will permanently delete this folder. Continue?","deleteFileConfirm":"This will permanently delete this file. Continue?","batchDeleteConfirm":"This will permanently delete selected files and folders. Continue?","batchDeleteSuccess":"Batch delete successful","batchDeleteFailed":"Batch delete failed","batchBlockConfirm":"This will add selected files to blacklist. Continue?","batchBlockSuccess":"Batch blacklist successful","batchBlockFailed":"Batch blacklist failed","batchWhiteConfirm":"This will add selected files to whitelist. Continue?","batchWhiteSuccess":"Batch whitelist successful","batchWhiteFailed":"Batch whitelist failed","noLinksAvailable":"No links to copy","batchCopySuccess":"Copied {count} links successfully","batchCopyFailed":"Batch copy failed, please retry","batchCopyLinksSuccess":"Batch copy successful","copyFileLinkSuccess":"File link copied","fileListMemoryCacheWarning":"The file list is large, so it is being kept in memory. Refreshing the page will require loading it again.","indexingWarning":"The index is still building, so current search and sort results may be inaccurate. Please try again later.","loadMoreFailed":"Failed to load more files, please check network","moveSuccess":"Moved successfully","moveFailed":"Move failed","moveTargetSameAsCurrent":"Target folder cannot be the current folder","invalidPageNumber":"Please enter a valid page number","pageExceedsMax":"Page number cannot exceed {max}","loadingData":"Loading data, please wait...","loadDataFailed":"Failed to load data, please check network","fetchFileListFailed":"Failed to fetch file list","refreshFailed":"Refresh failed, please retry","selectFilesFirst":"Please select files first","syncDataError":"Error syncing data, please check network","fetchingFileList":"Fetching file list...","folderEmptyNoLinks":"Folder is empty, no links to copy","copiedFileLinks":"Copied {count} file links","copyFolderLinksFailed":"Failed to copy folder links, please retry"},"dashboardTabs":{"fileManagement":"File Management","userManagement":"User Management","systemSettings":"System Settings","fileUpload":"File Upload"},"fileDetail":{"title":"File Details","download":"Download","tags":"Tags","blacklist":"Blacklist","whitelist":"Whitelist","deleteBtn":"Delete","edit":"Edit","rename":"Rename","save":"Save","cancel":"Cancel","originUrl":"Original Link","fileNameLabel":"File Name","fileNamePlaceholder":"Enter file name","fileType":"File Type","fileTypePlaceholder":"e.g. image/jpeg","fileSizeLabel":"File Size","imageDimensions":"Dimensions","noDimensions":"N/A","uploadTimeLabel":"Upload Time","channelTypeAndName":"Channel Type/Name","accessStatusAndReview":"Access Status/Review","uploadIP":"Upload IP","uploadAddressLabel":"Upload Address","fileTags":"File Tags","noTags":"No tags","unknown":"Unknown","accessNormal":"Normal","accessNormalWhitelist":"Normal (Whitelisted)","accessBlockedBlacklist":"Blocked (Blacklisted)","accessBlockedReview":"Blocked (Review rejected)","orientationLandscape":"Landscape","orientationPortrait":"Portrait","orientationSquare":"Square","linkCopied":"Link copied","metadataSaved":"Metadata saved successfully","metadataSaveFailed":"Failed to save metadata","renameTitle":"Rename File ID","renameLabel":"New File ID","renamePlaceholder":"Enter new File ID","renameCancel":"Cancel","renameConfirm":"Confirm Rename","renameSuccess":"File renamed successfully","renameConflict":"Target file name already exists","renameFailed":"Rename failed"},"filter":{"accessStatus":"Access Status","normal":"Normal","blocked":"Blocked","blackWhiteList":"Black/White List","whiteList":"Whitelist","blackList":"Blacklist","notSet":"Not Set","reviewResult":"Review Result","teenContent":"12+ Content","adultContent":"Adult Content","fileType":"File Type","image":"Image","video":"Video","audio":"Audio","other":"Other","channelType":"Channel Type","externalLink":"External Link","channelName":"Channel Name","clearFilters":"Clear Filters"},"moveFile":{"title":"Move File","batchTitle":"Batch Move Files","targetDirectory":"Target Directory","targetPlaceholder":"Enter target directory path","hint":"Tip: Paths starting with / indicate root directory, e.g. /photos/2024/","hintMobile":"Tip: Paths starting with / indicate root directory","selectDirectory":"Select Directory","cancel":"Cancel","confirm":"OK","retry":"Retry","authFailed":"Authentication failed, please log in again","serverError":"Server error, please try again later","loadTreeFailed":"Failed to load directory tree, please check network connection"},"batchTag":{"title":"Batch Tag Management","addTab":"Add","removeTab":"Remove","clearTab":"Clear","addDescription":"Add tags to {count} selected files","inputPlaceholder":"Enter tag name","pendingTags":"Tags to add","noPendingTags":"No tags to add","addToAllFiles":"Add to all files","removeDescription":"Remove common tags from selected files","commonTags":"Common Tags","noCommonTags":"Selected files have no common tags","clearDescription":"Clear all tags from {count} selected files","clearWarningTitle":"⚠️Warning","clearWarningDesc":"This will clear all tags from selected files and cannot be undone","confirmClearAll":"Confirm clear all tags","tagAlreadyInList":"Tag already in list","pleaseAddTags":"Please add tags first","addSuccess":"Tags added to {count} files successfully","addFailed":"Batch tag addition failed","removeSuccess":"Tags removed from {count} files successfully","removeFailed":"Tag removal failed","clearConfirmMessage":"Are you sure you want to clear all tags from {count} selected files? This cannot be undone.","clearConfirmTitle":"Confirm Clear","clearConfirmOk":"OK","clearConfirmCancel":"Cancel","clearCancelled":"Clear operation cancelled","clearSuccess":"Tags cleared from {count} files successfully","clearFailed":"Failed to clear tags","loadCommonTagsFailed":"Failed to load common tags"},"tagManagement":{"title":"Tag Management","inputPlaceholder":"Enter tag name","currentTags":"Current Tags","noTags":"No tags","popularTags":"Popular Tags","loading":"Loading...","noPopularTags":"No popular tags","close":"Close","tagExists":"Tag already exists","addSuccess":"Tag added successfully","addFailed":"Failed to add tag","removeSuccess":"Tag removed successfully","removeFailed":"Failed to remove tag","loadFailed":"Failed to load tags"},"mobileAction":{"viewDetail":"View Details","copyLink":"Copy Link","downloadFile":"Download File","moveFile":"Move File","tagManagement":"Tag Management","moveFolder":"Move Folder","deleteFile":"Delete File","deleteFolder":"Delete Folder"},"mobileDirectory":{"title":"Directory Navigation","rootDirectory":"Root","goBack":"Go Back"},"sysConfig":{"logout":"Logout"},"sysConfigTabs":{"systemStatus":"System Status","uploadSettings":"Upload Settings","securitySettings":"Security Settings","pageSettings":"Page Settings","otherSettings":"Other Settings"},"dateRangeCalendar":{"previousMonth":"Previous month","nextMonth":"Next month","startDate":"Start date","endDate":"End date","rangeSeparator":"to","monthTitle":"{year}-{month}","weekdaySun":"Sun","weekdayMon":"Mon","weekdayTue":"Tue","weekdayWed":"Wed","weekdayThu":"Thu","weekdayFri":"Fri","weekdaySat":"Sat"},"sysStatus":{"systemOverview":"System runtime overview","healthHealthy":"Running normally","healthChecking":"Checking status","healthAttention":"Status unavailable","greetingMorning":"Good morning, welcome back","greetingNoon":"Good afternoon, stay in the flow","greetingAfternoon":"Good afternoon, hope work goes smoothly","greetingEvening":"Good evening, thanks for your work today","greetingLateNight":"It\'s late, remember to take a break","summaryChecking":"Connecting to system services and reading the latest index information…","summaryUnavailable":"System status is temporarily unavailable. Check the connection or refresh again later.","summaryEmpty":"The system is responding normally and the index service is ready for the first upload.","summaryIndexed":"The system is responding normally with {files} indexed files.","summaryHealthy":"The system is responding normally with {files} indexed files across {channels} upload channels.","localTime":"Local Time","localTimezone":"Local timezone","totalFiles":"Total Files","clickToRefresh":"Click to refresh","indexUpdateTime":"Index Update Time","systemVersion":"System Version","clickToViewChangelog":"Click to view changelog","channelDistribution":"Upload Channel Distribution","fileStatusDistribution":"File Status Distribution","uploadTrend":"Upload Trend","uploadTrendGroupBy":"Upload trend group by","totalUploads":"Total Uploads","byChannelType":"Channel Type","byChannelName":"Channel Name","selectDateRange":"Select date range","otherChannels":"Other","uploadsUnit":"uploads","noData":"No data","totalFilesLabel":"Total Files","statusTypes":"Status Types","systemMaintenance":"System Maintenance","rebuildIndex":"Rebuild Index","rebuilding":"Rebuilding...","rebuildTooltip":"Rescan all files and update index data, useful for fixing data inconsistencies","backupData":"Backup Data","backingUp":"Backing up...","backupTooltip":"Backup all file metadata and system settings to a JSON file","restoreData":"Restore Data","restoring":"Restoring...","restoreTooltip":"Restore data from a backup file, this will overwrite existing file metadata and system settings","cancelOperation":"Cancel Operation","retry":"Retry","close":"Close","records":"records","aboutToComplete":"Almost done","seconds":"~{count} seconds","minutes":"~{count} minutes","hoursMinutes":"~{hours} hours {minutes} minutes","phaseFetching":"Fetching data","phaseSorting":"Sorting","phaseUploading":"Uploading","phaseFinalizing":"Finalizing","phaseBuilding":"Building backup","phaseDownloading":"Generating download","phaseRestoringFiles":"Restoring files","phaseRestoringSettings":"Restoring settings","phaseCompleted":"Completed","phaseRetrying":"Retrying","rebuildSuccess":"Index rebuild complete! Processed {count} files","backupSuccess":"Backup complete! Backed up {count} files","backupSuccessWithSettings":"Backup complete! Backed up {fileCount} files and {settingsCount} settings","operationInProgress":"An operation is already in progress","selectJsonFile":"Please select a JSON backup file","restoreConfirmMessage":"Restoring will overwrite existing file metadata and system settings. This cannot be undone. Continue?","restoreConfirmTitle":"Confirm Restore","restoreConfirmOk":"Confirm Restore","restoreConfirmCancel":"Cancel","invalidBackupFile":"Invalid backup file format, please select a valid JSON file","restoreSuccess":"Restore complete! Restored {files} files and {settings} settings, rebuilding index...","restoreFailed":"Failed to restore data","fetchIndexFailed":"Failed to fetch index information","unknown":"Unknown","blocked":"Blocked","normalStatus":"Normal","latestUpload":"Latest Upload","earliestUpload":"Earliest Upload","daysAgo":"{count} days ago","hoursAgo":"{count} hours ago","minutesAgo":"{count} minutes ago","justNow":"Just now","cancellingRebuild":"Cancelling index rebuild..."},"sysUpload":{"title":"Upload Channel Management","titleTooltip":"Manage all upload channel configurations. Click a card to view details or edit","filterPlaceholder":"Filter channel type","addChannel":"Add Channel","loadBalance":"Load Balance","unnamedChannel":"Unnamed Channel","envVariable":"Environment Variable","noChannels":"No {type} channels","detail":"Detail","editBtn":"Edit","deleteBtn":"Delete","addDialogTitle":"Add New Channel","channelTypeLabel":"Channel Type","channelTypePlaceholder":"Select channel type","channelNameLabel":"Channel Name","channelNamePlaceholder":"Enter channel name","channelNameImmutableTip":"After creation, this becomes the unique identifier for files associated with the channel and cannot be changed","channelNameEditDisabledTip":"The channel name links uploaded files to this channel and cannot be changed","botTokenLabel":"Bot Token","botTokenPlaceholder":"Enter Bot Token","chatIdLabel":"Chat ID","chatIdPlaceholder":"Enter Chat ID","proxyDomain":"Proxy Domain","proxyDomainPlaceholder":"Optional, e.g.: your-proxy.example.com","endpointLabel":"Endpoint","endpointPlaceholder":"e.g.: https://s3.us-east-005.backblazeb2.com","cdnDomain":"CDN Domain","cdnDomainPlaceholder":"Optional. Enter the full CDN URL prefix, e.g. https://cdn.example.com","cdnDomainTip":"Optional. Can be used to generate and display file access links. Server-side file reads also try the CDN first.","bucketName":"Bucket Name","bucketNamePlaceholder":"Enter bucket name","bucketRegion":"Bucket Region","bucketRegionPlaceholder":"Default: auto","accessKeyId":"Access Key ID","accessKeyIdPlaceholder":"Enter Access Key ID","secretAccessKey":"Secret Access Key","secretAccessKeyPlaceholder":"Enter Secret Access Key","pathStyle":"Path Style","pathStyleTip":"Enable when using services incompatible with host-style like OpenList","quotaLimit":"Quota Limit","quotaLimitGB":"Quota Limit (GB)","quotaThreshold":"Disable Threshold (%)","channelIdLabel":"Channel ID","channelIdPlaceholder":"Enter Channel ID","nitroMember":"Nitro Member","nitroTip":"Nitro members: 25MB per file, otherwise 10MB","discordWarning":"Discord has API rate limits, not recommended for high-concurrency scenarios","repoName":"Repository Name","repoNamePlaceholder":"Format: username/repo-name","accessToken":"Access Token","accessTokenPlaceholder":"Enter Access Token","privateRepo":"Private Repository","privateRepoTip":"Private repository limit: 100GB","webdavBaseUrl":"WebDAV Base URL","webdavBaseUrlPlaceholder":"e.g.: https://dav.example.com/remote.php/dav/files/user/imgbed/","webdavUsername":"Username","webdavUsernamePlaceholder":"Optional username","webdavPassword":"Password","webdavPasswordPlaceholder":"Optional password","webdavPublicUrlPlaceholder":"Optional. Enter the full public URL prefix, e.g. https://cdn.example.com/imgbed","webdavPublicUrlTip":"Optional. Server-side file reads try this public URL first and fall back to the WebDAV API on failure.","webdavHeaders":"Custom Headers","webdavHeadersPlaceholder":"Optional JSON object, e.g.: {\'{\\"X-Api-Key\\":\\"value\\"}\'}","webdavHeadersInvalid":"Custom headers must be a valid JSON object","webdavCreateDirectory":"Auto Create Directories","webdavCreateDirectoryTip":"Create parent directories before uploading files","cancel":"Cancel","confirmAdd":"Confirm Add","detailDialogTitle":"Channel Details - {name}","channelNameDetail":"Channel Name","channelTypeDetail":"Channel Type","statusLabel":"Status","enabled":"Enabled","disabled":"Disabled","configSource":"Config Source","publicUrl":"Public Access URL","notSet":"Not Set","isPathStyle":"Yes","isNotPathStyle":"No","currentUsage":"Current Usage","closeBtn":"Close","editDialogTitle":"Edit Channel - {name}","enableChannel":"Enable Channel","saveChanges":"Save Changes","r2ConfigNote":"Please follow the R2 Channel Configuration documentation to add R2 channels","reservedName":"This name is reserved by the system, please use another name","duplicateName":"A channel with this name already exists, please use another name","fixedChannelCannotDelete":"Channels configured via environment variables cannot be deleted","deleteChannelConfirm":"Are you sure you want to delete this channel? Files still associated with it may become inaccessible.","quotaInitConfirm":"First time enabling quota requires calculating existing file sizes, this may take some time. Calculate now?","quotaInitTitle":"Initialize Quota Statistics","quotaInitConfirmBtn":"Calculate Now","quotaInitCancelBtn":"Calculate Later","quotaInitLater":"You can click the refresh button to calculate later","quotaCalculating":"Calculating quota, please wait...","quotaCalculateSuccess":"Quota calculation complete","quotaCalculateFailed":"Calculation failed","quotaCalculateError":"Calculation failed: "},"sysSecurity":{"authManagement":"Authentication Management","userAuth":"User Authentication","adminAuth":"Admin Authentication","uploadPassword":"Upload Password","confirmPassword":"Confirm Password","adminUsername":"Username","adminPassword":"Password","apiTokenManagement":"API Token Management","imageReview":"Image Review","imageReviewTooltip":"Only applies to non-chunked uploads, supports nsfwjs and moderatecontent.com channels","enableReview":"Enable Review","reviewChannel":"Review Channel","reviewChannelPlaceholder":"Select review channel","apiKey":"API Key","apiPath":"API Path","ipQuery":"IP Geolocation Query","ipQueryTooltip":"Calls a custom API during upload to query the upload IP location. Parameter values support the {\'{ip}\'} placeholder","enableIpQuery":"Enable Query","ipQueryChannel":"Query Channel","ipQueryChannelPlaceholder":"Select query channel","customApi":"Custom API","queryParams":"Query Parameters","paramNamePlaceholder":"Parameter name","paramValuePlaceholder":"Parameter value, e.g. {\'{ip}\'}","addQueryParam":"Add Parameter","responseFields":"Response Fields","responseFieldsTip":"The final display text is joined in field order","responseFieldPathPlaceholder":"JSON path, e.g. country.name","addResponseField":"Add Field","uploadManagement":"Upload Management","accessManagement":"Access Management","domainFilter":"Domain Filter","allowedDomains":"Allowed Domains","allowedDomainsTooltip":"1. Set permissions based on access domain
2. Leave empty to allow all, separate multiple domains with commas","whiteListMode":"Whitelist Mode","enableWhiteList":"Enable","enableWhiteListTooltip":"1. Set permissions based on files
2. When enabled, only whitelisted files can be accessed","imageTransform":"Image Resizing","enableImageTransform":"Enable","enableImageTransformTooltip":"Allows the file endpoint to process images using width, height, and fit parameters","imageTransformAllowedSizes":"Allowed Sizes","imageTransformAllowedSizesPlaceholder":"For example: 320xauto,640xauto,1280x720","imageTransformAllowedSizesHint":"Leave empty to allow any valid size
Separate entries with commas and use auto for an unrestricted dimension","imageTransformAllowedSizesInvalid":"Invalid size format. Use 320xauto, autox480, or 1280x720; each dimension is limited to 4096","settingsSaved":"Settings saved","tokenName":"Name","tokenValue":"Token","permissions":"Permissions","createdAt":"Created At","status":"Status","expiresAt":"Expires At","operation":"Actions","editBtn":"Edit","deleteBtn":"Delete","permUpload":"Upload","permDelete":"Delete","permList":"List","permManage":"Manage","createTokenTitle":"Create New API Token","tokenNameLabel":"Token Name","tokenNamePlaceholder":"Enter token name","permissionsLabel":"Permissions","neverExpire":"Never Expire","validPeriod":"Valid Period","autoDeleteOnExpire":"Auto-delete on expiry","createBtn":"Create","editTokenTitle":"Edit API Token","updateBtn":"Update","tokenCreatedTitle":"Token Created Successfully","tokenCreatedWarning":"Please save the following token. You won\'t be able to view the full token after closing this dialog!","fullToken":"Full Token","copyBtn":"Copy","savedBtn":"I\'ve Saved It","tokenCopied":"Token copied to clipboard","copyFailed":"Copy failed, please copy manually","tokenCreateSuccess":"Token created successfully","tokenCreateFailed":"Failed to create token","tokenUpdateSuccess":"Token updated successfully","tokenUpdateFailed":"Failed to update token","tokenDeleteConfirm":"This will permanently delete this token. Continue?","tokenDeleteConfirmTitle":"Notice","tokenDeleteConfirmOk":"OK","tokenDeleteConfirmCancel":"Cancel","tokenDeleteSuccess":"Token deleted successfully","tokenDeleteFailed":"Failed to delete token","tokenListFailed":"Failed to fetch token list","passwordUrlReserved":"Password cannot contain URL reserved characters: % & ? # /","confirmUploadPassword":"Please re-enter upload password","confirmAdminPassword":"Please re-enter admin password","passwordMismatch":"Passwords do not match","passwordUnchanged":"Unchanged (leave empty to keep current password)","adminPasswordChangedRelogin":"Admin password changed, redirecting to login page","clearPassword":"Clear authentication info","tokenNameRequired":"Please enter token name","permissionsRequired":"Please select permissions","validPeriodRequired":"Valid period must be greater than 0","timeUnitSeconds":"seconds","timeUnitMinutes":"minutes","timeUnitHours":"hours","timeUnitDays":"days","timeUnitMonths":"months","timeUnitYears":"years","sessionSecurityPolicy":"Session Security Policy","secureMode":"Secure Mode","secureModeTooltip":"When enabled, cookies are only transmitted over HTTPS. Make sure your site has HTTPS enabled","userSessionMaxAge":"User Session Max Age","adminSessionMaxAge":"Admin Session Max Age","sessionMaxAgeUnit":"days","sessionMaxAgeInvalid":"Session max age must be an integer from 1 to 3650"},"sysPage":{"settingsSaved":"Settings saved","refreshAnnouncement":"Reset announcement read status","otherSettings":"Other Settings","channelSelectPlaceholder":"Please select upload channel first"},"sysOthers":{"remoteTelemetry":"Remote Telemetry","remoteTelemetryTooltip":"Helps with issue tracking and debugging, recommended to enable","enable":"Enable","cloudflareApiToken":"CloudFlare API Token","cloudflareApiTokenTooltip":"When set, backend operations like blocking and deleting won\'t be affected by CDN cache
Recommended, see documentation for setup","zoneId":"Zone ID","accountEmail":"Account Email","randomImageApi":"Random Image API","randomImageApiTooltip":"See documentation for API usage details","directory":"Directory","directoryTooltip":"1. Directories with random image access, defaults to root. Separate multiple directories with commas
2. All directories use absolute paths, e.g. /img/cover, meaning files in this directory and all subdirectories can be accessed by the random image API","publicBrowse":"Public Gallery","publicBrowseTooltip":"When enabled, visitors can browse images in specified directories via /browse path (read-only, no delete/move)","openDirectory":"Open Directory","openDirectoryTooltip":"

Directories open for public browsing, separate multiple with commas

Example: wallpaper,photos,album

Supports subdirectories: 2026/lucky,2026/rich

Access URL: https://your.domain/browse/2026/lucky

","webdav":"WebDAV","webdavTooltip":"When enabled, images can be accessed and managed via WebDAV protocol","webdavUsername":"Username","webdavPassword":"Password","webdavUploadChannel":"Upload Channel","webdavDefaultChannel":"Default Channel","webdavChannelName":"Specified Channel","settingsSaved":"Settings saved"},"customerConfig":{"uploadFileList":"Upload File List","fileNameCol":"File Name","filePreview":"File Preview","uploadTimeCol":"Upload Time","ipAddress":"IP Address","address":"Address","uploadCount":"Upload Count","allowUpload":"Allow Upload","allow":"Allow","deny":"Deny","loadMore":"Load More","loadError":"Error loading more data, please check network connection","syncError":"Error syncing data, please check network connection"},"publicBrowse":{"searchPlaceholder":"Search file name or #page","fileCount":"{count} files","loading":"Loading...","retry":"Retry","creditText":"Gallery code contributed by LinJiang","loadingMore":"Loading...","allLoaded":"All loaded","creditLink":"LinJiang","browseDisabled":"Public browsing is not enabled","directoryNotAllowed":"This directory is not open for public access","accessDenied":"Access denied","loadFailed":"Load failed, please retry","rootDirectory":"Root","copyLink":"Copy Link","copied":"Copied","downloadBtn":"Download","swipeHint":"← Swipe to navigate →","rotate90":"Rotate 90°"},"transformMedia":{"download":"Download","playbackSpeed":"Playback Speed","normalSpeed":"Normal","playMode":"Play Mode","stopAfterPlay":"Stop After Play","sequentialPlay":"Sequential Play","loopSingle":"Loop Single","more":"More"},"directoryTree":{"selectDirectory":"Select Directory","retry":"Retry","authFailed":"Authentication failed, please log in again","serverError":"Server error, please try again later","loadFailed":"Failed to load directory tree, please check network connection"},"floatingSave":{"saving":"Saving","save":"Save"},"theme":{"lightMode":"Light Mode","darkMode":"Dark Mode","autoMode":"Auto Mode"},"common":{"confirm":"OK","cancel":"Cancel","close":"Close","save":"Save","delete":"Delete","edit":"Edit","copy":"Copy","download":"Download","retry":"Retry","loading":"Loading...","success":"Success","failed":"Failed","warning":"Warning","info":"Notice","yes":"Yes","no":"No","all":"All Types","select":"Select"},"validation":{"pathMustStartWithSlash":"Path must start with \\"/\\"","pathTraversalNotAllowed":"Path cannot contain \\"..\\"","singleDotNotAllowed":"Path cannot contain standalone \\".\\"","consecutiveSlashNotAllowed":"Path cannot contain consecutive slashes","invalidCharacters":"Path contains invalid characters, please use a valid path format","uploadDirReplace":"Upload directory"},"language":{"switchTo":"中/En","switchLanguage":"Switch Language"},"whitelist":{"title":"Whitelist Mode Enabled","description":"Sorry, the whitelist mode is currently enabled. Uploaded images need to be approved before they can be displayed. Please wait for approval.","goHome":"Go Home","goBack":"Go Back","helpText":"You can try:","uploadImage":"Upload Image","refreshPage":"Refresh Page"}}');const i="app-locale",r="zh-CN",s=new Set(["zh-CN","en"]);function d(e){return s.has(e)?e:null}function c(){return d(localStorage.getItem(i))}function u(e){return c()||d(e)||r}const m=(0,o.hU)({legacy:!0,locale:c()||r,fallbackLocale:r,messages:{"zh-CN":n,en:l}});function p(e){m.global.locale=e,document.documentElement.lang="zh-CN"===e?"zh-CN":"en"}function h(e){const a=u(e);return p(a),a}function g(e){const a=d(e)||r;p(a),localStorage.setItem(i,a)}var f=m},81525:function(e,a,t){t(18111),t(7588);var o=t(45130),n=t(73888),l=t(21588),i=t(16571),r=(t(15412),t(30372),t(98950)),s=t(30292),d=t(47984),c=t(79262),u=t(70193),m=t(55363),p=t(31050),h=t(22909),g=t(10220),f=t(74036),y=t(90389),b=t(81828),C=t(27483),k=t(66806),T=t(61536),w=t(3263),v=t(57038),S=t(63416),F=t(63027),P=t(19223),A=t(93422),D=t(16249),L=t(34335),U=t(14722),N=t(16829),M=t(53916),I=t(48749),x=t(2511),R=t(12375),B=t(97619),E=t(84310),O=t(14552),W=t(79919),q=t(10767),z=t(20491),H=t(18422),V=t(17214),j=t(44845),K=t(55319),Q=t(71669),G=t(38557),J=t(15925),_=t(10798),Y=t(39329),X=t(59708),$=t(41165),Z=t(50230),ee=t(99288),ae=t(67992),te=t(37538),oe=t(13118),ne=t(36050),le=t(69721),ie=t(75192),re=t(50672),se=t(3149),de=t(11221),ce=t(73585),ue=t(63236),me=t(1860),pe=t(13110),he=t(6246),ge=t(42302),fe=t(75504),ye=t(40587),be=t(5299),Ce=t(81775),ke=t(13127),Te=t(18742),we=t(97579),ve=t(56746),Se=t(58422),Fe=t(20444),Pe=t(88502),Ae=t(21872),De=t(64795),Le=t(82262),Ue=t(88921),Ne=t(39916),Me=t(18579),Ie=t(80500),xe=t(58428),Re=t(87849),Be=t(78034),Ee=t(59413),Oe=t(58869),We=t(79102),qe=t(78337),ze=t(38870),He=t(70577),Ve=t(93212),je=t(40275),Ke=t(52995),Qe=t(38410),Ge=t(167),Je=t(53223),_e=t(97447),Ye=t(67830),Xe=[m.rC,p.UH,h.B0,g.Ce,f.IN,d.xK,y.Df,b.ck,C.LB,k.e4,T.ok,w.$F,v.gK,S.e6,F.rQ,P.Jt,A.Wz,D.Xk,L.B2,U.a$,N.jB,c.ZD,M.wF,I.rO,x.jT,R.Xb,B.dB,E.Ub,O.q9,W.rM,q.jP,z.he,u._2,H.cb,V.MT,j.vH,K.v,Q.bx,G.tU,J.zp,_.A,Y.pS,X.A4,$.h8,Z.o1,ee.UD,ae.mR,te.ao,oe.Uj,ne.gD,le.Bw,ie.CY,re.In,se.v0,de.lS,ce.jb,ue.yv,me.Up,pe.iW,he.CQ,ge.IT,fe.EZ,ye.xb,be.PJ,Ce.X,ke.ji,Te.is,we.R9,ve.QL,Se.wR,Fe.oE,Pe.ye,Ae.UB,De.hS,Le.Mj,Ue.D6,Ne.QO,Me.V2,Ie.im,xe.Gx,Re.H9,Be.Yp,Ee.z1,Oe.Nf,We.oM,qe.VN,ze.Ot,He.xi,Ve._2,je.DX,Ke.l9,Qe.GR,Ge.ns,Je.Be,_e.Jm,Ye.Mc],$e=t(97722),Ze=(t(85331),t(10961),t(56768));function ea(e,a,t,o,n,l){const i=(0,Ze.g2)("router-view"),r=$e.H6;return(0,Ze.uX)(),(0,Ze.Wv)(r,{locale:l.elementLocale},{default:(0,Ze.k6)(()=>[(0,Ze.bF)(i)]),_:1},8,["locale"])}var aa=t(60782),ta=t(6166),oa=t(55186),na=t(54791),la={data(){return{osInstance:null,imageViewerObserver:null}},computed:{...(0,aa.L8)(["userConfig","useDarkMode"]),elementLocale(){return"zh-CN"===this.$i18n.locale?oa.A:na.A}},mounted(){this.$nextTick(()=>{this.initOverlayScrollbars(),this.setupImageViewerObserver()})},beforeUnmount(){this.imageViewerObserver&&this.imageViewerObserver.disconnect()},watch:{},methods:{initOverlayScrollbars(){try{if(ta.ae.valid(document.body))return void(this.osInstance=(0,ta.ae)(document.body));this.osInstance=(0,ta.ae)(document.body,{scrollbars:{theme:"os-theme-dark",visibility:"auto",autoHide:"scroll",autoHideDelay:600,dragScroll:!0,clickScroll:!0},overflow:{x:"hidden",y:"scroll"}}),console.log("OverlayScrollbars initialized successfully")}catch(e){console.error("Failed to initialize OverlayScrollbars:",e)}},setupImageViewerObserver(){this.imageViewerObserver=new MutationObserver(e=>{const a=document.querySelector(".el-image-viewer__wrapper");a?this.osInstance&&this.osInstance.options({overflow:{x:"hidden",y:"hidden"}}):this.osInstance&&this.osInstance.options({overflow:{x:"hidden",y:"scroll"}})}),this.imageViewerObserver.observe(document.body,{childList:!0,subtree:!0})}}},ia=t(71241);const ra=(0,ia.A)(la,[["render",ea]]);var sa=ra,da=t(16915),ca=t(25507),ua=t(46638),ma=t(57477);t(21862),t(50635);r.Yv.add(...Xe),l.k.offset=30;const pa=(0,o.Ef)(sa),ha=(0,n.Zf)();pa.component("font-awesome-icon",s.gc);for(const[Ca,ka]of Object.entries(ma))pa.component(Ca,ka);const ga=()=>{const e=document.documentElement;let a;if(ca.A.state.cusDarkMode&&null!==ca.A.state.useDarkMode)a=ca.A.state.useDarkMode;else{if(a=window.matchMedia("(prefers-color-scheme: dark)").matches,!a){const e=new Date,t=e.getHours();a=t>=22||t<6}ca.A.commit("setUseDarkMode",a)}a?e.classList.add("dark"):e.classList.remove("dark")},fa=e=>{const a=document.documentElement;e?a.classList.add("dark"):a.classList.remove("dark")},ya=e=>{document.title=e?.siteTitle||"Sanyue ImgHub"},ba=(e,a)=>{const t=document.querySelectorAll('link[rel="icon"], link[rel="apple-touch-icon"], link[rel="mask-icon"]');t.forEach(e=>e.remove());const o=document.createElement("link"),n=document.createElement("link"),l=document.createElement("link");o.rel="icon",n.rel="apple-touch-icon",l.rel="mask-icon",e?(o.href=a?.siteIcon||"/static/media/logo-dark.png",n.href=a?.siteIcon||"/static/media/logo-dark.png",l.href=a?.siteIcon||"/static/media/logo-dark.png"):(o.href=a?.siteIcon||"/static/media/logo.png",n.href=a?.siteIcon||"/static/media/logo.png",l.href=a?.siteIcon||"/static/media/logo.png"),document.head.appendChild(o),document.head.appendChild(n),document.head.appendChild(l)};ca.A.dispatch("fetchUserConfig").then(()=>{(0,ua.BY)(ca.A.getters.userConfig?.defaultLanguage),ga(),ya(ca.A.getters.userConfig),ba(ca.A.state.useDarkMode,ca.A.getters.userConfig),ca.A.subscribe((e,a)=>{"setUseDarkMode"===e.type&&ca.A.state.cusDarkMode&&(fa(a.useDarkMode),ba(a.useDarkMode,ca.A.getters.userConfig)),"setCusDarkMode"!==e.type||e.payload||(ga(),ba(ca.A.state.useDarkMode,ca.A.getters.userConfig))}),pa.use(ca.A).use(da.A).use(i.A).use(ua.Ay).mount("#app")}).catch(e=>{console.error("Failed to load user configuration:",e),(0,ua.BY)(),pa.use(ca.A).use(da.A).use(i.A).use(ua.Ay).use(ha).mount("#app")})}},a={};function t(o){var n=a[o];if(void 0!==n)return n.exports;var l=a[o]={exports:{}};return e[o].call(l.exports,l,l.exports,t),l.exports}t.m=e,function(){var e=[];t.O=function(a,o,n,l){if(!o){var i=1/0;for(c=0;c=l)&&Object.keys(t.O).every(function(e){return t.O[e](o[s])})?o.splice(s--,1):(r=!1,l0&&e[c-1][2]>l;c--)e[c]=e[c-1];e[c]=[o,n,l]}}(),function(){t.n=function(e){var a=e&&e.__esModule?function(){return e["default"]}:function(){return e};return t.d(a,{a:a}),a}}(),function(){t.d=function(e,a){for(var o in a)t.o(a,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:a[o]})}}(),function(){t.f={},t.e=function(e){return Promise.all(Object.keys(t.f).reduce(function(a,o){return t.f[o](e,a),a},[]))}}(),function(){t.u=function(e){return"js/"+e+"."+{130:"b657e68d",223:"73628f82",380:"94df9ff7",385:"4d3f7ac7",502:"58060353",540:"8854b4d5",711:"936a7109",730:"1feabc6e",757:"47b4e4b0",773:"f0780366",787:"d0dbc2dd",903:"1e4b549d",990:"e04c4ad6"}[e]+".js"}}(),function(){t.miniCssF=function(e){return"css/"+e+"."+{130:"8ca5a76a",173:"36158ceb",223:"6b74609d",385:"4f25fc20",473:"f3f669e8",502:"ae48a06e",581:"01652a63",711:"1a30de22",730:"a3834df3",757:"60c15823",773:"147d098d",787:"448a9124",990:"a3834df3"}[e]+".css"}}(),function(){t.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){t.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)}}(),function(){var e={},a="sanyue_imghub:";t.l=function(o,n,l,i){if(e[o])e[o].push(n);else{var r,s;if(void 0!==l)for(var d=document.getElementsByTagName("script"),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 {\r\n axios.get('/api/auth/sessionCheck', {\r\n withCredentials: true\r\n }).then(res => {\r\n const data = res.data || {}\r\n\r\n // 不需要管理端认证,直接放行\r\n if (!data.adminRequired) {\r\n store.commit('setAdminLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证,检查是否有有效的 admin session\r\n if (data.valid && data.authType === 'admin') {\r\n store.commit('setAdminLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证但没有有效 session,跳转登录\r\n // 只有之前已登录(session 过期)才提示错误,首次未登录静默跳转\r\n const wasLoggedIn = store.state.adminLoggedIn\r\n store.commit('setAdminLoggedIn', false)\r\n if (to.name !== 'adminLogin') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'adminLogin' })\r\n } else {\r\n next()\r\n }\r\n }).catch(() => {\r\n const wasLoggedIn = store.state.adminLoggedIn\r\n store.commit('setAdminLoggedIn', false)\r\n if (to.name !== 'adminLogin') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'adminLogin' })\r\n } else {\r\n next()\r\n }\r\n })\r\n}\r\n\r\n// 通用的用户认证守卫\r\nconst userAuthGuard = (to, from, next) => {\r\n axios.get('/api/auth/sessionCheck', {\r\n withCredentials: true\r\n }).then(res => {\r\n const data = res.data || {}\r\n\r\n // 不需要用户端认证,直接放行\r\n if (!data.userRequired) {\r\n store.commit('setUserLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证,检查是否有有效 session(user 或 admin 都可以)\r\n if (data.valid) {\r\n store.commit('setUserLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证但没有有效 session,跳转登录\r\n // 只有之前已登录(session 过期)才提示错误,首次未登录静默跳转\r\n const wasLoggedIn = store.state.userLoggedIn\r\n store.commit('setUserLoggedIn', false)\r\n if (to.name !== 'login') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'login' })\r\n } else {\r\n next()\r\n }\r\n }).catch(() => {\r\n const wasLoggedIn = store.state.userLoggedIn\r\n store.commit('setUserLoggedIn', false)\r\n if (to.name !== 'login') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'login' })\r\n } else {\r\n next()\r\n }\r\n })\r\n}\r\n\r\nconst routes = [\r\n {\r\n path: '/',\r\n name: 'home',\r\n component: () => import('../views/UploadHome.vue'),\r\n beforeEnter: userAuthGuard\r\n },\r\n {\r\n path: '/login',\r\n name: 'login',\r\n component: () => import('../views/Login.vue')\r\n },\r\n {\r\n path: '/dashboard',\r\n name: 'dashboard',\r\n component: () => import('../views/AdminDashBoard.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/customerConfig',\r\n name: 'customerConfig',\r\n component: () => import('../views/CustomerConfig.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/systemConfig',\r\n name: 'systemConfig',\r\n component: () => import('../views/SystemConfig.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/adminLogin',\r\n name: 'adminLogin',\r\n component: () => import('../views/AdminLogin.vue'),\r\n },\r\n {\r\n path: '/blockimg',\r\n name: 'blockimg',\r\n component: () => import('../views/BlockImage.vue'),\r\n },\r\n {\r\n path: '/whiteliston',\r\n name: 'whiteliston',\r\n component: () => import('../views/WhiteListOn.vue'),\r\n },\r\n {\r\n path: '/browse/:dir*',\r\n name: 'publicBrowse',\r\n component: () => import('../views/PublicBrowse.vue'),\r\n },\r\n {\r\n path: '/:pathMatch(.*)*',\r\n name: 'notFound',\r\n component: () => import('../views/NotFound.vue'),\r\n },\r\n]\r\n\r\nconst router = createRouter({\r\n history: createWebHistory(process.env.BASE_URL),\r\n routes\r\n})\r\n\r\nexport default router\r\n","import { createStore } from 'vuex'\r\nimport axios from '@/utils/axios';\r\nimport createPersistedState from 'vuex-persistedstate';\r\n\r\nexport default createStore({\r\n state: {\r\n userConfig: null,\r\n bingWallPapers: [],\r\n // 会话状态标记(不存储密码,实际认证通过 HttpOnly Cookie)\r\n adminLoggedIn: false,\r\n userLoggedIn: false,\r\n uploadMethod: 'default',\r\n uploadCopyUrlForm: '',\r\n compressConfig: {\r\n customerCompress: undefined,\r\n compressQuality: undefined,\r\n compressBar: undefined,\r\n serverCompress: undefined,\r\n convertToWebp: undefined,\r\n },\r\n storeUploadChannel: '',\r\n storeChannelName: null, // 指定的渠道名称,null表示从未选择,''表示用户主动清空\r\n storeAutoRetry: true,\r\n storeUploadNameType: '',\r\n uploadFolder: '',\r\n customUrlSettings: {\r\n useCustomUrl: 'false',\r\n customUrlPrefix: '',\r\n },\r\n adminUrlSettings: {\r\n useCustomUrl: 'false',\r\n customUrlPrefix: '',\r\n },\r\n autoReUpload: true,\r\n // 深色模式\r\n useDarkMode: null,\r\n cusDarkMode: false,\r\n },\r\n getters: {\r\n userConfig: state => state.userConfig,\r\n bingWallPapers: state => state.bingWallPapers,\r\n adminLoggedIn: state => state.adminLoggedIn,\r\n userLoggedIn: state => state.userLoggedIn,\r\n storeUploadMethod: state => state.uploadMethod,\r\n uploadCopyUrlForm: state => state.uploadCopyUrlForm,\r\n compressConfig: state => state.compressConfig,\r\n storeUploadChannel: state => state.storeUploadChannel,\r\n storeChannelName: state => state.storeChannelName,\r\n storeUploadNameType: state => state.storeUploadNameType,\r\n customUrlSettings: state => state.customUrlSettings,\r\n storeAutoRetry: state => state.storeAutoRetry,\r\n adminUrlSettings: state => state.adminUrlSettings,\r\n storeUploadFolder: (state) => {\r\n return state.uploadFolder || localStorage.getItem('uploadFolder') || ''\r\n },\r\n useDarkMode: state => state.useDarkMode,\r\n cusDarkMode: state => state.cusDarkMode,\r\n storeAutoReUpload: state => state.autoReUpload,\r\n },\r\n mutations: {\r\n setUserConfig(state, userConfig) {\r\n state.userConfig = userConfig;\r\n },\r\n setBingWallPapers(state, bingWallPapers) {\r\n state.bingWallPapers = bingWallPapers;\r\n },\r\n setAdminLoggedIn(state, loggedIn) {\r\n state.adminLoggedIn = loggedIn;\r\n },\r\n setUserLoggedIn(state, loggedIn) {\r\n state.userLoggedIn = loggedIn;\r\n },\r\n setUploadMethod(state, uploadMethod) {\r\n state.uploadMethod = uploadMethod;\r\n },\r\n setUploadCopyUrlForm(state, uploadCopyUrlForm) {\r\n state.uploadCopyUrlForm = uploadCopyUrlForm;\r\n },\r\n setCompressConfig(state, { key, value }) {\r\n state.compressConfig[key] = value;\r\n },\r\n setStoreUploadChannel(state, uploadChannel) {\r\n state.storeUploadChannel = uploadChannel;\r\n },\r\n setStoreChannelName(state, channelName) {\r\n state.storeChannelName = channelName;\r\n },\r\n setStoreUploadNameType(state, storeUploadNameType) {\r\n state.storeUploadNameType = storeUploadNameType;\r\n },\r\n setCustomUrlSettings(state, { key, value }) {\r\n state.customUrlSettings[key] = value;\r\n },\r\n setStoreAutoRetry(state, storeAutoRetry) {\r\n state.storeAutoRetry = storeAutoRetry;\r\n },\r\n setAdminUrlSettings(state, { key, value }) {\r\n state.adminUrlSettings[key] = value;\r\n },\r\n setUseDarkMode(state, useDarkMode) {\r\n state.useDarkMode = useDarkMode;\r\n },\r\n setCusDarkMode(state, cusDarkMode) {\r\n state.cusDarkMode = cusDarkMode;\r\n },\r\n setStoreUploadFolder(state, folder) {\r\n state.uploadFolder = folder\r\n localStorage.setItem('uploadFolder', folder)\r\n },\r\n setStoreAutoReUpload(state, autoReUpload) {\r\n state.autoReUpload = autoReUpload;\r\n }\r\n },\r\n actions: {\r\n async fetchUserConfig({ commit }) {\r\n try {\r\n const response = await axios.get('/api/userConfig');\r\n commit('setUserConfig', response.data);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n },\r\n async fetchBingWallPapers({ commit }) {\r\n try {\r\n const response = await axios.get('/api/bing/wallpaper');\r\n const wallpapers = response.data.data;\r\n const bingWallPapers = wallpapers.map(wallpaper => {\r\n return {\r\n url: 'https://www.bing.com' + wallpaper.url,\r\n };\r\n }\r\n );\r\n\r\n //预加载图片,阻塞直到图片加载完成\r\n await Promise.all(bingWallPapers.map(wallpaper => {\r\n return new Promise((resolve, reject) => {\r\n const img = new Image();\r\n img.onload = resolve;\r\n img.onerror = reject;\r\n img.src = wallpaper.url;\r\n });\r\n }));\r\n commit('setBingWallPapers', bingWallPapers);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n },\r\n modules: {\r\n },\r\n plugins: [createPersistedState({\r\n // 只持久化非敏感数据,不持久化认证状态\r\n paths: [\r\n 'userConfig',\r\n 'uploadMethod',\r\n 'uploadCopyUrlForm',\r\n 'compressConfig',\r\n 'storeUploadChannel',\r\n 'storeChannelName',\r\n 'storeAutoRetry',\r\n 'storeUploadNameType',\r\n 'uploadFolder',\r\n 'customUrlSettings',\r\n 'adminUrlSettings',\r\n 'autoReUpload',\r\n 'useDarkMode',\r\n 'cusDarkMode',\r\n ]\r\n })]\r\n})\r\n","import { createI18n } from 'vue-i18n'\r\nimport zhCN from './zh-CN.json'\r\nimport en from './en.json'\r\n\r\nconst LOCALE_KEY = 'app-locale'\r\nconst FALLBACK_LOCALE = 'zh-CN'\r\nconst SUPPORTED_LOCALES = new Set(['zh-CN', 'en'])\r\n\r\nfunction normalizeLocale(locale) {\r\n return SUPPORTED_LOCALES.has(locale) ? locale : null\r\n}\r\n\r\nfunction getStoredLocale() {\r\n return normalizeLocale(localStorage.getItem(LOCALE_KEY))\r\n}\r\n\r\nexport function resolveInitialLocale(defaultLocale) {\r\n return getStoredLocale() || normalizeLocale(defaultLocale) || FALLBACK_LOCALE\r\n}\r\n\r\nconst i18n = createI18n({\r\n legacy: true,\r\n locale: getStoredLocale() || FALLBACK_LOCALE,\r\n fallbackLocale: FALLBACK_LOCALE,\r\n messages: { 'zh-CN': zhCN, en }\r\n})\r\n\r\nfunction applyLocale(locale) {\r\n i18n.global.locale = locale\r\n document.documentElement.lang = locale === 'zh-CN' ? 'zh-CN' : 'en'\r\n}\r\n\r\nexport function initializeLocale(defaultLocale) {\r\n const locale = resolveInitialLocale(defaultLocale)\r\n applyLocale(locale)\r\n return locale\r\n}\r\n\r\nexport function setLocale(locale) {\r\n const normalizedLocale = normalizeLocale(locale) || FALLBACK_LOCALE\r\n applyLocale(normalizedLocale)\r\n localStorage.setItem(LOCALE_KEY, normalizedLocale)\r\n}\r\n\r\nexport { LOCALE_KEY, getStoredLocale }\r\nexport default i18n\r\n","import { faAws } from '@fortawesome/free-brands-svg-icons/faAws';\r\nimport { faCloudflare } from '@fortawesome/free-brands-svg-icons/faCloudflare';\r\nimport { faDiscord } from '@fortawesome/free-brands-svg-icons/faDiscord';\r\nimport { faAngleDoubleLeft } from '@fortawesome/free-solid-svg-icons/faAngleDoubleLeft';\r\nimport { faAngleDoubleRight } from '@fortawesome/free-solid-svg-icons/faAngleDoubleRight';\r\nimport { faArrowDown } from '@fortawesome/free-solid-svg-icons/faArrowDown';\r\nimport { faArrowLeft } from '@fortawesome/free-solid-svg-icons/faArrowLeft';\r\nimport { faArrowUp } from '@fortawesome/free-solid-svg-icons/faArrowUp';\r\nimport { faBan } from '@fortawesome/free-solid-svg-icons/faBan';\r\nimport { faBars } from '@fortawesome/free-solid-svg-icons/faBars';\r\nimport { faBook } from '@fortawesome/free-solid-svg-icons/faBook';\r\nimport { faBullhorn } from '@fortawesome/free-solid-svg-icons/faBullhorn';\r\nimport { faCalendar } from '@fortawesome/free-solid-svg-icons/faCalendar';\r\nimport { faChartBar } from '@fortawesome/free-solid-svg-icons/faChartBar';\r\nimport { faChartLine } from '@fortawesome/free-solid-svg-icons/faChartLine';\r\nimport { faCheck } from '@fortawesome/free-solid-svg-icons/faCheck';\r\nimport { faCheckSquare } from '@fortawesome/free-solid-svg-icons/faCheckSquare';\r\nimport { faChevronDown } from '@fortawesome/free-solid-svg-icons/faChevronDown';\r\nimport { faChevronLeft } from '@fortawesome/free-solid-svg-icons/faChevronLeft';\r\nimport { faChevronRight } from '@fortawesome/free-solid-svg-icons/faChevronRight';\r\nimport { faCircleHalfStroke } from '@fortawesome/free-solid-svg-icons/faCircleHalfStroke';\r\nimport { faClock } from '@fortawesome/free-solid-svg-icons/faClock';\r\nimport { faCloud } from '@fortawesome/free-solid-svg-icons/faCloud';\r\nimport { faCloudUpload } from '@fortawesome/free-solid-svg-icons/faCloudUpload';\r\nimport { faCloudUploadAlt } from '@fortawesome/free-solid-svg-icons/faCloudUploadAlt';\r\nimport { faCode } from '@fortawesome/free-solid-svg-icons/faCode';\r\nimport { faCodeBranch } from '@fortawesome/free-solid-svg-icons/faCodeBranch';\r\nimport { faCog } from '@fortawesome/free-solid-svg-icons/faCog';\r\nimport { faCogs } from '@fortawesome/free-solid-svg-icons/faCogs';\r\nimport { faComments } from '@fortawesome/free-solid-svg-icons/faComments';\r\nimport { faCompressAlt } from '@fortawesome/free-solid-svg-icons/faCompressAlt';\r\nimport { faCopy } from '@fortawesome/free-solid-svg-icons/faCopy';\r\nimport { faDatabase } from '@fortawesome/free-solid-svg-icons/faDatabase';\r\nimport { faDownload } from '@fortawesome/free-solid-svg-icons/faDownload';\r\nimport { faEdit } from '@fortawesome/free-solid-svg-icons/faEdit';\r\nimport { faEllipsisH } from '@fortawesome/free-solid-svg-icons/faEllipsisH';\r\nimport { faEllipsisV } from '@fortawesome/free-solid-svg-icons/faEllipsisV';\r\nimport { faExclamation } from '@fortawesome/free-solid-svg-icons/faExclamation';\r\nimport { faExclamationCircle } from '@fortawesome/free-solid-svg-icons/faExclamationCircle';\r\nimport { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons/faExclamationTriangle';\r\nimport { faExternalLinkAlt } from '@fortawesome/free-solid-svg-icons/faExternalLinkAlt';\r\nimport { faEye } from '@fortawesome/free-solid-svg-icons/faEye';\r\nimport { faFile } from '@fortawesome/free-solid-svg-icons/faFile';\r\nimport { faFileAlt } from '@fortawesome/free-solid-svg-icons/faFileAlt';\r\nimport { faFileExport } from '@fortawesome/free-solid-svg-icons/faFileExport';\r\nimport { faFileSignature } from '@fortawesome/free-solid-svg-icons/faFileSignature';\r\nimport { faFilter } from '@fortawesome/free-solid-svg-icons/faFilter';\r\nimport { faFolder } from '@fortawesome/free-solid-svg-icons/faFolder';\r\nimport { faFolderOpen } from '@fortawesome/free-solid-svg-icons/faFolderOpen';\r\nimport { faFolderTree } from '@fortawesome/free-solid-svg-icons/faFolderTree';\r\nimport { faGlobe } from '@fortawesome/free-solid-svg-icons/faGlobe';\r\nimport { faHashtag } from '@fortawesome/free-solid-svg-icons/faHashtag';\r\nimport { faHistory } from '@fortawesome/free-solid-svg-icons/faHistory';\r\nimport { faHome } from '@fortawesome/free-solid-svg-icons/faHome';\r\nimport { faICursor } from '@fortawesome/free-solid-svg-icons/faICursor';\r\nimport { faImage } from '@fortawesome/free-solid-svg-icons/faImage';\r\nimport { faImages } from '@fortawesome/free-solid-svg-icons/faImages';\r\nimport { faInbox } from '@fortawesome/free-solid-svg-icons/faInbox';\r\nimport { faInfoCircle } from '@fortawesome/free-solid-svg-icons/faInfoCircle';\r\nimport { faLink } from '@fortawesome/free-solid-svg-icons/faLink';\r\nimport { faList } from '@fortawesome/free-solid-svg-icons/faList';\r\nimport { faMinus } from '@fortawesome/free-solid-svg-icons/faMinus';\r\nimport { faMinusSquare } from '@fortawesome/free-solid-svg-icons/faMinusSquare';\r\nimport { faMoon } from '@fortawesome/free-solid-svg-icons/faMoon';\r\nimport { faMusic } from '@fortawesome/free-solid-svg-icons/faMusic';\r\nimport { faPager } from '@fortawesome/free-solid-svg-icons/faPager';\r\nimport { faPaperPlane } from '@fortawesome/free-solid-svg-icons/faPaperPlane';\r\nimport { faPaste } from '@fortawesome/free-solid-svg-icons/faPaste';\r\nimport { faPlus } from '@fortawesome/free-solid-svg-icons/faPlus';\r\nimport { faQuestionCircle } from '@fortawesome/free-solid-svg-icons/faQuestionCircle';\r\nimport { faQuoteRight } from '@fortawesome/free-solid-svg-icons/faQuoteRight';\r\nimport { faRedo } from '@fortawesome/free-solid-svg-icons/faRedo';\r\nimport { faRobot } from '@fortawesome/free-solid-svg-icons/faRobot';\r\nimport { faSave } from '@fortawesome/free-solid-svg-icons/faSave';\r\nimport { faSearch } from '@fortawesome/free-solid-svg-icons/faSearch';\r\nimport { faServer } from '@fortawesome/free-solid-svg-icons/faServer';\r\nimport { faShareAlt } from '@fortawesome/free-solid-svg-icons/faShareAlt';\r\nimport { faShield } from '@fortawesome/free-solid-svg-icons/faShield';\r\nimport { faShieldAlt } from '@fortawesome/free-solid-svg-icons/faShieldAlt';\r\nimport { faSignOutAlt } from '@fortawesome/free-solid-svg-icons/faSignOutAlt';\r\nimport { faSortAlphaUp } from '@fortawesome/free-solid-svg-icons/faSortAlphaUp';\r\nimport { faSortAmountDown } from '@fortawesome/free-solid-svg-icons/faSortAmountDown';\r\nimport { faSpinner } from '@fortawesome/free-solid-svg-icons/faSpinner';\r\nimport { faSquare } from '@fortawesome/free-solid-svg-icons/faSquare';\r\nimport { faSun } from '@fortawesome/free-solid-svg-icons/faSun';\r\nimport { faSync } from '@fortawesome/free-solid-svg-icons/faSync';\r\nimport { faSyncAlt } from '@fortawesome/free-solid-svg-icons/faSyncAlt';\r\nimport { faTachometerAlt } from '@fortawesome/free-solid-svg-icons/faTachometerAlt';\r\nimport { faTag } from '@fortawesome/free-solid-svg-icons/faTag';\r\nimport { faTags } from '@fortawesome/free-solid-svg-icons/faTags';\r\nimport { faThLarge } from '@fortawesome/free-solid-svg-icons/faThLarge';\r\nimport { faTimes } from '@fortawesome/free-solid-svg-icons/faTimes';\r\nimport { faTools } from '@fortawesome/free-solid-svg-icons/faTools';\r\nimport { faTrashAlt } from '@fortawesome/free-solid-svg-icons/faTrashAlt';\r\nimport { faUpload } from '@fortawesome/free-solid-svg-icons/faUpload';\r\nimport { faUserCog } from '@fortawesome/free-solid-svg-icons/faUserCog';\r\n\r\nexport default [\r\n faAngleDoubleLeft,\r\n faAngleDoubleRight,\r\n faArrowDown,\r\n faArrowLeft,\r\n faArrowUp,\r\n faAws,\r\n faBan,\r\n faBars,\r\n faBook,\r\n faBullhorn,\r\n faCalendar,\r\n faChartBar,\r\n faChartLine,\r\n faCheck,\r\n faCheckSquare,\r\n faChevronDown,\r\n faChevronLeft,\r\n faChevronRight,\r\n faCircleHalfStroke,\r\n faClock,\r\n faCloud,\r\n faCloudflare,\r\n faCloudUpload,\r\n faCloudUploadAlt,\r\n faCode,\r\n faCodeBranch,\r\n faCog,\r\n faCogs,\r\n faComments,\r\n faCompressAlt,\r\n faCopy,\r\n faDatabase,\r\n faDiscord,\r\n faDownload,\r\n faEdit,\r\n faEllipsisH,\r\n faEllipsisV,\r\n faExclamation,\r\n faExclamationCircle,\r\n faExclamationTriangle,\r\n faExternalLinkAlt,\r\n faEye,\r\n faFile,\r\n faFileAlt,\r\n faFileExport,\r\n faFileSignature,\r\n faFilter,\r\n faFolder,\r\n faFolderOpen,\r\n faFolderTree,\r\n faGlobe,\r\n faHashtag,\r\n faHistory,\r\n faHome,\r\n faICursor,\r\n faImage,\r\n faImages,\r\n faInbox,\r\n faInfoCircle,\r\n faLink,\r\n faList,\r\n faMinus,\r\n faMinusSquare,\r\n faMoon,\r\n faMusic,\r\n faPager,\r\n faPaperPlane,\r\n faPaste,\r\n faPlus,\r\n faQuestionCircle,\r\n faQuoteRight,\r\n faRedo,\r\n faRobot,\r\n faSave,\r\n faSearch,\r\n faServer,\r\n faShareAlt,\r\n faShield,\r\n faShieldAlt,\r\n faSignOutAlt,\r\n faSortAlphaUp,\r\n faSortAmountDown,\r\n faSpinner,\r\n faSquare,\r\n faSun,\r\n faSync,\r\n faSyncAlt,\r\n faTachometerAlt,\r\n faTag,\r\n faTags,\r\n faThLarge,\r\n faTimes,\r\n faTools,\r\n faTrashAlt,\r\n faUpload,\r\n faUserCog\r\n];\r\n","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock } from \"vue\";\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_router_view = _resolveComponent(\"router-view\");\n const _component_el_config_provider = _resolveComponent(\"el-config-provider\");\n return _openBlock(), _createBlock(_component_el_config_provider, {\n locale: $options.elementLocale\n }, {\n default: _withCtx(() => [_createVNode(_component_router_view)]),\n _: 1\n }, 8, [\"locale\"]);\n}","import { mapGetters } from 'vuex';\nimport { OverlayScrollbars } from 'overlayscrollbars';\nimport zhCnLocale from 'element-plus/es/locale/lang/zh-cn';\nimport enLocale from 'element-plus/es/locale/lang/en';\nexport default {\n data() {\n return {\n osInstance: null,\n imageViewerObserver: null\n };\n },\n computed: {\n ...mapGetters(['userConfig', 'useDarkMode']),\n elementLocale() {\n return this.$i18n.locale === 'zh-CN' ? zhCnLocale : enLocale;\n }\n },\n mounted() {\n // 初始化 OverlayScrollbars 悬浮滚动条\n this.$nextTick(() => {\n this.initOverlayScrollbars();\n this.setupImageViewerObserver();\n });\n },\n beforeUnmount() {\n // 清理 MutationObserver\n if (this.imageViewerObserver) {\n this.imageViewerObserver.disconnect();\n }\n },\n watch: {},\n methods: {\n initOverlayScrollbars() {\n try {\n // 检查是否已经初始化\n if (OverlayScrollbars.valid(document.body)) {\n this.osInstance = OverlayScrollbars(document.body);\n return;\n }\n\n // 应用到 body 实现全局悬浮滚动条\n this.osInstance = OverlayScrollbars(document.body, {\n scrollbars: {\n theme: 'os-theme-dark',\n visibility: 'auto',\n autoHide: 'scroll',\n autoHideDelay: 600,\n dragScroll: true,\n clickScroll: true\n },\n overflow: {\n x: 'hidden',\n y: 'scroll'\n }\n });\n console.log('OverlayScrollbars initialized successfully');\n } catch (error) {\n console.error('Failed to initialize OverlayScrollbars:', error);\n }\n },\n setupImageViewerObserver() {\n // 监听图片预览器的打开/关闭,动态控制 OverlayScrollbars\n this.imageViewerObserver = new MutationObserver(mutations => {\n const imageViewer = document.querySelector('.el-image-viewer__wrapper');\n if (imageViewer) {\n // 图片预览器打开,禁用滚动\n if (this.osInstance) {\n this.osInstance.options({\n overflow: {\n x: 'hidden',\n y: 'hidden'\n }\n });\n }\n } else {\n // 图片预览器关闭,恢复滚动\n if (this.osInstance) {\n this.osInstance.options({\n overflow: {\n x: 'hidden',\n y: 'scroll'\n }\n });\n }\n }\n });\n this.imageViewerObserver.observe(document.body, {\n childList: true,\n subtree: true\n });\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./App.vue?vue&type=template&id=6633a13d\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createApp } from 'vue'\r\nimport { createHead } from '@vueuse/head'; // 导入 createHead\r\nimport ElementPlus, { messageConfig } from 'element-plus'\r\nimport 'element-plus/es/components/message/style/css'\r\nimport 'element-plus/es/components/message-box/style/css'\r\n\r\nimport { library } from '@fortawesome/fontawesome-svg-core';\r\nimport { FontAwesomeIcon } from '@fortawesome/vue-fontawesome';\r\nimport fontAwesomeIcons from './utils/fontawesomeIcons';\r\n\r\nimport App from './App.vue'\r\nimport router from './router'\r\nimport store from './store'\r\nimport i18n, { initializeLocale } from './locales'\r\n\r\nimport * as ElementPlusIconsVue from '@element-plus/icons-vue'\r\nimport 'element-plus/theme-chalk/dark/css-vars.css'\r\nimport './styles/global.css'\r\n\r\n// OverlayScrollbars 悬浮滚动条\r\nimport 'overlayscrollbars/overlayscrollbars.css'\r\n\r\n\r\nlibrary.add(...fontAwesomeIcons);\r\n\r\n// 保留首条消息的顶部间距,同时允许 Element Plus 动态计算后续消息的位置。\r\nmessageConfig.offset = 30;\r\n\r\nconst app = createApp(App);\r\nconst head = createHead(); // 创建 head 对象\r\n\r\napp.component('font-awesome-icon', FontAwesomeIcon);\r\nfor (const [key, component] of Object.entries(ElementPlusIconsVue)) {\r\n app.component(key, component)\r\n}\r\n\r\n// 根据 useDarkMode 的值添加或移除 dark 类\r\nconst initDarkModeClass = () => {\r\n const htmlElement = document.documentElement;\r\n let isDarkMode;\r\n\r\n // 判断用户是否是自定义模式\r\n if (store.state.cusDarkMode && store.state.useDarkMode !== null) {\r\n // 用户手动设置了暗色模式\r\n isDarkMode = store.state.useDarkMode;\r\n } else {\r\n // 跟随系统模式或时间\r\n isDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches;\r\n if (!isDarkMode) {\r\n const now = new Date();\r\n const hour = now.getHours();\r\n isDarkMode = hour >= 22 || hour < 6;\r\n }\r\n // 更新 useDarkMode 的值\r\n store.commit('setUseDarkMode', isDarkMode);\r\n }\r\n\r\n if (isDarkMode) {\r\n htmlElement.classList.add('dark');\r\n } else {\r\n htmlElement.classList.remove('dark');\r\n }\r\n};\r\n\r\nconst applyDarkModeClass = (isDarkMode) => {\r\n const htmlElement = document.documentElement;\r\n if (isDarkMode) {\r\n htmlElement.classList.add('dark');\r\n } else {\r\n htmlElement.classList.remove('dark');\r\n }\r\n};\r\n\r\n// 预设网站标题的函数\r\nconst presetSiteTitle = (userConfig) => {\r\n document.title = userConfig?.siteTitle || 'Sanyue ImgHub';\r\n};\r\n\r\n// 预设和更新网站图标的函数\r\nconst presetSiteIcon = (isDarkMode, userConfig) => {\r\n // 同时更改 icon apple-touch-icon 和 mask-icon\r\n const existingIcons = document.querySelectorAll('link[rel=\"icon\"], link[rel=\"apple-touch-icon\"], link[rel=\"mask-icon\"]');\r\n existingIcons.forEach(icon => icon.remove());\r\n\r\n const iconLink = document.createElement('link');\r\n const appleIconLink = document.createElement('link');\r\n const maskIconLink = document.createElement('link');\r\n iconLink.rel = 'icon';\r\n appleIconLink.rel = 'apple-touch-icon';\r\n maskIconLink.rel = 'mask-icon';\r\n\r\n if (isDarkMode) {\r\n iconLink.href = userConfig?.siteIcon || '/static/media/logo-dark.png';\r\n appleIconLink.href = userConfig?.siteIcon || '/static/media/logo-dark.png';\r\n maskIconLink.href = userConfig?.siteIcon || '/static/media/logo-dark.png';\r\n } else {\r\n iconLink.href = userConfig?.siteIcon || '/static/media/logo.png';\r\n appleIconLink.href = userConfig?.siteIcon || '/static/media/logo.png';\r\n maskIconLink.href = userConfig?.siteIcon || '/static/media/logo.png';\r\n }\r\n\r\n document.head.appendChild(iconLink);\r\n document.head.appendChild(appleIconLink);\r\n document.head.appendChild(maskIconLink);\r\n};\r\n\r\nstore.dispatch('fetchUserConfig').then(() => {\r\n // 优先恢复用户选择;没有持久化选择时使用网页默认语言\r\n initializeLocale(store.getters.userConfig?.defaultLanguage);\r\n\r\n // 初始化时应用 dark 模式\r\n initDarkModeClass();\r\n\r\n // 预设网站标题和图标\r\n presetSiteTitle(store.getters.userConfig);\r\n presetSiteIcon(store.state.useDarkMode, store.getters.userConfig);\r\n\r\n // 监听 useDarkMode 和 cusDarkMode 的变化\r\n store.subscribe((mutation, state) => {\r\n if (mutation.type === 'setUseDarkMode' && store.state.cusDarkMode) {\r\n applyDarkModeClass(state.useDarkMode);\r\n // 同时更新网站图标\r\n presetSiteIcon(state.useDarkMode, store.getters.userConfig);\r\n }\r\n\r\n // 监听 cusDarkMode 变化,当设置为 false 时重新初始化\r\n if (mutation.type === 'setCusDarkMode' && !mutation.payload) {\r\n // 切换到跟随系统模式,重新初始化\r\n initDarkModeClass();\r\n // 同时更新网站图标\r\n presetSiteIcon(store.state.useDarkMode, store.getters.userConfig);\r\n }\r\n });\r\n\r\n app.use(store).use(router).use(ElementPlus).use(i18n).mount('#app');\r\n}).catch(error => {\r\n console.error('Failed to load user configuration:', error);\r\n initializeLocale();\r\n app.use(store).use(router).use(ElementPlus).use(i18n).use(head).mount('#app');\r\n})\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"js/\" + chunkId + \".\" + {\"130\":\"b657e68d\",\"223\":\"73628f82\",\"380\":\"94df9ff7\",\"385\":\"4d3f7ac7\",\"502\":\"58060353\",\"540\":\"8854b4d5\",\"711\":\"936a7109\",\"730\":\"1feabc6e\",\"757\":\"47b4e4b0\",\"773\":\"f0780366\",\"787\":\"d0dbc2dd\",\"903\":\"1e4b549d\",\"990\":\"e04c4ad6\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"css/\" + chunkId + \".\" + {\"130\":\"8ca5a76a\",\"173\":\"36158ceb\",\"223\":\"6b74609d\",\"385\":\"4f25fc20\",\"473\":\"f3f669e8\",\"502\":\"ae48a06e\",\"581\":\"01652a63\",\"711\":\"1a30de22\",\"730\":\"a3834df3\",\"757\":\"60c15823\",\"773\":\"147d098d\",\"787\":\"448a9124\",\"990\":\"a3834df3\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"sanyue_imghub:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = function(chunkId, fullhref, oldTag, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tif (__webpack_require__.nc) {\n\t\tlinkTag.nonce = __webpack_require__.nc;\n\t}\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && event.type;\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + errorType + \": \" + realHref + \")\");\n\t\t\terr.name = \"ChunkLoadError\";\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t524: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"130\":1,\"173\":1,\"223\":1,\"385\":1,\"473\":1,\"502\":1,\"581\":1,\"711\":1,\"730\":1,\"757\":1,\"773\":1,\"787\":1,\"990\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr\n\n// no prefetching\n\n// no preloaded","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t524: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(!/^([14]73|581)$/.test(chunkId)) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunksanyue_imghub\"] = self[\"webpackChunksanyue_imghub\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [504], function() { return __webpack_require__(81525); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["instance","axios","create","baseURL","withCredentials","adminAuthGuard","to","from","next","get","then","res","data","adminRequired","store","commit","valid","authType","wasLoggedIn","state","adminLoggedIn","name","ElMessage","error","i18n","global","t","catch","userAuthGuard","userRequired","userLoggedIn","routes","path","component","beforeEnter","router","createRouter","history","createWebHistory","process","createStore","userConfig","bingWallPapers","uploadMethod","uploadCopyUrlForm","compressConfig","customerCompress","undefined","compressQuality","compressBar","serverCompress","convertToWebp","storeUploadChannel","storeChannelName","storeAutoRetry","storeUploadNameType","uploadFolder","customUrlSettings","useCustomUrl","customUrlPrefix","adminUrlSettings","autoReUpload","useDarkMode","cusDarkMode","getters","storeUploadMethod","storeUploadFolder","localStorage","getItem","storeAutoReUpload","mutations","setUserConfig","setBingWallPapers","setAdminLoggedIn","loggedIn","setUserLoggedIn","setUploadMethod","setUploadCopyUrlForm","setCompressConfig","key","value","setStoreUploadChannel","uploadChannel","setStoreChannelName","channelName","setStoreUploadNameType","setCustomUrlSettings","setStoreAutoRetry","setAdminUrlSettings","setUseDarkMode","setCusDarkMode","setStoreUploadFolder","folder","setItem","setStoreAutoReUpload","actions","fetchUserConfig","response","console","log","fetchBingWallPapers","wallpapers","map","wallpaper","url","Promise","all","resolve","reject","img","Image","onload","onerror","src","modules","plugins","createPersistedState","paths","LOCALE_KEY","FALLBACK_LOCALE","SUPPORTED_LOCALES","Set","normalizeLocale","locale","has","getStoredLocale","resolveInitialLocale","defaultLocale","createI18n","legacy","fallbackLocale","messages","zhCN","en","applyLocale","document","documentElement","lang","initializeLocale","setLocale","normalizedLocale","faAngleDoubleLeft","faAngleDoubleRight","faArrowDown","faArrowLeft","faArrowUp","faAws","faBan","faBars","faBook","faBullhorn","faCalendar","faChartBar","faChartLine","faCheck","faCheckSquare","faChevronDown","faChevronLeft","faChevronRight","faCircleHalfStroke","faClock","faCloud","faCloudflare","faCloudUpload","faCloudUploadAlt","faCode","faCodeBranch","faCog","faCogs","faComments","faCompressAlt","faCopy","faDatabase","faDiscord","faDownload","faEdit","faEllipsisH","faEllipsisV","faExclamation","faExclamationCircle","faExclamationTriangle","faExternalLinkAlt","faEye","faFile","faFileAlt","faFileExport","faFileSignature","faFilter","faFolder","faFolderOpen","faFolderTree","faGlobe","faHashtag","faHistory","faHome","faICursor","faImage","faImages","faInbox","faInfoCircle","faLink","faList","faMinus","faMinusSquare","faMoon","faMusic","faPager","faPaperPlane","faPaste","faPlus","faQuestionCircle","faQuoteRight","faRedo","faRobot","faSave","faSearch","faServer","faShareAlt","faShield","faShieldAlt","faSignOutAlt","faSortAlphaUp","faSortAmountDown","faSpinner","faSquare","faSun","faSync","faSyncAlt","faTachometerAlt","faTag","faTags","faThLarge","faTimes","faTools","faTrashAlt","faUpload","faUserCog","render","_ctx","_cache","$props","$setup","$data","$options","_component_router_view","_component_el_config_provider","elementLocale","default","_","osInstance","imageViewerObserver","computed","this","$i18n","mounted","$nextTick","initOverlayScrollbars","setupImageViewerObserver","beforeUnmount","disconnect","watch","methods","body","scrollbars","theme","visibility","autoHide","autoHideDelay","dragScroll","clickScroll","overflow","x","y","MutationObserver","imageViewer","querySelector","options","observe","childList","subtree","__exports__","library","add","fontAwesomeIcons","messageConfig","offset","app","createApp","App","head","createHead","FontAwesomeIcon","Object","entries","ElementPlusIconsVue","initDarkModeClass","htmlElement","isDarkMode","window","matchMedia","matches","now","Date","hour","getHours","classList","remove","applyDarkModeClass","presetSiteTitle","title","siteTitle","presetSiteIcon","existingIcons","querySelectorAll","forEach","icon","iconLink","createElement","appleIconLink","maskIconLink","rel","href","siteIcon","appendChild","dispatch","defaultLanguage","subscribe","mutation","type","payload","use","ElementPlus","mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","call","m","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","f","e","chunkId","reduce","promises","u","miniCssF","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","inProgress","dataWebpackPrefix","l","done","push","script","needAttach","scripts","getElementsByTagName","s","getAttribute","charset","nc","setAttribute","onScriptComplete","prev","event","clearTimeout","timeout","doneFns","parentNode","removeChild","setTimeout","bind","target","Symbol","toStringTag","p","createStylesheet","fullhref","oldTag","linkTag","nonce","onLinkComplete","errorType","realHref","err","Error","code","request","insertBefore","nextSibling","findStylesheet","existingLinkTags","tag","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","installedChunks","installedChunkData","test","promise","loadingEnded","realSrc","message","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","id","chunkLoadingGlobal","self","__webpack_exports__"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/app.34dadb84.js.map.gz b/frontend-dist/js/app.34dadb84.js.map.gz deleted file mode 100644 index 2e62d0448c343ca6e5a8dc277a99a8f3d178e6fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18923 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 K$DzZa1pxp9cJLGc diff --git a/frontend-dist/js/app.3c3cf9d6.js b/frontend-dist/js/app.3c3cf9d6.js new file mode 100644 index 0000000..40417f2 --- /dev/null +++ b/frontend-dist/js/app.3c3cf9d6.js @@ -0,0 +1,2 @@ +(function(){"use strict";var e={457:function(e,a,t){var o=t(94373);const n=o.A.create({baseURL:"/",withCredentials:!0});a.A=n},16915:function(e,a,t){var o=t(48512),n=t(51219),i=t(25507),l=t(457),r=t(46638);const s=(e,a,t)=>{l.A.get("/api/auth/sessionCheck",{withCredentials:!0}).then(o=>{const l=o.data||{};if(!l.adminRequired)return i.A.commit("beginAdminAccess",{required:!1,fresh:!["dashboard","systemConfig","customerConfig"].includes(a.name)}),i.A.commit("setAdminLoggedIn",!0),t();if(l.valid&&"admin"===l.authType)return i.A.commit("beginAdminAccess",{required:!0,fresh:!1}),i.A.commit("setAdminLoggedIn",!0),t();const s=i.A.state.adminLoggedIn;i.A.commit("setAdminLoggedIn",!1),"adminLogin"!==e.name?(s&&n.nk.error(r.Ay.global.t("login.authRequired")),t({name:"adminLogin"})):t()}).catch(()=>{const a=i.A.state.adminLoggedIn;i.A.commit("setAdminLoggedIn",!1),"adminLogin"!==e.name?(a&&n.nk.error(r.Ay.global.t("login.authRequired")),t({name:"adminLogin"})):t()})},d=(e,a,t)=>{l.A.get("/api/auth/sessionCheck",{withCredentials:!0}).then(a=>{const o=a.data||{};if(!o.userRequired)return i.A.commit("setUserLoggedIn",!0),t();if(o.valid)return i.A.commit("setUserLoggedIn",!0),t();const l=i.A.state.userLoggedIn;i.A.commit("setUserLoggedIn",!1),"login"!==e.name?(l&&n.nk.error(r.Ay.global.t("login.authRequired")),t({name:"login"})):t()}).catch(()=>{const a=i.A.state.userLoggedIn;i.A.commit("setUserLoggedIn",!1),"login"!==e.name?(a&&n.nk.error(r.Ay.global.t("login.authRequired")),t({name:"login"})):t()})},c=[{path:"/",name:"home",component:()=>Promise.all([t.e(903),t.e(173),t.e(860),t.e(502)]).then(t.bind(t,67502)),beforeEnter:d},{path:"/login",name:"login",component:()=>Promise.all([t.e(903),t.e(380),t.e(990)]).then(t.bind(t,61880))},{path:"/dashboard",name:"dashboard",component:()=>Promise.all([t.e(903),t.e(173),t.e(540),t.e(860),t.e(787)]).then(t.bind(t,57022)),beforeEnter:s},{path:"/customerConfig",name:"customerConfig",component:()=>Promise.all([t.e(903),t.e(173),t.e(540),t.e(581),t.e(223)]).then(t.bind(t,94223)),beforeEnter:s},{path:"/systemConfig",name:"systemConfig",component:()=>Promise.all([t.e(903),t.e(173),t.e(540),t.e(581),t.e(126)]).then(t.bind(t,10126)),beforeEnter:s},{path:"/adminLogin",name:"adminLogin",component:()=>Promise.all([t.e(903),t.e(380),t.e(730)]).then(t.bind(t,16556))},{path:"/blockimg",name:"blockimg",component:()=>Promise.all([t.e(903),t.e(711)]).then(t.bind(t,5215))},{path:"/whiteliston",name:"whiteliston",component:()=>Promise.all([t.e(903),t.e(773)]).then(t.bind(t,86569))},{path:"/browse/:dir*",name:"publicBrowse",component:()=>t.e(385).then(t.bind(t,57385))},{path:"/:pathMatch(.*)*",name:"notFound",component:()=>Promise.all([t.e(903),t.e(168)]).then(t.bind(t,75875))}],m=(0,o.aE)({history:(0,o.LA)("/"),routes:c});a.A=m},25507:function(e,a,t){t(18111),t(61701);var o=t(60782),n=t(457),i=t(55131);a.A=(0,o.y$)({state:{userConfig:null,bingWallPapers:[],adminLoggedIn:!1,adminAccessStarted:!1,adminAuthWarningVisible:!1,userLoggedIn:!1,uploadMethod:"default",uploadCopyUrlForm:"",compressConfig:{customerCompress:void 0,compressQuality:void 0,compressBar:void 0,serverCompress:void 0,convertToWebp:void 0},storeUploadChannel:"",storeChannelName:null,storeAutoRetry:!0,storeUploadNameType:"",uploadFolder:"",customUrlSettings:{useCustomUrl:"false",customUrlPrefix:""},adminUrlSettings:{useCustomUrl:"false",customUrlPrefix:""},autoReUpload:!0,useDarkMode:null,cusDarkMode:!1},getters:{userConfig:e=>e.userConfig,bingWallPapers:e=>e.bingWallPapers,adminLoggedIn:e=>e.adminLoggedIn,userLoggedIn:e=>e.userLoggedIn,storeUploadMethod:e=>e.uploadMethod,uploadCopyUrlForm:e=>e.uploadCopyUrlForm,compressConfig:e=>e.compressConfig,storeUploadChannel:e=>e.storeUploadChannel,storeChannelName:e=>e.storeChannelName,storeUploadNameType:e=>e.storeUploadNameType,customUrlSettings:e=>e.customUrlSettings,storeAutoRetry:e=>e.storeAutoRetry,adminUrlSettings:e=>e.adminUrlSettings,storeUploadFolder:e=>e.uploadFolder||localStorage.getItem("uploadFolder")||"",useDarkMode:e=>e.useDarkMode,cusDarkMode:e=>e.cusDarkMode,storeAutoReUpload:e=>e.autoReUpload},mutations:{setUserConfig(e,a){e.userConfig=a},setBingWallPapers(e,a){e.bingWallPapers=a},setAdminLoggedIn(e,a){e.adminLoggedIn=a,a||(e.adminAccessStarted=!1,e.adminAuthWarningVisible=!1)},beginAdminAccess(e,{required:a,fresh:t}){a||!t&&e.adminAccessStarted||(e.adminAuthWarningVisible=!0),e.adminAccessStarted=!0},dismissAdminAuthWarning(e){e.adminAuthWarningVisible=!1},setUserLoggedIn(e,a){e.userLoggedIn=a},setUploadMethod(e,a){e.uploadMethod=a},setUploadCopyUrlForm(e,a){e.uploadCopyUrlForm=a},setCompressConfig(e,{key:a,value:t}){e.compressConfig[a]=t},setStoreUploadChannel(e,a){e.storeUploadChannel=a},setStoreChannelName(e,a){e.storeChannelName=a},setStoreUploadNameType(e,a){e.storeUploadNameType=a},setCustomUrlSettings(e,{key:a,value:t}){e.customUrlSettings[a]=t},setStoreAutoRetry(e,a){e.storeAutoRetry=a},setAdminUrlSettings(e,{key:a,value:t}){e.adminUrlSettings[a]=t},setUseDarkMode(e,a){e.useDarkMode=a},setCusDarkMode(e,a){e.cusDarkMode=a},setStoreUploadFolder(e,a){e.uploadFolder=a,localStorage.setItem("uploadFolder",a)},setStoreAutoReUpload(e,a){e.autoReUpload=a}},actions:{async fetchUserConfig({commit:e}){try{const a=await n.A.get("/api/userConfig");e("setUserConfig",a.data)}catch(a){console.log(a)}},async fetchBingWallPapers({commit:e}){try{const a=await n.A.get("/api/bing/wallpaper"),t=a.data.data,o=t.map(e=>({url:"https://www.bing.com"+e.url}));await Promise.all(o.map(e=>new Promise((a,t)=>{const o=new Image;o.onload=a,o.onerror=t,o.src=e.url}))),e("setBingWallPapers",o)}catch(a){console.log(a)}}},modules:{},plugins:[(0,i.A)({paths:["userConfig","uploadMethod","uploadCopyUrlForm","compressConfig","storeUploadChannel","storeChannelName","storeAutoRetry","storeUploadNameType","uploadFolder","customUrlSettings","adminUrlSettings","autoReUpload","useDarkMode","cusDarkMode"]})]})},46638:function(e,a,t){t.d(a,{Ay:function(){return f},BY:function(){return g},xS:function(){return h}});t(17642),t(58004),t(33853),t(45876),t(32475),t(15024),t(31698);var o=t(85384),n=JSON.parse('{"login":{"title":"登录到 {owner} 图床","adminTitle":"管理端登录","password":"密码","username":"用户名","passwordPlaceholder":"请输入认证码","usernamePlaceholder":"请输入用户名","adminPasswordPlaceholder":"请输入密码","submit":"登录","success":"登录成功","failed":"登录失败,请检查密码是否正确","adminFailed":"用户名或密码错误","serverError":"服务器错误","systemError":"系统错误","authRequired":"请先认证!","authFailed":"认证失败!"},"upload":{"folderPlaceholder":"上传目录","pasteUpload":"粘贴上传","fileUpload":"文件上传","selectFolderUpload":"选择文件夹上传","dragUploadText":"拖拽 点击 或 {pasteShortcut} 粘贴上传","pasteUrlPlaceholder":"粘贴外链上传,多个外链用换行分隔","pasteUploadBtn":"上 传","pasteSave":"转存","pasteExternal":"外链","history":"上传记录","announcement":"查看公告","noAnnouncement":"暂无公告","announcementTitle":"公告","announcementAck":"我已知晓!","settings":"上传设置","linkFormat":"链接格式","manage":"系统管理","logout":"退出登录","logoutSuccess":"已退出登录","viewDocs":"查看文档","switchUploadMethod":"切换上传方式","copyAll":"整体复制","retryFailed":"失败重试","clearList":"清空列表","clearAll":"清空全部","clearUploaded":"清空已上传"},"uploadForm":{"deleted":"{name}已删除","uploadSuccess":"{name}上传成功","uploadFailed":"{name}上传失败","compressFailedCannotUpload":"{name}压缩失败,无法上传!","fileTooLarge":"{name}文件过大,无法上传!","compressedFileTooLarge":"{name}压缩后文件过大,无法上传!","copySuccess":"复制成功","copyFailed":"复制失败","copyAllSuccess":"整体复制成功","fileNotUploaded":"文件未上传成功,无法复制链接","fileListCleared":"文件列表已清空","fileListEmpty":"文件列表为空","successFilesCleared":"成功上传文件已清空","successFilesEmpty":"成功上传文件为空","noFailedFiles":"无上传失败文件","autoRetryOn":"自动重试已开启","autoRetryOff":"自动重试已关闭","autoRetry":"自动重试","maxRetryReached":"{name} 已达到最大重试次数({max}),停止重试","urlRequestFailed":"粘贴板中的URL地址请求失败","chunkMerging":"分块上传完成,正在合并文件,请耐心等待...","fileSizeTooLarge":"文件过大","chunkInitFailed":"初始化分块上传失败","uploadError":"上传过程中发生错误","imageLoadFailed":"图片加载失败"},"uploadSettings":{"title":"上传设置","uploadChannel":"上传渠道","channelType":"渠道类型","allChannels":"全部","configuredChannelsOnly":"已配置","noConfiguredChannels":"暂无已配置渠道","channelName":"渠道名称","channelNameTooltip":"选择具体的渠道名称,不选择则使用负载均衡或默认渠道","autoSelect":"自动选择","uploadDirectory":"上传目录","uploadDirectoryPlaceholder":"请输入上传目录路径","autoSwitch":"自动切换","autoSwitchTooltip":"对于非分块上传文件,上传失败自动切换到其他渠道上传","fileNaming":"文件命名方式","namingDefault":"默认","namingIndex":"仅前缀","namingOrigin":"仅原名","namingShort":"短链接","filePreprocess":"文件预处理","filePreprocessTooltip":"上传前在本地进行格式转换和压缩,仅对图片文件生效","convertToWebp":"转换为WebP","convertToWebpTooltip":"上传前将图片转换为WebP格式,可有效减小文件体积。转换失败时保持原格式上传","fileCompress":"文件压缩","compressThreshold":"压缩阈值","compressThresholdTooltip":"设置图片大小阈值,超过此值将自动压缩,单位MB","expectedSize":"期望大小","expectedSizeTooltip":"设置压缩后图片大小期望值,单位MB","serverCompress":"服务端压缩","serverCompressTooltip":"1. 在 Telegram 端进行压缩,仅对上传渠道为 Telegram 的图片文件生效
2. 若图片大小(本地压缩后大小)大于10MB,本设置自动失效
3. 若上传分辨率过大、透明背景等图片,建议关闭服务端压缩,否则可能出现未知问题","enableCompress":"开启压缩","confirm":"确定"},"uploadHistory":{"title":"历史记录","totalRecords":"共 {count} 条","switchView":"切换视图","clearRecords":"清空记录","loading":"加载中...","pullToLoadMore":"下拉加载更多","noMoreRecords":"没有更多记录了","emptyHistory":"暂无上传记录","linkCopied":"链接已复制","copyFailed":"复制失败","clearConfirmTitle":"提示","clearConfirmMessage":"确定要清空所有上传记录吗?","clearConfirmOk":"确定","clearConfirmCancel":"取消","recordsCleared":"记录已清空","deleteConfirmMessage":"确定要删除这条记录吗?","recordDeleted":"记录已删除"},"settings":{"linkFormatTitle":"链接格式设置","defaultCopyLink":"默认复制链接","rawLink":"原始链接","customLink":"自定义链接","customLinkTooltip":"默认链接为https://your.domain/file/xxx.jpg
如果启用自定义链接格式,只保留xxx.jpg部分,其他部分请自行输入","enableCustom":"启用自定义","customPrefix":"自定义前缀","customPrefixPlaceholder":"请输入自定义链接前缀","confirm":"确定","s3Link":"S3链接"},"dashboard":{"searchPlaceholder":"搜索:#标签 -#排除标签","sortAsc":"升序","sortDesc":"降序","sortByTime":"时间","sortBySize":"大小","sortByRawName":"文件 ID","sortByFileName":"文件名","selectedItems":"项已选","clearSelection":"清除选择","copy":"复制","delete":"删除","download":"下载","move":"移动","tagManagement":"标签管理","addToBlacklist":"加入黑名单","addToWhitelist":"加入白名单","linkFormat":"链接格式","listView":"列表视图","cardView":"卡片视图","logout":"退出登录","rootDirectory":"根目录","totalFiles":"共 {count} 个文件","noMatchingFiles":"未找到匹配的文件或文件夹","currentDirEmpty":"当前目录为空","adjustSearchHint":"尝试调整搜索条件或筛选器","uploadHint":"上传文件后将显示在这里","loadMore":"加载更多","totalPages":"共 {count} 页","jumpTo":"跳至","preview":"预览","fileName":"文件名","tags":"标签","channelType":"渠道类型","channelNameCol":"渠道名称","uploadAddress":"上传地址","fileSize":"大小","uploadTime":"上传时间","actions":"操作","externalTag":"外链","unknownTag":"未知","detail":"详情","copyLink":"复制链接","moveFile":"移动","downloadFile":"下载","loadFailed":"加载失败","copySuccess":"复制成功","copyFailed":"复制失败","deleteConfirm":"此操作将永久删除该文件, 是否继续?","deleteConfirmTitle":"提示","deleteConfirmOk":"确定","deleteConfirmCancel":"取消","deleteSuccess":"删除成功","deleteFailed":"删除失败","blockConfirm":"此操作将把该文件加入黑名单, 是否继续?","blockSuccess":"加入黑名单成功","blockFailed":"加入黑名单失败","whiteConfirm":"此操作将把该文件加入白名单, 是否继续?","whiteSuccess":"加入白名单成功","whiteFailed":"加入白名单失败","deleteFolderConfirm":"此操作将永久删除文件夹, 是否继续?","deleteFileConfirm":"此操作将永久删除该文件, 是否继续?","batchDeleteConfirm":"此操作将永久删除选中的文件及文件夹, 是否继续?","batchDeleteSuccess":"批量删除成功","batchDeleteFailed":"批量删除失败","batchBlockConfirm":"此操作将把选中的文件加入黑名单, 是否继续?","batchBlockSuccess":"批量加入黑名单成功","batchBlockFailed":"批量加入黑名单失败","batchWhiteConfirm":"此操作将把选中的文件加入白名单, 是否继续?","batchWhiteSuccess":"批量加入白名单成功","batchWhiteFailed":"批量加入白名单失败","noLinksAvailable":"没有可复制的链接","batchCopySuccess":"批量复制 {count} 个链接成功","batchCopyFailed":"批量复制链接失败,请重试","batchCopyLinksSuccess":"批量复制链接成功","copyFileLinkSuccess":"复制文件链接成功","fileListMemoryCacheWarning":"文件列表较大,已切换为内存缓存;刷新页面后需要重新加载列表。","indexingWarning":"索引构建中,当前搜索和排序结果可能不准确,请稍后再试。","loadMoreFailed":"加载更多文件失败,请检查网络连接","moveSuccess":"移动成功","moveFailed":"移动失败","moveTargetSameAsCurrent":"目标文件夹不能是当前文件夹","invalidPageNumber":"请输入有效的页码","pageExceedsMax":"页码不能超过 {max}","loadingData":"正在加载数据,请稍候...","loadDataFailed":"加载数据失败,请检查网络连接","fetchFileListFailed":"获取文件列表失败","refreshFailed":"刷新失败,请重试","selectFilesFirst":"请先选择文件","syncDataError":"同步数据时出错,请检查网络连接","fetchingFileList":"正在获取文件列表...","folderEmptyNoLinks":"文件夹为空,没有可复制的链接","copiedFileLinks":"已复制 {count} 个文件链接","copyFolderLinksFailed":"复制文件夹链接失败,请重试"},"dashboardTabs":{"fileManagement":"文件管理","userManagement":"用户管理","systemSettings":"系统设置","fileUpload":"文件上传"},"fileDetail":{"title":"文件详情","download":"下载","tags":"标签","blacklist":"黑名单","whitelist":"白名单","deleteBtn":"删除","edit":"编辑","rename":"重命名","save":"保存","cancel":"取消","originUrl":"原始链接","fileNameLabel":"文件名","fileNamePlaceholder":"请输入文件名","fileType":"文件类型","fileTypePlaceholder":"如 image/jpeg","fileSizeLabel":"文件大小","imageDimensions":"图片尺寸","noDimensions":"无","uploadTimeLabel":"上传时间","channelTypeAndName":"渠道类型/名称","accessStatusAndReview":"访问状态/审查","uploadIP":"上传IP","uploadAddressLabel":"上传地址","fileTags":"文件标签","noTags":"暂无标签","unknown":"未知","accessNormal":"正常","accessNormalWhitelist":"正常(白名单)","accessBlockedBlacklist":"已屏蔽(黑名单)","accessBlockedReview":"已屏蔽(审查不通过)","orientationLandscape":"横","orientationPortrait":"竖","orientationSquare":"方","linkCopied":"链接已复制","metadataSaved":"元数据保存成功","metadataSaveFailed":"保存元数据失败","renameTitle":"重命名 File ID","renameLabel":"新 File ID","renamePlaceholder":"请输入新的 File ID","renameCancel":"取消","renameConfirm":"确认重命名","renameSuccess":"文件重命名成功","renameConflict":"目标文件名已存在","renameFailed":"重命名失败"},"filter":{"accessStatus":"访问状态","normal":"正常","blocked":"已屏蔽","blackWhiteList":"黑白名单","whiteList":"白名单","blackList":"黑名单","notSet":"未设置","reviewResult":"审查结果","teenContent":"12+内容","adultContent":"成人内容","fileType":"文件类型","image":"图片","video":"视频","audio":"音频","other":"其他","channelType":"渠道类型","externalLink":"外链","channelName":"渠道名称","clearFilters":"清除筛选"},"moveFile":{"title":"移动文件","batchTitle":"批量移动文件","targetDirectory":"目标目录","targetPlaceholder":"请输入目标目录路径","hint":"提示:路径以 / 开头表示根目录,如 /photos/2024/","hintMobile":"提示:路径以 / 开头表示根目录","selectDirectory":"选择目录","cancel":"取消","confirm":"确定","retry":"重试","authFailed":"认证失败,请重新登录","serverError":"服务器错误,请稍后重试","loadTreeFailed":"加载目录树失败,请检查网络连接"},"batchTag":{"title":"批量标签管理","addTab":"添加","removeTab":"移除","clearTab":"清空","addDescription":"为选中的 {count} 个文件添加标签","inputPlaceholder":"输入标签名称","pendingTags":"待添加的标签","noPendingTags":"暂无待添加标签","addToAllFiles":"添加到所有文件","removeDescription":"移除选中文件的共有标签","commonTags":"共有标签","noCommonTags":"选中的文件没有共有标签","clearDescription":"清空选中的 {count} 个文件的所有标签","clearWarningTitle":"⚠️警告","clearWarningDesc":"此操作将清空所有选中文件的标签,且不可恢复","confirmClearAll":"确认清空所有标签","tagAlreadyInList":"标签已在列表中","pleaseAddTags":"请先添加要批量添加的标签","addSuccess":"成功为 {count} 个文件添加标签","addFailed":"批量添加标签失败","removeSuccess":"成功从 {count} 个文件中移除标签","removeFailed":"移除标签失败","clearConfirmMessage":"确定要清空选中的 {count} 个文件的所有标签吗?此操作不可恢复。","clearConfirmTitle":"确认清空","clearConfirmOk":"确定","clearConfirmCancel":"取消","clearCancelled":"已取消清空操作","clearSuccess":"成功清空 {count} 个文件的标签","clearFailed":"清空标签失败","partialSave":"已完成 {saved}/{total} 个文件,请重试未完成的操作。","loadCommonTagsFailed":"加载共有标签失败"},"tagManagement":{"title":"标签管理","inputPlaceholder":"输入标签名称","currentTags":"当前标签","noTags":"暂无标签","popularTags":"常用标签","loading":"加载中...","noPopularTags":"暂无常用标签","close":"关闭","tagExists":"标签已存在","addSuccess":"标签添加成功","addFailed":"添加标签失败","removeSuccess":"标签删除成功","removeFailed":"删除标签失败","loadFailed":"加载标签失败","indexPending":"标签已保存,索引同步失败。"},"mobileAction":{"viewDetail":"查看详情","copyLink":"复制链接","downloadFile":"下载文件","moveFile":"移动文件","tagManagement":"标签管理","moveFolder":"移动文件夹","deleteFile":"删除文件","deleteFolder":"删除文件夹"},"mobileDirectory":{"title":"目录导航","rootDirectory":"根目录","goBack":"返回上一级"},"sysConfig":{"logout":"退出登录"},"sysConfigTabs":{"systemStatus":"系统状态","uploadSettings":"上传设置","securitySettings":"安全设置","pageSettings":"网页设置","otherSettings":"其他设置"},"dateRangeCalendar":{"previousMonth":"上个月","nextMonth":"下个月","startDate":"起始日期","endDate":"结束日期","rangeSeparator":"至","monthTitle":"{year}-{month}","weekdaySun":"日","weekdayMon":"一","weekdayTue":"二","weekdayWed":"三","weekdayThu":"四","weekdayFri":"五","weekdaySat":"六"},"sysStatus":{"systemOverview":"系统运行概览","healthHealthy":"运行正常","healthChecking":"正在检查","healthAttention":"状态读取异常","greetingMorning":"早上好,欢迎回来","greetingNoon":"中午好,保持好状态","greetingAfternoon":"下午好,工作顺利","greetingEvening":"晚上好,辛苦了","greetingLateNight":"夜深了,注意休息","summaryChecking":"正在连接系统服务并读取最新的索引信息…","summaryUnavailable":"暂时无法读取系统状态,请检查网络连接或稍后刷新页面。","summaryEmpty":"系统响应正常,索引服务已就绪,正在等待首个文件上传。","summaryIndexed":"系统响应正常,当前已索引 {files} 个文件。","summaryHealthy":"系统响应正常,当前已索引 {files} 个文件,覆盖 {channels} 个上传渠道。","localTime":"本地时间","localTimezone":"本地时区","totalFiles":"文件总数","clickToRefresh":"点击刷新","indexUpdateTime":"索引更新时间","systemVersion":"系统版本","clickToViewChangelog":"点击查看更新日志","channelDistribution":"上传渠道分布","fileStatusDistribution":"文件状态分布","uploadTrend":"上传趋势","uploadTrendGroupBy":"上传趋势分组方式","totalUploads":"上传总数","byChannelType":"渠道类型","byChannelName":"渠道名称","selectDateRange":"选择日期范围","otherChannels":"其他","uploadsUnit":"次","noData":"暂无数据","totalFilesLabel":"文件总数","statusTypes":"状态类型","systemMaintenance":"系统维护","rebuildIndex":"重建索引","rebuilding":"重建中...","rebuildTooltip":"重新扫描所有文件并更新索引数据,适用于数据不一致时的修复","backupData":"备份数据","backingUp":"备份中...","backupTooltip":"备份所有文件元数据和系统设置到JSON文件","restoreData":"恢复数据","restoring":"恢复中...","restoreTooltip":"从备份文件恢复数据,将覆盖现有的文件元数据和系统设置","cancelOperation":"取消操作","retry":"重试","close":"关闭","records":"条记录","aboutToComplete":"即将完成","seconds":"约 {count} 秒","minutes":"约 {count} 分钟","hoursMinutes":"约 {hours} 小时 {minutes} 分钟","phaseFetching":"正在获取数据","phaseSorting":"正在排序","phaseUploading":"正在上传","phaseFinalizing":"正在完成","phaseBuilding":"正在构建备份","phaseDownloading":"正在生成下载","phaseRestoringFiles":"正在恢复文件","phaseRestoringSettings":"正在恢复设置","phaseCompleted":"已完成","phaseRetrying":"正在重试","rebuildSuccess":"索引重建完成!共处理 {count} 个文件","backupSuccess":"备份完成!共备份 {count} 个文件","backupSuccessWithSettings":"备份完成!共备份 {fileCount} 个文件,{settingsCount} 个设置项","operationInProgress":"已有操作正在进行中","selectJsonFile":"请选择JSON格式的备份文件","restoreConfirmMessage":"恢复操作将覆盖现有的文件元数据和系统设置,此操作不可逆。确定要继续吗?","restoreConfirmTitle":"确认恢复","restoreConfirmOk":"确定恢复","restoreConfirmCancel":"取消","invalidBackupFile":"备份文件格式无效,请选择有效的 JSON 文件","restoreSuccess":"恢复完成!已恢复 {files} 个文件和 {settings} 个设置项,正在重建索引...","restoreFailed":"恢复数据失败","fetchIndexFailed":"获取索引信息失败","unknown":"未知","blocked":"已屏蔽","normalStatus":"正常","latestUpload":"最近上传","earliestUpload":"最早上传","daysAgo":"{count}天前","hoursAgo":"{count}小时前","minutesAgo":"{count}分钟前","justNow":"刚刚","cancellingRebuild":"正在取消索引重建..."},"sysUpload":{"title":"上传渠道管理","titleTooltip":"管理所有上传渠道的配置,点击卡片查看详情或编辑","filterPlaceholder":"筛选渠道类型","addChannel":"添加渠道","loadBalance":"负载均衡","unnamedChannel":"未命名渠道","envVariable":"环境变量","noChannels":"暂无 {type} 渠道","detail":"详情","editBtn":"编辑","deleteBtn":"删除","addDialogTitle":"添加新渠道","channelTypeLabel":"渠道类型","channelTypePlaceholder":"请选择渠道类型","channelNameLabel":"渠道名称","channelNamePlaceholder":"请输入渠道名称","channelNameImmutableTip":"添加后将作为文件关联渠道的唯一标识,不支持修改","channelNameEditDisabledTip":"渠道名称用于关联已上传文件,不支持修改","botTokenLabel":"Bot Token","botTokenPlaceholder":"请输入 Bot Token","chatIdLabel":"Chat ID","chatIdPlaceholder":"请输入 Chat ID","proxyDomain":"代理域名","proxyDomainPlaceholder":"可选,例如: your-proxy.example.com","endpointLabel":"Endpoint","endpointPlaceholder":"例如: https://s3.us-east-005.backblazeb2.com","cdnDomain":"CDN 域名","cdnDomainPlaceholder":"可选,请填写完整 CDN 访问地址前缀,例如:https://cdn.example.com","cdnDomainTip":"可选配置。可用于生成和展示文件访问链接,服务端读取文件内容时也会优先尝试通过 CDN 读取。","bucketName":"存储桶名称","bucketNamePlaceholder":"请输入存储桶名称","bucketRegion":"存储桶区域","bucketRegionPlaceholder":"默认填写 auto","accessKeyId":"访问密钥 ID","accessKeyIdPlaceholder":"请输入访问密钥 ID","secretAccessKey":"机密访问密钥","secretAccessKeyPlaceholder":"请输入机密访问密钥","pathStyle":"路径风格","pathStyleTip":"使用 OpenList 等不兼容主机风格服务时需开启","quotaLimit":"容量限制","quotaLimitGB":"容量上限 (GB)","quotaThreshold":"停用阈值 (%)","channelIdLabel":"Channel ID","channelIdPlaceholder":"请输入 Channel ID","nitroMember":"Nitro 会员","nitroTip":"会员单文件限制 25MB,否则为 10MB","discordWarning":"Discord 有接口频率限制,不建议将其用作大规模并发场景","repoName":"仓库名","repoNamePlaceholder":"格式: username/repo-name","accessToken":"Access Token","accessTokenPlaceholder":"请输入 Access Token","privateRepo":"私有仓库","privateRepoTip":"私有仓库限制 100GB","webdavBaseUrl":"WebDAV 基础地址","webdavBaseUrlPlaceholder":"例如: https://dav.example.com/remote.php/dav/files/user/imgbed/","webdavUsername":"用户名","webdavUsernamePlaceholder":"可选用户名","webdavPassword":"密码","webdavPasswordPlaceholder":"可选密码","webdavPublicUrlPlaceholder":"可选,请填写完整公开访问地址前缀,例如:https://cdn.example.com/imgbed","webdavPublicUrlTip":"可选配置。服务端读取文件内容时会优先尝试通过该公开地址读取,失败后回退 WebDAV API。","webdavHeaders":"自定义请求头","webdavHeadersPlaceholder":"可选 JSON 对象,例如: {\'{\\"X-Api-Key\\":\\"value\\"}\'}","webdavHeadersInvalid":"自定义请求头必须是有效的 JSON 对象","webdavCreateDirectory":"自动创建目录","webdavCreateDirectoryTip":"上传文件前自动创建父级目录","cancel":"取消","confirmAdd":"确认添加","detailDialogTitle":"渠道详情 - {name}","channelNameDetail":"渠道名称","channelTypeDetail":"渠道类型","statusLabel":"状态","enabled":"已启用","disabled":"已禁用","configSource":"配置来源","publicUrl":"公开访问链接","notSet":"未设置","isPathStyle":"是","isNotPathStyle":"否","currentUsage":"当前用量","closeBtn":"关闭","editDialogTitle":"编辑渠道 - {name}","enableChannel":"启用渠道","saveChanges":"保存修改","r2ConfigNote":"请按照 配置 R2 渠道 文档说明添加 R2 渠道","reservedName":"该名称为系统保留名称,请使用其他名称","duplicateName":"该类型下已存在同名渠道,请使用其他名称","fixedChannelCannotDelete":"环境变量配置的渠道无法删除","deleteChannelConfirm":"确定要删除该渠道吗?删除后,仍关联该渠道的文件可能无法访问。","quotaInitConfirm":"首次启用容量限制需要统计现有文件容量,这可能需要一些时间。是否立即统计?","quotaInitTitle":"初始化容量统计","quotaInitConfirmBtn":"立即统计","quotaInitCancelBtn":"稍后手动统计","quotaInitLater":"您可以稍后点击刷新按钮手动统计","quotaCalculating":"正在统计容量,请稍候...","quotaCalculateSuccess":"容量统计完成","quotaCalculateFailed":"统计失败","quotaCalculateError":"统计失败: "},"sysSecurity":{"authManagement":"认证管理","userAuth":"用户端认证","adminAuth":"管理端认证","uploadPassword":"上传密码","confirmPassword":"确认密码","adminUsername":"用户名","adminPassword":"密码","apiTokenManagement":"API Token 管理","imageReview":"图像审查","imageReviewTooltip":"仅对非分块上传文件生效,支持 nsfwjs 和 moderatecontent.com 渠道","enableReview":"开启审查","reviewChannel":"审查渠道","reviewChannelPlaceholder":"请选择审查渠道","apiKey":"API Key","apiPath":"API 路径","ipQuery":"IP 归属地查询","ipQueryTooltip":"上传时按配置调用自定义 API 查询上传 IP 归属地,参数值支持 {\'{ip}\'} 占位符","enableIpQuery":"开启查询","ipQueryChannel":"查询渠道","ipQueryChannelPlaceholder":"请选择查询渠道","customApi":"自定义 API","queryParams":"查询参数","paramNamePlaceholder":"参数名","paramValuePlaceholder":"参数值,如 {\'{ip}\'}","addQueryParam":"添加参数","responseFields":"响应字段","responseFieldsTip":"最终显示内容会按照字段顺序拼接","responseFieldPathPlaceholder":"JSON 路径,如 country.name","addResponseField":"添加字段","uploadManagement":"上传管理","accessManagement":"访问管理","domainFilter":"域名过滤","allowedDomains":"放行域名","allowedDomainsTooltip":"1.针对访问域名设置权限
2.留空默认全部放行,多个域名请用英文逗号分隔","whiteListMode":"白名单模式","enableWhiteList":"是否开启","enableWhiteListTooltip":"1.针对文件设置权限
2.开启后,仅被加入白名单的文件可被访问","imageTransform":"图片尺寸处理","enableImageTransform":"是否开启","enableImageTransformTooltip":"开启后,读取文件接口可通过 width、height 和 fit 参数处理图片尺寸","imageTransformAllowedSizes":"允许尺寸","imageTransformAllowedSizesPlaceholder":"例如 320xauto,640xauto,1280x720","imageTransformAllowedSizesHint":"留空允许任意合法尺寸
多个尺寸用英文逗号分隔,单边未限制时填写 auto","imageTransformAllowedSizesInvalid":"尺寸格式无效,请使用 320xauto、autox480 或 1280x720,单边最大 4096","settingsSaved":"设置已保存","tokenName":"名称","tokenValue":"Token","permissions":"权限","createdAt":"创建时间","status":"状态","expiresAt":"过期时间","operation":"操作","editBtn":"编辑","deleteBtn":"删除","permUpload":"上传","permDelete":"删除","permList":"列出","permManage":"管理","createTokenTitle":"创建新 API Token","tokenNameLabel":"Token 名称","tokenNamePlaceholder":"请输入Token名称","permissionsLabel":"权限","neverExpire":"永不过期","validPeriod":"有效期","autoDeleteOnExpire":"过期自动删除","createBtn":"创建","editTokenTitle":"编辑 API Token","updateBtn":"更新","tokenCreatedTitle":"Token 创建成功","tokenCreatedWarning":"请妥善保存以下Token,关闭此窗口后将无法再次查看完整Token!","fullToken":"完整Token","copyBtn":"复制","savedBtn":"我已保存","tokenCopied":"Token已复制到剪贴板","copyFailed":"复制失败,请手动复制","tokenCreateSuccess":"Token创建成功","tokenCreateFailed":"Token创建失败","tokenUpdateSuccess":"Token更新成功","tokenUpdateFailed":"Token更新失败","tokenDeleteConfirm":"此操作将永久删除该Token,是否继续?","tokenDeleteConfirmTitle":"提示","tokenDeleteConfirmOk":"确定","tokenDeleteConfirmCancel":"取消","tokenDeleteSuccess":"Token删除成功","tokenDeleteFailed":"Token删除失败","tokenListFailed":"获取Token列表失败","passwordUrlReserved":"密码不能包含部分URL保留字符: % & ? # /","confirmUploadPassword":"请再次输入上传密码","confirmAdminPassword":"请再次输入管理密码","passwordMismatch":"两次输入密码不一致","passwordUnchanged":"未修改(留空保持原密码)","adminPasswordChangedRelogin":"管理端密码已修改,即将跳转到登录页","clearPassword":"清除认证信息","tokenNameRequired":"请输入Token名称","permissionsRequired":"请选择权限","validPeriodRequired":"有效期数值必须大于 0","timeUnitSeconds":"秒","timeUnitMinutes":"分钟","timeUnitHours":"小时","timeUnitDays":"天","timeUnitMonths":"月","timeUnitYears":"年","sessionSecurityPolicy":"会话安全策略","secureMode":"Secure 模式","secureModeTooltip":"开启后,Cookie 仅通过 HTTPS 连接传输,请确保您的站点已启用 HTTPS","userSessionMaxAge":"用户端会话有效期","adminSessionMaxAge":"管理端会话有效期","sessionMaxAgeUnit":"天","sessionMaxAgeInvalid":"会话有效期必须为 1-3650 的正整数"},"sysPage":{"settingsSaved":"设置已保存","refreshAnnouncement":"刷新公告已读状态","otherSettings":"其他设置","channelSelectPlaceholder":"请先选择上传渠道"},"sysOthers":{"remoteTelemetry":"远端遥测","remoteTelemetryTooltip":"便于问题查找和定位,建议开启","enable":"启用","cloudflareApiToken":"CloudFlare API Token","cloudflareApiTokenTooltip":"设置后可以使后端拉黑、删除等操作不受CDN缓存限制
建议设置,设置方式请查阅文档","zoneId":"区域ID","accountEmail":"账户邮箱","randomImageApi":"随机图像API","randomImageApiTooltip":"API具体用法请查阅文档","directory":"目录","directoryTooltip":"1. 开放随机图权限的目录,默认为根目录,多个目录用逗号分隔
2. 目录均采用绝对路径,例如/img/cover,表示该目录及其所有子目录的文件可被随机图API访问","publicBrowse":"访客图库","publicBrowseTooltip":"启用后,访客可通过 /browse 路径浏览指定目录的图片(只读,无法删除/移动)","openDirectory":"开放目录","openDirectoryTooltip":"

允许公开浏览的目录,多个目录用逗号分隔

示例:wallpaper,photos,album

支持子目录:2026/lucky,2026/rich

访问链接:https://你的域名/browse/2026/lucky

","webdav":"WebDAV","webdavTooltip":"启用后,可以通过WebDAV协议访问和管理图片","webdavUsername":"用户名","webdavPassword":"密码","webdavUploadChannel":"上传渠道","webdavDefaultChannel":"默认渠道","webdavChannelName":"指定渠道名","settingsSaved":"设置已保存"},"customerConfig":{"uploadFileList":"上传文件列表","fileNameCol":"文件名","filePreview":"文件预览","uploadTimeCol":"上传时间","ipAddress":"IP地址","address":"地址","uploadCount":"上传次数","allowUpload":"允许上传","allow":"允许","deny":"禁止","loadMore":"加载更多","loadError":"加载更多数据时出错,请检查网络连接","syncError":"同步数据时出错,请检查网络连接"},"publicBrowse":{"searchPlaceholder":"搜索文件名 或 #页码","fileCount":"{count} 个文件","loading":"加载中...","retry":"重试","creditText":"该图库由林酱贡献代码","loadingMore":"加载中...","allLoaded":"已加载全部","creditLink":"林酱贡献","browseDisabled":"公开浏览功能未启用","directoryNotAllowed":"该目录不允许公开访问","accessDenied":"访问被拒绝","loadFailed":"加载失败,请重试","rootDirectory":"根目录","copyLink":"复制链接","copied":"已复制","downloadBtn":"下载","swipeHint":"← 滑动切换 →","rotate90":"旋转90°"},"transformMedia":{"download":"下载","playbackSpeed":"播放速度","normalSpeed":"正常","playMode":"播放模式","stopAfterPlay":"播完停止","sequentialPlay":"顺序播放","loopSingle":"单曲循环","more":"更多"},"directoryTree":{"selectDirectory":"选择目录","retry":"重试","authFailed":"认证失败,请重新登录","serverError":"服务器错误,请稍后重试","loadFailed":"加载目录树失败,请检查网络连接"},"floatingSave":{"saving":"保存中","save":"保存","unsaved":"有未保存的修改","failed":"保存失败,请重试"},"theme":{"lightMode":"浅色模式","darkMode":"深色模式","autoMode":"自动模式"},"common":{"confirm":"确定","cancel":"取消","close":"关闭","save":"保存","delete":"删除","edit":"编辑","copy":"复制","download":"下载","retry":"重试","loading":"加载中...","success":"成功","failed":"失败","warning":"警告","info":"提示","yes":"是","no":"否","all":"全部类型","select":"请选择"},"validation":{"pathMustStartWithSlash":"目标目录必须以 \\"/\\" 开头","pathTraversalNotAllowed":"目标目录不能包含路径穿越字符 \\"..\\"","singleDotNotAllowed":"目标目录不能包含单独的 \\".\\" 路径段","consecutiveSlashNotAllowed":"目标目录不能包含连续的斜杠","invalidCharacters":"目标目录包含非法字符,请使用合法的路径格式","uploadDirReplace":"上传目录"},"language":{"switchTo":"中/En","switchLanguage":"切换语言"},"whitelist":{"title":"白名单模式已启用","description":"抱歉,当前已开启白名单模式,上传的图片需要审核通过后才能展示,请等待审核通过后再进行访问。","goHome":"返回首页","goBack":"返回上页","helpText":"您可以尝试:","uploadImage":"图片上传","refreshPage":"刷新页面"},"sysAI":{"edit":"编辑","editProvider":"编辑供应商","editModel":"编辑模型","cancel":"取消","confirm":"确定","confirmAdd":"确认添加","required":"请填写{field}","invalidURL":"请输入有效的 HTTP 或 HTTPS 地址,不包含用户名、密码、查询参数或片段。","title":"智能设置","enable":"启用 AI","providers":"供应商","models":"模型","prompts":"Prompt 管理","tagging":"图片标签识别","enableTagging":"开启识别功能","name":"名称","protocol":"调用协议","keyUnchanged":"已配置,留空保持原密钥","enterKey":"输入 API Key","keyNotConfigured":"未配置 API Key","clearKey":"删除已保存的密钥","enabled":"启用供应商","remove":"删除","addProvider":"添加供应商","provider":"供应商","modelName":"模型标识","vision":"支持图片输入","jsonMode":"结构化输出","jsonModeHint":"Prompt 约束:通过提示词要求输出 JSON,兼容性较好。\\n原生 JSON object:启用接口的 JSON 模式,需要供应商和模型支持。","promptOnly":"Prompt 约束","nativeJsonObject":"原生 JSON object","outputTokens":"最大输出 Token","test":"测试连接","addModel":"添加模型","tagPrompt":"图片标签识别 Prompt","promptHint":"可用变量:","resetPrompt":"恢复内置 Prompt","language":"标签语言","maxTags":"每张图片最多标签数","vocabulary":"推荐标签词表","vocabularyHint":"使用中文逗号(,)、英文逗号(,)或换行分隔,最多 100 个","timeout":"模型请求超时(毫秒)","batchSize":"每批最大图片数","concurrency":"模型调用并发数","providerInUse":"请先删除或修改使用此供应商的模型。","saved":"智能设置已保存","testSuccess":"连接成功,耗时 {ms} 毫秒","credentialHint":"请在部署环境配置至少 32 个字符的随机密钥 AI_CONFIG_SECRET,API Key 将加密保存。","general":"基础设置","noProviders":"暂无供应商","noModels":"暂无模型"},"aiTags":{"tab":"AI 标签识别","hint":"选中建议标签后保存,已有标签会保留。","disabled":"尚未配置图片标签能力","generate":"生成","cancel":"取消生成","retry":"重试","settings":"前往智能设置","progress":"已处理 {done} / {total} 张","saved":"已保存","noTags":"未生成标签","apply":"保存","indexPending":"标签已保存,索引同步失败。再次保存可重试同步。","ready":"待生成标签","selection":"已选 {count} 个"},"adminAuthWarning":{"title":"登录设置提示","message":"当前未设置管理端用户名和密码,请尽快前往设置!","configure":"前往安全设置","close":"我知道了"},"aiErrors":{"AI_DISABLED":"图片标签识别未开启,请前往智能设置。","INVALID_CONFIG":"智能设置不完整或无效,请检查供应商、模型和识别设置。","CREDENTIAL_CONFIG":"无法使用供应商密钥,请检查 AI_CONFIG_SECRET 或重新填写 API Key。","CONFIG_CONFLICT":"智能设置已被修改,请重新加载后保存。","PROVIDER_REDIRECT":"供应商接口发生重定向,请填写最终的 Base URL。","PROVIDER_AUTH":"供应商或上游服务认证失败(HTTP 401)。","PROVIDER_BLOCKED":"请求被供应商安全防护拦截(HTTP 403),请检查防火墙规则。","PROVIDER_FORBIDDEN":"供应商拒绝请求(HTTP 403),请检查模型和图片输入权限。","PROVIDER_RATE_LIMIT":"供应商请求频率已达上限,请稍后重试。","PROVIDER_ERROR":"供应商返回 HTTP {status},请检查模型和接口。","PROVIDER_UNAVAILABLE":"无法连接供应商,请检查网络和 Base URL。","TIMEOUT":"识别请求超时或已取消,请重试。","UNSUPPORTED_IMAGE":"无法处理此图片,支持 JPEG、PNG、WebP、AVIF 和 GIF。","IMAGE_TOO_LARGE":"原图超过 20 MB,已跳过。","PREVIEW_TOO_LARGE":"图片超过处理限制,已跳过。","INVALID_RESPONSE":"返回结果无效,请重试。","CANCELLED":"尚未处理,可点击重试继续。","INVALID_INPUT":"请求参数无效,请检查输入后重试。","INVALID_FILE":"文件标识无效。","FILE_NOT_FOUND":"文件已不存在,请刷新文件列表。","UNSUPPORTED_INPUT":"当前模型或文件不支持图片标签识别。","INVALID_IMAGE":"图片预览无效或超过限制,请重新生成。","FILE_CHANGED":"文件已发生变化,请重新生成标签。","INVALID_TAGS":"标签格式或数量超过限制,请减少或修改标签。","METADATA_TOO_LARGE":"文件元数据超过 KV 的 1 KB 限制,请减少标签。","INPUT_TOO_LARGE":"请求超过大小限制,请减少图片或标签。","INTERNAL_ERROR":"操作失败,请稍后重试。","AUTH_REQUIRED":"管理端登录已失效,请重新登录。","IMAGE_FETCH_FAILED":"图片读取失败(HTTP {status}),请检查文件访问权限。","HTTP_ERROR":"请求失败(HTTP {status}),请稍后重试。","NETWORK_ERROR":"请求失败,请检查网络后重试。","INVALID_ACTION":"标签操作无效。","UNSUPPORTED_CAPABILITY":"不支持此 AI 功能。","METHOD_NOT_ALLOWED":"不支持此请求方法。","code":"错误码","type":"类型","requestId":"请求编号"}}'),i=JSON.parse('{"login":{"title":"Login to {owner} ImgHub","adminTitle":"Admin Login","password":"Password","username":"Username","passwordPlaceholder":"Enter auth code","usernamePlaceholder":"Enter username","adminPasswordPlaceholder":"Enter password","submit":"Login","success":"Login successful","failed":"Login failed, please check your password","adminFailed":"Invalid username or password","serverError":"Server error","systemError":"System error","authRequired":"Please authenticate first!","authFailed":"Authentication failed!"},"upload":{"folderPlaceholder":"Upload directory","pasteUpload":"Paste Upload","fileUpload":"File Upload","selectFolderUpload":"Choose a folder to upload","dragUploadText":"Drag Click or {pasteShortcut} to paste upload","pasteUrlPlaceholder":"Paste external links, separate multiple links with line breaks","pasteUploadBtn":"Upload","pasteSave":"Save","pasteExternal":"External","history":"Upload History","announcement":"Announcements","noAnnouncement":"No announcements","announcementTitle":"Announcement","announcementAck":"Got it!","settings":"Upload Settings","linkFormat":"Link Format","manage":"Management","logout":"Logout","logoutSuccess":"Logged out","viewDocs":"Documentation","switchUploadMethod":"Switch Upload Method","copyAll":"Copy All","retryFailed":"Retry Failed","clearList":"Clear List","clearAll":"Clear All","clearUploaded":"Clear Uploaded"},"uploadForm":{"deleted":"{name} deleted","uploadSuccess":"{name} uploaded successfully","uploadFailed":"{name} upload failed","compressFailedCannotUpload":"{name} compression failed, cannot upload!","fileTooLarge":"{name} file too large, cannot upload!","compressedFileTooLarge":"{name} still too large after compression, cannot upload!","copySuccess":"Copied successfully","copyFailed":"Copy failed","copyAllSuccess":"All copied successfully","fileNotUploaded":"File not uploaded, cannot copy link","fileListCleared":"File list cleared","fileListEmpty":"File list is empty","successFilesCleared":"Uploaded files cleared","successFilesEmpty":"No uploaded files","noFailedFiles":"No failed files","autoRetryOn":"Auto retry enabled","autoRetryOff":"Auto retry disabled","autoRetry":"Auto Retry","maxRetryReached":"{name} reached max retry limit ({max}), stopping","urlRequestFailed":"URL request from clipboard failed","chunkMerging":"Chunk upload complete, merging file, please wait...","fileSizeTooLarge":"File too large","chunkInitFailed":"Failed to init chunked upload","uploadError":"Upload error occurred","imageLoadFailed":"Image load failed"},"uploadSettings":{"title":"Upload Settings","uploadChannel":"Upload Channel","channelType":"Channel Type","allChannels":"All Channels","configuredChannelsOnly":"Configured Only","noConfiguredChannels":"No configured channels","channelName":"Channel Name","channelNameTooltip":"Select a specific channel name. If not selected, load balancing or default channel will be used","autoSelect":"Auto Select","uploadDirectory":"Upload Directory","uploadDirectoryPlaceholder":"Enter upload directory path","autoSwitch":"Auto Switch","autoSwitchTooltip":"For non-chunked uploads, automatically switch to another channel on failure","fileNaming":"File Naming","namingDefault":"Default","namingIndex":"Prefix Only","namingOrigin":"Original Name","namingShort":"Short Link","filePreprocess":"File Preprocessing","filePreprocessTooltip":"Convert format and compress locally before upload, only applies to image files","convertToWebp":"Convert to WebP","convertToWebpTooltip":"Convert images to WebP format before upload to reduce file size. Falls back to original format on failure","fileCompress":"File Compression","compressThreshold":"Compression Threshold","compressThresholdTooltip":"Set image size threshold, files exceeding this will be auto-compressed (MB)","expectedSize":"Expected Size","expectedSizeTooltip":"Set expected image size after compression (MB)","serverCompress":"Server-side Compression","serverCompressTooltip":"1. Compress on Telegram side, only applies to image files uploaded via Telegram channel
2. If image size (after local compression) exceeds 10MB, this setting is ignored
3. For high-resolution, transparent background images, it\'s recommended to disable server compression to avoid issues","enableCompress":"Enable Compression","confirm":"OK"},"uploadHistory":{"title":"History","totalRecords":"{count} records","switchView":"Switch View","clearRecords":"Clear Records","loading":"Loading...","pullToLoadMore":"Pull to load more","noMoreRecords":"No more records","emptyHistory":"No upload history","linkCopied":"Link copied","copyFailed":"Copy failed","clearConfirmTitle":"Notice","clearConfirmMessage":"Are you sure you want to clear all upload records?","clearConfirmOk":"OK","clearConfirmCancel":"Cancel","recordsCleared":"Records cleared","deleteConfirmMessage":"Are you sure you want to delete this record?","recordDeleted":"Record deleted"},"settings":{"linkFormatTitle":"Link Format Settings","defaultCopyLink":"Default Copy Format","rawLink":"Raw Link","customLink":"Custom Link","customLinkTooltip":"Default link is https://your.domain/file/xxx.jpg
If custom link format is enabled, only the xxx.jpg part is kept, please enter the rest manually","enableCustom":"Enable Custom","customPrefix":"Custom Prefix","customPrefixPlaceholder":"Enter custom link prefix","confirm":"OK","s3Link":"S3 Link"},"dashboard":{"searchPlaceholder":"Search: #tag -#exclude","sortAsc":"Ascending","sortDesc":"Descending","sortByTime":"Time","sortBySize":"Size","sortByRawName":"File ID","sortByFileName":"File Name","selectedItems":"selected","clearSelection":"Clear selection","copy":"Copy","delete":"Delete","download":"Download","move":"Move","tagManagement":"Tag Management","addToBlacklist":"Add to Blacklist","addToWhitelist":"Add to Whitelist","linkFormat":"Link Format","listView":"List View","cardView":"Card View","logout":"Logout","rootDirectory":"Root","totalFiles":"{count} files","noMatchingFiles":"No matching files or folders found","currentDirEmpty":"Current directory is empty","adjustSearchHint":"Try adjusting search criteria or filters","uploadHint":"Uploaded files will appear here","loadMore":"Load More","totalPages":"{count} pages","jumpTo":"Go to","preview":"Preview","fileName":"File Name","tags":"Tags","channelType":"Channel Type","channelNameCol":"Channel Name","uploadAddress":"Upload Address","fileSize":"Size","uploadTime":"Upload Time","actions":"Actions","externalTag":"External","unknownTag":"Unknown","detail":"Detail","copyLink":"Copy Link","moveFile":"Move","downloadFile":"Download","loadFailed":"Load failed","copySuccess":"Copied successfully","copyFailed":"Copy failed","deleteConfirm":"This will permanently delete this file. Continue?","deleteConfirmTitle":"Notice","deleteConfirmOk":"OK","deleteConfirmCancel":"Cancel","deleteSuccess":"Deleted successfully","deleteFailed":"Delete failed","blockConfirm":"This will add the file to blacklist. Continue?","blockSuccess":"Added to blacklist successfully","blockFailed":"Failed to add to blacklist","whiteConfirm":"This will add the file to whitelist. Continue?","whiteSuccess":"Added to whitelist successfully","whiteFailed":"Failed to add to whitelist","deleteFolderConfirm":"This will permanently delete this folder. Continue?","deleteFileConfirm":"This will permanently delete this file. Continue?","batchDeleteConfirm":"This will permanently delete selected files and folders. Continue?","batchDeleteSuccess":"Batch delete successful","batchDeleteFailed":"Batch delete failed","batchBlockConfirm":"This will add selected files to blacklist. Continue?","batchBlockSuccess":"Batch blacklist successful","batchBlockFailed":"Batch blacklist failed","batchWhiteConfirm":"This will add selected files to whitelist. Continue?","batchWhiteSuccess":"Batch whitelist successful","batchWhiteFailed":"Batch whitelist failed","noLinksAvailable":"No links to copy","batchCopySuccess":"Copied {count} links successfully","batchCopyFailed":"Batch copy failed, please retry","batchCopyLinksSuccess":"Batch copy successful","copyFileLinkSuccess":"File link copied","fileListMemoryCacheWarning":"The file list is large, so it is being kept in memory. Refreshing the page will require loading it again.","indexingWarning":"The index is still building, so current search and sort results may be inaccurate. Please try again later.","loadMoreFailed":"Failed to load more files, please check network","moveSuccess":"Moved successfully","moveFailed":"Move failed","moveTargetSameAsCurrent":"Target folder cannot be the current folder","invalidPageNumber":"Please enter a valid page number","pageExceedsMax":"Page number cannot exceed {max}","loadingData":"Loading data, please wait...","loadDataFailed":"Failed to load data, please check network","fetchFileListFailed":"Failed to fetch file list","refreshFailed":"Refresh failed, please retry","selectFilesFirst":"Please select files first","syncDataError":"Error syncing data, please check network","fetchingFileList":"Fetching file list...","folderEmptyNoLinks":"Folder is empty, no links to copy","copiedFileLinks":"Copied {count} file links","copyFolderLinksFailed":"Failed to copy folder links, please retry"},"dashboardTabs":{"fileManagement":"File Management","userManagement":"User Management","systemSettings":"System Settings","fileUpload":"File Upload"},"fileDetail":{"title":"File Details","download":"Download","tags":"Tags","blacklist":"Blacklist","whitelist":"Whitelist","deleteBtn":"Delete","edit":"Edit","rename":"Rename","save":"Save","cancel":"Cancel","originUrl":"Original Link","fileNameLabel":"File Name","fileNamePlaceholder":"Enter file name","fileType":"File Type","fileTypePlaceholder":"e.g. image/jpeg","fileSizeLabel":"File Size","imageDimensions":"Dimensions","noDimensions":"N/A","uploadTimeLabel":"Upload Time","channelTypeAndName":"Channel Type/Name","accessStatusAndReview":"Access Status/Review","uploadIP":"Upload IP","uploadAddressLabel":"Upload Address","fileTags":"File Tags","noTags":"No tags","unknown":"Unknown","accessNormal":"Normal","accessNormalWhitelist":"Normal (Whitelisted)","accessBlockedBlacklist":"Blocked (Blacklisted)","accessBlockedReview":"Blocked (Review rejected)","orientationLandscape":"Landscape","orientationPortrait":"Portrait","orientationSquare":"Square","linkCopied":"Link copied","metadataSaved":"Metadata saved successfully","metadataSaveFailed":"Failed to save metadata","renameTitle":"Rename File ID","renameLabel":"New File ID","renamePlaceholder":"Enter new File ID","renameCancel":"Cancel","renameConfirm":"Confirm Rename","renameSuccess":"File renamed successfully","renameConflict":"Target file name already exists","renameFailed":"Rename failed"},"filter":{"accessStatus":"Access Status","normal":"Normal","blocked":"Blocked","blackWhiteList":"Black/White List","whiteList":"Whitelist","blackList":"Blacklist","notSet":"Not Set","reviewResult":"Review Result","teenContent":"12+ Content","adultContent":"Adult Content","fileType":"File Type","image":"Image","video":"Video","audio":"Audio","other":"Other","channelType":"Channel Type","externalLink":"External Link","channelName":"Channel Name","clearFilters":"Clear Filters"},"moveFile":{"title":"Move File","batchTitle":"Batch Move Files","targetDirectory":"Target Directory","targetPlaceholder":"Enter target directory path","hint":"Tip: Paths starting with / indicate root directory, e.g. /photos/2024/","hintMobile":"Tip: Paths starting with / indicate root directory","selectDirectory":"Select Directory","cancel":"Cancel","confirm":"OK","retry":"Retry","authFailed":"Authentication failed, please log in again","serverError":"Server error, please try again later","loadTreeFailed":"Failed to load directory tree, please check network connection"},"batchTag":{"title":"Batch Tag Management","addTab":"Add","removeTab":"Remove","clearTab":"Clear","addDescription":"Add tags to {count} selected files","inputPlaceholder":"Enter tag name","pendingTags":"Tags to add","noPendingTags":"No tags to add","addToAllFiles":"Add to all files","removeDescription":"Remove common tags from selected files","commonTags":"Common Tags","noCommonTags":"Selected files have no common tags","clearDescription":"Clear all tags from {count} selected files","clearWarningTitle":"⚠️Warning","clearWarningDesc":"This will clear all tags from selected files and cannot be undone","confirmClearAll":"Confirm clear all tags","tagAlreadyInList":"Tag already in list","pleaseAddTags":"Please add tags first","addSuccess":"Tags added to {count} files successfully","addFailed":"Batch tag addition failed","removeSuccess":"Tags removed from {count} files successfully","removeFailed":"Tag removal failed","clearConfirmMessage":"Are you sure you want to clear all tags from {count} selected files? This cannot be undone.","clearConfirmTitle":"Confirm Clear","clearConfirmOk":"OK","clearConfirmCancel":"Cancel","clearCancelled":"Clear operation cancelled","clearSuccess":"Tags cleared from {count} files successfully","clearFailed":"Failed to clear tags","partialSave":"Completed {saved}/{total} files. Please retry the unfinished operation.","loadCommonTagsFailed":"Failed to load common tags"},"tagManagement":{"title":"Tag Management","inputPlaceholder":"Enter tag name","currentTags":"Current Tags","noTags":"No tags","popularTags":"Popular Tags","loading":"Loading...","noPopularTags":"No popular tags","close":"Close","tagExists":"Tag already exists","addSuccess":"Tag added successfully","addFailed":"Failed to add tag","removeSuccess":"Tag removed successfully","removeFailed":"Failed to remove tag","loadFailed":"Failed to load tags","indexPending":"Tags saved, but index synchronization failed."},"mobileAction":{"viewDetail":"View Details","copyLink":"Copy Link","downloadFile":"Download File","moveFile":"Move File","tagManagement":"Tag Management","moveFolder":"Move Folder","deleteFile":"Delete File","deleteFolder":"Delete Folder"},"mobileDirectory":{"title":"Directory Navigation","rootDirectory":"Root","goBack":"Go Back"},"sysConfig":{"logout":"Logout"},"sysConfigTabs":{"systemStatus":"System Status","uploadSettings":"Upload Settings","securitySettings":"Security Settings","pageSettings":"Page Settings","otherSettings":"Other Settings"},"dateRangeCalendar":{"previousMonth":"Previous month","nextMonth":"Next month","startDate":"Start date","endDate":"End date","rangeSeparator":"to","monthTitle":"{year}-{month}","weekdaySun":"Sun","weekdayMon":"Mon","weekdayTue":"Tue","weekdayWed":"Wed","weekdayThu":"Thu","weekdayFri":"Fri","weekdaySat":"Sat"},"sysStatus":{"systemOverview":"System runtime overview","healthHealthy":"Running normally","healthChecking":"Checking status","healthAttention":"Status unavailable","greetingMorning":"Good morning, welcome back","greetingNoon":"Good afternoon, stay in the flow","greetingAfternoon":"Good afternoon, hope work goes smoothly","greetingEvening":"Good evening, thanks for your work today","greetingLateNight":"It\'s late, remember to take a break","summaryChecking":"Connecting to system services and reading the latest index information…","summaryUnavailable":"System status is temporarily unavailable. Check the connection or refresh again later.","summaryEmpty":"The system is responding normally and the index service is ready for the first upload.","summaryIndexed":"The system is responding normally with {files} indexed files.","summaryHealthy":"The system is responding normally with {files} indexed files across {channels} upload channels.","localTime":"Local Time","localTimezone":"Local timezone","totalFiles":"Total Files","clickToRefresh":"Click to refresh","indexUpdateTime":"Index Update Time","systemVersion":"System Version","clickToViewChangelog":"Click to view changelog","channelDistribution":"Upload Channel Distribution","fileStatusDistribution":"File Status Distribution","uploadTrend":"Upload Trend","uploadTrendGroupBy":"Upload trend group by","totalUploads":"Total Uploads","byChannelType":"Channel Type","byChannelName":"Channel Name","selectDateRange":"Select date range","otherChannels":"Other","uploadsUnit":"uploads","noData":"No data","totalFilesLabel":"Total Files","statusTypes":"Status Types","systemMaintenance":"System Maintenance","rebuildIndex":"Rebuild Index","rebuilding":"Rebuilding...","rebuildTooltip":"Rescan all files and update index data, useful for fixing data inconsistencies","backupData":"Backup Data","backingUp":"Backing up...","backupTooltip":"Backup all file metadata and system settings to a JSON file","restoreData":"Restore Data","restoring":"Restoring...","restoreTooltip":"Restore data from a backup file, this will overwrite existing file metadata and system settings","cancelOperation":"Cancel Operation","retry":"Retry","close":"Close","records":"records","aboutToComplete":"Almost done","seconds":"~{count} seconds","minutes":"~{count} minutes","hoursMinutes":"~{hours} hours {minutes} minutes","phaseFetching":"Fetching data","phaseSorting":"Sorting","phaseUploading":"Uploading","phaseFinalizing":"Finalizing","phaseBuilding":"Building backup","phaseDownloading":"Generating download","phaseRestoringFiles":"Restoring files","phaseRestoringSettings":"Restoring settings","phaseCompleted":"Completed","phaseRetrying":"Retrying","rebuildSuccess":"Index rebuild complete! Processed {count} files","backupSuccess":"Backup complete! Backed up {count} files","backupSuccessWithSettings":"Backup complete! Backed up {fileCount} files and {settingsCount} settings","operationInProgress":"An operation is already in progress","selectJsonFile":"Please select a JSON backup file","restoreConfirmMessage":"Restoring will overwrite existing file metadata and system settings. This cannot be undone. Continue?","restoreConfirmTitle":"Confirm Restore","restoreConfirmOk":"Confirm Restore","restoreConfirmCancel":"Cancel","invalidBackupFile":"Invalid backup file format, please select a valid JSON file","restoreSuccess":"Restore complete! Restored {files} files and {settings} settings, rebuilding index...","restoreFailed":"Failed to restore data","fetchIndexFailed":"Failed to fetch index information","unknown":"Unknown","blocked":"Blocked","normalStatus":"Normal","latestUpload":"Latest Upload","earliestUpload":"Earliest Upload","daysAgo":"{count} days ago","hoursAgo":"{count} hours ago","minutesAgo":"{count} minutes ago","justNow":"Just now","cancellingRebuild":"Cancelling index rebuild..."},"sysUpload":{"title":"Upload Channel Management","titleTooltip":"Manage all upload channel configurations. Click a card to view details or edit","filterPlaceholder":"Filter channel type","addChannel":"Add Channel","loadBalance":"Load Balance","unnamedChannel":"Unnamed Channel","envVariable":"Environment Variable","noChannels":"No {type} channels","detail":"Detail","editBtn":"Edit","deleteBtn":"Delete","addDialogTitle":"Add New Channel","channelTypeLabel":"Channel Type","channelTypePlaceholder":"Select channel type","channelNameLabel":"Channel Name","channelNamePlaceholder":"Enter channel name","channelNameImmutableTip":"After creation, this becomes the unique identifier for files associated with the channel and cannot be changed","channelNameEditDisabledTip":"The channel name links uploaded files to this channel and cannot be changed","botTokenLabel":"Bot Token","botTokenPlaceholder":"Enter Bot Token","chatIdLabel":"Chat ID","chatIdPlaceholder":"Enter Chat ID","proxyDomain":"Proxy Domain","proxyDomainPlaceholder":"Optional, e.g.: your-proxy.example.com","endpointLabel":"Endpoint","endpointPlaceholder":"e.g.: https://s3.us-east-005.backblazeb2.com","cdnDomain":"CDN Domain","cdnDomainPlaceholder":"Optional. Enter the full CDN URL prefix, e.g. https://cdn.example.com","cdnDomainTip":"Optional. Can be used to generate and display file access links. Server-side file reads also try the CDN first.","bucketName":"Bucket Name","bucketNamePlaceholder":"Enter bucket name","bucketRegion":"Bucket Region","bucketRegionPlaceholder":"Default: auto","accessKeyId":"Access Key ID","accessKeyIdPlaceholder":"Enter Access Key ID","secretAccessKey":"Secret Access Key","secretAccessKeyPlaceholder":"Enter Secret Access Key","pathStyle":"Path Style","pathStyleTip":"Enable when using services incompatible with host-style like OpenList","quotaLimit":"Quota Limit","quotaLimitGB":"Quota Limit (GB)","quotaThreshold":"Disable Threshold (%)","channelIdLabel":"Channel ID","channelIdPlaceholder":"Enter Channel ID","nitroMember":"Nitro Member","nitroTip":"Nitro members: 25MB per file, otherwise 10MB","discordWarning":"Discord has API rate limits, not recommended for high-concurrency scenarios","repoName":"Repository Name","repoNamePlaceholder":"Format: username/repo-name","accessToken":"Access Token","accessTokenPlaceholder":"Enter Access Token","privateRepo":"Private Repository","privateRepoTip":"Private repository limit: 100GB","webdavBaseUrl":"WebDAV Base URL","webdavBaseUrlPlaceholder":"e.g.: https://dav.example.com/remote.php/dav/files/user/imgbed/","webdavUsername":"Username","webdavUsernamePlaceholder":"Optional username","webdavPassword":"Password","webdavPasswordPlaceholder":"Optional password","webdavPublicUrlPlaceholder":"Optional. Enter the full public URL prefix, e.g. https://cdn.example.com/imgbed","webdavPublicUrlTip":"Optional. Server-side file reads try this public URL first and fall back to the WebDAV API on failure.","webdavHeaders":"Custom Headers","webdavHeadersPlaceholder":"Optional JSON object, e.g.: {\'{\\"X-Api-Key\\":\\"value\\"}\'}","webdavHeadersInvalid":"Custom headers must be a valid JSON object","webdavCreateDirectory":"Auto Create Directories","webdavCreateDirectoryTip":"Create parent directories before uploading files","cancel":"Cancel","confirmAdd":"Confirm Add","detailDialogTitle":"Channel Details - {name}","channelNameDetail":"Channel Name","channelTypeDetail":"Channel Type","statusLabel":"Status","enabled":"Enabled","disabled":"Disabled","configSource":"Config Source","publicUrl":"Public Access URL","notSet":"Not Set","isPathStyle":"Yes","isNotPathStyle":"No","currentUsage":"Current Usage","closeBtn":"Close","editDialogTitle":"Edit Channel - {name}","enableChannel":"Enable Channel","saveChanges":"Save Changes","r2ConfigNote":"Please follow the R2 Channel Configuration documentation to add R2 channels","reservedName":"This name is reserved by the system, please use another name","duplicateName":"A channel with this name already exists, please use another name","fixedChannelCannotDelete":"Channels configured via environment variables cannot be deleted","deleteChannelConfirm":"Are you sure you want to delete this channel? Files still associated with it may become inaccessible.","quotaInitConfirm":"First time enabling quota requires calculating existing file sizes, this may take some time. Calculate now?","quotaInitTitle":"Initialize Quota Statistics","quotaInitConfirmBtn":"Calculate Now","quotaInitCancelBtn":"Calculate Later","quotaInitLater":"You can click the refresh button to calculate later","quotaCalculating":"Calculating quota, please wait...","quotaCalculateSuccess":"Quota calculation complete","quotaCalculateFailed":"Calculation failed","quotaCalculateError":"Calculation failed: "},"sysSecurity":{"authManagement":"Authentication Management","userAuth":"User Authentication","adminAuth":"Admin Authentication","uploadPassword":"Upload Password","confirmPassword":"Confirm Password","adminUsername":"Username","adminPassword":"Password","apiTokenManagement":"API Token Management","imageReview":"Image Review","imageReviewTooltip":"Only applies to non-chunked uploads, supports nsfwjs and moderatecontent.com channels","enableReview":"Enable Review","reviewChannel":"Review Channel","reviewChannelPlaceholder":"Select review channel","apiKey":"API Key","apiPath":"API Path","ipQuery":"IP Geolocation Query","ipQueryTooltip":"Calls a custom API during upload to query the upload IP location. Parameter values support the {\'{ip}\'} placeholder","enableIpQuery":"Enable Query","ipQueryChannel":"Query Channel","ipQueryChannelPlaceholder":"Select query channel","customApi":"Custom API","queryParams":"Query Parameters","paramNamePlaceholder":"Parameter name","paramValuePlaceholder":"Parameter value, e.g. {\'{ip}\'}","addQueryParam":"Add Parameter","responseFields":"Response Fields","responseFieldsTip":"The final display text is joined in field order","responseFieldPathPlaceholder":"JSON path, e.g. country.name","addResponseField":"Add Field","uploadManagement":"Upload Management","accessManagement":"Access Management","domainFilter":"Domain Filter","allowedDomains":"Allowed Domains","allowedDomainsTooltip":"1. Set permissions based on access domain
2. Leave empty to allow all, separate multiple domains with commas","whiteListMode":"Whitelist Mode","enableWhiteList":"Enable","enableWhiteListTooltip":"1. Set permissions based on files
2. When enabled, only whitelisted files can be accessed","imageTransform":"Image Resizing","enableImageTransform":"Enable","enableImageTransformTooltip":"Allows the file endpoint to process images using width, height, and fit parameters","imageTransformAllowedSizes":"Allowed Sizes","imageTransformAllowedSizesPlaceholder":"For example: 320xauto,640xauto,1280x720","imageTransformAllowedSizesHint":"Leave empty to allow any valid size
Separate entries with commas and use auto for an unrestricted dimension","imageTransformAllowedSizesInvalid":"Invalid size format. Use 320xauto, autox480, or 1280x720; each dimension is limited to 4096","settingsSaved":"Settings saved","tokenName":"Name","tokenValue":"Token","permissions":"Permissions","createdAt":"Created At","status":"Status","expiresAt":"Expires At","operation":"Actions","editBtn":"Edit","deleteBtn":"Delete","permUpload":"Upload","permDelete":"Delete","permList":"List","permManage":"Manage","createTokenTitle":"Create New API Token","tokenNameLabel":"Token Name","tokenNamePlaceholder":"Enter token name","permissionsLabel":"Permissions","neverExpire":"Never Expire","validPeriod":"Valid Period","autoDeleteOnExpire":"Auto-delete on expiry","createBtn":"Create","editTokenTitle":"Edit API Token","updateBtn":"Update","tokenCreatedTitle":"Token Created Successfully","tokenCreatedWarning":"Please save the following token. You won\'t be able to view the full token after closing this dialog!","fullToken":"Full Token","copyBtn":"Copy","savedBtn":"I\'ve Saved It","tokenCopied":"Token copied to clipboard","copyFailed":"Copy failed, please copy manually","tokenCreateSuccess":"Token created successfully","tokenCreateFailed":"Failed to create token","tokenUpdateSuccess":"Token updated successfully","tokenUpdateFailed":"Failed to update token","tokenDeleteConfirm":"This will permanently delete this token. Continue?","tokenDeleteConfirmTitle":"Notice","tokenDeleteConfirmOk":"OK","tokenDeleteConfirmCancel":"Cancel","tokenDeleteSuccess":"Token deleted successfully","tokenDeleteFailed":"Failed to delete token","tokenListFailed":"Failed to fetch token list","passwordUrlReserved":"Password cannot contain URL reserved characters: % & ? # /","confirmUploadPassword":"Please re-enter upload password","confirmAdminPassword":"Please re-enter admin password","passwordMismatch":"Passwords do not match","passwordUnchanged":"Unchanged (leave empty to keep current password)","adminPasswordChangedRelogin":"Admin password changed, redirecting to login page","clearPassword":"Clear authentication info","tokenNameRequired":"Please enter token name","permissionsRequired":"Please select permissions","validPeriodRequired":"Valid period must be greater than 0","timeUnitSeconds":"seconds","timeUnitMinutes":"minutes","timeUnitHours":"hours","timeUnitDays":"days","timeUnitMonths":"months","timeUnitYears":"years","sessionSecurityPolicy":"Session Security Policy","secureMode":"Secure Mode","secureModeTooltip":"When enabled, cookies are only transmitted over HTTPS. Make sure your site has HTTPS enabled","userSessionMaxAge":"User Session Max Age","adminSessionMaxAge":"Admin Session Max Age","sessionMaxAgeUnit":"days","sessionMaxAgeInvalid":"Session max age must be an integer from 1 to 3650"},"sysPage":{"settingsSaved":"Settings saved","refreshAnnouncement":"Reset announcement read status","otherSettings":"Other Settings","channelSelectPlaceholder":"Please select upload channel first"},"sysOthers":{"remoteTelemetry":"Remote Telemetry","remoteTelemetryTooltip":"Helps with issue tracking and debugging, recommended to enable","enable":"Enable","cloudflareApiToken":"CloudFlare API Token","cloudflareApiTokenTooltip":"When set, backend operations like blocking and deleting won\'t be affected by CDN cache
Recommended, see documentation for setup","zoneId":"Zone ID","accountEmail":"Account Email","randomImageApi":"Random Image API","randomImageApiTooltip":"See documentation for API usage details","directory":"Directory","directoryTooltip":"1. Directories with random image access, defaults to root. Separate multiple directories with commas
2. All directories use absolute paths, e.g. /img/cover, meaning files in this directory and all subdirectories can be accessed by the random image API","publicBrowse":"Public Gallery","publicBrowseTooltip":"When enabled, visitors can browse images in specified directories via /browse path (read-only, no delete/move)","openDirectory":"Open Directory","openDirectoryTooltip":"

Directories open for public browsing, separate multiple with commas

Example: wallpaper,photos,album

Supports subdirectories: 2026/lucky,2026/rich

Access URL: https://your.domain/browse/2026/lucky

","webdav":"WebDAV","webdavTooltip":"When enabled, images can be accessed and managed via WebDAV protocol","webdavUsername":"Username","webdavPassword":"Password","webdavUploadChannel":"Upload Channel","webdavDefaultChannel":"Default Channel","webdavChannelName":"Specified Channel","settingsSaved":"Settings saved"},"customerConfig":{"uploadFileList":"Upload File List","fileNameCol":"File Name","filePreview":"File Preview","uploadTimeCol":"Upload Time","ipAddress":"IP Address","address":"Address","uploadCount":"Upload Count","allowUpload":"Allow Upload","allow":"Allow","deny":"Deny","loadMore":"Load More","loadError":"Error loading more data, please check network connection","syncError":"Error syncing data, please check network connection"},"publicBrowse":{"searchPlaceholder":"Search file name or #page","fileCount":"{count} files","loading":"Loading...","retry":"Retry","creditText":"Gallery code contributed by LinJiang","loadingMore":"Loading...","allLoaded":"All loaded","creditLink":"LinJiang","browseDisabled":"Public browsing is not enabled","directoryNotAllowed":"This directory is not open for public access","accessDenied":"Access denied","loadFailed":"Load failed, please retry","rootDirectory":"Root","copyLink":"Copy Link","copied":"Copied","downloadBtn":"Download","swipeHint":"← Swipe to navigate →","rotate90":"Rotate 90°"},"transformMedia":{"download":"Download","playbackSpeed":"Playback Speed","normalSpeed":"Normal","playMode":"Play Mode","stopAfterPlay":"Stop After Play","sequentialPlay":"Sequential Play","loopSingle":"Loop Single","more":"More"},"directoryTree":{"selectDirectory":"Select Directory","retry":"Retry","authFailed":"Authentication failed, please log in again","serverError":"Server error, please try again later","loadFailed":"Failed to load directory tree, please check network connection"},"floatingSave":{"saving":"Saving","save":"Save","unsaved":"Unsaved changes","failed":"Failed to save. Please try again."},"theme":{"lightMode":"Light Mode","darkMode":"Dark Mode","autoMode":"Auto Mode"},"common":{"confirm":"OK","cancel":"Cancel","close":"Close","save":"Save","delete":"Delete","edit":"Edit","copy":"Copy","download":"Download","retry":"Retry","loading":"Loading...","success":"Success","failed":"Failed","warning":"Warning","info":"Notice","yes":"Yes","no":"No","all":"All Types","select":"Select"},"validation":{"pathMustStartWithSlash":"Path must start with \\"/\\"","pathTraversalNotAllowed":"Path cannot contain \\"..\\"","singleDotNotAllowed":"Path cannot contain standalone \\".\\"","consecutiveSlashNotAllowed":"Path cannot contain consecutive slashes","invalidCharacters":"Path contains invalid characters, please use a valid path format","uploadDirReplace":"Upload directory"},"language":{"switchTo":"中/En","switchLanguage":"Switch Language"},"whitelist":{"title":"Whitelist Mode Enabled","description":"Sorry, the whitelist mode is currently enabled. Uploaded images need to be approved before they can be displayed. Please wait for approval.","goHome":"Go Home","goBack":"Go Back","helpText":"You can try:","uploadImage":"Upload Image","refreshPage":"Refresh Page"},"sysAI":{"edit":"Edit","editProvider":"Edit provider","editModel":"Edit model","cancel":"Cancel","confirm":"Confirm","confirmAdd":"Confirm Add","required":"{field} is required","invalidURL":"Enter a valid HTTP or HTTPS URL without credentials, query parameters or fragments.","title":"AI Settings","enable":"Enable AI","providers":"Providers","models":"Models","prompts":"Prompt Management","tagging":"Image Tag Recognition","enableTagging":"Enable recognition","name":"Name","protocol":"Protocol","keyUnchanged":"Configured; leave blank to keep the Key","enterKey":"Enter API Key","keyNotConfigured":"API Key not configured","clearKey":"Delete saved Key","enabled":"Enable provider","remove":"Remove","addProvider":"Add provider","provider":"Provider","modelName":"Model identifier","vision":"Supports images","jsonMode":"Structured output","jsonModeHint":"Prompt constraints: Request JSON through instructions for broader compatibility.\\nNative JSON object: Enable the API\'s JSON mode; provider and model support is required.","promptOnly":"Prompt constraints","nativeJsonObject":"Native JSON object","outputTokens":"Maximum output tokens","test":"Test connection","addModel":"Add model","tagPrompt":"Image tag recognition prompt","promptHint":"Available variables:","resetPrompt":"Restore built-in prompt","language":"Tag language","maxTags":"Maximum tags per image","vocabulary":"Preferred tags","vocabularyHint":"Separate with English commas (,), Chinese commas (,) or newlines, up to 100 tags","timeout":"Provider timeout (ms)","batchSize":"Maximum images per batch","concurrency":"Concurrent model calls","providerInUse":"Remove or reassign models using this provider first.","saved":"AI settings saved","testSuccess":"Connected in {ms} ms","credentialHint":"Set AI_CONFIG_SECRET to a random secret of at least 32 characters in the deployment environment. API Keys are encrypted before saving.","general":"General Settings","noProviders":"No providers yet","noModels":"No models yet"},"aiTags":{"tab":"AI Tag Recognition","hint":"Select the suggested tags to append. Existing tags are preserved.","disabled":"Image tagging is not configured","generate":"Generate","cancel":"Cancel generation","retry":"Retry","settings":"Open AI Settings","progress":"Processed {done} / {total} images","saved":"Saved","noTags":"No tags suggested","apply":"Save","indexPending":"Tags saved, but index synchronization failed. Save again to retry synchronization.","ready":"Ready to generate","selection":"{count} selected"},"adminAuthWarning":{"title":"Login Settings","message":"The admin username and password have not been configured. Please set them as soon as possible!","configure":"Open Security Settings","close":"Dismiss"},"aiErrors":{"AI_DISABLED":"Image tag recognition is disabled. Open AI Settings to enable it.","INVALID_CONFIG":"AI settings are incomplete or invalid. Check providers, models and recognition settings.","CREDENTIAL_CONFIG":"Cannot use the provider key. Check AI_CONFIG_SECRET or enter the API Key again.","CONFIG_CONFLICT":"AI settings have changed. Reload before saving.","PROVIDER_REDIRECT":"The provider endpoint redirected. Use its final Base URL.","PROVIDER_AUTH":"Provider or upstream authentication failed (HTTP 401).","PROVIDER_BLOCKED":"Provider security protection blocked the request (HTTP 403). Check firewall rules.","PROVIDER_FORBIDDEN":"The provider denied the request (HTTP 403). Check model and image input permissions.","PROVIDER_RATE_LIMIT":"The provider rate limit was reached. Try again later.","PROVIDER_ERROR":"The provider returned HTTP {status}. Check the model and endpoint.","PROVIDER_UNAVAILABLE":"Cannot connect to the provider. Check the network and Base URL.","TIMEOUT":"Recognition timed out or was cancelled. Please retry.","UNSUPPORTED_IMAGE":"Cannot process this image. Supported formats: JPEG, PNG, WebP, AVIF and GIF.","IMAGE_TOO_LARGE":"Original exceeds 20 MB; skipped.","PREVIEW_TOO_LARGE":"Image exceeds the processing limit; skipped.","INVALID_RESPONSE":"Invalid response. Please retry.","CANCELLED":"Not processed. Retry to continue.","INVALID_INPUT":"Invalid request parameters. Check your input and retry.","INVALID_FILE":"Invalid file ID.","FILE_NOT_FOUND":"The file no longer exists. Refresh the file list.","UNSUPPORTED_INPUT":"The model or file does not support image tag recognition.","INVALID_IMAGE":"The image preview is invalid or exceeds limits. Generate it again.","FILE_CHANGED":"The file has changed. Generate tags again.","INVALID_TAGS":"Tag format or count exceeds limits. Reduce or edit the tags.","METADATA_TOO_LARGE":"File metadata exceeds the KV 1 KB limit. Reduce the tags.","INPUT_TOO_LARGE":"The request exceeds size limits. Reduce the images or tags.","INTERNAL_ERROR":"Operation failed. Please try again later.","AUTH_REQUIRED":"The admin session has expired. Please log in again.","IMAGE_FETCH_FAILED":"Image retrieval failed (HTTP {status}). Check file access permissions.","HTTP_ERROR":"Request failed (HTTP {status}). Please try again later.","NETWORK_ERROR":"Request failed. Check your network and retry.","INVALID_ACTION":"Invalid tag operation.","UNSUPPORTED_CAPABILITY":"This AI capability is not supported.","METHOD_NOT_ALLOWED":"This request method is not supported.","code":"Code","type":"Type","requestId":"Request ID"}}');const l="app-locale",r="zh-CN",s=new Set(["zh-CN","en"]);function d(e){return s.has(e)?e:null}function c(){return d(localStorage.getItem(l))}function m(e){return c()||d(e)||r}const u=(0,o.hU)({legacy:!0,locale:c()||r,fallbackLocale:r,messages:{"zh-CN":n,en:i}});function p(e){u.global.locale=e,document.documentElement.lang="zh-CN"===e?"zh-CN":"en"}function g(e){const a=m(e);return p(a),a}function h(e){const a=d(e)||r;p(a),localStorage.setItem(l,a)}var f=u},78673:function(e,a,t){t(18111),t(7588);var o=t(45130),n=t(73888),i=t(21588),l=t(91646),r=(t(15412),t(30372),t(98950)),s=t(30292),d=t(47984),c=t(79262),m=t(70193),u=t(55363),p=t(31050),g=t(22909),h=t(10220),f=t(74036),y=t(90389),b=t(81828),T=t(27483),C=t(66806),k=t(61536),v=t(3263),A=t(57038),w=t(63416),S=t(63027),P=t(19223),I=t(93422),D=t(16249),F=t(34335),L=t(14722),N=t(16829),R=t(53916),U=t(48749),E=t(2511),M=t(12375),O=t(97619),x=t(84310),B=t(14552),_=t(79919),W=t(10767),V=t(20491),H=t(18422),q=t(17214),G=t(44845),z=t(55319),K=t(71669),j=t(38557),J=t(15925),Q=t(10798),Y=t(39329),$=t(59708),X=t(41165),Z=t(50230),ee=t(99288),ae=t(67992),te=t(37538),oe=t(13118),ne=t(36050),ie=t(69721),le=t(75192),re=t(50672),se=t(3149),de=t(11221),ce=t(73585),me=t(63236),ue=t(1860),pe=t(13110),ge=t(6246),he=t(42302),fe=t(75504),ye=t(40587),be=t(5299),Te=t(81775),Ce=t(13127),ke=t(18742),ve=t(97579),Ae=t(56746),we=t(58422),Se=t(20444),Pe=t(88502),Ie=t(21872),De=t(64795),Fe=t(82262),Le=t(88921),Ne=t(39916),Re=t(18579),Ue=t(80500),Ee=t(58428),Me=t(87849),Oe=t(78034),xe=t(59413),Be=t(58869),_e=t(79102),We=t(78337),Ve=t(38870),He=t(70577),qe=t(93212),Ge=t(40275),ze=t(52995),Ke=t(38410),je=t(167),Je=t(53223),Qe=t(97447),Ye=t(67830),$e=[u.rC,p.UH,g.B0,h.Ce,f.IN,d.xK,y.Df,b.ck,T.LB,C.e4,k.ok,v.$F,A.gK,w.e6,S.rQ,P.Jt,I.Wz,D.Xk,F.B2,L.a$,N.jB,c.ZD,R.wF,U.rO,E.jT,M.Xb,O.dB,x.Ub,B.q9,_.rM,W.jP,V.he,m._2,H.cb,q.MT,G.vH,z.v,K.bx,j.tU,J.zp,Q.A,Y.pS,$.A4,X.h8,Z.o1,ee.UD,ae.mR,te.ao,oe.Uj,ne.gD,ie.Bw,le.CY,re.In,se.v0,de.lS,ce.jb,me.yv,ue.Up,pe.iW,ge.CQ,he.IT,fe.EZ,ye.xb,be.PJ,Te.X,Ce.ji,ke.is,ve.R9,Ae.QL,we.wR,Se.oE,Pe.ye,Ie.UB,De.hS,Fe.Mj,Le.D6,Ne.QO,Re.V2,Ue.im,Ee.Gx,Me.H9,Oe.Yp,xe.z1,Be.Nf,_e.oM,We.VN,Ve.Ot,He.xi,qe._2,Ge.DX,ze.l9,Ke.GR,je.ns,Je.Be,Qe.Jm,Ye.Mc],Xe=t(97722),Ze=(t(85331),t(10961),t(9267)),ea=(t(15616),t(80047)),aa=(t(99648),t(89559)),ta=(t(85332),t(56768)),oa=t(24232);function na(e,a,t,o,n,i){const l=(0,ta.g2)("router-view"),r=aa.KR,s=ea.S2,d=Ze.kZ,c=Xe.H6;return(0,ta.uX)(),(0,ta.Wv)(c,{locale:i.elementLocale},{default:(0,ta.k6)(()=>[(0,ta.bF)(l),(0,ta.bF)(d,{modelValue:i.adminAuthWarningVisible,"onUpdate:modelValue":a[1]||(a[1]=e=>i.adminAuthWarningVisible=e),title:e.$t("adminAuthWarning.title"),width:"min(480px, 90vw)","close-on-click-modal":!1,"close-on-press-escape":!1},{footer:(0,ta.k6)(()=>[(0,ta.bF)(s,{onClick:i.openSecuritySettings},{default:(0,ta.k6)(()=>[(0,ta.eW)((0,oa.v_)(e.$t("adminAuthWarning.configure")),1)]),_:1},8,["onClick"]),(0,ta.bF)(s,{type:"primary",onClick:a[0]||(a[0]=a=>e.$store.commit("dismissAdminAuthWarning"))},{default:(0,ta.k6)(()=>[(0,ta.eW)((0,oa.v_)(e.$t("adminAuthWarning.close")),1)]),_:1})]),default:(0,ta.k6)(()=>[(0,ta.bF)(r,{title:e.$t("adminAuthWarning.message"),type:"warning","show-icon":"",closable:!1,class:"admin-auth-warning-message"},null,8,["title"])]),_:1},8,["modelValue","title"])]),_:1},8,["locale"])}t(44114);var ia=t(60782),la=t(6166),ra=t(55186),sa=t(54791),da={data(){return{osInstance:null,imageViewerObserver:null}},computed:{adminAuthWarningVisible:{get(){return this.$store.state.adminAuthWarningVisible},set(e){e||this.$store.commit("dismissAdminAuthWarning")}},...(0,ia.L8)(["userConfig","useDarkMode"]),elementLocale(){return"zh-CN"===this.$i18n.locale?ra.A:sa.A}},mounted(){this.$nextTick(()=>{this.initOverlayScrollbars(),this.setupImageViewerObserver()})},beforeUnmount(){this.imageViewerObserver&&this.imageViewerObserver.disconnect()},watch:{},methods:{openSecuritySettings(){this.$store.commit("dismissAdminAuthWarning"),this.$router.push("/systemConfig#security")},initOverlayScrollbars(){try{if(la.ae.valid(document.body))return void(this.osInstance=(0,la.ae)(document.body));this.osInstance=(0,la.ae)(document.body,{scrollbars:{theme:"os-theme-dark",visibility:"auto",autoHide:"scroll",autoHideDelay:600,dragScroll:!0,clickScroll:!0},overflow:{x:"hidden",y:"scroll"}}),console.log("OverlayScrollbars initialized successfully")}catch(e){console.error("Failed to initialize OverlayScrollbars:",e)}},setupImageViewerObserver(){this.imageViewerObserver=new MutationObserver(e=>{const a=document.querySelector(".el-image-viewer__wrapper");a?this.osInstance&&this.osInstance.options({overflow:{x:"hidden",y:"hidden"}}):this.osInstance&&this.osInstance.options({overflow:{x:"hidden",y:"scroll"}})}),this.imageViewerObserver.observe(document.body,{childList:!0,subtree:!0})}}},ca=t(71241);const ma=(0,ca.A)(da,[["render",na],["__scopeId","data-v-d5214426"]]);var ua=ma,pa=t(16915),ga=t(25507),ha=t(46638),fa=t(57477);t(21862),t(50635);r.Yv.add(...$e),i.k.offset=30;const ya=(0,o.Ef)(ua),ba=(0,n.Zf)();ya.component("font-awesome-icon",s.gc);for(const[Aa,wa]of Object.entries(fa))ya.component(Aa,wa);const Ta=()=>{const e=document.documentElement;let a;if(ga.A.state.cusDarkMode&&null!==ga.A.state.useDarkMode)a=ga.A.state.useDarkMode;else{if(a=window.matchMedia("(prefers-color-scheme: dark)").matches,!a){const e=new Date,t=e.getHours();a=t>=22||t<6}ga.A.commit("setUseDarkMode",a)}a?e.classList.add("dark"):e.classList.remove("dark")},Ca=e=>{const a=document.documentElement;e?a.classList.add("dark"):a.classList.remove("dark")},ka=e=>{document.title=e?.siteTitle||"Sanyue ImgHub"},va=(e,a)=>{const t=document.querySelectorAll('link[rel="icon"], link[rel="apple-touch-icon"], link[rel="mask-icon"]');t.forEach(e=>e.remove());const o=document.createElement("link"),n=document.createElement("link"),i=document.createElement("link");o.rel="icon",n.rel="apple-touch-icon",i.rel="mask-icon",e?(o.href=a?.siteIcon||"/static/media/logo-dark.png",n.href=a?.siteIcon||"/static/media/logo-dark.png",i.href=a?.siteIcon||"/static/media/logo-dark.png"):(o.href=a?.siteIcon||"/static/media/logo.png",n.href=a?.siteIcon||"/static/media/logo.png",i.href=a?.siteIcon||"/static/media/logo.png"),document.head.appendChild(o),document.head.appendChild(n),document.head.appendChild(i)};ga.A.dispatch("fetchUserConfig").then(()=>{(0,ha.BY)(ga.A.getters.userConfig?.defaultLanguage),Ta(),ka(ga.A.getters.userConfig),va(ga.A.state.useDarkMode,ga.A.getters.userConfig),ga.A.subscribe((e,a)=>{"setUseDarkMode"===e.type&&ga.A.state.cusDarkMode&&(Ca(a.useDarkMode),va(a.useDarkMode,ga.A.getters.userConfig)),"setCusDarkMode"!==e.type||e.payload||(Ta(),va(ga.A.state.useDarkMode,ga.A.getters.userConfig))}),ya.use(ga.A).use(pa.A).use(l.A).use(ha.Ay).mount("#app")}).catch(e=>{console.error("Failed to load user configuration:",e),(0,ha.BY)(),ya.use(ga.A).use(pa.A).use(l.A).use(ha.Ay).use(ba).mount("#app")})}},a={};function t(o){var n=a[o];if(void 0!==n)return n.exports;var i=a[o]={exports:{}};return e[o].call(i.exports,i,i.exports,t),i.exports}t.m=e,function(){var e=[];t.O=function(a,o,n,i){if(!o){var l=1/0;for(c=0;c=i)&&Object.keys(t.O).every(function(e){return t.O[e](o[s])})?o.splice(s--,1):(r=!1,i0&&e[c-1][2]>i;c--)e[c]=e[c-1];e[c]=[o,n,i]}}(),function(){t.n=function(e){var a=e&&e.__esModule?function(){return e["default"]}:function(){return e};return t.d(a,{a:a}),a}}(),function(){t.d=function(e,a){for(var o in a)t.o(a,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:a[o]})}}(),function(){t.f={},t.e=function(e){return Promise.all(Object.keys(t.f).reduce(function(a,o){return t.f[o](e,a),a},[]))}}(),function(){t.u=function(e){return"js/"+e+"."+{126:"844eba4a",168:"16edcf49",223:"73628f82",380:"94df9ff7",385:"4d3f7ac7",502:"ff024e4c",540:"8854b4d5",711:"936a7109",730:"1feabc6e",773:"f0780366",787:"b5df6f2f",903:"1e4b549d",990:"e04c4ad6"}[e]+".js"}}(),function(){t.miniCssF=function(e){return"css/"+e+"."+{126:"8d4195f5",168:"448a9124",173:"36158ceb",223:"6b74609d",385:"4f25fc20",502:"7f4cb9f9",581:"01652a63",711:"1a30de22",730:"a3834df3",773:"147d098d",787:"176e498b",860:"3febd367",990:"a3834df3"}[e]+".css"}}(),function(){t.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){t.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)}}(),function(){var e={},a="sanyue_imghub:";t.l=function(o,n,i,l){if(e[o])e[o].push(n);else{var r,s;if(void 0!==i)for(var d=document.getElementsByTagName("script"),c=0;cOf-PH*7v7OsP5(`|Alj&%f3`~H=3Du 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 {\r\n axios.get('/api/auth/sessionCheck', {\r\n withCredentials: true\r\n }).then(res => {\r\n const data = res.data || {}\r\n\r\n // 不需要管理端认证,直接放行\r\n if (!data.adminRequired) {\n store.commit('beginAdminAccess', { required: false, fresh: !['dashboard', 'systemConfig', 'customerConfig'].includes(from.name) })\n store.commit('setAdminLoggedIn', true)\n return next()\r\n }\r\n\r\n // 需要认证,检查是否有有效的 admin session\r\n if (data.valid && data.authType === 'admin') {\n store.commit('beginAdminAccess', { required: true, fresh: false })\n store.commit('setAdminLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证但没有有效 session,跳转登录\r\n // 只有之前已登录(session 过期)才提示错误,首次未登录静默跳转\r\n const wasLoggedIn = store.state.adminLoggedIn\r\n store.commit('setAdminLoggedIn', false)\r\n if (to.name !== 'adminLogin') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'adminLogin' })\r\n } else {\r\n next()\r\n }\r\n }).catch(() => {\r\n const wasLoggedIn = store.state.adminLoggedIn\r\n store.commit('setAdminLoggedIn', false)\r\n if (to.name !== 'adminLogin') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'adminLogin' })\r\n } else {\r\n next()\r\n }\r\n })\r\n}\r\n\r\n// 通用的用户认证守卫\r\nconst userAuthGuard = (to, from, next) => {\r\n axios.get('/api/auth/sessionCheck', {\r\n withCredentials: true\r\n }).then(res => {\r\n const data = res.data || {}\r\n\r\n // 不需要用户端认证,直接放行\r\n if (!data.userRequired) {\r\n store.commit('setUserLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证,检查是否有有效 session(user 或 admin 都可以)\r\n if (data.valid) {\r\n store.commit('setUserLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证但没有有效 session,跳转登录\r\n // 只有之前已登录(session 过期)才提示错误,首次未登录静默跳转\r\n const wasLoggedIn = store.state.userLoggedIn\r\n store.commit('setUserLoggedIn', false)\r\n if (to.name !== 'login') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'login' })\r\n } else {\r\n next()\r\n }\r\n }).catch(() => {\r\n const wasLoggedIn = store.state.userLoggedIn\r\n store.commit('setUserLoggedIn', false)\r\n if (to.name !== 'login') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'login' })\r\n } else {\r\n next()\r\n }\r\n })\r\n}\r\n\r\nconst routes = [\r\n {\r\n path: '/',\r\n name: 'home',\r\n component: () => import('../views/UploadHome.vue'),\r\n beforeEnter: userAuthGuard\r\n },\r\n {\r\n path: '/login',\r\n name: 'login',\r\n component: () => import('../views/Login.vue')\r\n },\r\n {\r\n path: '/dashboard',\r\n name: 'dashboard',\r\n component: () => import('../views/AdminDashBoard.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/customerConfig',\r\n name: 'customerConfig',\r\n component: () => import('../views/CustomerConfig.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/systemConfig',\r\n name: 'systemConfig',\r\n component: () => import('../views/SystemConfig.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/adminLogin',\r\n name: 'adminLogin',\r\n component: () => import('../views/AdminLogin.vue'),\r\n },\r\n {\r\n path: '/blockimg',\r\n name: 'blockimg',\r\n component: () => import('../views/BlockImage.vue'),\r\n },\r\n {\r\n path: '/whiteliston',\r\n name: 'whiteliston',\r\n component: () => import('../views/WhiteListOn.vue'),\r\n },\r\n {\r\n path: '/browse/:dir*',\r\n name: 'publicBrowse',\r\n component: () => import('../views/PublicBrowse.vue'),\r\n },\r\n {\r\n path: '/:pathMatch(.*)*',\r\n name: 'notFound',\r\n component: () => import('../views/NotFound.vue'),\r\n },\r\n]\r\n\r\nconst router = createRouter({\r\n history: createWebHistory(process.env.BASE_URL),\r\n routes\r\n})\r\n\r\nexport default router\r\n","import { createStore } from 'vuex'\r\nimport axios from '@/utils/axios';\r\nimport createPersistedState from 'vuex-persistedstate';\r\n\r\nexport default createStore({\r\n state: {\r\n userConfig: null,\r\n bingWallPapers: [],\r\n // 会话状态标记(不存储密码,实际认证通过 HttpOnly Cookie)\r\n adminLoggedIn: false,\n adminAccessStarted: false,\n adminAuthWarningVisible: false,\n userLoggedIn: false,\r\n uploadMethod: 'default',\r\n uploadCopyUrlForm: '',\r\n compressConfig: {\r\n customerCompress: undefined,\r\n compressQuality: undefined,\r\n compressBar: undefined,\r\n serverCompress: undefined,\r\n convertToWebp: undefined,\r\n },\r\n storeUploadChannel: '',\r\n storeChannelName: null, // 指定的渠道名称,null表示从未选择,''表示用户主动清空\r\n storeAutoRetry: true,\r\n storeUploadNameType: '',\r\n uploadFolder: '',\r\n customUrlSettings: {\r\n useCustomUrl: 'false',\r\n customUrlPrefix: '',\r\n },\r\n adminUrlSettings: {\r\n useCustomUrl: 'false',\r\n customUrlPrefix: '',\r\n },\r\n autoReUpload: true,\r\n // 深色模式\r\n useDarkMode: null,\r\n cusDarkMode: false,\r\n },\r\n getters: {\r\n userConfig: state => state.userConfig,\r\n bingWallPapers: state => state.bingWallPapers,\r\n adminLoggedIn: state => state.adminLoggedIn,\r\n userLoggedIn: state => state.userLoggedIn,\r\n storeUploadMethod: state => state.uploadMethod,\r\n uploadCopyUrlForm: state => state.uploadCopyUrlForm,\r\n compressConfig: state => state.compressConfig,\r\n storeUploadChannel: state => state.storeUploadChannel,\r\n storeChannelName: state => state.storeChannelName,\r\n storeUploadNameType: state => state.storeUploadNameType,\r\n customUrlSettings: state => state.customUrlSettings,\r\n storeAutoRetry: state => state.storeAutoRetry,\r\n adminUrlSettings: state => state.adminUrlSettings,\r\n storeUploadFolder: (state) => {\r\n return state.uploadFolder || localStorage.getItem('uploadFolder') || ''\r\n },\r\n useDarkMode: state => state.useDarkMode,\r\n cusDarkMode: state => state.cusDarkMode,\r\n storeAutoReUpload: state => state.autoReUpload,\r\n },\r\n mutations: {\r\n setUserConfig(state, userConfig) {\r\n state.userConfig = userConfig;\r\n },\r\n setBingWallPapers(state, bingWallPapers) {\r\n state.bingWallPapers = bingWallPapers;\r\n },\r\n setAdminLoggedIn(state, loggedIn) {\n state.adminLoggedIn = loggedIn;\n if (!loggedIn) {\n state.adminAccessStarted = false;\n state.adminAuthWarningVisible = false;\n }\n },\n beginAdminAccess(state, { required, fresh }) {\n if (!required && (fresh || !state.adminAccessStarted)) state.adminAuthWarningVisible = true;\n state.adminAccessStarted = true;\n },\n dismissAdminAuthWarning(state) {\n state.adminAuthWarningVisible = false;\n },\n setUserLoggedIn(state, loggedIn) {\r\n state.userLoggedIn = loggedIn;\r\n },\r\n setUploadMethod(state, uploadMethod) {\r\n state.uploadMethod = uploadMethod;\r\n },\r\n setUploadCopyUrlForm(state, uploadCopyUrlForm) {\r\n state.uploadCopyUrlForm = uploadCopyUrlForm;\r\n },\r\n setCompressConfig(state, { key, value }) {\r\n state.compressConfig[key] = value;\r\n },\r\n setStoreUploadChannel(state, uploadChannel) {\r\n state.storeUploadChannel = uploadChannel;\r\n },\r\n setStoreChannelName(state, channelName) {\r\n state.storeChannelName = channelName;\r\n },\r\n setStoreUploadNameType(state, storeUploadNameType) {\r\n state.storeUploadNameType = storeUploadNameType;\r\n },\r\n setCustomUrlSettings(state, { key, value }) {\r\n state.customUrlSettings[key] = value;\r\n },\r\n setStoreAutoRetry(state, storeAutoRetry) {\r\n state.storeAutoRetry = storeAutoRetry;\r\n },\r\n setAdminUrlSettings(state, { key, value }) {\r\n state.adminUrlSettings[key] = value;\r\n },\r\n setUseDarkMode(state, useDarkMode) {\r\n state.useDarkMode = useDarkMode;\r\n },\r\n setCusDarkMode(state, cusDarkMode) {\r\n state.cusDarkMode = cusDarkMode;\r\n },\r\n setStoreUploadFolder(state, folder) {\r\n state.uploadFolder = folder\r\n localStorage.setItem('uploadFolder', folder)\r\n },\r\n setStoreAutoReUpload(state, autoReUpload) {\r\n state.autoReUpload = autoReUpload;\r\n }\r\n },\r\n actions: {\r\n async fetchUserConfig({ commit }) {\r\n try {\r\n const response = await axios.get('/api/userConfig');\r\n commit('setUserConfig', response.data);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n },\r\n async fetchBingWallPapers({ commit }) {\r\n try {\r\n const response = await axios.get('/api/bing/wallpaper');\r\n const wallpapers = response.data.data;\r\n const bingWallPapers = wallpapers.map(wallpaper => {\r\n return {\r\n url: 'https://www.bing.com' + wallpaper.url,\r\n };\r\n }\r\n );\r\n\r\n //预加载图片,阻塞直到图片加载完成\r\n await Promise.all(bingWallPapers.map(wallpaper => {\r\n return new Promise((resolve, reject) => {\r\n const img = new Image();\r\n img.onload = resolve;\r\n img.onerror = reject;\r\n img.src = wallpaper.url;\r\n });\r\n }));\r\n commit('setBingWallPapers', bingWallPapers);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n },\r\n modules: {\r\n },\r\n plugins: [createPersistedState({\r\n // 只持久化非敏感数据,不持久化认证状态\r\n paths: [\r\n 'userConfig',\r\n 'uploadMethod',\r\n 'uploadCopyUrlForm',\r\n 'compressConfig',\r\n 'storeUploadChannel',\r\n 'storeChannelName',\r\n 'storeAutoRetry',\r\n 'storeUploadNameType',\r\n 'uploadFolder',\r\n 'customUrlSettings',\r\n 'adminUrlSettings',\r\n 'autoReUpload',\r\n 'useDarkMode',\r\n 'cusDarkMode',\r\n ]\r\n })]\r\n})\r\n","import { createI18n } from 'vue-i18n'\r\nimport zhCN from './zh-CN.json'\r\nimport en from './en.json'\r\n\r\nconst LOCALE_KEY = 'app-locale'\r\nconst FALLBACK_LOCALE = 'zh-CN'\r\nconst SUPPORTED_LOCALES = new Set(['zh-CN', 'en'])\r\n\r\nfunction normalizeLocale(locale) {\r\n return SUPPORTED_LOCALES.has(locale) ? locale : null\r\n}\r\n\r\nfunction getStoredLocale() {\r\n return normalizeLocale(localStorage.getItem(LOCALE_KEY))\r\n}\r\n\r\nexport function resolveInitialLocale(defaultLocale) {\r\n return getStoredLocale() || normalizeLocale(defaultLocale) || FALLBACK_LOCALE\r\n}\r\n\r\nconst i18n = createI18n({\r\n legacy: true,\r\n locale: getStoredLocale() || FALLBACK_LOCALE,\r\n fallbackLocale: FALLBACK_LOCALE,\r\n messages: { 'zh-CN': zhCN, en }\r\n})\r\n\r\nfunction applyLocale(locale) {\r\n i18n.global.locale = locale\r\n document.documentElement.lang = locale === 'zh-CN' ? 'zh-CN' : 'en'\r\n}\r\n\r\nexport function initializeLocale(defaultLocale) {\r\n const locale = resolveInitialLocale(defaultLocale)\r\n applyLocale(locale)\r\n return locale\r\n}\r\n\r\nexport function setLocale(locale) {\r\n const normalizedLocale = normalizeLocale(locale) || FALLBACK_LOCALE\r\n applyLocale(normalizedLocale)\r\n localStorage.setItem(LOCALE_KEY, normalizedLocale)\r\n}\r\n\r\nexport { LOCALE_KEY, getStoredLocale }\r\nexport default i18n\r\n","import { faAws } from '@fortawesome/free-brands-svg-icons/faAws';\r\nimport { faCloudflare } from '@fortawesome/free-brands-svg-icons/faCloudflare';\r\nimport { faDiscord } from '@fortawesome/free-brands-svg-icons/faDiscord';\r\nimport { faAngleDoubleLeft } from '@fortawesome/free-solid-svg-icons/faAngleDoubleLeft';\r\nimport { faAngleDoubleRight } from '@fortawesome/free-solid-svg-icons/faAngleDoubleRight';\r\nimport { faArrowDown } from '@fortawesome/free-solid-svg-icons/faArrowDown';\r\nimport { faArrowLeft } from '@fortawesome/free-solid-svg-icons/faArrowLeft';\r\nimport { faArrowUp } from '@fortawesome/free-solid-svg-icons/faArrowUp';\r\nimport { faBan } from '@fortawesome/free-solid-svg-icons/faBan';\r\nimport { faBars } from '@fortawesome/free-solid-svg-icons/faBars';\r\nimport { faBook } from '@fortawesome/free-solid-svg-icons/faBook';\r\nimport { faBullhorn } from '@fortawesome/free-solid-svg-icons/faBullhorn';\r\nimport { faCalendar } from '@fortawesome/free-solid-svg-icons/faCalendar';\r\nimport { faChartBar } from '@fortawesome/free-solid-svg-icons/faChartBar';\r\nimport { faChartLine } from '@fortawesome/free-solid-svg-icons/faChartLine';\r\nimport { faCheck } from '@fortawesome/free-solid-svg-icons/faCheck';\r\nimport { faCheckSquare } from '@fortawesome/free-solid-svg-icons/faCheckSquare';\r\nimport { faChevronDown } from '@fortawesome/free-solid-svg-icons/faChevronDown';\r\nimport { faChevronLeft } from '@fortawesome/free-solid-svg-icons/faChevronLeft';\r\nimport { faChevronRight } from '@fortawesome/free-solid-svg-icons/faChevronRight';\r\nimport { faCircleHalfStroke } from '@fortawesome/free-solid-svg-icons/faCircleHalfStroke';\r\nimport { faClock } from '@fortawesome/free-solid-svg-icons/faClock';\r\nimport { faCloud } from '@fortawesome/free-solid-svg-icons/faCloud';\r\nimport { faCloudUpload } from '@fortawesome/free-solid-svg-icons/faCloudUpload';\r\nimport { faCloudUploadAlt } from '@fortawesome/free-solid-svg-icons/faCloudUploadAlt';\r\nimport { faCode } from '@fortawesome/free-solid-svg-icons/faCode';\r\nimport { faCodeBranch } from '@fortawesome/free-solid-svg-icons/faCodeBranch';\r\nimport { faCog } from '@fortawesome/free-solid-svg-icons/faCog';\r\nimport { faCogs } from '@fortawesome/free-solid-svg-icons/faCogs';\r\nimport { faComments } from '@fortawesome/free-solid-svg-icons/faComments';\r\nimport { faCompressAlt } from '@fortawesome/free-solid-svg-icons/faCompressAlt';\r\nimport { faCopy } from '@fortawesome/free-solid-svg-icons/faCopy';\r\nimport { faDatabase } from '@fortawesome/free-solid-svg-icons/faDatabase';\r\nimport { faDownload } from '@fortawesome/free-solid-svg-icons/faDownload';\r\nimport { faEdit } from '@fortawesome/free-solid-svg-icons/faEdit';\r\nimport { faEllipsisH } from '@fortawesome/free-solid-svg-icons/faEllipsisH';\r\nimport { faEllipsisV } from '@fortawesome/free-solid-svg-icons/faEllipsisV';\r\nimport { faExclamation } from '@fortawesome/free-solid-svg-icons/faExclamation';\r\nimport { faExclamationCircle } from '@fortawesome/free-solid-svg-icons/faExclamationCircle';\r\nimport { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons/faExclamationTriangle';\r\nimport { faExternalLinkAlt } from '@fortawesome/free-solid-svg-icons/faExternalLinkAlt';\r\nimport { faEye } from '@fortawesome/free-solid-svg-icons/faEye';\r\nimport { faFile } from '@fortawesome/free-solid-svg-icons/faFile';\r\nimport { faFileAlt } from '@fortawesome/free-solid-svg-icons/faFileAlt';\r\nimport { faFileExport } from '@fortawesome/free-solid-svg-icons/faFileExport';\r\nimport { faFileSignature } from '@fortawesome/free-solid-svg-icons/faFileSignature';\r\nimport { faFilter } from '@fortawesome/free-solid-svg-icons/faFilter';\r\nimport { faFolder } from '@fortawesome/free-solid-svg-icons/faFolder';\r\nimport { faFolderOpen } from '@fortawesome/free-solid-svg-icons/faFolderOpen';\r\nimport { faFolderTree } from '@fortawesome/free-solid-svg-icons/faFolderTree';\r\nimport { faGlobe } from '@fortawesome/free-solid-svg-icons/faGlobe';\r\nimport { faHashtag } from '@fortawesome/free-solid-svg-icons/faHashtag';\r\nimport { faHistory } from '@fortawesome/free-solid-svg-icons/faHistory';\r\nimport { faHome } from '@fortawesome/free-solid-svg-icons/faHome';\r\nimport { faICursor } from '@fortawesome/free-solid-svg-icons/faICursor';\r\nimport { faImage } from '@fortawesome/free-solid-svg-icons/faImage';\r\nimport { faImages } from '@fortawesome/free-solid-svg-icons/faImages';\r\nimport { faInbox } from '@fortawesome/free-solid-svg-icons/faInbox';\r\nimport { faInfoCircle } from '@fortawesome/free-solid-svg-icons/faInfoCircle';\r\nimport { faLink } from '@fortawesome/free-solid-svg-icons/faLink';\r\nimport { faList } from '@fortawesome/free-solid-svg-icons/faList';\r\nimport { faMinus } from '@fortawesome/free-solid-svg-icons/faMinus';\r\nimport { faMinusSquare } from '@fortawesome/free-solid-svg-icons/faMinusSquare';\r\nimport { faMoon } from '@fortawesome/free-solid-svg-icons/faMoon';\r\nimport { faMusic } from '@fortawesome/free-solid-svg-icons/faMusic';\r\nimport { faPager } from '@fortawesome/free-solid-svg-icons/faPager';\r\nimport { faPaperPlane } from '@fortawesome/free-solid-svg-icons/faPaperPlane';\r\nimport { faPaste } from '@fortawesome/free-solid-svg-icons/faPaste';\r\nimport { faPlus } from '@fortawesome/free-solid-svg-icons/faPlus';\r\nimport { faQuestionCircle } from '@fortawesome/free-solid-svg-icons/faQuestionCircle';\r\nimport { faQuoteRight } from '@fortawesome/free-solid-svg-icons/faQuoteRight';\r\nimport { faRedo } from '@fortawesome/free-solid-svg-icons/faRedo';\r\nimport { faRobot } from '@fortawesome/free-solid-svg-icons/faRobot';\r\nimport { faSave } from '@fortawesome/free-solid-svg-icons/faSave';\r\nimport { faSearch } from '@fortawesome/free-solid-svg-icons/faSearch';\r\nimport { faServer } from '@fortawesome/free-solid-svg-icons/faServer';\r\nimport { faShareAlt } from '@fortawesome/free-solid-svg-icons/faShareAlt';\r\nimport { faShield } from '@fortawesome/free-solid-svg-icons/faShield';\r\nimport { faShieldAlt } from '@fortawesome/free-solid-svg-icons/faShieldAlt';\r\nimport { faSignOutAlt } from '@fortawesome/free-solid-svg-icons/faSignOutAlt';\r\nimport { faSortAlphaUp } from '@fortawesome/free-solid-svg-icons/faSortAlphaUp';\r\nimport { faSortAmountDown } from '@fortawesome/free-solid-svg-icons/faSortAmountDown';\r\nimport { faSpinner } from '@fortawesome/free-solid-svg-icons/faSpinner';\r\nimport { faSquare } from '@fortawesome/free-solid-svg-icons/faSquare';\r\nimport { faSun } from '@fortawesome/free-solid-svg-icons/faSun';\r\nimport { faSync } from '@fortawesome/free-solid-svg-icons/faSync';\r\nimport { faSyncAlt } from '@fortawesome/free-solid-svg-icons/faSyncAlt';\r\nimport { faTachometerAlt } from '@fortawesome/free-solid-svg-icons/faTachometerAlt';\r\nimport { faTag } from '@fortawesome/free-solid-svg-icons/faTag';\r\nimport { faTags } from '@fortawesome/free-solid-svg-icons/faTags';\r\nimport { faThLarge } from '@fortawesome/free-solid-svg-icons/faThLarge';\r\nimport { faTimes } from '@fortawesome/free-solid-svg-icons/faTimes';\r\nimport { faTools } from '@fortawesome/free-solid-svg-icons/faTools';\r\nimport { faTrashAlt } from '@fortawesome/free-solid-svg-icons/faTrashAlt';\r\nimport { faUpload } from '@fortawesome/free-solid-svg-icons/faUpload';\r\nimport { faUserCog } from '@fortawesome/free-solid-svg-icons/faUserCog';\r\n\r\nexport default [\r\n faAngleDoubleLeft,\r\n faAngleDoubleRight,\r\n faArrowDown,\r\n faArrowLeft,\r\n faArrowUp,\r\n faAws,\r\n faBan,\r\n faBars,\r\n faBook,\r\n faBullhorn,\r\n faCalendar,\r\n faChartBar,\r\n faChartLine,\r\n faCheck,\r\n faCheckSquare,\r\n faChevronDown,\r\n faChevronLeft,\r\n faChevronRight,\r\n faCircleHalfStroke,\r\n faClock,\r\n faCloud,\r\n faCloudflare,\r\n faCloudUpload,\r\n faCloudUploadAlt,\r\n faCode,\r\n faCodeBranch,\r\n faCog,\r\n faCogs,\r\n faComments,\r\n faCompressAlt,\r\n faCopy,\r\n faDatabase,\r\n faDiscord,\r\n faDownload,\r\n faEdit,\r\n faEllipsisH,\r\n faEllipsisV,\r\n faExclamation,\r\n faExclamationCircle,\r\n faExclamationTriangle,\r\n faExternalLinkAlt,\r\n faEye,\r\n faFile,\r\n faFileAlt,\r\n faFileExport,\r\n faFileSignature,\r\n faFilter,\r\n faFolder,\r\n faFolderOpen,\r\n faFolderTree,\r\n faGlobe,\r\n faHashtag,\r\n faHistory,\r\n faHome,\r\n faICursor,\r\n faImage,\r\n faImages,\r\n faInbox,\r\n faInfoCircle,\r\n faLink,\r\n faList,\r\n faMinus,\r\n faMinusSquare,\r\n faMoon,\r\n faMusic,\r\n faPager,\r\n faPaperPlane,\r\n faPaste,\r\n faPlus,\r\n faQuestionCircle,\r\n faQuoteRight,\r\n faRedo,\r\n faRobot,\r\n faSave,\r\n faSearch,\r\n faServer,\r\n faShareAlt,\r\n faShield,\r\n faShieldAlt,\r\n faSignOutAlt,\r\n faSortAlphaUp,\r\n faSortAmountDown,\r\n faSpinner,\r\n faSquare,\r\n faSun,\r\n faSync,\r\n faSyncAlt,\r\n faTachometerAlt,\r\n faTag,\r\n faTags,\r\n faThLarge,\r\n faTimes,\r\n faTools,\r\n faTrashAlt,\r\n faUpload,\r\n faUserCog\r\n];\r\n","import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock } from \"vue\";\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_router_view = _resolveComponent(\"router-view\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _component_el_config_provider = _resolveComponent(\"el-config-provider\");\n return _openBlock(), _createBlock(_component_el_config_provider, {\n locale: $options.elementLocale\n }, {\n default: _withCtx(() => [_createVNode(_component_router_view), _createVNode(_component_el_dialog, {\n modelValue: $options.adminAuthWarningVisible,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $options.adminAuthWarningVisible = $event),\n title: _ctx.$t('adminAuthWarning.title'),\n width: 'min(480px, 90vw)',\n \"close-on-click-modal\": false,\n \"close-on-press-escape\": false\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: $options.openSecuritySettings\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('adminAuthWarning.configure')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$store.commit('dismissAdminAuthWarning'))\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('adminAuthWarning.close')), 1)]),\n _: 1\n })]),\n default: _withCtx(() => [_createVNode(_component_el_alert, {\n title: _ctx.$t('adminAuthWarning.message'),\n type: \"warning\",\n \"show-icon\": \"\",\n closable: false,\n class: \"admin-auth-warning-message\"\n }, null, 8, [\"title\"])]),\n _: 1\n }, 8, [\"modelValue\", \"title\"])]),\n _: 1\n }, 8, [\"locale\"]);\n}","import \"core-js/modules/es.array.push.js\";\nimport { mapGetters } from 'vuex';\nimport { OverlayScrollbars } from 'overlayscrollbars';\nimport zhCnLocale from 'element-plus/es/locale/lang/zh-cn';\nimport enLocale from 'element-plus/es/locale/lang/en';\nexport default {\n data() {\n return {\n osInstance: null,\n imageViewerObserver: null\n };\n },\n computed: {\n adminAuthWarningVisible: {\n get() {\n return this.$store.state.adminAuthWarningVisible;\n },\n set(value) {\n if (!value) this.$store.commit('dismissAdminAuthWarning');\n }\n },\n ...mapGetters(['userConfig', 'useDarkMode']),\n elementLocale() {\n return this.$i18n.locale === 'zh-CN' ? zhCnLocale : enLocale;\n }\n },\n mounted() {\n // 初始化 OverlayScrollbars 悬浮滚动条\n this.$nextTick(() => {\n this.initOverlayScrollbars();\n this.setupImageViewerObserver();\n });\n },\n beforeUnmount() {\n // 清理 MutationObserver\n if (this.imageViewerObserver) {\n this.imageViewerObserver.disconnect();\n }\n },\n watch: {},\n methods: {\n openSecuritySettings() {\n this.$store.commit('dismissAdminAuthWarning');\n this.$router.push('/systemConfig#security');\n },\n initOverlayScrollbars() {\n try {\n // 检查是否已经初始化\n if (OverlayScrollbars.valid(document.body)) {\n this.osInstance = OverlayScrollbars(document.body);\n return;\n }\n\n // 应用到 body 实现全局悬浮滚动条\n this.osInstance = OverlayScrollbars(document.body, {\n scrollbars: {\n theme: 'os-theme-dark',\n visibility: 'auto',\n autoHide: 'scroll',\n autoHideDelay: 600,\n dragScroll: true,\n clickScroll: true\n },\n overflow: {\n x: 'hidden',\n y: 'scroll'\n }\n });\n console.log('OverlayScrollbars initialized successfully');\n } catch (error) {\n console.error('Failed to initialize OverlayScrollbars:', error);\n }\n },\n setupImageViewerObserver() {\n // 监听图片预览器的打开/关闭,动态控制 OverlayScrollbars\n this.imageViewerObserver = new MutationObserver(mutations => {\n const imageViewer = document.querySelector('.el-image-viewer__wrapper');\n if (imageViewer) {\n // 图片预览器打开,禁用滚动\n if (this.osInstance) {\n this.osInstance.options({\n overflow: {\n x: 'hidden',\n y: 'hidden'\n }\n });\n }\n } else {\n // 图片预览器关闭,恢复滚动\n if (this.osInstance) {\n this.osInstance.options({\n overflow: {\n x: 'hidden',\n y: 'scroll'\n }\n });\n }\n }\n });\n this.imageViewerObserver.observe(document.body, {\n childList: true,\n subtree: true\n });\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./App.vue?vue&type=template&id=d5214426&scoped=true\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport \"./App.vue?vue&type=style&index=0&id=d5214426&scoped=true&lang=css\"\n\nimport exportComponent from \"../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-d5214426\"]])\n\nexport default __exports__","import { createApp } from 'vue'\r\nimport { createHead } from '@vueuse/head'; // 导入 createHead\r\nimport ElementPlus, { messageConfig } from 'element-plus'\r\nimport 'element-plus/es/components/message/style/css'\r\nimport 'element-plus/es/components/message-box/style/css'\r\n\r\nimport { library } from '@fortawesome/fontawesome-svg-core';\r\nimport { FontAwesomeIcon } from '@fortawesome/vue-fontawesome';\r\nimport fontAwesomeIcons from './utils/fontawesomeIcons';\r\n\r\nimport App from './App.vue'\r\nimport router from './router'\r\nimport store from './store'\r\nimport i18n, { initializeLocale } from './locales'\r\n\r\nimport * as ElementPlusIconsVue from '@element-plus/icons-vue'\r\nimport 'element-plus/theme-chalk/dark/css-vars.css'\r\nimport './styles/global.css'\r\n\r\n// OverlayScrollbars 悬浮滚动条\r\nimport 'overlayscrollbars/overlayscrollbars.css'\r\n\r\n\r\nlibrary.add(...fontAwesomeIcons);\r\n\r\n// 保留首条消息的顶部间距,同时允许 Element Plus 动态计算后续消息的位置。\r\nmessageConfig.offset = 30;\r\n\r\nconst app = createApp(App);\r\nconst head = createHead(); // 创建 head 对象\r\n\r\napp.component('font-awesome-icon', FontAwesomeIcon);\r\nfor (const [key, component] of Object.entries(ElementPlusIconsVue)) {\r\n app.component(key, component)\r\n}\r\n\r\n// 根据 useDarkMode 的值添加或移除 dark 类\r\nconst initDarkModeClass = () => {\r\n const htmlElement = document.documentElement;\r\n let isDarkMode;\r\n\r\n // 判断用户是否是自定义模式\r\n if (store.state.cusDarkMode && store.state.useDarkMode !== null) {\r\n // 用户手动设置了暗色模式\r\n isDarkMode = store.state.useDarkMode;\r\n } else {\r\n // 跟随系统模式或时间\r\n isDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches;\r\n if (!isDarkMode) {\r\n const now = new Date();\r\n const hour = now.getHours();\r\n isDarkMode = hour >= 22 || hour < 6;\r\n }\r\n // 更新 useDarkMode 的值\r\n store.commit('setUseDarkMode', isDarkMode);\r\n }\r\n\r\n if (isDarkMode) {\r\n htmlElement.classList.add('dark');\r\n } else {\r\n htmlElement.classList.remove('dark');\r\n }\r\n};\r\n\r\nconst applyDarkModeClass = (isDarkMode) => {\r\n const htmlElement = document.documentElement;\r\n if (isDarkMode) {\r\n htmlElement.classList.add('dark');\r\n } else {\r\n htmlElement.classList.remove('dark');\r\n }\r\n};\r\n\r\n// 预设网站标题的函数\r\nconst presetSiteTitle = (userConfig) => {\r\n document.title = userConfig?.siteTitle || 'Sanyue ImgHub';\r\n};\r\n\r\n// 预设和更新网站图标的函数\r\nconst presetSiteIcon = (isDarkMode, userConfig) => {\r\n // 同时更改 icon apple-touch-icon 和 mask-icon\r\n const existingIcons = document.querySelectorAll('link[rel=\"icon\"], link[rel=\"apple-touch-icon\"], link[rel=\"mask-icon\"]');\r\n existingIcons.forEach(icon => icon.remove());\r\n\r\n const iconLink = document.createElement('link');\r\n const appleIconLink = document.createElement('link');\r\n const maskIconLink = document.createElement('link');\r\n iconLink.rel = 'icon';\r\n appleIconLink.rel = 'apple-touch-icon';\r\n maskIconLink.rel = 'mask-icon';\r\n\r\n if (isDarkMode) {\r\n iconLink.href = userConfig?.siteIcon || '/static/media/logo-dark.png';\r\n appleIconLink.href = userConfig?.siteIcon || '/static/media/logo-dark.png';\r\n maskIconLink.href = userConfig?.siteIcon || '/static/media/logo-dark.png';\r\n } else {\r\n iconLink.href = userConfig?.siteIcon || '/static/media/logo.png';\r\n appleIconLink.href = userConfig?.siteIcon || '/static/media/logo.png';\r\n maskIconLink.href = userConfig?.siteIcon || '/static/media/logo.png';\r\n }\r\n\r\n document.head.appendChild(iconLink);\r\n document.head.appendChild(appleIconLink);\r\n document.head.appendChild(maskIconLink);\r\n};\r\n\r\nstore.dispatch('fetchUserConfig').then(() => {\r\n // 优先恢复用户选择;没有持久化选择时使用网页默认语言\r\n initializeLocale(store.getters.userConfig?.defaultLanguage);\r\n\r\n // 初始化时应用 dark 模式\r\n initDarkModeClass();\r\n\r\n // 预设网站标题和图标\r\n presetSiteTitle(store.getters.userConfig);\r\n presetSiteIcon(store.state.useDarkMode, store.getters.userConfig);\r\n\r\n // 监听 useDarkMode 和 cusDarkMode 的变化\r\n store.subscribe((mutation, state) => {\r\n if (mutation.type === 'setUseDarkMode' && store.state.cusDarkMode) {\r\n applyDarkModeClass(state.useDarkMode);\r\n // 同时更新网站图标\r\n presetSiteIcon(state.useDarkMode, store.getters.userConfig);\r\n }\r\n\r\n // 监听 cusDarkMode 变化,当设置为 false 时重新初始化\r\n if (mutation.type === 'setCusDarkMode' && !mutation.payload) {\r\n // 切换到跟随系统模式,重新初始化\r\n initDarkModeClass();\r\n // 同时更新网站图标\r\n presetSiteIcon(store.state.useDarkMode, store.getters.userConfig);\r\n }\r\n });\r\n\r\n app.use(store).use(router).use(ElementPlus).use(i18n).mount('#app');\r\n}).catch(error => {\r\n console.error('Failed to load user configuration:', error);\r\n initializeLocale();\r\n app.use(store).use(router).use(ElementPlus).use(i18n).use(head).mount('#app');\r\n})\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"js/\" + chunkId + \".\" + {\"126\":\"844eba4a\",\"168\":\"16edcf49\",\"223\":\"73628f82\",\"380\":\"94df9ff7\",\"385\":\"4d3f7ac7\",\"502\":\"ff024e4c\",\"540\":\"8854b4d5\",\"711\":\"936a7109\",\"730\":\"1feabc6e\",\"773\":\"f0780366\",\"787\":\"b5df6f2f\",\"903\":\"1e4b549d\",\"990\":\"e04c4ad6\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"css/\" + chunkId + \".\" + {\"126\":\"8d4195f5\",\"168\":\"448a9124\",\"173\":\"36158ceb\",\"223\":\"6b74609d\",\"385\":\"4f25fc20\",\"502\":\"7f4cb9f9\",\"581\":\"01652a63\",\"711\":\"1a30de22\",\"730\":\"a3834df3\",\"773\":\"147d098d\",\"787\":\"176e498b\",\"860\":\"3febd367\",\"990\":\"a3834df3\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"sanyue_imghub:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = function(chunkId, fullhref, oldTag, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tif (__webpack_require__.nc) {\n\t\tlinkTag.nonce = __webpack_require__.nc;\n\t}\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && event.type;\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + errorType + \": \" + realHref + \")\");\n\t\t\terr.name = \"ChunkLoadError\";\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t524: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"126\":1,\"168\":1,\"173\":1,\"223\":1,\"385\":1,\"502\":1,\"581\":1,\"711\":1,\"730\":1,\"773\":1,\"787\":1,\"860\":1,\"990\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr\n\n// no prefetching\n\n// no preloaded","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t524: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(!/^(173|581|860)$/.test(chunkId)) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunksanyue_imghub\"] = self[\"webpackChunksanyue_imghub\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [504], function() { return __webpack_require__(78673); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["instance","axios","create","baseURL","withCredentials","adminAuthGuard","to","from","next","get","then","res","data","adminRequired","store","commit","required","fresh","includes","name","valid","authType","wasLoggedIn","state","adminLoggedIn","ElMessage","error","i18n","global","t","catch","userAuthGuard","userRequired","userLoggedIn","routes","path","component","beforeEnter","router","createRouter","history","createWebHistory","process","createStore","userConfig","bingWallPapers","adminAccessStarted","adminAuthWarningVisible","uploadMethod","uploadCopyUrlForm","compressConfig","customerCompress","undefined","compressQuality","compressBar","serverCompress","convertToWebp","storeUploadChannel","storeChannelName","storeAutoRetry","storeUploadNameType","uploadFolder","customUrlSettings","useCustomUrl","customUrlPrefix","adminUrlSettings","autoReUpload","useDarkMode","cusDarkMode","getters","storeUploadMethod","storeUploadFolder","localStorage","getItem","storeAutoReUpload","mutations","setUserConfig","setBingWallPapers","setAdminLoggedIn","loggedIn","beginAdminAccess","dismissAdminAuthWarning","setUserLoggedIn","setUploadMethod","setUploadCopyUrlForm","setCompressConfig","key","value","setStoreUploadChannel","uploadChannel","setStoreChannelName","channelName","setStoreUploadNameType","setCustomUrlSettings","setStoreAutoRetry","setAdminUrlSettings","setUseDarkMode","setCusDarkMode","setStoreUploadFolder","folder","setItem","setStoreAutoReUpload","actions","fetchUserConfig","response","console","log","fetchBingWallPapers","wallpapers","map","wallpaper","url","Promise","all","resolve","reject","img","Image","onload","onerror","src","modules","plugins","createPersistedState","paths","LOCALE_KEY","FALLBACK_LOCALE","SUPPORTED_LOCALES","Set","normalizeLocale","locale","has","getStoredLocale","resolveInitialLocale","defaultLocale","createI18n","legacy","fallbackLocale","messages","zhCN","en","applyLocale","document","documentElement","lang","initializeLocale","setLocale","normalizedLocale","faAngleDoubleLeft","faAngleDoubleRight","faArrowDown","faArrowLeft","faArrowUp","faAws","faBan","faBars","faBook","faBullhorn","faCalendar","faChartBar","faChartLine","faCheck","faCheckSquare","faChevronDown","faChevronLeft","faChevronRight","faCircleHalfStroke","faClock","faCloud","faCloudflare","faCloudUpload","faCloudUploadAlt","faCode","faCodeBranch","faCog","faCogs","faComments","faCompressAlt","faCopy","faDatabase","faDiscord","faDownload","faEdit","faEllipsisH","faEllipsisV","faExclamation","faExclamationCircle","faExclamationTriangle","faExternalLinkAlt","faEye","faFile","faFileAlt","faFileExport","faFileSignature","faFilter","faFolder","faFolderOpen","faFolderTree","faGlobe","faHashtag","faHistory","faHome","faICursor","faImage","faImages","faInbox","faInfoCircle","faLink","faList","faMinus","faMinusSquare","faMoon","faMusic","faPager","faPaperPlane","faPaste","faPlus","faQuestionCircle","faQuoteRight","faRedo","faRobot","faSave","faSearch","faServer","faShareAlt","faShield","faShieldAlt","faSignOutAlt","faSortAlphaUp","faSortAmountDown","faSpinner","faSquare","faSun","faSync","faSyncAlt","faTachometerAlt","faTag","faTags","faThLarge","faTimes","faTools","faTrashAlt","faUpload","faUserCog","render","_ctx","_cache","$props","$setup","$data","$options","_component_router_view","_component_el_alert","_component_el_button","_component_el_dialog","_component_el_config_provider","elementLocale","default","modelValue","$event","title","$t","width","footer","onClick","openSecuritySettings","_","type","$store","closable","class","osInstance","imageViewerObserver","computed","this","set","$i18n","mounted","$nextTick","initOverlayScrollbars","setupImageViewerObserver","beforeUnmount","disconnect","watch","methods","$router","push","body","scrollbars","theme","visibility","autoHide","autoHideDelay","dragScroll","clickScroll","overflow","x","y","MutationObserver","imageViewer","querySelector","options","observe","childList","subtree","__exports__","library","add","fontAwesomeIcons","messageConfig","offset","app","createApp","App","head","createHead","FontAwesomeIcon","Object","entries","ElementPlusIconsVue","initDarkModeClass","htmlElement","isDarkMode","window","matchMedia","matches","now","Date","hour","getHours","classList","remove","applyDarkModeClass","presetSiteTitle","siteTitle","presetSiteIcon","existingIcons","querySelectorAll","forEach","icon","iconLink","createElement","appleIconLink","maskIconLink","rel","href","siteIcon","appendChild","dispatch","defaultLanguage","subscribe","mutation","payload","use","ElementPlus","mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","call","m","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","f","e","chunkId","reduce","promises","u","miniCssF","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","inProgress","dataWebpackPrefix","l","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","charset","nc","setAttribute","onScriptComplete","prev","event","clearTimeout","timeout","doneFns","parentNode","removeChild","setTimeout","bind","target","Symbol","toStringTag","p","createStylesheet","fullhref","oldTag","linkTag","nonce","onLinkComplete","errorType","realHref","err","Error","code","request","insertBefore","nextSibling","findStylesheet","existingLinkTags","tag","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","installedChunks","installedChunkData","test","promise","loadingEnded","realSrc","message","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","id","chunkLoadingGlobal","self","__webpack_exports__"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/app.3c3cf9d6.js.map.gz b/frontend-dist/js/app.3c3cf9d6.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..413997fc22945e8f5b8415fd2d06275212812a22 GIT binary patch literal 20215 zcmV)#K##v4iwFP!000023hljncO1uYDE?K(8z1e$9ANPzKp?O)Gdox;0T7P`2vP(u z&tSKAcYxWM<;*M|lz5JuYg?2p*-GN4{D|eB6YD0iArLT~TYA zaZoW-Th}yOS8H0;)zuZ%UNS0#1>tR7Qw>cs@S|pMWGkA{F*YRpn`%wdYU-)3Y2!Ln z;~1+kW}~C8sVkbcV!+3(82fsKqg~UqO{_;Xwdw@GXe)?$#ZVhsbxU2>mb9D(b#+bi zphC?w)E!ORL9Cd`@!i!lOJ$nY*40B@(++h*t!rBS4kEv+ZfeHF@@f{bM~JJMF`;j$ zHLbR-RyD0wL$FOKGpR#`j=qISb+xWleI4oCxFVe*v!)pnmF3H6SlLF-HK0smODbRI z9Bn|i+`b6WfeyTQc^h)8mb#`Hl`5n!RXJ2u({_xwgD7Q%@L-Cm_I1td7`~3}#wP7T z=dP)3T{HLZsB4;833S8(g0g|Xw*JhCUf0&NKIXQ$#6Qy0B45`3b41?LRZBBL<|~?` z=L=I8IrAt_HrF(B17UAn4tj}5?Wh*?j(Z^y9UKUMqVCxpUZnn9h+fxLKr&2CtAlv# z!ynV25+D;Doqn%t#w{Dk+0{S_*3?rIgr0QQEw!qdErhL6`MLzVnSr%U&2&*7%?g#V zr1Ez&BBMs2iFQn+SqSaa^$W~pN-Zad$0M7)Uurj%}j!J1l-%@wA>XN#mUN?=In;O)_ z>gm#V0oNnFhl2ic61;0EmKX+Xa%}Z#HMESbOZI>DSkcD zn`%STKzA5TrdsfGM>CoRPP8=4TwP!`Fel(su&Ei2Zm17YU4lk54s;W>r?muM`&F#A zt;4ivbo3eyU3L=)JkVFfd|D-%Y{Uu;0iL9~qb+o} z>BhJXz_v7~m?;=xHo3*Iq8a;$)k2v@n+w&z#v@|8uVbf^dcv+SrUbJ>IWK_TFv`#? z4NYSeDGMjh8+skdx-Dg(3Y^s+idL2lDf1Mj7sD|`=7e0^IGRbAi=<4+nUkCpVb3@+ z+Cu|n-8BTyTsgOksm6g}@*eT!+=tjtM$a%gO-FKW-{3SY6HPri(=&*sHD2q4oH;IP zMLni@dI#8N+~J%B{%LJ}7yAjjXcMuZ?3zdBE$qt~8RIncFB;L1H7jRb=UHpK4X)f( zlTer0GwL|_K@hf4JTx>m8a`SD>ks*$p*e-bLbIRtZaKAgV`H)v+!tAQPIGSJflr z!#Zd&6AdUZQNRwafs9sA(;**s)i85KA@Y=ncJN#)DO39xVE2 z8B@ArN~2kOsJ9J?!IVglp6(K)XOcbHGo_KPb#)sdrvzjWLH2c@ARhv4#ti6!SPN(Y zwf#mUw=&m4^MbY?7`*MIF|N?avEx^ZE|=VMfjWAhkhlNsT)*r?8&Tgm^H9y$Qd=Esr8#^ zcp+4+3TSpPrAeWm8rrM3IYpaV^+fMfiSwj~=TOvc=rPM({SuyoJX~9f>S{hx!)kACqc=M!HqhOVib~ z!>~*0gIh(WW^CQUsG3P=A+})5>bs;D?vS;87iifb0oW8QSi=d(gaJ@3>oIHY-XU9u z#u4|dgDQ%mMk?qoFHIIby3U8_J>6+idr?YJ^P4d*7!5H*Unaq)p;(QX1f~jvNY-OY zRyC5r2oL%Y+D-?h_=FJInAX)DUGy%n3dc#Wf)(FggW@kwnX>johe^8|;1EHrRMpgV zbuKUruYy)qEsio6+JFE4uk+jd6PKso)&FOHoBxls_s`*XO`TpgI%`#~ZmS~1NmJlv z=I=ULc@;iQRxu(}N9D{kV~XZ&jMw4}VuHyJA4fSKZL~x}9-sxo6);&i6J0}_s9c#{ z#;NBR=dwD+-8z_6p{bVsU_1@X21IZRzKJZW%ISf*uUfL%z*#n@8MkB7A60g7R>irm&d{JaAo#6ZHtb-4st$i&PLOv^N4|rFTwNj8rAjui zRwY{o16NT0eq6s_X;2h%M>B3MBPlcu4&WEkxzZ=oXO^rP^|}rnibNl73`g~(u4&U4 zF`THGiK-Br;F=8JU3ZQhM@5XYsWF`Mpc#{SJg z3~WHQPtk`={tlWN>U72E85%hkHBHlQY(POXHgCI|a*&osJXSRGk#MWI#bsnLQW zdgN?rT4)eDVEySPIwEMrt^2fua;$Tgh1?$i@t|IcNO_W;KR?5aj1yEuQTI%2B>i|Ngp`SK*@;V9_N>d$6K(HAEvxVV=yU>7_ z6A|r5@(hyex@Ii%pLezDMrTcO`_$_Od41e9>@3NyVVPt>9XB*>(m)$vsv^1NAlKU5 z28zKgsrv$Q!p3zTWGUam2pBEfwb8b3%-%#!%-y6AJ?Nh!1KeH{#*pBfu~Fr}cQtKy zP8VLZ5$d-tZs^+T(I1bdp{?z6G(s>raAzgmkvEJshJ|;5H+T31Sk=sZwWi)RI@Oze zR<7X|g-yP!Bi5P?t{m&L7~?R8WzU*cZAngf1Jkkg zBR#HmEwfg&Ls2num)4WnYnr)#69_&f;x(`whpV%*Qmll=*M@^3H ztl$VXF$zH8oL#UL2>LrV z)J@Ht&>K<)M^e{nW%RtYK)(&$#2xBNmhF#pxg1^>`^9X2340?|{{0IYq_7`Fyjae7%5 zrH_dF^QsvcBKVN9bXlS<_&FgaFxW{oF-{=;DEG9f~fuePL`>aOufKOvIP``?A8w6>@is^nVC0*Y$v zh&`@V^gn7E?5Z&}ZCN#7ri@TAG&5X8PVh)h73r)|V4;oyiwapS;5!@0l3j{mY?Awl z3j?SQS8k@#4=8TGyP8Zlr=ZrGKuop9xoe^gpG(CWkJztq4@A3ji)LVh)DW$``xWfV zY22{1LIr_GQ0HAPM=)CJwBQM4uWd?lWd{1$XQi>i9cg8kw^wsJD)HNIT=KUbmpK zGDS<^kA`?)PoA%DsD^gaATiM*%7n!c^?Ryok>gdI>`k!(QxhEpE&zyB6$zCYlPYca z)dbsMe5@v<(bSH0AY5g}jIQkyW!y3s=s&W!x%q7~v0iGOkr3(EDl%Z>bWZu#q=`swFN&7bHwBO;8 z5i@rN{pt1TIyyA79CVJVBO8#4)P>mbyeY!yY#{|^pJcOd;=YHOC^Oofd95xyS#53R z4))9`?gQVQ0gJIZWg__-nyAO-<4UN_NBRL*nTLj~LWuoP`N@{#^iHqk4J?}^yDIEf zu0wXvFEGm{@;pg_*}(~6<&fr0RLir14*wd9!h z$*zdd@$Eh>9Dk=eAAqnI5GNTDsu^-%P^PX^dCUDJ}1GD^>I4dd{~#hR<4l^ zaf;T-6mM!|mf$pRybL3B*T)Xq!j_w`$D=|8J*;qNhJx|eH~CgHu=;x7B&X(CYWZf* zNX_?Tht>LqFi13Q(>M6Wb7%zRm^`2c%h)$)e!X6oGiWCjH(Scvu`WB@;eH?v{}t}V z_rO*$t7w)kW8dMtw@*&v#Ad>s1Z&&q(!QNFT1ns3jQvNvQ^xUx&=Ca<);A+U>r-+8 z)2Sp1MB4#~-l}GvREXB~4#np&v6<*Min$)wX+r>VZim*{WBrKhOr~!j?)8H@5^N)u zb*D~os1=Av&(--(35eszoxekC6;xyG5%lQtx=e-P=%<8^;WAW<|K3IO1O_(k1aK=2 z9N-%D{8GGha}B$8Ew+rShZUMFVaB6ifs~8mh40X+VK?mH+SKkAZD61?7-Q=2)y z^mS;WYv6Wi4@0;rGmZ?+CA)4-)&TGzH|ny;r~I;L-2Cj~LFM3ac68O?D@I-)=d%m{bJm!fgE0t2(F zbEO88!wpj&l)h{X(rQ}$0Gd>t)iJz?TU9ovwoynXk+RL1?PwHr5Tr%AXzc`o&&Kwn zn;-!ggT6(9Q5>Xq9eIm5m7UTj$#Qq)yiKfai~oj>a4-U}*~d8lqsn@6e;WAGxGYQa z#13svzD~P`kS_)e3tY$~RokM0Y42Izwz7UqO>Iv*qnJn!KBL zP^fqL?^qA)ko-^|uj7niY>{VSg3Z0IZELH889c`$sno-daG%yXvY>hgRl+h2;oDfH zN82z-o@mQ3>{mC-#*KQ;5bWcwx?XG?8ns`PR)Cp5RuEy zdo);V*ae%M_&OAu7^f|z6)N?}Bwu$DQ+H{$clZ>CoyzTLCz=moM;8Qu@Z=xQJ;EKf zr}{D47S<6uTAO|PqIs2EO@=P_QaoPy;BeEes|!zmGuy;zlXmM(rJFcw@YeAHGbXL% z=e7=yqT!6+HS(!O$&RQ#st7?c$avx%M|;_4b#Y=;t8rI@?-z`;O^=3tfMaR>u53Z0 z@oe-A(p0-sW}{BTzs{KfUQTKjgq zAWyLwaN(=BZY(97ow*7bBS0~2t|yP@fJAGuB33?xv5$xG{xAFjW-c$$z?q`$oYWCB zv3*Ul z?wirYIwL5Ks%G9%Ev*9XXj~E(3vhuOm)i|(%A7QCVqBRbL86_?bOOqkI_;pE=(J`$ zv(vsw>@#zMkWd>R>P|J`z<0S8p#u%OwB*=^PcYGYx6wYTazCl2X-9e&wuDqs9C4T$ zOLUAvFzj?CnwZT4gO=CDv2V!l09B`YPnYWA-r6G_wq}@o{McsXSJocg&Kqgkj>qLW zg$e{S+=_+(u8$gzmit?|gjR7YL{+PXRPn@Z+Kj)E7@Utx*{L_tpYK&}(Aj8QSEI?9rOsnVrNw#f@#d zbiRgmINyM=SG|c=g9s6j`?r%APD1&5C?d16@S6OrW7S_Glh5Qk>>|f$T6gg5Lm7H; zr8Z7m_;E^Iy-h*6-QF&Fmgt{$=`^_8h|*l$Ymo68rB!REyJE%^B1XY#n*==GONcJd zHI#)D+S1k5?~0f_M%N6VOk^4xcTcP6r%xo614BKtb} zpn(R*aHXz;HEJ`dhrswYCo;;(#N`>3{)Chm{KN%Ju3oge9l3v92cB#6F-QCTz{jm} z?SD{1oi@2lP_7X>d_dS#<4FW1ZC^Q_5!*)<>KPL*AJOrw%sN>xk~vU^n7;p;*Qs_ z92Q(1fXHuoZfG5|!0WPF!*j3H60O%8JLX zJueJG-|AhVtlxJ-yUWUrPTxIL9M5X9<}hGhw`YY)n}te~wXD7qD(s}^`QZ>anyh8J zOzHVvkNM##APbov41s~ULEmQzwqXb`p!&c%vVw+h_d)_!;G!Vc>arp6bZyrjZ3Mv| zfyMFmEoTUTjuosQyBmUSLC5pMj^z&1ebCYt<`xL4-FOsW6V7oyR}|1ADFjpD~pSZO0nmA&3+@aJ-4WQK`EAt%Dhr6 zTRpp|5{_d#>=-_4GB>m>Czw}4zt2BT>s}Y)3;~GzIeus$k743N>j9wZF>0cG>>24GR8LdCd8C z)MukKMHB%;1a3NOEC{SNi%K$wb(tHE_MCnom&FN#ml+$Q`9sc^d+D#_*-I{DPt3Vd z89t{JrOtf*+B;9b`QFoazV!6{cb~rfm9xM3?z8uQ`s{-*p1uF%?5%%}d)8`pZCC4u zooe6mo64e63OyAOtBT7`!VzWh^9t`~>iRYdOW1Q|s~>jCoc%_JH4claC_11&Df98j zSlD51$!CFtT~UalrWIPsqT;h)41d1*s`AQX(K0AjE-Rn>=B?*Hc|x*bS#v~rh4K~Zld*=^?b>0f zxX;?Qt089^AkWY)#ph7-O3QKr225f>XI}Zty<*b}I{TjGH;bxL3{HcPbq&vL*=_i4 z^n=jrGM}g1AG6(t({Hk%1Y8~ioiw669?7R9U?I}6>b2XfS#ygj@-Zsyv#{^G*i)qu z(cCn*h*c4X&i}vH&j0=&&cFM?+1vkk{)0E*f8ToY^qnt}EQs+W^A1^eWI1+IdFdsE z7}*ay+owH7qZ=WMFUn6E>71R&+~N7*zc5EW`S>g6|MqUg2+{sOeDvnCU;q2FkN@TA z_dY!P_*)Y2**E^_{0DD*^4qVSz46xBum6qm|M1Zhp@^RS$Lr@m`1?P6^v3xcZ=HYR z?WaHe-ScmL@7V_*{NbZFpa0{x&;RA!^B?>Z0X_fW_nv?FU8*KI2#&2lG*MaPJP1N7 zWF)~NPXJxYB;@Ld+^3<3qNjW&>c3U5%{wt-CKQxNN#rT9${S<8@A)OrNn>OZjD@A5 z1Ncx-#DFV~NFDV!{)wIS3Qo`S31UDFL>DRy1ml$yRI-avw=}G<(J7Tia&*gov-O49 zinD6&1oO@J&Y%1`e|G5y%>OSuxnRq#KDj_^<+;TlsKa&w=6{MRY>-lqb=ec3O*wz^ zZLZ{>|Id%lzVX2)AN~Wkm$I7vKeYk>#dL6AYW+Z6kz&y$s>1m*(Gt#ovflk~R$iuS ziG%2J1j?dvj|xRddREv0S4#L%im1Nhby=JUK@ZPmZaA+{50M{H0uSWKX2(H!rw7jF zve#u0-zknnp!=-l`OI`f=FcZJI;U41KoT(^O;;-Qa>8)VBAPC#P_n~QmFDDJUNO%0 z6)WiI0C^Etl3vs$RHht)G^vBKFQ?Z?Kz?fUCLNj-wfUKs(^{9{J~c`u6DLh)Ue*;Q zK$1W85(4%euW@L1vuw&{Twb{jFtsk|r7Kl_+_6LEK)52?{M@|DN!SIjRXYgRugU=5 zI}TWRzG?fP%Md{^G#!f!L&b&!cQrER;l~=zM`NEG$x`Ba;gZ*PhtdYOI7|)&_j7c$ zuPi1)N+MR)p?K1KCc;#bgJ-%{Hy`Y5t%`a`{ZnLXKwyh%&5vr;G2|qLuuiTPa9WT` z5vC2epFRj#vkud@gmAPca&TfV4vN1?1PPWPzaWgU`{MbJUw`)gFaGe+lTUv0*4fX$d-m7woqh0?r#}Wu z`Rx54J^$X9$?kmq+B?tw<8>v9B^q)J5zr>wLJ|3qvM8QWhuCWz8Itq+VQ1I!UE6Kn zwgY?LVaY6V{gAYlH{lUrSsqX`1u$A?(FTip8o6?fB5K4DDdpv_n!Xr zcb|Ot_46P6)AQHfIRD!J`ol+W7K@ZjUf?Ic`S9$k@16hV%TNE;?-I3X{m|QDA&h8@ zW93i^lt8R3K`Qm$lIJvGnv**YduPXY>MRW5iHAhr^#f*z0`p1{C8nsR`*z27Hhk8y zPZF48Hll3)iK{@q5Cc-If!_G_zdn28-_GBA_w1u@NW;Ej`G;#>lcmOeqaVaM@*ok_ z@#VJxIt29#==9j-psaz4B?XbpRtG4D6i^~pmFXG?B4_3alF$WdFe&pQ?T`y5l^Ccy zQh>?q3&&;(GF#+=p_>OQ6}Wh$4X#*}xoE(p8=Nko4pISm)kfJD48J_t8Cc&=LUoi7 zB?P~xLyQPFxZxD7S=-6EfwWb#Sti1EM~`bVw7g(SLEf7-7H@-I8bm6)YU>LC^9N-79tQ7XBRGaa!|Pv{1LKdCWt>PQw) z7E=)UbtS^jqAEuUY9y*iC?I7qD!3p=MLv@Qo&Lhjfbqup(8WGOxa>d}a{kBO{km3Uky#4hz#9kjja6H0_{k2Z5Ht zErw=Z$6U%Rfjbrd%Io$V`OWS3JeiVbmS}WHX?ggiY#1TZ=S6i$GflE0DPv%5Qkkeq zDJ{QVBQa6M!ga__RprQX`i$f%Rbz5~yLZS=?<sM%1(%J>*)J} z8l}ll)YpiU2Gu4(fr}b{UD`G=bBfAxCe@3ZC`ySKa58m3AExKtt9N4>@~S-5f@?!c3D;LfvebAE8*{ui&tJ${T#+2hxa}$1>r-w&SY+j6%W-;uKEnfA z*W$SWEh@*&$3Hm`8M`k=G1j$urRXzd&r3FaDpgVX=%;tWuouji%g4vZXkEfIR#dLV z6^!+LM@_;$PEhz*{)jiwiIj5r`A@!d_SGLh`}pIt@BjYk8?VD+>UTdpd-q3AzyHg# zC%>RXUf}&V&!4<4LlciTe6MQ-|4`^yVkOc`M4Luq?%J<)A)P6O&q$RFf(vOO|L(hGZ`$a+CI6A}ed3WwRxN zDw`SE0E5s9>nDd^F%QY4rfr%;ZrU(NW=b`s+; z%)*koyyWnxW84y3V9Sp>qsFZ<*!C15TJP!VHKqGadKHM;-b~-Ij8x8A@4BZ zy}!uGrvgo{(TC0BW8#NNo5{x<%WX$xY4a@+1iR|_uXz;L3wzk6t{vDnoKEV4h{7w# z1-DqUO;3nR+|+>-1}x0y9nloY7Vl&jwF3rYzMLhAOrsl-Br5GC#KTBca^cc#dPR{z zQqoD{lRl&{G3TZ=Ys=D(gGj0VRm=0mfv|GRXKZxex7=nh8XUDpZQxNE0TN5NfW&aT zezWCR(t7ZfaK&&LlodN@cz$y@d>kl)Omo`~t9bo=hpn!az{bB!N#WVmL!R6sR@;!IxF)6_f!a4M~l;8&899}2MfLW}z-*DKn<+SRd z?;Q@w))a8wJTh#*14RCOG%TKeGanBRs|}5fdqo%E)SU1|(P~ak-$2}RD16|BH#2&r61Uh;m`m?2G54o9#VlK zL=K)F^EVu8NY_3F%fT3g!y*g996ZjDq5uFHESr56yr4mq1kJ(hg)a~hjKMM(w^-8~ z3Ksxmv3UF5a3mo_22b5O8jfE8kj26*e@IW0Kyom_p^zal0Z0~8$MT0Z-vm$&Hk&!k zA#nl708GOZ#-XzK?6$k!4~Iq=fn_mzeyBOUjx}UNSc1#P+4cHvICRJ@37W;+vt4&s zks+8YuHh$>0rN<`KV&2OIW2?TOhX|#bsM=@h87Nj$>7?y8gO$8n$xwigJf4v3}F zPQl?MfWr(tOB!tn$}Ih6V-L@)Mb!cPM}IMI$Lm zto+DHeEBAw1WPc9G}bswf0MFGri$f^Y-*~h@`{3-oLUZ$vmmUW{O&i?-?(s`PD~u( zQ8Mv%IYT}nBnPk)iS6W9kocs)a571Rb`z<+Q|VI#TID2KxRz6R{8UPUK&bpFf|)sK zx8<}rESH~3{g9t00(pttL>NxaIhD&nuqgGJEFOobQi)NBDVYv;C`t(!P{|}f%qEiv zVHYV8!za==4}!=k6v~iOysiwwBMWj0IQHppSvJsNPkalXTS^3`CO!k1Ip}|;zcWJ< z9838V97O3G9lgZ2@YNEDL74b<5)~(XpG1amU!+9vL*!5JC!}w14CGI=?-L1NrppQ3 z)=ngWm77UO6^blZIWe|9)2Wf^C})rXD5s?PU+*UXPTfZ8Gf6hM8Rc=F_p1l+l%ZZp7;+GIyEsjar7d)IzZWTyEn2R@@U~=>&P{vvEH#Z*k3P*jm zS6Il~x#+^-kOvK@;z7e|beO7q7OrUyROPb)3;R7)`7G?sSC!9tJv>*z&*#y;vIo&c zAP?w5jR$c1hq9PuUumyEB}SpdUSVV*7YlP9SPt{U0VtR=irE*z@At#da|a`!{EIL& zZOif6gE3J4MHm{mH~K-(_l|5jQ8NG)6&w`>1x~*4FYf5lh??lz(uMV@;tZwO<0(3C zjNh_Lo9SqOx+u%d#Q8|-_~m5xWI-?G_jpWQrc}gFH9pwc^_tAN4d<^U(gvLKR0Ysp z!E<+dO}P9dhTkj9bHTkgaUb?Bmg28P<+JPvhV$a*FRdjiJQCFx+99wG2FKWE!%{H~ zIfey_F~G6i#QSu*wp*H>8}FT{%8l`(meeUAfOXdB`*wIL_Q^*_AQG^b ziBF{AN@=}V8q8vnYgm#S8Bvvqk^3>X73IOaG9l42rz-bAMz9Hch5HxFWKQctyb58j z(DUuC<)7{q)Ev%m@fuGE+jvsgs6EMh`39VMhP(0p6WIw;btx<5tf7^HP~b_j#~&g8*ms$d2h+y((SplDxc1F0+2bd=Qm}@4;Svsi;ReL6jrGJ?a=P-+-OH zt-Z_wey4gF_S?e&m4+(;v#W#Rs&qPTfr11^NGZA-AUfN}`@sup{Gxhs7mm360DP6( zHalki`aa#R#1D?R{6wEC?hXJM?&G~wuUv8^Ra7mUeoWj1!RZP+b|4hMg_jt_H$ABF z6;NRbk0vJ&<0TF}S;l^;dKq+=#MszaEH0&ci8Er!Lr#(0CTs_}-HBG?VU64a7m^Uo zM?xX4Z;1N=eG}GrdZ2sF~2 ztVmL}qLDP!*&<_2h_SdXYlJabF;T~G!f{@Cg>x5=`vs8@=S}dXbfrTJ8$pqQh`Oqj zycqK@0$ybVBjj>GuSf*p`DE#sts-CM47VG9_>D+hk^?A%m+o#ZMaPHsz2@miV%+hj z#QH^9%!*(N!9w;N?t*-5*iBG>_PcLB{pNdTPkx~QuyXePkDh-07iV97@9bY+%a!aG zqDf7*Dc14x$qYcv@Xkjs7{#BXP0K$ls>wn}puKFm=MGOwrVBvYvfachPqD5+1uD$3 zPUn^Du{j3bGm0fK z@WA{B4~~7S$FC?zs0RsON(aC&O|pR64|m+t#rHTyWspdx$HR0aJJu5UW8CQ~rHWl3 z!WWCN5M`d5&U~Cqc$`#RvapMrxG!W$Bn#(X{K?r*-}>`rNzUjVjwP|Tv~cPC?9q=4 zRC1$ZJ530QXOvyg-w%Dpl1lDza+=?BA1@TtLiuw_-=%v7M&T5B-HQgWG~sx#pcZ9#Psy!^_PN%*JI5^q^A%+(?l<< z4aP+UUIH_J5geDu%>Ud_Kv9MH<-=2ly@ZbiE{+ePn$R_ZBtD`hjsXjz#>%eOWDkS~ z28_iw^!#$u4#F~lEi(shtsoM4K=1)&1rHu5i%R)(fAQeK#?F@c;KAq0sj5oUN>#ac zuSlIzRO#RQ>b>HF2S|DiZXqau7c_b_Dq6KyxPN~H+K}>?q`I@W4QRcd>>eiH<)R|X zOkTx4>a%{p${hyl)Hv`z_~`7*{~(o>Q1Fx2xT*p!DLK{re!$D#`pWo*u?UwrrZRRh zycIVj;OM@0k^)Y&+_Cq4Yv8`%_&rHnatFUWwPwHMxuF(6Ihl_Kq({P)K+#Gf2%`HO z@}IPfm-#t7^s4~j14CvJzh+yM$Ue%JcxWyA&Kmf2(4*#q`hhnpEjQ?w_$m+aC;$8rwKV4XsLjvj$IpO%U->hOTSyf`Lze7SrDUsA%A z36GRBDGB`We=bvFR8Z+9z3`5!*|br_2m4EA3S~MOV8i^ z)${-P-t+JL^4YI{2v*kHZ=QeWS7%@T;)Azq~_V(AGe)#hU z$0r}Z_4MQS|Nqzi8Y)VR$1$(f3K*=lOpPxjFOsl&z33hZt=B7Qy&h3Z*`N!ee9!=; z5z-9!C?aK_eem07|N5>#YxR0#(V#39ffb`-L_wby)$|CW`dXf^l&I2sc+p#gjj{Pg_WKc@@0`O`+<{ovW_|8(~LJD>dajpXgoV2jD|DfxoAmtIQ0ITK~Ui!l&A zOWl+NjsjKt#@Eii`rfnmfB*F3_dogFSI*!0PUhZftX;m%Za`fNgWrL{3ZMP@@1MW( zji>+q;nNTQo@zLM^6m5Q{Ob94emStJW7}2cr$o@%+)C zLH;lF=}2*ein1Va)fC3!?ELHcWdFqVj=5t~fh(S}S7>n=@cQTgdBw|A618M&LFVDaIiyUc|%jG>K6klp2(J-=*`%V>lQG*yG z$@&<^;lbWT)mX$B!^nj_o)7J_u6M+;2yiTCRhn~}8I>}*fAskLGi^USANG?k;i&wZ zr~mxD^B=$d{3qXq-hch$^Kbnk<`AqkvaoK4Y#SCWfIaff&oX-=R)oA{T<{BHL4*Nr z#jfK6yh^RxUheOc)sjQn+26iNB1$x#egF68KYsl}8qvy1^kDL$YMETnjyQKh9pC(| z0y7Q@1RD*#exrj^kaG67Zz^3YIHYx@gdngJJAl|IS!RQx4VvSWijM6b-t(EWxL2U{ zsr#xTrKM|4=f?yT?n_;oAYiQJ`KHzAl#pzAex>2LLKsGpcMr_YH`oe8P- z%R&;#FqpVw5Jz;I1_W4>f zcV;FhzJXN7U6q`MN&{?Iei!yYOcIq8XiwN@FdfNuIn0LN_%5t!C0>3E`uh+-+GnLG zUal&+uUwFh6NSdY=t1g~rI+>q2Hi~^58tF+Rmw0TYtJTTkX%lf#A&yM z*eHq&7XG*fz%Nkx`Ay;bmCI#i zyTkYm!wT*^+jEaBUwQE0nC z$ak8^CC7NE8__%#bfSf+Sm=FoT1%GORC@hTu^~Vcda%?@m_`Kc-K$d#yd|2-WySS4 z=$PG9T*jKLnUjah2FZL*JM7Lt^0BiJ%sgR@e#nqWPFCD&dtsWuK&EZ10T+gM6YNnr z7V&SKp40OqF&$fCZx7=uBmsooVyd7R@0D)4KOS?@gOosSN}zZcw^K?v?HJi}b4VKN z=5$N&-~m!vPz%s~O^D?9`0C6(5UV^i>+re(XCz#R-gjVUf2Z#r)|!E;v|Lr``L+jp zQ@GUGt&+%({P2`Gf=qr45#4W{5fG+XVvjB}( zxLSEZs`s&^gQ&!USP?J77R?HI8fNP73&;sX|E-YkWx|s;itD+f9n0@}?y1mL`I^L) zH3^mEZH5Ms0i-Mn<^9r2LO(uuzydzWeSu4?z#@qT6}}g}V|srSNQo{YRX)S<{U(8LmFq9(3pqp z6fBBNKFU@eey}y&m(!(?n@t8gu(y=F`S<+@%3* znU`p#mxUgWq=XZBnMY7d7-(po*@4o6JK7qs&}+Ma;=vocIPto$=@AG0SY*rLC)%uV z+$|}Q@A+D?~h!j>sljYK5O`FYCbnARlhbUvL5b4@J~uZry+7TY!Nl2#3Boyb-I|>kr`l(ysN_V8S^JIaj1p&w zq}KTC-1yY>>y$V*i;4R)&DQnSWD65-j8n-8HoZSHeWOWFGJ^#>C__C33b-U7whlYq0%9 z_g~+ioxVQKIT-bHYjUR5m>f^^^lWRov45jQ{Wmj5ojN{oeP+_SK9%U{32SP+$tEWg zJ#9_RO-(mjQ;D9Qn4WEp-Vxkim$VD)-$Rp+9V<(so}!dl z9N`8^yj@qCo+3hMl{udX$`j`IV?a2dxt=Vb-u?k9#hx_dbA{aVz0iZ2;hB{6V^>UH zT)cZ=ciWx*{ycV2xs0<;op1OP zgHZ%fEU^{v$c}!7Ry%(%I&vf7!7Zifxs1=a$x&&yN-^R0`o4321a~7PlIW}f;22pD zTkn;~&k_6VzysI9&}wve>;cU30TG87F0t&_W@7O-&`-CmHohvkSD=z~iZ|^Da_5O7 z%k`ajb+9RdO5L;XOBQhn-&@nd(6{&dA=c+N_6j2kQ0_Y*yO|QWV~{hR7tQwcH9kR$ z{#sOm1!do7)*4q$?Jo8?^LC1&SixARxvX9m}VkNyUEH8l5XH z#G@?N7H>#A%1tgH*{7hbN&+?fY-V*zb(usUAn^wQLvFMpPttt@F9cC58P+04QdE@??zRZ$#Xx%uM{y^|$H&L1+DtE9R8z8W3IXrcE5YLe1cFNg8QD8% zJu>c*l%ps)x1M{kXXxj6hOw^ab7}pwyYD%un~M==aS4TT#zK!yJ#Sm>XeeCb&SfE? ztB&Y8f+A606rzHHa0$X<-0GqMhYoo0gbEZPp&4k?^l*|b?-ihcWI_neqY<%Jh*}OB zJc{69qz(0H9e25Q7;4P4RjWdv%z;&KRq>oAHaGJUWE8i6%@}a?+(4bZSAZgXigWiu z4!}28>=lBD7PJ=P0<<6oC!*O&SQh5qm2|p5fjT@92bPN`2QDp^=V{N&^yXNy(s(e& zDOsHftw6-m!XMu3CQVG7>rs>|9i{`au`d4VGhHa~(o0H=cp(uqW0tc_yBpF)QO%^k zX)DC5uSNo~kgAz)S2S^DY_G7&g9}Ez&ch8E=SFGa^4Zwlo?F7qn10BfCy0npNE?aG zqrH&%{+LT|Ywr~dKn#^40bD#psRnI*+$$LM`U7Km=N3Fqrd1v+X|+|ek}Aw)Eg~k7 z2{OY13?p*75>ZFd%kgA1qGZz&6BN%Li8~rb6|6muWCE2}5UZr;pE8DIe0D*jbBK|VtEGYKhjn$+im9S zDpF6PS&}{y``%Uw*;R~iNk8Qo;AxBlS203VgX!Y2NiMu5J_JLnoojqUgFtV;`f6Sg zo*SDbq0ps^X>AI_xfEBpxTuKnoJfqA7#TMqc7miEMVqiMuEuaBglSCHOs3@XCt$i_0w5M?mx{*^~ zw8nkKYVmH)J8ZRk3S+DI=} zdA@RB9a%hD7OA)-L2#Mu0A=TuQnX9K!Y`!T6${pU%=lPM=2VKK0|E%;vNEo8ndJs> zWt8JHt9cruhtR$&clGlpaCcf-B|43 zG%-8%>df54t8>@KM?PB~3t144&qQ_D2D}y`Y6tA?!k&wEc!~dLj|P=myy_g7-@yaB zYcV6^_oWEVm3f5Q7O+$tmy6pQT7H-m&vY{(vO0Lq&0R!H&)-pXG`W&r!fy)#5*mj} z-#zyFF787F&#fP@R^Oq#(6<^)fyE|2O`C8bVy`V(rLbpgw{5yj)*S2xOHwoBh|8dm zwfhzNc_9OR(V)CQTGE625{x-?U*Ll0JNNL6I9!DUw;#c!R#BOeg?!xLan>;!d^L|f z@EbXpkV0{39t6o(59s2l=`2Z4l>YvKz8bv$SL zlx&V%Y=Oi{%WGSS52b6lc8dk!pox1ucjA^p<%5Y{L`N^8k{47gF~M7K1io=dyQ-4v z6y%=Max?JUo*~N0D;gN3hy=@a+hPTlR#{{dUfNs;QZOE`nRGp$t??bEJa;0__4_Ua z;zbVMO9&Hpv#G$vjS=u(LE-y@llxUw4ghAY(sHaeY(Wr`QELL6709+<3wB!z-XwP! zOVXoqKRUJBbPP_y$MdOuQAgRrs88$_1UFsO29vqe#Ki8$0V-cAu0~WR^?j}vo7g2S zAxZ7|&fP!AJ848AZ7KHqQEF+>UgcJO30f>@Z)b5^^0855sc-u;BvM>Of8H1Ds=> z3b!uqPWb|&{7#k@EAP#WPv4jP?Tfc5muBa#&racrsyx+PUSm#K=(56nwSYUU3iJ00 zHoyI=pcbqX+Y1V6fehz@S|GQ3wV)R8LSmmanG0uepip$lYPE0q;HigRK`p>7GX=E( z@$G_IXfyZ=3cR2ed)I%IkeB!N#$n z1Y9i)HV+VL1*=}W&6+hA(NaUOIw{?B*2tbKs0FlY0R6-qWYNwgAREYmoks<=00))i zw!*hWJ$y>o@eC4>*|Wk9HHxl10hXd4V!9#oMM*zm`Ih+X(8D27#xC1mj*@!52iF=# znRU*)`1lvpW4rBL%W?2oj<~<@Lc}@@AS8UiO}T&!A9Yy63rwR=c!6feca}WA%bNuo z4x&06{UG$ZKm=s~oRE2`{AS;R9pF-mZb75z0yhb`;kif554Szo_929XUYjsFmg_P{ zB=XN&Bo>&Y^+Ruqg~%}p5Q=b7p*GReE)n%Rz9VjCC6*c@SuR2wPy_>$Fcwx!wGj$& zUXL(HU;N-+lER4RQd&eL-ueU`PO{r(VJ&3cWSgU^qZ=KOx#5m19{~&Xw1~h4oYX*Z z;-CAhZM#}5MKGB2@1~8blZPS;)9n)}NwI*r_B=Nr zrHY3zsXImCOz$6Cj?)t#U8^T20dsK#@W2z)?Ko5m#EkG480~li9@K%iofgyrt+V0} zp=blY0X2}B3i=FhQH=H32J-_u2wAhvwKu3y$X;DHv{m!Lig~x77M8TtRb4Y+VH#2k zYN5Wfv9Z3jZB}?v9nx?Hay`E*ogfwC2!3>|fW{H>w;2`S4Xe@N(i__r=8kdmMM3E&UmFD67LKd*VOWxl=y%l6xFMPM z=hA8T%n~JvH|OH77=YfHqu<9Ua`3hs|JUaUo_9z;_)Bv5A>NRq5B_>w`~mOA@h{dm zjDOLCNa9<(5+{F0#K|wiQ9|lXI7)=KT*R+_Gya7yz{Q`@@Jhe>MoBbw<(J<0XIuOm z@E`Q9oA?kfy7BKG35s~djXvo8Hu}w9Zo?0FvyFa;*V+Z!P^z{79#YSJ`-a z;ypG>JEc5$O)dH%GUIpGqR;5XHIYKrjCemy`U&r=NuTht8h+xNYWR!4rbfRb+lO9I z!yo+ZH2Tf8jd(AOe!@#>{Fitm4L_lY{6|2<;|pleEE$35^tXI z&miQ#9F8ve!WmBzZ=2yKylO^2;5{?^1uvP=4}8On{{-WRe)4zA_y;^tCjE>uqF2i3 zGk%{e{*GQIqa=EhjDE))sP}pHsoRKt2(*b;$9PIx{7Wq0Z;a7zcwLNs!MkGgi@zv_ zAJW+4uZW>8c1e2RO%wbFR!9nJfnLvoAGnkPKe&G(-qgX;d53}OyAR$DjtBL*ty*Gq&C_an>zj9s@0CE5Y z*)N}sTq^!R3;wjwZj0}H#`!vPi843M`{X3RX$+cY04;Zu_`?y9A|8I=(^KZ6PlC<8 z06lVu_%jY4bTe>Fq^>lL4U5R?qf17~w1~_T4S&;L*ijZ`EYnBoF3^Hnpgp)~rr=$l=rU(+ z`{W&-xc3CAh;Pq>60*fhCvwof6t_Z(5Ay3VvqEMcT(wBH8Q#+<sy(V0@z#k`4%AcMqqFQz32i zqk+)l;-9*{iA09(A(GrYw3JU{w=>ykV$3EsM<*}b$lo^|+3GbE9O*U?WE_fXR3-;I z$#R4Ig)X%QPpE^Ok)=%USX`8gHh?1kSI3U;_{X-|u$Y+txp5Z7Ihd+3PEpbi;ID|e0nklpo1Y>mK z_(7D)U7^g5L?}R6(Y`=(q^-1K1x8g@t29VmwK$rqgZ#4mo*1m#)mr;SFu z7#{Hn5sG%H_Eo$um`6(aPGF!Uv5intOkzVUHnPooSyY(b+=>3Jl|+=? zz7-21kSV36)-y6G6*93xYELhU2*^vgoF#Q~^`ls8-jYDn&3TJOs92&kEx<~PQy>83 z2w(s>yIOz};{const{o:n,i:r,u:o}=e;let a,l=n;const i=(e,t)=>{const n=l,i=e,s=t||(r?!r(n,i):n!==i);return(s||o)&&(l=i,a=n),[l,s,a]},s=e=>i(t(l,a),e),u=e=>[l,!!e,a];return[t?s:i,u]},o="undefined"!==typeof window&&"undefined"!==typeof HTMLElement&&!!window.document,a=o?window:{},l=Math.max,i=Math.min,s=Math.round,u=Math.abs,c=Math.sign,d=a.cancelAnimationFrame,f=a.requestAnimationFrame,p=a.setTimeout,v=a.clearTimeout,h=e=>"undefined"!==typeof a[e]?a[e]:void 0,m=h("MutationObserver"),g=h("IntersectionObserver"),b=h("ResizeObserver"),y=h("ScrollTimeline"),w=e=>void 0===e,R=e=>null===e,C=e=>"number"===typeof e,x=e=>"string"===typeof e,k=e=>"boolean"===typeof e,E=e=>"function"===typeof e,_=e=>Array.isArray(e),S=e=>"object"===typeof e&&!_(e)&&!R(e),M=e=>{const t=!!e&&e.length,n=C(t)&&t>-1&&t%1==0;return!!(_(e)||!E(e)&&n)&&(!(t>0&&S(e))||t-1 in e)},L=e=>!!e&&e.constructor===Object,A=e=>e instanceof HTMLElement,O=e=>e instanceof Element;function T(e,t){if(M(e)){for(let n=0;nt(e[n],n,e));return e}const I=(e,t)=>e.indexOf(t)>=0,N=(e,t)=>e.concat(t),W=(e,t,n)=>(!x(t)&&M(t)?Array.prototype.push.apply(e,t):e.push(t),e),D=e=>Array.from(e||[]),P=e=>_(e)?e:!x(e)&&M(e)?D(e):[e],F=e=>!!e&&!e.length,B=e=>D(new Set(e)),z=(e,t,n)=>{const r=e=>!e||e.apply(void 0,t||[]);T(e,r),n||(e.length=0)},$="paddingTop",V="paddingRight",j="paddingLeft",K="paddingBottom",H="marginLeft",X="marginRight",U="marginBottom",G="overflowX",q="overflowY",Y="width",Q="height",Z="visible",J="hidden",ee="scroll",te=e=>{const t=String(e||"");return t?t[0].toUpperCase()+t.slice(1):""},ne=(e,t,n,r)=>{if(e&&t){let r=!0;return T(n,n=>{const o=e[n],a=t[n];o!==a&&(r=!1)}),r}return!1},re=(e,t)=>ne(e,t,["w","h"]),oe=(e,t)=>ne(e,t,["x","y"]),ae=(e,t)=>ne(e,t,["t","r","b","l"]),le=(e,...t)=>e.bind(0,...t),ie=e=>{let t;const n=e?p:f,r=e?v:d;return[o=>{r(t),t=n(()=>o(),E(e)?e():e)},()=>r(t)]},se=e=>{const t=E(e)?e():e;if(C(t)){const e=t?p:f,n=t?v:d;return r=>{const o=e(()=>r(),t);return()=>{n(o)}}}return t&&t._},ue=(e,t)=>{const{p:n,v:r,S:o,m:a}=t||{};let l,i,s,u;const c=function(t){i&&i(),l&&l(),u=i=l=s=void 0,e.apply(this,t)},d=e=>a&&s?a(s,e):e,f=()=>{i&&s&&c(d(s)||s)},p=function(){const e=D(arguments),t=se(n);if(t){const n="function"===typeof o?o():o,a=se(r),p=d(e),v=p||e,h=c.bind(0,v);i&&i(),n&&!u?(h(),u=!0,i=t(()=>u=void 0)):(i=t(h),a&&!l&&(l=a(f))),s=v}else c(e)};return p.O=f,p},ce=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),de=e=>e?Object.keys(e):[],fe=(e,t,n,r,o,a,l)=>{const i=[t,n,r,o,a,l];return"object"===typeof e&&!R(e)||E(e)||(e={}),T(i,t=>{T(t,(n,r)=>{const o=t[r];if(e===o)return!0;const a=_(o);if(o&&L(o)){const t=e[r];let n=t;a&&!_(t)?n=[]:a||L(t)||(n={}),e[r]=fe(n,o)}else e[r]=a?o.slice():o})}),e},pe=(e,t)=>T(fe({},e),(e,t,n)=>{void 0===e?delete n[t]:e&&L(e)&&(n[t]=pe(e))}),ve=e=>!de(e).length,he=()=>{},me=(e,t,n)=>l(e,i(t,n)),ge=e=>B((_(e)?e:(e||"").split(" ")).filter(e=>e)),be=(e,t)=>e&&e.getAttribute(t),ye=(e,t)=>e&&e.hasAttribute(t),we=(e,t,n)=>{T(ge(t),t=>{e&&e.setAttribute(t,String(n||""))})},Re=(e,t)=>{T(ge(t),t=>e&&e.removeAttribute(t))},Ce=(e,t)=>{const n=ge(be(e,t)),r=le(we,e,t),o=(e,t)=>{const r=new Set(n);return T(ge(e),e=>{r[t](e)}),D(r).join(" ")};return{C:e=>r(o(e,"delete")),$:e=>r(o(e,"add")),H:e=>{const t=ge(e);return t.reduce((e,t)=>e&&n.includes(t),t.length>0)}}},xe=(e,t,n)=>(Ce(e,t).C(n),le(ke,e,t,n)),ke=(e,t,n)=>(Ce(e,t).$(n),le(xe,e,t,n)),Ee=(e,t,n,r)=>(r?ke:xe)(e,t,n),_e=(e,t,n)=>Ce(e,t).H(n),Se=e=>Ce(e,"class"),Me=(e,t)=>{Se(e).C(t)},Le=(e,t)=>(Se(e).$(t),le(Me,e,t)),Ae=(e,t)=>{const n=t?O(t)&&t:document;return n?D(n.querySelectorAll(e)):[]},Oe=(e,t)=>{const n=t?O(t)&&t:document;return n&&n.querySelector(e)},Te=(e,t)=>O(e)&&e.matches(t),Ie=e=>Te(e,"body"),Ne=e=>e?D(e.childNodes):[],We=e=>e&&e.parentElement,De=(e,t)=>O(e)&&e.closest(t),Pe=e=>document.activeElement,Fe=(e,t,n)=>{const r=De(e,t),o=e&&Oe(n,r),a=De(o,t)===r;return!(!r||!o)&&(r===e||o===e||a&&De(De(e,n),t)!==r)},Be=e=>{T(P(e),e=>{const t=We(e);e&&t&&t.removeChild(e)})},ze=(e,t)=>le(Be,e&&t&&T(P(t),t=>{t&&e.appendChild(t)}));let $e;const Ve=()=>$e,je=e=>{$e=e},Ke=e=>{const t=document.createElement("div");return we(t,"class",e),t},He=e=>{const t=Ke(),n=Ve(),r=e.trim();return t.innerHTML=n?n.createHTML(r):r,T(Ne(t),e=>Be(e))},Xe=(e,t)=>e.getPropertyValue(t)||e[t]||"",Ue=e=>{const t=e||0;return isFinite(t)?t:0},Ge=e=>Ue(parseFloat(e||"")),qe=e=>Math.round(1e4*e)/1e4,Ye=e=>`${qe(Ue(e))}px`;function Qe(e,t){e&&t&&T(t,(t,n)=>{try{const r=e.style,o=R(t)||k(t)?"":C(t)?Ye(t):t;0===n.indexOf("--")?r.setProperty(n,o):r[n]=o}catch(i){}})}function Ze(e,t,n){const r=x(t);let o=r?"":{};if(e){const l=a.getComputedStyle(e,n)||e.style;o=r?Xe(l,t):D(t).reduce((e,t)=>(e[t]=Xe(l,t),e),o)}return o}const Je=(e,t,n)=>{const r=t?`${t}-`:"",o=n?`-${n}`:"",a=`${r}top${o}`,l=`${r}right${o}`,i=`${r}bottom${o}`,s=`${r}left${o}`,u=Ze(e,[a,l,i,s]);return{t:Ge(u[a]),r:Ge(u[l]),b:Ge(u[i]),l:Ge(u[s])}},et=(e,t)=>"translate"+(S(e)?`(${e.x},${e.y})`:`${t?"X":"Y"}(${e})`),tt=e=>!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length),nt={w:0,h:0},rt=(e,t)=>t?{w:t[`${e}Width`],h:t[`${e}Height`]}:nt,ot=e=>rt("inner",e||a),at=le(rt,"offset"),lt=le(rt,"client"),it=le(rt,"scroll"),st=e=>{const t=parseFloat(Ze(e,Y))||0,n=parseFloat(Ze(e,Q))||0;return{w:t-s(t),h:n-s(n)}},ut=e=>e.getBoundingClientRect(),ct=e=>!!e&&tt(e),dt=e=>!(!e||!e[Q]&&!e[Y]),ft=(e,t)=>{const n=dt(e),r=dt(t);return!r&&n},pt=(e,t,n,r)=>{T(ge(t),t=>{e&&e.removeEventListener(t,n,r)})},vt=(e,t,n,r)=>{var o;const a=null==(o=r&&r.I)||o,l=r&&r.A||!1,i=r&&r.T||!1,s={passive:a,capture:l};return le(z,ge(t).map(t=>{const r=i?o=>{pt(e,t,r,l),n&&n(o)}:n;return e&&e.addEventListener(t,r,s),le(pt,e,t,r,l)}))},ht=e=>e.stopPropagation(),mt=e=>e.preventDefault(),gt=e=>ht(e)||mt(e),bt=(e,t)=>{const{x:n,y:r}=C(t)?{x:t,y:t}:t||{};C(n)&&(e.scrollLeft=n),C(r)&&(e.scrollTop=r)},yt=e=>({x:e.scrollLeft,y:e.scrollTop}),wt=()=>({D:{x:0,y:0},M:{x:0,y:0}}),Rt=(e,t)=>{const{D:n,M:r}=e,{w:o,h:a}=t,l=(e,t,n)=>{let r=c(e)*n,o=c(t)*n;if(r===o){const n=u(e),a=u(t);o=n>a?0:o,r=n{const n=(e,t)=>0===e&&e<=t;return{x:n(e.x,t.x),y:n(e.y,t.y)}},xt=({D:e,M:t},n)=>{const r=(e,t,n)=>me(0,1,(e-n)/(e-t)||0);return{x:r(e.x,t.x,n.x),y:r(e.y,t.y,n.y)}},kt=e=>{e&&e.focus&&e.focus({preventScroll:!0,focusVisible:!1})},Et=(e,t)=>{T(P(t),e)},_t=e=>{const t=new Map,n=(e,n)=>{if(e){const r=t.get(e);Et(e=>{r&&r[e?"delete":"clear"](e)},n)}else t.forEach(e=>{e.clear()}),t.clear()},r=(e,o)=>{if(x(e)){const r=t.get(e)||new Set;return t.set(e,r),Et(e=>{E(e)&&r.add(e)},o),le(n,e,o)}k(o)&&o&&n();const a=de(e),l=[];return T(a,t=>{const n=e[t];n&&W(l,r(t,n))}),le(z,l)},o=(e,n)=>{T(D(t.get(e)),e=>{n&&!F(n)?e.apply(0,n):e()})};return r(e||{}),[r,n,o]},St={},Mt={},Lt=e=>{T(e,e=>T(e,(t,n)=>{St[n]=e[n]}))},At=(e,t,n)=>de(e).map(r=>{const{static:o,instance:a}=e[r],[l,i,s]=n||[],u=n?a:o;if(u){const e=n?u(l,i,t):u(t);return(s||Mt)[r]=e}}),Ot=e=>Mt[e],Tt="__osOptionsValidationPlugin",It="data-overlayscrollbars",Nt="os-environment",Wt=`${Nt}-scrollbar-hidden`,Dt=`${It}-initialize`,Pt="noClipping",Ft=`${It}-body`,Bt=It,zt="host",$t=`${It}-viewport`,Vt=G,jt=q,Kt="arrange",Ht="measuring",Xt="scrolling",Ut="scrollbarHidden",Gt="noContent",qt=`${It}-padding`,Yt=`${It}-content`,Qt="os-size-observer",Zt=`${Qt}-appear`,Jt=`${Qt}-listener`,en="os-trinsic-observer",tn="os-theme-none",nn="os-scrollbar",rn=`${nn}-rtl`,on=`${nn}-horizontal`,an=`${nn}-vertical`,ln=`${nn}-track`,sn=`${nn}-handle`,un=`${nn}-visible`,cn=`${nn}-cornerless`,dn=`${nn}-interaction`,fn=`${nn}-unusable`,pn=`${nn}-auto-hide`,vn=`${pn}-hidden`,hn=`${nn}-wheel`,mn=`${ln}-interactive`,gn=`${sn}-interactive`,bn="__osSizeObserverPlugin",yn=(e,t)=>{const{k:n}=t,[r,o]=e("showNativeOverlaidScrollbars");return[r&&n.x&&n.y,o]},wn=e=>0===e.indexOf(Z),Rn=e=>e.replace(`${Z}-`,""),Cn=(e,t)=>{if("auto"===e)return t?ee:J;const n=e||J;return[J,ee,Z].includes(n)?n:J},xn=(e,t)=>{const{overflowX:n,overflowY:r}=Ze(e,[G,q]);return{x:Cn(n,t.x),y:Cn(r,t.y)}},kn="__osScrollbarsHidingPlugin",En="__osClickScrollPlugin",_n=e=>JSON.stringify(e,(e,t)=>{if(E(t))throw 0;return t}),Sn=(e,t)=>e?`${t}`.split(".").reduce((e,t)=>e&&ce(e,t)?e[t]:void 0,e):void 0,Mn=[0,33],Ln=[33,99],An=[222,666,!0],On={paddingAbsolute:!1,showNativeOverlaidScrollbars:!1,update:{elementEvents:[["img","load"]],debounce:{mutation:Mn,resize:null,event:Ln,env:An},attributes:null,ignoreMutation:null},overflow:{x:"scroll",y:"scroll"},scrollbars:{theme:"os-theme-dark",visibility:"auto",autoHide:"never",autoHideDelay:1300,autoHideSuspend:!1,dragScroll:!0,clickScroll:!1,pointers:["mouse","touch","pen"]}},Tn=(e,t)=>{const n={},r=N(de(t),de(e));return T(r,r=>{const o=e[r],a=t[r];if(S(o)&&S(a))fe(n[r]={},Tn(o,a)),ve(n[r])&&delete n[r];else if(ce(t,r)&&a!==o){let e=!0;if(_(o)||_(a))try{_n(o)===_n(a)&&(e=!1)}catch(c){}e&&(n[r]=a)}}),n},In=(e,t,n)=>r=>[Sn(e,r),n||void 0!==Sn(t,r)];let Nn;const Wn=()=>Nn,Dn=e=>{Nn=e};let Pn;const Fn=()=>{const e=(e,t,n)=>{ze(document.body,e),ze(document.body,e);const r=lt(e),o=at(e),a=st(t);return n&&Be(e),{x:o.h-r.h+a.h,y:o.w-r.w+a.w}},t=e=>{let t=!1;const n=Le(e,Wt);try{t="none"===Ze(e,"scrollbar-width")||"none"===Ze(e,"display","::-webkit-scrollbar")}catch(l){}return n(),t},n=`.${Nt}{scroll-behavior:auto!important;position:fixed;opacity:0;visibility:hidden;overflow:scroll;height:200px;width:200px;z-index:-1}.${Nt} div{width:200%;height:200%;margin:10px 0}.${Wt}{scrollbar-width:none!important}.${Wt}::-webkit-scrollbar,.${Wt}::-webkit-scrollbar-corner{appearance:none!important;display:none!important;width:0!important;height:0!important}`,o=He(`
`),l=o[0],i=l.firstChild,s=l.lastChild,u=Wn();u&&(s.nonce=u);const[c,,d]=_t(),[f,p]=r({o:e(l,i),i:oe},le(e,l,i,!0)),[v]=p(),h=t(l),m={x:0===v.x,y:0===v.y},g={elements:{host:null,padding:!h,viewport:e=>h&&Ie(e)&&e,content:!1},scrollbars:{slot:!0},cancel:{nativeScrollbarsOverlaid:!1,body:null}},b=fe({},On),w=le(fe,{},b),R=le(fe,{},g),C={P:v,k:m,U:h,J:!!y,G:le(c,"r"),K:R,Z:e=>fe(g,e)&&R(),tt:w,nt:e=>fe(b,e)&&w(),ot:fe({},g),st:fe({},b)};if(Re(l,"style"),Be(l),vt(a,"resize",()=>{d("r",[])}),E(a.matchMedia)&&!h&&(!m.x||!m.y)){const e=t=>{const n=a.matchMedia(`(resolution: ${a.devicePixelRatio}dppx)`);vt(n,"change",()=>{t(),e(t)},{T:!0})};e(()=>{const[e,t]=f();fe(C.P,e),d("r",[t])})}return C},Bn=()=>(Pn||(Pn=Fn()),Pn),zn=(e,t,n)=>{let r=!1;const o=!!n&&new WeakMap,a=()=>{r=!0},l=a=>{if(o&&n){const l=n.map(t=>{const[n,r]=t||[],o=r&&n?(a||Ae)(n,e):[];return[o,r]});T(l,n=>T(n[0],a=>{const l=n[1],i=o.get(a)||[],s=e.contains(a);if(s&&l){const e=vt(a,l,n=>{r?(e(),o.delete(a)):t(n)});o.set(a,W(i,e))}else z(i),o.delete(a)}))}};return l(),[a,l]},$n=(e,t,n,r)=>{let o=!1;const{et:a,ct:l,rt:i,it:s,lt:u,ut:c}=r||{},[d,f]=zn(e,()=>o&&n(!0),i),p=a||[],v=l||[],h=N(p,v),g=(o,a)=>{if(!F(a)){const l=u||he,i=c||he,d=[],p=[];let h=!1,m=!1;if(T(a,n=>{const{attributeName:o,target:a,type:u,oldValue:c,addedNodes:f,removedNodes:g}=n,b="attributes"===u,y="childList"===u,w=e===a,R=b&&o,C=R&&be(a,o||""),k=x(C)?C:null,E=R&&c!==k,_=I(v,o)&&E;if(t&&(y||!w)){const t=b&&E,u=t&&s&&Te(a,s),p=u?!l(a,o,c,k):!b||t,v=p&&!i(n,!!u,e,r);T(f,e=>W(d,e)),T(g,e=>W(d,e)),m=m||v}!t&&w&&E&&!l(a,o,c,k)&&(W(p,o),h=h||_)}),f(e=>B(d).reduce((t,n)=>(W(t,Ae(e,n)),Te(n,e)?W(t,n):t),[])),t)return!o&&m&&n(!1),[!1];if(!F(p)||h){const e=[B(p),h];return o||n.apply(0,e),e}}},b=new m(le(g,!1));return[()=>(b.observe(e,{attributes:!0,attributeOldValue:!0,attributeFilter:h,subtree:t,childList:t,characterData:t}),o=!0,()=>{o&&(d(),b.disconnect(),o=!1)}),()=>{if(o)return g(!0,b.takeRecords())}]};let Vn=null;const jn=(e,t,n)=>{const{ft:o}=n||{},a=Ot(bn),[l]=r({o:!1,u:!0});return()=>{const n=[],r=He(`
`),i=r[0],s=i.firstChild,u=e=>{const n=_(e)&&!F(e);let r=!1,o=!1;if(n){const t=e[0],[n,,a]=l(t.contentRect),i=dt(n);o=ft(n,a),r=!o&&!i}else o=!0===e;r||t({_t:!0,ft:o})};if(b){if(!k(Vn)){const t=new b(he);t.observe(e,{get box(){Vn=!0}}),Vn=Vn||!1,t.disconnect()}const t=ue(u,{p:0,v:0}),r=e=>t(e),o=new b(r);if(o.observe(Vn?e:s),W(n,[()=>{o.disconnect()},!Vn&&ze(e,i)]),Vn){const t=new b(r);t.observe(e,{box:"border-box"}),W(n,()=>t.disconnect())}}else{if(!a)return he;{const[t,r]=a(s,u,o);W(n,N([Le(i,Zt),vt(i,"animationstart",t),ze(e,i)],r))}}return le(z,n)}},Kn=(e,t)=>{let n;const o=e=>0===e.h||e.isIntersecting||e.intersectionRatio>0,a=Ke(en),[l]=r({o:!1}),i=(e,n)=>{if(e){const r=l(o(e)),[,a]=r;return a&&!n&&t(r)&&[r]}},s=(e,t)=>i(t.pop(),e);return[()=>{const t=[];if(g)n=new g(le(s,!1),{root:e}),n.observe(a),W(t,()=>{n.disconnect()});else{const e=()=>{const e=at(a);i(e)};W(t,jn(a,e)()),e()}return le(z,W(t,ze(e,a)))},()=>n&&s(!0,n.takeRecords())]},Hn=(e,t,n,o)=>{let a,l,i,s,u,c,d,f;const p=`[${Bt}]`,v=`[${$t}]`,h=["id","class","style","open","wrap","cols","rows"],{dt:m,vt:g,L:y,gt:w,ht:R,V:x,bt:k,wt:S,yt:M,St:A}=e,O=e=>"rtl"===Ze(e,"direction"),T=()=>{let e,t,n;const r=ue(o,{p:()=>e,v:()=>t,S:()=>n,m(e,t){const[n]=e,[r]=t;return[N(de(n),de(r)).reduce((e,t)=>(e[t]=n[t]||r[t],e),{})]}}),a=(o,a)=>{if(_(a)){const[r,o,l]=a;e=r,t=o,n=l}else C(a)?(e=a,t=!1,n=!1):(e=!1,t=!1,n=!1);r(o)};return a.O=r.O,a},I={Ot:!1,B:O(m)},W=Bn(),D=Ot(kn),[P]=r({i:re,o:{w:0,h:0}},()=>{const r=D&&D.R(e,t,I,W,n).Y,o=k&&x,a=!o&&_e(g,Bt,Pt),l=!x&&S(Kt),i=l&&yt(w),s=i&&A(),u=M(Ht,a),c=l&&r&&r(),d=it(y),f=st(y);return c&&c(),bt(w,i),s&&s(),a&&u(),{w:d.w+f.w,h:d.h+f.h}}),F=T(),B=e=>{const t=O(m);fe(e,{Ct:f!==t}),fe(I,{B:t}),f=t},z=(e,t)=>{const[n,r]=e,a={$t:r};return fe(I,{Ot:n}),t||o(a),a},$=({_t:e,ft:t})=>{const n=t?o:F,r={_t:e||t,ft:t};B(r),n(r,l)},V=(e,t)=>{const[,n]=P(),r={xt:n};return B(r),n&&!t&&F(r,e?i:a),r},j=(e,t,n)=>{const r={Ht:t};return B(r),t&&!n&&F(r,a),r},[K,H]=R?Kn(g,z):[],X=!x&&jn(g,$,{ft:!0}),[U,G]=$n(g,!1,j,{ct:h,et:h}),q=x&&b&&new b(e=>{const t=e[e.length-1].contentRect;$({_t:!0,ft:ft(t,d)}),d=t});return[()=>{q&&q.observe(g);const e=X&&X(),t=K&&K(),n=U(),r=W.G(e=>{const[,t]=P();F({Et:e,xt:t,_t:k},s)});return()=>{q&&q.disconnect(),e&&e(),t&&t(),c&&c(),n(),r()}},({zt:e,It:t,At:n})=>{const r={},[o]=e("update.ignoreMutation"),[d,f]=e("update.attributes"),[m,g]=e("update.elementEvents"),[b,w]=e("update.debounce"),k=g||f,S=t||n,M=e=>E(o)&&o(e);if(k){u&&u(),c&&c();const[e,t]=$n(R||y,!0,V,{et:N(h,d||[]),rt:m,it:p,ut:(e,t)=>{const{target:n,attributeName:r}=e,o=!(t||!r||x)&&Fe(n,p,v);return o||!!De(n,`.${nn}`)||!!M(e)}});c=e(),u=t}if(w&&(F.O(),_(b)||C(b)?(a=b,l=!1,i=Ln,s=An):L(b)?(a=b.mutation,l=b.resize,i=b.event,s=b.env):(a=!1,l=!1,i=!1,s=!1)),S){const e=G(),t=H&&H(),n=u&&u();e&&fe(r,j(e[0],e[1],S)),t&&fe(r,z(t[0],S)),n&&fe(r,V(n[0],S))}return B(r),r},I]},Xn=(e,t)=>E(t)?t.apply(0,e):t,Un=(e,t,n,r)=>{const o=w(r)?n:r,a=Xn(e,o);return a||t.apply(0,e)},Gn=(e,t,n,r)=>{const o=w(r)?n:r,a=Xn(e,o);return!!a&&(A(a)?a:t.apply(0,e))},qn=(e,t)=>{const{nativeScrollbarsOverlaid:n,body:r}=t||{},{k:o,U:a,K:l}=Bn(),{nativeScrollbarsOverlaid:i,body:s}=l().cancel,u=null!=n?n:i,c=w(r)?s:r,d=(o.x||o.y)&&u,f=e&&(R(c)?!a:c);return!!d||!!f},Yn=(e,t,n,r)=>{const o="--os-viewport-percent",a="--os-scroll-percent",l="--os-scroll-direction",{K:i}=Bn(),{scrollbars:s}=i(),{slot:u}=s,{dt:c,vt:d,L:f,Tt:p,gt:v,bt:h,V:m}=t,{scrollbars:g}=p?{}:e,{slot:b}=g||{},w=[],R=[],C=[],x=Gn([c,d,f],()=>m&&h?c:d,u,b),E=e=>{if(y){let t=null,r=[];const o=new y({source:v,axis:e}),a=()=>{t&&t.cancel(),t=null},l=l=>{const{Dt:i}=n,s=Ct(i)[e],u="x"===e,c=[et(0,u),et(`calc(-100% + 100cq${u?"w":"h"})`,u)],d=s?c:c.reverse();return r[0]===d[0]&&r[1]===d[1]||(r=d,a(),t=l.Mt.animate({clear:["left"],transform:d},{timeline:o})),a};return{kt:l}}},_={x:E("x"),y:E("y")},S=()=>{const{Rt:e,Vt:t}=n,r=(e,t)=>me(0,1,e/(e+t)||0);return{x:r(t.x,e.x),y:r(t.y,e.y)}},M=(e,t,n)=>{const r=n?Le:Me;T(e,e=>{r(e.Lt,t)})},L=(e,t)=>{T(e,e=>{const[n,r]=t(e);Qe(n,r)})},A=(e,t,n)=>{const r=k(n),o=!r||n,a=!r||!n;o&&M(R,e,t),a&&M(C,e,t)},O=()=>{const e=S(),t=e=>t=>[t.Lt,{[o]:qe(e)+""}];L(R,t(e.x)),L(C,t(e.y))},I=()=>{if(!y){const{Dt:e}=n,t=xt(e,yt(v)),r=e=>t=>[t.Lt,{[a]:qe(e)+""}];L(R,r(t.x)),L(C,r(t.y))}},N=()=>{const{Dt:e}=n,t=Ct(e),r=e=>t=>[t.Lt,{[l]:e?"0":"1"}];L(R,r(t.x)),L(C,r(t.y)),y&&(R.forEach(_.x.kt),C.forEach(_.y.kt))},D=()=>{if(m&&!h){const{Rt:e,Dt:t}=n,r=Ct(t),o=xt(t,yt(v)),a=t=>{const{Lt:n}=t,a=We(n)===f&&n,l=(e,t,n)=>{const r=t*e;return Ye(n?r:-r)};return[a,a&&{transform:et({x:l(o.x,e.x,r.x),y:l(o.y,e.y,r.y)})}]};L(R,a),L(C,a)}},P=e=>{const t=e?"x":"y",n=e?on:an,o=Ke(`${nn} ${n}`),a=Ke(ln),l=Ke(sn),i={Lt:o,Ut:a,Mt:l},s=_[t];return W(e?R:C,i),W(w,[ze(o,a),ze(a,l),le(Be,o),s&&s.kt(i),r(i,A,e)]),i},F=le(P,!0),B=le(P,!1),$=()=>(ze(x,R[0].Lt),ze(x,C[0].Lt),le(z,w));return F(),B(),[{Pt:O,Nt:I,qt:N,Bt:D,Ft:A,jt:{Xt:R,Yt:F,Wt:le(L,R)},Jt:{Xt:C,Yt:B,Wt:le(L,C)}},$]},Qn=(e,t,n,r)=>(o,a,l)=>{const{vt:i,L:c,V:d,gt:f,Gt:v,St:h}=t,{Lt:m,Ut:g,Mt:b}=o,[y,w]=ie(333),[R,C]=ie(444),x=e=>{E(f.scrollBy)&&f.scrollBy({behavior:"smooth",left:e.x,top:e.y})},k=()=>{const t="pointerup pointercancel lostpointercapture",r="client"+(l?"X":"Y"),o=l?Y:Q,a=l?"left":"top",i=l?"w":"h",c=l?"x":"y",d=(e,t)=>r=>{const{Rt:o}=n,a=at(g)[i]-at(b)[i],l=t*r/a,s=l*o[c];bt(f,{[c]:e+s})},p=[];return vt(g,"pointerdown",n=>{const l=De(n.target,`.${sn}`)===b,m=l?b:g,y=e.scrollbars,w=y[l?"dragScroll":"clickScroll"],{button:k,isPrimary:E,pointerType:_}=n,{pointers:S}=y,M=0===k&&E&&w&&(S||[]).includes(_);if(M){z(p),C();const e=!l&&(n.shiftKey||"instant"===w),y=le(ut,b),k=le(ut,g),E=(e,t)=>(e||y())[a]-(t||k())[a],_=s(ut(f)[o])/at(f)[i]||1,S=d(yt(f)[c],1/_),M=n[r],L=y(),A=k(),O=L[o],T=E(L,A)+O/2,I=M-A[a],N=l?0:I-T,D=e=>{z(B),m.releasePointerCapture(e.pointerId)},P=l||e,F=h(),B=[vt(v,t,D),vt(v,"selectstart",e=>mt(e),{I:!1}),vt(g,t,D),P&&vt(g,"pointermove",e=>S(N+(e[r]-M))),P&&(()=>{const e=yt(f);F();const t=yt(f),n={x:t.x-e.x,y:t.y-e.y};(u(n.x)>3||u(n.y)>3)&&(h(),bt(f,e),x(n),R(F))})];if(m.setPointerCapture(n.pointerId),e)S(N);else if(!l){const e=Ot(En);if(e){const t=e(S,N,O,e=>{e?F():W(B,F)});W(B,t),W(p,le(t,!0))}}}})};let _=!0;return le(z,[vt(b,"pointermove pointerleave",r),vt(m,"pointerenter",()=>{a(dn,!0)}),vt(m,"pointerleave pointercancel",()=>{a(dn,!1)}),!d&&vt(m,"mousedown",()=>{const e=Pe();(ye(e,$t)||ye(e,Bt)||e===document.body)&&p(le(kt,c),25)}),vt(m,"wheel",e=>{const{deltaX:t,deltaY:n,deltaMode:r}=e;_&&0===r&&We(m)===i&&x({x:t,y:n}),_=!1,a(hn,!0),y(()=>{_=!0,a(hn)}),mt(e)},{I:!1,A:!0}),vt(m,"pointerdown",()=>{const e=vt(v,"click",e=>{t(),gt(e)},{T:!0,A:!0,I:!1}),t=vt(v,"pointerup pointercancel",()=>{t(),setTimeout(e,150)},{A:!0,I:!0})},{A:!0,I:!0}),k(),w,C])},Zn=(e,t,n,r,o,a)=>{let l,i,s,u,c,d=he,f=0;const p=["mouse","pen"],v=e=>p.includes(e.pointerType),[h,m]=ie(),[g,b]=ie(100),[y,w]=ie(100),[R,C]=ie(()=>f),[x,k]=Yn(e,o,r,Qn(t,o,r,e=>v(e)&&N())),{vt:E,Kt:_,bt:S}=o,{Ft:M,Pt:L,Nt:A,qt:O,Bt:T}=x,I=(e,t)=>{if(C(),e)M(vn);else{const e=le(M,vn,!0);f>0&&!t?R(e):e()}},N=()=>{(s?l:u)||(I(!0),g(()=>{I(!1)}))},D=e=>{M(pn,e,!0),M(pn,e,!1)},P=e=>{v(e)&&(l=s,s&&I(!0))},F=[C,b,w,m,()=>d(),vt(E,"pointerover",P,{T:!0}),vt(E,"pointerenter",P),vt(E,"pointerleave",e=>{v(e)&&(l=!1,s&&I(!1))}),vt(E,"pointermove",e=>{v(e)&&i&&N()}),vt(_,"scroll",e=>{h(()=>{A(),N()}),a(e),T()})],B=Ot(kn);return[()=>le(z,W(F,k())),({zt:e,At:t,Qt:o,Zt:a})=>{const{tn:l,nn:p,sn:v,en:h}=a||{},{Ct:m,ft:g}=o||{},{B:b}=n,{k:w,U:R}=Bn(),{cn:C,j:x}=r,[k,E]=e("showNativeOverlaidScrollbars"),[N,W]=e("scrollbars.theme"),[P,F]=e("scrollbars.visibility"),[z,$]=e("scrollbars.autoHide"),[V,j]=e("scrollbars.autoHideSuspend"),[K]=e("scrollbars.autoHideDelay"),[H,X]=e("scrollbars.dragScroll"),[U,G]=e("scrollbars.clickScroll"),[q,Y]=e("overflow"),Q=g&&!t,J=x.x||x.y,te=l||p||h||m||t,ne=v||F||Y,re=k&&w.x&&w.y,oe=!R&&!B,ae=re||oe,ie=(e,t,n)=>{const r=e.includes(ee)&&(P===Z||"auto"===P&&t===ee);return M(un,r,n),r};if(f=K,Q&&(V&&J?(D(!1),d(),y(()=>{d=vt(_,"scroll",le(D,!0),{T:!0})})):D(!0)),(E||oe)&&M(tn,ae),W&&(M(c),M(N,!0),c=N),j&&!V&&D(!0),$&&(i="move"===z,s="leave"===z,u="never"===z,I(u,!0)),X&&M(gn,H),G&&M(mn,!!U),ne){const e=ie(q.x,C.x,!0),t=ie(q.y,C.y,!1),n=e&&t;M(cn,!n)}te&&(A(),L(),T(),h&&O(),M(fn,!x.x,!0),M(fn,!x.y,!1),M(rn,b&&!S))},{},x]},Jn=e=>{const t=Bn(),{K:n,U:r}=t,{elements:o}=n(),{padding:l,viewport:i,content:s}=o,u=A(e),c=u?{}:e,{elements:d}=c,{padding:f,viewport:p,content:v}=d||{},h=u?e:c.target,m=Ie(h),g=h.ownerDocument,b=g.documentElement,y=()=>g.defaultView||a,w=le(Un,[h]),R=le(Gn,[h]),C=le(Ke,""),x=le(w,C,i),k=le(R,C,s),E=e=>{const t=at(e),n=it(e),r=Ze(e,G),o=Ze(e,q);return n.w-t.w>0&&!wn(r)||n.h-t.h>0&&!wn(o)},_=x(p),S=_===h,M=S&&m,L=!S&&k(v),O=!S&&_===L,T=M?b:_,N=M?T:h,D=!S&&R(C,l,f),P=!O&&L,F=[P,T,D,N].map(e=>A(e)&&!We(e)&&e),B=e=>e&&I(F,e),$=!B(T)&&E(T)?T:h,V=M?b:T,j=M?g:T,K={dt:h,vt:N,L:T,rn:D,ht:P,gt:V,Kt:j,ln:m?b:$,Gt:g,bt:m,Tt:u,V:S,an:y,wt:e=>_e(T,$t,e),yt:(e,t)=>Ee(T,$t,e,t),St:()=>Ee(V,$t,Xt,!0)},{dt:H,vt:X,rn:U,L:Y,ht:Q}=K,Z=[()=>{Re(X,[Bt,Dt]),Re(H,Dt),m&&Re(b,[Dt,Bt])}];let J=Ne([Q,Y,U,X,H].find(e=>e&&!B(e)));const ee=M?H:Q||Y,te=le(z,Z),ne=()=>{const e=y(),t=Pe(),n=e=>{ze(We(e),Ne(e)),Be(e)},o=e=>vt(e,"focusin focusout focus blur",gt,{A:!0,I:!1}),a="tabindex",l=be(Y,a),i=o(t);return we(X,Bt,S?"":zt),we(U,qt,""),we(Y,$t,""),we(Q,Yt,""),S||(we(Y,a,l||"-1"),m&&we(b,Ft,"")),ze(ee,J),ze(X,U),ze(U||X,!S&&Y),ze(Y,Q),W(Z,[i,()=>{const e=Pe(),t=B(Y),r=t&&e===Y?H:e,i=o(r);Re(U,qt),Re(Q,Yt),Re(Y,$t),m&&Re(b,Ft),l?we(Y,a,l):Re(Y,a),B(Q)&&n(Q),t&&n(Y),B(U)&&n(U),kt(r),i()}]),r&&!S&&(ke(Y,$t,Ut),W(Z,le(Re,Y,$t))),kt(!S&&m&&t===H&&e.top===e?Y:t),i(),J=0,te};return[K,ne,te]},er=({ht:e})=>({Qt:t,un:n,At:r})=>{const{$t:o}=t||{},{Ot:a}=n,l=e&&(o||r);l&&Qe(e,{[Q]:a&&"100%"})},tr=({vt:e,rn:t,L:n,V:o},a)=>{const[l,i]=r({i:ae,o:Je()},le(Je,e,"padding",""));return({zt:e,Qt:r,un:s,At:u})=>{let[c,d]=i(u);const{U:f}=Bn(),{_t:p,xt:v,Ct:h}=r||{},{B:m}=s,[g,b]=e("paddingAbsolute"),y=u||v;(p||d||y)&&([c,d]=l(u));const w=!o&&(b||h||d);if(w){const e=!g||!t&&!f,r=c.r+c.l,o=c.t+c.b,l={[X]:e&&!m?-r:0,[U]:e?-o:0,[H]:e&&m?-r:0,top:e?-c.t:0,right:e?m?-c.r:"auto":0,left:e?m?"auto":-c.l:0,[Y]:e&&`calc(100% + ${r}px)`},i={[$]:e?c.t:0,[V]:e?c.r:0,[K]:e?c.b:0,[j]:e?c.l:0};Qe(t||n,l),Qe(n,i),fe(a,{rn:c,fn:!e,F:t?i:fe({},l,i)})}return{_n:w}}},nr=(e,t)=>{const n=Bn(),{vt:o,rn:i,L:s,V:u,Kt:c,gt:d,bt:p,yt:v,an:h}=e,{U:m}=n,g=p&&u,b=le(l,0),y={display:()=>!1,direction:e=>"ltr"!==e,flexDirection:e=>e.endsWith("-reverse"),writingMode:e=>"horizontal-tb"!==e},w=de(y),R={i:re,o:{w:0,h:0}},C={i:oe,o:{}},x=e=>{v(Ht,!g&&e)},k=e=>{const t=w.some(t=>{const n=e[t];return n&&y[t](n)});if(!t)return{D:{x:0,y:0},M:{x:1,y:1}};x(!0);const n=yt(d),r=v(Gt,!0),o=vt(c,ee,e=>{const t=yt(d);e.isTrusted&&t.x===n.x&&t.y===n.y&&ht(e)},{A:!0,T:!0});bt(d,{x:0,y:0}),r();const a=yt(d),l=it(d);bt(d,{x:l.w,y:l.h});const i=yt(d);bt(d,{x:i.x-a.x<1&&-l.w,y:i.y-a.y<1&&-l.h});const s=yt(d);return bt(d,n),f(()=>o()),{D:a,M:s}},E=(e,t)=>{const n=a.devicePixelRatio%1!==0?1:0,r={w:b(e.w-t.w),h:b(e.h-t.h)};return{w:r.w>n?r.w:0,h:r.h>n?r.h:0}},_=(e,t)=>{const n=(e,t,n,r)=>{const o=e===Z?J:Rn(e),a=wn(e),l=wn(n);if(!t&&!r)return J;if(a&&l)return Z;if(a){const e=t?Z:J;return t&&r?o:e}const i=l&&r?Z:J;return t?o:i};return{x:n(t.x,e.x,t.y,e.y),y:n(t.y,e.y,t.x,e.x)}},S=e=>{const t=e=>[Z,J,ee].map(t=>V(Cn(t),e)),n=t(!0).concat(t()).join(" ");v(n),v(de(e).map(t=>V(e[t],"x"===t)).join(" "),!0)},[M,L]=r(R,le(st,s)),[A,O]=r(R,le(it,s)),[T,I]=r(R),[N]=r(C),[W,D]=r(R),[P]=r(C),[F]=r({i:(e,t)=>ne(e,t,w),o:{}},()=>ct(s)?Ze(s,w):{}),[B,z]=r({i:(e,t)=>oe(e.D,t.D)&&oe(e.M,t.M),o:wt()}),$=Ot(kn),V=(e,t)=>{const n=t?Vt:jt;return`${n}${te(e)}`};return({zt:r,Qt:a,un:l,At:u},{_n:c})=>{const{_t:d,Ht:f,xt:p,Ct:y,ft:w,Et:R}=a||{},C=$&&$.R(e,t,l,n,r),{X:V,Y:j,W:K}=C||{},[H,X]=yn(r,n),[U,G]=r("overflow"),q=wn(U.x),Y=wn(U.y),Q=d||c||p||y||R||X;let Z=L(u),J=O(u),ee=I(u),te=D(u);if(X&&m&&v(Ut,!H),Q){_e(o,Bt,Pt)&&x(!0);const e=j&&j(),[t]=Z=M(u),[n]=J=A(u),r=lt(s),a=g&&ot(h()),l={w:b(n.w+t.w),h:b(n.h+t.h)},i={w:b((a?a.w:r.w+b(r.w-n.w))+t.w),h:b((a?a.h:r.h+b(r.h-n.h))+t.h)};e&&e(),te=W(i),ee=T(E(l,i),u)}const[ne,re]=te,[oe,ae]=ee,[le,ie]=J,[se,ue]=Z,[ce,de]=N({x:oe.w>0,y:oe.h>0}),pe=q&&Y&&(ce.x||ce.y)||q&&ce.x&&!ce.y||Y&&ce.y&&!ce.x,ve=c||y||R||ue||ie||re||ae||G||X||Q||f&&g,[he,me]=F(u),ge=y||w||me||de||u,[be,ye]=ge?B(k(he),u):z();let we=_(ce,U);x(!1),ve&&(S(we),we=xn(s,ce),K&&V&&(V(we,le,se),Qe(s,K(we))));const[Re,Ce]=P(we);return Ee(o,Bt,Pt,pe),Ee(i,qt,Pt,pe),fe(t,{cn:Re,Vt:{x:ne.w,y:ne.h},Rt:{x:oe.w,y:oe.h},j:ce,Dt:Rt(be,oe)}),{sn:Ce,tn:re,nn:ae,en:ye||ae}}},rr=e=>{const[t,n,r]=Jn(e),o={rn:{t:0,r:0,b:0,l:0},fn:!1,F:{[X]:0,[U]:0,[H]:0,[$]:0,[V]:0,[K]:0,[j]:0},Vt:{x:0,y:0},Rt:{x:0,y:0},cn:{x:J,y:J},j:{x:!1,y:!1},Dt:wt()},{dt:a,gt:l,V:i,St:s}=t,{U:u,k:c}=Bn(),d=!u&&(c.x||c.y),f=[er(t),tr(t,o),nr(t,o)];return[n,e=>{const t={},n=d,r=n&&yt(l),o=r&&s();return T(f,n=>{fe(t,n(e,t)||{})}),bt(l,r),o&&o(),i||bt(a,0),t},o,t,r]},or=(e,t,n,r,o)=>{let a=!1;const l=In(t,{}),[i,s,u,c,d]=rr(e),[f,p,v]=Hn(c,u,l,e=>{y({},e)}),[h,m,,g]=Zn(e,t,v,u,c,o),b=e=>de(e).some(t=>!!e[t]),y=(e,o)=>{if(n())return!1;const{dn:l,At:i,It:u,pn:c}=e,d=l||{},f=!!i||!a,h={zt:In(t,d,f),dn:d,At:f};if(c)return m(h),!1;const g=o||p(fe({},h,{It:u})),y=s(fe({},h,{un:v,Qt:g}));m(fe({},h,{Qt:g,Zt:y}));const w=b(g),R=b(y),C=w||R||!ve(d)||f;return a=!0,C&&r(e,{Qt:g,Zt:y}),C};return[()=>{const{ln:e,gt:t,St:n}=c,r=yt(e),o=[f(),i(),h()],a=n();return bt(t,r),a(),le(z,o)},y,()=>({vn:v,gn:u}),{hn:c,bn:g},d]},ar=new WeakMap,lr=(e,t)=>{ar.set(e,t)},ir=e=>{ar.delete(e)},sr=e=>ar.get(e),ur=(e,t,n)=>{const{tt:r}=Bn(),o=A(e),a=o?e:e.target,l=sr(a);if(t&&!l){let l=!1;const i=[],s={},u=e=>{const t=pe(e),n=Ot(Tt);return n?n(t,!0):t},c=fe({},r(),u(t)),[d,f,p]=_t(),[v,h,m]=_t(n),g=(e,t)=>{m(e,t),p(e,t)},[b,y,w,R,C]=or(e,c,()=>l,({dn:e,At:t},{Qt:n,Zt:r})=>{const{_t:o,Ct:a,$t:l,xt:i,Ht:s,ft:u}=n,{tn:c,nn:d,sn:f,en:p}=r;g("updated",[k,{updateHints:{sizeChanged:!!o,directionChanged:!!a,heightIntrinsicChanged:!!l,overflowEdgeChanged:!!c,overflowAmountChanged:!!d,overflowStyleChanged:!!f,scrollCoordinatesChanged:!!p,contentMutation:!!i,hostMutation:!!s,appear:!!u},changedOptions:e||{},force:!!t}])},e=>g("scroll",[k,e])),x=e=>{ir(a),z(i),l=!0,g("destroyed",[k,e]),f(),h()},k={options(e,t){if(e){const n=t?r():{},o=Tn(c,fe(n,u(e)));ve(o)||(fe(c,o),y({dn:o}))}return fe({},c)},on:v,off:(e,t)=>{e&&t&&h(e,t)},state(){const{vn:e,gn:t}=w(),{B:n}=e,{Vt:r,Rt:o,cn:a,j:i,rn:s,fn:u,Dt:c}=t;return fe({},{overflowEdge:r,overflowAmount:o,overflowStyle:a,hasOverflow:i,scrollCoordinates:{start:c.D,end:c.M},padding:s,paddingAbsolute:u,directionRTL:n,destroyed:l})},elements(){const{dt:e,vt:t,rn:n,L:r,ht:o,gt:a,Kt:l}=R.hn,{jt:i,Jt:s}=R.bn,u=e=>{const{Mt:t,Ut:n,Lt:r}=e;return{scrollbar:r,track:n,handle:t}},c=e=>{const{Xt:t,Yt:n}=e,r=u(t[0]);return fe({},r,{clone:()=>{const e=u(n());return y({pn:!0}),e}})};return fe({},{target:e,host:t,padding:n||r,viewport:r,content:o||r,scrollOffsetElement:a,scrollEventElement:l,scrollbarHorizontal:c(i),scrollbarVertical:c(s)})},update:e=>y({At:e,It:!0}),destroy:le(x,!1),plugin:e=>s[de(e)[0]]};return W(i,[C]),lr(a,k),At(St,ur,[k,d,s]),qn(R.hn.bt,!o&&e.cancel)?(x(!0),k):(W(i,b()),g("initialized",[k]),k.update(),k)}return l};ur.plugin=e=>{const t=_(e),n=t?e:[e],r=n.map(e=>At(e,ur)[0]);return Lt(n),t?r:r[0]},ur.valid=e=>{const t=e&&e.elements,n=E(t)&&t();return L(n)&&!!sr(n.target)},ur.env=()=>{const{P:e,k:t,U:n,J:r,ot:o,st:a,K:l,Z:i,tt:s,nt:u}=Bn();return fe({},{scrollbarsSize:e,scrollbarsOverlaid:t,scrollbarsHiding:n,scrollTimeline:r,staticDefaultInitialization:o,staticDefaultOptions:a,getDefaultInitialization:l,setDefaultInitialization:i,getDefaultOptions:s,setDefaultOptions:u})},ur.nonce=Dn,ur.trustedTypePolicy=je},6246:function(e,t){"use strict";var n="fas",r="link",o=576,a=512,l=[128279,"chain"],i="f0c1",s="M419.5 96c-16.6 0-32.7 4.5-46.8 12.7-15.8-16-34.2-29.4-54.5-39.5 28.2-24 64.1-37.2 101.3-37.2 86.4 0 156.5 70 156.5 156.5 0 41.5-16.5 81.3-45.8 110.6l-71.1 71.1c-29.3 29.3-69.1 45.8-110.6 45.8-86.4 0-156.5-70-156.5-156.5 0-1.5 0-3 .1-4.5 .5-17.7 15.2-31.6 32.9-31.1s31.6 15.2 31.1 32.9c0 .9 0 1.8 0 2.6 0 51.1 41.4 92.5 92.5 92.5 24.5 0 48-9.7 65.4-27.1l71.1-71.1c17.3-17.3 27.1-40.9 27.1-65.4 0-51.1-41.4-92.5-92.5-92.5zM275.2 173.3c-1.9-.8-3.8-1.9-5.5-3.1-12.6-6.5-27-10.2-42.1-10.2-24.5 0-48 9.7-65.4 27.1L91.1 258.2c-17.3 17.3-27.1 40.9-27.1 65.4 0 51.1 41.4 92.5 92.5 92.5 16.5 0 32.6-4.4 46.7-12.6 15.8 16 34.2 29.4 54.6 39.5-28.2 23.9-64 37.2-101.3 37.2-86.4 0-156.5-70-156.5-156.5 0-41.5 16.5-81.3 45.8-110.6l71.1-71.1c29.3-29.3 69.1-45.8 110.6-45.8 86.6 0 156.5 70.6 156.5 156.9 0 1.3 0 2.6 0 3.9-.4 17.7-15.1 31.6-32.8 31.2s-31.6-15.1-31.2-32.8c0-.8 0-1.5 0-2.3 0-33.7-18-63.3-44.8-79.6z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.CQ=t.mw},6301:function(e,t,n){"use strict";n.d(t,{A:function(){return f}});var r=n(60168),o=n(39578),a=function(){return o.A.Date.now()},l=a,i=n(10754),s="Expected a function",u=Math.max,c=Math.min;function d(e,t,n){var o,a,d,f,p,v,h=0,m=!1,g=!1,b=!0;if("function"!=typeof e)throw new TypeError(s);function y(t){var n=o,r=a;return o=a=void 0,h=t,f=e.apply(r,n),f}function w(e){return h=e,p=setTimeout(x,t),m?y(e):f}function R(e){var n=e-v,r=e-h,o=t-n;return g?c(o,d-r):o}function C(e){var n=e-v,r=e-h;return void 0===v||n>=t||n<0||g&&r>=d}function x(){var e=l();if(C(e))return k(e);p=setTimeout(x,R(e))}function k(e){return p=void 0,b&&o?y(e):(o=a=void 0,f)}function E(){void 0!==p&&clearTimeout(p),h=0,o=v=a=p=void 0}function _(){return void 0===p?f:k(l())}function S(){var e=l(),n=C(e);if(o=arguments,a=this,v=e,n){if(void 0===p)return w(v);if(g)return clearTimeout(p),p=setTimeout(x,t),y(v)}return void 0===p&&(p=setTimeout(x,t)),f}return t=(0,i.A)(t)||0,(0,r.A)(n)&&(m=!!n.leading,g="maxWait"in n,d=g?u((0,i.A)(n.maxWait)||0,t):d,b="trailing"in n?!!n.trailing:b),S.cancel=E,S.flush=_,S}var f=d},6340:function(e,t,n){"use strict";n.d(t,{Hl:function(){return s},Lw:function(){return f},pW:function(){return d},rQ:function(){return c},tp:function(){return i},uG:function(){return l},xe:function(){return u}});n(18111),n(22489);const r='a[href],button:not([disabled]),button:not([hidden]),:not([tabindex="-1"]),input:not([disabled]),input:not([type="hidden"]),select:not([disabled]),textarea:not([disabled])',o=e=>"undefined"!==typeof Element&&e instanceof Element,a=e=>{const t=getComputedStyle(e);return"fixed"!==t.position&&null!==e.offsetParent},l=e=>Array.from(e.querySelectorAll(r)).filter(e=>i(e)&&a(e)),i=e=>{if(e.tabIndex>0||0===e.tabIndex&&null!==e.getAttribute("tabIndex"))return!0;if(e.tabIndex<0||e.hasAttribute("disabled")||"true"===e.getAttribute("aria-disabled"))return!1;switch(e.nodeName){case"A":return!!e.href&&"ignore"!==e.rel;case"INPUT":return!("hidden"===e.type||"file"===e.type);case"BUTTON":case"SELECT":case"TEXTAREA":return!0;default:return!1}},s=function(e,t,...n){let r;r=t.includes("mouse")||t.includes("click")?"MouseEvents":t.includes("key")?"KeyboardEvent":"HTMLEvents";const o=document.createEvent(r);return o.initEvent(t,...n),e.dispatchEvent(o),e},u=e=>!e.getAttribute("aria-owns"),c=(e,t,n)=>{const{parentNode:r}=e;if(!r)return null;const o=r.querySelectorAll(n),a=Array.prototype.indexOf.call(o,e);return o[a+t]||null},d=(e,t)=>{if(!e||!e.focus)return;let n=!1;!o(e)||i(e)||e.getAttribute("tabindex")||(e.setAttribute("tabindex","-1"),n=!0),e.focus(t),o(e)&&n&&e.removeAttribute("tabindex")},f=e=>{e&&(d(e),!u(e)&&e.click())}},6865:function(e,t,n){"use strict";function r(e,t){return null!=e&&t in Object(e)}n.d(t,{A:function(){return v}});var o=r,a=n(75014),l=n(26162),i=n(23506),s=n(22676),u=n(5351),c=n(13708);function d(e,t,n){t=(0,a.A)(t,e);var r=-1,o=t.length,d=!1;while(++r{const o=(0,a.CW)(e.subTree).filter(e=>{var n;return(0,r.vv)(e)&&(null==(n=e.type)?void 0:n.name)===t&&!!e.component}),l=o.map(e=>e.component.uid);return l.map(e=>n[e]).filter(e=>!!e)},i=(e,t)=>{const n=(0,o.IJ)({}),a=(0,o.IJ)([]),i=new WeakMap,s=e=>{n.value[e.uid]=e,(0,o.mu)(n),(0,r.sV)(()=>{const t=e.getVnode().el,r=t.parentNode;if(!i.has(r)){i.set(r,[]);const e=r.insertBefore.bind(r);r.insertBefore=(t,a)=>{const l=i.get(r).some(e=>t===e||a===e);return l&&(0,o.mu)(n),e(t,a)}}i.get(r).push(t)})},u=e=>{delete n.value[e.uid],(0,o.mu)(n);const t=e.getVnode().el,r=t.parentNode,a=i.get(r),l=a.indexOf(t);a.splice(l,1)},c=()=>{a.value=l(e,t,n.value)},d=e=>e.render(),f=(0,r.pM)({setup(e,{slots:t}){return()=>(c(),t.default?(0,r.h)(d,{render:t.default}):null)}});return{children:a,addChild:s,removeChild:u,ChildrenSorter:f}}},7040:function(e,t,n){"use strict";var r=n(4495);e.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},7162:function(e,t,n){"use strict";n.d(t,{A:function(){return k}});var r=n(47083),o=n(39578),a=o.A["__core-js_shared__"],l=a,i=function(){var e=/[^.]+$/.exec(l&&l.keys&&l.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function s(e){return!!i&&i in e}var u=s,c=n(60168),d=n(3534),f=/[\\^$.*+?()[\]{}|]/g,p=/^\[object .+?Constructor\]$/,v=Function.prototype,h=Object.prototype,m=v.toString,g=h.hasOwnProperty,b=RegExp("^"+m.call(g).replace(f,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function y(e){if(!(0,c.A)(e)||u(e))return!1;var t=(0,r.A)(e)?b:p;return t.test((0,d.A)(e))}var w=y;function R(e,t){return null==e?void 0:e[t]}var C=R;function x(e,t){var n=C(e,t);return w(n)?n:void 0}var k=x},7262:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n="fas",r="circle-info",o=512,a=512,l=["info-circle"],i="f05a",s="M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM224 160a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-8 64l48 0c13.3 0 24 10.7 24 24l0 88 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l24 0 0-64-24 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z";t.definition={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.faCircleInfo=t.definition,t.prefix=n,t.iconName=r,t.width=o,t.height=a,t.ligatures=l,t.unicode=i,t.svgPathData=s,t.aliases=l},7515:function(e){!function(t,n){e.exports=n()}(0,function(){"use strict";var e="week",t="year";return function(n,r,o){var a=r.prototype;a.week=function(n){if(void 0===n&&(n=null),null!==n)return this.add(7*(n-this.week()),"day");var r=this.$locale().yearStart||1;if(11===this.month()&&this.date()>25){var a=o(this).startOf(t).add(1,t).date(r),l=o(this).endOf(e);if(a.isBefore(l))return 1}var i=o(this).startOf(t).date(r).startOf(e).subtract(1,"millisecond"),s=this.diff(i,e,!0);return s<0?o(this).startOf("week").week():Math.ceil(s)},a.weeks=function(e){return void 0===e&&(e=null),this.week(e)}}})},7588:function(e,t,n){"use strict";var r=n(46518),o=n(69565),a=n(72652),l=n(79306),i=n(28551),s=n(1767),u=n(9539),c=n(84549),d=c("forEach",TypeError);r({target:"Iterator",proto:!0,real:!0,forced:d},{forEach:function(e){i(this);try{l(e)}catch(r){u(this,"throw",r)}if(d)return o(d,this,e);var t=s(this),n=0;a(t,function(t){e(t,n++)},{IS_RECORD:!0})}})},9267:function(e,t,n){"use strict";n.d(t,{kZ:function(){return O}});var r=n(56768),o=n(90144),a=n(45130),l=n(24232),i=n(16714),s=n(76834),u=n(98769),c=n(813),d=n(48724),f=n(35513),p=n(99077),v=n(93291),h=n(27833),m=n(20464),g=n(54425),b=n(49700);const y=(0,r.pM)({name:"ElDialogContent"}),w=(0,r.pM)({...y,props:f.Q,emits:f.k,setup(e,{expose:t}){const n=e,{t:a}=(0,b.Ym)(),{Close:i}=m.H2,{dialogRef:s,headerRef:u,bodyId:f,ns:p,style:y}=(0,r.WQ)(d.Z),{focusTrapRef:w}=(0,r.WQ)(v.r3),R=(0,g.t)(w,s),C=(0,r.EW)(()=>!!n.draggable),x=(0,r.EW)(()=>!!n.overflow),{resetPosition:k,updatePosition:E,isDragging:_}=(0,h.P)(s,u,C,x),S=(0,r.EW)(()=>[p.b(),p.is("fullscreen",n.fullscreen),p.is("draggable",C.value),p.is("dragging",_.value),p.is("align-center",!!n.alignCenter),{[p.m("center")]:n.center}]);return t({resetPosition:k,updatePosition:E}),(e,t)=>((0,r.uX)(),(0,r.CE)("div",{ref:(0,o.R1)(R),class:(0,l.C4)((0,o.R1)(S)),style:(0,l.Tr)((0,o.R1)(y)),tabindex:"-1"},[(0,r.Lk)("header",{ref_key:"headerRef",ref:u,class:(0,l.C4)([(0,o.R1)(p).e("header"),e.headerClass,{"show-close":e.showClose}])},[(0,r.RG)(e.$slots,"header",{},()=>[(0,r.Lk)("span",{role:"heading","aria-level":e.ariaLevel,class:(0,l.C4)((0,o.R1)(p).e("title"))},(0,l.v_)(e.title),11,["aria-level"])]),e.showClose?((0,r.uX)(),(0,r.CE)("button",{key:0,"aria-label":(0,o.R1)(a)("el.dialog.close"),class:(0,l.C4)((0,o.R1)(p).e("headerbtn")),type:"button",onClick:t=>e.$emit("close")},[(0,r.bF)((0,o.R1)(c.tk),{class:(0,l.C4)((0,o.R1)(p).e("close"))},{default:(0,r.k6)(()=>[((0,r.uX)(),(0,r.Wv)((0,r.$y)(e.closeIcon||(0,o.R1)(i))))]),_:1},8,["class"])],10,["aria-label","onClick"])):(0,r.Q3)("v-if",!0)],2),(0,r.Lk)("div",{id:(0,o.R1)(f),class:(0,l.C4)([(0,o.R1)(p).e("body"),e.bodyClass])},[(0,r.RG)(e.$slots,"default")],10,["id"]),e.$slots.footer?((0,r.uX)(),(0,r.CE)("footer",{key:0,class:(0,l.C4)([(0,o.R1)(p).e("footer"),e.footerClass])},[(0,r.RG)(e.$slots,"footer")],2)):(0,r.Q3)("v-if",!0)],6))}});var R=(0,p.A)(w,[["__file","dialog-content.vue"]]),C=n(87201),x=n(53711),k=n(30261),E=n(93513),_=n(81968);const S=(0,r.pM)({name:"ElDialog",inheritAttrs:!1}),M=(0,r.pM)({...S,props:C.z5,emits:C.Pg,setup(e,{expose:t}){const n=e,c=(0,r.Ht)();(0,k.b)({scope:"el-dialog",from:"the title slot",replacement:"the header slot",version:"3.0.0",ref:"https://element-plus.org/en-US/component/dialog.html#slots"},(0,r.EW)(()=>!!c.title));const f=(0,E.DU)("dialog"),p=(0,o.KR)(),v=(0,o.KR)(),h=(0,o.KR)(),{visible:m,titleId:g,bodyId:b,style:y,overlayDialogStyle:w,rendered:C,transitionConfig:S,zIndex:M,_draggable:L,_alignCenter:A,_overflow:O,handleClose:T,onModalClick:I,onOpenAutoFocus:N,onCloseAutoFocus:W,onCloseRequested:D,onFocusoutPrevented:P}=(0,x.s)(n,p);(0,r.Gt)(d.Z,{dialogRef:p,headerRef:v,bodyId:b,ns:f,rendered:C,style:y});const F=(0,_.r)(I),B=(0,r.EW)(()=>n.modalPenetrable&&!n.modal&&!n.fullscreen),z=()=>{var e;null==(e=h.value)||e.resetPosition()};return t({visible:m,dialogContentRef:h,resetPosition:z,handleClose:T}),(e,t)=>((0,r.uX)(),(0,r.Wv)((0,o.R1)(u.Nr),{to:e.appendTo,disabled:"body"===e.appendTo&&!e.appendToBody},{default:(0,r.k6)(()=>[(0,r.bF)(a.eB,(0,r.v6)((0,o.R1)(S),{persisted:""}),{default:(0,r.k6)(()=>{var t;return[(0,r.bo)((0,r.bF)((0,o.R1)(i._q),{"custom-mask-event":"",mask:e.modal,"overlay-class":[null!=(t=e.modalClass)?t:"",`${(0,o.R1)(f).namespace.value}-modal-dialog`,(0,o.R1)(f).is("penetrable",(0,o.R1)(B))],"z-index":(0,o.R1)(M)},{default:(0,r.k6)(()=>[(0,r.Lk)("div",{role:"dialog","aria-modal":"true","aria-label":e.title||void 0,"aria-labelledby":e.title?void 0:(0,o.R1)(g),"aria-describedby":(0,o.R1)(b),class:(0,l.C4)(`${(0,o.R1)(f).namespace.value}-overlay-dialog`),style:(0,l.Tr)((0,o.R1)(w)),onClick:(0,o.R1)(F).onClick,onMousedown:(0,o.R1)(F).onMousedown,onMouseup:(0,o.R1)(F).onMouseup},[(0,r.bF)((0,o.R1)(s.A),{loop:"",trapped:(0,o.R1)(m),"focus-start-el":"container",onFocusAfterTrapped:(0,o.R1)(N),onFocusAfterReleased:(0,o.R1)(W),onFocusoutPrevented:(0,o.R1)(P),onReleaseRequested:(0,o.R1)(D)},{default:(0,r.k6)(()=>[(0,o.R1)(C)?((0,r.uX)(),(0,r.Wv)(R,(0,r.v6)({key:0,ref_key:"dialogContentRef",ref:h},e.$attrs,{center:e.center,"align-center":(0,o.R1)(A),"close-icon":e.closeIcon,draggable:(0,o.R1)(L),overflow:(0,o.R1)(O),fullscreen:e.fullscreen,"header-class":e.headerClass,"body-class":e.bodyClass,"footer-class":e.footerClass,"show-close":e.showClose,title:e.title,"aria-level":e.headerAriaLevel,onClose:(0,o.R1)(T)}),(0,r.eX)({header:(0,r.k6)(()=>[e.$slots.title?(0,r.RG)(e.$slots,"title",{key:1}):(0,r.RG)(e.$slots,"header",{key:0,close:(0,o.R1)(T),titleId:(0,o.R1)(g),titleClass:(0,o.R1)(f).e("title")})]),default:(0,r.k6)(()=>[(0,r.RG)(e.$slots,"default")]),_:2},[e.$slots.footer?{name:"footer",fn:(0,r.k6)(()=>[(0,r.RG)(e.$slots,"footer")])}:void 0]),1040,["center","align-center","close-icon","draggable","overflow","fullscreen","header-class","body-class","footer-class","show-close","title","aria-level","onClose"])):(0,r.Q3)("v-if",!0)]),_:3},8,["trapped","onFocusAfterTrapped","onFocusAfterReleased","onFocusoutPrevented","onReleaseRequested"])],46,["aria-label","aria-labelledby","aria-describedby","onClick","onMousedown","onMouseup"])]),_:3},8,["mask","overlay-class","z-index"]),[[a.aG,(0,o.R1)(m)]])]}),_:3},16)]),_:3},8,["to","disabled"]))}});var L=(0,p.A)(M,[["__file","dialog.vue"]]),A=n(25376);const O=(0,A.GU)(L)},9486:function(e,t,n){"use strict";var r=n(46518),o=n(44576),a=n(79504),l=n(83972),i=n(34154),s=n(55169),u=n(92804),c=n(944),d=u.i2c,f=u.i2cUrl,p=a("".charAt),v=o.Uint8Array,h=!v||!v.prototype.toBase64||!function(){try{var e=new v;e.toBase64(null)}catch(t){return!0}}();v&&r({target:"Uint8Array",proto:!0,forced:h},{toBase64:function(){var e=i(this),t=arguments.length?l(arguments[0]):void 0,n="base64"===c(t)?d:f,r=!!t&&!!t.omitPadding;s(this.buffer);for(var o,a="",u=0,v=e.length,h=function(e){return p(n,o>>6*e&63)};u+2["left","right","top","bottom"].includes(e),scroll:({scrollTop:e,scrollLeft:t})=>[e,t].every(a.Et)}},9831:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n="fas",r="arrows-rotate",o=512,a=512,l=[128472,"refresh","sync"],i="f021",s="M65.9 228.5c13.3-93 93.4-164.5 190.1-164.5 53 0 101 21.5 135.8 56.2 .2 .2 .4 .4 .6 .6l7.6 7.2-47.9 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 53.4-11.3-10.7C390.5 28.6 326.5 0 256 0 127 0 20.3 95.4 2.6 219.5 .1 237 12.2 253.2 29.7 255.7s33.7-9.7 36.2-27.1zm443.5 64c2.5-17.5-9.7-33.7-27.1-36.2s-33.7 9.7-36.2 27.1c-13.3 93-93.4 164.5-190.1 164.5-53 0-101-21.5-135.8-56.2-.2-.2-.4-.4-.6-.6l-7.6-7.2 47.9 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 320c-8.5 0-16.7 3.4-22.7 9.5S-.1 343.7 0 352.3l1 127c.1 17.7 14.6 31.9 32.3 31.7S65.2 496.4 65 478.7l-.4-51.5 10.7 10.1c46.3 46.1 110.2 74.7 180.7 74.7 129 0 235.7-95.4 253.4-219.5z";t.definition={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.faArrowsRotate=t.definition,t.prefix=n,t.iconName=r,t.width=o,t.height=a,t.ligatures=l,t.unicode=i,t.svgPathData=s,t.aliases=l},10220:function(e,t){"use strict";var n="fas",r="arrow-left",o=512,a=512,l=[8592],i="f060",s="M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 288 480 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-370.7 0 105.4-105.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.Ce=t.mw},10350:function(e,t,n){"use strict";var r=n(43724),o=n(39297),a=Function.prototype,l=r&&Object.getOwnPropertyDescriptor,i=o(a,"name"),s=i&&"something"===function(){}.name,u=i&&(!r||r&&l(a,"name").configurable);e.exports={EXISTS:i,PROPER:s,CONFIGURABLE:u}},10515:function(e,t,n){"use strict";n.d(t,{R:function(){return r}});const r={tab:"Tab",enter:"Enter",space:"Space",left:"ArrowLeft",up:"ArrowUp",right:"ArrowRight",down:"ArrowDown",esc:"Escape",delete:"Delete",backspace:"Backspace",numpadEnter:"NumpadEnter",pageUp:"PageUp",pageDown:"PageDown",home:"Home",end:"End"}},10754:function(e,t,n){"use strict";n.d(t,{A:function(){return g}});var r=/\s/;function o(e){var t=e.length;while(t--&&r.test(e.charAt(t)));return t}var a=o,l=/^\s+/;function i(e){return e?e.slice(0,a(e)+1).replace(l,""):e}var s=i,u=n(60168),c=n(18095),d=NaN,f=/^[-+]0x[0-9a-f]+$/i,p=/^0b[01]+$/i,v=/^0o[0-7]+$/i,h=parseInt;function m(e){if("number"==typeof e)return e;if((0,c.A)(e))return d;if((0,u.A)(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=(0,u.A)(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=s(e);var n=p.test(e);return n||v.test(e)?h(e.slice(2),n?2:8):f.test(e)?d:+e}var g=m},10757:function(e,t,n){"use strict";var r=n(97751),o=n(94901),a=n(1625),l=n(7040),i=Object;e.exports=l?function(e){return"symbol"==typeof e}:function(e){var t=r("Symbol");return o(t)&&a(t.prototype,i(e))}},10767:function(e,t){"use strict";var n="fas",r="copy",o=448,a=512,l=[],i="f0c5",s="M192 0c-35.3 0-64 28.7-64 64l0 256c0 35.3 28.7 64 64 64l192 0c35.3 0 64-28.7 64-64l0-200.6c0-17.4-7.1-34.1-19.7-46.2L370.6 17.8C358.7 6.4 342.8 0 326.3 0L192 0zM64 128c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l192 0c35.3 0 64-28.7 64-64l0-16-64 0 0 16-192 0 0-256 16 0 0-64-16 0z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.jP=t.mw},10793:function(e,t,n){"use strict";n.d(t,{G:function(){return i},Y:function(){return s}});var r=n(56768),o=n(90144),a=n(29615),l=n(39195);const i={label:"label",value:"value",disabled:"disabled",options:"options"};function s(e){const t=(0,o.KR)({...i,...e.props});let n={...e.props};(0,r.wB)(()=>e.props,e=>{(0,l.A)(e,n)||(t.value={...i,...e},n={...e})},{deep:!0});const s=e=>(0,a.A)(e,t.value.label),u=e=>(0,a.A)(e,t.value.value),c=e=>(0,a.A)(e,t.value.disabled),d=e=>(0,a.A)(e,t.value.options);return{aliasProps:t,getLabel:s,getValue:u,getDisabled:c,getOptions:d}}},10798:function(e,t,n){"use strict";var r=n(80010);t.mw={prefix:r.prefix,iconName:r.iconName,icon:[r.width,r.height,r.aliases,r.unicode,r.svgPathData]},t.A=t.mw,r.prefix,r.iconName,r.width,r.height,r.aliases,r.unicode,r.svgPathData,r.aliases},10961:function(e,t,n){"use strict";n(85331)},11154:function(e,t){"use strict";function n(e){var t=-1,n=null==e?0:e.length,r={};while(++t{e.style.maxHeight="",e.style.overflow=e.dataset.oldOverflow,e.style.paddingTop=e.dataset.oldPaddingTop,e.style.paddingBottom=e.dataset.oldPaddingBottom},l={beforeEnter(e){e.dataset||(e.dataset={}),e.dataset.oldPaddingTop=e.style.paddingTop,e.dataset.oldPaddingBottom=e.style.paddingBottom,e.style.height&&(e.dataset.elExistsHeight=e.style.height),e.style.maxHeight=0,e.style.paddingTop=0,e.style.paddingBottom=0},enter(e){requestAnimationFrame(()=>{e.dataset.oldOverflow=e.style.overflow,e.dataset.elExistsHeight?e.style.maxHeight=e.dataset.elExistsHeight:0!==e.scrollHeight?e.style.maxHeight=`${e.scrollHeight}px`:e.style.maxHeight=0,e.style.paddingTop=e.dataset.oldPaddingTop,e.style.paddingBottom=e.dataset.oldPaddingBottom,e.style.overflow="hidden"})},afterEnter(e){e.style.maxHeight="",e.style.overflow=e.dataset.oldOverflow},enterCancelled(e){n(e)},beforeLeave(e){e.dataset||(e.dataset={}),e.dataset.oldPaddingTop=e.style.paddingTop,e.dataset.oldPaddingBottom=e.style.paddingBottom,e.dataset.oldOverflow=e.style.overflow,e.style.maxHeight=`${e.scrollHeight}px`,e.style.overflow="hidden"},leave(e){0!==e.scrollHeight&&(e.style.maxHeight=0,e.style.paddingTop=0,e.style.paddingBottom=0)},afterLeave(e){n(e)},leaveCancelled(e){n(e)}};return(e,n)=>((0,r.uX)(),(0,r.Wv)(o.eB,(0,r.v6)({name:(0,a.R1)(t).b()},(0,r.Tb)(l)),{default:(0,r.k6)(()=>[(0,r.RG)(e.$slots,"default")]),_:3},16,["name"]))}});var c=(0,l.A)(u,[["__file","collapse-transition.vue"]]),d=n(25376);const f=(0,d.GU)(c)},12140:function(e,t){"use strict";function n(e,t){return e.has(t)}t.A=n},12211:function(e,t,n){"use strict";var r=n(79039);e.exports=!r(function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})},12235:function(e,t,n){"use strict";n.d(t,{Et:function(){return i},Hp:function(){return d},Im:function(){return s},Lm:function(){return l},Xj:function(){return c},b0:function(){return a},l6:function(){return f},vq:function(){return u}});var r=n(24232),o=n(16032);const a=e=>void 0===e,l=e=>"boolean"===typeof e,i=e=>"number"===typeof e,s=e=>!e&&0!==e||(0,r.cy)(e)&&0===e.length||(0,r.Gv)(e)&&!Object.keys(e).length,u=e=>"undefined"!==typeof Element&&e instanceof Element,c=e=>(0,o.A)(e),d=e=>!!(0,r.Kg)(e)&&!Number.isNaN(Number(e)),f=e=>e===window},12251:function(e,t,n){"use strict";n.d(t,{E:function(){return s}});var r=n(45420),o=n(68782),a=n(38299),l=n(47378),i=n(58501);const s=(0,l.b_)({...r.m,...o.yh,appendTo:{type:a.k.to.type},content:{type:String,default:""},rawContent:Boolean,persistent:Boolean,visible:{type:(0,l.jq)(Boolean),default:null},transition:String,teleported:{type:Boolean,default:!0},disabled:Boolean,...(0,i.l)(["ariaLabel"])})},12375:function(e,t){"use strict";var n="fas",r="code-branch",o=448,a=512,l=[],i="f126",s="M80 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm80-24c0 32.8-19.7 61-48 73.3l0 70.7 176 0c26.5 0 48-21.5 48-48l0-22.7c-28.3-12.3-48-40.5-48-73.3 0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3l0 22.7c0 61.9-50.1 112-112 112l-176 0 0 70.7c28.3 12.3 48 40.5 48 73.3 0 44.2-35.8 80-80 80S0 476.2 0 432c0-32.8 19.7-61 48-73.3l0-205.3C19.7 141 0 112.8 0 80 0 35.8 35.8 0 80 0s80 35.8 80 80zm232 0a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM80 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.Xb=t.mw},12623:function(e,t,n){"use strict";var r=n(75014),o=n(13708);function a(e,t){t=(0,r.A)(t,e);var n=0,a=t.length;while(null!=e&&n{const{type:e,hit:t,effect:r,closable:o,round:a}=n;return[v.b(),v.is("closable",o),v.m(e||"primary"),v.m(u.value),v.m(r),v.is("hit",t),v.is("round",a)]}),m=e=>{t("close",e)},g=e=>{t("click",e)},b=e=>{var t,n,r;(null==(r=null==(n=null==(t=null==e?void 0:e.component)?void 0:t.subTree)?void 0:n.component)?void 0:r.bum)&&(e.component.subTree.component.bum=null)};return(e,t)=>e.disableTransitions?((0,r.uX)(),(0,r.CE)("span",{key:0,class:(0,o.C4)((0,a.R1)(h)),style:(0,o.Tr)({backgroundColor:e.color}),onClick:g},[(0,r.Lk)("span",{class:(0,o.C4)((0,a.R1)(v).e("content"))},[(0,r.RG)(e.$slots,"default")],2),e.closable?((0,r.uX)(),(0,r.CE)("button",{key:0,"aria-label":(0,a.R1)(c)("el.tag.close"),class:(0,o.C4)((0,a.R1)(v).e("close")),type:"button",onClick:(0,l.D$)(m,["stop"])},[(0,r.bF)((0,a.R1)(i.tk),null,{default:(0,r.k6)(()=>[(0,r.bF)((0,a.R1)(s.Close))]),_:1})],10,["aria-label","onClick"])):(0,r.Q3)("v-if",!0)],6)):((0,r.uX)(),(0,r.Wv)(l.eB,{key:1,name:`${(0,a.R1)(v).namespace.value}-zoom-in-center`,appear:"",onVnodeMounted:b},{default:(0,r.k6)(()=>[(0,r.Lk)("span",{class:(0,o.C4)((0,a.R1)(h)),style:(0,o.Tr)({backgroundColor:e.color}),onClick:g},[(0,r.Lk)("span",{class:(0,o.C4)((0,a.R1)(v).e("content"))},[(0,r.RG)(e.$slots,"default")],2),e.closable?((0,r.uX)(),(0,r.CE)("button",{key:0,"aria-label":(0,a.R1)(c)("el.tag.close"),class:(0,o.C4)((0,a.R1)(v).e("close")),type:"button",onClick:(0,l.D$)(m,["stop"])},[(0,r.bF)((0,a.R1)(i.tk),null,{default:(0,r.k6)(()=>[(0,r.bF)((0,a.R1)(s.Close))]),_:1})],10,["aria-label","onClick"])):(0,r.Q3)("v-if",!0)],6)]),_:3},8,["name"]))}});var m=(0,c.A)(h,[["__file","tag.vue"]]),g=n(25376);const b=(0,g.GU)(m)},12739:function(e,t,n){"use strict";n.d(t,{A:function(){return b}});var r=n(57433);function o(){this.__data__=new r.A,this.size=0}var a=o;function l(e){var t=this.__data__,n=t["delete"](e);return this.size=t.size,n}var i=l;function s(e){return this.__data__.get(e)}var u=s;function c(e){return this.__data__.has(e)}var d=c,f=(n(44114),n(76062)),p=n(67788),v=200;function h(e,t){var n=this.__data__;if(n instanceof r.A){var o=n.__data__;if(!f.A||o.length{if(0===b.length)return;const t=(0,h.CG)(e),n=b[b.length-1][g];if(n.length>0&&t===m.R.tab){if(1===n.length)return e.preventDefault(),void(document.activeElement!==n[0]&&n[0].focus());const t=e.shiftKey,r=e.target===n[0],o=e.target===n[n.length-1];r&&t&&(e.preventDefault(),n[n.length-1].focus()),o&&!t&&(e.preventDefault(),n[0].focus())}},w={beforeMount(e){e[g]=(0,v.uG)(e),b.push(e),b.length<=1&&document.addEventListener("keydown",y)},updated(e){(0,r.dY)(()=>{e[g]=(0,v.uG)(e)})},unmounted(){b.shift(),0===b.length&&document.removeEventListener("keydown",y)}};var R=n(20464),C=n(3027),x=n(38114),k=n(81305),E=n(27833),_=n(32667),S=n(81968);const M=(0,r.pM)({name:"ElMessageBox",directives:{TrapFocus:w},components:{ElButton:i.S2,ElFocusTrap:f.A,ElInput:s.WK,ElOverlay:u._q,ElIcon:c.tk,...R.Nk},inheritAttrs:!1,props:{buttonSize:{type:String,validator:C.x},modal:{type:Boolean,default:!0},lockScroll:{type:Boolean,default:!0},showClose:{type:Boolean,default:!0},closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},closeOnHashChange:{type:Boolean,default:!0},center:Boolean,draggable:Boolean,overflow:Boolean,roundButton:Boolean,container:{type:String,default:"body"},boxType:{type:String,default:""}},emits:["vanish","action"],setup(e,{emit:t}){const{locale:n,zIndex:o,ns:i,size:s}=(0,x.ht)("message-box",(0,r.EW)(()=>e.buttonSize)),{t:u}=n,{nextZIndex:c}=o,f=(0,a.KR)(!1),p=(0,a.Kh)({autofocus:!0,beforeClose:null,callback:null,cancelButtonText:"",cancelButtonClass:"",confirmButtonText:"",confirmButtonClass:"",customClass:"",customStyle:{},dangerouslyUseHTMLString:!1,distinguishCancelAndClose:!1,icon:"",closeIcon:"",inputPattern:null,inputPlaceholder:"",inputType:"text",inputValue:"",inputValidator:void 0,inputErrorMessage:"",message:"",modalFade:!0,modalClass:"",showCancelButton:!1,showConfirmButton:!0,type:"",title:void 0,showInput:!1,action:"",confirmButtonLoading:!1,cancelButtonLoading:!1,confirmButtonLoadingIcon:(0,a.IG)(d.Loading),cancelButtonLoadingIcon:(0,a.IG)(d.Loading),confirmButtonDisabled:!1,editorErrorMessage:"",validateError:!1,zIndex:c()}),v=(0,r.EW)(()=>{const e=p.type;return{[i.bm("icon",e)]:e&&R.rz[e]}}),h=(0,k.Bi)(),m=(0,k.Bi)(),g=(0,r.EW)(()=>{const e=p.type;return p.icon||e&&R.rz[e]||""}),b=(0,r.EW)(()=>!!p.message),y=(0,a.KR)(),w=(0,a.KR)(),C=(0,a.KR)(),M=(0,a.KR)(),L=(0,a.KR)(),A=(0,r.EW)(()=>p.confirmButtonClass);(0,r.wB)(()=>p.inputValue,async t=>{await(0,r.dY)(),"prompt"===e.boxType&&t&&B()},{immediate:!0}),(0,r.wB)(()=>f.value,t=>{var n,o;t&&("prompt"!==e.boxType&&(p.autofocus?C.value=null!=(o=null==(n=L.value)?void 0:n.$el)?o:y.value:C.value=y.value),p.zIndex=c()),"prompt"===e.boxType&&(t?(0,r.dY)().then(()=>{var e;M.value&&M.value.$el&&(p.autofocus?C.value=null!=(e=z())?e:y.value:C.value=y.value)}):(p.editorErrorMessage="",p.validateError=!1))});const O=(0,r.EW)(()=>e.draggable),T=(0,r.EW)(()=>e.overflow),{isDragging:I}=(0,E.P)(y,w,O,T);function N(){f.value&&(f.value=!1,(0,r.dY)(()=>{p.action&&t("action",p.action)}))}(0,r.sV)(async()=>{await(0,r.dY)(),e.closeOnHashChange&&window.addEventListener("hashchange",N)}),(0,r.xo)(()=>{e.closeOnHashChange&&window.removeEventListener("hashchange",N)});const W=()=>{e.closeOnClickModal&&F(p.distinguishCancelAndClose?"close":"cancel")},D=(0,S.r)(W),P=e=>{if("textarea"!==p.inputType)return e.preventDefault(),F("confirm")},F=t=>{var n;("prompt"!==e.boxType||"confirm"!==t||B())&&(p.action=t,p.beforeClose?null==(n=p.beforeClose)||n.call(p,t,p,N):N())},B=()=>{if("prompt"===e.boxType){const e=p.inputPattern;if(e&&!e.test(p.inputValue||""))return p.editorErrorMessage=p.inputErrorMessage||u("el.messagebox.error"),p.validateError=!0,!1;const t=p.inputValidator;if((0,l.Tn)(t)){const e=t(p.inputValue);if(!1===e)return p.editorErrorMessage=p.inputErrorMessage||u("el.messagebox.error"),p.validateError=!0,!1;if((0,l.Kg)(e))return p.editorErrorMessage=e,p.validateError=!0,!1}}return p.editorErrorMessage="",p.validateError=!1,!0},z=()=>{var e,t;const n=null==(e=M.value)?void 0:e.$refs;return null!=(t=null==n?void 0:n.input)?t:null==n?void 0:n.textarea},$=()=>{F("close")},V=()=>{e.closeOnPressEscape&&$()};return e.lockScroll&&(0,_.t)(f,{ns:i}),{...(0,a.QW)(p),ns:i,overlayEvent:D,visible:f,hasMessage:b,typeClass:v,contentId:h,inputId:m,btnSize:s,iconComponent:g,confirmButtonClasses:A,rootRef:y,focusStartRef:C,headerRef:w,inputRef:M,isDragging:I,confirmRef:L,doClose:N,handleClose:$,onCloseRequested:V,handleWrapperClick:W,handleInputEnter:P,handleAction:F,t:u}}});function L(e,t,n,a,i,s){const u=(0,r.g2)("el-icon"),c=(0,r.g2)("el-input"),d=(0,r.g2)("el-button"),f=(0,r.g2)("el-focus-trap"),p=(0,r.g2)("el-overlay");return(0,r.uX)(),(0,r.Wv)(o.eB,{name:"fade-in-linear",onAfterLeave:t=>e.$emit("vanish"),persisted:""},{default:(0,r.k6)(()=>[(0,r.bo)((0,r.bF)(p,{"z-index":e.zIndex,"overlay-class":[e.ns.is("message-box"),e.modalClass],mask:e.modal},{default:(0,r.k6)(()=>[(0,r.Lk)("div",{role:"dialog","aria-label":e.title,"aria-modal":"true","aria-describedby":e.showInput?void 0:e.contentId,class:(0,l.C4)(`${e.ns.namespace.value}-overlay-message-box`),onClick:e.overlayEvent.onClick,onMousedown:e.overlayEvent.onMousedown,onMouseup:e.overlayEvent.onMouseup},[(0,r.bF)(f,{loop:"",trapped:e.visible,"focus-trap-el":e.rootRef,"focus-start-el":e.focusStartRef,onReleaseRequested:e.onCloseRequested},{default:(0,r.k6)(()=>[(0,r.Lk)("div",{ref:"rootRef",class:(0,l.C4)([e.ns.b(),e.customClass,e.ns.is("draggable",e.draggable),e.ns.is("dragging",e.isDragging),{[e.ns.m("center")]:e.center}]),style:(0,l.Tr)(e.customStyle),tabindex:"-1",onClick:(0,o.D$)(()=>{},["stop"])},[null!==e.title&&void 0!==e.title?((0,r.uX)(),(0,r.CE)("div",{key:0,ref:"headerRef",class:(0,l.C4)([e.ns.e("header"),{"show-close":e.showClose}])},[(0,r.Lk)("div",{class:(0,l.C4)(e.ns.e("title"))},[e.iconComponent&&e.center?((0,r.uX)(),(0,r.Wv)(u,{key:0,class:(0,l.C4)([e.ns.e("status"),e.typeClass])},{default:(0,r.k6)(()=>[((0,r.uX)(),(0,r.Wv)((0,r.$y)(e.iconComponent)))]),_:1},8,["class"])):(0,r.Q3)("v-if",!0),(0,r.Lk)("span",null,(0,l.v_)(e.title),1)],2),e.showClose?((0,r.uX)(),(0,r.CE)("button",{key:0,type:"button",class:(0,l.C4)(e.ns.e("headerbtn")),"aria-label":e.t("el.messagebox.close"),onClick:t=>e.handleAction(e.distinguishCancelAndClose?"close":"cancel"),onKeydown:(0,o.jR)((0,o.D$)(t=>e.handleAction(e.distinguishCancelAndClose?"close":"cancel"),["prevent"]),["enter"])},[(0,r.bF)(u,{class:(0,l.C4)(e.ns.e("close"))},{default:(0,r.k6)(()=>[((0,r.uX)(),(0,r.Wv)((0,r.$y)(e.closeIcon||"close")))]),_:1},8,["class"])],42,["aria-label","onClick","onKeydown"])):(0,r.Q3)("v-if",!0)],2)):(0,r.Q3)("v-if",!0),(0,r.Lk)("div",{id:e.contentId,class:(0,l.C4)(e.ns.e("content"))},[(0,r.Lk)("div",{class:(0,l.C4)(e.ns.e("container"))},[e.iconComponent&&!e.center&&e.hasMessage?((0,r.uX)(),(0,r.Wv)(u,{key:0,class:(0,l.C4)([e.ns.e("status"),e.typeClass])},{default:(0,r.k6)(()=>[((0,r.uX)(),(0,r.Wv)((0,r.$y)(e.iconComponent)))]),_:1},8,["class"])):(0,r.Q3)("v-if",!0),e.hasMessage?((0,r.uX)(),(0,r.CE)("div",{key:1,class:(0,l.C4)(e.ns.e("message"))},[(0,r.RG)(e.$slots,"default",{},()=>[e.dangerouslyUseHTMLString?((0,r.uX)(),(0,r.Wv)((0,r.$y)(e.showInput?"label":"p"),{key:1,for:e.showInput?e.inputId:void 0,innerHTML:e.message},null,8,["for","innerHTML"])):((0,r.uX)(),(0,r.Wv)((0,r.$y)(e.showInput?"label":"p"),{key:0,for:e.showInput?e.inputId:void 0,textContent:(0,l.v_)(e.message)},null,8,["for","textContent"]))])],2)):(0,r.Q3)("v-if",!0)],2),(0,r.bo)((0,r.Lk)("div",{class:(0,l.C4)(e.ns.e("input"))},[(0,r.bF)(c,{id:e.inputId,ref:"inputRef",modelValue:e.inputValue,"onUpdate:modelValue":t=>e.inputValue=t,type:e.inputType,placeholder:e.inputPlaceholder,"aria-invalid":e.validateError,class:(0,l.C4)({invalid:e.validateError}),onKeydown:(0,o.jR)(e.handleInputEnter,["enter"])},null,8,["id","modelValue","onUpdate:modelValue","type","placeholder","aria-invalid","class","onKeydown"]),(0,r.Lk)("div",{class:(0,l.C4)(e.ns.e("errormsg")),style:(0,l.Tr)({visibility:e.editorErrorMessage?"visible":"hidden"})},(0,l.v_)(e.editorErrorMessage),7)],2),[[o.aG,e.showInput]])],10,["id"]),(0,r.Lk)("div",{class:(0,l.C4)(e.ns.e("btns"))},[e.showCancelButton?((0,r.uX)(),(0,r.Wv)(d,{key:0,loading:e.cancelButtonLoading,"loading-icon":e.cancelButtonLoadingIcon,class:(0,l.C4)([e.cancelButtonClass]),round:e.roundButton,size:e.btnSize,onClick:t=>e.handleAction("cancel"),onKeydown:(0,o.jR)((0,o.D$)(t=>e.handleAction("cancel"),["prevent"]),["enter"])},{default:(0,r.k6)(()=>[(0,r.eW)((0,l.v_)(e.cancelButtonText||e.t("el.messagebox.cancel")),1)]),_:1},8,["loading","loading-icon","class","round","size","onClick","onKeydown"])):(0,r.Q3)("v-if",!0),(0,r.bo)((0,r.bF)(d,{ref:"confirmRef",type:"primary",loading:e.confirmButtonLoading,"loading-icon":e.confirmButtonLoadingIcon,class:(0,l.C4)([e.confirmButtonClasses]),round:e.roundButton,disabled:e.confirmButtonDisabled,size:e.btnSize,onClick:t=>e.handleAction("confirm"),onKeydown:(0,o.jR)((0,o.D$)(t=>e.handleAction("confirm"),["prevent"]),["enter"])},{default:(0,r.k6)(()=>[(0,r.eW)((0,l.v_)(e.confirmButtonText||e.t("el.messagebox.confirm")),1)]),_:1},8,["loading","loading-icon","class","round","disabled","size","onClick","onKeydown"]),[[o.aG,e.showConfirmButton]])],2)],14,["onClick"])]),_:3},8,["trapped","focus-trap-el","focus-start-el","onReleaseRequested"])],42,["aria-label","aria-describedby","onClick","onMousedown","onMouseup"])]),_:3},8,["z-index","overlay-class","mask"]),[[o.aG,e.visible]])]),_:3},8,["onAfterLeave"])}var A=(0,p.A)(M,[["render",L],["__file","index.vue"]]),O=n(20017),T=n(12235),I=n(86894);const N=new Map,W=e=>{let t=document.body;return e.appendTo&&((0,l.Kg)(e.appendTo)&&(t=document.querySelector(e.appendTo)),(0,T.vq)(e.appendTo)&&(t=e.appendTo),(0,T.vq)(t)||((0,I.U)("ElMessageBox","the appendTo option is not an HTMLElement. Falling back to document.body."),t=document.body)),t},D=(e,t,n=null)=>{const a=(0,r.bF)(A,e,(0,l.Tn)(e.message)||(0,r.vv)(e.message)?{default:(0,l.Tn)(e.message)?e.message:()=>e.message}:null);return a.appContext=n,(0,o.XX)(a,t),W(e).appendChild(t.firstElementChild),a.component},P=()=>document.createElement("div"),F=(e,t)=>{const n=P();e.onVanish=()=>{(0,o.XX)(null,n),N.delete(i)},e.onAction=t=>{const n=N.get(i);let o;o=e.showInput?{value:i.inputValue,action:t}:t,e.callback?e.callback(o,r.proxy):"cancel"===t||"close"===t?e.distinguishCancelAndClose&&"cancel"!==t?n.reject("close"):n.reject("cancel"):n.resolve(o)};const r=D(e,n,t),i=r.proxy;for(const o in e)(0,l.$3)(e,o)&&!(0,l.$3)(i.$props,o)&&("closeIcon"===o&&(0,l.Gv)(e[o])?i[o]=(0,a.IG)(e[o]):i[o]=e[o]);return i.visible=!0,i};function B(e,t=null){if(!O.oc)return Promise.reject();let n;return(0,l.Kg)(e)||(0,r.vv)(e)?e={message:e}:n=e.callback,new Promise((r,o)=>{const a=F(e,null!=t?t:B._context);N.set(a,{options:e,callback:n,resolve:r,reject:o})})}const z=["alert","confirm","prompt"],$={alert:{closeOnPressEscape:!1,closeOnClickModal:!1},confirm:{showCancelButton:!0},prompt:{showCancelButton:!0,showInput:!0}};function V(e){return(t,n,r,o)=>{let a="";return(0,l.Gv)(n)?(r=n,a=""):a=(0,T.b0)(n)?"":n,B(Object.assign({title:a,message:t,type:"",...$[e]},r,{boxType:e}),o)}}z.forEach(e=>{B[e]=V(e)}),B.close=()=>{N.forEach((e,t)=>{t.doClose()}),N.clear()},B._context=null;const j=B;j.install=e=>{j._context=e._context,e.config.globalProperties.$msgbox=j,e.config.globalProperties.$messageBox=j,e.config.globalProperties.$alert=j.alert,e.config.globalProperties.$confirm=j.confirm,e.config.globalProperties.$prompt=j.prompt};const K=j},13110:function(e,t,n){"use strict";var r=n(7262);t.mw={prefix:r.prefix,iconName:r.iconName,icon:[r.width,r.height,r.aliases,r.unicode,r.svgPathData]},t.iW=t.mw,r.prefix,r.iconName,r.width,r.height,r.aliases,r.unicode,r.svgPathData,r.aliases},13118:function(e,t){"use strict";var n="fas",r="folder-open",o=576,a=512,l=[128194,128449,61717],i="f07c",s="M56 225.6L32.4 296.2 32.4 96c0-35.3 28.7-64 64-64l138.7 0c13.8 0 27.3 4.5 38.4 12.8l38.4 28.8c5.5 4.2 12.3 6.4 19.2 6.4l117.3 0c35.3 0 64 28.7 64 64l0 16-365.4 0c-41.3 0-78 26.4-91.1 65.6zM477.8 448L99 448c-32.8 0-55.9-32.1-45.5-63.2l48-144C108 221.2 126.4 208 147 208l378.8 0c32.8 0 55.9 32.1 45.5 63.2l-48 144c-6.5 19.6-24.9 32.8-45.5 32.8z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.Uj=t.mw},13123:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n="fas",r="shield-halved",o=512,a=512,l=["shield-alt"],i="f3ed",s="M256 0c4.6 0 9.2 1 13.4 2.9L457.8 82.8c22 9.3 38.4 31 38.3 57.2-.5 99.2-41.3 280.7-213.6 363.2-16.7 8-36.1 8-52.8 0-172.4-82.5-213.1-264-213.6-363.2-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.9 1 251.4 0 256 0zm0 66.8l0 378.1c138-66.8 175.1-214.8 176-303.4l-176-74.6 0 0z";t.definition={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.faShieldHalved=t.definition,t.prefix=n,t.iconName=r,t.width=o,t.height=a,t.ligatures=l,t.unicode=i,t.svgPathData=s,t.aliases=l},13127:function(e,t){"use strict";var n="fas",r="pager",o=512,a=512,l=[128223],i="f815",s="M0 128C0 92.7 28.7 64 64 64l384 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128zm64 32l0 64c0 17.7 14.3 32 32 32l320 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32L96 128c-17.7 0-32 14.3-32 32zM88 320c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0zm128 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.ji=t.mw},13579:function(e,t,n){"use strict";var r=n(46518),o=n(69565),a=n(72652),l=n(79306),i=n(28551),s=n(1767),u=n(9539),c=n(84549),d=c("some",TypeError);r({target:"Iterator",proto:!0,real:!0,forced:d},{some:function(e){i(this);try{l(e)}catch(r){u(this,"throw",r)}if(d)return o(d,this,e);var t=s(this),n=0;return a(t,function(t,r){if(e(t,n++))return r()},{IS_RECORD:!0,INTERRUPTED:!0}).stopped}})},13708:function(e,t,n){"use strict";var r=n(18095),o=1/0;function a(e){if("string"==typeof e||(0,r.A)(e))return e;var t=e+"";return"0"==t&&1/e==-o?"-0":t}t.A=a},13925:function(e,t,n){"use strict";var r=n(20034);e.exports=function(e){return r(e)||null===e}},14381:function(e,t,n){"use strict";n.d(t,{A:function(){return P}});var r=n(11591),o=n(5351),a=n(22799),l="[object Arguments]",i="[object Array]",s="[object Boolean]",u="[object Date]",c="[object Error]",d="[object Function]",f="[object Map]",p="[object Number]",v="[object Object]",h="[object RegExp]",m="[object Set]",g="[object String]",b="[object WeakMap]",y="[object ArrayBuffer]",w="[object DataView]",R="[object Float32Array]",C="[object Float64Array]",x="[object Int8Array]",k="[object Int16Array]",E="[object Int32Array]",_="[object Uint8Array]",S="[object Uint8ClampedArray]",M="[object Uint16Array]",L="[object Uint32Array]",A={};function O(e){return(0,a.A)(e)&&(0,o.A)(e.length)&&!!A[(0,r.A)(e)]}A[R]=A[C]=A[x]=A[k]=A[E]=A[_]=A[S]=A[M]=A[L]=!0,A[l]=A[i]=A[y]=A[s]=A[w]=A[u]=A[c]=A[d]=A[f]=A[p]=A[v]=A[h]=A[m]=A[g]=A[b]=!1;var T=O,I=n(17528),N=n(59646),W=N.A&&N.A.isTypedArray,D=W?(0,I.A)(W):T,P=D},14552:function(e,t){"use strict";var n="fas",r="comments",o=576,a=512,l=[128490,61670],i="f086",s="M384 144c0 97.2-86 176-192 176-26.7 0-52.1-5-75.2-14L35.2 349.2c-9.3 4.9-20.7 3.2-28.2-4.2s-9.2-18.9-4.2-28.2l35.6-67.2C14.3 220.2 0 183.6 0 144 0 46.8 86-32 192-32S384 46.8 384 144zm0 368c-94.1 0-172.4-62.1-188.8-144 120-1.5 224.3-86.9 235.8-202.7 83.3 19.2 145 88.3 145 170.7 0 39.6-14.3 76.2-38.4 105.6l35.6 67.2c4.9 9.3 3.2 20.7-4.2 28.2s-18.9 9.2-28.2 4.2L459.2 498c-23.1 9-48.5 14-75.2 14z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.q9=t.mw},14722:function(e,t){"use strict";var n="fas",r="clock",o=512,a=512,l=[128339,"clock-four"],i="f017",s="M256 0a256 256 0 1 1 0 512 256 256 0 1 1 0-512zM232 120l0 136c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2 280 120c0-13.3-10.7-24-24-24s-24 10.7-24 24z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.a$=t.mw},15024:function(e,t,n){"use strict";var r=n(46518),o=n(83650),a=n(39835),l=n(84916),i=!l("symmetricDifference")||!a("symmetricDifference");r({target:"Set",proto:!0,real:!0,forced:i},{symmetricDifference:o})},15412:function(e,t,n){"use strict";n(85331),n(72099)},15431:function(e,t,n){"use strict";n.d(t,{V:function(){return a},m:function(){return o}});var r=n(20017);const o=e=>r.oc?window.requestAnimationFrame(e):setTimeout(e,16),a=e=>r.oc?window.cancelAnimationFrame(e):clearTimeout(e)},15925:function(e,t,n){"use strict";var r=n(81061);t.mw={prefix:r.prefix,iconName:r.iconName,icon:[r.width,r.height,r.aliases,r.unicode,r.svgPathData]},t.zp=t.mw,r.prefix,r.iconName,r.width,r.height,r.aliases,r.unicode,r.svgPathData,r.aliases},16032:function(e,t){"use strict";function n(e){return null==e}t.A=n},16193:function(e,t,n){"use strict";var r=n(79504),o=Error,a=r("".replace),l=function(e){return String(new o(e).stack)}("zxcasd"),i=/\n\s*at [^:]*:[^\n]*/,s=i.test(l);e.exports=function(e,t){if(s&&"string"==typeof e&&!o.prepareStackTrace)while(t--)e=a(e,i,"");return e}},16249:function(e,t){"use strict";var n="fas",r="chevron-right",o=320,a=512,l=[9002],i="f054",s="M311.1 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L243.2 256 73.9 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.Xk=t.mw},16571:function(e,t,n){"use strict";n.d(t,{A:function(){return Ib}});n(18111),n(7588);const r="2.12.0",o=Symbol("INSTALLED_KEY");var a=n(38114);const l=(e=[])=>{const t=(t,n)=>{t[o]||(t[o]=!0,e.forEach(e=>t.use(e)),n&&(0,a.Vh)(n,t,!0))};return{version:r,install:t}};var i=n(56768),s=n(90144),u=n(24232),c=n(97687),d=n(92056),f=n(47378),p=n(12235);const v=(0,f.b_)({zIndex:{type:(0,f.jq)([Number,String]),default:100},target:{type:String,default:""},offset:{type:Number,default:0},position:{type:String,values:["top","bottom"],default:"top"}}),h={scroll:({scrollTop:e,fixed:t})=>(0,p.Et)(e)&&(0,p.Lm)(t),[d.YU]:e=>(0,p.Lm)(e)};var m=n(99077),g=n(93513),b=n(28587),y=n(93558),w=n(86894);const R="ElAffix",C=(0,i.pM)({name:R}),x=(0,i.pM)({...C,props:v,emits:h,setup(e,{expose:t,emit:n}){const r=e,o=(0,g.DU)("affix"),a=(0,s.IJ)(),l=(0,s.IJ)(),f=(0,s.IJ)(),{height:p}=(0,c.lWr)(),{height:v,width:h,top:m,bottom:C,update:x}=(0,c.SSU)(l,{windowScroll:!1}),k=(0,c.SSU)(a),E=(0,s.KR)(!1),_=(0,s.KR)(0),S=(0,s.KR)(0),M=(0,i.EW)(()=>({height:E.value?`${v.value}px`:"",width:E.value?`${h.value}px`:""})),L=(0,i.EW)(()=>{if(!E.value)return{};const e=(0,y._V)(r.offset);return{height:`${v.value}px`,width:`${h.value}px`,top:"top"===r.position?e:"",bottom:"bottom"===r.position?e:"",transform:S.value?`translateY(${S.value}px)`:"",zIndex:r.zIndex}}),A=()=>{if(!f.value)return;_.value=f.value instanceof Window?document.documentElement.scrollTop:f.value.scrollTop||0;const{position:e,target:t,offset:n}=r,o=n+v.value;if("top"===e)if(t){const e=k.bottom.value-o;E.value=n>m.value&&k.bottom.value>0,S.value=e<0?e:0}else E.value=n>m.value;else if(t){const e=p.value-k.top.value-o;E.value=p.value-nk.top.value,S.value=e<0?-e:0}else E.value=p.value-n{E.value?(E.value=!1,await(0,i.dY)(),x(),E.value=!0):x()},T=async()=>{x(),await(0,i.dY)(),n("scroll",{scrollTop:_.value,fixed:E.value})};return(0,i.wB)(E,e=>n(d.YU,e)),(0,i.sV)(()=>{var e;r.target?(a.value=null!=(e=document.querySelector(r.target))?e:void 0,a.value||(0,w.$)(R,`Target does not exist: ${r.target}`)):a.value=document.documentElement,f.value=(0,b.Bo)(l.value,!0),x()}),(0,c.MLh)(f,"scroll",T),(0,i.nT)(A),t({update:A,updateRoot:O}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{ref_key:"root",ref:l,class:(0,u.C4)((0,s.R1)(o).b()),style:(0,u.Tr)((0,s.R1)(M))},[(0,i.Lk)("div",{class:(0,u.C4)({[(0,s.R1)(o).m("fixed")]:E.value}),style:(0,u.Tr)((0,s.R1)(L))},[(0,i.RG)(e.$slots,"default")],6)],6))}});var k=(0,m.A)(x,[["__file","affix.vue"]]),E=n(25376);const _=(0,E.GU)(k);var S=n(89559),M=n(45130),L=n(19615),A=n(20017),O=n(57477),T=n(39623),I=n(88559),N=n(78507),W=n(813),D=n(96149),P=n(12251);const F=(0,f.b_)({...D.$,valueKey:{type:String,default:"value"},modelValue:{type:[String,Number],default:""},debounce:{type:Number,default:300},placement:{type:(0,f.jq)(String),values:["top","top-start","top-end","bottom","bottom-start","bottom-end"],default:"bottom-start"},fetchSuggestions:{type:(0,f.jq)([Function,Array]),default:u.tE},popperClass:P.E.popperClass,popperStyle:P.E.popperStyle,triggerOnFocus:{type:Boolean,default:!0},selectWhenUnmatched:Boolean,hideLoading:Boolean,teleported:P.E.teleported,appendTo:P.E.appendTo,highlightFirstItem:Boolean,fitInputWidth:Boolean,loopNavigation:{type:Boolean,default:!0}}),B={[d.l4]:e=>(0,u.Kg)(e)||(0,p.Et)(e),[d.qs]:e=>(0,u.Kg)(e)||(0,p.Et)(e),[d.YU]:e=>(0,u.Kg)(e)||(0,p.Et)(e),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0,select:e=>(0,u.Gv)(e)};var z=n(92436),$=n(81305),V=n(34225),j=n(10515);const K="ElAutocomplete",H=(0,i.pM)({name:K,inheritAttrs:!1}),X=(0,i.pM)({...H,props:F,emits:B,setup(e,{expose:t,emit:n}){const r=e,o=(0,i.EW)(()=>(0,L.A)(r,Object.keys(D.$))),a=(0,i.OA)(),l=(0,z.CB)(),f=(0,g.DU)("autocomplete"),p=(0,s.KR)(),v=(0,s.KR)(),h=(0,s.KR)(),m=(0,s.KR)();let b=!1,y=!1;const R=(0,s.KR)([]),C=(0,s.KR)(-1),x=(0,s.KR)(""),k=(0,s.KR)(!1),E=(0,s.KR)(!1),_=(0,s.KR)(!1),S=(0,$.Bi)(),P=(0,i.EW)(()=>a.style),F=(0,i.EW)(()=>{const e=R.value.length>0;return(e||_.value)&&k.value}),B=(0,i.EW)(()=>!r.hideLoading&&_.value),H=(0,i.EW)(()=>p.value?Array.from(p.value.$el.querySelectorAll("input")):[]),X=()=>{F.value&&(x.value=`${p.value.$el.offsetWidth}px`)},U=()=>{C.value=-1},G=async e=>{if(E.value)return;const t=e=>{_.value=!1,E.value||((0,u.cy)(e)?(R.value=e,C.value=r.highlightFirstItem?0:-1):(0,w.$)(K,"autocomplete suggestions must be an array"))};if(_.value=!0,(0,u.cy)(r.fetchSuggestions))t(r.fetchSuggestions);else{const n=await r.fetchSuggestions(e,t);(0,u.cy)(n)&&t(n)}},q=(0,i.EW)(()=>r.debounce),Y=(0,A.xD)(G,q),Q=e=>{const t=!!e;if(n(d.qs,e),n(d.l4,e),E.value=!1,k.value||(k.value=t),!r.triggerOnFocus&&!e)return E.value=!0,void(R.value=[]);Y(e)},Z=e=>{var t;l.value||("INPUT"!==(null==(t=e.target)?void 0:t.tagName)||H.value.includes(document.activeElement))&&(k.value=!0)},J=e=>{n(d.YU,e)},ee=e=>{var t;if(y)y=!1;else{k.value=!0,n("focus",e);const o=null!=(t=r.modelValue)?t:"";r.triggerOnFocus&&!b&&Y(String(o))}},te=e=>{setTimeout(()=>{var t;(null==(t=h.value)?void 0:t.isFocusInsideContent())?y=!0:(k.value&&ae(),n("blur",e))})},ne=()=>{k.value=!1,n(d.l4,""),n("clear")},re=async()=>{var e;(null==(e=p.value)?void 0:e.isComposing)||(F.value&&C.value>=0&&C.value{F.value&&(e.preventDefault(),e.stopPropagation(),ae())},ae=()=>{k.value=!1},le=()=>{var e;null==(e=p.value)||e.focus()},ie=()=>{var e;null==(e=p.value)||e.blur()},se=async e=>{n(d.qs,e[r.valueKey]),n(d.l4,e[r.valueKey]),n("select",e),R.value=[],C.value=-1},ue=e=>{var t,n;if(!F.value||_.value)return;if(e<0){if(!r.loopNavigation)return void(C.value=-1);e=R.value.length-1}e>=R.value.length&&(e=r.loopNavigation?0:R.value.length-1);const[o,a]=ce(),l=a[e],i=o.scrollTop,{offsetTop:s,scrollHeight:u}=l;s+u>i+o.clientHeight&&(o.scrollTop=s+u-o.clientHeight),s{const e=v.value.querySelector(`.${f.be("suggestion","wrap")}`),t=e.querySelectorAll(`.${f.be("suggestion","list")} li`);return[e,t]},de=(0,c.X2F)(m,()=>{var e;(null==(e=h.value)?void 0:e.isFocusInsideContent())||F.value&&ae()}),fe=e=>{const t=(0,V.CG)(e);switch(t){case j.R.up:e.preventDefault(),ue(C.value-1);break;case j.R.down:e.preventDefault(),ue(C.value+1);break;case j.R.enter:case j.R.numpadEnter:e.preventDefault(),re();break;case j.R.tab:ae();break;case j.R.esc:oe(e);break;case j.R.home:e.preventDefault(),ue(0);break;case j.R.end:e.preventDefault(),ue(R.value.length-1);break;case j.R.pageUp:e.preventDefault(),ue(Math.max(0,C.value-10));break;case j.R.pageDown:e.preventDefault(),ue(Math.min(R.value.length-1,C.value+10));break}};return(0,i.xo)(()=>{null==de||de()}),(0,i.sV)(()=>{var e;const t=null==(e=p.value)?void 0:e.ref;t&&([{key:"role",value:"textbox"},{key:"aria-autocomplete",value:"list"},{key:"aria-controls",value:"id"},{key:"aria-activedescendant",value:`${S.value}-item-${C.value}`}].forEach(({key:e,value:n})=>t.setAttribute(e,n)),b=t.hasAttribute("readonly"))}),t({highlightedIndex:C,activated:k,loading:_,inputRef:p,popperRef:h,suggestions:R,handleSelect:se,handleKeyEnter:re,focus:le,blur:ie,close:ae,highlight:ue,getData:G}),(e,t)=>((0,i.uX)(),(0,i.Wv)((0,s.R1)(N.R7),{ref_key:"popperRef",ref:h,visible:(0,s.R1)(F),placement:e.placement,"fallback-placements":["bottom-start","top-start"],"popper-class":[(0,s.R1)(f).e("popper"),e.popperClass],"popper-style":e.popperStyle,teleported:e.teleported,"append-to":e.appendTo,"gpu-acceleration":!1,pure:"","manual-mode":"",effect:"light",trigger:"click",transition:`${(0,s.R1)(f).namespace.value}-zoom-in-top`,persistent:"",role:"listbox",onBeforeShow:X,onHide:U},{content:(0,i.k6)(()=>[(0,i.Lk)("div",{ref_key:"regionRef",ref:v,class:(0,u.C4)([(0,s.R1)(f).b("suggestion"),(0,s.R1)(f).is("loading",(0,s.R1)(B))]),style:(0,u.Tr)({[e.fitInputWidth?"width":"minWidth"]:x.value,outline:"none"}),role:"region"},[e.$slots.header?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(f).be("suggestion","header")),onClick:(0,M.D$)(()=>{},["stop"])},[(0,i.RG)(e.$slots,"header")],10,["onClick"])):(0,i.Q3)("v-if",!0),(0,i.bF)((0,s.R1)(I.kA),{id:(0,s.R1)(S),tag:"ul","wrap-class":(0,s.R1)(f).be("suggestion","wrap"),"view-class":(0,s.R1)(f).be("suggestion","list"),role:"listbox"},{default:(0,i.k6)(()=>[(0,s.R1)(B)?((0,i.uX)(),(0,i.CE)("li",{key:0},[(0,i.RG)(e.$slots,"loading",{},()=>[(0,i.bF)((0,s.R1)(W.tk),{class:(0,u.C4)((0,s.R1)(f).is("loading"))},{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.Loading))]),_:1},8,["class"])])])):((0,i.uX)(!0),(0,i.CE)(i.FK,{key:1},(0,i.pI)(R.value,(t,n)=>((0,i.uX)(),(0,i.CE)("li",{id:`${(0,s.R1)(S)}-item-${n}`,key:n,class:(0,u.C4)({highlighted:C.value===n}),role:"option","aria-selected":C.value===n,onClick:e=>se(t)},[(0,i.RG)(e.$slots,"default",{item:t},()=>[(0,i.eW)((0,u.v_)(t[e.valueKey]),1)])],10,["id","aria-selected","onClick"]))),128))]),_:3},8,["id","wrap-class","view-class"]),e.$slots.footer?((0,i.uX)(),(0,i.CE)("div",{key:1,class:(0,u.C4)((0,s.R1)(f).be("suggestion","footer")),onClick:(0,M.D$)(()=>{},["stop"])},[(0,i.RG)(e.$slots,"footer")],10,["onClick"])):(0,i.Q3)("v-if",!0)],6)]),default:(0,i.k6)(()=>[(0,i.Lk)("div",{ref_key:"listboxRef",ref:m,class:(0,u.C4)([(0,s.R1)(f).b(),e.$attrs.class]),style:(0,u.Tr)((0,s.R1)(P)),role:"combobox","aria-haspopup":"listbox","aria-expanded":(0,s.R1)(F),"aria-owns":(0,s.R1)(S)},[(0,i.bF)((0,s.R1)(T.WK),(0,i.v6)({ref_key:"inputRef",ref:p},(0,i.v6)((0,s.R1)(o),e.$attrs),{"model-value":e.modelValue,disabled:(0,s.R1)(l),onInput:Q,onChange:J,onFocus:ee,onBlur:te,onClear:ne,onKeydown:fe,onMousedown:Z}),(0,i.eX)({_:2},[e.$slots.prepend?{name:"prepend",fn:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"prepend")])}:void 0,e.$slots.append?{name:"append",fn:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"append")])}:void 0,e.$slots.prefix?{name:"prefix",fn:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"prefix")])}:void 0,e.$slots.suffix?{name:"suffix",fn:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"suffix")])}:void 0]),1040,["model-value","disabled"])],14,["aria-expanded","aria-owns"])]),_:3},8,["visible","placement","popper-class","popper-style","teleported","append-to","transition"]))}});var U=(0,m.A)(X,[["__file","autocomplete.vue"]]);const G=(0,E.GU)(U);n(44114);var q=n(1211),Y=n(20464);const Q=(0,f.b_)({size:{type:[Number,String],values:q.I,default:"",validator:e=>(0,p.Et)(e)},shape:{type:String,values:["circle","square"],default:"circle"},icon:{type:Y.Ze},src:{type:String,default:""},alt:String,srcSet:String,fit:{type:(0,f.jq)(String),default:"cover"}}),Z={error:e=>e instanceof Event},J=(0,i.pM)({name:"ElAvatar"}),ee=(0,i.pM)({...J,props:Q,emits:Z,setup(e,{emit:t}){const n=e,r=(0,g.DU)("avatar"),o=(0,s.KR)(!1),a=(0,i.EW)(()=>{const{size:e,icon:t,shape:o}=n,a=[r.b()];return(0,u.Kg)(e)&&a.push(r.m(e)),t&&a.push(r.m("icon")),o&&a.push(r.m(o)),a}),l=(0,i.EW)(()=>{const{size:e}=n;return(0,p.Et)(e)?r.cssVarBlock({size:(0,y._V)(e)}):void 0}),c=(0,i.EW)(()=>({objectFit:n.fit}));function d(e){o.value=!0,t("error",e)}return(0,i.wB)(()=>n.src,()=>o.value=!1),(e,t)=>((0,i.uX)(),(0,i.CE)("span",{class:(0,u.C4)((0,s.R1)(a)),style:(0,u.Tr)((0,s.R1)(l))},[!e.src&&!e.srcSet||o.value?e.icon?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:1},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)(e.icon)))]),_:1})):(0,i.RG)(e.$slots,"default",{key:2}):((0,i.uX)(),(0,i.CE)("img",{key:0,src:e.src,alt:e.alt,srcset:e.srcSet,style:(0,u.Tr)((0,s.R1)(c)),onError:d},null,44,["src","alt","srcset"]))],6))}});var te=(0,m.A)(ee,[["__file","avatar.vue"]]);const ne=(0,E.GU)(te),re={visibilityHeight:{type:Number,default:200},target:{type:String,default:""},right:{type:Number,default:40},bottom:{type:Number,default:40}},oe={click:e=>e instanceof MouseEvent},ae=(e,t,n)=>{const r=(0,s.IJ)(),o=(0,s.IJ)(),a=(0,s.KR)(!1),l=()=>{r.value&&(a.value=r.value.scrollTop>=e.visibilityHeight)},u=e=>{var n;null==(n=r.value)||n.scrollTo({top:0,behavior:"smooth"}),t("click",e)},d=(0,A.k3)(l,300,!0);return(0,c.MLh)(o,"scroll",d),(0,i.sV)(()=>{var t;o.value=document,r.value=document.documentElement,e.target&&(r.value=null!=(t=document.querySelector(e.target))?t:void 0,r.value||(0,w.$)(n,`target does not exist: ${e.target}`),o.value=r.value),l()}),{visible:a,handleClick:u}},le="ElBacktop",ie=(0,i.pM)({name:le}),se=(0,i.pM)({...ie,props:re,emits:oe,setup(e,{emit:t}){const n=e,r=(0,g.DU)("backtop"),{handleClick:o,visible:a}=ae(n,t,le),l=(0,i.EW)(()=>({right:`${n.right}px`,bottom:`${n.bottom}px`}));return(e,t)=>((0,i.uX)(),(0,i.Wv)(M.eB,{name:`${(0,s.R1)(r).namespace.value}-fade-in`},{default:(0,i.k6)(()=>[(0,s.R1)(a)?((0,i.uX)(),(0,i.CE)("div",{key:0,style:(0,u.Tr)((0,s.R1)(l)),class:(0,u.C4)((0,s.R1)(r).b()),onClick:(0,M.D$)((0,s.R1)(o),["stop"])},[(0,i.RG)(e.$slots,"default",{},()=>[(0,i.bF)((0,s.R1)(W.tk),{class:(0,u.C4)((0,s.R1)(r).e("icon"))},{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.CaretTop))]),_:1},8,["class"])])],14,["onClick"])):(0,i.Q3)("v-if",!0)]),_:3},8,["name"]))}});var ue=(0,m.A)(se,[["__file","backtop.vue"]]);const ce=(0,E.GU)(ue);var de=n(77788),fe=n(81095),pe=n(80047),ve=(n(61701),n(81148),n(1576));const he=(e,t)=>[e>0?e-1:void 0,e,eArray.from(Array.from({length:e}).keys()),ge=e=>e.replace(/\W?m{1,2}|\W?ZZ/g,"").replace(/\W?h{1,2}|\W?s{1,3}|\W?a/gi,"").trim(),be=e=>e.replace(/\W?D{1,2}|\W?Do|\W?d{1,4}|\W?M{1,4}|\W?Y{2,4}/g,"").trim(),ye=function(e,t){const n=(0,u.$P)(e),r=(0,u.$P)(t);return n&&r?e.getTime()===t.getTime():!n&&!r&&e===t},we=function(e,t){const n=(0,u.cy)(e),r=(0,u.cy)(t);return n&&r?e.length===t.length&&e.every((e,n)=>ye(e,t[n])):!n&&!r&&ye(e,t)},Re=function(e,t,n){const r=(0,p.Im)(t)||"x"===t?ve(e).locale(n):ve(e,t).locale(n);return r.isValid()?r:void 0},Ce=function(e,t,n){return(0,p.Im)(t)?e:"x"===t?+e:ve(e).locale(n).format(t)},xe=(e,t)=>{var n;const r=[],o=null==t?void 0:t();for(let a=0;a(0,u.cy)(e)?e.map(e=>e.toDate()):e.toDate(),Ee=(e,t)=>{const n=e.subtract(1,"month").endOf("month").date();return me(t).map((e,r)=>n-(t-r-1))},_e=e=>{const t=e.daysInMonth();return me(t).map((e,t)=>t+1)},Se=e=>me(e.length/7).map(t=>{const n=7*t;return e.slice(n,n+7)}),Me=(0,f.b_)({selectedDay:{type:(0,f.jq)(Object)},range:{type:(0,f.jq)(Array)},date:{type:(0,f.jq)(Object),required:!0},hideHeader:{type:Boolean}}),Le={pick:e=>(0,u.Gv)(e)};var Ae=n(92317);const Oe=["year","years","month","months","date","dates","week","datetime","datetimerange","daterange","monthrange","yearrange"],Te=["sun","mon","tue","wed","thu","fri","sat"];var Ie=n(49700);const Ne=(e,t)=>{ve.extend(Ae);const n=ve.localeData().firstDayOfWeek(),{t:r,lang:o}=(0,Ie.Ym)(),a=ve().locale(o.value),l=(0,i.EW)(()=>!!e.range&&!!e.range.length),s=(0,i.EW)(()=>{let t=[];if(l.value){const[n,r]=e.range,o=me(r.date()-n.date()+1).map(e=>({text:n.date()+e,type:"current"}));let a=o.length%7;a=0===a?0:7-a;const l=me(a).map((e,t)=>({text:t+1,type:"next"}));t=o.concat(l)}else{const r=e.date.startOf("month").day(),o=Ee(e.date,(r-n+7)%7).map(e=>({text:e,type:"prev"})),a=_e(e.date).map(e=>({text:e,type:"current"}));t=[...o,...a];const l=7-(t.length%7||7),i=me(l).map((e,t)=>({text:t+1,type:"next"}));t=t.concat(i)}return Se(t)}),u=(0,i.EW)(()=>{const e=n;return 0===e?Te.map(e=>r(`el.datepicker.weeks.${e}`)):Te.slice(e).concat(Te.slice(0,e)).map(e=>r(`el.datepicker.weeks.${e}`))}),c=(t,n)=>{switch(n){case"prev":return e.date.startOf("month").subtract(1,"month").date(t);case"next":return e.date.startOf("month").add(1,"month").date(t);case"current":return e.date.date(t)}},d=({text:e,type:n})=>{const r=c(e,n);t("pick",r)},f=({text:t,type:n})=>{const r=c(t,n);return{isSelected:r.isSame(e.selectedDay),type:`${n}-month`,day:r.format("YYYY-MM-DD"),date:r.toDate()}};return{now:a,isInRange:l,rows:s,weekDays:u,getFormattedDate:c,handlePickDay:d,getSlotData:f}},We=(0,i.pM)({name:"DateTable"}),De=(0,i.pM)({...We,props:Me,emits:Le,setup(e,{expose:t,emit:n}){const r=e,{isInRange:o,now:a,rows:l,weekDays:c,getFormattedDate:d,handlePickDay:f,getSlotData:p}=Ne(r,n),v=(0,g.DU)("calendar-table"),h=(0,g.DU)("calendar-day"),m=({text:e,type:t})=>{const n=[t];if("current"===t){const o=d(e,t);o.isSame(r.selectedDay,"day")&&n.push(h.is("selected")),o.isSame(a,"day")&&n.push(h.is("today"))}return n};return t({getFormattedDate:d}),(e,t)=>((0,i.uX)(),(0,i.CE)("table",{class:(0,u.C4)([(0,s.R1)(v).b(),(0,s.R1)(v).is("range",(0,s.R1)(o))]),cellspacing:"0",cellpadding:"0"},[e.hideHeader?(0,i.Q3)("v-if",!0):((0,i.uX)(),(0,i.CE)("thead",{key:0},[(0,i.Lk)("tr",null,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(c),e=>((0,i.uX)(),(0,i.CE)("th",{key:e,scope:"col"},(0,u.v_)(e),1))),128))])])),(0,i.Lk)("tbody",null,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(l),(t,n)=>((0,i.uX)(),(0,i.CE)("tr",{key:n,class:(0,u.C4)({[(0,s.R1)(v).e("row")]:!0,[(0,s.R1)(v).em("row","hide-border")]:0===n&&e.hideHeader})},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(t,(t,n)=>((0,i.uX)(),(0,i.CE)("td",{key:n,class:(0,u.C4)(m(t)),onClick:e=>(0,s.R1)(f)(t)},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(h).b())},[(0,i.RG)(e.$slots,"date-cell",{data:(0,s.R1)(p)(t)},()=>[(0,i.Lk)("span",null,(0,u.v_)(t.text),1)])],2)],10,["onClick"]))),128))],2))),128))])],2))}});var Pe=(0,m.A)(De,[["__file","date-table.vue"]]);n(13579);const Fe=(e,t)=>{const n=e.endOf("month"),r=t.startOf("month"),o=n.isSame(r,"week"),a=o?r.add(1,"week"):r;return[[e,n],[a.startOf("week"),t]]},Be=(e,t)=>{const n=e.endOf("month"),r=e.add(1,"month").startOf("month"),o=n.isSame(r,"week")?r.add(1,"week"):r,a=o.endOf("month"),l=t.startOf("month"),i=a.isSame(l,"week")?l.add(1,"week"):l;return[[e,n],[o.startOf("week"),a],[i.startOf("week"),t]]},ze=(e,t,n)=>{const{lang:r}=(0,Ie.Ym)(),o=(0,s.KR)(),a=ve().locale(r.value),l=(0,i.EW)({get(){return e.modelValue?f.value:o.value},set(e){if(!e)return;o.value=e;const n=e.toDate();t(d.qs,n),t(d.l4,n)}}),c=(0,i.EW)(()=>{if(!e.range||!(0,u.cy)(e.range)||2!==e.range.length||e.range.some(e=>!(0,u.$P)(e)))return[];const t=e.range.map(e=>ve(e).locale(r.value)),[o,a]=t;return o.isAfter(a)?((0,w.U)(n,"end time should be greater than start time"),[]):o.isSame(a,"month")?g(o,a):o.add(1,"month").month()!==a.month()?((0,w.U)(n,"start time and end time interval must not exceed two months"),[]):g(o,a)}),f=(0,i.EW)(()=>e.modelValue?ve(e.modelValue).locale(r.value):l.value||(c.value.length?c.value[0][0]:a)),p=(0,i.EW)(()=>f.value.subtract(1,"month").date(1)),v=(0,i.EW)(()=>f.value.add(1,"month").date(1)),h=(0,i.EW)(()=>f.value.subtract(1,"year").date(1)),m=(0,i.EW)(()=>f.value.add(1,"year").date(1)),g=(e,t)=>{const r=e.startOf("week"),o=t.endOf("week"),a=r.get("month"),l=o.get("month");return a===l?[[r,o]]:(a+1)%12===l?Fe(r,o):a+2===l||(a+1)%11===l?Be(r,o):((0,w.U)(n,"start time and end time interval must not exceed two months"),[])},b=e=>{l.value=e},y=e=>{const t={"prev-month":p.value,"next-month":v.value,"prev-year":h.value,"next-year":m.value,today:a},n=t[e];n.isSame(f.value,"day")||b(n)};return{calculateValidatedDateRange:g,date:f,realSelectedDay:l,pickDay:b,selectDate:y,validatedRange:c}},$e=e=>(0,u.cy)(e)&&2===e.length&&e.every(e=>(0,u.$P)(e)),Ve=(0,f.b_)({modelValue:{type:Date},range:{type:(0,f.jq)(Array),validator:$e}}),je={[d.l4]:e=>(0,u.$P)(e),[d.qs]:e=>(0,u.$P)(e)},Ke="ElCalendar",He=(0,i.pM)({name:Ke}),Xe=(0,i.pM)({...He,props:Ve,emits:je,setup(e,{expose:t,emit:n}){const r=e,o=(0,g.DU)("calendar"),{calculateValidatedDateRange:a,date:l,pickDay:c,realSelectedDay:d,selectDate:f,validatedRange:p}=ze(r,n,Ke),{t:v}=(0,Ie.Ym)(),h=(0,i.EW)(()=>{const e=`el.datepicker.month${l.value.format("M")}`;return`${l.value.year()} ${v("el.datepicker.year")} ${v(e)}`});return t({selectedDay:d,pickDay:c,selectDate:f,calculateValidatedDateRange:a}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)((0,s.R1)(o).b())},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(o).e("header"))},[(0,i.RG)(e.$slots,"header",{date:(0,s.R1)(h)},()=>[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(o).e("title"))},(0,u.v_)((0,s.R1)(h)),3),0===(0,s.R1)(p).length?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(o).e("button-group"))},[(0,i.bF)((0,s.R1)(pe.fg),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(pe.S2),{size:"small",onClick:e=>(0,s.R1)(f)("prev-month")},{default:(0,i.k6)(()=>[(0,i.eW)((0,u.v_)((0,s.R1)(v)("el.datepicker.prevMonth")),1)]),_:1},8,["onClick"]),(0,i.bF)((0,s.R1)(pe.S2),{size:"small",onClick:e=>(0,s.R1)(f)("today")},{default:(0,i.k6)(()=>[(0,i.eW)((0,u.v_)((0,s.R1)(v)("el.datepicker.today")),1)]),_:1},8,["onClick"]),(0,i.bF)((0,s.R1)(pe.S2),{size:"small",onClick:e=>(0,s.R1)(f)("next-month")},{default:(0,i.k6)(()=>[(0,i.eW)((0,u.v_)((0,s.R1)(v)("el.datepicker.nextMonth")),1)]),_:1},8,["onClick"])]),_:1})],2)):(0,i.Q3)("v-if",!0)])],2),0===(0,s.R1)(p).length?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(o).e("body"))},[(0,i.bF)(Pe,{date:(0,s.R1)(l),"selected-day":(0,s.R1)(d),onPick:(0,s.R1)(c)},(0,i.eX)({_:2},[e.$slots["date-cell"]?{name:"date-cell",fn:(0,i.k6)(t=>[(0,i.RG)(e.$slots,"date-cell",(0,u._B)((0,i.Ng)(t)))])}:void 0]),1032,["date","selected-day","onPick"])],2)):((0,i.uX)(),(0,i.CE)("div",{key:1,class:(0,u.C4)((0,s.R1)(o).e("body"))},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(p),(t,n)=>((0,i.uX)(),(0,i.Wv)(Pe,{key:n,date:t[0],"selected-day":(0,s.R1)(d),range:t,"hide-header":0!==n,onPick:(0,s.R1)(c)},(0,i.eX)({_:2},[e.$slots["date-cell"]?{name:"date-cell",fn:(0,i.k6)(t=>[(0,i.RG)(e.$slots,"date-cell",(0,u._B)((0,i.Ng)(t)))])}:void 0]),1032,["date","selected-day","range","hide-header","onPick"]))),128))],2))],2))}});var Ue=(0,m.A)(Xe,[["__file","calendar.vue"]]);const Ge=(0,E.GU)(Ue);var qe=n(70683);const Ye=(0,f.b_)({initialIndex:{type:Number,default:0},height:{type:String,default:""},trigger:{type:String,values:["hover","click"],default:"hover"},autoplay:{type:Boolean,default:!0},interval:{type:Number,default:3e3},indicatorPosition:{type:String,values:["","none","outside"],default:""},arrow:{type:String,values:["always","hover","never"],default:"hover"},type:{type:String,values:["","card"],default:""},cardScale:{type:Number,default:.83},loop:{type:Boolean,default:!0},direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},pauseOnHover:{type:Boolean,default:!0},motionBlur:Boolean}),Qe={change:(e,t)=>[e,t].every(p.Et)};n(22489);var Ze=n(65943);const Je=Symbol("carouselContextKey"),et="ElCarouselItem";var tt=n(7023),nt=n(96139);const rt=300,ot=(e,t,n)=>{const{children:r,addChild:o,removeChild:a,ChildrenSorter:l}=(0,tt.W)((0,i.nI)(),et),f=(0,i.Ht)(),p=(0,s.KR)(-1),v=(0,s.KR)(null),h=(0,s.KR)(!1),m=(0,s.KR)(),g=(0,s.KR)(0),b=(0,s.KR)(!0),y=(0,i.EW)(()=>"never"!==e.arrow&&!(0,s.R1)(x)),R=(0,i.EW)(()=>r.value.some(e=>e.props.label.toString().length>0)),C=(0,i.EW)(()=>"card"===e.type),x=(0,i.EW)(()=>"vertical"===e.direction),k=(0,i.EW)(()=>"auto"!==e.height?{height:e.height}:{height:`${g.value}px`,overflow:"hidden"}),E=(0,Ze.A)(e=>{O(e)},rt,{trailing:!0}),_=(0,Ze.A)(e=>{B(e)},rt),S=e=>!b.value||(p.value<=1?e<=1:e>1);function M(){v.value&&(clearInterval(v.value),v.value=null)}function L(){e.interval<=0||!e.autoplay||v.value||(v.value=setInterval(()=>A(),e.interval))}const A=()=>{p.valuee.props.name===t);e.length>0&&(t=r.value.indexOf(e[0]))}if(t=Number(t),Number.isNaN(t)||t!==Math.floor(t))return void(0,w.U)(n,"index must be integer.");const o=r.value.length,a=p.value;p.value=t<0?e.loop?o-1:0:t>=o?e.loop?0:o-1:t,a===p.value&&T(a),V()}function T(e){r.value.forEach((t,n)=>{t.translateItem(n,p.value,e)})}function I(e,t){var n,o,a,l;const i=(0,s.R1)(r),u=i.length;if(0===u||!e.states.inStage)return!1;const c=t+1,d=t-1,f=u-1,p=i[f].states.active,v=i[0].states.active,h=null==(o=null==(n=i[c])?void 0:n.states)?void 0:o.active,m=null==(l=null==(a=i[d])?void 0:a.states)?void 0:l.active;return t===f&&v||h?"left":!!(0===t&&p||m)&&"right"}function N(){h.value=!0,e.pauseOnHover&&M()}function W(){h.value=!1,L()}function D(e){(0,s.R1)(x)||r.value.forEach((t,n)=>{e===I(t,n)&&(t.states.hover=!0)})}function P(){(0,s.R1)(x)||r.value.forEach(e=>{e.states.hover=!1})}function F(e){p.value=e}function B(t){"hover"===e.trigger&&t!==p.value&&(p.value=t)}function z(){O(p.value-1)}function $(){O(p.value+1)}function V(){M(),e.pauseOnHover||L()}function j(t){"auto"===e.height&&(g.value=t)}function K(){var t;const n=null==(t=f.default)?void 0:t.call(f);if(!n)return null;const r=(0,nt.CW)(n),o=r.filter(e=>(0,i.vv)(e)&&e.type.name===et);return 2===(null==o?void 0:o.length)&&e.loop&&!C.value?(b.value=!0,o):(b.value=!1,null)}(0,i.wB)(()=>p.value,(e,n)=>{T(n),b.value&&(e%=2,n%=2),n>-1&&t(d.YU,e,n)});const H=(0,i.EW)({get:()=>b.value?p.value%2:p.value,set:e=>p.value=e});(0,i.wB)(()=>e.autoplay,e=>{e?L():M()}),(0,i.wB)(()=>e.loop,()=>{O(p.value)}),(0,i.wB)(()=>e.interval,()=>{V()});const X=(0,s.IJ)();return(0,i.sV)(()=>{(0,i.wB)(()=>r.value,()=>{r.value.length>0&&O(e.initialIndex)},{immediate:!0}),X.value=(0,c.wYm)(m.value,()=>{T()}),L()}),(0,i.xo)(()=>{M(),m.value&&X.value&&X.value.stop()}),(0,i.Gt)(Je,{root:m,isCardType:C,isVertical:x,items:r,loop:e.loop,cardScale:e.cardScale,addItem:o,removeItem:a,setActiveItem:O,setContainerHeight:j}),{root:m,activeIndex:p,exposeActiveIndex:H,arrowDisplay:y,hasLabel:R,hover:h,isCardType:C,items:r,isVertical:x,containerStyle:k,isItemsTwoLength:b,handleButtonEnter:D,handleButtonLeave:P,handleIndicatorClick:F,handleMouseEnter:N,handleMouseLeave:W,setActiveItem:O,prev:z,next:$,PlaceholderItem:K,isTwoLengthShow:S,ItemsSorter:l,throttledArrowClick:E,throttledIndicatorHover:_}},at="ElCarousel",lt=(0,i.pM)({name:at}),it=(0,i.pM)({...lt,props:Ye,emits:Qe,setup(e,{expose:t,emit:n}){const r=e,{root:o,activeIndex:a,exposeActiveIndex:l,arrowDisplay:c,hasLabel:d,hover:f,isCardType:p,items:v,isVertical:h,containerStyle:m,handleButtonEnter:b,handleButtonLeave:y,handleIndicatorClick:w,handleMouseEnter:R,handleMouseLeave:C,setActiveItem:x,prev:k,next:E,PlaceholderItem:_,isTwoLengthShow:S,ItemsSorter:L,throttledArrowClick:A,throttledIndicatorHover:T}=ot(r,n,at),I=(0,g.DU)("carousel"),{t:N}=(0,Ie.Ym)(),D=(0,i.EW)(()=>{const e=[I.b(),I.m(r.direction)];return(0,s.R1)(p)&&e.push(I.m("card")),e}),P=(0,i.EW)(()=>{const e=[I.e("indicators"),I.em("indicators",r.direction)];return(0,s.R1)(d)&&e.push(I.em("indicators","labels")),"outside"===r.indicatorPosition&&e.push(I.em("indicators","outside")),(0,s.R1)(h)&&e.push(I.em("indicators","right")),e});function F(e){if(!r.motionBlur)return;const t=(0,s.R1)(h)?`${I.namespace.value}-transitioning-vertical`:`${I.namespace.value}-transitioning`;e.currentTarget.classList.add(t)}function B(e){if(!r.motionBlur)return;const t=(0,s.R1)(h)?`${I.namespace.value}-transitioning-vertical`:`${I.namespace.value}-transitioning`;e.currentTarget.classList.remove(t)}return t({activeIndex:l,setActiveItem:x,prev:k,next:E}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{ref_key:"root",ref:o,class:(0,u.C4)((0,s.R1)(D)),onMouseenter:(0,M.D$)((0,s.R1)(R),["stop"]),onMouseleave:(0,M.D$)((0,s.R1)(C),["stop"])},[(0,s.R1)(c)?((0,i.uX)(),(0,i.Wv)(M.eB,{key:0,name:"carousel-arrow-left",persisted:""},{default:(0,i.k6)(()=>[(0,i.bo)((0,i.Lk)("button",{type:"button",class:(0,u.C4)([(0,s.R1)(I).e("arrow"),(0,s.R1)(I).em("arrow","left")]),"aria-label":(0,s.R1)(N)("el.carousel.leftArrow"),onMouseenter:e=>(0,s.R1)(b)("left"),onMouseleave:(0,s.R1)(y),onClick:(0,M.D$)(e=>(0,s.R1)(A)((0,s.R1)(a)-1),["stop"])},[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.ArrowLeft))]),_:1})],42,["aria-label","onMouseenter","onMouseleave","onClick"]),[[M.aG,("always"===e.arrow||(0,s.R1)(f))&&(e.loop||(0,s.R1)(a)>0)]])]),_:1})):(0,i.Q3)("v-if",!0),(0,s.R1)(c)?((0,i.uX)(),(0,i.Wv)(M.eB,{key:1,name:"carousel-arrow-right",persisted:""},{default:(0,i.k6)(()=>[(0,i.bo)((0,i.Lk)("button",{type:"button",class:(0,u.C4)([(0,s.R1)(I).e("arrow"),(0,s.R1)(I).em("arrow","right")]),"aria-label":(0,s.R1)(N)("el.carousel.rightArrow"),onMouseenter:e=>(0,s.R1)(b)("right"),onMouseleave:(0,s.R1)(y),onClick:(0,M.D$)(e=>(0,s.R1)(A)((0,s.R1)(a)+1),["stop"])},[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.ArrowRight))]),_:1})],42,["aria-label","onMouseenter","onMouseleave","onClick"]),[[M.aG,("always"===e.arrow||(0,s.R1)(f))&&(e.loop||(0,s.R1)(a)<(0,s.R1)(v).length-1)]])]),_:1})):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(I).e("container")),style:(0,u.Tr)((0,s.R1)(m)),onTransitionstart:F,onTransitionend:B},[(0,i.bF)((0,s.R1)(_)),(0,i.RG)(e.$slots,"default")],38),(0,i.bF)((0,s.R1)(L),null,{default:(0,i.k6)(()=>["none"!==e.indicatorPosition?((0,i.uX)(),(0,i.CE)("ul",{key:0,class:(0,u.C4)((0,s.R1)(P))},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(v),(t,n)=>(0,i.bo)(((0,i.uX)(),(0,i.CE)("li",{key:n,class:(0,u.C4)([(0,s.R1)(I).e("indicator"),(0,s.R1)(I).em("indicator",e.direction),(0,s.R1)(I).is("active",n===(0,s.R1)(a))]),onMouseenter:e=>(0,s.R1)(T)(n),onClick:(0,M.D$)(e=>(0,s.R1)(w)(n),["stop"])},[(0,i.Lk)("button",{class:(0,u.C4)((0,s.R1)(I).e("button")),"aria-label":(0,s.R1)(N)("el.carousel.indicator",{index:n+1})},[(0,s.R1)(d)?((0,i.uX)(),(0,i.CE)("span",{key:0},(0,u.v_)(t.props.label),1)):(0,i.Q3)("v-if",!0)],10,["aria-label"])],42,["onMouseenter","onClick"])),[[M.aG,(0,s.R1)(S)(n)]])),128))],2)):(0,i.Q3)("v-if",!0)]),_:1}),e.motionBlur?((0,i.uX)(),(0,i.CE)("svg",{key:2,xmlns:"http://www.w3.org/2000/svg",version:"1.1",style:{display:"none"}},[(0,i.Lk)("defs",null,[(0,i.Lk)("filter",{id:"elCarouselHorizontal"},[(0,i.Lk)("feGaussianBlur",{in:"SourceGraphic",stdDeviation:"12,0"})]),(0,i.Lk)("filter",{id:"elCarouselVertical"},[(0,i.Lk)("feGaussianBlur",{in:"SourceGraphic",stdDeviation:"0,10"})])])])):(0,i.Q3)("v-if",!0)],42,["onMouseenter","onMouseleave"]))}});var st=(0,m.A)(it,[["__file","carousel.vue"]]);const ut=(0,f.b_)({name:{type:String,default:""},label:{type:[String,Number],default:""}}),ct=e=>{const t=(0,i.WQ)(Je),n=(0,i.nI)();t||(0,w.U)(et,"usage: "),n||(0,w.U)(et,"compositional hook can only be invoked inside setups");const r=(0,s.KR)(),o=(0,s.KR)(!1),a=(0,s.KR)(0),l=(0,s.KR)(1),u=(0,s.KR)(!1),c=(0,s.KR)(!1),d=(0,s.KR)(!1),f=(0,s.KR)(!1),{isCardType:v,isVertical:h,cardScale:m}=t;function g(e,t,n){const r=n-1,o=t-1,a=t+1,l=n/2;return 0===t&&e===r?-1:t===r&&0===e?n:e=l?n+1:e>a&&e-t>=l?-2:e}function b(e,n){var r,o;const a=(0,s.R1)(h)?(null==(r=t.root.value)?void 0:r.offsetHeight)||0:(null==(o=t.root.value)?void 0:o.offsetWidth)||0;return d.value?a*((2-m)*(e-n)+1)/4:e{var i;const w=(0,s.R1)(v),R=null!=(i=t.items.value.length)?i:Number.NaN,C=e===n;w||(0,p.b0)(o)||(f.value=C||e===o),!C&&R>2&&t.loop&&(e=g(e,n,R));const x=(0,s.R1)(h);u.value=C,w?(d.value=Math.round(Math.abs(e-n))<=1,a.value=b(e,n),l.value=(0,s.R1)(u)?1:m):a.value=y(e,n,x),c.value=!0,C&&r.value&&t.setContainerHeight(r.value.offsetHeight)};function C(){if(t&&(0,s.R1)(v)){const e=t.items.value.findIndex(({uid:e})=>e===n.uid);t.setActiveItem(e)}}const x={props:e,states:(0,s.Kh)({hover:o,translate:a,scale:l,active:u,ready:c,inStage:d,animating:f}),uid:n.uid,getVnode:()=>n.vnode,translateItem:R};return t.addItem(x),(0,i.xo)(()=>{t.removeItem(x)}),{carouselItemRef:r,active:u,animating:f,hover:o,inStage:d,isVertical:h,translate:a,isCardType:v,scale:l,ready:c,handleItemClick:C}},dt=(0,i.pM)({name:et}),ft=(0,i.pM)({...dt,props:ut,setup(e){const t=e,n=(0,g.DU)("carousel"),{carouselItemRef:r,active:o,animating:a,hover:l,inStage:c,isVertical:d,translate:f,isCardType:p,scale:v,ready:h,handleItemClick:m}=ct(t),b=(0,i.EW)(()=>[n.e("item"),n.is("active",o.value),n.is("in-stage",c.value),n.is("hover",l.value),n.is("animating",a.value),{[n.em("item","card")]:p.value,[n.em("item","card-vertical")]:p.value&&d.value}]),y=(0,i.EW)(()=>{const e="translate"+((0,s.R1)(d)?"Y":"X"),t=`${e}(${(0,s.R1)(f)}px)`,n=`scale(${(0,s.R1)(v)})`,r=[t,n].join(" ");return{transform:r}});return(e,t)=>(0,i.bo)(((0,i.uX)(),(0,i.CE)("div",{ref_key:"carouselItemRef",ref:r,class:(0,u.C4)((0,s.R1)(b)),style:(0,u.Tr)((0,s.R1)(y)),onClick:(0,s.R1)(m)},[(0,s.R1)(p)?(0,i.bo)(((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(n).e("mask"))},null,2)),[[M.aG,!(0,s.R1)(o)]]):(0,i.Q3)("v-if",!0),(0,i.RG)(e.$slots,"default")],14,["onClick"])),[[M.aG,(0,s.R1)(h)]])}});var pt=(0,m.A)(ft,[["__file","carousel-item.vue"]]);const vt=(0,E.GU)(st,{CarouselItem:pt}),ht=(0,E.WM)(pt);var mt=n(35856),gt=n(39195),bt=n(92308),yt=1/0;function wt(e){var t=null==e?0:e.length;return t?(0,bt.A)(e,yt):[]}var Rt=wt,Ct=n(98469),xt=n(66810);const kt=Symbol();function Et(e){return!!((0,u.cy)(e)?e.every(({type:e})=>e===i.Mw):(null==e?void 0:e.type)===i.Mw)}var _t=(0,i.pM)({name:"NodeContent",props:{node:{type:Object,required:!0}},setup(e){const t=(0,g.DU)("cascader-node"),{renderLabelFn:n}=(0,i.WQ)(kt),{node:r}=e,{data:o,label:a}=r,l=()=>{const e=null==n?void 0:n({node:r,data:o});return Et(e)?a:null!=e?e:a};return()=>(0,i.bF)("span",{class:t.e("label")},[l()])}});const St=(0,i.pM)({name:"ElCascaderNode"}),Mt=(0,i.pM)({...St,props:{node:{type:Object,required:!0},menuId:String},emits:["expand"],setup(e,{emit:t}){const n=e,r=(0,i.WQ)(kt),o=(0,g.DU)("cascader-node"),a=(0,i.EW)(()=>r.isHoverMenu),l=(0,i.EW)(()=>r.config.multiple),c=(0,i.EW)(()=>r.config.checkStrictly),d=(0,i.EW)(()=>r.config.showPrefix),f=(0,i.EW)(()=>{var e;return null==(e=r.checkedNodes[0])?void 0:e.uid}),p=(0,i.EW)(()=>n.node.isDisabled),v=(0,i.EW)(()=>n.node.isLeaf),h=(0,i.EW)(()=>c.value&&!v.value||!p.value),m=(0,i.EW)(()=>y(r.expandingNode)),b=(0,i.EW)(()=>c.value&&r.checkedNodes.some(y)),y=e=>{var t;const{level:r,uid:o}=n.node;return(null==(t=null==e?void 0:e.pathNodes[r-1])?void 0:t.uid)===o},w=()=>{m.value||r.expandNode(n.node)},R=e=>{const{node:t}=n;e!==t.checked&&r.handleCheckChange(t,e)},C=()=>{r.lazyLoad(n.node,()=>{v.value||w()})},x=e=>{a.value&&(k(),!v.value&&t("expand",e))},k=()=>{const{node:e}=n;h.value&&!e.loading&&(e.loaded?w():C())},E=()=>{!v.value||p.value||c.value||l.value?(r.config.checkOnClickNode&&(l.value||c.value)||v.value&&r.config.checkOnClickLeaf)&&!p.value?_(!n.node.checked):a.value||k():S(!0)},_=e=>{c.value?(R(e),n.node.loaded&&w()):S(e)},S=e=>{n.node.loaded?(R(e),!c.value&&w()):C()};return(t,n)=>((0,i.uX)(),(0,i.CE)("li",{id:`${e.menuId}-${e.node.uid}`,role:"menuitem","aria-haspopup":!(0,s.R1)(v),"aria-owns":(0,s.R1)(v)?void 0:e.menuId,"aria-expanded":(0,s.R1)(m),tabindex:(0,s.R1)(h)?-1:void 0,class:(0,u.C4)([(0,s.R1)(o).b(),(0,s.R1)(o).is("selectable",(0,s.R1)(c)),(0,s.R1)(o).is("active",e.node.checked),(0,s.R1)(o).is("disabled",!(0,s.R1)(h)),(0,s.R1)(m)&&"in-active-path",(0,s.R1)(b)&&"in-checked-path"]),onMouseenter:x,onFocus:x,onClick:E},[(0,i.Q3)(" prefix "),(0,s.R1)(l)&&(0,s.R1)(d)?((0,i.uX)(),(0,i.Wv)((0,s.R1)(Ct.dI),{key:0,"model-value":e.node.checked,indeterminate:e.node.indeterminate,disabled:(0,s.R1)(p),onClick:(0,M.D$)(()=>{},["stop"]),"onUpdate:modelValue":_},null,8,["model-value","indeterminate","disabled","onClick"])):(0,s.R1)(c)&&(0,s.R1)(d)?((0,i.uX)(),(0,i.Wv)((0,s.R1)(xt.ll),{key:1,"model-value":(0,s.R1)(f),label:e.node.uid,disabled:(0,s.R1)(p),"onUpdate:modelValue":_,onClick:(0,M.D$)(()=>{},["stop"])},{default:(0,i.k6)(()=>[(0,i.Q3)("\n Add an empty element to avoid render label,\n do not use empty fragment here for https://github.com/vuejs/vue-next/pull/2485\n "),(0,i.Lk)("span")]),_:1},8,["model-value","label","disabled","onClick"])):(0,s.R1)(v)&&e.node.checked?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:2,class:(0,u.C4)((0,s.R1)(o).e("prefix"))},{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.Check))]),_:1},8,["class"])):(0,i.Q3)("v-if",!0),(0,i.Q3)(" content "),(0,i.bF)((0,s.R1)(_t),{node:e.node},null,8,["node"]),(0,i.Q3)(" postfix "),(0,s.R1)(v)?(0,i.Q3)("v-if",!0):((0,i.uX)(),(0,i.CE)(i.FK,{key:3},[e.node.loading?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:0,class:(0,u.C4)([(0,s.R1)(o).is("loading"),(0,s.R1)(o).e("postfix")])},{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.Loading))]),_:1},8,["class"])):((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:1,class:(0,u.C4)(["arrow-right",(0,s.R1)(o).e("postfix")])},{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.ArrowRight))]),_:1},8,["class"]))],64))],42,["id","aria-haspopup","aria-owns","aria-expanded","tabindex"]))}});var Lt=(0,m.A)(Mt,[["__file","node.vue"]]);const At=(0,i.pM)({name:"ElCascaderMenu"}),Ot=(0,i.pM)({...At,props:{nodes:{type:Array,required:!0},index:{type:Number,required:!0}},setup(e){const t=e,n=(0,i.nI)(),r=(0,g.DU)("cascader-menu"),{t:o}=(0,Ie.Ym)(),a=(0,$.Bi)();let l,c;const d=(0,i.WQ)(kt),f=(0,s.KR)(),p=(0,i.EW)(()=>!t.nodes.length),v=(0,i.EW)(()=>!d.initialLoaded),h=(0,i.EW)(()=>`${a.value}-${t.index}`),m=e=>{l=e.target},b=e=>{var t;if(d.isHoverMenu&&l&&f.value)if(l.contains(e.target)){y();const o=n.vnode.el,{left:a}=o.getBoundingClientRect(),{offsetWidth:i,offsetHeight:s}=o,u=e.clientX-a,c=l.offsetTop,d=c+l.offsetHeight,p=(null==(t=o.querySelector(`.${r.e("wrap")}`))?void 0:t.scrollTop)||0;f.value.innerHTML=`\n \n \n `}else c||(c=window.setTimeout(w,d.config.hoverThreshold))},y=()=>{c&&(clearTimeout(c),c=void 0)},w=()=>{f.value&&(f.value.innerHTML="",y())};return(t,n)=>((0,i.uX)(),(0,i.Wv)((0,s.R1)(I.kA),{key:(0,s.R1)(h),tag:"ul",role:"menu",class:(0,u.C4)((0,s.R1)(r).b()),"wrap-class":(0,s.R1)(r).e("wrap"),"view-class":[(0,s.R1)(r).e("list"),(0,s.R1)(r).is("empty",(0,s.R1)(p))],onMousemove:b,onMouseleave:w},{default:(0,i.k6)(()=>{var n;return[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.nodes,e=>((0,i.uX)(),(0,i.Wv)(Lt,{key:e.uid,node:e,"menu-id":(0,s.R1)(h),onExpand:m},null,8,["node","menu-id"]))),128)),(0,s.R1)(v)?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(r).e("empty-text"))},[(0,i.bF)((0,s.R1)(W.tk),{size:"14",class:(0,u.C4)((0,s.R1)(r).is("loading"))},{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.Loading))]),_:1},8,["class"]),(0,i.eW)(" "+(0,u.v_)((0,s.R1)(o)("el.cascader.loading")),1)],2)):(0,s.R1)(p)?((0,i.uX)(),(0,i.CE)("div",{key:1,class:(0,u.C4)((0,s.R1)(r).e("empty-text"))},[(0,i.RG)(t.$slots,"empty",{},()=>[(0,i.eW)((0,u.v_)((0,s.R1)(o)("el.cascader.noData")),1)])],2)):(null==(n=(0,s.R1)(d))?void 0:n.isHoverMenu)?((0,i.uX)(),(0,i.CE)(i.FK,{key:2},[(0,i.Q3)(" eslint-disable-next-line vue/html-self-closing "),((0,i.uX)(),(0,i.CE)("svg",{ref_key:"hoverZone",ref:f,class:(0,u.C4)((0,s.R1)(r).e("hover-zone"))},null,2))],2112)):(0,i.Q3)("v-if",!0)]}),_:3},8,["class","wrap-class","view-class"]))}});var Tt=(0,m.A)(Ot,[["__file","menu.vue"]]);n(20116),n(18237);let It=0;const Nt=e=>{const t=[e];let{parent:n}=e;while(n)t.unshift(n),n=n.parent;return t};class Wt{constructor(e,t,n,r=!1){this.data=e,this.config=t,this.parent=n,this.root=r,this.uid=It++,this.checked=!1,this.indeterminate=!1,this.loading=!1;const{value:o,label:a,children:l}=t,i=e[l],s=Nt(this);this.level=r?0:n?n.level+1:1,this.value=e[o],this.label=e[a],this.pathNodes=s,this.pathValues=s.map(e=>e.value),this.pathLabels=s.map(e=>e.label),this.childrenData=i,this.children=(i||[]).map(e=>new Wt(e,t,this)),this.loaded=!t.lazy||this.isLeaf||!(0,p.Im)(i),this.text=""}get isDisabled(){const{data:e,parent:t,config:n}=this,{disabled:r,checkStrictly:o}=n,a=(0,u.Tn)(r)?r(e,this):!!e[r];return a||!o&&!!(null==t?void 0:t.isDisabled)}get isLeaf(){const{data:e,config:t,childrenData:n,loaded:r}=this,{lazy:o,leaf:a}=t,l=(0,u.Tn)(a)?a(e,this):e[a];return(0,p.b0)(l)?!(o&&!r)&&!((0,u.cy)(n)&&n.length):!!l}get valueByOption(){return this.config.emitPath?this.pathValues:this.value}appendChild(e){const{childrenData:t,children:n}=this,r=new Wt(e,this.config,this);return(0,u.cy)(t)?t.push(e):this.childrenData=[e],n.push(r),r}calcText(e,t){const n=e?this.pathLabels.join(t):this.label;return this.text=n,n}broadcast(e){this.children.forEach(t=>{var n;t&&(t.broadcast(e),null==(n=t.onParentCheck)||n.call(t,e))})}emit(){var e;const{parent:t}=this;t&&(null==(e=t.onChildCheck)||e.call(t),t.emit())}onParentCheck(e){this.isDisabled||this.setCheckState(e)}onChildCheck(){const{children:e}=this,t=e.filter(e=>!e.isDisabled),n=!!t.length&&t.every(e=>e.checked);this.setCheckState(n)}setCheckState(e){const t=this.children.length,n=this.children.reduce((e,t)=>{const n=t.checked?1:t.indeterminate?.5:0;return e+n},0);this.checked=this.loaded&&this.children.filter(e=>!e.isDisabled).every(e=>e.loaded&&e.checked)&&e,this.indeterminate=this.loaded&&n!==t&&n>0}doCheck(e){if(this.checked===e)return;const{checkStrictly:t,multiple:n}=this.config;t||!n?this.checked=e:(this.broadcast(e),this.setCheckState(e),this.emit())}}const Dt=(e,t)=>e.reduce((e,n)=>(n.isLeaf?e.push(n):(!t&&e.push(n),e=e.concat(Dt(n.children,t))),e),[]);class Pt{constructor(e,t){this.config=t;const n=(e||[]).map(e=>new Wt(e,this.config));this.nodes=n,this.allNodes=Dt(n,!1),this.leafNodes=Dt(n,!0)}getNodes(){return this.nodes}getFlattedNodes(e){return e?this.leafNodes:this.allNodes}appendNode(e,t){const n=t?t.appendChild(e):new Wt(e,this.config);t||this.nodes.push(n),this.appendAllNodesAndLeafNodes(n)}appendNodes(e,t){e.length>0?e.forEach(e=>this.appendNode(e,t)):t&&t.isLeaf&&this.leafNodes.push(t)}appendAllNodesAndLeafNodes(e){this.allNodes.push(e),e.isLeaf&&this.leafNodes.push(e),e.children&&e.children.forEach(e=>{this.appendAllNodesAndLeafNodes(e)})}getNodeByValue(e,t=!1){if((0,p.Xj)(e))return null;const n=this.getFlattedNodes(t).find(t=>(0,gt.A)(t.value,e)||(0,gt.A)(t.pathValues,e));return n||null}getSameNode(e){if(!e)return null;const t=this.getFlattedNodes(!1).find(({value:t,level:n})=>(0,gt.A)(e.value,t)&&e.level===n);return t||null}}const Ft=(0,f.b_)({modelValue:{type:(0,f.jq)([Number,String,Array,Object])},options:{type:(0,f.jq)(Array),default:()=>[]},props:{type:(0,f.jq)(Object),default:()=>({})}}),Bt={expandTrigger:"click",multiple:!1,checkStrictly:!1,emitPath:!0,lazy:!1,lazyLoad:u.tE,value:"value",label:"label",children:"children",leaf:"leaf",disabled:"disabled",hoverThreshold:500,checkOnClickNode:!1,checkOnClickLeaf:!0,showPrefix:!0},zt=(0,f.b_)({...Ft,border:{type:Boolean,default:!0},renderLabel:{type:Function}}),$t=e=>!0,Vt={[d.l4]:$t,[d.YU]:$t,close:()=>!0,"expand-change":e=>e},jt=e=>(0,i.EW)(()=>({...Bt,...e.props}));var Kt=n(6340);const Ht=e=>{if(!e)return 0;const t=e.id.split("-");return Number(t[t.length-2])},Xt=e=>{if(!e)return;const t=e.querySelector("input");t?t.click():(0,Kt.xe)(e)&&e.click()},Ut=(e,t)=>{const n=t.slice(0),r=n.map(e=>e.uid),o=e.reduce((e,t)=>{const o=r.indexOf(t.uid);return o>-1&&(e.push(t),n.splice(o,1),r.splice(o,1)),e},[]);return o.push(...n),o};var Gt=n(76010);const qt=(0,i.pM)({name:"ElCascaderPanel"}),Yt=(0,i.pM)({...qt,props:zt,emits:Vt,setup(e,{expose:t,emit:n}){const r=e;let o=!1;const a=(0,g.DU)("cascader"),l=jt(r),c=(0,i.Ht)();let f;const v=(0,s.KR)(!0),h=(0,s.KR)(!1),m=(0,s.KR)([]),y=(0,s.KR)(),w=(0,s.KR)([]),R=(0,s.KR)(),C=(0,s.KR)([]),x=(0,i.EW)(()=>"hover"===l.value.expandTrigger),k=(0,i.EW)(()=>r.renderLabel||c.default),E=()=>{const{options:e}=r,t=l.value;o=!1,f=new Pt(e,t),w.value=[f.getNodes()],t.lazy&&(0,p.Im)(r.options)?(v.value=!1,_(void 0,e=>{e&&(f=new Pt(e,t),w.value=[f.getNodes()]),v.value=!0,W(!1,!0)})):W(!1,!0)},_=(e,t)=>{const n=l.value;e=e||new Wt({},n,void 0,!0),e.loading=!0;const r=n=>{const r=e,o=r.root?null:r;r.loading=!1,r.loaded=!0,r.childrenData=r.childrenData||[],n&&(null==f||f.appendNodes(n,o)),n&&(null==t||t(n)),0===e.level&&(h.value=!0)},o=()=>{e.loading=!1,e.loaded=!1,0===e.level&&(v.value=!0)};n.lazyLoad(e,r,o)},S=(e,t)=>{var r;const{level:o}=e,a=w.value.slice(0,o);let l;e.isLeaf?l=e.pathNodes[o-2]:(l=e,a.push(e.children)),(null==(r=R.value)?void 0:r.uid)!==(null==l?void 0:l.uid)&&(R.value=e,w.value=a,!t&&n("expand-change",(null==e?void 0:e.pathValues)||[]))},M=(e,t,r=!0)=>{const{checkStrictly:a,multiple:i}=l.value,s=C.value[0];o=!0,!i&&(null==s||s.doCheck(!1)),e.doCheck(t),N(),r&&!i&&!a&&n("close"),!r&&!i&&L(e)},L=e=>{e&&(e=e.parent,L(e),e&&S(e))},O=e=>null==f?void 0:f.getFlattedNodes(e),T=e=>{var t;return null==(t=O(e))?void 0:t.filter(({checked:e})=>!1!==e)},I=()=>{C.value.forEach(e=>e.doCheck(!1)),N(),w.value=w.value.slice(0,1),R.value=void 0,n("expand-change",[])},N=()=>{var e;const{checkStrictly:t,multiple:n}=l.value,r=C.value,o=T(!t),a=Ut(r,o),i=a.map(e=>e.valueByOption);C.value=a,y.value=n?i:null!=(e=i[0])?e:null},W=(e=!1,t=!1)=>{const{modelValue:n}=r,{lazy:a,multiple:i,checkStrictly:s}=l.value,u=!s;if(v.value&&!o&&(t||!(0,gt.A)(n,y.value)))if(a&&!e){const e=(0,Gt.Am)(Rt((0,Gt.bg)(n))),r=e.map(e=>null==f?void 0:f.getNodeByValue(e)).filter(e=>!!e&&!e.loaded&&!e.loading);r.length?r.forEach(e=>{_(e,()=>W(!1,t))}):W(!0,t)}else{const e=i?(0,Gt.bg)(n):[n],r=(0,Gt.Am)(e.map(e=>null==f?void 0:f.getNodeByValue(e,u)));D(r,t),y.value=(0,mt.A)(null!=n?n:void 0)}},D=(e,t=!0)=>{const{checkStrictly:n}=l.value,r=C.value,o=e.filter(e=>!!e&&(n||e.isLeaf)),a=null==f?void 0:f.getSameNode(R.value),u=t&&a||o[0];u?u.pathNodes.forEach(e=>S(e,!0)):R.value=void 0,r.forEach(e=>e.doCheck(!1)),(0,s.Kh)(o).forEach(e=>e.doCheck(!0)),C.value=o,(0,i.dY)(P)},P=()=>{A.oc&&m.value.forEach(e=>{const t=null==e?void 0:e.$el;if(t){const e=t.querySelector(`.${a.namespace.value}-scrollbar__wrap`),n=t.querySelector(`.${a.b("node")}.${a.is("active")}:last-child`)||t.querySelector(`.${a.b("node")}.in-active-path`);(0,b.Rt)(e,n)}})},F=e=>{const t=e.target,n=(0,V.CG)(e);switch(n){case j.R.up:case j.R.down:{e.preventDefault();const r=n===j.R.up?-1:1;(0,Kt.Lw)((0,Kt.rQ)(t,r,`.${a.b("node")}[tabindex="-1"]`));break}case j.R.left:{e.preventDefault();const n=m.value[Ht(t)-1],r=null==n?void 0:n.$el.querySelector(`.${a.b("node")}[aria-expanded="true"]`);(0,Kt.Lw)(r);break}case j.R.right:{e.preventDefault();const n=m.value[Ht(t)+1],r=null==n?void 0:n.$el.querySelector(`.${a.b("node")}[tabindex="-1"]`);(0,Kt.Lw)(r);break}case j.R.enter:case j.R.numpadEnter:Xt(t);break}};(0,i.Gt)(kt,(0,s.Kh)({config:l,expandingNode:R,checkedNodes:C,isHoverMenu:x,initialLoaded:v,renderLabelFn:k,lazyLoad:_,expandNode:S,handleCheckChange:M})),(0,i.wB)(l,(e,t)=>{(0,gt.A)(e,t)||E()},{immediate:!0}),(0,i.wB)(()=>r.options,E,{deep:!0}),(0,i.wB)(()=>r.modelValue,()=>{o=!1,W()},{deep:!0}),(0,i.wB)(()=>y.value,e=>{(0,gt.A)(e,r.modelValue)||(n(d.l4,e),n(d.YU,e))});const B=()=>{h.value||E()};return(0,i.Ic)(()=>m.value=[]),(0,i.sV)(()=>!(0,p.Im)(r.modelValue)&&W()),t({menuList:m,menus:w,checkedNodes:C,handleKeyDown:F,handleCheckChange:M,getFlattedNodes:O,getCheckedNodes:T,clearCheckedNodes:I,calculateCheckedValue:N,scrollToExpandingNode:P,loadLazyRootNodes:B}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)([(0,s.R1)(a).b("panel"),(0,s.R1)(a).is("bordered",e.border)]),onKeydown:F},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(w.value,(t,n)=>((0,i.uX)(),(0,i.Wv)(Tt,{key:n,ref_for:!0,ref:e=>m.value[n]=e,index:n,nodes:[...t]},{empty:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"empty")]),_:2},1032,["index","nodes"]))),128))],34))}});var Qt=(0,m.A)(Yt,[["__file","index.vue"]]);const Zt=(0,E.GU)(Qt);var Jt=n(12687),en=n(86484),tn=n(3829),nn=n(53845),rn=n(99180);const on=(0,f.b_)({...Ft,size:nn.mU,placeholder:String,disabled:{type:Boolean,default:void 0},clearable:Boolean,clearIcon:{type:Y.Ze,default:O.CircleClose},filterable:Boolean,filterMethod:{type:(0,f.jq)(Function),default:(e,t)=>e.text.includes(t)},separator:{type:String,default:" / "},showAllLevels:{type:Boolean,default:!0},collapseTags:Boolean,maxCollapseTags:{type:Number,default:1},collapseTagsTooltip:Boolean,maxCollapseTagsTooltipHeight:{type:[String,Number]},debounce:{type:Number,default:300},beforeFilter:{type:(0,f.jq)(Function),default:()=>!0},placement:{type:(0,f.jq)(String),values:en.DD,default:"bottom-start"},fallbackPlacements:{type:(0,f.jq)(Array),default:["bottom-start","bottom","top-start","top","right","left"]},popperClass:P.E.popperClass,popperStyle:P.E.popperStyle,teleported:P.E.teleported,effect:{type:(0,f.jq)(String),default:"light"},tagType:{...tn.z.type,default:"info"},tagEffect:{...tn.z.effect,default:"light"},validateEvent:{type:Boolean,default:!0},persistent:{type:Boolean,default:!0},showCheckedStrategy:{type:String,values:["parent","child"],default:"child"},checkOnClickNode:Boolean,showPrefix:{type:Boolean,default:!0},...rn.bs}),an=e=>!0,ln={[d.l4]:an,[d.YU]:an,focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0,visibleChange:e=>(0,p.Lm)(e),expandChange:e=>!!e,removeTag:e=>!!e};var sn=n(72142),un=n(44216),cn=n(25488),dn=n(61939);const fn=(0,i.pM)({name:"ElCascader"}),pn=(0,i.pM)({...fn,props:on,emits:ln,setup(e,{expose:t,emit:n}){const r=e,o={modifiers:[{name:"arrowPosition",enabled:!0,phase:"main",fn:({state:e})=>{const{modifiersData:t,placement:n}=e;["right","left","bottom","top"].includes(n)||t.arrow&&(t.arrow.x=35)},requires:["arrow"]}]},a=(0,i.OA)();let l=0,f=0;const p=(0,g.DU)("cascader"),v=(0,g.DU)("input"),{t:h}=(0,Ie.Ym)(),{formItem:m}=(0,un.j)(),b=(0,z.CB)(),{valueOnClear:y}=(0,rn.fQ)(r),{isComposing:R,handleComposition:C}=(0,cn.o)({afterComposition(e){var t;const n=null==(t=e.target)?void 0:t.value;De(n)}}),x=(0,s.KR)(),k=(0,s.KR)(),E=(0,s.KR)(),_=(0,s.KR)(),S=(0,s.KR)(),L=(0,s.KR)(),D=(0,s.KR)(!1),P=(0,s.KR)(!1),F=(0,s.KR)(!1),B=(0,s.KR)(""),$=(0,s.KR)(""),K=(0,s.KR)([]),H=(0,s.KR)([]),X=(0,i.EW)(()=>r.props.multiple?r.collapseTags?K.value.slice(0,r.maxCollapseTags):K.value:[]),U=(0,i.EW)(()=>r.props.multiple&&r.collapseTags?K.value.slice(r.maxCollapseTags):[]),G=(0,i.EW)(()=>a.style),q=(0,i.EW)(()=>{var e;return null!=(e=r.placeholder)?e:h("el.cascader.placeholder")}),Y=(0,i.EW)(()=>$.value||K.value.length>0||R.value?"":q.value),Q=(0,z.NV)(),Z=(0,i.EW)(()=>"small"===Q.value?"small":"default"),J=(0,i.EW)(()=>!!r.props.multiple),ee=(0,i.EW)(()=>!r.filterable||J.value),te=(0,i.EW)(()=>J.value?$.value:B.value),ne=(0,i.EW)(()=>{var e;return(null==(e=S.value)?void 0:e.checkedNodes)||[]}),{wrapperRef:re,isFocused:oe,handleBlur:ae}=(0,dn.K)(E,{disabled:b,beforeBlur(e){var t,n;return(null==(t=x.value)?void 0:t.isFocusInsideContent(e))||(null==(n=k.value)?void 0:n.isFocusInsideContent(e))},afterBlur(){var e;r.validateEvent&&(null==(e=null==m?void 0:m.validate)||e.call(m,"blur").catch(e=>(0,w.U)(e)))}}),le=(0,i.EW)(()=>!(!r.clearable||b.value||F.value||!P.value&&!oe.value)&&!!ne.value.length),ie=(0,i.EW)(()=>{const{showAllLevels:e,separator:t}=r,n=ne.value;return n.length?J.value?"":n[0].calcText(e,t):""}),se=(0,i.EW)(()=>(null==m?void 0:m.validateState)||""),ue=(0,i.EW)({get(){return(0,mt.A)(r.modelValue)},set(e){const t=null!=e?e:y.value;n(d.l4,t),n(d.YU,t),r.validateEvent&&(null==m||m.validate("change").catch(e=>(0,w.U)(e)))}}),ce=(0,i.EW)(()=>[p.b(),p.m(Q.value),p.is("disabled",b.value),a.class]),de=(0,i.EW)(()=>[v.e("icon"),"icon-arrow-down",p.is("reverse",D.value)]),fe=(0,i.EW)(()=>p.is("focus",oe.value)),pe=(0,i.EW)(()=>{var e,t;return null==(t=null==(e=x.value)?void 0:e.popperRef)?void 0:t.contentRef}),ve=e=>{if(oe.value){const t=new FocusEvent("blur",e);ae(t)}he(!1)},he=e=>{var t,o,a;b.value||(e=null!=e?e:!D.value,e!==D.value&&(D.value=e,null==(o=null==(t=E.value)?void 0:t.input)||o.setAttribute("aria-expanded",`${e}`),e?(me(),(0,i.dY)(null==(a=S.value)?void 0:a.scrollToExpandingNode)):r.filterable&&Le(),n("visibleChange",e)))},me=()=>{(0,i.dY)(()=>{var e;null==(e=x.value)||e.updatePopper()})},ge=()=>{F.value=!1},be=e=>{const{showAllLevels:t,separator:n}=r;return{node:e,key:e.uid,text:e.calcText(t,n),hitState:!1,closable:!b.value&&!e.isDisabled}},ye=e=>{var t;const r=e.node;r.doCheck(!1),null==(t=S.value)||t.calculateCheckedValue(),n("removeTag",r.valueByOption)},we=()=>{switch(r.showCheckedStrategy){case"child":return ne.value;case"parent":{const e=Ee(!1),t=e.map(e=>e.value),n=e.filter(e=>!e.parent||!t.includes(e.parent.value));return n}default:return[]}},Re=()=>{if(!J.value)return;const e=we(),t=[];e.forEach(e=>t.push(be(e))),K.value=t},Ce=()=>{var e,t;const{filterMethod:n,showAllLevels:o,separator:a}=r,l=null==(t=null==(e=S.value)?void 0:e.getFlattedNodes(!r.props.checkStrictly))?void 0:t.filter(e=>!e.isDisabled&&(e.calcText(o,a),n(e,te.value)));J.value&&K.value.forEach(e=>{e.hitState=!1}),F.value=!0,H.value=l,me()},xe=()=>{var e;let t;t=F.value&&L.value?L.value.$el.querySelector(`.${p.e("suggestion-item")}`):null==(e=S.value)?void 0:e.$el.querySelector(`.${p.b("node")}[tabindex="-1"]`),t&&(t.focus(),!F.value&&t.click())},ke=()=>{var e,t;const n=null==(e=E.value)?void 0:e.input,r=_.value,o=null==(t=L.value)?void 0:t.$el;if(A.oc&&n){if(o){const e=o.querySelector(`.${p.e("suggestion-list")}`);e.style.minWidth=`${n.offsetWidth}px`}if(r){const{offsetHeight:e}=r,t=K.value.length>0?Math.max(e,l)-2+"px":`${l}px`;n.style.height=t,me()}}},Ee=e=>{var t;return null==(t=S.value)?void 0:t.getCheckedNodes(e)},_e=e=>{me(),n("expandChange",e)},Se=e=>{if(R.value)return;const t=(0,V.CG)(e);switch(t){case j.R.enter:case j.R.numpadEnter:he();break;case j.R.down:he(!0),(0,i.dY)(xe),e.preventDefault();break;case j.R.esc:!0===D.value&&(e.preventDefault(),e.stopPropagation(),he(!1));break;case j.R.tab:he(!1);break}},Me=()=>{var e;null==(e=S.value)||e.clearCheckedNodes(),!D.value&&r.filterable&&Le(),he(!1),n("clear")},Le=()=>{const{value:e}=ie;B.value=e,$.value=e},Ae=e=>{var t,n;const{checked:r}=e;J.value?null==(t=S.value)||t.handleCheckChange(e,!r,!1):(!r&&(null==(n=S.value)||n.handleCheckChange(e,!0,!1)),he(!1))},Oe=e=>{const t=e.target,n=(0,V.CG)(e);switch(n){case j.R.up:case j.R.down:{e.preventDefault();const r=n===j.R.up?-1:1;(0,Kt.Lw)((0,Kt.rQ)(t,r,`.${p.e("suggestion-item")}[tabindex="-1"]`));break}case j.R.enter:case j.R.numpadEnter:t.click();break}},Te=()=>{const e=K.value[K.value.length-1];f=$.value?0:f+1,!e||!f||r.collapseTags&&K.value.length>1||(e.hitState?ye(e):e.hitState=!0)},Ne=(0,i.EW)(()=>r.debounce),We=(0,A.xD)(()=>{const{value:e}=te;if(!e)return;const t=r.beforeFilter(e);(0,u.yL)(t)?t.then(Ce).catch(()=>{}):!1!==t?Ce():ge()},Ne),De=(e,t)=>{!D.value&&he(!0),(null==t?void 0:t.isComposing)||(e?We():ge())},Pe=e=>Number.parseFloat((0,c.eU5)(v.cssVarName("input-height"),e).value)-2,Fe=()=>{var e;null==(e=E.value)||e.focus()},Be=()=>{var e;null==(e=E.value)||e.blur()};return(0,i.wB)(F,me),(0,i.wB)([ne,b,()=>r.collapseTags,()=>r.maxCollapseTags],Re),(0,i.wB)(K,()=>{(0,i.dY)(()=>ke())}),(0,i.wB)(Q,async()=>{await(0,i.dY)();const e=E.value.input;l=Pe(e)||l,ke()}),(0,i.wB)(ie,Le,{immediate:!0}),(0,i.wB)(()=>D.value,e=>{var t;e&&r.props.lazy&&r.props.lazyLoad&&(null==(t=S.value)||t.loadLazyRootNodes())}),(0,i.sV)(()=>{const e=E.value.input,t=Pe(e);l=e.offsetHeight||t,(0,c.wYm)(e,ke)}),t({getCheckedNodes:Ee,cascaderPanelRef:S,togglePopperVisible:he,contentRef:pe,presentText:ie,focus:Fe,blur:Be}),(e,t)=>((0,i.uX)(),(0,i.Wv)((0,s.R1)(N.R7),{ref_key:"tooltipRef",ref:x,visible:D.value,teleported:e.teleported,"popper-class":[(0,s.R1)(p).e("dropdown"),e.popperClass],"popper-style":e.popperStyle,"popper-options":o,"fallback-placements":e.fallbackPlacements,"stop-popper-mouse-event":!1,"gpu-acceleration":!1,placement:e.placement,transition:`${(0,s.R1)(p).namespace.value}-zoom-in-top`,effect:e.effect,pure:"",persistent:e.persistent,onHide:ge},{default:(0,i.k6)(()=>[(0,i.bo)(((0,i.uX)(),(0,i.CE)("div",{ref_key:"wrapperRef",ref:re,class:(0,u.C4)((0,s.R1)(ce)),style:(0,u.Tr)((0,s.R1)(G)),onClick:()=>he(!(0,s.R1)(ee)||void 0),onKeydown:Se,onMouseenter:e=>P.value=!0,onMouseleave:e=>P.value=!1},[(0,i.bF)((0,s.R1)(T.WK),{ref_key:"inputRef",ref:E,modelValue:B.value,"onUpdate:modelValue":e=>B.value=e,placeholder:(0,s.R1)(Y),readonly:(0,s.R1)(ee),disabled:(0,s.R1)(b),"validate-event":!1,size:(0,s.R1)(Q),class:(0,u.C4)((0,s.R1)(fe)),tabindex:(0,s.R1)(J)&&e.filterable&&!(0,s.R1)(b)?-1:void 0,onCompositionstart:(0,s.R1)(C),onCompositionupdate:(0,s.R1)(C),onCompositionend:(0,s.R1)(C),onInput:De},(0,i.eX)({suffix:(0,i.k6)(()=>[(0,s.R1)(le)?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:"clear",class:(0,u.C4)([(0,s.R1)(v).e("icon"),"icon-circle-close"]),onClick:(0,M.D$)(Me,["stop"])},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)(e.clearIcon)))]),_:1},8,["class","onClick"])):((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:"arrow-down",class:(0,u.C4)((0,s.R1)(de)),onClick:(0,M.D$)(e=>he(),["stop"])},{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.ArrowDown))]),_:1},8,["class","onClick"]))]),_:2},[e.$slots.prefix?{name:"prefix",fn:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"prefix")])}:void 0]),1032,["modelValue","onUpdate:modelValue","placeholder","readonly","disabled","size","class","tabindex","onCompositionstart","onCompositionupdate","onCompositionend"]),(0,s.R1)(J)?((0,i.uX)(),(0,i.CE)("div",{key:0,ref_key:"tagWrapper",ref:_,class:(0,u.C4)([(0,s.R1)(p).e("tags"),(0,s.R1)(p).is("validate",Boolean((0,s.R1)(se)))])},[(0,i.RG)(e.$slots,"tag",{data:K.value,deleteTag:ye},()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(X),t=>((0,i.uX)(),(0,i.Wv)((0,s.R1)(Jt.u),{key:t.key,type:e.tagType,size:(0,s.R1)(Z),effect:e.tagEffect,hit:t.hitState,closable:t.closable,"disable-transitions":"",onClose:e=>ye(t)},{default:(0,i.k6)(()=>[(0,i.Lk)("span",null,(0,u.v_)(t.text),1)]),_:2},1032,["type","size","effect","hit","closable","onClose"]))),128))]),e.collapseTags&&K.value.length>e.maxCollapseTags?((0,i.uX)(),(0,i.Wv)((0,s.R1)(N.R7),{key:0,ref_key:"tagTooltipRef",ref:k,disabled:D.value||!e.collapseTagsTooltip,"fallback-placements":["bottom","top","right","left"],placement:"bottom","popper-class":e.popperClass,"popper-style":e.popperStyle,effect:e.effect,persistent:e.persistent},{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(Jt.u),{closable:!1,size:(0,s.R1)(Z),type:e.tagType,effect:e.tagEffect,"disable-transitions":""},{default:(0,i.k6)(()=>[(0,i.Lk)("span",{class:(0,u.C4)((0,s.R1)(p).e("tags-text"))}," + "+(0,u.v_)(K.value.length-e.maxCollapseTags),3)]),_:1},8,["size","type","effect"])]),content:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(I.kA),{"max-height":e.maxCollapseTagsTooltipHeight},{default:(0,i.k6)(()=>[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(p).e("collapse-tags"))},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(U),(t,n)=>((0,i.uX)(),(0,i.CE)("div",{key:n,class:(0,u.C4)((0,s.R1)(p).e("collapse-tag"))},[((0,i.uX)(),(0,i.Wv)((0,s.R1)(Jt.u),{key:t.key,class:"in-tooltip",type:e.tagType,size:(0,s.R1)(Z),effect:e.tagEffect,hit:t.hitState,closable:t.closable,"disable-transitions":"",onClose:e=>ye(t)},{default:(0,i.k6)(()=>[(0,i.Lk)("span",null,(0,u.v_)(t.text),1)]),_:2},1032,["type","size","effect","hit","closable","onClose"]))],2))),128))],2)]),_:1},8,["max-height"])]),_:1},8,["disabled","popper-class","popper-style","effect","persistent"])):(0,i.Q3)("v-if",!0),e.filterable&&!(0,s.R1)(b)?(0,i.bo)(((0,i.uX)(),(0,i.CE)("input",{key:1,"onUpdate:modelValue":e=>$.value=e,type:"text",class:(0,u.C4)((0,s.R1)(p).e("search-input")),placeholder:(0,s.R1)(ie)?"":(0,s.R1)(q),onInput:e=>De($.value,e),onClick:(0,M.D$)(e=>he(!0),["stop"]),onKeydown:(0,M.jR)(Te,["delete"]),onCompositionstart:(0,s.R1)(C),onCompositionupdate:(0,s.R1)(C),onCompositionend:(0,s.R1)(C)},null,42,["onUpdate:modelValue","placeholder","onInput","onClick","onKeydown","onCompositionstart","onCompositionupdate","onCompositionend"])),[[M.Jo,$.value]]):(0,i.Q3)("v-if",!0)],2)):(0,i.Q3)("v-if",!0)],46,["onClick","onMouseenter","onMouseleave"])),[[(0,s.R1)(sn.A),ve,(0,s.R1)(pe)]])]),content:(0,i.k6)(()=>[e.$slots.header?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(p).e("header")),onClick:(0,M.D$)(()=>{},["stop"])},[(0,i.RG)(e.$slots,"header")],10,["onClick"])):(0,i.Q3)("v-if",!0),(0,i.bo)((0,i.bF)((0,s.R1)(Zt),{ref_key:"cascaderPanelRef",ref:S,modelValue:(0,s.R1)(ue),"onUpdate:modelValue":e=>(0,s.i9)(ue)?ue.value=e:null,options:e.options,props:r.props,border:!1,"render-label":e.$slots.default,onExpandChange:_e,onClose:t=>e.$nextTick(()=>he(!1))},{empty:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"empty")]),_:3},8,["modelValue","onUpdate:modelValue","options","props","render-label","onClose"]),[[M.aG,!F.value]]),e.filterable?(0,i.bo)(((0,i.uX)(),(0,i.Wv)((0,s.R1)(I.kA),{key:1,ref_key:"suggestionPanel",ref:L,tag:"ul",class:(0,u.C4)((0,s.R1)(p).e("suggestion-panel")),"view-class":(0,s.R1)(p).e("suggestion-list"),onKeydown:Oe},{default:(0,i.k6)(()=>[H.value.length?((0,i.uX)(!0),(0,i.CE)(i.FK,{key:0},(0,i.pI)(H.value,t=>((0,i.uX)(),(0,i.CE)("li",{key:t.uid,class:(0,u.C4)([(0,s.R1)(p).e("suggestion-item"),(0,s.R1)(p).is("checked",t.checked)]),tabindex:-1,onClick:e=>Ae(t)},[(0,i.RG)(e.$slots,"suggestion-item",{item:t},()=>[(0,i.Lk)("span",null,(0,u.v_)(t.text),1),t.checked?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:0},{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.Check))]),_:1})):(0,i.Q3)("v-if",!0)])],10,["onClick"]))),128)):(0,i.RG)(e.$slots,"empty",{key:1},()=>[(0,i.Lk)("li",{class:(0,u.C4)((0,s.R1)(p).e("empty-text"))},(0,u.v_)((0,s.R1)(h)("el.cascader.noMatch")),3)])]),_:3},8,["class","view-class"])),[[M.aG,F.value]]):(0,i.Q3)("v-if",!0),e.$slots.footer?((0,i.uX)(),(0,i.CE)("div",{key:2,class:(0,u.C4)((0,s.R1)(p).e("footer")),onClick:(0,M.D$)(()=>{},["stop"])},[(0,i.RG)(e.$slots,"footer")],10,["onClick"])):(0,i.Q3)("v-if",!0)]),_:3},8,["visible","teleported","popper-class","popper-style","fallback-placements","placement","transition","effect","persistent"]))}});var vn=(0,m.A)(pn,[["__file","cascader.vue"]]);const hn=(0,E.GU)(vn),mn=(0,f.b_)({checked:Boolean,disabled:Boolean,type:{type:String,values:["primary","success","info","warning","danger"],default:"primary"}}),gn={"update:checked":e=>(0,p.Lm)(e),[d.YU]:e=>(0,p.Lm)(e)},bn=(0,i.pM)({name:"ElCheckTag"}),yn=(0,i.pM)({...bn,props:mn,emits:gn,setup(e,{emit:t}){const n=e,r=(0,g.DU)("check-tag"),o=(0,i.EW)(()=>[r.b(),r.is("checked",n.checked),r.is("disabled",n.disabled),r.m(n.type||"primary")]),a=()=>{if(n.disabled)return;const e=!n.checked;t(d.YU,e),t("update:checked",e)};return(e,t)=>((0,i.uX)(),(0,i.CE)("span",{class:(0,u.C4)((0,s.R1)(o)),onClick:a},[(0,i.RG)(e.$slots,"default")],2))}});var wn=(0,m.A)(yn,[["__file","check-tag.vue"]]);const Rn=(0,E.GU)(wn);var Cn=n(76769);const xn=(0,f.b_)({tag:{type:String,default:"div"},span:{type:Number,default:24},offset:{type:Number,default:0},pull:{type:Number,default:0},push:{type:Number,default:0},xs:{type:(0,f.jq)([Number,Object]),default:()=>(0,Cn.f)({})},sm:{type:(0,f.jq)([Number,Object]),default:()=>(0,Cn.f)({})},md:{type:(0,f.jq)([Number,Object]),default:()=>(0,Cn.f)({})},lg:{type:(0,f.jq)([Number,Object]),default:()=>(0,Cn.f)({})},xl:{type:(0,f.jq)([Number,Object]),default:()=>(0,Cn.f)({})}}),kn=Symbol("rowContextKey"),En=(0,i.pM)({name:"ElCol"}),_n=(0,i.pM)({...En,props:xn,setup(e){const t=e,{gutter:n}=(0,i.WQ)(kn,{gutter:(0,i.EW)(()=>0)}),r=(0,g.DU)("col"),o=(0,i.EW)(()=>{const e={};return n.value&&(e.paddingLeft=e.paddingRight=n.value/2+"px"),e}),a=(0,i.EW)(()=>{const e=[],o=["span","offset","pull","push"];o.forEach(n=>{const o=t[n];(0,p.Et)(o)&&("span"===n?e.push(r.b(`${t[n]}`)):o>0&&e.push(r.b(`${n}-${t[n]}`)))});const a=["xs","sm","md","lg","xl"];return a.forEach(n=>{(0,p.Et)(t[n])?e.push(r.b(`${n}-${t[n]}`)):(0,u.Gv)(t[n])&&Object.entries(t[n]).forEach(([t,o])=>{e.push("span"!==t?r.b(`${n}-${t}-${o}`):r.b(`${n}-${o}`))})}),n.value&&e.push(r.is("guttered")),[r.b(),e]});return(e,t)=>((0,i.uX)(),(0,i.Wv)((0,i.$y)(e.tag),{class:(0,u.C4)((0,s.R1)(a)),style:(0,u.Tr)((0,s.R1)(o))},{default:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"default")]),_:3},8,["class","style"]))}});var Sn=(0,m.A)(_n,[["__file","col.vue"]]);const Mn=(0,E.GU)(Sn),Ln=e=>(0,p.Et)(e)||(0,u.Kg)(e)||(0,u.cy)(e),An=(0,f.b_)({accordion:Boolean,modelValue:{type:(0,f.jq)([Array,String,Number]),default:()=>(0,Cn.f)([])},expandIconPosition:{type:(0,f.jq)([String]),default:"right"},beforeCollapse:{type:(0,f.jq)(Function)}}),On={[d.l4]:Ln,[d.YU]:Ln},Tn=Symbol("collapseContextKey");var In=n(25951);const Nn="ElCollapse",Wn=(e,t)=>{const n=(0,s.KR)((0,In.A)(e.modelValue)),r=r=>{n.value=r;const o=e.accordion?n.value[0]:n.value;t(d.l4,o),t(d.YU,o)},o=t=>{if(e.accordion)r([n.value[0]===t?"":t]);else{const e=[...n.value],o=e.indexOf(t);o>-1?e.splice(o,1):e.push(t),r(e)}},a=async t=>{const{beforeCollapse:n}=e;if(!n)return void o(t);const r=n(t),a=[(0,u.yL)(r),(0,p.Lm)(r)].includes(!0);a||(0,w.$)(Nn,"beforeCollapse must return type `Promise` or `boolean`"),(0,u.yL)(r)?r.then(e=>{!1!==e&&o(t)}).catch(e=>{(0,w.U)(Nn,`some error occurred: ${e}`)}):r&&o(t)};return(0,i.wB)(()=>e.modelValue,()=>n.value=(0,In.A)(e.modelValue),{deep:!0}),(0,i.Gt)(Tn,{activeNames:n,handleItemClick:a}),{activeNames:n,setActiveNames:r}},Dn=e=>{const t=(0,g.DU)("collapse"),n=(0,i.EW)(()=>[t.b(),t.b(`icon-position-${e.expandIconPosition}`)]);return{rootKls:n}},Pn=(0,i.pM)({name:"ElCollapse"}),Fn=(0,i.pM)({...Pn,props:An,emits:On,setup(e,{expose:t,emit:n}){const r=e,{activeNames:o,setActiveNames:a}=Wn(r,n),{rootKls:l}=Dn(r);return t({activeNames:o,setActiveNames:a}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)((0,s.R1)(l))},[(0,i.RG)(e.$slots,"default")],2))}});var Bn=(0,m.A)(Fn,[["__file","collapse.vue"]]),zn=n(12031);const $n=(0,f.b_)({title:{type:String,default:""},name:{type:(0,f.jq)([String,Number]),default:void 0},icon:{type:Y.Ze,default:O.ArrowRight},disabled:Boolean}),Vn=e=>{const t=(0,i.WQ)(Tn),{namespace:n}=(0,g.DU)("collapse"),r=(0,s.KR)(!1),o=(0,s.KR)(!1),a=(0,$.Sj)(),l=(0,i.EW)(()=>a.current++),u=(0,i.EW)(()=>{var t;return null!=(t=e.name)?t:`${n.value}-id-${a.prefix}-${(0,s.R1)(l)}`}),c=(0,i.EW)(()=>null==t?void 0:t.activeNames.value.includes((0,s.R1)(u))),d=()=>{setTimeout(()=>{o.value?o.value=!1:r.value=!0},50)},f=n=>{if(e.disabled)return;const a=n.target;(null==a?void 0:a.closest("input, textarea, select"))||(null==t||t.handleItemClick((0,s.R1)(u)),r.value=!1,o.value=!0)},p=e=>{const n=e.target;(null==n?void 0:n.closest("input, textarea, select"))||(e.preventDefault(),null==t||t.handleItemClick((0,s.R1)(u)))};return{focusing:r,id:l,isActive:c,handleFocus:d,handleHeaderClick:f,handleEnterClick:p}},jn=(e,{focusing:t,isActive:n,id:r})=>{const o=(0,g.DU)("collapse"),a=(0,i.EW)(()=>[o.b("item"),o.is("active",(0,s.R1)(n)),o.is("disabled",e.disabled)]),l=(0,i.EW)(()=>[o.be("item","header"),o.is("active",(0,s.R1)(n)),{focusing:(0,s.R1)(t)&&!e.disabled}]),u=(0,i.EW)(()=>[o.be("item","arrow"),o.is("active",(0,s.R1)(n))]),c=(0,i.EW)(()=>[o.be("item","title")]),d=(0,i.EW)(()=>o.be("item","wrap")),f=(0,i.EW)(()=>o.be("item","content")),p=(0,i.EW)(()=>o.b(`content-${(0,s.R1)(r)}`)),v=(0,i.EW)(()=>o.b(`head-${(0,s.R1)(r)}`));return{itemTitleKls:c,arrowKls:u,headKls:l,rootKls:a,itemWrapperKls:d,itemContentKls:f,scopedContentId:p,scopedHeadId:v}},Kn=(0,i.pM)({name:"ElCollapseItem"}),Hn=(0,i.pM)({...Kn,props:$n,setup(e,{expose:t}){const n=e,{focusing:r,id:o,isActive:a,handleFocus:l,handleHeaderClick:c,handleEnterClick:d}=Vn(n),{arrowKls:f,headKls:p,rootKls:v,itemTitleKls:h,itemWrapperKls:m,itemContentKls:g,scopedContentId:b,scopedHeadId:y}=jn(n,{focusing:r,isActive:a,id:o});return t({isActive:a}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)((0,s.R1)(v))},[(0,i.Lk)("div",{id:(0,s.R1)(y),class:(0,u.C4)((0,s.R1)(p)),"aria-expanded":(0,s.R1)(a),"aria-controls":(0,s.R1)(b),"aria-describedby":(0,s.R1)(b),tabindex:e.disabled?void 0:0,"aria-disabled":e.disabled,role:"button",onClick:(0,s.R1)(c),onKeydown:(0,M.jR)((0,M.D$)((0,s.R1)(d),["stop"]),["space","enter"]),onFocus:(0,s.R1)(l),onBlur:e=>r.value=!1},[(0,i.Lk)("span",{class:(0,u.C4)((0,s.R1)(h))},[(0,i.RG)(e.$slots,"title",{isActive:(0,s.R1)(a)},()=>[(0,i.eW)((0,u.v_)(e.title),1)])],2),(0,i.RG)(e.$slots,"icon",{isActive:(0,s.R1)(a)},()=>[(0,i.bF)((0,s.R1)(W.tk),{class:(0,u.C4)((0,s.R1)(f))},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)(e.icon)))]),_:1},8,["class"])])],42,["id","aria-expanded","aria-controls","aria-describedby","tabindex","aria-disabled","onClick","onKeydown","onFocus","onBlur"]),(0,i.bF)((0,s.R1)(zn.o),null,{default:(0,i.k6)(()=>[(0,i.bo)((0,i.Lk)("div",{id:(0,s.R1)(b),role:"region",class:(0,u.C4)((0,s.R1)(m)),"aria-hidden":!(0,s.R1)(a),"aria-labelledby":(0,s.R1)(y)},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(g))},[(0,i.RG)(e.$slots,"default")],2)],10,["id","aria-hidden","aria-labelledby"]),[[M.aG,(0,s.R1)(a)]])]),_:3})],2))}});var Xn=(0,m.A)(Hn,[["__file","collapse-item.vue"]]);const Un=(0,E.GU)(Bn,{CollapseItem:Xn}),Gn=(0,E.WM)(Xn),qn=(0,f.b_)({color:{type:(0,f.jq)(Object),required:!0},vertical:Boolean,disabled:Boolean}),Yn=qn;let Qn=!1;function Zn(e,t){if(!A.oc)return;const n=function(e){var n;null==(n=t.drag)||n.call(t,e)},r=function(e){var o;document.removeEventListener("mousemove",n),document.removeEventListener("mouseup",r),document.removeEventListener("touchmove",n),document.removeEventListener("touchend",r),document.onselectstart=null,document.ondragstart=null,Qn=!1,null==(o=t.end)||o.call(t,e)},o=function(e){var o;Qn||(document.onselectstart=()=>!1,document.ondragstart=()=>!1,document.addEventListener("mousemove",n),document.addEventListener("mouseup",r),document.addEventListener("touchmove",n),document.addEventListener("touchend",r),Qn=!0,null==(o=t.start)||o.call(t,e))};e.addEventListener("mousedown",o),e.addEventListener("touchstart",o,{passive:!1})}const Jn=e=>{let t=0,n=e;while(n)t+=n.offsetTop,n=n.offsetParent;return t},er=(e,t)=>Math.abs(Jn(e)-Jn(t)),tr=e=>{let t,n;return"touchend"===e.type?(n=e.changedTouches[0].clientY,t=e.changedTouches[0].clientX):e.type.startsWith("touch")?(n=e.touches[0].clientY,t=e.touches[0].clientX):(n=e.clientY,t=e.clientX),{clientX:t,clientY:n}},nr=(e,{key:t,minValue:n,maxValue:r})=>{const o=(0,i.nI)(),a=(0,s.IJ)(),l=(0,s.IJ)(),u=(0,i.EW)(()=>e.color.get(t));function c(t){var n;if(e.disabled)return;const r=t.target;r!==a.value&&d(t),null==(n=a.value)||n.focus()}function d(n){if(!l.value||!a.value||e.disabled)return;const i=o.vnode.el,s=i.getBoundingClientRect(),{clientX:u,clientY:c}=tr(n);let d;if(e.vertical){let e=c-s.top;e=Math.max(a.value.offsetHeight/2,e),e=Math.min(e,s.height-a.value.offsetHeight/2),d=Math.round((e-a.value.offsetHeight/2)/(s.height-a.value.offsetHeight)*r)}else{let e=u-s.left;e=Math.max(a.value.offsetWidth/2,e),e=Math.min(e,s.width-a.value.offsetWidth/2),d=Math.round((e-a.value.offsetWidth/2)/(s.width-a.value.offsetWidth)*r)}e.color.set(t,d)}function f(o){if(e.disabled)return;const{shiftKey:a}=o,l=(0,V.CG)(o),i=a?10:1,s="hue"===t?-1:1;let u=!0;switch(l){case j.R.left:case j.R.down:p(-i*s);break;case j.R.right:case j.R.up:p(i*s);break;case j.R.home:e.color.set(t,"hue"===t?r:n);break;case j.R.end:e.color.set(t,"hue"===t?n:r);break;case j.R.pageDown:p(-4*s);break;case j.R.pageUp:p(4*s);break;default:u=!1;break}u&&o.preventDefault()}function p(o){let a=u.value+o;a=ar?r:a,e.color.set(t,a)}return{thumb:a,bar:l,currentValue:u,handleDrag:d,handleClick:c,handleKeydown:f}},rr=(e,{namespace:t,maxValue:n,bar:r,thumb:o,currentValue:a,handleDrag:l,getBackground:u})=>{const c=(0,i.nI)(),d=(0,g.DU)(t),f=(0,s.KR)(0),p=(0,s.KR)(0),v=(0,s.KR)();function h(){if(!o.value)return 0;if(e.vertical)return 0;const t=c.vnode.el,r=a.value;return t?Math.round(r*(t.offsetWidth-o.value.offsetWidth/2)/n):0}function m(){if(!o.value)return 0;const t=c.vnode.el;if(!e.vertical)return 0;const r=a.value;return t?Math.round(r*(t.offsetHeight-o.value.offsetHeight/2)/n):0}function b(){f.value=h(),p.value=m(),v.value=null==u?void 0:u()}(0,i.sV)(()=>{if(!r.value||!o.value)return;const e={drag:e=>{l(e)},end:e=>{l(e)}};Zn(r.value,e),Zn(o.value,e),b()}),(0,i.wB)(a,()=>b()),(0,i.wB)(()=>e.color.value,()=>b());const w=(0,i.EW)(()=>[d.b(),d.is("vertical",e.vertical),d.is("disabled",e.disabled)]),R=(0,i.EW)(()=>d.e("bar")),C=(0,i.EW)(()=>d.e("thumb")),x=(0,i.EW)(()=>({background:v.value})),k=(0,i.EW)(()=>({left:(0,y._V)(f.value),top:(0,y._V)(p.value)}));return{rootKls:w,barKls:R,barStyle:x,thumbKls:C,thumbStyle:k,thumbLeft:f,thumbTop:p,update:b}},or=0,ar=100,lr=(0,i.pM)({name:"ElColorAlphaSlider"}),ir=(0,i.pM)({...lr,props:qn,setup(e,{expose:t}){const n=e,{currentValue:r,bar:o,thumb:a,handleDrag:l,handleClick:c,handleKeydown:d}=nr(n,{key:"alpha",minValue:or,maxValue:ar}),{rootKls:f,barKls:p,barStyle:v,thumbKls:h,thumbStyle:m,update:g}=rr(n,{namespace:"color-alpha-slider",maxValue:ar,currentValue:r,bar:o,thumb:a,handleDrag:l,getBackground:R}),{t:b}=(0,Ie.Ym)(),y=(0,i.EW)(()=>b("el.colorpicker.alphaLabel")),w=(0,i.EW)(()=>b("el.colorpicker.alphaDescription",{alpha:r.value,color:n.color.value}));function R(){if(n.color&&n.color.value){const{r:e,g:t,b:r}=n.color.toRgb();return`linear-gradient(to right, rgba(${e}, ${t}, ${r}, 0) 0%, rgba(${e}, ${t}, ${r}, 1) 100%)`}return""}return t({update:g,bar:o,thumb:a}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)((0,s.R1)(f))},[(0,i.Lk)("div",{ref_key:"bar",ref:o,class:(0,u.C4)((0,s.R1)(p)),style:(0,u.Tr)((0,s.R1)(v)),onClick:(0,s.R1)(c)},null,14,["onClick"]),(0,i.Lk)("div",{ref_key:"thumb",ref:a,class:(0,u.C4)((0,s.R1)(h)),style:(0,u.Tr)((0,s.R1)(m)),"aria-label":(0,s.R1)(y),"aria-valuenow":(0,s.R1)(r),"aria-valuetext":(0,s.R1)(w),"aria-orientation":e.vertical?"vertical":"horizontal","aria-valuemin":or,"aria-valuemax":ar,role:"slider",tabindex:e.disabled?void 0:0,"aria-disabled":e.disabled,onKeydown:(0,s.R1)(d)},null,46,["aria-label","aria-valuenow","aria-valuetext","aria-orientation","tabindex","aria-disabled","onKeydown"])],2))}});var sr=(0,m.A)(ir,[["__file","alpha-slider.vue"]]);const ur=0,cr=360,dr=(0,i.pM)({name:"ElColorHueSlider"}),fr=(0,i.pM)({...dr,props:Yn,setup(e,{expose:t}){const n=e,{currentValue:r,bar:o,thumb:a,handleDrag:l,handleClick:c,handleKeydown:d}=nr(n,{key:"hue",minValue:ur,maxValue:cr}),{rootKls:f,barKls:p,thumbKls:v,thumbStyle:h,thumbTop:m,update:g}=rr(n,{namespace:"color-hue-slider",maxValue:cr,currentValue:r,bar:o,thumb:a,handleDrag:l}),{t:b}=(0,Ie.Ym)(),y=(0,i.EW)(()=>b("el.colorpicker.hueLabel")),w=(0,i.EW)(()=>b("el.colorpicker.hueDescription",{hue:r.value,color:n.color.value}));return t({bar:o,thumb:a,thumbTop:m,update:g}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)((0,s.R1)(f))},[(0,i.Lk)("div",{ref_key:"bar",ref:o,class:(0,u.C4)((0,s.R1)(p)),onClick:(0,s.R1)(c)},null,10,["onClick"]),(0,i.Lk)("div",{ref_key:"thumb",ref:a,class:(0,u.C4)((0,s.R1)(v)),style:(0,u.Tr)((0,s.R1)(h)),"aria-label":(0,s.R1)(y),"aria-valuenow":(0,s.R1)(r),"aria-valuetext":(0,s.R1)(w),"aria-orientation":e.vertical?"vertical":"horizontal","aria-valuemin":ur,"aria-valuemax":cr,role:"slider",tabindex:e.disabled?void 0:0,"aria-disabled":e.disabled,onKeydown:(0,s.R1)(d)},null,46,["aria-label","aria-valuenow","aria-valuetext","aria-orientation","tabindex","aria-disabled","onKeydown"])],2))}});var pr=(0,m.A)(fr,[["__file","hue-slider.vue"]]);const vr=(0,f.b_)({colors:{type:(0,f.jq)(Array),required:!0},color:{type:(0,f.jq)(Object),required:!0},enableAlpha:{type:Boolean,required:!0},disabled:Boolean});var hr=n(16032);const mr=(0,f.b_)({modelValue:{type:(0,f.jq)(String),default:void 0},border:{type:Boolean,default:!0},showAlpha:Boolean,colorFormat:String,disabled:Boolean,predefine:{type:(0,f.jq)(Array)},validateEvent:{type:Boolean,default:!0}}),gr={[d.l4]:e=>(0,u.Kg)(e)||(0,hr.A)(e)},br=Symbol("colorCommonPickerKey"),yr=Symbol("colorPickerPanelContextKey");var wr=n(41513);class Rr{constructor(e={}){this._hue=0,this._saturation=100,this._value=100,this._alpha=100,this._tiny=new wr.q,this._isValid=!1,this.enableAlpha=!1,this.format="",this.value="";for(const t in e)(0,u.$3)(e,t)&&(this[t]=e[t]);e.value?this.fromString(e.value):this.doOnChange()}set(e,t){if(1!==arguments.length||"object"!==typeof e)this[`_${e}`]=t,this._isValid=!0,this.doOnChange();else for(const n in e)(0,u.$3)(e,n)&&this.set(n,e[n])}get(e){return["hue","saturation","value","alpha"].includes(e)?Math.round(this[`_${e}`]):this[`_${e}`]}toRgb(){return this._isValid?this._tiny.toRgb():{r:255,g:255,b:255,a:0}}fromString(e){const t=new wr.q(e);if(this._isValid=t.isValid,t.isValid){const{h:e,s:n,v:r,a:o}=t.toHsv();this._hue=e,this._saturation=100*n,this._value=100*r,this._alpha=100*o}else this._hue=0,this._saturation=100,this._value=100,this._alpha=100;this.doOnChange()}clear(){this._isValid=!1,this.value="",this._hue=0,this._saturation=100,this._value=100,this._alpha=100}compare(e){const t=new wr.q({h:e._hue,s:e._saturation/100,v:e._value/100,a:e._alpha/100});return this._tiny.equals(t)}doOnChange(){const{_hue:e,_saturation:t,_value:n,_alpha:r,format:o,enableAlpha:a}=this;let l=o||(a?"rgb":"hex");"hex"===o&&a&&(l="hex8"),this._tiny=new wr.q({h:e,s:t/100,v:n/100,a:r/100}),this.value=this._isValid?this._tiny.toString(l):""}}const Cr=e=>{const{currentColor:t}=(0,i.WQ)(yr),n=(0,s.KR)(o(e.colors,e.color));function r(t){e.color.fromString(e.colors[t])}function o(t,n){return t.map(t=>{const r=new Rr({value:t,enableAlpha:e.enableAlpha});return r.selected=r.compare(n),r})}return(0,i.wB)(()=>t.value,t=>{const r=new Rr({value:t,enableAlpha:e.enableAlpha});n.value.forEach(e=>{e.selected=r.compare(e)})}),(0,i.nT)(()=>{n.value=o(e.colors,e.color)}),{rgbaColors:n,handleSelect:r}},xr=e=>{const t=(0,g.DU)("color-predefine"),n=(0,i.EW)(()=>[t.b(),t.is("disabled",e.disabled)]),r=(0,i.EW)(()=>t.e("colors"));function o(e){return[t.e("color-selector"),t.is("alpha",e.get("alpha")<100),{selected:e.selected}]}return{rootKls:n,colorsKls:r,colorSelectorKls:o}},kr=(0,i.pM)({name:"ElColorPredefine"}),Er=(0,i.pM)({...kr,props:vr,setup(e){const t=e,{rgbaColors:n,handleSelect:r}=Cr(t),{rootKls:o,colorsKls:a,colorSelectorKls:l}=xr(t),{t:c}=(0,Ie.Ym)(),d=e=>c("el.colorpicker.predefineDescription",{value:e});return(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)((0,s.R1)(o))},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(a))},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(n),(t,n)=>((0,i.uX)(),(0,i.CE)("button",{key:e.colors[n],type:"button",disabled:e.disabled,"aria-label":d(t.value),class:(0,u.C4)((0,s.R1)(l)(t)),onClick:e=>(0,s.R1)(r)(n)},[(0,i.Lk)("div",{style:(0,u.Tr)({backgroundColor:t.value})},null,4)],10,["disabled","aria-label","onClick"]))),128))],2)],2))}});var _r=(0,m.A)(Er,[["__file","predefine.vue"]]);const Sr=(0,f.b_)({color:{type:(0,f.jq)(Object),required:!0},disabled:Boolean}),Mr=e=>{const t=(0,i.nI)(),n=(0,s.KR)(),r=(0,s.KR)(0),o=(0,s.KR)(0),a=(0,s.KR)("hsl(0, 100%, 50%)"),l=(0,i.EW)(()=>e.color.get("saturation")),u=(0,i.EW)(()=>e.color.get("value")),c=(0,i.EW)(()=>e.color.get("hue"));function d(t){var r;if(e.disabled)return;const o=t.target;o!==n.value&&f(t),null==(r=n.value)||r.focus({preventScroll:!0})}function f(n){if(e.disabled)return;const a=t.vnode.el,l=a.getBoundingClientRect(),{clientX:i,clientY:s}=tr(n);let u=i-l.left,c=s-l.top;u=Math.max(0,u),u=Math.min(u,l.width),c=Math.max(0,c),c=Math.min(c,l.height),o.value=u,r.value=c,e.color.set({saturation:u/l.width*100,value:100-c/l.height*100})}function p(t){if(e.disabled)return;const{shiftKey:n}=t,r=(0,V.CG)(t),o=n?10:1;let a=!0;switch(r){case j.R.left:v(-o);break;case j.R.right:v(o);break;case j.R.up:h(o);break;case j.R.down:h(-o);break;default:a=!1;break}a&&t.preventDefault()}function v(t){let n=l.value+t;n=n<0?0:n>100?100:n,e.color.set("saturation",n)}function h(t){let n=u.value+t;n=n<0?0:n>100?100:n,e.color.set("value",n)}return{cursorRef:n,cursorTop:r,cursorLeft:o,background:a,saturation:l,brightness:u,hue:c,handleClick:d,handleDrag:f,handleKeydown:p}},Lr=(e,{cursorTop:t,cursorLeft:n,background:r,handleDrag:o})=>{const a=(0,i.nI)(),l=(0,g.DU)("color-svpanel");function s(){const o=e.color.get("saturation"),l=e.color.get("value"),i=a.vnode.el,{clientWidth:s,clientHeight:u}=i;n.value=o*s/100,t.value=(100-l)*u/100,r.value=`hsl(${e.color.get("hue")}, 100%, 50%)`}(0,i.sV)(()=>{Zn(a.vnode.el,{drag:e=>{o(e)},end:e=>{o(e)}}),s()}),(0,i.wB)([()=>e.color.get("hue"),()=>e.color.get("value"),()=>e.color.value],()=>s());const u=(0,i.EW)(()=>l.b()),c=(0,i.EW)(()=>l.e("cursor")),d=(0,i.EW)(()=>({backgroundColor:r.value})),f=(0,i.EW)(()=>({top:(0,y._V)(t.value),left:(0,y._V)(n.value)}));return{rootKls:u,cursorKls:c,rootStyle:d,cursorStyle:f,update:s}},Ar=(0,i.pM)({name:"ElSvPanel"}),Or=(0,i.pM)({...Ar,props:Sr,setup(e,{expose:t}){const n=e,{cursorRef:r,cursorTop:o,cursorLeft:a,background:l,saturation:c,brightness:d,handleClick:f,handleDrag:p,handleKeydown:v}=Mr(n),{rootKls:h,cursorKls:m,rootStyle:g,cursorStyle:b,update:y}=Lr(n,{cursorTop:o,cursorLeft:a,background:l,handleDrag:p}),{t:w}=(0,Ie.Ym)(),R=(0,i.EW)(()=>w("el.colorpicker.svLabel")),C=(0,i.EW)(()=>w("el.colorpicker.svDescription",{saturation:c.value,brightness:d.value,color:n.color.value}));return t({update:y}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)((0,s.R1)(h)),style:(0,u.Tr)((0,s.R1)(g)),onClick:(0,s.R1)(f)},[(0,i.Lk)("div",{ref_key:"cursorRef",ref:r,class:(0,u.C4)((0,s.R1)(m)),style:(0,u.Tr)((0,s.R1)(b)),tabindex:e.disabled?void 0:0,"aria-disabled":e.disabled,role:"slider","aria-valuemin":"0,0","aria-valuemax":"100,100","aria-label":(0,s.R1)(R),"aria-valuenow":`${(0,s.R1)(c)},${(0,s.R1)(d)}`,"aria-valuetext":(0,s.R1)(C),onKeydown:(0,s.R1)(v)},null,46,["tabindex","aria-disabled","aria-label","aria-valuenow","aria-valuetext","onKeydown"])],14,["onClick"]))}});var Tr=(0,m.A)(Or,[["__file","sv-panel.vue"]]);const Ir=(e,t)=>{const n=(0,s.Kh)(new Rr({enableAlpha:e.showAlpha,format:e.colorFormat||"",value:e.modelValue}));return(0,i.wB)(()=>[e.colorFormat,e.showAlpha],()=>{n.enableAlpha=e.showAlpha,n.format=e.colorFormat||n.format,n.doOnChange(),t(d.l4,n.value)}),{color:n}},Nr=(0,i.pM)({name:"ElColorPickerPanel"}),Wr=(0,i.pM)({...Nr,props:mr,emits:gr,setup(e,{expose:t,emit:n}){const r=e,o=(0,g.DU)("color-picker-panel"),{formItem:a}=(0,un.j)(),l=(0,z.CB)(),c=(0,s.KR)(),f=(0,s.KR)(),p=(0,s.KR)(),v=(0,s.KR)(),h=(0,s.KR)(""),{color:m}=(0,i.WQ)(br,()=>Ir(r,n),!0);function b(){m.fromString(h.value),m.value!==h.value&&(h.value=m.value)}function y(){var e;r.validateEvent&&(null==(e=null==a?void 0:a.validate)||e.call(a,"blur").catch(e=>(0,w.U)(e)))}function R(){var e,t,n;null==(e=c.value)||e.update(),null==(t=f.value)||t.update(),null==(n=p.value)||n.update()}return(0,i.sV)(()=>{r.modelValue&&(h.value=m.value),(0,i.dY)(R)}),(0,i.wB)(()=>r.modelValue,e=>{e!==m.value&&(e?m.fromString(e):m.clear())}),(0,i.wB)(()=>m.value,e=>{n(d.l4,e),h.value=e,r.validateEvent&&(null==a||a.validate("change").catch(e=>(0,w.U)(e)))}),(0,i.Gt)(yr,{currentColor:(0,i.EW)(()=>m.value)}),t({color:m,inputRef:v,update:R}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)([(0,s.R1)(o).b(),(0,s.R1)(o).is("disabled",(0,s.R1)(l)),(0,s.R1)(o).is("border",e.border)]),onFocusout:y},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(o).e("wrapper"))},[(0,i.bF)(pr,{ref_key:"hueRef",ref:c,class:"hue-slider",color:(0,s.R1)(m),vertical:"",disabled:(0,s.R1)(l)},null,8,["color","disabled"]),(0,i.bF)(Tr,{ref_key:"svRef",ref:f,color:(0,s.R1)(m),disabled:(0,s.R1)(l)},null,8,["color","disabled"])],2),e.showAlpha?((0,i.uX)(),(0,i.Wv)(sr,{key:0,ref_key:"alphaRef",ref:p,color:(0,s.R1)(m),disabled:(0,s.R1)(l)},null,8,["color","disabled"])):(0,i.Q3)("v-if",!0),e.predefine?((0,i.uX)(),(0,i.Wv)(_r,{key:1,ref:"predefine","enable-alpha":e.showAlpha,color:(0,s.R1)(m),colors:e.predefine,disabled:(0,s.R1)(l)},null,8,["enable-alpha","color","colors","disabled"])):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(o).e("footer"))},[(0,i.bF)((0,s.R1)(T.WK),{ref_key:"inputRef",ref:v,modelValue:h.value,"onUpdate:modelValue":e=>h.value=e,"validate-event":!1,size:"small",disabled:(0,s.R1)(l),onChange:b},null,8,["modelValue","onUpdate:modelValue","disabled"]),(0,i.RG)(e.$slots,"footer")],2)],34))}});var Dr=(0,m.A)(Wr,[["__file","color-picker-panel.vue"]]);const Pr=(0,E.GU)(Dr);var Fr=n(6301),Br=n(58501);const zr=(0,f.b_)({persistent:{type:Boolean,default:!0},modelValue:{type:(0,f.jq)(String),default:void 0},id:String,showAlpha:Boolean,colorFormat:String,disabled:{type:Boolean,default:void 0},size:nn.mU,popperClass:P.E.popperClass,popperStyle:P.E.popperStyle,tabindex:{type:[String,Number],default:0},teleported:P.E.teleported,appendTo:P.E.appendTo,predefine:{type:(0,f.jq)(Array)},validateEvent:{type:Boolean,default:!0},...rn.bs,...(0,Br.l)(["ariaLabel"])}),$r={[d.l4]:e=>(0,u.Kg)(e)||(0,hr.A)(e),[d.YU]:e=>(0,u.Kg)(e)||(0,hr.A)(e),activeChange:e=>(0,u.Kg)(e)||(0,hr.A)(e),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent},Vr=(0,i.pM)({name:"ElColorPicker"}),jr=(0,i.pM)({...Vr,props:zr,emits:$r,setup(e,{expose:t,emit:n}){const r=e,{t:o}=(0,Ie.Ym)(),a=(0,g.DU)("color"),{formItem:l}=(0,un.j)(),c=(0,z.NV)(),f=(0,z.CB)(),{valueOnClear:p,isEmptyValue:v}=(0,rn.fQ)(r,null),h=Ir(r,n),{inputId:m,isLabeledByFormItem:b}=(0,un.W)(r,{formItemContext:l}),y=(0,s.KR)(),R=(0,s.KR)(),C=(0,s.KR)(),x=(0,s.KR)(!1),k=(0,s.KR)(!1);let E=!0;const{isFocused:_,handleFocus:S,handleBlur:T}=(0,dn.K)(R,{disabled:f,beforeBlur(e){var t;return null==(t=y.value)?void 0:t.isFocusInsideContent(e)},afterBlur(){var e;X(!1),Y(),r.validateEvent&&(null==(e=null==l?void 0:l.validate)||e.call(l,"blur").catch(e=>(0,w.U)(e)))}}),I=(0,A.jN)(()=>{var e,t;return null!=(t=null==(e=C.value)?void 0:e.color)?t:h.color}),D=(0,i.EW)(()=>(0,L.A)(r,Object.keys(mr))),P=(0,i.EW)(()=>r.modelValue||k.value?H(I,r.showAlpha):"transparent"),F=(0,i.EW)(()=>r.modelValue||k.value?I.value:""),B=(0,i.EW)(()=>b.value?void 0:r.ariaLabel||o("el.colorpicker.defaultLabel")),$=(0,i.EW)(()=>b.value?null==l?void 0:l.labelId:void 0),K=(0,i.EW)(()=>[a.b("picker"),a.is("disabled",f.value),a.bm("picker",c.value),a.is("focused",_.value)]);function H(e,t){const{r:n,g:r,b:o,a:a}=e.toRgb();return t?`rgba(${n}, ${r}, ${o}, ${a})`:`rgb(${n}, ${r}, ${o})`}function X(e){x.value=e}const U=(0,Fr.A)(X,100,{leading:!0});function G(){f.value||X(!0)}function q(){U(!1),Y()}function Y(){(0,i.dY)(()=>{r.modelValue?I.fromString(r.modelValue):(I.value="",(0,i.dY)(()=>{k.value=!1}))})}function Q(){f.value||(x.value&&Y(),U(!x.value))}function Z(){const e=v(I.value)?p.value:I.value;n(d.l4,e),n(d.YU,e),r.validateEvent&&(null==l||l.validate("change").catch(e=>(0,w.U)(e))),U(!1),(0,i.dY)(()=>{const e=new Rr({enableAlpha:r.showAlpha,format:r.colorFormat||"",value:r.modelValue});I.compare(e)||Y()})}function J(){U(!1),n(d.l4,p.value),n(d.YU,p.value),r.modelValue!==p.value&&r.validateEvent&&(null==l||l.validate("change").catch(e=>(0,w.U)(e))),Y()}function ee(){var e,t;null==(t=null==(e=null==C?void 0:C.value)?void 0:e.inputRef)||t.focus()}function te(){x.value&&(q(),_.value&&oe())}function ne(e){e.preventDefault(),e.stopPropagation(),X(!1),Y()}function re(e){const t=(0,V.CG)(e);switch(t){case j.R.enter:case j.R.numpadEnter:case j.R.space:e.preventDefault(),e.stopPropagation(),G();break;case j.R.esc:ne(e);break}}function oe(){R.value.focus()}function ae(){R.value.blur()}return(0,i.wB)(()=>F.value,e=>{E&&n("activeChange",e),E=!0}),(0,i.wB)(()=>I.value,()=>{r.modelValue||k.value||(k.value=!0)}),(0,i.wB)(()=>r.modelValue,e=>{e?e&&e!==I.value&&(E=!1,I.fromString(e)):k.value=!1}),(0,i.wB)(()=>x.value,()=>{var e;(0,i.dY)(null==(e=C.value)?void 0:e.update)}),(0,i.Gt)(br,h),t({color:I,show:G,hide:q,focus:oe,blur:ae}),(e,t)=>((0,i.uX)(),(0,i.Wv)((0,s.R1)(N.R7),{ref_key:"popper",ref:y,visible:x.value,"show-arrow":!1,"fallback-placements":["bottom","top","right","left"],offset:0,"gpu-acceleration":!1,"popper-class":[(0,s.R1)(a).be("picker","panel"),e.popperClass],"popper-style":e.popperStyle,"stop-popper-mouse-event":!1,pure:"",loop:"",role:"dialog",effect:"light",trigger:"click",teleported:e.teleported,transition:`${(0,s.R1)(a).namespace.value}-zoom-in-top`,persistent:e.persistent,"append-to":e.appendTo,onShow:ee,onHide:e=>X(!1)},{content:(0,i.k6)(()=>[(0,i.bo)(((0,i.uX)(),(0,i.Wv)((0,s.R1)(Pr),(0,i.v6)({ref_key:"pickerPanelRef",ref:C},(0,s.R1)(D),{border:!1,"validate-event":!1,onKeydown:(0,M.jR)(ne,["esc"])}),{footer:(0,i.k6)(()=>[(0,i.Lk)("div",null,[(0,i.bF)((0,s.R1)(pe.S2),{class:(0,u.C4)((0,s.R1)(a).be("footer","link-btn")),text:"",size:"small",onClick:J},{default:(0,i.k6)(()=>[(0,i.eW)((0,u.v_)((0,s.R1)(o)("el.colorpicker.clear")),1)]),_:1},8,["class"]),(0,i.bF)((0,s.R1)(pe.S2),{plain:"",size:"small",class:(0,u.C4)((0,s.R1)(a).be("footer","btn")),onClick:Z},{default:(0,i.k6)(()=>[(0,i.eW)((0,u.v_)((0,s.R1)(o)("el.colorpicker.confirm")),1)]),_:1},8,["class"])])]),_:1},16,["onKeydown"])),[[(0,s.R1)(sn.A),te,R.value]])]),default:(0,i.k6)(()=>[(0,i.Lk)("div",(0,i.v6)({id:(0,s.R1)(m),ref_key:"triggerRef",ref:R},e.$attrs,{class:(0,s.R1)(K),role:"button","aria-label":(0,s.R1)(B),"aria-labelledby":(0,s.R1)($),"aria-description":(0,s.R1)(o)("el.colorpicker.description",{color:e.modelValue||""}),"aria-disabled":(0,s.R1)(f),tabindex:(0,s.R1)(f)?void 0:e.tabindex,onKeydown:re,onFocus:(0,s.R1)(S),onBlur:(0,s.R1)(T)}),[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(a).be("picker","trigger")),onClick:Q},[(0,i.Lk)("span",{class:(0,u.C4)([(0,s.R1)(a).be("picker","color"),(0,s.R1)(a).is("alpha",e.showAlpha)])},[(0,i.Lk)("span",{class:(0,u.C4)((0,s.R1)(a).be("picker","color-inner")),style:(0,u.Tr)({backgroundColor:(0,s.R1)(P)})},[(0,i.bo)((0,i.bF)((0,s.R1)(W.tk),{class:(0,u.C4)([(0,s.R1)(a).be("picker","icon"),(0,s.R1)(a).is("icon-arrow-down")])},{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.ArrowDown))]),_:1},8,["class"]),[[M.aG,e.modelValue||k.value]]),(0,i.bo)((0,i.bF)((0,s.R1)(W.tk),{class:(0,u.C4)([(0,s.R1)(a).be("picker","empty"),(0,s.R1)(a).is("icon-close")])},{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.Close))]),_:1},8,["class"]),[[M.aG,!e.modelValue&&!k.value]])],6)],2)],2)],16,["id","aria-label","aria-labelledby","aria-description","aria-disabled","tabindex","onFocus","onBlur"])]),_:1},8,["visible","popper-class","popper-style","teleported","transition","persistent","append-to","onHide"]))}});var Kr=(0,m.A)(jr,[["__file","color-picker.vue"]]);const Hr=(0,E.GU)(Kr);var Xr=n(97722),Ur=n(54880),Gr=n(76110),qr=n(74642),Yr=n(7515),Qr=n(75806),Zr=n(43569),Jr=n(70464),eo=n(32899);const to=(0,f.b_)({disabledHours:{type:(0,f.jq)(Function)},disabledMinutes:{type:(0,f.jq)(Function)},disabledSeconds:{type:(0,f.jq)(Function)}}),no=(0,f.b_)({visible:Boolean,actualVisible:{type:Boolean,default:void 0},format:{type:String,default:""}}),ro=(0,f.b_)({valueFormat:String,dateFormat:String,timeFormat:String,disabled:{type:Boolean,default:void 0},modelValue:{type:(0,f.jq)([Date,Array,String,Number]),default:""},defaultValue:{type:(0,f.jq)([Date,Array])},defaultTime:{type:(0,f.jq)([Date,Array])},isRange:Boolean,...to,disabledDate:{type:Function},cellClassName:{type:Function},shortcuts:{type:Array,default:()=>[]},arrowControl:Boolean,unlinkPanels:Boolean,showNow:{type:Boolean,default:!0},showConfirm:Boolean,showFooter:Boolean,showWeekNumber:Boolean,type:{type:(0,f.jq)(String),default:"date"},clearable:{type:Boolean,default:!0},border:{type:Boolean,default:!0}}),oo=Symbol("rootPickerContextKey"),ao="ElIsDefaultFormat",lo=["date","dates","year","years","month","months","week","range"],io=(0,f.b_)({cellClassName:{type:(0,f.jq)(Function)},disabledDate:{type:(0,f.jq)(Function)},date:{type:(0,f.jq)(Object),required:!0},minDate:{type:(0,f.jq)(Object)},maxDate:{type:(0,f.jq)(Object)},parsedValue:{type:(0,f.jq)([Object,Array])},rangeState:{type:(0,f.jq)(Object),default:()=>({endDate:null,selecting:!1})},disabled:Boolean}),so=(0,f.b_)({type:{type:(0,f.jq)(String),required:!0,values:Oe},dateFormat:String,timeFormat:String,showNow:{type:Boolean,default:!0},showConfirm:Boolean,showFooter:{type:Boolean,default:!0},showWeekNumber:Boolean,border:Boolean,disabled:Boolean}),uo=(0,f.b_)({unlinkPanels:Boolean,visible:{type:Boolean,default:!0},showConfirm:Boolean,showFooter:{type:Boolean,default:!0},border:Boolean,disabled:Boolean,parsedValue:{type:(0,f.jq)(Array)}}),co=e=>({type:String,values:lo,default:e}),fo=(0,f.b_)({...so,parsedValue:{type:(0,f.jq)([Object,Array])},visible:{type:Boolean,default:!0},format:{type:String,default:""}}),po=e=>{if(!(0,u.cy)(e))return!1;const[t,n]=e;return ve.isDayjs(t)&&ve.isDayjs(n)&&ve(t).isValid()&&ve(n).isValid()&&t.isSameOrBefore(n)},vo=(e,{lang:t,step:n=1,unit:r,unlinkPanels:o})=>{let a;if((0,u.cy)(e)){let[a,l]=e.map(e=>ve(e).locale(t));return o||(l=a.add(n,r)),[a,l]}return a=e?ve(e):ve(),a=a.locale(t),[a,a.add(n,r)]},ho=(e,t,{columnIndexOffset:n,startDate:r,nextEndDate:o,now:a,unit:l,relativeDateGetter:i,setCellMetadata:s,setRowMetadata:u})=>{for(let c=0;c{const o=ve().locale(r).startOf("month").month(n).year(t).hour(e.hour()).minute(e.minute()).second(e.second()),a=o.daysInMonth();return me(a).map(e=>o.add(e,"day").toDate())},go=(e,t,n,r,o)=>{const a=ve().year(t).month(n).startOf("month").hour(e.hour()).minute(e.minute()).second(e.second()),l=mo(e,t,n,r).find(e=>!(null==o?void 0:o(e)));return l?ve(l).locale(r):a.locale(r)},bo=(e,t,n)=>{const r=e.year();if(!(null==n?void 0:n(e.toDate())))return e.locale(t);const o=e.month();if(!mo(e,r,o,t).every(n))return go(e,r,o,t,n);for(let a=0;a<12;a++)if(!mo(e,r,a,t).every(n))return go(e,r,a,t,n);return e},yo=(e,t,n,r)=>{if((0,u.cy)(e))return e.map(e=>yo(e,t,n,r));if((0,u.Kg)(e)){const n=(null==r?void 0:r.value)?ve(e):ve(e,t);if(!n.isValid())return n}return ve(e,t).locale(n)},wo=(0,f.b_)({...io,showWeekNumber:Boolean,selectionMode:co("date")}),Ro=["changerange","pick","select"];var Co=n(75101);const xo=(e="")=>["normal","today"].includes(e),ko=(e,t)=>{const{lang:n}=(0,Ie.Ym)(),r=(0,s.KR)(),o=(0,s.KR)(),a=(0,s.KR)(),l=(0,s.KR)(),c=(0,s.KR)([[],[],[],[],[],[]]);let d=!1;const f=e.date.$locale().weekStart||7,p=e.date.locale("en").localeData().weekdaysShort().map(e=>e.toLowerCase()),v=(0,i.EW)(()=>f>3?7-f:-f),h=(0,i.EW)(()=>{const t=e.date.startOf("month");return t.subtract(t.day()||7,"day")}),m=(0,i.EW)(()=>p.concat(p).slice(f,f+7)),g=(0,i.EW)(()=>(0,Co.A)((0,s.R1)(x)).some(e=>e.isCurrent)),b=(0,i.EW)(()=>{const t=e.date.startOf("month"),n=t.day()||7,r=t.daysInMonth(),o=t.subtract(1,"month").daysInMonth();return{startOfMonthDay:n,dateCountOfMonth:r,dateCountOfLastMonth:o}}),y=(0,i.EW)(()=>"dates"===e.selectionMode?(0,Gt.bg)(e.parsedValue):[]),w=(e,{count:t,rowIndex:n,columnIndex:r})=>{const{startOfMonthDay:o,dateCountOfMonth:a,dateCountOfLastMonth:l}=(0,s.R1)(b),i=(0,s.R1)(v);if(!(n>=0&&n<=1))return t<=a?e.text=t:(e.text=t-a,e.type="next-month"),!0;{const a=o+i<0?7+o+i:o+i;if(r+7*n>=a)return e.text=t,!0;e.text=l-(a-r%7)+1+7*n,e.type="prev-month"}return!1},R=(t,{columnIndex:n,rowIndex:r},o)=>{const{disabledDate:a,cellClassName:l}=e,i=(0,s.R1)(y),u=w(t,{count:o,rowIndex:r,columnIndex:n}),c=t.dayjs.toDate();return t.selected=i.find(e=>e.isSame(t.dayjs,"day")),t.isSelected=!!t.selected,t.isCurrent=E(t),t.disabled=null==a?void 0:a(c),t.customClass=null==l?void 0:l(c),u},C=t=>{if("week"===e.selectionMode){const[n,r]=e.showWeekNumber?[1,7]:[0,6],o=P(t[n+1]);t[n].inRange=o,t[n].start=o,t[r].inRange=o,t[r].end=o}},x=(0,i.EW)(()=>{const{minDate:t,maxDate:r,rangeState:o,showWeekNumber:a}=e,l=(0,s.R1)(v),i=(0,s.R1)(c),u="day";let d=1;if(ho({row:6,column:7},i,{startDate:t,columnIndexOffset:a?1:0,nextEndDate:o.endDate||r||o.selecting&&t||null,now:ve().locale((0,s.R1)(n)).startOf(u),unit:u,relativeDateGetter:e=>(0,s.R1)(h).add(e-l,u),setCellMetadata:(...e)=>{R(...e,d)&&(d+=1)},setRowMetadata:C}),a)for(let e=0;e<6;e++)i[e][1].dayjs&&(i[e][0]={type:"week",text:i[e][1].dayjs.week()});return i});(0,i.wB)(()=>e.date,async()=>{var e;(null==(e=(0,s.R1)(r))?void 0:e.contains(document.activeElement))&&(await(0,i.dY)(),await k())});const k=async()=>{var e;return null==(e=(0,s.R1)(o))?void 0:e.focus()},E=t=>"date"===e.selectionMode&&xo(t.type)&&_(t,e.parsedValue),_=(t,r)=>!!r&&ve(r).locale((0,s.R1)(n)).isSame(e.date.date(Number(t.text)),"day"),S=(t,n)=>{const r=7*t+(n-(e.showWeekNumber?1:0))-(0,s.R1)(v);return(0,s.R1)(h).add(r,"day")},M=n=>{var r;if(!e.rangeState.selecting)return;let o=n.target;if("SPAN"===o.tagName&&(o=null==(r=o.parentNode)?void 0:r.parentNode),"DIV"===o.tagName&&(o=o.parentNode),"TD"!==o.tagName)return;const i=o.parentNode.rowIndex-1,u=o.cellIndex;(0,s.R1)(x)[i][u].disabled||i===(0,s.R1)(a)&&u===(0,s.R1)(l)||(a.value=i,l.value=u,t("changerange",{selecting:!0,endDate:S(i,u)}))},L=e=>!(0,s.R1)(g)&&1===(null==e?void 0:e.text)&&xo(e.type)||e.isCurrent,A=t=>{d||(0,s.R1)(g)||"date"!==e.selectionMode||D(t,!0)},O=e=>{const t=e.target.closest("td");t&&(d=!0)},T=e=>{const t=e.target.closest("td");t&&(d=!1)},I=n=>{e.rangeState.selecting&&e.minDate?(n>=e.minDate?t("pick",{minDate:e.minDate,maxDate:n}):t("pick",{minDate:n,maxDate:e.minDate}),t("select",!1)):(t("pick",{minDate:n,maxDate:null}),t("select",!0))},N=e=>{const n=e.week(),r=`${e.year()}w${n}`;t("pick",{year:e.year(),week:n,value:r,date:e.startOf("week")})},W=(n,r)=>{const o=r?(0,Gt.bg)(e.parsedValue).filter(e=>(null==e?void 0:e.valueOf())!==n.valueOf()):(0,Gt.bg)(e.parsedValue).concat([n]);t("pick",o)},D=(n,r=!1)=>{if(e.disabled)return;const o=n.target.closest("td");if(!o)return;const a=o.parentNode.rowIndex-1,l=o.cellIndex,i=(0,s.R1)(x)[a][l];if(i.disabled||"week"===i.type)return;const u=S(a,l);switch(e.selectionMode){case"range":I(u);break;case"date":t("pick",u,r);break;case"week":N(u);break;case"dates":W(u,!!i.selected);break}},P=t=>{if("week"!==e.selectionMode)return!1;let n=e.date.startOf("day");if("prev-month"===t.type&&(n=n.subtract(1,"month")),"next-month"===t.type&&(n=n.add(1,"month")),n=n.date(Number.parseInt(t.text,10)),e.parsedValue&&!(0,u.cy)(e.parsedValue)){const t=(e.parsedValue.day()-f+7)%7-1,r=e.parsedValue.subtract(t,"day");return r.isSame(n,"day")}return!1};return{WEEKS:m,rows:x,tbodyRef:r,currentCellRef:o,focus:k,isCurrent:E,isWeekActive:P,isSelectedCell:L,handlePickDate:D,handleMouseUp:T,handleMouseDown:O,handleMouseMove:M,handleFocus:A}},Eo=(e,{isCurrent:t,isWeekActive:n})=>{const r=(0,g.DU)("date-table"),{t:o}=(0,Ie.Ym)(),a=(0,i.EW)(()=>[r.b(),r.is("week-mode","week"===e.selectionMode&&!e.disabled)]),l=(0,i.EW)(()=>o("el.datepicker.dateTablePrompt")),s=n=>{const r=[];return xo(n.type)&&!n.disabled?(r.push("available"),"today"===n.type&&r.push("today")):r.push(n.type),t(n)&&r.push("current"),n.inRange&&(xo(n.type)||"week"===e.selectionMode)&&(r.push("in-range"),n.start&&r.push("start-date"),n.end&&r.push("end-date")),(n.disabled||e.disabled)&&r.push("disabled"),n.selected&&r.push("selected"),n.customClass&&r.push(n.customClass),r.join(" ")},u=e=>[r.e("row"),{current:n(e)}];return{tableKls:a,tableLabel:l,weekHeaderClass:r.e("week-header"),getCellClasses:s,getRowKls:u,t:o}},_o=(0,f.b_)({cell:{type:(0,f.jq)(Object)}});var So=(0,i.pM)({name:"ElDatePickerCell",props:_o,setup(e){const t=(0,g.DU)("date-table-cell"),{slots:n}=(0,i.WQ)(oo);return()=>{const{cell:r}=e;return(0,i.RG)(n,"default",{...r},()=>{var e;return[(0,i.bF)("div",{class:t.b()},[(0,i.bF)("span",{class:t.e("text")},[null!=(e=null==r?void 0:r.renderText)?e:null==r?void 0:r.text])])]})}}});const Mo=(0,i.pM)({__name:"basic-date-table",props:wo,emits:Ro,setup(e,{expose:t,emit:n}){const r=e,{WEEKS:o,rows:a,tbodyRef:l,currentCellRef:c,focus:d,isCurrent:f,isWeekActive:p,isSelectedCell:v,handlePickDate:h,handleMouseUp:m,handleMouseDown:g,handleMouseMove:b,handleFocus:y}=ko(r,n),{tableLabel:w,tableKls:R,getCellClasses:C,getRowKls:x,weekHeaderClass:k,t:E}=Eo(r,{isCurrent:f,isWeekActive:p});let _=!1;return(0,i.xo)(()=>{_=!0}),t({focus:d}),(e,t)=>((0,i.uX)(),(0,i.CE)("table",{"aria-label":(0,s.R1)(w),class:(0,u.C4)((0,s.R1)(R)),cellspacing:"0",cellpadding:"0",role:"grid",onClick:(0,s.R1)(h),onMousemove:(0,s.R1)(b),onMousedown:(0,s.R1)(g),onMouseup:(0,s.R1)(m)},[(0,i.Lk)("tbody",{ref_key:"tbodyRef",ref:l},[(0,i.Lk)("tr",null,[e.showWeekNumber?((0,i.uX)(),(0,i.CE)("th",{key:0,scope:"col",class:(0,u.C4)((0,s.R1)(k))},null,2)):(0,i.Q3)("v-if",!0),((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(o),(e,t)=>((0,i.uX)(),(0,i.CE)("th",{key:t,"aria-label":(0,s.R1)(E)("el.datepicker.weeksFull."+e),scope:"col"},(0,u.v_)((0,s.R1)(E)("el.datepicker.weeks."+e)),9,["aria-label"]))),128))]),((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(a),(t,n)=>((0,i.uX)(),(0,i.CE)("tr",{key:n,class:(0,u.C4)((0,s.R1)(x)(e.showWeekNumber?t[2]:t[1]))},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(t,(t,r)=>((0,i.uX)(),(0,i.CE)("td",{key:`${n}.${r}`,ref_for:!0,ref:e=>!(0,s.R1)(_)&&(0,s.R1)(v)(t)&&(c.value=e),class:(0,u.C4)((0,s.R1)(C)(t)),"aria-current":t.isCurrent?"date":void 0,"aria-selected":t.isCurrent,tabindex:e.disabled?void 0:(0,s.R1)(v)(t)?0:-1,"aria-disabled":e.disabled,onFocus:(0,s.R1)(y)},[(0,i.bF)((0,s.R1)(So),{cell:t},null,8,["cell"])],42,["aria-current","aria-selected","tabindex","aria-disabled","onFocus"]))),128))],2))),128))],512)],42,["aria-label","onClick","onMousemove","onMousedown","onMouseup"]))}});var Lo=(0,m.A)(Mo,[["__file","basic-date-table.vue"]]);const Ao=(0,f.b_)({...io,selectionMode:co("month")}),Oo=(0,i.pM)({__name:"basic-month-table",props:Ao,emits:["changerange","pick","select"],setup(e,{expose:t,emit:n}){const r=e,o=(0,g.DU)("month-table"),{t:a,lang:l}=(0,Ie.Ym)(),c=(0,s.KR)(),d=(0,s.KR)(),f=(0,s.KR)(r.date.locale("en").localeData().monthsShort().map(e=>e.toLowerCase())),p=(0,s.KR)([[],[],[]]),v=(0,s.KR)(),h=(0,s.KR)(),m=(0,i.EW)(()=>{var e,t,n;const o=p.value,a=ve().locale(l.value).startOf("month");for(let l=0;l<3;l++){const i=o[l];for(let o=0;o<4;o++){const s=i[o]||(i[o]={row:l,column:o,type:"normal",inRange:!1,start:!1,end:!1,text:-1,disabled:!1,isSelected:!1,customClass:void 0,date:void 0,dayjs:void 0,isCurrent:void 0,selected:void 0,renderText:void 0,timestamp:void 0});s.type="normal";const u=4*l+o,c=r.date.startOf("year").month(u),d=r.rangeState.endDate||r.maxDate||r.rangeState.selecting&&r.minDate||null;s.inRange=!!(r.minDate&&c.isSameOrAfter(r.minDate,"month")&&d&&c.isSameOrBefore(d,"month"))||!!(r.minDate&&c.isSameOrBefore(r.minDate,"month")&&d&&c.isSameOrAfter(d,"month")),(null==(e=r.minDate)?void 0:e.isSameOrAfter(d))?(s.start=!(!d||!c.isSame(d,"month")),s.end=r.minDate&&c.isSame(r.minDate,"month")):(s.start=!(!r.minDate||!c.isSame(r.minDate,"month")),s.end=!(!d||!c.isSame(d,"month")));const f=a.isSame(c);f&&(s.type="today");const p=c.toDate();s.text=u,s.disabled=(null==(t=r.disabledDate)?void 0:t.call(r,p))||!1,s.date=p,s.customClass=null==(n=r.cellClassName)?void 0:n.call(r,p),s.dayjs=c,s.timestamp=c.valueOf(),s.isSelected=R(s)}}return o}),b=()=>{var e;null==(e=d.value)||e.focus()},w=e=>{const t={},n=r.date.year(),o=new Date,a=e.text;return t.disabled=r.disabled||!!r.disabledDate&&mo(r.date,n,a,l.value).every(r.disabledDate),t.current=(0,Gt.bg)(r.parsedValue).some(e=>ve.isDayjs(e)&&e.year()===n&&e.month()===a),t.today=o.getFullYear()===n&&o.getMonth()===a,e.customClass&&(t[e.customClass]=!0),e.inRange&&(t["in-range"]=!0,e.start&&(t["start-date"]=!0),e.end&&(t["end-date"]=!0)),t},R=e=>{const t=r.date.year(),n=e.text;return(0,Gt.bg)(r.date).some(e=>e.year()===t&&e.month()===n)},C=e=>{var t;if(!r.rangeState.selecting)return;let o=e.target;if("SPAN"===o.tagName&&(o=null==(t=o.parentNode)?void 0:t.parentNode),"DIV"===o.tagName&&(o=o.parentNode),"TD"!==o.tagName)return;const a=o.parentNode.rowIndex,l=o.cellIndex;m.value[a][l].disabled||a===v.value&&l===h.value||(v.value=a,h.value=l,n("changerange",{selecting:!0,endDate:r.date.startOf("year").month(4*a+l)}))},x=e=>{var t;if(r.disabled)return;const o=null==(t=e.target)?void 0:t.closest("td");if("TD"!==(null==o?void 0:o.tagName))return;if((0,y.nB)(o,"disabled"))return;const a=o.cellIndex,i=o.parentNode.rowIndex,s=4*i+a,u=r.date.startOf("year").month(s);if("months"===r.selectionMode){if("keydown"===e.type)return void n("pick",(0,Gt.bg)(r.parsedValue),!1);const t=go(r.date,r.date.year(),s,l.value,r.disabledDate),a=(0,y.nB)(o,"current")?(0,Gt.bg)(r.parsedValue).filter(e=>(null==e?void 0:e.year())!==t.year()||(null==e?void 0:e.month())!==t.month()):(0,Gt.bg)(r.parsedValue).concat([ve(t)]);n("pick",a)}else"range"===r.selectionMode?r.rangeState.selecting?(r.minDate&&u>=r.minDate?n("pick",{minDate:r.minDate,maxDate:u}):n("pick",{minDate:u,maxDate:r.minDate}),n("select",!1)):(n("pick",{minDate:u,maxDate:null}),n("select",!0)):n("pick",s)};return(0,i.wB)(()=>r.date,async()=>{var e,t;(null==(e=c.value)?void 0:e.contains(document.activeElement))&&(await(0,i.dY)(),null==(t=d.value)||t.focus())}),t({focus:b}),(e,t)=>((0,i.uX)(),(0,i.CE)("table",{role:"grid","aria-label":(0,s.R1)(a)("el.datepicker.monthTablePrompt"),class:(0,u.C4)((0,s.R1)(o).b()),onClick:x,onMousemove:C},[(0,i.Lk)("tbody",{ref_key:"tbodyRef",ref:c},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(m),(e,t)=>((0,i.uX)(),(0,i.CE)("tr",{key:t},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e,(e,t)=>((0,i.uX)(),(0,i.CE)("td",{key:t,ref_for:!0,ref:t=>e.isSelected&&(d.value=t),class:(0,u.C4)(w(e)),"aria-selected":!!e.isSelected,"aria-label":(0,s.R1)(a)("el.datepicker.month"+(+e.text+1)),tabindex:e.isSelected?0:-1,onKeydown:[(0,M.jR)((0,M.D$)(x,["prevent","stop"]),["space"]),(0,M.jR)((0,M.D$)(x,["prevent","stop"]),["enter"])]},[(0,i.bF)((0,s.R1)(So),{cell:{...e,renderText:(0,s.R1)(a)("el.datepicker.months."+f.value[e.text])}},null,8,["cell"])],42,["aria-selected","aria-label","tabindex","onKeydown"]))),128))]))),128))],512)],42,["aria-label"]))}});var To=(0,m.A)(Oo,[["__file","basic-month-table.vue"]]);const Io=(0,f.b_)({...io,selectionMode:co("year")}),No=(0,i.pM)({__name:"basic-year-table",props:Io,emits:["changerange","pick","select"],setup(e,{expose:t,emit:n}){const r=e,o=(e,t)=>{const n=ve(String(e)).locale(t).startOf("year"),r=n.endOf("year"),o=r.dayOfYear();return me(o).map(e=>n.add(e,"day").toDate())},a=(0,g.DU)("year-table"),{t:l,lang:c}=(0,Ie.Ym)(),d=(0,s.KR)(),f=(0,s.KR)(),p=(0,i.EW)(()=>10*Math.floor(r.date.year()/10)),v=(0,s.KR)([[],[],[]]),h=(0,s.KR)(),m=(0,s.KR)(),b=(0,i.EW)(()=>{var e,t,n;const o=v.value,a=ve().locale(c.value).startOf("year");for(let l=0;l<3;l++){const i=o[l];for(let o=0;o<4;o++){if(4*l+o>=10)break;let s=i[o];s||(s={row:l,column:o,type:"normal",inRange:!1,start:!1,end:!1,text:-1,disabled:!1,isSelected:!1,customClass:void 0,date:void 0,dayjs:void 0,isCurrent:void 0,selected:void 0,renderText:void 0,timestamp:void 0}),s.type="normal";const u=4*l+o+p.value,c=ve().year(u),d=r.rangeState.endDate||r.maxDate||r.rangeState.selecting&&r.minDate||null;s.inRange=!!(r.minDate&&c.isSameOrAfter(r.minDate,"year")&&d&&c.isSameOrBefore(d,"year"))||!!(r.minDate&&c.isSameOrBefore(r.minDate,"year")&&d&&c.isSameOrAfter(d,"year")),(null==(e=r.minDate)?void 0:e.isSameOrAfter(d))?(s.start=!(!d||!c.isSame(d,"year")),s.end=!(!r.minDate||!c.isSame(r.minDate,"year"))):(s.start=!(!r.minDate||!c.isSame(r.minDate,"year")),s.end=!(!d||!c.isSame(d,"year")));const f=a.isSame(c);f&&(s.type="today"),s.text=u;const v=c.toDate();s.disabled=(null==(t=r.disabledDate)?void 0:t.call(r,v))||!1,s.date=v,s.customClass=null==(n=r.cellClassName)?void 0:n.call(r,v),s.dayjs=c,s.timestamp=c.valueOf(),s.isSelected=C(s),i[o]=s}}return o}),w=()=>{var e;null==(e=f.value)||e.focus()},R=e=>{const t={},n=ve().locale(c.value),a=e.text;return t.disabled=r.disabled||!!r.disabledDate&&o(a,c.value).every(r.disabledDate),t.today=n.year()===a,t.current=(0,Gt.bg)(r.parsedValue).some(e=>e.year()===a),e.customClass&&(t[e.customClass]=!0),e.inRange&&(t["in-range"]=!0,e.start&&(t["start-date"]=!0),e.end&&(t["end-date"]=!0)),t},C=e=>{const t=e.text;return(0,Gt.bg)(r.date).some(e=>e.year()===t)},x=e=>{var t;if(r.disabled)return;const o=null==(t=e.target)?void 0:t.closest("td");if(!o||!o.textContent||(0,y.nB)(o,"disabled"))return;const a=o.cellIndex,l=o.parentNode.rowIndex,i=4*l+a+p.value,s=ve().year(i);if("range"===r.selectionMode)r.rangeState.selecting?(r.minDate&&s>=r.minDate?n("pick",{minDate:r.minDate,maxDate:s}):n("pick",{minDate:s,maxDate:r.minDate}),n("select",!1)):(n("pick",{minDate:s,maxDate:null}),n("select",!0));else if("years"===r.selectionMode){if("keydown"===e.type)return void n("pick",(0,Gt.bg)(r.parsedValue),!1);const t=bo(s.startOf("year"),c.value,r.disabledDate),a=(0,y.nB)(o,"current")?(0,Gt.bg)(r.parsedValue).filter(e=>(null==e?void 0:e.year())!==i):(0,Gt.bg)(r.parsedValue).concat([t]);n("pick",a)}else n("pick",i)},k=e=>{var t;if(!r.rangeState.selecting)return;const o=null==(t=e.target)?void 0:t.closest("td");if(!o)return;const a=o.parentNode.rowIndex,l=o.cellIndex;b.value[a][l].disabled||a===h.value&&l===m.value||(h.value=a,m.value=l,n("changerange",{selecting:!0,endDate:ve().year(p.value).add(4*a+l,"year")}))};return(0,i.wB)(()=>r.date,async()=>{var e,t;(null==(e=d.value)?void 0:e.contains(document.activeElement))&&(await(0,i.dY)(),null==(t=f.value)||t.focus())}),t({focus:w}),(e,t)=>((0,i.uX)(),(0,i.CE)("table",{role:"grid","aria-label":(0,s.R1)(l)("el.datepicker.yearTablePrompt"),class:(0,u.C4)((0,s.R1)(a).b()),onClick:x,onMousemove:k},[(0,i.Lk)("tbody",{ref_key:"tbodyRef",ref:d},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(b),(e,t)=>((0,i.uX)(),(0,i.CE)("tr",{key:t},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e,(e,n)=>((0,i.uX)(),(0,i.CE)("td",{key:`${t}_${n}`,ref_for:!0,ref:t=>e.isSelected&&(f.value=t),class:(0,u.C4)(["available",R(e)]),"aria-selected":e.isSelected,"aria-label":String(e.text),tabindex:e.isSelected?0:-1,onKeydown:[(0,M.jR)((0,M.D$)(x,["prevent","stop"]),["space"]),(0,M.jR)((0,M.D$)(x,["prevent","stop"]),["enter"])]},[(0,i.bF)((0,s.R1)(So),{cell:e},null,8,["cell"])],42,["aria-selected","aria-label","tabindex","onKeydown"]))),128))]))),128))],512)],42,["aria-label"]))}});var Wo=(0,m.A)(No,[["__file","basic-year-table.vue"]]);const Do=["hours","minutes","seconds"],Po="EP_PICKER_BASE",Fo="ElPopperOptions",Bo=Symbol("commonPickerContextKey"),zo="HH:mm:ss",$o="YYYY-MM-DD",Vo={date:$o,dates:$o,week:"gggg[w]ww",year:"YYYY",years:"YYYY",month:"YYYY-MM",months:"YYYY-MM",datetime:`${$o} ${zo}`,monthrange:"YYYY-MM",yearrange:"YYYY",daterange:$o,datetimerange:`${$o} ${zo}`},jo=(0,f.b_)({...no,datetimeRole:String,parsedValue:{type:(0,f.jq)(Object)}}),Ko=({getAvailableHours:e,getAvailableMinutes:t,getAvailableSeconds:n})=>{const r=(r,o,a,l)=>{const i={hour:e,minute:t,second:n};let s=r;return["hour","minute","second"].forEach(e=>{if(i[e]){let t;const n=i[e];switch(e){case"minute":t=n(s.hour(),o,l);break;case"second":t=n(s.hour(),s.minute(),o,l);break;default:t=n(o,l);break}if((null==t?void 0:t.length)&&!t.includes(s[e]())){const n=a?0:t.length-1;s=s[e](t[n])}}}),s},o={},a=([e,t])=>{o[e]=t};return{timePickerOptions:o,getAvailableTime:r,onSetOption:a}},Ho=e=>{const t=(e,t)=>e||t,n=e=>!0!==e;return e.map(t).filter(n)},Xo=(e,t,n)=>{const r=(t,n)=>xe(24,e&&(()=>null==e?void 0:e(t,n))),o=(e,n,r)=>xe(60,t&&(()=>null==t?void 0:t(e,n,r))),a=(e,t,r,o)=>xe(60,n&&(()=>null==n?void 0:n(e,t,r,o)));return{getHoursList:r,getMinutesList:o,getSecondsList:a}},Uo=(e,t,n)=>{const{getHoursList:r,getMinutesList:o,getSecondsList:a}=Xo(e,t,n),l=(e,t)=>Ho(r(e,t)),i=(e,t,n)=>Ho(o(e,t,n)),s=(e,t,n,r)=>Ho(a(e,t,n,r));return{getAvailableHours:l,getAvailableMinutes:i,getAvailableSeconds:s}},Go=e=>{const t=(0,s.KR)(e.parsedValue);return(0,i.wB)(()=>e.visible,n=>{n||(t.value=e.parsedValue)}),t},qo=(0,f.b_)({role:{type:String,required:!0},spinnerDate:{type:(0,f.jq)(Object),required:!0},showSeconds:{type:Boolean,default:!0},arrowControl:Boolean,amPmMode:{type:(0,f.jq)(String),default:""},...to});var Yo=n(34436);const Qo=(0,i.pM)({__name:"basic-time-spinner",props:qo,emits:[d.YU,"select-range","set-option"],setup(e,{emit:t}){const n=e,r=(0,i.WQ)(Po),{isRange:o,format:a}=r.props,l=(0,g.DU)("time"),{getHoursList:c,getMinutesList:f,getSecondsList:v}=Xo(n.disabledHours,n.disabledMinutes,n.disabledSeconds);let h=!1;const m=(0,s.KR)(),b=(0,s.KR)(),w=(0,s.KR)(),R=(0,s.KR)(),C={hours:b,minutes:w,seconds:R},x=(0,i.EW)(()=>n.showSeconds?Do:Do.slice(0,2)),k=(0,i.EW)(()=>{const{spinnerDate:e}=n,t=e.hour(),r=e.minute(),o=e.second();return{hours:t,minutes:r,seconds:o}}),E=(0,i.EW)(()=>{const{hours:e,minutes:t}=(0,s.R1)(k),{role:r,spinnerDate:a}=n,l=o?void 0:a;return{hours:c(r,l),minutes:f(e,r,l),seconds:v(e,t,r,l)}}),_=(0,i.EW)(()=>{const{hours:e,minutes:t,seconds:n}=(0,s.R1)(k);return{hours:he(e,23),minutes:he(t,59),seconds:he(n,59)}}),S=(0,Fr.A)(e=>{h=!1,A(e)},200),M=e=>{const t=!!n.amPmMode;if(!t)return"";const r="A"===n.amPmMode;let o=e<12?" am":" pm";return r&&(o=o.toUpperCase()),o},L=e=>{let n=[0,0];const r=a||zo,o=r.indexOf("HH"),l=r.indexOf("mm"),i=r.indexOf("ss");switch(e){case"hours":-1!==o&&(n=[o,o+2]);break;case"minutes":-1!==l&&(n=[l,l+2]);break;case"seconds":-1!==i&&(n=[i,i+2]);break}const[s,u]=n;t("select-range",s,u),m.value=e},A=e=>{D(e,(0,s.R1)(k)[e])},T=()=>{A("hours"),A("minutes"),A("seconds")},N=e=>e.querySelector(`.${l.namespace.value}-scrollbar__wrap`),D=(e,t)=>{if(n.arrowControl)return;const r=(0,s.R1)(C[e]);r&&r.$el&&(N(r.$el).scrollTop=Math.max(0,t*P(e)))},P=e=>{const t=(0,s.R1)(C[e]),n=null==t?void 0:t.$el.querySelector("li");return n&&Number.parseFloat((0,y.gd)(n,"height"))||0},F=()=>{z(1)},B=()=>{z(-1)},z=e=>{m.value||L("hours");const t=m.value,n=(0,s.R1)(k)[t],r="hours"===m.value?24:60,o=$(t,n,e,r);V(t,o),D(t,o),(0,i.dY)(()=>L(t))},$=(e,t,n,r)=>{let o=(t+n+r)%r;const a=(0,s.R1)(E)[e];while(a[o]&&o!==t)o=(o+n+r)%r;return o},V=(e,r)=>{const o=(0,s.R1)(E)[e],a=o[r];if(a)return;const{hours:l,minutes:i,seconds:u}=(0,s.R1)(k);let c;switch(e){case"hours":c=n.spinnerDate.hour(r).minute(i).second(u);break;case"minutes":c=n.spinnerDate.hour(l).minute(r).second(u);break;case"seconds":c=n.spinnerDate.hour(l).minute(i).second(r);break}t(d.YU,c)},j=(e,{value:t,disabled:n})=>{n||(V(e,t),L(e),D(e,t))},K=e=>{const t=(0,s.R1)(C[e]);if(!t)return;h=!0,S(e);const n=Math.min(Math.round((N(t.$el).scrollTop-(.5*H(e)-10)/P(e)+3)/P(e)),"hours"===e?23:59);V(e,n)},H=e=>(0,s.R1)(C[e]).$el.offsetHeight,X=()=>{const e=e=>{const t=(0,s.R1)(C[e]);t&&t.$el&&(N(t.$el).onscroll=()=>{K(e)})};e("hours"),e("minutes"),e("seconds")};(0,i.sV)(()=>{(0,i.dY)(()=>{!n.arrowControl&&X(),T(),"start"===n.role&&L("hours")})});const U=(e,t)=>{C[t].value=null!=e?e:void 0};return t("set-option",[`${n.role}_scrollDown`,z]),t("set-option",[`${n.role}_emitSelectRange`,L]),(0,i.wB)(()=>n.spinnerDate,()=>{h||T()}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)([(0,s.R1)(l).b("spinner"),{"has-seconds":e.showSeconds}])},[e.arrowControl?(0,i.Q3)("v-if",!0):((0,i.uX)(!0),(0,i.CE)(i.FK,{key:0},(0,i.pI)((0,s.R1)(x),t=>((0,i.uX)(),(0,i.Wv)((0,s.R1)(I.kA),{key:t,ref_for:!0,ref:e=>U(e,t),class:(0,u.C4)((0,s.R1)(l).be("spinner","wrapper")),"wrap-style":"max-height: inherit;","view-class":(0,s.R1)(l).be("spinner","list"),noresize:"",tag:"ul",onMouseenter:e=>L(t),onMousemove:e=>A(t)},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(E)[t],(n,r)=>((0,i.uX)(),(0,i.CE)("li",{key:r,class:(0,u.C4)([(0,s.R1)(l).be("spinner","item"),(0,s.R1)(l).is("active",r===(0,s.R1)(k)[t]),(0,s.R1)(l).is("disabled",n)]),onClick:e=>j(t,{value:r,disabled:n})},["hours"===t?((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[(0,i.eW)((0,u.v_)(("0"+(e.amPmMode?r%12||12:r)).slice(-2))+(0,u.v_)(M(r)),1)],64)):((0,i.uX)(),(0,i.CE)(i.FK,{key:1},[(0,i.eW)((0,u.v_)(("0"+r).slice(-2)),1)],64))],10,["onClick"]))),128))]),_:2},1032,["class","view-class","onMouseenter","onMousemove"]))),128)),e.arrowControl?((0,i.uX)(!0),(0,i.CE)(i.FK,{key:1},(0,i.pI)((0,s.R1)(x),t=>((0,i.uX)(),(0,i.CE)("div",{key:t,class:(0,u.C4)([(0,s.R1)(l).be("spinner","wrapper"),(0,s.R1)(l).is("arrow")]),onMouseenter:e=>L(t)},[(0,i.bo)(((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{class:(0,u.C4)(["arrow-up",(0,s.R1)(l).be("spinner","arrow")])},{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.ArrowUp))]),_:1},8,["class"])),[[(0,s.R1)(Yo.wc),B]]),(0,i.bo)(((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{class:(0,u.C4)(["arrow-down",(0,s.R1)(l).be("spinner","arrow")])},{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.ArrowDown))]),_:1},8,["class"])),[[(0,s.R1)(Yo.wc),F]]),(0,i.Lk)("ul",{class:(0,u.C4)((0,s.R1)(l).be("spinner","list"))},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(_)[t],(n,r)=>((0,i.uX)(),(0,i.CE)("li",{key:r,class:(0,u.C4)([(0,s.R1)(l).be("spinner","item"),(0,s.R1)(l).is("active",n===(0,s.R1)(k)[t]),(0,s.R1)(l).is("disabled",(0,s.R1)(E)[t][n])])},[(0,s.R1)(p.Et)(n)?((0,i.uX)(),(0,i.CE)(i.FK,{key:0},["hours"===t?((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[(0,i.eW)((0,u.v_)(("0"+(e.amPmMode?n%12||12:n)).slice(-2))+(0,u.v_)(M(n)),1)],64)):((0,i.uX)(),(0,i.CE)(i.FK,{key:1},[(0,i.eW)((0,u.v_)(("0"+n).slice(-2)),1)],64))],64)):(0,i.Q3)("v-if",!0)],2))),128))],2)],42,["onMouseenter"]))),128)):(0,i.Q3)("v-if",!0)],2))}});var Zo=(0,m.A)(Qo,[["__file","basic-time-spinner.vue"]]);const Jo=(0,i.pM)({__name:"panel-time-pick",props:jo,emits:["pick","select-range","set-picker-option"],setup(e,{emit:t}){const n=e,r=(0,i.WQ)(Po),{arrowControl:o,disabledHours:a,disabledMinutes:l,disabledSeconds:c,defaultValue:d}=r.props,{getAvailableHours:f,getAvailableMinutes:v,getAvailableSeconds:h}=Uo(a,l,c),m=(0,g.DU)("time"),{t:b,lang:y}=(0,Ie.Ym)(),w=(0,s.KR)([0,2]),R=Go(n),C=(0,i.EW)(()=>(0,p.b0)(n.actualVisible)?`${m.namespace.value}-zoom-in-top`:""),x=(0,i.EW)(()=>n.format.includes("ss")),k=(0,i.EW)(()=>n.format.includes("A")?"A":n.format.includes("a")?"a":""),E=e=>{const t=ve(e).locale(y.value),n=D(t);return t.isSame(n)},_=()=>{const e=R.value;t("pick",e,!1),(0,i.dY)(()=>{R.value=e})},S=(e=!1,r=!1)=>{r||t("pick",n.parsedValue,e)},L=e=>{if(!n.visible)return;const r=D(e).millisecond(0);t("pick",r,!0)},A=(e,n)=>{t("select-range",e,n),w.value=[e,n]},O=e=>{const t=n.format,r=t.indexOf("HH"),o=t.indexOf("mm"),a=t.indexOf("ss"),l=[],i=[];-1!==r&&(l.push(r),i.push("hours")),-1!==o&&(l.push(o),i.push("minutes")),-1!==a&&x.value&&(l.push(a),i.push("seconds"));const s=l.indexOf(w.value[0]),u=(s+e+l.length)%l.length;I["start_emitSelectRange"](i[u])},T=e=>{const t=(0,V.CG)(e),{left:n,right:r,up:o,down:a}=j.R;if([n,r].includes(t)){const r=t===n?-1:1;return O(r),void e.preventDefault()}if([o,a].includes(t)){const n=t===o?-1:1;return I["start_scrollDown"](n),void e.preventDefault()}},{timePickerOptions:I,onSetOption:N,getAvailableTime:W}=Ko({getAvailableHours:f,getAvailableMinutes:v,getAvailableSeconds:h}),D=e=>W(e,n.datetimeRole||"",!0),P=e=>e?ve(e,n.format).locale(y.value):null,F=()=>ve(d).locale(y.value);return t("set-picker-option",["isValidValue",E]),t("set-picker-option",["parseUserInput",P]),t("set-picker-option",["handleKeydownInput",T]),t("set-picker-option",["getRangeAvailableTime",D]),t("set-picker-option",["getDefaultValue",F]),(e,t)=>((0,i.uX)(),(0,i.Wv)(M.eB,{name:(0,s.R1)(C)},{default:(0,i.k6)(()=>[e.actualVisible||e.visible?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(m).b("panel"))},[(0,i.Lk)("div",{class:(0,u.C4)([(0,s.R1)(m).be("panel","content"),{"has-seconds":(0,s.R1)(x)}])},[(0,i.bF)(Zo,{ref:"spinner",role:e.datetimeRole||"start","arrow-control":(0,s.R1)(o),"show-seconds":(0,s.R1)(x),"am-pm-mode":(0,s.R1)(k),"spinner-date":e.parsedValue,"disabled-hours":(0,s.R1)(a),"disabled-minutes":(0,s.R1)(l),"disabled-seconds":(0,s.R1)(c),onChange:L,onSetOption:(0,s.R1)(N),onSelectRange:A},null,8,["role","arrow-control","show-seconds","am-pm-mode","spinner-date","disabled-hours","disabled-minutes","disabled-seconds","onSetOption"])],2),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(m).be("panel","footer"))},[(0,i.Lk)("button",{type:"button",class:(0,u.C4)([(0,s.R1)(m).be("panel","btn"),"cancel"]),onClick:_},(0,u.v_)((0,s.R1)(b)("el.datepicker.cancel")),3),(0,i.Lk)("button",{type:"button",class:(0,u.C4)([(0,s.R1)(m).be("panel","btn"),"confirm"]),onClick:e=>S()},(0,u.v_)((0,s.R1)(b)("el.datepicker.confirm")),11,["onClick"])],2)],2)):(0,i.Q3)("v-if",!0)]),_:1},8,["name"]))}});var ea=(0,m.A)(Jo,[["__file","panel-time-pick.vue"]]);const ta=(0,i.pM)({__name:"panel-date-pick",props:fo,emits:["pick","set-picker-option","panel-change"],setup(e,{emit:t}){const n=e,r=(e,t,n)=>!0,o=(0,g.DU)("picker-panel"),a=(0,g.DU)("date-picker"),l=(0,i.OA)(),c=(0,i.Ht)(),{t:d,lang:f}=(0,Ie.Ym)(),p=(0,i.WQ)(Po),v=(0,i.WQ)(ao,void 0),{shortcuts:h,disabledDate:m,cellClassName:b,defaultTime:y}=p.props,w=(0,s.lW)(p.props,"defaultValue"),R=(0,s.KR)(),C=(0,s.KR)(ve().locale(f.value)),x=(0,s.KR)(!1);let k=!1;const E=(0,i.EW)(()=>ve(y).locale(f.value)),_=(0,i.EW)(()=>C.value.month()),S=(0,i.EW)(()=>C.value.year()),L=(0,s.KR)([]),A=(0,s.KR)(null),I=(0,s.KR)(null),N=e=>!(L.value.length>0)||r(e,L.value,n.format||"HH:mm:ss"),D=e=>!y||ce.value||x.value||k?te.value?e.millisecond(0):e.startOf("day"):E.value.year(e.year()).month(e.month()).date(e.date()),P=(e,...n)=>{if(e)if((0,u.cy)(e)){const r=e.map(D);t("pick",r,...n)}else t("pick",D(e),...n);else t("pick",e,...n);A.value=null,I.value=null,x.value=!1,k=!1},F=async(e,t)=>{if("date"===U.value&&ve.isDayjs(e)){const r=(0,Gt.Q3)(n.parsedValue);let o=r?r.year(e.year()).month(e.month()).date(e.date()):e;N(o)||(o=L.value[0][0].year(e.year()).month(e.month()).date(e.date())),C.value=o,P(o,te.value||t)}else"week"===U.value?P(e.date):"dates"===U.value&&P(e,!0)},B=e=>{const t=e?"add":"subtract";C.value=C.value[t](1,"month"),Ae("month")},$=e=>{const t=C.value,n=e?"add":"subtract";C.value="year"===K.value?t[n](10,"year"):t[n](1,"year"),Ae("year")},K=(0,s.KR)("date"),H=(0,i.EW)(()=>{const e=d("el.datepicker.year");if("year"===K.value){const t=10*Math.floor(S.value/10);return e?`${t} ${e} - ${t+9} ${e}`:`${t} - ${t+9}`}return`${S.value} ${e}`}),X=e=>{const n=(0,u.Tn)(e.value)?e.value():e.value;if(n)return k=!0,void P(ve(n).locale(f.value));e.onClick&&e.onClick({attrs:l,slots:c,emit:t})},U=(0,i.EW)(()=>{const{type:e}=n;return["week","month","months","year","years","dates"].includes(e)?e:"date"}),G=(0,i.EW)(()=>"dates"===U.value||"months"===U.value||"years"===U.value),q=(0,i.EW)(()=>"date"===U.value?K.value:U.value),Y=(0,i.EW)(()=>!!h.length),Q=async(e,t)=>{"month"===U.value?(C.value=go(C.value,C.value.year(),e,f.value,m),P(C.value,!1)):"months"===U.value?P(e,null==t||t):(C.value=go(C.value,C.value.year(),e,f.value,m),K.value="date",["month","year","date","week"].includes(U.value)&&(P(C.value,!0),await(0,i.dY)(),_e())),Ae("month")},Z=async(e,t)=>{if("year"===U.value){const t=C.value.startOf("year").year(e);C.value=bo(t,f.value,m),P(C.value,!1)}else if("years"===U.value)P(e,null==t||t);else{const t=C.value.year(e);C.value=bo(t,f.value,m),K.value="month",["month","year","date","week"].includes(U.value)&&(P(C.value,!0),await(0,i.dY)(),_e())}Ae("year")},J=(0,z.CB)(),ee=async e=>{J.value||(K.value=e,await(0,i.dY)(),_e())},te=(0,i.EW)(()=>"datetime"===n.type||"datetimerange"===n.type),ne=(0,i.EW)(()=>{const e=te.value||"dates"===U.value,t="years"===U.value,n="months"===U.value,r="date"===K.value,o="year"===K.value,a="month"===K.value;return e&&r||t&&o||n&&a}),re=(0,i.EW)(()=>!G.value&&n.showNow||n.showConfirm),oe=(0,i.EW)(()=>!!m&&(!n.parsedValue||((0,u.cy)(n.parsedValue)?m(n.parsedValue[0].toDate()):m(n.parsedValue.toDate())))),ae=()=>{if(G.value)P(n.parsedValue);else{let e=(0,Gt.Q3)(n.parsedValue);if(!e){const t=ve(y).locale(f.value),n=Ee();e=t.year(n.year()).month(n.month()).date(n.date())}C.value=e,P(e)}},le=(0,i.EW)(()=>!!m&&m(ve().locale(f.value).toDate())),ie=()=>{const e=ve().locale(f.value),t=e.toDate();x.value=!0,m&&m(t)||!N(t)||(C.value=ve().locale(f.value),P(C.value))},se=(0,i.EW)(()=>n.timeFormat||be(n.format)||zo),ue=(0,i.EW)(()=>n.dateFormat||ge(n.format)||$o),ce=(0,i.EW)(()=>{if(I.value)return I.value;if(!n.parsedValue&&!w.value)return;const e=(0,Gt.Q3)(n.parsedValue)||C.value;return e.format(se.value)}),de=(0,i.EW)(()=>{if(A.value)return A.value;if(!n.parsedValue&&!w.value)return;const e=(0,Gt.Q3)(n.parsedValue)||C.value;return e.format(ue.value)}),fe=(0,s.KR)(!1),he=()=>{fe.value=!0},me=()=>{fe.value=!1},ye=e=>({hour:e.hour(),minute:e.minute(),second:e.second(),year:e.year(),month:e.month(),date:e.date()}),we=(e,t,r)=>{const{hour:o,minute:a,second:l}=ye(e),i=(0,Gt.Q3)(n.parsedValue),s=i?i.hour(o).minute(a).second(l):e;C.value=s,P(C.value,!0),r||(fe.value=t)},Re=e=>{const t=ve(e,se.value).locale(f.value);if(t.isValid()&&N(t)){const{year:e,month:n,date:r}=ye(C.value);C.value=t.year(e).month(n).date(r),I.value=null,fe.value=!1,P(C.value,!0)}},Ce=e=>{const t=yo(e,ue.value,f.value,v);if(t.isValid()){if(m&&m(t.toDate()))return;const{hour:e,minute:n,second:r}=ye(C.value);C.value=t.hour(e).minute(n).second(r),A.value=null,P(C.value,!0)}},xe=e=>ve.isDayjs(e)&&e.isValid()&&(!m||!m(e.toDate())),ke=e=>yo(e,n.format,f.value,v),Ee=()=>{const e=ve(w.value).locale(f.value);if(!w.value){const e=E.value;return ve().hour(e.hour()).minute(e.minute()).second(e.second()).locale(f.value)}return e},_e=()=>{var e;["week","month","year","date"].includes(U.value)&&(null==(e=R.value)||e.focus())},Se=()=>{_e(),"week"===U.value&&Le(j.R.down)},Me=e=>{const t=(0,V.CG)(e),n=[j.R.up,j.R.down,j.R.left,j.R.right,j.R.home,j.R.end,j.R.pageUp,j.R.pageDown];n.includes(t)&&(Le(t),e.stopPropagation(),e.preventDefault()),[j.R.enter,j.R.space,j.R.numpadEnter].includes(t)&&null===A.value&&null===I.value&&(e.preventDefault(),P(C.value,!1))},Le=e=>{var n;const{up:r,down:o,left:a,right:l,home:i,end:s,pageUp:c,pageDown:d}=j.R,p={year:{[r]:-4,[o]:4,[a]:-1,[l]:1,offset:(e,t)=>e.setFullYear(e.getFullYear()+t)},month:{[r]:-4,[o]:4,[a]:-1,[l]:1,offset:(e,t)=>e.setMonth(e.getMonth()+t)},week:{[r]:-1,[o]:1,[a]:-1,[l]:1,offset:(e,t)=>e.setDate(e.getDate()+7*t)},date:{[r]:-7,[o]:7,[a]:-1,[l]:1,[i]:e=>-e.getDay(),[s]:e=>6-e.getDay(),[c]:e=>-new Date(e.getFullYear(),e.getMonth(),0).getDate(),[d]:e=>new Date(e.getFullYear(),e.getMonth()+1,0).getDate(),offset:(e,t)=>e.setDate(e.getDate()+t)}},v=C.value.toDate();while(Math.abs(C.value.diff(v,"year",!0))<1){const r=p[q.value];if(!r)return;if(r.offset(v,(0,u.Tn)(r[e])?r[e](v):null!=(n=r[e])?n:0),m&&m(v))break;const o=ve(v).locale(f.value);C.value=o,t("pick",o,!0);break}},Ae=e=>{t("panel-change",C.value.toDate(),e,K.value)};return(0,i.wB)(()=>U.value,e=>{["month","year"].includes(e)?K.value=e:K.value="years"!==e?"months"!==e?"date":"month":"year"},{immediate:!0}),(0,i.wB)(()=>w.value,e=>{e&&(C.value=Ee())},{immediate:!0}),(0,i.wB)(()=>n.parsedValue,e=>{if(e){if(G.value)return;if((0,u.cy)(e))return;C.value=e}else C.value=Ee()},{immediate:!0}),t("set-picker-option",["isValidValue",xe]),t("set-picker-option",["parseUserInput",ke]),t("set-picker-option",["handleFocusPicker",Se]),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)([(0,s.R1)(o).b(),(0,s.R1)(a).b(),(0,s.R1)(o).is("border",e.border),(0,s.R1)(o).is("disabled",(0,s.R1)(J)),{"has-sidebar":e.$slots.sidebar||(0,s.R1)(Y),"has-time":(0,s.R1)(te)}])},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(o).e("body-wrapper"))},[(0,i.RG)(e.$slots,"sidebar",{class:(0,u.C4)((0,s.R1)(o).e("sidebar"))}),(0,s.R1)(Y)?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(o).e("sidebar"))},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(h),(e,t)=>((0,i.uX)(),(0,i.CE)("button",{key:t,type:"button",disabled:(0,s.R1)(J),class:(0,u.C4)((0,s.R1)(o).e("shortcut")),onClick:t=>X(e)},(0,u.v_)(e.text),11,["disabled","onClick"]))),128))],2)):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(o).e("body"))},[(0,s.R1)(te)?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(a).e("time-header"))},[(0,i.Lk)("span",{class:(0,u.C4)((0,s.R1)(a).e("editor-wrap"))},[(0,i.bF)((0,s.R1)(T.WK),{placeholder:(0,s.R1)(d)("el.datepicker.selectDate"),"model-value":(0,s.R1)(de),size:"small","validate-event":!1,disabled:(0,s.R1)(J),onInput:e=>A.value=e,onChange:Ce},null,8,["placeholder","model-value","disabled","onInput"])],2),(0,i.bo)(((0,i.uX)(),(0,i.CE)("span",{class:(0,u.C4)((0,s.R1)(a).e("editor-wrap"))},[(0,i.bF)((0,s.R1)(T.WK),{placeholder:(0,s.R1)(d)("el.datepicker.selectTime"),"model-value":(0,s.R1)(ce),size:"small","validate-event":!1,disabled:(0,s.R1)(J),onFocus:he,onInput:e=>I.value=e,onChange:Re},null,8,["placeholder","model-value","disabled","onInput"]),(0,i.bF)((0,s.R1)(ea),{visible:fe.value,format:(0,s.R1)(se),"parsed-value":C.value,onPick:we},null,8,["visible","format","parsed-value"])],2)),[[(0,s.R1)(sn.A),me]])],2)):(0,i.Q3)("v-if",!0),(0,i.bo)((0,i.Lk)("div",{class:(0,u.C4)([(0,s.R1)(a).e("header"),("year"===K.value||"month"===K.value)&&(0,s.R1)(a).em("header","bordered")])},[(0,i.Lk)("span",{class:(0,u.C4)((0,s.R1)(a).e("prev-btn"))},[(0,i.Lk)("button",{type:"button","aria-label":(0,s.R1)(d)("el.datepicker.prevYear"),class:(0,u.C4)(["d-arrow-left",(0,s.R1)(o).e("icon-btn")]),disabled:(0,s.R1)(J),onClick:e=>$(!1)},[(0,i.RG)(e.$slots,"prev-year",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.DArrowLeft))]),_:1})])],10,["aria-label","disabled","onClick"]),(0,i.bo)((0,i.Lk)("button",{type:"button","aria-label":(0,s.R1)(d)("el.datepicker.prevMonth"),class:(0,u.C4)([(0,s.R1)(o).e("icon-btn"),"arrow-left"]),disabled:(0,s.R1)(J),onClick:e=>B(!1)},[(0,i.RG)(e.$slots,"prev-month",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.ArrowLeft))]),_:1})])],10,["aria-label","disabled","onClick"]),[[M.aG,"date"===K.value]])],2),(0,i.Lk)("span",{role:"button",class:(0,u.C4)((0,s.R1)(a).e("header-label")),"aria-live":"polite",tabindex:e.disabled?void 0:0,"aria-disabled":e.disabled,onKeydown:(0,M.jR)(e=>ee("year"),["enter"]),onClick:e=>ee("year")},(0,u.v_)((0,s.R1)(H)),43,["tabindex","aria-disabled","onKeydown","onClick"]),(0,i.bo)((0,i.Lk)("span",{role:"button","aria-live":"polite",tabindex:e.disabled?void 0:0,"aria-disabled":e.disabled,class:(0,u.C4)([(0,s.R1)(a).e("header-label"),{active:"month"===K.value}]),onKeydown:(0,M.jR)(e=>ee("month"),["enter"]),onClick:e=>ee("month")},(0,u.v_)((0,s.R1)(d)(`el.datepicker.month${(0,s.R1)(_)+1}`)),43,["tabindex","aria-disabled","onKeydown","onClick"]),[[M.aG,"date"===K.value]]),(0,i.Lk)("span",{class:(0,u.C4)((0,s.R1)(a).e("next-btn"))},[(0,i.bo)((0,i.Lk)("button",{type:"button","aria-label":(0,s.R1)(d)("el.datepicker.nextMonth"),class:(0,u.C4)([(0,s.R1)(o).e("icon-btn"),"arrow-right"]),disabled:(0,s.R1)(J),onClick:e=>B(!0)},[(0,i.RG)(e.$slots,"next-month",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.ArrowRight))]),_:1})])],10,["aria-label","disabled","onClick"]),[[M.aG,"date"===K.value]]),(0,i.Lk)("button",{type:"button","aria-label":(0,s.R1)(d)("el.datepicker.nextYear"),class:(0,u.C4)([(0,s.R1)(o).e("icon-btn"),"d-arrow-right"]),disabled:(0,s.R1)(J),onClick:e=>$(!0)},[(0,i.RG)(e.$slots,"next-year",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.DArrowRight))]),_:1})])],10,["aria-label","disabled","onClick"])],2)],2),[[M.aG,"time"!==K.value]]),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(o).e("content")),onKeydown:Me},["date"===K.value?((0,i.uX)(),(0,i.Wv)(Lo,{key:0,ref_key:"currentViewRef",ref:R,"selection-mode":(0,s.R1)(U),date:C.value,"parsed-value":e.parsedValue,"disabled-date":(0,s.R1)(m),disabled:(0,s.R1)(J),"cell-class-name":(0,s.R1)(b),"show-week-number":e.showWeekNumber,onPick:F},null,8,["selection-mode","date","parsed-value","disabled-date","disabled","cell-class-name","show-week-number"])):(0,i.Q3)("v-if",!0),"year"===K.value?((0,i.uX)(),(0,i.Wv)(Wo,{key:1,ref_key:"currentViewRef",ref:R,"selection-mode":(0,s.R1)(U),date:C.value,"disabled-date":(0,s.R1)(m),disabled:(0,s.R1)(J),"parsed-value":e.parsedValue,"cell-class-name":(0,s.R1)(b),onPick:Z},null,8,["selection-mode","date","disabled-date","disabled","parsed-value","cell-class-name"])):(0,i.Q3)("v-if",!0),"month"===K.value?((0,i.uX)(),(0,i.Wv)(To,{key:2,ref_key:"currentViewRef",ref:R,"selection-mode":(0,s.R1)(U),date:C.value,"parsed-value":e.parsedValue,"disabled-date":(0,s.R1)(m),disabled:(0,s.R1)(J),"cell-class-name":(0,s.R1)(b),onPick:Q},null,8,["selection-mode","date","parsed-value","disabled-date","disabled","cell-class-name"])):(0,i.Q3)("v-if",!0)],34)],2)],2),e.showFooter&&(0,s.R1)(ne)&&(0,s.R1)(re)?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(o).e("footer"))},[(0,i.bo)((0,i.bF)((0,s.R1)(pe.S2),{text:"",size:"small",class:(0,u.C4)((0,s.R1)(o).e("link-btn")),disabled:(0,s.R1)(le),onClick:ie},{default:(0,i.k6)(()=>[(0,i.eW)((0,u.v_)((0,s.R1)(d)("el.datepicker.now")),1)]),_:1},8,["class","disabled"]),[[M.aG,!(0,s.R1)(G)&&e.showNow]]),e.showConfirm?((0,i.uX)(),(0,i.Wv)((0,s.R1)(pe.S2),{key:0,plain:"",size:"small",class:(0,u.C4)((0,s.R1)(o).e("link-btn")),disabled:(0,s.R1)(oe),onClick:ae},{default:(0,i.k6)(()=>[(0,i.eW)((0,u.v_)((0,s.R1)(d)("el.datepicker.confirm")),1)]),_:1},8,["class","disabled"])):(0,i.Q3)("v-if",!0)],2)):(0,i.Q3)("v-if",!0)],2))}});var na=(0,m.A)(ta,[["__file","panel-date-pick.vue"]]);const ra=(0,f.b_)({...so,...uo}),oa=e=>{const{emit:t}=(0,i.nI)(),n=(0,i.OA)(),r=(0,i.Ht)(),o=o=>{const a=(0,u.Tn)(o.value)?o.value():o.value;a?t("pick",[ve(a[0]).locale(e.value),ve(a[1]).locale(e.value)]):o.onClick&&o.onClick({attrs:n,slots:r,emit:t})};return o},aa=(e,{defaultValue:t,defaultTime:n,leftDate:r,rightDate:o,step:a,unit:l,sortDates:c})=>{const{emit:d}=(0,i.nI)(),{pickerNs:f}=(0,i.WQ)(oo),p=(0,g.DU)("date-range-picker"),{t:v,lang:h}=(0,Ie.Ym)(),m=oa(h),b=(0,s.KR)(),y=(0,s.KR)(),w=(0,s.KR)({endDate:null,selecting:!1}),R=e=>{w.value=e},C=(e=!1)=>{const t=(0,s.R1)(b),n=(0,s.R1)(y);po([t,n])&&d("pick",[t,n],e)},x=e=>{w.value.selecting=e,e||(w.value.endDate=null)},k=e=>{if((0,u.cy)(e)&&2===e.length){const[t,n]=e;b.value=t,r.value=t,y.value=n,c((0,s.R1)(b),(0,s.R1)(y))}else E()},E=()=>{let[i,c]=vo((0,s.R1)(t),{lang:(0,s.R1)(h),step:a,unit:l,unlinkPanels:e.unlinkPanels});const d=e=>e.diff(e.startOf("d"),"ms"),f=(0,s.R1)(n);if(f){let e=0,t=0;if((0,u.cy)(f)){const[n,r]=f.map(ve);e=d(n),t=d(r)}else{const n=d(ve(f));e=n,t=n}i=i.startOf("d").add(e,"ms"),c=c.startOf("d").add(t,"ms")}b.value=void 0,y.value=void 0,r.value=i,o.value=c};return(0,i.wB)(t,e=>{e&&E()},{immediate:!0}),(0,i.wB)(()=>e.parsedValue,e=>{(null==e?void 0:e.length)&&(0,gt.A)(e,[b.value,y.value])||k(e)},{immediate:!0}),(0,i.wB)(()=>e.visible,()=>{e.visible&&k(e.parsedValue)},{immediate:!0}),{minDate:b,maxDate:y,rangeState:w,lang:h,ppNs:f,drpNs:p,handleChangeRange:R,handleRangeConfirm:C,handleShortcutClick:m,onSelect:x,parseValue:k,t:v}},la=(e,t,n,r)=>{const o=(0,s.KR)("date"),a=(0,s.KR)(),l=(0,s.KR)("date"),u=(0,s.KR)(),c=(0,i.WQ)(Po),{disabledDate:d}=c.props,{t:f,lang:p}=(0,Ie.Ym)(),v=(0,i.EW)(()=>n.value.year()),h=(0,i.EW)(()=>n.value.month()),m=(0,i.EW)(()=>r.value.year()),g=(0,i.EW)(()=>r.value.month());function b(e,t){const n=f("el.datepicker.year");if("year"===e.value){const e=10*Math.floor(t.value/10);return n?`${e} ${n} - ${e+9} ${n}`:`${e} - ${e+9}`}return`${t.value} ${n}`}function y(e){null==e||e.focus()}async function w(t,n){if(e.disabled)return;const r="left"===t?o:l,s="left"===t?a:u;r.value=n,await(0,i.dY)(),y(s.value)}async function R(t,s,c){if(e.disabled)return;const f="left"===s,v=f?n:r,h=f?r:n,m=f?o:l,g=f?a:u;if("year"===t){const e=v.value.year(c);v.value=bo(e,p.value,d)}"month"===t&&(v.value=go(v.value,v.value.year(),c,p.value,d)),e.unlinkPanels||(h.value="left"===s?v.value.add(1,"month"):v.value.subtract(1,"month")),m.value="year"===t?"month":"date",await(0,i.dY)(),y(g.value),C(t)}function C(e){t("panel-change",[n.value.toDate(),r.value.toDate()],e)}function x(e,t,n){const r=n?"add":"subtract";return"year"===e?t[r](10,"year"):t[r](1,"year")}return{leftCurrentView:o,rightCurrentView:l,leftCurrentViewRef:a,rightCurrentViewRef:u,leftYear:v,rightYear:m,leftMonth:h,rightMonth:g,leftYearLabel:(0,i.EW)(()=>b(o,v)),rightYearLabel:(0,i.EW)(()=>b(l,m)),showLeftPicker:e=>w("left",e),showRightPicker:e=>w("right",e),handleLeftYearPick:e=>R("year","left",e),handleRightYearPick:e=>R("year","right",e),handleLeftMonthPick:e=>R("month","left",e),handleRightMonthPick:e=>R("month","right",e),handlePanelChange:C,adjustDateByView:x}},ia="month",sa=(0,i.pM)({__name:"panel-date-range",props:ra,emits:["pick","set-picker-option","calendar-change","panel-change"],setup(e,{emit:t}){const n=e,r=(0,i.WQ)(Po),o=(0,i.WQ)(ao,void 0),{disabledDate:a,cellClassName:l,defaultTime:c,clearable:d}=r.props,f=(0,s.lW)(r.props,"format"),p=(0,s.lW)(r.props,"shortcuts"),v=(0,s.lW)(r.props,"defaultValue"),{lang:h}=(0,Ie.Ym)(),m=(0,s.KR)(ve().locale(h.value)),g=(0,s.KR)(ve().locale(h.value).add(1,ia)),{minDate:b,maxDate:y,rangeState:w,ppNs:R,drpNs:C,handleChangeRange:x,handleRangeConfirm:k,handleShortcutClick:E,onSelect:_,parseValue:S,t:L}=aa(n,{defaultValue:v,defaultTime:c,leftDate:m,rightDate:g,unit:ia,sortDates:ze});(0,i.wB)(()=>n.visible,e=>{!e&&w.value.selecting&&(S(n.parsedValue),_(!1))});const A=(0,s.KR)({min:null,max:null}),I=(0,s.KR)({min:null,max:null}),{leftCurrentView:N,rightCurrentView:D,leftCurrentViewRef:P,rightCurrentViewRef:F,leftYear:B,rightYear:$,leftMonth:V,rightMonth:j,leftYearLabel:K,rightYearLabel:H,showLeftPicker:X,showRightPicker:U,handleLeftYearPick:G,handleRightYearPick:q,handleLeftMonthPick:Y,handleRightMonthPick:Q,handlePanelChange:Z,adjustDateByView:J}=la(n,t,m,g),ee=(0,i.EW)(()=>!!p.value.length),te=(0,i.EW)(()=>null!==A.value.min?A.value.min:b.value?b.value.format(le.value):""),ne=(0,i.EW)(()=>null!==A.value.max?A.value.max:y.value||b.value?(y.value||b.value).format(le.value):""),re=(0,i.EW)(()=>null!==I.value.min?I.value.min:b.value?b.value.format(ae.value):""),oe=(0,i.EW)(()=>null!==I.value.max?I.value.max:y.value||b.value?(y.value||b.value).format(ae.value):""),ae=(0,i.EW)(()=>n.timeFormat||be(f.value||"")||zo),le=(0,i.EW)(()=>n.dateFormat||ge(f.value||"")||$o),ie=e=>po(e)&&(!a||!a(e[0].toDate())&&!a(e[1].toDate())),se=()=>{m.value=J(N.value,m.value,!1),n.unlinkPanels||(g.value=m.value.add(1,"month")),Z("year")},ue=()=>{m.value=m.value.subtract(1,"month"),n.unlinkPanels||(g.value=m.value.add(1,"month")),Z("month")},ce=()=>{n.unlinkPanels?g.value=J(D.value,g.value,!0):(m.value=J(D.value,m.value,!0),g.value=m.value.add(1,"month")),Z("year")},de=()=>{n.unlinkPanels?g.value=g.value.add(1,"month"):(m.value=m.value.add(1,"month"),g.value=m.value.add(1,"month")),Z("month")},fe=()=>{m.value=J(N.value,m.value,!0),Z("year")},he=()=>{m.value=m.value.add(1,"month"),Z("month")},me=()=>{g.value=J(D.value,g.value,!1),Z("year")},ye=()=>{g.value=g.value.subtract(1,"month"),Z("month")},we=(0,i.EW)(()=>{const e=(V.value+1)%12,t=V.value+1>=12?1:0;return n.unlinkPanels&&new Date(B.value+t,e)n.unlinkPanels&&12*$.value+j.value-(12*B.value+V.value+1)>=12),Ce=(0,z.CB)(),xe=(0,i.EW)(()=>!(b.value&&y.value&&!w.value.selecting&&po([b.value,y.value])&&!Ce.value)),ke=(0,i.EW)(()=>"datetime"===n.type||"datetimerange"===n.type),Ee=(e,t)=>{if(e){if(c){const n=ve(c[t]||c).locale(h.value);return n.year(e.year()).month(e.month()).date(e.date())}return e}},_e=(e,n=!0)=>{const r=e.minDate,o=e.maxDate,a=Ee(r,0),l=Ee(o,1);y.value===l&&b.value===a||(t("calendar-change",[r.toDate(),o&&o.toDate()]),y.value=l,b.value=a,!ke.value&&n&&(n=!a||!l),k(n))},Se=(0,s.KR)(!1),Me=(0,s.KR)(!1),Le=()=>{Se.value=!1},Ae=()=>{Me.value=!1},Oe=(e,t)=>{A.value[t]=e;const r=ve(e,le.value).locale(h.value);if(r.isValid()){if(a&&a(r.toDate()))return;"min"===t?(m.value=r,b.value=(b.value||m.value).year(r.year()).month(r.month()).date(r.date()),n.unlinkPanels||y.value&&!y.value.isBefore(b.value)||(g.value=r.add(1,"month"),y.value=b.value.add(1,"month"))):(g.value=r,y.value=(y.value||g.value).year(r.year()).month(r.month()).date(r.date()),n.unlinkPanels||b.value&&!b.value.isAfter(y.value)||(m.value=r.subtract(1,"month"),b.value=y.value.subtract(1,"month"))),ze(b.value,y.value),k(!0)}},Te=(e,t)=>{A.value[t]=null},Ne=(e,t)=>{I.value[t]=e;const n=ve(e,ae.value).locale(h.value);n.isValid()&&("min"===t?(Se.value=!0,b.value=(b.value||m.value).hour(n.hour()).minute(n.minute()).second(n.second()),m.value=b.value):(Me.value=!0,y.value=(y.value||g.value).hour(n.hour()).minute(n.minute()).second(n.second()),g.value=y.value))},We=(e,t)=>{I.value[t]=null,"min"===t?(m.value=b.value,Se.value=!1,y.value&&!y.value.isBefore(b.value)||(y.value=b.value)):(g.value=y.value,Me.value=!1,y.value&&y.value.isBefore(b.value)&&(b.value=y.value)),k(!0)},De=(e,t,r)=>{I.value.min||(e&&(m.value=e,b.value=(b.value||m.value).hour(e.hour()).minute(e.minute()).second(e.second())),r||(Se.value=t),y.value&&!y.value.isBefore(b.value)||(y.value=b.value,g.value=e,(0,i.dY)(()=>{S(n.parsedValue)})),k(!0))},Pe=(e,t,n)=>{I.value.max||(e&&(g.value=e,y.value=(y.value||g.value).hour(e.hour()).minute(e.minute()).second(e.second())),n||(Me.value=t),y.value&&y.value.isBefore(b.value)&&(b.value=y.value),k(!0))},Fe=()=>{let e=null;(null==r?void 0:r.emptyValues)&&(e=r.emptyValues.valueOnClear.value),m.value=vo((0,s.R1)(v),{lang:(0,s.R1)(h),unit:"month",unlinkPanels:n.unlinkPanels})[0],g.value=m.value.add(1,"month"),y.value=void 0,b.value=void 0,k(!0),t("pick",e)},Be=e=>yo(e,f.value||"",h.value,o);function ze(e,t){if(n.unlinkPanels&&t){const n=(null==e?void 0:e.year())||0,r=(null==e?void 0:e.month())||0,o=t.year(),a=t.month();g.value=n===o&&r===a?t.add(1,ia):t}else g.value=m.value.add(1,ia),t&&(g.value=g.value.hour(t.hour()).minute(t.minute()).second(t.second()))}return t("set-picker-option",["isValidValue",ie]),t("set-picker-option",["parseUserInput",Be]),t("set-picker-option",["handleClear",Fe]),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)([(0,s.R1)(R).b(),(0,s.R1)(C).b(),(0,s.R1)(R).is("border",e.border),(0,s.R1)(R).is("disabled",(0,s.R1)(Ce)),{"has-sidebar":e.$slots.sidebar||(0,s.R1)(ee),"has-time":(0,s.R1)(ke)}])},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(R).e("body-wrapper"))},[(0,i.RG)(e.$slots,"sidebar",{class:(0,u.C4)((0,s.R1)(R).e("sidebar"))}),(0,s.R1)(ee)?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(R).e("sidebar"))},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(p),(e,t)=>((0,i.uX)(),(0,i.CE)("button",{key:t,type:"button",disabled:(0,s.R1)(Ce),class:(0,u.C4)((0,s.R1)(R).e("shortcut")),onClick:t=>(0,s.R1)(E)(e)},(0,u.v_)(e.text),11,["disabled","onClick"]))),128))],2)):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(R).e("body"))},[(0,s.R1)(ke)?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(C).e("time-header"))},[(0,i.Lk)("span",{class:(0,u.C4)((0,s.R1)(C).e("editors-wrap"))},[(0,i.Lk)("span",{class:(0,u.C4)((0,s.R1)(C).e("time-picker-wrap"))},[(0,i.bF)((0,s.R1)(T.WK),{size:"small",disabled:(0,s.R1)(w).selecting||(0,s.R1)(Ce),placeholder:(0,s.R1)(L)("el.datepicker.startDate"),class:(0,u.C4)((0,s.R1)(C).e("editor")),"model-value":(0,s.R1)(te),"validate-event":!1,onInput:e=>Oe(e,"min"),onChange:e=>Te(e,"min")},null,8,["disabled","placeholder","class","model-value","onInput","onChange"])],2),(0,i.bo)(((0,i.uX)(),(0,i.CE)("span",{class:(0,u.C4)((0,s.R1)(C).e("time-picker-wrap"))},[(0,i.bF)((0,s.R1)(T.WK),{size:"small",class:(0,u.C4)((0,s.R1)(C).e("editor")),disabled:(0,s.R1)(w).selecting||(0,s.R1)(Ce),placeholder:(0,s.R1)(L)("el.datepicker.startTime"),"model-value":(0,s.R1)(re),"validate-event":!1,onFocus:e=>Se.value=!0,onInput:e=>Ne(e,"min"),onChange:e=>We(e,"min")},null,8,["class","disabled","placeholder","model-value","onFocus","onInput","onChange"]),(0,i.bF)((0,s.R1)(ea),{visible:Se.value,format:(0,s.R1)(ae),"datetime-role":"start","parsed-value":m.value,onPick:De},null,8,["visible","format","parsed-value"])],2)),[[(0,s.R1)(sn.A),Le]])],2),(0,i.Lk)("span",null,[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.ArrowRight))]),_:1})]),(0,i.Lk)("span",{class:(0,u.C4)([(0,s.R1)(C).e("editors-wrap"),"is-right"])},[(0,i.Lk)("span",{class:(0,u.C4)((0,s.R1)(C).e("time-picker-wrap"))},[(0,i.bF)((0,s.R1)(T.WK),{size:"small",class:(0,u.C4)((0,s.R1)(C).e("editor")),disabled:(0,s.R1)(w).selecting||(0,s.R1)(Ce),placeholder:(0,s.R1)(L)("el.datepicker.endDate"),"model-value":(0,s.R1)(ne),readonly:!(0,s.R1)(b),"validate-event":!1,onInput:e=>Oe(e,"max"),onChange:e=>Te(e,"max")},null,8,["class","disabled","placeholder","model-value","readonly","onInput","onChange"])],2),(0,i.bo)(((0,i.uX)(),(0,i.CE)("span",{class:(0,u.C4)((0,s.R1)(C).e("time-picker-wrap"))},[(0,i.bF)((0,s.R1)(T.WK),{size:"small",class:(0,u.C4)((0,s.R1)(C).e("editor")),disabled:(0,s.R1)(w).selecting||(0,s.R1)(Ce),placeholder:(0,s.R1)(L)("el.datepicker.endTime"),"model-value":(0,s.R1)(oe),readonly:!(0,s.R1)(b),"validate-event":!1,onFocus:e=>(0,s.R1)(b)&&(Me.value=!0),onInput:e=>Ne(e,"max"),onChange:e=>We(e,"max")},null,8,["class","disabled","placeholder","model-value","readonly","onFocus","onInput","onChange"]),(0,i.bF)((0,s.R1)(ea),{"datetime-role":"end",visible:Me.value,format:(0,s.R1)(ae),"parsed-value":g.value,onPick:Pe},null,8,["visible","format","parsed-value"])],2)),[[(0,s.R1)(sn.A),Ae]])],2)],2)):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",{class:(0,u.C4)([[(0,s.R1)(R).e("content"),(0,s.R1)(C).e("content")],"is-left"])},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(C).e("header"))},[(0,i.Lk)("button",{type:"button",class:(0,u.C4)([(0,s.R1)(R).e("icon-btn"),"d-arrow-left"]),"aria-label":(0,s.R1)(L)("el.datepicker.prevYear"),disabled:(0,s.R1)(Ce),onClick:se},[(0,i.RG)(e.$slots,"prev-year",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.DArrowLeft))]),_:1})])],10,["aria-label","disabled"]),(0,i.bo)((0,i.Lk)("button",{type:"button",class:(0,u.C4)([(0,s.R1)(R).e("icon-btn"),"arrow-left"]),"aria-label":(0,s.R1)(L)("el.datepicker.prevMonth"),disabled:(0,s.R1)(Ce),onClick:ue},[(0,i.RG)(e.$slots,"prev-month",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.ArrowLeft))]),_:1})])],10,["aria-label","disabled"]),[[M.aG,"date"===(0,s.R1)(N)]]),e.unlinkPanels?((0,i.uX)(),(0,i.CE)("button",{key:0,type:"button",disabled:!(0,s.R1)(Re)||(0,s.R1)(Ce),class:(0,u.C4)([[(0,s.R1)(R).e("icon-btn"),(0,s.R1)(R).is("disabled",!(0,s.R1)(Re)||(0,s.R1)(Ce))],"d-arrow-right"]),"aria-label":(0,s.R1)(L)("el.datepicker.nextYear"),onClick:fe},[(0,i.RG)(e.$slots,"next-year",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.DArrowRight))]),_:1})])],10,["disabled","aria-label"])):(0,i.Q3)("v-if",!0),e.unlinkPanels&&"date"===(0,s.R1)(N)?((0,i.uX)(),(0,i.CE)("button",{key:1,type:"button",disabled:!(0,s.R1)(we)||(0,s.R1)(Ce),class:(0,u.C4)([[(0,s.R1)(R).e("icon-btn"),(0,s.R1)(R).is("disabled",!(0,s.R1)(we)||(0,s.R1)(Ce))],"arrow-right"]),"aria-label":(0,s.R1)(L)("el.datepicker.nextMonth"),onClick:he},[(0,i.RG)(e.$slots,"next-month",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.ArrowRight))]),_:1})])],10,["disabled","aria-label"])):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",null,[(0,i.Lk)("span",{role:"button",class:(0,u.C4)((0,s.R1)(C).e("header-label")),"aria-live":"polite",tabindex:e.disabled?void 0:0,"aria-disabled":e.disabled,onKeydown:(0,M.jR)(e=>(0,s.R1)(X)("year"),["enter"]),onClick:e=>(0,s.R1)(X)("year")},(0,u.v_)((0,s.R1)(K)),43,["tabindex","aria-disabled","onKeydown","onClick"]),(0,i.bo)((0,i.Lk)("span",{role:"button","aria-live":"polite",tabindex:e.disabled?void 0:0,"aria-disabled":e.disabled,class:(0,u.C4)([(0,s.R1)(C).e("header-label"),{active:"month"===(0,s.R1)(N)}]),onKeydown:(0,M.jR)(e=>(0,s.R1)(X)("month"),["enter"]),onClick:e=>(0,s.R1)(X)("month")},(0,u.v_)((0,s.R1)(L)(`el.datepicker.month${m.value.month()+1}`)),43,["tabindex","aria-disabled","onKeydown","onClick"]),[[M.aG,"date"===(0,s.R1)(N)]])])],2),"date"===(0,s.R1)(N)?((0,i.uX)(),(0,i.Wv)(Lo,{key:0,ref_key:"leftCurrentViewRef",ref:P,"selection-mode":"range",date:m.value,"min-date":(0,s.R1)(b),"max-date":(0,s.R1)(y),"range-state":(0,s.R1)(w),"disabled-date":(0,s.R1)(a),"cell-class-name":(0,s.R1)(l),"show-week-number":e.showWeekNumber,disabled:(0,s.R1)(Ce),onChangerange:(0,s.R1)(x),onPick:_e,onSelect:(0,s.R1)(_)},null,8,["date","min-date","max-date","range-state","disabled-date","cell-class-name","show-week-number","disabled","onChangerange","onSelect"])):(0,i.Q3)("v-if",!0),"year"===(0,s.R1)(N)?((0,i.uX)(),(0,i.Wv)(Wo,{key:1,ref_key:"leftCurrentViewRef",ref:P,"selection-mode":"year",date:m.value,"disabled-date":(0,s.R1)(a),"parsed-value":e.parsedValue,disabled:(0,s.R1)(Ce),onPick:(0,s.R1)(G)},null,8,["date","disabled-date","parsed-value","disabled","onPick"])):(0,i.Q3)("v-if",!0),"month"===(0,s.R1)(N)?((0,i.uX)(),(0,i.Wv)(To,{key:2,ref_key:"leftCurrentViewRef",ref:P,"selection-mode":"month",date:m.value,"parsed-value":e.parsedValue,"disabled-date":(0,s.R1)(a),disabled:(0,s.R1)(Ce),onPick:(0,s.R1)(Y)},null,8,["date","parsed-value","disabled-date","disabled","onPick"])):(0,i.Q3)("v-if",!0)],2),(0,i.Lk)("div",{class:(0,u.C4)([[(0,s.R1)(R).e("content"),(0,s.R1)(C).e("content")],"is-right"])},[(0,i.Lk)("div",{class:(0,u.C4)([(0,s.R1)(C).e("header"),(0,s.R1)(R).is("disabled",!(0,s.R1)(Re)||(0,s.R1)(Ce))])},[e.unlinkPanels?((0,i.uX)(),(0,i.CE)("button",{key:0,type:"button",disabled:!(0,s.R1)(Re)||(0,s.R1)(Ce),class:(0,u.C4)([(0,s.R1)(R).e("icon-btn"),"d-arrow-left"]),"aria-label":(0,s.R1)(L)("el.datepicker.prevYear"),onClick:me},[(0,i.RG)(e.$slots,"prev-year",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.DArrowLeft))]),_:1})])],10,["disabled","aria-label"])):(0,i.Q3)("v-if",!0),e.unlinkPanels&&"date"===(0,s.R1)(D)?((0,i.uX)(),(0,i.CE)("button",{key:1,type:"button",disabled:!(0,s.R1)(we)||(0,s.R1)(Ce),class:(0,u.C4)([(0,s.R1)(R).e("icon-btn"),"arrow-left"]),"aria-label":(0,s.R1)(L)("el.datepicker.prevMonth"),onClick:ye},[(0,i.RG)(e.$slots,"prev-month",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.ArrowLeft))]),_:1})])],10,["disabled","aria-label"])):(0,i.Q3)("v-if",!0),(0,i.Lk)("button",{type:"button","aria-label":(0,s.R1)(L)("el.datepicker.nextYear"),class:(0,u.C4)([(0,s.R1)(R).e("icon-btn"),"d-arrow-right"]),disabled:(0,s.R1)(Ce),onClick:ce},[(0,i.RG)(e.$slots,"next-year",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.DArrowRight))]),_:1})])],10,["aria-label","disabled"]),(0,i.bo)((0,i.Lk)("button",{type:"button",class:(0,u.C4)([(0,s.R1)(R).e("icon-btn"),"arrow-right"]),disabled:(0,s.R1)(Ce),"aria-label":(0,s.R1)(L)("el.datepicker.nextMonth"),onClick:de},[(0,i.RG)(e.$slots,"next-month",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.ArrowRight))]),_:1})])],10,["disabled","aria-label"]),[[M.aG,"date"===(0,s.R1)(D)]]),(0,i.Lk)("div",null,[(0,i.Lk)("span",{role:"button",class:(0,u.C4)((0,s.R1)(C).e("header-label")),"aria-live":"polite",tabindex:e.disabled?void 0:0,"aria-disabled":e.disabled,onKeydown:(0,M.jR)(e=>(0,s.R1)(U)("year"),["enter"]),onClick:e=>(0,s.R1)(U)("year")},(0,u.v_)((0,s.R1)(H)),43,["tabindex","aria-disabled","onKeydown","onClick"]),(0,i.bo)((0,i.Lk)("span",{role:"button","aria-live":"polite",tabindex:e.disabled?void 0:0,"aria-disabled":e.disabled,class:(0,u.C4)([(0,s.R1)(C).e("header-label"),{active:"month"===(0,s.R1)(D)}]),onKeydown:(0,M.jR)(e=>(0,s.R1)(U)("month"),["enter"]),onClick:e=>(0,s.R1)(U)("month")},(0,u.v_)((0,s.R1)(L)(`el.datepicker.month${g.value.month()+1}`)),43,["tabindex","aria-disabled","onKeydown","onClick"]),[[M.aG,"date"===(0,s.R1)(D)]])])],2),"date"===(0,s.R1)(D)?((0,i.uX)(),(0,i.Wv)(Lo,{key:0,ref_key:"rightCurrentViewRef",ref:F,"selection-mode":"range",date:g.value,"min-date":(0,s.R1)(b),"max-date":(0,s.R1)(y),"range-state":(0,s.R1)(w),"disabled-date":(0,s.R1)(a),"cell-class-name":(0,s.R1)(l),"show-week-number":e.showWeekNumber,disabled:(0,s.R1)(Ce),onChangerange:(0,s.R1)(x),onPick:_e,onSelect:(0,s.R1)(_)},null,8,["date","min-date","max-date","range-state","disabled-date","cell-class-name","show-week-number","disabled","onChangerange","onSelect"])):(0,i.Q3)("v-if",!0),"year"===(0,s.R1)(D)?((0,i.uX)(),(0,i.Wv)(Wo,{key:1,ref_key:"rightCurrentViewRef",ref:F,"selection-mode":"year",date:g.value,"disabled-date":(0,s.R1)(a),"parsed-value":e.parsedValue,disabled:(0,s.R1)(Ce),onPick:(0,s.R1)(q)},null,8,["date","disabled-date","parsed-value","disabled","onPick"])):(0,i.Q3)("v-if",!0),"month"===(0,s.R1)(D)?((0,i.uX)(),(0,i.Wv)(To,{key:2,ref_key:"rightCurrentViewRef",ref:F,"selection-mode":"month",date:g.value,"parsed-value":e.parsedValue,"disabled-date":(0,s.R1)(a),disabled:(0,s.R1)(Ce),onPick:(0,s.R1)(Q)},null,8,["date","parsed-value","disabled-date","disabled","onPick"])):(0,i.Q3)("v-if",!0)],2)],2)],2),e.showFooter&&(0,s.R1)(ke)&&(e.showConfirm||(0,s.R1)(d))?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(R).e("footer"))},[(0,s.R1)(d)?((0,i.uX)(),(0,i.Wv)((0,s.R1)(pe.S2),{key:0,text:"",size:"small",class:(0,u.C4)((0,s.R1)(R).e("link-btn")),onClick:Fe},{default:(0,i.k6)(()=>[(0,i.eW)((0,u.v_)((0,s.R1)(L)("el.datepicker.clear")),1)]),_:1},8,["class"])):(0,i.Q3)("v-if",!0),e.showConfirm?((0,i.uX)(),(0,i.Wv)((0,s.R1)(pe.S2),{key:1,plain:"",size:"small",class:(0,u.C4)((0,s.R1)(R).e("link-btn")),disabled:(0,s.R1)(xe),onClick:e=>(0,s.R1)(k)(!1)},{default:(0,i.k6)(()=>[(0,i.eW)((0,u.v_)((0,s.R1)(L)("el.datepicker.confirm")),1)]),_:1},8,["class","disabled","onClick"])):(0,i.Q3)("v-if",!0)],2)):(0,i.Q3)("v-if",!0)],2))}});var ua=(0,m.A)(sa,[["__file","panel-date-range.vue"]]);const ca=(0,f.b_)({...uo}),da=["pick","set-picker-option","calendar-change"],fa=({unlinkPanels:e,leftDate:t,rightDate:n})=>{const{t:r}=(0,Ie.Ym)(),o=()=>{t.value=t.value.subtract(1,"year"),e.value||(n.value=n.value.subtract(1,"year"))},a=()=>{e.value||(t.value=t.value.add(1,"year")),n.value=n.value.add(1,"year")},l=()=>{t.value=t.value.add(1,"year")},s=()=>{n.value=n.value.subtract(1,"year")},u=(0,i.EW)(()=>`${t.value.year()} ${r("el.datepicker.year")}`),c=(0,i.EW)(()=>`${n.value.year()} ${r("el.datepicker.year")}`),d=(0,i.EW)(()=>t.value.year()),f=(0,i.EW)(()=>n.value.year()===t.value.year()?t.value.year()+1:n.value.year());return{leftPrevYear:o,rightNextYear:a,leftNextYear:l,rightPrevYear:s,leftLabel:u,rightLabel:c,leftYear:d,rightYear:f}},pa="year",va=(0,i.pM)({name:"DatePickerMonthRange"}),ha=(0,i.pM)({...va,props:ca,emits:da,setup(e,{emit:t}){const n=e,{lang:r}=(0,Ie.Ym)(),o=(0,i.WQ)(Po),a=(0,i.WQ)(ao,void 0),{shortcuts:l,disabledDate:c,cellClassName:d}=o.props,f=(0,s.lW)(o.props,"format"),p=(0,s.lW)(o.props,"defaultValue"),v=(0,s.KR)(ve().locale(r.value)),h=(0,s.KR)(ve().locale(r.value).add(1,pa)),{minDate:m,maxDate:g,rangeState:b,ppNs:y,drpNs:w,handleChangeRange:R,handleRangeConfirm:C,handleShortcutClick:x,onSelect:k,parseValue:E}=aa(n,{defaultValue:p,leftDate:v,rightDate:h,unit:pa,sortDates:V}),_=(0,i.EW)(()=>!!l.length),{leftPrevYear:S,rightNextYear:M,leftNextYear:L,rightPrevYear:A,leftLabel:T,rightLabel:I,leftYear:N,rightYear:D}=fa({unlinkPanels:(0,s.lW)(n,"unlinkPanels"),leftDate:v,rightDate:h}),P=(0,i.EW)(()=>n.unlinkPanels&&D.value>N.value+1),F=(e,n=!0)=>{const r=e.minDate,o=e.maxDate;g.value===o&&m.value===r||(t("calendar-change",[r.toDate(),o&&o.toDate()]),g.value=o,m.value=r,n&&C())},B=()=>{let e=null;(null==o?void 0:o.emptyValues)&&(e=o.emptyValues.valueOnClear.value),v.value=vo((0,s.R1)(p),{lang:(0,s.R1)(r),unit:"year",unlinkPanels:n.unlinkPanels})[0],h.value=v.value.add(1,"year"),t("pick",e)},$=e=>yo(e,f.value,r.value,a);function V(e,t){if(n.unlinkPanels&&t){const n=(null==e?void 0:e.year())||0,r=t.year();h.value=n===r?t.add(1,pa):t}else h.value=v.value.add(1,pa)}const j=(0,z.CB)();return(0,i.wB)(()=>n.visible,e=>{!e&&b.value.selecting&&(E(n.parsedValue),k(!1))}),t("set-picker-option",["isValidValue",po]),t("set-picker-option",["parseUserInput",$]),t("set-picker-option",["handleClear",B]),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)([(0,s.R1)(y).b(),(0,s.R1)(w).b(),(0,s.R1)(y).is("border",e.border),(0,s.R1)(y).is("disabled",(0,s.R1)(j)),{"has-sidebar":Boolean(e.$slots.sidebar)||(0,s.R1)(_)}])},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(y).e("body-wrapper"))},[(0,i.RG)(e.$slots,"sidebar",{class:(0,u.C4)((0,s.R1)(y).e("sidebar"))}),(0,s.R1)(_)?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(y).e("sidebar"))},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(l),(e,t)=>((0,i.uX)(),(0,i.CE)("button",{key:t,type:"button",class:(0,u.C4)((0,s.R1)(y).e("shortcut")),disabled:(0,s.R1)(j),onClick:t=>(0,s.R1)(x)(e)},(0,u.v_)(e.text),11,["disabled","onClick"]))),128))],2)):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(y).e("body"))},[(0,i.Lk)("div",{class:(0,u.C4)([[(0,s.R1)(y).e("content"),(0,s.R1)(w).e("content")],"is-left"])},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(w).e("header"))},[(0,i.Lk)("button",{type:"button",class:(0,u.C4)([(0,s.R1)(y).e("icon-btn"),"d-arrow-left"]),disabled:(0,s.R1)(j),onClick:(0,s.R1)(S)},[(0,i.RG)(e.$slots,"prev-year",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.DArrowLeft))]),_:1})])],10,["disabled","onClick"]),e.unlinkPanels?((0,i.uX)(),(0,i.CE)("button",{key:0,type:"button",disabled:!(0,s.R1)(P)||(0,s.R1)(j),class:(0,u.C4)([[(0,s.R1)(y).e("icon-btn"),(0,s.R1)(y).is("disabled",!(0,s.R1)(P)||(0,s.R1)(j))],"d-arrow-right"]),onClick:(0,s.R1)(L)},[(0,i.RG)(e.$slots,"next-year",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.DArrowRight))]),_:1})])],10,["disabled","onClick"])):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",null,(0,u.v_)((0,s.R1)(T)),1)],2),(0,i.bF)(To,{"selection-mode":"range",date:v.value,"min-date":(0,s.R1)(m),"max-date":(0,s.R1)(g),"range-state":(0,s.R1)(b),"disabled-date":(0,s.R1)(c),disabled:(0,s.R1)(j),"cell-class-name":(0,s.R1)(d),onChangerange:(0,s.R1)(R),onPick:F,onSelect:(0,s.R1)(k)},null,8,["date","min-date","max-date","range-state","disabled-date","disabled","cell-class-name","onChangerange","onSelect"])],2),(0,i.Lk)("div",{class:(0,u.C4)([[(0,s.R1)(y).e("content"),(0,s.R1)(w).e("content")],"is-right"])},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(w).e("header"))},[e.unlinkPanels?((0,i.uX)(),(0,i.CE)("button",{key:0,type:"button",disabled:!(0,s.R1)(P)||(0,s.R1)(j),class:(0,u.C4)([[(0,s.R1)(y).e("icon-btn"),(0,s.R1)(y).is("disabled",!(0,s.R1)(P)||(0,s.R1)(j))],"d-arrow-left"]),onClick:(0,s.R1)(A)},[(0,i.RG)(e.$slots,"prev-year",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.DArrowLeft))]),_:1})])],10,["disabled","onClick"])):(0,i.Q3)("v-if",!0),(0,i.Lk)("button",{type:"button",class:(0,u.C4)([(0,s.R1)(y).e("icon-btn"),"d-arrow-right"]),disabled:(0,s.R1)(j),onClick:(0,s.R1)(M)},[(0,i.RG)(e.$slots,"next-year",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.DArrowRight))]),_:1})])],10,["disabled","onClick"]),(0,i.Lk)("div",null,(0,u.v_)((0,s.R1)(I)),1)],2),(0,i.bF)(To,{"selection-mode":"range",date:h.value,"min-date":(0,s.R1)(m),"max-date":(0,s.R1)(g),"range-state":(0,s.R1)(b),"disabled-date":(0,s.R1)(c),disabled:(0,s.R1)(j),"cell-class-name":(0,s.R1)(d),onChangerange:(0,s.R1)(R),onPick:F,onSelect:(0,s.R1)(k)},null,8,["date","min-date","max-date","range-state","disabled-date","disabled","cell-class-name","onChangerange","onSelect"])],2)],2)],2)],2))}});var ma=(0,m.A)(ha,[["__file","panel-month-range.vue"]]);const ga=(0,f.b_)({...uo}),ba=["pick","set-picker-option","calendar-change"],ya=({unlinkPanels:e,leftDate:t,rightDate:n})=>{const r=()=>{t.value=t.value.subtract(10,"year"),e.value||(n.value=n.value.subtract(10,"year"))},o=()=>{e.value||(t.value=t.value.add(10,"year")),n.value=n.value.add(10,"year")},a=()=>{t.value=t.value.add(10,"year")},l=()=>{n.value=n.value.subtract(10,"year")},s=(0,i.EW)(()=>{const e=10*Math.floor(t.value.year()/10);return`${e}-${e+9}`}),u=(0,i.EW)(()=>{const e=10*Math.floor(n.value.year()/10);return`${e}-${e+9}`}),c=(0,i.EW)(()=>{const e=10*Math.floor(t.value.year()/10)+9;return e}),d=(0,i.EW)(()=>{const e=10*Math.floor(n.value.year()/10);return e});return{leftPrevYear:r,rightNextYear:o,leftNextYear:a,rightPrevYear:l,leftLabel:s,rightLabel:u,leftYear:c,rightYear:d}},wa=10,Ra="year",Ca=(0,i.pM)({name:"DatePickerYearRange"}),xa=(0,i.pM)({...Ca,props:ga,emits:ba,setup(e,{emit:t}){const n=e,{lang:r}=(0,Ie.Ym)(),o=(0,s.KR)(ve().locale(r.value)),a=(0,s.KR)(ve().locale(r.value).add(wa,Ra)),l=(0,i.WQ)(ao,void 0),c=(0,i.WQ)(Po),{shortcuts:d,disabledDate:f,cellClassName:p}=c.props,v=(0,s.lW)(c.props,"format"),h=(0,s.lW)(c.props,"defaultValue"),{minDate:m,maxDate:g,rangeState:b,ppNs:y,drpNs:w,handleChangeRange:R,handleRangeConfirm:C,handleShortcutClick:x,onSelect:k,parseValue:E}=aa(n,{defaultValue:h,leftDate:o,rightDate:a,step:wa,unit:Ra,sortDates:U}),{leftPrevYear:_,rightNextYear:S,leftNextYear:M,rightPrevYear:L,leftLabel:A,rightLabel:T,leftYear:I,rightYear:N}=ya({unlinkPanels:(0,s.lW)(n,"unlinkPanels"),leftDate:o,rightDate:a}),D=(0,z.CB)(),P=(0,i.EW)(()=>!!d.length),F=(0,i.EW)(()=>[y.b(),w.b(),y.is("border",n.border),y.is("disabled",D.value),{"has-sidebar":Boolean((0,i.Ht)().sidebar)||P.value}]),B=(0,i.EW)(()=>({content:[y.e("content"),w.e("content"),"is-left"],arrowLeftBtn:[y.e("icon-btn"),"d-arrow-left"],arrowRightBtn:[y.e("icon-btn"),y.is("disabled",!V.value||D.value),"d-arrow-right"]})),$=(0,i.EW)(()=>({content:[y.e("content"),w.e("content"),"is-right"],arrowLeftBtn:[y.e("icon-btn"),y.is("disabled",!V.value||D.value),"d-arrow-left"],arrowRightBtn:[y.e("icon-btn"),"d-arrow-right"]})),V=(0,i.EW)(()=>n.unlinkPanels&&N.value>I.value+1),j=(e,n=!0)=>{const r=e.minDate,o=e.maxDate;g.value===o&&m.value===r||(t("calendar-change",[r.toDate(),o&&o.toDate()]),g.value=o,m.value=r,n&&C())},K=e=>yo(e,v.value,r.value,l),H=e=>po(e)&&(!f||!f(e[0].toDate())&&!f(e[1].toDate())),X=()=>{let e=null;(null==c?void 0:c.emptyValues)&&(e=c.emptyValues.valueOnClear.value);const l=vo((0,s.R1)(h),{lang:(0,s.R1)(r),step:wa,unit:Ra,unlinkPanels:n.unlinkPanels});o.value=l[0],a.value=l[1],t("pick",e)};function U(e,t){if(n.unlinkPanels&&t){const n=(null==e?void 0:e.year())||0,r=t.year();a.value=n+wa>r?t.add(wa,Ra):t}else a.value=o.value.add(wa,Ra)}return(0,i.wB)(()=>n.visible,e=>{!e&&b.value.selecting&&(E(n.parsedValue),k(!1))}),t("set-picker-option",["isValidValue",H]),t("set-picker-option",["parseUserInput",K]),t("set-picker-option",["handleClear",X]),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)((0,s.R1)(F))},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(y).e("body-wrapper"))},[(0,i.RG)(e.$slots,"sidebar",{class:(0,u.C4)((0,s.R1)(y).e("sidebar"))}),(0,s.R1)(P)?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(y).e("sidebar"))},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(d),(e,t)=>((0,i.uX)(),(0,i.CE)("button",{key:t,type:"button",class:(0,u.C4)((0,s.R1)(y).e("shortcut")),disabled:(0,s.R1)(D),onClick:t=>(0,s.R1)(x)(e)},(0,u.v_)(e.text),11,["disabled","onClick"]))),128))],2)):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(y).e("body"))},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(B).content)},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(w).e("header"))},[(0,i.Lk)("button",{type:"button",class:(0,u.C4)((0,s.R1)(B).arrowLeftBtn),disabled:(0,s.R1)(D),onClick:(0,s.R1)(_)},[(0,i.RG)(e.$slots,"prev-year",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.DArrowLeft))]),_:1})])],10,["disabled","onClick"]),e.unlinkPanels?((0,i.uX)(),(0,i.CE)("button",{key:0,type:"button",disabled:!(0,s.R1)(V)||(0,s.R1)(D),class:(0,u.C4)((0,s.R1)(B).arrowRightBtn),onClick:(0,s.R1)(M)},[(0,i.RG)(e.$slots,"next-year",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.DArrowRight))]),_:1})])],10,["disabled","onClick"])):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",null,(0,u.v_)((0,s.R1)(A)),1)],2),(0,i.bF)(Wo,{"selection-mode":"range",date:o.value,"min-date":(0,s.R1)(m),"max-date":(0,s.R1)(g),"range-state":(0,s.R1)(b),"disabled-date":(0,s.R1)(f),disabled:(0,s.R1)(D),"cell-class-name":(0,s.R1)(p),onChangerange:(0,s.R1)(R),onPick:j,onSelect:(0,s.R1)(k)},null,8,["date","min-date","max-date","range-state","disabled-date","disabled","cell-class-name","onChangerange","onSelect"])],2),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)($).content)},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(w).e("header"))},[e.unlinkPanels?((0,i.uX)(),(0,i.CE)("button",{key:0,type:"button",disabled:!(0,s.R1)(V)||(0,s.R1)(D),class:(0,u.C4)((0,s.R1)($).arrowLeftBtn),onClick:(0,s.R1)(L)},[(0,i.RG)(e.$slots,"prev-year",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.DArrowLeft))]),_:1})])],10,["disabled","onClick"])):(0,i.Q3)("v-if",!0),(0,i.Lk)("button",{type:"button",class:(0,u.C4)((0,s.R1)($).arrowRightBtn),disabled:(0,s.R1)(D),onClick:(0,s.R1)(S)},[(0,i.RG)(e.$slots,"next-year",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.DArrowRight))]),_:1})])],10,["disabled","onClick"]),(0,i.Lk)("div",null,(0,u.v_)((0,s.R1)(T)),1)],2),(0,i.bF)(Wo,{"selection-mode":"range",date:a.value,"min-date":(0,s.R1)(m),"max-date":(0,s.R1)(g),"range-state":(0,s.R1)(b),"disabled-date":(0,s.R1)(f),disabled:(0,s.R1)(D),"cell-class-name":(0,s.R1)(p),onChangerange:(0,s.R1)(R),onPick:j,onSelect:(0,s.R1)(k)},null,8,["date","min-date","max-date","range-state","disabled-date","disabled","cell-class-name","onChangerange","onSelect"])],2)],2)],2)],2))}});var ka=(0,m.A)(xa,[["__file","panel-year-range.vue"]]);const Ea=function(e){switch(e){case"daterange":case"datetimerange":return ua;case"monthrange":return ma;case"yearrange":return ka;default:return na}},_a=(e,t)=>{const{lang:n}=(0,Ie.Ym)(),r=(0,s.KR)(!1),o=(0,s.KR)(!1),a=(0,s.KR)(null),l=(0,i.EW)(()=>{const{modelValue:t}=e;return!t||(0,u.cy)(t)&&!t.filter(Boolean).length}),c=r=>{if(!we(e.modelValue,r)){let o;(0,u.cy)(r)?o=r.map(t=>Ce(t,e.valueFormat,n.value)):r&&(o=Ce(r,e.valueFormat,n.value));const a=r?o:r;t(d.l4,a,n.value)}},f=(0,i.EW)(()=>{var t;let r;if(l.value?p.value.getDefaultValue&&(r=p.value.getDefaultValue()):r=(0,u.cy)(e.modelValue)?e.modelValue.map(t=>Re(t,e.valueFormat,n.value)):Re(null!=(t=e.modelValue)?t:"",e.valueFormat,n.value),p.value.getRangeAvailableTime){const e=p.value.getRangeAvailableTime(r);(0,gt.A)(e,r)||(r=e,l.value||c(ke(r)))}return(0,u.cy)(r)&&r.some(e=>!e)&&(r=[]),r}),p=(0,s.KR)({}),v=e=>{p.value[e[0]]=e[1],p.value.panelReady=!0},h=e=>{t("calendar-change",e)},m=(e,n,r)=>{t("panel-change",e,n,r)},g=(e="",t=!1)=>{let n;r.value=t,n=(0,u.cy)(e)?e.map(e=>e.toDate()):e?e.toDate():e,a.value=null,c(n)};return{parsedValue:f,pickerActualVisible:o,pickerOptions:p,pickerVisible:r,userInput:a,valueIsEmpty:l,emitInput:c,onCalendarChange:h,onPanelChange:m,onPick:g,onSetPickerOption:v}};function Sa(e){return"function"===typeof e||"[object Object]"===Object.prototype.toString.call(e)&&!(0,i.vv)(e)}ve.extend(Ae),ve.extend(qr),ve.extend(Gr),ve.extend(Yr),ve.extend(Qr),ve.extend(Zr),ve.extend(Jr),ve.extend(eo);var Ma=(0,i.pM)({name:"ElDatePickerPanel",install:null,props:ro,emits:[d.l4,"calendar-change","panel-change","visible-change","pick"],setup(e,{slots:t,emit:n}){const r=(0,g.DU)("picker-panel"),o=(0,i.WQ)(Po,void 0);if((0,p.b0)(o)){const t=(0,s.Kh)({...(0,s.QW)(e)});(0,i.Gt)(Po,{props:t})}(0,i.Gt)(oo,{slots:t,pickerNs:r});const{parsedValue:a,onCalendarChange:l,onPanelChange:u,onSetPickerOption:c,onPick:d}=(0,i.WQ)(Bo,()=>_a(e,n),!0);return()=>{const n=Ea(e.type);return(0,i.bF)(n,(0,i.v6)(e,{parsedValue:a.value,"onSet-picker-option":c,"onCalendar-change":l,"onPanel-change":u,onPick:d}),Sa(t)?t:{default:()=>[t]})}}});const La=(0,E.GU)(Ma),Aa=(0,f.b_)({automaticDropdown:{type:Boolean,default:!0},id:{type:(0,f.jq)([Array,String])},name:{type:(0,f.jq)([Array,String])},popperClass:P.E.popperClass,popperStyle:P.E.popperStyle,format:String,valueFormat:String,dateFormat:String,timeFormat:String,type:{type:String,default:""},clearable:{type:Boolean,default:!0},clearIcon:{type:(0,f.jq)([String,Object]),default:O.CircleClose},editable:{type:Boolean,default:!0},prefixIcon:{type:(0,f.jq)([String,Object]),default:""},size:nn.mU,readonly:Boolean,disabled:Boolean,placeholder:{type:String,default:""},popperOptions:{type:(0,f.jq)(Object),default:()=>({})},modelValue:{type:(0,f.jq)([Date,Array,String,Number]),default:""},rangeSeparator:{type:String,default:"-"},startPlaceholder:String,endPlaceholder:String,defaultValue:{type:(0,f.jq)([Date,Array])},defaultTime:{type:(0,f.jq)([Date,Array])},isRange:Boolean,...to,disabledDate:{type:Function},cellClassName:{type:Function},shortcuts:{type:Array,default:()=>[]},arrowControl:Boolean,tabindex:{type:(0,f.jq)([String,Number]),default:0},validateEvent:{type:Boolean,default:!0},unlinkPanels:Boolean,placement:{type:(0,f.jq)(String),values:en.DD,default:"bottom"},fallbackPlacements:{type:(0,f.jq)(Array),default:["bottom","top","right","left"]},...rn.bs,...(0,Br.l)(["ariaLabel"]),showNow:{type:Boolean,default:!0},showConfirm:{type:Boolean,default:!0},showFooter:{type:Boolean,default:!0},showWeekNumber:Boolean}),Oa=(0,f.b_)({id:{type:(0,f.jq)(Array)},name:{type:(0,f.jq)(Array)},modelValue:{type:(0,f.jq)([Array,String])},startPlaceholder:String,endPlaceholder:String,disabled:Boolean}),Ta=(0,f.b_)({...Aa,type:{type:(0,f.jq)(String),default:"date"}});var Ia=n(53716);const Na=(0,i.pM)({name:"PickerRangeTrigger",inheritAttrs:!1}),Wa=(0,i.pM)({...Na,props:Oa,emits:["mouseenter","mouseleave","click","touchstart","focus","blur","startInput","endInput","startChange","endChange"],setup(e,{expose:t,emit:n}){const r=e,{formItem:o}=(0,un.j)(),{inputId:a}=(0,un.W)((0,s.Kh)({id:(0,i.EW)(()=>{var e;return null==(e=r.id)?void 0:e[0]})}),{formItemContext:o}),l=(0,Ia.O)(),c=(0,g.DU)("date"),d=(0,g.DU)("range"),f=(0,s.KR)(),p=(0,s.KR)(),{wrapperRef:v,isFocused:h}=(0,dn.K)(f,{disabled:(0,i.EW)(()=>r.disabled)}),m=e=>{n("click",e)},b=e=>{n("mouseenter",e)},y=e=>{n("mouseleave",e)},w=e=>{n("touchstart",e)},R=e=>{n("startInput",e)},C=e=>{n("endInput",e)},x=e=>{n("startChange",e)},k=e=>{n("endChange",e)},E=()=>{var e;null==(e=f.value)||e.focus()},_=()=>{var e,t;null==(e=f.value)||e.blur(),null==(t=p.value)||t.blur()};return t({focus:E,blur:_}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{ref_key:"wrapperRef",ref:v,class:(0,u.C4)([(0,s.R1)(c).is("active",(0,s.R1)(h)),e.$attrs.class]),style:(0,u.Tr)(e.$attrs.style),onClick:m,onMouseenter:b,onMouseleave:y,onTouchstartPassive:w},[(0,i.RG)(e.$slots,"prefix"),(0,i.Lk)("input",(0,i.v6)((0,s.R1)(l),{id:(0,s.R1)(a),ref_key:"inputRef",ref:f,name:e.name&&e.name[0],placeholder:e.startPlaceholder,value:e.modelValue&&e.modelValue[0],class:(0,s.R1)(d).b("input"),disabled:e.disabled,onInput:R,onChange:x}),null,16,["id","name","placeholder","value","disabled"]),(0,i.RG)(e.$slots,"range-separator"),(0,i.Lk)("input",(0,i.v6)((0,s.R1)(l),{id:e.id&&e.id[1],ref_key:"endInputRef",ref:p,name:e.name&&e.name[1],placeholder:e.endPlaceholder,value:e.modelValue&&e.modelValue[1],class:(0,s.R1)(d).b("input"),disabled:e.disabled,onInput:C,onChange:k}),null,16,["id","name","placeholder","value","disabled"]),(0,i.RG)(e.$slots,"suffix")],38))}});var Da=(0,m.A)(Wa,[["__file","picker-range-trigger.vue"]]);const Pa=(0,i.pM)({name:"Picker"}),Fa=(0,i.pM)({...Pa,props:Aa,emits:[d.l4,d.YU,"focus","blur","clear","calendar-change","panel-change","visible-change","keydown"],setup(e,{expose:t,emit:n}){const r=e,o=(0,i.OA)(),a=(0,g.DU)("date"),l=(0,g.DU)("input"),f=(0,g.DU)("range"),{formItem:p}=(0,un.j)(),v=(0,i.WQ)(Fo,{}),h=(0,rn.fQ)(r,null),m=(0,s.KR)(),b=(0,s.KR)(),y=(0,s.KR)(null);let R=!1;const C=(0,z.CB)(),x=_a(r,n),{parsedValue:k,pickerActualVisible:E,userInput:_,pickerVisible:S,pickerOptions:L,valueIsEmpty:A,emitInput:I,onPick:D,onSetPickerOption:P,onCalendarChange:F,onPanelChange:B}=x,{isFocused:$,handleFocus:K,handleBlur:H}=(0,dn.K)(b,{disabled:C,beforeFocus(){return r.readonly},afterFocus(){r.automaticDropdown&&(S.value=!0)},beforeBlur(e){var t;return!R&&(null==(t=m.value)?void 0:t.isFocusInsideContent(e))},afterBlur(){Ce(),S.value=!1,R=!1,r.validateEvent&&(null==p||p.validate("blur").catch(e=>(0,w.U)(e)))}}),X=(0,s.KR)(!1),U=(0,i.EW)(()=>[a.b("editor"),a.bm("editor",r.type),l.e("wrapper"),a.is("disabled",C.value),a.is("active",S.value),f.b("editor"),be?f.bm("editor",be.value):"",o.class]),G=(0,i.EW)(()=>[l.e("icon"),f.e("close-icon"),de.value?"":f.em("close-icon","hidden")]);(0,i.wB)(S,e=>{e?(0,i.dY)(()=>{e&&(y.value=r.modelValue)}):(_.value=null,(0,i.dY)(()=>{q(r.modelValue)}))});const q=(e,t)=>{!t&&we(e,y.value)||(n(d.YU,e),t&&(y.value=e),r.validateEvent&&(null==p||p.validate("change").catch(e=>(0,w.U)(e))))},Y=e=>{n("keydown",e)},Q=(0,i.EW)(()=>b.value?Array.from(b.value.$el.querySelectorAll("input")):[]),Z=(e,t,n)=>{const r=Q.value;r.length&&(n&&"min"!==n?"max"===n&&(r[1].setSelectionRange(e,t),r[1].focus()):(r[0].setSelectionRange(e,t),r[0].focus()))},J=()=>{E.value=!0},ee=()=>{n("visible-change",!0)},te=()=>{E.value=!1,S.value=!1,n("visible-change",!1)},ne=()=>{S.value=!0},re=()=>{S.value=!1},oe=(0,i.EW)(()=>{const e=Ee(k.value);return(0,u.cy)(_.value)?[_.value[0]||e&&e[0]||"",_.value[1]||e&&e[1]||""]:null!==_.value?_.value:!le.value&&A.value||!S.value&&A.value?"":e?ie.value||se.value||ue.value?e.join(", "):e:""}),ae=(0,i.EW)(()=>r.type.includes("time")),le=(0,i.EW)(()=>r.type.startsWith("time")),ie=(0,i.EW)(()=>"dates"===r.type),se=(0,i.EW)(()=>"months"===r.type),ue=(0,i.EW)(()=>"years"===r.type),ce=(0,i.EW)(()=>r.prefixIcon||(ae.value?O.Clock:O.Calendar)),de=(0,i.EW)(()=>r.clearable&&!C.value&&!r.readonly&&!A.value&&(X.value||$.value)),fe=e=>{r.readonly||C.value||(de.value&&(e.stopPropagation(),L.value.handleClear?L.value.handleClear():I(h.valueOnClear.value),q(h.valueOnClear.value,!0),te()),n("clear"))},pe=async e=>{var t;r.readonly||C.value||"INPUT"===(null==(t=e.target)?void 0:t.tagName)&&!$.value&&r.automaticDropdown||(S.value=!0)},ve=()=>{r.readonly||C.value||!A.value&&r.clearable&&(X.value=!0)},he=()=>{X.value=!1},me=e=>{var t;r.readonly||C.value||"INPUT"===(null==(t=e.touches[0].target)?void 0:t.tagName)&&!$.value&&r.automaticDropdown||(S.value=!0)},ge=(0,i.EW)(()=>r.type.includes("range")),be=(0,z.NV)(),ye=(0,i.EW)(()=>{var e,t;return null==(t=null==(e=(0,s.R1)(m))?void 0:e.popperRef)?void 0:t.contentRef}),Re=(0,c.X2F)(b,e=>{const t=(0,s.R1)(ye),n=(0,c.F4c)(b);t&&(e.target===t||e.composedPath().includes(t))||e.target===n||n&&e.composedPath().includes(n)||(S.value=!1)});(0,i.xo)(()=>{null==Re||Re()});const Ce=()=>{if(_.value){const e=xe(oe.value);e&&(_e(e)&&I(ke(e)),_.value=null)}""===_.value&&(I(h.valueOnClear.value),q(h.valueOnClear.value,!0),_.value=null)},xe=e=>e?L.value.parseUserInput(e):null,Ee=e=>{if(!e)return null;const t=(0,u.cy)(e)?e.map(e=>e.format(r.format)):e.format(r.format);return t},_e=e=>L.value.isValidValue(e),Se=async e=>{if(r.readonly||C.value)return;const t=(0,V.CG)(e);if(Y(e),t!==j.R.esc)if(t===j.R.down&&(L.value.handleFocusPicker&&(e.preventDefault(),e.stopPropagation()),!1===S.value&&(S.value=!0,await(0,i.dY)()),L.value.handleFocusPicker))L.value.handleFocusPicker();else{if(t!==j.R.tab)return t===j.R.enter||t===j.R.numpadEnter?(S.value?(null===_.value||""===_.value||_e(xe(oe.value)))&&(Ce(),S.value=!1):S.value=!0,e.preventDefault(),void e.stopPropagation()):void(_.value?e.stopPropagation():L.value.handleKeydownInput&&L.value.handleKeydownInput(e));R=!0}else!0===S.value&&(S.value=!1,e.preventDefault(),e.stopPropagation())},Me=e=>{_.value=e,S.value||(S.value=!0)},Le=e=>{const t=e.target;_.value?_.value=[t.value,_.value[1]]:_.value=[t.value,null]},Ae=e=>{const t=e.target;_.value?_.value=[_.value[0],t.value]:_.value=[null,t.value]},Oe=()=>{var e;const t=_.value,n=xe(t&&t[0]),r=(0,s.R1)(k);if(n&&n.isValid()){_.value=[Ee(n),(null==(e=oe.value)?void 0:e[1])||null];const t=[n,r&&(r[1]||null)];_e(t)&&(I(ke(t)),_.value=null)}},Te=()=>{var e;const t=(0,s.R1)(_),n=xe(t&&t[1]),r=(0,s.R1)(k);if(n&&n.isValid()){_.value=[(null==(e=(0,s.R1)(oe))?void 0:e[0])||null,Ee(n)];const t=[r&&r[0],n];_e(t)&&(I(ke(t)),_.value=null)}},Ie=()=>{var e;null==(e=b.value)||e.focus()},Ne=()=>{var e;null==(e=b.value)||e.blur()};return(0,i.Gt)(Po,{props:r,emptyValues:h}),(0,i.Gt)(Bo,x),t({focus:Ie,blur:Ne,handleOpen:ne,handleClose:re,onPick:D}),(e,t)=>((0,i.uX)(),(0,i.Wv)((0,s.R1)(N.R7),(0,i.v6)({ref_key:"refPopper",ref:m,visible:(0,s.R1)(S),effect:"light",pure:"",trigger:"click"},e.$attrs,{role:"dialog",teleported:"",transition:`${(0,s.R1)(a).namespace.value}-zoom-in-top`,"popper-class":[`${(0,s.R1)(a).namespace.value}-picker__popper`,e.popperClass],"popper-style":e.popperStyle,"popper-options":(0,s.R1)(v),"fallback-placements":e.fallbackPlacements,"gpu-acceleration":!1,placement:e.placement,"stop-popper-mouse-event":!1,"hide-after":0,persistent:"",onBeforeShow:J,onShow:ee,onHide:te}),{default:(0,i.k6)(()=>[(0,s.R1)(ge)?((0,i.uX)(),(0,i.Wv)(Da,{key:1,id:e.id,ref_key:"inputRef",ref:b,"model-value":(0,s.R1)(oe),name:e.name,disabled:(0,s.R1)(C),readonly:!e.editable||e.readonly,"start-placeholder":e.startPlaceholder,"end-placeholder":e.endPlaceholder,class:(0,u.C4)((0,s.R1)(U)),style:(0,u.Tr)(e.$attrs.style),"aria-label":e.ariaLabel,tabindex:e.tabindex,autocomplete:"off",role:"combobox",onClick:pe,onFocus:(0,s.R1)(K),onBlur:(0,s.R1)(H),onStartInput:Le,onStartChange:Oe,onEndInput:Ae,onEndChange:Te,onMousedown:pe,onMouseenter:ve,onMouseleave:he,onTouchstartPassive:me,onKeydown:Se},{prefix:(0,i.k6)(()=>[(0,s.R1)(ce)?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:0,class:(0,u.C4)([(0,s.R1)(l).e("icon"),(0,s.R1)(f).e("icon")])},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)((0,s.R1)(ce))))]),_:1},8,["class"])):(0,i.Q3)("v-if",!0)]),"range-separator":(0,i.k6)(()=>[(0,i.RG)(e.$slots,"range-separator",{},()=>[(0,i.Lk)("span",{class:(0,u.C4)((0,s.R1)(f).b("separator"))},(0,u.v_)(e.rangeSeparator),3)])]),suffix:(0,i.k6)(()=>[e.clearIcon?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:0,class:(0,u.C4)((0,s.R1)(G)),onMousedown:(0,M.D$)((0,s.R1)(u.tE),["prevent"]),onClick:fe},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)(e.clearIcon)))]),_:1},8,["class","onMousedown"])):(0,i.Q3)("v-if",!0)]),_:3},8,["id","model-value","name","disabled","readonly","start-placeholder","end-placeholder","class","style","aria-label","tabindex","onFocus","onBlur"])):((0,i.uX)(),(0,i.Wv)((0,s.R1)(T.WK),{key:0,id:e.id,ref_key:"inputRef",ref:b,"container-role":"combobox","model-value":(0,s.R1)(oe),name:e.name,size:(0,s.R1)(be),disabled:(0,s.R1)(C),placeholder:e.placeholder,class:(0,u.C4)([(0,s.R1)(a).b("editor"),(0,s.R1)(a).bm("editor",e.type),(0,s.R1)(a).is("focus",(0,s.R1)(S)),e.$attrs.class]),style:(0,u.Tr)(e.$attrs.style),readonly:!e.editable||e.readonly||(0,s.R1)(ie)||(0,s.R1)(se)||(0,s.R1)(ue)||"week"===e.type,"aria-label":e.ariaLabel,tabindex:e.tabindex,"validate-event":!1,onInput:Me,onFocus:(0,s.R1)(K),onBlur:(0,s.R1)(H),onKeydown:Se,onChange:Ce,onMousedown:pe,onMouseenter:ve,onMouseleave:he,onTouchstartPassive:me,onClick:(0,M.D$)(()=>{},["stop"])},{prefix:(0,i.k6)(()=>[(0,s.R1)(ce)?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:0,class:(0,u.C4)((0,s.R1)(l).e("icon")),onMousedown:(0,M.D$)(pe,["prevent"]),onTouchstartPassive:me},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)((0,s.R1)(ce))))]),_:1},8,["class","onMousedown"])):(0,i.Q3)("v-if",!0)]),suffix:(0,i.k6)(()=>[(0,s.R1)(de)&&e.clearIcon?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:0,class:(0,u.C4)(`${(0,s.R1)(l).e("icon")} clear-icon`),onMousedown:(0,M.D$)((0,s.R1)(u.tE),["prevent"]),onClick:fe},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)(e.clearIcon)))]),_:1},8,["class","onMousedown"])):(0,i.Q3)("v-if",!0)]),_:1},8,["id","model-value","name","size","disabled","placeholder","class","style","readonly","aria-label","tabindex","onFocus","onBlur","onClick"]))]),content:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"default",{visible:(0,s.R1)(S),actualVisible:(0,s.R1)(E),parsedValue:(0,s.R1)(k),format:e.format,dateFormat:e.dateFormat,timeFormat:e.timeFormat,unlinkPanels:e.unlinkPanels,type:e.type,defaultValue:e.defaultValue,showNow:e.showNow,showConfirm:e.showConfirm,showFooter:e.showFooter,showWeekNumber:e.showWeekNumber,onPick:(0,s.R1)(D),onSelectRange:Z,onSetPickerOption:(0,s.R1)(P),onCalendarChange:(0,s.R1)(F),onPanelChange:(0,s.R1)(B),onMousedown:(0,M.D$)(()=>{},["stop"])})]),_:3},16,["visible","transition","popper-class","popper-style","popper-options","fallback-placements","placement"]))}});var Ba=(0,m.A)(Fa,[["__file","picker.vue"]]);function za(e){return"function"===typeof e||"[object Object]"===Object.prototype.toString.call(e)&&!(0,i.vv)(e)}var $a=(0,i.pM)({name:"ElDatePicker",install:null,props:Ta,emits:[d.l4],setup(e,{expose:t,emit:n,slots:r}){const o=(0,i.EW)(()=>!e.format);(0,i.Gt)(ao,o),(0,i.Gt)(Fo,(0,s.Kh)((0,s.lW)(e,"popperOptions")));const a=(0,s.KR)(),l={focus:()=>{var e;null==(e=a.value)||e.focus()},blur:()=>{var e;null==(e=a.value)||e.blur()},handleOpen:()=>{var e;null==(e=a.value)||e.handleOpen()},handleClose:()=>{var e;null==(e=a.value)||e.handleClose()}};t(l);const u=e=>{n(d.l4,e)};return()=>{var t;const n=null!=(t=e.format)?t:Vo[e.type]||$o;return(0,i.bF)(Ba,(0,i.v6)(e,{format:n,type:e.type,ref:a,"onUpdate:modelValue":u}),{default:e=>(0,i.bF)(La,(0,i.v6)({border:!1},e),za(r)?r:{default:()=>[r]}),"range-separator":r["range-separator"]})}}});const Va=(0,E.GU)($a);var ja=n(59869),Ka=n(9267),Ha=n(58165),Xa=n(49385),Ua=n(62086);const Ga=(0,i.pM)({name:"ImgEmpty"}),qa=(0,i.pM)({...Ga,setup(e){const t=(0,g.DU)("empty"),n=(0,$.Bi)();return(e,r)=>((0,i.uX)(),(0,i.CE)("svg",{viewBox:"0 0 79 86",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},[(0,i.Lk)("defs",null,[(0,i.Lk)("linearGradient",{id:`linearGradient-1-${(0,s.R1)(n)}`,x1:"38.8503086%",y1:"0%",x2:"61.1496914%",y2:"100%"},[(0,i.Lk)("stop",{"stop-color":`var(${(0,s.R1)(t).cssVarBlockName("fill-color-1")})`,offset:"0%"},null,8,["stop-color"]),(0,i.Lk)("stop",{"stop-color":`var(${(0,s.R1)(t).cssVarBlockName("fill-color-4")})`,offset:"100%"},null,8,["stop-color"])],8,["id"]),(0,i.Lk)("linearGradient",{id:`linearGradient-2-${(0,s.R1)(n)}`,x1:"0%",y1:"9.5%",x2:"100%",y2:"90.5%"},[(0,i.Lk)("stop",{"stop-color":`var(${(0,s.R1)(t).cssVarBlockName("fill-color-1")})`,offset:"0%"},null,8,["stop-color"]),(0,i.Lk)("stop",{"stop-color":`var(${(0,s.R1)(t).cssVarBlockName("fill-color-6")})`,offset:"100%"},null,8,["stop-color"])],8,["id"]),(0,i.Lk)("rect",{id:`path-3-${(0,s.R1)(n)}`,x:"0",y:"0",width:"17",height:"36"},null,8,["id"])]),(0,i.Lk)("g",{stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"},[(0,i.Lk)("g",{transform:"translate(-1268.000000, -535.000000)"},[(0,i.Lk)("g",{transform:"translate(1268.000000, 535.000000)"},[(0,i.Lk)("path",{d:"M39.5,86 C61.3152476,86 79,83.9106622 79,81.3333333 C79,78.7560045 57.3152476,78 35.5,78 C13.6847524,78 0,78.7560045 0,81.3333333 C0,83.9106622 17.6847524,86 39.5,86 Z",fill:`var(${(0,s.R1)(t).cssVarBlockName("fill-color-3")})`},null,8,["fill"]),(0,i.Lk)("polygon",{fill:`var(${(0,s.R1)(t).cssVarBlockName("fill-color-7")})`,transform:"translate(27.500000, 51.500000) scale(1, -1) translate(-27.500000, -51.500000) ",points:"13 58 53 58 42 45 2 45"},null,8,["fill"]),(0,i.Lk)("g",{transform:"translate(34.500000, 31.500000) scale(-1, 1) rotate(-25.000000) translate(-34.500000, -31.500000) translate(7.000000, 10.000000)"},[(0,i.Lk)("polygon",{fill:`var(${(0,s.R1)(t).cssVarBlockName("fill-color-7")})`,transform:"translate(11.500000, 5.000000) scale(1, -1) translate(-11.500000, -5.000000) ",points:"2.84078316e-14 3 18 3 23 7 5 7"},null,8,["fill"]),(0,i.Lk)("polygon",{fill:`var(${(0,s.R1)(t).cssVarBlockName("fill-color-5")})`,points:"-3.69149156e-15 7 38 7 38 43 -3.69149156e-15 43"},null,8,["fill"]),(0,i.Lk)("rect",{fill:`url(#linearGradient-1-${(0,s.R1)(n)})`,transform:"translate(46.500000, 25.000000) scale(-1, 1) translate(-46.500000, -25.000000) ",x:"38",y:"7",width:"17",height:"36"},null,8,["fill"]),(0,i.Lk)("polygon",{fill:`var(${(0,s.R1)(t).cssVarBlockName("fill-color-2")})`,transform:"translate(39.500000, 3.500000) scale(-1, 1) translate(-39.500000, -3.500000) ",points:"24 7 41 7 55 -3.63806207e-12 38 -3.63806207e-12"},null,8,["fill"])]),(0,i.Lk)("rect",{fill:`url(#linearGradient-2-${(0,s.R1)(n)})`,x:"13",y:"45",width:"40",height:"36"},null,8,["fill"]),(0,i.Lk)("g",{transform:"translate(53.000000, 45.000000)"},[(0,i.Lk)("use",{fill:`var(${(0,s.R1)(t).cssVarBlockName("fill-color-8")})`,transform:"translate(8.500000, 18.000000) scale(-1, 1) translate(-8.500000, -18.000000) ","xlink:href":`#path-3-${(0,s.R1)(n)}`},null,8,["fill","xlink:href"]),(0,i.Lk)("polygon",{fill:`var(${(0,s.R1)(t).cssVarBlockName("fill-color-9")})`,mask:`url(#mask-4-${(0,s.R1)(n)})`,transform:"translate(12.000000, 9.000000) scale(-1, 1) translate(-12.000000, -9.000000) ",points:"7 0 24 0 20 18 7 16.5"},null,8,["fill","mask"])]),(0,i.Lk)("polygon",{fill:`var(${(0,s.R1)(t).cssVarBlockName("fill-color-2")})`,transform:"translate(66.000000, 51.500000) scale(-1, 1) translate(-66.000000, -51.500000) ",points:"62 45 79 45 70 58 53 58"},null,8,["fill"])])])])]))}});var Ya=(0,m.A)(qa,[["__file","img-empty.vue"]]);const Qa=(0,f.b_)({image:{type:String,default:""},imageSize:Number,description:{type:String,default:""}}),Za=(0,i.pM)({name:"ElEmpty"}),Ja=(0,i.pM)({...Za,props:Qa,setup(e){const t=e,{t:n}=(0,Ie.Ym)(),r=(0,g.DU)("empty"),o=(0,i.EW)(()=>t.description||n("el.table.emptyText")),a=(0,i.EW)(()=>({width:(0,y._V)(t.imageSize)}));return(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)((0,s.R1)(r).b())},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(r).e("image")),style:(0,u.Tr)((0,s.R1)(a))},[e.image?((0,i.uX)(),(0,i.CE)("img",{key:0,src:e.image,ondragstart:"return false"},null,8,["src"])):(0,i.RG)(e.$slots,"image",{key:1},()=>[(0,i.bF)(Ya)])],6),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(r).e("description"))},[e.$slots.description?(0,i.RG)(e.$slots,"description",{key:0}):((0,i.uX)(),(0,i.CE)("p",{key:1},(0,u.v_)((0,s.R1)(o)),1))],2),e.$slots.default?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(r).e("bottom"))},[(0,i.RG)(e.$slots,"default")],2)):(0,i.Q3)("v-if",!0)],2))}});var el=(0,m.A)(Ja,[["__file","empty.vue"]]);const tl=(0,E.GU)(el);var nl=n(82006),rl=n(57009),ol=n(58828),al=n(81418);const ll=(0,f.b_)({modelValue:{type:(0,f.jq)(Array)},max:Number,tagType:{...tn.z.type,default:"info"},tagEffect:tn.z.effect,trigger:{type:(0,f.jq)(String),default:j.R.enter},draggable:Boolean,delimiter:{type:[String,RegExp],default:""},size:nn.mU,clearable:Boolean,clearIcon:{type:Y.Ze,default:O.CircleClose},disabled:{type:Boolean,default:void 0},validateEvent:{type:Boolean,default:!0},readonly:Boolean,autofocus:Boolean,id:{type:String,default:void 0},tabindex:{type:[String,Number],default:0},maxlength:{type:[String,Number]},minlength:{type:[String,Number]},placeholder:String,autocomplete:{type:(0,f.jq)(String),default:"off"},saveOnBlur:{type:Boolean,default:!0},collapseTags:Boolean,collapseTagsTooltip:Boolean,maxCollapseTags:{type:Number,default:1},ariaLabel:String}),il={[d.l4]:e=>(0,u.cy)(e)||(0,p.b0)(e),[d.YU]:e=>(0,u.cy)(e)||(0,p.b0)(e),[d.qs]:e=>(0,u.Kg)(e),"add-tag":e=>(0,u.Kg)(e)||(0,u.cy)(e),"remove-tag":(e,t)=>(0,u.Kg)(e)&&(0,p.Et)(t),"drag-tag":(e,t,n)=>(0,p.Et)(e)&&(0,p.Et)(t)&&(0,u.Kg)(n),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0};var sl=n(2808);function ul({props:e,emit:t,formItem:n}){const r=(0,z.CB)(),o=(0,z.NV)(),a=(0,s.IJ)(),l=(0,s.KR)(),u=(0,s.KR)(),c=(0,i.EW)(()=>["small"].includes(o.value)?"small":"default"),f=(0,i.EW)(()=>{var t;return(null==(t=e.modelValue)?void 0:t.length)?void 0:e.placeholder}),v=(0,i.EW)(()=>!(e.readonly||r.value)),h=(0,i.EW)(()=>{var t,n;return!(0,p.b0)(e.max)&&(null!=(n=null==(t=e.modelValue)?void 0:t.length)?n:0)>=e.max}),m=(0,i.EW)(()=>{var t;return e.collapseTags?null==(t=e.modelValue)?void 0:t.slice(0,e.maxCollapseTags):e.modelValue}),g=(0,i.EW)(()=>{var t;return e.collapseTags?null==(t=e.modelValue)?void 0:t.slice(e.maxCollapseTags):[]}),b=n=>{var r;const o=[...null!=(r=e.modelValue)?r:[],...(0,In.A)(n)];t(d.l4,o),t(d.YU,o),t("add-tag",n),l.value=void 0},y=t=>{var n,r;const o=t.split(e.delimiter).filter(e=>e&&e!==t);if(e.max){const t=e.max-(null!=(r=null==(n=e.modelValue)?void 0:n.length)?r:0);o.splice(t)}return 1===o.length?o[0]:o},R=n=>{if(h.value)l.value=void 0;else if(!T.value){if(e.delimiter&&l.value){const e=y(l.value);e.length&&b(e)}t(d.qs,n.target.value)}},C=t=>{var n;if(T.value)return;const r=(0,V.CG)(t);switch(r){case e.trigger:t.preventDefault(),t.stopPropagation(),k();break;case j.R.numpadEnter:e.trigger===j.R.enter&&(t.preventDefault(),t.stopPropagation(),k());break;case j.R.backspace:!l.value&&(null==(n=e.modelValue)?void 0:n.length)&&(t.preventDefault(),t.stopPropagation(),E(e.modelValue.length-1));break}},x=t=>{if(T.value||!(0,sl.m0)())return;const n=(0,V.CG)(t);switch(n){case j.R.space:e.trigger===j.R.space&&(t.preventDefault(),t.stopPropagation(),k());break}},k=()=>{var e;const t=null==(e=l.value)?void 0:e.trim();t&&!h.value&&b(t)},E=n=>{var r;const o=(null!=(r=e.modelValue)?r:[]).slice(),[a]=o.splice(n,1);t(d.l4,o),t(d.YU,o),t("remove-tag",a,n)},_=()=>{l.value=void 0,t(d.l4,void 0),t(d.YU,void 0),t("clear")},S=(n,r,o)=>{var a;const l=(null!=(a=e.modelValue)?a:[]).slice(),[i]=l.splice(n,1),s=r>n&&"before"===o?-1:r{var e;null==(e=a.value)||e.focus()},L=()=>{var e;null==(e=a.value)||e.blur()},{wrapperRef:A,isFocused:O}=(0,dn.K)(a,{disabled:r,beforeBlur(e){var t;return null==(t=u.value)?void 0:t.isFocusInsideContent(e)},afterBlur(){var t;e.saveOnBlur?k():l.value=void 0,e.validateEvent&&(null==(t=null==n?void 0:n.validate)||t.call(n,"blur").catch(e=>(0,w.U)(e)))}}),{isComposing:T,handleCompositionStart:I,handleCompositionUpdate:N,handleCompositionEnd:W}=(0,cn.o)({afterComposition:R});return(0,i.wB)(()=>e.modelValue,()=>{var t;e.validateEvent&&(null==(t=null==n?void 0:n.validate)||t.call(n,d.YU).catch(e=>(0,w.U)(e)))}),{inputRef:a,wrapperRef:A,tagTooltipRef:u,isFocused:O,isComposing:T,inputValue:l,size:o,tagSize:c,placeholder:f,closable:v,disabled:r,inputLimit:h,showTagList:m,collapseTagList:g,handleDragged:S,handleInput:R,handleKeydown:C,handleKeyup:x,handleAddTag:k,handleRemoveTag:E,handleClear:_,handleCompositionStart:I,handleCompositionUpdate:N,handleCompositionEnd:W,focus:M,blur:L}}function cl(){const e=(0,s.KR)(!1),t=()=>{e.value=!0},n=()=>{e.value=!1};return{hovering:e,handleMouseEnter:t,handleMouseLeave:n}}var dl=n(3337);function fl({wrapperRef:e,handleDragged:t,afterDragged:n}){const r=(0,g.DU)("input-tag"),o=(0,s.IJ)(),a=(0,s.KR)(!1);let l,i,u,c;function d(e){return`.${r.e("inner")} .${r.namespace.value}-tag:nth-child(${e+1})`}function f(t,n){l=n,i=e.value.querySelector(d(n)),i&&(i.style.opacity="0.5"),t.dataTransfer.effectAllowed="move"}function v(t,n){if(u=n,t.preventDefault(),t.dataTransfer.dropEffect="move",(0,p.b0)(l)||l===n)return void(a.value=!1);const i=e.value.querySelector(d(n)).getBoundingClientRect(),s=!(l+1===n),f=!(l-1===n),v=t.clientX-i.left,h=s?f?.5:1:-1,m=f?s?.5:0:1;c=v<=i.width*h?"before":v>i.width*m?"after":void 0;const g=e.value.querySelector(`.${r.e("inner")}`),b=g.getBoundingClientRect(),w=Number.parseFloat((0,y.gd)(g,"gap"))/2,R=i.top-b.top;let C=-9999;if("before"===c)C=Math.max(i.left-b.left-w,Math.floor(-w/2));else if("after"===c){const e=i.right-b.left;C=e+(b.width===e?Math.floor(w/2):w)}(0,y.eC)(o.value,{top:`${R}px`,left:`${C}px`}),a.value=!!c}function h(e){e.preventDefault(),i&&(i.style.opacity=""),!c||(0,p.b0)(l)||(0,p.b0)(u)||l===u||t(l,u,c),a.value=!1,l=void 0,i=null,u=void 0,c=void 0,null==n||n()}return{dropIndicatorRef:o,showDropIndicator:a,handleDragStart:f,handleDragOver:v,handleDragEnd:h}}var pl=n(42934);function vl({props:e,isFocused:t,hovering:n,disabled:r,inputValue:o,size:a,validateState:l,validateIcon:u,needStatusIcon:d}){const f=(0,i.OA)(),p=(0,i.Ht)(),v=(0,g.DU)("input-tag"),h=(0,g.DU)("input"),m=(0,s.KR)(),b=(0,s.KR)(),y=(0,i.EW)(()=>[v.b(),v.is("focused",t.value),v.is("hovering",n.value),v.is("disabled",r.value),v.m(a.value),v.e("wrapper"),f.class]),w=(0,i.EW)(()=>[f.style]),R=(0,i.EW)(()=>{var t,n;return[v.e("inner"),v.is("draggable",e.draggable),v.is("left-space",!(null==(t=e.modelValue)?void 0:t.length)&&!p.prefix),v.is("right-space",!(null==(n=e.modelValue)?void 0:n.length)&&!x.value)]}),C=(0,i.EW)(()=>{var a;return e.clearable&&!r.value&&!e.readonly&&((null==(a=e.modelValue)?void 0:a.length)||o.value)&&(t.value||n.value)}),x=(0,i.EW)(()=>p.suffix||C.value||l.value&&u.value&&d.value),k=(0,s.Kh)({innerWidth:0,collapseItemWidth:0}),E=()=>{if(!b.value)return 0;const e=window.getComputedStyle(b.value);return Number.parseFloat(e.gap||"6px")},_=()=>{k.innerWidth=Number.parseFloat(window.getComputedStyle(b.value).width)},S=()=>{k.collapseItemWidth=m.value.getBoundingClientRect().width},M=(0,i.EW)(()=>{if(!e.collapseTags)return{};const t=E(),n=t+pl.R,r=m.value&&1===e.maxCollapseTags?k.innerWidth-k.collapseItemWidth-t-n:k.innerWidth-n;return{maxWidth:`${Math.max(r,0)}px`}});return(0,c.wYm)(b,_),(0,c.wYm)(m,S),{ns:v,nsInput:h,containerKls:y,containerStyle:w,innerKls:R,showClear:C,showSuffix:x,tagStyle:M,collapseItemRef:m,innerRef:b}}const hl=(0,i.pM)({name:"ElInputTag",inheritAttrs:!1}),ml=(0,i.pM)({...hl,props:ll,emits:il,setup(e,{expose:t,emit:n}){const r=e,o=(0,Ia.O)(),a=(0,i.Ht)(),{form:l,formItem:c}=(0,un.j)(),{inputId:d}=(0,un.W)(r,{formItemContext:c}),f=(0,i.EW)(()=>{var e;return null!=(e=null==l?void 0:l.statusIcon)&&e}),p=(0,i.EW)(()=>(null==c?void 0:c.validateState)||""),v=(0,i.EW)(()=>p.value&&Y.vK[p.value]),{inputRef:h,wrapperRef:m,tagTooltipRef:g,isFocused:b,inputValue:y,size:w,tagSize:R,placeholder:C,closable:x,disabled:k,showTagList:E,collapseTagList:_,handleDragged:S,handleInput:L,handleKeydown:A,handleKeyup:O,handleRemoveTag:T,handleClear:I,handleCompositionStart:D,handleCompositionUpdate:P,handleCompositionEnd:F,focus:B,blur:z}=ul({props:r,emit:n,formItem:c}),{hovering:$,handleMouseEnter:V,handleMouseLeave:j}=cl(),{calculatorRef:K,inputStyle:H}=(0,dl.v)(),{dropIndicatorRef:X,showDropIndicator:U,handleDragStart:G,handleDragOver:q,handleDragEnd:Q}=fl({wrapperRef:m,handleDragged:S,afterDragged:B}),{ns:Z,nsInput:J,containerKls:ee,containerStyle:te,innerKls:ne,showClear:re,showSuffix:oe,tagStyle:ae,collapseItemRef:le,innerRef:ie}=vl({props:r,hovering:$,isFocused:b,inputValue:y,disabled:k,size:w,validateState:p,validateIcon:v,needStatusIcon:f});return t({focus:B,blur:z}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{ref_key:"wrapperRef",ref:m,class:(0,u.C4)((0,s.R1)(ee)),style:(0,u.Tr)((0,s.R1)(te)),onMouseenter:(0,s.R1)(V),onMouseleave:(0,s.R1)(j)},[(0,s.R1)(a).prefix?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(Z).e("prefix"))},[(0,i.RG)(e.$slots,"prefix")],2)):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",{ref_key:"innerRef",ref:ie,class:(0,u.C4)((0,s.R1)(ne))},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(E),(t,n)=>((0,i.uX)(),(0,i.Wv)((0,s.R1)(Jt.u),{key:n,size:(0,s.R1)(R),closable:(0,s.R1)(x),type:e.tagType,effect:e.tagEffect,draggable:(0,s.R1)(x)&&e.draggable,style:(0,u.Tr)((0,s.R1)(ae)),"disable-transitions":"",onClose:e=>(0,s.R1)(T)(n),onDragstart:e=>(0,s.R1)(G)(e,n),onDragover:e=>(0,s.R1)(q)(e,n),onDragend:(0,s.R1)(Q),onDrop:(0,M.D$)(()=>{},["stop"])},{default:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"tag",{value:t,index:n},()=>[(0,i.eW)((0,u.v_)(t),1)])]),_:2},1032,["size","closable","type","effect","draggable","style","onClose","onDragstart","onDragover","onDragend","onDrop"]))),128)),e.collapseTags&&e.modelValue&&e.modelValue.length>e.maxCollapseTags?((0,i.uX)(),(0,i.Wv)((0,s.R1)(N.R7),{key:0,ref_key:"tagTooltipRef",ref:g,disabled:!e.collapseTagsTooltip,"fallback-placements":["bottom","top","right","left"],effect:e.tagEffect,placement:"bottom"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",{ref_key:"collapseItemRef",ref:le},[(0,i.bF)((0,s.R1)(Jt.u),{closable:!1,size:(0,s.R1)(R),type:e.tagType,effect:e.tagEffect,"disable-transitions":""},{default:(0,i.k6)(()=>[(0,i.eW)(" + "+(0,u.v_)(e.modelValue.length-e.maxCollapseTags),1)]),_:1},8,["size","type","effect"])],512)]),content:(0,i.k6)(()=>[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(Z).e("input-tag-list"))},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(_),(t,n)=>((0,i.uX)(),(0,i.Wv)((0,s.R1)(Jt.u),{key:n,size:(0,s.R1)(R),closable:(0,s.R1)(x),type:e.tagType,effect:e.tagEffect,"disable-transitions":"",onClose:t=>(0,s.R1)(T)(n+e.maxCollapseTags)},{default:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"tag",{value:t,index:n+e.maxCollapseTags},()=>[(0,i.eW)((0,u.v_)(t),1)])]),_:2},1032,["size","closable","type","effect","onClose"]))),128))],2)]),_:3},8,["disabled","effect"])):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(Z).e("input-wrapper"))},[(0,i.bo)((0,i.Lk)("input",(0,i.v6)({id:(0,s.R1)(d),ref_key:"inputRef",ref:h,"onUpdate:modelValue":e=>(0,s.i9)(y)?y.value=e:null},(0,s.R1)(o),{type:"text",minlength:e.minlength,maxlength:e.maxlength,disabled:(0,s.R1)(k),readonly:e.readonly,autocomplete:e.autocomplete,tabindex:e.tabindex,placeholder:(0,s.R1)(C),autofocus:e.autofocus,ariaLabel:e.ariaLabel,class:(0,s.R1)(Z).e("input"),style:(0,s.R1)(H),onCompositionstart:(0,s.R1)(D),onCompositionupdate:(0,s.R1)(P),onCompositionend:(0,s.R1)(F),onInput:(0,s.R1)(L),onKeydown:(0,s.R1)(A),onKeyup:(0,s.R1)(O)}),null,16,["id","onUpdate:modelValue","minlength","maxlength","disabled","readonly","autocomplete","tabindex","placeholder","autofocus","ariaLabel","onCompositionstart","onCompositionupdate","onCompositionend","onInput","onKeydown","onKeyup"]),[[M.Jo,(0,s.R1)(y)]]),(0,i.Lk)("span",{ref_key:"calculatorRef",ref:K,"aria-hidden":"true",class:(0,u.C4)((0,s.R1)(Z).e("input-calculator")),textContent:(0,u.v_)((0,s.R1)(y))},null,10,["textContent"])],2),(0,i.bo)((0,i.Lk)("div",{ref_key:"dropIndicatorRef",ref:X,class:(0,u.C4)((0,s.R1)(Z).e("drop-indicator"))},null,2),[[M.aG,(0,s.R1)(U)]])],2),(0,s.R1)(oe)?((0,i.uX)(),(0,i.CE)("div",{key:1,class:(0,u.C4)((0,s.R1)(Z).e("suffix"))},[(0,i.RG)(e.$slots,"suffix"),(0,s.R1)(re)?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:0,class:(0,u.C4)([(0,s.R1)(Z).e("icon"),(0,s.R1)(Z).e("clear")]),onMousedown:(0,M.D$)((0,s.R1)(u.tE),["prevent"]),onClick:(0,s.R1)(I)},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)(e.clearIcon)))]),_:1},8,["class","onMousedown","onClick"])):(0,i.Q3)("v-if",!0),(0,s.R1)(p)&&(0,s.R1)(v)&&(0,s.R1)(f)?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:1,class:(0,u.C4)([(0,s.R1)(J).e("icon"),(0,s.R1)(J).e("validateIcon"),(0,s.R1)(J).is("loading","validating"===(0,s.R1)(p))])},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)((0,s.R1)(v))))]),_:1},8,["class"])):(0,i.Q3)("v-if",!0)],2)):(0,i.Q3)("v-if",!0)],46,["onMouseenter","onMouseleave"]))}});var gl=(0,m.A)(ml,[["__file","input-tag.vue"]]);const bl=(0,E.GU)(gl),yl=(0,f.b_)({type:{type:String,values:["primary","success","warning","info","danger","default"],default:void 0},underline:{type:[Boolean,String],values:[!0,!1,"always","never","hover"],default:void 0},disabled:Boolean,href:{type:String,default:""},target:{type:String,default:"_self"},icon:{type:Y.Ze}}),wl={click:e=>e instanceof MouseEvent};var Rl=n(30261);const Cl=(0,i.pM)({name:"ElLink"}),xl=(0,i.pM)({...Cl,props:yl,emits:wl,setup(e,{emit:t}){const n=e,r=(0,a.H3)("link");(0,Rl.b)({scope:"el-link",from:"The underline option (boolean)",replacement:"'always' | 'hover' | 'never'",version:"3.0.0",ref:"https://element-plus.org/en-US/component/link.html#underline"},(0,i.EW)(()=>(0,p.Lm)(n.underline)));const o=(0,g.DU)("link"),l=(0,i.EW)(()=>{var e,t,a;return[o.b(),o.m(null!=(a=null!=(t=n.type)?t:null==(e=r.value)?void 0:e.type)?a:"default"),o.is("disabled",n.disabled),o.is("underline","always"===c.value),o.is("hover-underline","hover"===c.value&&!n.disabled)]}),c=(0,i.EW)(()=>{var e,t,o;return(0,p.Lm)(n.underline)?n.underline?"hover":"never":null!=(o=null!=(t=n.underline)?t:null==(e=r.value)?void 0:e.underline)?o:"hover"});function d(e){n.disabled||t("click",e)}return(e,t)=>((0,i.uX)(),(0,i.CE)("a",{class:(0,u.C4)((0,s.R1)(l)),href:e.disabled||!e.href?void 0:e.href,target:e.disabled||!e.href?void 0:e.target,onClick:d},[e.icon?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:0},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)(e.icon)))]),_:1})):(0,i.Q3)("v-if",!0),e.$slots.default?((0,i.uX)(),(0,i.CE)("span",{key:1,class:(0,u.C4)((0,s.R1)(o).e("inner"))},[(0,i.RG)(e.$slots,"default")],2)):(0,i.Q3)("v-if",!0),e.$slots.icon?(0,i.RG)(e.$slots,"icon",{key:2}):(0,i.Q3)("v-if",!0)],10,["href","target"]))}});var kl=(0,m.A)(xl,[["__file","link.vue"]]);const El=(0,E.GU)(kl);class _l{constructor(e,t){this.parent=e,this.domNode=t,this.subIndex=0,this.subIndex=0,this.init()}init(){this.subMenuItems=this.domNode.querySelectorAll("li"),this.addListeners()}gotoSubIndex(e){e===this.subMenuItems.length?e=0:e<0&&(e=this.subMenuItems.length-1),this.subMenuItems[e].focus(),this.subIndex=e}addListeners(){const e=this.parent.domNode;Array.prototype.forEach.call(this.subMenuItems,t=>{t.addEventListener("keydown",t=>{const n=(0,V.CG)(t);let r=!1;switch(n){case j.R.down:this.gotoSubIndex(this.subIndex+1),r=!0;break;case j.R.up:this.gotoSubIndex(this.subIndex-1),r=!0;break;case j.R.tab:(0,Kt.Hl)(e,"mouseleave");break;case j.R.enter:case j.R.numpadEnter:case j.R.space:r=!0,t.currentTarget.click();break}return r&&(t.preventDefault(),t.stopPropagation()),!1})})}}class Sl{constructor(e,t){this.domNode=e,this.submenu=null,this.submenu=null,this.init(t)}init(e){this.domNode.setAttribute("tabindex","0");const t=this.domNode.querySelector(`.${e}-menu`);t&&(this.submenu=new _l(this,t)),this.addListeners()}addListeners(){this.domNode.addEventListener("keydown",e=>{const t=(0,V.CG)(e);let n=!1;switch(t){case j.R.down:(0,Kt.Hl)(e.currentTarget,"mouseenter"),this.submenu&&this.submenu.gotoSubIndex(0),n=!0;break;case j.R.up:(0,Kt.Hl)(e.currentTarget,"mouseenter"),this.submenu&&this.submenu.gotoSubIndex(this.submenu.subMenuItems.length-1),n=!0;break;case j.R.tab:(0,Kt.Hl)(e.currentTarget,"mouseleave");break;case j.R.enter:case j.R.numpadEnter:case j.R.space:n=!0,e.currentTarget.click();break}n&&e.preventDefault()})}}class Ml{constructor(e,t){this.domNode=e,this.init(t)}init(e){const t=this.domNode.childNodes;Array.from(t).forEach(t=>{1===t.nodeType&&new Sl(t,e)})}}const Ll=(0,i.pM)({name:"ElMenuCollapseTransition"}),Al=(0,i.pM)({...Ll,setup(e){const t=(0,g.DU)("menu"),n={onBeforeEnter:e=>e.style.opacity="0.2",onEnter(e,n){(0,y.iQ)(e,`${t.namespace.value}-opacity-transition`),e.style.opacity="1",n()},onAfterEnter(e){(0,y.vy)(e,`${t.namespace.value}-opacity-transition`),e.style.opacity=""},onBeforeLeave(e){e.dataset||(e.dataset={}),(0,y.nB)(e,t.m("collapse"))?((0,y.vy)(e,t.m("collapse")),e.dataset.oldOverflow=e.style.overflow,e.dataset.scrollWidth=e.clientWidth.toString(),(0,y.iQ)(e,t.m("collapse"))):((0,y.iQ)(e,t.m("collapse")),e.dataset.oldOverflow=e.style.overflow,e.dataset.scrollWidth=e.clientWidth.toString(),(0,y.vy)(e,t.m("collapse"))),e.style.width=`${e.scrollWidth}px`,e.style.overflow="hidden"},onLeave(e){(0,y.iQ)(e,"horizontal-collapse-transition"),e.style.width=`${e.dataset.scrollWidth}px`}};return(e,t)=>((0,i.uX)(),(0,i.Wv)(M.eB,(0,i.v6)({mode:"out-in"},(0,s.R1)(n)),{default:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"default")]),_:3},16))}});var Ol=(0,m.A)(Al,[["__file","menu-collapse-transition.vue"]]);function Tl(e,t){const n=(0,i.EW)(()=>{let n=e.parent;const r=[t.value];while("ElMenu"!==n.type.name)n.props.index&&r.unshift(n.props.index),n=n.parent;return r}),r=(0,i.EW)(()=>{let t=e.parent;while(t&&!["ElMenu","ElSubMenu"].includes(t.type.name))t=t.parent;return t});return{parentMenu:r,indexPath:n}}function Il(e){const t=(0,i.EW)(()=>{const t=e.backgroundColor;return t?new wr.q(t).shade(20).toString():""});return t}const Nl=(e,t)=>{const n=(0,g.DU)("menu");return(0,i.EW)(()=>n.cssVarBlock({"text-color":e.textColor||"","hover-text-color":e.textColor||"","bg-color":e.backgroundColor||"","hover-bg-color":Il(e).value||"","active-color":e.activeTextColor||"",level:`${t}`}))},Wl="rootMenu",Dl="subMenu:",Pl=(0,f.b_)({index:{type:String,required:!0},showTimeout:Number,hideTimeout:Number,popperClass:String,popperStyle:{type:(0,f.jq)([String,Object])},disabled:Boolean,teleported:{type:Boolean,default:void 0},popperOffset:Number,expandCloseIcon:{type:Y.Ze},expandOpenIcon:{type:Y.Ze},collapseCloseIcon:{type:Y.Ze},collapseOpenIcon:{type:Y.Ze}}),Fl="ElSubMenu";var Bl=(0,i.pM)({name:Fl,props:Pl,setup(e,{slots:t,expose:n}){const r=(0,i.nI)(),{indexPath:o,parentMenu:a}=Tl(r,(0,i.EW)(()=>e.index)),l=(0,g.DU)("menu"),c=(0,g.DU)("sub-menu"),d=(0,i.WQ)(Wl);d||(0,w.$)(Fl,"can not inject root menu");const f=(0,i.WQ)(`${Dl}${a.value.uid}`);f||(0,w.$)(Fl,"can not inject sub menu");const v=(0,s.KR)({}),h=(0,s.KR)({});let m;const b=(0,s.KR)(!1),y=(0,s.KR)(),R=(0,s.KR)(),C=(0,i.EW)(()=>0===f.level),x=(0,i.EW)(()=>"horizontal"===I.value&&C.value?"bottom-start":"right-start"),k=(0,i.EW)(()=>{const t="horizontal"===I.value&&C.value||"vertical"===I.value&&!d.props.collapse;return t?e.expandCloseIcon&&e.expandOpenIcon?L.value?e.expandOpenIcon:e.expandCloseIcon:O.ArrowDown:e.collapseCloseIcon&&e.collapseOpenIcon?L.value?e.collapseOpenIcon:e.collapseCloseIcon:O.ArrowRight}),E=(0,i.EW)(()=>{const t=e.teleported;return(0,p.b0)(t)?C.value:t}),_=(0,i.EW)(()=>d.props.collapse?`${l.namespace.value}-zoom-in-left`:`${l.namespace.value}-zoom-in-top`),S=(0,i.EW)(()=>"horizontal"===I.value&&C.value?["bottom-start","bottom-end","top-start","top-end","right-start","left-start"]:["right-start","right","right-end","left-start","bottom-start","bottom-end","top-start","top-end"]),L=(0,i.EW)(()=>d.openedMenus.includes(e.index)),T=(0,i.EW)(()=>[...Object.values(v.value),...Object.values(h.value)].some(({active:e})=>e)),I=(0,i.EW)(()=>d.props.mode),D=(0,i.EW)(()=>d.props.persistent),P=(0,s.Kh)({index:e.index,indexPath:o,active:T}),F=Nl(d.props,f.level+1),B=(0,i.EW)(()=>{var t;return null!=(t=e.popperOffset)?t:d.props.popperOffset}),z=(0,i.EW)(()=>{var t;return null!=(t=e.popperClass)?t:d.props.popperClass}),$=(0,i.EW)(()=>{var t;return null!=(t=e.popperStyle)?t:d.props.popperStyle}),V=(0,i.EW)(()=>{var t;return null!=(t=e.showTimeout)?t:d.props.showTimeout}),j=(0,i.EW)(()=>{var t;return null!=(t=e.hideTimeout)?t:d.props.hideTimeout}),K=()=>{var e,t,n;return null==(n=null==(t=null==(e=R.value)?void 0:e.popperRef)?void 0:t.popperInstanceRef)?void 0:n.destroy()},H=e=>{e||K()},X=()=>{"hover"===d.props.menuTrigger&&"horizontal"===d.props.mode||d.props.collapse&&"vertical"===d.props.mode||e.disabled||d.handleSubMenuClick({index:e.index,indexPath:o.value,active:T.value})},U=(t,n=V.value)=>{var r;"focus"!==t.type&&("click"===d.props.menuTrigger&&"horizontal"===d.props.mode||!d.props.collapse&&"vertical"===d.props.mode||e.disabled?f.mouseInChild.value=!0:(f.mouseInChild.value=!0,null==m||m(),({stop:m}=(0,A.TO)(()=>{d.openMenu(e.index,o.value)},n)),E.value&&(null==(r=a.value.vnode.el)||r.dispatchEvent(new MouseEvent("mouseenter"))),"mouseenter"===t.type&&t.target&&(0,i.dY)(()=>{(0,Kt.pW)(t.target,{preventScroll:!0})})))},G=(t=!1)=>{var n;"click"===d.props.menuTrigger&&"horizontal"===d.props.mode||!d.props.collapse&&"vertical"===d.props.mode?f.mouseInChild.value=!1:(null==m||m(),f.mouseInChild.value=!1,({stop:m}=(0,A.TO)(()=>!b.value&&d.closeMenu(e.index,o.value),j.value)),E.value&&t&&(null==(n=f.handleMouseleave)||n.call(f,!0)))};(0,i.wB)(()=>d.props.collapse,e=>H(Boolean(e)));{const e=e=>{h.value[e.index]=e},t=e=>{delete h.value[e.index]};(0,i.Gt)(`${Dl}${r.uid}`,{addSubMenu:e,removeSubMenu:t,handleMouseleave:G,mouseInChild:b,level:f.level+1})}return n({opened:L}),(0,i.sV)(()=>{d.addSubMenu(P),f.addSubMenu(P)}),(0,i.xo)(()=>{f.removeSubMenu(P),d.removeSubMenu(P)}),()=>{var n;const o=[null==(n=t.title)?void 0:n.call(t),(0,i.h)(W.tk,{class:c.e("icon-arrow"),style:{transform:L.value?e.expandCloseIcon&&e.expandOpenIcon||e.collapseCloseIcon&&e.collapseOpenIcon&&d.props.collapse?"none":"rotateZ(180deg)":"none"}},{default:()=>(0,u.Kg)(k.value)?(0,i.h)(r.appContext.components[k.value]):(0,i.h)(k.value)})],a=d.isMenuPopup?(0,i.h)(N.R7,{ref:R,visible:L.value,effect:"light",pure:!0,offset:B.value,showArrow:!1,persistent:D.value,popperClass:z.value,popperStyle:$.value,placement:x.value,teleported:E.value,fallbackPlacements:S.value,transition:_.value,gpuAcceleration:!1},{content:()=>{var e;return(0,i.h)("div",{class:[l.m(I.value),l.m("popup-container"),z.value],onMouseenter:e=>U(e,100),onMouseleave:()=>G(!0),onFocus:e=>U(e,100)},[(0,i.h)("ul",{class:[l.b(),l.m("popup"),l.m(`popup-${x.value}`)],style:F.value},[null==(e=t.default)?void 0:e.call(t)])])},default:()=>(0,i.h)("div",{class:c.e("title"),onClick:X},o)}):(0,i.h)(i.FK,{},[(0,i.h)("div",{class:c.e("title"),ref:y,onClick:X},o),(0,i.h)(zn.o,{},{default:()=>{var e;return(0,i.bo)((0,i.h)("ul",{role:"menu",class:[l.b(),l.m("inline")],style:F.value},[null==(e=t.default)?void 0:e.call(t)]),[[M.aG,L.value]])}})]);return(0,i.h)("li",{class:[c.b(),c.is("active",T.value),c.is("opened",L.value),c.is("disabled",e.disabled)],role:"menuitem",ariaHaspopup:!0,ariaExpanded:L.value,onMouseenter:U,onMouseleave:()=>G(),onFocus:U},[a])}}});const zl=(0,f.b_)({mode:{type:String,values:["horizontal","vertical"],default:"vertical"},defaultActive:{type:String,default:""},defaultOpeneds:{type:(0,f.jq)(Array),default:()=>(0,Cn.f)([])},uniqueOpened:Boolean,router:Boolean,menuTrigger:{type:String,values:["hover","click"],default:"hover"},collapse:Boolean,backgroundColor:String,textColor:String,activeTextColor:String,closeOnClickOutside:Boolean,collapseTransition:{type:Boolean,default:!0},ellipsis:{type:Boolean,default:!0},popperOffset:{type:Number,default:6},ellipsisIcon:{type:Y.Ze,default:()=>O.More},popperEffect:{type:(0,f.jq)(String),default:"dark"},popperClass:String,popperStyle:{type:(0,f.jq)([String,Object])},showTimeout:{type:Number,default:300},hideTimeout:{type:Number,default:300},persistent:{type:Boolean,default:!0}}),$l=e=>(0,u.cy)(e)&&e.every(e=>(0,u.Kg)(e)),Vl={close:(e,t)=>(0,u.Kg)(e)&&$l(t),open:(e,t)=>(0,u.Kg)(e)&&$l(t),select:(e,t,n,r)=>(0,u.Kg)(e)&&$l(t)&&(0,u.Gv)(n)&&((0,p.b0)(r)||r instanceof Promise)},jl=64;var Kl=(0,i.pM)({name:"ElMenu",props:zl,emits:Vl,setup(e,{emit:t,slots:n,expose:r}){const o=(0,i.nI)(),a=o.appContext.config.globalProperties.$router,l=(0,s.KR)(),u=(0,s.KR)(),d=(0,g.DU)("menu"),f=(0,g.DU)("sub-menu");let p=jl;const v=(0,s.KR)(-1),h=(0,s.KR)(e.defaultOpeneds&&!e.collapse?e.defaultOpeneds.slice(0):[]),m=(0,s.KR)(e.defaultActive),b=(0,s.KR)({}),y=(0,s.KR)({}),w=(0,i.EW)(()=>"horizontal"===e.mode||"vertical"===e.mode&&e.collapse),R=()=>{const t=m.value&&b.value[m.value];if(!t||"horizontal"===e.mode||e.collapse)return;const n=t.indexPath;n.forEach(e=>{const t=y.value[e];t&&C(e,t.indexPath)})},C=(n,r)=>{h.value.includes(n)||(e.uniqueOpened&&(h.value=h.value.filter(e=>r.includes(e))),h.value.push(n),t("open",n,r))},x=e=>{const t=h.value.indexOf(e);-1!==t&&h.value.splice(t,1)},k=(e,n)=>{x(e),t("close",e,n)},E=({index:e,indexPath:t})=>{const n=h.value.includes(e);n?k(e,t):C(e,t)},_=n=>{("horizontal"===e.mode||e.collapse)&&(h.value=[]);const{index:r,indexPath:o}=n;if(!(0,hr.A)(r)&&!(0,hr.A)(o))if(e.router&&a){const e=n.route||r,l=a.push(e).then(e=>(e||(m.value=r),e));t("select",r,o,{index:r,indexPath:o,route:e},l)}else m.value=r,t("select",r,o,{index:r,indexPath:o})},S=t=>{var n;const r=b.value,o=r[t]||m.value&&r[m.value]||r[e.defaultActive];m.value=null!=(n=null==o?void 0:o.index)?n:t},M=e=>{const t=getComputedStyle(e),n=Number.parseInt(t.marginLeft,10),r=Number.parseInt(t.marginRight,10);return e.offsetWidth+n+r||0},L=()=>{if(!l.value)return-1;const e=Array.from(l.value.childNodes).filter(e=>"#comment"!==e.nodeName&&("#text"!==e.nodeName||e.nodeValue)),t=getComputedStyle(l.value),n=Number.parseInt(t.paddingLeft,10),r=Number.parseInt(t.paddingRight,10),o=l.value.clientWidth-n-r;let a=0,i=0;return e.forEach((e,t)=>{a+=M(e),a<=o-p&&(i=t+1)}),i===e.length?-1:i},A=e=>y.value[e].indexPath,O=(e,t=33.34)=>{let n;return()=>{n&&clearTimeout(n),n=setTimeout(()=>{e()},t)}};let T=!0;const I=()=>{const e=(0,c.F4c)(u);if(e&&(p=M(e)||jl),v.value===L())return;const t=()=>{v.value=-1,(0,i.dY)(()=>{v.value=L()})};T?t():O(t)(),T=!1};let N;(0,i.wB)(()=>e.defaultActive,e=>{b.value[e]||(m.value=""),S(e)}),(0,i.wB)(()=>e.collapse,e=>{e&&(h.value=[])}),(0,i.wB)(b.value,R),(0,i.nT)(()=>{"horizontal"===e.mode&&e.ellipsis?N=(0,c.wYm)(l,I).stop:null==N||N()});const D=(0,s.KR)(!1);{const t=e=>{y.value[e.index]=e},n=e=>{delete y.value[e.index]},r=e=>{b.value[e.index]=e},a=e=>{delete b.value[e.index]};(0,i.Gt)(Wl,(0,s.Kh)({props:e,openedMenus:h,items:b,subMenus:y,activeIndex:m,isMenuPopup:w,addMenuItem:r,removeMenuItem:a,addSubMenu:t,removeSubMenu:n,openMenu:C,closeMenu:k,handleMenuItemClick:_,handleSubMenuClick:E})),(0,i.Gt)(`${Dl}${o.uid}`,{addSubMenu:t,removeSubMenu:n,mouseInChild:D,level:0})}(0,i.sV)(()=>{"horizontal"===e.mode&&new Ml(o.vnode.el,d.namespace.value)});{const e=e=>{const{indexPath:t}=y.value[e];t.forEach(e=>C(e,t))};r({open:e,close:x,updateActiveIndex:S,handleResize:I})}const P=Nl(e,0);return()=>{var r,o;let a=null!=(o=null==(r=n.default)?void 0:r.call(n))?o:[];const s=[];if("horizontal"===e.mode&&l.value){const t=(0,nt.CW)(a).filter(e=>8!==(null==e?void 0:e.shapeFlag)),n=-1===v.value?t:t.slice(0,v.value),r=-1===v.value?[]:t.slice(v.value);(null==r?void 0:r.length)&&e.ellipsis&&(a=n,s.push((0,i.h)(Bl,{ref:u,index:"sub-menu-more",class:f.e("hide-arrow"),popperOffset:e.popperOffset},{title:()=>(0,i.h)(W.tk,{class:f.e("icon-more")},{default:()=>(0,i.h)(e.ellipsisIcon)}),default:()=>r})))}const c=e.closeOnClickOutside?[[sn.A,()=>{h.value.length&&(D.value||(h.value.forEach(e=>t("close",e,A(e))),h.value=[]))}]]:[],p=(0,i.bo)((0,i.h)("ul",{key:String(e.collapse),role:"menubar",ref:l,style:P.value,class:{[d.b()]:!0,[d.m(e.mode)]:!0,[d.m("collapse")]:e.collapse}},[...a,...s]),c);return e.collapseTransition&&"vertical"===e.mode?(0,i.h)(Ol,()=>p):p}}});const Hl=(0,f.b_)({index:{type:(0,f.jq)([String,null]),default:null},route:{type:(0,f.jq)([String,Object])},disabled:Boolean}),Xl={click:e=>(0,u.Kg)(e.index)&&(0,u.cy)(e.indexPath)},Ul="ElMenuItem",Gl=(0,i.pM)({name:Ul}),ql=(0,i.pM)({...Gl,props:Hl,emits:Xl,setup(e,{expose:t,emit:n}){const r=e;(0,p.Xj)(r.index)&&(0,w.U)(Ul,'Missing required prop: "index"');const o=(0,i.nI)(),a=(0,i.WQ)(Wl),l=(0,g.DU)("menu"),c=(0,g.DU)("menu-item");a||(0,w.$)(Ul,"can not inject root menu");const{parentMenu:d,indexPath:f}=Tl(o,(0,s.lW)(r,"index")),v=(0,i.WQ)(`${Dl}${d.value.uid}`);v||(0,w.$)(Ul,"can not inject sub menu");const h=(0,i.EW)(()=>r.index===a.activeIndex),m=(0,s.Kh)({index:r.index,indexPath:f,active:h}),b=()=>{r.disabled||(a.handleMenuItemClick({index:r.index,indexPath:f.value,route:r.route}),n("click",m))};return(0,i.sV)(()=>{v.addSubMenu(m),a.addMenuItem(m)}),(0,i.xo)(()=>{v.removeSubMenu(m),a.removeMenuItem(m)}),t({parentMenu:d,rootMenu:a,active:h,nsMenu:l,nsMenuItem:c,handleClick:b}),(e,t)=>((0,i.uX)(),(0,i.CE)("li",{class:(0,u.C4)([(0,s.R1)(c).b(),(0,s.R1)(c).is("active",(0,s.R1)(h)),(0,s.R1)(c).is("disabled",e.disabled)]),role:"menuitem",tabindex:"-1",onClick:b},["ElMenu"===(0,s.R1)(d).type.name&&(0,s.R1)(a).props.collapse&&e.$slots.title?((0,i.uX)(),(0,i.Wv)((0,s.R1)(N.R7),{key:0,effect:(0,s.R1)(a).props.popperEffect,placement:"right","fallback-placements":["left"],"popper-class":(0,s.R1)(a).props.popperClass,"popper-style":(0,s.R1)(a).props.popperStyle,persistent:(0,s.R1)(a).props.persistent,"focus-on-target":""},{content:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"title")]),default:(0,i.k6)(()=>[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(l).be("tooltip","trigger"))},[(0,i.RG)(e.$slots,"default")],2)]),_:3},8,["effect","popper-class","popper-style","persistent"])):((0,i.uX)(),(0,i.CE)(i.FK,{key:1},[(0,i.RG)(e.$slots,"default"),(0,i.RG)(e.$slots,"title")],64))],2))}});var Yl=(0,m.A)(ql,[["__file","menu-item.vue"]]);const Ql={title:String},Zl=(0,i.pM)({name:"ElMenuItemGroup"}),Jl=(0,i.pM)({...Zl,props:Ql,setup(e){const t=(0,g.DU)("menu-item-group");return(e,n)=>((0,i.uX)(),(0,i.CE)("li",{class:(0,u.C4)((0,s.R1)(t).b())},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(t).e("title"))},[e.$slots.title?(0,i.RG)(e.$slots,"title",{key:1}):((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[(0,i.eW)((0,u.v_)(e.title),1)],64))],2),(0,i.Lk)("ul",null,[(0,i.RG)(e.$slots,"default")])],2))}});var ei=(0,m.A)(Jl,[["__file","menu-item-group.vue"]]);const ti=(0,E.GU)(Kl,{MenuItem:Yl,MenuItemGroup:ei,SubMenu:Bl}),ni=(0,E.WM)(Yl),ri=(0,E.WM)(ei),oi=(0,E.WM)(Bl),ai=(0,f.b_)({icon:{type:Y.Ze,default:()=>O.Back},title:String,content:{type:String,default:""}}),li={back:()=>!0},ii=(0,i.pM)({name:"ElPageHeader"}),si=(0,i.pM)({...ii,props:ai,emits:li,setup(e,{emit:t}){const{t:n}=(0,Ie.Ym)(),r=(0,g.DU)("page-header");function o(){t("back")}return(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)([(0,s.R1)(r).b(),(0,s.R1)(r).is("contentful",!!e.$slots.default),{[(0,s.R1)(r).m("has-breadcrumb")]:!!e.$slots.breadcrumb,[(0,s.R1)(r).m("has-extra")]:!!e.$slots.extra}])},[e.$slots.breadcrumb?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(r).e("breadcrumb"))},[(0,i.RG)(e.$slots,"breadcrumb")],2)):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(r).e("header"))},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(r).e("left"))},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(r).e("back")),role:"button",tabindex:"0",onClick:o},[e.icon||e.$slots.icon?((0,i.uX)(),(0,i.CE)("div",{key:0,"aria-label":e.title||(0,s.R1)(n)("el.pageHeader.title"),class:(0,u.C4)((0,s.R1)(r).e("icon"))},[(0,i.RG)(e.$slots,"icon",{},()=>[e.icon?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:0},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)(e.icon)))]),_:1})):(0,i.Q3)("v-if",!0)])],10,["aria-label"])):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(r).e("title"))},[(0,i.RG)(e.$slots,"title",{},()=>[(0,i.eW)((0,u.v_)(e.title||(0,s.R1)(n)("el.pageHeader.title")),1)])],2)],2),(0,i.bF)((0,s.R1)(Ha.fR),{direction:"vertical"}),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(r).e("content"))},[(0,i.RG)(e.$slots,"content",{},()=>[(0,i.eW)((0,u.v_)(e.content),1)])],2)],2),e.$slots.extra?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(r).e("extra"))},[(0,i.RG)(e.$slots,"extra")],2)):(0,i.Q3)("v-if",!0)],2),e.$slots.default?((0,i.uX)(),(0,i.CE)("div",{key:1,class:(0,u.C4)((0,s.R1)(r).e("main"))},[(0,i.RG)(e.$slots,"default")],2)):(0,i.Q3)("v-if",!0)],2))}});var ui=(0,m.A)(si,[["__file","page-header.vue"]]);const ci=(0,E.GU)(ui);var di=n(77815),fi=n(51585),pi=n(90844);const vi=(0,f.b_)({title:String,confirmButtonText:String,cancelButtonText:String,confirmButtonType:{type:String,values:fi.Od,default:"primary"},cancelButtonType:{type:String,values:fi.Od,default:"text"},icon:{type:Y.Ze,default:()=>O.QuestionFilled},iconColor:{type:String,default:"#f90"},hideIcon:Boolean,hideAfter:{type:Number,default:200},effect:{...P.E.effect,default:"light"},teleported:P.E.teleported,persistent:P.E.persistent,width:{type:[String,Number],default:150},virtualTriggering:pi.p.virtualTriggering,virtualRef:pi.p.virtualRef}),hi={confirm:e=>e instanceof MouseEvent,cancel:e=>e instanceof MouseEvent},mi=(0,i.pM)({name:"ElPopconfirm"}),gi=(0,i.pM)({...mi,props:vi,emits:hi,setup(e,{expose:t,emit:n}){const r=e,{t:o}=(0,Ie.Ym)(),a=(0,g.DU)("popconfirm"),l=(0,s.KR)(),c=(0,s.KR)(),d=(0,i.EW)(()=>{var e;return null==(e=(0,s.R1)(l))?void 0:e.popperRef}),f=()=>{var e,t;null==(t=null==(e=c.value)?void 0:e.focus)||t.call(e)},p=()=>{var e,t;null==(t=null==(e=l.value)?void 0:e.onClose)||t.call(e)},v=(0,i.EW)(()=>({width:(0,y._V)(r.width)})),h=e=>{n("confirm",e),p()},m=e=>{n("cancel",e),p()},b=(0,i.EW)(()=>r.confirmButtonText||o("el.popconfirm.confirmButtonText")),w=(0,i.EW)(()=>r.cancelButtonText||o("el.popconfirm.cancelButtonText"));return t({popperRef:d,hide:p}),(e,t)=>((0,i.uX)(),(0,i.Wv)((0,s.R1)(N.R7),(0,i.v6)({ref_key:"tooltipRef",ref:l,trigger:"click",effect:e.effect},e.$attrs,{"virtual-triggering":e.virtualTriggering,"virtual-ref":e.virtualRef,"popper-class":`${(0,s.R1)(a).namespace.value}-popover`,"popper-style":(0,s.R1)(v),teleported:e.teleported,"fallback-placements":["bottom","top","right","left"],"hide-after":e.hideAfter,persistent:e.persistent,loop:"",onShow:f}),{content:(0,i.k6)(()=>[(0,i.Lk)("div",{ref_key:"rootRef",ref:c,tabindex:"-1",class:(0,u.C4)((0,s.R1)(a).b())},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(a).e("main"))},[!e.hideIcon&&e.icon?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:0,class:(0,u.C4)((0,s.R1)(a).e("icon")),style:(0,u.Tr)({color:e.iconColor})},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)(e.icon)))]),_:1},8,["class","style"])):(0,i.Q3)("v-if",!0),(0,i.eW)(" "+(0,u.v_)(e.title),1)],2),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(a).e("action"))},[(0,i.RG)(e.$slots,"actions",{confirm:h,cancel:m},()=>[(0,i.bF)((0,s.R1)(pe.S2),{size:"small",type:"text"===e.cancelButtonType?"":e.cancelButtonType,text:"text"===e.cancelButtonType,onClick:m},{default:(0,i.k6)(()=>[(0,i.eW)((0,u.v_)((0,s.R1)(w)),1)]),_:1},8,["type","text"]),(0,i.bF)((0,s.R1)(pe.S2),{size:"small",type:"text"===e.confirmButtonType?"":e.confirmButtonType,text:"text"===e.confirmButtonType,onClick:h},{default:(0,i.k6)(()=>[(0,i.eW)((0,u.v_)((0,s.R1)(b)),1)]),_:1},8,["type","text"])])],2)],2)]),default:(0,i.k6)(()=>[e.$slots.reference?(0,i.RG)(e.$slots,"reference",{key:0}):(0,i.Q3)("v-if",!0)]),_:3},16,["effect","virtual-triggering","virtual-ref","popper-class","popper-style","teleported","hide-after","persistent"]))}});var bi=(0,m.A)(gi,[["__file","popconfirm.vue"]]);const yi=(0,E.GU)(bi);var wi=n(30650),Ri=n(98072),Ci=n(69655),xi=n(48096);const ki=(0,f.b_)({modelValue:{type:Number,default:0},id:{type:String,default:void 0},lowThreshold:{type:Number,default:2},highThreshold:{type:Number,default:4},max:{type:Number,default:5},colors:{type:(0,f.jq)([Array,Object]),default:()=>(0,Cn.f)(["","",""])},voidColor:{type:String,default:""},disabledVoidColor:{type:String,default:""},icons:{type:(0,f.jq)([Array,Object]),default:()=>[O.StarFilled,O.StarFilled,O.StarFilled]},voidIcon:{type:Y.Ze,default:()=>O.Star},disabledVoidIcon:{type:Y.Ze,default:()=>O.StarFilled},disabled:{type:Boolean,default:void 0},allowHalf:Boolean,showText:Boolean,showScore:Boolean,textColor:{type:String,default:""},texts:{type:(0,f.jq)(Array),default:()=>(0,Cn.f)(["Extremely bad","Disappointed","Fair","Satisfied","Surprise"])},scoreTemplate:{type:String,default:"{value}"},size:nn.mU,clearable:Boolean,...(0,Br.l)(["ariaLabel"])}),Ei={[d.YU]:e=>(0,p.Et)(e),[d.l4]:e=>(0,p.Et)(e)};var _i=n(87254);const Si=(0,i.pM)({name:"ElRate"}),Mi=(0,i.pM)({...Si,props:ki,emits:Ei,setup(e,{expose:t,emit:n}){const r=e;function o(e,t){const n=e=>(0,u.Gv)(e),r=Object.keys(t).map(e=>+e).filter(r=>{const o=t[r],a=!!n(o)&&o.excluded;return a?ee-t),o=t[r[0]];return n(o)&&o.value||o}const a=(0,i.WQ)(_i.w,void 0),l=(0,z.NV)(),c=(0,g.DU)("rate"),{inputId:f,isLabeledByFormItem:p}=(0,un.W)(r,{formItemContext:a}),v=(0,s.KR)(r.modelValue),h=(0,s.KR)(-1),m=(0,s.KR)(!0),b=(0,s.KR)([]),y=(0,i.EW)(()=>b.value.map(e=>e.$el.clientWidth)),w=(0,i.EW)(()=>[c.b(),c.m(l.value)]),R=(0,z.CB)(),C=(0,i.EW)(()=>c.cssVarBlock({"void-color":r.voidColor,"disabled-void-color":r.disabledVoidColor,"fill-color":_.value})),x=(0,i.EW)(()=>{let e="";return r.showScore?e=r.scoreTemplate.replace(/\{\s*value\s*\}/,R.value?`${r.modelValue}`:`${v.value}`):r.showText&&(e=r.texts[Math.ceil(v.value)-1]),e}),k=(0,i.EW)(()=>100*r.modelValue-100*Math.floor(r.modelValue)),E=(0,i.EW)(()=>(0,u.cy)(r.colors)?{[r.lowThreshold]:r.colors[0],[r.highThreshold]:{value:r.colors[1],excluded:!0},[r.max]:r.colors[2]}:r.colors),_=(0,i.EW)(()=>{const e=o(v.value,E.value);return(0,u.Gv)(e)?"":e}),S=(0,i.EW)(()=>{let e="";return R.value?e=`${k.value}%`:r.allowHalf&&(e="50%"),{color:_.value,width:e}}),L=(0,i.EW)(()=>{let e=(0,u.cy)(r.icons)?[...r.icons]:{...r.icons};return e=(0,s.IG)(e),(0,u.cy)(e)?{[r.lowThreshold]:e[0],[r.highThreshold]:{value:e[1],excluded:!0},[r.max]:e[2]}:e}),A=(0,i.EW)(()=>o(r.modelValue,L.value)),O=(0,i.EW)(()=>R.value?(0,u.Kg)(r.disabledVoidIcon)?r.disabledVoidIcon:(0,s.IG)(r.disabledVoidIcon):(0,u.Kg)(r.voidIcon)?r.voidIcon:(0,s.IG)(r.voidIcon)),T=(0,i.EW)(()=>o(v.value,L.value));function I(e){const t=R.value&&k.value>0&&e-1r.modelValue,n=r.allowHalf&&m.value&&e-.5<=v.value&&e>v.value;return t||n}function N(e){r.clearable&&e===r.modelValue&&(e=0),n(d.l4,e),r.modelValue!==e&&n(d.YU,e)}function D(e){R.value||(r.allowHalf&&m.value?N(v.value):N(e))}function P(e){if(R.value)return;const t=(0,V.CG)(e),o=r.allowHalf?.5:1;let a=v.value;switch(t){case j.R.up:case j.R.right:a+=o;break;case j.R.left:case j.R.down:a-=o;break}return a=(0,xi.A)(a,0,r.max),a!==v.value?(e.stopPropagation(),e.preventDefault(),n(d.l4,a),n(d.YU,a),a):void 0}function F(e,t){R.value||(r.allowHalf&&t?(m.value=2*t.offsetX<=y.value[e-1],v.value=m.value?e-.5:e):v.value=e,h.value=e)}function B(){R.value||(r.allowHalf&&(m.value=r.modelValue!==Math.floor(r.modelValue)),v.value=r.modelValue,h.value=-1)}return(0,i.wB)(()=>r.modelValue,e=>{v.value=e,m.value=r.modelValue!==Math.floor(r.modelValue)}),r.modelValue||n(d.l4,0),t({setCurrentValue:F,resetCurrentValue:B}),(e,t)=>{var n;return(0,i.uX)(),(0,i.CE)("div",{id:(0,s.R1)(f),class:(0,u.C4)([(0,s.R1)(w),(0,s.R1)(c).is("disabled",(0,s.R1)(R))]),role:"slider","aria-label":(0,s.R1)(p)?void 0:e.ariaLabel||"rating","aria-labelledby":(0,s.R1)(p)?null==(n=(0,s.R1)(a))?void 0:n.labelId:void 0,"aria-valuenow":v.value,"aria-valuetext":(0,s.R1)(x)||void 0,"aria-valuemin":"0","aria-valuemax":e.max,tabindex:"0",style:(0,u.Tr)((0,s.R1)(C)),onKeydown:P},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.max,(e,t)=>((0,i.uX)(),(0,i.CE)("span",{key:t,class:(0,u.C4)((0,s.R1)(c).e("item")),onMousemove:t=>F(e,t),onMouseleave:B,onClick:t=>D(e)},[(0,i.bF)((0,s.R1)(W.tk),{ref_for:!0,ref_key:"iconRefs",ref:b,class:(0,u.C4)([(0,s.R1)(c).e("icon"),{hover:h.value===e},(0,s.R1)(c).is("active",e<=v.value),(0,s.R1)(c).is("focus-visible",e===Math.ceil(v.value||1))])},{default:(0,i.k6)(()=>[(0,i.bo)(((0,i.uX)(),(0,i.Wv)((0,i.$y)((0,s.R1)(T)),null,null,512)),[[M.aG,!I(e)&&e<=v.value]]),(0,i.bo)(((0,i.uX)(),(0,i.Wv)((0,i.$y)((0,s.R1)(O)),null,null,512)),[[M.aG,!I(e)&&e>v.value]]),(0,i.bo)(((0,i.uX)(),(0,i.Wv)((0,i.$y)((0,s.R1)(O)),{class:(0,u.C4)([(0,s.R1)(c).em("decimal","box")])},null,8,["class"])),[[M.aG,I(e)]]),(0,i.bo)((0,i.bF)((0,s.R1)(W.tk),{style:(0,u.Tr)((0,s.R1)(S)),class:(0,u.C4)([(0,s.R1)(c).e("icon"),(0,s.R1)(c).e("decimal")])},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)((0,s.R1)(A))))]),_:2},1032,["style","class"]),[[M.aG,I(e)]])]),_:2},1032,["class"])],42,["onMousemove","onClick"]))),128)),e.showText||e.showScore?((0,i.uX)(),(0,i.CE)("span",{key:0,class:(0,u.C4)((0,s.R1)(c).e("text")),style:(0,u.Tr)({color:e.textColor})},(0,u.v_)((0,s.R1)(x)),7)):(0,i.Q3)("v-if",!0)],46,["id","aria-label","aria-labelledby","aria-valuenow","aria-valuetext","aria-valuemax"])}}});var Li=(0,m.A)(Mi,[["__file","rate.vue"]]);const Ai=(0,E.GU)(Li),Oi={primary:"icon-primary",success:"icon-success",warning:"icon-warning",error:"icon-error",info:"icon-info"},Ti={[Oi.primary]:O.InfoFilled,[Oi.success]:O.CircleCheckFilled,[Oi.warning]:O.WarningFilled,[Oi.error]:O.CircleCloseFilled,[Oi.info]:O.InfoFilled},Ii=(0,f.b_)({title:{type:String,default:""},subTitle:{type:String,default:""},icon:{type:String,values:["primary","success","warning","info","error"],default:"info"}}),Ni=(0,i.pM)({name:"ElResult"}),Wi=(0,i.pM)({...Ni,props:Ii,setup(e){const t=e,n=(0,g.DU)("result"),r=(0,i.EW)(()=>{const e=t.icon,n=e&&Oi[e]?Oi[e]:"icon-info",r=Ti[n]||Ti["icon-info"];return{class:n,component:r}});return(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)((0,s.R1)(n).b())},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(n).e("icon"))},[(0,i.RG)(e.$slots,"icon",{},()=>[(0,s.R1)(r).component?((0,i.uX)(),(0,i.Wv)((0,i.$y)((0,s.R1)(r).component),{key:0,class:(0,u.C4)((0,s.R1)(r).class)},null,8,["class"])):(0,i.Q3)("v-if",!0)])],2),e.title||e.$slots.title?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(n).e("title"))},[(0,i.RG)(e.$slots,"title",{},()=>[(0,i.Lk)("p",null,(0,u.v_)(e.title),1)])],2)):(0,i.Q3)("v-if",!0),e.subTitle||e.$slots["sub-title"]?((0,i.uX)(),(0,i.CE)("div",{key:1,class:(0,u.C4)((0,s.R1)(n).e("subtitle"))},[(0,i.RG)(e.$slots,"sub-title",{},()=>[(0,i.Lk)("p",null,(0,u.v_)(e.subTitle),1)])],2)):(0,i.Q3)("v-if",!0),e.$slots.extra?((0,i.uX)(),(0,i.CE)("div",{key:2,class:(0,u.C4)((0,s.R1)(n).e("extra"))},[(0,i.RG)(e.$slots,"extra")],2)):(0,i.Q3)("v-if",!0)],2))}});var Di=(0,m.A)(Wi,[["__file","result.vue"]]);const Pi=(0,E.GU)(Di),Fi=["start","center","end","space-around","space-between","space-evenly"],Bi=["top","middle","bottom"],zi=(0,f.b_)({tag:{type:String,default:"div"},gutter:{type:Number,default:0},justify:{type:String,values:Fi,default:"start"},align:{type:String,values:Bi}}),$i=(0,i.pM)({name:"ElRow"}),Vi=(0,i.pM)({...$i,props:zi,setup(e){const t=e,n=(0,g.DU)("row"),r=(0,i.EW)(()=>t.gutter);(0,i.Gt)(kn,{gutter:r});const o=(0,i.EW)(()=>{const e={};return t.gutter?(e.marginRight=e.marginLeft=`-${t.gutter/2}px`,e):e}),a=(0,i.EW)(()=>[n.b(),n.is(`justify-${t.justify}`,"start"!==t.justify),n.is(`align-${t.align}`,!!t.align)]);return(e,t)=>((0,i.uX)(),(0,i.Wv)((0,i.$y)(e.tag),{class:(0,u.C4)((0,s.R1)(a)),style:(0,u.Tr)((0,s.R1)(o))},{default:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"default")]),_:3},8,["class","style"]))}});var ji=(0,m.A)(Vi,[["__file","row.vue"]]);const Ki=(0,E.GU)(ji);var Hi=n(76018),Xi=n(29615);const Ui=(0,i.pM)({props:{item:{type:Object,required:!0},style:{type:Object},height:Number},setup(){const e=(0,g.DU)("select");return{ns:e}}});function Gi(e,t,n,r,o,a){return(0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)(e.ns.be("group","title")),style:(0,u.Tr)({...e.style,lineHeight:`${e.height}px`})},(0,u.v_)(e.item.label),7)}var qi=(0,m.A)(Ui,[["render",Gi],["__file","group-item.vue"]]);function Yi(e,{emit:t}){return{hoverItem:()=>{e.disabled||t("hover",e.index)},selectOptionClick:()=>{e.disabled||t("select",e.item,e.index)}}}var Qi=n(10793);const Zi=(0,f.b_)({allowCreate:Boolean,autocomplete:{type:(0,f.jq)(String),default:"none"},automaticDropdown:Boolean,clearable:Boolean,clearIcon:{type:Y.Ze,default:O.CircleClose},effect:{type:(0,f.jq)(String),default:"light"},collapseTags:Boolean,collapseTagsTooltip:Boolean,maxCollapseTags:{type:Number,default:1},defaultFirstOption:Boolean,disabled:{type:Boolean,default:void 0},estimatedOptionHeight:{type:Number,default:void 0},filterable:Boolean,filterMethod:{type:(0,f.jq)(Function)},height:{type:Number,default:274},itemHeight:{type:Number,default:34},id:String,loading:Boolean,loadingText:String,modelValue:{type:(0,f.jq)([Array,String,Number,Boolean,Object]),default:void 0},multiple:Boolean,multipleLimit:{type:Number,default:0},name:String,noDataText:String,noMatchText:String,remoteMethod:{type:(0,f.jq)(Function)},reserveKeyword:{type:Boolean,default:!0},options:{type:(0,f.jq)(Array),required:!0},placeholder:{type:String},teleported:P.E.teleported,persistent:{type:Boolean,default:!0},popperClass:P.E.popperClass,popperStyle:P.E.popperStyle,popperOptions:{type:(0,f.jq)(Object),default:()=>({})},remote:Boolean,debounce:{type:Number,default:300},size:nn.mU,props:{type:(0,f.jq)(Object),default:()=>Qi.G},valueKey:{type:String,default:"value"},scrollbarAlwaysOn:Boolean,validateEvent:{type:Boolean,default:!0},offset:{type:Number,default:12},remoteShowSuffix:Boolean,showArrow:{type:Boolean,default:!0},placement:{type:(0,f.jq)(String),values:en.DD,default:"bottom-start"},fallbackPlacements:{type:(0,f.jq)(Array),default:["bottom-start","top-start","right","left"]},tagType:{...tn.z.type,default:"info"},tagEffect:{...tn.z.effect,default:"light"},tabindex:{type:[String,Number],default:0},appendTo:P.E.appendTo,fitInputWidth:{type:[Boolean,Number],default:!0,validator(e){return(0,p.Lm)(e)||(0,p.Et)(e)}},suffixIcon:{type:Y.Ze,default:O.ArrowDown},...rn.bs,...(0,Br.l)(["ariaLabel"])}),Ji=(0,f.b_)({data:Array,disabled:Boolean,hovering:Boolean,item:{type:(0,f.jq)(Object),required:!0},index:Number,style:Object,selected:Boolean,created:Boolean}),es={[d.l4]:e=>!0,[d.YU]:e=>!0,"remove-tag":e=>!0,"visible-change":e=>!0,focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0},ts={hover:e=>(0,p.Et)(e),select:(e,t)=>!0},ns=Symbol("ElSelectV2Injection"),rs=(0,i.pM)({props:Ji,emits:ts,setup(e,{emit:t}){const n=(0,i.WQ)(ns),r=(0,g.DU)("select"),{hoverItem:o,selectOptionClick:a}=Yi(e,{emit:t}),{getLabel:l}=(0,Qi.Y)(n.props),s=n.contentId;return{ns:r,contentId:s,hoverItem:o,selectOptionClick:a,getLabel:l}}});function os(e,t,n,r,o,a){return(0,i.uX)(),(0,i.CE)("li",{id:`${e.contentId}-${e.index}`,role:"option","aria-selected":e.selected,"aria-disabled":e.disabled||void 0,style:(0,u.Tr)(e.style),class:(0,u.C4)([e.ns.be("dropdown","item"),e.ns.is("selected",e.selected),e.ns.is("disabled",e.disabled),e.ns.is("created",e.created),e.ns.is("hovering",e.hovering)]),onMousemove:e.hoverItem,onClick:(0,M.D$)(e.selectOptionClick,["stop"])},[(0,i.RG)(e.$slots,"default",{item:e.item,index:e.index,disabled:e.disabled},()=>[(0,i.Lk)("span",null,(0,u.v_)(e.getLabel(e.item)),1)])],46,["id","aria-selected","aria-disabled","onMousemove","onClick"])}var as=(0,m.A)(rs,[["render",os],["__file","option-item.vue"]]),ls=n(88500),is=Number.isNaN||function(e){return"number"===typeof e&&e!==e};function ss(e,t){return e===t||!(!is(e)||!is(t))}function us(e,t){if(e.length!==t.length)return!1;for(var n=0;n{const e=(0,i.nI)(),t=e.proxy.$props;return(0,i.EW)(()=>{const e=(e,t,n)=>({});return t.perfMode?(0,ls.A)(e):cs(e)})};var fs=n(37063),ps=n(46697);const vs=(0,f.Y8)({type:(0,f.jq)([Number,Function]),required:!0}),hs=(0,f.Y8)({type:Number}),ms=(0,f.Y8)({type:Number,default:2}),gs=(0,f.Y8)({type:String,values:["ltr","rtl"],default:"ltr"}),bs=(0,f.Y8)({type:Number,default:0}),ys=(0,f.Y8)({type:Number,required:!0}),ws=(0,f.Y8)({type:String,values:["horizontal","vertical"],default:ps.tT}),Rs=(0,f.b_)({className:{type:String,default:""},containerElement:{type:(0,f.jq)([String,Object]),default:"div"},data:{type:(0,f.jq)(Array),default:()=>(0,Cn.f)([])},direction:gs,height:{type:[String,Number],required:!0},innerElement:{type:[String,Object],default:"div"},innerProps:{type:(0,f.jq)(Object),default:()=>({})},style:{type:(0,f.jq)([Object,String,Array])},useIsScrolling:Boolean,width:{type:[Number,String],required:!1},perfMode:{type:Boolean,default:!0},scrollbarAlwaysOn:Boolean}),Cs=(0,f.b_)({cache:ms,estimatedItemSize:hs,layout:ws,initScrollOffset:bs,total:ys,itemSize:vs,...Rs}),xs={type:Number,default:6},ks={type:Number,default:0},Es={type:Number,default:2},_s=(0,f.b_)({columnCache:ms,columnWidth:vs,estimatedColumnWidth:hs,estimatedRowHeight:hs,initScrollLeft:bs,initScrollTop:bs,itemKey:{type:(0,f.jq)(Function),default:({columnIndex:e,rowIndex:t})=>`${t}:${e}`},rowCache:ms,rowHeight:vs,totalColumn:ys,totalRow:ys,hScrollbarSize:xs,vScrollbarSize:xs,scrollbarStartGap:ks,scrollbarEndGap:Es,role:String,...Rs}),Ss=(0,f.b_)({alwaysOn:Boolean,class:String,layout:ws,total:ys,ratio:{type:Number,required:!0},clientSize:{type:Number,required:!0},scrollFrom:{type:Number,required:!0},scrollbarSize:xs,startGap:ks,endGap:Es,visible:Boolean}),Ms=(e,t)=>ee===ps.zf||e===ps.rX||e===ps.bx,As=e=>e===ps.rX;let Os=null;function Ts(e=!1){if(null===Os||e){const e=document.createElement("div"),t=e.style;t.width="50px",t.height="50px",t.overflow="scroll",t.direction="rtl";const n=document.createElement("div"),r=n.style;return r.width="100px",r.height="100px",e.appendChild(n),document.body.appendChild(e),e.scrollLeft>0?Os=ps.sr:(e.scrollLeft=1,Os=0===e.scrollLeft?ps.Cg:ps.KR),document.body.removeChild(e),Os}return Os}function Is({move:e,size:t,bar:n},r){const o={},a=`translate${n.axis}(${e}px)`;return o[n.size]=t,o.transform=a,"horizontal"===r?o.height="100%":o.width="100%",o}var Ns=n(97017),Ws=n(15431);const Ds=(0,i.pM)({name:"ElVirtualScrollBar",props:Ss,emits:["scroll","start-move","stop-move"],setup(e,{emit:t}){const n=(0,i.EW)(()=>e.startGap+e.endGap),r=(0,g.DU)("virtual-scrollbar"),o=(0,g.DU)("scrollbar"),a=(0,s.KR)(),l=(0,s.KR)();let u=null,c=null;const d=(0,s.Kh)({isDragging:!1,traveled:0}),f=(0,i.EW)(()=>Ns.rc[e.layout]),p=(0,i.EW)(()=>e.clientSize-(0,s.R1)(n)),v=(0,i.EW)(()=>({position:"absolute",width:`${ps.bx===e.layout?p.value:e.scrollbarSize}px`,height:`${ps.bx===e.layout?e.scrollbarSize:p.value}px`,[ps.N9[e.layout]]:"2px",right:"2px",bottom:"2px",borderRadius:"4px"})),h=(0,i.EW)(()=>{const t=e.ratio;if(t>=100)return Number.POSITIVE_INFINITY;if(t>=50)return t*p.value/100;const n=p.value/3;return Math.floor(Math.min(Math.max(t*p.value/100,ps.U4),n))}),m=(0,i.EW)(()=>{if(!Number.isFinite(h.value))return{display:"none"};const t=`${h.value}px`,n=Is({bar:f.value,size:t,move:d.traveled},e.layout);return n}),b=(0,i.EW)(()=>Math.ceil(e.clientSize-h.value-(0,s.R1)(n))),y=()=>{window.addEventListener("mousemove",x),window.addEventListener("mouseup",C);const e=(0,s.R1)(l);e&&(c=document.onselectstart,document.onselectstart=()=>!1,e.addEventListener("touchmove",x,{passive:!0}),e.addEventListener("touchend",C))},w=()=>{window.removeEventListener("mousemove",x),window.removeEventListener("mouseup",C),document.onselectstart=c,c=null;const e=(0,s.R1)(l);e&&(e.removeEventListener("touchmove",x),e.removeEventListener("touchend",C))},R=e=>{e.stopImmediatePropagation(),e.ctrlKey||[1,2].includes(e.button)||(d.isDragging=!0,d[f.value.axis]=e.currentTarget[f.value.offset]-(e[f.value.client]-e.currentTarget.getBoundingClientRect()[f.value.direction]),t("start-move"),y())},C=()=>{d.isDragging=!1,d[f.value.axis]=0,t("stop-move"),w()},x=e=>{const{isDragging:n}=d;if(!n)return;if(!l.value||!a.value)return;const r=d[f.value.axis];if(!r)return;(0,Ws.V)(u);const o=-1*(a.value.getBoundingClientRect()[f.value.direction]-e[f.value.client]),i=l.value[f.value.offset]-r,s=o-i;u=(0,Ws.m)(()=>{d.traveled=Math.max(0,Math.min(s,b.value)),t("scroll",s,b.value)})},k=e=>{const n=Math.abs(e.target.getBoundingClientRect()[f.value.direction]-e[f.value.client]),r=l.value[f.value.offset]/2,o=n-r;d.traveled=Math.max(0,Math.min(o,b.value)),t("scroll",o,b.value)};return(0,i.wB)(()=>e.scrollFrom,e=>{d.isDragging||(d.traveled=Math.ceil(e*b.value))}),(0,i.xo)(()=>{w()}),()=>(0,i.h)("div",{role:"presentation",ref:a,class:[r.b(),e.class,(e.alwaysOn||d.isDragging)&&"always-on"],style:v.value,onMousedown:(0,M.D$)(k,["stop","prevent"]),onTouchstartPrevent:R},(0,i.h)("div",{ref:l,class:o.e("thumb"),style:m.value,onMousedown:R},[]))}}),Ps=({name:e,getOffset:t,getItemSize:n,getItemOffset:r,getEstimatedTotalSize:o,getStartIndexForOffset:a,getStopIndexForStartIndex:l,initCache:d,clearCache:f,validateProps:v})=>(0,i.pM)({name:null!=e?e:"ElVirtualList",props:Cs,emits:[ps.xG,ps.k0],setup(e,{emit:h,expose:m}){v(e);const b=(0,i.nI)(),y=(0,g.DU)("vl"),w=(0,s.KR)(d(e,b)),R=ds(),C=(0,s.KR)(),x=(0,s.KR)(),k=(0,s.KR)(),E=(0,s.KR)({isScrolling:!1,scrollDir:"forward",scrollOffset:(0,p.Et)(e.initScrollOffset)?e.initScrollOffset:0,updateRequested:!1,isScrollbarDragging:!1,scrollbarAlwaysOn:e.scrollbarAlwaysOn}),_=(0,i.EW)(()=>{const{total:t,cache:n}=e,{isScrolling:r,scrollDir:o,scrollOffset:i}=(0,s.R1)(E);if(0===t)return[0,0,0,0];const u=a(e,i,(0,s.R1)(w)),c=l(e,u,i,(0,s.R1)(w)),d=r&&o!==ps.Wc?1:Math.max(1,n),f=r&&o!==ps.OX?1:Math.max(1,n);return[Math.max(0,u-d),Math.max(0,Math.min(t-1,c+f)),u,c]}),S=(0,i.EW)(()=>o(e,(0,s.R1)(w))),M=(0,i.EW)(()=>Ls(e.layout)),L=(0,i.EW)(()=>[{position:"relative",["overflow-"+(M.value?"x":"y")]:"scroll",WebkitOverflowScrolling:"touch",willChange:"transform"},{direction:e.direction,height:(0,p.Et)(e.height)?`${e.height}px`:e.height,width:(0,p.Et)(e.width)?`${e.width}px`:e.width},e.style]),O=(0,i.EW)(()=>{const e=(0,s.R1)(S),t=(0,s.R1)(M);return{height:t?"100%":`${e}px`,pointerEvents:(0,s.R1)(E).isScrolling?"none":void 0,width:t?`${e}px`:"100%",margin:0,boxSizing:"border-box"}}),T=(0,i.EW)(()=>M.value?e.width:e.height),{onWheel:I}=(0,fs.A)({atStartEdge:(0,i.EW)(()=>E.value.scrollOffset<=0),atEndEdge:(0,i.EW)(()=>E.value.scrollOffset>=S.value),layout:(0,i.EW)(()=>e.layout)},e=>{var t,n;null==(n=(t=k.value).onMouseUp)||n.call(t),B(Math.min(E.value.scrollOffset+e,S.value-T.value))});(0,c.MLh)(C,"wheel",I,{passive:!1});const N=()=>{const{total:t}=e;if(t>0){const[e,t,n,r]=(0,s.R1)(_);h(ps.xG,e,t,n,r)}const{scrollDir:n,scrollOffset:r,updateRequested:o}=(0,s.R1)(E);h(ps.k0,n,r,o)},W=e=>{const{clientHeight:t,scrollHeight:n,scrollTop:r}=e.currentTarget,o=(0,s.R1)(E);if(o.scrollOffset===r)return;const a=Math.max(0,Math.min(r,n-t));E.value={...o,isScrolling:!0,scrollDir:Ms(o.scrollOffset,a),scrollOffset:a,updateRequested:!1},(0,i.dY)(V)},D=t=>{const{clientWidth:n,scrollLeft:r,scrollWidth:o}=t.currentTarget,a=(0,s.R1)(E);if(a.scrollOffset===r)return;const{direction:l}=e;let u=r;if(l===ps.rX)switch(Ts()){case ps.Cg:u=-r;break;case ps.sr:u=o-n-r;break}u=Math.max(0,Math.min(u,o-n)),E.value={...a,isScrolling:!0,scrollDir:Ms(a.scrollOffset,u),scrollOffset:u,updateRequested:!1},(0,i.dY)(V)},P=e=>{(0,s.R1)(M)?D(e):W(e),N()},F=(e,t)=>{const n=(S.value-T.value)/t*e;B(Math.min(S.value-T.value,n))},B=e=>{e=Math.max(e,0),e!==(0,s.R1)(E).scrollOffset&&(E.value={...(0,s.R1)(E),scrollOffset:e,scrollDir:Ms((0,s.R1)(E).scrollOffset,e),updateRequested:!0},(0,i.dY)(V))},z=(n,r=ps.YF)=>{const{scrollOffset:o}=(0,s.R1)(E);n=Math.max(0,Math.min(n,e.total-1)),B(t(e,n,r,o,(0,s.R1)(w)))},$=t=>{const{direction:o,itemSize:a,layout:l}=e,i=R.value(f&&a,f&&l,f&&o);let c;if((0,u.$3)(i,String(t)))c=i[t];else{const a=r(e,t,(0,s.R1)(w)),l=n(e,t,(0,s.R1)(w)),u=(0,s.R1)(M),d=o===ps.rX,f=u?a:0;i[t]=c={position:"absolute",left:d?void 0:`${f}px`,right:d?`${f}px`:void 0,top:u?0:`${a}px`,height:u?"100%":`${l}px`,width:u?`${l}px`:"100%"}}return c},V=()=>{E.value.isScrolling=!1,(0,i.dY)(()=>{R.value(-1,null,null)})},j=()=>{const e=C.value;e&&(e.scrollTop=0)};(0,i.sV)(()=>{if(!A.oc)return;const{initScrollOffset:t}=e,n=(0,s.R1)(C);(0,p.Et)(t)&&n&&((0,s.R1)(M)?n.scrollLeft=t:n.scrollTop=t),N()}),(0,i.$u)(()=>{const{direction:t,layout:n}=e,{scrollOffset:r,updateRequested:o}=(0,s.R1)(E),a=(0,s.R1)(C);if(o&&a)if(n===ps.bx)if(t===ps.rX)switch(Ts()){case ps.Cg:a.scrollLeft=-r;break;case ps.KR:a.scrollLeft=r;break;default:{const{clientWidth:e,scrollWidth:t}=a;a.scrollLeft=t-e-r;break}}else a.scrollLeft=r;else a.scrollTop=r}),(0,i.n)(()=>{(0,s.R1)(C).scrollTop=(0,s.R1)(E).scrollOffset});const K={ns:y,clientSize:T,estimatedTotalSize:S,windowStyle:L,windowRef:C,innerRef:x,innerStyle:O,itemsToRender:_,scrollbarRef:k,states:E,getItemStyle:$,onScroll:P,onScrollbarScroll:F,onWheel:I,scrollTo:B,scrollToItem:z,resetScrollTop:j};return m({windowRef:C,innerRef:x,getItemStyleCache:R,scrollTo:B,scrollToItem:z,resetScrollTop:j,states:E}),K},render(e){var t;const{$slots:n,className:r,clientSize:o,containerElement:a,data:l,getItemStyle:s,innerElement:c,itemsToRender:d,innerStyle:f,layout:p,total:v,onScroll:h,onScrollbarScroll:m,states:g,useIsScrolling:b,windowStyle:y,ns:w}=e,[R,C]=d,x=(0,i.$y)(a),k=(0,i.$y)(c),E=[];if(v>0)for(let u=R;u<=C;u++)E.push((0,i.h)(i.FK,{key:u},null==(t=n.default)?void 0:t.call(n,{data:l,index:u,isScrolling:b?g.isScrolling:void 0,style:s(u)})));const _=[(0,i.h)(k,(0,i.v6)(e.innerProps,{style:f,ref:"innerRef"}),(0,u.Kg)(k)?E:{default:()=>E})],S=(0,i.h)(Ds,{ref:"scrollbarRef",clientSize:o,layout:p,onScroll:m,ratio:100*o/this.estimatedTotalSize,scrollFrom:g.scrollOffset/(this.estimatedTotalSize-o),total:v,alwaysOn:g.scrollbarAlwaysOn}),M=(0,i.h)(x,{class:[w.e("window"),r],style:y,onScroll:h,ref:"windowRef",key:0},(0,u.Kg)(x)?[_]:{default:()=>[_]});return(0,i.h)("div",{key:0,class:[w.e("wrapper"),g.scrollbarAlwaysOn?"always-on":""]},[M,S])}}),Fs=Ps({name:"ElFixedSizeList",getItemOffset:({itemSize:e},t)=>t*e,getItemSize:({itemSize:e})=>e,getEstimatedTotalSize:({total:e,itemSize:t})=>t*e,getOffset:({height:e,total:t,itemSize:n,layout:r,width:o},a,l,i)=>{const s=Ls(r)?o:e;const u=Math.max(0,t*n-s),c=Math.min(u,a*n),d=Math.max(0,(a+1)*n-s);switch(l===ps.UZ&&(l=i>=d-s&&i<=c+s?ps.YF:ps.v_),l){case ps.zj:return c;case ps.Y5:return d;case ps.v_:{const e=Math.round(d+(c-d)/2);return eu+Math.floor(s/2)?u:e}case ps.YF:default:return i>=d&&i<=c?i:iMath.max(0,Math.min(e-1,Math.floor(n/t))),getStopIndexForStartIndex:({height:e,total:t,itemSize:n,layout:r,width:o},a,l)=>{const i=a*n,s=Ls(r)?o:e,u=Math.ceil((s+l-i)/n);return Math.max(0,Math.min(t-1,a+u-1))},initCache(){},clearCache:!0,validateProps(){}}),Bs=(e,t,n)=>{const{itemSize:r}=e,{items:o,lastVisitedIndex:a}=n;if(t>a){let e=0;if(a>=0){const t=o[a];e=t.offset+t.size}for(let n=a+1;n<=t;n++){const t=r(n);o[n]={offset:e,size:t},e+=t}n.lastVisitedIndex=t}return o[t]},zs=(e,t,n)=>{const{items:r,lastVisitedIndex:o}=t,a=o>0?r[o].offset:0;return a>=n?$s(e,t,0,o,n):Vs(e,t,Math.max(0,o),n)},$s=(e,t,n,r,o)=>{while(n<=r){const a=n+Math.floor((r-n)/2),l=Bs(e,a,t).offset;if(l===o)return a;lo&&(r=a-1)}return Math.max(0,n-1)},Vs=(e,t,n,r)=>{const{total:o}=e;let a=1;while(n{let o=0;if(r>=e&&(r=e-1),r>=0){const e=t[r];o=e.offset+e.size}const a=e-r-1,l=a*n;return o+l},Ks=Ps({name:"ElDynamicSizeList",getItemOffset:(e,t,n)=>Bs(e,t,n).offset,getItemSize:(e,t,{items:n})=>n[t].size,getEstimatedTotalSize:js,getOffset:(e,t,n,r,o)=>{const{height:a,layout:l,width:i}=e,s=Ls(l)?i:a,u=Bs(e,t,o),c=js(e,o),d=Math.max(0,Math.min(c-s,u.offset)),f=Math.max(0,u.offset-s+u.size);switch(n===ps.UZ&&(n=r>=f-s&&r<=d+s?ps.YF:ps.v_),n){case ps.zj:return d;case ps.Y5:return f;case ps.v_:return Math.round(f+(d-f)/2);case ps.YF:default:return r>=f&&r<=d?r:rzs(e,n,t),getStopIndexForStartIndex:(e,t,n,r)=>{const{height:o,total:a,layout:l,width:i}=e,s=Ls(l)?i:o,u=Bs(e,t,r),c=n+s;let d=u.offset+u.size,f=t;while(f{var o,a;n.lastVisitedIndex=Math.min(n.lastVisitedIndex,e-1),null==(o=t.exposed)||o.getItemStyleCache(-1),r&&(null==(a=t.proxy)||a.$forceUpdate())}};return n},clearCache:!1,validateProps:({itemSize:e})=>{0}}),Hs={loading:Boolean,data:{type:Array,required:!0},hoveringIndex:Number,width:Number,id:String,ariaLabel:String};var Xs=(0,i.pM)({name:"ElSelectDropdown",props:Hs,setup(e,{slots:t,expose:n}){const r=(0,i.WQ)(ns),o=(0,g.DU)("select"),{getLabel:a,getValue:l,getDisabled:c}=(0,Qi.Y)(r.props),d=(0,s.KR)([]),f=(0,s.KR)(),v=(0,i.EW)(()=>e.data.length);(0,i.wB)(()=>v.value,()=>{var e,t;null==(t=null==(e=r.tooltipRef.value)?void 0:e.updatePopper)||t.call(e)});const h=(0,i.EW)(()=>(0,p.b0)(r.props.estimatedOptionHeight)),m=(0,i.EW)(()=>h.value?{itemSize:r.props.itemHeight}:{estimatedSize:r.props.estimatedOptionHeight,itemSize:e=>d.value[e]}),b=(e=[],t)=>{const{props:{valueKey:n}}=r;return(0,u.Gv)(t)?e&&e.some(e=>(0,s.ux)((0,Xi.A)(e,n))===(0,Xi.A)(t,n)):e.includes(t)},y=(e,t)=>{if((0,u.Gv)(t)){const{valueKey:n}=r.props;return(0,Xi.A)(e,n)===(0,Xi.A)(t,n)}return e===t},w=(e,t)=>r.props.multiple?b(e,l(t)):y(e,l(t)),R=(e,t)=>{const{disabled:n,multiple:o,multipleLimit:a}=r.props;return n||!t&&!!o&&a>0&&e.length>=a},C=t=>e.hoveringIndex===t,x=e=>{const t=f.value;t&&t.scrollToItem(e)},k=()=>{const e=f.value;e&&e.resetScrollTop()},E={listRef:f,isSized:h,isItemDisabled:R,isItemHovering:C,isItemSelected:w,scrollToItem:x,resetScrollTop:k};n(E);const _=e=>{const{index:n,data:o,style:l}=e,u=(0,s.R1)(h),{itemSize:d,estimatedSize:f}=(0,s.R1)(m),{modelValue:p}=r.props,{onSelect:v,onHover:g}=r,b=o[n];if("Group"===b.type)return(0,i.bF)(qi,{item:b,style:l,height:u?d:f},null);const y=w(p,b),x=R(p,y),k=C(n);return(0,i.bF)(as,(0,i.v6)(e,{selected:y,disabled:c(b)||x,created:!!b.created,hovering:k,item:b,onSelect:v,onHover:g}),{default:e=>{var n;return(null==(n=t.default)?void 0:n.call(t,e))||(0,i.bF)("span",null,[a(b)])}})},{onKeyboardNavigate:S,onKeyboardSelect:M}=r,L=()=>{S("forward")},O=()=>{S("backward")},T=e=>{const t=(0,V.CG)(e),{tab:n,esc:r,down:o,up:a,enter:l,numpadEnter:i}=j.R;switch([r,o,a,l,i].includes(t)&&(e.preventDefault(),e.stopPropagation()),t){case n:case r:break;case o:L();break;case a:O();break;case l:case i:M();break}};return()=>{var n,a,l,u;const{data:c,width:d}=e,{height:p,multiple:v,scrollbarAlwaysOn:g}=r.props,b=(0,i.EW)(()=>!!A.un||g),y=(0,s.R1)(h)?Fs:Ks;return(0,i.bF)("div",{class:[o.b("dropdown"),o.is("multiple",v)],style:{width:`${d}px`}},[null==(n=t.header)?void 0:n.call(t),(null==(a=t.loading)?void 0:a.call(t))||(null==(l=t.empty)?void 0:l.call(t))||(0,i.bF)(y,(0,i.v6)({ref:f},(0,s.R1)(m),{className:o.be("dropdown","list"),scrollbarAlwaysOn:b.value,data:c,height:p,width:d,total:c.length,innerElement:"ul",innerProps:{id:e.id,role:"listbox","aria-label":e.ariaLabel,"aria-orientation":"vertical"},onKeydown:T}),{default:e=>(0,i.bF)(_,e,null)}),null==(u=t.footer)?void 0:u.call(t)])}}}),Us=n(42762);n(17642),n(58004),n(33853),n(45876),n(32475),n(15024),n(31698);function Gs(e,t){const{aliasProps:n,getLabel:r,getValue:o}=(0,Qi.Y)(e),a=(0,s.KR)(0),l=(0,s.KR)(),u=(0,i.EW)(()=>e.allowCreate&&e.filterable);function c(n){const o=e=>r(e)===n;return e.options&&e.options.some(o)||t.createdOptions.some(o)}function d(t){u.value&&(e.multiple&&t.created?a.value++:l.value=t)}function f(o){if(u.value)if(o&&o.length>0){if(c(o))return void(t.createdOptions=t.createdOptions.filter(e=>r(e)!==t.previousQuery));const e={[n.value.value]:o,[n.value.label]:o,created:!0,[n.value.disabled]:!1};t.createdOptions.length>=a.value?t.createdOptions[a.value]=e:t.createdOptions.push(e)}else if(e.multiple)t.createdOptions.length=a.value;else{const e=l.value;t.createdOptions.length=0,e&&e.created&&t.createdOptions.push(e)}}function p(n){if(!u.value||!n||!n.created||n.created&&e.reserveKeyword&&t.inputValue===r(n))return;const l=t.createdOptions.findIndex(e=>o(e)===o(n));~l&&(t.createdOptions.splice(l,1),a.value--)}function v(){u.value&&(t.createdOptions.length=0,a.value=0)}return(0,i.wB)(()=>e.options,e=>{const n=new Set(e.map(e=>r(e)));t.createdOptions=t.createdOptions.filter(e=>!n.has(r(e)))}),{createNewOption:f,removeNewOption:p,selectNewOption:d,clearAllNewOption:v}}var qs=n(4642);const Ys=(e,t)=>{const{t:n}=(0,Ie.Ym)(),r=(0,g.DU)("select"),o=(0,g.DU)("input"),{form:a,formItem:l}=(0,un.j)(),{inputId:f}=(0,un.W)(e,{formItemContext:l}),{aliasProps:v,getLabel:h,getValue:m,getDisabled:b,getOptions:y}=(0,Qi.Y)(e),{valueOnClear:R,isEmptyValue:C}=(0,rn.fQ)(e),x=(0,s.Kh)({inputValue:"",cachedOptions:[],createdOptions:[],hoveringIndex:-1,inputHovering:!1,selectionWidth:0,collapseItemWidth:0,previousQuery:null,previousValue:void 0,selectedLabel:"",menuVisibleOnFocus:!1,isBeforeHide:!1}),k=(0,s.KR)(-1),E=(0,s.KR)(!1),_=(0,s.KR)(),S=(0,s.KR)(),M=(0,s.KR)(),L=(0,s.KR)(),O=(0,s.KR)(),T=(0,s.KR)(),I=(0,s.KR)(),N=(0,s.KR)(),W=(0,s.KR)(),D=(0,s.KR)(),{isComposing:P,handleCompositionStart:F,handleCompositionEnd:B,handleCompositionUpdate:$}=(0,cn.o)({afterComposition:e=>st(e)}),K=(0,z.CB)(),{wrapperRef:H,isFocused:X,handleBlur:U}=(0,dn.K)(O,{disabled:K,afterFocus(){e.automaticDropdown&&!Z.value&&(Z.value=!0,x.menuVisibleOnFocus=!0)},beforeBlur(e){var t,n;return(null==(t=M.value)?void 0:t.isFocusInsideContent(e))||(null==(n=L.value)?void 0:n.isFocusInsideContent(e))},afterBlur(){var t;Z.value=!1,x.menuVisibleOnFocus=!1,e.validateEvent&&(null==(t=null==l?void 0:l.validate)||t.call(l,"blur").catch(e=>(0,w.U)(e)))}}),G=(0,i.EW)(()=>fe("")),q=(0,i.EW)(()=>!e.loading&&(e.options.length>0||x.createdOptions.length>0)),Q=(0,s.KR)([]),Z=(0,s.KR)(!1),J=(0,i.EW)(()=>{var e;return null!=(e=null==a?void 0:a.statusIcon)&&e}),ee=(0,i.EW)(()=>{const t=Q.value.length*e.itemHeight;return t>e.height?e.height:t}),te=(0,i.EW)(()=>e.multiple?(0,u.cy)(e.modelValue)&&e.modelValue.length>0:!C(e.modelValue)),ne=(0,i.EW)(()=>e.clearable&&!K.value&&te.value&&(X.value||x.inputHovering)),re=(0,i.EW)(()=>e.remote&&e.filterable&&!e.remoteShowSuffix?"":e.suffixIcon),oe=(0,i.EW)(()=>re.value&&r.is("reverse",Z.value)),ae=(0,i.EW)(()=>(null==l?void 0:l.validateState)||""),le=(0,i.EW)(()=>{if(ae.value)return Y.vK[ae.value]}),ie=(0,i.EW)(()=>e.remote?e.debounce:0),se=(0,i.EW)(()=>e.remote&&!x.inputValue&&!q.value),ue=(0,i.EW)(()=>e.loading?e.loadingText||n("el.select.loading"):e.filterable&&x.inputValue&&q.value&&0===Q.value.length?e.noMatchText||n("el.select.noMatch"):q.value?null:e.noDataText||n("el.select.noData")),ce=(0,i.EW)(()=>e.filterable&&(0,u.Tn)(e.filterMethod)),de=(0,i.EW)(()=>e.filterable&&e.remote&&(0,u.Tn)(e.remoteMethod)),fe=t=>{const n=new RegExp((0,qs.qr)(t),"i"),r=e=>!(!ce.value&&!de.value)||(!t||n.test(h(e)||""));return e.loading?[]:[...x.createdOptions,...e.options].reduce((t,n)=>{const o=y(n);if((0,u.cy)(o)){const e=o.filter(r);e.length>0&&t.push({label:h(n),type:"Group"},...e)}else(e.remote||r(n))&&t.push(n);return t},[])},pe=()=>{Q.value=fe(x.inputValue)},ve=(0,i.EW)(()=>{const e=new Map;return G.value.forEach((t,n)=>{e.set(Ke(m(t)),{option:t,index:n})}),e}),he=(0,i.EW)(()=>{const e=new Map;return Q.value.forEach((t,n)=>{e.set(Ke(m(t)),{option:t,index:n})}),e}),me=(0,i.EW)(()=>Q.value.every(e=>b(e))),ge=(0,z.NV)(),be=(0,i.EW)(()=>"small"===ge.value?"small":"default"),ye=()=>{var t;if((0,p.Et)(e.fitInputWidth))return void(k.value=e.fitInputWidth);const n=(null==(t=_.value)?void 0:t.offsetWidth)||200;!e.fitInputWidth&&q.value?(0,i.dY)(()=>{k.value=Math.max(n,we())}):k.value=n},we=()=>{var e,t;const n=document.createElement("canvas"),o=n.getContext("2d"),a=r.be("dropdown","item"),l=(null==(t=null==(e=N.value)?void 0:e.listRef)?void 0:t.innerRef)||document,i=l.querySelector(`.${a}`);if(null===i||null===o)return 0;const s=getComputedStyle(i),u=Number.parseFloat(s.paddingLeft)+Number.parseFloat(s.paddingRight);o.font=`bold ${s.font.replace(new RegExp(`\\b${s.fontWeight}\\b`),"")}`;const c=Q.value.reduce((e,t)=>{const n=o.measureText(h(t));return Math.max(n.width,e)},0);return c+u},Re=()=>{if(!S.value)return 0;const e=window.getComputedStyle(S.value);return Number.parseFloat(e.gap||"6px")},Ce=(0,i.EW)(()=>{const t=Re(),n=e.filterable?t+pl.R:0,r=D.value&&1===e.maxCollapseTags?x.selectionWidth-x.collapseItemWidth-t-n:x.selectionWidth-n;return{maxWidth:`${r}px`}}),xe=(0,i.EW)(()=>({maxWidth:`${x.selectionWidth}px`})),ke=(0,i.EW)(()=>(0,u.cy)(e.modelValue)?0===e.modelValue.length&&!x.inputValue:!e.filterable||!x.inputValue),Ee=(0,i.EW)(()=>{var t;const r=null!=(t=e.placeholder)?t:n("el.select.placeholder");return e.multiple||!te.value?r:x.selectedLabel}),_e=(0,i.EW)(()=>{var e,t;return null==(t=null==(e=M.value)?void 0:e.popperRef)?void 0:t.contentRef}),Se=(0,i.EW)(()=>{if(e.multiple){const t=e.modelValue.length;if(t>0&&he.value.has(e.modelValue[t-1])){const{index:n}=he.value.get(e.modelValue[t-1]);return n}}else if(!C(e.modelValue)&&he.value.has(e.modelValue)){const{index:t}=he.value.get(e.modelValue);return t}return-1}),Me=(0,i.EW)({get(){return Z.value&&(e.loading||!se.value)&&(!E.value||!(0,p.Im)(x.previousQuery))},set(e){Z.value=e}}),Le=(0,i.EW)(()=>e.multiple?e.collapseTags?x.cachedOptions.slice(0,e.maxCollapseTags):x.cachedOptions:[]),Ae=(0,i.EW)(()=>e.multiple&&e.collapseTags?x.cachedOptions.slice(e.maxCollapseTags):[]),{createNewOption:Oe,removeNewOption:Te,selectNewOption:Ne,clearAllNewOption:We}=Gs(e,x),De=t=>{var n;K.value||e.filterable&&Z.value&&t&&!(null==(n=I.value)?void 0:n.contains(t.target))||(x.menuVisibleOnFocus?x.menuVisibleOnFocus=!1:Z.value=!Z.value)},Pe=()=>{x.inputValue.length>0&&!Z.value&&(Z.value=!0),Oe(x.inputValue),(0,i.dY)(()=>{Be(x.inputValue)})},Fe=(0,A.xD)(()=>{Pe(),E.value=!1},ie),Be=t=>{x.previousQuery===t||P.value||(x.previousQuery=t,e.filterable&&(0,u.Tn)(e.filterMethod)?e.filterMethod(t):e.filterable&&e.remote&&(0,u.Tn)(e.remoteMethod)&&e.remoteMethod(t),e.defaultFirstOption&&(e.filterable||e.remote)&&Q.value.length?(0,i.dY)(ze):(0,i.dY)(it))},ze=()=>{const e=Q.value.filter(e=>!e.disabled&&"Group"!==e.type),t=e.find(e=>e.created),n=e[0];x.hoveringIndex=je(Q.value,t||n)},$e=n=>{(0,gt.A)(e.modelValue,n)||t(d.YU,n)},Ve=n=>{t(d.l4,n),$e(n),x.previousValue=e.multiple?String(n):n,(0,i.dY)(()=>{if(e.multiple&&(0,u.cy)(e.modelValue)){const t=x.cachedOptions.slice(),n=e.modelValue.map(e=>ft(e,t));(0,gt.A)(x.cachedOptions,n)||(x.cachedOptions=n)}else vt(!0)})},je=(t=[],n)=>{if(!(0,u.Gv)(n))return t.indexOf(n);const r=e.valueKey;let o=-1;return t.some((e,t)=>(0,Xi.A)(e,r)===(0,Xi.A)(n,r)&&(o=t,!0)),o},Ke=t=>(0,u.Gv)(t)?(0,Xi.A)(t,e.valueKey):t,He=()=>{ye()},Xe=()=>{x.selectionWidth=Number.parseFloat(window.getComputedStyle(S.value).width)},Ue=()=>{x.collapseItemWidth=D.value.getBoundingClientRect().width},Ge=()=>{var e,t;null==(t=null==(e=M.value)?void 0:e.updatePopper)||t.call(e)},qe=()=>{var e,t;null==(t=null==(e=L.value)?void 0:e.updatePopper)||t.call(e)},Ye=t=>{const n=m(t);if(e.multiple){let r=e.modelValue.slice();const o=je(r,n);o>-1?(r=[...r.slice(0,o),...r.slice(o+1)],x.cachedOptions.splice(o,1),Te(t)):(e.multipleLimit<=0||r.length{let o=e.modelValue.slice();const a=je(o,m(r));a>-1&&!K.value&&(o=[...e.modelValue.slice(0,a),...e.modelValue.slice(a+1)],x.cachedOptions.splice(a,1),Ve(o),t("remove-tag",m(r)),Te(r)),n.stopPropagation(),Ze()},Ze=()=>{var e;null==(e=O.value)||e.focus()},Je=()=>{var e;if(Z.value)return Z.value=!1,void(0,i.dY)(()=>{var e;return null==(e=O.value)?void 0:e.blur()});null==(e=O.value)||e.blur()},et=()=>{x.inputValue.length>0?x.inputValue="":Z.value=!1},tt=e=>(0,Us.A)(e,e=>!x.cachedOptions.some(t=>m(t)===e&&b(t))),nt=n=>{const r=(0,V.CG)(n);if(e.multiple&&r!==j.R.delete&&0===x.inputValue.length){n.preventDefault();const r=e.modelValue.slice(),o=tt(r);if(o<0)return;const a=r[o];r.splice(o,1);const l=x.cachedOptions[o];x.cachedOptions.splice(o,1),Te(l),Ve(r),t("remove-tag",a)}},rt=()=>{let n;n=(0,u.cy)(e.modelValue)?[]:R.value,x.selectedLabel="",Z.value=!1,Ve(n),t("clear"),We(),Ze()},ot=(e,t=void 0)=>{const n=Q.value;if(!["forward","backward"].includes(e)||K.value||n.length<=0||me.value||P.value)return;if(!Z.value)return De();(0,p.b0)(t)&&(t=x.hoveringIndex);let r=-1;"forward"===e?(r=t+1,r>=n.length&&(r=0)):"backward"===e&&(r=t-1,(r<0||r>=n.length)&&(r=n.length-1));const o=n[r];if(b(o)||"Group"===o.type)return ot(e,r);x.hoveringIndex=r,dt(r)},at=()=>{if(!Z.value)return De();~x.hoveringIndex&&Q.value[x.hoveringIndex]&&Ye(Q.value[x.hoveringIndex])},lt=e=>{x.hoveringIndex=null!=e?e:-1},it=()=>{if(e.multiple){const t=e.modelValue.length;if(t>0){const n=e.modelValue[t-1];x.hoveringIndex=Q.value.findIndex(e=>Ke(n)===Ke(m(e)))}else x.hoveringIndex=-1}else x.hoveringIndex=Q.value.findIndex(t=>Ke(m(t))===Ke(e.modelValue))},st=t=>{if(x.inputValue=t.target.value,!e.remote)return Pe();E.value=!0,Fe()},ut=e=>{if(Z.value=!1,X.value){const t=new FocusEvent("blur",e);U(t)}},ct=()=>(x.isBeforeHide=!1,(0,i.dY)(()=>{~Se.value&&dt(Se.value)})),dt=e=>{N.value.scrollToItem(e)},ft=(e,t)=>{const n=Ke(e);if(ve.value.has(n)){const{option:e}=ve.value.get(n);return e}if(t&&t.length){const e=t.find(e=>Ke(m(e))===n);if(e)return e}return{[v.value.value]:e,[v.value.label]:e}},pt=e=>{var t,n;return null!=(n=null==(t=ve.value.get(m(e)))?void 0:t.index)?n:-1},vt=(t=!1)=>{if(e.multiple)if(e.modelValue.length>0){const t=x.cachedOptions.slice();x.cachedOptions.length=0,x.previousValue=e.modelValue.toString();for(const n of e.modelValue){const e=ft(n,t);x.cachedOptions.push(e)}}else x.cachedOptions=[],x.previousValue=void 0;else if(te.value){x.previousValue=e.modelValue;const n=Q.value,r=n.findIndex(t=>Ke(m(t))===Ke(e.modelValue));~r?x.selectedLabel=h(n[r]):x.selectedLabel&&!t||(x.selectedLabel=Ke(e.modelValue))}else x.selectedLabel="",x.previousValue=void 0;We(),ye()};let ht;return(0,i.wB)(()=>e.fitInputWidth,()=>{ye()}),(0,i.wB)(Z,t=>{t?(e.persistent||ye(),Be("")):(x.inputValue="",x.previousQuery=null,x.isBeforeHide=!0,Oe(""))}),(0,i.wB)(()=>e.modelValue,(t,n)=>{var r;const o=!t||(0,u.cy)(t)&&0===t.length;(o||e.multiple&&!(0,gt.A)(t.toString(),x.previousValue)||!e.multiple&&Ke(t)!==Ke(x.previousValue))&&vt(!0),!(0,gt.A)(t,n)&&e.validateEvent&&(null==(r=null==l?void 0:l.validate)||r.call(l,"change").catch(e=>(0,w.U)(e)))},{deep:!0}),(0,i.wB)(()=>e.options,()=>{const e=O.value;(!e||e&&document.activeElement!==e)&&vt()},{deep:!0,flush:"post"}),(0,i.wB)(()=>Q.value,()=>(ye(),N.value&&(0,i.dY)(N.value.resetScrollTop))),(0,i.nT)(()=>{x.isBeforeHide||pe()}),(0,i.nT)(()=>{const{valueKey:t,options:n}=e,r=new Map;for(const e of n){const n=m(e);let o=n;if((0,u.Gv)(o)&&(o=(0,Xi.A)(n,t)),r.get(o)){(0,w.U)("ElSelectV2","The option values you provided seem to be duplicated, which may cause some problems, please check.");break}r.set(o,!0)}}),(0,i.sV)(()=>{vt()}),(0,c.wYm)(_,He),(0,c.wYm)(S,Xe),(0,c.wYm)(H,Ge),(0,c.wYm)(W,qe),(0,c.wYm)(D,Ue),(0,i.wB)(()=>Me.value,e=>{e?ht=(0,c.wYm)(N,Ge).stop:(null==ht||ht(),ht=void 0),t("visible-change",e)}),{inputId:f,collapseTagSize:be,currentPlaceholder:Ee,expanded:Z,emptyText:ue,popupHeight:ee,debounce:ie,allOptions:G,allOptionsValueMap:ve,filteredOptions:Q,iconComponent:re,iconReverse:oe,tagStyle:Ce,collapseTagStyle:xe,popperSize:k,dropdownMenuVisible:Me,hasModelValue:te,shouldShowPlaceholder:ke,selectDisabled:K,selectSize:ge,needStatusIcon:J,showClearBtn:ne,states:x,isFocused:X,nsSelect:r,nsInput:o,inputRef:O,menuRef:N,tagMenuRef:W,tooltipRef:M,tagTooltipRef:L,selectRef:_,wrapperRef:H,selectionRef:S,prefixRef:T,suffixRef:I,collapseItemRef:D,popperRef:_e,validateState:ae,validateIcon:le,showTagList:Le,collapseTagList:Ae,debouncedOnInputChange:Fe,deleteTag:Qe,getLabel:h,getValue:m,getDisabled:b,getValueKey:Ke,getIndex:pt,handleClear:rt,handleClickOutside:ut,handleDel:nt,handleEsc:et,focus:Ze,blur:Je,handleMenuEnter:ct,handleResize:He,resetSelectionWidth:Xe,updateTooltip:Ge,updateTagTooltip:qe,updateOptions:pe,toggleMenu:De,scrollTo:dt,onInput:st,onKeyboardNavigate:ot,onKeyboardSelect:at,onSelect:Ye,onHover:lt,handleCompositionStart:F,handleCompositionEnd:B,handleCompositionUpdate:$}},Qs=(0,i.pM)({name:"ElSelectV2",components:{ElSelectMenu:Xs,ElTag:Jt.u,ElTooltip:N.R7,ElIcon:W.tk},directives:{ClickOutside:sn.A},props:Zi,emits:es,setup(e,{emit:t}){const n=(0,i.EW)(()=>{const{modelValue:t,multiple:n}=e,r=n?[]:void 0;return(0,u.cy)(t)?n?t:r:n?r:t}),r=Ys((0,s.Kh)({...(0,s.QW)(e),modelValue:n}),t),{calculatorRef:o,inputStyle:a}=(0,dl.v)(),l=(0,$.Bi)();(0,i.Gt)(ns,{props:(0,s.Kh)({...(0,s.QW)(e),height:r.popupHeight,modelValue:n}),expanded:r.expanded,tooltipRef:r.tooltipRef,contentId:l,onSelect:r.onSelect,onHover:r.onHover,onKeyboardNavigate:r.onKeyboardNavigate,onKeyboardSelect:r.onKeyboardSelect});const c=(0,i.EW)(()=>e.multiple?r.states.cachedOptions.map(e=>r.getLabel(e)):r.states.selectedLabel);return{...r,modelValue:n,selectedLabel:c,calculatorRef:o,inputStyle:a,contentId:l,BORDER_HORIZONTAL_WIDTH:pl.f}}});function Zs(e,t,n,r,o,a){const l=(0,i.g2)("el-tag"),s=(0,i.g2)("el-tooltip"),c=(0,i.g2)("el-icon"),d=(0,i.g2)("el-select-menu"),f=(0,i.gN)("click-outside");return(0,i.bo)(((0,i.uX)(),(0,i.CE)("div",{ref:"selectRef",class:(0,u.C4)([e.nsSelect.b(),e.nsSelect.m(e.selectSize)]),onMouseenter:t=>e.states.inputHovering=!0,onMouseleave:t=>e.states.inputHovering=!1},[(0,i.bF)(s,{ref:"tooltipRef",visible:e.dropdownMenuVisible,teleported:e.teleported,"popper-class":[e.nsSelect.e("popper"),e.popperClass],"popper-style":e.popperStyle,"gpu-acceleration":!1,"stop-popper-mouse-event":!1,"popper-options":e.popperOptions,"fallback-placements":e.fallbackPlacements,effect:e.effect,placement:e.placement,pure:"",transition:`${e.nsSelect.namespace.value}-zoom-in-top`,trigger:"click",persistent:e.persistent,"append-to":e.appendTo,"show-arrow":e.showArrow,offset:e.offset,onBeforeShow:e.handleMenuEnter,onHide:t=>e.states.isBeforeHide=!1},{default:(0,i.k6)(()=>{var t,n;return[(0,i.Lk)("div",{ref:"wrapperRef",class:(0,u.C4)([e.nsSelect.e("wrapper"),e.nsSelect.is("focused",e.isFocused),e.nsSelect.is("hovering",e.states.inputHovering),e.nsSelect.is("filterable",e.filterable),e.nsSelect.is("disabled",e.selectDisabled)]),onClick:(0,M.D$)(e.toggleMenu,["prevent"])},[e.$slots.prefix?((0,i.uX)(),(0,i.CE)("div",{key:0,ref:"prefixRef",class:(0,u.C4)(e.nsSelect.e("prefix"))},[(0,i.RG)(e.$slots,"prefix")],2)):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",{ref:"selectionRef",class:(0,u.C4)([e.nsSelect.e("selection"),e.nsSelect.is("near",e.multiple&&!e.$slots.prefix&&!!e.modelValue.length)])},[e.multiple?(0,i.RG)(e.$slots,"tag",{key:0,data:e.states.cachedOptions,deleteTag:e.deleteTag,selectDisabled:e.selectDisabled},()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.showTagList,t=>((0,i.uX)(),(0,i.CE)("div",{key:e.getValueKey(e.getValue(t)),class:(0,u.C4)(e.nsSelect.e("selected-item"))},[(0,i.bF)(l,{closable:!e.selectDisabled&&!e.getDisabled(t),size:e.collapseTagSize,type:e.tagType,effect:e.tagEffect,"disable-transitions":"",style:(0,u.Tr)(e.tagStyle),onClose:n=>e.deleteTag(n,t)},{default:(0,i.k6)(()=>[(0,i.Lk)("span",{class:(0,u.C4)(e.nsSelect.e("tags-text"))},[(0,i.RG)(e.$slots,"label",{index:e.getIndex(t),label:e.getLabel(t),value:e.getValue(t)},()=>[(0,i.eW)((0,u.v_)(e.getLabel(t)),1)])],2)]),_:2},1032,["closable","size","type","effect","style","onClose"])],2))),128)),e.collapseTags&&e.modelValue.length>e.maxCollapseTags?((0,i.uX)(),(0,i.Wv)(s,{key:0,ref:"tagTooltipRef",disabled:e.dropdownMenuVisible||!e.collapseTagsTooltip,"fallback-placements":["bottom","top","right","left"],effect:e.effect,placement:"bottom","popper-class":e.popperClass,"popper-style":e.popperStyle,teleported:e.teleported},{default:(0,i.k6)(()=>[(0,i.Lk)("div",{ref:"collapseItemRef",class:(0,u.C4)(e.nsSelect.e("selected-item"))},[(0,i.bF)(l,{closable:!1,size:e.collapseTagSize,type:e.tagType,effect:e.tagEffect,style:(0,u.Tr)(e.collapseTagStyle),"disable-transitions":""},{default:(0,i.k6)(()=>[(0,i.Lk)("span",{class:(0,u.C4)(e.nsSelect.e("tags-text"))}," + "+(0,u.v_)(e.modelValue.length-e.maxCollapseTags),3)]),_:1},8,["size","type","effect","style"])],2)]),content:(0,i.k6)(()=>[(0,i.Lk)("div",{ref:"tagMenuRef",class:(0,u.C4)(e.nsSelect.e("selection"))},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.collapseTagList,t=>((0,i.uX)(),(0,i.CE)("div",{key:e.getValueKey(e.getValue(t)),class:(0,u.C4)(e.nsSelect.e("selected-item"))},[(0,i.bF)(l,{class:"in-tooltip",closable:!e.selectDisabled&&!e.getDisabled(t),size:e.collapseTagSize,type:e.tagType,effect:e.tagEffect,"disable-transitions":"",onClose:n=>e.deleteTag(n,t)},{default:(0,i.k6)(()=>[(0,i.Lk)("span",{class:(0,u.C4)(e.nsSelect.e("tags-text"))},[(0,i.RG)(e.$slots,"label",{index:e.getIndex(t),label:e.getLabel(t),value:e.getValue(t)},()=>[(0,i.eW)((0,u.v_)(e.getLabel(t)),1)])],2)]),_:2},1032,["closable","size","type","effect","onClose"])],2))),128))],2)]),_:3},8,["disabled","effect","popper-class","popper-style","teleported"])):(0,i.Q3)("v-if",!0)]):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",{class:(0,u.C4)([e.nsSelect.e("selected-item"),e.nsSelect.e("input-wrapper"),e.nsSelect.is("hidden",!e.filterable||e.selectDisabled)])},[(0,i.bo)((0,i.Lk)("input",{id:e.inputId,ref:"inputRef","onUpdate:modelValue":t=>e.states.inputValue=t,style:(0,u.Tr)(e.inputStyle),autocomplete:e.autocomplete,tabindex:e.tabindex,"aria-autocomplete":"none","aria-haspopup":"listbox",autocapitalize:"off","aria-expanded":e.expanded,"aria-label":e.ariaLabel,class:(0,u.C4)([e.nsSelect.e("input"),e.nsSelect.is(e.selectSize)]),disabled:e.selectDisabled,role:"combobox","aria-controls":e.contentId,"aria-activedescendant":e.states.hoveringIndex>=0?`${e.contentId}-${e.states.hoveringIndex}`:"",readonly:!e.filterable,spellcheck:"false",type:"text",name:e.name,onInput:e.onInput,onCompositionstart:e.handleCompositionStart,onCompositionupdate:e.handleCompositionUpdate,onCompositionend:e.handleCompositionEnd,onKeydown:[(0,M.jR)((0,M.D$)(t=>e.onKeyboardNavigate("backward"),["stop","prevent"]),["up"]),(0,M.jR)((0,M.D$)(t=>e.onKeyboardNavigate("forward"),["stop","prevent"]),["down"]),(0,M.jR)((0,M.D$)(e.onKeyboardSelect,["stop","prevent"]),["enter"]),(0,M.jR)((0,M.D$)(e.handleEsc,["stop","prevent"]),["esc"]),(0,M.jR)((0,M.D$)(e.handleDel,["stop"]),["delete"])],onClick:(0,M.D$)(e.toggleMenu,["stop"])},null,46,["id","onUpdate:modelValue","autocomplete","tabindex","aria-expanded","aria-label","disabled","aria-controls","aria-activedescendant","readonly","name","onInput","onCompositionstart","onCompositionupdate","onCompositionend","onKeydown","onClick"]),[[M.Jo,e.states.inputValue]]),e.filterable?((0,i.uX)(),(0,i.CE)("span",{key:0,ref:"calculatorRef","aria-hidden":"true",class:(0,u.C4)(e.nsSelect.e("input-calculator")),textContent:(0,u.v_)(e.states.inputValue)},null,10,["textContent"])):(0,i.Q3)("v-if",!0)],2),e.shouldShowPlaceholder?((0,i.uX)(),(0,i.CE)("div",{key:1,class:(0,u.C4)([e.nsSelect.e("selected-item"),e.nsSelect.e("placeholder"),e.nsSelect.is("transparent",!e.hasModelValue||e.expanded&&!e.states.inputValue)])},[e.hasModelValue?(0,i.RG)(e.$slots,"label",{key:0,index:null!=(n=null==(t=e.allOptionsValueMap.get(e.modelValue))?void 0:t.index)?n:-1,label:e.currentPlaceholder,value:e.modelValue},()=>[(0,i.Lk)("span",null,(0,u.v_)(e.currentPlaceholder),1)]):((0,i.uX)(),(0,i.CE)("span",{key:1},(0,u.v_)(e.currentPlaceholder),1))],2)):(0,i.Q3)("v-if",!0)],2),(0,i.Lk)("div",{ref:"suffixRef",class:(0,u.C4)(e.nsSelect.e("suffix"))},[e.iconComponent?(0,i.bo)(((0,i.uX)(),(0,i.Wv)(c,{key:0,class:(0,u.C4)([e.nsSelect.e("caret"),e.nsInput.e("icon"),e.iconReverse])},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)(e.iconComponent)))]),_:1},8,["class"])),[[M.aG,!e.showClearBtn]]):(0,i.Q3)("v-if",!0),e.showClearBtn&&e.clearIcon?((0,i.uX)(),(0,i.Wv)(c,{key:1,class:(0,u.C4)([e.nsSelect.e("caret"),e.nsInput.e("icon"),e.nsSelect.e("clear")]),onClick:(0,M.D$)(e.handleClear,["prevent","stop"])},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)(e.clearIcon)))]),_:1},8,["class","onClick"])):(0,i.Q3)("v-if",!0),e.validateState&&e.validateIcon&&e.needStatusIcon?((0,i.uX)(),(0,i.Wv)(c,{key:2,class:(0,u.C4)([e.nsInput.e("icon"),e.nsInput.e("validateIcon"),e.nsInput.is("loading","validating"===e.validateState)])},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)(e.validateIcon)))]),_:1},8,["class"])):(0,i.Q3)("v-if",!0)],2)],10,["onClick"])]}),content:(0,i.k6)(()=>[(0,i.bF)(d,{id:e.contentId,ref:"menuRef",data:e.filteredOptions,width:e.popperSize-e.BORDER_HORIZONTAL_WIDTH,"hovering-index":e.states.hoveringIndex,"scrollbar-always-on":e.scrollbarAlwaysOn,"aria-label":e.ariaLabel},(0,i.eX)({default:(0,i.k6)(t=>[(0,i.RG)(e.$slots,"default",(0,u._B)((0,i.Ng)(t)))]),_:2},[e.$slots.header?{name:"header",fn:(0,i.k6)(()=>[(0,i.Lk)("div",{class:(0,u.C4)(e.nsSelect.be("dropdown","header")),onClick:(0,M.D$)(()=>{},["stop"])},[(0,i.RG)(e.$slots,"header")],10,["onClick"])])}:void 0,e.$slots.loading&&e.loading?{name:"loading",fn:(0,i.k6)(()=>[(0,i.Lk)("div",{class:(0,u.C4)(e.nsSelect.be("dropdown","loading"))},[(0,i.RG)(e.$slots,"loading")],2)])}:e.loading||0===e.filteredOptions.length?{name:"empty",fn:(0,i.k6)(()=>[(0,i.Lk)("div",{class:(0,u.C4)(e.nsSelect.be("dropdown","empty"))},[(0,i.RG)(e.$slots,"empty",{},()=>[(0,i.Lk)("span",null,(0,u.v_)(e.emptyText),1)])],2)])}:void 0,e.$slots.footer?{name:"footer",fn:(0,i.k6)(()=>[(0,i.Lk)("div",{class:(0,u.C4)(e.nsSelect.be("dropdown","footer")),onClick:(0,M.D$)(()=>{},["stop"])},[(0,i.RG)(e.$slots,"footer")],10,["onClick"])])}:void 0]),1032,["id","data","width","hovering-index","scrollbar-always-on","aria-label"])]),_:3},8,["visible","teleported","popper-class","popper-style","popper-options","fallback-placements","effect","placement","transition","persistent","append-to","show-arrow","offset","onBeforeShow","onHide"])],42,["onMouseenter","onMouseleave"])),[[f,e.handleClickOutside,e.popperRef]])}var Js=(0,m.A)(Qs,[["render",Zs],["__file","select.vue"]]);const eu=(0,E.GU)(Js),tu=(0,f.b_)({animated:Boolean,count:{type:Number,default:1},rows:{type:Number,default:3},loading:{type:Boolean,default:!0},throttle:{type:(0,f.jq)([Number,Object])}}),nu=(0,f.b_)({variant:{type:String,values:["circle","rect","h1","h3","text","caption","p","image","button"],default:"text"}}),ru=(0,i.pM)({name:"ElSkeletonItem"}),ou=(0,i.pM)({...ru,props:nu,setup(e){const t=(0,g.DU)("skeleton");return(e,n)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)([(0,s.R1)(t).e("item"),(0,s.R1)(t).e(e.variant)])},["image"===e.variant?((0,i.uX)(),(0,i.Wv)((0,s.R1)(O.PictureFilled),{key:0})):(0,i.Q3)("v-if",!0)],2))}});var au=(0,m.A)(ou,[["__file","skeleton-item.vue"]]);const lu=(e,t=0)=>{if(0===t)return e;const n=(0,u.Gv)(t)&&Boolean(t.initVal),r=(0,s.KR)(n);let o=null;const a=t=>{(0,p.b0)(t)?r.value=e.value:(o&&clearTimeout(o),o=setTimeout(()=>{r.value=e.value},t))},l=e=>{"leading"===e?(0,p.Et)(t)?a(t):a(t.leading):(0,u.Gv)(t)?a(t.trailing):r.value=!1};return(0,i.sV)(()=>l("leading")),(0,i.wB)(()=>e.value,e=>{l(e?"leading":"trailing")}),r},iu=(0,i.pM)({name:"ElSkeleton"}),su=(0,i.pM)({...iu,props:tu,setup(e,{expose:t}){const n=e,r=(0,g.DU)("skeleton"),o=lu((0,s.lW)(n,"loading"),n.throttle);return t({uiLoading:o}),(e,t)=>(0,s.R1)(o)?((0,i.uX)(),(0,i.CE)("div",(0,i.v6)({key:0,class:[(0,s.R1)(r).b(),(0,s.R1)(r).is("animated",e.animated)]},e.$attrs),[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.count,t=>((0,i.uX)(),(0,i.CE)(i.FK,{key:t},[(0,s.R1)(o)?(0,i.RG)(e.$slots,"template",{key:t},()=>[(0,i.bF)(au,{class:(0,u.C4)((0,s.R1)(r).is("first")),variant:"p"},null,8,["class"]),((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.rows,t=>((0,i.uX)(),(0,i.Wv)(au,{key:t,class:(0,u.C4)([(0,s.R1)(r).e("paragraph"),(0,s.R1)(r).is("last",t===e.rows&&e.rows>1)]),variant:"p"},null,8,["class"]))),128))]):(0,i.Q3)("v-if",!0)],64))),128))],16)):(0,i.RG)(e.$slots,"default",(0,u._B)((0,i.v6)({key:1},e.$attrs)))}});var uu=(0,m.A)(su,[["__file","skeleton.vue"]]);const cu=(0,E.GU)(uu,{SkeletonItem:au}),du=(0,E.WM)(au);var fu=n(74757);const pu=(0,f.b_)({prefixCls:{type:String}}),vu=(0,i.pM)({name:"ElSpaceItem",props:pu,setup(e,{slots:t}){const n=(0,g.DU)("space"),r=(0,i.EW)(()=>`${e.prefixCls||n.b()}__item`);return()=>(0,i.h)("div",{class:r.value},(0,i.RG)(t,"default"))}}),hu={small:8,default:12,large:16};function mu(e){const t=(0,g.DU)("space"),n=(0,i.EW)(()=>[t.b(),t.m(e.direction),e.class]),r=(0,s.KR)(0),o=(0,s.KR)(0),a=(0,i.EW)(()=>{const t=e.wrap||e.fill?{flexWrap:"wrap"}:{},n={alignItems:e.alignment},a={rowGap:`${o.value}px`,columnGap:`${r.value}px`};return[t,n,a,e.style]}),l=(0,i.EW)(()=>e.fill?{flexGrow:1,minWidth:`${e.fillRatio}%`}:{});return(0,i.nT)(()=>{const{size:t="small",wrap:n,direction:a,fill:l}=e;if((0,u.cy)(t)){const[e=0,n=0]=t;r.value=e,o.value=n}else{let e;e=(0,p.Et)(t)?t:hu[t||"small"]||hu.small,(n||l)&&"horizontal"===a?r.value=o.value=e:"horizontal"===a?(r.value=e,o.value=0):(o.value=e,r.value=0)}}),{classes:n,containerStyle:a,itemStyle:l}}const gu=(0,f.b_)({direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},class:{type:(0,f.jq)([String,Object,Array]),default:""},style:{type:(0,f.jq)([String,Array,Object]),default:""},alignment:{type:(0,f.jq)(String),default:"center"},prefixCls:{type:String},spacer:{type:(0,f.jq)([Object,String,Number,Array]),default:null,validator:e=>(0,i.vv)(e)||(0,p.Et)(e)||(0,u.Kg)(e)},wrap:Boolean,fill:Boolean,fillRatio:{type:Number,default:100},size:{type:[String,Array,Number],values:q.I,validator:e=>(0,p.Et)(e)||(0,u.cy)(e)&&2===e.length&&e.every(p.Et)}}),bu=(0,i.pM)({name:"ElSpace",props:gu,setup(e,{slots:t}){const{classes:n,containerStyle:r,itemStyle:o}=mu(e);function a(t,n="",r=[]){const{prefixCls:l}=e;return t.forEach((e,t)=>{(0,nt.zv)(e)?(0,u.cy)(e.children)&&e.children.forEach((e,t)=>{(0,nt.zv)(e)&&(0,u.cy)(e.children)?a(e.children,`${n+t}-`,r):(0,i.vv)(e)&&(null==e?void 0:e.type)===i.Mw?r.push(e):r.push((0,i.bF)(vu,{style:o.value,prefixCls:l,key:`nested-${n+t}`},{default:()=>[e]},nt.Yn.PROPS|nt.Yn.STYLE,["style","prefixCls"]))}):(0,nt.jO)(e)&&r.push((0,i.bF)(vu,{style:o.value,prefixCls:l,key:`LoopKey${n+t}`},{default:()=>[e]},nt.Yn.PROPS|nt.Yn.STYLE,["style","prefixCls"]))}),r}return()=>{var l;const{spacer:s,direction:c}=e,d=(0,i.RG)(t,"default",{key:0},()=>[]);if(0===(null!=(l=d.children)?l:[]).length)return null;if((0,u.cy)(d.children)){let e=a(d.children);if(s){const t=e.length-1;e=e.reduce((e,n,r)=>{const a=[...e,n];return r!==t&&a.push((0,i.bF)("span",{style:[o.value,"vertical"===c?"width: 100%":null],key:r},[(0,i.vv)(s)?s:(0,i.eW)(s,nt.Yn.TEXT)],nt.Yn.STYLE)),a},[])}return(0,i.bF)("div",{class:n.value,style:r.value},e,nt.Yn.STYLE|nt.Yn.CLASS)}return d.children}}}),yu=(0,E.GU)(bu),wu=(0,f.b_)({decimalSeparator:{type:String,default:"."},groupSeparator:{type:String,default:","},precision:{type:Number,default:0},formatter:Function,value:{type:(0,f.jq)([Number,Object]),default:0},prefix:String,suffix:String,title:String,valueStyle:{type:(0,f.jq)([String,Object,Array])}}),Ru=(0,i.pM)({name:"ElStatistic"}),Cu=(0,i.pM)({...Ru,props:wu,setup(e,{expose:t}){const n=e,r=(0,g.DU)("statistic"),o=(0,i.EW)(()=>{const{value:e,formatter:t,precision:r,decimalSeparator:o,groupSeparator:a}=n;if((0,u.Tn)(t))return t(e);if(!(0,p.Et)(e)||Number.isNaN(e))return e;let[l,i=""]=String(e).split(".");return i=i.padEnd(r,"0").slice(0,r>0?r:0),l=l.replace(/\B(?=(\d{3})+(?!\d))/g,a),[l,i].join(i?o:"")});return t({displayValue:o}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)((0,s.R1)(r).b())},[e.$slots.title||e.title?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(r).e("head"))},[(0,i.RG)(e.$slots,"title",{},()=>[(0,i.eW)((0,u.v_)(e.title),1)])],2)):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(r).e("content"))},[e.$slots.prefix||e.prefix?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(r).e("prefix"))},[(0,i.RG)(e.$slots,"prefix",{},()=>[(0,i.Lk)("span",null,(0,u.v_)(e.prefix),1)])],2)):(0,i.Q3)("v-if",!0),(0,i.Lk)("span",{class:(0,u.C4)((0,s.R1)(r).e("number")),style:(0,u.Tr)(e.valueStyle)},(0,u.v_)((0,s.R1)(o)),7),e.$slots.suffix||e.suffix?((0,i.uX)(),(0,i.CE)("div",{key:1,class:(0,u.C4)((0,s.R1)(r).e("suffix"))},[(0,i.RG)(e.$slots,"suffix",{},()=>[(0,i.Lk)("span",null,(0,u.v_)(e.suffix),1)])],2)):(0,i.Q3)("v-if",!0)],2)],2))}});var xu=(0,m.A)(Cu,[["__file","statistic.vue"]]);const ku=(0,E.GU)(xu),Eu=(0,f.b_)({format:{type:String,default:"HH:mm:ss"},prefix:String,suffix:String,title:String,value:{type:(0,f.jq)([Number,Object]),default:0},valueStyle:{type:(0,f.jq)([String,Object,Array])}}),_u={finish:()=>!0,[d.YU]:e=>(0,p.Et)(e)},Su=[["Y",31536e6],["M",2592e6],["D",864e5],["H",36e5],["m",6e4],["s",1e3],["S",1]],Mu=e=>(0,p.Et)(e)?new Date(e).getTime():e.valueOf(),Lu=(e,t)=>{let n=e;const r=/\[([^\]]*)]/g,o=Su.reduce((e,[t,r])=>{const o=new RegExp(`${t}+(?![^\\[\\]]*\\])`,"g");if(o.test(e)){const t=Math.floor(n/r);return n-=t*r,e.replace(o,e=>String(t).padStart(e.length,"0"))}return e},t);return o.replace(r,"$1")},Au=(0,i.pM)({name:"ElCountdown"}),Ou=(0,i.pM)({...Au,props:Eu,emits:_u,setup(e,{expose:t,emit:n}){const r=e;let o;const a=(0,s.KR)(0),l=(0,i.EW)(()=>Lu(a.value,r.format)),u=e=>Lu(e,r.format),c=()=>{o&&((0,Ws.V)(o),o=void 0)},f=()=>{const e=Mu(r.value),t=()=>{let r=e-Date.now();n(d.YU,r),r<=0?(r=0,c(),n("finish")):o=(0,Ws.m)(t),a.value=r};o=(0,Ws.m)(t)};return(0,i.sV)(()=>{a.value=Mu(r.value)-Date.now(),(0,i.wB)(()=>[r.value,r.format],()=>{c(),f()},{immediate:!0})}),(0,i.xo)(()=>{c()}),t({displayValue:l}),(e,t)=>((0,i.uX)(),(0,i.Wv)((0,s.R1)(ku),{value:a.value,title:e.title,prefix:e.prefix,suffix:e.suffix,"value-style":e.valueStyle,formatter:u},(0,i.eX)({_:2},[(0,i.pI)(e.$slots,(t,n)=>({name:n,fn:(0,i.k6)(()=>[(0,i.RG)(e.$slots,n)])}))]),1032,["value","title","prefix","suffix","value-style"]))}});var Tu=(0,m.A)(Ou,[["__file","countdown.vue"]]);const Iu=(0,E.GU)(Tu),Nu=(0,f.b_)({space:{type:[Number,String],default:""},active:{type:Number,default:0},direction:{type:String,default:"horizontal",values:["horizontal","vertical"]},alignCenter:{type:Boolean},simple:{type:Boolean},finishStatus:{type:String,values:["wait","process","finish","error","success"],default:"finish"},processStatus:{type:String,values:["wait","process","finish","error","success"],default:"process"}}),Wu={[d.YU]:(e,t)=>[e,t].every(p.Et)},Du="ElSteps",Pu=(0,i.pM)({name:"ElSteps"}),Fu=(0,i.pM)({...Pu,props:Nu,emits:Wu,setup(e,{emit:t}){const n=e,r=(0,g.DU)("steps"),{children:o,addChild:a,removeChild:l,ChildrenSorter:c}=(0,tt.W)((0,i.nI)(),"ElStep");return(0,i.wB)(o,()=>{o.value.forEach((e,t)=>{e.setIndex(t)})}),(0,i.Gt)(Du,{props:n,steps:o,addStep:a,removeStep:l}),(0,i.wB)(()=>n.active,(e,n)=>{t(d.YU,e,n)}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)([(0,s.R1)(r).b(),(0,s.R1)(r).m(e.simple?"simple":e.direction)])},[(0,i.RG)(e.$slots,"default"),(0,i.bF)((0,s.R1)(c))],2))}});var Bu=(0,m.A)(Fu,[["__file","steps.vue"]]);const zu=(0,f.b_)({title:{type:String,default:""},icon:{type:Y.Ze},description:{type:String,default:""},status:{type:String,values:["","wait","process","finish","error","success"],default:""}}),$u=(0,i.pM)({name:"ElStep"}),Vu=(0,i.pM)({...$u,props:zu,setup(e){const t=e,n=(0,g.DU)("step"),r=(0,s.KR)(-1),o=(0,s.KR)({}),a=(0,s.KR)(""),l=(0,i.WQ)(Du),c=(0,i.nI)();let d=0,f=0;(0,i.sV)(()=>{(0,i.wB)([()=>l.props.active,()=>l.props.processStatus,()=>l.props.finishStatus],([e],[t])=>{f=t||0,d=e-f,S(e)},{immediate:!0})});const v=(0,i.EW)(()=>t.status||a.value),h=(0,i.EW)(()=>{const e=l.steps.value[r.value-1];return e?e.internalStatus.value:"wait"}),m=(0,i.EW)(()=>l.props.alignCenter),b=(0,i.EW)(()=>"vertical"===l.props.direction),y=(0,i.EW)(()=>l.props.simple),w=(0,i.EW)(()=>l.steps.value.length),R=(0,i.EW)(()=>{var e;return(null==(e=l.steps.value[w.value-1])?void 0:e.uid)===c.uid}),C=(0,i.EW)(()=>y.value?"":l.props.space),x=(0,i.EW)(()=>[n.b(),n.is(y.value?"simple":l.props.direction),n.is("flex",R.value&&!C.value&&!m.value),n.is("center",m.value&&!b.value&&!y.value)]),k=(0,i.EW)(()=>{const e={flexBasis:(0,p.Et)(C.value)?`${C.value}px`:C.value?C.value:100/(w.value-(m.value?0:1))+"%"};return b.value||R.value&&(e.maxWidth=100/w.value+"%"),e}),E=e=>{r.value=e},_=e=>{const t="wait"===e,n=1===Math.abs(d)?0:d>0?150*(r.value+1-f):150*-(r.value+1-l.props.active),a={transitionDelay:`${n}ms`},i=e===l.props.processStatus||t?0:100;a.borderWidth=i&&!y.value?"1px":0,a["vertical"===l.props.direction?"height":"width"]=`${i}%`,o.value=a},S=e=>{e>r.value?a.value=l.props.finishStatus:e===r.value&&"error"!==h.value?a.value=l.props.processStatus:a.value="wait";const t=l.steps.value[r.value-1];t&&t.calcProgress(a.value)},M={uid:c.uid,getVnode:()=>c.vnode,currentStatus:v,internalStatus:a,setIndex:E,calcProgress:_};return l.addStep(M),(0,i.xo)(()=>{l.removeStep(M)}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{style:(0,u.Tr)((0,s.R1)(k)),class:(0,u.C4)((0,s.R1)(x))},[(0,i.Q3)(" icon & line "),(0,i.Lk)("div",{class:(0,u.C4)([(0,s.R1)(n).e("head"),(0,s.R1)(n).is((0,s.R1)(v))])},[(0,s.R1)(y)?(0,i.Q3)("v-if",!0):((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(n).e("line"))},[(0,i.Lk)("i",{class:(0,u.C4)((0,s.R1)(n).e("line-inner")),style:(0,u.Tr)(o.value)},null,6)],2)),(0,i.Lk)("div",{class:(0,u.C4)([(0,s.R1)(n).e("icon"),(0,s.R1)(n).is(e.icon||e.$slots.icon?"icon":"text")])},[(0,i.RG)(e.$slots,"icon",{},()=>[e.icon?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:0,class:(0,u.C4)((0,s.R1)(n).e("icon-inner"))},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)(e.icon)))]),_:1},8,["class"])):"success"===(0,s.R1)(v)?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:1,class:(0,u.C4)([(0,s.R1)(n).e("icon-inner"),(0,s.R1)(n).is("status")])},{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.Check))]),_:1},8,["class"])):"error"===(0,s.R1)(v)?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:2,class:(0,u.C4)([(0,s.R1)(n).e("icon-inner"),(0,s.R1)(n).is("status")])},{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.Close))]),_:1},8,["class"])):(0,s.R1)(y)?(0,i.Q3)("v-if",!0):((0,i.uX)(),(0,i.CE)("div",{key:3,class:(0,u.C4)((0,s.R1)(n).e("icon-inner"))},(0,u.v_)(r.value+1),3))])],2)],2),(0,i.Q3)(" title & description "),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(n).e("main"))},[(0,i.Lk)("div",{class:(0,u.C4)([(0,s.R1)(n).e("title"),(0,s.R1)(n).is((0,s.R1)(v))])},[(0,i.RG)(e.$slots,"title",{},()=>[(0,i.eW)((0,u.v_)(e.title),1)])],2),(0,s.R1)(y)?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(n).e("arrow"))},null,2)):((0,i.uX)(),(0,i.CE)("div",{key:1,class:(0,u.C4)([(0,s.R1)(n).e("description"),(0,s.R1)(n).is((0,s.R1)(v))])},[(0,i.RG)(e.$slots,"description",{},()=>[(0,i.eW)((0,u.v_)(e.description),1)])],2))],2)],6))}});var ju=(0,m.A)(Vu,[["__file","item.vue"]]);const Ku=(0,E.GU)(Bu,{Step:ju}),Hu=(0,E.WM)(ju);var Xu=n(55558),Uu=n(84757),Gu=(e=>(e["ASC"]="asc",e["DESC"]="desc",e))(Gu||{}),qu=(e=>(e["LEFT"]="left",e["CENTER"]="center",e["RIGHT"]="right",e))(qu||{}),Yu=(e=>(e["LEFT"]="left",e["RIGHT"]="right",e))(Yu||{});const Qu={["asc"]:"desc",["desc"]:"asc"},Zu=Symbol("placeholder"),Ju=(e,t,n)=>{var r;const o={flexGrow:0,flexShrink:0,...n?{}:{flexGrow:e.flexGrow||0,flexShrink:e.flexShrink||1}};n||(o.flexShrink=1);const a={...null!=(r=e.style)?r:{},...o,flexBasis:"auto",width:e.width};return t||(e.maxWidth&&(a.maxWidth=e.maxWidth),e.minWidth&&(a.minWidth=e.minWidth)),a};function ec(e,t,n){const r=(0,i.EW)(()=>(0,s.R1)(t).map((e,t)=>{var n,r;return{...e,key:null!=(r=null!=(n=e.key)?n:e.dataKey)?r:t}})),o=(0,i.EW)(()=>(0,s.R1)(r).filter(e=>!e.hidden)),a=(0,i.EW)(()=>(0,s.R1)(o).filter(e=>"left"===e.fixed||!0===e.fixed)),l=(0,i.EW)(()=>(0,s.R1)(o).filter(e=>"right"===e.fixed)),c=(0,i.EW)(()=>(0,s.R1)(o).filter(e=>!e.fixed)),d=(0,i.EW)(()=>{const e=[];return(0,s.R1)(a).forEach(t=>{e.push({...t,placeholderSign:Zu})}),(0,s.R1)(c).forEach(t=>{e.push(t)}),(0,s.R1)(l).forEach(t=>{e.push({...t,placeholderSign:Zu})}),e}),f=(0,i.EW)(()=>(0,s.R1)(a).length||(0,s.R1)(l).length),p=(0,i.EW)(()=>(0,s.R1)(r).reduce((t,r)=>(t[r.key]=Ju(r,(0,s.R1)(n),e.fixed),t),{})),v=(0,i.EW)(()=>(0,s.R1)(o).reduce((e,t)=>e+t.width,0)),h=e=>(0,s.R1)(r).find(t=>t.key===e),m=e=>(0,s.R1)(p)[e],g=(e,t)=>{e.width=t};function b(t){var n;const{key:r}=t.currentTarget.dataset;if(!r)return;const{sortState:o,sortBy:a}=e;let l=Gu.ASC;l=(0,u.Gv)(o)?Qu[o[r]]:Qu[a.order],null==(n=e.onColumnSort)||n.call(e,{column:h(r),key:r,order:l})}return{columns:r,columnsStyles:p,columnsTotalWidth:v,fixedColumnsOnLeft:a,fixedColumnsOnRight:l,hasFixedColumns:f,mainColumns:d,normalColumns:c,visibleColumns:o,getColumn:h,getColumnStyle:m,updateColumnWidth:g,onColumnSorted:b}}const tc=(e,{mainTableRef:t,leftTableRef:n,rightTableRef:r,onMaybeEndReached:o})=>{const a=(0,s.KR)({scrollLeft:0,scrollTop:0});function l(e){var o,a,l;const{scrollTop:i}=e;null==(o=t.value)||o.scrollTo(e),null==(a=n.value)||a.scrollToTop(i),null==(l=r.value)||l.scrollToTop(i)}function u(e){a.value=e,l(e)}function c(e){a.value.scrollTop=e,l((0,s.R1)(a))}function d(e){var n,r;a.value.scrollLeft=e,null==(r=null==(n=t.value)?void 0:n.scrollTo)||r.call(n,(0,s.R1)(a))}function f(t){var n;u(t),null==(n=e.onScroll)||n.call(e,t)}function p({scrollTop:e}){const{scrollTop:t}=(0,s.R1)(a);e!==t&&c(e)}function v(e,n="auto"){var r;null==(r=t.value)||r.scrollToRow(e,n)}return(0,i.wB)(()=>(0,s.R1)(a).scrollTop,(e,t)=>{e>t&&o()}),{scrollPos:a,scrollTo:u,scrollToLeft:d,scrollToTop:c,scrollToRow:v,onScroll:f,onVerticalScroll:p}},nc=(e,{mainTableRef:t,leftTableRef:n,rightTableRef:r,tableInstance:o,ns:a,isScrolling:l})=>{const u=(0,i.nI)(),{emit:c}=u,d=(0,s.IJ)(!1),f=(0,s.KR)(e.defaultExpandedRowKeys||[]),v=(0,s.KR)(-1),h=(0,s.IJ)(null),m=(0,s.KR)({}),g=(0,s.KR)({}),b=(0,s.IJ)({}),y=(0,s.IJ)({}),w=(0,s.IJ)({}),R=(0,i.EW)(()=>(0,p.Et)(e.estimatedRowHeight));function C(t){var n;null==(n=e.onRowsRendered)||n.call(e,t),t.rowCacheEnd>(0,s.R1)(v)&&(v.value=t.rowCacheEnd)}function x({hovered:e,rowKey:t}){if(l.value)return;const n=o.vnode.el,r=n.querySelectorAll(`[rowkey="${String(t)}"]`);r.forEach(t=>{e?t.classList.add(a.is("hovered")):t.classList.remove(a.is("hovered"))})}function k({expanded:t,rowData:n,rowIndex:r,rowKey:l}){var u,d;const p=[...(0,s.R1)(f)],v=p.indexOf(l);t?-1===v&&p.push(l):v>-1&&p.splice(v,1),f.value=p,c("update:expandedRowKeys",p),null==(u=e.onRowExpand)||u.call(e,{expanded:t,rowData:n,rowIndex:r,rowKey:l}),null==(d=e.onExpandedRowsChange)||d.call(e,p);const h=o.vnode.el,m=h.querySelector(`.${a.is("hovered")}[rowkey="${String(l)}"]`);m&&(0,i.dY)(()=>x({hovered:!0,rowKey:l}))}const E=(0,Fr.A)(()=>{var e,o,a,l;d.value=!0,m.value={...(0,s.R1)(m),...(0,s.R1)(g)},_((0,s.R1)(h),!1),g.value={},h.value=null,null==(e=t.value)||e.forceUpdate(),null==(o=n.value)||o.forceUpdate(),null==(a=r.value)||a.forceUpdate(),null==(l=u.proxy)||l.$forceUpdate(),d.value=!1},0);function _(e,o=!1){(0,s.R1)(R)&&[t,n,r].forEach(t=>{const n=(0,s.R1)(t);n&&n.resetAfterRowIndex(e,o)})}function S(e,t,n){const r=(0,s.R1)(h);(null===r||r>n)&&(h.value=n),g.value[e]=t}function M({rowKey:e,height:t,rowIndex:n},r){r?r===Yu.RIGHT?w.value[e]=t:b.value[e]=t:y.value[e]=t;const o=Math.max(...[b,w,y].map(t=>t.value[e]||0));(0,s.R1)(m)[e]!==o&&(S(e,o,n),E())}return{expandedRowKeys:f,lastRenderedRowIndex:v,isDynamic:R,isResetting:d,rowHeights:m,resetAfterIndex:_,onRowExpanded:k,onRowHovered:x,onRowsRendered:C,onRowHeightChange:M}},rc=(e,{expandedRowKeys:t,lastRenderedRowIndex:n,resetAfterIndex:r})=>{const o=(0,s.KR)({}),a=(0,i.EW)(()=>{const n={},{data:r,rowKey:a}=e,l=(0,s.R1)(t);if(!l||!l.length)return r;const i=[],c=new Set;l.forEach(e=>c.add(e));let d=r.slice();d.forEach(e=>n[e[a]]=0);while(d.length>0){const e=d.shift();i.push(e),c.has(e[a])&&(0,u.cy)(e.children)&&e.children.length>0&&(d=[...e.children,...d],e.children.forEach(t=>n[t[a]]=n[e[a]]+1))}return o.value=n,i}),l=(0,i.EW)(()=>{const{data:t,expandColumnKey:n}=e;return n?(0,s.R1)(a):t});return(0,i.wB)(l,(e,t)=>{e!==t&&(n.value=-1,r(0,!0))}),{data:l,depthMap:o}},oc=(e,t)=>e+t,ac=e=>(0,u.cy)(e)?e.reduce(oc,0):e,lc=(e,t,n={})=>(0,u.Tn)(e)?e(t):null!=e?e:n,ic=e=>(["width","maxWidth","minWidth","height"].forEach(t=>{e[t]=(0,y._V)(e[t])}),e),sc=e=>(0,i.vv)(e)?t=>(0,i.h)(e,t):e,uc=(e,{columnsTotalWidth:t,rowsHeight:n,fixedColumnsOnLeft:r,fixedColumnsOnRight:o})=>{const a=(0,i.EW)(()=>{const{fixed:n,width:r,vScrollbarSize:o}=e,a=r-o;return n?Math.max(Math.round((0,s.R1)(t)),a):a}),l=(0,i.EW)(()=>{const{height:t=0,maxHeight:r=0,footerHeight:o,hScrollbarSize:a}=e;if(r>0){const e=(0,s.R1)(h),t=(0,s.R1)(n),l=(0,s.R1)(v),i=l+e+t+a;return Math.min(i,r-o)}return t-o}),u=(0,i.EW)(()=>{const{maxHeight:t}=e,r=(0,s.R1)(l);if((0,p.Et)(t)&&t>0)return r;const o=(0,s.R1)(n)+(0,s.R1)(v)+(0,s.R1)(h);return Math.min(r,o)}),c=e=>e.width,d=(0,i.EW)(()=>ac((0,s.R1)(r).map(c))),f=(0,i.EW)(()=>ac((0,s.R1)(o).map(c))),v=(0,i.EW)(()=>ac(e.headerHeight)),h=(0,i.EW)(()=>{var t;return((null==(t=e.fixedData)?void 0:t.length)||0)*e.rowHeight}),m=(0,i.EW)(()=>(0,s.R1)(l)-(0,s.R1)(v)-(0,s.R1)(h)),g=(0,i.EW)(()=>{const{style:t={},height:n,width:r}=e;return ic({...t,height:n,width:r})}),b=(0,i.EW)(()=>ic({height:e.footerHeight})),w=(0,i.EW)(()=>({top:(0,y._V)((0,s.R1)(v)),bottom:(0,y._V)(e.footerHeight),width:(0,y._V)(e.width)}));return{bodyWidth:a,fixedTableHeight:u,mainTableHeight:l,leftTableWidth:d,rightTableWidth:f,windowHeight:m,footerHeight:b,emptyStyle:w,rootStyle:g,headerHeight:v}};function cc(e){const t=(0,s.KR)(),n=(0,s.KR)(),r=(0,s.KR)(),{columns:o,columnsStyles:a,columnsTotalWidth:l,fixedColumnsOnLeft:c,fixedColumnsOnRight:d,hasFixedColumns:f,mainColumns:v,onColumnSorted:h}=ec(e,(0,s.lW)(e,"columns"),(0,s.lW)(e,"fixed")),{scrollTo:m,scrollToLeft:b,scrollToTop:y,scrollToRow:w,onScroll:R,onVerticalScroll:C,scrollPos:x}=tc(e,{mainTableRef:t,leftTableRef:n,rightTableRef:r,onMaybeEndReached:ee}),k=(0,g.DU)("table-v2"),E=(0,i.nI)(),_=(0,s.IJ)(!1),{expandedRowKeys:S,lastRenderedRowIndex:M,isDynamic:L,isResetting:A,rowHeights:O,resetAfterIndex:T,onRowExpanded:I,onRowHeightChange:N,onRowHovered:W,onRowsRendered:D}=nc(e,{mainTableRef:t,leftTableRef:n,rightTableRef:r,tableInstance:E,ns:k,isScrolling:_}),{data:P,depthMap:F}=rc(e,{expandedRowKeys:S,lastRenderedRowIndex:M,resetAfterIndex:T}),B=(0,i.EW)(()=>{const{estimatedRowHeight:t,rowHeight:n}=e,r=(0,s.R1)(P);return(0,p.Et)(t)?Object.values((0,s.R1)(O)).reduce((e,t)=>e+t,0):r.length*n}),{bodyWidth:z,fixedTableHeight:$,mainTableHeight:V,leftTableWidth:j,rightTableWidth:K,windowHeight:H,footerHeight:X,emptyStyle:U,rootStyle:G,headerHeight:q}=uc(e,{columnsTotalWidth:l,fixedColumnsOnLeft:c,fixedColumnsOnRight:d,rowsHeight:B}),Y=(0,s.KR)(),Q=(0,i.EW)(()=>{const t=0===(0,s.R1)(P).length;return(0,u.cy)(e.fixedData)?0===e.fixedData.length&&t:t});function Z(t){const{estimatedRowHeight:n,rowHeight:r,rowKey:o}=e;return n?(0,s.R1)(O)[(0,s.R1)(P)[t][o]]||n:r}const J=(0,s.KR)(!1);function ee(){const{onEndReached:t}=e;if(!t)return;const{scrollTop:n}=(0,s.R1)(x),r=(0,s.R1)(B),o=(0,s.R1)(H),a=r-(n+o)+e.hScrollbarSize;!J.value&&(0,s.R1)(M)>=0&&r<=n+(0,s.R1)(V)-(0,s.R1)(q)?(J.value=!0,t(a)):J.value=!1}return(0,i.wB)(()=>(0,s.R1)(B),()=>J.value=!1),(0,i.wB)(()=>e.expandedRowKeys,e=>S.value=e,{deep:!0}),{columns:o,containerRef:Y,mainTableRef:t,leftTableRef:n,rightTableRef:r,isDynamic:L,isResetting:A,isScrolling:_,hasFixedColumns:f,columnsStyles:a,columnsTotalWidth:l,data:P,expandedRowKeys:S,depthMap:F,fixedColumnsOnLeft:c,fixedColumnsOnRight:d,mainColumns:v,bodyWidth:z,emptyStyle:U,rootStyle:G,footerHeight:X,mainTableHeight:V,fixedTableHeight:$,leftTableWidth:j,rightTableWidth:K,showEmpty:Q,getRowHeight:Z,onColumnSorted:h,onRowHovered:W,onRowExpanded:I,onRowsRendered:D,onRowHeightChange:N,scrollTo:m,scrollToLeft:b,scrollToTop:y,scrollToRow:w,onScroll:R,onVerticalScroll:C}}const dc=Symbol("tableV2"),fc="tableV2GridScrollLeft",pc=String,vc={type:(0,f.jq)(Array),required:!0},hc=((0,f.jq)(Object),{type:(0,f.jq)(Array)}),mc={...hc,required:!0},gc=String,bc={type:(0,f.jq)(Array),default:()=>(0,Cn.f)([])},yc={type:Number,required:!0},wc={type:(0,f.jq)([String,Number,Symbol]),default:"id"},Rc={type:(0,f.jq)(Object)},Cc=(0,f.b_)({class:String,columns:vc,columnsStyles:{type:(0,f.jq)(Object),required:!0},depth:Number,expandColumnKey:gc,estimatedRowHeight:{..._s.estimatedRowHeight,default:void 0},isScrolling:Boolean,onRowExpand:{type:(0,f.jq)(Function)},onRowHover:{type:(0,f.jq)(Function)},onRowHeightChange:{type:(0,f.jq)(Function)},rowData:{type:(0,f.jq)(Object),required:!0},rowEventHandlers:{type:(0,f.jq)(Object)},rowIndex:{type:Number,required:!0},rowKey:wc,style:{type:(0,f.jq)(Object)}}),xc={type:Number,required:!0},kc=(0,f.b_)({class:String,columns:vc,fixedHeaderData:{type:(0,f.jq)(Array)},headerData:{type:(0,f.jq)(Array),required:!0},headerHeight:{type:(0,f.jq)([Number,Array]),default:50},rowWidth:xc,rowHeight:{type:Number,default:50},height:xc,width:xc}),Ec=(0,f.b_)({columns:vc,data:mc,fixedData:hc,estimatedRowHeight:Cc.estimatedRowHeight,width:yc,height:yc,headerWidth:yc,headerHeight:kc.headerHeight,bodyWidth:yc,rowHeight:yc,cache:Cs.cache,useIsScrolling:Boolean,scrollbarAlwaysOn:_s.scrollbarAlwaysOn,scrollbarStartGap:_s.scrollbarStartGap,scrollbarEndGap:_s.scrollbarEndGap,class:pc,style:Rc,containerStyle:Rc,getRowHeight:{type:(0,f.jq)(Function),required:!0},rowKey:Cc.rowKey,onRowsRendered:{type:(0,f.jq)(Function)},onScroll:{type:(0,f.jq)(Function)}}),_c=(0,f.b_)({cache:Ec.cache,estimatedRowHeight:Cc.estimatedRowHeight,rowKey:wc,headerClass:{type:(0,f.jq)([String,Function])},headerProps:{type:(0,f.jq)([Object,Function])},headerCellProps:{type:(0,f.jq)([Object,Function])},headerHeight:kc.headerHeight,footerHeight:{type:Number,default:0},rowClass:{type:(0,f.jq)([String,Function])},rowProps:{type:(0,f.jq)([Object,Function])},rowHeight:{type:Number,default:50},cellProps:{type:(0,f.jq)([Object,Function])},columns:vc,data:mc,dataGetter:{type:(0,f.jq)(Function)},fixedData:hc,expandColumnKey:Cc.expandColumnKey,expandedRowKeys:bc,defaultExpandedRowKeys:bc,class:pc,fixed:Boolean,style:{type:(0,f.jq)(Object)},width:yc,height:yc,maxHeight:Number,useIsScrolling:Boolean,indentSize:{type:Number,default:12},iconSize:{type:Number,default:12},hScrollbarSize:_s.hScrollbarSize,vScrollbarSize:_s.vScrollbarSize,scrollbarAlwaysOn:Ss.alwaysOn,sortBy:{type:(0,f.jq)(Object),default:()=>({})},sortState:{type:(0,f.jq)(Object),default:void 0},onColumnSort:{type:(0,f.jq)(Function)},onExpandedRowsChange:{type:(0,f.jq)(Function)},onEndReached:{type:(0,f.jq)(Function)},onRowExpand:Cc.onRowExpand,onScroll:Ec.onScroll,onRowsRendered:Ec.onRowsRendered,rowEventHandlers:Cc.rowEventHandlers}),Sc="ElTableV2Header",Mc=(0,i.pM)({name:Sc,props:kc,setup(e,{slots:t,expose:n}){const r=(0,g.DU)("table-v2"),o=(0,i.WQ)(fc),a=(0,s.KR)(),l=(0,i.EW)(()=>ic({width:e.width,height:e.height})),u=(0,i.EW)(()=>ic({width:e.rowWidth,height:e.height})),c=(0,i.EW)(()=>(0,In.A)((0,s.R1)(e.headerHeight))),d=e=>{const t=(0,s.R1)(a);(0,i.dY)(()=>{(null==t?void 0:t.scroll)&&t.scroll({left:e})})},f=()=>{const n=r.e("fixed-header-row"),{columns:o,fixedHeaderData:a,rowHeight:l}=e;return null==a?void 0:a.map((e,r)=>{var a;const i=ic({height:l,width:"100%"});return null==(a=t.fixed)?void 0:a.call(t,{class:n,columns:o,rowData:e,rowIndex:-(r+1),style:i})})},p=()=>{const n=r.e("dynamic-header-row"),{columns:o}=e;return(0,s.R1)(c).map((e,r)=>{var a;const l=ic({width:"100%",height:e});return null==(a=t.dynamic)?void 0:a.call(t,{class:n,columns:o,headerIndex:r,style:l})})};return(0,i.$u)(()=>{(null==o?void 0:o.value)&&d(o.value)}),n({scrollToLeft:d}),()=>{if(!(e.height<=0))return(0,i.bF)("div",{ref:a,class:e.class,style:(0,s.R1)(l),role:"rowgroup"},[(0,i.bF)("div",{style:(0,s.R1)(u),class:r.e("header")},[p(),f()])])}}});var Lc=Mc;const Ac=({atXEndEdge:e,atXStartEdge:t,atYEndEdge:n,atYStartEdge:r},o)=>{let a=null,l=0,i=0;const s=(o,a)=>{const l=o<=0&&t.value||o>=0&&e.value,i=a<=0&&r.value||a>=0&&n.value;return l&&i},u=e=>{(0,Ws.V)(a);let t=e.deltaX,n=e.deltaY;Math.abs(t)>Math.abs(n)?n=0:t=0,e.shiftKey&&0!==n&&(t=n,n=0),s(l,i)&&s(l+t,i+n)||(l+=t,i+=n,e.preventDefault(),a=(0,Ws.m)(()=>{o(l,i),l=0,i=0}))};return{hasReachedEdge:s,onWheel:u}},Oc=(e,t,n,r,o,a,l)=>{const i=(0,s.KR)(0),u=(0,s.KR)(0);let d,f=0,p=0;const v=e=>{(0,Ws.V)(d),i.value=e.touches[0].clientX,u.value=e.touches[0].clientY,f=0,p=0},h=e=>{e.preventDefault(),(0,Ws.V)(d),f+=i.value-e.touches[0].clientX,p+=u.value-e.touches[0].clientY,i.value=e.touches[0].clientX,u.value=e.touches[0].clientY,d=(0,Ws.m)(()=>{const e=r.value-(0,s.R1)(a),i=o.value-(0,s.R1)(l),u=Math.min(t.value.scrollLeft+f,e),c=Math.min(t.value.scrollTop+p,i);n({scrollLeft:u,scrollTop:c}),f=0,p=0})};return(0,c.MLh)(e,"touchstart",v,{passive:!0}),(0,c.MLh)(e,"touchmove",h,{passive:!1}),{touchStartX:i,touchStartY:u,handleTouchStart:v,handleTouchMove:h}},Tc=({name:e,clearCache:t,getColumnPosition:n,getColumnStartIndexForOffset:r,getColumnStopIndexForStartIndex:o,getEstimatedTotalHeight:a,getEstimatedTotalWidth:l,getColumnOffset:d,getRowOffset:f,getRowPosition:v,getRowStartIndexForOffset:h,getRowStopIndexForStartIndex:m,initCache:y,injectToInstance:w,validateProps:R})=>(0,i.pM)({name:null!=e?e:"ElVirtualList",props:_s,emits:[ps.xG,ps.k0],setup(e,{emit:C,expose:x,slots:k}){const E=(0,g.DU)("vl");R(e);const _=(0,i.nI)(),S=(0,s.KR)(y(e,_));null==w||w(_,S);const M=(0,s.KR)(),L=(0,s.KR)(),O=(0,s.KR)(),T=(0,s.KR)(),I=(0,s.KR)({isScrolling:!1,scrollLeft:(0,p.Et)(e.initScrollLeft)?e.initScrollLeft:0,scrollTop:(0,p.Et)(e.initScrollTop)?e.initScrollTop:0,updateRequested:!1,xAxisScrollDir:ps.OX,yAxisScrollDir:ps.OX}),N=ds(),W=(0,i.EW)(()=>Number.parseInt(`${e.height}`,10)),D=(0,i.EW)(()=>Number.parseInt(`${e.width}`,10)),P=(0,i.EW)(()=>{const{totalColumn:t,totalRow:n,columnCache:a}=e,{isScrolling:l,xAxisScrollDir:i,scrollLeft:u}=(0,s.R1)(I);if(0===t||0===n)return[0,0,0,0];const c=r(e,u,(0,s.R1)(S)),d=o(e,c,u,(0,s.R1)(S)),f=l&&i!==ps.Wc?1:Math.max(1,a),p=l&&i!==ps.OX?1:Math.max(1,a);return[Math.max(0,c-f),Math.max(0,Math.min(t-1,d+p)),c,d]}),F=(0,i.EW)(()=>{const{totalColumn:t,totalRow:n,rowCache:r}=e,{isScrolling:o,yAxisScrollDir:a,scrollTop:l}=(0,s.R1)(I);if(0===t||0===n)return[0,0,0,0];const i=h(e,l,(0,s.R1)(S)),u=m(e,i,l,(0,s.R1)(S)),c=o&&a!==ps.Wc?1:Math.max(1,r),d=o&&a!==ps.OX?1:Math.max(1,r);return[Math.max(0,i-c),Math.max(0,Math.min(n-1,u+d)),i,u]}),B=(0,i.EW)(()=>a(e,(0,s.R1)(S))),z=(0,i.EW)(()=>l(e,(0,s.R1)(S))),$=(0,i.EW)(()=>{var t;return[{position:"relative",overflow:"hidden",WebkitOverflowScrolling:"touch",willChange:"transform"},{direction:e.direction,height:(0,p.Et)(e.height)?`${e.height}px`:e.height,width:(0,p.Et)(e.width)?`${e.width}px`:e.width},null!=(t=e.style)?t:{}]}),V=(0,i.EW)(()=>{const e=`${(0,s.R1)(z)}px`,t=`${(0,s.R1)(B)}px`;return{height:t,pointerEvents:(0,s.R1)(I).isScrolling?"none":void 0,width:e,margin:0,boxSizing:"border-box"}}),j=()=>{const{totalColumn:t,totalRow:n}=e;if(t>0&&n>0){const[e,t,n,r]=(0,s.R1)(P),[o,a,l,i]=(0,s.R1)(F);C(ps.xG,{columnCacheStart:e,columnCacheEnd:t,rowCacheStart:o,rowCacheEnd:a,columnVisibleStart:n,columnVisibleEnd:r,rowVisibleStart:l,rowVisibleEnd:i})}const{scrollLeft:r,scrollTop:o,updateRequested:a,xAxisScrollDir:l,yAxisScrollDir:i}=(0,s.R1)(I);C(ps.k0,{xAxisScrollDir:l,scrollLeft:r,yAxisScrollDir:i,scrollTop:o,updateRequested:a})},K=t=>{const{clientHeight:n,clientWidth:r,scrollHeight:o,scrollLeft:a,scrollTop:l,scrollWidth:u}=t.currentTarget,c=(0,s.R1)(I);if(c.scrollTop===l&&c.scrollLeft===a)return;let d=a;if(As(e.direction))switch(Ts()){case ps.Cg:d=-a;break;case ps.sr:d=u-r-a;break}I.value={...c,isScrolling:!0,scrollLeft:d,scrollTop:Math.max(0,Math.min(l,o-n)),updateRequested:!0,xAxisScrollDir:Ms(c.scrollLeft,d),yAxisScrollDir:Ms(c.scrollTop,l)},(0,i.dY)(()=>te()),ne(),j()},H=(e,t)=>{const n=(0,s.R1)(W),r=(B.value-n)/t*e;G({scrollTop:Math.min(B.value-n,r)})},X=(e,t)=>{const n=(0,s.R1)(D),r=(z.value-n)/t*e;G({scrollLeft:Math.min(z.value-n,r)})},{onWheel:U}=Ac({atXStartEdge:(0,i.EW)(()=>I.value.scrollLeft<=0),atXEndEdge:(0,i.EW)(()=>I.value.scrollLeft>=z.value-(0,s.R1)(D)),atYStartEdge:(0,i.EW)(()=>I.value.scrollTop<=0),atYEndEdge:(0,i.EW)(()=>I.value.scrollTop>=B.value-(0,s.R1)(W))},(e,t)=>{var n,r,o,a;null==(r=null==(n=L.value)?void 0:n.onMouseUp)||r.call(n),null==(a=null==(o=O.value)?void 0:o.onMouseUp)||a.call(o);const l=(0,s.R1)(D),i=(0,s.R1)(W);G({scrollLeft:Math.min(I.value.scrollLeft+e,z.value-l),scrollTop:Math.min(I.value.scrollTop+t,B.value-i)})});(0,c.MLh)(M,"wheel",U,{passive:!1});const G=({scrollLeft:e=I.value.scrollLeft,scrollTop:t=I.value.scrollTop})=>{e=Math.max(e,0),t=Math.max(t,0);const n=(0,s.R1)(I);t===n.scrollTop&&e===n.scrollLeft||(I.value={...n,xAxisScrollDir:Ms(n.scrollLeft,e),yAxisScrollDir:Ms(n.scrollTop,t),scrollLeft:e,scrollTop:t,updateRequested:!0},(0,i.dY)(()=>te()),ne(),j())},{touchStartX:q,touchStartY:Y,handleTouchStart:Q,handleTouchMove:Z}=Oc(M,I,G,z,B,D,W),J=(t=0,n=0,r=ps.YF)=>{const o=(0,s.R1)(I);n=Math.max(0,Math.min(n,e.totalColumn-1)),t=Math.max(0,Math.min(t,e.totalRow-1));const i=(0,b.F_)(E.namespace.value),u=(0,s.R1)(S),c=a(e,u),p=l(e,u);G({scrollLeft:d(e,n,r,o.scrollLeft,u,p>e.width?i:0),scrollTop:f(e,t,r,o.scrollTop,u,c>e.height?i:0)})},ee=(r,o)=>{const{columnWidth:a,direction:l,rowHeight:i}=e,c=N.value(t&&a,t&&i,t&&l),d=`${r},${o}`;if((0,u.$3)(c,d))return c[d];{const[,t]=n(e,o,(0,s.R1)(S)),a=(0,s.R1)(S),i=As(l),[u,f]=v(e,r,a),[p]=n(e,o,a);return c[d]={position:"absolute",left:i?void 0:`${t}px`,right:i?`${t}px`:void 0,top:`${f}px`,height:`${u}px`,width:`${p}px`},c[d]}},te=()=>{I.value.isScrolling=!1,(0,i.dY)(()=>{N.value(-1,null,null)})};(0,i.sV)(()=>{if(!A.oc)return;const{initScrollLeft:t,initScrollTop:n}=e,r=(0,s.R1)(M);r&&((0,p.Et)(t)&&(r.scrollLeft=t),(0,p.Et)(n)&&(r.scrollTop=n)),j()});const ne=()=>{const{direction:t}=e,{scrollLeft:n,scrollTop:r,updateRequested:o}=(0,s.R1)(I),a=(0,s.R1)(M);if(o&&a){if(t===ps.rX)switch(Ts()){case ps.Cg:a.scrollLeft=-n;break;case ps.KR:a.scrollLeft=n;break;default:{const{clientWidth:e,scrollWidth:t}=a;a.scrollLeft=t-e-n;break}}else a.scrollLeft=Math.max(0,n);a.scrollTop=Math.max(0,r)}},{resetAfterColumnIndex:re,resetAfterRowIndex:oe,resetAfter:ae}=_.proxy;x({windowRef:M,innerRef:T,getItemStyleCache:N,touchStartX:q,touchStartY:Y,handleTouchStart:Q,handleTouchMove:Z,scrollTo:G,scrollToItem:J,states:I,resetAfterColumnIndex:re,resetAfterRowIndex:oe,resetAfter:ae});const le=()=>{const{scrollbarAlwaysOn:t,scrollbarStartGap:n,scrollbarEndGap:r,totalColumn:o,totalRow:a}=e,l=(0,s.R1)(D),u=(0,s.R1)(W),c=(0,s.R1)(z),d=(0,s.R1)(B),{scrollLeft:f,scrollTop:p}=(0,s.R1)(I),v=(0,i.h)(Ds,{ref:L,alwaysOn:t,startGap:n,endGap:r,class:E.e("horizontal"),clientSize:l,layout:"horizontal",onScroll:X,ratio:100*l/c,scrollFrom:f/(c-l),total:a,visible:!0}),h=(0,i.h)(Ds,{ref:O,alwaysOn:t,startGap:n,endGap:r,class:E.e("vertical"),clientSize:u,layout:"vertical",onScroll:H,ratio:100*u/d,scrollFrom:p/(d-u),total:o,visible:!0});return{horizontalScrollbar:v,verticalScrollbar:h}},ie=()=>{var t;const[n,r]=(0,s.R1)(P),[o,a]=(0,s.R1)(F),{data:l,totalColumn:u,totalRow:c,useIsScrolling:d,itemKey:f}=e,p=[];if(c>0&&u>0)for(let e=o;e<=a;e++)for(let o=n;o<=r;o++){const n=f({columnIndex:o,data:l,rowIndex:e});p.push((0,i.h)(i.FK,{key:n},null==(t=k.default)?void 0:t.call(k,{columnIndex:o,data:l,isScrolling:d?(0,s.R1)(I).isScrolling:void 0,style:ee(e,o),rowIndex:e})))}return p},se=()=>{const t=(0,i.$y)(e.innerElement),n=ie();return[(0,i.h)(t,(0,i.v6)(e.innerProps,{style:(0,s.R1)(V),ref:T}),(0,u.Kg)(t)?n:{default:()=>n})]},ue=()=>{const t=(0,i.$y)(e.containerElement),{horizontalScrollbar:n,verticalScrollbar:r}=le(),o=se();return(0,i.h)("div",{key:0,class:E.e("wrapper"),role:e.role},[(0,i.h)(t,{class:e.className,style:(0,s.R1)($),onScroll:K,ref:M},(0,u.Kg)(t)?o:{default:()=>o}),n,r])};return ue}}),{max:Ic,min:Nc,floor:Wc}=Math,Dc={column:"columnWidth",row:"rowHeight"},Pc={column:"lastVisitedColumnIndex",row:"lastVisitedRowIndex"},Fc=(e,t,n,r)=>{const[o,a,l]=[n[r],e[Dc[r]],n[Pc[r]]];if(t>l){let e=0;if(l>=0){const t=o[l];e=t.offset+t.size}for(let n=l+1;n<=t;n++){const t=a(n);o[n]={offset:e,size:t},e+=t}n[Pc[r]]=t}return o[t]},Bc=(e,t,n,r,o,a)=>{while(n<=r){const l=n+Wc((r-n)/2),i=Fc(e,l,t,a).offset;if(i===o)return l;i{const a="column"===o?e.totalColumn:e.totalRow;let l=1;while(n{const[o,a]=[t[r],t[Pc[r]]],l=a>0?o[a].offset:0;return l>=n?Bc(e,t,0,a,n,r):zc(e,t,Ic(0,a),n,r)},Vc=({totalRow:e},{estimatedRowHeight:t,lastVisitedRowIndex:n,row:r})=>{let o=0;if(n>=e&&(n=e-1),n>=0){const e=r[n];o=e.offset+e.size}const a=e-n-1,l=a*t;return o+l},jc=({totalColumn:e},{column:t,estimatedColumnWidth:n,lastVisitedColumnIndex:r})=>{let o=0;if(r>e&&(r=e-1),r>=0){const e=t[r];o=e.offset+e.size}const a=e-r-1,l=a*n;return o+l},Kc={column:jc,row:Vc},Hc=(e,t,n,r,o,a,l)=>{const[i,s]=["row"===a?e.height:e.width,Kc[a]],u=Fc(e,t,o,a),c=s(e,o),d=Ic(0,Nc(c-i,u.offset)),f=Ic(0,u.offset-i+l+u.size);switch(n===ps.UZ&&(n=r>=f-i&&r<=d+i?ps.YF:ps.v_),n){case ps.zj:return d;case ps.Y5:return f;case ps.v_:return Math.round(f+(d-f)/2);case ps.YF:default:return r>=f&&r<=d?r:f>d||r{const r=Fc(e,t,n,"column");return[r.size,r.offset]},getRowPosition:(e,t,n)=>{const r=Fc(e,t,n,"row");return[r.size,r.offset]},getColumnOffset:(e,t,n,r,o,a)=>Hc(e,t,n,r,o,"column",a),getRowOffset:(e,t,n,r,o,a)=>Hc(e,t,n,r,o,"row",a),getColumnStartIndexForOffset:(e,t,n)=>$c(e,n,t,"column"),getColumnStopIndexForStartIndex:(e,t,n,r)=>{const o=Fc(e,t,r,"column"),a=n+e.width;let l=o.offset+o.size,i=t;while(i$c(e,n,t,"row"),getRowStopIndexForStartIndex:(e,t,n,r)=>{const{totalRow:o,height:a}=e,l=Fc(e,t,r,"row"),i=n+a;let s=l.size+l.offset,u=t;while(u{const n=({columnIndex:n,rowIndex:r},o)=>{var a,l;o=!!(0,p.b0)(o)||o,(0,p.Et)(n)&&(t.value.lastVisitedColumnIndex=Math.min(t.value.lastVisitedColumnIndex,n-1)),(0,p.Et)(r)&&(t.value.lastVisitedRowIndex=Math.min(t.value.lastVisitedRowIndex,r-1)),null==(a=e.exposed)||a.getItemStyleCache.value(-1,null,null),o&&(null==(l=e.proxy)||l.$forceUpdate())},r=(e,t)=>{n({columnIndex:e},t)},o=(e,t)=>{n({rowIndex:e},t)};Object.assign(e.proxy,{resetAfterColumnIndex:r,resetAfterRowIndex:o,resetAfter:n})},initCache:({estimatedColumnWidth:e=ps.Tc,estimatedRowHeight:t=ps.Tc})=>{const n={column:{},estimatedColumnWidth:e,estimatedRowHeight:t,lastVisitedColumnIndex:-1,lastVisitedRowIndex:-1,row:{}};return n},clearCache:!1,validateProps:({columnWidth:e,rowHeight:t})=>{0}}),Uc=Tc({name:"ElFixedSizeGrid",getColumnPosition:({columnWidth:e},t)=>[e,t*e],getRowPosition:({rowHeight:e},t)=>[e,t*e],getEstimatedTotalHeight:({totalRow:e,rowHeight:t})=>t*e,getEstimatedTotalWidth:({totalColumn:e,columnWidth:t})=>t*e,getColumnOffset:({totalColumn:e,columnWidth:t,width:n},r,o,a,l,i)=>{n=Number(n);const s=Math.max(0,e*t-n),u=Math.min(s,r*t),c=Math.max(0,r*t-n+i+t);switch("smart"===o&&(o=a>=c-n&&a<=u+n?ps.YF:ps.v_),o){case ps.zj:return u;case ps.Y5:return c;case ps.v_:{const e=Math.round(c+(u-c)/2);return es+Math.floor(n/2)?s:e}case ps.YF:default:return a>=c&&a<=u?a:c>u||a{t=Number(t);const s=Math.max(0,n*e-t),u=Math.min(s,r*e),c=Math.max(0,r*e-t+i+e);switch(o===ps.UZ&&(o=a>=c-t&&a<=u+t?ps.YF:ps.v_),o){case ps.zj:return u;case ps.Y5:return c;case ps.v_:{const e=Math.round(c+(u-c)/2);return es+Math.floor(t/2)?s:e}case ps.YF:default:return a>=c&&a<=u?a:c>u||aMath.max(0,Math.min(t-1,Math.floor(n/e))),getColumnStopIndexForStartIndex:({columnWidth:e,totalColumn:t,width:n},r,o)=>{const a=r*e,l=Math.ceil((n+o-a)/e);return Math.max(0,Math.min(t-1,r+l-1))},getRowStartIndexForOffset:({rowHeight:e,totalRow:t},n)=>Math.max(0,Math.min(t-1,Math.floor(n/e))),getRowStopIndexForStartIndex:({rowHeight:e,totalRow:t,height:n},r,o)=>{const a=r*e,l=Math.ceil((n+o-a)/e);return Math.max(0,Math.min(t-1,r+l-1))},initCache:()=>{},clearCache:!0,validateProps:({columnWidth:e,rowHeight:t})=>{0}}),Gc="ElTableV2Grid",qc=e=>{const t=(0,s.KR)(),n=(0,s.KR)(),r=(0,s.KR)(0),o=(0,i.EW)(()=>{const{data:t,rowHeight:n,estimatedRowHeight:r}=e;if(!r)return t.length*n}),a=(0,i.EW)(()=>{const{fixedData:t,rowHeight:n}=e;return((null==t?void 0:t.length)||0)*n}),l=(0,i.EW)(()=>ac(e.headerHeight)),c=(0,i.EW)(()=>{const{height:t}=e;return Math.max(0,t-(0,s.R1)(l)-(0,s.R1)(a))}),d=(0,i.EW)(()=>(0,s.R1)(l)+(0,s.R1)(a)>0),f=({data:t,rowIndex:n})=>t[n][e.rowKey];function v({rowCacheStart:t,rowCacheEnd:n,rowVisibleStart:r,rowVisibleEnd:o}){var a;null==(a=e.onRowsRendered)||a.call(e,{rowCacheStart:t,rowCacheEnd:n,rowVisibleStart:r,rowVisibleEnd:o})}function h(e,t){var r;null==(r=n.value)||r.resetAfterRowIndex(e,t)}function m(e,o){const a=(0,s.R1)(t),l=(0,s.R1)(n);(0,u.Gv)(e)?(null==a||a.scrollToLeft(e.scrollLeft),r.value=e.scrollLeft,null==l||l.scrollTo(e)):(null==a||a.scrollToLeft(e),r.value=e,null==l||l.scrollTo({scrollLeft:e,scrollTop:o}))}function g(e){var t;null==(t=(0,s.R1)(n))||t.scrollTo({scrollTop:e})}function b(e,t){var r;null==(r=(0,s.R1)(n))||r.scrollToItem(e,1,t)}function y(){var e,r;null==(e=(0,s.R1)(n))||e.$forceUpdate(),null==(r=(0,s.R1)(t))||r.$forceUpdate()}return(0,i.wB)(()=>e.bodyWidth,()=>{var t;(0,p.Et)(e.estimatedRowHeight)&&(null==(t=n.value)||t.resetAfter({columnIndex:0},!1))}),{bodyRef:n,forceUpdate:y,fixedRowHeight:a,gridHeight:c,hasHeader:d,headerHeight:l,headerRef:t,totalHeight:o,itemKey:f,onItemRendered:v,resetAfterRowIndex:h,scrollTo:m,scrollToTop:g,scrollToRow:b,scrollLeft:r}},Yc=(0,i.pM)({name:Gc,props:Ec,setup(e,{slots:t,expose:n}){const{ns:r}=(0,i.WQ)(dc),{bodyRef:o,fixedRowHeight:a,gridHeight:l,hasHeader:u,headerRef:c,headerHeight:d,totalHeight:f,forceUpdate:v,itemKey:h,onItemRendered:m,resetAfterRowIndex:g,scrollTo:b,scrollToTop:y,scrollToRow:w,scrollLeft:R}=qc(e);(0,i.Gt)(fc,R),(0,i.n)(async()=>{var e;await(0,i.dY)();const t=null==(e=o.value)?void 0:e.states.scrollTop;t&&y(Math.round(t)+1)}),n({forceUpdate:v,totalHeight:f,scrollTo:b,scrollToTop:y,scrollToRow:w,resetAfterRowIndex:g});const C=()=>e.bodyWidth;return()=>{const{cache:n,columns:f,data:v,fixedData:g,useIsScrolling:b,scrollbarAlwaysOn:y,scrollbarEndGap:w,scrollbarStartGap:R,style:x,rowHeight:k,bodyWidth:E,estimatedRowHeight:_,headerWidth:S,height:M,width:L,getRowHeight:A,onScroll:O}=e,T=(0,p.Et)(_),I=T?Xc:Uc,N=(0,s.R1)(d);return(0,i.bF)("div",{role:"table",class:[r.e("table"),e.class],style:x},[(0,i.bF)(I,{ref:o,data:v,useIsScrolling:b,itemKey:h,columnCache:0,columnWidth:T?C:E,totalColumn:1,totalRow:v.length,rowCache:n,rowHeight:T?A:k,width:L,height:(0,s.R1)(l),class:r.e("body"),role:"rowgroup",scrollbarStartGap:R,scrollbarEndGap:w,scrollbarAlwaysOn:y,onScroll:O,onItemRendered:m,perfMode:!1},{default:e=>{var n;const r=v[e.rowIndex];return null==(n=t.row)?void 0:n.call(t,{...e,columns:f,rowData:r})}}),(0,s.R1)(u)&&(0,i.bF)(Lc,{ref:c,class:r.e("header-wrapper"),columns:f,headerData:v,headerHeight:e.headerHeight,fixedHeaderData:g,rowWidth:S,rowHeight:k,width:L,height:Math.min(N+(0,s.R1)(a),M)},{dynamic:t.header,fixed:t.row})])}}});var Qc=Yc;function Zc(e){return"function"===typeof e||"[object Object]"===Object.prototype.toString.call(e)&&!(0,i.vv)(e)}const Jc=(e,{slots:t})=>{const{mainTableRef:n,...r}=e;return(0,i.bF)(Qc,(0,i.v6)({ref:n},r),Zc(t)?t:{default:()=>[t]})};var ed=Jc;function td(e){return"function"===typeof e||"[object Object]"===Object.prototype.toString.call(e)&&!(0,i.vv)(e)}const nd=(e,{slots:t})=>{if(!e.columns.length)return;const{leftTableRef:n,...r}=e;return(0,i.bF)(Qc,(0,i.v6)({ref:n},r),td(t)?t:{default:()=>[t]})};var rd=nd;function od(e){return"function"===typeof e||"[object Object]"===Object.prototype.toString.call(e)&&!(0,i.vv)(e)}const ad=(e,{slots:t})=>{if(!e.columns.length)return;const{rightTableRef:n,...r}=e;return(0,i.bF)(Qc,(0,i.v6)({ref:n},r),od(t)?t:{default:()=>[t]})};var ld=ad;const id=e=>{const{isScrolling:t}=(0,i.WQ)(dc),n=(0,s.KR)(!1),r=(0,s.KR)(),o=(0,i.EW)(()=>(0,p.Et)(e.estimatedRowHeight)&&e.rowIndex>=0),a=(t=!1)=>{const o=(0,s.R1)(r);if(!o)return;const{columns:a,onRowHeightChange:l,rowKey:u,rowIndex:c,style:d}=e,{height:f}=o.getBoundingClientRect();n.value=!0,(0,i.dY)(()=>{if(t||f!==Number.parseInt(d.height)){const e=a[0],t=(null==e?void 0:e.placeholderSign)===Zu;null==l||l({rowKey:u,height:f,rowIndex:c},e&&!t&&e.fixed)}})},l=(0,i.EW)(()=>{const{rowData:t,rowIndex:n,rowKey:r,onRowHover:o}=e,a=e.rowEventHandlers||{},l={};return Object.entries(a).forEach(([e,o])=>{(0,u.Tn)(o)&&(l[e]=e=>{o({event:e,rowData:t,rowIndex:n,rowKey:r})})}),o&&[{name:"onMouseleave",hovered:!1},{name:"onMouseenter",hovered:!0}].forEach(({name:e,hovered:a})=>{const i=l[e];l[e]=e=>{o({event:e,hovered:a,rowData:t,rowIndex:n,rowKey:r}),null==i||i(e)}}),l}),c=t=>{const{onRowExpand:n,rowData:r,rowIndex:o,rowKey:a}=e;null==n||n({expanded:t,rowData:r,rowIndex:o,rowKey:a})};return(0,i.sV)(()=>{(0,s.R1)(o)&&a(!0)}),{isScrolling:t,measurable:o,measured:n,rowRef:r,eventHandlers:l,onExpand:c}},sd="ElTableV2TableRow",ud=(0,i.pM)({name:sd,props:Cc,setup(e,{expose:t,slots:n,attrs:r}){const{eventHandlers:o,isScrolling:a,measurable:l,measured:c,rowRef:d,onExpand:f}=id(e);return t({onExpand:f}),()=>{const{columns:t,columnsStyles:p,expandColumnKey:v,depth:h,rowData:m,rowIndex:g,style:b}=e;let y=t.map((e,r)=>{const o=(0,u.cy)(m.children)&&m.children.length>0&&e.key===v;return n.cell({column:e,columns:t,columnIndex:r,depth:h,style:p[e.key],rowData:m,rowIndex:g,isScrolling:(0,s.R1)(a),expandIconProps:o?{rowData:m,rowIndex:g,onExpand:f}:void 0})});if(n.row&&(y=n.row({cells:y.map(e=>(0,u.cy)(e)&&1===e.length?e[0]:e),style:b,columns:t,depth:h,rowData:m,rowIndex:g,isScrolling:(0,s.R1)(a)})),(0,s.R1)(l)){const{height:t,...n}=b||{},a=(0,s.R1)(c);return(0,i.bF)("div",(0,i.v6)({ref:d,class:e.class,style:a?b:n,role:"row"},r,(0,s.R1)(o)),[y])}return(0,i.bF)("div",(0,i.v6)(r,{ref:d,class:e.class,style:b,role:"row"},(0,s.R1)(o)),[y])}}});var cd=ud;function dd(e){return"function"===typeof e||"[object Object]"===Object.prototype.toString.call(e)&&!(0,i.vv)(e)}const fd=(e,{slots:t})=>{const{columns:n,columnsStyles:r,depthMap:o,expandColumnKey:a,expandedRowKeys:l,estimatedRowHeight:s,hasFixedColumns:u,rowData:c,rowIndex:d,style:f,isScrolling:p,rowProps:v,rowClass:h,rowKey:m,rowEventHandlers:g,ns:b,onRowHovered:y,onRowExpanded:w}=e,R=lc(h,{columns:n,rowData:c,rowIndex:d},""),C=lc(v,{columns:n,rowData:c,rowIndex:d}),x=c[m],k=o[x]||0,E=Boolean(a),_=d<0,S=[b.e("row"),R,b.is("expanded",E&&l.includes(x)),b.is("fixed",!k&&_),b.is("customized",Boolean(t.row)),{[b.e(`row-depth-${k}`)]:E&&d>=0}],M=u?y:void 0,L={...C,columns:n,columnsStyles:r,class:S,depth:k,expandColumnKey:a,estimatedRowHeight:_?void 0:s,isScrolling:p,rowIndex:d,rowData:c,rowKey:x,rowEventHandlers:g,style:f},A=e=>{null==M||M({hovered:!0,rowKey:x,event:e,rowData:c,rowIndex:d})},O=e=>{null==M||M({hovered:!1,rowKey:x,event:e,rowData:c,rowIndex:d})};return(0,i.bF)(cd,(0,i.v6)(L,{onRowExpand:w,onMouseenter:A,onMouseleave:O,rowkey:x}),dd(t)?t:{default:()=>[t]})};var pd=fd;const vd=(e,{slots:t})=>{var n;const{cellData:r,style:o}=e,a=(null==(n=null==r?void 0:r.toString)?void 0:n.call(r))||"",l=(0,i.RG)(t,"default",e,()=>[a]);return(0,i.bF)("div",{class:e.class,title:a,style:o},[l])};vd.displayName="ElTableV2Cell",vd.inheritAttrs=!1;var hd=vd;const md=e=>{const{expanded:t,expandable:n,onExpand:r,style:o,size:a}=e,l={onClick:n?()=>r(!t):void 0,class:e.class};return(0,i.bF)(W.tk,(0,i.v6)(l,{size:a,style:o}),{default:()=>[(0,i.bF)(O.ArrowRight,null,null)]})};var gd=md;const bd=({columns:e,column:t,columnIndex:n,depth:r,expandIconProps:o,isScrolling:a,rowData:l,rowIndex:s,style:c,expandedRowKeys:d,ns:f,cellProps:p,expandColumnKey:v,indentSize:h,iconSize:m,rowKey:g},{slots:b})=>{const y=ic(c);if(t.placeholderSign===Zu)return(0,i.bF)("div",{class:f.em("row-cell","placeholder"),style:y},null);const{cellRenderer:w,dataKey:R,dataGetter:C}=t,x=(0,u.Tn)(C)?C({columns:e,column:t,columnIndex:n,rowData:l,rowIndex:s}):(0,Xi.A)(l,null!=R?R:""),k=lc(p,{cellData:x,columns:e,column:t,columnIndex:n,rowIndex:s,rowData:l}),E={class:f.e("cell-text"),columns:e,column:t,columnIndex:n,cellData:x,isScrolling:a,rowData:l,rowIndex:s},_=sc(w),S=_?_(E):(0,i.RG)(b,"default",E,()=>[(0,i.bF)(hd,E,null)]),M=[f.e("row-cell"),t.class,t.align===qu.CENTER&&f.is("align-center"),t.align===qu.RIGHT&&f.is("align-right")],L=s>=0&&v&&t.key===v,A=s>=0&&d.includes(l[g]);let O;const T=`margin-inline-start: ${r*h}px;`;return L&&(O=(0,u.Gv)(o)?(0,i.bF)(gd,(0,i.v6)(o,{class:[f.e("expand-icon"),f.is("expanded",A)],size:m,expanded:A,style:T,expandable:!0}),null):(0,i.bF)("div",{style:[T,`width: ${m}px; height: ${m}px;`].join(" ")},null)),(0,i.bF)("div",(0,i.v6)({class:M,style:y},k,{role:"cell"}),[O,S])};bd.inheritAttrs=!1;var yd=bd;const wd=(0,f.b_)({class:String,columns:vc,columnsStyles:{type:(0,f.jq)(Object),required:!0},headerIndex:Number,style:{type:(0,f.jq)(Object)}}),Rd=(0,i.pM)({name:"ElTableV2HeaderRow",props:wd,setup(e,{slots:t}){return()=>{const{columns:n,columnsStyles:r,headerIndex:o,style:a}=e;let l=n.map((e,a)=>t.cell({columns:n,column:e,columnIndex:a,headerIndex:o,style:r[e.key]}));return t.header&&(l=t.header({cells:l.map(e=>(0,u.cy)(e)&&1===e.length?e[0]:e),columns:n,headerIndex:o})),(0,i.bF)("div",{class:e.class,style:a,role:"row"},[l])}}});var Cd=Rd;function xd(e){return"function"===typeof e||"[object Object]"===Object.prototype.toString.call(e)&&!(0,i.vv)(e)}const kd=({columns:e,columnsStyles:t,headerIndex:n,style:r,headerClass:o,headerProps:a,ns:l},{slots:s})=>{const u={columns:e,headerIndex:n},c=[l.e("header-row"),lc(o,u,""),l.is("customized",Boolean(s.header))],d={...lc(a,u),columnsStyles:t,class:c,columns:e,headerIndex:n,style:r};return(0,i.bF)(Cd,d,xd(s)?s:{default:()=>[s]})};var Ed=kd;const _d=(e,{slots:t})=>(0,i.RG)(t,"default",e,()=>{var t,n;return[(0,i.bF)("div",{class:e.class,title:null==(t=e.column)?void 0:t.title},[null==(n=e.column)?void 0:n.title])]});_d.displayName="ElTableV2HeaderCell",_d.inheritAttrs=!1;var Sd=_d;const Md=e=>{const{sortOrder:t}=e;return(0,i.bF)(W.tk,{size:14,class:e.class},{default:()=>[t===Gu.ASC?(0,i.bF)(O.SortUp,null,null):(0,i.bF)(O.SortDown,null,null)]})};var Ld=Md;const Ad=(e,{slots:t})=>{const{column:n,ns:r,style:o,onColumnSorted:a}=e,l=ic(o);if(n.placeholderSign===Zu)return(0,i.bF)("div",{class:r.em("header-row-cell","placeholder"),style:l},null);const{headerCellRenderer:s,headerClass:u,sortable:c}=n,d={...e,class:r.e("header-cell-text")},f=sc(s),p=f?f(d):(0,i.RG)(t,"default",d,()=>[(0,i.bF)(Sd,d,null)]),{sortBy:v,sortState:h,headerCellProps:m}=e;let g,b;if(h){const e=h[n.key];g=Boolean(Qu[e]),b=g?e:Gu.ASC}else g=n.key===v.key,b=g?v.order:Gu.ASC;const y=[r.e("header-cell"),lc(u,e,""),n.align===qu.CENTER&&r.is("align-center"),n.align===qu.RIGHT&&r.is("align-right"),c&&r.is("sortable")],w={...lc(m,e),onClick:n.sortable?a:void 0,class:y,style:l,["data-key"]:n.key};return(0,i.bF)("div",(0,i.v6)(w,{role:"columnheader"}),[p,c&&(0,i.bF)(Ld,{class:[r.e("sort-icon"),g&&r.is("sorting")],sortOrder:b},null)])};var Od=Ad;const Td=(e,{slots:t})=>{var n;return(0,i.bF)("div",{class:e.class,style:e.style},[null==(n=t.default)?void 0:n.call(t)])};Td.displayName="ElTableV2Footer";var Id=Td;const Nd=(e,{slots:t})=>{const n=(0,i.RG)(t,"default",{},()=>[(0,i.bF)(tl,null,null)]);return(0,i.bF)("div",{class:e.class,style:e.style},[n])};Nd.displayName="ElTableV2Empty";var Wd=Nd;const Dd=(e,{slots:t})=>{var n;return(0,i.bF)("div",{class:e.class,style:e.style},[null==(n=t.default)?void 0:n.call(t)])};Dd.displayName="ElTableV2Overlay";var Pd=Dd;function Fd(e){return"function"===typeof e||"[object Object]"===Object.prototype.toString.call(e)&&!(0,i.vv)(e)}const Bd="ElTableV2",zd=(0,i.pM)({name:Bd,props:_c,setup(e,{slots:t,expose:n}){const r=(0,g.DU)("table-v2"),{columnsStyles:o,fixedColumnsOnLeft:a,fixedColumnsOnRight:l,mainColumns:u,mainTableHeight:c,fixedTableHeight:d,leftTableWidth:f,rightTableWidth:p,data:v,depthMap:h,expandedRowKeys:m,hasFixedColumns:b,mainTableRef:y,leftTableRef:w,rightTableRef:R,isDynamic:C,isResetting:x,isScrolling:k,bodyWidth:E,emptyStyle:_,rootStyle:S,footerHeight:M,showEmpty:L,scrollTo:A,scrollToLeft:O,scrollToTop:T,scrollToRow:I,getRowHeight:N,onColumnSorted:W,onRowHeightChange:D,onRowHovered:P,onRowExpanded:F,onRowsRendered:B,onScroll:z,onVerticalScroll:$}=cc(e);return n({scrollTo:A,scrollToLeft:O,scrollToTop:T,scrollToRow:I}),(0,i.Gt)(dc,{ns:r,isResetting:x,isScrolling:k}),()=>{const{cache:n,cellProps:g,estimatedRowHeight:x,expandColumnKey:k,fixedData:A,headerHeight:O,headerClass:T,headerProps:I,headerCellProps:V,sortBy:j,sortState:K,rowHeight:H,rowClass:X,rowEventHandlers:U,rowKey:G,rowProps:q,scrollbarAlwaysOn:Y,indentSize:Q,iconSize:Z,useIsScrolling:J,vScrollbarSize:ee,width:te}=e,ne=(0,s.R1)(v),re={cache:n,class:r.e("main"),columns:(0,s.R1)(u),data:ne,fixedData:A,estimatedRowHeight:x,bodyWidth:(0,s.R1)(E),headerHeight:O,headerWidth:(0,s.R1)(E),height:(0,s.R1)(c),mainTableRef:y,rowKey:G,rowHeight:H,scrollbarAlwaysOn:Y,scrollbarStartGap:2,scrollbarEndGap:ee,useIsScrolling:J,width:te,getRowHeight:N,onRowsRendered:B,onScroll:z},oe=(0,s.R1)(f),ae=(0,s.R1)(d),le={cache:n,class:r.e("left"),columns:(0,s.R1)(a),data:ne,fixedData:A,estimatedRowHeight:x,leftTableRef:w,rowHeight:H,bodyWidth:oe,headerWidth:oe,headerHeight:O,height:ae,rowKey:G,scrollbarAlwaysOn:Y,scrollbarStartGap:2,scrollbarEndGap:ee,useIsScrolling:J,width:oe,getRowHeight:N,onScroll:$},ie=(0,s.R1)(p),se={cache:n,class:r.e("right"),columns:(0,s.R1)(l),data:ne,fixedData:A,estimatedRowHeight:x,rightTableRef:R,rowHeight:H,bodyWidth:ie,headerWidth:ie,headerHeight:O,height:ae,rowKey:G,scrollbarAlwaysOn:Y,scrollbarStartGap:2,scrollbarEndGap:ee,width:ie,style:`${r.cssVarName("table-scrollbar-size")}: ${ee}px`,useIsScrolling:J,getRowHeight:N,onScroll:$},ue=(0,s.R1)(o),ce={ns:r,depthMap:(0,s.R1)(h),columnsStyles:ue,expandColumnKey:k,expandedRowKeys:(0,s.R1)(m),estimatedRowHeight:x,hasFixedColumns:(0,s.R1)(b),rowProps:q,rowClass:X,rowKey:G,rowEventHandlers:U,onRowHovered:P,onRowExpanded:F,onRowHeightChange:D},de={cellProps:g,expandColumnKey:k,indentSize:Q,iconSize:Z,rowKey:G,expandedRowKeys:(0,s.R1)(m),ns:r},fe={ns:r,headerClass:T,headerProps:I,columnsStyles:ue},pe={ns:r,sortBy:j,sortState:K,headerCellProps:V,onColumnSorted:W},ve={row:e=>(0,i.bF)(pd,(0,i.v6)(e,ce),{row:t.row,cell:e=>{let n;return t.cell?(0,i.bF)(yd,(0,i.v6)(e,de,{style:ue[e.column.key]}),Fd(n=t.cell(e))?n:{default:()=>[n]}):(0,i.bF)(yd,(0,i.v6)(e,de,{style:ue[e.column.key]}),null)}}),header:e=>(0,i.bF)(Ed,(0,i.v6)(e,fe),{header:t.header,cell:e=>{let n;return t["header-cell"]?(0,i.bF)(Od,(0,i.v6)(e,pe,{style:ue[e.column.key]}),Fd(n=t["header-cell"](e))?n:{default:()=>[n]}):(0,i.bF)(Od,(0,i.v6)(e,pe,{style:ue[e.column.key]}),null)}})},he=[e.class,r.b(),r.e("root"),r.is("dynamic",(0,s.R1)(C))],me={class:r.e("footer"),style:(0,s.R1)(M)};return(0,i.bF)("div",{class:he,style:(0,s.R1)(S)},[(0,i.bF)(ed,re,Fd(ve)?ve:{default:()=>[ve]}),(0,i.bF)(rd,le,Fd(ve)?ve:{default:()=>[ve]}),(0,i.bF)(ld,se,Fd(ve)?ve:{default:()=>[ve]}),t.footer&&(0,i.bF)(Id,me,{default:t.footer}),(0,s.R1)(L)&&(0,i.bF)(Wd,{class:r.e("empty"),style:(0,s.R1)(_)},{default:t.empty}),t.overlay&&(0,i.bF)(Pd,{class:r.e("overlay")},{default:t.overlay})])}}});var $d=zd;const Vd=(0,f.b_)({disableWidth:Boolean,disableHeight:Boolean,onResize:{type:(0,f.jq)(Function)}}),jd=e=>{const t=(0,s.KR)(),n=(0,s.KR)(0),r=(0,s.KR)(0);let o;return(0,i.sV)(()=>{o=(0,c.wYm)(t,([e])=>{const{width:t,height:o}=e.contentRect,{paddingLeft:a,paddingRight:l,paddingTop:i,paddingBottom:s}=getComputedStyle(e.target),u=Number.parseInt(a)||0,c=Number.parseInt(l)||0,d=Number.parseInt(i)||0,f=Number.parseInt(s)||0;n.value=t-u-c,r.value=o-d-f}).stop}),(0,i.xo)(()=>{null==o||o()}),(0,i.wB)([n,r],([t,n])=>{var r;null==(r=e.onResize)||r.call(e,{width:t,height:n})}),{sizer:t,width:n,height:r}},Kd=(0,i.pM)({name:"ElAutoResizer",props:Vd,setup(e,{slots:t}){const n=(0,g.DU)("auto-resizer"),{height:r,width:o,sizer:a}=jd(e),l={width:"100%",height:"100%"};return()=>{var e;return(0,i.bF)("div",{ref:a,class:n.b(),style:l},[null==(e=t.default)?void 0:e.call(t,{height:r.value,width:o.value})])}}});var Hd=Kd;const Xd=(0,E.GU)($d),Ud=(0,E.GU)(Hd);var Gd=n(4275),qd=n(74253),Yd=n(20037),Qd=n(65070),Zd=n(31158);function Jd(e){return e!==e}var ef=Jd;function tf(e,t,n){var r=n-1,o=e.length;while(++r-1}var lf=af;function sf(e,t,n){var r=-1,o=null==e?0:e.length;while(++r=bf){var u=t?null:gf(e);if(u)return(0,vf.A)(u);l=!1,o=cf.A,s=new Qd.A}else s=t?[]:i;e:while(++r{const n=[];for(let r=e;r<=t;r++)n.push(r);return n},{t:o,lang:a}=(0,Ie.Ym)(),l=(0,g.DU)("time"),c=(0,g.DU)("picker"),d=(0,i.WQ)(Po),{arrowControl:f,disabledHours:p,disabledMinutes:v,disabledSeconds:h,defaultValue:m}=d.props,b=(0,i.EW)(()=>[l.be("range-picker","body"),l.be("panel","content"),l.is("arrow",f),k.value?"has-seconds":""]),y=(0,i.EW)(()=>[l.be("range-picker","body"),l.be("panel","content"),l.is("arrow",f),k.value?"has-seconds":""]),w=(0,i.EW)(()=>n.parsedValue[0]),R=(0,i.EW)(()=>n.parsedValue[1]),C=Go(n),x=()=>{const e=C.value;t("pick",e,!1),(0,i.dY)(()=>{C.value=e})},k=(0,i.EW)(()=>n.format.includes("ss")),E=(0,i.EW)(()=>n.format.includes("A")?"A":n.format.includes("a")?"a":""),_=(e=!1)=>{t("pick",[w.value,R.value],e)},S=e=>{A(e.millisecond(0),R.value)},M=e=>{A(w.value,e.millisecond(0))},L=e=>{const t=e.map(e=>ve(e).locale(a.value)),n=$(t);return t[0].isSame(n[0])&&t[1].isSame(n[1])},A=(e,r)=>{n.visible&&t("pick",[e,r],!0)},O=(0,i.EW)(()=>w.value>R.value),T=(0,s.KR)([0,2]),I=(e,n)=>{t("select-range",e,n,"min"),T.value=[e,n]},N=(0,i.EW)(()=>k.value?11:8),W=(e,n)=>{t("select-range",e,n,"max");const r=(0,s.R1)(N);T.value=[e+r,n+r]},D=e=>{const t=k.value?[0,3,6,11,14,17]:[0,3,8,11],n=["hours","minutes"].concat(k.value?["seconds"]:[]),r=t.indexOf(T.value[0]),o=(r+e+t.length)%t.length,a=t.length/2;o{const t=(0,V.CG)(e),{left:n,right:r,up:o,down:a}=j.R;if([n,r].includes(t)){const r=t===n?-1:1;return D(r),void e.preventDefault()}if([o,a].includes(t)){const n=t===o?-1:1,r=T.value[0]{const n=p?p(e):[],o="start"===e,a=t||(o?R.value:w.value),l=a.hour(),i=o?r(l+1,23):r(0,l-1);return xf(n,i)},B=(e,t,n)=>{const o=v?v(e,t):[],a="start"===t,l=n||(a?R.value:w.value),i=l.hour();if(e!==i)return o;const s=l.minute(),u=a?r(s+1,59):r(0,s-1);return xf(o,u)},z=(e,t,n,o)=>{const a=h?h(e,t,n):[],l="start"===n,i=o||(l?R.value:w.value),s=i.hour(),u=i.minute();if(e!==s||t!==u)return a;const c=i.second(),d=l?r(c+1,59):r(0,c-1);return xf(a,d)},$=([e,t])=>[G(e,"start",!0,t),G(t,"end",!1,e)],{getAvailableHours:K,getAvailableMinutes:H,getAvailableSeconds:X}=Uo(F,B,z),{timePickerOptions:U,getAvailableTime:G,onSetOption:q}=Ko({getAvailableHours:K,getAvailableMinutes:H,getAvailableSeconds:X}),Y=e=>e?(0,u.cy)(e)?e.map(e=>ve(e,n.format).locale(a.value)):ve(e,n.format).locale(a.value):null,Q=()=>{if((0,u.cy)(m))return m.map(e=>ve(e).locale(a.value));const e=ve(m).locale(a.value);return[e,e.add(60,"m")]};return t("set-picker-option",["parseUserInput",Y]),t("set-picker-option",["isValidValue",L]),t("set-picker-option",["handleKeydownInput",P]),t("set-picker-option",["getDefaultValue",Q]),t("set-picker-option",["getRangeAvailableTime",$]),(e,t)=>e.actualVisible?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)([(0,s.R1)(l).b("range-picker"),(0,s.R1)(c).b("panel")])},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(l).be("range-picker","content"))},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(l).be("range-picker","cell"))},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(l).be("range-picker","header"))},(0,u.v_)((0,s.R1)(o)("el.datepicker.startTime")),3),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(b))},[(0,i.bF)(Zo,{ref:"minSpinner",role:"start","show-seconds":(0,s.R1)(k),"am-pm-mode":(0,s.R1)(E),"arrow-control":(0,s.R1)(f),"spinner-date":(0,s.R1)(w),"disabled-hours":F,"disabled-minutes":B,"disabled-seconds":z,onChange:S,onSetOption:(0,s.R1)(q),onSelectRange:I},null,8,["show-seconds","am-pm-mode","arrow-control","spinner-date","onSetOption"])],2)],2),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(l).be("range-picker","cell"))},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(l).be("range-picker","header"))},(0,u.v_)((0,s.R1)(o)("el.datepicker.endTime")),3),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(y))},[(0,i.bF)(Zo,{ref:"maxSpinner",role:"end","show-seconds":(0,s.R1)(k),"am-pm-mode":(0,s.R1)(E),"arrow-control":(0,s.R1)(f),"spinner-date":(0,s.R1)(R),"disabled-hours":F,"disabled-minutes":B,"disabled-seconds":z,onChange:M,onSetOption:(0,s.R1)(q),onSelectRange:W},null,8,["show-seconds","am-pm-mode","arrow-control","spinner-date","onSetOption"])],2)],2)],2),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(l).be("panel","footer"))},[(0,i.Lk)("button",{type:"button",class:(0,u.C4)([(0,s.R1)(l).be("panel","btn"),"cancel"]),onClick:e=>x()},(0,u.v_)((0,s.R1)(o)("el.datepicker.cancel")),11,["onClick"]),(0,i.Lk)("button",{type:"button",class:(0,u.C4)([(0,s.R1)(l).be("panel","btn"),"confirm"]),disabled:(0,s.R1)(O),onClick:e=>_()},(0,u.v_)((0,s.R1)(o)("el.datepicker.confirm")),11,["disabled","onClick"])],2)],2)):(0,i.Q3)("v-if",!0)}});var _f=(0,m.A)(Ef,[["__file","panel-time-range.vue"]]);ve.extend(Gr);var Sf=(0,i.pM)({name:"ElTimePicker",install:null,props:{...Aa,isRange:Boolean},emits:[d.l4],setup(e,t){const n=(0,s.KR)(),[r,o]=e.isRange?["timerange",_f]:["time",ea],a=e=>t.emit(d.l4,e);return(0,i.Gt)(Fo,e.popperOptions),t.expose({focus:()=>{var e;null==(e=n.value)||e.focus()},blur:()=>{var e;null==(e=n.value)||e.blur()},handleOpen:()=>{var e;null==(e=n.value)||e.handleOpen()},handleClose:()=>{var e;null==(e=n.value)||e.handleClose()}}),()=>{var t;const l=null!=(t=e.format)?t:zo;return(0,i.bF)(Ba,(0,i.v6)(e,{ref:n,type:r,format:l,"onUpdate:modelValue":a}),{default:e=>(0,i.bF)(o,e,null)})}}});const Mf=(0,E.GU)(Sf),Lf=(0,f.b_)({format:{type:String,default:"HH:mm"},modelValue:{type:(0,f.jq)(String)},disabled:{type:Boolean,default:void 0},editable:{type:Boolean,default:!0},effect:{type:(0,f.jq)(String),default:"light"},clearable:{type:Boolean,default:!0},size:nn.mU,placeholder:String,start:{type:String,default:"09:00"},end:{type:String,default:"18:00"},step:{type:String,default:"00:30"},minTime:{type:(0,f.jq)(String)},maxTime:{type:(0,f.jq)(String)},includeEndTime:Boolean,name:String,prefixIcon:{type:(0,f.jq)([String,Object]),default:()=>O.Clock},clearIcon:{type:(0,f.jq)([String,Object]),default:()=>O.CircleClose},popperClass:{type:String,default:""},popperStyle:{type:(0,f.jq)([String,Object])},...rn.bs}),Af=e=>{const t=(e||"").split(":");if(t.length>=2){let n=Number.parseInt(t[0],10);const r=Number.parseInt(t[1],10),o=e.toUpperCase();return o.includes("AM")&&12===n?n=0:o.includes("PM")&&12!==n&&(n+=12),{hours:n,minutes:r}}return null},Of=(e,t)=>{const n=Af(e);if(!n)return-1;const r=Af(t);if(!r)return-1;const o=n.minutes+60*n.hours,a=r.minutes+60*r.hours;return o===a?0:o>a?1:-1},Tf=e=>`${e}`.padStart(2,"0"),If=e=>`${Tf(e.hours)}:${Tf(e.minutes)}`,Nf=(e,t)=>{const n=Af(e);if(!n)return"";const r=Af(t);if(!r)return"";const o={hours:n.hours,minutes:n.minutes};return o.minutes+=r.minutes,o.hours+=r.hours,o.hours+=Math.floor(o.minutes/60),o.minutes=o.minutes%60,If(o)},Wf=(0,i.pM)({name:"ElTimeSelect"}),Df=(0,i.pM)({...Wf,props:Lf,emits:[d.YU,"blur","focus","clear",d.l4],setup(e,{expose:t}){const n=e;ve.extend(Gr);const{Option:r}=Hi.AV,o=(0,g.DU)("input"),a=(0,s.KR)(),l=(0,z.CB)(),{lang:c}=(0,Ie.Ym)(),f=(0,i.EW)(()=>n.modelValue),p=(0,i.EW)(()=>{const e=Af(n.start);return e?If(e):null}),v=(0,i.EW)(()=>{const e=Af(n.end);return e?If(e):null}),h=(0,i.EW)(()=>{const e=Af(n.step);return e?If(e):null}),m=(0,i.EW)(()=>{const e=Af(n.minTime||"");return e?If(e):null}),b=(0,i.EW)(()=>{const e=Af(n.maxTime||"");return e?If(e):null}),y=(0,i.EW)(()=>{var e;const t=[],r=(e,n)=>{t.push({value:e,disabled:Of(n,m.value||"-1:-1")<=0||Of(n,b.value||"100:100")>=0})};if(n.start&&n.end&&n.step){let o,a=p.value;while(a&&v.value&&Of(a,v.value)<=0)o=ve(a,"HH:mm").locale(c.value).format(n.format),r(o,a),a=Nf(a,h.value);if(n.includeEndTime&&v.value&&(null==(e=t[t.length-1])?void 0:e.value)!==v.value){const e=ve(v.value,"HH:mm").locale(c.value).format(n.format);r(e,v.value)}}return t}),w=()=>{var e,t;null==(t=null==(e=a.value)?void 0:e.blur)||t.call(e)},R=()=>{var e,t;null==(t=null==(e=a.value)?void 0:e.focus)||t.call(e)};return t({blur:w,focus:R}),(e,t)=>((0,i.uX)(),(0,i.Wv)((0,s.R1)(Hi.AV),{ref_key:"select",ref:a,"model-value":(0,s.R1)(f),disabled:(0,s.R1)(l),clearable:e.clearable,"clear-icon":e.clearIcon,size:e.size,effect:e.effect,placeholder:e.placeholder,"default-first-option":"",filterable:e.editable,"empty-values":e.emptyValues,"value-on-clear":e.valueOnClear,"popper-class":e.popperClass,"popper-style":e.popperStyle,"onUpdate:modelValue":t=>e.$emit((0,s.R1)(d.l4),t),onChange:t=>e.$emit((0,s.R1)(d.YU),t),onBlur:t=>e.$emit("blur",t),onFocus:t=>e.$emit("focus",t),onClear:()=>e.$emit("clear")},{prefix:(0,i.k6)(()=>[e.prefixIcon?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:0,class:(0,u.C4)((0,s.R1)(o).e("prefix-icon"))},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)(e.prefixIcon)))]),_:1},8,["class"])):(0,i.Q3)("v-if",!0)]),default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(y),e=>((0,i.uX)(),(0,i.Wv)((0,s.R1)(r),{key:e.value,label:e.value,value:e.value,disabled:e.disabled},null,8,["label","value","disabled"]))),128))]),_:1},8,["model-value","disabled","clearable","clear-icon","size","effect","placeholder","filterable","empty-values","value-on-clear","popper-class","popper-style","onUpdate:modelValue","onChange","onBlur","onFocus","onClear"]))}});var Pf=(0,m.A)(Df,[["__file","time-select.vue"]]);const Ff=(0,E.GU)(Pf),Bf="timeline",zf=(0,i.pM)({name:"ElTimeline",props:{reverse:Boolean},setup(e,{slots:t}){const n=(0,g.DU)("timeline");return(0,i.Gt)(Bf,t),()=>{var r,o;const a=(0,nt.CW)(null!=(o=null==(r=t.default)?void 0:r.call(t))?o:[]).filter(e=>{var t;return"ElTimelineItem"===(null==(t=null==e?void 0:e.type)?void 0:t.name)});return(0,i.h)("ul",{class:[n.b()]},e.reverse?a.reverse():a)}}}),$f=(0,f.b_)({timestamp:{type:String,default:""},hideTimestamp:Boolean,center:Boolean,placement:{type:String,values:["top","bottom"],default:"bottom"},type:{type:String,values:["primary","success","warning","danger","info"],default:""},color:{type:String,default:""},size:{type:String,values:["normal","large"],default:"normal"},icon:{type:Y.Ze},hollow:Boolean}),Vf=(0,i.pM)({name:"ElTimelineItem"}),jf=(0,i.pM)({...Vf,props:$f,setup(e){const t=e,n=(0,g.DU)("timeline-item"),r=(0,i.EW)(()=>[n.e("node"),n.em("node",t.size||""),n.em("node",t.type||""),n.is("hollow",t.hollow)]);return(e,t)=>((0,i.uX)(),(0,i.CE)("li",{class:(0,u.C4)([(0,s.R1)(n).b(),{[(0,s.R1)(n).e("center")]:e.center}])},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(n).e("tail"))},null,2),e.$slots.dot?(0,i.Q3)("v-if",!0):((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(r)),style:(0,u.Tr)({backgroundColor:e.color})},[e.icon?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:0,class:(0,u.C4)((0,s.R1)(n).e("icon"))},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)(e.icon)))]),_:1},8,["class"])):(0,i.Q3)("v-if",!0)],6)),e.$slots.dot?((0,i.uX)(),(0,i.CE)("div",{key:1,class:(0,u.C4)((0,s.R1)(n).e("dot"))},[(0,i.RG)(e.$slots,"dot")],2)):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(n).e("wrapper"))},[e.hideTimestamp||"top"!==e.placement?(0,i.Q3)("v-if",!0):((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)([(0,s.R1)(n).e("timestamp"),(0,s.R1)(n).is("top")])},(0,u.v_)(e.timestamp),3)),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(n).e("content"))},[(0,i.RG)(e.$slots,"default")],2),e.hideTimestamp||"bottom"!==e.placement?(0,i.Q3)("v-if",!0):((0,i.uX)(),(0,i.CE)("div",{key:1,class:(0,u.C4)([(0,s.R1)(n).e("timestamp"),(0,s.R1)(n).is("bottom")])},(0,u.v_)(e.timestamp),3))],2)],2))}});var Kf=(0,m.A)(jf,[["__file","timeline-item.vue"]]);const Hf=(0,E.GU)(zf,{TimelineItem:Kf}),Xf=(0,E.WM)(Kf),Uf="left-check-change",Gf="right-check-change",qf=(0,f.b_)({data:{type:(0,f.jq)(Array),default:()=>[]},titles:{type:(0,f.jq)(Array),default:()=>[]},buttonTexts:{type:(0,f.jq)(Array),default:()=>[]},filterPlaceholder:String,filterMethod:{type:(0,f.jq)(Function)},leftDefaultChecked:{type:(0,f.jq)(Array),default:()=>[]},rightDefaultChecked:{type:(0,f.jq)(Array),default:()=>[]},renderContent:{type:(0,f.jq)(Function)},modelValue:{type:(0,f.jq)(Array),default:()=>[]},format:{type:(0,f.jq)(Object),default:()=>({})},filterable:Boolean,props:{type:(0,f.jq)(Object),default:()=>(0,Cn.f)({label:"label",key:"key",disabled:"disabled"})},targetOrder:{type:String,values:["original","push","unshift"],default:"original"},validateEvent:{type:Boolean,default:!0}}),Yf=(e,t)=>[e,t].every(u.cy)||(0,u.cy)(e)&&(0,hr.A)(t),Qf={[d.YU]:(e,t,n)=>[e,n].every(u.cy)&&["left","right"].includes(t),[d.l4]:e=>(0,u.cy)(e),[Uf]:Yf,[Gf]:Yf},Zf="checked-change",Jf=(0,f.b_)({data:qf.data,optionRender:{type:(0,f.jq)(Function)},placeholder:String,title:String,filterable:Boolean,format:qf.format,filterMethod:qf.filterMethod,defaultChecked:qf.leftDefaultChecked,props:qf.props}),ep={[Zf]:Yf},tp=e=>{const t={label:"label",key:"key",disabled:"disabled"};return(0,i.EW)(()=>({...t,...e.props}))},np=(e,t,n)=>{const r=tp(e),o=(0,i.EW)(()=>e.data.filter(n=>{if((0,u.Tn)(e.filterMethod))return e.filterMethod(t.query,n);{const e=String(n[r.value.label]||n[r.value.key]);return e.toLowerCase().includes(t.query.toLowerCase())}})),a=(0,i.EW)(()=>o.value.filter(e=>!e[r.value.disabled])),l=(0,i.EW)(()=>{const n=t.checked.length,r=e.data.length,{noChecked:o,hasChecked:a}=e.format;return o&&a?n>0?a.replace(/\${checked}/g,n.toString()).replace(/\${total}/g,r.toString()):o.replace(/\${total}/g,r.toString()):`${n}/${r}`}),s=(0,i.EW)(()=>{const e=t.checked.length;return e>0&&e{const e=a.value.map(e=>e[r.value.key]);t.allChecked=e.length>0&&e.every(e=>t.checked.includes(e))},d=e=>{t.checked=e?a.value.map(e=>e[r.value.key]):[]};return(0,i.wB)(()=>t.checked,(e,r)=>{if(c(),t.checkChangeByUser){const t=e.concat(r).filter(t=>!e.includes(t)||!r.includes(t));n(Zf,e,t)}else n(Zf,e),t.checkChangeByUser=!0}),(0,i.wB)(a,()=>{c()}),(0,i.wB)(()=>e.data,()=>{const e=[],n=o.value.map(e=>e[r.value.key]);t.checked.forEach(t=>{n.includes(t)&&e.push(t)}),t.checkChangeByUser=!1,t.checked=e}),(0,i.wB)(()=>e.defaultChecked,(e,n)=>{if(n&&e.length===n.length&&e.every(e=>n.includes(e)))return;const o=[],l=a.value.map(e=>e[r.value.key]);e.forEach(e=>{l.includes(e)&&o.push(e)}),t.checkChangeByUser=!1,t.checked=o},{immediate:!0}),{filteredData:o,checkableData:a,checkedSummary:l,isIndeterminate:s,updateAllChecked:c,handleAllCheckedChange:d}},rp=(0,i.pM)({name:"ElTransferPanel"}),op=(0,i.pM)({...rp,props:Jf,emits:ep,setup(e,{expose:t,emit:n}){const r=e,o=(0,i.Ht)(),a=({option:e})=>e,{t:l}=(0,Ie.Ym)(),c=(0,g.DU)("transfer"),d=(0,s.Kh)({checked:[],allChecked:!1,query:"",checkChangeByUser:!0}),f=tp(r),{filteredData:v,checkedSummary:h,isIndeterminate:m,handleAllCheckedChange:b}=np(r,d,n),y=(0,i.EW)(()=>!(0,p.Im)(d.query)&&(0,p.Im)(v.value)),w=(0,i.EW)(()=>!(0,p.Im)(o.default()[0].children)),{checked:R,allChecked:C,query:x}=(0,s.QW)(d);return t({query:x}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)((0,s.R1)(c).b("panel"))},[(0,i.Lk)("p",{class:(0,u.C4)((0,s.R1)(c).be("panel","header"))},[(0,i.bF)((0,s.R1)(Ct.dI),{modelValue:(0,s.R1)(C),"onUpdate:modelValue":e=>(0,s.i9)(C)?C.value=e:null,indeterminate:(0,s.R1)(m),"validate-event":!1,onChange:(0,s.R1)(b)},{default:(0,i.k6)(()=>[(0,i.eW)((0,u.v_)(e.title)+" ",1),(0,i.Lk)("span",null,(0,u.v_)((0,s.R1)(h)),1)]),_:1},8,["modelValue","onUpdate:modelValue","indeterminate","onChange"])],2),(0,i.Lk)("div",{class:(0,u.C4)([(0,s.R1)(c).be("panel","body"),(0,s.R1)(c).is("with-footer",(0,s.R1)(w))])},[e.filterable?((0,i.uX)(),(0,i.Wv)((0,s.R1)(T.WK),{key:0,modelValue:(0,s.R1)(x),"onUpdate:modelValue":e=>(0,s.i9)(x)?x.value=e:null,class:(0,u.C4)((0,s.R1)(c).be("panel","filter")),size:"default",placeholder:e.placeholder,"prefix-icon":(0,s.R1)(O.Search),clearable:"","validate-event":!1},null,8,["modelValue","onUpdate:modelValue","class","placeholder","prefix-icon"])):(0,i.Q3)("v-if",!0),(0,i.bo)((0,i.bF)((0,s.R1)(Ct.o5),{modelValue:(0,s.R1)(R),"onUpdate:modelValue":e=>(0,s.i9)(R)?R.value=e:null,"validate-event":!1,class:(0,u.C4)([(0,s.R1)(c).is("filterable",e.filterable),(0,s.R1)(c).be("panel","list")])},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(v),t=>((0,i.uX)(),(0,i.Wv)((0,s.R1)(Ct.dI),{key:t[(0,s.R1)(f).key],class:(0,u.C4)((0,s.R1)(c).be("panel","item")),value:t[(0,s.R1)(f).key],disabled:t[(0,s.R1)(f).disabled],"validate-event":!1},{default:(0,i.k6)(()=>{var n;return[(0,i.bF)(a,{option:null==(n=e.optionRender)?void 0:n.call(e,t)},null,8,["option"])]}),_:2},1032,["class","value","disabled"]))),128))]),_:1},8,["modelValue","onUpdate:modelValue","class"]),[[M.aG,!(0,s.R1)(y)&&!(0,s.R1)(p.Im)(e.data)]]),(0,i.bo)((0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(c).be("panel","empty"))},[(0,i.RG)(e.$slots,"empty",{},()=>[(0,i.eW)((0,u.v_)((0,s.R1)(y)?(0,s.R1)(l)("el.transfer.noMatch"):(0,s.R1)(l)("el.transfer.noData")),1)])],2),[[M.aG,(0,s.R1)(y)||(0,s.R1)(p.Im)(e.data)]])],2),(0,s.R1)(w)?((0,i.uX)(),(0,i.CE)("p",{key:0,class:(0,u.C4)((0,s.R1)(c).be("panel","footer"))},[(0,i.RG)(e.$slots,"default")],2)):(0,i.Q3)("v-if",!0)],2))}});var ap=(0,m.A)(op,[["__file","transfer-panel.vue"]]);const lp=e=>{const t=tp(e),n=(0,i.EW)(()=>e.data.reduce((e,n)=>(e[n[t.value.key]]=n)&&e,{})),r=(0,i.EW)(()=>e.data.filter(n=>!e.modelValue.includes(n[t.value.key]))),o=(0,i.EW)(()=>"original"===e.targetOrder?e.data.filter(n=>e.modelValue.includes(n[t.value.key])):e.modelValue.reduce((e,t)=>{const r=n.value[t];return r&&e.push(r),e},[]));return{sourceData:r,targetData:o}},ip=(e,t,n)=>{const r=tp(e),o=(e,t,r)=>{n(d.l4,e),n(d.YU,e,t,r)},a=()=>{const n=e.modelValue.slice();t.rightChecked.forEach(e=>{const t=n.indexOf(e);t>-1&&n.splice(t,1)}),o(n,"left",t.rightChecked)},l=()=>{let n=e.modelValue.slice();const a=e.data.filter(n=>{const o=n[r.value.key];return t.leftChecked.includes(o)&&!e.modelValue.includes(o)}).map(e=>e[r.value.key]);n="unshift"===e.targetOrder?a.concat(n):n.concat(a),"original"===e.targetOrder&&(n=e.data.filter(e=>n.includes(e[r.value.key])).map(e=>e[r.value.key])),o(n,"right",t.leftChecked)};return{addToLeft:a,addToRight:l}},sp=(e,t)=>{const n=(n,r)=>{e.leftChecked=n,r&&t(Uf,n,r)},r=(n,r)=>{e.rightChecked=n,r&&t(Gf,n,r)};return{onSourceCheckedChange:n,onTargetCheckedChange:r}},up=(0,i.pM)({name:"ElTransfer"}),cp=(0,i.pM)({...up,props:qf,emits:Qf,setup(e,{expose:t,emit:n}){const r=e,o=(0,i.Ht)(),{t:a}=(0,Ie.Ym)(),l=(0,g.DU)("transfer"),{formItem:c}=(0,un.j)(),d=(0,s.Kh)({leftChecked:[],rightChecked:[]}),f=tp(r),{sourceData:v,targetData:h}=lp(r),{onSourceCheckedChange:m,onTargetCheckedChange:b}=sp(d,n),{addToLeft:y,addToRight:R}=ip(r,d,n),C=(0,s.KR)(),x=(0,s.KR)(),k=e=>{switch(e){case"left":C.value.query="";break;case"right":x.value.query="";break}},E=(0,i.EW)(()=>2===r.buttonTexts.length),_=(0,i.EW)(()=>r.titles[0]||a("el.transfer.titles.0")),S=(0,i.EW)(()=>r.titles[1]||a("el.transfer.titles.1")),M=(0,i.EW)(()=>r.filterPlaceholder||a("el.transfer.filterPlaceholder"));(0,i.wB)(()=>r.modelValue,()=>{var e;r.validateEvent&&(null==(e=null==c?void 0:c.validate)||e.call(c,"change").catch(e=>(0,w.U)(e)))});const L=(0,i.EW)(()=>e=>{var t;if(r.renderContent)return r.renderContent(i.h,e);const n=((null==(t=o.default)?void 0:t.call(o,{option:e}))||[]).filter(e=>e.type!==i.Mw);return n.length?n:(0,i.h)("span",e[f.value.label]||e[f.value.key])});return t({clearQuery:k,leftPanel:C,rightPanel:x}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)((0,s.R1)(l).b())},[(0,i.bF)(ap,{ref_key:"leftPanel",ref:C,data:(0,s.R1)(v),"option-render":(0,s.R1)(L),placeholder:(0,s.R1)(M),title:(0,s.R1)(_),filterable:e.filterable,format:e.format,"filter-method":e.filterMethod,"default-checked":e.leftDefaultChecked,props:r.props,onCheckedChange:(0,s.R1)(m)},{empty:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"left-empty")]),default:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"left-footer")]),_:3},8,["data","option-render","placeholder","title","filterable","format","filter-method","default-checked","props","onCheckedChange"]),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(l).e("buttons"))},[(0,i.bF)((0,s.R1)(pe.S2),{type:"primary",class:(0,u.C4)([(0,s.R1)(l).e("button"),(0,s.R1)(l).is("with-texts",(0,s.R1)(E))]),disabled:(0,s.R1)(p.Im)(d.rightChecked),onClick:(0,s.R1)(y)},{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.ArrowLeft))]),_:1}),(0,s.R1)(p.b0)(e.buttonTexts[0])?(0,i.Q3)("v-if",!0):((0,i.uX)(),(0,i.CE)("span",{key:0},(0,u.v_)(e.buttonTexts[0]),1))]),_:1},8,["class","disabled","onClick"]),(0,i.bF)((0,s.R1)(pe.S2),{type:"primary",class:(0,u.C4)([(0,s.R1)(l).e("button"),(0,s.R1)(l).is("with-texts",(0,s.R1)(E))]),disabled:(0,s.R1)(p.Im)(d.leftChecked),onClick:(0,s.R1)(R)},{default:(0,i.k6)(()=>[(0,s.R1)(p.b0)(e.buttonTexts[1])?(0,i.Q3)("v-if",!0):((0,i.uX)(),(0,i.CE)("span",{key:0},(0,u.v_)(e.buttonTexts[1]),1)),(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.ArrowRight))]),_:1})]),_:1},8,["class","disabled","onClick"])],2),(0,i.bF)(ap,{ref_key:"rightPanel",ref:x,data:(0,s.R1)(h),"option-render":(0,s.R1)(L),placeholder:(0,s.R1)(M),filterable:e.filterable,format:e.format,"filter-method":e.filterMethod,title:(0,s.R1)(S),"default-checked":e.rightDefaultChecked,props:r.props,onCheckedChange:(0,s.R1)(b)},{empty:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"right-empty")]),default:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"right-footer")]),_:3},8,["data","option-render","placeholder","filterable","format","filter-method","title","default-checked","props","onCheckedChange"])],2))}});var dp=(0,m.A)(cp,[["__file","transfer.vue"]]);const fp=(0,E.GU)(dp);var pp=n(31802);const vp=(e,{attrs:t,emit:n},{select:r,tree:o,key:a})=>{const l=(0,g.DU)("tree-select");(0,i.wB)(()=>e.data,()=>{e.filterable&&(0,i.dY)(()=>{var e,t;null==(t=o.value)||t.filter(null==(e=r.value)?void 0:e.states.inputValue)})},{flush:"post"});const u=e=>{var t;const n=e.at(-1);if(!n.expanded||!n.childNodes.at(-1)){const n=null==(t=o.value.el$)?void 0:t.querySelector(`[data-key="${e.at(-1).key}"]`);return void(null==n||n.focus({preventScroll:!0}))}u([n.childNodes.at(-1)])};(0,i.sV)(()=>{(0,c.MLh)(()=>{var e;return null==(e=r.value)?void 0:e.$el},"keydown",async e=>{const t=(0,V.CG)(e),{dropdownMenuVisible:n}=r.value;[j.R.down,j.R.up].includes(t)&&n&&(await(0,i.dY)(),setTimeout(()=>{var e,n,a;if(j.R.up===t){const e=o.value.store.root.childNodes;return void u(e)}null==(a=null==(n=null==(e=r.value.optionsArray[r.value.states.hoveringIndex].$el)?void 0:e.parentNode)?void 0:n.parentNode)||a.focus({preventScroll:!0})}))},{capture:!0})});const f={...(0,L.A)((0,s.QW)(e),Object.keys(Hi.AV.props)),...t,class:(0,i.EW)(()=>t.class),style:(0,i.EW)(()=>t.style),"onUpdate:modelValue":e=>n(d.l4,e),valueKey:a,popperClass:(0,i.EW)(()=>{const t=[l.e("popper")];return e.popperClass&&t.push(e.popperClass),t.join(" ")}),filterMethod:(t="")=>{var n;e.filterMethod?e.filterMethod(t):e.remoteMethod?e.remoteMethod(t):null==(n=o.value)||n.filter(t)}};return f},hp=(0,i.pM)({extends:Hi.P9,setup(e,t){const n=Hi.P9.setup(e,t);delete n.selectOptionClick;const r=(0,i.nI)().proxy;return(0,i.dY)(()=>{n.select.states.cachedOptions.get(r.value)||n.select.onOptionCreate(r)}),(0,i.wB)(()=>t.attrs.visible,e=>{(0,i.dY)(()=>{n.states.visible=e})},{immediate:!0}),n},methods:{selectOptionClick(){this.$el.parentElement.click()}}});function mp(e){return e||0===e}function gp(e){return(0,u.cy)(e)&&e.length}function bp(e){return(0,u.cy)(e)?e:mp(e)?[e]:[]}function yp(e,t,n,r,o){for(let a=0;a{(0,i.wB)([()=>e.modelValue,a],()=>{e.showCheckbox&&(0,i.dY)(()=>{const t=a.value;t&&!(0,gt.A)(t.getCheckedKeys(),bp(e.modelValue))&&t.setCheckedKeys(bp(e.modelValue))})},{immediate:!0,deep:!0});const c=(0,i.EW)(()=>({value:l.value,label:"label",children:"children",disabled:"disabled",isLeaf:"isLeaf",...e.props})),f=(e,t)=>{var n;const r=c.value[e];return(0,u.Tn)(r)?r(t,null==(n=a.value)?void 0:n.getNode(f("value",t))):t[r]},v=bp(e.modelValue).map(t=>yp(e.data||[],e=>f("value",e)===t,e=>f("children",e),(e,t,n,r)=>r&&f("value",r))).filter(e=>mp(e)),h=(0,i.EW)(()=>{if(!e.renderAfterExpand&&!e.lazy)return[];const t=[];return wp(e.data.concat(e.cacheData),e=>{const n=f("value",e);t.push({value:n,currentLabel:f("label",e),isDisabled:f("disabled",e)})},e=>f("children",e)),t}),m=()=>{var e;return null==(e=a.value)?void 0:e.getCheckedKeys().filter(e=>{var t;const n=null==(t=a.value)?void 0:t.getNode(e);return!(0,hr.A)(n)&&(0,p.Im)(n.childNodes)})};return{...(0,L.A)((0,s.QW)(e),Object.keys(pp.qk.props)),...t,nodeKey:l,expandOnClickNode:(0,i.EW)(()=>!e.checkStrictly&&e.expandOnClickNode),defaultExpandedKeys:(0,i.EW)(()=>e.defaultExpandedKeys?e.defaultExpandedKeys.concat(v):v),renderContent:(t,{node:r,data:o,store:a})=>t(hp,{value:f("value",o),label:f("label",o),disabled:f("disabled",o),visible:r.visible},e.renderContent?()=>e.renderContent(t,{node:r,data:o,store:a}):n.default?()=>n.default({node:r,data:o,store:a}):void 0),filterNodeMethod:(t,n,r)=>{if(e.filterNodeMethod)return e.filterNodeMethod(t,n,r);if(!t)return!0;const o=new RegExp((0,qs.qr)(t),"i");return o.test(f("label",n)||"")},onNodeClick:(n,r,a)=>{var l,i,s;if(null==(l=t.onNodeClick)||l.call(t,n,r,a),!e.showCheckbox||!e.checkOnClickNode)if(e.showCheckbox||!e.checkStrictly&&!r.isLeaf)e.expandOnClickNode&&a.proxy.handleExpandIconClick();else if(!f("disabled",n)){const e=null==(i=o.value)?void 0:i.states.options.get(f("value",n));null==(s=o.value)||s.handleOptionSelect(e)}},onCheck:(n,l)=>{var s;if(!e.showCheckbox)return;const u=f("value",n),c={};wp([a.value.store.root],e=>c[e.key]=e,e=>e.childNodes);const p=l.checkedKeys,v=e.multiple?bp(e.modelValue).filter(e=>!(e in c)&&!p.includes(e)):[],h=v.concat(p);if(e.checkStrictly)r(d.l4,e.multiple?h:h.includes(u)?u:void 0);else if(e.multiple){const e=m();r(d.l4,v.concat(e))}else{const t=yp([n],e=>!gp(f("children",e))&&!f("disabled",e),e=>f("children",e)),o=t?f("value",t):void 0,a=mp(e.modelValue)&&!!yp([n],t=>f("value",t)===e.modelValue,e=>f("children",e));r(d.l4,o===e.modelValue||a?void 0:o)}(0,i.dY)(()=>{var r;const o=bp(e.modelValue);a.value.setCheckedKeys(o),null==(r=t.onCheck)||r.call(t,n,{checkedKeys:a.value.getCheckedKeys(),checkedNodes:a.value.getCheckedNodes(),halfCheckedKeys:a.value.getHalfCheckedKeys(),halfCheckedNodes:a.value.getHalfCheckedNodes()})}),null==(s=o.value)||s.focus()},onNodeExpand:(n,o,l)=>{var s;null==(s=t.onNodeExpand)||s.call(t,n,o,l),(0,i.dY)(()=>{if(!e.checkStrictly&&e.lazy&&e.multiple&&o.checked){const t={},n=a.value.getCheckedKeys();wp([a.value.store.root],e=>t[e.key]=e,e=>e.childNodes);const o=bp(e.modelValue).filter(e=>!(e in t)&&!n.includes(e)),l=m();r(d.l4,o.concat(l))}})},cacheOptions:h}};var Cp=n(4344),xp=(0,i.pM)({props:{data:{type:Array,default:()=>[]}},setup(e){const t=(0,i.WQ)(Cp.u);return(0,i.wB)(()=>e.data,()=>{var n;e.data.forEach(e=>{t.states.cachedOptions.has(e.value)||t.states.cachedOptions.set(e.value,e)});const r=(null==(n=t.selectRef)?void 0:n.querySelectorAll("input"))||[];A.oc&&!Array.from(r).includes(document.activeElement)&&t.setSelected()},{flush:"post",immediate:!0}),()=>{}}});const kp=(0,i.pM)({name:"ElTreeSelect",inheritAttrs:!1,props:{...Hi.AV.props,...pp.qk.props,cacheData:{type:Array,default:()=>[]}},setup(e,t){const{slots:n,expose:r}=t,o=(0,s.KR)(),a=(0,s.KR)(),l=(0,i.EW)(()=>e.nodeKey||e.valueKey||"value"),u=vp(e,t,{select:o,tree:a,key:l}),{cacheOptions:c,...d}=Rp(e,t,{select:o,tree:a,key:l}),f=(0,s.Kh)({});return r(f),(0,i.sV)(()=>{Object.assign(f,{...(0,L.A)(a.value,["filter","updateKeyChildren","getCheckedNodes","setCheckedNodes","getCheckedKeys","setCheckedKeys","setChecked","getHalfCheckedNodes","getHalfCheckedKeys","getCurrentKey","getCurrentNode","setCurrentKey","setCurrentNode","getNode","remove","append","insertBefore","insertAfter"]),...(0,L.A)(o.value,["focus","blur","selectedLabel"]),treeRef:a.value,selectRef:o.value})}),()=>(0,i.h)(Hi.AV,(0,s.Kh)({...u,ref:e=>o.value=e}),{...n,default:()=>[(0,i.h)(xp,{data:c.value}),(0,i.h)(pp.qk,(0,s.Kh)({...d,ref:e=>a.value=e}))]})}});var Ep=(0,m.A)(kp,[["__file","tree-select.vue"]]);const _p=(0,E.GU)(Ep),Sp=Symbol(),Mp={key:-1,level:-1,data:{}};var Lp=(e=>(e["KEY"]="id",e["LABEL"]="label",e["CHILDREN"]="children",e["DISABLED"]="disabled",e["CLASS"]="",e))(Lp||{}),Ap=(e=>(e["ADD"]="add",e["DELETE"]="delete",e))(Ap||{});const Op={type:Number,default:26},Tp=(0,f.b_)({data:{type:(0,f.jq)(Array),default:()=>(0,Cn.f)([])},emptyText:{type:String},height:{type:Number,default:200},props:{type:(0,f.jq)(Object),default:()=>(0,Cn.f)({children:"children",label:"label",disabled:"disabled",value:"id",class:""})},highlightCurrent:Boolean,showCheckbox:Boolean,defaultCheckedKeys:{type:(0,f.jq)(Array),default:()=>(0,Cn.f)([])},checkStrictly:Boolean,defaultExpandedKeys:{type:(0,f.jq)(Array),default:()=>(0,Cn.f)([])},indent:{type:Number,default:16},itemSize:Op,icon:{type:Y.Ze},expandOnClickNode:{type:Boolean,default:!0},checkOnClickNode:Boolean,checkOnClickLeaf:{type:Boolean,default:!0},currentNodeKey:{type:(0,f.jq)([String,Number])},accordion:Boolean,filterMethod:{type:(0,f.jq)(Function)},perfMode:{type:Boolean,default:!0},scrollbarAlwaysOn:Boolean}),Ip=(0,f.b_)({node:{type:(0,f.jq)(Object),default:()=>(0,Cn.f)(Mp)},expanded:Boolean,checked:Boolean,indeterminate:Boolean,showCheckbox:Boolean,disabled:Boolean,current:Boolean,hiddenExpandIcon:Boolean,itemSize:Op}),Np=(0,f.b_)({node:{type:(0,f.jq)(Object),required:!0}}),Wp="node-click",Dp="node-drop",Pp="node-expand",Fp="node-collapse",Bp="current-change",zp="check",$p="check-change",Vp="node-contextmenu",jp={[Wp]:(e,t,n)=>e&&t&&n,[Dp]:(e,t,n)=>e&&t&&n,[Pp]:(e,t)=>e&&t,[Fp]:(e,t)=>e&&t,[Bp]:(e,t)=>e&&t,[zp]:(e,t)=>e&&t,[$p]:(e,t)=>e&&(0,p.Lm)(t),[Vp]:(e,t,n)=>e&&t&&n},Kp={click:(e,t)=>!(!e||!t),drop:(e,t)=>!(!e||!t),toggle:e=>!!e,check:(e,t)=>e&&(0,p.Lm)(t)};function Hp(e,t){const n=(0,s.KR)(new Set),r=(0,s.KR)(new Set),{emit:o}=(0,i.nI)();(0,i.wB)([()=>t.value,()=>e.defaultCheckedKeys],()=>(0,i.dY)(()=>{w(e.defaultCheckedKeys)}),{immediate:!0});const a=()=>{if(!t.value||!e.showCheckbox||e.checkStrictly)return;const{levelTreeNodeMap:o,maxLevel:a}=t.value,l=n.value,i=new Set;for(let e=a;e>=1;--e){const t=o.get(e);t&&t.forEach(e=>{const t=e.children;let n=!e.isLeaf||e.disabled||l.has(e.key);if(t){let r=!0,o=!1;for(const e of t){const t=e.key;if(e.isEffectivelyChecked||(n=!1),l.has(t))o=!0;else{if(i.has(t)){r=!1,o=!0;break}r=!1}}r?l.add(e.key):o?(i.add(e.key),l.delete(e.key)):(l.delete(e.key),i.delete(e.key))}e.isEffectivelyChecked=n})}r.value=i},l=e=>n.value.has(e.key),u=e=>r.value.has(e.key),c=(t,r,o=!0,l=!0)=>{const i=n.value,s=t.children;!e.checkStrictly&&o&&(null==s?void 0:s.length)&&(r=s.some(e=>!e.isEffectivelyChecked));const u=(t,n)=>{i[n?Ap.ADD:Ap.DELETE](t.key);const r=t.children;!e.checkStrictly&&r&&r.forEach(e=>{e.disabled&&!e.children||u(e,n)})};u(t,r),l&&a(),o&&d(t,r)},d=(e,t)=>{const{checkedNodes:n,checkedKeys:r}=m(),{halfCheckedNodes:a,halfCheckedKeys:l}=g();o(zp,e.data,{checkedKeys:r,checkedNodes:n,halfCheckedKeys:l,halfCheckedNodes:a}),o($p,e.data,t)};function f(e=!1){return m(e).checkedKeys}function p(e=!1){return m(e).checkedNodes}function v(){return g().halfCheckedKeys}function h(){return g().halfCheckedNodes}function m(r=!1){const o=[],a=[];if((null==t?void 0:t.value)&&e.showCheckbox){const{treeNodeMap:e}=t.value;n.value.forEach(t=>{const n=e.get(t);n&&(!r||r&&n.isLeaf)&&(a.push(t),o.push(n.data))})}return{checkedKeys:a,checkedNodes:o}}function g(){const n=[],o=[];if((null==t?void 0:t.value)&&e.showCheckbox){const{treeNodeMap:e}=t.value;r.value.forEach(t=>{const r=e.get(t);r&&(o.push(t),n.push(r.data))})}return{halfCheckedNodes:n,halfCheckedKeys:o}}function b(e){n.value.clear(),r.value.clear(),(0,i.dY)(()=>{w(e)})}function y(n,r){if((null==t?void 0:t.value)&&e.showCheckbox){const e=t.value.treeNodeMap.get(n);e&&c(e,r,!1)}}function w(n){if(null==t?void 0:t.value){const{treeNodeMap:r}=t.value;if(e.showCheckbox&&r&&(null==n?void 0:n.length)>0){for(const e of n){const t=r.get(e);t&&!l(t)&&c(t,!0,!1,!1)}a()}}}return{updateCheckedKeys:a,toggleCheckbox:c,isChecked:l,isIndeterminate:u,getCheckedKeys:f,getCheckedNodes:p,getHalfCheckedKeys:v,getHalfCheckedNodes:h,setChecked:y,setCheckedKeys:b}}function Xp(e,t){const n=(0,s.KR)(new Set([])),r=(0,s.KR)(new Set([])),o=(0,i.EW)(()=>(0,u.Tn)(e.filterMethod));function a(a){var l;if(!o.value)return;const i=new Set,s=r.value,u=n.value,c=[],d=(null==(l=t.value)?void 0:l.treeNodes)||[],f=e.filterMethod;function p(e){e.forEach(e=>{c.push(e),(null==f?void 0:f(a,e.data,e))?c.forEach(e=>{i.add(e.key),e.expanded=!0}):(e.expanded=!1,e.isLeaf&&u.add(e.key));const t=e.children;if(t&&p(t),!e.isLeaf)if(i.has(e.key)){if(t){let n=!0;for(const e of t)if(!u.has(e.key)){n=!1;break}n?s.add(e.key):s.delete(e.key)}}else u.add(e.key);c.pop()})}return u.clear(),p(d),i}function l(e){return r.value.has(e.key)}return{hiddenExpandIconKeySet:r,hiddenNodeKeySet:n,doFilter:a,isForceHiddenExpandIcon:l}}function Up(e,t){const n=(0,s.KR)(new Set),r=(0,s.KR)(),o=(0,s.IJ)(),a=(0,s.KR)(),{isIndeterminate:l,isChecked:c,toggleCheckbox:d,getCheckedKeys:f,getCheckedNodes:p,getHalfCheckedKeys:v,getHalfCheckedNodes:h,setChecked:m,setCheckedKeys:g}=Hp(e,o),{doFilter:b,hiddenNodeKeySet:y,isForceHiddenExpandIcon:w}=Xp(e,o),R=(0,i.EW)(()=>{var t;return(null==(t=e.props)?void 0:t.value)||Lp.KEY}),C=(0,i.EW)(()=>{var t;return(null==(t=e.props)?void 0:t.children)||Lp.CHILDREN}),x=(0,i.EW)(()=>{var t;return(null==(t=e.props)?void 0:t.disabled)||Lp.DISABLED}),k=(0,i.EW)(()=>{var t;return(null==(t=e.props)?void 0:t.label)||Lp.LABEL}),E=(0,i.EW)(()=>{var e;const t=n.value,r=y.value,a=[],l=(null==(e=o.value)?void 0:e.treeNodes)||[],i=[];for(let n=l.length-1;n>=0;--n)i.push(l[n]);while(i.length){const e=i.pop();if(!r.has(e.key)&&(a.push(e),e.children&&t.has(e.key)))for(let t=e.children.length-1;t>=0;--t)i.push(e.children[t])}return a}),_=(0,i.EW)(()=>E.value.length>0);function S(e){const t=new Map,r=new Map;let o=1;function a(e,l=1,i=void 0){var s;const u=[];for(const o of e){const e=A(o),c={level:l,key:e,data:o};c.label=T(o),c.parent=i;const d=L(o);c.disabled=O(o),c.isLeaf=!d||0===d.length,c.expanded=n.value.has(e),d&&d.length&&(c.children=a(d,l+1,c)),u.push(c),t.set(e,c),r.has(l)||r.set(l,[]),null==(s=r.get(l))||s.push(c)}return l>o&&(o=l),u}const l=a(e);return{treeNodeMap:t,levelTreeNodeMap:r,maxLevel:o,treeNodes:l}}function M(e){const t=b(e);t&&(n.value=t)}function L(e){return e[C.value]}function A(e){return e?e[R.value]:""}function O(e){return e[x.value]}function T(e){return e[k.value]}function I(e){const t=n.value;t.has(e.key)?z(e):B(e)}function N(e){const t=new Set,r=o.value.treeNodeMap;n.value.forEach(e=>{const t=r.get(e);n.value.delete(t.key),t.expanded=!1}),e.forEach(e=>{let n=r.get(e);while(n&&!t.has(n.key))t.add(n.key),n.expanded=!0,n=n.parent}),n.value=t}function W(n,r){t(Wp,n.data,n,r),P(n),e.expandOnClickNode&&I(n),e.showCheckbox&&(e.checkOnClickNode||n.isLeaf&&e.checkOnClickLeaf)&&!n.disabled&&d(n,!c(n),!0)}function D(e,n){t(Dp,e.data,e,n)}function P(e){V(e)||(r.value=e.key,t(Bp,e.data,e))}function F(e,t){d(e,t)}function B(r){const a=n.value;if(o.value&&e.accordion){const{treeNodeMap:e}=o.value;a.forEach(t=>{const n=e.get(t);r&&r.level===(null==n?void 0:n.level)&&(a.delete(t),n.expanded=!1)})}a.add(r.key);const l=U(r.key);l&&(l.expanded=!0,t(Pp,l.data,l))}function z(e){n.value.delete(e.key);const r=U(e.key);r&&(r.expanded=!1,t(Fp,r.data,r))}function $(e){return!!e.disabled}function V(e){const t=r.value;return void 0!==t&&t===e.key}function j(){var e,t;if(r.value)return null==(t=null==(e=o.value)?void 0:e.treeNodeMap.get(r.value))?void 0:t.data}function K(){return r.value}function H(e){r.value=e}function X(e){o.value=S(e)}function U(e){var t;const n=(0,u.Gv)(e)?A(e):e;return null==(t=o.value)?void 0:t.treeNodeMap.get(n)}function G(e,t="auto"){const n=U(e);n&&a.value&&a.value.scrollToItem(E.value.indexOf(n),t)}function q(e){var t;null==(t=a.value)||t.scrollTo(e)}return(0,i.wB)(()=>e.currentNodeKey,e=>{r.value=e},{immediate:!0}),(0,i.wB)(()=>e.defaultExpandedKeys,e=>{n.value=new Set(e)},{immediate:!0}),(0,i.wB)(()=>e.data,e=>{X(e)},{immediate:!0}),{tree:o,flattenTree:E,isNotEmpty:_,listRef:a,getKey:A,getChildren:L,toggleExpand:I,toggleCheckbox:d,isChecked:c,isIndeterminate:l,isDisabled:$,isCurrent:V,isForceHiddenExpandIcon:w,handleNodeClick:W,handleNodeDrop:D,handleNodeCheck:F,getCurrentNode:j,getCurrentKey:K,setCurrentKey:H,getCheckedKeys:f,getCheckedNodes:p,getHalfCheckedKeys:v,getHalfCheckedNodes:h,setChecked:m,setCheckedKeys:g,filter:M,setData:X,getNode:U,expandNode:B,collapseNode:z,setExpandedKeys:N,scrollToNode:G,scrollTo:q}}var Gp=(0,i.pM)({name:"ElTreeNodeContent",props:Np,setup(e){const t=(0,i.WQ)(Sp),n=(0,g.DU)("tree");return()=>{const r=e.node,{data:o}=r;return(null==t?void 0:t.ctx.slots.default)?t.ctx.slots.default({node:r,data:o}):(0,i.h)(qd.$g,{tag:"span",truncated:!0,class:n.be("node","label")},()=>[null==r?void 0:r.label])}}});const qp=(0,i.pM)({name:"ElTreeNode"}),Yp=(0,i.pM)({...qp,props:Ip,emits:Kp,setup(e,{emit:t}){const n=e,r=(0,i.WQ)(Sp),o=(0,g.DU)("tree"),a=(0,i.EW)(()=>{var e;return null!=(e=null==r?void 0:r.props.indent)?e:16}),l=(0,i.EW)(()=>{var e;return null!=(e=null==r?void 0:r.props.icon)?e:O.CaretRight}),c=e=>{const t=null==r?void 0:r.props.props.class;if(!t)return{};let n;if((0,u.Tn)(t)){const{data:r}=e;n=t(r,e)}else n=t;return(0,u.Kg)(n)?{[n]:!0}:n},d=e=>{t("click",n.node,e)},f=e=>{t("drop",n.node,e)},p=()=>{t("toggle",n.node)},v=e=>{t("check",n.node,e)},h=e=>{var t,o,a,l;(null==(a=null==(o=null==(t=null==r?void 0:r.instance)?void 0:t.vnode)?void 0:o.props)?void 0:a["onNodeContextmenu"])&&(e.stopPropagation(),e.preventDefault()),null==r||r.ctx.emit(Vp,e,null==(l=n.node)?void 0:l.data,n.node)};return(e,t)=>{var n,r,m;return(0,i.uX)(),(0,i.CE)("div",{ref:"node$",class:(0,u.C4)([(0,s.R1)(o).b("node"),(0,s.R1)(o).is("expanded",e.expanded),(0,s.R1)(o).is("current",e.current),(0,s.R1)(o).is("focusable",!e.disabled),(0,s.R1)(o).is("checked",!e.disabled&&e.checked),c(e.node)]),role:"treeitem",tabindex:"-1","aria-expanded":e.expanded,"aria-disabled":e.disabled,"aria-checked":e.checked,"data-key":null==(n=e.node)?void 0:n.key,onClick:(0,M.D$)(d,["stop"]),onContextmenu:h,onDragover:(0,M.D$)(()=>{},["prevent"]),onDragenter:(0,M.D$)(()=>{},["prevent"]),onDrop:(0,M.D$)(f,["stop"])},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(o).be("node","content")),style:(0,u.Tr)({paddingLeft:(e.node.level-1)*(0,s.R1)(a)+"px",height:e.itemSize+"px"})},[(0,s.R1)(l)?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:0,class:(0,u.C4)([(0,s.R1)(o).is("leaf",!!(null==(r=e.node)?void 0:r.isLeaf)),(0,s.R1)(o).is("hidden",e.hiddenExpandIcon),{expanded:!(null==(m=e.node)?void 0:m.isLeaf)&&e.expanded},(0,s.R1)(o).be("node","expand-icon")]),onClick:(0,M.D$)(p,["stop"])},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)((0,s.R1)(l))))]),_:1},8,["class","onClick"])):(0,i.Q3)("v-if",!0),e.showCheckbox?((0,i.uX)(),(0,i.Wv)((0,s.R1)(Ct.dI),{key:1,"model-value":e.checked,indeterminate:e.indeterminate,disabled:e.disabled,onChange:v,onClick:(0,M.D$)(()=>{},["stop"])},null,8,["model-value","indeterminate","disabled","onClick"])):(0,i.Q3)("v-if",!0),(0,i.bF)((0,s.R1)(Gp),{node:{...e.node,expanded:e.expanded}},null,8,["node"])],6)],42,["aria-expanded","aria-disabled","aria-checked","data-key","onClick","onDragover","onDragenter","onDrop"])}}});var Qp=(0,m.A)(Yp,[["__file","tree-node.vue"]]);const Zp=(0,i.pM)({name:"ElTreeV2"}),Jp=(0,i.pM)({...Zp,props:Tp,emits:jp,setup(e,{expose:t,emit:n}){const r=e,o=(0,i.Ht)(),a=(0,i.EW)(()=>r.itemSize);(0,i.Gt)(Sp,{ctx:{emit:n,slots:o},props:r,instance:(0,i.nI)()}),(0,i.Gt)(_i.w,void 0);const{t:l}=(0,Ie.Ym)(),c=(0,g.DU)("tree"),{flattenTree:d,isNotEmpty:f,listRef:p,toggleExpand:v,isIndeterminate:h,isChecked:m,isDisabled:b,isCurrent:y,isForceHiddenExpandIcon:w,handleNodeClick:R,handleNodeDrop:C,handleNodeCheck:x,toggleCheckbox:k,getCurrentNode:E,getCurrentKey:_,setCurrentKey:S,getCheckedKeys:M,getCheckedNodes:L,getHalfCheckedKeys:A,getHalfCheckedNodes:O,setChecked:T,setCheckedKeys:I,filter:N,setData:W,getNode:D,expandNode:P,collapseNode:F,setExpandedKeys:B,scrollToNode:z,scrollTo:$}=Up(r,n);return t({toggleCheckbox:k,getCurrentNode:E,getCurrentKey:_,setCurrentKey:S,getCheckedKeys:M,getCheckedNodes:L,getHalfCheckedKeys:A,getHalfCheckedNodes:O,setChecked:T,setCheckedKeys:I,filter:N,setData:W,getNode:D,expandNode:P,collapseNode:F,setExpandedKeys:B,scrollToNode:z,scrollTo:$}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)([(0,s.R1)(c).b(),{[(0,s.R1)(c).m("highlight-current")]:e.highlightCurrent}]),role:"tree"},[(0,s.R1)(f)?((0,i.uX)(),(0,i.Wv)((0,s.R1)(Fs),{key:0,ref_key:"listRef",ref:p,"class-name":(0,s.R1)(c).b("virtual-list"),data:(0,s.R1)(d),total:(0,s.R1)(d).length,height:e.height,"item-size":(0,s.R1)(a),"perf-mode":e.perfMode,"scrollbar-always-on":e.scrollbarAlwaysOn},{default:(0,i.k6)(({data:t,index:n,style:r})=>[((0,i.uX)(),(0,i.Wv)(Qp,{key:t[n].key,style:(0,u.Tr)(r),node:t[n],expanded:t[n].expanded,"show-checkbox":e.showCheckbox,checked:(0,s.R1)(m)(t[n]),indeterminate:(0,s.R1)(h)(t[n]),"item-size":(0,s.R1)(a),disabled:(0,s.R1)(b)(t[n]),current:(0,s.R1)(y)(t[n]),"hidden-expand-icon":(0,s.R1)(w)(t[n]),onClick:(0,s.R1)(R),onToggle:(0,s.R1)(v),onCheck:(0,s.R1)(x),onDrop:(0,s.R1)(C)},null,8,["style","node","expanded","show-checkbox","checked","indeterminate","item-size","disabled","current","hidden-expand-icon","onClick","onToggle","onCheck","onDrop"]))]),_:1},8,["class-name","data","total","height","item-size","perf-mode","scrollbar-always-on"])):((0,i.uX)(),(0,i.CE)("div",{key:1,class:(0,u.C4)((0,s.R1)(c).e("empty-block"))},[(0,i.RG)(e.$slots,"empty",{},()=>{var t;return[(0,i.Lk)("span",{class:(0,u.C4)((0,s.R1)(c).e("empty-text"))},(0,u.v_)(null!=(t=e.emptyText)?t:(0,s.R1)(l)("el.tree.emptyText")),3)]})],2))],2))}});var ev=(0,m.A)(Jp,[["__file","tree.vue"]]);const tv=(0,E.GU)(ev);var nv=n(47358);const rv=(0,f.b_)({zIndex:{type:Number,default:9},rotate:{type:Number,default:-22},width:Number,height:Number,image:String,content:{type:(0,f.jq)([String,Array]),default:"Element Plus"},font:{type:(0,f.jq)(Object)},gap:{type:(0,f.jq)(Array),default:()=>[100,100]},offset:{type:(0,f.jq)(Array)}});function ov(e){return e.replace(/([A-Z])/g,"-$1").toLowerCase()}function av(e){return Object.keys(e).map(t=>`${ov(t)}: ${e[t]};`).join(" ")}function lv(){return window.devicePixelRatio||1}const iv=(e,t)=>{let n=!1;return e.removedNodes.length&&t&&(n=Array.from(e.removedNodes).includes(t)),"attributes"===e.type&&e.target===t&&(n=!0),n},sv={left:[0,.5],start:[0,.5],center:[.5,0],right:[1,-.5],end:[1,-.5]};function uv(e,t,n=1){const r=document.createElement("canvas"),o=r.getContext("2d"),a=e*n,l=t*n;return r.setAttribute("width",`${a}px`),r.setAttribute("height",`${l}px`),o.save(),[o,r,a,l]}function cv(){function e(e,t,n,r,o,a,l,i,s){const[c,d,f,p]=uv(r,o,n);let v=0;if(e instanceof HTMLImageElement)c.drawImage(e,0,0,f,p);else{const{color:t,fontSize:r,fontStyle:l,fontWeight:i,fontFamily:d,textAlign:p,textBaseline:h}=a,m=Number(r)*n;c.font=`${l} normal ${i} ${m}px/${o}px ${d}`,c.fillStyle=t,c.textAlign=p,c.textBaseline=h;const g=(0,u.cy)(e)?e:[e];if("top"!==h&&g[0]){const e=c.measureText(g[0]);c.textBaseline="top";const t=c.measureText(g[0]);v=e.actualBoundingBoxAscent-t.actualBoundingBoxAscent}null==g||g.forEach((e,t)=>{const[r,o]=sv[p];c.fillText(null!=e?e:"",f*r+s*o,t*(m+a.fontGap*n))})}const h=Math.PI/180*Number(t),m=Math.max(r,o),[g,b,y]=uv(m,m,n);function w(e,t){const n=e*Math.cos(h)-t*Math.sin(h),r=e*Math.sin(h)+t*Math.cos(h);return[n,r]}g.translate(y/2,y/2),g.rotate(h),f>0&&p>0&&g.drawImage(d,-f/2,-p/2);let R=0,C=0,x=0,k=0;const E=f/2,_=p/2,S=[[0-E,0-_],[0+E,0-_],[0+E,0+_],[0-E,0+_]];S.forEach(([e,t])=>{const[n,r]=w(e,t);R=Math.min(R,n),C=Math.max(C,n),x=Math.min(x,r),k=Math.max(k,r)});const M=R+y/2,L=x+y/2,A=C-R,O=k-x,T=l*n,I=i*n,N=2*(A+T),W=O+I,[D,P]=uv(N,W);function F(e=0,t=0){D.drawImage(b,M,L,A,O,e,t+v,A,O)}return F(),F(A+T,-O/2-I/2),F(A+T,+O/2+I/2),[P.toDataURL(),N/n,W/n]}return e}const dv=(0,i.pM)({name:"ElWatermark"}),fv=(0,i.pM)({...dv,props:rv,setup(e){const t=e,n={position:"relative"},r=(0,i.EW)(()=>{var e,n;return null!=(n=null==(e=t.font)?void 0:e.fontGap)?n:3}),o=(0,i.EW)(()=>{var e,n;return null!=(n=null==(e=t.font)?void 0:e.color)?n:"rgba(0,0,0,.15)"}),a=(0,i.EW)(()=>{var e,n;return null!=(n=null==(e=t.font)?void 0:e.fontSize)?n:16}),l=(0,i.EW)(()=>{var e,n;return null!=(n=null==(e=t.font)?void 0:e.fontWeight)?n:"normal"}),d=(0,i.EW)(()=>{var e,n;return null!=(n=null==(e=t.font)?void 0:e.fontStyle)?n:"normal"}),f=(0,i.EW)(()=>{var e,n;return null!=(n=null==(e=t.font)?void 0:e.fontFamily)?n:"sans-serif"}),v=(0,i.EW)(()=>{var e,n;return null!=(n=null==(e=t.font)?void 0:e.textAlign)?n:"center"}),h=(0,i.EW)(()=>{var e,n;return null!=(n=null==(e=t.font)?void 0:e.textBaseline)?n:"hanging"}),m=(0,i.EW)(()=>t.gap[0]),g=(0,i.EW)(()=>t.gap[1]),b=(0,i.EW)(()=>m.value/2),y=(0,i.EW)(()=>g.value/2),w=(0,i.EW)(()=>{var e,n;return null!=(n=null==(e=t.offset)?void 0:e[0])?n:b.value}),R=(0,i.EW)(()=>{var e,n;return null!=(n=null==(e=t.offset)?void 0:e[1])?n:y.value}),C=()=>{const e={zIndex:t.zIndex,position:"absolute",left:0,top:0,width:"100%",height:"100%",pointerEvents:"none",backgroundRepeat:"repeat"};let n=w.value-b.value,r=R.value-y.value;return n>0&&(e.left=`${n}px`,e.width=`calc(100% - ${n}px)`,n=0),r>0&&(e.top=`${r}px`,e.height=`calc(100% - ${r}px)`,r=0),e.backgroundPosition=`${n}px ${r}px`,e},x=(0,s.IJ)(null),k=(0,s.IJ)(),E=(0,s.KR)(!1),_=()=>{k.value&&(k.value.remove(),k.value=void 0)},S=(e,t)=>{var n;x.value&&k.value&&(E.value=!0,k.value.setAttribute("style",av({...C(),backgroundImage:`url('${e}')`,backgroundSize:`${Math.floor(t)}px`})),null==(n=x.value)||n.append(k.value),setTimeout(()=>{E.value=!1}))},M=e=>{let n=120,o=64,l=0;const{image:i,content:s,width:c,height:d,rotate:v}=t;if(!i&&e.measureText){e.font=`${Number(a.value)}px ${f.value}`;const t=(0,u.cy)(s)?s:[s];let i=0,c=0;t.forEach(t=>{const{width:n,fontBoundingBoxAscent:r,fontBoundingBoxDescent:o,actualBoundingBoxAscent:a,actualBoundingBoxDescent:l}=e.measureText(t),s=(0,p.b0)(r)?a+l:r+o;n>i&&(i=Math.ceil(n)),s>c&&(c=Math.ceil(s))}),n=i,o=c*t.length+(t.length-1)*r.value;const d=Math.PI/180*Number(v);l=Math.ceil(Math.abs(Math.sin(d)*o)/2),n+=l}return[null!=c?c:n,null!=d?d:o,l]},L=cv(),A=()=>{const e=document.createElement("canvas"),n=e.getContext("2d"),i=t.image,s=t.content,u=t.rotate;if(n){k.value||(k.value=document.createElement("div"));const e=lv(),[t,c,p]=M(n),b=n=>{const[i,s]=L(n||"",u,e,t,c,{color:o.value,fontSize:a.value,fontStyle:d.value,fontWeight:l.value,fontFamily:f.value,fontGap:r.value,textAlign:v.value,textBaseline:h.value},m.value,g.value,p);S(i,s)};if(i){const e=new Image;e.onload=()=>{b(e)},e.onerror=()=>{b(s)},e.crossOrigin="anonymous",e.referrerPolicy="no-referrer",e.src=i}else b(s)}};(0,i.sV)(()=>{A()}),(0,i.wB)(()=>t,()=>{A()},{deep:!0,flush:"post"}),(0,i.xo)(()=>{_()});const O=e=>{E.value||e.forEach(e=>{iv(e,k.value)&&(_(),A())})};return(0,c.P1n)(x,O,{attributes:!0,subtree:!0,childList:!0}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{ref_key:"containerRef",ref:x,style:(0,u.Tr)([n])},[(0,i.RG)(e.$slots,"default")],4))}});var pv=(0,m.A)(fv,[["__file","watermark.vue"]]);const vv=(0,E.GU)(pv);var hv=n(98769);const mv=(0,f.b_)({zIndex:{type:Number,default:1001},visible:Boolean,fill:{type:String,default:"rgba(0,0,0,0.5)"},pos:{type:(0,f.jq)(Object)},targetAreaClickable:{type:Boolean,default:!0}}),gv=Math.min,bv=Math.max,yv=Math.round,wv=Math.floor,Rv=e=>({x:e,y:e}),Cv={left:"right",right:"left",bottom:"top",top:"bottom"},xv={start:"end",end:"start"};function kv(e,t,n){return bv(e,gv(t,n))}function Ev(e,t){return"function"===typeof e?e(t):e}function _v(e){return e.split("-")[0]}function Sv(e){return e.split("-")[1]}function Mv(e){return"x"===e?"y":"x"}function Lv(e){return"y"===e?"height":"width"}const Av=new Set(["top","bottom"]);function Ov(e){return Av.has(_v(e))?"y":"x"}function Tv(e){return Mv(Ov(e))}function Iv(e,t,n){void 0===n&&(n=!1);const r=Sv(e),o=Tv(e),a=Lv(o);let l="x"===o?r===(n?"end":"start")?"right":"left":"start"===r?"bottom":"top";return t.reference[a]>t.floating[a]&&(l=Vv(l)),[l,Vv(l)]}function Nv(e){const t=Vv(e);return[Wv(e),t,Wv(t)]}function Wv(e){return e.replace(/start|end/g,e=>xv[e])}const Dv=["left","right"],Pv=["right","left"],Fv=["top","bottom"],Bv=["bottom","top"];function zv(e,t,n){switch(e){case"top":case"bottom":return n?t?Pv:Dv:t?Dv:Pv;case"left":case"right":return t?Fv:Bv;default:return[]}}function $v(e,t,n,r){const o=Sv(e);let a=zv(_v(e),"start"===n,r);return o&&(a=a.map(e=>e+"-"+o),t&&(a=a.concat(a.map(Wv)))),a}function Vv(e){return e.replace(/left|right|bottom|top/g,e=>Cv[e])}function jv(e){return{top:0,right:0,bottom:0,left:0,...e}}function Kv(e){return"number"!==typeof e?jv(e):{top:e,right:e,bottom:e,left:e}}function Hv(e){const{x:t,y:n,width:r,height:o}=e;return{width:r,height:o,top:n,left:t,right:t+r,bottom:n+o,x:t,y:n}}function Xv(e,t,n){let{reference:r,floating:o}=e;const a=Ov(t),l=Tv(t),i=Lv(l),s=_v(t),u="y"===a,c=r.x+r.width/2-o.width/2,d=r.y+r.height/2-o.height/2,f=r[i]/2-o[i]/2;let p;switch(s){case"top":p={x:c,y:r.y-o.height};break;case"bottom":p={x:c,y:r.y+r.height};break;case"right":p={x:r.x+r.width,y:d};break;case"left":p={x:r.x-o.width,y:d};break;default:p={x:r.x,y:r.y}}switch(Sv(t)){case"start":p[l]-=f*(n&&u?-1:1);break;case"end":p[l]+=f*(n&&u?-1:1);break}return p}const Uv=async(e,t,n)=>{const{placement:r="bottom",strategy:o="absolute",middleware:a=[],platform:l}=n,i=a.filter(Boolean),s=await(null==l.isRTL?void 0:l.isRTL(t));let u=await l.getElementRects({reference:e,floating:t,strategy:o}),{x:c,y:d}=Xv(u,r,s),f=r,p={},v=0;for(let h=0;h({name:"arrow",options:e,async fn(t){const{x:n,y:r,placement:o,rects:a,platform:l,elements:i,middlewareData:s}=t,{element:u,padding:c=0}=Ev(e,t)||{};if(null==u)return{};const d=Kv(c),f={x:n,y:r},p=Tv(o),v=Lv(p),h=await l.getDimensions(u),m="y"===p,g=m?"top":"left",b=m?"bottom":"right",y=m?"clientHeight":"clientWidth",w=a.reference[v]+a.reference[p]-f[p]-a.floating[v],R=f[p]-a.reference[p],C=await(null==l.getOffsetParent?void 0:l.getOffsetParent(u));let x=C?C[y]:0;x&&await(null==l.isElement?void 0:l.isElement(C))||(x=i.floating[y]||a.floating[v]);const k=w/2-R/2,E=x/2-h[v]/2-1,_=gv(d[g],E),S=gv(d[b],E),M=_,L=x-h[v]-S,A=x/2-h[v]/2+k,O=kv(M,A,L),T=!s.arrow&&null!=Sv(o)&&A!==O&&a.reference[v]/2-(Ae<=0)){var S,M;const e=((null==(S=a.flip)?void 0:S.index)||0)+1,t=x[e];if(t){const n="alignment"===d&&b!==Ov(t);if(!n||_.every(e=>Ov(e.placement)!==b||e.overflows[0]>0))return{data:{index:e,overflows:_},reset:{placement:t}}}let n=null==(M=_.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0])?void 0:M.placement;if(!n)switch(p){case"bestFit":{var L;const e=null==(L=_.filter(e=>{if(C){const t=Ov(e.placement);return t===b||"y"===t}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0])?void 0:L[0];e&&(n=e);break}case"initialPlacement":n=i;break}if(o!==n)return{reset:{placement:n}}}return{}}}};const Qv=new Set(["left","top"]);async function Zv(e,t){const{placement:n,platform:r,elements:o}=e,a=await(null==r.isRTL?void 0:r.isRTL(o.floating)),l=_v(n),i=Sv(n),s="y"===Ov(n),u=Qv.has(l)?-1:1,c=a&&s?-1:1,d=Ev(t,e);let{mainAxis:f,crossAxis:p,alignmentAxis:v}="number"===typeof d?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return i&&"number"===typeof v&&(p="end"===i?-1*v:v),s?{x:p*c,y:f*u}:{x:f*u,y:p*c}}const Jv=function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){var n,r;const{x:o,y:a,placement:l,middlewareData:i}=t,s=await Zv(t,e);return l===(null==(n=i.offset)?void 0:n.placement)&&null!=(r=i.arrow)&&r.alignmentOffset?{}:{x:o+s.x,y:a+s.y,data:{...s,placement:l}}}}},eh=function(e){return void 0===e&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:r,placement:o}=t,{mainAxis:a=!0,crossAxis:l=!1,limiter:i={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...s}=Ev(e,t),u={x:n,y:r},c=await Gv(t,s),d=Ov(_v(o)),f=Mv(d);let p=u[f],v=u[d];if(a){const e="y"===f?"top":"left",t="y"===f?"bottom":"right",n=p+c[e],r=p-c[t];p=kv(n,p,r)}if(l){const e="y"===d?"top":"left",t="y"===d?"bottom":"right",n=v+c[e],r=v-c[t];v=kv(n,v,r)}const h=i.fn({...t,[f]:p,[d]:v});return{...h,data:{x:h.x-n,y:h.y-r,enabled:{[f]:a,[d]:l}}}}}};function th(){return"undefined"!==typeof window}function nh(e){return ah(e)?(e.nodeName||"").toLowerCase():"#document"}function rh(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function oh(e){var t;return null==(t=(ah(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function ah(e){return!!th()&&(e instanceof Node||e instanceof rh(e).Node)}function lh(e){return!!th()&&(e instanceof Element||e instanceof rh(e).Element)}function ih(e){return!!th()&&(e instanceof HTMLElement||e instanceof rh(e).HTMLElement)}function sh(e){return!(!th()||"undefined"===typeof ShadowRoot)&&(e instanceof ShadowRoot||e instanceof rh(e).ShadowRoot)}const uh=new Set(["inline","contents"]);function ch(e){const{overflow:t,overflowX:n,overflowY:r,display:o}=xh(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!uh.has(o)}const dh=new Set(["table","td","th"]);function fh(e){return dh.has(nh(e))}const ph=[":popover-open",":modal"];function vh(e){return ph.some(t=>{try{return e.matches(t)}catch(n){return!1}})}const hh=["transform","translate","scale","rotate","perspective"],mh=["transform","translate","scale","rotate","perspective","filter"],gh=["paint","layout","strict","content"];function bh(e){const t=wh(),n=lh(e)?xh(e):e;return hh.some(e=>!!n[e]&&"none"!==n[e])||!!n.containerType&&"normal"!==n.containerType||!t&&!!n.backdropFilter&&"none"!==n.backdropFilter||!t&&!!n.filter&&"none"!==n.filter||mh.some(e=>(n.willChange||"").includes(e))||gh.some(e=>(n.contain||"").includes(e))}function yh(e){let t=Eh(e);while(ih(t)&&!Ch(t)){if(bh(t))return t;if(vh(t))return null;t=Eh(t)}return null}function wh(){return!("undefined"===typeof CSS||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}const Rh=new Set(["html","body","#document"]);function Ch(e){return Rh.has(nh(e))}function xh(e){return rh(e).getComputedStyle(e)}function kh(e){return lh(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Eh(e){if("html"===nh(e))return e;const t=e.assignedSlot||e.parentNode||sh(e)&&e.host||oh(e);return sh(t)?t.host:t}function _h(e){const t=Eh(e);return Ch(t)?e.ownerDocument?e.ownerDocument.body:e.body:ih(t)&&ch(t)?t:_h(t)}function Sh(e,t,n){var r;void 0===t&&(t=[]),void 0===n&&(n=!0);const o=_h(e),a=o===(null==(r=e.ownerDocument)?void 0:r.body),l=rh(o);if(a){const e=Mh(l);return t.concat(l,l.visualViewport||[],ch(o)?o:[],e&&n?Sh(e):[])}return t.concat(o,Sh(o,[],n))}function Mh(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function Lh(e){const t=xh(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const o=ih(e),a=o?e.offsetWidth:n,l=o?e.offsetHeight:r,i=yv(n)!==a||yv(r)!==l;return i&&(n=a,r=l),{width:n,height:r,$:i}}function Ah(e){return lh(e)?e:e.contextElement}function Oh(e){const t=Ah(e);if(!ih(t))return Rv(1);const n=t.getBoundingClientRect(),{width:r,height:o,$:a}=Lh(t);let l=(a?yv(n.width):n.width)/r,i=(a?yv(n.height):n.height)/o;return l&&Number.isFinite(l)||(l=1),i&&Number.isFinite(i)||(i=1),{x:l,y:i}}const Th=Rv(0);function Ih(e){const t=rh(e);return wh()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:Th}function Nh(e,t,n){return void 0===t&&(t=!1),!(!n||t&&n!==rh(e))&&t}function Wh(e,t,n,r){void 0===t&&(t=!1),void 0===n&&(n=!1);const o=e.getBoundingClientRect(),a=Ah(e);let l=Rv(1);t&&(r?lh(r)&&(l=Oh(r)):l=Oh(e));const i=Nh(a,n,r)?Ih(a):Rv(0);let s=(o.left+i.x)/l.x,u=(o.top+i.y)/l.y,c=o.width/l.x,d=o.height/l.y;if(a){const e=rh(a),t=r&&lh(r)?rh(r):r;let n=e,o=Mh(n);while(o&&r&&t!==n){const e=Oh(o),t=o.getBoundingClientRect(),r=xh(o),a=t.left+(o.clientLeft+parseFloat(r.paddingLeft))*e.x,l=t.top+(o.clientTop+parseFloat(r.paddingTop))*e.y;s*=e.x,u*=e.y,c*=e.x,d*=e.y,s+=a,u+=l,n=rh(o),o=Mh(n)}}return Hv({width:c,height:d,x:s,y:u})}function Dh(e,t){const n=kh(e).scrollLeft;return t?t.left+n:Wh(oh(e)).left+n}function Ph(e,t){const n=e.getBoundingClientRect(),r=n.left+t.scrollLeft-Dh(e,n),o=n.top+t.scrollTop;return{x:r,y:o}}function Fh(e){let{elements:t,rect:n,offsetParent:r,strategy:o}=e;const a="fixed"===o,l=oh(r),i=!!t&&vh(t.floating);if(r===l||i&&a)return n;let s={scrollLeft:0,scrollTop:0},u=Rv(1);const c=Rv(0),d=ih(r);if((d||!d&&!a)&&(("body"!==nh(r)||ch(l))&&(s=kh(r)),ih(r))){const e=Wh(r);u=Oh(r),c.x=e.x+r.clientLeft,c.y=e.y+r.clientTop}const f=!l||d||a?Rv(0):Ph(l,s);return{width:n.width*u.x,height:n.height*u.y,x:n.x*u.x-s.scrollLeft*u.x+c.x+f.x,y:n.y*u.y-s.scrollTop*u.y+c.y+f.y}}function Bh(e){return Array.from(e.getClientRects())}function zh(e){const t=oh(e),n=kh(e),r=e.ownerDocument.body,o=bv(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),a=bv(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight);let l=-n.scrollLeft+Dh(e);const i=-n.scrollTop;return"rtl"===xh(r).direction&&(l+=bv(t.clientWidth,r.clientWidth)-o),{width:o,height:a,x:l,y:i}}const $h=25;function Vh(e,t){const n=rh(e),r=oh(e),o=n.visualViewport;let a=r.clientWidth,l=r.clientHeight,i=0,s=0;if(o){a=o.width,l=o.height;const e=wh();(!e||e&&"fixed"===t)&&(i=o.offsetLeft,s=o.offsetTop)}const u=Dh(r);if(u<=0){const e=r.ownerDocument,t=e.body,n=getComputedStyle(t),o="CSS1Compat"===e.compatMode&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,l=Math.abs(r.clientWidth-t.clientWidth-o);l<=$h&&(a-=l)}else u<=$h&&(a+=u);return{width:a,height:l,x:i,y:s}}const jh=new Set(["absolute","fixed"]);function Kh(e,t){const n=Wh(e,!0,"fixed"===t),r=n.top+e.clientTop,o=n.left+e.clientLeft,a=ih(e)?Oh(e):Rv(1),l=e.clientWidth*a.x,i=e.clientHeight*a.y,s=o*a.x,u=r*a.y;return{width:l,height:i,x:s,y:u}}function Hh(e,t,n){let r;if("viewport"===t)r=Vh(e,n);else if("document"===t)r=zh(oh(e));else if(lh(t))r=Kh(t,n);else{const n=Ih(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return Hv(r)}function Xh(e,t){const n=Eh(e);return!(n===t||!lh(n)||Ch(n))&&("fixed"===xh(n).position||Xh(n,t))}function Uh(e,t){const n=t.get(e);if(n)return n;let r=Sh(e,[],!1).filter(e=>lh(e)&&"body"!==nh(e)),o=null;const a="fixed"===xh(e).position;let l=a?Eh(e):e;while(lh(l)&&!Ch(l)){const t=xh(l),n=bh(l);n||"fixed"!==t.position||(o=null);const i=a?!n&&!o:!n&&"static"===t.position&&!!o&&jh.has(o.position)||ch(l)&&!n&&Xh(e,l);i?r=r.filter(e=>e!==l):o=t,l=Eh(l)}return t.set(e,r),r}function Gh(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e;const a="clippingAncestors"===n?vh(t)?[]:Uh(t,this._c):[].concat(n),l=[...a,r],i=l[0],s=l.reduce((e,n)=>{const r=Hh(t,n,o);return e.top=bv(r.top,e.top),e.right=gv(r.right,e.right),e.bottom=gv(r.bottom,e.bottom),e.left=bv(r.left,e.left),e},Hh(t,i,o));return{width:s.right-s.left,height:s.bottom-s.top,x:s.left,y:s.top}}function qh(e){const{width:t,height:n}=Lh(e);return{width:t,height:n}}function Yh(e,t,n){const r=ih(t),o=oh(t),a="fixed"===n,l=Wh(e,!0,a,t);let i={scrollLeft:0,scrollTop:0};const s=Rv(0);function u(){s.x=Dh(o)}if(r||!r&&!a)if(("body"!==nh(t)||ch(o))&&(i=kh(t)),r){const e=Wh(t,!0,a,t);s.x=e.x+t.clientLeft,s.y=e.y+t.clientTop}else o&&u();a&&!r&&o&&u();const c=!o||r||a?Rv(0):Ph(o,i),d=l.left+i.scrollLeft-s.x-c.x,f=l.top+i.scrollTop-s.y-c.y;return{x:d,y:f,width:l.width,height:l.height}}function Qh(e){return"static"===xh(e).position}function Zh(e,t){if(!ih(e)||"fixed"===xh(e).position)return null;if(t)return t(e);let n=e.offsetParent;return oh(e)===n&&(n=n.ownerDocument.body),n}function Jh(e,t){const n=rh(e);if(vh(e))return n;if(!ih(e)){let t=Eh(e);while(t&&!Ch(t)){if(lh(t)&&!Qh(t))return t;t=Eh(t)}return n}let r=Zh(e,t);while(r&&fh(r)&&Qh(r))r=Zh(r,t);return r&&Ch(r)&&Qh(r)&&!bh(r)?n:r||yh(e)||n}const em=async function(e){const t=this.getOffsetParent||Jh,n=this.getDimensions,r=await n(e.floating);return{reference:Yh(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function tm(e){return"rtl"===xh(e).direction}const nm={convertOffsetParentRelativeRectToViewportRelativeRect:Fh,getDocumentElement:oh,getClippingRect:Gh,getOffsetParent:Jh,getElementRects:em,getClientRects:Bh,getDimensions:qh,getScale:Oh,isElement:lh,isRTL:tm};function rm(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function om(e,t){let n,r=null;const o=oh(e);function a(){var e;clearTimeout(n),null==(e=r)||e.disconnect(),r=null}function l(i,s){void 0===i&&(i=!1),void 0===s&&(s=1),a();const u=e.getBoundingClientRect(),{left:c,top:d,width:f,height:p}=u;if(i||t(),!f||!p)return;const v=wv(d),h=wv(o.clientWidth-(c+f)),m=wv(o.clientHeight-(d+p)),g=wv(c),b=-v+"px "+-h+"px "+-m+"px "+-g+"px",y={rootMargin:b,threshold:bv(0,gv(1,s))||1};let w=!0;function R(t){const r=t[0].intersectionRatio;if(r!==s){if(!w)return l();r?l(!1,r):n=setTimeout(()=>{l(!1,1e-7)},1e3)}1!==r||rm(u,e.getBoundingClientRect())||l(),w=!1}try{r=new IntersectionObserver(R,{...y,root:o.ownerDocument})}catch(C){r=new IntersectionObserver(R,y)}r.observe(e)}return l(!0),a}function am(e,t,n,r){void 0===r&&(r={});const{ancestorScroll:o=!0,ancestorResize:a=!0,elementResize:l="function"===typeof ResizeObserver,layoutShift:i="function"===typeof IntersectionObserver,animationFrame:s=!1}=r,u=Ah(e),c=o||a?[...u?Sh(u):[],...Sh(t)]:[];c.forEach(e=>{o&&e.addEventListener("scroll",n,{passive:!0}),a&&e.addEventListener("resize",n)});const d=u&&i?om(u,n):null;let f,p=-1,v=null;l&&(v=new ResizeObserver(e=>{let[r]=e;r&&r.target===u&&v&&(v.unobserve(t),cancelAnimationFrame(p),p=requestAnimationFrame(()=>{var e;null==(e=v)||e.observe(t)})),n()}),u&&!s&&v.observe(u),v.observe(t));let h=s?Wh(e):null;function m(){const t=Wh(e);h&&!rm(h,t)&&n(),h=t,f=requestAnimationFrame(m)}return s&&m(),n(),()=>{var e;c.forEach(e=>{o&&e.removeEventListener("scroll",n),a&&e.removeEventListener("resize",n)}),null==d||d(),null==(e=v)||e.disconnect(),v=null,s&&cancelAnimationFrame(f)}}const lm=Gv,im=Jv,sm=eh,um=Yv,cm=qv,dm=(e,t,n)=>{const r=new Map,o={platform:nm,...n},a={...o.platform,_c:r};return Uv(e,t,{...o,platform:a})};var fm=n(64340);const pm=(e,t,n,r,o)=>{const a=(0,s.KR)(null),l=()=>{let t;return t=(0,u.Kg)(e.value)?document.querySelector(e.value):(0,u.Tn)(e.value)?e.value():e.value,t},c=()=>{const e=l();if(!e||!t.value)return void(a.value=null);hm(e)||e.scrollIntoView(o.value);const{left:n,top:r,width:i,height:s}=e.getBoundingClientRect();a.value={left:n,top:r,width:i,height:s,radius:0}};(0,i.sV)(()=>{(0,i.wB)([t,e],()=>{c()},{immediate:!0}),window.addEventListener("resize",c)}),(0,i.xo)(()=>{window.removeEventListener("resize",c)});const d=e=>{var t;return null!=(t=(0,u.cy)(n.value.offset)?n.value.offset[e]:n.value.offset)?t:6},f=(0,i.EW)(()=>{var e;if(!a.value)return a.value;const t=d(0),r=d(1),o=(null==(e=n.value)?void 0:e.radius)||2;return{left:a.value.left-t,top:a.value.top-r,width:a.value.width+2*t,height:a.value.height+2*r,radius:o}}),p=(0,i.EW)(()=>{const e=l();return r.value&&e&&window.DOMRect?{getBoundingClientRect(){var e,t,n,r;return window.DOMRect.fromRect({width:(null==(e=f.value)?void 0:e.width)||0,height:(null==(t=f.value)?void 0:t.height)||0,x:(null==(n=f.value)?void 0:n.left)||0,y:(null==(r=f.value)?void 0:r.top)||0})}}:e||void 0});return{mergedPosInfo:f,triggerTarget:p}},vm=Symbol("ElTour");function hm(e){const t=window.innerWidth||document.documentElement.clientWidth,n=window.innerHeight||document.documentElement.clientHeight,{top:r,right:o,bottom:a,left:l}=e.getBoundingClientRect();return r>=0&&l>=0&&o<=t&&a<=n}const mm=(e,t,n,r,o,a,l,u)=>{const c=(0,s.KR)(),d=(0,s.KR)(),f=(0,s.KR)({}),p={x:c,y:d,placement:r,strategy:o,middlewareData:f},v=(0,i.EW)(()=>{const e=[im((0,s.R1)(a)),um(),sm(),gm()];return(0,s.R1)(u)&&(0,s.R1)(n)&&e.push(cm({element:(0,s.R1)(n)})),e}),h=async()=>{if(!A.oc)return;const n=(0,s.R1)(e),a=(0,s.R1)(t);if(!n||!a)return;const l=await dm(n,a,{placement:(0,s.R1)(r),strategy:(0,s.R1)(o),middleware:(0,s.R1)(v)});(0,fm.YD)(p).forEach(e=>{p[e].value=l[e]})},m=(0,i.EW)(()=>{if(!(0,s.R1)(e))return{position:"fixed",top:"50%",left:"50%",transform:"translate3d(-50%, -50%, 0)",maxWidth:"100vw",zIndex:(0,s.R1)(l)};const{overflow:t}=(0,s.R1)(f);return{position:(0,s.R1)(o),zIndex:(0,s.R1)(l),top:null!=(0,s.R1)(d)?`${(0,s.R1)(d)}px`:"",left:null!=(0,s.R1)(c)?`${(0,s.R1)(c)}px`:"",maxWidth:(null==t?void 0:t.maxWidth)?`${null==t?void 0:t.maxWidth}px`:""}}),g=(0,i.EW)(()=>{if(!(0,s.R1)(u))return{};const{arrow:e}=(0,s.R1)(f);return{left:null!=(null==e?void 0:e.x)?`${null==e?void 0:e.x}px`:"",top:null!=(null==e?void 0:e.y)?`${null==e?void 0:e.y}px`:""}});let b;return(0,i.sV)(()=>{const n=(0,s.R1)(e),r=(0,s.R1)(t);n&&r&&(b=am(n,r,h)),(0,i.nT)(()=>{h()})}),(0,i.xo)(()=>{b&&b()}),{update:h,contentStyle:m,arrowStyle:g}},gm=()=>({name:"overflow",async fn(e){const t=await lm(e);let n=0;t.left>0&&(n=t.left),t.right>0&&(n=t.right);const r=e.rects.floating.width;return{data:{maxWidth:r-n}}}});var bm=n(32667);const ym=(0,i.pM)({name:"ElTourMask",inheritAttrs:!1}),wm=(0,i.pM)({...ym,props:mv,setup(e){const t=e,{ns:n}=(0,i.WQ)(vm),r=(0,i.EW)(()=>{var e,n;return null!=(n=null==(e=t.pos)?void 0:e.radius)?n:2}),o=(0,i.EW)(()=>{const e=r.value,t=`a${e},${e} 0 0 1`;return{topRight:`${t} ${e},${e}`,bottomRight:`${t} ${-e},${e}`,bottomLeft:`${t} ${-e},${-e}`,topLeft:`${t} ${e},${-e}`}}),{width:a,height:l}=(0,c.lWr)(),d=(0,i.EW)(()=>{const e=a.value,n=l.value,i=o.value,s=`M${e},0 L0,0 L0,${n} L${e},${n} L${e},0 Z`,u=r.value;return t.pos?`${s} M${t.pos.left+u},${t.pos.top} h${t.pos.width-2*u} ${i.topRight} v${t.pos.height-2*u} ${i.bottomRight} h${-t.pos.width+2*u} ${i.bottomLeft} v${-t.pos.height+2*u} ${i.topLeft} z`:s}),f=(0,i.EW)(()=>({position:"fixed",left:0,right:0,top:0,bottom:0,zIndex:t.zIndex,pointerEvents:t.pos&&t.targetAreaClickable?"none":"auto"})),p=(0,i.EW)(()=>({fill:t.fill,pointerEvents:"auto",cursor:"auto"}));return(0,bm.t)((0,s.lW)(t,"visible"),{ns:n}),(e,t)=>e.visible?((0,i.uX)(),(0,i.CE)("div",(0,i.v6)({key:0,class:(0,s.R1)(n).e("mask"),style:(0,s.R1)(f)},e.$attrs),[((0,i.uX)(),(0,i.CE)("svg",{style:{width:"100%",height:"100%"}},[(0,i.Lk)("path",{class:(0,u.C4)((0,s.R1)(n).e("hollow")),style:(0,u.Tr)((0,s.R1)(p)),d:(0,s.R1)(d)},null,14,["d"])]))],16)):(0,i.Q3)("v-if",!0)}});var Rm=(0,m.A)(wm,[["__file","mask.vue"]]),Cm=n(76834);const xm=["absolute","fixed"],km=["top-start","top-end","top","bottom-start","bottom-end","bottom","left-start","left-end","left","right-start","right-end","right"],Em=(0,f.b_)({placement:{type:(0,f.jq)(String),values:km,default:"bottom"},reference:{type:(0,f.jq)(Object),default:null},strategy:{type:(0,f.jq)(String),values:xm,default:"absolute"},offset:{type:Number,default:10},showArrow:Boolean,zIndex:{type:Number,default:2001}}),_m={close:()=>!0},Sm=(0,i.pM)({name:"ElTourContent"}),Mm=(0,i.pM)({...Sm,props:Em,emits:_m,setup(e,{emit:t}){const n=e,r=(0,s.KR)(n.placement),o=(0,s.KR)(n.strategy),a=(0,s.KR)(null),l=(0,s.KR)(null);(0,i.wB)(()=>n.placement,()=>{r.value=n.placement});const{contentStyle:c,arrowStyle:d}=mm((0,s.lW)(n,"reference"),a,l,r,o,(0,s.lW)(n,"offset"),(0,s.lW)(n,"zIndex"),(0,s.lW)(n,"showArrow")),f=(0,i.EW)(()=>r.value.split("-")[0]),{ns:p}=(0,i.WQ)(vm),v=()=>{t("close")},h=e=>{"pointer"===e.detail.focusReason&&e.preventDefault()};return(e,t)=>((0,i.uX)(),(0,i.CE)("div",{ref_key:"contentRef",ref:a,style:(0,u.Tr)((0,s.R1)(c)),class:(0,u.C4)((0,s.R1)(p).e("content")),"data-side":(0,s.R1)(f),tabindex:"-1"},[(0,i.bF)((0,s.R1)(Cm.A),{loop:"",trapped:"","focus-start-el":"container","focus-trap-el":a.value||void 0,onReleaseRequested:v,onFocusoutPrevented:h},{default:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"default")]),_:3},8,["focus-trap-el"]),e.showArrow?((0,i.uX)(),(0,i.CE)("span",{key:0,ref_key:"arrowRef",ref:l,style:(0,u.Tr)((0,s.R1)(d)),class:(0,u.C4)((0,s.R1)(p).e("arrow"))},null,6)):(0,i.Q3)("v-if",!0)],14,["data-side"]))}});var Lm=(0,m.A)(Mm,[["__file","content.vue"]]),Am=(0,i.pM)({name:"ElTourSteps",props:{current:{type:Number,default:0}},emits:["update-total"],setup(e,{slots:t,emit:n}){let r=0;return()=>{var o,a;const l=null==(o=t.default)?void 0:o.call(t),i=[];let s=0;function c(e){(0,u.cy)(e)&&e.forEach(e=>{var t;const n=null==(t=(null==e?void 0:e.type)||{})?void 0:t.name;"ElTourStep"===n&&(i.push(e),s+=1)})}return l.length&&c((0,nt.CW)(null==(a=l[0])?void 0:a.children)),r!==s&&(r=s,n("update-total",s)),i.length?i[e.current]:null}}}),Om=n(38299);const Tm=(0,f.b_)({modelValue:Boolean,current:{type:Number,default:0},showArrow:{type:Boolean,default:!0},showClose:{type:Boolean,default:!0},closeIcon:{type:Y.Ze},placement:Em.placement,contentStyle:{type:(0,f.jq)([Object])},mask:{type:(0,f.jq)([Boolean,Object]),default:!0},gap:{type:(0,f.jq)(Object),default:()=>({offset:6,radius:2})},zIndex:{type:Number},scrollIntoViewOptions:{type:(0,f.jq)([Boolean,Object]),default:()=>({block:"center"})},type:{type:(0,f.jq)(String)},appendTo:{type:Om.k.to.type,default:"body"},closeOnPressEscape:{type:Boolean,default:!0},targetAreaClickable:{type:Boolean,default:!0}}),Im={[d.l4]:e=>(0,p.Lm)(e),["update:current"]:e=>(0,p.Et)(e),close:e=>(0,p.Et)(e),finish:()=>!0,change:e=>(0,p.Et)(e)};var Nm=n(62401);const Wm=(0,i.pM)({name:"ElTour"}),Dm=(0,i.pM)({...Wm,props:Tm,emits:Im,setup(e,{emit:t}){const n=e,r=(0,g.DU)("tour"),o=(0,s.KR)(0),a=(0,s.KR)(),l=(0,c.hRP)(n,"current",t,{passive:!0}),f=(0,i.EW)(()=>{var e;return null==(e=a.value)?void 0:e.target}),v=(0,i.EW)(()=>[r.b(),"primary"===x.value?r.m("primary"):""]),h=(0,i.EW)(()=>{var e;return(null==(e=a.value)?void 0:e.placement)||n.placement}),m=(0,i.EW)(()=>{var e,t;return null!=(t=null==(e=a.value)?void 0:e.contentStyle)?t:n.contentStyle}),b=(0,i.EW)(()=>{var e,t;return null!=(t=null==(e=a.value)?void 0:e.mask)?t:n.mask}),y=(0,i.EW)(()=>!!b.value&&n.modelValue),w=(0,i.EW)(()=>(0,p.Lm)(b.value)?void 0:b.value),R=(0,i.EW)(()=>{var e,t;return!!f.value&&(null!=(t=null==(e=a.value)?void 0:e.showArrow)?t:n.showArrow)}),C=(0,i.EW)(()=>{var e,t;return null!=(t=null==(e=a.value)?void 0:e.scrollIntoViewOptions)?t:n.scrollIntoViewOptions}),x=(0,i.EW)(()=>{var e,t;return null!=(t=null==(e=a.value)?void 0:e.type)?t:n.type}),{nextZIndex:k}=(0,Nm.YK)(),E=k(),_=(0,i.EW)(()=>{var e;return null!=(e=n.zIndex)?e:E}),{mergedPosInfo:S,triggerTarget:M}=pm(f,(0,s.lW)(n,"modelValue"),(0,s.lW)(n,"gap"),b,C);(0,i.wB)(()=>n.modelValue,e=>{e||(l.value=0)});const L=()=>{n.closeOnPressEscape&&(t(d.l4,!1),t("close",l.value))},A=e=>{o.value=e},O=(0,i.Ht)();return(0,i.Gt)(vm,{currentStep:a,current:l,total:o,showClose:(0,s.lW)(n,"showClose"),closeIcon:(0,s.lW)(n,"closeIcon"),mergedType:x,ns:r,slots:O,updateModelValue(e){t(d.l4,e)},onClose(){t("close",l.value)},onFinish(){t("finish")},onChange(){t(d.YU,l.value)}}),(e,t)=>((0,i.uX)(),(0,i.CE)(i.FK,null,[(0,i.bF)((0,s.R1)(hv.Nr),{to:e.appendTo},{default:(0,i.k6)(()=>{var t,n;return[(0,i.Lk)("div",(0,i.v6)({class:(0,s.R1)(v)},e.$attrs),[(0,i.bF)(Rm,{visible:(0,s.R1)(y),fill:null==(t=(0,s.R1)(w))?void 0:t.color,style:(0,u.Tr)(null==(n=(0,s.R1)(w))?void 0:n.style),pos:(0,s.R1)(S),"z-index":(0,s.R1)(_),"target-area-clickable":e.targetAreaClickable},null,8,["visible","fill","style","pos","z-index","target-area-clickable"]),e.modelValue?((0,i.uX)(),(0,i.Wv)(Lm,{key:(0,s.R1)(l),reference:(0,s.R1)(M),placement:(0,s.R1)(h),"show-arrow":(0,s.R1)(R),"z-index":(0,s.R1)(_),style:(0,u.Tr)((0,s.R1)(m)),onClose:L},{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(Am),{current:(0,s.R1)(l),onUpdateTotal:A},{default:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"default")]),_:3},8,["current"])]),_:3},8,["reference","placement","show-arrow","z-index","style"])):(0,i.Q3)("v-if",!0)],16)]}),_:3},8,["to"]),(0,i.Q3)(" just for IDE "),(0,i.Q3)("v-if",!0)],64))}});var Pm=(0,m.A)(Dm,[["__file","tour.vue"]]),Fm=n(71074);const Bm=(0,f.b_)({target:{type:(0,f.jq)([String,Object,Function])},title:String,description:String,showClose:{type:Boolean,default:void 0},closeIcon:{type:Y.Ze},showArrow:{type:Boolean,default:void 0},placement:Em.placement,mask:{type:(0,f.jq)([Boolean,Object]),default:void 0},contentStyle:{type:(0,f.jq)([Object])},prevButtonProps:{type:(0,f.jq)(Object)},nextButtonProps:{type:(0,f.jq)(Object)},scrollIntoViewOptions:{type:(0,f.jq)([Boolean,Object]),default:void 0},type:{type:(0,f.jq)(String)}}),zm={close:()=>!0},$m=(0,i.pM)({name:"ElTourStep"}),Vm=(0,i.pM)({...$m,props:Bm,emits:zm,setup(e,{emit:t}){const n=e,{Close:r}=Y.H2,{t:o}=(0,Ie.Ym)(),{currentStep:a,current:l,total:c,showClose:d,closeIcon:f,mergedType:p,ns:v,slots:h,updateModelValue:m,onClose:g,onFinish:b,onChange:y}=(0,i.WQ)(vm);(0,i.wB)(n,e=>{a.value=e},{immediate:!0});const w=(0,i.EW)(()=>{var e;return null!=(e=n.showClose)?e:d.value}),R=(0,i.EW)(()=>{var e,t;return null!=(t=null!=(e=n.closeIcon)?e:f.value)?t:r}),C=e=>{if(e)return(0,Fm.A)(e,["children","onClick"])},x=()=>{var e,t;l.value-=1,(null==(e=n.prevButtonProps)?void 0:e.onClick)&&(null==(t=n.prevButtonProps)||t.onClick()),y()},k=()=>{var e;l.value>=c.value-1?E():l.value+=1,(null==(e=n.nextButtonProps)?void 0:e.onClick)&&n.nextButtonProps.onClick(),y()},E=()=>{_(),b()},_=()=>{m(!1),g(),t("close")},S=e=>{const t=e.target;if(null==t?void 0:t.isContentEditable)return;const n=(0,V.CG)(e);switch(n){case j.R.left:e.preventDefault(),l.value>0&&x();break;case j.R.right:e.preventDefault(),k();break}};return(0,i.sV)(()=>{window.addEventListener("keydown",S)}),(0,i.xo)(()=>{window.removeEventListener("keydown",S)}),(e,t)=>((0,i.uX)(),(0,i.CE)(i.FK,null,[(0,s.R1)(w)?((0,i.uX)(),(0,i.CE)("button",{key:0,"aria-label":(0,s.R1)(o)("el.tour.close"),class:(0,u.C4)((0,s.R1)(v).e("closebtn")),type:"button",onClick:_},[(0,i.bF)((0,s.R1)(W.tk),{class:(0,u.C4)((0,s.R1)(v).e("close"))},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)((0,s.R1)(R))))]),_:1},8,["class"])],10,["aria-label"])):(0,i.Q3)("v-if",!0),(0,i.Lk)("header",{class:(0,u.C4)([(0,s.R1)(v).e("header"),{"show-close":(0,s.R1)(d)}])},[(0,i.RG)(e.$slots,"header",{},()=>[(0,i.Lk)("span",{role:"heading",class:(0,u.C4)((0,s.R1)(v).e("title"))},(0,u.v_)(e.title),3)])],2),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(v).e("body"))},[(0,i.RG)(e.$slots,"default",{},()=>[(0,i.Lk)("span",null,(0,u.v_)(e.description),1)])],2),(0,i.Lk)("footer",{class:(0,u.C4)((0,s.R1)(v).e("footer"))},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(v).b("indicators"))},[(0,s.R1)(h).indicators?((0,i.uX)(),(0,i.Wv)((0,i.$y)((0,s.R1)(h).indicators),{key:0,current:(0,s.R1)(l),total:(0,s.R1)(c)},null,8,["current","total"])):((0,i.uX)(!0),(0,i.CE)(i.FK,{key:1},(0,i.pI)((0,s.R1)(c),(e,t)=>((0,i.uX)(),(0,i.CE)("span",{key:e,class:(0,u.C4)([(0,s.R1)(v).b("indicator"),(0,s.R1)(v).is("active",t===(0,s.R1)(l))])},null,2))),128))],2),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(v).b("buttons"))},[(0,s.R1)(l)>0?((0,i.uX)(),(0,i.Wv)((0,s.R1)(pe.S2),(0,i.v6)({key:0,size:"small",type:(0,s.R1)(p)},C(e.prevButtonProps),{onClick:x}),{default:(0,i.k6)(()=>{var t,n;return[(0,i.eW)((0,u.v_)(null!=(n=null==(t=e.prevButtonProps)?void 0:t.children)?n:(0,s.R1)(o)("el.tour.previous")),1)]}),_:1},16,["type"])):(0,i.Q3)("v-if",!0),(0,s.R1)(l)<=(0,s.R1)(c)-1?((0,i.uX)(),(0,i.Wv)((0,s.R1)(pe.S2),(0,i.v6)({key:1,size:"small",type:"primary"===(0,s.R1)(p)?"default":"primary"},C(e.nextButtonProps),{onClick:k}),{default:(0,i.k6)(()=>{var t,n;return[(0,i.eW)((0,u.v_)(null!=(n=null==(t=e.nextButtonProps)?void 0:t.children)?n:(0,s.R1)(l)===(0,s.R1)(c)-1?(0,s.R1)(o)("el.tour.finish"):(0,s.R1)(o)("el.tour.next")),1)]}),_:1},16,["type"])):(0,i.Q3)("v-if",!0)],2)],2)],64))}});var jm=(0,m.A)(Vm,[["__file","step.vue"]]);const Km=(0,E.GU)(Pm,{TourStep:jm}),Hm=(0,E.WM)(jm),Xm=(0,f.b_)({container:{type:(0,f.jq)([String,Object])},offset:{type:Number,default:0},bound:{type:Number,default:15},duration:{type:Number,default:300},marker:{type:Boolean,default:!0},type:{type:(0,f.jq)(String),default:"default"},direction:{type:(0,f.jq)(String),default:"vertical"},selectScrollTop:Boolean}),Um={change:e=>(0,u.Kg)(e),click:(e,t)=>e instanceof MouseEvent&&((0,u.Kg)(t)||(0,p.b0)(t))},Gm=Symbol("anchor"),qm=e=>{if(!A.oc||""===e)return null;if((0,u.Kg)(e))try{return document.querySelector(e)}catch(t){return null}return e};function Ym(e){let t=0;const n=(...n)=>{t&&(0,Ws.V)(t),t=(0,Ws.m)(()=>{e(...n),t=0})};return n.cancel=()=>{(0,Ws.V)(t),t=0},n}const Qm=(0,i.pM)({name:"ElAnchor"}),Zm=(0,i.pM)({...Qm,props:Xm,emits:Um,setup(e,{expose:t,emit:n}){const r=e,o=(0,i.Ht)(),a=(0,s.KR)(""),l=(0,s.KR)({}),f=(0,s.KR)(null),v=(0,s.KR)(null),h=(0,s.KR)(),m={};let y=!1,w=0;const R=(0,g.DU)("anchor"),C=(0,i.EW)(()=>[R.b(),"underline"===r.type?R.m("underline"):"",R.m(r.direction)]),x=e=>{m[e.href]=e.el},k=e=>{delete m[e]},E=e=>{const t=a.value;t!==e&&(a.value=e,n(d.YU,e))};let _=null,S="";const M=e=>{if(!h.value)return;const t=qm(e);if(!t)return;if(_){if(S===e)return;_()}S=e,y=!0;const n=(0,b.aF)(t,h.value),o=er(t,n),a=n.scrollHeight-n.clientHeight,l=Math.min(o-r.offset,a);_=(0,b.mg)(h.value,w,l,r.duration,()=>{setTimeout(()=>{y=!1,S=""},20)})},L=e=>{e&&(E(e),M(e))},A=(e,t)=>{n("click",e,t),L(t)},O=Ym(()=>{h.value&&(w=(0,b.hY)(h.value));const e=T();y||(0,p.b0)(e)||E(e)}),T=()=>{if(!h.value)return;const e=(0,b.hY)(h.value),t=[];for(const n of Object.keys(m)){const e=qm(n);if(!e)continue;const o=(0,b.aF)(e,h.value),a=er(e,o);t.push({top:a-r.offset-r.bound,href:n})}t.sort((e,t)=>e.top-t.top);for(let n=0;ne))return o.href}},I=()=>{const e=qm(r.container);!e||(0,p.l6)(e)?h.value=window:h.value=e};(0,c.MLh)(h,"scroll",O);const N=()=>{(0,i.dY)(()=>{if(!f.value||!v.value||!a.value)return void(l.value={});const e=m[a.value];if(!e)return void(l.value={});const t=f.value.getBoundingClientRect(),n=v.value.getBoundingClientRect(),o=e.getBoundingClientRect();if("horizontal"===r.direction){const e=o.left-t.left;l.value={left:`${e}px`,width:`${o.width}px`,opacity:1}}else{const e=o.top-t.top+(o.height-n.height)/2;l.value={top:`${e}px`,opacity:1}}})};return(0,i.wB)(a,N),(0,i.wB)(()=>{var e;return null==(e=o.default)?void 0:e.call(o)},N),(0,i.sV)(()=>{I();const e=decodeURIComponent(window.location.hash),t=qm(e);t?L(e):O()}),(0,i.wB)(()=>r.container,()=>{I()}),(0,i.Gt)(Gm,{ns:R,direction:r.direction,currentAnchor:a,addLink:x,removeLink:k,handleClick:A}),t({scrollTo:L}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{ref_key:"anchorRef",ref:f,class:(0,u.C4)((0,s.R1)(C))},[e.marker?((0,i.uX)(),(0,i.CE)("div",{key:0,ref_key:"markerRef",ref:v,class:(0,u.C4)((0,s.R1)(R).e("marker")),style:(0,u.Tr)(l.value)},null,6)):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(R).e("list"))},[(0,i.RG)(e.$slots,"default")],2)],2))}});var Jm=(0,m.A)(Zm,[["__file","anchor.vue"]]);const eg=(0,f.b_)({title:String,href:String}),tg=(0,i.pM)({name:"ElAnchorLink"}),ng=(0,i.pM)({...tg,props:eg,setup(e){const t=e,n=(0,s.KR)(null),{ns:r,direction:o,currentAnchor:a,addLink:l,removeLink:c,handleClick:d}=(0,i.WQ)(Gm),f=(0,i.EW)(()=>[r.e("link"),r.is("active",a.value===t.href)]),p=e=>{d(e,t.href)};return(0,i.wB)(()=>t.href,(e,t)=>{(0,i.dY)(()=>{t&&c(t),e&&l({href:e,el:n.value})})}),(0,i.sV)(()=>{const{href:e}=t;e&&l({href:e,el:n.value})}),(0,i.xo)(()=>{const{href:e}=t;e&&c(e)}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)((0,s.R1)(r).e("item"))},[(0,i.Lk)("a",{ref_key:"linkRef",ref:n,class:(0,u.C4)((0,s.R1)(f)),href:e.href,onClick:p},[(0,i.RG)(e.$slots,"default",{},()=>[(0,i.eW)((0,u.v_)(e.title),1)])],10,["href"]),e.$slots["sub-link"]&&"vertical"===(0,s.R1)(o)?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(r).e("list"))},[(0,i.RG)(e.$slots,"sub-link")],2)):(0,i.Q3)("v-if",!0)],2))}});var rg=(0,m.A)(ng,[["__file","anchor-link.vue"]]);const og=(0,E.GU)(Jm,{AnchorLink:rg}),ag=(0,E.WM)(rg),lg={label:"label",value:"value",disabled:"disabled"},ig=(0,f.b_)({direction:{type:(0,f.jq)(String),default:"horizontal"},options:{type:(0,f.jq)(Array),default:()=>[]},modelValue:{type:[String,Number,Boolean],default:void 0},props:{type:(0,f.jq)(Object),default:()=>lg},block:Boolean,size:nn.mU,disabled:{type:Boolean,default:void 0},validateEvent:{type:Boolean,default:!0},id:String,name:String,...(0,Br.l)(["ariaLabel"])}),sg={[d.l4]:e=>(0,u.Kg)(e)||(0,p.Et)(e)||(0,p.Lm)(e),[d.YU]:e=>(0,u.Kg)(e)||(0,p.Et)(e)||(0,p.Lm)(e)},ug=(0,i.pM)({name:"ElSegmented"}),cg=(0,i.pM)({...ug,props:ig,emits:sg,setup(e,{emit:t}){const n=e,r=(0,g.DU)("segmented"),o=(0,$.Bi)(),a=(0,z.NV)(),l=(0,z.CB)(),{formItem:f}=(0,un.j)(),{inputId:p,isLabeledByFormItem:v}=(0,un.W)(n,{formItemContext:f}),h=(0,s.KR)(null),m=(0,c.YC1)(),b=(0,s.Kh)({isInit:!1,width:0,height:0,translateX:0,translateY:0,focusVisible:!1}),y=(e,r)=>{const o=x(r);t(d.l4,o),t(d.YU,o),e.target.checked=o===n.modelValue},R=(0,i.EW)(()=>({...lg,...n.props})),C=e=>e,x=e=>(0,u.Gv)(e)?e[R.value.value]:e,k=e=>(0,u.Gv)(e)?e[R.value.label]:e,E=e=>!!(l.value||(0,u.Gv)(e)&&e[R.value.disabled]),_=e=>n.modelValue===x(e),S=e=>n.options.find(t=>x(t)===e),M=e=>[r.e("item"),r.is("selected",_(e)),r.is("disabled",E(e))],L=()=>{if(!h.value)return;const e=h.value.querySelector(".is-selected"),t=h.value.querySelector(".is-selected input");if(!e||!t)return b.width=0,b.height=0,b.translateX=0,b.translateY=0,void(b.focusVisible=!1);b.isInit=!0,"vertical"===n.direction?(b.height=e.offsetHeight,b.translateY=e.offsetTop):(b.width=e.offsetWidth,b.translateX=e.offsetLeft);try{b.focusVisible=t.matches(":focus-visible")}catch(r){}},A=(0,i.EW)(()=>[r.b(),r.m(a.value),r.is("block",n.block)]),O=(0,i.EW)(()=>({width:"vertical"===n.direction?"100%":`${b.width}px`,height:"vertical"===n.direction?`${b.height}px`:"100%",transform:"vertical"===n.direction?`translateY(${b.translateY}px)`:`translateX(${b.translateX}px)`,display:b.isInit?"block":"none"})),T=(0,i.EW)(()=>[r.e("item-selected"),r.is("disabled",E(S(n.modelValue))),r.is("focus-visible",b.focusVisible)]),I=(0,i.EW)(()=>n.name||o.value);return(0,c.wYm)(h,L),(0,i.wB)(m,L),(0,i.wB)(()=>n.modelValue,()=>{var e;L(),n.validateEvent&&(null==(e=null==f?void 0:f.validate)||e.call(f,"change").catch(e=>(0,w.U)(e)))},{flush:"post"}),(e,t)=>e.options.length?((0,i.uX)(),(0,i.CE)("div",{key:0,id:(0,s.R1)(p),ref_key:"segmentedRef",ref:h,class:(0,u.C4)((0,s.R1)(A)),role:"radiogroup","aria-label":(0,s.R1)(v)?void 0:e.ariaLabel||"segmented","aria-labelledby":(0,s.R1)(v)?(0,s.R1)(f).labelId:void 0},[(0,i.Lk)("div",{class:(0,u.C4)([(0,s.R1)(r).e("group"),(0,s.R1)(r).m(e.direction)])},[(0,i.Lk)("div",{style:(0,u.Tr)((0,s.R1)(O)),class:(0,u.C4)((0,s.R1)(T))},null,6),((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.options,(t,n)=>((0,i.uX)(),(0,i.CE)("label",{key:n,class:(0,u.C4)(M(t))},[(0,i.Lk)("input",{class:(0,u.C4)((0,s.R1)(r).e("item-input")),type:"radio",name:(0,s.R1)(I),disabled:E(t),checked:_(t),onChange:e=>y(e,t)},null,42,["name","disabled","checked","onChange"]),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(r).e("item-label"))},[(0,i.RG)(e.$slots,"default",{item:C(t)},()=>[(0,i.eW)((0,u.v_)(k(t)),1)])],2)],2))),128))],2)],10,["id","aria-label","aria-labelledby"])):(0,i.Q3)("v-if",!0)}});var dg=(0,m.A)(cg,[["__file","segmented.vue"]]);const fg=(0,E.GU)(dg),pg=(e,t)=>{const n=e.toLowerCase(),r=t.label||t.value||"";return r.toLowerCase().includes(n)},vg=(e,t,n)=>{const{selectionEnd:r}=e;if(null===r)return;const o=e.value,a=(0,In.A)(t);let l,i=-1;for(let s=r-1;s>=0;--s){const e=o[s];if(e!==n&&"\n"!==e&&"\r"!==e){if(a.includes(e)){const t=-1===i?r:i,n=o.slice(s+1,t);l={pattern:n,start:s+1,end:t,prefix:e,prefixIndex:s,splitIndex:i,selectionEnd:r};break}}else i=s}return l},hg=(e,t={debug:!1,useSelectionEnd:!1})=>{const n=null!==e.selectionStart?e.selectionStart:0,r=null!==e.selectionEnd?e.selectionEnd:0,o=t.useSelectionEnd?r:n,a=["direction","boxSizing","width","height","overflowX","overflowY","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderStyle","paddingTop","paddingRight","paddingBottom","paddingLeft","fontStyle","fontVariant","fontWeight","fontStretch","fontSize","fontSizeAdjust","lineHeight","fontFamily","textAlign","textTransform","textIndent","textDecoration","letterSpacing","wordSpacing","tabSize","MozTabSize"];if(t.debug){const e=document.querySelector("#input-textarea-caret-position-mirror-div");(null==e?void 0:e.parentNode)&&e.parentNode.removeChild(e)}const l=document.createElement("div");l.id="input-textarea-caret-position-mirror-div",document.body.appendChild(l);const i=l.style,s=window.getComputedStyle(e),u="INPUT"===e.nodeName;i.whiteSpace=u?"nowrap":"pre-wrap",u||(i.wordWrap="break-word"),i.position="absolute",t.debug||(i.visibility="hidden"),a.forEach(e=>{if(u&&"lineHeight"===e)if("border-box"===s.boxSizing){const e=Number.parseInt(s.height),t=Number.parseInt(s.paddingTop)+Number.parseInt(s.paddingBottom)+Number.parseInt(s.borderTopWidth)+Number.parseInt(s.borderBottomWidth),n=t+Number.parseInt(s.lineHeight);i.lineHeight=e>n?e-t+"px":e===n?s.lineHeight:"0"}else i.lineHeight=s.height;else i[e]=s[e]}),(0,sl.gm)()?e.scrollHeight>Number.parseInt(s.height)&&(i.overflowY="scroll"):i.overflow="hidden",l.textContent=e.value.slice(0,Math.max(0,o)),u&&l.textContent&&(l.textContent=l.textContent.replace(/\s/g," "));const c=document.createElement("span");c.textContent=e.value.slice(Math.max(0,o))||".",c.style.position="relative",c.style.left=-e.scrollLeft+"px",c.style.top=-e.scrollTop+"px",l.appendChild(c);const d={top:c.offsetTop+Number.parseInt(s.borderTopWidth),left:c.offsetLeft+Number.parseInt(s.borderLeftWidth),height:1.5*Number.parseInt(s.fontSize)};return t.debug?c.style.backgroundColor="#aaa":document.body.removeChild(l),d.left>=e.clientWidth&&(d.left=e.clientWidth),d},mg=(0,f.b_)({...D.$,options:{type:(0,f.jq)(Array),default:()=>[]},prefix:{type:(0,f.jq)([String,Array]),default:"@",validator:e=>(0,u.Kg)(e)?1===e.length:e.every(e=>(0,u.Kg)(e)&&1===e.length)},split:{type:String,default:" ",validator:e=>1===e.length},filterOption:{type:(0,f.jq)([Boolean,Function]),default:()=>pg,validator:e=>!1===e||(0,u.Tn)(e)},placement:{type:(0,f.jq)(String),default:"bottom"},showArrow:Boolean,offset:{type:Number,default:0},whole:Boolean,checkIsWhole:{type:(0,f.jq)(Function)},modelValue:String,loading:Boolean,popperClass:P.E.popperClass,popperStyle:P.E.popperStyle,popperOptions:{type:(0,f.jq)(Object),default:()=>({})},props:{type:(0,f.jq)(Object),default:()=>bg}}),gg={[d.l4]:e=>(0,u.Kg)(e),"whole-remove":(e,t)=>(0,u.Kg)(e)&&(0,u.Kg)(t),input:e=>(0,u.Kg)(e),search:(e,t)=>(0,u.Kg)(e)&&(0,u.Kg)(t),select:(e,t)=>(0,u.Gv)(e)&&(0,u.Kg)(t),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent},bg={value:"value",label:"label",disabled:"disabled"},yg=(0,f.b_)({options:{type:(0,f.jq)(Array),default:()=>[]},loading:Boolean,disabled:Boolean,contentId:String,ariaLabel:String}),wg={select:e=>(0,u.Kg)(e.value)},Rg=(0,i.pM)({name:"ElMentionDropdown"}),Cg=(0,i.pM)({...Rg,props:yg,emits:wg,setup(e,{expose:t,emit:n}){const r=e,o=(0,g.DU)("mention"),{t:a}=(0,Ie.Ym)(),l=(0,s.KR)(-1),c=(0,s.KR)(),d=(0,s.KR)(),f=(0,s.KR)(),p=(e,t)=>[o.be("dropdown","item"),o.is("hovering",l.value===t),o.is("disabled",e.disabled||r.disabled)],v=e=>{e.disabled||r.disabled||n("select",e)},h=e=>{l.value=e},m=(0,i.EW)(()=>r.disabled||r.options.every(e=>e.disabled)),y=(0,i.EW)(()=>r.options[l.value]),w=()=>{y.value&&n("select",y.value)},R=e=>{const{options:t}=r;if(0===t.length||m.value)return;"next"===e?(l.value++,l.value===t.length&&(l.value=0)):"prev"===e&&(l.value--,l.value<0&&(l.value=t.length-1));const n=t[l.value];n.disabled?R(e):(0,i.dY)(()=>C(n))},C=e=>{var t,n,a,l;const{options:i}=r,s=i.findIndex(t=>t.value===e.value),u=null==(t=d.value)?void 0:t[s];if(u){const e=null==(a=null==(n=f.value)?void 0:n.querySelector)?void 0:a.call(n,`.${o.be("dropdown","wrap")}`);e&&(0,b.Rt)(e,u)}null==(l=c.value)||l.handleScroll()},x=()=>{m.value||0===r.options.length?l.value=-1:l.value=0};return(0,i.wB)(()=>r.options,x,{immediate:!0}),t({hoveringIndex:l,navigateOptions:R,selectHoverOption:w,hoverOption:y}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{ref_key:"dropdownRef",ref:f,class:(0,u.C4)((0,s.R1)(o).b("dropdown"))},[e.$slots.header?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(o).be("dropdown","header"))},[(0,i.RG)(e.$slots,"header")],2)):(0,i.Q3)("v-if",!0),(0,i.bo)((0,i.bF)((0,s.R1)(I.kA),{id:e.contentId,ref_key:"scrollbarRef",ref:c,tag:"ul","wrap-class":(0,s.R1)(o).be("dropdown","wrap"),"view-class":(0,s.R1)(o).be("dropdown","list"),role:"listbox","aria-label":e.ariaLabel,"aria-orientation":"vertical"},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.options,(t,n)=>((0,i.uX)(),(0,i.CE)("li",{id:`${e.contentId}-${n}`,ref_for:!0,ref_key:"optionRefs",ref:d,key:n,class:(0,u.C4)(p(t,n)),role:"option","aria-disabled":t.disabled||e.disabled||void 0,"aria-selected":l.value===n,onMousemove:e=>h(n),onClick:(0,M.D$)(e=>v(t),["stop"])},[(0,i.RG)(e.$slots,"label",{item:t,index:n},()=>{var e;return[(0,i.Lk)("span",null,(0,u.v_)(null!=(e=t.label)?e:t.value),1)]})],42,["id","aria-disabled","aria-selected","onMousemove","onClick"]))),128))]),_:3},8,["id","wrap-class","view-class","aria-label"]),[[M.aG,e.options.length>0&&!e.loading]]),e.loading?((0,i.uX)(),(0,i.CE)("div",{key:1,class:(0,u.C4)((0,s.R1)(o).be("dropdown","loading"))},[(0,i.RG)(e.$slots,"loading",{},()=>[(0,i.eW)((0,u.v_)((0,s.R1)(a)("el.mention.loading")),1)])],2)):(0,i.Q3)("v-if",!0),e.$slots.footer?((0,i.uX)(),(0,i.CE)("div",{key:2,class:(0,u.C4)((0,s.R1)(o).be("dropdown","footer"))},[(0,i.RG)(e.$slots,"footer")],2)):(0,i.Q3)("v-if",!0)],2))}});var xg=(0,m.A)(Cg,[["__file","mention-dropdown.vue"]]);const kg=(0,i.pM)({name:"ElMention",inheritAttrs:!1}),Eg=(0,i.pM)({...kg,props:mg,emits:gg,setup(e,{expose:t,emit:n}){const r=e,o=(0,i.EW)(()=>(0,L.A)(r,Object.keys(D.$))),a=(0,g.DU)("mention"),l=(0,z.CB)(),c=(0,$.Bi)(),f=(0,s.KR)(),p=(0,s.KR)(),v=(0,s.KR)(),h=(0,s.KR)(!1),m=(0,s.KR)(),b=(0,s.KR)(),y=(0,i.EW)(()=>r.showArrow?r.placement:`${r.placement}-start`),w=(0,i.EW)(()=>r.showArrow?["bottom","top"]:["bottom-start","top-start"]),R=(0,i.EW)(()=>({...bg,...r.props})),C=e=>{const t={label:e[R.value.label],value:e[R.value.value],disabled:e[R.value.disabled]};return{...e,...t}},x=(0,i.EW)(()=>r.options.map(C)),k=(0,i.EW)(()=>{const{filterOption:e}=r;return b.value&&e?x.value.filter(t=>e(b.value.pattern,t)):x.value}),E=(0,i.EW)(()=>h.value&&(!!k.value.length||r.loading)),_=(0,i.EW)(()=>{var e;return`${c.value}-${null==(e=v.value)?void 0:e.hoveringIndex}`}),S=e=>{n(d.l4,e),n(d.qs,e),B()},A=e=>{var t,o,a,l;if(null==(t=f.value)?void 0:t.isComposing)return;const s=(0,V.CG)(e);switch(s){case j.R.left:case j.R.right:B();break;case j.R.up:case j.R.down:if(!h.value)return;e.preventDefault(),null==(o=v.value)||o.navigateOptions(s===j.R.up?"prev":"next");break;case j.R.enter:case j.R.numpadEnter:if(!h.value)return void("textarea"!==r.type&&B());e.preventDefault(),(null==(a=v.value)?void 0:a.hoverOption)?null==(l=v.value)||l.selectHoverOption():h.value=!1;break;case j.R.esc:if(!h.value)return;e.preventDefault(),h.value=!1;break;case j.R.backspace:if(r.whole&&b.value){const{splitIndex:t,selectionEnd:o,pattern:a,prefixIndex:l,prefix:s}=b.value,c=F();if(!c)return;const f=c.value,p=x.value.find(e=>e.value===a),v=(0,u.Tn)(r.checkIsWhole)?r.checkIsWhole(a,s):p;if(v&&-1!==t&&t+1===o){e.preventDefault();const r=f.slice(0,l)+f.slice(t+1);n(d.l4,r),n(d.qs,r),n("whole-remove",a,s);const o=l;(0,i.dY)(()=>{c.selectionStart=o,c.selectionEnd=o,H()})}}}},{wrapperRef:O}=(0,dn.K)(f,{disabled:l,afterFocus(){B()},beforeBlur(e){var t;return null==(t=p.value)?void 0:t.isFocusInsideContent(e)},afterBlur(){h.value=!1}}),I=()=>{B()},W=e=>r.options.find(t=>e.value===t[R.value.value]),P=e=>{if(!b.value)return;const t=F();if(!t)return;const o=t.value,{split:a}=r,l=o.slice(b.value.end),s=l.startsWith(a),u=`${e.value}${s?"":a}`,c=o.slice(0,b.value.start)+u+l;n(d.l4,c),n(d.qs,c),n("select",W(e),b.value.prefix);const f=b.value.start+u.length+(s?1:0);(0,i.dY)(()=>{t.selectionStart=f,t.selectionEnd=f,t.focus(),H()})},F=()=>{var e,t;return"textarea"===r.type?null==(e=f.value)?void 0:e.textarea:null==(t=f.value)?void 0:t.input},B=()=>{setTimeout(()=>{K(),H(),(0,i.dY)(()=>{var e;return null==(e=p.value)?void 0:e.updatePopper()})},0)},K=()=>{const e=F();if(!e)return;const t=hg(e),n=e.getBoundingClientRect(),r=O.value.getBoundingClientRect();m.value={position:"absolute",width:0,height:`${t.height}px`,left:t.left+n.left-r.left+"px",top:t.top+n.top-r.top+"px"}},H=()=>{const e=F();if(document.activeElement!==e)return void(h.value=!1);const{prefix:t,split:o}=r;if(b.value=vg(e,t,o),b.value&&-1===b.value.splitIndex)return h.value=!0,void n("search",b.value.pattern,b.value.prefix);h.value=!1};return t({input:f,tooltip:p,dropdownVisible:E}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{ref_key:"wrapperRef",ref:O,class:(0,u.C4)((0,s.R1)(a).b())},[(0,i.bF)((0,s.R1)(T.WK),(0,i.v6)((0,i.v6)((0,s.R1)(o),e.$attrs),{ref_key:"elInputRef",ref:f,"model-value":e.modelValue,disabled:(0,s.R1)(l),role:(0,s.R1)(E)?"combobox":void 0,"aria-activedescendant":(0,s.R1)(E)?(0,s.R1)(_)||"":void 0,"aria-controls":(0,s.R1)(E)?(0,s.R1)(c):void 0,"aria-expanded":(0,s.R1)(E)||void 0,"aria-label":e.ariaLabel,"aria-autocomplete":(0,s.R1)(E)?"none":void 0,"aria-haspopup":(0,s.R1)(E)?"listbox":void 0,onInput:S,onKeydown:A,onMousedown:I}),(0,i.eX)({_:2},[(0,i.pI)(e.$slots,(t,n)=>({name:n,fn:(0,i.k6)(t=>[(0,i.RG)(e.$slots,n,(0,u._B)((0,i.Ng)(t)))])}))]),1040,["model-value","disabled","role","aria-activedescendant","aria-controls","aria-expanded","aria-label","aria-autocomplete","aria-haspopup"]),(0,i.bF)((0,s.R1)(N.R7),{ref_key:"tooltipRef",ref:p,visible:(0,s.R1)(E),"popper-class":[(0,s.R1)(a).e("popper"),e.popperClass],"popper-style":e.popperStyle,"popper-options":e.popperOptions,placement:(0,s.R1)(y),"fallback-placements":(0,s.R1)(w),effect:"light",pure:"",offset:e.offset,"show-arrow":e.showArrow},{default:(0,i.k6)(()=>[(0,i.Lk)("div",{style:(0,u.Tr)(m.value)},null,4)]),content:(0,i.k6)(()=>{var t;return[(0,i.bF)(xg,{ref_key:"dropdownRef",ref:v,options:(0,s.R1)(k),disabled:(0,s.R1)(l),loading:e.loading,"content-id":(0,s.R1)(c),"aria-label":e.ariaLabel,onSelect:P,onClick:(0,M.D$)(null==(t=f.value)?void 0:t.focus,["stop"])},(0,i.eX)({_:2},[(0,i.pI)(e.$slots,(t,n)=>({name:n,fn:(0,i.k6)(t=>[(0,i.RG)(e.$slots,n,(0,u._B)((0,i.Ng)(t)))])}))]),1032,["options","disabled","loading","content-id","aria-label","onClick"])]}),_:3},8,["visible","popper-class","popper-style","popper-options","placement","fallback-placements","offset","show-arrow"])],2))}});var _g=(0,m.A)(Eg,[["__file","mention.vue"]]);const Sg=(0,E.GU)(_g),Mg=(0,f.b_)({layout:{type:String,default:"horizontal",values:["horizontal","vertical"]},lazy:Boolean}),Lg={resizeStart:(e,t)=>!0,resize:(e,t)=>!0,resizeEnd:(e,t)=>!0,collapse:(e,t,n)=>!0},Ag=Symbol("splitterRootContextKey");function Og(e){const t=(0,s.KR)(),{width:n,height:r}=(0,c.Lhy)(t),o=(0,i.EW)(()=>"horizontal"===e.value?n.value:r.value);return{containerEl:t,containerSize:o}}function Tg(e){return Number(e.slice(0,-1))/100}function Ig(e){return Number(e.slice(0,-2))}function Ng(e){return(0,u.Kg)(e)&&e.endsWith("%")}function Wg(e){return(0,u.Kg)(e)&&e.endsWith("px")}function Dg(e,t){const n=(0,i.EW)(()=>e.value.map(e=>e.size)),r=(0,i.EW)(()=>e.value.length),o=(0,s.KR)([]);(0,i.wB)([n,r,t],()=>{var n;let a=[],l=0;for(let o=0;oe+(t||0),0);if(i>1||!l){const e=1/i;a=a.map(t=>void 0===t?0:t*e)}else{const e=(1-i)/l;a=a.map(t=>void 0===t?e:t)}o.value=a});const a=e=>e*t.value,l=(0,i.EW)(()=>o.value.map(a));return{percentSizes:o,pxSizes:l}}function Pg(e,t,n,r){const o=e=>e*t.value||0;function a(e,t){return Ng(e)?o(Tg(e)):Wg(e)?Ig(e):null!=e?e:t}const l=(0,s.KR)(0),c=(0,s.KR)(null);let d=[],f=u.tE;const p=(0,i.EW)(()=>e.value.map(e=>[e.min,e.max]));(0,i.wB)(r,()=>{if(l.value){const e=new MouseEvent("mouseup",{bubbles:!0});window.dispatchEvent(e)}});const v=e=>{l.value=0,c.value={index:e,confirmed:!1},d=n.value},h=(n,o)=>{var i,s;let v=null;if((!c.value||!c.value.confirmed)&&0!==o)if(o>0)v=n,c.value={index:n,confirmed:!0};else for(let e=n;e>=0;e-=1)if(d[e]>0){v=e,c.value={index:e,confirmed:!0};break}const h=null!=(s=null!=v?v:null==(i=c.value)?void 0:i.index)?s:n,m=[...d],g=h+1,b=a(p.value[h][0],0),y=a(p.value[g][0],0),w=a(p.value[h][1],t.value||0),R=a(p.value[g][1],t.value||0);let C=o;m[h]+Cw&&(C=w-m[h]),m[g]-C>R&&(C=m[g]-R),m[h]+=C,m[g]-=C,l.value=C,f=()=>{e.value.forEach((e,t)=>{e.size=m[t]}),f=u.tE},r.value||f()},m=()=>{r.value&&f(),l.value=0,c.value=null,d=[]},g=[],b=(t,r)=>{g.length||g.push(...n.value);const o=n.value,a="start"===r?t:t+1,l="start"===r?t+1:t,i=o[a],s=o[l];if(0!==i&&0!==s)o[a]=0,o[l]+=i,g[t]=i;else{const e=i+s,n=g[t],r=e-n;o[l]=n,o[a]=r}e.value.forEach((e,t)=>{e.size=o[t]})};return{lazyOffset:l,onMoveStart:v,onMoving:h,onMoveEnd:m,movingIndex:c,onCollapse:b}}const Fg=(0,i.pM)({name:"ElSplitter"}),Bg=(0,i.pM)({...Fg,props:Mg,emits:Lg,setup(e,{emit:t}){const n=e,r=(0,g.DU)("splitter"),o=(0,s.lW)(n,"layout"),a=(0,s.lW)(n,"lazy"),{containerEl:l,containerSize:c}=Og(o),{removeChild:d,children:f,addChild:p,ChildrenSorter:v}=(0,tt.W)((0,i.nI)(),"ElSplitterPanel");(0,i.wB)(f,()=>{y.value=null,f.value.forEach((e,t)=>{e.setIndex(t)})});const{percentSizes:h,pxSizes:m}=Dg(f,c),{lazyOffset:b,movingIndex:y,onMoveStart:w,onMoving:R,onMoveEnd:C,onCollapse:x}=Pg(f,c,m,a),k=(0,i.EW)(()=>({[r.cssVarBlockName("bar-offset")]:a.value?`${b.value}px`:void 0})),E=e=>{w(e),t("resizeStart",e,m.value)},_=(e,n)=>{R(e,n),a.value||t("resize",e,m.value)},S=async e=>{C(),await(0,i.dY)(),t("resizeEnd",e,m.value)},M=(e,n)=>{x(e,n),t("collapse",e,n,m.value)};return(0,i.Gt)(Ag,(0,s.Kh)({panels:f,percentSizes:h,pxSizes:m,layout:o,lazy:a,movingIndex:y,containerSize:c,onMoveStart:E,onMoving:_,onMoveEnd:S,onCollapse:M,registerPanel:p,unregisterPanel:d})),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{ref_key:"containerEl",ref:l,class:(0,u.C4)([(0,s.R1)(r).b(),(0,s.R1)(r).e((0,s.R1)(o))]),style:(0,u.Tr)((0,s.R1)(k))},[(0,i.RG)(e.$slots,"default"),(0,i.bF)((0,s.R1)(v)),(0,i.Q3)(" Prevent iframe touch events from breaking "),(0,s.R1)(y)?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)([(0,s.R1)(r).e("mask"),(0,s.R1)(r).e(`mask-${(0,s.R1)(o)}`)])},null,2)):(0,i.Q3)("v-if",!0)],6))}});var zg=(0,m.A)(Bg,[["__file","splitter.vue"]]);function $g(e){return e&&(0,u.Gv)(e)?e:{start:!!e,end:!!e}}function Vg(e,t,n,r){return!!((null==e?void 0:e.collapsible.end)&&t>0)||!!((null==n?void 0:n.collapsible.start)&&0===r&&t>0)}const jg=(0,i.pM)({name:"ElSplitterBar"}),Kg=(0,i.pM)({...jg,props:{index:{type:Number,required:!0},layout:{type:String,values:["horizontal","vertical"],default:"horizontal"},resizable:{type:Boolean,default:!0},lazy:Boolean,startCollapsible:Boolean,endCollapsible:Boolean},emits:["moveStart","moving","moveEnd","collapse"],setup(e,{emit:t}){const n=e,r=(0,g.DU)("splitter-bar"),o=(0,i.EW)(()=>"horizontal"===n.layout),a=(0,i.EW)(()=>o.value?{width:0}:{height:0}),l=(0,i.EW)(()=>({width:o.value?"16px":"100%",height:o.value?"100%":"16px",cursor:n.resizable?o.value?"ew-resize":"ns-resize":"auto",touchAction:"none"})),c=(0,i.EW)(()=>{const e=r.e("dragger");return{[`${e}-horizontal`]:o.value,[`${e}-vertical`]:!o.value,[`${e}-active`]:!!d.value}}),d=(0,s.KR)(null),f=e=>{n.resizable&&(d.value=[e.pageX,e.pageY],t("moveStart",n.index),window.addEventListener("mouseup",m),window.addEventListener("mousemove",v))},p=e=>{if(n.resizable&&1===e.touches.length){e.preventDefault();const r=e.touches[0];d.value=[r.pageX,r.pageY],t("moveStart",n.index),window.addEventListener("touchend",b),window.addEventListener("touchmove",h)}},v=e=>{const{pageX:r,pageY:a}=e,l=r-d.value[0],i=a-d.value[1],s=o.value?l:i;t("moving",n.index,s)},h=e=>{if(1===e.touches.length){e.preventDefault();const r=e.touches[0],a=r.pageX-d.value[0],l=r.pageY-d.value[1],i=o.value?a:l;t("moving",n.index,i)}},m=()=>{d.value=null,window.removeEventListener("mouseup",m),window.removeEventListener("mousemove",v),t("moveEnd",n.index)},b=()=>{d.value=null,window.removeEventListener("touchend",b),window.removeEventListener("touchmove",h),t("moveEnd",n.index)},y=(0,i.EW)(()=>o.value?O.ArrowLeft:O.ArrowUp),w=(0,i.EW)(()=>o.value?O.ArrowRight:O.ArrowDown);return(n,o)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)([(0,s.R1)(r).b()]),style:(0,u.Tr)((0,s.R1)(a))},[e.startCollapsible?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)([(0,s.R1)(r).e("collapse-icon"),(0,s.R1)(r).e(`${e.layout}-collapse-icon-start`)]),onClick:n=>t("collapse",e.index,"start")},[(0,i.RG)(n.$slots,"start-collapsible",{},()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)((0,s.R1)(y)),{style:{width:"12px",height:"12px"}}))])],10,["onClick"])):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",{class:(0,u.C4)([(0,s.R1)(r).e("dragger"),(0,s.R1)(c),(0,s.R1)(r).is("disabled",!e.resizable),(0,s.R1)(r).is("lazy",e.resizable&&e.lazy)]),style:(0,u.Tr)((0,s.R1)(l)),onMousedown:f,onTouchstart:p},null,38),e.endCollapsible?((0,i.uX)(),(0,i.CE)("div",{key:1,class:(0,u.C4)([(0,s.R1)(r).e("collapse-icon"),(0,s.R1)(r).e(`${e.layout}-collapse-icon-end`)]),onClick:n=>t("collapse",e.index,"end")},[(0,i.RG)(n.$slots,"end-collapsible",{},()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)((0,s.R1)(w)),{style:{width:"12px",height:"12px"}}))])],10,["onClick"])):(0,i.Q3)("v-if",!0)],6))}});var Hg=(0,m.A)(Kg,[["__file","split-bar.vue"]]);const Xg=(0,f.b_)({min:{type:[String,Number]},max:{type:[String,Number]},size:{type:[String,Number]},resizable:{type:Boolean,default:!0},collapsible:Boolean}),Ug={"update:size":e=>"number"===typeof e||"string"===typeof e},Gg="ElSplitterPanel",qg=(0,i.pM)({name:Gg}),Yg=(0,i.pM)({...qg,props:Xg,emits:Ug,setup(e,{expose:t,emit:n}){const r=e,o=(0,g.DU)("splitter-panel"),a=(0,i.WQ)(Ag);a||(0,w.$)(Gg,"usage: ");const{panels:l,layout:u,lazy:c,containerSize:d,pxSizes:f}=(0,s.QW)(a),{registerPanel:p,unregisterPanel:v,onCollapse:h,onMoveEnd:m,onMoveStart:b,onMoving:y}=a,R=(0,s.KR)(),C=(0,i.nI)(),x=C.uid,k=(0,s.KR)(0),E=(0,i.EW)(()=>l.value[k.value]),_=e=>{k.value=e},S=(0,i.EW)(()=>{var e;return E.value&&null!=(e=f.value[k.value])?e:0}),M=(0,i.EW)(()=>{var e;return E.value&&null!=(e=f.value[k.value+1])?e:0}),L=(0,i.EW)(()=>E.value?l.value[k.value+1]:null),A=(0,i.EW)(()=>{var e;return!!L.value&&(r.resizable&&(null==(e=L.value)?void 0:e.resizable)&&(0!==S.value||!r.min)&&(0!==M.value||!L.value.min))}),O=(0,i.EW)(()=>!!E.value&&k.value!==l.value.length-1),T=(0,i.EW)(()=>Vg(E.value,S.value,L.value,M.value)),I=(0,i.EW)(()=>Vg(L.value,M.value,E.value,S.value));function N(e){return Ng(e)?Tg(e)*d.value||0:Wg(e)?Ig(e):null!=e?e:0}let W=!1;(0,i.wB)(()=>r.size,()=>{if(!W&&E.value){if(!d.value)return void(E.value.size=r.size);const e=N(r.size),t=N(r.max),o=N(r.min),a=Math.min(Math.max(e,o||0),t||e);a!==e&&n("update:size",a),E.value.size=a}}),(0,i.wB)(()=>{var e;return null==(e=E.value)?void 0:e.size},e=>{e!==r.size&&(W=!0,n("update:size",e),(0,i.dY)(()=>W=!1))}),(0,i.wB)(()=>r.resizable,e=>{E.value&&(E.value.resizable=e)});const D=(0,s.Kh)({el:R.value,uid:x,getVnode:()=>C.vnode,setIndex:_,...r,collapsible:(0,i.EW)(()=>$g(r.collapsible))});return p(D),(0,i.xo)(()=>v(D)),t({splitterPanelRef:R}),(e,t)=>((0,i.uX)(),(0,i.CE)(i.FK,null,[(0,i.Lk)("div",(0,i.v6)({ref_key:"panelEl",ref:R,class:[(0,s.R1)(o).b()],style:{flexBasis:`${(0,s.R1)(S)}px`}},e.$attrs),[(0,i.RG)(e.$slots,"default")],16),(0,s.R1)(O)?((0,i.uX)(),(0,i.Wv)(Hg,{key:0,index:k.value,layout:(0,s.R1)(u),lazy:(0,s.R1)(c),resizable:(0,s.R1)(A),"start-collapsible":(0,s.R1)(T),"end-collapsible":(0,s.R1)(I),onMoveStart:(0,s.R1)(b),onMoving:(0,s.R1)(y),onMoveEnd:(0,s.R1)(m),onCollapse:(0,s.R1)(h)},{"start-collapsible":(0,i.k6)(()=>[(0,i.RG)(e.$slots,"start-collapsible")]),"end-collapsible":(0,i.k6)(()=>[(0,i.RG)(e.$slots,"end-collapsible")]),_:3},8,["index","layout","lazy","resizable","start-collapsible","end-collapsible","onMoveStart","onMoving","onMoveEnd","onCollapse"])):(0,i.Q3)("v-if",!0)],64))}});var Qg=(0,m.A)(Yg,[["__file","split-panel.vue"]]);const Zg=(0,E.GU)(zg,{SplitPanel:Qg}),Jg=(0,E.WM)(Qg);var eb=[_,S.KR,G,Ud,ne,ce,de.z_,fe.vp,fe.WZ,pe.S2,pe.fg,Ge,qe.Ik,vt,ht,hn,Zt,Rn,Ct.dI,Ct.$n,Ct.o5,Mn,Un,Gn,zn.o,Pr,Hr,Xr.H6,Ur.lX,Ur.Mb,Ur.LK,Ur.bZ,Ur.ZO,Va,La,ja.TS,ja.MF,Ka.kZ,Ha.fR,Xa.pw,Ua.dW,Ua.c6,Ua.Iy,tl,nl.US,nl.xE,W.tk,rl.Zq,ol.Tg,T.WK,al.lq,bl,El,ti,ni,ri,oi,ci,di.aQ,yi,wi.Vc,Ri.uN,Ci.ve,xt.ll,xt.Zh,xt.MQ,Ai,Pi,Ki,I.kA,Hi.AV,Hi.P9,Hi.EL,eu,cu,du,fu.B8,yu,ku,Iu,Ku,Hu,Xu.qi,Uu.Up,Uu.o8,Xd,Gd.q,Gd.v$,Jt.u,qd.$g,Mf,Ff,Hf,Xf,N.R7,fp,pp.qk,_p,tv,nv.j5,vv,Km,Hm,og,ag,fg,Sg,Zg,Jg];const tb="ElInfiniteScroll",nb=50,rb=200,ob=0,ab={delay:{type:Number,default:rb},distance:{type:Number,default:ob},disabled:{type:Boolean,default:!1},immediate:{type:Boolean,default:!0}},lb=(e,t)=>Object.entries(ab).reduce((n,[r,o])=>{var a,l;const{type:i,default:s}=o,u=e.getAttribute(`infinite-scroll-${r}`);let c=null!=(l=null!=(a=t[u])?a:u)?l:s;return c="false"!==c&&c,c=i(c),n[r]=Number.isNaN(c)?s:c,n},{}),ib=e=>{const{observer:t}=e[tb];t&&(t.disconnect(),delete e[tb].observer)},sb=(e,t)=>{const{container:n,containerEl:r,instance:o,observer:a,lastScrollTop:l}=e[tb],{disabled:i,distance:s}=lb(e,o),{clientHeight:u,scrollHeight:c,scrollTop:d}=r,f=d-l;if(e[tb].lastScrollTop=d,a||i||f<0)return;let p=!1;if(n===e)p=c-(u+d)<=s;else{const{clientTop:t,scrollHeight:n}=e,o=er(e,r);p=d+u>=o+t+n-s}p&&t.call(o)};function ub(e,t){const{containerEl:n,instance:r}=e[tb],{disabled:o}=lb(e,r);o||0===n.clientHeight||(n.scrollHeight<=n.clientHeight?t.call(r):ib(e))}const cb={async mounted(e,t){const{instance:n,value:r}=t;(0,Rl.b)({scope:tb,from:"the directive v-infinite-scroll",replacement:"the el-scrollbar infinite scroll",version:"3.0.0",ref:"https://element-plus.org/en-US/component/scrollbar#infinite-scroll"},!0),(0,u.Tn)(r)||(0,w.$)(tb,"'v-infinite-scroll' binding value must be a function"),await(0,i.dY)();const{delay:o,immediate:a}=lb(e,n),l=(0,b.Bo)(e,!0),s=l===window?document.documentElement:l,c=(0,Ze.A)(sb.bind(null,e,r),o);if(l){if(e[tb]={instance:n,container:l,containerEl:s,delay:o,cb:r,onScroll:c,lastScrollTop:s.scrollTop},a){const t=new MutationObserver((0,Ze.A)(ub.bind(null,e,r),nb));e[tb].observer=t,t.observe(e,{childList:!0,subtree:!0}),ub(e,r)}l.addEventListener("scroll",c)}},unmounted(e){if(!e[tb])return;const{container:t,onScroll:n}=e[tb];null==t||t.removeEventListener("scroll",n),ib(e)},async updated(e){if(e[tb]){const{containerEl:t,cb:n,observer:r}=e[tb];t.clientHeight&&r&&ub(e,n)}else await(0,i.dY)()}},db=cb;db.install=e=>{e.directive("InfiniteScroll",db)};const fb=db;var pb=n(55445),vb=n(99114);const hb={install(e){pb.A._context=e._context,vb.A._context=e._context,e.directive("loading",vb.A),e.config.globalProperties.$loading=pb.A},directive:vb.A,service:pb.A};var mb=n(51219),gb=n(12933);const bb=["primary","success","info","warning","error"],yb=(0,f.b_)({customClass:{type:String,default:""},dangerouslyUseHTMLString:Boolean,duration:{type:Number,default:4500},icon:{type:Y.Ze},id:{type:String,default:""},message:{type:(0,f.jq)([String,Object,Function]),default:""},offset:{type:Number,default:0},onClick:{type:(0,f.jq)(Function),default:()=>{}},onClose:{type:(0,f.jq)(Function),required:!0},position:{type:String,values:["top-right","top-left","bottom-right","bottom-left"],default:"top-right"},showClose:{type:Boolean,default:!0},title:{type:String,default:""},type:{type:String,values:[...bb,""],default:""},zIndex:Number,closeIcon:{type:Y.Ze,default:O.Close}}),wb={destroy:()=>!0},Rb=(0,i.pM)({name:"ElNotification"}),Cb=(0,i.pM)({...Rb,props:yb,emits:wb,setup(e,{expose:t}){const n=e,{ns:r,zIndex:o}=(0,a.ht)("notification"),{nextZIndex:l,currentZIndex:d}=o,f=(0,s.KR)(!1);let p;const v=(0,i.EW)(()=>{const e=n.type;return e&&Y.rz[n.type]?r.m(e):""}),h=(0,i.EW)(()=>n.type&&Y.rz[n.type]||n.icon),m=(0,i.EW)(()=>n.position.endsWith("right")?"right":"left"),g=(0,i.EW)(()=>n.position.startsWith("top")?"top":"bottom"),b=(0,i.EW)(()=>{var e;return{[g.value]:`${n.offset}px`,zIndex:null!=(e=n.zIndex)?e:d.value}});function y(){n.duration>0&&({stop:p}=(0,A.TO)(()=>{f.value&&R()},n.duration))}function w(){null==p||p()}function R(){f.value=!1}function C(e){const t=(0,V.CG)(e);switch(t){case j.R.delete:case j.R.backspace:w();break;case j.R.esc:f.value&&R();break;default:y();break}}return(0,i.sV)(()=>{y(),l(),f.value=!0}),(0,c.MLh)(document,"keydown",C),t({visible:f,close:R}),(e,t)=>((0,i.uX)(),(0,i.Wv)(M.eB,{name:(0,s.R1)(r).b("fade"),onBeforeLeave:e.onClose,onAfterLeave:t=>e.$emit("destroy"),persisted:""},{default:(0,i.k6)(()=>[(0,i.bo)((0,i.Lk)("div",{id:e.id,class:(0,u.C4)([(0,s.R1)(r).b(),e.customClass,(0,s.R1)(m)]),style:(0,u.Tr)((0,s.R1)(b)),role:"alert",onMouseenter:w,onMouseleave:y,onClick:e.onClick},[(0,s.R1)(h)?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:0,class:(0,u.C4)([(0,s.R1)(r).e("icon"),(0,s.R1)(v)])},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)((0,s.R1)(h))))]),_:1},8,["class"])):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(r).e("group"))},[(0,i.Lk)("h2",{class:(0,u.C4)((0,s.R1)(r).e("title")),textContent:(0,u.v_)(e.title)},null,10,["textContent"]),(0,i.bo)((0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(r).e("content")),style:(0,u.Tr)(e.title?void 0:{margin:0})},[(0,i.RG)(e.$slots,"default",{},()=>[e.dangerouslyUseHTMLString?((0,i.uX)(),(0,i.CE)(i.FK,{key:1},[(0,i.Q3)(" Caution here, message could've been compromised, never use user's input as message "),(0,i.Lk)("p",{innerHTML:e.message},null,8,["innerHTML"])],2112)):((0,i.uX)(),(0,i.CE)("p",{key:0},(0,u.v_)(e.message),1))])],6),[[M.aG,e.message]]),e.showClose?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:0,class:(0,u.C4)((0,s.R1)(r).e("closeBtn")),onClick:(0,M.D$)(R,["stop"])},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)(e.closeIcon)))]),_:1},8,["class","onClick"])):(0,i.Q3)("v-if",!0)],2)],46,["id","onClick"]),[[M.aG,f.value]])]),_:3},8,["name","onBeforeLeave","onAfterLeave"]))}});var xb=(0,m.A)(Cb,[["__file","notification.vue"]]);const kb={"top-left":[],"top-right":[],"bottom-left":[],"bottom-right":[]},Eb=16;let _b=1;const Sb=function(e={},t){if(!A.oc)return{close:()=>{}};((0,u.Kg)(e)||(0,i.vv)(e))&&(e={message:e});const n=e.position||"top-right";let r=e.offset||0;kb[n].forEach(({vm:e})=>{var t;r+=((null==(t=e.el)?void 0:t.offsetHeight)||0)+Eb}),r+=Eb;const o="notification_"+_b++,a=e.onClose,l={...e,offset:r,id:o,onClose:()=>{Mb(o,n,a)}};let s=document.body;(0,p.vq)(e.appendTo)?s=e.appendTo:(0,u.Kg)(e.appendTo)&&(s=document.querySelector(e.appendTo)),(0,p.vq)(s)||((0,w.U)("ElNotification","the appendTo option is not an HTMLElement. Falling back to document.body."),s=document.body);const c=document.createElement("div"),d=(0,i.bF)(xb,l,(0,u.Tn)(l.message)?l.message:(0,i.vv)(l.message)?()=>l.message:null);return d.appContext=(0,p.b0)(t)?Sb._context:t,d.props.onDestroy=()=>{(0,M.XX)(null,c)},(0,M.XX)(d,c),kb[n].push({vm:d}),s.appendChild(c.firstElementChild),{close:()=>{d.component.exposed.visible.value=!1}}};function Mb(e,t,n){const r=kb[t],o=r.findIndex(({vm:t})=>{var n;return(null==(n=t.component)?void 0:n.props.id)===e});if(-1===o)return;const{vm:a}=r[o];if(!a)return;null==n||n(a);const l=a.el.offsetHeight,i=t.split("-")[0];r.splice(o,1);const s=r.length;if(!(s<1))for(let u=o;u{e.component.exposed.visible.value=!1})}function Ab(e="top-right"){var t,n,r,o;let a=(null==(r=null==(n=null==(t=kb[e][0])?void 0:t.vm.component)?void 0:n.props)?void 0:r.offset)||0;for(const{vm:l}of kb[e])l.component.props.offset=a,a+=((null==(o=l.el)?void 0:o.offsetHeight)||0)+Eb}bb.forEach(e=>{Sb[e]=(t={},n)=>(((0,u.Kg)(t)||(0,i.vv)(t))&&(t={message:t}),Sb({...t,type:e},n))}),Sb.closeAll=Lb,Sb.updateOffsets=Ab,Sb._context=null;const Ob=(0,E._u)(Sb,"$notify");var Tb=[fb,hb,mb.nk,gb.s,Ob,wi.IK],Ib=l([...eb,...Tb])},16632:function(e,t,n){"use strict";var r=n(46518),o=n(44576),a=n(59143),l=n(34154),i=o.Uint8Array,s=!i||!i.prototype.setFromBase64||!function(){var e=new i([255,255,255,255,255]);try{return void e.setFromBase64("",null)}catch(t){}try{return void e.setFromBase64("a")}catch(t){}try{e.setFromBase64("MjYyZg===")}catch(t){return 50===e[0]&&54===e[1]&&50===e[2]&&255===e[3]&&255===e[4]}}();i&&r({target:"Uint8Array",proto:!0,forced:s},{setFromBase64:function(e){l(this);var t=a(e,arguments.length>1?arguments[1]:void 0,this,this.length);return{read:t.read,written:t.written}}})},16714:function(e,t,n){"use strict";n.d(t,{_q:function(){return f}});var r=n(56768),o=n(81968),a=n(96139),l=n(47378),i=n(93513);const s=(0,l.b_)({mask:{type:Boolean,default:!0},customMaskEvent:Boolean,overlayClass:{type:(0,l.jq)([String,Array,Object])},zIndex:{type:(0,l.jq)([String,Number])}}),u={click:e=>e instanceof MouseEvent},c="overlay";var d=(0,r.pM)({name:"ElOverlay",props:s,emits:u,setup(e,{slots:t,emit:n}){const l=(0,i.DU)(c),s=e=>{n("click",e)},{onClick:u,onMousedown:d,onMouseup:f}=(0,o.r)(e.customMaskEvent?void 0:s);return()=>e.mask?(0,r.bF)("div",{class:[l.b(),e.overlayClass],style:{zIndex:e.zIndex},onClick:u,onMousedown:d,onMouseup:f},[(0,r.RG)(t,"default")],a.Yn.STYLE|a.Yn.CLASS|a.Yn.PROPS,["onClick","onMouseup","onMousedown"]):(0,r.h)("div",{class:e.overlayClass,style:{zIndex:e.zIndex,position:"fixed",top:"0px",right:"0px",bottom:"0px",left:"0px"}},[(0,r.RG)(t,"default")])}});const f=d},16823:function(e){"use strict";var t=String;e.exports=function(e){try{return t(e)}catch(n){return"Object"}}},16829:function(e,t){"use strict";var n="fas",r="cloud",o=576,a=512,l=[9729],i="f0c2",s="M0 336c0 79.5 64.5 144 144 144l304 0c70.7 0 128-57.3 128-128 0-51.6-30.5-96.1-74.5-116.3 6.7-13.1 10.5-28 10.5-43.7 0-53-43-96-96-96-17.7 0-34.2 4.8-48.4 13.1-24.1-45.8-72.2-77.1-127.6-77.1-79.5 0-144 64.5-144 144 0 8 .7 15.9 1.9 23.5-56.9 19.2-97.9 73.1-97.9 136.5z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.jB=t.mw},17214:function(e,t,n){"use strict";var r=n(56001);t.mw={prefix:r.prefix,iconName:r.iconName,icon:[r.width,r.height,r.aliases,r.unicode,r.svgPathData]},t.MT=t.mw,r.prefix,r.iconName,r.width,r.height,r.aliases,r.unicode,r.svgPathData,r.aliases},17528:function(e,t){"use strict";function n(e){return function(t){return e(t)}}t.A=n},17582:function(e,t,n){"use strict";n.d(t,{A:function(){return P}});var r=n(12739),o=n(57179),a=1,l=2;function i(e,t,n,i){var s=n.length,u=s,c=!i;if(null==e)return!u;e=Object(e);while(s--){var d=n[s];if(c&&d[2]?d[1]!==e[d[0]]:!(d[0]in e))return!1}while(++s1;return t.has(1)&&t.clear(),{done:n,value:2}}}}},t=new Set([1,2,3,4]);return 3!==t.difference(e).size});r({target:"Set",proto:!0,real:!0,forced:s},{difference:o})},18014:function(e,t,n){"use strict";var r=n(91291),o=Math.min;e.exports=function(e){var t=r(e);return t>0?o(t,9007199254740991):0}},18095:function(e,t,n){"use strict";var r=n(11591),o=n(22799),a="[object Symbol]";function l(e){return"symbol"==typeof e||(0,o.A)(e)&&(0,r.A)(e)==a}t.A=l},18111:function(e,t,n){"use strict";var r=n(46518),o=n(44576),a=n(90679),l=n(28551),i=n(94901),s=n(42787),u=n(62106),c=n(97040),d=n(79039),f=n(39297),p=n(78227),v=n(57657).IteratorPrototype,h=n(43724),m=n(96395),g="constructor",b="Iterator",y=p("toStringTag"),w=TypeError,R=o[b],C=m||!i(R)||R.prototype!==v||!d(function(){R({})}),x=function(){if(a(this,v),s(this)===v)throw new w("Abstract class Iterator not directly constructable")},k=function(e,t){h?u(v,e,{configurable:!0,get:function(){return t},set:function(t){if(l(this),this===v)throw new w("You can't redefine this property");f(this,e)?this[e]=t:c(this,e,t)}}):v[e]=t};f(v,y)||k(y,b),!C&&f(v,g)&&v[g]!==Object||k(g,x),x.prototype=v,r({global:!0,constructor:!0,forced:C},{Iterator:x})},18237:function(e,t,n){"use strict";var r=n(46518),o=n(72652),a=n(79306),l=n(28551),i=n(1767),s=n(9539),u=n(84549),c=n(18745),d=n(79039),f=TypeError,p=d(function(){[].keys().reduce(function(){},void 0)}),v=!p&&u("reduce",f);r({target:"Iterator",proto:!0,real:!0,forced:p||v},{reduce:function(e){l(this);try{a(e)}catch(d){s(this,"throw",d)}var t=arguments.length<2,n=t?void 0:arguments[1];if(v)return c(v,this,t?[e]:[e,n]);var r=i(this),u=0;if(o(r,function(r){t?(t=!1,n=r):n=e(n,r,u),u++},{IS_RECORD:!0}),t)throw new f("Reduce of empty iterator with no initial value");return n}})},18311:function(e,t,n){"use strict";var r=n(39578),o="object"==typeof exports&&exports&&!exports.nodeType&&exports,a=o&&"object"==typeof module&&module&&!module.nodeType&&module,l=a&&a.exports===o,i=l?r.A.Buffer:void 0,s=i?i.allocUnsafe:void 0;function u(e,t){if(t)return e.slice();var n=e.length,r=s?s(n):new e.constructor(n);return e.copy(r),r}t.A=u},18422:function(e,t){"use strict";var n="fas",r="download",o=448,a=512,l=[],i="f019",s="M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 210.7-41.4-41.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 242.7 256 32zM64 320c-35.3 0-64 28.7-64 64l0 32c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-32c0-35.3-28.7-64-64-64l-46.9 0-56.6 56.6c-31.2 31.2-81.9 31.2-113.1 0L110.9 320 64 320zm304 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.cb=t.mw},18579:function(e,t){"use strict";var n="fas",r="shield",o=512,a=512,l=[128737,"shield-blank"],i="f132",s="M256 0c4.6 0 9.2 1 13.4 2.9L457.8 82.8c22 9.3 38.4 31 38.3 57.2-.5 99.2-41.3 280.7-213.6 363.2-16.7 8-36.1 8-52.8 0-172.4-82.5-213.1-264-213.6-363.2-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.9 1 251.4 0 256 0z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.V2=t.mw},18624:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n="fas",r="clock-rotate-left",o=576,a=512,l=["history"],i="f1da",s="M288 64c106 0 192 86 192 192S394 448 288 448c-65.2 0-122.9-32.5-157.6-82.3-10.1-14.5-30.1-18-44.6-7.9s-18 30.1-7.9 44.6C124.1 468.6 201 512 288 512 429.4 512 544 397.4 544 256S429.4 0 288 0C202.3 0 126.5 42.1 80 106.7L80 80c0-17.7-14.3-32-32-32S16 62.3 16 80l0 112c0 17.7 14.3 32 32 32l24.6 0c.5 0 1 0 1.5 0l86 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-38.3 0C154.9 102.6 217 64 288 64zm24 88c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 104c0 6.4 2.5 12.5 7 17l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-65-65 0-94.1z";t.definition={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.faClockRotateLeft=t.definition,t.prefix=n,t.iconName=r,t.width=o,t.height=a,t.ligatures=l,t.unicode=i,t.svgPathData=s,t.aliases=l},18727:function(e,t,n){"use strict";var r=n(36955);e.exports=function(e){var t=r(e);return"BigInt64Array"===t||"BigUint64Array"===t}},18742:function(e,t){"use strict";var n="fas",r="paper-plane",o=576,a=512,l=[61913],i="f1d8",s="M536.4-26.3c9.8-3.5 20.6-1 28 6.3s9.8 18.2 6.3 28l-178 496.9c-5 13.9-18.1 23.1-32.8 23.1-14.2 0-27-8.6-32.3-21.7l-64.2-158c-4.5-11-2.5-23.6 5.2-32.6l94.5-112.4c5.1-6.1 4.7-15-.9-20.6s-14.6-6-20.6-.9L229.2 276.1c-9.1 7.6-21.6 9.6-32.6 5.2L38.1 216.8c-13.1-5.3-21.7-18.1-21.7-32.3 0-14.7 9.2-27.8 23.1-32.8l496.9-178z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.is=t.mw},18745:function(e,t,n){"use strict";var r=n(40616),o=Function.prototype,a=o.apply,l=o.call;e.exports="object"==typeof Reflect&&Reflect.apply||(r?l.bind(a):function(){return l.apply(a,arguments)})},19223:function(e,t){"use strict";var n="fas",r="chevron-down",o=448,a=512,l=[],i="f078",s="M201.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 338.7 54.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.Jt=t.mw},19462:function(e,t,n){"use strict";var r=n(69565),o=n(2360),a=n(66699),l=n(56279),i=n(78227),s=n(91181),u=n(55966),c=n(57657).IteratorPrototype,d=n(62529),f=n(9539),p=n(91385),v=i("toStringTag"),h="IteratorHelper",m="WrapForValidIterator",g="normal",b="throw",y=s.set,w=function(e){var t=s.getterFor(e?m:h);return l(o(c),{next:function(){var n=t(this);if(e)return n.nextHandler();if(n.done)return d(void 0,!0);try{var r=n.nextHandler();return n.returnHandlerResult?r:d(r,n.done)}catch(o){throw n.done=!0,o}},return:function(){var n=t(this),o=n.iterator;if(n.done=!0,e){var a=u(o,"return");return a?r(a,o):d(void 0,!0)}if(n.inner)try{f(n.inner.iterator,g)}catch(l){return f(o,b,l)}if(n.openIters)try{p(n.openIters,g)}catch(l){return f(o,b,l)}return o&&f(o,g),d(void 0,!0)}})},R=w(!0),C=w(!1);a(C,v,"Iterator Helper"),e.exports=function(e,t,n){var r=function(r,o){o?(o.iterator=r.iterator,o.next=r.next):o=r,o.type=t?m:h,o.returnHandlerResult=!!n,o.nextHandler=e,o.counter=0,o.done=!1,y(this,o)};return r.prototype=t?R:C,r}},19615:function(e,t,n){"use strict";n.d(t,{A:function(){return p}});var r=n(12623),o=n(20203),a=n(75014);function l(e,t,n){var l=-1,i=t.length,s={};while(++lc)if(u=i[c++],u!==u)return!0}else for(;s>c;c++)if((e||c in i)&&i[c]===n)return e||c||0;return!e&&-1}};e.exports={includes:l(!0),indexOf:l(!1)}},20017:function(e,t,n){"use strict";n.d(t,{qE:function(){return w},AI:function(){return h},bW:function(){return M},uA:function(){return h},D_:function(){return S},oc:function(){return m},C8:function(){return g},Tn:function(){return b},un:function(){return C},Kg:function(){return y},lQ:function(){return R},jN:function(){return O},V7:function(){return I},x_:function(){return x},rd:function(){return W},Uo:function(){return L},xD:function(){return T},k3:function(){return N},TO:function(){return D}});n(44114),n(18111),n(81148),n(22489),n(20116),n(7588),n(61701),n(18237),n(13579),n(17642),n(58004),n(33853),n(45876),n(32475),n(15024),n(31698);var r=n(90144),o=n(56768);var a,l=Object.defineProperty,i=Object.defineProperties,s=Object.getOwnPropertyDescriptors,u=Object.getOwnPropertySymbols,c=Object.prototype.hasOwnProperty,d=Object.prototype.propertyIsEnumerable,f=(e,t,n)=>t in e?l(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,p=(e,t)=>{for(var n in t||(t={}))c.call(t,n)&&f(e,n,t[n]);if(u)for(var n of u(t))d.call(t,n)&&f(e,n,t[n]);return e},v=(e,t)=>i(e,s(t));function h(e,t){var n;const a=(0,r.IJ)();return(0,o.nT)(()=>{a.value=e()},v(p({},t),{flush:null!=(n=null==t?void 0:t.flush)?n:"sync"})),(0,r.tB)(a)}const m="undefined"!==typeof window,g=e=>"undefined"!==typeof e,b=(Object.prototype.toString,e=>"function"===typeof e),y=e=>"string"===typeof e,w=(e,t,n)=>Math.min(n,Math.max(t,e)),R=()=>{},C=m&&(null==(a=null==window?void 0:window.navigator)?void 0:a.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);function x(e){return"function"===typeof e?e():(0,r.R1)(e)}function k(e,t){function n(...n){return new Promise((r,o)=>{Promise.resolve(e(()=>t.apply(this,n),{fn:t,thisArg:this,args:n})).then(r).catch(o)})}return n}function E(e,t={}){let n,r,o=R;const a=e=>{clearTimeout(e),o(),o=R},l=l=>{const i=x(e),s=x(t.maxWait);return n&&a(n),i<=0||void 0!==s&&s<=0?(r&&(a(r),r=null),Promise.resolve(l())):new Promise((e,u)=>{o=t.rejectOnCancel?u:e,s&&!r&&(r=setTimeout(()=>{n&&a(n),r=null,e(l())},s)),n=setTimeout(()=>{r&&a(r),r=null,e(l())},i)})};return l}function _(e,t=!0,n=!0,r=!1){let o,a,l=0,i=!0,s=R;const u=()=>{o&&(clearTimeout(o),o=void 0,s(),s=R)},c=c=>{const d=x(e),f=Date.now()-l,p=()=>a=c();return u(),d<=0?(l=Date.now(),p()):(f>d&&(n||!i)?(l=Date.now(),p()):t&&(a=new Promise((e,t)=>{s=r?t:e,o=setTimeout(()=>{l=Date.now(),i=!0,e(p()),u()},Math.max(0,d-f))})),n||o||(o=setTimeout(()=>i=!0,d)),i=!1,a)};return c}function S(e){return e}function M(e,t){let n,a,l;const i=(0,r.KR)(!0),s=()=>{i.value=!0,l()};(0,o.wB)(e,s,{flush:"sync"});const u=b(t)?t:t.get,c=b(t)?void 0:t.set,d=(0,r.rY)((e,t)=>(a=e,l=t,{get(){return i.value&&(n=u(),i.value=!1),a(),n},set(e){null==c||c(e)}}));return Object.isExtensible(d)&&(d.trigger=s),d}function L(e){return!!(0,r.o5)()&&((0,r.jr)(e),!0)}Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;function A(e){if(!(0,r.i9)(e))return(0,r.Kh)(e);const t=new Proxy({},{get(t,n,o){return(0,r.R1)(Reflect.get(e.value,n,o))},set(t,n,o){return(0,r.i9)(e.value[n])&&!(0,r.i9)(o)?e.value[n].value=o:e.value[n]=o,!0},deleteProperty(t,n){return Reflect.deleteProperty(e.value,n)},has(t,n){return Reflect.has(e.value,n)},ownKeys(){return Object.keys(e.value)},getOwnPropertyDescriptor(){return{enumerable:!0,configurable:!0}}});return(0,r.Kh)(t)}function O(e){return A((0,o.EW)(e))}function T(e,t=200,n={}){return k(E(t,n),e)}function I(e,t=200,n={}){const a=(0,r.KR)(e.value),l=T(()=>{a.value=e.value},t,n);return(0,o.wB)(e,()=>l()),a}function N(e,t=200,n=!1,r=!0,o=!1){return k(_(t,n,r,o),e)}Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;function W(e,t=!0){(0,o.nI)()?(0,o.sV)(e):t?e():(0,o.dY)(e)}Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;function D(e,t,n={}){const{immediate:o=!0}=n,a=(0,r.KR)(!1);let l=null;function i(){l&&(clearTimeout(l),l=null)}function s(){a.value=!1,i()}function u(...n){i(),a.value=!0,l=setTimeout(()=>{a.value=!1,l=null,e(...n)},x(t))}return o&&(a.value=!0,m&&u()),L(s),{isPending:(0,r.tB)(a),start:u,stop:s}}Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable},20034:function(e,t,n){"use strict";var r=n(94901);e.exports=function(e){return"object"==typeof e?null!==e:r(e)}},20037:function(e,t,n){"use strict";var r=n(69937),o=n(35867),a=n(37431);function l(e,t){return(0,a.A)((0,o.A)(e,t,r.A),e+"")}t.A=l},20090:function(e,t,n){"use strict";n.d(t,{s:function(){return o}});var r=n(47378);const o=(0,r.b_)({arrowOffset:{type:Number,default:5}})},20116:function(e,t,n){"use strict";var r=n(46518),o=n(69565),a=n(72652),l=n(79306),i=n(28551),s=n(1767),u=n(9539),c=n(84549),d=c("find",TypeError);r({target:"Iterator",proto:!0,real:!0,forced:d},{find:function(e){i(this);try{l(e)}catch(r){u(this,"throw",r)}if(d)return o(d,this,e);var t=s(this),n=0;return a(t,function(t,r){if(e(t,n++))return r(t)},{IS_RECORD:!0,INTERRUPTED:!0}).result}})},20203:function(e,t,n){"use strict";var r=n(41018),o=n(75014),a=n(22676),l=n(60168),i=n(13708);function s(e,t,n,s){if(!(0,l.A)(e))return e;t=(0,o.A)(t,e);var u=-1,c=t.length,d=c-1,f=e;while(null!=f&&++ue.message,e=>{var t,r;Object.assign(u,null!=(r=null==(t=null==n?void 0:n.value)?void 0:t.message)?r:{},null!=e?e:{})},{immediate:!0,deep:!0}),()=>(0,r.RG)(t,"default",{config:null==n?void 0:n.value})}})},21862:function(){},21872:function(e,t){"use strict";var n="fas",r="robot",o=640,a=512,l=[129302],i="f544",s="M352 0c0-17.7-14.3-32-32-32S288-17.7 288 0l0 64-96 0c-53 0-96 43-96 96l0 224c0 53 43 96 96 96l256 0c53 0 96-43 96-96l0-224c0-53-43-96-96-96l-96 0 0-64zM160 368c0-13.3 10.7-24 24-24l32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0c-13.3 0-24-10.7-24-24zm120 0c0-13.3 10.7-24 24-24l32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0c-13.3 0-24-10.7-24-24zm120 0c0-13.3 10.7-24 24-24l32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0c-13.3 0-24-10.7-24-24zM224 176a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm144 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM64 224c0-17.7-14.3-32-32-32S0 206.3 0 224l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96zm544-32c-17.7 0-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96c0-17.7-14.3-32-32-32z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.UB=t.mw},22195:function(e,t,n){"use strict";var r=n(79504),o=r({}.toString),a=r("".slice);e.exports=function(e){return a(o(e),8,-1)}},22489:function(e,t,n){"use strict";var r=n(46518),o=n(69565),a=n(79306),l=n(28551),i=n(1767),s=n(19462),u=n(96319),c=n(96395),d=n(9539),f=n(30684),p=n(84549),v=!c&&!f("filter",function(){}),h=!c&&!v&&p("filter",TypeError),m=c||v||h,g=s(function(){var e,t,n,r=this.iterator,a=this.predicate,i=this.next;while(1){if(e=l(o(i,r)),t=this.done=!!e.done,t)return;if(n=e.value,u(r,a,[n,this.counter++],!0))return n}});r({target:"Iterator",proto:!0,real:!0,forced:m},{filter:function(e){l(this);try{a(e)}catch(t){d(this,"throw",t)}return h?o(h,this,e):new g(i(this),{predicate:e})}})},22676:function(e,t){"use strict";var n=9007199254740991,r=/^(?:0|[1-9]\d*)$/;function o(e,t){var o=typeof e;return t=null==t?n:t,!!t&&("number"==o||"symbol"!=o&&r.test(e))&&e>-1&&e%1==0&&e{const{o:n,i:r,u:o}=e;let a,l=n;const i=(e,t)=>{const n=l,i=e,s=t||(r?!r(n,i):n!==i);return(s||o)&&(l=i,a=n),[l,s,a]},s=e=>i(t(l,a),e),u=e=>[l,!!e,a];return[t?s:i,u]},o="undefined"!==typeof window&&"undefined"!==typeof HTMLElement&&!!window.document,a=o?window:{},l=Math.max,i=Math.min,s=Math.round,u=Math.abs,c=Math.sign,d=a.cancelAnimationFrame,f=a.requestAnimationFrame,p=a.setTimeout,v=a.clearTimeout,h=e=>"undefined"!==typeof a[e]?a[e]:void 0,m=h("MutationObserver"),g=h("IntersectionObserver"),b=h("ResizeObserver"),y=h("ScrollTimeline"),w=e=>void 0===e,R=e=>null===e,C=e=>"number"===typeof e,x=e=>"string"===typeof e,k=e=>"boolean"===typeof e,E=e=>"function"===typeof e,_=e=>Array.isArray(e),S=e=>"object"===typeof e&&!_(e)&&!R(e),M=e=>{const t=!!e&&e.length,n=C(t)&&t>-1&&t%1==0;return!!(_(e)||!E(e)&&n)&&(!(t>0&&S(e))||t-1 in e)},L=e=>!!e&&e.constructor===Object,A=e=>e instanceof HTMLElement,O=e=>e instanceof Element;function T(e,t){if(M(e)){for(let n=0;nt(e[n],n,e));return e}const I=(e,t)=>e.indexOf(t)>=0,N=(e,t)=>e.concat(t),W=(e,t,n)=>(!x(t)&&M(t)?Array.prototype.push.apply(e,t):e.push(t),e),D=e=>Array.from(e||[]),P=e=>_(e)?e:!x(e)&&M(e)?D(e):[e],F=e=>!!e&&!e.length,B=e=>D(new Set(e)),z=(e,t,n)=>{const r=e=>!e||e.apply(void 0,t||[]);T(e,r),n||(e.length=0)},$="paddingTop",V="paddingRight",j="paddingLeft",K="paddingBottom",H="marginLeft",X="marginRight",U="marginBottom",G="overflowX",q="overflowY",Y="width",Q="height",Z="visible",J="hidden",ee="scroll",te=e=>{const t=String(e||"");return t?t[0].toUpperCase()+t.slice(1):""},ne=(e,t,n,r)=>{if(e&&t){let r=!0;return T(n,n=>{const o=e[n],a=t[n];o!==a&&(r=!1)}),r}return!1},re=(e,t)=>ne(e,t,["w","h"]),oe=(e,t)=>ne(e,t,["x","y"]),ae=(e,t)=>ne(e,t,["t","r","b","l"]),le=(e,...t)=>e.bind(0,...t),ie=e=>{let t;const n=e?p:f,r=e?v:d;return[o=>{r(t),t=n(()=>o(),E(e)?e():e)},()=>r(t)]},se=e=>{const t=E(e)?e():e;if(C(t)){const e=t?p:f,n=t?v:d;return r=>{const o=e(()=>r(),t);return()=>{n(o)}}}return t&&t._},ue=(e,t)=>{const{p:n,v:r,S:o,m:a}=t||{};let l,i,s,u;const c=function(t){i&&i(),l&&l(),u=i=l=s=void 0,e.apply(this,t)},d=e=>a&&s?a(s,e):e,f=()=>{i&&s&&c(d(s)||s)},p=function(){const e=D(arguments),t=se(n);if(t){const n="function"===typeof o?o():o,a=se(r),p=d(e),v=p||e,h=c.bind(0,v);i&&i(),n&&!u?(h(),u=!0,i=t(()=>u=void 0)):(i=t(h),a&&!l&&(l=a(f))),s=v}else c(e)};return p.O=f,p},ce=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),de=e=>e?Object.keys(e):[],fe=(e,t,n,r,o,a,l)=>{const i=[t,n,r,o,a,l];return"object"===typeof e&&!R(e)||E(e)||(e={}),T(i,t=>{T(t,(n,r)=>{const o=t[r];if(e===o)return!0;const a=_(o);if(o&&L(o)){const t=e[r];let n=t;a&&!_(t)?n=[]:a||L(t)||(n={}),e[r]=fe(n,o)}else e[r]=a?o.slice():o})}),e},pe=(e,t)=>T(fe({},e),(e,t,n)=>{void 0===e?delete n[t]:e&&L(e)&&(n[t]=pe(e))}),ve=e=>!de(e).length,he=()=>{},me=(e,t,n)=>l(e,i(t,n)),ge=e=>B((_(e)?e:(e||"").split(" ")).filter(e=>e)),be=(e,t)=>e&&e.getAttribute(t),ye=(e,t)=>e&&e.hasAttribute(t),we=(e,t,n)=>{T(ge(t),t=>{e&&e.setAttribute(t,String(n||""))})},Re=(e,t)=>{T(ge(t),t=>e&&e.removeAttribute(t))},Ce=(e,t)=>{const n=ge(be(e,t)),r=le(we,e,t),o=(e,t)=>{const r=new Set(n);return T(ge(e),e=>{r[t](e)}),D(r).join(" ")};return{C:e=>r(o(e,"delete")),$:e=>r(o(e,"add")),H:e=>{const t=ge(e);return t.reduce((e,t)=>e&&n.includes(t),t.length>0)}}},xe=(e,t,n)=>(Ce(e,t).C(n),le(ke,e,t,n)),ke=(e,t,n)=>(Ce(e,t).$(n),le(xe,e,t,n)),Ee=(e,t,n,r)=>(r?ke:xe)(e,t,n),_e=(e,t,n)=>Ce(e,t).H(n),Se=e=>Ce(e,"class"),Me=(e,t)=>{Se(e).C(t)},Le=(e,t)=>(Se(e).$(t),le(Me,e,t)),Ae=(e,t)=>{const n=t?O(t)&&t:document;return n?D(n.querySelectorAll(e)):[]},Oe=(e,t)=>{const n=t?O(t)&&t:document;return n&&n.querySelector(e)},Te=(e,t)=>O(e)&&e.matches(t),Ie=e=>Te(e,"body"),Ne=e=>e?D(e.childNodes):[],We=e=>e&&e.parentElement,De=(e,t)=>O(e)&&e.closest(t),Pe=e=>document.activeElement,Fe=(e,t,n)=>{const r=De(e,t),o=e&&Oe(n,r),a=De(o,t)===r;return!(!r||!o)&&(r===e||o===e||a&&De(De(e,n),t)!==r)},Be=e=>{T(P(e),e=>{const t=We(e);e&&t&&t.removeChild(e)})},ze=(e,t)=>le(Be,e&&t&&T(P(t),t=>{t&&e.appendChild(t)}));let $e;const Ve=()=>$e,je=e=>{$e=e},Ke=e=>{const t=document.createElement("div");return we(t,"class",e),t},He=e=>{const t=Ke(),n=Ve(),r=e.trim();return t.innerHTML=n?n.createHTML(r):r,T(Ne(t),e=>Be(e))},Xe=(e,t)=>e.getPropertyValue(t)||e[t]||"",Ue=e=>{const t=e||0;return isFinite(t)?t:0},Ge=e=>Ue(parseFloat(e||"")),qe=e=>Math.round(1e4*e)/1e4,Ye=e=>`${qe(Ue(e))}px`;function Qe(e,t){e&&t&&T(t,(t,n)=>{try{const r=e.style,o=R(t)||k(t)?"":C(t)?Ye(t):t;0===n.indexOf("--")?r.setProperty(n,o):r[n]=o}catch(i){}})}function Ze(e,t,n){const r=x(t);let o=r?"":{};if(e){const l=a.getComputedStyle(e,n)||e.style;o=r?Xe(l,t):D(t).reduce((e,t)=>(e[t]=Xe(l,t),e),o)}return o}const Je=(e,t,n)=>{const r=t?`${t}-`:"",o=n?`-${n}`:"",a=`${r}top${o}`,l=`${r}right${o}`,i=`${r}bottom${o}`,s=`${r}left${o}`,u=Ze(e,[a,l,i,s]);return{t:Ge(u[a]),r:Ge(u[l]),b:Ge(u[i]),l:Ge(u[s])}},et=(e,t)=>"translate"+(S(e)?`(${e.x},${e.y})`:`${t?"X":"Y"}(${e})`),tt=e=>!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length),nt={w:0,h:0},rt=(e,t)=>t?{w:t[`${e}Width`],h:t[`${e}Height`]}:nt,ot=e=>rt("inner",e||a),at=le(rt,"offset"),lt=le(rt,"client"),it=le(rt,"scroll"),st=e=>{const t=parseFloat(Ze(e,Y))||0,n=parseFloat(Ze(e,Q))||0;return{w:t-s(t),h:n-s(n)}},ut=e=>e.getBoundingClientRect(),ct=e=>!!e&&tt(e),dt=e=>!(!e||!e[Q]&&!e[Y]),ft=(e,t)=>{const n=dt(e),r=dt(t);return!r&&n},pt=(e,t,n,r)=>{T(ge(t),t=>{e&&e.removeEventListener(t,n,r)})},vt=(e,t,n,r)=>{var o;const a=null==(o=r&&r.I)||o,l=r&&r.A||!1,i=r&&r.T||!1,s={passive:a,capture:l};return le(z,ge(t).map(t=>{const r=i?o=>{pt(e,t,r,l),n&&n(o)}:n;return e&&e.addEventListener(t,r,s),le(pt,e,t,r,l)}))},ht=e=>e.stopPropagation(),mt=e=>e.preventDefault(),gt=e=>ht(e)||mt(e),bt=(e,t)=>{const{x:n,y:r}=C(t)?{x:t,y:t}:t||{};C(n)&&(e.scrollLeft=n),C(r)&&(e.scrollTop=r)},yt=e=>({x:e.scrollLeft,y:e.scrollTop}),wt=()=>({D:{x:0,y:0},M:{x:0,y:0}}),Rt=(e,t)=>{const{D:n,M:r}=e,{w:o,h:a}=t,l=(e,t,n)=>{let r=c(e)*n,o=c(t)*n;if(r===o){const n=u(e),a=u(t);o=n>a?0:o,r=n{const n=(e,t)=>0===e&&e<=t;return{x:n(e.x,t.x),y:n(e.y,t.y)}},xt=({D:e,M:t},n)=>{const r=(e,t,n)=>me(0,1,(e-n)/(e-t)||0);return{x:r(e.x,t.x,n.x),y:r(e.y,t.y,n.y)}},kt=e=>{e&&e.focus&&e.focus({preventScroll:!0,focusVisible:!1})},Et=(e,t)=>{T(P(t),e)},_t=e=>{const t=new Map,n=(e,n)=>{if(e){const r=t.get(e);Et(e=>{r&&r[e?"delete":"clear"](e)},n)}else t.forEach(e=>{e.clear()}),t.clear()},r=(e,o)=>{if(x(e)){const r=t.get(e)||new Set;return t.set(e,r),Et(e=>{E(e)&&r.add(e)},o),le(n,e,o)}k(o)&&o&&n();const a=de(e),l=[];return T(a,t=>{const n=e[t];n&&W(l,r(t,n))}),le(z,l)},o=(e,n)=>{T(D(t.get(e)),e=>{n&&!F(n)?e.apply(0,n):e()})};return r(e||{}),[r,n,o]},St={},Mt={},Lt=e=>{T(e,e=>T(e,(t,n)=>{St[n]=e[n]}))},At=(e,t,n)=>de(e).map(r=>{const{static:o,instance:a}=e[r],[l,i,s]=n||[],u=n?a:o;if(u){const e=n?u(l,i,t):u(t);return(s||Mt)[r]=e}}),Ot=e=>Mt[e],Tt="__osOptionsValidationPlugin",It="data-overlayscrollbars",Nt="os-environment",Wt=`${Nt}-scrollbar-hidden`,Dt=`${It}-initialize`,Pt="noClipping",Ft=`${It}-body`,Bt=It,zt="host",$t=`${It}-viewport`,Vt=G,jt=q,Kt="arrange",Ht="measuring",Xt="scrolling",Ut="scrollbarHidden",Gt="noContent",qt=`${It}-padding`,Yt=`${It}-content`,Qt="os-size-observer",Zt=`${Qt}-appear`,Jt=`${Qt}-listener`,en="os-trinsic-observer",tn="os-theme-none",nn="os-scrollbar",rn=`${nn}-rtl`,on=`${nn}-horizontal`,an=`${nn}-vertical`,ln=`${nn}-track`,sn=`${nn}-handle`,un=`${nn}-visible`,cn=`${nn}-cornerless`,dn=`${nn}-interaction`,fn=`${nn}-unusable`,pn=`${nn}-auto-hide`,vn=`${pn}-hidden`,hn=`${nn}-wheel`,mn=`${ln}-interactive`,gn=`${sn}-interactive`,bn="__osSizeObserverPlugin",yn=(e,t)=>{const{k:n}=t,[r,o]=e("showNativeOverlaidScrollbars");return[r&&n.x&&n.y,o]},wn=e=>0===e.indexOf(Z),Rn=e=>e.replace(`${Z}-`,""),Cn=(e,t)=>{if("auto"===e)return t?ee:J;const n=e||J;return[J,ee,Z].includes(n)?n:J},xn=(e,t)=>{const{overflowX:n,overflowY:r}=Ze(e,[G,q]);return{x:Cn(n,t.x),y:Cn(r,t.y)}},kn="__osScrollbarsHidingPlugin",En="__osClickScrollPlugin",_n=e=>JSON.stringify(e,(e,t)=>{if(E(t))throw 0;return t}),Sn=(e,t)=>e?`${t}`.split(".").reduce((e,t)=>e&&ce(e,t)?e[t]:void 0,e):void 0,Mn=[0,33],Ln=[33,99],An=[222,666,!0],On={paddingAbsolute:!1,showNativeOverlaidScrollbars:!1,update:{elementEvents:[["img","load"]],debounce:{mutation:Mn,resize:null,event:Ln,env:An},attributes:null,ignoreMutation:null},overflow:{x:"scroll",y:"scroll"},scrollbars:{theme:"os-theme-dark",visibility:"auto",autoHide:"never",autoHideDelay:1300,autoHideSuspend:!1,dragScroll:!0,clickScroll:!1,pointers:["mouse","touch","pen"]}},Tn=(e,t)=>{const n={},r=N(de(t),de(e));return T(r,r=>{const o=e[r],a=t[r];if(S(o)&&S(a))fe(n[r]={},Tn(o,a)),ve(n[r])&&delete n[r];else if(ce(t,r)&&a!==o){let e=!0;if(_(o)||_(a))try{_n(o)===_n(a)&&(e=!1)}catch(c){}e&&(n[r]=a)}}),n},In=(e,t,n)=>r=>[Sn(e,r),n||void 0!==Sn(t,r)];let Nn;const Wn=()=>Nn,Dn=e=>{Nn=e};let Pn;const Fn=()=>{const e=(e,t,n)=>{ze(document.body,e),ze(document.body,e);const r=lt(e),o=at(e),a=st(t);return n&&Be(e),{x:o.h-r.h+a.h,y:o.w-r.w+a.w}},t=e=>{let t=!1;const n=Le(e,Wt);try{t="none"===Ze(e,"scrollbar-width")||"none"===Ze(e,"display","::-webkit-scrollbar")}catch(l){}return n(),t},n=`.${Nt}{scroll-behavior:auto!important;position:fixed;opacity:0;visibility:hidden;overflow:scroll;height:200px;width:200px;z-index:-1}.${Nt} div{width:200%;height:200%;margin:10px 0}.${Wt}{scrollbar-width:none!important}.${Wt}::-webkit-scrollbar,.${Wt}::-webkit-scrollbar-corner{appearance:none!important;display:none!important;width:0!important;height:0!important}`,o=He(`
`),l=o[0],i=l.firstChild,s=l.lastChild,u=Wn();u&&(s.nonce=u);const[c,,d]=_t(),[f,p]=r({o:e(l,i),i:oe},le(e,l,i,!0)),[v]=p(),h=t(l),m={x:0===v.x,y:0===v.y},g={elements:{host:null,padding:!h,viewport:e=>h&&Ie(e)&&e,content:!1},scrollbars:{slot:!0},cancel:{nativeScrollbarsOverlaid:!1,body:null}},b=fe({},On),w=le(fe,{},b),R=le(fe,{},g),C={P:v,k:m,U:h,J:!!y,G:le(c,"r"),K:R,Z:e=>fe(g,e)&&R(),tt:w,nt:e=>fe(b,e)&&w(),ot:fe({},g),st:fe({},b)};if(Re(l,"style"),Be(l),vt(a,"resize",()=>{d("r",[])}),E(a.matchMedia)&&!h&&(!m.x||!m.y)){const e=t=>{const n=a.matchMedia(`(resolution: ${a.devicePixelRatio}dppx)`);vt(n,"change",()=>{t(),e(t)},{T:!0})};e(()=>{const[e,t]=f();fe(C.P,e),d("r",[t])})}return C},Bn=()=>(Pn||(Pn=Fn()),Pn),zn=(e,t,n)=>{let r=!1;const o=!!n&&new WeakMap,a=()=>{r=!0},l=a=>{if(o&&n){const l=n.map(t=>{const[n,r]=t||[],o=r&&n?(a||Ae)(n,e):[];return[o,r]});T(l,n=>T(n[0],a=>{const l=n[1],i=o.get(a)||[],s=e.contains(a);if(s&&l){const e=vt(a,l,n=>{r?(e(),o.delete(a)):t(n)});o.set(a,W(i,e))}else z(i),o.delete(a)}))}};return l(),[a,l]},$n=(e,t,n,r)=>{let o=!1;const{et:a,ct:l,rt:i,it:s,lt:u,ut:c}=r||{},[d,f]=zn(e,()=>o&&n(!0),i),p=a||[],v=l||[],h=N(p,v),g=(o,a)=>{if(!F(a)){const l=u||he,i=c||he,d=[],p=[];let h=!1,m=!1;if(T(a,n=>{const{attributeName:o,target:a,type:u,oldValue:c,addedNodes:f,removedNodes:g}=n,b="attributes"===u,y="childList"===u,w=e===a,R=b&&o,C=R&&be(a,o||""),k=x(C)?C:null,E=R&&c!==k,_=I(v,o)&&E;if(t&&(y||!w)){const t=b&&E,u=t&&s&&Te(a,s),p=u?!l(a,o,c,k):!b||t,v=p&&!i(n,!!u,e,r);T(f,e=>W(d,e)),T(g,e=>W(d,e)),m=m||v}!t&&w&&E&&!l(a,o,c,k)&&(W(p,o),h=h||_)}),f(e=>B(d).reduce((t,n)=>(W(t,Ae(e,n)),Te(n,e)?W(t,n):t),[])),t)return!o&&m&&n(!1),[!1];if(!F(p)||h){const e=[B(p),h];return o||n.apply(0,e),e}}},b=new m(le(g,!1));return[()=>(b.observe(e,{attributes:!0,attributeOldValue:!0,attributeFilter:h,subtree:t,childList:t,characterData:t}),o=!0,()=>{o&&(d(),b.disconnect(),o=!1)}),()=>{if(o)return g(!0,b.takeRecords())}]};let Vn=null;const jn=(e,t,n)=>{const{ft:o}=n||{},a=Ot(bn),[l]=r({o:!1,u:!0});return()=>{const n=[],r=He(`
`),i=r[0],s=i.firstChild,u=e=>{const n=_(e)&&!F(e);let r=!1,o=!1;if(n){const t=e[0],[n,,a]=l(t.contentRect),i=dt(n);o=ft(n,a),r=!o&&!i}else o=!0===e;r||t({_t:!0,ft:o})};if(b){if(!k(Vn)){const t=new b(he);t.observe(e,{get box(){Vn=!0}}),Vn=Vn||!1,t.disconnect()}const t=ue(u,{p:0,v:0}),r=e=>t(e),o=new b(r);if(o.observe(Vn?e:s),W(n,[()=>{o.disconnect()},!Vn&&ze(e,i)]),Vn){const t=new b(r);t.observe(e,{box:"border-box"}),W(n,()=>t.disconnect())}}else{if(!a)return he;{const[t,r]=a(s,u,o);W(n,N([Le(i,Zt),vt(i,"animationstart",t),ze(e,i)],r))}}return le(z,n)}},Kn=(e,t)=>{let n;const o=e=>0===e.h||e.isIntersecting||e.intersectionRatio>0,a=Ke(en),[l]=r({o:!1}),i=(e,n)=>{if(e){const r=l(o(e)),[,a]=r;return a&&!n&&t(r)&&[r]}},s=(e,t)=>i(t.pop(),e);return[()=>{const t=[];if(g)n=new g(le(s,!1),{root:e}),n.observe(a),W(t,()=>{n.disconnect()});else{const e=()=>{const e=at(a);i(e)};W(t,jn(a,e)()),e()}return le(z,W(t,ze(e,a)))},()=>n&&s(!0,n.takeRecords())]},Hn=(e,t,n,o)=>{let a,l,i,s,u,c,d,f;const p=`[${Bt}]`,v=`[${$t}]`,h=["id","class","style","open","wrap","cols","rows"],{dt:m,vt:g,L:y,gt:w,ht:R,V:x,bt:k,wt:S,yt:M,St:A}=e,O=e=>"rtl"===Ze(e,"direction"),T=()=>{let e,t,n;const r=ue(o,{p:()=>e,v:()=>t,S:()=>n,m(e,t){const[n]=e,[r]=t;return[N(de(n),de(r)).reduce((e,t)=>(e[t]=n[t]||r[t],e),{})]}}),a=(o,a)=>{if(_(a)){const[r,o,l]=a;e=r,t=o,n=l}else C(a)?(e=a,t=!1,n=!1):(e=!1,t=!1,n=!1);r(o)};return a.O=r.O,a},I={Ot:!1,B:O(m)},W=Bn(),D=Ot(kn),[P]=r({i:re,o:{w:0,h:0}},()=>{const r=D&&D.R(e,t,I,W,n).Y,o=k&&x,a=!o&&_e(g,Bt,Pt),l=!x&&S(Kt),i=l&&yt(w),s=i&&A(),u=M(Ht,a),c=l&&r&&r(),d=it(y),f=st(y);return c&&c(),bt(w,i),s&&s(),a&&u(),{w:d.w+f.w,h:d.h+f.h}}),F=T(),B=e=>{const t=O(m);fe(e,{Ct:f!==t}),fe(I,{B:t}),f=t},z=(e,t)=>{const[n,r]=e,a={$t:r};return fe(I,{Ot:n}),t||o(a),a},$=({_t:e,ft:t})=>{const n=t?o:F,r={_t:e||t,ft:t};B(r),n(r,l)},V=(e,t)=>{const[,n]=P(),r={xt:n};return B(r),n&&!t&&F(r,e?i:a),r},j=(e,t,n)=>{const r={Ht:t};return B(r),t&&!n&&F(r,a),r},[K,H]=R?Kn(g,z):[],X=!x&&jn(g,$,{ft:!0}),[U,G]=$n(g,!1,j,{ct:h,et:h}),q=x&&b&&new b(e=>{const t=e[e.length-1].contentRect;$({_t:!0,ft:ft(t,d)}),d=t});return[()=>{q&&q.observe(g);const e=X&&X(),t=K&&K(),n=U(),r=W.G(e=>{const[,t]=P();F({Et:e,xt:t,_t:k},s)});return()=>{q&&q.disconnect(),e&&e(),t&&t(),c&&c(),n(),r()}},({zt:e,It:t,At:n})=>{const r={},[o]=e("update.ignoreMutation"),[d,f]=e("update.attributes"),[m,g]=e("update.elementEvents"),[b,w]=e("update.debounce"),k=g||f,S=t||n,M=e=>E(o)&&o(e);if(k){u&&u(),c&&c();const[e,t]=$n(R||y,!0,V,{et:N(h,d||[]),rt:m,it:p,ut:(e,t)=>{const{target:n,attributeName:r}=e,o=!(t||!r||x)&&Fe(n,p,v);return o||!!De(n,`.${nn}`)||!!M(e)}});c=e(),u=t}if(w&&(F.O(),_(b)||C(b)?(a=b,l=!1,i=Ln,s=An):L(b)?(a=b.mutation,l=b.resize,i=b.event,s=b.env):(a=!1,l=!1,i=!1,s=!1)),S){const e=G(),t=H&&H(),n=u&&u();e&&fe(r,j(e[0],e[1],S)),t&&fe(r,z(t[0],S)),n&&fe(r,V(n[0],S))}return B(r),r},I]},Xn=(e,t)=>E(t)?t.apply(0,e):t,Un=(e,t,n,r)=>{const o=w(r)?n:r,a=Xn(e,o);return a||t.apply(0,e)},Gn=(e,t,n,r)=>{const o=w(r)?n:r,a=Xn(e,o);return!!a&&(A(a)?a:t.apply(0,e))},qn=(e,t)=>{const{nativeScrollbarsOverlaid:n,body:r}=t||{},{k:o,U:a,K:l}=Bn(),{nativeScrollbarsOverlaid:i,body:s}=l().cancel,u=null!=n?n:i,c=w(r)?s:r,d=(o.x||o.y)&&u,f=e&&(R(c)?!a:c);return!!d||!!f},Yn=(e,t,n,r)=>{const o="--os-viewport-percent",a="--os-scroll-percent",l="--os-scroll-direction",{K:i}=Bn(),{scrollbars:s}=i(),{slot:u}=s,{dt:c,vt:d,L:f,Tt:p,gt:v,bt:h,V:m}=t,{scrollbars:g}=p?{}:e,{slot:b}=g||{},w=[],R=[],C=[],x=Gn([c,d,f],()=>m&&h?c:d,u,b),E=e=>{if(y){let t=null,r=[];const o=new y({source:v,axis:e}),a=()=>{t&&t.cancel(),t=null},l=l=>{const{Dt:i}=n,s=Ct(i)[e],u="x"===e,c=[et(0,u),et(`calc(-100% + 100cq${u?"w":"h"})`,u)],d=s?c:c.reverse();return r[0]===d[0]&&r[1]===d[1]||(r=d,a(),t=l.Mt.animate({clear:["left"],transform:d},{timeline:o})),a};return{kt:l}}},_={x:E("x"),y:E("y")},S=()=>{const{Rt:e,Vt:t}=n,r=(e,t)=>me(0,1,e/(e+t)||0);return{x:r(t.x,e.x),y:r(t.y,e.y)}},M=(e,t,n)=>{const r=n?Le:Me;T(e,e=>{r(e.Lt,t)})},L=(e,t)=>{T(e,e=>{const[n,r]=t(e);Qe(n,r)})},A=(e,t,n)=>{const r=k(n),o=!r||n,a=!r||!n;o&&M(R,e,t),a&&M(C,e,t)},O=()=>{const e=S(),t=e=>t=>[t.Lt,{[o]:qe(e)+""}];L(R,t(e.x)),L(C,t(e.y))},I=()=>{if(!y){const{Dt:e}=n,t=xt(e,yt(v)),r=e=>t=>[t.Lt,{[a]:qe(e)+""}];L(R,r(t.x)),L(C,r(t.y))}},N=()=>{const{Dt:e}=n,t=Ct(e),r=e=>t=>[t.Lt,{[l]:e?"0":"1"}];L(R,r(t.x)),L(C,r(t.y)),y&&(R.forEach(_.x.kt),C.forEach(_.y.kt))},D=()=>{if(m&&!h){const{Rt:e,Dt:t}=n,r=Ct(t),o=xt(t,yt(v)),a=t=>{const{Lt:n}=t,a=We(n)===f&&n,l=(e,t,n)=>{const r=t*e;return Ye(n?r:-r)};return[a,a&&{transform:et({x:l(o.x,e.x,r.x),y:l(o.y,e.y,r.y)})}]};L(R,a),L(C,a)}},P=e=>{const t=e?"x":"y",n=e?on:an,o=Ke(`${nn} ${n}`),a=Ke(ln),l=Ke(sn),i={Lt:o,Ut:a,Mt:l},s=_[t];return W(e?R:C,i),W(w,[ze(o,a),ze(a,l),le(Be,o),s&&s.kt(i),r(i,A,e)]),i},F=le(P,!0),B=le(P,!1),$=()=>(ze(x,R[0].Lt),ze(x,C[0].Lt),le(z,w));return F(),B(),[{Pt:O,Nt:I,qt:N,Bt:D,Ft:A,jt:{Xt:R,Yt:F,Wt:le(L,R)},Jt:{Xt:C,Yt:B,Wt:le(L,C)}},$]},Qn=(e,t,n,r)=>(o,a,l)=>{const{vt:i,L:c,V:d,gt:f,Gt:v,St:h}=t,{Lt:m,Ut:g,Mt:b}=o,[y,w]=ie(333),[R,C]=ie(444),x=e=>{E(f.scrollBy)&&f.scrollBy({behavior:"smooth",left:e.x,top:e.y})},k=()=>{const t="pointerup pointercancel lostpointercapture",r="client"+(l?"X":"Y"),o=l?Y:Q,a=l?"left":"top",i=l?"w":"h",c=l?"x":"y",d=(e,t)=>r=>{const{Rt:o}=n,a=at(g)[i]-at(b)[i],l=t*r/a,s=l*o[c];bt(f,{[c]:e+s})},p=[];return vt(g,"pointerdown",n=>{const l=De(n.target,`.${sn}`)===b,m=l?b:g,y=e.scrollbars,w=y[l?"dragScroll":"clickScroll"],{button:k,isPrimary:E,pointerType:_}=n,{pointers:S}=y,M=0===k&&E&&w&&(S||[]).includes(_);if(M){z(p),C();const e=!l&&(n.shiftKey||"instant"===w),y=le(ut,b),k=le(ut,g),E=(e,t)=>(e||y())[a]-(t||k())[a],_=s(ut(f)[o])/at(f)[i]||1,S=d(yt(f)[c],1/_),M=n[r],L=y(),A=k(),O=L[o],T=E(L,A)+O/2,I=M-A[a],N=l?0:I-T,D=e=>{z(B),m.releasePointerCapture(e.pointerId)},P=l||e,F=h(),B=[vt(v,t,D),vt(v,"selectstart",e=>mt(e),{I:!1}),vt(g,t,D),P&&vt(g,"pointermove",e=>S(N+(e[r]-M))),P&&(()=>{const e=yt(f);F();const t=yt(f),n={x:t.x-e.x,y:t.y-e.y};(u(n.x)>3||u(n.y)>3)&&(h(),bt(f,e),x(n),R(F))})];if(m.setPointerCapture(n.pointerId),e)S(N);else if(!l){const e=Ot(En);if(e){const t=e(S,N,O,e=>{e?F():W(B,F)});W(B,t),W(p,le(t,!0))}}}})};let _=!0;return le(z,[vt(b,"pointermove pointerleave",r),vt(m,"pointerenter",()=>{a(dn,!0)}),vt(m,"pointerleave pointercancel",()=>{a(dn,!1)}),!d&&vt(m,"mousedown",()=>{const e=Pe();(ye(e,$t)||ye(e,Bt)||e===document.body)&&p(le(kt,c),25)}),vt(m,"wheel",e=>{const{deltaX:t,deltaY:n,deltaMode:r}=e;_&&0===r&&We(m)===i&&x({x:t,y:n}),_=!1,a(hn,!0),y(()=>{_=!0,a(hn)}),mt(e)},{I:!1,A:!0}),vt(m,"pointerdown",()=>{const e=vt(v,"click",e=>{t(),gt(e)},{T:!0,A:!0,I:!1}),t=vt(v,"pointerup pointercancel",()=>{t(),setTimeout(e,150)},{A:!0,I:!0})},{A:!0,I:!0}),k(),w,C])},Zn=(e,t,n,r,o,a)=>{let l,i,s,u,c,d=he,f=0;const p=["mouse","pen"],v=e=>p.includes(e.pointerType),[h,m]=ie(),[g,b]=ie(100),[y,w]=ie(100),[R,C]=ie(()=>f),[x,k]=Yn(e,o,r,Qn(t,o,r,e=>v(e)&&N())),{vt:E,Kt:_,bt:S}=o,{Ft:M,Pt:L,Nt:A,qt:O,Bt:T}=x,I=(e,t)=>{if(C(),e)M(vn);else{const e=le(M,vn,!0);f>0&&!t?R(e):e()}},N=()=>{(s?l:u)||(I(!0),g(()=>{I(!1)}))},D=e=>{M(pn,e,!0),M(pn,e,!1)},P=e=>{v(e)&&(l=s,s&&I(!0))},F=[C,b,w,m,()=>d(),vt(E,"pointerover",P,{T:!0}),vt(E,"pointerenter",P),vt(E,"pointerleave",e=>{v(e)&&(l=!1,s&&I(!1))}),vt(E,"pointermove",e=>{v(e)&&i&&N()}),vt(_,"scroll",e=>{h(()=>{A(),N()}),a(e),T()})],B=Ot(kn);return[()=>le(z,W(F,k())),({zt:e,At:t,Qt:o,Zt:a})=>{const{tn:l,nn:p,sn:v,en:h}=a||{},{Ct:m,ft:g}=o||{},{B:b}=n,{k:w,U:R}=Bn(),{cn:C,j:x}=r,[k,E]=e("showNativeOverlaidScrollbars"),[N,W]=e("scrollbars.theme"),[P,F]=e("scrollbars.visibility"),[z,$]=e("scrollbars.autoHide"),[V,j]=e("scrollbars.autoHideSuspend"),[K]=e("scrollbars.autoHideDelay"),[H,X]=e("scrollbars.dragScroll"),[U,G]=e("scrollbars.clickScroll"),[q,Y]=e("overflow"),Q=g&&!t,J=x.x||x.y,te=l||p||h||m||t,ne=v||F||Y,re=k&&w.x&&w.y,oe=!R&&!B,ae=re||oe,ie=(e,t,n)=>{const r=e.includes(ee)&&(P===Z||"auto"===P&&t===ee);return M(un,r,n),r};if(f=K,Q&&(V&&J?(D(!1),d(),y(()=>{d=vt(_,"scroll",le(D,!0),{T:!0})})):D(!0)),(E||oe)&&M(tn,ae),W&&(M(c),M(N,!0),c=N),j&&!V&&D(!0),$&&(i="move"===z,s="leave"===z,u="never"===z,I(u,!0)),X&&M(gn,H),G&&M(mn,!!U),ne){const e=ie(q.x,C.x,!0),t=ie(q.y,C.y,!1),n=e&&t;M(cn,!n)}te&&(A(),L(),T(),h&&O(),M(fn,!x.x,!0),M(fn,!x.y,!1),M(rn,b&&!S))},{},x]},Jn=e=>{const t=Bn(),{K:n,U:r}=t,{elements:o}=n(),{padding:l,viewport:i,content:s}=o,u=A(e),c=u?{}:e,{elements:d}=c,{padding:f,viewport:p,content:v}=d||{},h=u?e:c.target,m=Ie(h),g=h.ownerDocument,b=g.documentElement,y=()=>g.defaultView||a,w=le(Un,[h]),R=le(Gn,[h]),C=le(Ke,""),x=le(w,C,i),k=le(R,C,s),E=e=>{const t=at(e),n=it(e),r=Ze(e,G),o=Ze(e,q);return n.w-t.w>0&&!wn(r)||n.h-t.h>0&&!wn(o)},_=x(p),S=_===h,M=S&&m,L=!S&&k(v),O=!S&&_===L,T=M?b:_,N=M?T:h,D=!S&&R(C,l,f),P=!O&&L,F=[P,T,D,N].map(e=>A(e)&&!We(e)&&e),B=e=>e&&I(F,e),$=!B(T)&&E(T)?T:h,V=M?b:T,j=M?g:T,K={dt:h,vt:N,L:T,rn:D,ht:P,gt:V,Kt:j,ln:m?b:$,Gt:g,bt:m,Tt:u,V:S,an:y,wt:e=>_e(T,$t,e),yt:(e,t)=>Ee(T,$t,e,t),St:()=>Ee(V,$t,Xt,!0)},{dt:H,vt:X,rn:U,L:Y,ht:Q}=K,Z=[()=>{Re(X,[Bt,Dt]),Re(H,Dt),m&&Re(b,[Dt,Bt])}];let J=Ne([Q,Y,U,X,H].find(e=>e&&!B(e)));const ee=M?H:Q||Y,te=le(z,Z),ne=()=>{const e=y(),t=Pe(),n=e=>{ze(We(e),Ne(e)),Be(e)},o=e=>vt(e,"focusin focusout focus blur",gt,{A:!0,I:!1}),a="tabindex",l=be(Y,a),i=o(t);return we(X,Bt,S?"":zt),we(U,qt,""),we(Y,$t,""),we(Q,Yt,""),S||(we(Y,a,l||"-1"),m&&we(b,Ft,"")),ze(ee,J),ze(X,U),ze(U||X,!S&&Y),ze(Y,Q),W(Z,[i,()=>{const e=Pe(),t=B(Y),r=t&&e===Y?H:e,i=o(r);Re(U,qt),Re(Q,Yt),Re(Y,$t),m&&Re(b,Ft),l?we(Y,a,l):Re(Y,a),B(Q)&&n(Q),t&&n(Y),B(U)&&n(U),kt(r),i()}]),r&&!S&&(ke(Y,$t,Ut),W(Z,le(Re,Y,$t))),kt(!S&&m&&t===H&&e.top===e?Y:t),i(),J=0,te};return[K,ne,te]},er=({ht:e})=>({Qt:t,un:n,At:r})=>{const{$t:o}=t||{},{Ot:a}=n,l=e&&(o||r);l&&Qe(e,{[Q]:a&&"100%"})},tr=({vt:e,rn:t,L:n,V:o},a)=>{const[l,i]=r({i:ae,o:Je()},le(Je,e,"padding",""));return({zt:e,Qt:r,un:s,At:u})=>{let[c,d]=i(u);const{U:f}=Bn(),{_t:p,xt:v,Ct:h}=r||{},{B:m}=s,[g,b]=e("paddingAbsolute"),y=u||v;(p||d||y)&&([c,d]=l(u));const w=!o&&(b||h||d);if(w){const e=!g||!t&&!f,r=c.r+c.l,o=c.t+c.b,l={[X]:e&&!m?-r:0,[U]:e?-o:0,[H]:e&&m?-r:0,top:e?-c.t:0,right:e?m?-c.r:"auto":0,left:e?m?"auto":-c.l:0,[Y]:e&&`calc(100% + ${r}px)`},i={[$]:e?c.t:0,[V]:e?c.r:0,[K]:e?c.b:0,[j]:e?c.l:0};Qe(t||n,l),Qe(n,i),fe(a,{rn:c,fn:!e,F:t?i:fe({},l,i)})}return{_n:w}}},nr=(e,t)=>{const n=Bn(),{vt:o,rn:i,L:s,V:u,Kt:c,gt:d,bt:p,yt:v,an:h}=e,{U:m}=n,g=p&&u,b=le(l,0),y={display:()=>!1,direction:e=>"ltr"!==e,flexDirection:e=>e.endsWith("-reverse"),writingMode:e=>"horizontal-tb"!==e},w=de(y),R={i:re,o:{w:0,h:0}},C={i:oe,o:{}},x=e=>{v(Ht,!g&&e)},k=e=>{const t=w.some(t=>{const n=e[t];return n&&y[t](n)});if(!t)return{D:{x:0,y:0},M:{x:1,y:1}};x(!0);const n=yt(d),r=v(Gt,!0),o=vt(c,ee,e=>{const t=yt(d);e.isTrusted&&t.x===n.x&&t.y===n.y&&ht(e)},{A:!0,T:!0});bt(d,{x:0,y:0}),r();const a=yt(d),l=it(d);bt(d,{x:l.w,y:l.h});const i=yt(d);bt(d,{x:i.x-a.x<1&&-l.w,y:i.y-a.y<1&&-l.h});const s=yt(d);return bt(d,n),f(()=>o()),{D:a,M:s}},E=(e,t)=>{const n=a.devicePixelRatio%1!==0?1:0,r={w:b(e.w-t.w),h:b(e.h-t.h)};return{w:r.w>n?r.w:0,h:r.h>n?r.h:0}},_=(e,t)=>{const n=(e,t,n,r)=>{const o=e===Z?J:Rn(e),a=wn(e),l=wn(n);if(!t&&!r)return J;if(a&&l)return Z;if(a){const e=t?Z:J;return t&&r?o:e}const i=l&&r?Z:J;return t?o:i};return{x:n(t.x,e.x,t.y,e.y),y:n(t.y,e.y,t.x,e.x)}},S=e=>{const t=e=>[Z,J,ee].map(t=>V(Cn(t),e)),n=t(!0).concat(t()).join(" ");v(n),v(de(e).map(t=>V(e[t],"x"===t)).join(" "),!0)},[M,L]=r(R,le(st,s)),[A,O]=r(R,le(it,s)),[T,I]=r(R),[N]=r(C),[W,D]=r(R),[P]=r(C),[F]=r({i:(e,t)=>ne(e,t,w),o:{}},()=>ct(s)?Ze(s,w):{}),[B,z]=r({i:(e,t)=>oe(e.D,t.D)&&oe(e.M,t.M),o:wt()}),$=Ot(kn),V=(e,t)=>{const n=t?Vt:jt;return`${n}${te(e)}`};return({zt:r,Qt:a,un:l,At:u},{_n:c})=>{const{_t:d,Ht:f,xt:p,Ct:y,ft:w,Et:R}=a||{},C=$&&$.R(e,t,l,n,r),{X:V,Y:j,W:K}=C||{},[H,X]=yn(r,n),[U,G]=r("overflow"),q=wn(U.x),Y=wn(U.y),Q=d||c||p||y||R||X;let Z=L(u),J=O(u),ee=I(u),te=D(u);if(X&&m&&v(Ut,!H),Q){_e(o,Bt,Pt)&&x(!0);const e=j&&j(),[t]=Z=M(u),[n]=J=A(u),r=lt(s),a=g&&ot(h()),l={w:b(n.w+t.w),h:b(n.h+t.h)},i={w:b((a?a.w:r.w+b(r.w-n.w))+t.w),h:b((a?a.h:r.h+b(r.h-n.h))+t.h)};e&&e(),te=W(i),ee=T(E(l,i),u)}const[ne,re]=te,[oe,ae]=ee,[le,ie]=J,[se,ue]=Z,[ce,de]=N({x:oe.w>0,y:oe.h>0}),pe=q&&Y&&(ce.x||ce.y)||q&&ce.x&&!ce.y||Y&&ce.y&&!ce.x,ve=c||y||R||ue||ie||re||ae||G||X||Q||f&&g,[he,me]=F(u),ge=y||w||me||de||u,[be,ye]=ge?B(k(he),u):z();let we=_(ce,U);x(!1),ve&&(S(we),we=xn(s,ce),K&&V&&(V(we,le,se),Qe(s,K(we))));const[Re,Ce]=P(we);return Ee(o,Bt,Pt,pe),Ee(i,qt,Pt,pe),fe(t,{cn:Re,Vt:{x:ne.w,y:ne.h},Rt:{x:oe.w,y:oe.h},j:ce,Dt:Rt(be,oe)}),{sn:Ce,tn:re,nn:ae,en:ye||ae}}},rr=e=>{const[t,n,r]=Jn(e),o={rn:{t:0,r:0,b:0,l:0},fn:!1,F:{[X]:0,[U]:0,[H]:0,[$]:0,[V]:0,[K]:0,[j]:0},Vt:{x:0,y:0},Rt:{x:0,y:0},cn:{x:J,y:J},j:{x:!1,y:!1},Dt:wt()},{dt:a,gt:l,V:i,St:s}=t,{U:u,k:c}=Bn(),d=!u&&(c.x||c.y),f=[er(t),tr(t,o),nr(t,o)];return[n,e=>{const t={},n=d,r=n&&yt(l),o=r&&s();return T(f,n=>{fe(t,n(e,t)||{})}),bt(l,r),o&&o(),i||bt(a,0),t},o,t,r]},or=(e,t,n,r,o)=>{let a=!1;const l=In(t,{}),[i,s,u,c,d]=rr(e),[f,p,v]=Hn(c,u,l,e=>{y({},e)}),[h,m,,g]=Zn(e,t,v,u,c,o),b=e=>de(e).some(t=>!!e[t]),y=(e,o)=>{if(n())return!1;const{dn:l,At:i,It:u,pn:c}=e,d=l||{},f=!!i||!a,h={zt:In(t,d,f),dn:d,At:f};if(c)return m(h),!1;const g=o||p(fe({},h,{It:u})),y=s(fe({},h,{un:v,Qt:g}));m(fe({},h,{Qt:g,Zt:y}));const w=b(g),R=b(y),C=w||R||!ve(d)||f;return a=!0,C&&r(e,{Qt:g,Zt:y}),C};return[()=>{const{ln:e,gt:t,St:n}=c,r=yt(e),o=[f(),i(),h()],a=n();return bt(t,r),a(),le(z,o)},y,()=>({vn:v,gn:u}),{hn:c,bn:g},d]},ar=new WeakMap,lr=(e,t)=>{ar.set(e,t)},ir=e=>{ar.delete(e)},sr=e=>ar.get(e),ur=(e,t,n)=>{const{tt:r}=Bn(),o=A(e),a=o?e:e.target,l=sr(a);if(t&&!l){let l=!1;const i=[],s={},u=e=>{const t=pe(e),n=Ot(Tt);return n?n(t,!0):t},c=fe({},r(),u(t)),[d,f,p]=_t(),[v,h,m]=_t(n),g=(e,t)=>{m(e,t),p(e,t)},[b,y,w,R,C]=or(e,c,()=>l,({dn:e,At:t},{Qt:n,Zt:r})=>{const{_t:o,Ct:a,$t:l,xt:i,Ht:s,ft:u}=n,{tn:c,nn:d,sn:f,en:p}=r;g("updated",[k,{updateHints:{sizeChanged:!!o,directionChanged:!!a,heightIntrinsicChanged:!!l,overflowEdgeChanged:!!c,overflowAmountChanged:!!d,overflowStyleChanged:!!f,scrollCoordinatesChanged:!!p,contentMutation:!!i,hostMutation:!!s,appear:!!u},changedOptions:e||{},force:!!t}])},e=>g("scroll",[k,e])),x=e=>{ir(a),z(i),l=!0,g("destroyed",[k,e]),f(),h()},k={options(e,t){if(e){const n=t?r():{},o=Tn(c,fe(n,u(e)));ve(o)||(fe(c,o),y({dn:o}))}return fe({},c)},on:v,off:(e,t)=>{e&&t&&h(e,t)},state(){const{vn:e,gn:t}=w(),{B:n}=e,{Vt:r,Rt:o,cn:a,j:i,rn:s,fn:u,Dt:c}=t;return fe({},{overflowEdge:r,overflowAmount:o,overflowStyle:a,hasOverflow:i,scrollCoordinates:{start:c.D,end:c.M},padding:s,paddingAbsolute:u,directionRTL:n,destroyed:l})},elements(){const{dt:e,vt:t,rn:n,L:r,ht:o,gt:a,Kt:l}=R.hn,{jt:i,Jt:s}=R.bn,u=e=>{const{Mt:t,Ut:n,Lt:r}=e;return{scrollbar:r,track:n,handle:t}},c=e=>{const{Xt:t,Yt:n}=e,r=u(t[0]);return fe({},r,{clone:()=>{const e=u(n());return y({pn:!0}),e}})};return fe({},{target:e,host:t,padding:n||r,viewport:r,content:o||r,scrollOffsetElement:a,scrollEventElement:l,scrollbarHorizontal:c(i),scrollbarVertical:c(s)})},update:e=>y({At:e,It:!0}),destroy:le(x,!1),plugin:e=>s[de(e)[0]]};return W(i,[C]),lr(a,k),At(St,ur,[k,d,s]),qn(R.hn.bt,!o&&e.cancel)?(x(!0),k):(W(i,b()),g("initialized",[k]),k.update(),k)}return l};ur.plugin=e=>{const t=_(e),n=t?e:[e],r=n.map(e=>At(e,ur)[0]);return Lt(n),t?r:r[0]},ur.valid=e=>{const t=e&&e.elements,n=E(t)&&t();return L(n)&&!!sr(n.target)},ur.env=()=>{const{P:e,k:t,U:n,J:r,ot:o,st:a,K:l,Z:i,tt:s,nt:u}=Bn();return fe({},{scrollbarsSize:e,scrollbarsOverlaid:t,scrollbarsHiding:n,scrollTimeline:r,staticDefaultInitialization:o,staticDefaultOptions:a,getDefaultInitialization:l,setDefaultInitialization:i,getDefaultOptions:s,setDefaultOptions:u})},ur.nonce=Dn,ur.trustedTypePolicy=je},6246:function(e,t){"use strict";var n="fas",r="link",o=576,a=512,l=[128279,"chain"],i="f0c1",s="M419.5 96c-16.6 0-32.7 4.5-46.8 12.7-15.8-16-34.2-29.4-54.5-39.5 28.2-24 64.1-37.2 101.3-37.2 86.4 0 156.5 70 156.5 156.5 0 41.5-16.5 81.3-45.8 110.6l-71.1 71.1c-29.3 29.3-69.1 45.8-110.6 45.8-86.4 0-156.5-70-156.5-156.5 0-1.5 0-3 .1-4.5 .5-17.7 15.2-31.6 32.9-31.1s31.6 15.2 31.1 32.9c0 .9 0 1.8 0 2.6 0 51.1 41.4 92.5 92.5 92.5 24.5 0 48-9.7 65.4-27.1l71.1-71.1c17.3-17.3 27.1-40.9 27.1-65.4 0-51.1-41.4-92.5-92.5-92.5zM275.2 173.3c-1.9-.8-3.8-1.9-5.5-3.1-12.6-6.5-27-10.2-42.1-10.2-24.5 0-48 9.7-65.4 27.1L91.1 258.2c-17.3 17.3-27.1 40.9-27.1 65.4 0 51.1 41.4 92.5 92.5 92.5 16.5 0 32.6-4.4 46.7-12.6 15.8 16 34.2 29.4 54.6 39.5-28.2 23.9-64 37.2-101.3 37.2-86.4 0-156.5-70-156.5-156.5 0-41.5 16.5-81.3 45.8-110.6l71.1-71.1c29.3-29.3 69.1-45.8 110.6-45.8 86.6 0 156.5 70.6 156.5 156.9 0 1.3 0 2.6 0 3.9-.4 17.7-15.1 31.6-32.8 31.2s-31.6-15.1-31.2-32.8c0-.8 0-1.5 0-2.3 0-33.7-18-63.3-44.8-79.6z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.CQ=t.mw},6301:function(e,t,n){"use strict";n.d(t,{A:function(){return f}});var r=n(60168),o=n(39578),a=function(){return o.A.Date.now()},l=a,i=n(10754),s="Expected a function",u=Math.max,c=Math.min;function d(e,t,n){var o,a,d,f,p,v,h=0,m=!1,g=!1,b=!0;if("function"!=typeof e)throw new TypeError(s);function y(t){var n=o,r=a;return o=a=void 0,h=t,f=e.apply(r,n),f}function w(e){return h=e,p=setTimeout(x,t),m?y(e):f}function R(e){var n=e-v,r=e-h,o=t-n;return g?c(o,d-r):o}function C(e){var n=e-v,r=e-h;return void 0===v||n>=t||n<0||g&&r>=d}function x(){var e=l();if(C(e))return k(e);p=setTimeout(x,R(e))}function k(e){return p=void 0,b&&o?y(e):(o=a=void 0,f)}function E(){void 0!==p&&clearTimeout(p),h=0,o=v=a=p=void 0}function _(){return void 0===p?f:k(l())}function S(){var e=l(),n=C(e);if(o=arguments,a=this,v=e,n){if(void 0===p)return w(v);if(g)return clearTimeout(p),p=setTimeout(x,t),y(v)}return void 0===p&&(p=setTimeout(x,t)),f}return t=(0,i.A)(t)||0,(0,r.A)(n)&&(m=!!n.leading,g="maxWait"in n,d=g?u((0,i.A)(n.maxWait)||0,t):d,b="trailing"in n?!!n.trailing:b),S.cancel=E,S.flush=_,S}var f=d},6340:function(e,t,n){"use strict";n.d(t,{Hl:function(){return s},Lw:function(){return f},pW:function(){return d},rQ:function(){return c},tp:function(){return i},uG:function(){return l},xe:function(){return u}});n(18111),n(22489);const r='a[href],button:not([disabled]),button:not([hidden]),:not([tabindex="-1"]),input:not([disabled]),input:not([type="hidden"]),select:not([disabled]),textarea:not([disabled])',o=e=>"undefined"!==typeof Element&&e instanceof Element,a=e=>{const t=getComputedStyle(e);return"fixed"!==t.position&&null!==e.offsetParent},l=e=>Array.from(e.querySelectorAll(r)).filter(e=>i(e)&&a(e)),i=e=>{if(e.tabIndex>0||0===e.tabIndex&&null!==e.getAttribute("tabIndex"))return!0;if(e.tabIndex<0||e.hasAttribute("disabled")||"true"===e.getAttribute("aria-disabled"))return!1;switch(e.nodeName){case"A":return!!e.href&&"ignore"!==e.rel;case"INPUT":return!("hidden"===e.type||"file"===e.type);case"BUTTON":case"SELECT":case"TEXTAREA":return!0;default:return!1}},s=function(e,t,...n){let r;r=t.includes("mouse")||t.includes("click")?"MouseEvents":t.includes("key")?"KeyboardEvent":"HTMLEvents";const o=document.createEvent(r);return o.initEvent(t,...n),e.dispatchEvent(o),e},u=e=>!e.getAttribute("aria-owns"),c=(e,t,n)=>{const{parentNode:r}=e;if(!r)return null;const o=r.querySelectorAll(n),a=Array.prototype.indexOf.call(o,e);return o[a+t]||null},d=(e,t)=>{if(!e||!e.focus)return;let n=!1;!o(e)||i(e)||e.getAttribute("tabindex")||(e.setAttribute("tabindex","-1"),n=!0),e.focus(t),o(e)&&n&&e.removeAttribute("tabindex")},f=e=>{e&&(d(e),!u(e)&&e.click())}},6865:function(e,t,n){"use strict";function r(e,t){return null!=e&&t in Object(e)}n.d(t,{A:function(){return v}});var o=r,a=n(75014),l=n(26162),i=n(23506),s=n(22676),u=n(5351),c=n(13708);function d(e,t,n){t=(0,a.A)(t,e);var r=-1,o=t.length,d=!1;while(++r{const o=(0,a.CW)(e.subTree).filter(e=>{var n;return(0,r.vv)(e)&&(null==(n=e.type)?void 0:n.name)===t&&!!e.component}),l=o.map(e=>e.component.uid);return l.map(e=>n[e]).filter(e=>!!e)},i=(e,t)=>{const n=(0,o.IJ)({}),a=(0,o.IJ)([]),i=new WeakMap,s=e=>{n.value[e.uid]=e,(0,o.mu)(n),(0,r.sV)(()=>{const t=e.getVnode().el,r=t.parentNode;if(!i.has(r)){i.set(r,[]);const e=r.insertBefore.bind(r);r.insertBefore=(t,a)=>{const l=i.get(r).some(e=>t===e||a===e);return l&&(0,o.mu)(n),e(t,a)}}i.get(r).push(t)})},u=e=>{delete n.value[e.uid],(0,o.mu)(n);const t=e.getVnode().el,r=t.parentNode,a=i.get(r),l=a.indexOf(t);a.splice(l,1)},c=()=>{a.value=l(e,t,n.value)},d=e=>e.render(),f=(0,r.pM)({setup(e,{slots:t}){return()=>(c(),t.default?(0,r.h)(d,{render:t.default}):null)}});return{children:a,addChild:s,removeChild:u,ChildrenSorter:f}}},7040:function(e,t,n){"use strict";var r=n(4495);e.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},7162:function(e,t,n){"use strict";n.d(t,{A:function(){return k}});var r=n(47083),o=n(39578),a=o.A["__core-js_shared__"],l=a,i=function(){var e=/[^.]+$/.exec(l&&l.keys&&l.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function s(e){return!!i&&i in e}var u=s,c=n(60168),d=n(3534),f=/[\\^$.*+?()[\]{}|]/g,p=/^\[object .+?Constructor\]$/,v=Function.prototype,h=Object.prototype,m=v.toString,g=h.hasOwnProperty,b=RegExp("^"+m.call(g).replace(f,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function y(e){if(!(0,c.A)(e)||u(e))return!1;var t=(0,r.A)(e)?b:p;return t.test((0,d.A)(e))}var w=y;function R(e,t){return null==e?void 0:e[t]}var C=R;function x(e,t){var n=C(e,t);return w(n)?n:void 0}var k=x},7262:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n="fas",r="circle-info",o=512,a=512,l=["info-circle"],i="f05a",s="M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM224 160a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-8 64l48 0c13.3 0 24 10.7 24 24l0 88 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l24 0 0-64-24 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z";t.definition={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.faCircleInfo=t.definition,t.prefix=n,t.iconName=r,t.width=o,t.height=a,t.ligatures=l,t.unicode=i,t.svgPathData=s,t.aliases=l},7515:function(e){!function(t,n){e.exports=n()}(0,function(){"use strict";var e="week",t="year";return function(n,r,o){var a=r.prototype;a.week=function(n){if(void 0===n&&(n=null),null!==n)return this.add(7*(n-this.week()),"day");var r=this.$locale().yearStart||1;if(11===this.month()&&this.date()>25){var a=o(this).startOf(t).add(1,t).date(r),l=o(this).endOf(e);if(a.isBefore(l))return 1}var i=o(this).startOf(t).date(r).startOf(e).subtract(1,"millisecond"),s=this.diff(i,e,!0);return s<0?o(this).startOf("week").week():Math.ceil(s)},a.weeks=function(e){return void 0===e&&(e=null),this.week(e)}}})},7588:function(e,t,n){"use strict";var r=n(46518),o=n(69565),a=n(72652),l=n(79306),i=n(28551),s=n(1767),u=n(9539),c=n(84549),d=c("forEach",TypeError);r({target:"Iterator",proto:!0,real:!0,forced:d},{forEach:function(e){i(this);try{l(e)}catch(r){u(this,"throw",r)}if(d)return o(d,this,e);var t=s(this),n=0;a(t,function(t){e(t,n++)},{IS_RECORD:!0})}})},9267:function(e,t,n){"use strict";n.d(t,{kZ:function(){return O}});var r=n(56768),o=n(90144),a=n(45130),l=n(24232),i=n(16714),s=n(76834),u=n(98769),c=n(813),d=n(48724),f=n(35513),p=n(99077),v=n(93291),h=n(27833),m=n(20464),g=n(54425),b=n(49700);const y=(0,r.pM)({name:"ElDialogContent"}),w=(0,r.pM)({...y,props:f.Q,emits:f.k,setup(e,{expose:t}){const n=e,{t:a}=(0,b.Ym)(),{Close:i}=m.H2,{dialogRef:s,headerRef:u,bodyId:f,ns:p,style:y}=(0,r.WQ)(d.Z),{focusTrapRef:w}=(0,r.WQ)(v.r3),R=(0,g.t)(w,s),C=(0,r.EW)(()=>!!n.draggable),x=(0,r.EW)(()=>!!n.overflow),{resetPosition:k,updatePosition:E,isDragging:_}=(0,h.P)(s,u,C,x),S=(0,r.EW)(()=>[p.b(),p.is("fullscreen",n.fullscreen),p.is("draggable",C.value),p.is("dragging",_.value),p.is("align-center",!!n.alignCenter),{[p.m("center")]:n.center}]);return t({resetPosition:k,updatePosition:E}),(e,t)=>((0,r.uX)(),(0,r.CE)("div",{ref:(0,o.R1)(R),class:(0,l.C4)((0,o.R1)(S)),style:(0,l.Tr)((0,o.R1)(y)),tabindex:"-1"},[(0,r.Lk)("header",{ref_key:"headerRef",ref:u,class:(0,l.C4)([(0,o.R1)(p).e("header"),e.headerClass,{"show-close":e.showClose}])},[(0,r.RG)(e.$slots,"header",{},()=>[(0,r.Lk)("span",{role:"heading","aria-level":e.ariaLevel,class:(0,l.C4)((0,o.R1)(p).e("title"))},(0,l.v_)(e.title),11,["aria-level"])]),e.showClose?((0,r.uX)(),(0,r.CE)("button",{key:0,"aria-label":(0,o.R1)(a)("el.dialog.close"),class:(0,l.C4)((0,o.R1)(p).e("headerbtn")),type:"button",onClick:t=>e.$emit("close")},[(0,r.bF)((0,o.R1)(c.tk),{class:(0,l.C4)((0,o.R1)(p).e("close"))},{default:(0,r.k6)(()=>[((0,r.uX)(),(0,r.Wv)((0,r.$y)(e.closeIcon||(0,o.R1)(i))))]),_:1},8,["class"])],10,["aria-label","onClick"])):(0,r.Q3)("v-if",!0)],2),(0,r.Lk)("div",{id:(0,o.R1)(f),class:(0,l.C4)([(0,o.R1)(p).e("body"),e.bodyClass])},[(0,r.RG)(e.$slots,"default")],10,["id"]),e.$slots.footer?((0,r.uX)(),(0,r.CE)("footer",{key:0,class:(0,l.C4)([(0,o.R1)(p).e("footer"),e.footerClass])},[(0,r.RG)(e.$slots,"footer")],2)):(0,r.Q3)("v-if",!0)],6))}});var R=(0,p.A)(w,[["__file","dialog-content.vue"]]),C=n(87201),x=n(53711),k=n(30261),E=n(93513),_=n(81968);const S=(0,r.pM)({name:"ElDialog",inheritAttrs:!1}),M=(0,r.pM)({...S,props:C.z5,emits:C.Pg,setup(e,{expose:t}){const n=e,c=(0,r.Ht)();(0,k.b)({scope:"el-dialog",from:"the title slot",replacement:"the header slot",version:"3.0.0",ref:"https://element-plus.org/en-US/component/dialog.html#slots"},(0,r.EW)(()=>!!c.title));const f=(0,E.DU)("dialog"),p=(0,o.KR)(),v=(0,o.KR)(),h=(0,o.KR)(),{visible:m,titleId:g,bodyId:b,style:y,overlayDialogStyle:w,rendered:C,transitionConfig:S,zIndex:M,_draggable:L,_alignCenter:A,_overflow:O,handleClose:T,onModalClick:I,onOpenAutoFocus:N,onCloseAutoFocus:W,onCloseRequested:D,onFocusoutPrevented:P}=(0,x.s)(n,p);(0,r.Gt)(d.Z,{dialogRef:p,headerRef:v,bodyId:b,ns:f,rendered:C,style:y});const F=(0,_.r)(I),B=(0,r.EW)(()=>n.modalPenetrable&&!n.modal&&!n.fullscreen),z=()=>{var e;null==(e=h.value)||e.resetPosition()};return t({visible:m,dialogContentRef:h,resetPosition:z,handleClose:T}),(e,t)=>((0,r.uX)(),(0,r.Wv)((0,o.R1)(u.Nr),{to:e.appendTo,disabled:"body"===e.appendTo&&!e.appendToBody},{default:(0,r.k6)(()=>[(0,r.bF)(a.eB,(0,r.v6)((0,o.R1)(S),{persisted:""}),{default:(0,r.k6)(()=>{var t;return[(0,r.bo)((0,r.bF)((0,o.R1)(i._q),{"custom-mask-event":"",mask:e.modal,"overlay-class":[null!=(t=e.modalClass)?t:"",`${(0,o.R1)(f).namespace.value}-modal-dialog`,(0,o.R1)(f).is("penetrable",(0,o.R1)(B))],"z-index":(0,o.R1)(M)},{default:(0,r.k6)(()=>[(0,r.Lk)("div",{role:"dialog","aria-modal":"true","aria-label":e.title||void 0,"aria-labelledby":e.title?void 0:(0,o.R1)(g),"aria-describedby":(0,o.R1)(b),class:(0,l.C4)(`${(0,o.R1)(f).namespace.value}-overlay-dialog`),style:(0,l.Tr)((0,o.R1)(w)),onClick:(0,o.R1)(F).onClick,onMousedown:(0,o.R1)(F).onMousedown,onMouseup:(0,o.R1)(F).onMouseup},[(0,r.bF)((0,o.R1)(s.A),{loop:"",trapped:(0,o.R1)(m),"focus-start-el":"container",onFocusAfterTrapped:(0,o.R1)(N),onFocusAfterReleased:(0,o.R1)(W),onFocusoutPrevented:(0,o.R1)(P),onReleaseRequested:(0,o.R1)(D)},{default:(0,r.k6)(()=>[(0,o.R1)(C)?((0,r.uX)(),(0,r.Wv)(R,(0,r.v6)({key:0,ref_key:"dialogContentRef",ref:h},e.$attrs,{center:e.center,"align-center":(0,o.R1)(A),"close-icon":e.closeIcon,draggable:(0,o.R1)(L),overflow:(0,o.R1)(O),fullscreen:e.fullscreen,"header-class":e.headerClass,"body-class":e.bodyClass,"footer-class":e.footerClass,"show-close":e.showClose,title:e.title,"aria-level":e.headerAriaLevel,onClose:(0,o.R1)(T)}),(0,r.eX)({header:(0,r.k6)(()=>[e.$slots.title?(0,r.RG)(e.$slots,"title",{key:1}):(0,r.RG)(e.$slots,"header",{key:0,close:(0,o.R1)(T),titleId:(0,o.R1)(g),titleClass:(0,o.R1)(f).e("title")})]),default:(0,r.k6)(()=>[(0,r.RG)(e.$slots,"default")]),_:2},[e.$slots.footer?{name:"footer",fn:(0,r.k6)(()=>[(0,r.RG)(e.$slots,"footer")])}:void 0]),1040,["center","align-center","close-icon","draggable","overflow","fullscreen","header-class","body-class","footer-class","show-close","title","aria-level","onClose"])):(0,r.Q3)("v-if",!0)]),_:3},8,["trapped","onFocusAfterTrapped","onFocusAfterReleased","onFocusoutPrevented","onReleaseRequested"])],46,["aria-label","aria-labelledby","aria-describedby","onClick","onMousedown","onMouseup"])]),_:3},8,["mask","overlay-class","z-index"]),[[a.aG,(0,o.R1)(m)]])]}),_:3},16)]),_:3},8,["to","disabled"]))}});var L=(0,p.A)(M,[["__file","dialog.vue"]]),A=n(25376);const O=(0,A.GU)(L)},9486:function(e,t,n){"use strict";var r=n(46518),o=n(44576),a=n(79504),l=n(83972),i=n(34154),s=n(55169),u=n(92804),c=n(944),d=u.i2c,f=u.i2cUrl,p=a("".charAt),v=o.Uint8Array,h=!v||!v.prototype.toBase64||!function(){try{var e=new v;e.toBase64(null)}catch(t){return!0}}();v&&r({target:"Uint8Array",proto:!0,forced:h},{toBase64:function(){var e=i(this),t=arguments.length?l(arguments[0]):void 0,n="base64"===c(t)?d:f,r=!!t&&!!t.omitPadding;s(this.buffer);for(var o,a="",u=0,v=e.length,h=function(e){return p(n,o>>6*e&63)};u+2["left","right","top","bottom"].includes(e),scroll:({scrollTop:e,scrollLeft:t})=>[e,t].every(a.Et)}},9831:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n="fas",r="arrows-rotate",o=512,a=512,l=[128472,"refresh","sync"],i="f021",s="M65.9 228.5c13.3-93 93.4-164.5 190.1-164.5 53 0 101 21.5 135.8 56.2 .2 .2 .4 .4 .6 .6l7.6 7.2-47.9 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 53.4-11.3-10.7C390.5 28.6 326.5 0 256 0 127 0 20.3 95.4 2.6 219.5 .1 237 12.2 253.2 29.7 255.7s33.7-9.7 36.2-27.1zm443.5 64c2.5-17.5-9.7-33.7-27.1-36.2s-33.7 9.7-36.2 27.1c-13.3 93-93.4 164.5-190.1 164.5-53 0-101-21.5-135.8-56.2-.2-.2-.4-.4-.6-.6l-7.6-7.2 47.9 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 320c-8.5 0-16.7 3.4-22.7 9.5S-.1 343.7 0 352.3l1 127c.1 17.7 14.6 31.9 32.3 31.7S65.2 496.4 65 478.7l-.4-51.5 10.7 10.1c46.3 46.1 110.2 74.7 180.7 74.7 129 0 235.7-95.4 253.4-219.5z";t.definition={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.faArrowsRotate=t.definition,t.prefix=n,t.iconName=r,t.width=o,t.height=a,t.ligatures=l,t.unicode=i,t.svgPathData=s,t.aliases=l},10220:function(e,t){"use strict";var n="fas",r="arrow-left",o=512,a=512,l=[8592],i="f060",s="M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 288 480 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-370.7 0 105.4-105.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.Ce=t.mw},10350:function(e,t,n){"use strict";var r=n(43724),o=n(39297),a=Function.prototype,l=r&&Object.getOwnPropertyDescriptor,i=o(a,"name"),s=i&&"something"===function(){}.name,u=i&&(!r||r&&l(a,"name").configurable);e.exports={EXISTS:i,PROPER:s,CONFIGURABLE:u}},10515:function(e,t,n){"use strict";n.d(t,{R:function(){return r}});const r={tab:"Tab",enter:"Enter",space:"Space",left:"ArrowLeft",up:"ArrowUp",right:"ArrowRight",down:"ArrowDown",esc:"Escape",delete:"Delete",backspace:"Backspace",numpadEnter:"NumpadEnter",pageUp:"PageUp",pageDown:"PageDown",home:"Home",end:"End"}},10754:function(e,t,n){"use strict";n.d(t,{A:function(){return g}});var r=/\s/;function o(e){var t=e.length;while(t--&&r.test(e.charAt(t)));return t}var a=o,l=/^\s+/;function i(e){return e?e.slice(0,a(e)+1).replace(l,""):e}var s=i,u=n(60168),c=n(18095),d=NaN,f=/^[-+]0x[0-9a-f]+$/i,p=/^0b[01]+$/i,v=/^0o[0-7]+$/i,h=parseInt;function m(e){if("number"==typeof e)return e;if((0,c.A)(e))return d;if((0,u.A)(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=(0,u.A)(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=s(e);var n=p.test(e);return n||v.test(e)?h(e.slice(2),n?2:8):f.test(e)?d:+e}var g=m},10757:function(e,t,n){"use strict";var r=n(97751),o=n(94901),a=n(1625),l=n(7040),i=Object;e.exports=l?function(e){return"symbol"==typeof e}:function(e){var t=r("Symbol");return o(t)&&a(t.prototype,i(e))}},10767:function(e,t){"use strict";var n="fas",r="copy",o=448,a=512,l=[],i="f0c5",s="M192 0c-35.3 0-64 28.7-64 64l0 256c0 35.3 28.7 64 64 64l192 0c35.3 0 64-28.7 64-64l0-200.6c0-17.4-7.1-34.1-19.7-46.2L370.6 17.8C358.7 6.4 342.8 0 326.3 0L192 0zM64 128c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l192 0c35.3 0 64-28.7 64-64l0-16-64 0 0 16-192 0 0-256 16 0 0-64-16 0z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.jP=t.mw},10793:function(e,t,n){"use strict";n.d(t,{G:function(){return i},Y:function(){return s}});var r=n(56768),o=n(90144),a=n(29615),l=n(39195);const i={label:"label",value:"value",disabled:"disabled",options:"options"};function s(e){const t=(0,o.KR)({...i,...e.props});let n={...e.props};(0,r.wB)(()=>e.props,e=>{(0,l.A)(e,n)||(t.value={...i,...e},n={...e})},{deep:!0});const s=e=>(0,a.A)(e,t.value.label),u=e=>(0,a.A)(e,t.value.value),c=e=>(0,a.A)(e,t.value.disabled),d=e=>(0,a.A)(e,t.value.options);return{aliasProps:t,getLabel:s,getValue:u,getDisabled:c,getOptions:d}}},10798:function(e,t,n){"use strict";var r=n(80010);t.mw={prefix:r.prefix,iconName:r.iconName,icon:[r.width,r.height,r.aliases,r.unicode,r.svgPathData]},t.A=t.mw,r.prefix,r.iconName,r.width,r.height,r.aliases,r.unicode,r.svgPathData,r.aliases},10961:function(e,t,n){"use strict";n(85331)},11012:function(e,t,n){"use strict";n.d(t,{mO:function(){return g}});var r=n(56768),o=n(24232),a=n(90144),l=n(47378),i=n(12235),s=n(92056);const u=(0,l.b_)({checked:Boolean,disabled:Boolean,type:{type:String,values:["primary","success","info","warning","danger"],default:"primary"}}),c={"update:checked":e=>(0,i.Lm)(e),[s.YU]:e=>(0,i.Lm)(e)};var d=n(99077),f=n(93513);const p=(0,r.pM)({name:"ElCheckTag"}),v=(0,r.pM)({...p,props:u,emits:c,setup(e,{emit:t}){const n=e,l=(0,f.DU)("check-tag"),i=(0,r.EW)(()=>[l.b(),l.is("checked",n.checked),l.is("disabled",n.disabled),l.m(n.type||"primary")]),u=()=>{if(n.disabled)return;const e=!n.checked;t(s.YU,e),t("update:checked",e)};return(e,t)=>((0,r.uX)(),(0,r.CE)("span",{class:(0,o.C4)((0,a.R1)(i)),onClick:u},[(0,r.RG)(e.$slots,"default")],2))}});var h=(0,d.A)(v,[["__file","check-tag.vue"]]),m=n(25376);const g=(0,m.GU)(h)},11154:function(e,t){"use strict";function n(e){var t=-1,n=null==e?0:e.length,r={};while(++t{e.style.maxHeight="",e.style.overflow=e.dataset.oldOverflow,e.style.paddingTop=e.dataset.oldPaddingTop,e.style.paddingBottom=e.dataset.oldPaddingBottom},l={beforeEnter(e){e.dataset||(e.dataset={}),e.dataset.oldPaddingTop=e.style.paddingTop,e.dataset.oldPaddingBottom=e.style.paddingBottom,e.style.height&&(e.dataset.elExistsHeight=e.style.height),e.style.maxHeight=0,e.style.paddingTop=0,e.style.paddingBottom=0},enter(e){requestAnimationFrame(()=>{e.dataset.oldOverflow=e.style.overflow,e.dataset.elExistsHeight?e.style.maxHeight=e.dataset.elExistsHeight:0!==e.scrollHeight?e.style.maxHeight=`${e.scrollHeight}px`:e.style.maxHeight=0,e.style.paddingTop=e.dataset.oldPaddingTop,e.style.paddingBottom=e.dataset.oldPaddingBottom,e.style.overflow="hidden"})},afterEnter(e){e.style.maxHeight="",e.style.overflow=e.dataset.oldOverflow},enterCancelled(e){n(e)},beforeLeave(e){e.dataset||(e.dataset={}),e.dataset.oldPaddingTop=e.style.paddingTop,e.dataset.oldPaddingBottom=e.style.paddingBottom,e.dataset.oldOverflow=e.style.overflow,e.style.maxHeight=`${e.scrollHeight}px`,e.style.overflow="hidden"},leave(e){0!==e.scrollHeight&&(e.style.maxHeight=0,e.style.paddingTop=0,e.style.paddingBottom=0)},afterLeave(e){n(e)},leaveCancelled(e){n(e)}};return(e,n)=>((0,r.uX)(),(0,r.Wv)(o.eB,(0,r.v6)({name:(0,a.R1)(t).b()},(0,r.Tb)(l)),{default:(0,r.k6)(()=>[(0,r.RG)(e.$slots,"default")]),_:3},16,["name"]))}});var c=(0,l.A)(u,[["__file","collapse-transition.vue"]]),d=n(25376);const f=(0,d.GU)(c)},12140:function(e,t){"use strict";function n(e,t){return e.has(t)}t.A=n},12211:function(e,t,n){"use strict";var r=n(79039);e.exports=!r(function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})},12235:function(e,t,n){"use strict";n.d(t,{Et:function(){return i},Hp:function(){return d},Im:function(){return s},Lm:function(){return l},Xj:function(){return c},b0:function(){return a},l6:function(){return f},vq:function(){return u}});var r=n(24232),o=n(16032);const a=e=>void 0===e,l=e=>"boolean"===typeof e,i=e=>"number"===typeof e,s=e=>!e&&0!==e||(0,r.cy)(e)&&0===e.length||(0,r.Gv)(e)&&!Object.keys(e).length,u=e=>"undefined"!==typeof Element&&e instanceof Element,c=e=>(0,o.A)(e),d=e=>!!(0,r.Kg)(e)&&!Number.isNaN(Number(e)),f=e=>e===window},12251:function(e,t,n){"use strict";n.d(t,{E:function(){return s}});var r=n(45420),o=n(68782),a=n(38299),l=n(47378),i=n(58501);const s=(0,l.b_)({...r.m,...o.yh,appendTo:{type:a.k.to.type},content:{type:String,default:""},rawContent:Boolean,persistent:Boolean,visible:{type:(0,l.jq)(Boolean),default:null},transition:String,teleported:{type:Boolean,default:!0},disabled:Boolean,...(0,i.l)(["ariaLabel"])})},12375:function(e,t){"use strict";var n="fas",r="code-branch",o=448,a=512,l=[],i="f126",s="M80 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm80-24c0 32.8-19.7 61-48 73.3l0 70.7 176 0c26.5 0 48-21.5 48-48l0-22.7c-28.3-12.3-48-40.5-48-73.3 0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3l0 22.7c0 61.9-50.1 112-112 112l-176 0 0 70.7c28.3 12.3 48 40.5 48 73.3 0 44.2-35.8 80-80 80S0 476.2 0 432c0-32.8 19.7-61 48-73.3l0-205.3C19.7 141 0 112.8 0 80 0 35.8 35.8 0 80 0s80 35.8 80 80zm232 0a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM80 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.Xb=t.mw},12623:function(e,t,n){"use strict";var r=n(75014),o=n(13708);function a(e,t){t=(0,r.A)(t,e);var n=0,a=t.length;while(null!=e&&n{const{type:e,hit:t,effect:r,closable:o,round:a}=n;return[v.b(),v.is("closable",o),v.m(e||"primary"),v.m(u.value),v.m(r),v.is("hit",t),v.is("round",a)]}),m=e=>{t("close",e)},g=e=>{t("click",e)},b=e=>{var t,n,r;(null==(r=null==(n=null==(t=null==e?void 0:e.component)?void 0:t.subTree)?void 0:n.component)?void 0:r.bum)&&(e.component.subTree.component.bum=null)};return(e,t)=>e.disableTransitions?((0,r.uX)(),(0,r.CE)("span",{key:0,class:(0,o.C4)((0,a.R1)(h)),style:(0,o.Tr)({backgroundColor:e.color}),onClick:g},[(0,r.Lk)("span",{class:(0,o.C4)((0,a.R1)(v).e("content"))},[(0,r.RG)(e.$slots,"default")],2),e.closable?((0,r.uX)(),(0,r.CE)("button",{key:0,"aria-label":(0,a.R1)(c)("el.tag.close"),class:(0,o.C4)((0,a.R1)(v).e("close")),type:"button",onClick:(0,l.D$)(m,["stop"])},[(0,r.bF)((0,a.R1)(i.tk),null,{default:(0,r.k6)(()=>[(0,r.bF)((0,a.R1)(s.Close))]),_:1})],10,["aria-label","onClick"])):(0,r.Q3)("v-if",!0)],6)):((0,r.uX)(),(0,r.Wv)(l.eB,{key:1,name:`${(0,a.R1)(v).namespace.value}-zoom-in-center`,appear:"",onVnodeMounted:b},{default:(0,r.k6)(()=>[(0,r.Lk)("span",{class:(0,o.C4)((0,a.R1)(h)),style:(0,o.Tr)({backgroundColor:e.color}),onClick:g},[(0,r.Lk)("span",{class:(0,o.C4)((0,a.R1)(v).e("content"))},[(0,r.RG)(e.$slots,"default")],2),e.closable?((0,r.uX)(),(0,r.CE)("button",{key:0,"aria-label":(0,a.R1)(c)("el.tag.close"),class:(0,o.C4)((0,a.R1)(v).e("close")),type:"button",onClick:(0,l.D$)(m,["stop"])},[(0,r.bF)((0,a.R1)(i.tk),null,{default:(0,r.k6)(()=>[(0,r.bF)((0,a.R1)(s.Close))]),_:1})],10,["aria-label","onClick"])):(0,r.Q3)("v-if",!0)],6)]),_:3},8,["name"]))}});var m=(0,c.A)(h,[["__file","tag.vue"]]),g=n(25376);const b=(0,g.GU)(m)},12739:function(e,t,n){"use strict";n.d(t,{A:function(){return b}});var r=n(57433);function o(){this.__data__=new r.A,this.size=0}var a=o;function l(e){var t=this.__data__,n=t["delete"](e);return this.size=t.size,n}var i=l;function s(e){return this.__data__.get(e)}var u=s;function c(e){return this.__data__.has(e)}var d=c,f=(n(44114),n(76062)),p=n(67788),v=200;function h(e,t){var n=this.__data__;if(n instanceof r.A){var o=n.__data__;if(!f.A||o.length{if(0===b.length)return;const t=(0,h.CG)(e),n=b[b.length-1][g];if(n.length>0&&t===m.R.tab){if(1===n.length)return e.preventDefault(),void(document.activeElement!==n[0]&&n[0].focus());const t=e.shiftKey,r=e.target===n[0],o=e.target===n[n.length-1];r&&t&&(e.preventDefault(),n[n.length-1].focus()),o&&!t&&(e.preventDefault(),n[0].focus())}},w={beforeMount(e){e[g]=(0,v.uG)(e),b.push(e),b.length<=1&&document.addEventListener("keydown",y)},updated(e){(0,r.dY)(()=>{e[g]=(0,v.uG)(e)})},unmounted(){b.shift(),0===b.length&&document.removeEventListener("keydown",y)}};var R=n(20464),C=n(3027),x=n(38114),k=n(81305),E=n(27833),_=n(32667),S=n(81968);const M=(0,r.pM)({name:"ElMessageBox",directives:{TrapFocus:w},components:{ElButton:i.S2,ElFocusTrap:f.A,ElInput:s.WK,ElOverlay:u._q,ElIcon:c.tk,...R.Nk},inheritAttrs:!1,props:{buttonSize:{type:String,validator:C.x},modal:{type:Boolean,default:!0},lockScroll:{type:Boolean,default:!0},showClose:{type:Boolean,default:!0},closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},closeOnHashChange:{type:Boolean,default:!0},center:Boolean,draggable:Boolean,overflow:Boolean,roundButton:Boolean,container:{type:String,default:"body"},boxType:{type:String,default:""}},emits:["vanish","action"],setup(e,{emit:t}){const{locale:n,zIndex:o,ns:i,size:s}=(0,x.ht)("message-box",(0,r.EW)(()=>e.buttonSize)),{t:u}=n,{nextZIndex:c}=o,f=(0,a.KR)(!1),p=(0,a.Kh)({autofocus:!0,beforeClose:null,callback:null,cancelButtonText:"",cancelButtonClass:"",confirmButtonText:"",confirmButtonClass:"",customClass:"",customStyle:{},dangerouslyUseHTMLString:!1,distinguishCancelAndClose:!1,icon:"",closeIcon:"",inputPattern:null,inputPlaceholder:"",inputType:"text",inputValue:"",inputValidator:void 0,inputErrorMessage:"",message:"",modalFade:!0,modalClass:"",showCancelButton:!1,showConfirmButton:!0,type:"",title:void 0,showInput:!1,action:"",confirmButtonLoading:!1,cancelButtonLoading:!1,confirmButtonLoadingIcon:(0,a.IG)(d.Loading),cancelButtonLoadingIcon:(0,a.IG)(d.Loading),confirmButtonDisabled:!1,editorErrorMessage:"",validateError:!1,zIndex:c()}),v=(0,r.EW)(()=>{const e=p.type;return{[i.bm("icon",e)]:e&&R.rz[e]}}),h=(0,k.Bi)(),m=(0,k.Bi)(),g=(0,r.EW)(()=>{const e=p.type;return p.icon||e&&R.rz[e]||""}),b=(0,r.EW)(()=>!!p.message),y=(0,a.KR)(),w=(0,a.KR)(),C=(0,a.KR)(),M=(0,a.KR)(),L=(0,a.KR)(),A=(0,r.EW)(()=>p.confirmButtonClass);(0,r.wB)(()=>p.inputValue,async t=>{await(0,r.dY)(),"prompt"===e.boxType&&t&&B()},{immediate:!0}),(0,r.wB)(()=>f.value,t=>{var n,o;t&&("prompt"!==e.boxType&&(p.autofocus?C.value=null!=(o=null==(n=L.value)?void 0:n.$el)?o:y.value:C.value=y.value),p.zIndex=c()),"prompt"===e.boxType&&(t?(0,r.dY)().then(()=>{var e;M.value&&M.value.$el&&(p.autofocus?C.value=null!=(e=z())?e:y.value:C.value=y.value)}):(p.editorErrorMessage="",p.validateError=!1))});const O=(0,r.EW)(()=>e.draggable),T=(0,r.EW)(()=>e.overflow),{isDragging:I}=(0,E.P)(y,w,O,T);function N(){f.value&&(f.value=!1,(0,r.dY)(()=>{p.action&&t("action",p.action)}))}(0,r.sV)(async()=>{await(0,r.dY)(),e.closeOnHashChange&&window.addEventListener("hashchange",N)}),(0,r.xo)(()=>{e.closeOnHashChange&&window.removeEventListener("hashchange",N)});const W=()=>{e.closeOnClickModal&&F(p.distinguishCancelAndClose?"close":"cancel")},D=(0,S.r)(W),P=e=>{if("textarea"!==p.inputType)return e.preventDefault(),F("confirm")},F=t=>{var n;("prompt"!==e.boxType||"confirm"!==t||B())&&(p.action=t,p.beforeClose?null==(n=p.beforeClose)||n.call(p,t,p,N):N())},B=()=>{if("prompt"===e.boxType){const e=p.inputPattern;if(e&&!e.test(p.inputValue||""))return p.editorErrorMessage=p.inputErrorMessage||u("el.messagebox.error"),p.validateError=!0,!1;const t=p.inputValidator;if((0,l.Tn)(t)){const e=t(p.inputValue);if(!1===e)return p.editorErrorMessage=p.inputErrorMessage||u("el.messagebox.error"),p.validateError=!0,!1;if((0,l.Kg)(e))return p.editorErrorMessage=e,p.validateError=!0,!1}}return p.editorErrorMessage="",p.validateError=!1,!0},z=()=>{var e,t;const n=null==(e=M.value)?void 0:e.$refs;return null!=(t=null==n?void 0:n.input)?t:null==n?void 0:n.textarea},$=()=>{F("close")},V=()=>{e.closeOnPressEscape&&$()};return e.lockScroll&&(0,_.t)(f,{ns:i}),{...(0,a.QW)(p),ns:i,overlayEvent:D,visible:f,hasMessage:b,typeClass:v,contentId:h,inputId:m,btnSize:s,iconComponent:g,confirmButtonClasses:A,rootRef:y,focusStartRef:C,headerRef:w,inputRef:M,isDragging:I,confirmRef:L,doClose:N,handleClose:$,onCloseRequested:V,handleWrapperClick:W,handleInputEnter:P,handleAction:F,t:u}}});function L(e,t,n,a,i,s){const u=(0,r.g2)("el-icon"),c=(0,r.g2)("el-input"),d=(0,r.g2)("el-button"),f=(0,r.g2)("el-focus-trap"),p=(0,r.g2)("el-overlay");return(0,r.uX)(),(0,r.Wv)(o.eB,{name:"fade-in-linear",onAfterLeave:t=>e.$emit("vanish"),persisted:""},{default:(0,r.k6)(()=>[(0,r.bo)((0,r.bF)(p,{"z-index":e.zIndex,"overlay-class":[e.ns.is("message-box"),e.modalClass],mask:e.modal},{default:(0,r.k6)(()=>[(0,r.Lk)("div",{role:"dialog","aria-label":e.title,"aria-modal":"true","aria-describedby":e.showInput?void 0:e.contentId,class:(0,l.C4)(`${e.ns.namespace.value}-overlay-message-box`),onClick:e.overlayEvent.onClick,onMousedown:e.overlayEvent.onMousedown,onMouseup:e.overlayEvent.onMouseup},[(0,r.bF)(f,{loop:"",trapped:e.visible,"focus-trap-el":e.rootRef,"focus-start-el":e.focusStartRef,onReleaseRequested:e.onCloseRequested},{default:(0,r.k6)(()=>[(0,r.Lk)("div",{ref:"rootRef",class:(0,l.C4)([e.ns.b(),e.customClass,e.ns.is("draggable",e.draggable),e.ns.is("dragging",e.isDragging),{[e.ns.m("center")]:e.center}]),style:(0,l.Tr)(e.customStyle),tabindex:"-1",onClick:(0,o.D$)(()=>{},["stop"])},[null!==e.title&&void 0!==e.title?((0,r.uX)(),(0,r.CE)("div",{key:0,ref:"headerRef",class:(0,l.C4)([e.ns.e("header"),{"show-close":e.showClose}])},[(0,r.Lk)("div",{class:(0,l.C4)(e.ns.e("title"))},[e.iconComponent&&e.center?((0,r.uX)(),(0,r.Wv)(u,{key:0,class:(0,l.C4)([e.ns.e("status"),e.typeClass])},{default:(0,r.k6)(()=>[((0,r.uX)(),(0,r.Wv)((0,r.$y)(e.iconComponent)))]),_:1},8,["class"])):(0,r.Q3)("v-if",!0),(0,r.Lk)("span",null,(0,l.v_)(e.title),1)],2),e.showClose?((0,r.uX)(),(0,r.CE)("button",{key:0,type:"button",class:(0,l.C4)(e.ns.e("headerbtn")),"aria-label":e.t("el.messagebox.close"),onClick:t=>e.handleAction(e.distinguishCancelAndClose?"close":"cancel"),onKeydown:(0,o.jR)((0,o.D$)(t=>e.handleAction(e.distinguishCancelAndClose?"close":"cancel"),["prevent"]),["enter"])},[(0,r.bF)(u,{class:(0,l.C4)(e.ns.e("close"))},{default:(0,r.k6)(()=>[((0,r.uX)(),(0,r.Wv)((0,r.$y)(e.closeIcon||"close")))]),_:1},8,["class"])],42,["aria-label","onClick","onKeydown"])):(0,r.Q3)("v-if",!0)],2)):(0,r.Q3)("v-if",!0),(0,r.Lk)("div",{id:e.contentId,class:(0,l.C4)(e.ns.e("content"))},[(0,r.Lk)("div",{class:(0,l.C4)(e.ns.e("container"))},[e.iconComponent&&!e.center&&e.hasMessage?((0,r.uX)(),(0,r.Wv)(u,{key:0,class:(0,l.C4)([e.ns.e("status"),e.typeClass])},{default:(0,r.k6)(()=>[((0,r.uX)(),(0,r.Wv)((0,r.$y)(e.iconComponent)))]),_:1},8,["class"])):(0,r.Q3)("v-if",!0),e.hasMessage?((0,r.uX)(),(0,r.CE)("div",{key:1,class:(0,l.C4)(e.ns.e("message"))},[(0,r.RG)(e.$slots,"default",{},()=>[e.dangerouslyUseHTMLString?((0,r.uX)(),(0,r.Wv)((0,r.$y)(e.showInput?"label":"p"),{key:1,for:e.showInput?e.inputId:void 0,innerHTML:e.message},null,8,["for","innerHTML"])):((0,r.uX)(),(0,r.Wv)((0,r.$y)(e.showInput?"label":"p"),{key:0,for:e.showInput?e.inputId:void 0,textContent:(0,l.v_)(e.message)},null,8,["for","textContent"]))])],2)):(0,r.Q3)("v-if",!0)],2),(0,r.bo)((0,r.Lk)("div",{class:(0,l.C4)(e.ns.e("input"))},[(0,r.bF)(c,{id:e.inputId,ref:"inputRef",modelValue:e.inputValue,"onUpdate:modelValue":t=>e.inputValue=t,type:e.inputType,placeholder:e.inputPlaceholder,"aria-invalid":e.validateError,class:(0,l.C4)({invalid:e.validateError}),onKeydown:(0,o.jR)(e.handleInputEnter,["enter"])},null,8,["id","modelValue","onUpdate:modelValue","type","placeholder","aria-invalid","class","onKeydown"]),(0,r.Lk)("div",{class:(0,l.C4)(e.ns.e("errormsg")),style:(0,l.Tr)({visibility:e.editorErrorMessage?"visible":"hidden"})},(0,l.v_)(e.editorErrorMessage),7)],2),[[o.aG,e.showInput]])],10,["id"]),(0,r.Lk)("div",{class:(0,l.C4)(e.ns.e("btns"))},[e.showCancelButton?((0,r.uX)(),(0,r.Wv)(d,{key:0,loading:e.cancelButtonLoading,"loading-icon":e.cancelButtonLoadingIcon,class:(0,l.C4)([e.cancelButtonClass]),round:e.roundButton,size:e.btnSize,onClick:t=>e.handleAction("cancel"),onKeydown:(0,o.jR)((0,o.D$)(t=>e.handleAction("cancel"),["prevent"]),["enter"])},{default:(0,r.k6)(()=>[(0,r.eW)((0,l.v_)(e.cancelButtonText||e.t("el.messagebox.cancel")),1)]),_:1},8,["loading","loading-icon","class","round","size","onClick","onKeydown"])):(0,r.Q3)("v-if",!0),(0,r.bo)((0,r.bF)(d,{ref:"confirmRef",type:"primary",loading:e.confirmButtonLoading,"loading-icon":e.confirmButtonLoadingIcon,class:(0,l.C4)([e.confirmButtonClasses]),round:e.roundButton,disabled:e.confirmButtonDisabled,size:e.btnSize,onClick:t=>e.handleAction("confirm"),onKeydown:(0,o.jR)((0,o.D$)(t=>e.handleAction("confirm"),["prevent"]),["enter"])},{default:(0,r.k6)(()=>[(0,r.eW)((0,l.v_)(e.confirmButtonText||e.t("el.messagebox.confirm")),1)]),_:1},8,["loading","loading-icon","class","round","disabled","size","onClick","onKeydown"]),[[o.aG,e.showConfirmButton]])],2)],14,["onClick"])]),_:3},8,["trapped","focus-trap-el","focus-start-el","onReleaseRequested"])],42,["aria-label","aria-describedby","onClick","onMousedown","onMouseup"])]),_:3},8,["z-index","overlay-class","mask"]),[[o.aG,e.visible]])]),_:3},8,["onAfterLeave"])}var A=(0,p.A)(M,[["render",L],["__file","index.vue"]]),O=n(20017),T=n(12235),I=n(86894);const N=new Map,W=e=>{let t=document.body;return e.appendTo&&((0,l.Kg)(e.appendTo)&&(t=document.querySelector(e.appendTo)),(0,T.vq)(e.appendTo)&&(t=e.appendTo),(0,T.vq)(t)||((0,I.U)("ElMessageBox","the appendTo option is not an HTMLElement. Falling back to document.body."),t=document.body)),t},D=(e,t,n=null)=>{const a=(0,r.bF)(A,e,(0,l.Tn)(e.message)||(0,r.vv)(e.message)?{default:(0,l.Tn)(e.message)?e.message:()=>e.message}:null);return a.appContext=n,(0,o.XX)(a,t),W(e).appendChild(t.firstElementChild),a.component},P=()=>document.createElement("div"),F=(e,t)=>{const n=P();e.onVanish=()=>{(0,o.XX)(null,n),N.delete(i)},e.onAction=t=>{const n=N.get(i);let o;o=e.showInput?{value:i.inputValue,action:t}:t,e.callback?e.callback(o,r.proxy):"cancel"===t||"close"===t?e.distinguishCancelAndClose&&"cancel"!==t?n.reject("close"):n.reject("cancel"):n.resolve(o)};const r=D(e,n,t),i=r.proxy;for(const o in e)(0,l.$3)(e,o)&&!(0,l.$3)(i.$props,o)&&("closeIcon"===o&&(0,l.Gv)(e[o])?i[o]=(0,a.IG)(e[o]):i[o]=e[o]);return i.visible=!0,i};function B(e,t=null){if(!O.oc)return Promise.reject();let n;return(0,l.Kg)(e)||(0,r.vv)(e)?e={message:e}:n=e.callback,new Promise((r,o)=>{const a=F(e,null!=t?t:B._context);N.set(a,{options:e,callback:n,resolve:r,reject:o})})}const z=["alert","confirm","prompt"],$={alert:{closeOnPressEscape:!1,closeOnClickModal:!1},confirm:{showCancelButton:!0},prompt:{showCancelButton:!0,showInput:!0}};function V(e){return(t,n,r,o)=>{let a="";return(0,l.Gv)(n)?(r=n,a=""):a=(0,T.b0)(n)?"":n,B(Object.assign({title:a,message:t,type:"",...$[e]},r,{boxType:e}),o)}}z.forEach(e=>{B[e]=V(e)}),B.close=()=>{N.forEach((e,t)=>{t.doClose()}),N.clear()},B._context=null;const j=B;j.install=e=>{j._context=e._context,e.config.globalProperties.$msgbox=j,e.config.globalProperties.$messageBox=j,e.config.globalProperties.$alert=j.alert,e.config.globalProperties.$confirm=j.confirm,e.config.globalProperties.$prompt=j.prompt};const K=j},13110:function(e,t,n){"use strict";var r=n(7262);t.mw={prefix:r.prefix,iconName:r.iconName,icon:[r.width,r.height,r.aliases,r.unicode,r.svgPathData]},t.iW=t.mw,r.prefix,r.iconName,r.width,r.height,r.aliases,r.unicode,r.svgPathData,r.aliases},13118:function(e,t){"use strict";var n="fas",r="folder-open",o=576,a=512,l=[128194,128449,61717],i="f07c",s="M56 225.6L32.4 296.2 32.4 96c0-35.3 28.7-64 64-64l138.7 0c13.8 0 27.3 4.5 38.4 12.8l38.4 28.8c5.5 4.2 12.3 6.4 19.2 6.4l117.3 0c35.3 0 64 28.7 64 64l0 16-365.4 0c-41.3 0-78 26.4-91.1 65.6zM477.8 448L99 448c-32.8 0-55.9-32.1-45.5-63.2l48-144C108 221.2 126.4 208 147 208l378.8 0c32.8 0 55.9 32.1 45.5 63.2l-48 144c-6.5 19.6-24.9 32.8-45.5 32.8z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.Uj=t.mw},13123:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n="fas",r="shield-halved",o=512,a=512,l=["shield-alt"],i="f3ed",s="M256 0c4.6 0 9.2 1 13.4 2.9L457.8 82.8c22 9.3 38.4 31 38.3 57.2-.5 99.2-41.3 280.7-213.6 363.2-16.7 8-36.1 8-52.8 0-172.4-82.5-213.1-264-213.6-363.2-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.9 1 251.4 0 256 0zm0 66.8l0 378.1c138-66.8 175.1-214.8 176-303.4l-176-74.6 0 0z";t.definition={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.faShieldHalved=t.definition,t.prefix=n,t.iconName=r,t.width=o,t.height=a,t.ligatures=l,t.unicode=i,t.svgPathData=s,t.aliases=l},13127:function(e,t){"use strict";var n="fas",r="pager",o=512,a=512,l=[128223],i="f815",s="M0 128C0 92.7 28.7 64 64 64l384 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128zm64 32l0 64c0 17.7 14.3 32 32 32l320 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32L96 128c-17.7 0-32 14.3-32 32zM88 320c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0zm128 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.ji=t.mw},13579:function(e,t,n){"use strict";var r=n(46518),o=n(69565),a=n(72652),l=n(79306),i=n(28551),s=n(1767),u=n(9539),c=n(84549),d=c("some",TypeError);r({target:"Iterator",proto:!0,real:!0,forced:d},{some:function(e){i(this);try{l(e)}catch(r){u(this,"throw",r)}if(d)return o(d,this,e);var t=s(this),n=0;return a(t,function(t,r){if(e(t,n++))return r()},{IS_RECORD:!0,INTERRUPTED:!0}).stopped}})},13708:function(e,t,n){"use strict";var r=n(18095),o=1/0;function a(e){if("string"==typeof e||(0,r.A)(e))return e;var t=e+"";return"0"==t&&1/e==-o?"-0":t}t.A=a},13925:function(e,t,n){"use strict";var r=n(20034);e.exports=function(e){return r(e)||null===e}},14381:function(e,t,n){"use strict";n.d(t,{A:function(){return P}});var r=n(11591),o=n(5351),a=n(22799),l="[object Arguments]",i="[object Array]",s="[object Boolean]",u="[object Date]",c="[object Error]",d="[object Function]",f="[object Map]",p="[object Number]",v="[object Object]",h="[object RegExp]",m="[object Set]",g="[object String]",b="[object WeakMap]",y="[object ArrayBuffer]",w="[object DataView]",R="[object Float32Array]",C="[object Float64Array]",x="[object Int8Array]",k="[object Int16Array]",E="[object Int32Array]",_="[object Uint8Array]",S="[object Uint8ClampedArray]",M="[object Uint16Array]",L="[object Uint32Array]",A={};function O(e){return(0,a.A)(e)&&(0,o.A)(e.length)&&!!A[(0,r.A)(e)]}A[R]=A[C]=A[x]=A[k]=A[E]=A[_]=A[S]=A[M]=A[L]=!0,A[l]=A[i]=A[y]=A[s]=A[w]=A[u]=A[c]=A[d]=A[f]=A[p]=A[v]=A[h]=A[m]=A[g]=A[b]=!1;var T=O,I=n(17528),N=n(59646),W=N.A&&N.A.isTypedArray,D=W?(0,I.A)(W):T,P=D},14552:function(e,t){"use strict";var n="fas",r="comments",o=576,a=512,l=[128490,61670],i="f086",s="M384 144c0 97.2-86 176-192 176-26.7 0-52.1-5-75.2-14L35.2 349.2c-9.3 4.9-20.7 3.2-28.2-4.2s-9.2-18.9-4.2-28.2l35.6-67.2C14.3 220.2 0 183.6 0 144 0 46.8 86-32 192-32S384 46.8 384 144zm0 368c-94.1 0-172.4-62.1-188.8-144 120-1.5 224.3-86.9 235.8-202.7 83.3 19.2 145 88.3 145 170.7 0 39.6-14.3 76.2-38.4 105.6l35.6 67.2c4.9 9.3 3.2 20.7-4.2 28.2s-18.9 9.2-28.2 4.2L459.2 498c-23.1 9-48.5 14-75.2 14z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.q9=t.mw},14722:function(e,t){"use strict";var n="fas",r="clock",o=512,a=512,l=[128339,"clock-four"],i="f017",s="M256 0a256 256 0 1 1 0 512 256 256 0 1 1 0-512zM232 120l0 136c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2 280 120c0-13.3-10.7-24-24-24s-24 10.7-24 24z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.a$=t.mw},15024:function(e,t,n){"use strict";var r=n(46518),o=n(83650),a=n(39835),l=n(84916),i=!l("symmetricDifference")||!a("symmetricDifference");r({target:"Set",proto:!0,real:!0,forced:i},{symmetricDifference:o})},15412:function(e,t,n){"use strict";n(85331),n(72099)},15431:function(e,t,n){"use strict";n.d(t,{V:function(){return a},m:function(){return o}});var r=n(20017);const o=e=>r.oc?window.requestAnimationFrame(e):setTimeout(e,16),a=e=>r.oc?window.cancelAnimationFrame(e):clearTimeout(e)},15616:function(e,t,n){"use strict";n(85331),n(97197)},15925:function(e,t,n){"use strict";var r=n(81061);t.mw={prefix:r.prefix,iconName:r.iconName,icon:[r.width,r.height,r.aliases,r.unicode,r.svgPathData]},t.zp=t.mw,r.prefix,r.iconName,r.width,r.height,r.aliases,r.unicode,r.svgPathData,r.aliases},16032:function(e,t){"use strict";function n(e){return null==e}t.A=n},16193:function(e,t,n){"use strict";var r=n(79504),o=Error,a=r("".replace),l=function(e){return String(new o(e).stack)}("zxcasd"),i=/\n\s*at [^:]*:[^\n]*/,s=i.test(l);e.exports=function(e,t){if(s&&"string"==typeof e&&!o.prepareStackTrace)while(t--)e=a(e,i,"");return e}},16249:function(e,t){"use strict";var n="fas",r="chevron-right",o=320,a=512,l=[9002],i="f054",s="M311.1 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L243.2 256 73.9 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.Xk=t.mw},16632:function(e,t,n){"use strict";var r=n(46518),o=n(44576),a=n(59143),l=n(34154),i=o.Uint8Array,s=!i||!i.prototype.setFromBase64||!function(){var e=new i([255,255,255,255,255]);try{return void e.setFromBase64("",null)}catch(t){}try{return void e.setFromBase64("a")}catch(t){}try{e.setFromBase64("MjYyZg===")}catch(t){return 50===e[0]&&54===e[1]&&50===e[2]&&255===e[3]&&255===e[4]}}();i&&r({target:"Uint8Array",proto:!0,forced:s},{setFromBase64:function(e){l(this);var t=a(e,arguments.length>1?arguments[1]:void 0,this,this.length);return{read:t.read,written:t.written}}})},16714:function(e,t,n){"use strict";n.d(t,{_q:function(){return f}});var r=n(56768),o=n(81968),a=n(96139),l=n(47378),i=n(93513);const s=(0,l.b_)({mask:{type:Boolean,default:!0},customMaskEvent:Boolean,overlayClass:{type:(0,l.jq)([String,Array,Object])},zIndex:{type:(0,l.jq)([String,Number])}}),u={click:e=>e instanceof MouseEvent},c="overlay";var d=(0,r.pM)({name:"ElOverlay",props:s,emits:u,setup(e,{slots:t,emit:n}){const l=(0,i.DU)(c),s=e=>{n("click",e)},{onClick:u,onMousedown:d,onMouseup:f}=(0,o.r)(e.customMaskEvent?void 0:s);return()=>e.mask?(0,r.bF)("div",{class:[l.b(),e.overlayClass],style:{zIndex:e.zIndex},onClick:u,onMousedown:d,onMouseup:f},[(0,r.RG)(t,"default")],a.Yn.STYLE|a.Yn.CLASS|a.Yn.PROPS,["onClick","onMouseup","onMousedown"]):(0,r.h)("div",{class:e.overlayClass,style:{zIndex:e.zIndex,position:"fixed",top:"0px",right:"0px",bottom:"0px",left:"0px"}},[(0,r.RG)(t,"default")])}});const f=d},16823:function(e){"use strict";var t=String;e.exports=function(e){try{return t(e)}catch(n){return"Object"}}},16829:function(e,t){"use strict";var n="fas",r="cloud",o=576,a=512,l=[9729],i="f0c2",s="M0 336c0 79.5 64.5 144 144 144l304 0c70.7 0 128-57.3 128-128 0-51.6-30.5-96.1-74.5-116.3 6.7-13.1 10.5-28 10.5-43.7 0-53-43-96-96-96-17.7 0-34.2 4.8-48.4 13.1-24.1-45.8-72.2-77.1-127.6-77.1-79.5 0-144 64.5-144 144 0 8 .7 15.9 1.9 23.5-56.9 19.2-97.9 73.1-97.9 136.5z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.jB=t.mw},17214:function(e,t,n){"use strict";var r=n(56001);t.mw={prefix:r.prefix,iconName:r.iconName,icon:[r.width,r.height,r.aliases,r.unicode,r.svgPathData]},t.MT=t.mw,r.prefix,r.iconName,r.width,r.height,r.aliases,r.unicode,r.svgPathData,r.aliases},17528:function(e,t){"use strict";function n(e){return function(t){return e(t)}}t.A=n},17582:function(e,t,n){"use strict";n.d(t,{A:function(){return P}});var r=n(12739),o=n(57179),a=1,l=2;function i(e,t,n,i){var s=n.length,u=s,c=!i;if(null==e)return!u;e=Object(e);while(s--){var d=n[s];if(c&&d[2]?d[1]!==e[d[0]]:!(d[0]in e))return!1}while(++s1;return t.has(1)&&t.clear(),{done:n,value:2}}}}},t=new Set([1,2,3,4]);return 3!==t.difference(e).size});r({target:"Set",proto:!0,real:!0,forced:s},{difference:o})},18014:function(e,t,n){"use strict";var r=n(91291),o=Math.min;e.exports=function(e){var t=r(e);return t>0?o(t,9007199254740991):0}},18095:function(e,t,n){"use strict";var r=n(11591),o=n(22799),a="[object Symbol]";function l(e){return"symbol"==typeof e||(0,o.A)(e)&&(0,r.A)(e)==a}t.A=l},18111:function(e,t,n){"use strict";var r=n(46518),o=n(44576),a=n(90679),l=n(28551),i=n(94901),s=n(42787),u=n(62106),c=n(97040),d=n(79039),f=n(39297),p=n(78227),v=n(57657).IteratorPrototype,h=n(43724),m=n(96395),g="constructor",b="Iterator",y=p("toStringTag"),w=TypeError,R=o[b],C=m||!i(R)||R.prototype!==v||!d(function(){R({})}),x=function(){if(a(this,v),s(this)===v)throw new w("Abstract class Iterator not directly constructable")},k=function(e,t){h?u(v,e,{configurable:!0,get:function(){return t},set:function(t){if(l(this),this===v)throw new w("You can't redefine this property");f(this,e)?this[e]=t:c(this,e,t)}}):v[e]=t};f(v,y)||k(y,b),!C&&f(v,g)&&v[g]!==Object||k(g,x),x.prototype=v,r({global:!0,constructor:!0,forced:C},{Iterator:x})},18237:function(e,t,n){"use strict";var r=n(46518),o=n(72652),a=n(79306),l=n(28551),i=n(1767),s=n(9539),u=n(84549),c=n(18745),d=n(79039),f=TypeError,p=d(function(){[].keys().reduce(function(){},void 0)}),v=!p&&u("reduce",f);r({target:"Iterator",proto:!0,real:!0,forced:p||v},{reduce:function(e){l(this);try{a(e)}catch(d){s(this,"throw",d)}var t=arguments.length<2,n=t?void 0:arguments[1];if(v)return c(v,this,t?[e]:[e,n]);var r=i(this),u=0;if(o(r,function(r){t?(t=!1,n=r):n=e(n,r,u),u++},{IS_RECORD:!0}),t)throw new f("Reduce of empty iterator with no initial value");return n}})},18311:function(e,t,n){"use strict";var r=n(39578),o="object"==typeof exports&&exports&&!exports.nodeType&&exports,a=o&&"object"==typeof module&&module&&!module.nodeType&&module,l=a&&a.exports===o,i=l?r.A.Buffer:void 0,s=i?i.allocUnsafe:void 0;function u(e,t){if(t)return e.slice();var n=e.length,r=s?s(n):new e.constructor(n);return e.copy(r),r}t.A=u},18422:function(e,t){"use strict";var n="fas",r="download",o=448,a=512,l=[],i="f019",s="M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 210.7-41.4-41.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 242.7 256 32zM64 320c-35.3 0-64 28.7-64 64l0 32c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-32c0-35.3-28.7-64-64-64l-46.9 0-56.6 56.6c-31.2 31.2-81.9 31.2-113.1 0L110.9 320 64 320zm304 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.cb=t.mw},18579:function(e,t){"use strict";var n="fas",r="shield",o=512,a=512,l=[128737,"shield-blank"],i="f132",s="M256 0c4.6 0 9.2 1 13.4 2.9L457.8 82.8c22 9.3 38.4 31 38.3 57.2-.5 99.2-41.3 280.7-213.6 363.2-16.7 8-36.1 8-52.8 0-172.4-82.5-213.1-264-213.6-363.2-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.9 1 251.4 0 256 0z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.V2=t.mw},18624:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n="fas",r="clock-rotate-left",o=576,a=512,l=["history"],i="f1da",s="M288 64c106 0 192 86 192 192S394 448 288 448c-65.2 0-122.9-32.5-157.6-82.3-10.1-14.5-30.1-18-44.6-7.9s-18 30.1-7.9 44.6C124.1 468.6 201 512 288 512 429.4 512 544 397.4 544 256S429.4 0 288 0C202.3 0 126.5 42.1 80 106.7L80 80c0-17.7-14.3-32-32-32S16 62.3 16 80l0 112c0 17.7 14.3 32 32 32l24.6 0c.5 0 1 0 1.5 0l86 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-38.3 0C154.9 102.6 217 64 288 64zm24 88c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 104c0 6.4 2.5 12.5 7 17l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-65-65 0-94.1z";t.definition={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.faClockRotateLeft=t.definition,t.prefix=n,t.iconName=r,t.width=o,t.height=a,t.ligatures=l,t.unicode=i,t.svgPathData=s,t.aliases=l},18727:function(e,t,n){"use strict";var r=n(36955);e.exports=function(e){var t=r(e);return"BigInt64Array"===t||"BigUint64Array"===t}},18742:function(e,t){"use strict";var n="fas",r="paper-plane",o=576,a=512,l=[61913],i="f1d8",s="M536.4-26.3c9.8-3.5 20.6-1 28 6.3s9.8 18.2 6.3 28l-178 496.9c-5 13.9-18.1 23.1-32.8 23.1-14.2 0-27-8.6-32.3-21.7l-64.2-158c-4.5-11-2.5-23.6 5.2-32.6l94.5-112.4c5.1-6.1 4.7-15-.9-20.6s-14.6-6-20.6-.9L229.2 276.1c-9.1 7.6-21.6 9.6-32.6 5.2L38.1 216.8c-13.1-5.3-21.7-18.1-21.7-32.3 0-14.7 9.2-27.8 23.1-32.8l496.9-178z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.is=t.mw},18745:function(e,t,n){"use strict";var r=n(40616),o=Function.prototype,a=o.apply,l=o.call;e.exports="object"==typeof Reflect&&Reflect.apply||(r?l.bind(a):function(){return l.apply(a,arguments)})},19223:function(e,t){"use strict";var n="fas",r="chevron-down",o=448,a=512,l=[],i="f078",s="M201.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 338.7 54.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.Jt=t.mw},19462:function(e,t,n){"use strict";var r=n(69565),o=n(2360),a=n(66699),l=n(56279),i=n(78227),s=n(91181),u=n(55966),c=n(57657).IteratorPrototype,d=n(62529),f=n(9539),p=n(91385),v=i("toStringTag"),h="IteratorHelper",m="WrapForValidIterator",g="normal",b="throw",y=s.set,w=function(e){var t=s.getterFor(e?m:h);return l(o(c),{next:function(){var n=t(this);if(e)return n.nextHandler();if(n.done)return d(void 0,!0);try{var r=n.nextHandler();return n.returnHandlerResult?r:d(r,n.done)}catch(o){throw n.done=!0,o}},return:function(){var n=t(this),o=n.iterator;if(n.done=!0,e){var a=u(o,"return");return a?r(a,o):d(void 0,!0)}if(n.inner)try{f(n.inner.iterator,g)}catch(l){return f(o,b,l)}if(n.openIters)try{p(n.openIters,g)}catch(l){return f(o,b,l)}return o&&f(o,g),d(void 0,!0)}})},R=w(!0),C=w(!1);a(C,v,"Iterator Helper"),e.exports=function(e,t,n){var r=function(r,o){o?(o.iterator=r.iterator,o.next=r.next):o=r,o.type=t?m:h,o.returnHandlerResult=!!n,o.nextHandler=e,o.counter=0,o.done=!1,y(this,o)};return r.prototype=t?R:C,r}},19615:function(e,t,n){"use strict";n.d(t,{A:function(){return p}});var r=n(12623),o=n(20203),a=n(75014);function l(e,t,n){var l=-1,i=t.length,s={};while(++lc)if(u=i[c++],u!==u)return!0}else for(;s>c;c++)if((e||c in i)&&i[c]===n)return e||c||0;return!e&&-1}};e.exports={includes:l(!0),indexOf:l(!1)}},20017:function(e,t,n){"use strict";n.d(t,{qE:function(){return w},AI:function(){return h},bW:function(){return M},uA:function(){return h},D_:function(){return S},oc:function(){return m},C8:function(){return g},Tn:function(){return b},un:function(){return C},Kg:function(){return y},lQ:function(){return R},jN:function(){return O},V7:function(){return I},x_:function(){return x},rd:function(){return W},Uo:function(){return L},xD:function(){return T},k3:function(){return N},TO:function(){return D}});n(44114),n(18111),n(81148),n(22489),n(20116),n(7588),n(61701),n(18237),n(13579),n(17642),n(58004),n(33853),n(45876),n(32475),n(15024),n(31698);var r=n(90144),o=n(56768);var a,l=Object.defineProperty,i=Object.defineProperties,s=Object.getOwnPropertyDescriptors,u=Object.getOwnPropertySymbols,c=Object.prototype.hasOwnProperty,d=Object.prototype.propertyIsEnumerable,f=(e,t,n)=>t in e?l(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,p=(e,t)=>{for(var n in t||(t={}))c.call(t,n)&&f(e,n,t[n]);if(u)for(var n of u(t))d.call(t,n)&&f(e,n,t[n]);return e},v=(e,t)=>i(e,s(t));function h(e,t){var n;const a=(0,r.IJ)();return(0,o.nT)(()=>{a.value=e()},v(p({},t),{flush:null!=(n=null==t?void 0:t.flush)?n:"sync"})),(0,r.tB)(a)}const m="undefined"!==typeof window,g=e=>"undefined"!==typeof e,b=(Object.prototype.toString,e=>"function"===typeof e),y=e=>"string"===typeof e,w=(e,t,n)=>Math.min(n,Math.max(t,e)),R=()=>{},C=m&&(null==(a=null==window?void 0:window.navigator)?void 0:a.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);function x(e){return"function"===typeof e?e():(0,r.R1)(e)}function k(e,t){function n(...n){return new Promise((r,o)=>{Promise.resolve(e(()=>t.apply(this,n),{fn:t,thisArg:this,args:n})).then(r).catch(o)})}return n}function E(e,t={}){let n,r,o=R;const a=e=>{clearTimeout(e),o(),o=R},l=l=>{const i=x(e),s=x(t.maxWait);return n&&a(n),i<=0||void 0!==s&&s<=0?(r&&(a(r),r=null),Promise.resolve(l())):new Promise((e,u)=>{o=t.rejectOnCancel?u:e,s&&!r&&(r=setTimeout(()=>{n&&a(n),r=null,e(l())},s)),n=setTimeout(()=>{r&&a(r),r=null,e(l())},i)})};return l}function _(e,t=!0,n=!0,r=!1){let o,a,l=0,i=!0,s=R;const u=()=>{o&&(clearTimeout(o),o=void 0,s(),s=R)},c=c=>{const d=x(e),f=Date.now()-l,p=()=>a=c();return u(),d<=0?(l=Date.now(),p()):(f>d&&(n||!i)?(l=Date.now(),p()):t&&(a=new Promise((e,t)=>{s=r?t:e,o=setTimeout(()=>{l=Date.now(),i=!0,e(p()),u()},Math.max(0,d-f))})),n||o||(o=setTimeout(()=>i=!0,d)),i=!1,a)};return c}function S(e){return e}function M(e,t){let n,a,l;const i=(0,r.KR)(!0),s=()=>{i.value=!0,l()};(0,o.wB)(e,s,{flush:"sync"});const u=b(t)?t:t.get,c=b(t)?void 0:t.set,d=(0,r.rY)((e,t)=>(a=e,l=t,{get(){return i.value&&(n=u(),i.value=!1),a(),n},set(e){null==c||c(e)}}));return Object.isExtensible(d)&&(d.trigger=s),d}function L(e){return!!(0,r.o5)()&&((0,r.jr)(e),!0)}Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;function A(e){if(!(0,r.i9)(e))return(0,r.Kh)(e);const t=new Proxy({},{get(t,n,o){return(0,r.R1)(Reflect.get(e.value,n,o))},set(t,n,o){return(0,r.i9)(e.value[n])&&!(0,r.i9)(o)?e.value[n].value=o:e.value[n]=o,!0},deleteProperty(t,n){return Reflect.deleteProperty(e.value,n)},has(t,n){return Reflect.has(e.value,n)},ownKeys(){return Object.keys(e.value)},getOwnPropertyDescriptor(){return{enumerable:!0,configurable:!0}}});return(0,r.Kh)(t)}function O(e){return A((0,o.EW)(e))}function T(e,t=200,n={}){return k(E(t,n),e)}function I(e,t=200,n={}){const a=(0,r.KR)(e.value),l=T(()=>{a.value=e.value},t,n);return(0,o.wB)(e,()=>l()),a}function N(e,t=200,n=!1,r=!0,o=!1){return k(_(t,n,r,o),e)}Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;function W(e,t=!0){(0,o.nI)()?(0,o.sV)(e):t?e():(0,o.dY)(e)}Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;function D(e,t,n={}){const{immediate:o=!0}=n,a=(0,r.KR)(!1);let l=null;function i(){l&&(clearTimeout(l),l=null)}function s(){a.value=!1,i()}function u(...n){i(),a.value=!0,l=setTimeout(()=>{a.value=!1,l=null,e(...n)},x(t))}return o&&(a.value=!0,m&&u()),L(s),{isPending:(0,r.tB)(a),start:u,stop:s}}Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable},20034:function(e,t,n){"use strict";var r=n(94901);e.exports=function(e){return"object"==typeof e?null!==e:r(e)}},20037:function(e,t,n){"use strict";var r=n(69937),o=n(35867),a=n(37431);function l(e,t){return(0,a.A)((0,o.A)(e,t,r.A),e+"")}t.A=l},20090:function(e,t,n){"use strict";n.d(t,{s:function(){return o}});var r=n(47378);const o=(0,r.b_)({arrowOffset:{type:Number,default:5}})},20116:function(e,t,n){"use strict";var r=n(46518),o=n(69565),a=n(72652),l=n(79306),i=n(28551),s=n(1767),u=n(9539),c=n(84549),d=c("find",TypeError);r({target:"Iterator",proto:!0,real:!0,forced:d},{find:function(e){i(this);try{l(e)}catch(r){u(this,"throw",r)}if(d)return o(d,this,e);var t=s(this),n=0;return a(t,function(t,r){if(e(t,n++))return r(t)},{IS_RECORD:!0,INTERRUPTED:!0}).result}})},20203:function(e,t,n){"use strict";var r=n(41018),o=n(75014),a=n(22676),l=n(60168),i=n(13708);function s(e,t,n,s){if(!(0,l.A)(e))return e;t=(0,o.A)(t,e);var u=-1,c=t.length,d=c-1,f=e;while(null!=f&&++ue.message,e=>{var t,r;Object.assign(u,null!=(r=null==(t=null==n?void 0:n.value)?void 0:t.message)?r:{},null!=e?e:{})},{immediate:!0,deep:!0}),()=>(0,r.RG)(t,"default",{config:null==n?void 0:n.value})}})},21862:function(){},21872:function(e,t){"use strict";var n="fas",r="robot",o=640,a=512,l=[129302],i="f544",s="M352 0c0-17.7-14.3-32-32-32S288-17.7 288 0l0 64-96 0c-53 0-96 43-96 96l0 224c0 53 43 96 96 96l256 0c53 0 96-43 96-96l0-224c0-53-43-96-96-96l-96 0 0-64zM160 368c0-13.3 10.7-24 24-24l32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0c-13.3 0-24-10.7-24-24zm120 0c0-13.3 10.7-24 24-24l32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0c-13.3 0-24-10.7-24-24zm120 0c0-13.3 10.7-24 24-24l32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0c-13.3 0-24-10.7-24-24zM224 176a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm144 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM64 224c0-17.7-14.3-32-32-32S0 206.3 0 224l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96zm544-32c-17.7 0-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96c0-17.7-14.3-32-32-32z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.UB=t.mw},22195:function(e,t,n){"use strict";var r=n(79504),o=r({}.toString),a=r("".slice);e.exports=function(e){return a(o(e),8,-1)}},22489:function(e,t,n){"use strict";var r=n(46518),o=n(69565),a=n(79306),l=n(28551),i=n(1767),s=n(19462),u=n(96319),c=n(96395),d=n(9539),f=n(30684),p=n(84549),v=!c&&!f("filter",function(){}),h=!c&&!v&&p("filter",TypeError),m=c||v||h,g=s(function(){var e,t,n,r=this.iterator,a=this.predicate,i=this.next;while(1){if(e=l(o(i,r)),t=this.done=!!e.done,t)return;if(n=e.value,u(r,a,[n,this.counter++],!0))return n}});r({target:"Iterator",proto:!0,real:!0,forced:m},{filter:function(e){l(this);try{a(e)}catch(t){d(this,"throw",t)}return h?o(h,this,e):new g(i(this),{predicate:e})}})},22676:function(e,t){"use strict";var n=9007199254740991,r=/^(?:0|[1-9]\d*)$/;function o(e,t){var o=typeof e;return t=null==t?n:t,!!t&&("number"==o||"symbol"!=o&&r.test(e))&&e>-1&&e%1==0&&e{var t;(null==(t=e[_n])?void 0:t.wheelHandler)&&(e.removeEventListener("wheel",e[_n].wheelHandler),e[_n]=null)},Ln={beforeMount(e,t){Sn(e,t.value)},unmounted(e){Mn(e)},updated(e,t){t.value!==t.oldValue&&Sn(e,t.value)}};let An=1;const On=(0,r.pM)({name:"ElTable",directives:{Mousewheel:Ln},components:{TableHeader:_t,TableBody:Dt,TableFooter:Bt,ElScrollbar:i.kA,hColgroup:Ut},props:Xt,emits:["select","select-all","selection-change","cell-mouse-enter","cell-mouse-leave","cell-contextmenu","cell-click","cell-dblclick","row-click","row-contextmenu","row-dblclick","header-click","header-contextmenu","sort-change","filter-change","current-change","header-dragend","expand-change","scroll"],setup(e){const{t:t}=(0,Qe.Ym)(),n=(0,Ye.DU)("table"),o=(0,r.nI)();(0,r.Gt)(yt,o);const a=nt(o,e);o.store=a;const i=new it({store:o.store,table:o,fit:e.fit,showHeader:e.showHeader});o.layout=i;const s=(0,r.EW)(()=>0===(a.states.data.value||[]).length),{setCurrentRow:u,getSelectionRows:c,toggleRowSelection:d,clearSelection:f,clearFilter:p,toggleAllSelection:v,toggleRowExpansion:h,clearSort:m,sort:g,updateKeyChildren:b}=zt(a),{isHidden:y,renderExpanded:w,setDragVisible:R,isGroup:C,handleMouseLeave:x,handleHeaderFooterMousewheel:k,tableSize:E,emptyBlockStyle:_,resizeProxyVisible:S,bodyWidth:M,resizeState:L,doLayout:A,tableBodyStyles:O,tableLayout:T,scrollbarViewStyle:I,scrollbarStyle:N}=jt(e,i,a,o),{scrollBarRef:W,scrollTo:D,setScrollLeft:P,setScrollTop:F}=Gt(),B=(0,l.A)(A,50),z=`${n.namespace.value}-table_${An++}`;o.tableId=z,o.state={isGroup:C,resizeState:L,doLayout:A,debouncedUpdateLayout:B};const $=(0,r.EW)(()=>{var n;return null!=(n=e.sumText)?n:t("el.table.sumText")}),V=(0,r.EW)(()=>{var n;return null!=(n=e.emptyText)?n:t("el.table.emptyText")}),j=(0,r.EW)(()=>kt(a.states.originColumns.value)[0]);return Kt(o),(0,r.xo)(()=>{B.cancel()}),{ns:n,layout:i,store:a,columns:j,handleHeaderFooterMousewheel:k,handleMouseLeave:x,tableId:z,tableSize:E,isHidden:y,isEmpty:s,renderExpanded:w,resizeProxyVisible:S,resizeState:L,isGroup:C,bodyWidth:M,tableBodyStyles:O,emptyBlockStyle:_,debouncedUpdateLayout:B,setCurrentRow:u,getSelectionRows:c,toggleRowSelection:d,clearSelection:f,clearFilter:p,toggleAllSelection:v,toggleRowExpansion:h,clearSort:m,doLayout:A,sort:g,updateKeyChildren:b,t:t,setDragVisible:R,context:o,computedSumText:$,computedEmptyText:V,tableLayout:T,scrollbarViewStyle:I,scrollbarStyle:N,scrollBarRef:W,scrollTo:D,setScrollLeft:P,setScrollTop:F,allowDragLastColumn:e.allowDragLastColumn}}});function Tn(e,t,n,l,i,s){const u=(0,r.g2)("hColgroup"),c=(0,r.g2)("table-header"),d=(0,r.g2)("table-body"),f=(0,r.g2)("table-footer"),p=(0,r.g2)("el-scrollbar"),v=(0,r.gN)("mousewheel");return(0,r.uX)(),(0,r.CE)("div",{ref:"tableWrapper",class:(0,o.C4)([{[e.ns.m("fit")]:e.fit,[e.ns.m("striped")]:e.stripe,[e.ns.m("border")]:e.border||e.isGroup,[e.ns.m("hidden")]:e.isHidden,[e.ns.m("group")]:e.isGroup,[e.ns.m("fluid-height")]:e.maxHeight,[e.ns.m("scrollable-x")]:e.layout.scrollX.value,[e.ns.m("scrollable-y")]:e.layout.scrollY.value,[e.ns.m("enable-row-hover")]:!e.store.states.isComplex.value,[e.ns.m("enable-row-transition")]:0!==(e.store.states.data.value||[]).length&&(e.store.states.data.value||[]).length<100,"has-footer":e.showSummary},e.ns.m(e.tableSize),e.className,e.ns.b(),e.ns.m(`layout-${e.tableLayout}`)]),style:(0,o.Tr)(e.style),"data-prefix":e.ns.namespace.value,onMouseleave:e.handleMouseLeave},[(0,r.Lk)("div",{ref:"tableInnerWrapper",class:(0,o.C4)(e.ns.e("inner-wrapper"))},[(0,r.Lk)("div",{ref:"hiddenColumns",class:"hidden-columns"},[(0,r.RG)(e.$slots,"default")],512),e.showHeader&&"fixed"===e.tableLayout?(0,r.bo)(((0,r.uX)(),(0,r.CE)("div",{key:0,ref:"headerWrapper",class:(0,o.C4)(e.ns.e("header-wrapper"))},[(0,r.Lk)("table",{ref:"tableHeader",class:(0,o.C4)(e.ns.e("header")),style:(0,o.Tr)(e.tableBodyStyles),border:"0",cellpadding:"0",cellspacing:"0"},[(0,r.bF)(u,{columns:e.store.states.columns.value,"table-layout":e.tableLayout},null,8,["columns","table-layout"]),(0,r.bF)(c,{ref:"tableHeaderRef",border:e.border,"default-sort":e.defaultSort,store:e.store,"append-filter-panel-to":e.appendFilterPanelTo,"allow-drag-last-column":e.allowDragLastColumn,onSetDragVisible:e.setDragVisible},null,8,["border","default-sort","store","append-filter-panel-to","allow-drag-last-column","onSetDragVisible"])],6)],2)),[[v,e.handleHeaderFooterMousewheel]]):(0,r.Q3)("v-if",!0),(0,r.Lk)("div",{ref:"bodyWrapper",class:(0,o.C4)(e.ns.e("body-wrapper"))},[(0,r.bF)(p,{ref:"scrollBarRef","view-style":e.scrollbarViewStyle,"wrap-style":e.scrollbarStyle,always:e.scrollbarAlwaysOn,tabindex:e.scrollbarTabindex,native:e.nativeScrollbar,onScroll:t=>e.$emit("scroll",t)},{default:(0,r.k6)(()=>[(0,r.Lk)("table",{ref:"tableBody",class:(0,o.C4)(e.ns.e("body")),cellspacing:"0",cellpadding:"0",border:"0",style:(0,o.Tr)({width:e.bodyWidth,tableLayout:e.tableLayout})},[(0,r.bF)(u,{columns:e.store.states.columns.value,"table-layout":e.tableLayout},null,8,["columns","table-layout"]),e.showHeader&&"auto"===e.tableLayout?((0,r.uX)(),(0,r.Wv)(c,{key:0,ref:"tableHeaderRef",class:(0,o.C4)(e.ns.e("body-header")),border:e.border,"default-sort":e.defaultSort,store:e.store,"append-filter-panel-to":e.appendFilterPanelTo,onSetDragVisible:e.setDragVisible},null,8,["class","border","default-sort","store","append-filter-panel-to","onSetDragVisible"])):(0,r.Q3)("v-if",!0),(0,r.bF)(d,{context:e.context,highlight:e.highlightCurrentRow,"row-class-name":e.rowClassName,"tooltip-effect":e.tooltipEffect,"tooltip-options":e.tooltipOptions,"row-style":e.rowStyle,store:e.store,stripe:e.stripe},null,8,["context","highlight","row-class-name","tooltip-effect","tooltip-options","row-style","store","stripe"]),e.showSummary&&"auto"===e.tableLayout?((0,r.uX)(),(0,r.Wv)(f,{key:1,class:(0,o.C4)(e.ns.e("body-footer")),border:e.border,"default-sort":e.defaultSort,store:e.store,"sum-text":e.computedSumText,"summary-method":e.summaryMethod},null,8,["class","border","default-sort","store","sum-text","summary-method"])):(0,r.Q3)("v-if",!0)],6),e.isEmpty?((0,r.uX)(),(0,r.CE)("div",{key:0,ref:"emptyBlock",style:(0,o.Tr)(e.emptyBlockStyle),class:(0,o.C4)(e.ns.e("empty-block"))},[(0,r.Lk)("span",{class:(0,o.C4)(e.ns.e("empty-text"))},[(0,r.RG)(e.$slots,"empty",{},()=>[(0,r.eW)((0,o.v_)(e.computedEmptyText),1)])],2)],6)):(0,r.Q3)("v-if",!0),e.$slots.append?((0,r.uX)(),(0,r.CE)("div",{key:1,ref:"appendWrapper",class:(0,o.C4)(e.ns.e("append-wrapper"))},[(0,r.RG)(e.$slots,"append")],2)):(0,r.Q3)("v-if",!0)]),_:3},8,["view-style","wrap-style","always","tabindex","native","onScroll"])],2),e.showSummary&&"fixed"===e.tableLayout?(0,r.bo)(((0,r.uX)(),(0,r.CE)("div",{key:1,ref:"footerWrapper",class:(0,o.C4)(e.ns.e("footer-wrapper"))},[(0,r.Lk)("table",{class:(0,o.C4)(e.ns.e("footer")),cellspacing:"0",cellpadding:"0",border:"0",style:(0,o.Tr)(e.tableBodyStyles)},[(0,r.bF)(u,{columns:e.store.states.columns.value,"table-layout":e.tableLayout},null,8,["columns","table-layout"]),(0,r.bF)(f,{border:e.border,"default-sort":e.defaultSort,store:e.store,"sum-text":e.computedSumText,"summary-method":e.summaryMethod},null,8,["border","default-sort","store","sum-text","summary-method"])],6)],2)),[[a.aG,!e.isEmpty],[v,e.handleHeaderFooterMousewheel]]):(0,r.Q3)("v-if",!0),e.border||e.isGroup?((0,r.uX)(),(0,r.CE)("div",{key:2,class:(0,o.C4)(e.ns.e("border-left-patch"))},null,2)):(0,r.Q3)("v-if",!0)],2),(0,r.bo)((0,r.Lk)("div",{ref:"resizeProxy",class:(0,o.C4)(e.ns.e("column-resize-proxy"))},null,2),[[a.aG,e.resizeProxyVisible]])],46,["data-prefix","onMouseleave"])}var In=(0,dt.A)(On,[["render",Tn],["__file","table.vue"]]);const Nn={selection:"table-column--selection",expand:"table__expand-column"},Wn={default:{order:""},selection:{width:48,minWidth:48,realWidth:48,order:""},expand:{width:48,minWidth:48,realWidth:48,order:""},index:{width:48,minWidth:48,realWidth:48,order:""}},Dn=e=>Nn[e]||"",Pn={selection:{renderHeader({store:e}){var t;function n(){return e.states.data.value&&0===e.states.data.value.length}return(0,r.h)(st.dI,{disabled:n(),size:e.states.tableSize.value,indeterminate:e.states.selection.value.length>0&&!e.states.isAllSelected.value,"onUpdate:modelValue":null!=(t=e.toggleAllSelection)?t:void 0,modelValue:e.states.isAllSelected.value,ariaLabel:e.t("el.table.selectAllLabel")})},renderCell({row:e,column:t,store:n,$index:o}){return(0,r.h)(st.dI,{disabled:!!t.selectable&&!t.selectable.call(null,e,o),size:n.states.tableSize.value,onChange:()=>{n.commit("rowSelectedChanged",e)},onClick:e=>e.stopPropagation(),modelValue:n.isSelected(e),ariaLabel:n.t("el.table.selectRowLabel")})},sortable:!1,resizable:!1},index:{renderHeader({column:e}){return e.label||"#"},renderCell({column:e,$index:t}){let n=t+1;const a=e.index;return(0,ge.Et)(a)?n=t+a:(0,o.Tn)(a)&&(n=a(t)),(0,r.h)("div",{},[n])},sortable:!1},expand:{renderHeader({column:e}){return e.label||""},renderCell({column:e,row:t,store:n,expanded:o}){const{ns:a}=n,l=[a.e("expand-icon")];!e.renderExpand&&o&&l.push(a.em("expand-icon","expanded"));const i=function(e){e.stopPropagation(),n.toggleRowExpansion(t)};return(0,r.h)("button",{type:"button","aria-label":n.t(o?"el.table.collapseRowLabel":"el.table.expandRowLabel"),"aria-expanded":o,class:l,onClick:i},{default:()=>e.renderExpand?[e.renderExpand({expanded:o})]:[(0,r.h)(ut.tk,null,{default:()=>[(0,r.h)(ct.ArrowRight)]})]})},sortable:!1,resizable:!1}};function Fn({row:e,column:t,$index:n}){var r;const o=t.property,a=o&&(0,be.GT)(e,o).value;return t&&t.formatter?t.formatter(e,t,a,n):(null==(r=null==a?void 0:a.toString)?void 0:r.call(a))||""}function Bn({row:e,treeNode:t,store:n},o=!1){const{ns:a}=n;if(!t)return o?[(0,r.h)("span",{class:a.e("placeholder")})]:null;const l=[],i=function(r){r.stopPropagation(),t.loading||n.loadOrToggle(e)};if(t.indent&&l.push((0,r.h)("span",{class:a.e("indent"),style:{"padding-left":`${t.indent}px`}})),(0,ge.Lm)(t.expanded)&&!t.noLazyChildren){const e=[a.e("expand-icon"),t.expanded?a.em("expand-icon","expanded"):""];let o=ct.ArrowRight;t.loading&&(o=ct.Loading),l.push((0,r.h)("button",{type:"button","aria-label":n.t(t.expanded?"el.table.collapseRowLabel":"el.table.expandRowLabel"),"aria-expanded":t.expanded,class:e,onClick:i},{default:()=>[(0,r.h)(ut.tk,{class:a.is("loading",t.loading)},{default:()=>[(0,r.h)(o)]})]}))}else l.push((0,r.h)("span",{class:a.e("placeholder")}));return l}function zn(e,t){return e.reduce((e,t)=>(e[t]=t,e),t)}function $n(e,t){const n=(0,r.nI)(),a=()=>{const a=["fixed"],l={realWidth:"width",realMinWidth:"minWidth"},i=zn(a,l);Object.keys(i).forEach(a=>{const i=l[a];(0,o.$3)(t,i)&&(0,r.wB)(()=>t[i],t=>{let r=t;"width"===i&&"realWidth"===a&&(r=Se(t)),"minWidth"===i&&"realMinWidth"===a&&(r=Me(t)),n.columnConfig.value[i]=r,n.columnConfig.value[a]=r;const o="fixed"===i;e.value.store.scheduleLayout(o)})})},l=()=>{const a=["label","filters","filterMultiple","filteredValue","sortable","index","formatter","className","labelClassName","filterClassName","showOverflowTooltip","tooltipFormatter","resizable"],l=["showOverflowTooltip"],i={property:"prop",align:"realAlign",headerAlign:"realHeaderAlign"},s=zn(a,i);Object.keys(s).forEach(e=>{const a=i[e];(0,o.$3)(t,a)&&(0,r.wB)(()=>t[a],t=>{n.columnConfig.value[e]=t,"filters"!==e&&"filterMethod"!==e||(n.columnConfig.value["filterable"]=!(!n.columnConfig.value["filters"]&&!n.columnConfig.value["filterMethod"]))})}),l.forEach(t=>{(0,o.$3)(e.value.props,t)&&(0,r.wB)(()=>e.value.props[t],e=>{n.columnConfig.value[t]=e})})};return{registerComplexWatchers:a,registerNormalWatchers:l}}function Vn(e,t,n){const a=(0,r.nI)(),l=(0,s.KR)(""),i=(0,s.KR)(!1),u=(0,s.KR)(),c=(0,s.KR)(),d=(0,Ye.DU)("table");(0,r.nT)(()=>{u.value=e.align?`is-${e.align}`:null,u.value}),(0,r.nT)(()=>{c.value=e.headerAlign?`is-${e.headerAlign}`:u.value,c.value});const f=(0,r.EW)(()=>{let e=a.vnode.vParent||a.parent;while(e&&!e.tableId&&!e.columnId)e=e.vnode.vParent||e.parent;return e}),p=(0,r.EW)(()=>{const{store:e}=a.parent;if(!e)return!1;const{treeData:t}=e.states,n=t.value;return n&&Object.keys(n).length>0}),v=(0,s.KR)(Se(e.width)),h=(0,s.KR)(Me(e.minWidth)),m=e=>(v.value&&(e.width=v.value),h.value&&(e.minWidth=h.value),!v.value&&h.value&&(e.width=void 0),e.minWidth||(e.minWidth=80),e.realWidth=Number((0,ge.b0)(e.width)?e.minWidth:e.width),e),g=e=>{const t=e.type,n=Pn[t]||{};Object.keys(n).forEach(t=>{const r=n[t];"className"===t||(0,ge.b0)(r)||(e[t]=r)});const r=Dn(t);if(r){const t=`${(0,s.R1)(d.namespace)}-${r}`;e.className=e.className?`${e.className} ${t}`:t}return e},b=e=>{function t(e){var t;"ElTableColumn"===(null==(t=null==e?void 0:e.type)?void 0:t.name)&&(e.vParent=a)}(0,o.cy)(e)?e.forEach(e=>t(e)):t(e)},y=o=>{e.renderHeader?(0,me.U)("TableColumn","Comparing to render-header, scoped-slot header is easier to use. We recommend users to use scoped-slot header."):"selection"!==o.type&&(o.renderHeader=e=>{if(a.columnConfig.value["label"],t.header){const n=t.header(e);if(je(n))return(0,r.h)(r.FK,n)}return(0,r.eW)(o.label)}),t["filter-icon"]&&(o.renderFilterIcon=e=>(0,r.RG)(t,"filter-icon",e)),t.expand&&(o.renderExpand=e=>(0,r.RG)(t,"expand",e));let l=o.renderCell;return"expand"===o.type?(o.renderCell=e=>(0,r.h)("div",{class:"cell"},[l(e)]),n.value.renderExpanded=e=>t.default?t.default(e):t.default):(l=l||Fn,o.renderCell=e=>{let a=null;if(t.default){const n=t.default(e);a=n.some(e=>e.type!==r.Mw)?n:l(e)}else a=l(e);const{columns:i}=n.value.store.states,u=i.value.findIndex(e=>"default"===e.type),c=p.value&&e.cellIndex===u,f=Bn(e,c),v={class:"cell",style:{}};return o.showOverflowTooltip&&(v.class=`${v.class} ${(0,s.R1)(d.namespace)}-tooltip`,v.style={width:(e.column.realWidth||Number(e.column.width))-1+"px"}),b(a),(0,r.h)("div",v,[f,a])}),o},w=(...t)=>t.reduce((t,n)=>((0,o.cy)(n)&&n.forEach(n=>{t[n]=e[n]}),t),{}),R=(e,t)=>Array.prototype.indexOf.call(e,t),C=()=>{n.value.store.commit("updateColumnOrder",a.columnConfig.value)};return{columnId:l,realAlign:u,isSubColumn:i,realHeaderAlign:c,columnOrTableParent:f,setColumnWidth:m,setColumnForcedProps:g,setColumnRenders:y,getPropsData:w,getColumnElIndex:R,updateColumnOrder:C}}var jn={type:{type:String,default:"default"},label:String,className:String,labelClassName:String,property:String,prop:String,width:{type:[String,Number],default:""},minWidth:{type:[String,Number],default:""},renderHeader:Function,sortable:{type:[Boolean,String],default:!1},sortMethod:Function,sortBy:[String,Function,Array],resizable:{type:Boolean,default:!0},columnKey:String,align:String,headerAlign:String,showOverflowTooltip:{type:[Boolean,Object],default:void 0},tooltipFormatter:Function,fixed:[Boolean,String],formatter:Function,selectable:Function,reserveSelection:Boolean,filterMethod:Function,filteredValue:Array,filters:Array,filterPlacement:String,filterMultiple:{type:Boolean,default:!0},filterClassName:String,index:[Number,Function],sortOrders:{type:Array,default:()=>["ascending","descending",null],validator:e=>e.every(e=>["ascending","descending",null].includes(e))}};let Kn=1;var Hn=(0,r.pM)({name:"ElTableColumn",components:{ElCheckbox:st.dI},props:jn,setup(e,{slots:t}){const n=(0,r.nI)(),o=(0,s.KR)({}),a=(0,r.EW)(()=>{let e=n.parent;while(e&&!e.tableId)e=e.parent;return e}),{registerNormalWatchers:l,registerComplexWatchers:i}=$n(a,e),{columnId:u,isSubColumn:c,realHeaderAlign:d,columnOrTableParent:f,setColumnWidth:p,setColumnForcedProps:v,setColumnRenders:h,getPropsData:m,getColumnElIndex:g,realAlign:b,updateColumnOrder:y}=Vn(e,t,a),w=f.value;u.value=`${"tableId"in w&&w.tableId||"columnId"in w&&w.columnId}_column_${Kn++}`,(0,r.KC)(()=>{c.value=a.value!==w;const t=e.type||"default",r=""===e.sortable||e.sortable,s="selection"!==t&&((0,ge.b0)(e.showOverflowTooltip)?w.props.showOverflowTooltip:e.showOverflowTooltip),f=(0,ge.b0)(e.tooltipFormatter)?w.props.tooltipFormatter:e.tooltipFormatter,g={...Wn[t],id:u.value,type:t,property:e.prop||e.property,align:b,headerAlign:d,showOverflowTooltip:s,tooltipFormatter:f,filterable:e.filters||e.filterMethod,filteredValue:[],filterPlacement:"",filterClassName:"",isColumnGroup:!1,isSubColumn:!1,filterOpened:!1,sortable:r,index:e.index,rawColumnKey:n.vnode.key},y=["columnKey","label","className","labelClassName","type","renderHeader","formatter","fixed","resizable"],R=["sortMethod","sortBy","sortOrders"],C=["selectable","reserveSelection"],x=["filterMethod","filters","filterMultiple","filterOpened","filteredValue","filterPlacement","filterClassName"];let k=m(y,R,C,x);k=_e(g,k);const E=Ae(h,p,v);k=E(k),o.value=k,l(),i()}),(0,r.sV)(()=>{var e,t;const r=f.value,l=c.value?null==(e=r.vnode.el)?void 0:e.children:null==(t=r.refs.hiddenColumns)?void 0:t.children,i=()=>g(l||[],n.vnode.el);o.value.getColumnIndex=i;const s=i();s>-1&&a.value.store.commit("insertColumn",o.value,c.value?"columnConfig"in r&&r.columnConfig.value:null,y)}),(0,r.xo)(()=>{const e=o.value.getColumnIndex,t=e?e():-1;t>-1&&a.value.store.commit("removeColumn",o.value,c.value?"columnConfig"in w&&w.columnConfig.value:null,y)}),n.columnId=u.value,n.columnConfig=o},render(){var e,t,n;try{const a=null==(t=(e=this.$slots).default)?void 0:t.call(e,{row:{},column:{},$index:-1}),l=[];if((0,o.cy)(a))for(const e of a)"ElTableColumn"===(null==(n=e.type)?void 0:n.name)||2&e.shapeFlag?l.push(e):e.type===r.FK&&(0,o.cy)(e.children)&&e.children.forEach(e=>{1024===(null==e?void 0:e.patchFlag)||(0,o.Kg)(null==e?void 0:e.children)||l.push(e)});const i=(0,r.h)("div",l);return i}catch(a){return(0,r.h)("div",[])}}}),Xn=n(25376);const Un=(0,Xn.GU)(In,{TableColumn:Hn}),Gn=(0,Xn.WM)(Hn)},84916:function(e,t,n){"use strict";var r=n(97751),o=function(e){return{size:e,has:function(){return!1},keys:function(){return{next:function(){return{done:!0}}}}}},a=function(e){return{size:e,has:function(){return!0},keys:function(){throw new Error("e")}}};e.exports=function(e,t){var n=r("Set");try{(new n)[e](o(0));try{return(new n)[e](o(-1)),!1}catch(i){if(!t)return!0;try{return(new n)[e](a(-1/0)),!1}catch(s){var l=new n([1,2]);return t(l[e](a(1/0)))}}}catch(s){return!1}}},85331:function(){},85384:function(e,t,n){"use strict";n.d(t,{hU:function(){return Or}});n(44114),n(18111),n(22489),n(20116),n(7588),n(61701),n(18237); + */const _n="_Mousewheel",Sn=function(e,t){if(e&&e.addEventListener){Mn(e);const n=function(e){const n=En(e);t&&Reflect.apply(t,this,[e,n])};e[_n]={wheelHandler:n},e.addEventListener("wheel",n,{passive:!0})}},Mn=e=>{var t;(null==(t=e[_n])?void 0:t.wheelHandler)&&(e.removeEventListener("wheel",e[_n].wheelHandler),e[_n]=null)},Ln={beforeMount(e,t){Sn(e,t.value)},unmounted(e){Mn(e)},updated(e,t){t.value!==t.oldValue&&Sn(e,t.value)}};let An=1;const On=(0,r.pM)({name:"ElTable",directives:{Mousewheel:Ln},components:{TableHeader:_t,TableBody:Dt,TableFooter:Bt,ElScrollbar:i.kA,hColgroup:Ut},props:Xt,emits:["select","select-all","selection-change","cell-mouse-enter","cell-mouse-leave","cell-contextmenu","cell-click","cell-dblclick","row-click","row-contextmenu","row-dblclick","header-click","header-contextmenu","sort-change","filter-change","current-change","header-dragend","expand-change","scroll"],setup(e){const{t:t}=(0,Qe.Ym)(),n=(0,Ye.DU)("table"),o=(0,r.nI)();(0,r.Gt)(yt,o);const a=nt(o,e);o.store=a;const i=new it({store:o.store,table:o,fit:e.fit,showHeader:e.showHeader});o.layout=i;const s=(0,r.EW)(()=>0===(a.states.data.value||[]).length),{setCurrentRow:u,getSelectionRows:c,toggleRowSelection:d,clearSelection:f,clearFilter:p,toggleAllSelection:v,toggleRowExpansion:h,clearSort:m,sort:g,updateKeyChildren:b}=zt(a),{isHidden:y,renderExpanded:w,setDragVisible:R,isGroup:C,handleMouseLeave:x,handleHeaderFooterMousewheel:k,tableSize:E,emptyBlockStyle:_,resizeProxyVisible:S,bodyWidth:M,resizeState:L,doLayout:A,tableBodyStyles:O,tableLayout:T,scrollbarViewStyle:I,scrollbarStyle:N}=jt(e,i,a,o),{scrollBarRef:W,scrollTo:D,setScrollLeft:P,setScrollTop:F}=Gt(),B=(0,l.A)(A,50),z=`${n.namespace.value}-table_${An++}`;o.tableId=z,o.state={isGroup:C,resizeState:L,doLayout:A,debouncedUpdateLayout:B};const $=(0,r.EW)(()=>{var n;return null!=(n=e.sumText)?n:t("el.table.sumText")}),V=(0,r.EW)(()=>{var n;return null!=(n=e.emptyText)?n:t("el.table.emptyText")}),j=(0,r.EW)(()=>kt(a.states.originColumns.value)[0]);return Kt(o),(0,r.xo)(()=>{B.cancel()}),{ns:n,layout:i,store:a,columns:j,handleHeaderFooterMousewheel:k,handleMouseLeave:x,tableId:z,tableSize:E,isHidden:y,isEmpty:s,renderExpanded:w,resizeProxyVisible:S,resizeState:L,isGroup:C,bodyWidth:M,tableBodyStyles:O,emptyBlockStyle:_,debouncedUpdateLayout:B,setCurrentRow:u,getSelectionRows:c,toggleRowSelection:d,clearSelection:f,clearFilter:p,toggleAllSelection:v,toggleRowExpansion:h,clearSort:m,doLayout:A,sort:g,updateKeyChildren:b,t:t,setDragVisible:R,context:o,computedSumText:$,computedEmptyText:V,tableLayout:T,scrollbarViewStyle:I,scrollbarStyle:N,scrollBarRef:W,scrollTo:D,setScrollLeft:P,setScrollTop:F,allowDragLastColumn:e.allowDragLastColumn}}});function Tn(e,t,n,l,i,s){const u=(0,r.g2)("hColgroup"),c=(0,r.g2)("table-header"),d=(0,r.g2)("table-body"),f=(0,r.g2)("table-footer"),p=(0,r.g2)("el-scrollbar"),v=(0,r.gN)("mousewheel");return(0,r.uX)(),(0,r.CE)("div",{ref:"tableWrapper",class:(0,o.C4)([{[e.ns.m("fit")]:e.fit,[e.ns.m("striped")]:e.stripe,[e.ns.m("border")]:e.border||e.isGroup,[e.ns.m("hidden")]:e.isHidden,[e.ns.m("group")]:e.isGroup,[e.ns.m("fluid-height")]:e.maxHeight,[e.ns.m("scrollable-x")]:e.layout.scrollX.value,[e.ns.m("scrollable-y")]:e.layout.scrollY.value,[e.ns.m("enable-row-hover")]:!e.store.states.isComplex.value,[e.ns.m("enable-row-transition")]:0!==(e.store.states.data.value||[]).length&&(e.store.states.data.value||[]).length<100,"has-footer":e.showSummary},e.ns.m(e.tableSize),e.className,e.ns.b(),e.ns.m(`layout-${e.tableLayout}`)]),style:(0,o.Tr)(e.style),"data-prefix":e.ns.namespace.value,onMouseleave:e.handleMouseLeave},[(0,r.Lk)("div",{ref:"tableInnerWrapper",class:(0,o.C4)(e.ns.e("inner-wrapper"))},[(0,r.Lk)("div",{ref:"hiddenColumns",class:"hidden-columns"},[(0,r.RG)(e.$slots,"default")],512),e.showHeader&&"fixed"===e.tableLayout?(0,r.bo)(((0,r.uX)(),(0,r.CE)("div",{key:0,ref:"headerWrapper",class:(0,o.C4)(e.ns.e("header-wrapper"))},[(0,r.Lk)("table",{ref:"tableHeader",class:(0,o.C4)(e.ns.e("header")),style:(0,o.Tr)(e.tableBodyStyles),border:"0",cellpadding:"0",cellspacing:"0"},[(0,r.bF)(u,{columns:e.store.states.columns.value,"table-layout":e.tableLayout},null,8,["columns","table-layout"]),(0,r.bF)(c,{ref:"tableHeaderRef",border:e.border,"default-sort":e.defaultSort,store:e.store,"append-filter-panel-to":e.appendFilterPanelTo,"allow-drag-last-column":e.allowDragLastColumn,onSetDragVisible:e.setDragVisible},null,8,["border","default-sort","store","append-filter-panel-to","allow-drag-last-column","onSetDragVisible"])],6)],2)),[[v,e.handleHeaderFooterMousewheel]]):(0,r.Q3)("v-if",!0),(0,r.Lk)("div",{ref:"bodyWrapper",class:(0,o.C4)(e.ns.e("body-wrapper"))},[(0,r.bF)(p,{ref:"scrollBarRef","view-style":e.scrollbarViewStyle,"wrap-style":e.scrollbarStyle,always:e.scrollbarAlwaysOn,tabindex:e.scrollbarTabindex,native:e.nativeScrollbar,onScroll:t=>e.$emit("scroll",t)},{default:(0,r.k6)(()=>[(0,r.Lk)("table",{ref:"tableBody",class:(0,o.C4)(e.ns.e("body")),cellspacing:"0",cellpadding:"0",border:"0",style:(0,o.Tr)({width:e.bodyWidth,tableLayout:e.tableLayout})},[(0,r.bF)(u,{columns:e.store.states.columns.value,"table-layout":e.tableLayout},null,8,["columns","table-layout"]),e.showHeader&&"auto"===e.tableLayout?((0,r.uX)(),(0,r.Wv)(c,{key:0,ref:"tableHeaderRef",class:(0,o.C4)(e.ns.e("body-header")),border:e.border,"default-sort":e.defaultSort,store:e.store,"append-filter-panel-to":e.appendFilterPanelTo,onSetDragVisible:e.setDragVisible},null,8,["class","border","default-sort","store","append-filter-panel-to","onSetDragVisible"])):(0,r.Q3)("v-if",!0),(0,r.bF)(d,{context:e.context,highlight:e.highlightCurrentRow,"row-class-name":e.rowClassName,"tooltip-effect":e.tooltipEffect,"tooltip-options":e.tooltipOptions,"row-style":e.rowStyle,store:e.store,stripe:e.stripe},null,8,["context","highlight","row-class-name","tooltip-effect","tooltip-options","row-style","store","stripe"]),e.showSummary&&"auto"===e.tableLayout?((0,r.uX)(),(0,r.Wv)(f,{key:1,class:(0,o.C4)(e.ns.e("body-footer")),border:e.border,"default-sort":e.defaultSort,store:e.store,"sum-text":e.computedSumText,"summary-method":e.summaryMethod},null,8,["class","border","default-sort","store","sum-text","summary-method"])):(0,r.Q3)("v-if",!0)],6),e.isEmpty?((0,r.uX)(),(0,r.CE)("div",{key:0,ref:"emptyBlock",style:(0,o.Tr)(e.emptyBlockStyle),class:(0,o.C4)(e.ns.e("empty-block"))},[(0,r.Lk)("span",{class:(0,o.C4)(e.ns.e("empty-text"))},[(0,r.RG)(e.$slots,"empty",{},()=>[(0,r.eW)((0,o.v_)(e.computedEmptyText),1)])],2)],6)):(0,r.Q3)("v-if",!0),e.$slots.append?((0,r.uX)(),(0,r.CE)("div",{key:1,ref:"appendWrapper",class:(0,o.C4)(e.ns.e("append-wrapper"))},[(0,r.RG)(e.$slots,"append")],2)):(0,r.Q3)("v-if",!0)]),_:3},8,["view-style","wrap-style","always","tabindex","native","onScroll"])],2),e.showSummary&&"fixed"===e.tableLayout?(0,r.bo)(((0,r.uX)(),(0,r.CE)("div",{key:1,ref:"footerWrapper",class:(0,o.C4)(e.ns.e("footer-wrapper"))},[(0,r.Lk)("table",{class:(0,o.C4)(e.ns.e("footer")),cellspacing:"0",cellpadding:"0",border:"0",style:(0,o.Tr)(e.tableBodyStyles)},[(0,r.bF)(u,{columns:e.store.states.columns.value,"table-layout":e.tableLayout},null,8,["columns","table-layout"]),(0,r.bF)(f,{border:e.border,"default-sort":e.defaultSort,store:e.store,"sum-text":e.computedSumText,"summary-method":e.summaryMethod},null,8,["border","default-sort","store","sum-text","summary-method"])],6)],2)),[[a.aG,!e.isEmpty],[v,e.handleHeaderFooterMousewheel]]):(0,r.Q3)("v-if",!0),e.border||e.isGroup?((0,r.uX)(),(0,r.CE)("div",{key:2,class:(0,o.C4)(e.ns.e("border-left-patch"))},null,2)):(0,r.Q3)("v-if",!0)],2),(0,r.bo)((0,r.Lk)("div",{ref:"resizeProxy",class:(0,o.C4)(e.ns.e("column-resize-proxy"))},null,2),[[a.aG,e.resizeProxyVisible]])],46,["data-prefix","onMouseleave"])}var In=(0,dt.A)(On,[["render",Tn],["__file","table.vue"]]);const Nn={selection:"table-column--selection",expand:"table__expand-column"},Wn={default:{order:""},selection:{width:48,minWidth:48,realWidth:48,order:""},expand:{width:48,minWidth:48,realWidth:48,order:""},index:{width:48,minWidth:48,realWidth:48,order:""}},Dn=e=>Nn[e]||"",Pn={selection:{renderHeader({store:e}){var t;function n(){return e.states.data.value&&0===e.states.data.value.length}return(0,r.h)(st.dI,{disabled:n(),size:e.states.tableSize.value,indeterminate:e.states.selection.value.length>0&&!e.states.isAllSelected.value,"onUpdate:modelValue":null!=(t=e.toggleAllSelection)?t:void 0,modelValue:e.states.isAllSelected.value,ariaLabel:e.t("el.table.selectAllLabel")})},renderCell({row:e,column:t,store:n,$index:o}){return(0,r.h)(st.dI,{disabled:!!t.selectable&&!t.selectable.call(null,e,o),size:n.states.tableSize.value,onChange:()=>{n.commit("rowSelectedChanged",e)},onClick:e=>e.stopPropagation(),modelValue:n.isSelected(e),ariaLabel:n.t("el.table.selectRowLabel")})},sortable:!1,resizable:!1},index:{renderHeader({column:e}){return e.label||"#"},renderCell({column:e,$index:t}){let n=t+1;const a=e.index;return(0,ge.Et)(a)?n=t+a:(0,o.Tn)(a)&&(n=a(t)),(0,r.h)("div",{},[n])},sortable:!1},expand:{renderHeader({column:e}){return e.label||""},renderCell({column:e,row:t,store:n,expanded:o}){const{ns:a}=n,l=[a.e("expand-icon")];!e.renderExpand&&o&&l.push(a.em("expand-icon","expanded"));const i=function(e){e.stopPropagation(),n.toggleRowExpansion(t)};return(0,r.h)("button",{type:"button","aria-label":n.t(o?"el.table.collapseRowLabel":"el.table.expandRowLabel"),"aria-expanded":o,class:l,onClick:i},{default:()=>e.renderExpand?[e.renderExpand({expanded:o})]:[(0,r.h)(ut.tk,null,{default:()=>[(0,r.h)(ct.ArrowRight)]})]})},sortable:!1,resizable:!1}};function Fn({row:e,column:t,$index:n}){var r;const o=t.property,a=o&&(0,be.GT)(e,o).value;return t&&t.formatter?t.formatter(e,t,a,n):(null==(r=null==a?void 0:a.toString)?void 0:r.call(a))||""}function Bn({row:e,treeNode:t,store:n},o=!1){const{ns:a}=n;if(!t)return o?[(0,r.h)("span",{class:a.e("placeholder")})]:null;const l=[],i=function(r){r.stopPropagation(),t.loading||n.loadOrToggle(e)};if(t.indent&&l.push((0,r.h)("span",{class:a.e("indent"),style:{"padding-left":`${t.indent}px`}})),(0,ge.Lm)(t.expanded)&&!t.noLazyChildren){const e=[a.e("expand-icon"),t.expanded?a.em("expand-icon","expanded"):""];let o=ct.ArrowRight;t.loading&&(o=ct.Loading),l.push((0,r.h)("button",{type:"button","aria-label":n.t(t.expanded?"el.table.collapseRowLabel":"el.table.expandRowLabel"),"aria-expanded":t.expanded,class:e,onClick:i},{default:()=>[(0,r.h)(ut.tk,{class:a.is("loading",t.loading)},{default:()=>[(0,r.h)(o)]})]}))}else l.push((0,r.h)("span",{class:a.e("placeholder")}));return l}function zn(e,t){return e.reduce((e,t)=>(e[t]=t,e),t)}function $n(e,t){const n=(0,r.nI)(),a=()=>{const a=["fixed"],l={realWidth:"width",realMinWidth:"minWidth"},i=zn(a,l);Object.keys(i).forEach(a=>{const i=l[a];(0,o.$3)(t,i)&&(0,r.wB)(()=>t[i],t=>{let r=t;"width"===i&&"realWidth"===a&&(r=Se(t)),"minWidth"===i&&"realMinWidth"===a&&(r=Me(t)),n.columnConfig.value[i]=r,n.columnConfig.value[a]=r;const o="fixed"===i;e.value.store.scheduleLayout(o)})})},l=()=>{const a=["label","filters","filterMultiple","filteredValue","sortable","index","formatter","className","labelClassName","filterClassName","showOverflowTooltip","tooltipFormatter","resizable"],l=["showOverflowTooltip"],i={property:"prop",align:"realAlign",headerAlign:"realHeaderAlign"},s=zn(a,i);Object.keys(s).forEach(e=>{const a=i[e];(0,o.$3)(t,a)&&(0,r.wB)(()=>t[a],t=>{n.columnConfig.value[e]=t,"filters"!==e&&"filterMethod"!==e||(n.columnConfig.value["filterable"]=!(!n.columnConfig.value["filters"]&&!n.columnConfig.value["filterMethod"]))})}),l.forEach(t=>{(0,o.$3)(e.value.props,t)&&(0,r.wB)(()=>e.value.props[t],e=>{n.columnConfig.value[t]=e})})};return{registerComplexWatchers:a,registerNormalWatchers:l}}function Vn(e,t,n){const a=(0,r.nI)(),l=(0,s.KR)(""),i=(0,s.KR)(!1),u=(0,s.KR)(),c=(0,s.KR)(),d=(0,Ye.DU)("table");(0,r.nT)(()=>{u.value=e.align?`is-${e.align}`:null,u.value}),(0,r.nT)(()=>{c.value=e.headerAlign?`is-${e.headerAlign}`:u.value,c.value});const f=(0,r.EW)(()=>{let e=a.vnode.vParent||a.parent;while(e&&!e.tableId&&!e.columnId)e=e.vnode.vParent||e.parent;return e}),p=(0,r.EW)(()=>{const{store:e}=a.parent;if(!e)return!1;const{treeData:t}=e.states,n=t.value;return n&&Object.keys(n).length>0}),v=(0,s.KR)(Se(e.width)),h=(0,s.KR)(Me(e.minWidth)),m=e=>(v.value&&(e.width=v.value),h.value&&(e.minWidth=h.value),!v.value&&h.value&&(e.width=void 0),e.minWidth||(e.minWidth=80),e.realWidth=Number((0,ge.b0)(e.width)?e.minWidth:e.width),e),g=e=>{const t=e.type,n=Pn[t]||{};Object.keys(n).forEach(t=>{const r=n[t];"className"===t||(0,ge.b0)(r)||(e[t]=r)});const r=Dn(t);if(r){const t=`${(0,s.R1)(d.namespace)}-${r}`;e.className=e.className?`${e.className} ${t}`:t}return e},b=e=>{function t(e){var t;"ElTableColumn"===(null==(t=null==e?void 0:e.type)?void 0:t.name)&&(e.vParent=a)}(0,o.cy)(e)?e.forEach(e=>t(e)):t(e)},y=o=>{e.renderHeader?(0,me.U)("TableColumn","Comparing to render-header, scoped-slot header is easier to use. We recommend users to use scoped-slot header."):"selection"!==o.type&&(o.renderHeader=e=>{if(a.columnConfig.value["label"],t.header){const n=t.header(e);if(je(n))return(0,r.h)(r.FK,n)}return(0,r.eW)(o.label)}),t["filter-icon"]&&(o.renderFilterIcon=e=>(0,r.RG)(t,"filter-icon",e)),t.expand&&(o.renderExpand=e=>(0,r.RG)(t,"expand",e));let l=o.renderCell;return"expand"===o.type?(o.renderCell=e=>(0,r.h)("div",{class:"cell"},[l(e)]),n.value.renderExpanded=e=>t.default?t.default(e):t.default):(l=l||Fn,o.renderCell=e=>{let a=null;if(t.default){const n=t.default(e);a=n.some(e=>e.type!==r.Mw)?n:l(e)}else a=l(e);const{columns:i}=n.value.store.states,u=i.value.findIndex(e=>"default"===e.type),c=p.value&&e.cellIndex===u,f=Bn(e,c),v={class:"cell",style:{}};return o.showOverflowTooltip&&(v.class=`${v.class} ${(0,s.R1)(d.namespace)}-tooltip`,v.style={width:(e.column.realWidth||Number(e.column.width))-1+"px"}),b(a),(0,r.h)("div",v,[f,a])}),o},w=(...t)=>t.reduce((t,n)=>((0,o.cy)(n)&&n.forEach(n=>{t[n]=e[n]}),t),{}),R=(e,t)=>Array.prototype.indexOf.call(e,t),C=()=>{n.value.store.commit("updateColumnOrder",a.columnConfig.value)};return{columnId:l,realAlign:u,isSubColumn:i,realHeaderAlign:c,columnOrTableParent:f,setColumnWidth:m,setColumnForcedProps:g,setColumnRenders:y,getPropsData:w,getColumnElIndex:R,updateColumnOrder:C}}var jn={type:{type:String,default:"default"},label:String,className:String,labelClassName:String,property:String,prop:String,width:{type:[String,Number],default:""},minWidth:{type:[String,Number],default:""},renderHeader:Function,sortable:{type:[Boolean,String],default:!1},sortMethod:Function,sortBy:[String,Function,Array],resizable:{type:Boolean,default:!0},columnKey:String,align:String,headerAlign:String,showOverflowTooltip:{type:[Boolean,Object],default:void 0},tooltipFormatter:Function,fixed:[Boolean,String],formatter:Function,selectable:Function,reserveSelection:Boolean,filterMethod:Function,filteredValue:Array,filters:Array,filterPlacement:String,filterMultiple:{type:Boolean,default:!0},filterClassName:String,index:[Number,Function],sortOrders:{type:Array,default:()=>["ascending","descending",null],validator:e=>e.every(e=>["ascending","descending",null].includes(e))}};let Kn=1;var Hn=(0,r.pM)({name:"ElTableColumn",components:{ElCheckbox:st.dI},props:jn,setup(e,{slots:t}){const n=(0,r.nI)(),o=(0,s.KR)({}),a=(0,r.EW)(()=>{let e=n.parent;while(e&&!e.tableId)e=e.parent;return e}),{registerNormalWatchers:l,registerComplexWatchers:i}=$n(a,e),{columnId:u,isSubColumn:c,realHeaderAlign:d,columnOrTableParent:f,setColumnWidth:p,setColumnForcedProps:v,setColumnRenders:h,getPropsData:m,getColumnElIndex:g,realAlign:b,updateColumnOrder:y}=Vn(e,t,a),w=f.value;u.value=`${"tableId"in w&&w.tableId||"columnId"in w&&w.columnId}_column_${Kn++}`,(0,r.KC)(()=>{c.value=a.value!==w;const t=e.type||"default",r=""===e.sortable||e.sortable,s="selection"!==t&&((0,ge.b0)(e.showOverflowTooltip)?w.props.showOverflowTooltip:e.showOverflowTooltip),f=(0,ge.b0)(e.tooltipFormatter)?w.props.tooltipFormatter:e.tooltipFormatter,g={...Wn[t],id:u.value,type:t,property:e.prop||e.property,align:b,headerAlign:d,showOverflowTooltip:s,tooltipFormatter:f,filterable:e.filters||e.filterMethod,filteredValue:[],filterPlacement:"",filterClassName:"",isColumnGroup:!1,isSubColumn:!1,filterOpened:!1,sortable:r,index:e.index,rawColumnKey:n.vnode.key},y=["columnKey","label","className","labelClassName","type","renderHeader","formatter","fixed","resizable"],R=["sortMethod","sortBy","sortOrders"],C=["selectable","reserveSelection"],x=["filterMethod","filters","filterMultiple","filterOpened","filteredValue","filterPlacement","filterClassName"];let k=m(y,R,C,x);k=_e(g,k);const E=Ae(h,p,v);k=E(k),o.value=k,l(),i()}),(0,r.sV)(()=>{var e,t;const r=f.value,l=c.value?null==(e=r.vnode.el)?void 0:e.children:null==(t=r.refs.hiddenColumns)?void 0:t.children,i=()=>g(l||[],n.vnode.el);o.value.getColumnIndex=i;const s=i();s>-1&&a.value.store.commit("insertColumn",o.value,c.value?"columnConfig"in r&&r.columnConfig.value:null,y)}),(0,r.xo)(()=>{const e=o.value.getColumnIndex,t=e?e():-1;t>-1&&a.value.store.commit("removeColumn",o.value,c.value?"columnConfig"in w&&w.columnConfig.value:null,y)}),n.columnId=u.value,n.columnConfig=o},render(){var e,t,n;try{const a=null==(t=(e=this.$slots).default)?void 0:t.call(e,{row:{},column:{},$index:-1}),l=[];if((0,o.cy)(a))for(const e of a)"ElTableColumn"===(null==(n=e.type)?void 0:n.name)||2&e.shapeFlag?l.push(e):e.type===r.FK&&(0,o.cy)(e.children)&&e.children.forEach(e=>{1024===(null==e?void 0:e.patchFlag)||(0,o.Kg)(null==e?void 0:e.children)||l.push(e)});const i=(0,r.h)("div",l);return i}catch(a){return(0,r.h)("div",[])}}}),Xn=n(25376);const Un=(0,Xn.GU)(In,{TableColumn:Hn}),Gn=(0,Xn.WM)(Hn)},84916:function(e,t,n){"use strict";var r=n(97751),o=function(e){return{size:e,has:function(){return!1},keys:function(){return{next:function(){return{done:!0}}}}}},a=function(e){return{size:e,has:function(){return!0},keys:function(){throw new Error("e")}}};e.exports=function(e,t){var n=r("Set");try{(new n)[e](o(0));try{return(new n)[e](o(-1)),!1}catch(i){if(!t)return!0;try{return(new n)[e](a(-1/0)),!1}catch(s){var l=new n([1,2]);return t(l[e](a(1/0)))}}}catch(s){return!1}}},85331:function(){},85332:function(e,t,n){"use strict";n(85331)},85384:function(e,t,n){"use strict";n.d(t,{hU:function(){return Or}});n(44114),n(18111),n(22489),n(20116),n(7588),n(61701),n(18237); /*! * shared v9.14.5 * (c) 2025 kazuya kawaguchi @@ -71,11 +71,11 @@ function Le(){"boolean"!==typeof __INTLIFY_PROD_DEVTOOLS__&&(m().__INTLIFY_PROD_ * (c) 2025 kazuya kawaguchi * Released under the MIT License. */ -const Pn="9.14.5";function Fn(){"boolean"!==typeof __VUE_I18N_FULL_INSTALL__&&(m().__VUE_I18N_FULL_INSTALL__=!0),"boolean"!==typeof __VUE_I18N_LEGACY_API__&&(m().__VUE_I18N_LEGACY_API__=!0),"boolean"!==typeof __INTLIFY_JIT_COMPILATION__&&(m().__INTLIFY_JIT_COMPILATION__=!1),"boolean"!==typeof __INTLIFY_DROP_MESSAGE_COMPILER__&&(m().__INTLIFY_DROP_MESSAGE_COMPILER__=!1),"boolean"!==typeof __INTLIFY_PROD_DEVTOOLS__&&(m().__INTLIFY_PROD_DEVTOOLS__=!1)}const Bn=Ct.__EXTEND_POINT__,zn=I(Bn),$n={FALLBACK_TO_ROOT:Bn,NOT_SUPPORTED_PRESERVE:zn(),NOT_SUPPORTED_FORMATTER:zn(),NOT_SUPPORTED_PRESERVE_DIRECTIVE:zn(),NOT_SUPPORTED_GET_CHOICE_INDEX:zn(),COMPONENT_NAME_LEGACY_COMPATIBLE:zn(),NOT_FOUND_PARENT_SCOPE:zn(),IGNORE_OBJ_FLATTEN:zn(),NOTICE_DROP_ALLOW_COMPOSITION:zn(),NOTICE_DROP_TRANSLATE_EXIST_COMPATIBLE_FLAG:zn()};$n.FALLBACK_TO_ROOT,$n.NOT_SUPPORTED_PRESERVE,$n.NOT_SUPPORTED_FORMATTER,$n.NOT_SUPPORTED_PRESERVE_DIRECTIVE,$n.NOT_SUPPORTED_GET_CHOICE_INDEX,$n.COMPONENT_NAME_LEGACY_COMPATIBLE,$n.NOT_FOUND_PARENT_SCOPE,$n.IGNORE_OBJ_FLATTEN,$n.NOTICE_DROP_ALLOW_COMPOSITION,$n.NOTICE_DROP_TRANSLATE_EXIST_COMPATIBLE_FLAG;const Vn=Et.__EXTEND_POINT__,jn=I(Vn),Kn={UNEXPECTED_RETURN_TYPE:Vn,INVALID_ARGUMENT:jn(),MUST_BE_CALL_SETUP_TOP:jn(),NOT_INSTALLED:jn(),NOT_AVAILABLE_IN_LEGACY_MODE:jn(),REQUIRED_VALUE:jn(),INVALID_VALUE:jn(),CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN:jn(),NOT_INSTALLED_WITH_PROVIDE:jn(),UNEXPECTED_ERROR:jn(),NOT_COMPATIBLE_LEGACY_VUE_I18N:jn(),BRIDGE_SUPPORT_VUE_2_ONLY:jn(),MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION:jn(),NOT_AVAILABLE_COMPOSITION_IN_LEGACY:jn(),__EXTEND_POINT__:jn()};function Hn(e,...t){return q(e,null,void 0)}Kn.UNEXPECTED_RETURN_TYPE,Kn.INVALID_ARGUMENT,Kn.MUST_BE_CALL_SETUP_TOP,Kn.NOT_INSTALLED,Kn.UNEXPECTED_ERROR,Kn.NOT_AVAILABLE_IN_LEGACY_MODE,Kn.REQUIRED_VALUE,Kn.INVALID_VALUE,Kn.CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN,Kn.NOT_INSTALLED_WITH_PROVIDE,Kn.NOT_COMPATIBLE_LEGACY_VUE_I18N,Kn.BRIDGE_SUPPORT_VUE_2_ONLY,Kn.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION,Kn.NOT_AVAILABLE_COMPOSITION_IN_LEGACY;const Xn=a("__translateVNode"),Un=a("__datetimeParts"),Gn=a("__numberParts"),qn=a("__setPluralRules");a("__intlifyMeta");const Yn=a("__injectWithOption"),Qn=a("__dispose");function Zn(e){if(!_(e))return e;if(Ae(e))return e;for(const t in e)if(R(e,t))if(t.includes(".")){const n=t.split("."),r=n.length-1;let o=e,a=!1;for(let e=0;e{if("locale"in e&&"resource"in e){const{locale:t,resource:n}=e;t?(l[t]=l[t]||v(),W(n,l[t])):W(n,l)}else k(e)&&W(JSON.parse(e),l)}),null==o&&a)for(const i in l)R(l,i)&&Zn(l[i]);return l}function er(e){return e.type}function tr(e,t,n){let r=_(t.messages)?t.messages:v();"__i18nGlobal"in n&&(r=Jn(e.locale.value,{messages:r,__i18n:n.__i18nGlobal}));const o=Object.keys(r);if(o.length&&o.forEach(t=>{e.mergeLocaleMessage(t,r[t])}),_(t.datetimeFormats)){const n=Object.keys(t.datetimeFormats);n.length&&n.forEach(n=>{e.mergeDateTimeFormat(n,t.datetimeFormats[n])})}if(_(t.numberFormats)){const n=Object.keys(t.numberFormats);n.length&&n.forEach(n=>{e.mergeNumberFormat(n,t.numberFormats[n])})}}function nr(e){return(0,Wn.bF)(Wn.EY,null,e,0)}const rr="__INTLIFY_META__",or=()=>[],ar=()=>!1;let lr=0;function ir(e){return(t,n,r,o)=>e(n,r,(0,Wn.nI)()||void 0,o)}const sr=()=>{const e=(0,Wn.nI)();let t=null;return e&&(t=er(e)[rr])?{[rr]:t}:null};function ur(e={},t){const{__root:n,__injectWithOption:r}=e,a=void 0===n,l=e.flatJson,i=o?Dn.KR:Dn.IJ,u=!!e.translateExistCompatible;let d=!E(e.inheritLocale)||e.inheritLocale;const p=i(n&&d?n.locale.value:k(e.locale)?e.locale:Pt),v=i(n&&d?n.fallbackLocale.value:k(e.fallbackLocale)||C(e.fallbackLocale)||A(e.fallbackLocale)||!1===e.fallbackLocale?e.fallbackLocale:p.value),h=i(Jn(p.value,e)),m=i(A(e.datetimeFormats)?e.datetimeFormats:{[p.value]:{}}),g=i(A(e.numberFormats)?e.numberFormats:{[p.value]:{}});let b=n?n.missingWarn:!E(e.missingWarn)&&!c(e.missingWarn)||e.missingWarn,y=n?n.fallbackWarn:!E(e.fallbackWarn)&&!c(e.fallbackWarn)||e.fallbackWarn,w=n?n.fallbackRoot:!E(e.fallbackRoot)||e.fallbackRoot,S=!!e.fallbackFormat,M=x(e.missing)?e.missing:null,L=x(e.missing)?ir(e.missing):null,O=x(e.postTranslation)?e.postTranslation:null,T=n?n.warnHtmlMessage:!E(e.warnHtmlMessage)||e.warnHtmlMessage,I=!!e.escapeParameter;const N=n?n.modifiers:A(e.modifiers)?e.modifiers:{};let D,P=e.pluralRules||n&&n.pluralRules;const F=()=>{a&&Qt(null);const t={version:Pn,locale:p.value,fallbackLocale:v.value,messages:h.value,modifiers:N,pluralRules:P,missing:null===L?void 0:L,missingWarn:b,fallbackWarn:y,fallbackFormat:S,unresolving:!0,postTranslation:null===O?void 0:O,warnHtmlMessage:T,escapeParameter:I,messageResolver:e.messageResolver,messageCompiler:e.messageCompiler,__meta:{framework:"vue"}};t.datetimeFormats=m.value,t.numberFormats=g.value,t.__datetimeFormatters=A(D)?D.__datetimeFormatters:void 0,t.__numberFormatters=A(D)?D.__numberFormatters:void 0;const n=en(t);return a&&Qt(n),n};function B(){return[p.value,v.value,h.value,m.value,g.value]}D=F(),rn(D,p.value,v.value);const z=(0,Wn.EW)({get:()=>p.value,set:e=>{p.value=e,D.locale=p.value}}),$=(0,Wn.EW)({get:()=>v.value,set:e=>{v.value=e,D.fallbackLocale=v.value,rn(D,p.value,e)}}),V=(0,Wn.EW)(()=>h.value),j=(0,Wn.EW)(()=>m.value),K=(0,Wn.EW)(()=>g.value);function H(){return x(O)?O:null}function X(e){O=e,D.postTranslation=e}function U(){return M}function G(e){null!==e&&(L=ir(e)),M=e,D.missing=L}const q=(e,t,r,o,l,i)=>{let u;B();try{__INTLIFY_PROD_DEVTOOLS__&&Gt(sr()),a||(D.fallbackContext=n?Zt():void 0),u=e(D)}finally{__INTLIFY_PROD_DEVTOOLS__&&Gt(null),a||(D.fallbackContext=void 0)}if("translate exists"!==r&&s(u)&&u===Dt||"translate exists"===r&&!u){const[e,r]=t();return n&&w?o(n):l(e)}if(i(u))return u;throw Hn(Kn.UNEXPECTED_RETURN_TYPE)};function Y(...e){return q(t=>Reflect.apply(bn,null,[t,...e]),()=>xn(...e),"translate",t=>Reflect.apply(t.t,t,[...e]),e=>e,e=>k(e))}function Q(...e){const[t,n,r]=e;if(r&&!_(r))throw Hn(Kn.INVALID_ARGUMENT);return Y(t,n,f({resolvedMessage:!0},r||{}))}function Z(...e){return q(t=>Reflect.apply(Sn,null,[t,...e]),()=>Ln(...e),"datetime format",t=>Reflect.apply(t.d,t,[...e]),()=>Ft,e=>k(e))}function J(...e){return q(t=>Reflect.apply(On,null,[t,...e]),()=>In(...e),"number format",t=>Reflect.apply(t.n,t,[...e]),()=>Ft,e=>k(e))}function ee(e){return e.map(e=>k(e)||s(e)||E(e)?nr(String(e)):e)}const te=e=>e,ne={normalize:ee,interpolate:te,type:"vnode"};function re(...e){return q(t=>{let n;const r=t;try{r.processor=ne,n=Reflect.apply(bn,null,[r,...e])}finally{r.processor=null}return n},()=>xn(...e),"translate",t=>t[Xn](...e),e=>[nr(e)],e=>C(e))}function oe(...e){return q(t=>Reflect.apply(On,null,[t,...e]),()=>In(...e),"number format",t=>t[Gn](...e),or,e=>k(e)||C(e))}function ae(...e){return q(t=>Reflect.apply(Sn,null,[t,...e]),()=>Ln(...e),"datetime format",t=>t[Un](...e),or,e=>k(e)||C(e))}function le(e){P=e,D.pluralRules=P}function ie(e,t){return q(()=>{if(!e)return!1;const n=k(t)?t:p.value,r=ce(n),o=D.messageResolver(r,e);return u?null!=o:Ae(o)||gn(o)||k(o)},()=>[e],"translate exists",n=>Reflect.apply(n.te,n,[e,t]),ar,e=>E(e))}function se(e){let t=null;const n=Ot(D,v.value,p.value);for(let r=0;r{d&&(p.value=e,D.locale=e,rn(D,p.value,v.value))}),(0,Wn.wB)(n.fallbackLocale,e=>{d&&(v.value=e,D.fallbackLocale=e,rn(D,p.value,v.value))}));const ye={id:lr,locale:z,fallbackLocale:$,get inheritLocale(){return d},set inheritLocale(e){d=e,e&&n&&(p.value=n.locale.value,v.value=n.fallbackLocale.value,rn(D,p.value,v.value))},get availableLocales(){return Object.keys(h.value).sort()},messages:V,get modifiers(){return N},get pluralRules(){return P||{}},get isGlobal(){return a},get missingWarn(){return b},set missingWarn(e){b=e,D.missingWarn=b},get fallbackWarn(){return y},set fallbackWarn(e){y=e,D.fallbackWarn=y},get fallbackRoot(){return w},set fallbackRoot(e){w=e},get fallbackFormat(){return S},set fallbackFormat(e){S=e,D.fallbackFormat=S},get warnHtmlMessage(){return T},set warnHtmlMessage(e){T=e,D.warnHtmlMessage=e},get escapeParameter(){return I},set escapeParameter(e){I=e,D.escapeParameter=e},t:Y,getLocaleMessage:ce,setLocaleMessage:de,mergeLocaleMessage:fe,getPostTranslationHandler:H,setPostTranslationHandler:X,getMissingHandler:U,setMissingHandler:G,[qn]:le};return ye.datetimeFormats=j,ye.numberFormats=K,ye.rt=Q,ye.te=ie,ye.tm=ue,ye.d=Z,ye.n=J,ye.getDateTimeFormat=pe,ye.setDateTimeFormat=ve,ye.mergeDateTimeFormat=he,ye.getNumberFormat=me,ye.setNumberFormat=ge,ye.mergeNumberFormat=be,ye[Yn]=r,ye[Xn]=re,ye[Un]=ae,ye[Gn]=oe,ye}function cr(e){const t=k(e.locale)?e.locale:Pt,n=k(e.fallbackLocale)||C(e.fallbackLocale)||A(e.fallbackLocale)||!1===e.fallbackLocale?e.fallbackLocale:t,r=x(e.missing)?e.missing:void 0,o=!E(e.silentTranslationWarn)&&!c(e.silentTranslationWarn)||!e.silentTranslationWarn,a=!E(e.silentFallbackWarn)&&!c(e.silentFallbackWarn)||!e.silentFallbackWarn,l=!E(e.fallbackRoot)||e.fallbackRoot,i=!!e.formatFallbackMessages,s=A(e.modifiers)?e.modifiers:{},u=e.pluralizationRules,d=x(e.postTranslation)?e.postTranslation:void 0,p=!k(e.warnHtmlInMessage)||"off"!==e.warnHtmlInMessage,v=!!e.escapeParameterHtml,h=!E(e.sync)||e.sync;let m=e.messages;if(A(e.sharedMessages)){const t=e.sharedMessages,n=Object.keys(t);m=n.reduce((e,n)=>{const r=e[n]||(e[n]={});return f(r,t[n]),e},m||{})}const{__i18n:g,__root:b,__injectWithOption:y}=e,w=e.datetimeFormats,R=e.numberFormats,_=e.flatJson,S=e.translateExistCompatible;return{locale:t,fallbackLocale:n,messages:m,flatJson:_,datetimeFormats:w,numberFormats:R,missing:r,missingWarn:o,fallbackWarn:a,fallbackRoot:l,fallbackFormat:i,modifiers:s,pluralRules:u,postTranslation:d,warnHtmlMessage:p,escapeParameter:v,messageResolver:e.messageResolver,inheritLocale:h,translateExistCompatible:S,__i18n:g,__root:b,__injectWithOption:y}}function dr(e={},t){{const t=ur(cr(e)),{__extender:n}=e,r={id:t.id,get locale(){return t.locale.value},set locale(e){t.locale.value=e},get fallbackLocale(){return t.fallbackLocale.value},set fallbackLocale(e){t.fallbackLocale.value=e},get messages(){return t.messages.value},get datetimeFormats(){return t.datetimeFormats.value},get numberFormats(){return t.numberFormats.value},get availableLocales(){return t.availableLocales},get formatter(){return{interpolate(){return[]}}},set formatter(e){},get missing(){return t.getMissingHandler()},set missing(e){t.setMissingHandler(e)},get silentTranslationWarn(){return E(t.missingWarn)?!t.missingWarn:t.missingWarn},set silentTranslationWarn(e){t.missingWarn=E(e)?!e:e},get silentFallbackWarn(){return E(t.fallbackWarn)?!t.fallbackWarn:t.fallbackWarn},set silentFallbackWarn(e){t.fallbackWarn=E(e)?!e:e},get modifiers(){return t.modifiers},get formatFallbackMessages(){return t.fallbackFormat},set formatFallbackMessages(e){t.fallbackFormat=e},get postTranslation(){return t.getPostTranslationHandler()},set postTranslation(e){t.setPostTranslationHandler(e)},get sync(){return t.inheritLocale},set sync(e){t.inheritLocale=e},get warnHtmlInMessage(){return t.warnHtmlMessage?"warn":"off"},set warnHtmlInMessage(e){t.warnHtmlMessage="off"!==e},get escapeParameterHtml(){return t.escapeParameter},set escapeParameterHtml(e){t.escapeParameter=e},get preserveDirectiveContent(){return!0},set preserveDirectiveContent(e){},get pluralizationRules(){return t.pluralRules||{}},__composer:t,t(...e){const[n,r,o]=e,a={};let l=null,i=null;if(!k(n))throw Hn(Kn.INVALID_ARGUMENT);const s=n;return k(r)?a.locale=r:C(r)?l=r:A(r)&&(i=r),C(o)?l=o:A(o)&&(i=o),Reflect.apply(t.t,t,[s,l||i||{},a])},rt(...e){return Reflect.apply(t.rt,t,[...e])},tc(...e){const[n,r,o]=e,a={plural:1};let l=null,i=null;if(!k(n))throw Hn(Kn.INVALID_ARGUMENT);const u=n;return k(r)?a.locale=r:s(r)?a.plural=r:C(r)?l=r:A(r)&&(i=r),k(o)?a.locale=o:C(o)?l=o:A(o)&&(i=o),Reflect.apply(t.t,t,[u,l||i||{},a])},te(e,n){return t.te(e,n)},tm(e){return t.tm(e)},getLocaleMessage(e){return t.getLocaleMessage(e)},setLocaleMessage(e,n){t.setLocaleMessage(e,n)},mergeLocaleMessage(e,n){t.mergeLocaleMessage(e,n)},d(...e){return Reflect.apply(t.d,t,[...e])},getDateTimeFormat(e){return t.getDateTimeFormat(e)},setDateTimeFormat(e,n){t.setDateTimeFormat(e,n)},mergeDateTimeFormat(e,n){t.mergeDateTimeFormat(e,n)},n(...e){return Reflect.apply(t.n,t,[...e])},getNumberFormat(e){return t.getNumberFormat(e)},setNumberFormat(e,n){t.setNumberFormat(e,n)},mergeNumberFormat(e,n){t.mergeNumberFormat(e,n)},getChoiceIndex(e,t){return-1}};return r.__extender=n,r}}const fr={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:e=>"parent"===e||"global"===e,default:"parent"},i18n:{type:Object}};function pr({slots:e},t){if(1===t.length&&"default"===t[0]){const t=e.default?e.default():[];return t.reduce((e,t)=>[...e,...t.type===Wn.FK?t.children:[t]],[])}return t.reduce((t,n)=>{const r=e[n];return r&&(t[n]=r()),t},v())}function vr(e){return Wn.FK}const hr=(0,Wn.pM)({name:"i18n-t",props:f({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:e=>s(e)||!isNaN(e)}},fr),setup(e,t){const{slots:n,attrs:r}=t,o=e.i18n||Tr({useScope:e.scope,__useComponent:!0});return()=>{const a=Object.keys(n).filter(e=>"_"!==e),l=v();e.locale&&(l.locale=e.locale),void 0!==e.plural&&(l.plural=k(e.plural)?+e.plural:e.plural);const i=pr(t,a),s=o[Xn](e.keypath,i,l),u=f(v(),r),c=k(e.tag)||_(e.tag)?e.tag:vr();return(0,Wn.h)(c,u,s)}}}),mr=hr;function gr(e){return C(e)&&!k(e[0])}function br(e,t,n,r){const{slots:o,attrs:a}=t;return()=>{const t={part:!0};let l=v();e.locale&&(t.locale=e.locale),k(e.format)?t.key=e.format:_(e.format)&&(k(e.format.key)&&(t.key=e.format.key),l=Object.keys(e.format).reduce((t,r)=>n.includes(r)?f(v(),t,{[r]:e.format[r]}):t,v()));const i=r(e.value,t,l);let s=[t.key];C(i)?s=i.map((e,t)=>{const n=o[e.type],r=n?n({[e.type]:e.value,index:t,parts:i}):[e.value];return gr(r)&&(r[0].key=`${e.type}-${t}`),r}):k(i)&&(s=[i]);const u=f(v(),a),c=k(e.tag)||_(e.tag)?e.tag:vr();return(0,Wn.h)(c,u,s)}}const yr=(0,Wn.pM)({name:"i18n-n",props:f({value:{type:Number,required:!0},format:{type:[String,Object]}},fr),setup(e,t){const n=e.i18n||Tr({useScope:e.scope,__useComponent:!0});return br(e,t,Tn,(...e)=>n[Gn](...e))}}),wr=yr,Rr=(0,Wn.pM)({name:"i18n-d",props:f({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},fr),setup(e,t){const n=e.i18n||Tr({useScope:e.scope,__useComponent:!0});return br(e,t,Mn,(...e)=>n[Un](...e))}}),Cr=Rr;function xr(e,t){const n=e;if("composition"===e.mode)return n.__getInstance(t)||e.global;{const r=n.__getInstance(t);return null!=r?r.__composer:e.global.__composer}}function kr(e){const t=t=>{const{instance:n,modifiers:r,value:o}=t;if(!n||!n.$)throw Hn(Kn.UNEXPECTED_ERROR);const a=xr(e,n.$);const l=Er(o);return[Reflect.apply(a.t,a,[..._r(l)]),a]},n=(n,r)=>{const[a,l]=t(r);o&&e.global===l&&(n.__i18nWatcher=(0,Wn.wB)(l.locale,()=>{r.instance&&r.instance.$forceUpdate()})),n.__composer=l,n.textContent=a},r=e=>{o&&e.__i18nWatcher&&(e.__i18nWatcher(),e.__i18nWatcher=void 0,delete e.__i18nWatcher),e.__composer&&(e.__composer=void 0,delete e.__composer)},a=(e,{value:t})=>{if(e.__composer){const n=e.__composer,r=Er(t);e.textContent=Reflect.apply(n.t,n,[..._r(r)])}},l=e=>{const[n]=t(e);return{textContent:n}};return{created:n,unmounted:r,beforeUpdate:a,getSSRProps:l}}function Er(e){if(k(e))return{path:e};if(A(e)){if(!("path"in e))throw Hn(Kn.REQUIRED_VALUE,"path");return e}throw Hn(Kn.INVALID_VALUE)}function _r(e){const{path:t,locale:n,args:r,choice:o,plural:a}=e,l={},i=r||{};return k(n)&&(l.locale=n),s(o)&&(l.plural=o),s(a)&&(l.plural=a),[t,i,l]}function Sr(e,t,...n){const r=A(n[0])?n[0]:{},o=!!r.useI18nComponentName,a=!E(r.globalInstall)||r.globalInstall;a&&([o?"i18n":mr.name,"I18nT"].forEach(t=>e.component(t,mr)),[wr.name,"I18nN"].forEach(t=>e.component(t,wr)),[Cr.name,"I18nD"].forEach(t=>e.component(t,Cr))),e.directive("t",kr(t))}function Mr(e,t,n){return{beforeCreate(){const r=(0,Wn.nI)();if(!r)throw Hn(Kn.UNEXPECTED_ERROR);const o=this.$options;if(o.i18n){const r=o.i18n;if(o.__i18n&&(r.__i18n=o.__i18n),r.__root=t,this===this.$root)this.$i18n=Lr(e,r);else{r.__injectWithOption=!0,r.__extender=n.__vueI18nExtend,this.$i18n=dr(r);const e=this.$i18n;e.__extender&&(e.__disposer=e.__extender(this.$i18n))}}else if(o.__i18n)if(this===this.$root)this.$i18n=Lr(e,o);else{this.$i18n=dr({__i18n:o.__i18n,__injectWithOption:!0,__extender:n.__vueI18nExtend,__root:t});const e=this.$i18n;e.__extender&&(e.__disposer=e.__extender(this.$i18n))}else this.$i18n=e;o.__i18nGlobal&&tr(t,o,o),this.$t=(...e)=>this.$i18n.t(...e),this.$rt=(...e)=>this.$i18n.rt(...e),this.$tc=(...e)=>this.$i18n.tc(...e),this.$te=(e,t)=>this.$i18n.te(e,t),this.$d=(...e)=>this.$i18n.d(...e),this.$n=(...e)=>this.$i18n.n(...e),this.$tm=e=>this.$i18n.tm(e),n.__setInstance(r,this.$i18n)},mounted(){0},unmounted(){const e=(0,Wn.nI)();if(!e)throw Hn(Kn.UNEXPECTED_ERROR);const t=this.$i18n;delete this.$t,delete this.$rt,delete this.$tc,delete this.$te,delete this.$d,delete this.$n,delete this.$tm,t.__disposer&&(t.__disposer(),delete t.__disposer,delete t.__extender),n.__deleteInstance(e),delete this.$i18n}}}function Lr(e,t){e.locale=t.locale||e.locale,e.fallbackLocale=t.fallbackLocale||e.fallbackLocale,e.missing=t.missing||e.missing,e.silentTranslationWarn=t.silentTranslationWarn||e.silentFallbackWarn,e.silentFallbackWarn=t.silentFallbackWarn||e.silentFallbackWarn,e.formatFallbackMessages=t.formatFallbackMessages||e.formatFallbackMessages,e.postTranslation=t.postTranslation||e.postTranslation,e.warnHtmlInMessage=t.warnHtmlInMessage||e.warnHtmlInMessage,e.escapeParameterHtml=t.escapeParameterHtml||e.escapeParameterHtml,e.sync=t.sync||e.sync,e.__composer[qn](t.pluralizationRules||e.pluralizationRules);const n=Jn(e.locale,{messages:t.messages,__i18n:t.__i18n});return Object.keys(n).forEach(t=>e.mergeLocaleMessage(t,n[t])),t.datetimeFormats&&Object.keys(t.datetimeFormats).forEach(n=>e.mergeDateTimeFormat(n,t.datetimeFormats[n])),t.numberFormats&&Object.keys(t.numberFormats).forEach(n=>e.mergeNumberFormat(n,t.numberFormats[n])),e}const Ar=a("global-vue-i18n");function Or(e={},t){const n=__VUE_I18N_LEGACY_API__&&E(e.legacy)?e.legacy:__VUE_I18N_LEGACY_API__,r=!E(e.globalInjection)||e.globalInjection,o=!__VUE_I18N_LEGACY_API__||!n||!!e.allowComposition,l=new Map,[i,s]=Ir(e,n),u=a("");function c(e){return l.get(e)||null}function d(e,t){l.set(e,t)}function f(e){l.delete(e)}{const e={get mode(){return __VUE_I18N_LEGACY_API__&&n?"legacy":"composition"},get allowComposition(){return o},async install(t,...o){if(t.__VUE_I18N_SYMBOL__=u,t.provide(t.__VUE_I18N_SYMBOL__,e),A(o[0])){const t=o[0];e.__composerExtend=t.__composerExtend,e.__vueI18nExtend=t.__vueI18nExtend}let a=null;!n&&r&&(a=jr(t,e.global)),__VUE_I18N_FULL_INSTALL__&&Sr(t,e,...o),__VUE_I18N_LEGACY_API__&&n&&t.mixin(Mr(s,s.__composer,e));const l=t.unmount;t.unmount=()=>{a&&a(),e.dispose(),l()}},get global(){return s},dispose(){i.stop()},__instances:l,__getInstance:c,__setInstance:d,__deleteInstance:f};return e}}function Tr(e={}){const t=(0,Wn.nI)();if(null==t)throw Hn(Kn.MUST_BE_CALL_SETUP_TOP);if(!t.isCE&&null!=t.appContext.app&&!t.appContext.app.__VUE_I18N_SYMBOL__)throw Hn(Kn.NOT_INSTALLED);const n=Nr(t),r=Dr(n),o=er(t),a=Wr(e,o);if(__VUE_I18N_LEGACY_API__&&"legacy"===n.mode&&!e.__useComponent){if(!n.allowComposition)throw Hn(Kn.NOT_AVAILABLE_IN_LEGACY_MODE);return zr(t,a,r,e)}if("global"===a)return tr(r,e,o),r;if("parent"===a){let o=Pr(n,t,e.__useComponent);return null==o&&(o=r),o}const l=n;let i=l.__getInstance(t);if(null==i){const n=f({},e);"__i18n"in o&&(n.__i18n=o.__i18n),r&&(n.__root=r),i=ur(n),l.__composerExtend&&(i[Qn]=l.__composerExtend(i)),Br(l,t,i),l.__setInstance(t,i)}return i}function Ir(e,t,n){const r=(0,Dn.uY)();{const n=__VUE_I18N_LEGACY_API__&&t?r.run(()=>dr(e)):r.run(()=>ur(e));if(null==n)throw Hn(Kn.UNEXPECTED_ERROR);return[r,n]}}function Nr(e){{const t=(0,Wn.WQ)(e.isCE?Ar:e.appContext.app.__VUE_I18N_SYMBOL__);if(!t)throw Hn(e.isCE?Kn.NOT_INSTALLED_WITH_PROVIDE:Kn.UNEXPECTED_ERROR);return t}}function Wr(e,t){return d(e)?"__i18n"in t?"local":"global":e.useScope?e.useScope:"local"}function Dr(e){return"composition"===e.mode?e.global:e.global.__composer}function Pr(e,t,n=!1){let r=null;const o=t.root;let a=Fr(t,n);while(null!=a){const t=e;if("composition"===e.mode)r=t.__getInstance(a);else if(__VUE_I18N_LEGACY_API__){const e=t.__getInstance(a);null!=e&&(r=e.__composer,n&&r&&!r[Yn]&&(r=null))}if(null!=r)break;if(o===a)break;a=a.parent}return r}function Fr(e,t=!1){return null==e?null:t&&e.vnode.ctx||e.parent}function Br(e,t,n){(0,Wn.sV)(()=>{0},t),(0,Wn.hi)(()=>{const r=n;e.__deleteInstance(t);const o=r[Qn];o&&(o(),delete r[Qn])},t)}function zr(e,t,n,r={}){const o="local"===t,a=(0,Dn.IJ)(null);if(o&&e.proxy&&!e.proxy.$options.i18n&&!e.proxy.$options.__i18n)throw Hn(Kn.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION);const l=E(r.inheritLocale)?r.inheritLocale:!k(r.locale),i=(0,Dn.KR)(!o||l?n.locale.value:k(r.locale)?r.locale:Pt),s=(0,Dn.KR)(!o||l?n.fallbackLocale.value:k(r.fallbackLocale)||C(r.fallbackLocale)||A(r.fallbackLocale)||!1===r.fallbackLocale?r.fallbackLocale:i.value),u=(0,Dn.KR)(Jn(i.value,r)),d=(0,Dn.KR)(A(r.datetimeFormats)?r.datetimeFormats:{[i.value]:{}}),f=(0,Dn.KR)(A(r.numberFormats)?r.numberFormats:{[i.value]:{}}),p=o?n.missingWarn:!E(r.missingWarn)&&!c(r.missingWarn)||r.missingWarn,v=o?n.fallbackWarn:!E(r.fallbackWarn)&&!c(r.fallbackWarn)||r.fallbackWarn,h=o?n.fallbackRoot:!E(r.fallbackRoot)||r.fallbackRoot,m=!!r.fallbackFormat,g=x(r.missing)?r.missing:null,b=x(r.postTranslation)?r.postTranslation:null,y=o?n.warnHtmlMessage:!E(r.warnHtmlMessage)||r.warnHtmlMessage,w=!!r.escapeParameter,R=o?n.modifiers:A(r.modifiers)?r.modifiers:{},_=r.pluralRules||o&&n.pluralRules;function S(){return[i.value,s.value,u.value,d.value,f.value]}const M=(0,Wn.EW)({get:()=>a.value?a.value.locale.value:i.value,set:e=>{a.value&&(a.value.locale.value=e),i.value=e}}),L=(0,Wn.EW)({get:()=>a.value?a.value.fallbackLocale.value:s.value,set:e=>{a.value&&(a.value.fallbackLocale.value=e),s.value=e}}),O=(0,Wn.EW)(()=>a.value?a.value.messages.value:u.value),T=(0,Wn.EW)(()=>d.value),I=(0,Wn.EW)(()=>f.value);function N(){return a.value?a.value.getPostTranslationHandler():b}function W(e){a.value&&a.value.setPostTranslationHandler(e)}function D(){return a.value?a.value.getMissingHandler():g}function P(e){a.value&&a.value.setMissingHandler(e)}function F(e){return S(),e()}function B(...e){return a.value?F(()=>Reflect.apply(a.value.t,null,[...e])):F(()=>"")}function z(...e){return a.value?Reflect.apply(a.value.rt,null,[...e]):""}function $(...e){return a.value?F(()=>Reflect.apply(a.value.d,null,[...e])):F(()=>"")}function V(...e){return a.value?F(()=>Reflect.apply(a.value.n,null,[...e])):F(()=>"")}function j(e){return a.value?a.value.tm(e):{}}function K(e,t){return!!a.value&&a.value.te(e,t)}function H(e){return a.value?a.value.getLocaleMessage(e):{}}function X(e,t){a.value&&(a.value.setLocaleMessage(e,t),u.value[e]=t)}function U(e,t){a.value&&a.value.mergeLocaleMessage(e,t)}function G(e){return a.value?a.value.getDateTimeFormat(e):{}}function q(e,t){a.value&&(a.value.setDateTimeFormat(e,t),d.value[e]=t)}function Y(e,t){a.value&&a.value.mergeDateTimeFormat(e,t)}function Q(e){return a.value?a.value.getNumberFormat(e):{}}function Z(e,t){a.value&&(a.value.setNumberFormat(e,t),f.value[e]=t)}function J(e,t){a.value&&a.value.mergeNumberFormat(e,t)}const ee={get id(){return a.value?a.value.id:-1},locale:M,fallbackLocale:L,messages:O,datetimeFormats:T,numberFormats:I,get inheritLocale(){return a.value?a.value.inheritLocale:l},set inheritLocale(e){a.value&&(a.value.inheritLocale=e)},get availableLocales(){return a.value?a.value.availableLocales:Object.keys(u.value)},get modifiers(){return a.value?a.value.modifiers:R},get pluralRules(){return a.value?a.value.pluralRules:_},get isGlobal(){return!!a.value&&a.value.isGlobal},get missingWarn(){return a.value?a.value.missingWarn:p},set missingWarn(e){a.value&&(a.value.missingWarn=e)},get fallbackWarn(){return a.value?a.value.fallbackWarn:v},set fallbackWarn(e){a.value&&(a.value.missingWarn=e)},get fallbackRoot(){return a.value?a.value.fallbackRoot:h},set fallbackRoot(e){a.value&&(a.value.fallbackRoot=e)},get fallbackFormat(){return a.value?a.value.fallbackFormat:m},set fallbackFormat(e){a.value&&(a.value.fallbackFormat=e)},get warnHtmlMessage(){return a.value?a.value.warnHtmlMessage:y},set warnHtmlMessage(e){a.value&&(a.value.warnHtmlMessage=e)},get escapeParameter(){return a.value?a.value.escapeParameter:w},set escapeParameter(e){a.value&&(a.value.escapeParameter=e)},t:B,getPostTranslationHandler:N,setPostTranslationHandler:W,getMissingHandler:D,setMissingHandler:P,rt:z,d:$,n:V,tm:j,te:K,getLocaleMessage:H,setLocaleMessage:X,mergeLocaleMessage:U,getDateTimeFormat:G,setDateTimeFormat:q,mergeDateTimeFormat:Y,getNumberFormat:Q,setNumberFormat:Z,mergeNumberFormat:J};function te(e){e.locale.value=i.value,e.fallbackLocale.value=s.value,Object.keys(u.value).forEach(t=>{e.mergeLocaleMessage(t,u.value[t])}),Object.keys(d.value).forEach(t=>{e.mergeDateTimeFormat(t,d.value[t])}),Object.keys(f.value).forEach(t=>{e.mergeNumberFormat(t,f.value[t])}),e.escapeParameter=w,e.fallbackFormat=m,e.fallbackRoot=h,e.fallbackWarn=v,e.missingWarn=p,e.warnHtmlMessage=y}return(0,Wn.KC)(()=>{if(null==e.proxy||null==e.proxy.$i18n)throw Hn(Kn.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);const n=a.value=e.proxy.$i18n.__composer;"global"===t?(i.value=n.locale.value,s.value=n.fallbackLocale.value,u.value=n.messages.value,d.value=n.datetimeFormats.value,f.value=n.numberFormats.value):o&&te(n)}),ee}const $r=["locale","fallbackLocale","availableLocales"],Vr=["t","rt","d","n","tm","te"];function jr(e,t){const n=Object.create(null);$r.forEach(e=>{const r=Object.getOwnPropertyDescriptor(t,e);if(!r)throw Hn(Kn.UNEXPECTED_ERROR);const o=(0,Dn.i9)(r.value)?{get(){return r.value.value},set(e){r.value.value=e}}:{get(){return r.get&&r.get()}};Object.defineProperty(n,e,o)}),e.config.globalProperties.$i18n=n,Vr.forEach(n=>{const r=Object.getOwnPropertyDescriptor(t,n);if(!r||!r.value)throw Hn(Kn.UNEXPECTED_ERROR);Object.defineProperty(e.config.globalProperties,`$${n}`,r)});const r=()=>{delete e.config.globalProperties.$i18n,Vr.forEach(t=>{delete e.config.globalProperties[`$${t}`]})};return r}if(Fn(),__INTLIFY_JIT_COMPILATION__?Kt(hn):Kt(vn),Ht(at),Xt(Ot),__INTLIFY_PROD_DEVTOOLS__){const e=m();e.__INTLIFY__=!0,mt(e.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__)}},85454:function(e,t,n){"use strict";var r=n(44672),o=n(42132),a=n(56636);function l(e){return(0,r.A)(e,a.A,o.A)}t.A=l},86368:function(e,t,n){"use strict";var r=n(46518),o=n(44576),a=n(59225).clear;r({global:!0,bind:!0,enumerable:!0,forced:o.clearImmediate!==a},{clearImmediate:a})},86484:function(e,t,n){"use strict";n.d(t,{DD:function(){return m},n4:function(){return it}});n(44114),n(18111),n(81148),n(22489),n(20116),n(7588),n(61701),n(18237),n(13579),n(17642),n(58004),n(33853),n(45876),n(32475),n(15024),n(31698);var r="top",o="bottom",a="right",l="left",i="auto",s=[r,o,a,l],u="start",c="end",d="clippingParents",f="viewport",p="popper",v="reference",h=s.reduce(function(e,t){return e.concat([t+"-"+u,t+"-"+c])},[]),m=[].concat(s,[i]).reduce(function(e,t){return e.concat([t,t+"-"+u,t+"-"+c])},[]),g="beforeRead",b="read",y="afterRead",w="beforeMain",R="main",C="afterMain",x="beforeWrite",k="write",E="afterWrite",_=[g,b,y,w,R,C,x,k,E];function S(e){return e?(e.nodeName||"").toLowerCase():null}function M(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function L(e){var t=M(e).Element;return e instanceof t||e instanceof Element}function A(e){var t=M(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function O(e){if("undefined"==typeof ShadowRoot)return!1;var t=M(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function T(e){var t=e.state;Object.keys(t.elements).forEach(function(e){var n=t.styles[e]||{},r=t.attributes[e]||{},o=t.elements[e];!A(o)||!S(o)||(Object.assign(o.style,n),Object.keys(r).forEach(function(e){var t=r[e];!1===t?o.removeAttribute(e):o.setAttribute(e,!0===t?"":t)}))})}function I(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach(function(e){var r=t.elements[e],o=t.attributes[e]||{},a=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]),l=a.reduce(function(e,t){return e[t]="",e},{});!A(r)||!S(r)||(Object.assign(r.style,l),Object.keys(o).forEach(function(e){r.removeAttribute(e)}))})}}var N={name:"applyStyles",enabled:!0,phase:"write",fn:T,effect:I,requires:["computeStyles"]};function W(e){return e.split("-")[0]}var D=Math.max,P=Math.min,F=Math.round;function B(e,t){void 0===t&&(t=!1);var n=e.getBoundingClientRect(),r=1,o=1;if(A(e)&&t){var a=e.offsetHeight,l=e.offsetWidth;l>0&&(r=F(n.width)/l||1),a>0&&(o=F(n.height)/a||1)}return{width:n.width/r,height:n.height/o,top:n.top/o,right:n.right/r,bottom:n.bottom/o,left:n.left/r,x:n.left/r,y:n.top/o}}function z(e){var t=B(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function $(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&O(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function V(e){return M(e).getComputedStyle(e)}function j(e){return["table","td","th"].indexOf(S(e))>=0}function K(e){return((L(e)?e.ownerDocument:e.document)||window.document).documentElement}function H(e){return"html"===S(e)?e:e.assignedSlot||e.parentNode||(O(e)?e.host:null)||K(e)}function X(e){return A(e)&&"fixed"!==V(e).position?e.offsetParent:null}function U(e){var t=-1!==navigator.userAgent.toLowerCase().indexOf("firefox"),n=-1!==navigator.userAgent.indexOf("Trident");if(n&&A(e)){var r=V(e);if("fixed"===r.position)return null}var o=H(e);for(O(o)&&(o=o.host);A(o)&&["html","body"].indexOf(S(o))<0;){var a=V(o);if("none"!==a.transform||"none"!==a.perspective||"paint"===a.contain||-1!==["transform","perspective"].indexOf(a.willChange)||t&&"filter"===a.willChange||t&&a.filter&&"none"!==a.filter)return o;o=o.parentNode}return null}function G(e){for(var t=M(e),n=X(e);n&&j(n)&&"static"===V(n).position;)n=X(n);return n&&("html"===S(n)||"body"===S(n)&&"static"===V(n).position)?t:n||U(e)||t}function q(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Y(e,t,n){return D(e,P(t,n))}function Q(e,t,n){var r=Y(e,t,n);return r>n?n:r}function Z(){return{top:0,right:0,bottom:0,left:0}}function J(e){return Object.assign({},Z(),e)}function ee(e,t){return t.reduce(function(t,n){return t[n]=e,t},{})}var te=function(e,t){return e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e,J("number"!=typeof e?e:ee(e,s))};function ne(e){var t,n=e.state,i=e.name,s=e.options,u=n.elements.arrow,c=n.modifiersData.popperOffsets,d=W(n.placement),f=q(d),p=[l,a].indexOf(d)>=0,v=p?"height":"width";if(u&&c){var h=te(s.padding,n),m=z(u),g="y"===f?r:l,b="y"===f?o:a,y=n.rects.reference[v]+n.rects.reference[f]-c[f]-n.rects.popper[v],w=c[f]-n.rects.reference[f],R=G(u),C=R?"y"===f?R.clientHeight||0:R.clientWidth||0:0,x=y/2-w/2,k=h[g],E=C-m[v]-h[b],_=C/2-m[v]/2+x,S=Y(k,_,E),M=f;n.modifiersData[i]=(t={},t[M]=S,t.centerOffset=S-_,t)}}function re(e){var t=e.state,n=e.options,r=n.element,o=void 0===r?"[data-popper-arrow]":r;null!=o&&("string"==typeof o&&(o=t.elements.popper.querySelector(o),!o)||!$(t.elements.popper,o)||(t.elements.arrow=o))}var oe={name:"arrow",enabled:!0,phase:"main",fn:ne,effect:re,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ae(e){return e.split("-")[1]}var le={top:"auto",right:"auto",bottom:"auto",left:"auto"};function ie(e){var t=e.x,n=e.y,r=window,o=r.devicePixelRatio||1;return{x:F(t*o)/o||0,y:F(n*o)/o||0}}function se(e){var t,n=e.popper,i=e.popperRect,s=e.placement,u=e.variation,d=e.offsets,f=e.position,p=e.gpuAcceleration,v=e.adaptive,h=e.roundOffsets,m=e.isFixed,g=d.x,b=void 0===g?0:g,y=d.y,w=void 0===y?0:y,R="function"==typeof h?h({x:b,y:w}):{x:b,y:w};b=R.x,w=R.y;var C=d.hasOwnProperty("x"),x=d.hasOwnProperty("y"),k=l,E=r,_=window;if(v){var S=G(n),L="clientHeight",A="clientWidth";if(S===M(n)&&(S=K(n),"static"!==V(S).position&&"absolute"===f&&(L="scrollHeight",A="scrollWidth")),s===r||(s===l||s===a)&&u===c){E=o;var O=m&&S===_&&_.visualViewport?_.visualViewport.height:S[L];w-=O-i.height,w*=p?1:-1}if(s===l||(s===r||s===o)&&u===c){k=a;var T=m&&S===_&&_.visualViewport?_.visualViewport.width:S[A];b-=T-i.width,b*=p?1:-1}}var I,N=Object.assign({position:f},v&&le),W=!0===h?ie({x:b,y:w}):{x:b,y:w};return b=W.x,w=W.y,p?Object.assign({},N,(I={},I[E]=x?"0":"",I[k]=C?"0":"",I.transform=(_.devicePixelRatio||1)<=1?"translate("+b+"px, "+w+"px)":"translate3d("+b+"px, "+w+"px, 0)",I)):Object.assign({},N,(t={},t[E]=x?w+"px":"",t[k]=C?b+"px":"",t.transform="",t))}function ue(e){var t=e.state,n=e.options,r=n.gpuAcceleration,o=void 0===r||r,a=n.adaptive,l=void 0===a||a,i=n.roundOffsets,s=void 0===i||i,u={placement:W(t.placement),variation:ae(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,se(Object.assign({},u,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:l,roundOffsets:s})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,se(Object.assign({},u,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:s})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}var ce={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:ue,data:{}},de={passive:!0};function fe(e){var t=e.state,n=e.instance,r=e.options,o=r.scroll,a=void 0===o||o,l=r.resize,i=void 0===l||l,s=M(t.elements.popper),u=[].concat(t.scrollParents.reference,t.scrollParents.popper);return a&&u.forEach(function(e){e.addEventListener("scroll",n.update,de)}),i&&s.addEventListener("resize",n.update,de),function(){a&&u.forEach(function(e){e.removeEventListener("scroll",n.update,de)}),i&&s.removeEventListener("resize",n.update,de)}}var pe={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:fe,data:{}},ve={left:"right",right:"left",bottom:"top",top:"bottom"};function he(e){return e.replace(/left|right|bottom|top/g,function(e){return ve[e]})}var me={start:"end",end:"start"};function ge(e){return e.replace(/start|end/g,function(e){return me[e]})}function be(e){var t=M(e),n=t.pageXOffset,r=t.pageYOffset;return{scrollLeft:n,scrollTop:r}}function ye(e){return B(K(e)).left+be(e).scrollLeft}function we(e){var t=M(e),n=K(e),r=t.visualViewport,o=n.clientWidth,a=n.clientHeight,l=0,i=0;return r&&(o=r.width,a=r.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(l=r.offsetLeft,i=r.offsetTop)),{width:o,height:a,x:l+ye(e),y:i}}function Re(e){var t,n=K(e),r=be(e),o=null==(t=e.ownerDocument)?void 0:t.body,a=D(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),l=D(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),i=-r.scrollLeft+ye(e),s=-r.scrollTop;return"rtl"===V(o||n).direction&&(i+=D(n.clientWidth,o?o.clientWidth:0)-a),{width:a,height:l,x:i,y:s}}function Ce(e){var t=V(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function xe(e){return["html","body","#document"].indexOf(S(e))>=0?e.ownerDocument.body:A(e)&&Ce(e)?e:xe(H(e))}function ke(e,t){var n;void 0===t&&(t=[]);var r=xe(e),o=r===(null==(n=e.ownerDocument)?void 0:n.body),a=M(r),l=o?[a].concat(a.visualViewport||[],Ce(r)?r:[]):r,i=t.concat(l);return o?i:i.concat(ke(H(l)))}function Ee(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function _e(e){var t=B(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}function Se(e,t){return t===f?Ee(we(e)):L(t)?_e(t):Ee(Re(K(e)))}function Me(e){var t=ke(H(e)),n=["absolute","fixed"].indexOf(V(e).position)>=0,r=n&&A(e)?G(e):e;return L(r)?t.filter(function(e){return L(e)&&$(e,r)&&"body"!==S(e)}):[]}function Le(e,t,n){var r="clippingParents"===t?Me(e):[].concat(t),o=[].concat(r,[n]),a=o[0],l=o.reduce(function(t,n){var r=Se(e,n);return t.top=D(r.top,t.top),t.right=P(r.right,t.right),t.bottom=P(r.bottom,t.bottom),t.left=D(r.left,t.left),t},Se(e,a));return l.width=l.right-l.left,l.height=l.bottom-l.top,l.x=l.left,l.y=l.top,l}function Ae(e){var t,n=e.reference,i=e.element,s=e.placement,d=s?W(s):null,f=s?ae(s):null,p=n.x+n.width/2-i.width/2,v=n.y+n.height/2-i.height/2;switch(d){case r:t={x:p,y:n.y-i.height};break;case o:t={x:p,y:n.y+n.height};break;case a:t={x:n.x+n.width,y:v};break;case l:t={x:n.x-i.width,y:v};break;default:t={x:n.x,y:n.y}}var h=d?q(d):null;if(null!=h){var m="y"===h?"height":"width";switch(f){case u:t[h]=t[h]-(n[m]/2-i[m]/2);break;case c:t[h]=t[h]+(n[m]/2-i[m]/2);break}}return t}function Oe(e,t){void 0===t&&(t={});var n=t,l=n.placement,i=void 0===l?e.placement:l,u=n.boundary,c=void 0===u?d:u,h=n.rootBoundary,m=void 0===h?f:h,g=n.elementContext,b=void 0===g?p:g,y=n.altBoundary,w=void 0!==y&&y,R=n.padding,C=void 0===R?0:R,x=J("number"!=typeof C?C:ee(C,s)),k=b===p?v:p,E=e.rects.popper,_=e.elements[w?k:b],S=Le(L(_)?_:_.contextElement||K(e.elements.popper),c,m),M=B(e.elements.reference),A=Ae({reference:M,element:E,strategy:"absolute",placement:i}),O=Ee(Object.assign({},E,A)),T=b===p?O:M,I={top:S.top-T.top+x.top,bottom:T.bottom-S.bottom+x.bottom,left:S.left-T.left+x.left,right:T.right-S.right+x.right},N=e.modifiersData.offset;if(b===p&&N){var W=N[i];Object.keys(I).forEach(function(e){var t=[a,o].indexOf(e)>=0?1:-1,n=[r,o].indexOf(e)>=0?"y":"x";I[e]+=W[n]*t})}return I}function Te(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=n.boundary,a=n.rootBoundary,l=n.padding,i=n.flipVariations,u=n.allowedAutoPlacements,c=void 0===u?m:u,d=ae(r),f=d?i?h:h.filter(function(e){return ae(e)===d}):s,p=f.filter(function(e){return c.indexOf(e)>=0});0===p.length&&(p=f);var v=p.reduce(function(t,n){return t[n]=Oe(e,{placement:n,boundary:o,rootBoundary:a,padding:l})[W(n)],t},{});return Object.keys(v).sort(function(e,t){return v[e]-v[t]})}function Ie(e){if(W(e)===i)return[];var t=he(e);return[ge(e),t,ge(t)]}function Ne(e){var t=e.state,n=e.options,s=e.name;if(!t.modifiersData[s]._skip){for(var c=n.mainAxis,d=void 0===c||c,f=n.altAxis,p=void 0===f||f,v=n.fallbackPlacements,h=n.padding,m=n.boundary,g=n.rootBoundary,b=n.altBoundary,y=n.flipVariations,w=void 0===y||y,R=n.allowedAutoPlacements,C=t.options.placement,x=W(C),k=x===C,E=v||(k||!w?[he(C)]:Ie(C)),_=[C].concat(E).reduce(function(e,n){return e.concat(W(n)===i?Te(t,{placement:n,boundary:m,rootBoundary:g,padding:h,flipVariations:w,allowedAutoPlacements:R}):n)},[]),S=t.rects.reference,M=t.rects.popper,L=new Map,A=!0,O=_[0],T=0;T<_.length;T++){var I=_[T],N=W(I),D=ae(I)===u,P=[r,o].indexOf(N)>=0,F=P?"width":"height",B=Oe(t,{placement:I,boundary:m,rootBoundary:g,altBoundary:b,padding:h}),z=P?D?a:l:D?o:r;S[F]>M[F]&&(z=he(z));var $=he(z),V=[];if(d&&V.push(B[N]<=0),p&&V.push(B[z]<=0,B[$]<=0),V.every(function(e){return e})){O=I,A=!1;break}L.set(I,V)}if(A)for(var j=w?3:1,K=function(e){var t=_.find(function(t){var n=L.get(t);if(n)return n.slice(0,e).every(function(e){return e})});if(t)return O=t,"break"},H=j;H>0;H--){var X=K(H);if("break"===X)break}t.placement!==O&&(t.modifiersData[s]._skip=!0,t.placement=O,t.reset=!0)}}var We={name:"flip",enabled:!0,phase:"main",fn:Ne,requiresIfExists:["offset"],data:{_skip:!1}};function De(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function Pe(e){return[r,a,o,l].some(function(t){return e[t]>=0})}function Fe(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,a=t.modifiersData.preventOverflow,l=Oe(t,{elementContext:"reference"}),i=Oe(t,{altBoundary:!0}),s=De(l,r),u=De(i,o,a),c=Pe(s),d=Pe(u);t.modifiersData[n]={referenceClippingOffsets:s,popperEscapeOffsets:u,isReferenceHidden:c,hasPopperEscaped:d},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":c,"data-popper-escaped":d})}var Be={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:Fe};function ze(e,t,n){var o=W(e),i=[l,r].indexOf(o)>=0?-1:1,s="function"==typeof n?n(Object.assign({},t,{placement:e})):n,u=s[0],c=s[1];return u=u||0,c=(c||0)*i,[l,a].indexOf(o)>=0?{x:c,y:u}:{x:u,y:c}}function $e(e){var t=e.state,n=e.options,r=e.name,o=n.offset,a=void 0===o?[0,0]:o,l=m.reduce(function(e,n){return e[n]=ze(n,t.rects,a),e},{}),i=l[t.placement],s=i.x,u=i.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=s,t.modifiersData.popperOffsets.y+=u),t.modifiersData[r]=l}var Ve={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:$e};function je(e){var t=e.state,n=e.name;t.modifiersData[n]=Ae({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}var Ke={name:"popperOffsets",enabled:!0,phase:"read",fn:je,data:{}};function He(e){return"x"===e?"y":"x"}function Xe(e){var t=e.state,n=e.options,i=e.name,s=n.mainAxis,c=void 0===s||s,d=n.altAxis,f=void 0!==d&&d,p=n.boundary,v=n.rootBoundary,h=n.altBoundary,m=n.padding,g=n.tether,b=void 0===g||g,y=n.tetherOffset,w=void 0===y?0:y,R=Oe(t,{boundary:p,rootBoundary:v,padding:m,altBoundary:h}),C=W(t.placement),x=ae(t.placement),k=!x,E=q(C),_=He(E),S=t.modifiersData.popperOffsets,M=t.rects.reference,L=t.rects.popper,A="function"==typeof w?w(Object.assign({},t.rects,{placement:t.placement})):w,O="number"==typeof A?{mainAxis:A,altAxis:A}:Object.assign({mainAxis:0,altAxis:0},A),T=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,I={x:0,y:0};if(S){if(c){var N,F="y"===E?r:l,B="y"===E?o:a,$="y"===E?"height":"width",V=S[E],j=V+R[F],K=V-R[B],H=b?-L[$]/2:0,X=x===u?M[$]:L[$],U=x===u?-L[$]:-M[$],J=t.elements.arrow,ee=b&&J?z(J):{width:0,height:0},te=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:Z(),ne=te[F],re=te[B],oe=Y(0,M[$],ee[$]),le=k?M[$]/2-H-oe-ne-O.mainAxis:X-oe-ne-O.mainAxis,ie=k?-M[$]/2+H+oe+re+O.mainAxis:U+oe+re+O.mainAxis,se=t.elements.arrow&&G(t.elements.arrow),ue=se?"y"===E?se.clientTop||0:se.clientLeft||0:0,ce=null!=(N=null==T?void 0:T[E])?N:0,de=V+le-ce-ue,fe=V+ie-ce,pe=Y(b?P(j,de):j,V,b?D(K,fe):K);S[E]=pe,I[E]=pe-V}if(f){var ve,he="x"===E?r:l,me="x"===E?o:a,ge=S[_],be="y"===_?"height":"width",ye=ge+R[he],we=ge-R[me],Re=-1!==[r,l].indexOf(C),Ce=null!=(ve=null==T?void 0:T[_])?ve:0,xe=Re?ye:ge-M[be]-L[be]-Ce+O.altAxis,ke=Re?ge+M[be]+L[be]-Ce-O.altAxis:we,Ee=b&&Re?Q(xe,ge,ke):Y(b?xe:ye,ge,b?ke:we);S[_]=Ee,I[_]=Ee-ge}t.modifiersData[i]=I}}var Ue={name:"preventOverflow",enabled:!0,phase:"main",fn:Xe,requiresIfExists:["offset"]};function Ge(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function qe(e){return e!==M(e)&&A(e)?Ge(e):be(e)}function Ye(e){var t=e.getBoundingClientRect(),n=F(t.width)/e.offsetWidth||1,r=F(t.height)/e.offsetHeight||1;return 1!==n||1!==r}function Qe(e,t,n){void 0===n&&(n=!1);var r=A(t),o=A(t)&&Ye(t),a=K(t),l=B(e,o),i={scrollLeft:0,scrollTop:0},s={x:0,y:0};return(r||!r&&!n)&&(("body"!==S(t)||Ce(a))&&(i=qe(t)),A(t)?(s=B(t,!0),s.x+=t.clientLeft,s.y+=t.clientTop):a&&(s.x=ye(a))),{x:l.left+i.scrollLeft-s.x,y:l.top+i.scrollTop-s.y,width:l.width,height:l.height}}function Ze(e){var t=new Map,n=new Set,r=[];function o(e){n.add(e.name);var a=[].concat(e.requires||[],e.requiresIfExists||[]);a.forEach(function(e){if(!n.has(e)){var r=t.get(e);r&&o(r)}}),r.push(e)}return e.forEach(function(e){t.set(e.name,e)}),e.forEach(function(e){n.has(e.name)||o(e)}),r}function Je(e){var t=Ze(e);return _.reduce(function(e,n){return e.concat(t.filter(function(e){return e.phase===n}))},[])}function et(e){var t;return function(){return t||(t=new Promise(function(n){Promise.resolve().then(function(){t=void 0,n(e())})})),t}}function tt(e){var t=e.reduce(function(e,t){var n=e[t.name];return e[t.name]=n?Object.assign({},n,t,{options:Object.assign({},n.options,t.options),data:Object.assign({},n.data,t.data)}):t,e},{});return Object.keys(t).map(function(e){return t[e]})}var nt={placement:"bottom",modifiers:[],strategy:"absolute"};function rt(){for(var e=arguments.length,t=new Array(e),n=0;n!0,opened:()=>!0,close:()=>!0,closed:()=>!0,[l.l4]:e=>(0,i.Lm)(e),openAutoFocus:()=>!0,closeAutoFocus:()=>!0};Symbol("dialogContextKey")},87254:function(e,t,n){"use strict";n.d(t,{F:function(){return r},w:function(){return o}});const r=Symbol("formContextKey"),o=Symbol("formItemContextKey")},87849:function(e,t,n){"use strict";var r=n(80055);t.mw={prefix:r.prefix,iconName:r.iconName,icon:[r.width,r.height,r.aliases,r.unicode,r.svgPathData]},t.H9=t.mw,r.prefix,r.iconName,r.width,r.height,r.aliases,r.unicode,r.svgPathData,r.aliases},88500:function(e,t,n){"use strict";var r=n(67788),o="Expected a function";function a(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError(o);var n=function(){var r=arguments,o=t?t.apply(this,r):r[0],a=n.cache;if(a.has(o))return a.get(o);var l=e.apply(this,r);return n.cache=a.set(o,l)||a,l};return n.cache=new(a.Cache||r.A),n}a.Cache=r.A,t.A=a},88502:function(e,t,n){"use strict";var r=n(53658);t.mw={prefix:r.prefix,iconName:r.iconName,icon:[r.width,r.height,r.aliases,r.unicode,r.svgPathData]},t.ye=t.mw,r.prefix,r.iconName,r.width,r.height,r.aliases,r.unicode,r.svgPathData,r.aliases},88559:function(e,t,n){"use strict";n.d(t,{kA:function(){return A}});var r=n(56768),o=n(90144),a=n(24232),l=n(97687),i=n(97017),s=n(45130),u=n(20017);const c=Symbol("scrollbarContextKey");var d=n(47378);const f=(0,d.b_)({vertical:Boolean,size:String,move:Number,ratio:{type:Number,required:!0},always:Boolean});var p=n(99077),v=n(93513),h=n(86894);const m="Thumb",g=(0,r.pM)({__name:"thumb",props:f,setup(e){const t=e,n=(0,r.WQ)(c),d=(0,v.DU)("scrollbar");n||(0,h.$)(m,"can not inject scrollbar context");const f=(0,o.KR)(),p=(0,o.KR)(),g=(0,o.KR)({}),b=(0,o.KR)(!1);let y=!1,w=!1,R=0,C=0,x=u.oc?document.onselectstart:null;const k=(0,r.EW)(()=>i.rc[t.vertical?"vertical":"horizontal"]),E=(0,r.EW)(()=>(0,i.Ap)({size:t.size,move:t.move,bar:k.value})),_=(0,r.EW)(()=>f.value[k.value.offset]**2/n.wrapElement[k.value.scrollSize]/t.ratio/p.value[k.value.offset]),S=e=>{var t;if(e.stopPropagation(),e.ctrlKey||[1,2].includes(e.button))return;null==(t=window.getSelection())||t.removeAllRanges(),L(e);const n=e.currentTarget;n&&(g.value[k.value.axis]=n[k.value.offset]-(e[k.value.client]-n.getBoundingClientRect()[k.value.direction]))},M=e=>{if(!p.value||!f.value||!n.wrapElement)return;const t=Math.abs(e.target.getBoundingClientRect()[k.value.direction]-e[k.value.client]),r=p.value[k.value.offset]/2,o=100*(t-r)*_.value/f.value[k.value.offset];n.wrapElement[k.value.scroll]=o*n.wrapElement[k.value.scrollSize]/100},L=e=>{e.stopImmediatePropagation(),y=!0,R=n.wrapElement.scrollHeight,C=n.wrapElement.scrollWidth,document.addEventListener("mousemove",A),document.addEventListener("mouseup",O),x=document.onselectstart,document.onselectstart=()=>!1},A=e=>{if(!f.value||!p.value)return;if(!1===y)return;const t=g.value[k.value.axis];if(!t)return;const r=-1*(f.value.getBoundingClientRect()[k.value.direction]-e[k.value.client]),o=p.value[k.value.offset]-t,a=100*(r-o)*_.value/f.value[k.value.offset];"scrollLeft"===k.value.scroll?n.wrapElement[k.value.scroll]=a*C/100:n.wrapElement[k.value.scroll]=a*R/100},O=()=>{y=!1,g.value[k.value.axis]=0,document.removeEventListener("mousemove",A),document.removeEventListener("mouseup",O),N(),w&&(b.value=!1)},T=()=>{w=!1,b.value=!!t.size},I=()=>{w=!0,b.value=y};(0,r.xo)(()=>{N(),document.removeEventListener("mouseup",O)});const N=()=>{document.onselectstart!==x&&(document.onselectstart=x)};return(0,l.MLh)((0,o.lW)(n,"scrollbarElement"),"mousemove",T),(0,l.MLh)((0,o.lW)(n,"scrollbarElement"),"mouseleave",I),(e,t)=>((0,r.uX)(),(0,r.Wv)(s.eB,{name:(0,o.R1)(d).b("fade"),persisted:""},{default:(0,r.k6)(()=>[(0,r.bo)((0,r.Lk)("div",{ref_key:"instance",ref:f,class:(0,a.C4)([(0,o.R1)(d).e("bar"),(0,o.R1)(d).is((0,o.R1)(k).key)]),onMousedown:M,onClick:(0,s.D$)(()=>{},["stop"])},[(0,r.Lk)("div",{ref_key:"thumb",ref:p,class:(0,a.C4)((0,o.R1)(d).e("thumb")),style:(0,a.Tr)((0,o.R1)(E)),onMousedown:S},null,38)],42,["onClick"]),[[s.aG,e.always||b.value]])]),_:1},8,["name"]))}});var b=(0,p.A)(g,[["__file","thumb.vue"]]);const y=(0,d.b_)({always:{type:Boolean,default:!0},minSize:{type:Number,required:!0}}),w=(0,r.pM)({__name:"bar",props:y,setup(e,{expose:t}){const n=e,a=(0,r.WQ)(c),l=(0,o.KR)(0),s=(0,o.KR)(0),u=(0,o.KR)(""),d=(0,o.KR)(""),f=(0,o.KR)(1),p=(0,o.KR)(1),v=e=>{if(e){const t=e.offsetHeight-i.Rd,n=e.offsetWidth-i.Rd;s.value=100*e.scrollTop/t*f.value,l.value=100*e.scrollLeft/n*p.value}},h=()=>{const e=null==a?void 0:a.wrapElement;if(!e)return;const t=e.offsetHeight-i.Rd,r=e.offsetWidth-i.Rd,o=t**2/e.scrollHeight,l=r**2/e.scrollWidth,s=Math.max(o,n.minSize),c=Math.max(l,n.minSize);f.value=o/(t-o)/(s/(t-s)),p.value=l/(r-l)/(c/(r-c)),d.value=s+i.Rd((0,r.uX)(),(0,r.CE)(r.FK,null,[(0,r.bF)(b,{move:l.value,ratio:p.value,size:u.value,always:e.always},null,8,["move","ratio","size","always"]),(0,r.bF)(b,{move:s.value,ratio:f.value,size:d.value,vertical:"",always:e.always},null,8,["move","ratio","size","always"])],64))}});var R=(0,p.A)(w,[["__file","bar.vue"]]),C=n(9825),x=n(93558),k=n(12235);const E="ElScrollbar",_=(0,r.pM)({name:E}),S=(0,r.pM)({..._,props:C.b,emits:C.f,setup(e,{expose:t,emit:n}){const i=e,s=(0,v.DU)("scrollbar");let u,d,f,p=0,m=0,g="";const b={bottom:!1,top:!1,right:!1,left:!1},y=(0,o.KR)(),w=(0,o.KR)(),C=(0,o.KR)(),_=(0,o.KR)(),S=(0,r.EW)(()=>{const e={},t=(0,x._V)(i.height),n=(0,x._V)(i.maxHeight);return t&&(e.height=t),n&&(e.maxHeight=n),[i.wrapStyle,e]}),M=(0,r.EW)(()=>[i.wrapClass,s.e("wrap"),{[s.em("wrap","hidden-default")]:!i.native}]),L=(0,r.EW)(()=>[s.e("view"),i.viewClass]),A=e=>{var t;return null!=(t=b[e])&&t},O={top:"bottom",bottom:"top",left:"right",right:"left"},T=e=>{const t=O[g];if(!t)return;const n=e[g],r=e[t];n&&!b[g]&&(b[g]=!0),!r&&b[t]&&(b[t]=!1)},I=()=>{var e;if(w.value){null==(e=_.value)||e.handleScroll(w.value);const t=p,r=m;p=w.value.scrollTop,m=w.value.scrollLeft;const o={bottom:p+w.value.clientHeight>=w.value.scrollHeight-i.distance,top:p<=i.distance&&0!==t,right:m+w.value.clientWidth>=w.value.scrollWidth-i.distance&&r!==m,left:m<=i.distance&&0!==r};if(n("scroll",{scrollTop:p,scrollLeft:m}),t!==p&&(g=p>t?"bottom":"top"),r!==m&&(g=m>r?"right":"left"),i.distance>0){if(A(g))return;T(o)}o[g]&&n("end-reached",g)}};function N(e,t){(0,a.Gv)(e)?w.value.scrollTo(e):(0,k.Et)(e)&&(0,k.Et)(t)&&w.value.scrollTo(e,t)}const W=e=>{(0,k.Et)(e)?w.value.scrollTop=e:(0,h.U)(E,"value must be a number")},D=e=>{(0,k.Et)(e)?w.value.scrollLeft=e:(0,h.U)(E,"value must be a number")},P=()=>{var e;null==(e=_.value)||e.update(),b[g]=!1};return(0,r.wB)(()=>i.noresize,e=>{e?(null==u||u(),null==d||d(),null==f||f()):(({stop:u}=(0,l.wYm)(C,P)),({stop:d}=(0,l.wYm)(w,P)),f=(0,l.MLh)("resize",P))},{immediate:!0}),(0,r.wB)(()=>[i.maxHeight,i.height],()=>{i.native||(0,r.dY)(()=>{var e;P(),w.value&&(null==(e=_.value)||e.handleScroll(w.value))})}),(0,r.Gt)(c,(0,o.Kh)({scrollbarElement:y,wrapElement:w})),(0,r.n)(()=>{w.value&&(w.value.scrollTop=p,w.value.scrollLeft=m)}),(0,r.sV)(()=>{i.native||(0,r.dY)(()=>{P()})}),(0,r.$u)(()=>P()),t({wrapRef:w,update:P,scrollTo:N,setScrollTop:W,setScrollLeft:D,handleScroll:I}),(e,t)=>((0,r.uX)(),(0,r.CE)("div",{ref_key:"scrollbarRef",ref:y,class:(0,a.C4)((0,o.R1)(s).b())},[(0,r.Lk)("div",{ref_key:"wrapRef",ref:w,class:(0,a.C4)((0,o.R1)(M)),style:(0,a.Tr)((0,o.R1)(S)),tabindex:e.tabindex,onScroll:I},[((0,r.uX)(),(0,r.Wv)((0,r.$y)(e.tag),{id:e.id,ref_key:"resizeRef",ref:C,class:(0,a.C4)((0,o.R1)(L)),style:(0,a.Tr)(e.viewStyle),role:e.role,"aria-label":e.ariaLabel,"aria-orientation":e.ariaOrientation},{default:(0,r.k6)(()=>[(0,r.RG)(e.$slots,"default")]),_:3},8,["id","class","style","role","aria-label","aria-orientation"]))],46,["tabindex"]),e.native?(0,r.Q3)("v-if",!0):((0,r.uX)(),(0,r.Wv)(R,{key:0,ref_key:"barRef",ref:_,always:e.always,"min-size":e.minSize},null,8,["always","min-size"]))],2))}});var M=(0,p.A)(S,[["__file","scrollbar.vue"]]),L=n(25376);const A=(0,L.GU)(M)},88727:function(e){"use strict";e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},88921:function(e,t){"use strict";var n="fas",r="server",o=448,a=512,l=[],i="f233",s="M64 32C28.7 32 0 60.7 0 96l0 64c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-64c0-35.3-28.7-64-64-64L64 32zm216 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm56 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM64 288c-35.3 0-64 28.7-64 64l0 64c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-64c0-35.3-28.7-64-64-64L64 288zm216 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm56 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.D6=t.mw},89286:function(e,t,n){"use strict";var r=n(94402),o=n(38469),a=r.Set,l=r.add;e.exports=function(e){var t=new a;return o(e,function(e){l(t,e)}),t}},89544:function(e,t,n){"use strict";var r=n(82839);e.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(r)},89559:function(e,t,n){"use strict";n.d(t,{KR:function(){return R}});var r=n(56768),o=n(90144),a=n(45130),l=n(24232),i=n(813),s=n(20464),u=n(47378),c=n(64340);const d=["light","dark"],f=(0,u.b_)({title:{type:String,default:""},description:{type:String,default:""},type:{type:String,values:(0,c.YD)(s.rz),default:"info"},closable:{type:Boolean,default:!0},closeText:{type:String,default:""},showIcon:Boolean,center:Boolean,effect:{type:String,values:d,default:"light"},showAfter:Number,hideAfter:Number,autoClose:Number}),p={close:e=>e instanceof MouseEvent};var v=n(99077),h=n(93513),m=n(86894);const g=(0,r.pM)({name:"ElAlert"}),b=(0,r.pM)({...g,props:f,emits:p,setup(e,{emit:t}){const n=e,{Close:u}=s.Nk,c=(0,r.Ht)(),d=(0,h.DU)("alert"),f=(0,o.KR)(!0),p=(0,r.EW)(()=>s.rz[n.type]),v=(0,r.EW)(()=>!(!n.description&&!c.default)),g=e=>{f.value=!1,t("close",e)};return(n.showAfter||n.hideAfter||n.autoClose)&&(0,m.U)("el-alert","The `show-after`, `hide-after`, and `auto-close` attributes were removed after 2.11.8. Please use `v-if` and `v-show` to manually replace them, visit: https://github.com/element-plus/element-plus/pull/22560"),(e,t)=>((0,r.uX)(),(0,r.Wv)(a.eB,{name:(0,o.R1)(d).b("fade"),persisted:""},{default:(0,r.k6)(()=>[(0,r.bo)((0,r.Lk)("div",{class:(0,l.C4)([(0,o.R1)(d).b(),(0,o.R1)(d).m(e.type),(0,o.R1)(d).is("center",e.center),(0,o.R1)(d).is(e.effect)]),role:"alert"},[e.showIcon&&(e.$slots.icon||(0,o.R1)(p))?((0,r.uX)(),(0,r.Wv)((0,o.R1)(i.tk),{key:0,class:(0,l.C4)([(0,o.R1)(d).e("icon"),(0,o.R1)(d).is("big",(0,o.R1)(v))])},{default:(0,r.k6)(()=>[(0,r.RG)(e.$slots,"icon",{},()=>[((0,r.uX)(),(0,r.Wv)((0,r.$y)((0,o.R1)(p))))])]),_:3},8,["class"])):(0,r.Q3)("v-if",!0),(0,r.Lk)("div",{class:(0,l.C4)((0,o.R1)(d).e("content"))},[e.title||e.$slots.title?((0,r.uX)(),(0,r.CE)("span",{key:0,class:(0,l.C4)([(0,o.R1)(d).e("title"),{"with-description":(0,o.R1)(v)}])},[(0,r.RG)(e.$slots,"title",{},()=>[(0,r.eW)((0,l.v_)(e.title),1)])],2)):(0,r.Q3)("v-if",!0),(0,o.R1)(v)?((0,r.uX)(),(0,r.CE)("p",{key:1,class:(0,l.C4)((0,o.R1)(d).e("description"))},[(0,r.RG)(e.$slots,"default",{},()=>[(0,r.eW)((0,l.v_)(e.description),1)])],2)):(0,r.Q3)("v-if",!0),e.closable?((0,r.uX)(),(0,r.CE)(r.FK,{key:2},[e.closeText?((0,r.uX)(),(0,r.CE)("div",{key:0,class:(0,l.C4)([(0,o.R1)(d).e("close-btn"),(0,o.R1)(d).is("customed")]),onClick:g},(0,l.v_)(e.closeText),3)):((0,r.uX)(),(0,r.Wv)((0,o.R1)(i.tk),{key:1,class:(0,l.C4)((0,o.R1)(d).e("close-btn")),onClick:g},{default:(0,r.k6)(()=>[(0,r.bF)((0,o.R1)(u))]),_:1},8,["class"]))],64)):(0,r.Q3)("v-if",!0)],2)],2),[[a.aG,f.value]])]),_:3},8,["name"]))}});var y=(0,v.A)(b,[["__file","alert.vue"]]),w=n(25376);const R=(0,w.GU)(y)},90144:function(e,t,n){"use strict";n.d(t,{BA:function(){return Be},C4:function(){return _},EW:function(){return Ye},Gc:function(){return Re},IG:function(){return Le},IJ:function(){return Ne},KR:function(){return Ie},Kh:function(){return we},Pr:function(){return $e},QW:function(){return Ke},R1:function(){return Fe},Tm:function(){return Ee},X2:function(){return d},a1:function(){return Oe},bl:function(){return S},fE:function(){return _e},g8:function(){return ke},hV:function(){return nt},hZ:function(){return F},i9:function(){return Te},jr:function(){return u},ju:function(){return Se},lJ:function(){return Ae},lW:function(){return Ue},mu:function(){return Pe},o5:function(){return s},qA:function(){return $},rY:function(){return je},tB:function(){return Ce},u4:function(){return P},uY:function(){return i},ux:function(){return Me},wB:function(){return tt},yC:function(){return l}});n(44114),n(18111),n(22489),n(7588),n(61701),n(13579),n(17642),n(58004),n(33853),n(45876),n(32475),n(15024),n(31698);var r=n(24232);let o,a;class l{constructor(e=!1){this.detached=e,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=o,!e&&o&&(this.index=(o.scopes||(o.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){let e,t;if(this._isPaused=!0,this.scopes)for(e=0,t=this.scopes.length;e0&&0===--this._on&&(o=this.prevScope,this.prevScope=void 0)}stop(e){if(this._active){let t,n;for(this._active=!1,t=0,n=this.effects.length;t0)return;if(p){let e=p;p=void 0;while(e){const t=e.next;e.next=void 0,e.flags&=-9,e=t}}let e;while(f){let n=f;f=void 0;while(n){const r=n.next;if(n.next=void 0,n.flags&=-9,1&n.flags)try{n.trigger()}catch(t){e||(e=t)}n=r}}if(e)throw e}function b(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function y(e){let t,n=e.depsTail,r=n;while(r){const e=r.prevDep;-1===r.version?(r===n&&(n=e),C(r),x(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=e}e.deps=t,e.depsTail=n}function w(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(R(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function R(e){if(4&e.flags&&!(16&e.flags))return;if(e.flags&=-17,e.globalVersion===L)return;if(e.globalVersion=L,!e.isSSR&&128&e.flags&&(!e.deps&&!e._dirty||!w(e)))return;e.flags|=2;const t=e.dep,n=a,o=k;a=e,k=!0;try{b(e);const n=e.fn(e._value);(0===t.version||(0,r.$H)(n,e._value))&&(e.flags|=128,e._value=n,t.version++)}catch(l){throw t.version++,l}finally{a=n,k=o,y(e),e.flags&=-3}}function C(e,t=!1){const{dep:n,prevSub:r,nextSub:o}=e;if(r&&(r.nextSub=o,e.prevSub=void 0),o&&(o.prevSub=r,e.nextSub=void 0),n.subs===e&&(n.subs=r,!r&&n.computed)){n.computed.flags&=-5;for(let e=n.computed.deps;e;e=e.nextDep)C(e,!0)}t||--n.sc||!n.map||n.map.delete(n.key)}function x(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let k=!0;const E=[];function _(){E.push(k),k=!1}function S(){const e=E.pop();k=void 0===e||e}function M(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const e=a;a=void 0;try{t()}finally{a=e}}}let L=0;class A{constructor(e,t){this.sub=e,this.dep=t,this.version=t.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class O{constructor(e){this.computed=e,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(e){if(!a||!k||a===this.computed)return;let t=this.activeLink;if(void 0===t||t.sub!==a)t=this.activeLink=new A(a,this),a.deps?(t.prevDep=a.depsTail,a.depsTail.nextDep=t,a.depsTail=t):a.deps=a.depsTail=t,T(t);else if(-1===t.version&&(t.version=this.version,t.nextDep)){const e=t.nextDep;e.prevDep=t.prevDep,t.prevDep&&(t.prevDep.nextDep=e),t.prevDep=a.depsTail,t.nextDep=void 0,a.depsTail.nextDep=t,a.depsTail=t,a.deps===t&&(a.deps=e)}return t}trigger(e){this.version++,L++,this.notify(e)}notify(e){m();try{0;for(let e=this.subs;e;e=e.prevSub)e.sub.notify()&&e.sub.dep.notify()}finally{g()}}}function T(e){if(e.dep.sc++,4&e.sub.flags){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let e=t.deps;e;e=e.nextDep)T(e)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const I=new WeakMap,N=Symbol(""),W=Symbol(""),D=Symbol("");function P(e,t,n){if(k&&a){let t=I.get(e);t||I.set(e,t=new Map);let r=t.get(n);r||(t.set(n,r=new O),r.map=t,r.key=n),r.track()}}function F(e,t,n,o,a,l){const i=I.get(e);if(!i)return void L++;const s=e=>{e&&e.trigger()};if(m(),"clear"===t)i.forEach(s);else{const a=(0,r.cy)(e),l=a&&(0,r.yI)(n);if(a&&"length"===n){const e=Number(o);i.forEach((t,n)=>{("length"===n||n===D||!(0,r.Bm)(n)&&n>=e)&&s(t)})}else switch((void 0!==n||i.has(void 0))&&s(i.get(n)),l&&s(i.get(D)),t){case"add":a?l&&s(i.get("length")):(s(i.get(N)),(0,r.CE)(e)&&s(i.get(W)));break;case"delete":a||(s(i.get(N)),(0,r.CE)(e)&&s(i.get(W)));break;case"set":(0,r.CE)(e)&&s(i.get(N));break}}g()}function B(e,t){const n=I.get(e);return n&&n.get(t)}function z(e){const t=Me(e);return t===e?t:(P(t,"iterate",D),_e(e)?t:t.map(Ae))}function $(e){return P(e=Me(e),"iterate",D),e}function V(e,t){return Ee(e)?ke(e)?Oe(Ae(t)):Oe(t):Ae(t)}const j={__proto__:null,[Symbol.iterator](){return K(this,Symbol.iterator,e=>V(this,e))},concat(...e){return z(this).concat(...e.map(e=>(0,r.cy)(e)?z(e):e))},entries(){return K(this,"entries",e=>(e[1]=V(this,e[1]),e))},every(e,t){return X(this,"every",e,t,void 0,arguments)},filter(e,t){return X(this,"filter",e,t,e=>e.map(e=>V(this,e)),arguments)},find(e,t){return X(this,"find",e,t,e=>V(this,e),arguments)},findIndex(e,t){return X(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return X(this,"findLast",e,t,e=>V(this,e),arguments)},findLastIndex(e,t){return X(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return X(this,"forEach",e,t,void 0,arguments)},includes(...e){return G(this,"includes",e)},indexOf(...e){return G(this,"indexOf",e)},join(e){return z(this).join(e)},lastIndexOf(...e){return G(this,"lastIndexOf",e)},map(e,t){return X(this,"map",e,t,void 0,arguments)},pop(){return q(this,"pop")},push(...e){return q(this,"push",e)},reduce(e,...t){return U(this,"reduce",e,t)},reduceRight(e,...t){return U(this,"reduceRight",e,t)},shift(){return q(this,"shift")},some(e,t){return X(this,"some",e,t,void 0,arguments)},splice(...e){return q(this,"splice",e)},toReversed(){return z(this).toReversed()},toSorted(e){return z(this).toSorted(e)},toSpliced(...e){return z(this).toSpliced(...e)},unshift(...e){return q(this,"unshift",e)},values(){return K(this,"values",e=>V(this,e))}};function K(e,t,n){const r=$(e),o=r[t]();return r===e||_e(e)||(o._next=o.next,o.next=()=>{const e=o._next();return e.done||(e.value=n(e.value)),e}),o}const H=Array.prototype;function X(e,t,n,r,o,a){const l=$(e),i=l!==e&&!_e(e),s=l[t];if(s!==H[t]){const t=s.apply(e,a);return i?Ae(t):t}let u=n;l!==e&&(i?u=function(t,r){return n.call(this,V(e,t),r,e)}:n.length>2&&(u=function(t,r){return n.call(this,t,r,e)}));const c=s.call(l,u,r);return i&&o?o(c):c}function U(e,t,n,r){const o=$(e);let a=n;return o!==e&&(_e(e)?n.length>3&&(a=function(t,r,o){return n.call(this,t,r,o,e)}):a=function(t,r,o){return n.call(this,t,V(e,r),o,e)}),o[t](a,...r)}function G(e,t,n){const r=Me(e);P(r,"iterate",D);const o=r[t](...n);return-1!==o&&!1!==o||!Se(n[0])?o:(n[0]=Me(n[0]),r[t](...n))}function q(e,t,n=[]){_(),m();const r=Me(e)[t].apply(e,n);return g(),S(),r}const Y=(0,r.pD)("__proto__,__v_isRef,__isVue"),Q=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>"arguments"!==e&&"caller"!==e).map(e=>Symbol[e]).filter(r.Bm));function Z(e){(0,r.Bm)(e)||(e=String(e));const t=Me(this);return P(t,"has",e),t.hasOwnProperty(e)}class J{constructor(e=!1,t=!1){this._isReadonly=e,this._isShallow=t}get(e,t,n){if("__v_skip"===t)return e["__v_skip"];const o=this._isReadonly,a=this._isShallow;if("__v_isReactive"===t)return!o;if("__v_isReadonly"===t)return o;if("__v_isShallow"===t)return a;if("__v_raw"===t)return n===(o?a?ge:me:a?he:ve).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(n)?e:void 0;const l=(0,r.cy)(e);if(!o){let e;if(l&&(e=j[t]))return e;if("hasOwnProperty"===t)return Z}const i=Reflect.get(e,t,Te(e)?e:n);if((0,r.Bm)(t)?Q.has(t):Y(t))return i;if(o||P(e,"get",t),a)return i;if(Te(i)){const e=l&&(0,r.yI)(t)?i:i.value;return o&&(0,r.Gv)(e)?Ce(e):e}return(0,r.Gv)(i)?o?Ce(i):we(i):i}}class ee extends J{constructor(e=!1){super(!1,e)}set(e,t,n,o){let a=e[t];const l=(0,r.cy)(e)&&(0,r.yI)(t);if(!this._isShallow){const e=Ee(a);if(_e(n)||Ee(n)||(a=Me(a),n=Me(n)),!l&&Te(a)&&!Te(n))return e||(a.value=n),!0}const i=l?Number(t)e,le=e=>Reflect.getPrototypeOf(e);function ie(e,t,n){return function(...o){const a=this["__v_raw"],l=Me(a),i=(0,r.CE)(l),s="entries"===e||e===Symbol.iterator&&i,u="keys"===e&&i,c=a[e](...o),d=n?ae:t?Oe:Ae;return!t&&P(l,"iterate",u?W:N),{next(){const{value:e,done:t}=c.next();return t?{value:e,done:t}:{value:s?[d(e[0]),d(e[1])]:d(e),done:t}},[Symbol.iterator](){return this}}}}function se(e){return function(...t){return"delete"!==e&&("clear"===e?void 0:this)}}function ue(e,t){const n={get(n){const o=this["__v_raw"],a=Me(o),l=Me(n);e||((0,r.$H)(n,l)&&P(a,"get",n),P(a,"get",l));const{has:i}=le(a),s=t?ae:e?Oe:Ae;return i.call(a,n)?s(o.get(n)):i.call(a,l)?s(o.get(l)):void(o!==a&&o.get(n))},get size(){const t=this["__v_raw"];return!e&&P(Me(t),"iterate",N),t.size},has(t){const n=this["__v_raw"],o=Me(n),a=Me(t);return e||((0,r.$H)(t,a)&&P(o,"has",t),P(o,"has",a)),t===a?n.has(t):n.has(t)||n.has(a)},forEach(n,r){const o=this,a=o["__v_raw"],l=Me(a),i=t?ae:e?Oe:Ae;return!e&&P(l,"iterate",N),a.forEach((e,t)=>n.call(r,i(e),i(t),o))}};(0,r.X$)(n,e?{add:se("add"),set:se("set"),delete:se("delete"),clear:se("clear")}:{add(e){t||_e(e)||Ee(e)||(e=Me(e));const n=Me(this),r=le(n),o=r.has.call(n,e);return o||(n.add(e),F(n,"add",e,e)),this},set(e,n){t||_e(n)||Ee(n)||(n=Me(n));const o=Me(this),{has:a,get:l}=le(o);let i=a.call(o,e);i||(e=Me(e),i=a.call(o,e));const s=l.call(o,e);return o.set(e,n),i?(0,r.$H)(n,s)&&F(o,"set",e,n,s):F(o,"add",e,n),this},delete(e){const t=Me(this),{has:n,get:r}=le(t);let o=n.call(t,e);o||(e=Me(e),o=n.call(t,e));const a=r?r.call(t,e):void 0,l=t.delete(e);return o&&F(t,"delete",e,void 0,a),l},clear(){const e=Me(this),t=0!==e.size,n=void 0,r=e.clear();return t&&F(e,"clear",void 0,void 0,n),r}});const o=["keys","values","entries",Symbol.iterator];return o.forEach(r=>{n[r]=ie(r,e,t)}),n}function ce(e,t){const n=ue(e,t);return(t,o,a)=>"__v_isReactive"===o?!e:"__v_isReadonly"===o?e:"__v_raw"===o?t:Reflect.get((0,r.$3)(n,o)&&o in t?n:t,o,a)}const de={get:ce(!1,!1)},fe={get:ce(!1,!0)},pe={get:ce(!0,!1)};const ve=new WeakMap,he=new WeakMap,me=new WeakMap,ge=new WeakMap;function be(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function ye(e){return e["__v_skip"]||!Object.isExtensible(e)?0:be((0,r.Zf)(e))}function we(e){return Ee(e)?e:xe(e,!1,ne,de,ve)}function Re(e){return xe(e,!1,oe,fe,he)}function Ce(e){return xe(e,!0,re,pe,me)}function xe(e,t,n,o,a){if(!(0,r.Gv)(e))return e;if(e["__v_raw"]&&(!t||!e["__v_isReactive"]))return e;const l=ye(e);if(0===l)return e;const i=a.get(e);if(i)return i;const s=new Proxy(e,2===l?o:n);return a.set(e,s),s}function ke(e){return Ee(e)?ke(e["__v_raw"]):!(!e||!e["__v_isReactive"])}function Ee(e){return!(!e||!e["__v_isReadonly"])}function _e(e){return!(!e||!e["__v_isShallow"])}function Se(e){return!!e&&!!e["__v_raw"]}function Me(e){const t=e&&e["__v_raw"];return t?Me(t):e}function Le(e){return!(0,r.$3)(e,"__v_skip")&&Object.isExtensible(e)&&(0,r.yQ)(e,"__v_skip",!0),e}const Ae=e=>(0,r.Gv)(e)?we(e):e,Oe=e=>(0,r.Gv)(e)?Ce(e):e;function Te(e){return!!e&&!0===e["__v_isRef"]}function Ie(e){return We(e,!1)}function Ne(e){return We(e,!0)}function We(e,t){return Te(e)?e:new De(e,t)}class De{constructor(e,t){this.dep=new O,this["__v_isRef"]=!0,this["__v_isShallow"]=!1,this._rawValue=t?e:Me(e),this._value=t?e:Ae(e),this["__v_isShallow"]=t}get value(){return this.dep.track(),this._value}set value(e){const t=this._rawValue,n=this["__v_isShallow"]||_e(e)||Ee(e);e=n?e:Me(e),(0,r.$H)(e,t)&&(this._rawValue=e,this._value=n?e:Ae(e),this.dep.trigger())}}function Pe(e){e.dep&&e.dep.trigger()}function Fe(e){return Te(e)?e.value:e}function Be(e){return(0,r.Tn)(e)?e():Fe(e)}const ze={get:(e,t,n)=>"__v_raw"===t?e:Fe(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const o=e[t];return Te(o)&&!Te(n)?(o.value=n,!0):Reflect.set(e,t,n,r)}};function $e(e){return ke(e)?e:new Proxy(e,ze)}class Ve{constructor(e){this["__v_isRef"]=!0,this._value=void 0;const t=this.dep=new O,{get:n,set:r}=e(t.track.bind(t),t.trigger.bind(t));this._get=n,this._set=r}get value(){return this._value=this._get()}set value(e){this._set(e)}}function je(e){return new Ve(e)}function Ke(e){const t=(0,r.cy)(e)?new Array(e.length):{};for(const n in e)t[n]=Ge(e,n);return t}class He{constructor(e,t,n){this._object=e,this._key=t,this._defaultValue=n,this["__v_isRef"]=!0,this._value=void 0,this._raw=Me(e);let o=!0,a=e;if(!(0,r.cy)(e)||!(0,r.yI)(String(t)))do{o=!Se(a)||_e(a)}while(o&&(a=a["__v_raw"]));this._shallow=o}get value(){let e=this._object[this._key];return this._shallow&&(e=Fe(e)),this._value=void 0===e?this._defaultValue:e}set value(e){if(this._shallow&&Te(this._raw[this._key])){const t=this._object[this._key];if(Te(t))return void(t.value=e)}this._object[this._key]=e}get dep(){return B(this._raw,this._key)}}class Xe{constructor(e){this._getter=e,this["__v_isRef"]=!0,this["__v_isReadonly"]=!0,this._value=void 0}get value(){return this._value=this._getter()}}function Ue(e,t,n){return Te(e)?e:(0,r.Tn)(e)?new Xe(e):(0,r.Gv)(e)&&arguments.length>1?Ge(e,t,n):Ie(e)}function Ge(e,t,n){return new He(e,t,n)}class qe{constructor(e,t,n){this.fn=e,this.setter=t,this._value=void 0,this.dep=new O(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=L-1,this.next=void 0,this.effect=this,this["__v_isReadonly"]=!t,this.isSSR=n}notify(){if(this.flags|=16,!(8&this.flags||a===this))return h(this,!0),!0}get value(){const e=this.dep.track();return R(this),e&&(e.version=this.dep.version),this._value}set value(e){this.setter&&this.setter(e)}}function Ye(e,t,n=!1){let o,a;(0,r.Tn)(e)?o=e:(o=e.get,a=e.set);const l=new qe(o,a,n);return l}const Qe={},Ze=new WeakMap;let Je;function et(e,t=!1,n=Je){if(n){let t=Ze.get(n);t||Ze.set(n,t=[]),t.push(e)}else 0}function tt(e,t,n=r.MZ){const{immediate:o,deep:a,once:l,scheduler:i,augmentJob:u,call:c}=n,f=e=>a?e:_e(e)||!1===a||0===a?nt(e,1):nt(e);let p,v,h,m,g=!1,b=!1;if(Te(e)?(v=()=>e.value,g=_e(e)):ke(e)?(v=()=>f(e),g=!0):(0,r.cy)(e)?(b=!0,g=e.some(e=>ke(e)||_e(e)),v=()=>e.map(e=>Te(e)?e.value:ke(e)?f(e):(0,r.Tn)(e)?c?c(e,2):e():void 0)):v=(0,r.Tn)(e)?t?c?()=>c(e,2):e:()=>{if(h){_();try{h()}finally{S()}}const t=Je;Je=p;try{return c?c(e,3,[m]):e(m)}finally{Je=t}}:r.tE,t&&a){const e=v,t=!0===a?1/0:a;v=()=>nt(e(),t)}const y=s(),w=()=>{p.stop(),y&&y.active&&(0,r.TF)(y.effects,p)};if(l&&t){const e=t;t=(...t)=>{e(...t),w()}}let R=b?new Array(e.length).fill(Qe):Qe;const C=e=>{if(1&p.flags&&(p.dirty||e))if(t){const e=p.run();if(a||g||(b?e.some((e,t)=>(0,r.$H)(e,R[t])):(0,r.$H)(e,R))){h&&h();const n=Je;Je=p;try{const n=[e,R===Qe?void 0:b&&R[0]===Qe?[]:R,m];R=e,c?c(t,3,n):t(...n)}finally{Je=n}}}else p.run()};return u&&u(C),p=new d(v),p.scheduler=i?()=>i(C,!1):C,m=e=>et(e,!1,p),h=p.onStop=()=>{const e=Ze.get(p);if(e){if(c)c(e,4);else for(const t of e)t();Ze.delete(p)}},t?o?C(!0):R=p.run():i?i(C.bind(null,!0),!0):p.run(),w.pause=p.pause.bind(p),w.resume=p.resume.bind(p),w.stop=w,w}function nt(e,t=1/0,n){if(t<=0||!(0,r.Gv)(e)||e["__v_skip"])return e;if(n=n||new Map,(n.get(e)||0)>=t)return e;if(n.set(e,t),t--,Te(e))nt(e.value,t,n);else if((0,r.cy)(e))for(let r=0;r{nt(e,t,n)});else if((0,r.Qd)(e)){for(const r in e)nt(e[r],t,n);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&nt(e[r],t,n)}return e}},90389:function(e,t){"use strict";var n="fas",r="ban",o=512,a=512,l=[128683,"cancel"],i="f05e",s="M367.2 412.5L99.5 144.8c-22.4 31.4-35.5 69.8-35.5 111.2 0 106 86 192 192 192 41.5 0 79.9-13.1 111.2-35.5zm45.3-45.3c22.4-31.4 35.5-69.8 35.5-111.2 0-106-86-192-192-192-41.5 0-79.9 13.1-111.2 35.5L412.5 367.2zM0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.Df=t.mw},90679:function(e,t,n){"use strict";var r=n(1625),o=TypeError;e.exports=function(e,t){if(r(t,e))return e;throw new o("Incorrect invocation")}},90844:function(e,t,n){"use strict";n.d(t,{p:function(){return l}});var r=n(4461),o=n(47378),a=n(10515);const l=(0,o.b_)({...r.X,disabled:Boolean,trigger:{type:(0,o.jq)([String,Array]),default:"hover"},triggerKeys:{type:(0,o.jq)(Array),default:()=>[a.R.enter,a.R.numpadEnter,a.R.space]},focusOnTarget:Boolean})},91181:function(e,t,n){"use strict";var r,o,a,l=n(58622),i=n(44576),s=n(20034),u=n(66699),c=n(39297),d=n(77629),f=n(66119),p=n(30421),v="Object already initialized",h=i.TypeError,m=i.WeakMap,g=function(e){return a(e)?o(e):r(e,{})},b=function(e){return function(t){var n;if(!s(t)||(n=o(t)).type!==e)throw new h("Incompatible receiver, "+e+" required");return n}};if(l||d.state){var y=d.state||(d.state=new m);y.get=y.get,y.has=y.has,y.set=y.set,r=function(e,t){if(y.has(e))throw new h(v);return t.facade=e,y.set(e,t),t},o=function(e){return y.get(e)||{}},a=function(e){return y.has(e)}}else{var w=f("state");p[w]=!0,r=function(e,t){if(c(e,w))throw new h(v);return t.facade=e,u(e,w,t),t},o=function(e){return c(e,w)?e[w]:{}},a=function(e){return c(e,w)}}e.exports={set:r,get:o,has:a,enforce:g,getterFor:b}},91291:function(e,t,n){"use strict";var r=n(80741);e.exports=function(e){var t=+e;return t!==t||0===t?0:r(t)}},91385:function(e,t,n){"use strict";var r=n(9539);e.exports=function(e,t,n){for(var o=e.length-1;o>=0;o--)if(void 0!==e[o])try{n=r(e[o].iterator,t,n)}catch(a){t="throw",n=a}if("throw"===t)throw n;return n}},92056:function(e,t,n){"use strict";n.d(t,{YU:function(){return o},l4:function(){return r},qs:function(){return a}});const r="update:modelValue",o="change",a="input"},92140:function(e,t,n){"use strict";var r=n(78227),o=r("toStringTag"),a={};a[o]="z",e.exports="[object z]"===String(a)},92308:function(e,t,n){"use strict";n.d(t,{A:function(){return d}});var r=n(1821),o=n(72990),a=n(26162),l=n(23506),i=o.A?o.A.isConcatSpreadable:void 0;function s(e){return(0,l.A)(e)||(0,a.A)(e)||!!(i&&e&&e[i])}var u=s;function c(e,t,n,o,a){var l=-1,i=e.length;n||(n=u),a||(a=[]);while(++l0&&n(s)?t>1?c(s,t-1,n,o,a):(0,r.A)(a,s):o||(a[a.length]=s)}return a}var d=c},92317:function(e,t,n){n(18111),n(61701),function(t,n){e.exports=n()}(0,function(){"use strict";return function(e,t,n){var r=t.prototype,o=function(e){return e&&(e.indexOf?e:e.s)},a=function(e,t,n,r,a){var l=e.name?e:e.$locale(),i=o(l[t]),s=o(l[n]),u=i||s.map(function(e){return e.slice(0,r)});if(!a)return u;var c=l.weekStart;return u.map(function(e,t){return u[(t+(c||0))%7]})},l=function(){return n.Ls[n.locale()]},i=function(e,t){return e.formats[t]||function(e){return e.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(e,t,n){return t||n.slice(1)})}(e.formats[t.toUpperCase()])},s=function(){var e=this;return{months:function(t){return t?t.format("MMMM"):a(e,"months")},monthsShort:function(t){return t?t.format("MMM"):a(e,"monthsShort","months",3)},firstDayOfWeek:function(){return e.$locale().weekStart||0},weekdays:function(t){return t?t.format("dddd"):a(e,"weekdays")},weekdaysMin:function(t){return t?t.format("dd"):a(e,"weekdaysMin","weekdays",2)},weekdaysShort:function(t){return t?t.format("ddd"):a(e,"weekdaysShort","weekdays",3)},longDateFormat:function(t){return i(e.$locale(),t)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};r.localeData=function(){return s.bind(this)()},n.localeData=function(){var e=l();return{firstDayOfWeek:function(){return e.weekStart||0},weekdays:function(){return n.weekdays()},weekdaysShort:function(){return n.weekdaysShort()},weekdaysMin:function(){return n.weekdaysMin()},months:function(){return n.months()},monthsShort:function(){return n.monthsShort()},longDateFormat:function(t){return i(e,t)},meridiem:e.meridiem,ordinal:e.ordinal}},n.months=function(){return a(l(),"months")},n.monthsShort=function(){return a(l(),"monthsShort","months",3)},n.weekdays=function(e){return a(l(),"weekdays",null,null,e)},n.weekdaysShort=function(e){return a(l(),"weekdaysShort","weekdays",3,e)},n.weekdaysMin=function(e){return a(l(),"weekdaysMin","weekdays",2,e)}}})},92436:function(e,t,n){"use strict";n.d(t,{CB:function(){return u},NV:function(){return s}});var r=n(90144),o=n(56768),a=n(53845);const l=e=>{const t=(0,o.nI)();return(0,o.EW)(()=>{var n,r;return null==(r=null==(n=null==t?void 0:t.proxy)?void 0:n.$props)?void 0:r[e]})};var i=n(87254);const s=(e,t={})=>{const n=(0,r.KR)(void 0),s=t.prop?n:l("size"),u=t.global?n:(0,a.wC)(),c=t.form?{size:void 0}:(0,o.WQ)(i.F,void 0),d=t.formItem?{size:void 0}:(0,o.WQ)(i.w,void 0);return(0,o.EW)(()=>s.value||(0,r.R1)(e)||(null==d?void 0:d.size)||(null==c?void 0:c.size)||u.value||"")},u=e=>{const t=l("disabled"),n=(0,o.WQ)(i.F,void 0);return(0,o.EW)(()=>{var o,a,l;return null!=(l=null!=(a=null!=(o=t.value)?o:(0,r.R1)(e))?a:null==n?void 0:n.disabled)&&l})}},92796:function(e,t,n){"use strict";var r=n(79039),o=n(94901),a=/#|\.prototype\./,l=function(e,t){var n=s[i(e)];return n===c||n!==u&&(o(t)?r(t):!!t)},i=l.normalize=function(e){return String(e).replace(a,".").toLowerCase()},s=l.data={},u=l.NATIVE="N",c=l.POLYFILL="P";e.exports=l},92804:function(e){"use strict";var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",n=t+"+/",r=t+"-_",o=function(e){for(var t={},n=0;n<64;n++)t[e.charAt(n)]=n;return t};e.exports={i2c:n,c2i:o(n),i2cUrl:r,c2iUrl:o(r)}},93212:function(e,t){"use strict";var n="fas",r="tag",o=512,a=512,l=[127991],i="f02b",s="M32.5 96l0 149.5c0 17 6.7 33.3 18.7 45.3l192 192c25 25 65.5 25 90.5 0L483.2 333.3c25-25 25-65.5 0-90.5l-192-192C279.2 38.7 263 32 246 32L96.5 32c-35.3 0-64 28.7-64 64zm112 16a32 32 0 1 1 0 64 32 32 0 1 1 0-64z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t._2=t.mw},93291:function(e,t,n){"use strict";n.d(t,{Ll:function(){return r},MP:function(){return l},NP:function(){return s},aw:function(){return o},d:function(){return a},fI:function(){return u},oV:function(){return i},r3:function(){return c}});const r="focus-trap.focus-after-trapped",o="focus-trap.focus-after-released",a="focus-trap.focusout-prevented",l={cancelable:!0,bubbles:!1},i={cancelable:!0,bubbles:!1},s="focusAfterTrapped",u="focusAfterReleased",c=Symbol("elFocusTrap")},93422:function(e,t){"use strict";var n="fas",r="chevron-left",o=320,a=512,l=[9001],i="f053",s="M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256 246.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.Wz=t.mw},93513:function(e,t,n){"use strict";n.d(t,{DU:function(){return c},E9:function(){return u},Lt:function(){return a},O5:function(){return s}});var r=n(56768),o=n(90144);const a="el",l="is-",i=(e,t,n,r,o)=>{let a=`${e}-${t}`;return n&&(a+=`-${n}`),r&&(a+=`__${r}`),o&&(a+=`--${o}`),a},s=Symbol("namespaceContextKey"),u=e=>{const t=e||((0,r.nI)()?(0,r.WQ)(s,(0,o.KR)(a)):(0,o.KR)(a)),n=(0,r.EW)(()=>(0,o.R1)(t)||a);return n},c=(e,t)=>{const n=u(t),r=(t="")=>i(n.value,e,t,"",""),o=t=>t?i(n.value,e,"",t,""):"",a=t=>t?i(n.value,e,"","",t):"",s=(t,r)=>t&&r?i(n.value,e,t,r,""):"",c=(t,r)=>t&&r?i(n.value,e,"",t,r):"",d=(t,r)=>t&&r?i(n.value,e,t,"",r):"",f=(t,r,o)=>t&&r&&o?i(n.value,e,t,r,o):"",p=(e,...t)=>{const n=!(t.length>=1)||t[0];return e&&n?`${l}${e}`:""},v=e=>{const t={};for(const r in e)e[r]&&(t[`--${n.value}-${r}`]=e[r]);return t},h=t=>{const r={};for(const o in t)t[o]&&(r[`--${n.value}-${e}-${o}`]=t[o]);return r},m=e=>`--${n.value}-${e}`,g=t=>`--${n.value}-${e}-${t}`;return{namespace:n,b:r,e:o,m:a,be:s,em:c,bm:d,bem:f,is:p,cssVar:v,cssVarName:m,cssVarBlock:h,cssVarBlockName:g}}},93516:function(e,t,n){"use strict";var r=n(39078);function o(e,t){var n=t?(0,r.A)(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}t.A=o},93558:function(e,t,n){"use strict";n.d(t,{_V:function(){return h},eC:function(){return v},gd:function(){return p},iQ:function(){return d},nB:function(){return c},vy:function(){return f}});n(18111),n(22489),n(7588);var r=n(12235),o=n(20017),a=n(24232),l=n(64340),i=n(86894);const s="utils/dom/style",u=(e="")=>e.split(" ").filter(e=>!!e.trim()),c=(e,t)=>{if(!e||!t)return!1;if(t.includes(" "))throw new Error("className should not contain space.");return e.classList.contains(t)},d=(e,t)=>{e&&t.trim()&&e.classList.add(...u(t))},f=(e,t)=>{e&&t.trim()&&e.classList.remove(...u(t))},p=(e,t)=>{var n;if(!o.oc||!e||!t)return"";let r=(0,a.PT)(t);"float"===r&&(r="cssFloat");try{const t=e.style[r];if(t)return t;const o=null==(n=document.defaultView)?void 0:n.getComputedStyle(e,"");return o?o[r]:""}catch(l){return e.style[r]}},v=(e,t,n)=>{if(e&&t)if((0,a.Gv)(t))(0,l.Mc)(t).forEach(([t,n])=>v(e,t,n));else{const r=(0,a.PT)(t);e.style[r]=n}};function h(e,t="px"){return e||0===e?(0,r.Et)(e)||(0,r.Hp)(e)?`${e}${t}`:(0,a.Kg)(e)?e:void(0,i.U)(s,"binding value must be a string or number"):""}},94373:function(e,t,n){"use strict";n.d(t,{A:function(){return mn}});var r={};n.r(r),n.d(r,{hasBrowserEnv:function(){return De},hasStandardBrowserEnv:function(){return Fe},hasStandardBrowserWebWorkerEnv:function(){return Be},navigator:function(){return Pe},origin:function(){return ze}});n(44114),n(18111),n(7588),n(79577),n(41549),n(49797),n(49631),n(35623),n(59848);function o(e,t){return function(){return e.apply(t,arguments)}}const{toString:a}=Object.prototype,{getPrototypeOf:l}=Object,{iterator:i,toStringTag:s}=Symbol,u=(e=>t=>{const n=a.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),c=e=>(e=e.toLowerCase(),t=>u(t)===e),d=e=>t=>typeof t===e,{isArray:f}=Array,p=d("undefined");function v(e){return null!==e&&!p(e)&&null!==e.constructor&&!p(e.constructor)&&b(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const h=c("ArrayBuffer");function m(e){let t;return t="undefined"!==typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&h(e.buffer),t}const g=d("string"),b=d("function"),y=d("number"),w=e=>null!==e&&"object"===typeof e,R=e=>!0===e||!1===e,C=e=>{if("object"!==u(e))return!1;const t=l(e);return(null===t||t===Object.prototype||null===Object.getPrototypeOf(t))&&!(s in e)&&!(i in e)},x=e=>{if(!w(e)||v(e))return!1;try{return 0===Object.keys(e).length&&Object.getPrototypeOf(e)===Object.prototype}catch(t){return!1}},k=c("Date"),E=c("File"),_=c("Blob"),S=c("FileList"),M=e=>w(e)&&b(e.pipe),L=e=>{let t;return e&&("function"===typeof FormData&&e instanceof FormData||b(e.append)&&("formdata"===(t=u(e))||"object"===t&&b(e.toString)&&"[object FormData]"===e.toString()))},A=c("URLSearchParams"),[O,T,I,N]=["ReadableStream","Request","Response","Headers"].map(c),W=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function D(e,t,{allOwnKeys:n=!1}={}){if(null===e||"undefined"===typeof e)return;let r,o;if("object"!==typeof e&&(e=[e]),f(e))for(r=0,o=e.length;r0)if(r=n[o],t===r.toLowerCase())return r;return null}const F=(()=>"undefined"!==typeof globalThis?globalThis:"undefined"!==typeof self?self:"undefined"!==typeof window?window:n.g)(),B=e=>!p(e)&&e!==F;function z(){const{caseless:e,skipUndefined:t}=B(this)&&this||{},n={},r=(r,o)=>{if("__proto__"===o||"constructor"===o||"prototype"===o)return;const a=e&&P(n,o)||o;C(n[a])&&C(r)?n[a]=z(n[a],r):C(r)?n[a]=z({},r):f(r)?n[a]=r.slice():t&&p(r)||(n[a]=r)};for(let o=0,a=arguments.length;o(D(t,(t,r)=>{n&&b(t)?Object.defineProperty(e,r,{value:o(t,n),writable:!0,enumerable:!0,configurable:!0}):Object.defineProperty(e,r,{value:t,writable:!0,enumerable:!0,configurable:!0})},{allOwnKeys:r}),e),V=e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),j=(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),Object.defineProperty(e.prototype,"constructor",{value:e,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},K=(e,t,n,r)=>{let o,a,i;const s={};if(t=t||{},null==e)return t;do{o=Object.getOwnPropertyNames(e),a=o.length;while(a-- >0)i=o[a],r&&!r(i,e,t)||s[i]||(t[i]=e[i],s[i]=!0);e=!1!==n&&l(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},H=(e,t,n)=>{e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return-1!==r&&r===n},X=e=>{if(!e)return null;if(f(e))return e;let t=e.length;if(!y(t))return null;const n=new Array(t);while(t-- >0)n[t]=e[t];return n},U=(e=>t=>e&&t instanceof e)("undefined"!==typeof Uint8Array&&l(Uint8Array)),G=(e,t)=>{const n=e&&e[i],r=n.call(e);let o;while((o=r.next())&&!o.done){const n=o.value;t.call(e,n[0],n[1])}},q=(e,t)=>{let n;const r=[];while(null!==(n=e.exec(t)))r.push(n);return r},Y=c("HTMLFormElement"),Q=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(e,t,n){return t.toUpperCase()+n}),Z=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),J=c("RegExp"),ee=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};D(n,(n,o)=>{let a;!1!==(a=t(n,o,e))&&(r[o]=a||n)}),Object.defineProperties(e,r)},te=e=>{ee(e,(t,n)=>{if(b(e)&&-1!==["arguments","caller","callee"].indexOf(n))return!1;const r=e[n];b(r)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")}))})},ne=(e,t)=>{const n={},r=e=>{e.forEach(e=>{n[e]=!0})};return f(e)?r(e):r(String(e).split(t)),n},re=()=>{},oe=(e,t)=>null!=e&&Number.isFinite(e=+e)?e:t;function ae(e){return!!(e&&b(e.append)&&"FormData"===e[s]&&e[i])}const le=e=>{const t=new Array(10),n=(e,r)=>{if(w(e)){if(t.indexOf(e)>=0)return;if(v(e))return e;if(!("toJSON"in e)){t[r]=e;const o=f(e)?[]:{};return D(e,(e,t)=>{const a=n(e,r+1);!p(a)&&(o[t]=a)}),t[r]=void 0,o}}return e};return n(e,0)},ie=c("AsyncFunction"),se=e=>e&&(w(e)||b(e))&&b(e.then)&&b(e.catch),ue=((e,t)=>e?setImmediate:t?((e,t)=>(F.addEventListener("message",({source:n,data:r})=>{n===F&&r===e&&t.length&&t.shift()()},!1),n=>{t.push(n),F.postMessage(e,"*")}))(`axios@${Math.random()}`,[]):e=>setTimeout(e))("function"===typeof setImmediate,b(F.postMessage)),ce="undefined"!==typeof queueMicrotask?queueMicrotask.bind(F):"undefined"!==typeof process&&process.nextTick||ue,de=e=>null!=e&&b(e[i]);var fe={isArray:f,isArrayBuffer:h,isBuffer:v,isFormData:L,isArrayBufferView:m,isString:g,isNumber:y,isBoolean:R,isObject:w,isPlainObject:C,isEmptyObject:x,isReadableStream:O,isRequest:T,isResponse:I,isHeaders:N,isUndefined:p,isDate:k,isFile:E,isBlob:_,isRegExp:J,isFunction:b,isStream:M,isURLSearchParams:A,isTypedArray:U,isFileList:S,forEach:D,merge:z,extend:$,trim:W,stripBOM:V,inherits:j,toFlatObject:K,kindOf:u,kindOfTest:c,endsWith:H,toArray:X,forEachEntry:G,matchAll:q,isHTMLForm:Y,hasOwnProperty:Z,hasOwnProp:Z,reduceDescriptors:ee,freezeMethods:te,toObjectSet:ne,toCamelCase:Q,noop:re,toFiniteNumber:oe,findKey:P,global:F,isContextDefined:B,isSpecCompliantForm:ae,toJSONObject:le,isAsyncFn:ie,isThenable:se,setImmediate:ue,asap:ce,isIterable:de};n(61701),n(13579),n(61806);class pe extends Error{static from(e,t,n,r,o,a){const l=new pe(e.message,t||e.code,n,r,o);return l.cause=e,l.name=e.name,a&&Object.assign(l,a),l}constructor(e,t,n,r,o){super(e),this.name="AxiosError",this.isAxiosError=!0,t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),o&&(this.response=o,this.status=o.status)}toJSON(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:fe.toJSONObject(this.config),code:this.code,status:this.status}}}pe.ERR_BAD_OPTION_VALUE="ERR_BAD_OPTION_VALUE",pe.ERR_BAD_OPTION="ERR_BAD_OPTION",pe.ECONNABORTED="ECONNABORTED",pe.ETIMEDOUT="ETIMEDOUT",pe.ERR_NETWORK="ERR_NETWORK",pe.ERR_FR_TOO_MANY_REDIRECTS="ERR_FR_TOO_MANY_REDIRECTS",pe.ERR_DEPRECATED="ERR_DEPRECATED",pe.ERR_BAD_RESPONSE="ERR_BAD_RESPONSE",pe.ERR_BAD_REQUEST="ERR_BAD_REQUEST",pe.ERR_CANCELED="ERR_CANCELED",pe.ERR_NOT_SUPPORT="ERR_NOT_SUPPORT",pe.ERR_INVALID_URL="ERR_INVALID_URL";var ve=pe,he=null;function me(e){return fe.isPlainObject(e)||fe.isArray(e)}function ge(e){return fe.endsWith(e,"[]")?e.slice(0,-2):e}function be(e,t,n){return e?e.concat(t).map(function(e,t){return e=ge(e),!n&&t?"["+e+"]":e}).join(n?".":""):t}function ye(e){return fe.isArray(e)&&!e.some(me)}const we=fe.toFlatObject(fe,{},null,function(e){return/^is[A-Z]/.test(e)});function Re(e,t,n){if(!fe.isObject(e))throw new TypeError("target must be an object");t=t||new(he||FormData),n=fe.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(e,t){return!fe.isUndefined(t[e])});const r=n.metaTokens,o=n.visitor||c,a=n.dots,l=n.indexes,i=n.Blob||"undefined"!==typeof Blob&&Blob,s=i&&fe.isSpecCompliantForm(t);if(!fe.isFunction(o))throw new TypeError("visitor must be a function");function u(e){if(null===e)return"";if(fe.isDate(e))return e.toISOString();if(fe.isBoolean(e))return e.toString();if(!s&&fe.isBlob(e))throw new ve("Blob is not supported. Use a Buffer instead.");return fe.isArrayBuffer(e)||fe.isTypedArray(e)?s&&"function"===typeof Blob?new Blob([e]):Buffer.from(e):e}function c(e,n,o){let i=e;if(e&&!o&&"object"===typeof e)if(fe.endsWith(n,"{}"))n=r?n:n.slice(0,-2),e=JSON.stringify(e);else if(fe.isArray(e)&&ye(e)||(fe.isFileList(e)||fe.endsWith(n,"[]"))&&(i=fe.toArray(e)))return n=ge(n),i.forEach(function(e,r){!fe.isUndefined(e)&&null!==e&&t.append(!0===l?be([n],r,a):null===l?n:n+"[]",u(e))}),!1;return!!me(e)||(t.append(be(o,n,a),u(e)),!1)}const d=[],f=Object.assign(we,{defaultVisitor:c,convertValue:u,isVisitable:me});function p(e,n){if(!fe.isUndefined(e)){if(-1!==d.indexOf(e))throw Error("Circular reference detected in "+n.join("."));d.push(e),fe.forEach(e,function(e,r){const a=!(fe.isUndefined(e)||null===e)&&o.call(t,e,fe.isString(r)?r.trim():r,n,f);!0===a&&p(e,n?n.concat(r):[r])}),d.pop()}}if(!fe.isObject(e))throw new TypeError("data must be an object");return p(e),t}var Ce=Re;function xe(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(e){return t[e]})}function ke(e,t){this._pairs=[],e&&Ce(e,this,t)}const Ee=ke.prototype;Ee.append=function(e,t){this._pairs.push([e,t])},Ee.toString=function(e){const t=e?function(t){return e.call(this,t,xe)}:xe;return this._pairs.map(function(e){return t(e[0])+"="+t(e[1])},"").join("&")};var _e=ke;function Se(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function Me(e,t,n){if(!t)return e;const r=n&&n.encode||Se,o=fe.isFunction(n)?{serialize:n}:n,a=o&&o.serialize;let l;if(l=a?a(t,o):fe.isURLSearchParams(t)?t.toString():new _e(t,o).toString(r),l){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+l}return e}class Le{constructor(){this.handlers=[]}use(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){fe.forEach(this.handlers,function(t){null!==t&&e(t)})}}var Ae=Le,Oe={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1,legacyInterceptorReqResOrdering:!0},Te="undefined"!==typeof URLSearchParams?URLSearchParams:_e,Ie="undefined"!==typeof FormData?FormData:null,Ne="undefined"!==typeof Blob?Blob:null,We={isBrowser:!0,classes:{URLSearchParams:Te,FormData:Ie,Blob:Ne},protocols:["http","https","file","blob","url","data"]};const De="undefined"!==typeof window&&"undefined"!==typeof document,Pe="object"===typeof navigator&&navigator||void 0,Fe=De&&(!Pe||["ReactNative","NativeScript","NS"].indexOf(Pe.product)<0),Be=(()=>"undefined"!==typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"===typeof self.importScripts)(),ze=De&&window.location.href||"http://localhost";var $e={...r,...We};function Ve(e,t){return Ce(e,new $e.classes.URLSearchParams,{visitor:function(e,t,n,r){return $e.isNode&&fe.isBuffer(e)?(this.append(t,e.toString("base64")),!1):r.defaultVisitor.apply(this,arguments)},...t})}function je(e){return fe.matchAll(/\w+|\[(\w*)]/g,e).map(e=>"[]"===e[0]?"":e[1]||e[0])}function Ke(e){const t={},n=Object.keys(e);let r;const o=n.length;let a;for(r=0;r=e.length;if(a=!a&&fe.isArray(r)?r.length:a,i)return fe.hasOwnProp(r,a)?r[a]=[r[a],n]:r[a]=n,!l;r[a]&&fe.isObject(r[a])||(r[a]=[]);const s=t(e,n,r[a],o);return s&&fe.isArray(r[a])&&(r[a]=Ke(r[a])),!l}if(fe.isFormData(e)&&fe.isFunction(e.entries)){const n={};return fe.forEachEntry(e,(e,r)=>{t(je(e),r,n,0)}),n}return null}var Xe=He;function Ue(e,t,n){if(fe.isString(e))try{return(t||JSON.parse)(e),fe.trim(e)}catch(r){if("SyntaxError"!==r.name)throw r}return(n||JSON.stringify)(e)}const Ge={transitional:Oe,adapter:["xhr","http","fetch"],transformRequest:[function(e,t){const n=t.getContentType()||"",r=n.indexOf("application/json")>-1,o=fe.isObject(e);o&&fe.isHTMLForm(e)&&(e=new FormData(e));const a=fe.isFormData(e);if(a)return r?JSON.stringify(Xe(e)):e;if(fe.isArrayBuffer(e)||fe.isBuffer(e)||fe.isStream(e)||fe.isFile(e)||fe.isBlob(e)||fe.isReadableStream(e))return e;if(fe.isArrayBufferView(e))return e.buffer;if(fe.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let l;if(o){if(n.indexOf("application/x-www-form-urlencoded")>-1)return Ve(e,this.formSerializer).toString();if((l=fe.isFileList(e))||n.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return Ce(l?{"files[]":e}:e,t&&new t,this.formSerializer)}}return o||r?(t.setContentType("application/json",!1),Ue(e)):e}],transformResponse:[function(e){const t=this.transitional||Ge.transitional,n=t&&t.forcedJSONParsing,r="json"===this.responseType;if(fe.isResponse(e)||fe.isReadableStream(e))return e;if(e&&fe.isString(e)&&(n&&!this.responseType||r)){const n=t&&t.silentJSONParsing,a=!n&&r;try{return JSON.parse(e,this.parseReviver)}catch(o){if(a){if("SyntaxError"===o.name)throw ve.from(o,ve.ERR_BAD_RESPONSE,this,null,this.response);throw o}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:$e.classes.FormData,Blob:$e.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};fe.forEach(["delete","get","head","post","put","patch"],e=>{Ge.headers[e]={}});var qe=Ge;const Ye=fe.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]);var Qe=e=>{const t={};let n,r,o;return e&&e.split("\n").forEach(function(e){o=e.indexOf(":"),n=e.substring(0,o).trim().toLowerCase(),r=e.substring(o+1).trim(),!n||t[n]&&Ye[n]||("set-cookie"===n?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)}),t};const Ze=Symbol("internals");function Je(e){return e&&String(e).trim().toLowerCase()}function et(e){return!1===e||null==e?e:fe.isArray(e)?e.map(et):String(e)}function tt(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;while(r=n.exec(e))t[r[1]]=r[2];return t}const nt=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function rt(e,t,n,r,o){return fe.isFunction(r)?r.call(this,t,n):(o&&(t=n),fe.isString(t)?fe.isString(r)?-1!==t.indexOf(r):fe.isRegExp(r)?r.test(t):void 0:void 0)}function ot(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,t,n)=>t.toUpperCase()+n)}function at(e,t){const n=fe.toCamelCase(" "+t);["get","set","has"].forEach(r=>{Object.defineProperty(e,r+n,{value:function(e,n,o){return this[r].call(this,t,e,n,o)},configurable:!0})})}class lt{constructor(e){e&&this.set(e)}set(e,t,n){const r=this;function o(e,t,n){const o=Je(t);if(!o)throw new Error("header name must be a non-empty string");const a=fe.findKey(r,o);(!a||void 0===r[a]||!0===n||void 0===n&&!1!==r[a])&&(r[a||t]=et(e))}const a=(e,t)=>fe.forEach(e,(e,n)=>o(e,n,t));if(fe.isPlainObject(e)||e instanceof this.constructor)a(e,t);else if(fe.isString(e)&&(e=e.trim())&&!nt(e))a(Qe(e),t);else if(fe.isObject(e)&&fe.isIterable(e)){let n,r,o={};for(const t of e){if(!fe.isArray(t))throw TypeError("Object iterator must return a key-value pair");o[r=t[0]]=(n=o[r])?fe.isArray(n)?[...n,t[1]]:[n,t[1]]:t[1]}a(o,t)}else null!=e&&o(t,e,n);return this}get(e,t){if(e=Je(e),e){const n=fe.findKey(this,e);if(n){const e=this[n];if(!t)return e;if(!0===t)return tt(e);if(fe.isFunction(t))return t.call(this,e,n);if(fe.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=Je(e),e){const n=fe.findKey(this,e);return!(!n||void 0===this[n]||t&&!rt(this,this[n],n,t))}return!1}delete(e,t){const n=this;let r=!1;function o(e){if(e=Je(e),e){const o=fe.findKey(n,e);!o||t&&!rt(n,n[o],o,t)||(delete n[o],r=!0)}}return fe.isArray(e)?e.forEach(o):o(e),r}clear(e){const t=Object.keys(this);let n=t.length,r=!1;while(n--){const o=t[n];e&&!rt(this,this[o],o,e,!0)||(delete this[o],r=!0)}return r}normalize(e){const t=this,n={};return fe.forEach(this,(r,o)=>{const a=fe.findKey(n,o);if(a)return t[a]=et(r),void delete t[o];const l=e?ot(o):String(o).trim();l!==o&&delete t[o],t[l]=et(r),n[l]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return fe.forEach(this,(n,r)=>{null!=n&&!1!==n&&(t[r]=e&&fe.isArray(n)?n.join(", "):n)}),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,t])=>e+": "+t).join("\n")}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const n=new this(e);return t.forEach(e=>n.set(e)),n}static accessor(e){const t=this[Ze]=this[Ze]={accessors:{}},n=t.accessors,r=this.prototype;function o(e){const t=Je(e);n[t]||(at(r,e),n[t]=!0)}return fe.isArray(e)?e.forEach(o):o(e),this}}lt.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),fe.reduceDescriptors(lt.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[n]=e}}}),fe.freezeMethods(lt);var it=lt;function st(e,t){const n=this||qe,r=t||n,o=it.from(r.headers);let a=r.data;return fe.forEach(e,function(e){a=e.call(n,a,o.normalize(),t?t.status:void 0)}),o.normalize(),a}function ut(e){return!(!e||!e.__CANCEL__)}class ct extends ve{constructor(e,t,n){super(null==e?"canceled":e,ve.ERR_CANCELED,t,n),this.name="CanceledError",this.__CANCEL__=!0}}var dt=ct;function ft(e,t,n){const r=n.config.validateStatus;n.status&&r&&!r(n.status)?t(new ve("Request failed with status code "+n.status,[ve.ERR_BAD_REQUEST,ve.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n)):e(n)}function pt(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function vt(e,t){e=e||10;const n=new Array(e),r=new Array(e);let o,a=0,l=0;return t=void 0!==t?t:1e3,function(i){const s=Date.now(),u=r[l];o||(o=s),n[a]=i,r[a]=s;let c=l,d=0;while(c!==a)d+=n[c++],c%=e;if(a=(a+1)%e,a===l&&(l=(l+1)%e),s-o{o=a,n=null,r&&(clearTimeout(r),r=null),e(...t)},i=(...e)=>{const t=Date.now(),i=t-o;i>=a?l(e,t):(n=e,r||(r=setTimeout(()=>{r=null,l(n)},a-i)))},s=()=>n&&l(n);return[i,s]}var gt=mt;const bt=(e,t,n=3)=>{let r=0;const o=ht(50,250);return gt(n=>{const a=n.loaded,l=n.lengthComputable?n.total:void 0,i=a-r,s=o(i),u=a<=l;r=a;const c={loaded:a,total:l,progress:l?a/l:void 0,bytes:i,rate:s||void 0,estimated:s&&l&&u?(l-a)/s:void 0,event:n,lengthComputable:null!=l,[t?"download":"upload"]:!0};e(c)},n)},yt=(e,t)=>{const n=null!=e;return[r=>t[0]({lengthComputable:n,total:e,loaded:r}),t[1]]},wt=e=>(...t)=>fe.asap(()=>e(...t));n(64979);var Rt=$e.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,$e.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL($e.origin),$e.navigator&&/(msie|trident)/i.test($e.navigator.userAgent)):()=>!0,Ct=$e.hasStandardBrowserEnv?{write(e,t,n,r,o,a,l){if("undefined"===typeof document)return;const i=[`${e}=${encodeURIComponent(t)}`];fe.isNumber(n)&&i.push(`expires=${new Date(n).toUTCString()}`),fe.isString(r)&&i.push(`path=${r}`),fe.isString(o)&&i.push(`domain=${o}`),!0===a&&i.push("secure"),fe.isString(l)&&i.push(`SameSite=${l}`),document.cookie=i.join("; ")},read(e){if("undefined"===typeof document)return null;const t=document.cookie.match(new RegExp("(?:^|; )"+e+"=([^;]*)"));return t?decodeURIComponent(t[1]):null},remove(e){this.write(e,"",Date.now()-864e5,"/")}}:{write(){},read(){return null},remove(){}};function xt(e){return"string"===typeof e&&/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function kt(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function Et(e,t,n){let r=!xt(t);return e&&(r||0==n)?kt(e,t):t}const _t=e=>e instanceof it?{...e}:e;function St(e,t){t=t||{};const n={};function r(e,t,n,r){return fe.isPlainObject(e)&&fe.isPlainObject(t)?fe.merge.call({caseless:r},e,t):fe.isPlainObject(t)?fe.merge({},t):fe.isArray(t)?t.slice():t}function o(e,t,n,o){return fe.isUndefined(t)?fe.isUndefined(e)?void 0:r(void 0,e,n,o):r(e,t,n,o)}function a(e,t){if(!fe.isUndefined(t))return r(void 0,t)}function l(e,t){return fe.isUndefined(t)?fe.isUndefined(e)?void 0:r(void 0,e):r(void 0,t)}function i(n,o,a){return a in t?r(n,o):a in e?r(void 0,n):void 0}const s={url:a,method:a,data:a,baseURL:l,transformRequest:l,transformResponse:l,paramsSerializer:l,timeout:l,timeoutMessage:l,withCredentials:l,withXSRFToken:l,adapter:l,responseType:l,xsrfCookieName:l,xsrfHeaderName:l,onUploadProgress:l,onDownloadProgress:l,decompress:l,maxContentLength:l,maxBodyLength:l,beforeRedirect:l,transport:l,httpAgent:l,httpsAgent:l,cancelToken:l,socketPath:l,responseEncoding:l,validateStatus:i,headers:(e,t,n)=>o(_t(e),_t(t),n,!0)};return fe.forEach(Object.keys({...e,...t}),function(r){if("__proto__"===r||"constructor"===r||"prototype"===r)return;const a=fe.hasOwnProp(s,r)?s[r]:o,l=a(e[r],t[r],r);fe.isUndefined(l)&&a!==i||(n[r]=l)}),n}var Mt=e=>{const t=St({},e);let{data:n,withXSRFToken:r,xsrfHeaderName:o,xsrfCookieName:a,headers:l,auth:i}=t;if(t.headers=l=it.from(l),t.url=Me(Et(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),i&&l.set("Authorization","Basic "+btoa((i.username||"")+":"+(i.password?unescape(encodeURIComponent(i.password)):""))),fe.isFormData(n))if($e.hasStandardBrowserEnv||$e.hasStandardBrowserWebWorkerEnv)l.setContentType(void 0);else if(fe.isFunction(n.getHeaders)){const e=n.getHeaders(),t=["content-type","content-length"];Object.entries(e).forEach(([e,n])=>{t.includes(e.toLowerCase())&&l.set(e,n)})}if($e.hasStandardBrowserEnv&&(r&&fe.isFunction(r)&&(r=r(t)),r||!1!==r&&Rt(t.url))){const e=o&&a&&Ct.read(a);e&&l.set(o,e)}return t};const Lt="undefined"!==typeof XMLHttpRequest;var At=Lt&&function(e){return new Promise(function(t,n){const r=Mt(e);let o=r.data;const a=it.from(r.headers).normalize();let l,i,s,u,c,{responseType:d,onUploadProgress:f,onDownloadProgress:p}=r;function v(){u&&u(),c&&c(),r.cancelToken&&r.cancelToken.unsubscribe(l),r.signal&&r.signal.removeEventListener("abort",l)}let h=new XMLHttpRequest;function m(){if(!h)return;const r=it.from("getAllResponseHeaders"in h&&h.getAllResponseHeaders()),o=d&&"text"!==d&&"json"!==d?h.response:h.responseText,a={data:o,status:h.status,statusText:h.statusText,headers:r,config:e,request:h};ft(function(e){t(e),v()},function(e){n(e),v()},a),h=null}h.open(r.method.toUpperCase(),r.url,!0),h.timeout=r.timeout,"onloadend"in h?h.onloadend=m:h.onreadystatechange=function(){h&&4===h.readyState&&(0!==h.status||h.responseURL&&0===h.responseURL.indexOf("file:"))&&setTimeout(m)},h.onabort=function(){h&&(n(new ve("Request aborted",ve.ECONNABORTED,e,h)),h=null)},h.onerror=function(t){const r=t&&t.message?t.message:"Network Error",o=new ve(r,ve.ERR_NETWORK,e,h);o.event=t||null,n(o),h=null},h.ontimeout=function(){let t=r.timeout?"timeout of "+r.timeout+"ms exceeded":"timeout exceeded";const o=r.transitional||Oe;r.timeoutErrorMessage&&(t=r.timeoutErrorMessage),n(new ve(t,o.clarifyTimeoutError?ve.ETIMEDOUT:ve.ECONNABORTED,e,h)),h=null},void 0===o&&a.setContentType(null),"setRequestHeader"in h&&fe.forEach(a.toJSON(),function(e,t){h.setRequestHeader(t,e)}),fe.isUndefined(r.withCredentials)||(h.withCredentials=!!r.withCredentials),d&&"json"!==d&&(h.responseType=r.responseType),p&&([s,c]=bt(p,!0),h.addEventListener("progress",s)),f&&h.upload&&([i,u]=bt(f),h.upload.addEventListener("progress",i),h.upload.addEventListener("loadend",u)),(r.cancelToken||r.signal)&&(l=t=>{h&&(n(!t||t.type?new dt(null,e,h):t),h.abort(),h=null)},r.cancelToken&&r.cancelToken.subscribe(l),r.signal&&(r.signal.aborted?l():r.signal.addEventListener("abort",l)));const g=pt(r.url);g&&-1===$e.protocols.indexOf(g)?n(new ve("Unsupported protocol "+g+":",ve.ERR_BAD_REQUEST,e)):h.send(o||null)})};n(22489);const Ot=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let n,r=new AbortController;const o=function(e){if(!n){n=!0,l();const t=e instanceof Error?e:this.reason;r.abort(t instanceof ve?t:new dt(t instanceof Error?t.message:t))}};let a=t&&setTimeout(()=>{a=null,o(new ve(`timeout of ${t}ms exceeded`,ve.ETIMEDOUT))},t);const l=()=>{e&&(a&&clearTimeout(a),a=null,e.forEach(e=>{e.unsubscribe?e.unsubscribe(o):e.removeEventListener("abort",o)}),e=null)};e.forEach(e=>e.addEventListener("abort",o));const{signal:i}=r;return i.unsubscribe=()=>fe.asap(l),i}};var Tt=Ot;const It=function*(e,t){let n=e.byteLength;if(!t||n{const o=Nt(e,t);let a,l=0,i=e=>{a||(a=!0,r&&r(e))};return new ReadableStream({async pull(e){try{const{done:t,value:r}=await o.next();if(t)return i(),void e.close();let a=r.byteLength;if(n){let e=l+=a;n(e)}e.enqueue(new Uint8Array(r))}catch(t){throw i(t),t}},cancel(e){return i(e),o.return()}},{highWaterMark:2})},Pt=65536,{isFunction:Ft}=fe,Bt=(({Request:e,Response:t})=>({Request:e,Response:t}))(fe.global),{ReadableStream:zt,TextEncoder:$t}=fe.global,Vt=(e,...t)=>{try{return!!e(...t)}catch(n){return!1}},jt=e=>{e=fe.merge.call({skipUndefined:!0},Bt,e);const{fetch:t,Request:n,Response:r}=e,o=t?Ft(t):"function"===typeof fetch,a=Ft(n),l=Ft(r);if(!o)return!1;const i=o&&Ft(zt),s=o&&("function"===typeof $t?(e=>t=>e.encode(t))(new $t):async e=>new Uint8Array(await new n(e).arrayBuffer())),u=a&&i&&Vt(()=>{let e=!1;const t=new n($e.origin,{body:new zt,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t}),c=l&&i&&Vt(()=>fe.isReadableStream(new r("").body)),d={stream:c&&(e=>e.body)};o&&(()=>{["text","arrayBuffer","blob","formData","stream"].forEach(e=>{!d[e]&&(d[e]=(t,n)=>{let r=t&&t[e];if(r)return r.call(t);throw new ve(`Response type '${e}' is not supported`,ve.ERR_NOT_SUPPORT,n)})})})();const f=async e=>{if(null==e)return 0;if(fe.isBlob(e))return e.size;if(fe.isSpecCompliantForm(e)){const t=new n($e.origin,{method:"POST",body:e});return(await t.arrayBuffer()).byteLength}return fe.isArrayBufferView(e)||fe.isArrayBuffer(e)?e.byteLength:(fe.isURLSearchParams(e)&&(e+=""),fe.isString(e)?(await s(e)).byteLength:void 0)},p=async(e,t)=>{const n=fe.toFiniteNumber(e.getContentLength());return null==n?f(t):n};return async e=>{let{url:o,method:l,data:i,signal:s,cancelToken:f,timeout:v,onDownloadProgress:h,onUploadProgress:m,responseType:g,headers:b,withCredentials:y="same-origin",fetchOptions:w}=Mt(e),R=t||fetch;g=g?(g+"").toLowerCase():"text";let C=Tt([s,f&&f.toAbortSignal()],v),x=null;const k=C&&C.unsubscribe&&(()=>{C.unsubscribe()});let E;try{if(m&&u&&"get"!==l&&"head"!==l&&0!==(E=await p(b,i))){let e,t=new n(o,{method:"POST",body:i,duplex:"half"});if(fe.isFormData(i)&&(e=t.headers.get("content-type"))&&b.setContentType(e),t.body){const[e,n]=yt(E,bt(wt(m)));i=Dt(t.body,Pt,e,n)}}fe.isString(y)||(y=y?"include":"omit");const t=a&&"credentials"in n.prototype,s={...w,signal:C,method:l.toUpperCase(),headers:b.normalize().toJSON(),body:i,duplex:"half",credentials:t?y:void 0};x=a&&new n(o,s);let f=await(a?R(x,w):R(o,s));const v=c&&("stream"===g||"response"===g);if(c&&(h||v&&k)){const e={};["status","statusText","headers"].forEach(t=>{e[t]=f[t]});const t=fe.toFiniteNumber(f.headers.get("content-length")),[n,o]=h&&yt(t,bt(wt(h),!0))||[];f=new r(Dt(f.body,Pt,n,()=>{o&&o(),k&&k()}),e)}g=g||"text";let _=await d[fe.findKey(d,g)||"text"](f,e);return!v&&k&&k(),await new Promise((t,n)=>{ft(t,n,{data:_,headers:it.from(f.headers),status:f.status,statusText:f.statusText,config:e,request:x})})}catch(_){if(k&&k(),_&&"TypeError"===_.name&&/Load failed|fetch/i.test(_.message))throw Object.assign(new ve("Network Error",ve.ERR_NETWORK,e,x,_&&_.response),{cause:_.cause||_});throw ve.from(_,_&&_.code,e,x,_&&_.response)}}},Kt=new Map,Ht=e=>{let t=e&&e.env||{};const{fetch:n,Request:r,Response:o}=t,a=[r,o,n];let l,i,s=a.length,u=s,c=Kt;while(u--)l=a[u],i=c.get(l),void 0===i&&c.set(l,i=u?new Map:jt(t)),c=i;return i};Ht();const Xt={http:he,xhr:At,fetch:{get:Ht}};fe.forEach(Xt,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(n){}Object.defineProperty(e,"adapterName",{value:t})}});const Ut=e=>`- ${e}`,Gt=e=>fe.isFunction(e)||null===e||!1===e;function qt(e,t){e=fe.isArray(e)?e:[e];const{length:n}=e;let r,o;const a={};for(let l=0;l`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build"));let t=n?e.length>1?"since :\n"+e.map(Ut).join("\n"):" "+Ut(e[0]):"as no adapter specified";throw new ve("There is no suitable adapter to dispatch the request "+t,"ERR_NOT_SUPPORT")}return o}var Yt={getAdapter:qt,adapters:Xt};function Qt(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new dt(null,e)}function Zt(e){Qt(e),e.headers=it.from(e.headers),e.data=st.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1);const t=Yt.getAdapter(e.adapter||qe.adapter,e);return t(e).then(function(t){return Qt(e),t.data=st.call(e,e.transformResponse,t),t.headers=it.from(t.headers),t},function(t){return ut(t)||(Qt(e),t&&t.response&&(t.response.data=st.call(e,e.transformResponse,t.response),t.response.headers=it.from(t.response.headers))),Promise.reject(t)})}const Jt="1.13.5",en={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{en[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}});const tn={};function nn(e,t,n){if("object"!==typeof e)throw new ve("options must be an object",ve.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let o=r.length;while(o-- >0){const a=r[o],l=t[a];if(l){const t=e[a],n=void 0===t||l(t,a,e);if(!0!==n)throw new ve("option "+a+" must be "+n,ve.ERR_BAD_OPTION_VALUE);continue}if(!0!==n)throw new ve("Unknown option "+a,ve.ERR_BAD_OPTION)}}en.transitional=function(e,t,n){function r(e,t){return"[Axios v"+Jt+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}return(n,o,a)=>{if(!1===e)throw new ve(r(o," has been removed"+(t?" in "+t:"")),ve.ERR_DEPRECATED);return t&&!tn[o]&&(tn[o]=!0,console.warn(r(o," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,o,a)}},en.spelling=function(e){return(t,n)=>(console.warn(`${n} is likely a misspelling of ${e}`),!0)};var rn={assertOptions:nn,validators:en};const on=rn.validators;class an{constructor(e){this.defaults=e||{},this.interceptors={request:new Ae,response:new Ae}}async request(e,t){try{return await this._request(e,t)}catch(n){if(n instanceof Error){let e={};Error.captureStackTrace?Error.captureStackTrace(e):e=new Error;const t=e.stack?e.stack.replace(/^.+\n/,""):"";try{n.stack?t&&!String(n.stack).endsWith(t.replace(/^.+\n.+\n/,""))&&(n.stack+="\n"+t):n.stack=t}catch(r){}}throw n}}_request(e,t){"string"===typeof e?(t=t||{},t.url=e):t=e||{},t=St(this.defaults,t);const{transitional:n,paramsSerializer:r,headers:o}=t;void 0!==n&&rn.assertOptions(n,{silentJSONParsing:on.transitional(on.boolean),forcedJSONParsing:on.transitional(on.boolean),clarifyTimeoutError:on.transitional(on.boolean),legacyInterceptorReqResOrdering:on.transitional(on.boolean)},!1),null!=r&&(fe.isFunction(r)?t.paramsSerializer={serialize:r}:rn.assertOptions(r,{encode:on.function,serialize:on.function},!0)),void 0!==t.allowAbsoluteUrls||(void 0!==this.defaults.allowAbsoluteUrls?t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:t.allowAbsoluteUrls=!0),rn.assertOptions(t,{baseUrl:on.spelling("baseURL"),withXsrfToken:on.spelling("withXSRFToken")},!0),t.method=(t.method||this.defaults.method||"get").toLowerCase();let a=o&&fe.merge(o.common,o[t.method]);o&&fe.forEach(["delete","get","head","post","put","patch","common"],e=>{delete o[e]}),t.headers=it.concat(a,o);const l=[];let i=!0;this.interceptors.request.forEach(function(e){if("function"===typeof e.runWhen&&!1===e.runWhen(t))return;i=i&&e.synchronous;const n=t.transitional||Oe,r=n&&n.legacyInterceptorReqResOrdering;r?l.unshift(e.fulfilled,e.rejected):l.push(e.fulfilled,e.rejected)});const s=[];let u;this.interceptors.response.forEach(function(e){s.push(e.fulfilled,e.rejected)});let c,d=0;if(!i){const e=[Zt.bind(this),void 0];e.unshift(...l),e.push(...s),c=e.length,u=Promise.resolve(t);while(d{if(!n._listeners)return;let t=n._listeners.length;while(t-- >0)n._listeners[t](e);n._listeners=null}),this.promise.then=e=>{let t;const r=new Promise(e=>{n.subscribe(e),t=e}).then(e);return r.cancel=function(){n.unsubscribe(t)},r},e(function(e,r,o){n.reason||(n.reason=new dt(e,r,o),t(n.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}toAbortSignal(){const e=new AbortController,t=t=>{e.abort(t)};return this.subscribe(t),e.signal.unsubscribe=()=>this.unsubscribe(t),e.signal}static source(){let e;const t=new sn(function(t){e=t});return{token:t,cancel:e}}}var un=sn;function cn(e){return function(t){return e.apply(null,t)}}function dn(e){return fe.isObject(e)&&!0===e.isAxiosError}const fn={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(fn).forEach(([e,t])=>{fn[t]=e});var pn=fn;function vn(e){const t=new ln(e),n=o(ln.prototype.request,t);return fe.extend(n,ln.prototype,t,{allOwnKeys:!0}),fe.extend(n,t,null,{allOwnKeys:!0}),n.create=function(t){return vn(St(e,t))},n}const hn=vn(qe);hn.Axios=ln,hn.CanceledError=dt,hn.CancelToken=un,hn.isCancel=ut,hn.VERSION=Jt,hn.toFormData=Ce,hn.AxiosError=ve,hn.Cancel=hn.CanceledError,hn.all=function(e){return Promise.all(e)},hn.spread=cn,hn.isAxiosError=dn,hn.mergeConfig=St,hn.AxiosHeaders=it,hn.formToJSON=e=>Xe(fe.isHTMLForm(e)?new FormData(e):e),hn.getAdapter=Yt.getAdapter,hn.HttpStatusCode=pn,hn.default=hn;var mn=hn},94402:function(e,t,n){"use strict";var r=n(79504),o=Set.prototype;e.exports={Set:Set,add:r(o.add),has:r(o.has),remove:r(o["delete"]),proto:o}},94564:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n="fas",r="house",o=512,a=512,l=[127968,63498,63500,"home","home-alt","home-lg-alt"],i="f015",s="M277.8 8.6c-12.3-11.4-31.3-11.4-43.5 0l-224 208c-9.6 9-12.8 22.9-8 35.1S18.8 272 32 272l16 0 0 176c0 35.3 28.7 64 64 64l288 0c35.3 0 64-28.7 64-64l0-176 16 0c13.2 0 25-8.1 29.8-20.3s1.6-26.2-8-35.1l-224-208zM240 320l32 0c26.5 0 48 21.5 48 48l0 96-128 0 0-96c0-26.5 21.5-48 48-48z";t.definition={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.faHouse=t.definition,t.prefix=n,t.iconName=r,t.width=o,t.height=a,t.ligatures=l,t.unicode=i,t.svgPathData=s,t.aliases=l},94644:function(e,t,n){"use strict";var r,o,a,l=n(77811),i=n(43724),s=n(44576),u=n(94901),c=n(20034),d=n(39297),f=n(36955),p=n(16823),v=n(66699),h=n(36840),m=n(62106),g=n(1625),b=n(42787),y=n(52967),w=n(78227),R=n(33392),C=n(91181),x=C.enforce,k=C.get,E=s.Int8Array,_=E&&E.prototype,S=s.Uint8ClampedArray,M=S&&S.prototype,L=E&&b(E),A=_&&b(_),O=Object.prototype,T=s.TypeError,I=w("toStringTag"),N=R("TYPED_ARRAY_TAG"),W="TypedArrayConstructor",D=l&&!!y&&"Opera"!==f(s.opera),P=!1,F={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},B={BigInt64Array:8,BigUint64Array:8},z=function(e){if(!c(e))return!1;var t=f(e);return"DataView"===t||d(F,t)||d(B,t)},$=function(e){var t=b(e);if(c(t)){var n=k(t);return n&&d(n,W)?n[W]:$(t)}},V=function(e){if(!c(e))return!1;var t=f(e);return d(F,t)||d(B,t)},j=function(e){if(V(e))return e;throw new T("Target is not a typed array")},K=function(e){if(u(e)&&(!y||g(L,e)))return e;throw new T(p(e)+" is not a typed array constructor")},H=function(e,t,n,r){if(i){if(n)for(var o in F){var a=s[o];if(a&&d(a.prototype,e))try{delete a.prototype[e]}catch(l){try{a.prototype[e]=t}catch(u){}}}A[e]&&!n||h(A,e,n?t:D&&_[e]||t,r)}},X=function(e,t,n){var r,o;if(i){if(y){if(n)for(r in F)if(o=s[r],o&&d(o,e))try{delete o[e]}catch(a){}if(L[e]&&!n)return;try{return h(L,e,n?t:D&&L[e]||t)}catch(a){}}for(r in F)o=s[r],!o||o[e]&&!n||h(o,e,t)}};for(r in F)o=s[r],a=o&&o.prototype,a?x(a)[W]=o:D=!1;for(r in B)o=s[r],a=o&&o.prototype,a&&(x(a)[W]=o);if((!D||!u(L)||L===Function.prototype)&&(L=function(){throw new T("Incorrect invocation")},D))for(r in F)s[r]&&y(s[r],L);if((!D||!A||A===O)&&(A=L.prototype,D))for(r in F)s[r]&&y(s[r].prototype,A);if(D&&b(M)!==A&&y(M,A),i&&!d(A,I))for(r in P=!0,m(A,I,{configurable:!0,get:function(){return c(this)?this[N]:void 0}}),F)s[r]&&v(s[r],N,r);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:D,TYPED_ARRAY_TAG:P&&N,aTypedArray:j,aTypedArrayConstructor:K,exportTypedArrayMethod:H,exportTypedArrayStaticMethod:X,getTypedArrayConstructor:$,isView:z,isTypedArray:V,TypedArray:L,TypedArrayPrototype:A}},94901:function(e){"use strict";var t="object"==typeof document&&document.all;e.exports="undefined"==typeof t&&void 0!==t?function(e){return"function"==typeof e||e===t}:function(e){return"function"==typeof e}},94921:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n="fas",r="floppy-disk",o=448,a=512,l=[128190,128426,"save"],i="f0c7",s="M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-242.7c0-17-6.7-33.3-18.7-45.3L352 50.7C340 38.7 323.7 32 306.7 32L64 32zm32 96c0-17.7 14.3-32 32-32l160 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-64zM224 288a64 64 0 1 1 0 128 64 64 0 1 1 0-128z";t.definition={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.faFloppyDisk=t.definition,t.prefix=n,t.iconName=r,t.width=o,t.height=a,t.ligatures=l,t.unicode=i,t.svgPathData=s,t.aliases=l},96139:function(e,t,n){"use strict";n.d(t,{CW:function(){return f},Yn:function(){return i},jO:function(){return c},oh:function(){return d},zv:function(){return s}});n(44114),n(18111),n(7588);var r=n(56768),o=n(24232),a=n(86894);const l="utils/vue/vnode";var i=(e=>(e[e["TEXT"]=1]="TEXT",e[e["CLASS"]=2]="CLASS",e[e["STYLE"]=4]="STYLE",e[e["PROPS"]=8]="PROPS",e[e["FULL_PROPS"]=16]="FULL_PROPS",e[e["HYDRATE_EVENTS"]=32]="HYDRATE_EVENTS",e[e["STABLE_FRAGMENT"]=64]="STABLE_FRAGMENT",e[e["KEYED_FRAGMENT"]=128]="KEYED_FRAGMENT",e[e["UNKEYED_FRAGMENT"]=256]="UNKEYED_FRAGMENT",e[e["NEED_PATCH"]=512]="NEED_PATCH",e[e["DYNAMIC_SLOTS"]=1024]="DYNAMIC_SLOTS",e[e["HOISTED"]=-1]="HOISTED",e[e["BAIL"]=-2]="BAIL",e))(i||{});function s(e){return(0,r.vv)(e)&&e.type===r.FK}function u(e){return(0,r.vv)(e)&&e.type===r.Mw}function c(e){return(0,r.vv)(e)&&!s(e)&&!u(e)}const d=e=>{if(!(0,r.vv)(e))return(0,a.U)(l,"[getNormalizedProps] must be a VNode"),{};const t=e.props||{},n=((0,r.vv)(e.type)?e.type.props:void 0)||{},i={};return Object.keys(n).forEach(e=>{(0,o.$3)(n[e],"default")&&(i[e]=n[e].default)}),Object.keys(t).forEach(e=>{i[(0,o.PT)(e)]=t[e]}),i},f=e=>{const t=(0,o.cy)(e)?e:[e],n=[];return t.forEach(e=>{var t;(0,o.cy)(e)?n.push(...f(e)):(0,r.vv)(e)&&(null==(t=e.component)?void 0:t.subTree)?n.push(e,...f(e.component.subTree)):(0,r.vv)(e)&&(0,o.cy)(e.children)?n.push(...f(e.children)):(0,r.vv)(e)&&2===e.shapeFlag?n.push(...f(e.type())):n.push(e)}),n}},96149:function(e,t,n){"use strict";n.d(t,{$:function(){return d},p:function(){return f}});var r=n(57477),o=n(53845),a=n(20464),l=n(76769),i=n(58501),s=n(92056),u=n(47378),c=n(24232);const d=(0,u.b_)({id:{type:String,default:void 0},size:o.mU,disabled:{type:Boolean,default:void 0},modelValue:{type:(0,u.jq)([String,Number,Object]),default:""},modelModifiers:{type:(0,u.jq)(Object),default:()=>({})},maxlength:{type:[String,Number]},minlength:{type:[String,Number]},type:{type:(0,u.jq)(String),default:"text"},resize:{type:String,values:["none","both","horizontal","vertical"]},autosize:{type:(0,u.jq)([Boolean,Object]),default:!1},autocomplete:{type:(0,u.jq)(String),default:"off"},formatter:{type:Function},parser:{type:Function},placeholder:{type:String},form:{type:String},readonly:Boolean,clearable:Boolean,clearIcon:{type:a.Ze,default:r.CircleClose},showPassword:Boolean,showWordLimit:Boolean,wordLimitPosition:{type:String,values:["inside","outside"],default:"inside"},suffixIcon:{type:a.Ze},prefixIcon:{type:a.Ze},containerRole:{type:String,default:void 0},tabindex:{type:[String,Number],default:0},validateEvent:{type:Boolean,default:!0},inputStyle:{type:(0,u.jq)([Object,Array,String]),default:()=>(0,l.f)({})},autofocus:Boolean,rows:{type:Number,default:2},...(0,i.l)(["ariaLabel"]),inputmode:{type:(0,u.jq)(String),default:void 0},name:String}),f={[s.l4]:e=>(0,c.Kg)(e),input:e=>(0,c.Kg)(e),change:(e,t)=>(0,c.Kg)(e)&&(t instanceof Event||void 0===t),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0,mouseleave:e=>e instanceof MouseEvent,mouseenter:e=>e instanceof MouseEvent,keydown:e=>e instanceof Event,compositionstart:e=>e instanceof CompositionEvent,compositionupdate:e=>e instanceof CompositionEvent,compositionend:e=>e instanceof CompositionEvent}},96166:function(e,t,n){"use strict";n.d(t,{A:function(){return v}});var r=n(35318),o=(n(44114),n(83110)),a=n(39314),l=(0,a.A)(Object.keys,Object),i=l,s=Object.prototype,u=s.hasOwnProperty;function c(e){if(!(0,o.A)(e))return i(e);var t=[];for(var n in Object(e))u.call(e,n)&&"constructor"!=n&&t.push(n);return t}var d=c,f=n(41805);function p(e){return(0,f.A)(e)?(0,r.A)(e):d(e)}var v=p},96319:function(e,t,n){"use strict";var r=n(28551),o=n(9539);e.exports=function(e,t,n,a){try{return a?t(r(n)[0],n[1]):t(n)}catch(l){o(e,"throw",l)}}},96395:function(e){"use strict";e.exports=!1},96801:function(e,t,n){"use strict";var r=n(43724),o=n(48686),a=n(24913),l=n(28551),i=n(25397),s=n(71072);t.f=r&&!o?Object.defineProperties:function(e,t){l(e);var n,r=i(t),o=s(t),u=o.length,c=0;while(u>c)a.f(e,n=o[c++],r[n]);return e}},96837:function(e){"use strict";var t=TypeError,n=9007199254740991;e.exports=function(e){if(e>n)throw t("Maximum allowed index exceeded");return e}},97017:function(e,t,n){"use strict";n.d(t,{Ap:function(){return a},Rd:function(){return r},rc:function(){return o}});const r=4,o={vertical:{offset:"offsetHeight",scroll:"scrollTop",scrollSize:"scrollHeight",size:"height",key:"vertical",axis:"Y",client:"clientY",direction:"top"},horizontal:{offset:"offsetWidth",scroll:"scrollLeft",scrollSize:"scrollWidth",size:"width",key:"horizontal",axis:"X",client:"clientX",direction:"left"}},a=({move:e,size:t,bar:n})=>({[n.size]:t,transform:`translate${n.axis}(${e}%)`})},97040:function(e,t,n){"use strict";var r=n(43724),o=n(24913),a=n(6980);e.exports=function(e,t,n){r?o.f(e,t,a(0,n)):e[t]=n}},97080:function(e,t,n){"use strict";var r=n(94402).has;e.exports=function(e){return r(e),e}},97197:function(e,t,n){"use strict";n(85331)},97447:function(e,t){"use strict";var n="fas",r="upload",o=448,a=512,l=[],i="f093",s="M256 109.3L256 320c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-210.7-41.4 41.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L256 109.3zM224 400c44.2 0 80-35.8 80-80l80 0c35.3 0 64 28.7 64 64l0 32c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64l0-32c0-35.3 28.7-64 64-64l80 0c0 44.2 35.8 80 80 80zm144 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.Jm=t.mw},97579:function(e,t){"use strict";var n="fas",r="paste",o=512,a=512,l=["file-clipboard"],i="f0ea",s="M64 0C28.7 0 0 28.7 0 64L0 384c0 35.3 28.7 64 64 64l112 0 0-224c0-61.9 50.1-112 112-112l64 0 0-48c0-35.3-28.7-64-64-64L64 0zM248 112l-144 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24zm40 48c-35.3 0-64 28.7-64 64l0 224c0 35.3 28.7 64 64 64l160 0c35.3 0 64-28.7 64-64l0-165.5c0-17-6.7-33.3-18.7-45.3l-58.5-58.5c-12-12-28.3-18.7-45.3-18.7L288 160z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.R9=t.mw},97619:function(e,t,n){"use strict";var r=n(36445);t.mw={prefix:r.prefix,iconName:r.iconName,icon:[r.width,r.height,r.aliases,r.unicode,r.svgPathData]},t.dB=t.mw,r.prefix,r.iconName,r.width,r.height,r.aliases,r.unicode,r.svgPathData,r.aliases},97687:function(e,t,n){"use strict";n.d(t,{X2F:function(){return f},F4c:function(){return i},YC1:function(){return p},eU5:function(){return b},fho:function(){return y},SSU:function(){return E},Lhy:function(){return _},MLh:function(){return c},BLq:function(){return S},P1n:function(){return T},wYm:function(){return k},hRP:function(){return $},esz:function(){return V},lWr:function(){return j}});n(44114),n(18111),n(81148),n(22489),n(20116),n(30531),n(7588),n(61701),n(18237),n(13579),n(17642),n(58004),n(33853),n(45876),n(32475),n(15024),n(31698),n(79577),n(41549),n(49797),n(49631),n(35623),n(64979);var r=n(20017),o=n(56768),a=n(90144),l=!1;function i(e){var t;const n=(0,r.x_)(e);return null!=(t=null==n?void 0:n.$el)?t:n}const s=r.oc?window:void 0,u=r.oc?window.document:void 0;r.oc&&window.navigator,r.oc&&window.location;function c(...e){let t,n,a,l;if((0,r.Kg)(e[0])||Array.isArray(e[0])?([n,a,l]=e,t=s):[t,n,a,l]=e,!t)return r.lQ;Array.isArray(n)||(n=[n]),Array.isArray(a)||(a=[a]);const u=[],c=()=>{u.forEach(e=>e()),u.length=0},d=(e,t,n,r)=>(e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)),f=(0,o.wB)(()=>[i(t),(0,r.x_)(l)],([e,t])=>{c(),e&&u.push(...n.flatMap(n=>a.map(r=>d(e,n,r,t))))},{immediate:!0,flush:"post"}),p=()=>{f(),c()};return(0,r.Uo)(p),p}let d=!1;function f(e,t,n={}){const{window:o=s,ignore:a=[],capture:l=!0,detectIframe:u=!1}=n;if(!o)return;r.un&&!d&&(d=!0,Array.from(o.document.body.children).forEach(e=>e.addEventListener("click",r.lQ)));let f=!0;const p=e=>a.some(t=>{if("string"===typeof t)return Array.from(o.document.querySelectorAll(t)).some(t=>t===e.target||e.composedPath().includes(t));{const n=i(t);return n&&(e.target===n||e.composedPath().includes(n))}}),v=n=>{const r=i(e);r&&r!==n.target&&!n.composedPath().includes(r)&&(0===n.detail&&(f=!p(n)),f?t(n):f=!0)},h=[c(o,"click",v,{passive:!0,capture:l}),c(o,"pointerdown",t=>{const n=i(e);n&&(f=!t.composedPath().includes(n)&&!p(t))},{passive:!0}),u&&c(o,"blur",n=>{var r;const a=i(e);"IFRAME"!==(null==(r=o.document.activeElement)?void 0:r.tagName)||(null==a?void 0:a.contains(o.document.activeElement))||t(n)})].filter(Boolean),m=()=>h.forEach(e=>e());return m}Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;function p(e={}){var t;const{window:n=s}=e,o=null!=(t=e.document)?t:null==n?void 0:n.document,a=(0,r.bW)(()=>null,()=>null==o?void 0:o.activeElement);return n&&(c(n,"blur",e=>{null===e.relatedTarget&&a.trigger()},!0),c(n,"focus",a.trigger,!0)),a}function v(e,t=!1){const n=(0,a.KR)(),o=()=>n.value=Boolean(e());return o(),(0,r.rd)(o,t),n}Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;function h(e){return JSON.parse(JSON.stringify(e))}const m="undefined"!==typeof globalThis?globalThis:"undefined"!==typeof window?window:"undefined"!==typeof n.g?n.g:"undefined"!==typeof self?self:{},g="__vueuse_ssr_handlers__";m[g]=m[g]||{};m[g];Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;function b(e,t,{window:n=s,initialValue:l=""}={}){const u=(0,a.KR)(l),c=(0,o.EW)(()=>{var e;return i(t)||(null==(e=null==n?void 0:n.document)?void 0:e.documentElement)});return(0,o.wB)([c,()=>(0,r.x_)(e)],([e,t])=>{var r;if(e&&n){const o=null==(r=n.getComputedStyle(e).getPropertyValue(t))?void 0:r.trim();u.value=o||l}},{immediate:!0}),(0,o.wB)(u,t=>{var n;(null==(n=c.value)?void 0:n.style)&&c.value.style.setProperty((0,r.x_)(e),t)}),u}Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;function y({document:e=u}={}){if(!e)return(0,a.KR)("visible");const t=(0,a.KR)(e.visibilityState);return c(e,"visibilitychange",()=>{t.value=e.visibilityState}),t}Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;var w=Object.getOwnPropertySymbols,R=Object.prototype.hasOwnProperty,C=Object.prototype.propertyIsEnumerable,x=(e,t)=>{var n={};for(var r in e)R.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&w)for(var r of w(e))t.indexOf(r)<0&&C.call(e,r)&&(n[r]=e[r]);return n};function k(e,t,n={}){const a=n,{window:l=s}=a,u=x(a,["window"]);let c;const d=v(()=>l&&"ResizeObserver"in l),f=()=>{c&&(c.disconnect(),c=void 0)},p=(0,o.wB)(()=>i(e),e=>{f(),d.value&&l&&e&&(c=new ResizeObserver(t),c.observe(e,u))},{immediate:!0,flush:"post"}),h=()=>{f(),p()};return(0,r.Uo)(h),{isSupported:d,stop:h}}function E(e,t={}){const{reset:n=!0,windowResize:l=!0,windowScroll:s=!0,immediate:u=!0}=t,d=(0,a.KR)(0),f=(0,a.KR)(0),p=(0,a.KR)(0),v=(0,a.KR)(0),h=(0,a.KR)(0),m=(0,a.KR)(0),g=(0,a.KR)(0),b=(0,a.KR)(0);function y(){const t=i(e);if(!t)return void(n&&(d.value=0,f.value=0,p.value=0,v.value=0,h.value=0,m.value=0,g.value=0,b.value=0));const r=t.getBoundingClientRect();d.value=r.height,f.value=r.bottom,p.value=r.left,v.value=r.right,h.value=r.top,m.value=r.width,g.value=r.x,b.value=r.y}return k(e,y),(0,o.wB)(()=>i(e),e=>!e&&y()),s&&c("scroll",y,{capture:!0,passive:!0}),l&&c("resize",y,{passive:!0}),(0,r.rd)(()=>{u&&y()}),{height:d,bottom:f,left:p,right:v,top:h,width:m,x:g,y:b,update:y}}Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;function _(e,t={width:0,height:0},n={}){const{window:r=s,box:l="content-box"}=n,u=(0,o.EW)(()=>{var t,n;return null==(n=null==(t=i(e))?void 0:t.namespaceURI)?void 0:n.includes("svg")}),c=(0,a.KR)(t.width),d=(0,a.KR)(t.height);return k(e,([t])=>{const n="border-box"===l?t.borderBoxSize:"content-box"===l?t.contentBoxSize:t.devicePixelContentBoxSize;if(r&&u.value){const t=i(e);if(t){const e=r.getComputedStyle(t);c.value=parseFloat(e.width),d.value=parseFloat(e.height)}}else if(n){const e=Array.isArray(n)?n:[n];c.value=e.reduce((e,{inlineSize:t})=>e+t,0),d.value=e.reduce((e,{blockSize:t})=>e+t,0)}else c.value=t.contentRect.width,d.value=t.contentRect.height},n),(0,o.wB)(()=>i(e),e=>{c.value=e?t.width:0,d.value=e?t.height:0}),{width:c,height:d}}new Map;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;function S(e,t,n={}){const{root:a,rootMargin:l="0px",threshold:u=.1,window:c=s}=n,d=v(()=>c&&"IntersectionObserver"in c);let f=r.lQ;const p=d.value?(0,o.wB)(()=>({el:i(e),root:i(a)}),({el:e,root:n})=>{if(f(),!e)return;const o=new IntersectionObserver(t,{root:n,rootMargin:l,threshold:u});o.observe(e),f=()=>{o.disconnect(),f=r.lQ}},{immediate:!0,flush:"post"}):r.lQ,h=()=>{f(),p()};return(0,r.Uo)(h),{isSupported:d,stop:h}}Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;var M=Object.getOwnPropertySymbols,L=Object.prototype.hasOwnProperty,A=Object.prototype.propertyIsEnumerable,O=(e,t)=>{var n={};for(var r in e)L.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&M)for(var r of M(e))t.indexOf(r)<0&&A.call(e,r)&&(n[r]=e[r]);return n};function T(e,t,n={}){const a=n,{window:l=s}=a,u=O(a,["window"]);let c;const d=v(()=>l&&"MutationObserver"in l),f=()=>{c&&(c.disconnect(),c=void 0)},p=(0,o.wB)(()=>i(e),e=>{f(),d.value&&l&&e&&(c=new MutationObserver(t),c.observe(e,u))},{immediate:!0}),h=()=>{f(),p()};return(0,r.Uo)(h),{isSupported:d,stop:h}}Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;var I;(function(e){e["UP"]="UP",e["RIGHT"]="RIGHT",e["DOWN"]="DOWN",e["LEFT"]="LEFT",e["NONE"]="NONE"})(I||(I={}));Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;var N=Object.defineProperty,W=Object.getOwnPropertySymbols,D=Object.prototype.hasOwnProperty,P=Object.prototype.propertyIsEnumerable,F=(e,t,n)=>t in e?N(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,B=(e,t)=>{for(var n in t||(t={}))D.call(t,n)&&F(e,n,t[n]);if(W)for(var n of W(t))P.call(t,n)&&F(e,n,t[n]);return e};const z={easeInSine:[.12,0,.39,0],easeOutSine:[.61,1,.88,1],easeInOutSine:[.37,0,.63,1],easeInQuad:[.11,0,.5,0],easeOutQuad:[.5,1,.89,1],easeInOutQuad:[.45,0,.55,1],easeInCubic:[.32,0,.67,0],easeOutCubic:[.33,1,.68,1],easeInOutCubic:[.65,0,.35,1],easeInQuart:[.5,0,.75,0],easeOutQuart:[.25,1,.5,1],easeInOutQuart:[.76,0,.24,1],easeInQuint:[.64,0,.78,0],easeOutQuint:[.22,1,.36,1],easeInOutQuint:[.83,0,.17,1],easeInExpo:[.7,0,.84,0],easeOutExpo:[.16,1,.3,1],easeInOutExpo:[.87,0,.13,1],easeInCirc:[.55,0,1,.45],easeOutCirc:[0,.55,.45,1],easeInOutCirc:[.85,0,.15,1],easeInBack:[.36,0,.66,-.56],easeOutBack:[.34,1.56,.64,1],easeInOutBack:[.68,-.6,.32,1.6]};B({linear:r.D_},z);function $(e,t,n,i={}){var s,u,c,d,f;const{clone:p=!1,passive:v=!1,eventName:m,deep:g=!1,defaultValue:b}=i,y=(0,o.nI)(),w=n||(null==y?void 0:y.emit)||(null==(s=null==y?void 0:y.$emit)?void 0:s.bind(y))||(null==(c=null==(u=null==y?void 0:y.proxy)?void 0:u.$emit)?void 0:c.bind(null==y?void 0:y.proxy));let R=m;if(!t)if(l){const e=null==(f=null==(d=null==y?void 0:y.proxy)?void 0:d.$options)?void 0:f.model;t=(null==e?void 0:e.value)||"value",m||(R=(null==e?void 0:e.event)||"input")}else t="modelValue";R=m||R||`update:${t.toString()}`;const C=e=>p?(0,r.Tn)(p)?p(e):h(e):e,x=()=>(0,r.C8)(e[t])?C(e[t]):b;if(v){const n=x(),r=(0,a.KR)(n);return(0,o.wB)(()=>e[t],e=>r.value=C(e)),(0,o.wB)(r,n=>{(n!==e[t]||g)&&w(R,n)},{deep:g}),r}return(0,o.EW)({get(){return x()},set(e){w(R,e)}})}function V({window:e=s}={}){if(!e)return(0,a.KR)(!1);const t=(0,a.KR)(e.document.hasFocus());return c(e,"blur",()=>{t.value=!1}),c(e,"focus",()=>{t.value=!0}),t}function j(e={}){const{window:t=s,initialWidth:n=1/0,initialHeight:o=1/0,listenOrientation:l=!0,includeScrollbar:i=!0}=e,u=(0,a.KR)(n),d=(0,a.KR)(o),f=()=>{t&&(i?(u.value=t.innerWidth,d.value=t.innerHeight):(u.value=t.document.documentElement.clientWidth,d.value=t.document.documentElement.clientHeight))};return f(),(0,r.rd)(f),c("resize",f,{passive:!0}),l&&c("orientationchange",f,{passive:!0}),{width:u,height:d}}},97722:function(e,t,n){"use strict";n.d(t,{H6:function(){return a}});var r=n(21588),o=n(25376);const a=(0,o.GU)(r.A)},97751:function(e,t,n){"use strict";var r=n(44576),o=n(94901),a=function(e){return o(e)?e:void 0};e.exports=function(e,t){return arguments.length<2?a(r[e]):r[e]&&r[e][t]}},98072:function(e,t,n){"use strict";n.d(t,{uN:function(){return f}});var r=n(56768),o=n(90144),a=n(80782),l=n(66125),i=n(99077);const s=(0,r.pM)({name:"ElPopper",inheritAttrs:!1}),u=(0,r.pM)({...s,props:l.Ft,setup(e,{expose:t}){const n=e,l=(0,o.KR)(),i=(0,o.KR)(),s=(0,o.KR)(),u=(0,o.KR)(),c=(0,r.EW)(()=>n.role),d={triggerRef:l,popperInstanceRef:i,contentRef:s,referenceRef:u,role:c};return t(d),(0,r.Gt)(a.p,d),(e,t)=>(0,r.RG)(e.$slots,"default")}});var c=(0,i.A)(u,[["__file","popper.vue"]]),d=n(25376);const f=(0,d.GU)(c)},98469:function(e,t,n){"use strict";n.d(t,{dI:function(){return j},$n:function(){return K},o5:function(){return H}});var r=n(56768),o=n(90144),a=n(24232),l=n(45130),i=n(53845),s=n(58501),u=n(92056),c=n(12235);const d={modelValue:{type:[Number,String,Boolean],default:void 0},label:{type:[String,Boolean,Number,Object],default:void 0},value:{type:[String,Boolean,Number,Object],default:void 0},indeterminate:Boolean,disabled:{type:Boolean,default:void 0},checked:Boolean,name:{type:String,default:void 0},trueValue:{type:[String,Number],default:void 0},falseValue:{type:[String,Number],default:void 0},trueLabel:{type:[String,Number],default:void 0},falseLabel:{type:[String,Number],default:void 0},id:{type:String,default:void 0},border:Boolean,size:i.mU,tabindex:[String,Number],validateEvent:{type:Boolean,default:!0},ariaLabel:String,...(0,s.l)(["ariaControls"])},f={[u.l4]:e=>(0,a.Kg)(e)||(0,c.Et)(e)||(0,c.Lm)(e),change:e=>(0,a.Kg)(e)||(0,c.Et)(e)||(0,c.Lm)(e)};var p=n(99077);n(44114);const v=Symbol("checkboxGroupContextKey");var h=n(87254),m=n(92436);const g=({model:e,isChecked:t})=>{const n=(0,r.WQ)(v,void 0),o=(0,r.WQ)(h.F,void 0),a=(0,r.EW)(()=>{var r,o;const a=null==(r=null==n?void 0:n.max)?void 0:r.value,l=null==(o=null==n?void 0:n.min)?void 0:o.value;return!(0,c.b0)(a)&&e.value.length>=a&&!t.value||!(0,c.b0)(l)&&e.value.length<=l&&t.value}),l=(0,m.CB)((0,r.EW)(()=>{var e,t;return void 0===n?null!=(e=null==o?void 0:o.disabled)?e:a.value:(null==(t=n.disabled)?void 0:t.value)||a.value}));return{isDisabled:l,isLimitDisabled:a}};n(18111),n(13579);var b=n(44216),y=n(86894);const w=(e,{model:t,isLimitExceeded:n,hasOwnLabel:o,isDisabled:a,isLabeledByFormItem:l})=>{const i=(0,r.WQ)(v,void 0),{formItem:s}=(0,b.j)(),{emit:c}=(0,r.nI)();function d(t){var n,r,o,a;return[!0,e.trueValue,e.trueLabel].includes(t)?null==(r=null!=(n=e.trueValue)?n:e.trueLabel)||r:null!=(a=null!=(o=e.falseValue)?o:e.falseLabel)&&a}function f(e,t){c(u.YU,d(e),t)}function p(e){if(n.value)return;const t=e.target;c(u.YU,d(t.checked),e)}async function h(i){if(!n.value&&!o.value&&!a.value&&l.value){const n=i.composedPath(),o=n.some(e=>"LABEL"===e.tagName);o||(t.value=d([!1,e.falseValue,e.falseLabel].includes(t.value)),await(0,r.dY)(),f(t.value,i))}}const m=(0,r.EW)(()=>(null==i?void 0:i.validateEvent)||e.validateEvent);return(0,r.wB)(()=>e.modelValue,()=>{m.value&&(null==s||s.validate("change").catch(e=>(0,y.U)(e)))}),{handleChange:p,onClickRoot:h}},R=e=>{const t=(0,o.KR)(!1),{emit:n}=(0,r.nI)(),l=(0,r.WQ)(v,void 0),i=(0,r.EW)(()=>!1===(0,c.b0)(l)),s=(0,o.KR)(!1),d=(0,r.EW)({get(){var n,r;return i.value?null==(n=null==l?void 0:l.modelValue)?void 0:n.value:null!=(r=e.modelValue)?r:t.value},set(e){var r,o;i.value&&(0,a.cy)(e)?(s.value=void 0!==(null==(r=null==l?void 0:l.max)?void 0:r.value)&&e.length>(null==l?void 0:l.max.value)&&e.length>d.value.length,!1===s.value&&(null==(o=null==l?void 0:l.changeEvent)||o.call(l,e))):(n(u.l4,e),t.value=e)}});return{model:d,isGroup:i,isLimitExceeded:s}};n(61701);var C=n(39195);const x=(e,t,{model:n})=>{const l=(0,r.WQ)(v,void 0),i=(0,o.KR)(!1),s=(0,r.EW)(()=>(0,c.Xj)(e.value)?e.label:e.value),u=(0,r.EW)(()=>{const t=n.value;return(0,c.Lm)(t)?t:(0,a.cy)(t)?(0,a.Gv)(s.value)?t.map(o.ux).some(e=>(0,C.A)(e,s.value)):t.map(o.ux).includes(s.value):null!==t&&void 0!==t?t===e.trueValue||t===e.trueLabel:!!t}),d=(0,m.NV)((0,r.EW)(()=>{var e;return null==(e=null==l?void 0:l.size)?void 0:e.value}),{prop:!0}),f=(0,m.NV)((0,r.EW)(()=>{var e;return null==(e=null==l?void 0:l.size)?void 0:e.value})),p=(0,r.EW)(()=>!!t.default||!(0,c.Xj)(s.value));return{checkboxButtonSize:d,isChecked:u,isFocused:i,checkboxSize:f,hasOwnLabel:p,actualValue:s}};var k=n(30261);const E=(e,t)=>{const{formItem:n}=(0,b.j)(),{model:o,isGroup:l,isLimitExceeded:i}=R(e),{isFocused:s,isChecked:u,checkboxButtonSize:d,checkboxSize:f,hasOwnLabel:p,actualValue:v}=x(e,t,{model:o}),{isDisabled:h}=g({model:o,isChecked:u}),{inputId:m,isLabeledByFormItem:y}=(0,b.W)(e,{formItemContext:n,disableIdGeneration:p,disableIdManagement:l}),{handleChange:C,onClickRoot:E}=w(e,{model:o,isLimitExceeded:i,hasOwnLabel:p,isDisabled:h,isLabeledByFormItem:y}),_=()=>{function t(){var t,n;(0,a.cy)(o.value)&&!o.value.includes(v.value)?o.value.push(v.value):o.value=null==(n=null!=(t=e.trueValue)?t:e.trueLabel)||n}e.checked&&t()};return _(),(0,k.b)({from:"label act as value",replacement:"value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},(0,r.EW)(()=>l.value&&(0,c.Xj)(e.value))),(0,k.b)({from:"true-label",replacement:"true-value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},(0,r.EW)(()=>!!e.trueLabel)),(0,k.b)({from:"false-label",replacement:"false-value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},(0,r.EW)(()=>!!e.falseLabel)),{inputId:m,isLabeledByFormItem:y,isChecked:u,isDisabled:h,isFocused:s,checkboxButtonSize:d,checkboxSize:f,hasOwnLabel:p,model:o,actualValue:v,handleChange:C,onClickRoot:E}};var _=n(93513);const S=(0,r.pM)({name:"ElCheckbox"}),M=(0,r.pM)({...S,props:d,emits:f,setup(e){const t=e,n=(0,r.Ht)(),{inputId:i,isLabeledByFormItem:s,isChecked:u,isDisabled:c,isFocused:d,checkboxSize:f,hasOwnLabel:p,model:v,actualValue:h,handleChange:m,onClickRoot:g}=E(t,n),b=(0,r.EW)(()=>{var e,n,r,o;return t.trueValue||t.falseValue||t.trueLabel||t.falseLabel?{"true-value":null==(n=null!=(e=t.trueValue)?e:t.trueLabel)||n,"false-value":null!=(o=null!=(r=t.falseValue)?r:t.falseLabel)&&o}:{value:h.value}}),y=(0,_.DU)("checkbox"),w=(0,r.EW)(()=>[y.b(),y.m(f.value),y.is("disabled",c.value),y.is("bordered",t.border),y.is("checked",u.value)]),R=(0,r.EW)(()=>[y.e("input"),y.is("disabled",c.value),y.is("checked",u.value),y.is("indeterminate",t.indeterminate),y.is("focus",d.value)]);return(e,t)=>((0,r.uX)(),(0,r.Wv)((0,r.$y)(!(0,o.R1)(p)&&(0,o.R1)(s)?"span":"label"),{for:!(0,o.R1)(p)&&(0,o.R1)(s)?null:(0,o.R1)(i),class:(0,a.C4)((0,o.R1)(w)),"aria-controls":e.indeterminate?e.ariaControls:null,"aria-checked":e.indeterminate?"mixed":void 0,"aria-label":e.ariaLabel,onClick:(0,o.R1)(g)},{default:(0,r.k6)(()=>[(0,r.Lk)("span",{class:(0,a.C4)((0,o.R1)(R))},[(0,r.bo)((0,r.Lk)("input",(0,r.v6)({id:(0,o.R1)(i),"onUpdate:modelValue":e=>(0,o.i9)(v)?v.value=e:null,class:(0,o.R1)(y).e("original"),type:"checkbox",indeterminate:e.indeterminate,name:e.name,tabindex:e.tabindex,disabled:(0,o.R1)(c)},(0,o.R1)(b),{onChange:(0,o.R1)(m),onFocus:e=>d.value=!0,onBlur:e=>d.value=!1,onClick:(0,l.D$)(()=>{},["stop"])}),null,16,["id","onUpdate:modelValue","indeterminate","name","tabindex","disabled","onChange","onFocus","onBlur","onClick"]),[[l.lH,(0,o.R1)(v)]]),(0,r.Lk)("span",{class:(0,a.C4)((0,o.R1)(y).e("inner"))},null,2)],2),(0,o.R1)(p)?((0,r.uX)(),(0,r.CE)("span",{key:0,class:(0,a.C4)((0,o.R1)(y).e("label"))},[(0,r.RG)(e.$slots,"default"),e.$slots.default?(0,r.Q3)("v-if",!0):((0,r.uX)(),(0,r.CE)(r.FK,{key:0},[(0,r.eW)((0,a.v_)(e.label),1)],64))],2)):(0,r.Q3)("v-if",!0)]),_:3},8,["for","class","aria-controls","aria-checked","aria-label","onClick"]))}});var L=(0,p.A)(M,[["__file","checkbox.vue"]]);const A=(0,r.pM)({name:"ElCheckboxButton"}),O=(0,r.pM)({...A,props:d,emits:f,setup(e){const t=e,n=(0,r.Ht)(),{isFocused:i,isChecked:s,isDisabled:u,checkboxButtonSize:c,model:d,actualValue:f,handleChange:p}=E(t,n),h=(0,r.EW)(()=>{var e,n,r,o;return t.trueValue||t.falseValue||t.trueLabel||t.falseLabel?{"true-value":null==(n=null!=(e=t.trueValue)?e:t.trueLabel)||n,"false-value":null!=(o=null!=(r=t.falseValue)?r:t.falseLabel)&&o}:{value:f.value}}),m=(0,r.WQ)(v,void 0),g=(0,_.DU)("checkbox"),b=(0,r.EW)(()=>{var e,t,n,r;const o=null!=(t=null==(e=null==m?void 0:m.fill)?void 0:e.value)?t:"";return{backgroundColor:o,borderColor:o,color:null!=(r=null==(n=null==m?void 0:m.textColor)?void 0:n.value)?r:"",boxShadow:o?`-1px 0 0 0 ${o}`:void 0}}),y=(0,r.EW)(()=>[g.b("button"),g.bm("button",c.value),g.is("disabled",u.value),g.is("checked",s.value),g.is("focus",i.value)]);return(e,t)=>((0,r.uX)(),(0,r.CE)("label",{class:(0,a.C4)((0,o.R1)(y))},[(0,r.bo)((0,r.Lk)("input",(0,r.v6)({"onUpdate:modelValue":e=>(0,o.i9)(d)?d.value=e:null,class:(0,o.R1)(g).be("button","original"),type:"checkbox",name:e.name,tabindex:e.tabindex,disabled:(0,o.R1)(u)},(0,o.R1)(h),{onChange:(0,o.R1)(p),onFocus:e=>i.value=!0,onBlur:e=>i.value=!1,onClick:(0,l.D$)(()=>{},["stop"])}),null,16,["onUpdate:modelValue","name","tabindex","disabled","onChange","onFocus","onBlur","onClick"]),[[l.lH,(0,o.R1)(d)]]),e.$slots.default||e.label?((0,r.uX)(),(0,r.CE)("span",{key:0,class:(0,a.C4)((0,o.R1)(g).be("button","inner")),style:(0,a.Tr)((0,o.R1)(s)?(0,o.R1)(b):void 0)},[(0,r.RG)(e.$slots,"default",{},()=>[(0,r.eW)((0,a.v_)(e.label),1)])],6)):(0,r.Q3)("v-if",!0)],2))}});var T=(0,p.A)(O,[["__file","checkbox-button.vue"]]),I=n(71074),N=n(19615),W=n(47378);const D=(0,W.b_)({modelValue:{type:(0,W.jq)(Array),default:()=>[]},disabled:{type:Boolean,default:void 0},min:Number,max:Number,size:i.mU,fill:String,textColor:String,tag:{type:String,default:"div"},validateEvent:{type:Boolean,default:!0},options:{type:(0,W.jq)(Array)},props:{type:(0,W.jq)(Object),default:()=>F},type:{type:String,values:["checkbox","button"],default:"checkbox"},...(0,s.l)(["ariaLabel"])}),P={[u.l4]:e=>(0,a.cy)(e),change:e=>(0,a.cy)(e)},F={label:"label",value:"value",disabled:"disabled"},B=(0,r.pM)({name:"ElCheckboxGroup"}),z=(0,r.pM)({...B,props:D,emits:P,setup(e,{emit:t}){const n=e,l=(0,_.DU)("checkbox"),i=(0,m.CB)(),{formItem:s}=(0,b.j)(),{inputId:c,isLabeledByFormItem:d}=(0,b.W)(n,{formItemContext:s}),f=async e=>{t(u.l4,e),await(0,r.dY)(),t(u.YU,e)},p=(0,r.EW)({get(){return n.modelValue},set(e){f(e)}}),h=(0,r.EW)(()=>({...F,...n.props})),g=e=>{const{label:t,value:n,disabled:r}=h.value,o={label:e[t],value:e[n],disabled:e[r]};return{...(0,I.A)(e,[t,n,r]),...o}},w=(0,r.EW)(()=>"button"===n.type?T:L);return(0,r.Gt)(v,{...(0,N.A)((0,o.QW)(n),["size","min","max","validateEvent","fill","textColor"]),disabled:i,modelValue:p,changeEvent:f}),(0,r.wB)(()=>n.modelValue,(e,t)=>{n.validateEvent&&!(0,C.A)(e,t)&&(null==s||s.validate("change").catch(e=>(0,y.U)(e)))}),(e,t)=>{var n;return(0,r.uX)(),(0,r.Wv)((0,r.$y)(e.tag),{id:(0,o.R1)(c),class:(0,a.C4)((0,o.R1)(l).b("group")),role:"group","aria-label":(0,o.R1)(d)?void 0:e.ariaLabel||"checkbox-group","aria-labelledby":(0,o.R1)(d)?null==(n=(0,o.R1)(s))?void 0:n.labelId:void 0},{default:(0,r.k6)(()=>[(0,r.RG)(e.$slots,"default",{},()=>[((0,r.uX)(!0),(0,r.CE)(r.FK,null,(0,r.pI)(e.options,(e,t)=>((0,r.uX)(),(0,r.Wv)((0,r.$y)((0,o.R1)(w)),(0,r.v6)({key:t},g(e)),null,16))),128))])]),_:3},8,["id","class","aria-label","aria-labelledby"])}}});var $=(0,p.A)(z,[["__file","checkbox-group.vue"]]),V=n(25376);const j=(0,V.GU)(L,{CheckboxButton:T,CheckboxGroup:$}),K=(0,V.WM)(T),H=(0,V.WM)($)},98769:function(e,t,n){"use strict";n.d(t,{Nr:function(){return u}});var r=n(56768),o=n(38299),a=n(99077);const l=(0,r.pM)({__name:"teleport",props:o.k,setup(e){return(e,t)=>e.disabled?(0,r.RG)(e.$slots,"default",{key:0}):((0,r.uX)(),(0,r.Wv)(r.Im,{key:1,to:e.to},[(0,r.RG)(e.$slots,"default")],8,["to"]))}});var i=(0,a.A)(l,[["__file","teleport.vue"]]),s=n(25376);const u=(0,s.GU)(i)},98950:function(e,t,n){"use strict";n.d(t,{$W:function(){return ka},Kk:function(){return Sa},Qq:function(){return Ma},Yv:function(){return Ea},qg:function(){return _a}});n(44114),n(18111),n(22489),n(20116),n(30531),n(7588),n(61701),n(18237),n(13579),n(17642),n(58004),n(33853),n(45876),n(32475),n(15024),n(31698); +const Pn="9.14.5";function Fn(){"boolean"!==typeof __VUE_I18N_FULL_INSTALL__&&(m().__VUE_I18N_FULL_INSTALL__=!0),"boolean"!==typeof __VUE_I18N_LEGACY_API__&&(m().__VUE_I18N_LEGACY_API__=!0),"boolean"!==typeof __INTLIFY_JIT_COMPILATION__&&(m().__INTLIFY_JIT_COMPILATION__=!1),"boolean"!==typeof __INTLIFY_DROP_MESSAGE_COMPILER__&&(m().__INTLIFY_DROP_MESSAGE_COMPILER__=!1),"boolean"!==typeof __INTLIFY_PROD_DEVTOOLS__&&(m().__INTLIFY_PROD_DEVTOOLS__=!1)}const Bn=Ct.__EXTEND_POINT__,zn=I(Bn),$n={FALLBACK_TO_ROOT:Bn,NOT_SUPPORTED_PRESERVE:zn(),NOT_SUPPORTED_FORMATTER:zn(),NOT_SUPPORTED_PRESERVE_DIRECTIVE:zn(),NOT_SUPPORTED_GET_CHOICE_INDEX:zn(),COMPONENT_NAME_LEGACY_COMPATIBLE:zn(),NOT_FOUND_PARENT_SCOPE:zn(),IGNORE_OBJ_FLATTEN:zn(),NOTICE_DROP_ALLOW_COMPOSITION:zn(),NOTICE_DROP_TRANSLATE_EXIST_COMPATIBLE_FLAG:zn()};$n.FALLBACK_TO_ROOT,$n.NOT_SUPPORTED_PRESERVE,$n.NOT_SUPPORTED_FORMATTER,$n.NOT_SUPPORTED_PRESERVE_DIRECTIVE,$n.NOT_SUPPORTED_GET_CHOICE_INDEX,$n.COMPONENT_NAME_LEGACY_COMPATIBLE,$n.NOT_FOUND_PARENT_SCOPE,$n.IGNORE_OBJ_FLATTEN,$n.NOTICE_DROP_ALLOW_COMPOSITION,$n.NOTICE_DROP_TRANSLATE_EXIST_COMPATIBLE_FLAG;const Vn=Et.__EXTEND_POINT__,jn=I(Vn),Kn={UNEXPECTED_RETURN_TYPE:Vn,INVALID_ARGUMENT:jn(),MUST_BE_CALL_SETUP_TOP:jn(),NOT_INSTALLED:jn(),NOT_AVAILABLE_IN_LEGACY_MODE:jn(),REQUIRED_VALUE:jn(),INVALID_VALUE:jn(),CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN:jn(),NOT_INSTALLED_WITH_PROVIDE:jn(),UNEXPECTED_ERROR:jn(),NOT_COMPATIBLE_LEGACY_VUE_I18N:jn(),BRIDGE_SUPPORT_VUE_2_ONLY:jn(),MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION:jn(),NOT_AVAILABLE_COMPOSITION_IN_LEGACY:jn(),__EXTEND_POINT__:jn()};function Hn(e,...t){return q(e,null,void 0)}Kn.UNEXPECTED_RETURN_TYPE,Kn.INVALID_ARGUMENT,Kn.MUST_BE_CALL_SETUP_TOP,Kn.NOT_INSTALLED,Kn.UNEXPECTED_ERROR,Kn.NOT_AVAILABLE_IN_LEGACY_MODE,Kn.REQUIRED_VALUE,Kn.INVALID_VALUE,Kn.CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN,Kn.NOT_INSTALLED_WITH_PROVIDE,Kn.NOT_COMPATIBLE_LEGACY_VUE_I18N,Kn.BRIDGE_SUPPORT_VUE_2_ONLY,Kn.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION,Kn.NOT_AVAILABLE_COMPOSITION_IN_LEGACY;const Xn=a("__translateVNode"),Un=a("__datetimeParts"),Gn=a("__numberParts"),qn=a("__setPluralRules");a("__intlifyMeta");const Yn=a("__injectWithOption"),Qn=a("__dispose");function Zn(e){if(!_(e))return e;if(Ae(e))return e;for(const t in e)if(R(e,t))if(t.includes(".")){const n=t.split("."),r=n.length-1;let o=e,a=!1;for(let e=0;e{if("locale"in e&&"resource"in e){const{locale:t,resource:n}=e;t?(l[t]=l[t]||v(),W(n,l[t])):W(n,l)}else k(e)&&W(JSON.parse(e),l)}),null==o&&a)for(const i in l)R(l,i)&&Zn(l[i]);return l}function er(e){return e.type}function tr(e,t,n){let r=_(t.messages)?t.messages:v();"__i18nGlobal"in n&&(r=Jn(e.locale.value,{messages:r,__i18n:n.__i18nGlobal}));const o=Object.keys(r);if(o.length&&o.forEach(t=>{e.mergeLocaleMessage(t,r[t])}),_(t.datetimeFormats)){const n=Object.keys(t.datetimeFormats);n.length&&n.forEach(n=>{e.mergeDateTimeFormat(n,t.datetimeFormats[n])})}if(_(t.numberFormats)){const n=Object.keys(t.numberFormats);n.length&&n.forEach(n=>{e.mergeNumberFormat(n,t.numberFormats[n])})}}function nr(e){return(0,Wn.bF)(Wn.EY,null,e,0)}const rr="__INTLIFY_META__",or=()=>[],ar=()=>!1;let lr=0;function ir(e){return(t,n,r,o)=>e(n,r,(0,Wn.nI)()||void 0,o)}const sr=()=>{const e=(0,Wn.nI)();let t=null;return e&&(t=er(e)[rr])?{[rr]:t}:null};function ur(e={},t){const{__root:n,__injectWithOption:r}=e,a=void 0===n,l=e.flatJson,i=o?Dn.KR:Dn.IJ,u=!!e.translateExistCompatible;let d=!E(e.inheritLocale)||e.inheritLocale;const p=i(n&&d?n.locale.value:k(e.locale)?e.locale:Pt),v=i(n&&d?n.fallbackLocale.value:k(e.fallbackLocale)||C(e.fallbackLocale)||A(e.fallbackLocale)||!1===e.fallbackLocale?e.fallbackLocale:p.value),h=i(Jn(p.value,e)),m=i(A(e.datetimeFormats)?e.datetimeFormats:{[p.value]:{}}),g=i(A(e.numberFormats)?e.numberFormats:{[p.value]:{}});let b=n?n.missingWarn:!E(e.missingWarn)&&!c(e.missingWarn)||e.missingWarn,y=n?n.fallbackWarn:!E(e.fallbackWarn)&&!c(e.fallbackWarn)||e.fallbackWarn,w=n?n.fallbackRoot:!E(e.fallbackRoot)||e.fallbackRoot,S=!!e.fallbackFormat,M=x(e.missing)?e.missing:null,L=x(e.missing)?ir(e.missing):null,O=x(e.postTranslation)?e.postTranslation:null,T=n?n.warnHtmlMessage:!E(e.warnHtmlMessage)||e.warnHtmlMessage,I=!!e.escapeParameter;const N=n?n.modifiers:A(e.modifiers)?e.modifiers:{};let D,P=e.pluralRules||n&&n.pluralRules;const F=()=>{a&&Qt(null);const t={version:Pn,locale:p.value,fallbackLocale:v.value,messages:h.value,modifiers:N,pluralRules:P,missing:null===L?void 0:L,missingWarn:b,fallbackWarn:y,fallbackFormat:S,unresolving:!0,postTranslation:null===O?void 0:O,warnHtmlMessage:T,escapeParameter:I,messageResolver:e.messageResolver,messageCompiler:e.messageCompiler,__meta:{framework:"vue"}};t.datetimeFormats=m.value,t.numberFormats=g.value,t.__datetimeFormatters=A(D)?D.__datetimeFormatters:void 0,t.__numberFormatters=A(D)?D.__numberFormatters:void 0;const n=en(t);return a&&Qt(n),n};function B(){return[p.value,v.value,h.value,m.value,g.value]}D=F(),rn(D,p.value,v.value);const z=(0,Wn.EW)({get:()=>p.value,set:e=>{p.value=e,D.locale=p.value}}),$=(0,Wn.EW)({get:()=>v.value,set:e=>{v.value=e,D.fallbackLocale=v.value,rn(D,p.value,e)}}),V=(0,Wn.EW)(()=>h.value),j=(0,Wn.EW)(()=>m.value),K=(0,Wn.EW)(()=>g.value);function H(){return x(O)?O:null}function X(e){O=e,D.postTranslation=e}function U(){return M}function G(e){null!==e&&(L=ir(e)),M=e,D.missing=L}const q=(e,t,r,o,l,i)=>{let u;B();try{__INTLIFY_PROD_DEVTOOLS__&&Gt(sr()),a||(D.fallbackContext=n?Zt():void 0),u=e(D)}finally{__INTLIFY_PROD_DEVTOOLS__&&Gt(null),a||(D.fallbackContext=void 0)}if("translate exists"!==r&&s(u)&&u===Dt||"translate exists"===r&&!u){const[e,r]=t();return n&&w?o(n):l(e)}if(i(u))return u;throw Hn(Kn.UNEXPECTED_RETURN_TYPE)};function Y(...e){return q(t=>Reflect.apply(bn,null,[t,...e]),()=>xn(...e),"translate",t=>Reflect.apply(t.t,t,[...e]),e=>e,e=>k(e))}function Q(...e){const[t,n,r]=e;if(r&&!_(r))throw Hn(Kn.INVALID_ARGUMENT);return Y(t,n,f({resolvedMessage:!0},r||{}))}function Z(...e){return q(t=>Reflect.apply(Sn,null,[t,...e]),()=>Ln(...e),"datetime format",t=>Reflect.apply(t.d,t,[...e]),()=>Ft,e=>k(e))}function J(...e){return q(t=>Reflect.apply(On,null,[t,...e]),()=>In(...e),"number format",t=>Reflect.apply(t.n,t,[...e]),()=>Ft,e=>k(e))}function ee(e){return e.map(e=>k(e)||s(e)||E(e)?nr(String(e)):e)}const te=e=>e,ne={normalize:ee,interpolate:te,type:"vnode"};function re(...e){return q(t=>{let n;const r=t;try{r.processor=ne,n=Reflect.apply(bn,null,[r,...e])}finally{r.processor=null}return n},()=>xn(...e),"translate",t=>t[Xn](...e),e=>[nr(e)],e=>C(e))}function oe(...e){return q(t=>Reflect.apply(On,null,[t,...e]),()=>In(...e),"number format",t=>t[Gn](...e),or,e=>k(e)||C(e))}function ae(...e){return q(t=>Reflect.apply(Sn,null,[t,...e]),()=>Ln(...e),"datetime format",t=>t[Un](...e),or,e=>k(e)||C(e))}function le(e){P=e,D.pluralRules=P}function ie(e,t){return q(()=>{if(!e)return!1;const n=k(t)?t:p.value,r=ce(n),o=D.messageResolver(r,e);return u?null!=o:Ae(o)||gn(o)||k(o)},()=>[e],"translate exists",n=>Reflect.apply(n.te,n,[e,t]),ar,e=>E(e))}function se(e){let t=null;const n=Ot(D,v.value,p.value);for(let r=0;r{d&&(p.value=e,D.locale=e,rn(D,p.value,v.value))}),(0,Wn.wB)(n.fallbackLocale,e=>{d&&(v.value=e,D.fallbackLocale=e,rn(D,p.value,v.value))}));const ye={id:lr,locale:z,fallbackLocale:$,get inheritLocale(){return d},set inheritLocale(e){d=e,e&&n&&(p.value=n.locale.value,v.value=n.fallbackLocale.value,rn(D,p.value,v.value))},get availableLocales(){return Object.keys(h.value).sort()},messages:V,get modifiers(){return N},get pluralRules(){return P||{}},get isGlobal(){return a},get missingWarn(){return b},set missingWarn(e){b=e,D.missingWarn=b},get fallbackWarn(){return y},set fallbackWarn(e){y=e,D.fallbackWarn=y},get fallbackRoot(){return w},set fallbackRoot(e){w=e},get fallbackFormat(){return S},set fallbackFormat(e){S=e,D.fallbackFormat=S},get warnHtmlMessage(){return T},set warnHtmlMessage(e){T=e,D.warnHtmlMessage=e},get escapeParameter(){return I},set escapeParameter(e){I=e,D.escapeParameter=e},t:Y,getLocaleMessage:ce,setLocaleMessage:de,mergeLocaleMessage:fe,getPostTranslationHandler:H,setPostTranslationHandler:X,getMissingHandler:U,setMissingHandler:G,[qn]:le};return ye.datetimeFormats=j,ye.numberFormats=K,ye.rt=Q,ye.te=ie,ye.tm=ue,ye.d=Z,ye.n=J,ye.getDateTimeFormat=pe,ye.setDateTimeFormat=ve,ye.mergeDateTimeFormat=he,ye.getNumberFormat=me,ye.setNumberFormat=ge,ye.mergeNumberFormat=be,ye[Yn]=r,ye[Xn]=re,ye[Un]=ae,ye[Gn]=oe,ye}function cr(e){const t=k(e.locale)?e.locale:Pt,n=k(e.fallbackLocale)||C(e.fallbackLocale)||A(e.fallbackLocale)||!1===e.fallbackLocale?e.fallbackLocale:t,r=x(e.missing)?e.missing:void 0,o=!E(e.silentTranslationWarn)&&!c(e.silentTranslationWarn)||!e.silentTranslationWarn,a=!E(e.silentFallbackWarn)&&!c(e.silentFallbackWarn)||!e.silentFallbackWarn,l=!E(e.fallbackRoot)||e.fallbackRoot,i=!!e.formatFallbackMessages,s=A(e.modifiers)?e.modifiers:{},u=e.pluralizationRules,d=x(e.postTranslation)?e.postTranslation:void 0,p=!k(e.warnHtmlInMessage)||"off"!==e.warnHtmlInMessage,v=!!e.escapeParameterHtml,h=!E(e.sync)||e.sync;let m=e.messages;if(A(e.sharedMessages)){const t=e.sharedMessages,n=Object.keys(t);m=n.reduce((e,n)=>{const r=e[n]||(e[n]={});return f(r,t[n]),e},m||{})}const{__i18n:g,__root:b,__injectWithOption:y}=e,w=e.datetimeFormats,R=e.numberFormats,_=e.flatJson,S=e.translateExistCompatible;return{locale:t,fallbackLocale:n,messages:m,flatJson:_,datetimeFormats:w,numberFormats:R,missing:r,missingWarn:o,fallbackWarn:a,fallbackRoot:l,fallbackFormat:i,modifiers:s,pluralRules:u,postTranslation:d,warnHtmlMessage:p,escapeParameter:v,messageResolver:e.messageResolver,inheritLocale:h,translateExistCompatible:S,__i18n:g,__root:b,__injectWithOption:y}}function dr(e={},t){{const t=ur(cr(e)),{__extender:n}=e,r={id:t.id,get locale(){return t.locale.value},set locale(e){t.locale.value=e},get fallbackLocale(){return t.fallbackLocale.value},set fallbackLocale(e){t.fallbackLocale.value=e},get messages(){return t.messages.value},get datetimeFormats(){return t.datetimeFormats.value},get numberFormats(){return t.numberFormats.value},get availableLocales(){return t.availableLocales},get formatter(){return{interpolate(){return[]}}},set formatter(e){},get missing(){return t.getMissingHandler()},set missing(e){t.setMissingHandler(e)},get silentTranslationWarn(){return E(t.missingWarn)?!t.missingWarn:t.missingWarn},set silentTranslationWarn(e){t.missingWarn=E(e)?!e:e},get silentFallbackWarn(){return E(t.fallbackWarn)?!t.fallbackWarn:t.fallbackWarn},set silentFallbackWarn(e){t.fallbackWarn=E(e)?!e:e},get modifiers(){return t.modifiers},get formatFallbackMessages(){return t.fallbackFormat},set formatFallbackMessages(e){t.fallbackFormat=e},get postTranslation(){return t.getPostTranslationHandler()},set postTranslation(e){t.setPostTranslationHandler(e)},get sync(){return t.inheritLocale},set sync(e){t.inheritLocale=e},get warnHtmlInMessage(){return t.warnHtmlMessage?"warn":"off"},set warnHtmlInMessage(e){t.warnHtmlMessage="off"!==e},get escapeParameterHtml(){return t.escapeParameter},set escapeParameterHtml(e){t.escapeParameter=e},get preserveDirectiveContent(){return!0},set preserveDirectiveContent(e){},get pluralizationRules(){return t.pluralRules||{}},__composer:t,t(...e){const[n,r,o]=e,a={};let l=null,i=null;if(!k(n))throw Hn(Kn.INVALID_ARGUMENT);const s=n;return k(r)?a.locale=r:C(r)?l=r:A(r)&&(i=r),C(o)?l=o:A(o)&&(i=o),Reflect.apply(t.t,t,[s,l||i||{},a])},rt(...e){return Reflect.apply(t.rt,t,[...e])},tc(...e){const[n,r,o]=e,a={plural:1};let l=null,i=null;if(!k(n))throw Hn(Kn.INVALID_ARGUMENT);const u=n;return k(r)?a.locale=r:s(r)?a.plural=r:C(r)?l=r:A(r)&&(i=r),k(o)?a.locale=o:C(o)?l=o:A(o)&&(i=o),Reflect.apply(t.t,t,[u,l||i||{},a])},te(e,n){return t.te(e,n)},tm(e){return t.tm(e)},getLocaleMessage(e){return t.getLocaleMessage(e)},setLocaleMessage(e,n){t.setLocaleMessage(e,n)},mergeLocaleMessage(e,n){t.mergeLocaleMessage(e,n)},d(...e){return Reflect.apply(t.d,t,[...e])},getDateTimeFormat(e){return t.getDateTimeFormat(e)},setDateTimeFormat(e,n){t.setDateTimeFormat(e,n)},mergeDateTimeFormat(e,n){t.mergeDateTimeFormat(e,n)},n(...e){return Reflect.apply(t.n,t,[...e])},getNumberFormat(e){return t.getNumberFormat(e)},setNumberFormat(e,n){t.setNumberFormat(e,n)},mergeNumberFormat(e,n){t.mergeNumberFormat(e,n)},getChoiceIndex(e,t){return-1}};return r.__extender=n,r}}const fr={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:e=>"parent"===e||"global"===e,default:"parent"},i18n:{type:Object}};function pr({slots:e},t){if(1===t.length&&"default"===t[0]){const t=e.default?e.default():[];return t.reduce((e,t)=>[...e,...t.type===Wn.FK?t.children:[t]],[])}return t.reduce((t,n)=>{const r=e[n];return r&&(t[n]=r()),t},v())}function vr(e){return Wn.FK}const hr=(0,Wn.pM)({name:"i18n-t",props:f({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:e=>s(e)||!isNaN(e)}},fr),setup(e,t){const{slots:n,attrs:r}=t,o=e.i18n||Tr({useScope:e.scope,__useComponent:!0});return()=>{const a=Object.keys(n).filter(e=>"_"!==e),l=v();e.locale&&(l.locale=e.locale),void 0!==e.plural&&(l.plural=k(e.plural)?+e.plural:e.plural);const i=pr(t,a),s=o[Xn](e.keypath,i,l),u=f(v(),r),c=k(e.tag)||_(e.tag)?e.tag:vr();return(0,Wn.h)(c,u,s)}}}),mr=hr;function gr(e){return C(e)&&!k(e[0])}function br(e,t,n,r){const{slots:o,attrs:a}=t;return()=>{const t={part:!0};let l=v();e.locale&&(t.locale=e.locale),k(e.format)?t.key=e.format:_(e.format)&&(k(e.format.key)&&(t.key=e.format.key),l=Object.keys(e.format).reduce((t,r)=>n.includes(r)?f(v(),t,{[r]:e.format[r]}):t,v()));const i=r(e.value,t,l);let s=[t.key];C(i)?s=i.map((e,t)=>{const n=o[e.type],r=n?n({[e.type]:e.value,index:t,parts:i}):[e.value];return gr(r)&&(r[0].key=`${e.type}-${t}`),r}):k(i)&&(s=[i]);const u=f(v(),a),c=k(e.tag)||_(e.tag)?e.tag:vr();return(0,Wn.h)(c,u,s)}}const yr=(0,Wn.pM)({name:"i18n-n",props:f({value:{type:Number,required:!0},format:{type:[String,Object]}},fr),setup(e,t){const n=e.i18n||Tr({useScope:e.scope,__useComponent:!0});return br(e,t,Tn,(...e)=>n[Gn](...e))}}),wr=yr,Rr=(0,Wn.pM)({name:"i18n-d",props:f({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},fr),setup(e,t){const n=e.i18n||Tr({useScope:e.scope,__useComponent:!0});return br(e,t,Mn,(...e)=>n[Un](...e))}}),Cr=Rr;function xr(e,t){const n=e;if("composition"===e.mode)return n.__getInstance(t)||e.global;{const r=n.__getInstance(t);return null!=r?r.__composer:e.global.__composer}}function kr(e){const t=t=>{const{instance:n,modifiers:r,value:o}=t;if(!n||!n.$)throw Hn(Kn.UNEXPECTED_ERROR);const a=xr(e,n.$);const l=Er(o);return[Reflect.apply(a.t,a,[..._r(l)]),a]},n=(n,r)=>{const[a,l]=t(r);o&&e.global===l&&(n.__i18nWatcher=(0,Wn.wB)(l.locale,()=>{r.instance&&r.instance.$forceUpdate()})),n.__composer=l,n.textContent=a},r=e=>{o&&e.__i18nWatcher&&(e.__i18nWatcher(),e.__i18nWatcher=void 0,delete e.__i18nWatcher),e.__composer&&(e.__composer=void 0,delete e.__composer)},a=(e,{value:t})=>{if(e.__composer){const n=e.__composer,r=Er(t);e.textContent=Reflect.apply(n.t,n,[..._r(r)])}},l=e=>{const[n]=t(e);return{textContent:n}};return{created:n,unmounted:r,beforeUpdate:a,getSSRProps:l}}function Er(e){if(k(e))return{path:e};if(A(e)){if(!("path"in e))throw Hn(Kn.REQUIRED_VALUE,"path");return e}throw Hn(Kn.INVALID_VALUE)}function _r(e){const{path:t,locale:n,args:r,choice:o,plural:a}=e,l={},i=r||{};return k(n)&&(l.locale=n),s(o)&&(l.plural=o),s(a)&&(l.plural=a),[t,i,l]}function Sr(e,t,...n){const r=A(n[0])?n[0]:{},o=!!r.useI18nComponentName,a=!E(r.globalInstall)||r.globalInstall;a&&([o?"i18n":mr.name,"I18nT"].forEach(t=>e.component(t,mr)),[wr.name,"I18nN"].forEach(t=>e.component(t,wr)),[Cr.name,"I18nD"].forEach(t=>e.component(t,Cr))),e.directive("t",kr(t))}function Mr(e,t,n){return{beforeCreate(){const r=(0,Wn.nI)();if(!r)throw Hn(Kn.UNEXPECTED_ERROR);const o=this.$options;if(o.i18n){const r=o.i18n;if(o.__i18n&&(r.__i18n=o.__i18n),r.__root=t,this===this.$root)this.$i18n=Lr(e,r);else{r.__injectWithOption=!0,r.__extender=n.__vueI18nExtend,this.$i18n=dr(r);const e=this.$i18n;e.__extender&&(e.__disposer=e.__extender(this.$i18n))}}else if(o.__i18n)if(this===this.$root)this.$i18n=Lr(e,o);else{this.$i18n=dr({__i18n:o.__i18n,__injectWithOption:!0,__extender:n.__vueI18nExtend,__root:t});const e=this.$i18n;e.__extender&&(e.__disposer=e.__extender(this.$i18n))}else this.$i18n=e;o.__i18nGlobal&&tr(t,o,o),this.$t=(...e)=>this.$i18n.t(...e),this.$rt=(...e)=>this.$i18n.rt(...e),this.$tc=(...e)=>this.$i18n.tc(...e),this.$te=(e,t)=>this.$i18n.te(e,t),this.$d=(...e)=>this.$i18n.d(...e),this.$n=(...e)=>this.$i18n.n(...e),this.$tm=e=>this.$i18n.tm(e),n.__setInstance(r,this.$i18n)},mounted(){0},unmounted(){const e=(0,Wn.nI)();if(!e)throw Hn(Kn.UNEXPECTED_ERROR);const t=this.$i18n;delete this.$t,delete this.$rt,delete this.$tc,delete this.$te,delete this.$d,delete this.$n,delete this.$tm,t.__disposer&&(t.__disposer(),delete t.__disposer,delete t.__extender),n.__deleteInstance(e),delete this.$i18n}}}function Lr(e,t){e.locale=t.locale||e.locale,e.fallbackLocale=t.fallbackLocale||e.fallbackLocale,e.missing=t.missing||e.missing,e.silentTranslationWarn=t.silentTranslationWarn||e.silentFallbackWarn,e.silentFallbackWarn=t.silentFallbackWarn||e.silentFallbackWarn,e.formatFallbackMessages=t.formatFallbackMessages||e.formatFallbackMessages,e.postTranslation=t.postTranslation||e.postTranslation,e.warnHtmlInMessage=t.warnHtmlInMessage||e.warnHtmlInMessage,e.escapeParameterHtml=t.escapeParameterHtml||e.escapeParameterHtml,e.sync=t.sync||e.sync,e.__composer[qn](t.pluralizationRules||e.pluralizationRules);const n=Jn(e.locale,{messages:t.messages,__i18n:t.__i18n});return Object.keys(n).forEach(t=>e.mergeLocaleMessage(t,n[t])),t.datetimeFormats&&Object.keys(t.datetimeFormats).forEach(n=>e.mergeDateTimeFormat(n,t.datetimeFormats[n])),t.numberFormats&&Object.keys(t.numberFormats).forEach(n=>e.mergeNumberFormat(n,t.numberFormats[n])),e}const Ar=a("global-vue-i18n");function Or(e={},t){const n=__VUE_I18N_LEGACY_API__&&E(e.legacy)?e.legacy:__VUE_I18N_LEGACY_API__,r=!E(e.globalInjection)||e.globalInjection,o=!__VUE_I18N_LEGACY_API__||!n||!!e.allowComposition,l=new Map,[i,s]=Ir(e,n),u=a("");function c(e){return l.get(e)||null}function d(e,t){l.set(e,t)}function f(e){l.delete(e)}{const e={get mode(){return __VUE_I18N_LEGACY_API__&&n?"legacy":"composition"},get allowComposition(){return o},async install(t,...o){if(t.__VUE_I18N_SYMBOL__=u,t.provide(t.__VUE_I18N_SYMBOL__,e),A(o[0])){const t=o[0];e.__composerExtend=t.__composerExtend,e.__vueI18nExtend=t.__vueI18nExtend}let a=null;!n&&r&&(a=jr(t,e.global)),__VUE_I18N_FULL_INSTALL__&&Sr(t,e,...o),__VUE_I18N_LEGACY_API__&&n&&t.mixin(Mr(s,s.__composer,e));const l=t.unmount;t.unmount=()=>{a&&a(),e.dispose(),l()}},get global(){return s},dispose(){i.stop()},__instances:l,__getInstance:c,__setInstance:d,__deleteInstance:f};return e}}function Tr(e={}){const t=(0,Wn.nI)();if(null==t)throw Hn(Kn.MUST_BE_CALL_SETUP_TOP);if(!t.isCE&&null!=t.appContext.app&&!t.appContext.app.__VUE_I18N_SYMBOL__)throw Hn(Kn.NOT_INSTALLED);const n=Nr(t),r=Dr(n),o=er(t),a=Wr(e,o);if(__VUE_I18N_LEGACY_API__&&"legacy"===n.mode&&!e.__useComponent){if(!n.allowComposition)throw Hn(Kn.NOT_AVAILABLE_IN_LEGACY_MODE);return zr(t,a,r,e)}if("global"===a)return tr(r,e,o),r;if("parent"===a){let o=Pr(n,t,e.__useComponent);return null==o&&(o=r),o}const l=n;let i=l.__getInstance(t);if(null==i){const n=f({},e);"__i18n"in o&&(n.__i18n=o.__i18n),r&&(n.__root=r),i=ur(n),l.__composerExtend&&(i[Qn]=l.__composerExtend(i)),Br(l,t,i),l.__setInstance(t,i)}return i}function Ir(e,t,n){const r=(0,Dn.uY)();{const n=__VUE_I18N_LEGACY_API__&&t?r.run(()=>dr(e)):r.run(()=>ur(e));if(null==n)throw Hn(Kn.UNEXPECTED_ERROR);return[r,n]}}function Nr(e){{const t=(0,Wn.WQ)(e.isCE?Ar:e.appContext.app.__VUE_I18N_SYMBOL__);if(!t)throw Hn(e.isCE?Kn.NOT_INSTALLED_WITH_PROVIDE:Kn.UNEXPECTED_ERROR);return t}}function Wr(e,t){return d(e)?"__i18n"in t?"local":"global":e.useScope?e.useScope:"local"}function Dr(e){return"composition"===e.mode?e.global:e.global.__composer}function Pr(e,t,n=!1){let r=null;const o=t.root;let a=Fr(t,n);while(null!=a){const t=e;if("composition"===e.mode)r=t.__getInstance(a);else if(__VUE_I18N_LEGACY_API__){const e=t.__getInstance(a);null!=e&&(r=e.__composer,n&&r&&!r[Yn]&&(r=null))}if(null!=r)break;if(o===a)break;a=a.parent}return r}function Fr(e,t=!1){return null==e?null:t&&e.vnode.ctx||e.parent}function Br(e,t,n){(0,Wn.sV)(()=>{0},t),(0,Wn.hi)(()=>{const r=n;e.__deleteInstance(t);const o=r[Qn];o&&(o(),delete r[Qn])},t)}function zr(e,t,n,r={}){const o="local"===t,a=(0,Dn.IJ)(null);if(o&&e.proxy&&!e.proxy.$options.i18n&&!e.proxy.$options.__i18n)throw Hn(Kn.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION);const l=E(r.inheritLocale)?r.inheritLocale:!k(r.locale),i=(0,Dn.KR)(!o||l?n.locale.value:k(r.locale)?r.locale:Pt),s=(0,Dn.KR)(!o||l?n.fallbackLocale.value:k(r.fallbackLocale)||C(r.fallbackLocale)||A(r.fallbackLocale)||!1===r.fallbackLocale?r.fallbackLocale:i.value),u=(0,Dn.KR)(Jn(i.value,r)),d=(0,Dn.KR)(A(r.datetimeFormats)?r.datetimeFormats:{[i.value]:{}}),f=(0,Dn.KR)(A(r.numberFormats)?r.numberFormats:{[i.value]:{}}),p=o?n.missingWarn:!E(r.missingWarn)&&!c(r.missingWarn)||r.missingWarn,v=o?n.fallbackWarn:!E(r.fallbackWarn)&&!c(r.fallbackWarn)||r.fallbackWarn,h=o?n.fallbackRoot:!E(r.fallbackRoot)||r.fallbackRoot,m=!!r.fallbackFormat,g=x(r.missing)?r.missing:null,b=x(r.postTranslation)?r.postTranslation:null,y=o?n.warnHtmlMessage:!E(r.warnHtmlMessage)||r.warnHtmlMessage,w=!!r.escapeParameter,R=o?n.modifiers:A(r.modifiers)?r.modifiers:{},_=r.pluralRules||o&&n.pluralRules;function S(){return[i.value,s.value,u.value,d.value,f.value]}const M=(0,Wn.EW)({get:()=>a.value?a.value.locale.value:i.value,set:e=>{a.value&&(a.value.locale.value=e),i.value=e}}),L=(0,Wn.EW)({get:()=>a.value?a.value.fallbackLocale.value:s.value,set:e=>{a.value&&(a.value.fallbackLocale.value=e),s.value=e}}),O=(0,Wn.EW)(()=>a.value?a.value.messages.value:u.value),T=(0,Wn.EW)(()=>d.value),I=(0,Wn.EW)(()=>f.value);function N(){return a.value?a.value.getPostTranslationHandler():b}function W(e){a.value&&a.value.setPostTranslationHandler(e)}function D(){return a.value?a.value.getMissingHandler():g}function P(e){a.value&&a.value.setMissingHandler(e)}function F(e){return S(),e()}function B(...e){return a.value?F(()=>Reflect.apply(a.value.t,null,[...e])):F(()=>"")}function z(...e){return a.value?Reflect.apply(a.value.rt,null,[...e]):""}function $(...e){return a.value?F(()=>Reflect.apply(a.value.d,null,[...e])):F(()=>"")}function V(...e){return a.value?F(()=>Reflect.apply(a.value.n,null,[...e])):F(()=>"")}function j(e){return a.value?a.value.tm(e):{}}function K(e,t){return!!a.value&&a.value.te(e,t)}function H(e){return a.value?a.value.getLocaleMessage(e):{}}function X(e,t){a.value&&(a.value.setLocaleMessage(e,t),u.value[e]=t)}function U(e,t){a.value&&a.value.mergeLocaleMessage(e,t)}function G(e){return a.value?a.value.getDateTimeFormat(e):{}}function q(e,t){a.value&&(a.value.setDateTimeFormat(e,t),d.value[e]=t)}function Y(e,t){a.value&&a.value.mergeDateTimeFormat(e,t)}function Q(e){return a.value?a.value.getNumberFormat(e):{}}function Z(e,t){a.value&&(a.value.setNumberFormat(e,t),f.value[e]=t)}function J(e,t){a.value&&a.value.mergeNumberFormat(e,t)}const ee={get id(){return a.value?a.value.id:-1},locale:M,fallbackLocale:L,messages:O,datetimeFormats:T,numberFormats:I,get inheritLocale(){return a.value?a.value.inheritLocale:l},set inheritLocale(e){a.value&&(a.value.inheritLocale=e)},get availableLocales(){return a.value?a.value.availableLocales:Object.keys(u.value)},get modifiers(){return a.value?a.value.modifiers:R},get pluralRules(){return a.value?a.value.pluralRules:_},get isGlobal(){return!!a.value&&a.value.isGlobal},get missingWarn(){return a.value?a.value.missingWarn:p},set missingWarn(e){a.value&&(a.value.missingWarn=e)},get fallbackWarn(){return a.value?a.value.fallbackWarn:v},set fallbackWarn(e){a.value&&(a.value.missingWarn=e)},get fallbackRoot(){return a.value?a.value.fallbackRoot:h},set fallbackRoot(e){a.value&&(a.value.fallbackRoot=e)},get fallbackFormat(){return a.value?a.value.fallbackFormat:m},set fallbackFormat(e){a.value&&(a.value.fallbackFormat=e)},get warnHtmlMessage(){return a.value?a.value.warnHtmlMessage:y},set warnHtmlMessage(e){a.value&&(a.value.warnHtmlMessage=e)},get escapeParameter(){return a.value?a.value.escapeParameter:w},set escapeParameter(e){a.value&&(a.value.escapeParameter=e)},t:B,getPostTranslationHandler:N,setPostTranslationHandler:W,getMissingHandler:D,setMissingHandler:P,rt:z,d:$,n:V,tm:j,te:K,getLocaleMessage:H,setLocaleMessage:X,mergeLocaleMessage:U,getDateTimeFormat:G,setDateTimeFormat:q,mergeDateTimeFormat:Y,getNumberFormat:Q,setNumberFormat:Z,mergeNumberFormat:J};function te(e){e.locale.value=i.value,e.fallbackLocale.value=s.value,Object.keys(u.value).forEach(t=>{e.mergeLocaleMessage(t,u.value[t])}),Object.keys(d.value).forEach(t=>{e.mergeDateTimeFormat(t,d.value[t])}),Object.keys(f.value).forEach(t=>{e.mergeNumberFormat(t,f.value[t])}),e.escapeParameter=w,e.fallbackFormat=m,e.fallbackRoot=h,e.fallbackWarn=v,e.missingWarn=p,e.warnHtmlMessage=y}return(0,Wn.KC)(()=>{if(null==e.proxy||null==e.proxy.$i18n)throw Hn(Kn.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);const n=a.value=e.proxy.$i18n.__composer;"global"===t?(i.value=n.locale.value,s.value=n.fallbackLocale.value,u.value=n.messages.value,d.value=n.datetimeFormats.value,f.value=n.numberFormats.value):o&&te(n)}),ee}const $r=["locale","fallbackLocale","availableLocales"],Vr=["t","rt","d","n","tm","te"];function jr(e,t){const n=Object.create(null);$r.forEach(e=>{const r=Object.getOwnPropertyDescriptor(t,e);if(!r)throw Hn(Kn.UNEXPECTED_ERROR);const o=(0,Dn.i9)(r.value)?{get(){return r.value.value},set(e){r.value.value=e}}:{get(){return r.get&&r.get()}};Object.defineProperty(n,e,o)}),e.config.globalProperties.$i18n=n,Vr.forEach(n=>{const r=Object.getOwnPropertyDescriptor(t,n);if(!r||!r.value)throw Hn(Kn.UNEXPECTED_ERROR);Object.defineProperty(e.config.globalProperties,`$${n}`,r)});const r=()=>{delete e.config.globalProperties.$i18n,Vr.forEach(t=>{delete e.config.globalProperties[`$${t}`]})};return r}if(Fn(),__INTLIFY_JIT_COMPILATION__?Kt(hn):Kt(vn),Ht(at),Xt(Ot),__INTLIFY_PROD_DEVTOOLS__){const e=m();e.__INTLIFY__=!0,mt(e.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__)}},85454:function(e,t,n){"use strict";var r=n(44672),o=n(42132),a=n(56636);function l(e){return(0,r.A)(e,a.A,o.A)}t.A=l},86368:function(e,t,n){"use strict";var r=n(46518),o=n(44576),a=n(59225).clear;r({global:!0,bind:!0,enumerable:!0,forced:o.clearImmediate!==a},{clearImmediate:a})},86484:function(e,t,n){"use strict";n.d(t,{DD:function(){return m},n4:function(){return it}});n(44114),n(18111),n(81148),n(22489),n(20116),n(7588),n(61701),n(18237),n(13579),n(17642),n(58004),n(33853),n(45876),n(32475),n(15024),n(31698);var r="top",o="bottom",a="right",l="left",i="auto",s=[r,o,a,l],u="start",c="end",d="clippingParents",f="viewport",p="popper",v="reference",h=s.reduce(function(e,t){return e.concat([t+"-"+u,t+"-"+c])},[]),m=[].concat(s,[i]).reduce(function(e,t){return e.concat([t,t+"-"+u,t+"-"+c])},[]),g="beforeRead",b="read",y="afterRead",w="beforeMain",R="main",C="afterMain",x="beforeWrite",k="write",E="afterWrite",_=[g,b,y,w,R,C,x,k,E];function S(e){return e?(e.nodeName||"").toLowerCase():null}function M(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function L(e){var t=M(e).Element;return e instanceof t||e instanceof Element}function A(e){var t=M(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function O(e){if("undefined"==typeof ShadowRoot)return!1;var t=M(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function T(e){var t=e.state;Object.keys(t.elements).forEach(function(e){var n=t.styles[e]||{},r=t.attributes[e]||{},o=t.elements[e];!A(o)||!S(o)||(Object.assign(o.style,n),Object.keys(r).forEach(function(e){var t=r[e];!1===t?o.removeAttribute(e):o.setAttribute(e,!0===t?"":t)}))})}function I(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach(function(e){var r=t.elements[e],o=t.attributes[e]||{},a=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]),l=a.reduce(function(e,t){return e[t]="",e},{});!A(r)||!S(r)||(Object.assign(r.style,l),Object.keys(o).forEach(function(e){r.removeAttribute(e)}))})}}var N={name:"applyStyles",enabled:!0,phase:"write",fn:T,effect:I,requires:["computeStyles"]};function W(e){return e.split("-")[0]}var D=Math.max,P=Math.min,F=Math.round;function B(e,t){void 0===t&&(t=!1);var n=e.getBoundingClientRect(),r=1,o=1;if(A(e)&&t){var a=e.offsetHeight,l=e.offsetWidth;l>0&&(r=F(n.width)/l||1),a>0&&(o=F(n.height)/a||1)}return{width:n.width/r,height:n.height/o,top:n.top/o,right:n.right/r,bottom:n.bottom/o,left:n.left/r,x:n.left/r,y:n.top/o}}function z(e){var t=B(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function $(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&O(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function V(e){return M(e).getComputedStyle(e)}function j(e){return["table","td","th"].indexOf(S(e))>=0}function K(e){return((L(e)?e.ownerDocument:e.document)||window.document).documentElement}function H(e){return"html"===S(e)?e:e.assignedSlot||e.parentNode||(O(e)?e.host:null)||K(e)}function X(e){return A(e)&&"fixed"!==V(e).position?e.offsetParent:null}function U(e){var t=-1!==navigator.userAgent.toLowerCase().indexOf("firefox"),n=-1!==navigator.userAgent.indexOf("Trident");if(n&&A(e)){var r=V(e);if("fixed"===r.position)return null}var o=H(e);for(O(o)&&(o=o.host);A(o)&&["html","body"].indexOf(S(o))<0;){var a=V(o);if("none"!==a.transform||"none"!==a.perspective||"paint"===a.contain||-1!==["transform","perspective"].indexOf(a.willChange)||t&&"filter"===a.willChange||t&&a.filter&&"none"!==a.filter)return o;o=o.parentNode}return null}function G(e){for(var t=M(e),n=X(e);n&&j(n)&&"static"===V(n).position;)n=X(n);return n&&("html"===S(n)||"body"===S(n)&&"static"===V(n).position)?t:n||U(e)||t}function q(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Y(e,t,n){return D(e,P(t,n))}function Q(e,t,n){var r=Y(e,t,n);return r>n?n:r}function Z(){return{top:0,right:0,bottom:0,left:0}}function J(e){return Object.assign({},Z(),e)}function ee(e,t){return t.reduce(function(t,n){return t[n]=e,t},{})}var te=function(e,t){return e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e,J("number"!=typeof e?e:ee(e,s))};function ne(e){var t,n=e.state,i=e.name,s=e.options,u=n.elements.arrow,c=n.modifiersData.popperOffsets,d=W(n.placement),f=q(d),p=[l,a].indexOf(d)>=0,v=p?"height":"width";if(u&&c){var h=te(s.padding,n),m=z(u),g="y"===f?r:l,b="y"===f?o:a,y=n.rects.reference[v]+n.rects.reference[f]-c[f]-n.rects.popper[v],w=c[f]-n.rects.reference[f],R=G(u),C=R?"y"===f?R.clientHeight||0:R.clientWidth||0:0,x=y/2-w/2,k=h[g],E=C-m[v]-h[b],_=C/2-m[v]/2+x,S=Y(k,_,E),M=f;n.modifiersData[i]=(t={},t[M]=S,t.centerOffset=S-_,t)}}function re(e){var t=e.state,n=e.options,r=n.element,o=void 0===r?"[data-popper-arrow]":r;null!=o&&("string"==typeof o&&(o=t.elements.popper.querySelector(o),!o)||!$(t.elements.popper,o)||(t.elements.arrow=o))}var oe={name:"arrow",enabled:!0,phase:"main",fn:ne,effect:re,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ae(e){return e.split("-")[1]}var le={top:"auto",right:"auto",bottom:"auto",left:"auto"};function ie(e){var t=e.x,n=e.y,r=window,o=r.devicePixelRatio||1;return{x:F(t*o)/o||0,y:F(n*o)/o||0}}function se(e){var t,n=e.popper,i=e.popperRect,s=e.placement,u=e.variation,d=e.offsets,f=e.position,p=e.gpuAcceleration,v=e.adaptive,h=e.roundOffsets,m=e.isFixed,g=d.x,b=void 0===g?0:g,y=d.y,w=void 0===y?0:y,R="function"==typeof h?h({x:b,y:w}):{x:b,y:w};b=R.x,w=R.y;var C=d.hasOwnProperty("x"),x=d.hasOwnProperty("y"),k=l,E=r,_=window;if(v){var S=G(n),L="clientHeight",A="clientWidth";if(S===M(n)&&(S=K(n),"static"!==V(S).position&&"absolute"===f&&(L="scrollHeight",A="scrollWidth")),s===r||(s===l||s===a)&&u===c){E=o;var O=m&&S===_&&_.visualViewport?_.visualViewport.height:S[L];w-=O-i.height,w*=p?1:-1}if(s===l||(s===r||s===o)&&u===c){k=a;var T=m&&S===_&&_.visualViewport?_.visualViewport.width:S[A];b-=T-i.width,b*=p?1:-1}}var I,N=Object.assign({position:f},v&&le),W=!0===h?ie({x:b,y:w}):{x:b,y:w};return b=W.x,w=W.y,p?Object.assign({},N,(I={},I[E]=x?"0":"",I[k]=C?"0":"",I.transform=(_.devicePixelRatio||1)<=1?"translate("+b+"px, "+w+"px)":"translate3d("+b+"px, "+w+"px, 0)",I)):Object.assign({},N,(t={},t[E]=x?w+"px":"",t[k]=C?b+"px":"",t.transform="",t))}function ue(e){var t=e.state,n=e.options,r=n.gpuAcceleration,o=void 0===r||r,a=n.adaptive,l=void 0===a||a,i=n.roundOffsets,s=void 0===i||i,u={placement:W(t.placement),variation:ae(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,se(Object.assign({},u,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:l,roundOffsets:s})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,se(Object.assign({},u,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:s})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}var ce={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:ue,data:{}},de={passive:!0};function fe(e){var t=e.state,n=e.instance,r=e.options,o=r.scroll,a=void 0===o||o,l=r.resize,i=void 0===l||l,s=M(t.elements.popper),u=[].concat(t.scrollParents.reference,t.scrollParents.popper);return a&&u.forEach(function(e){e.addEventListener("scroll",n.update,de)}),i&&s.addEventListener("resize",n.update,de),function(){a&&u.forEach(function(e){e.removeEventListener("scroll",n.update,de)}),i&&s.removeEventListener("resize",n.update,de)}}var pe={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:fe,data:{}},ve={left:"right",right:"left",bottom:"top",top:"bottom"};function he(e){return e.replace(/left|right|bottom|top/g,function(e){return ve[e]})}var me={start:"end",end:"start"};function ge(e){return e.replace(/start|end/g,function(e){return me[e]})}function be(e){var t=M(e),n=t.pageXOffset,r=t.pageYOffset;return{scrollLeft:n,scrollTop:r}}function ye(e){return B(K(e)).left+be(e).scrollLeft}function we(e){var t=M(e),n=K(e),r=t.visualViewport,o=n.clientWidth,a=n.clientHeight,l=0,i=0;return r&&(o=r.width,a=r.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(l=r.offsetLeft,i=r.offsetTop)),{width:o,height:a,x:l+ye(e),y:i}}function Re(e){var t,n=K(e),r=be(e),o=null==(t=e.ownerDocument)?void 0:t.body,a=D(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),l=D(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),i=-r.scrollLeft+ye(e),s=-r.scrollTop;return"rtl"===V(o||n).direction&&(i+=D(n.clientWidth,o?o.clientWidth:0)-a),{width:a,height:l,x:i,y:s}}function Ce(e){var t=V(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function xe(e){return["html","body","#document"].indexOf(S(e))>=0?e.ownerDocument.body:A(e)&&Ce(e)?e:xe(H(e))}function ke(e,t){var n;void 0===t&&(t=[]);var r=xe(e),o=r===(null==(n=e.ownerDocument)?void 0:n.body),a=M(r),l=o?[a].concat(a.visualViewport||[],Ce(r)?r:[]):r,i=t.concat(l);return o?i:i.concat(ke(H(l)))}function Ee(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function _e(e){var t=B(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}function Se(e,t){return t===f?Ee(we(e)):L(t)?_e(t):Ee(Re(K(e)))}function Me(e){var t=ke(H(e)),n=["absolute","fixed"].indexOf(V(e).position)>=0,r=n&&A(e)?G(e):e;return L(r)?t.filter(function(e){return L(e)&&$(e,r)&&"body"!==S(e)}):[]}function Le(e,t,n){var r="clippingParents"===t?Me(e):[].concat(t),o=[].concat(r,[n]),a=o[0],l=o.reduce(function(t,n){var r=Se(e,n);return t.top=D(r.top,t.top),t.right=P(r.right,t.right),t.bottom=P(r.bottom,t.bottom),t.left=D(r.left,t.left),t},Se(e,a));return l.width=l.right-l.left,l.height=l.bottom-l.top,l.x=l.left,l.y=l.top,l}function Ae(e){var t,n=e.reference,i=e.element,s=e.placement,d=s?W(s):null,f=s?ae(s):null,p=n.x+n.width/2-i.width/2,v=n.y+n.height/2-i.height/2;switch(d){case r:t={x:p,y:n.y-i.height};break;case o:t={x:p,y:n.y+n.height};break;case a:t={x:n.x+n.width,y:v};break;case l:t={x:n.x-i.width,y:v};break;default:t={x:n.x,y:n.y}}var h=d?q(d):null;if(null!=h){var m="y"===h?"height":"width";switch(f){case u:t[h]=t[h]-(n[m]/2-i[m]/2);break;case c:t[h]=t[h]+(n[m]/2-i[m]/2);break}}return t}function Oe(e,t){void 0===t&&(t={});var n=t,l=n.placement,i=void 0===l?e.placement:l,u=n.boundary,c=void 0===u?d:u,h=n.rootBoundary,m=void 0===h?f:h,g=n.elementContext,b=void 0===g?p:g,y=n.altBoundary,w=void 0!==y&&y,R=n.padding,C=void 0===R?0:R,x=J("number"!=typeof C?C:ee(C,s)),k=b===p?v:p,E=e.rects.popper,_=e.elements[w?k:b],S=Le(L(_)?_:_.contextElement||K(e.elements.popper),c,m),M=B(e.elements.reference),A=Ae({reference:M,element:E,strategy:"absolute",placement:i}),O=Ee(Object.assign({},E,A)),T=b===p?O:M,I={top:S.top-T.top+x.top,bottom:T.bottom-S.bottom+x.bottom,left:S.left-T.left+x.left,right:T.right-S.right+x.right},N=e.modifiersData.offset;if(b===p&&N){var W=N[i];Object.keys(I).forEach(function(e){var t=[a,o].indexOf(e)>=0?1:-1,n=[r,o].indexOf(e)>=0?"y":"x";I[e]+=W[n]*t})}return I}function Te(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=n.boundary,a=n.rootBoundary,l=n.padding,i=n.flipVariations,u=n.allowedAutoPlacements,c=void 0===u?m:u,d=ae(r),f=d?i?h:h.filter(function(e){return ae(e)===d}):s,p=f.filter(function(e){return c.indexOf(e)>=0});0===p.length&&(p=f);var v=p.reduce(function(t,n){return t[n]=Oe(e,{placement:n,boundary:o,rootBoundary:a,padding:l})[W(n)],t},{});return Object.keys(v).sort(function(e,t){return v[e]-v[t]})}function Ie(e){if(W(e)===i)return[];var t=he(e);return[ge(e),t,ge(t)]}function Ne(e){var t=e.state,n=e.options,s=e.name;if(!t.modifiersData[s]._skip){for(var c=n.mainAxis,d=void 0===c||c,f=n.altAxis,p=void 0===f||f,v=n.fallbackPlacements,h=n.padding,m=n.boundary,g=n.rootBoundary,b=n.altBoundary,y=n.flipVariations,w=void 0===y||y,R=n.allowedAutoPlacements,C=t.options.placement,x=W(C),k=x===C,E=v||(k||!w?[he(C)]:Ie(C)),_=[C].concat(E).reduce(function(e,n){return e.concat(W(n)===i?Te(t,{placement:n,boundary:m,rootBoundary:g,padding:h,flipVariations:w,allowedAutoPlacements:R}):n)},[]),S=t.rects.reference,M=t.rects.popper,L=new Map,A=!0,O=_[0],T=0;T<_.length;T++){var I=_[T],N=W(I),D=ae(I)===u,P=[r,o].indexOf(N)>=0,F=P?"width":"height",B=Oe(t,{placement:I,boundary:m,rootBoundary:g,altBoundary:b,padding:h}),z=P?D?a:l:D?o:r;S[F]>M[F]&&(z=he(z));var $=he(z),V=[];if(d&&V.push(B[N]<=0),p&&V.push(B[z]<=0,B[$]<=0),V.every(function(e){return e})){O=I,A=!1;break}L.set(I,V)}if(A)for(var j=w?3:1,K=function(e){var t=_.find(function(t){var n=L.get(t);if(n)return n.slice(0,e).every(function(e){return e})});if(t)return O=t,"break"},H=j;H>0;H--){var X=K(H);if("break"===X)break}t.placement!==O&&(t.modifiersData[s]._skip=!0,t.placement=O,t.reset=!0)}}var We={name:"flip",enabled:!0,phase:"main",fn:Ne,requiresIfExists:["offset"],data:{_skip:!1}};function De(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function Pe(e){return[r,a,o,l].some(function(t){return e[t]>=0})}function Fe(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,a=t.modifiersData.preventOverflow,l=Oe(t,{elementContext:"reference"}),i=Oe(t,{altBoundary:!0}),s=De(l,r),u=De(i,o,a),c=Pe(s),d=Pe(u);t.modifiersData[n]={referenceClippingOffsets:s,popperEscapeOffsets:u,isReferenceHidden:c,hasPopperEscaped:d},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":c,"data-popper-escaped":d})}var Be={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:Fe};function ze(e,t,n){var o=W(e),i=[l,r].indexOf(o)>=0?-1:1,s="function"==typeof n?n(Object.assign({},t,{placement:e})):n,u=s[0],c=s[1];return u=u||0,c=(c||0)*i,[l,a].indexOf(o)>=0?{x:c,y:u}:{x:u,y:c}}function $e(e){var t=e.state,n=e.options,r=e.name,o=n.offset,a=void 0===o?[0,0]:o,l=m.reduce(function(e,n){return e[n]=ze(n,t.rects,a),e},{}),i=l[t.placement],s=i.x,u=i.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=s,t.modifiersData.popperOffsets.y+=u),t.modifiersData[r]=l}var Ve={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:$e};function je(e){var t=e.state,n=e.name;t.modifiersData[n]=Ae({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}var Ke={name:"popperOffsets",enabled:!0,phase:"read",fn:je,data:{}};function He(e){return"x"===e?"y":"x"}function Xe(e){var t=e.state,n=e.options,i=e.name,s=n.mainAxis,c=void 0===s||s,d=n.altAxis,f=void 0!==d&&d,p=n.boundary,v=n.rootBoundary,h=n.altBoundary,m=n.padding,g=n.tether,b=void 0===g||g,y=n.tetherOffset,w=void 0===y?0:y,R=Oe(t,{boundary:p,rootBoundary:v,padding:m,altBoundary:h}),C=W(t.placement),x=ae(t.placement),k=!x,E=q(C),_=He(E),S=t.modifiersData.popperOffsets,M=t.rects.reference,L=t.rects.popper,A="function"==typeof w?w(Object.assign({},t.rects,{placement:t.placement})):w,O="number"==typeof A?{mainAxis:A,altAxis:A}:Object.assign({mainAxis:0,altAxis:0},A),T=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,I={x:0,y:0};if(S){if(c){var N,F="y"===E?r:l,B="y"===E?o:a,$="y"===E?"height":"width",V=S[E],j=V+R[F],K=V-R[B],H=b?-L[$]/2:0,X=x===u?M[$]:L[$],U=x===u?-L[$]:-M[$],J=t.elements.arrow,ee=b&&J?z(J):{width:0,height:0},te=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:Z(),ne=te[F],re=te[B],oe=Y(0,M[$],ee[$]),le=k?M[$]/2-H-oe-ne-O.mainAxis:X-oe-ne-O.mainAxis,ie=k?-M[$]/2+H+oe+re+O.mainAxis:U+oe+re+O.mainAxis,se=t.elements.arrow&&G(t.elements.arrow),ue=se?"y"===E?se.clientTop||0:se.clientLeft||0:0,ce=null!=(N=null==T?void 0:T[E])?N:0,de=V+le-ce-ue,fe=V+ie-ce,pe=Y(b?P(j,de):j,V,b?D(K,fe):K);S[E]=pe,I[E]=pe-V}if(f){var ve,he="x"===E?r:l,me="x"===E?o:a,ge=S[_],be="y"===_?"height":"width",ye=ge+R[he],we=ge-R[me],Re=-1!==[r,l].indexOf(C),Ce=null!=(ve=null==T?void 0:T[_])?ve:0,xe=Re?ye:ge-M[be]-L[be]-Ce+O.altAxis,ke=Re?ge+M[be]+L[be]-Ce-O.altAxis:we,Ee=b&&Re?Q(xe,ge,ke):Y(b?xe:ye,ge,b?ke:we);S[_]=Ee,I[_]=Ee-ge}t.modifiersData[i]=I}}var Ue={name:"preventOverflow",enabled:!0,phase:"main",fn:Xe,requiresIfExists:["offset"]};function Ge(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function qe(e){return e!==M(e)&&A(e)?Ge(e):be(e)}function Ye(e){var t=e.getBoundingClientRect(),n=F(t.width)/e.offsetWidth||1,r=F(t.height)/e.offsetHeight||1;return 1!==n||1!==r}function Qe(e,t,n){void 0===n&&(n=!1);var r=A(t),o=A(t)&&Ye(t),a=K(t),l=B(e,o),i={scrollLeft:0,scrollTop:0},s={x:0,y:0};return(r||!r&&!n)&&(("body"!==S(t)||Ce(a))&&(i=qe(t)),A(t)?(s=B(t,!0),s.x+=t.clientLeft,s.y+=t.clientTop):a&&(s.x=ye(a))),{x:l.left+i.scrollLeft-s.x,y:l.top+i.scrollTop-s.y,width:l.width,height:l.height}}function Ze(e){var t=new Map,n=new Set,r=[];function o(e){n.add(e.name);var a=[].concat(e.requires||[],e.requiresIfExists||[]);a.forEach(function(e){if(!n.has(e)){var r=t.get(e);r&&o(r)}}),r.push(e)}return e.forEach(function(e){t.set(e.name,e)}),e.forEach(function(e){n.has(e.name)||o(e)}),r}function Je(e){var t=Ze(e);return _.reduce(function(e,n){return e.concat(t.filter(function(e){return e.phase===n}))},[])}function et(e){var t;return function(){return t||(t=new Promise(function(n){Promise.resolve().then(function(){t=void 0,n(e())})})),t}}function tt(e){var t=e.reduce(function(e,t){var n=e[t.name];return e[t.name]=n?Object.assign({},n,t,{options:Object.assign({},n.options,t.options),data:Object.assign({},n.data,t.data)}):t,e},{});return Object.keys(t).map(function(e){return t[e]})}var nt={placement:"bottom",modifiers:[],strategy:"absolute"};function rt(){for(var e=arguments.length,t=new Array(e),n=0;n!0,opened:()=>!0,close:()=>!0,closed:()=>!0,[l.l4]:e=>(0,i.Lm)(e),openAutoFocus:()=>!0,closeAutoFocus:()=>!0};Symbol("dialogContextKey")},87254:function(e,t,n){"use strict";n.d(t,{F:function(){return r},w:function(){return o}});const r=Symbol("formContextKey"),o=Symbol("formItemContextKey")},87849:function(e,t,n){"use strict";var r=n(80055);t.mw={prefix:r.prefix,iconName:r.iconName,icon:[r.width,r.height,r.aliases,r.unicode,r.svgPathData]},t.H9=t.mw,r.prefix,r.iconName,r.width,r.height,r.aliases,r.unicode,r.svgPathData,r.aliases},88500:function(e,t,n){"use strict";var r=n(67788),o="Expected a function";function a(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError(o);var n=function(){var r=arguments,o=t?t.apply(this,r):r[0],a=n.cache;if(a.has(o))return a.get(o);var l=e.apply(this,r);return n.cache=a.set(o,l)||a,l};return n.cache=new(a.Cache||r.A),n}a.Cache=r.A,t.A=a},88502:function(e,t,n){"use strict";var r=n(53658);t.mw={prefix:r.prefix,iconName:r.iconName,icon:[r.width,r.height,r.aliases,r.unicode,r.svgPathData]},t.ye=t.mw,r.prefix,r.iconName,r.width,r.height,r.aliases,r.unicode,r.svgPathData,r.aliases},88559:function(e,t,n){"use strict";n.d(t,{kA:function(){return A}});var r=n(56768),o=n(90144),a=n(24232),l=n(97687),i=n(97017),s=n(45130),u=n(20017);const c=Symbol("scrollbarContextKey");var d=n(47378);const f=(0,d.b_)({vertical:Boolean,size:String,move:Number,ratio:{type:Number,required:!0},always:Boolean});var p=n(99077),v=n(93513),h=n(86894);const m="Thumb",g=(0,r.pM)({__name:"thumb",props:f,setup(e){const t=e,n=(0,r.WQ)(c),d=(0,v.DU)("scrollbar");n||(0,h.$)(m,"can not inject scrollbar context");const f=(0,o.KR)(),p=(0,o.KR)(),g=(0,o.KR)({}),b=(0,o.KR)(!1);let y=!1,w=!1,R=0,C=0,x=u.oc?document.onselectstart:null;const k=(0,r.EW)(()=>i.rc[t.vertical?"vertical":"horizontal"]),E=(0,r.EW)(()=>(0,i.Ap)({size:t.size,move:t.move,bar:k.value})),_=(0,r.EW)(()=>f.value[k.value.offset]**2/n.wrapElement[k.value.scrollSize]/t.ratio/p.value[k.value.offset]),S=e=>{var t;if(e.stopPropagation(),e.ctrlKey||[1,2].includes(e.button))return;null==(t=window.getSelection())||t.removeAllRanges(),L(e);const n=e.currentTarget;n&&(g.value[k.value.axis]=n[k.value.offset]-(e[k.value.client]-n.getBoundingClientRect()[k.value.direction]))},M=e=>{if(!p.value||!f.value||!n.wrapElement)return;const t=Math.abs(e.target.getBoundingClientRect()[k.value.direction]-e[k.value.client]),r=p.value[k.value.offset]/2,o=100*(t-r)*_.value/f.value[k.value.offset];n.wrapElement[k.value.scroll]=o*n.wrapElement[k.value.scrollSize]/100},L=e=>{e.stopImmediatePropagation(),y=!0,R=n.wrapElement.scrollHeight,C=n.wrapElement.scrollWidth,document.addEventListener("mousemove",A),document.addEventListener("mouseup",O),x=document.onselectstart,document.onselectstart=()=>!1},A=e=>{if(!f.value||!p.value)return;if(!1===y)return;const t=g.value[k.value.axis];if(!t)return;const r=-1*(f.value.getBoundingClientRect()[k.value.direction]-e[k.value.client]),o=p.value[k.value.offset]-t,a=100*(r-o)*_.value/f.value[k.value.offset];"scrollLeft"===k.value.scroll?n.wrapElement[k.value.scroll]=a*C/100:n.wrapElement[k.value.scroll]=a*R/100},O=()=>{y=!1,g.value[k.value.axis]=0,document.removeEventListener("mousemove",A),document.removeEventListener("mouseup",O),N(),w&&(b.value=!1)},T=()=>{w=!1,b.value=!!t.size},I=()=>{w=!0,b.value=y};(0,r.xo)(()=>{N(),document.removeEventListener("mouseup",O)});const N=()=>{document.onselectstart!==x&&(document.onselectstart=x)};return(0,l.MLh)((0,o.lW)(n,"scrollbarElement"),"mousemove",T),(0,l.MLh)((0,o.lW)(n,"scrollbarElement"),"mouseleave",I),(e,t)=>((0,r.uX)(),(0,r.Wv)(s.eB,{name:(0,o.R1)(d).b("fade"),persisted:""},{default:(0,r.k6)(()=>[(0,r.bo)((0,r.Lk)("div",{ref_key:"instance",ref:f,class:(0,a.C4)([(0,o.R1)(d).e("bar"),(0,o.R1)(d).is((0,o.R1)(k).key)]),onMousedown:M,onClick:(0,s.D$)(()=>{},["stop"])},[(0,r.Lk)("div",{ref_key:"thumb",ref:p,class:(0,a.C4)((0,o.R1)(d).e("thumb")),style:(0,a.Tr)((0,o.R1)(E)),onMousedown:S},null,38)],42,["onClick"]),[[s.aG,e.always||b.value]])]),_:1},8,["name"]))}});var b=(0,p.A)(g,[["__file","thumb.vue"]]);const y=(0,d.b_)({always:{type:Boolean,default:!0},minSize:{type:Number,required:!0}}),w=(0,r.pM)({__name:"bar",props:y,setup(e,{expose:t}){const n=e,a=(0,r.WQ)(c),l=(0,o.KR)(0),s=(0,o.KR)(0),u=(0,o.KR)(""),d=(0,o.KR)(""),f=(0,o.KR)(1),p=(0,o.KR)(1),v=e=>{if(e){const t=e.offsetHeight-i.Rd,n=e.offsetWidth-i.Rd;s.value=100*e.scrollTop/t*f.value,l.value=100*e.scrollLeft/n*p.value}},h=()=>{const e=null==a?void 0:a.wrapElement;if(!e)return;const t=e.offsetHeight-i.Rd,r=e.offsetWidth-i.Rd,o=t**2/e.scrollHeight,l=r**2/e.scrollWidth,s=Math.max(o,n.minSize),c=Math.max(l,n.minSize);f.value=o/(t-o)/(s/(t-s)),p.value=l/(r-l)/(c/(r-c)),d.value=s+i.Rd((0,r.uX)(),(0,r.CE)(r.FK,null,[(0,r.bF)(b,{move:l.value,ratio:p.value,size:u.value,always:e.always},null,8,["move","ratio","size","always"]),(0,r.bF)(b,{move:s.value,ratio:f.value,size:d.value,vertical:"",always:e.always},null,8,["move","ratio","size","always"])],64))}});var R=(0,p.A)(w,[["__file","bar.vue"]]),C=n(9825),x=n(93558),k=n(12235);const E="ElScrollbar",_=(0,r.pM)({name:E}),S=(0,r.pM)({..._,props:C.b,emits:C.f,setup(e,{expose:t,emit:n}){const i=e,s=(0,v.DU)("scrollbar");let u,d,f,p=0,m=0,g="";const b={bottom:!1,top:!1,right:!1,left:!1},y=(0,o.KR)(),w=(0,o.KR)(),C=(0,o.KR)(),_=(0,o.KR)(),S=(0,r.EW)(()=>{const e={},t=(0,x._V)(i.height),n=(0,x._V)(i.maxHeight);return t&&(e.height=t),n&&(e.maxHeight=n),[i.wrapStyle,e]}),M=(0,r.EW)(()=>[i.wrapClass,s.e("wrap"),{[s.em("wrap","hidden-default")]:!i.native}]),L=(0,r.EW)(()=>[s.e("view"),i.viewClass]),A=e=>{var t;return null!=(t=b[e])&&t},O={top:"bottom",bottom:"top",left:"right",right:"left"},T=e=>{const t=O[g];if(!t)return;const n=e[g],r=e[t];n&&!b[g]&&(b[g]=!0),!r&&b[t]&&(b[t]=!1)},I=()=>{var e;if(w.value){null==(e=_.value)||e.handleScroll(w.value);const t=p,r=m;p=w.value.scrollTop,m=w.value.scrollLeft;const o={bottom:p+w.value.clientHeight>=w.value.scrollHeight-i.distance,top:p<=i.distance&&0!==t,right:m+w.value.clientWidth>=w.value.scrollWidth-i.distance&&r!==m,left:m<=i.distance&&0!==r};if(n("scroll",{scrollTop:p,scrollLeft:m}),t!==p&&(g=p>t?"bottom":"top"),r!==m&&(g=m>r?"right":"left"),i.distance>0){if(A(g))return;T(o)}o[g]&&n("end-reached",g)}};function N(e,t){(0,a.Gv)(e)?w.value.scrollTo(e):(0,k.Et)(e)&&(0,k.Et)(t)&&w.value.scrollTo(e,t)}const W=e=>{(0,k.Et)(e)?w.value.scrollTop=e:(0,h.U)(E,"value must be a number")},D=e=>{(0,k.Et)(e)?w.value.scrollLeft=e:(0,h.U)(E,"value must be a number")},P=()=>{var e;null==(e=_.value)||e.update(),b[g]=!1};return(0,r.wB)(()=>i.noresize,e=>{e?(null==u||u(),null==d||d(),null==f||f()):(({stop:u}=(0,l.wYm)(C,P)),({stop:d}=(0,l.wYm)(w,P)),f=(0,l.MLh)("resize",P))},{immediate:!0}),(0,r.wB)(()=>[i.maxHeight,i.height],()=>{i.native||(0,r.dY)(()=>{var e;P(),w.value&&(null==(e=_.value)||e.handleScroll(w.value))})}),(0,r.Gt)(c,(0,o.Kh)({scrollbarElement:y,wrapElement:w})),(0,r.n)(()=>{w.value&&(w.value.scrollTop=p,w.value.scrollLeft=m)}),(0,r.sV)(()=>{i.native||(0,r.dY)(()=>{P()})}),(0,r.$u)(()=>P()),t({wrapRef:w,update:P,scrollTo:N,setScrollTop:W,setScrollLeft:D,handleScroll:I}),(e,t)=>((0,r.uX)(),(0,r.CE)("div",{ref_key:"scrollbarRef",ref:y,class:(0,a.C4)((0,o.R1)(s).b())},[(0,r.Lk)("div",{ref_key:"wrapRef",ref:w,class:(0,a.C4)((0,o.R1)(M)),style:(0,a.Tr)((0,o.R1)(S)),tabindex:e.tabindex,onScroll:I},[((0,r.uX)(),(0,r.Wv)((0,r.$y)(e.tag),{id:e.id,ref_key:"resizeRef",ref:C,class:(0,a.C4)((0,o.R1)(L)),style:(0,a.Tr)(e.viewStyle),role:e.role,"aria-label":e.ariaLabel,"aria-orientation":e.ariaOrientation},{default:(0,r.k6)(()=>[(0,r.RG)(e.$slots,"default")]),_:3},8,["id","class","style","role","aria-label","aria-orientation"]))],46,["tabindex"]),e.native?(0,r.Q3)("v-if",!0):((0,r.uX)(),(0,r.Wv)(R,{key:0,ref_key:"barRef",ref:_,always:e.always,"min-size":e.minSize},null,8,["always","min-size"]))],2))}});var M=(0,p.A)(S,[["__file","scrollbar.vue"]]),L=n(25376);const A=(0,L.GU)(M)},88727:function(e){"use strict";e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},88921:function(e,t){"use strict";var n="fas",r="server",o=448,a=512,l=[],i="f233",s="M64 32C28.7 32 0 60.7 0 96l0 64c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-64c0-35.3-28.7-64-64-64L64 32zm216 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm56 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM64 288c-35.3 0-64 28.7-64 64l0 64c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-64c0-35.3-28.7-64-64-64L64 288zm216 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm56 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.D6=t.mw},89286:function(e,t,n){"use strict";var r=n(94402),o=n(38469),a=r.Set,l=r.add;e.exports=function(e){var t=new a;return o(e,function(e){l(t,e)}),t}},89544:function(e,t,n){"use strict";var r=n(82839);e.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(r)},89559:function(e,t,n){"use strict";n.d(t,{KR:function(){return R}});var r=n(56768),o=n(90144),a=n(45130),l=n(24232),i=n(813),s=n(20464),u=n(47378),c=n(64340);const d=["light","dark"],f=(0,u.b_)({title:{type:String,default:""},description:{type:String,default:""},type:{type:String,values:(0,c.YD)(s.rz),default:"info"},closable:{type:Boolean,default:!0},closeText:{type:String,default:""},showIcon:Boolean,center:Boolean,effect:{type:String,values:d,default:"light"},showAfter:Number,hideAfter:Number,autoClose:Number}),p={close:e=>e instanceof MouseEvent};var v=n(99077),h=n(93513),m=n(86894);const g=(0,r.pM)({name:"ElAlert"}),b=(0,r.pM)({...g,props:f,emits:p,setup(e,{emit:t}){const n=e,{Close:u}=s.Nk,c=(0,r.Ht)(),d=(0,h.DU)("alert"),f=(0,o.KR)(!0),p=(0,r.EW)(()=>s.rz[n.type]),v=(0,r.EW)(()=>!(!n.description&&!c.default)),g=e=>{f.value=!1,t("close",e)};return(n.showAfter||n.hideAfter||n.autoClose)&&(0,m.U)("el-alert","The `show-after`, `hide-after`, and `auto-close` attributes were removed after 2.11.8. Please use `v-if` and `v-show` to manually replace them, visit: https://github.com/element-plus/element-plus/pull/22560"),(e,t)=>((0,r.uX)(),(0,r.Wv)(a.eB,{name:(0,o.R1)(d).b("fade"),persisted:""},{default:(0,r.k6)(()=>[(0,r.bo)((0,r.Lk)("div",{class:(0,l.C4)([(0,o.R1)(d).b(),(0,o.R1)(d).m(e.type),(0,o.R1)(d).is("center",e.center),(0,o.R1)(d).is(e.effect)]),role:"alert"},[e.showIcon&&(e.$slots.icon||(0,o.R1)(p))?((0,r.uX)(),(0,r.Wv)((0,o.R1)(i.tk),{key:0,class:(0,l.C4)([(0,o.R1)(d).e("icon"),(0,o.R1)(d).is("big",(0,o.R1)(v))])},{default:(0,r.k6)(()=>[(0,r.RG)(e.$slots,"icon",{},()=>[((0,r.uX)(),(0,r.Wv)((0,r.$y)((0,o.R1)(p))))])]),_:3},8,["class"])):(0,r.Q3)("v-if",!0),(0,r.Lk)("div",{class:(0,l.C4)((0,o.R1)(d).e("content"))},[e.title||e.$slots.title?((0,r.uX)(),(0,r.CE)("span",{key:0,class:(0,l.C4)([(0,o.R1)(d).e("title"),{"with-description":(0,o.R1)(v)}])},[(0,r.RG)(e.$slots,"title",{},()=>[(0,r.eW)((0,l.v_)(e.title),1)])],2)):(0,r.Q3)("v-if",!0),(0,o.R1)(v)?((0,r.uX)(),(0,r.CE)("p",{key:1,class:(0,l.C4)((0,o.R1)(d).e("description"))},[(0,r.RG)(e.$slots,"default",{},()=>[(0,r.eW)((0,l.v_)(e.description),1)])],2)):(0,r.Q3)("v-if",!0),e.closable?((0,r.uX)(),(0,r.CE)(r.FK,{key:2},[e.closeText?((0,r.uX)(),(0,r.CE)("div",{key:0,class:(0,l.C4)([(0,o.R1)(d).e("close-btn"),(0,o.R1)(d).is("customed")]),onClick:g},(0,l.v_)(e.closeText),3)):((0,r.uX)(),(0,r.Wv)((0,o.R1)(i.tk),{key:1,class:(0,l.C4)((0,o.R1)(d).e("close-btn")),onClick:g},{default:(0,r.k6)(()=>[(0,r.bF)((0,o.R1)(u))]),_:1},8,["class"]))],64)):(0,r.Q3)("v-if",!0)],2)],2),[[a.aG,f.value]])]),_:3},8,["name"]))}});var y=(0,v.A)(b,[["__file","alert.vue"]]),w=n(25376);const R=(0,w.GU)(y)},90144:function(e,t,n){"use strict";n.d(t,{BA:function(){return Be},C4:function(){return _},EW:function(){return Ye},Gc:function(){return Re},IG:function(){return Le},IJ:function(){return Ne},KR:function(){return Ie},Kh:function(){return we},Pr:function(){return $e},QW:function(){return Ke},R1:function(){return Fe},Tm:function(){return Ee},X2:function(){return d},a1:function(){return Oe},bl:function(){return S},fE:function(){return _e},g8:function(){return ke},hV:function(){return nt},hZ:function(){return F},i9:function(){return Te},jr:function(){return u},ju:function(){return Se},lJ:function(){return Ae},lW:function(){return Ue},mu:function(){return Pe},o5:function(){return s},qA:function(){return $},rY:function(){return je},tB:function(){return Ce},u4:function(){return P},uY:function(){return i},ux:function(){return Me},wB:function(){return tt},yC:function(){return l}});n(44114),n(18111),n(22489),n(7588),n(61701),n(13579),n(17642),n(58004),n(33853),n(45876),n(32475),n(15024),n(31698);var r=n(24232);let o,a;class l{constructor(e=!1){this.detached=e,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=o,!e&&o&&(this.index=(o.scopes||(o.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){let e,t;if(this._isPaused=!0,this.scopes)for(e=0,t=this.scopes.length;e0&&0===--this._on&&(o=this.prevScope,this.prevScope=void 0)}stop(e){if(this._active){let t,n;for(this._active=!1,t=0,n=this.effects.length;t0)return;if(p){let e=p;p=void 0;while(e){const t=e.next;e.next=void 0,e.flags&=-9,e=t}}let e;while(f){let n=f;f=void 0;while(n){const r=n.next;if(n.next=void 0,n.flags&=-9,1&n.flags)try{n.trigger()}catch(t){e||(e=t)}n=r}}if(e)throw e}function b(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function y(e){let t,n=e.depsTail,r=n;while(r){const e=r.prevDep;-1===r.version?(r===n&&(n=e),C(r),x(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=e}e.deps=t,e.depsTail=n}function w(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(R(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function R(e){if(4&e.flags&&!(16&e.flags))return;if(e.flags&=-17,e.globalVersion===L)return;if(e.globalVersion=L,!e.isSSR&&128&e.flags&&(!e.deps&&!e._dirty||!w(e)))return;e.flags|=2;const t=e.dep,n=a,o=k;a=e,k=!0;try{b(e);const n=e.fn(e._value);(0===t.version||(0,r.$H)(n,e._value))&&(e.flags|=128,e._value=n,t.version++)}catch(l){throw t.version++,l}finally{a=n,k=o,y(e),e.flags&=-3}}function C(e,t=!1){const{dep:n,prevSub:r,nextSub:o}=e;if(r&&(r.nextSub=o,e.prevSub=void 0),o&&(o.prevSub=r,e.nextSub=void 0),n.subs===e&&(n.subs=r,!r&&n.computed)){n.computed.flags&=-5;for(let e=n.computed.deps;e;e=e.nextDep)C(e,!0)}t||--n.sc||!n.map||n.map.delete(n.key)}function x(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let k=!0;const E=[];function _(){E.push(k),k=!1}function S(){const e=E.pop();k=void 0===e||e}function M(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const e=a;a=void 0;try{t()}finally{a=e}}}let L=0;class A{constructor(e,t){this.sub=e,this.dep=t,this.version=t.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class O{constructor(e){this.computed=e,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(e){if(!a||!k||a===this.computed)return;let t=this.activeLink;if(void 0===t||t.sub!==a)t=this.activeLink=new A(a,this),a.deps?(t.prevDep=a.depsTail,a.depsTail.nextDep=t,a.depsTail=t):a.deps=a.depsTail=t,T(t);else if(-1===t.version&&(t.version=this.version,t.nextDep)){const e=t.nextDep;e.prevDep=t.prevDep,t.prevDep&&(t.prevDep.nextDep=e),t.prevDep=a.depsTail,t.nextDep=void 0,a.depsTail.nextDep=t,a.depsTail=t,a.deps===t&&(a.deps=e)}return t}trigger(e){this.version++,L++,this.notify(e)}notify(e){m();try{0;for(let e=this.subs;e;e=e.prevSub)e.sub.notify()&&e.sub.dep.notify()}finally{g()}}}function T(e){if(e.dep.sc++,4&e.sub.flags){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let e=t.deps;e;e=e.nextDep)T(e)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const I=new WeakMap,N=Symbol(""),W=Symbol(""),D=Symbol("");function P(e,t,n){if(k&&a){let t=I.get(e);t||I.set(e,t=new Map);let r=t.get(n);r||(t.set(n,r=new O),r.map=t,r.key=n),r.track()}}function F(e,t,n,o,a,l){const i=I.get(e);if(!i)return void L++;const s=e=>{e&&e.trigger()};if(m(),"clear"===t)i.forEach(s);else{const a=(0,r.cy)(e),l=a&&(0,r.yI)(n);if(a&&"length"===n){const e=Number(o);i.forEach((t,n)=>{("length"===n||n===D||!(0,r.Bm)(n)&&n>=e)&&s(t)})}else switch((void 0!==n||i.has(void 0))&&s(i.get(n)),l&&s(i.get(D)),t){case"add":a?l&&s(i.get("length")):(s(i.get(N)),(0,r.CE)(e)&&s(i.get(W)));break;case"delete":a||(s(i.get(N)),(0,r.CE)(e)&&s(i.get(W)));break;case"set":(0,r.CE)(e)&&s(i.get(N));break}}g()}function B(e,t){const n=I.get(e);return n&&n.get(t)}function z(e){const t=Me(e);return t===e?t:(P(t,"iterate",D),_e(e)?t:t.map(Ae))}function $(e){return P(e=Me(e),"iterate",D),e}function V(e,t){return Ee(e)?ke(e)?Oe(Ae(t)):Oe(t):Ae(t)}const j={__proto__:null,[Symbol.iterator](){return K(this,Symbol.iterator,e=>V(this,e))},concat(...e){return z(this).concat(...e.map(e=>(0,r.cy)(e)?z(e):e))},entries(){return K(this,"entries",e=>(e[1]=V(this,e[1]),e))},every(e,t){return X(this,"every",e,t,void 0,arguments)},filter(e,t){return X(this,"filter",e,t,e=>e.map(e=>V(this,e)),arguments)},find(e,t){return X(this,"find",e,t,e=>V(this,e),arguments)},findIndex(e,t){return X(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return X(this,"findLast",e,t,e=>V(this,e),arguments)},findLastIndex(e,t){return X(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return X(this,"forEach",e,t,void 0,arguments)},includes(...e){return G(this,"includes",e)},indexOf(...e){return G(this,"indexOf",e)},join(e){return z(this).join(e)},lastIndexOf(...e){return G(this,"lastIndexOf",e)},map(e,t){return X(this,"map",e,t,void 0,arguments)},pop(){return q(this,"pop")},push(...e){return q(this,"push",e)},reduce(e,...t){return U(this,"reduce",e,t)},reduceRight(e,...t){return U(this,"reduceRight",e,t)},shift(){return q(this,"shift")},some(e,t){return X(this,"some",e,t,void 0,arguments)},splice(...e){return q(this,"splice",e)},toReversed(){return z(this).toReversed()},toSorted(e){return z(this).toSorted(e)},toSpliced(...e){return z(this).toSpliced(...e)},unshift(...e){return q(this,"unshift",e)},values(){return K(this,"values",e=>V(this,e))}};function K(e,t,n){const r=$(e),o=r[t]();return r===e||_e(e)||(o._next=o.next,o.next=()=>{const e=o._next();return e.done||(e.value=n(e.value)),e}),o}const H=Array.prototype;function X(e,t,n,r,o,a){const l=$(e),i=l!==e&&!_e(e),s=l[t];if(s!==H[t]){const t=s.apply(e,a);return i?Ae(t):t}let u=n;l!==e&&(i?u=function(t,r){return n.call(this,V(e,t),r,e)}:n.length>2&&(u=function(t,r){return n.call(this,t,r,e)}));const c=s.call(l,u,r);return i&&o?o(c):c}function U(e,t,n,r){const o=$(e);let a=n;return o!==e&&(_e(e)?n.length>3&&(a=function(t,r,o){return n.call(this,t,r,o,e)}):a=function(t,r,o){return n.call(this,t,V(e,r),o,e)}),o[t](a,...r)}function G(e,t,n){const r=Me(e);P(r,"iterate",D);const o=r[t](...n);return-1!==o&&!1!==o||!Se(n[0])?o:(n[0]=Me(n[0]),r[t](...n))}function q(e,t,n=[]){_(),m();const r=Me(e)[t].apply(e,n);return g(),S(),r}const Y=(0,r.pD)("__proto__,__v_isRef,__isVue"),Q=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>"arguments"!==e&&"caller"!==e).map(e=>Symbol[e]).filter(r.Bm));function Z(e){(0,r.Bm)(e)||(e=String(e));const t=Me(this);return P(t,"has",e),t.hasOwnProperty(e)}class J{constructor(e=!1,t=!1){this._isReadonly=e,this._isShallow=t}get(e,t,n){if("__v_skip"===t)return e["__v_skip"];const o=this._isReadonly,a=this._isShallow;if("__v_isReactive"===t)return!o;if("__v_isReadonly"===t)return o;if("__v_isShallow"===t)return a;if("__v_raw"===t)return n===(o?a?ge:me:a?he:ve).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(n)?e:void 0;const l=(0,r.cy)(e);if(!o){let e;if(l&&(e=j[t]))return e;if("hasOwnProperty"===t)return Z}const i=Reflect.get(e,t,Te(e)?e:n);if((0,r.Bm)(t)?Q.has(t):Y(t))return i;if(o||P(e,"get",t),a)return i;if(Te(i)){const e=l&&(0,r.yI)(t)?i:i.value;return o&&(0,r.Gv)(e)?Ce(e):e}return(0,r.Gv)(i)?o?Ce(i):we(i):i}}class ee extends J{constructor(e=!1){super(!1,e)}set(e,t,n,o){let a=e[t];const l=(0,r.cy)(e)&&(0,r.yI)(t);if(!this._isShallow){const e=Ee(a);if(_e(n)||Ee(n)||(a=Me(a),n=Me(n)),!l&&Te(a)&&!Te(n))return e||(a.value=n),!0}const i=l?Number(t)e,le=e=>Reflect.getPrototypeOf(e);function ie(e,t,n){return function(...o){const a=this["__v_raw"],l=Me(a),i=(0,r.CE)(l),s="entries"===e||e===Symbol.iterator&&i,u="keys"===e&&i,c=a[e](...o),d=n?ae:t?Oe:Ae;return!t&&P(l,"iterate",u?W:N),{next(){const{value:e,done:t}=c.next();return t?{value:e,done:t}:{value:s?[d(e[0]),d(e[1])]:d(e),done:t}},[Symbol.iterator](){return this}}}}function se(e){return function(...t){return"delete"!==e&&("clear"===e?void 0:this)}}function ue(e,t){const n={get(n){const o=this["__v_raw"],a=Me(o),l=Me(n);e||((0,r.$H)(n,l)&&P(a,"get",n),P(a,"get",l));const{has:i}=le(a),s=t?ae:e?Oe:Ae;return i.call(a,n)?s(o.get(n)):i.call(a,l)?s(o.get(l)):void(o!==a&&o.get(n))},get size(){const t=this["__v_raw"];return!e&&P(Me(t),"iterate",N),t.size},has(t){const n=this["__v_raw"],o=Me(n),a=Me(t);return e||((0,r.$H)(t,a)&&P(o,"has",t),P(o,"has",a)),t===a?n.has(t):n.has(t)||n.has(a)},forEach(n,r){const o=this,a=o["__v_raw"],l=Me(a),i=t?ae:e?Oe:Ae;return!e&&P(l,"iterate",N),a.forEach((e,t)=>n.call(r,i(e),i(t),o))}};(0,r.X$)(n,e?{add:se("add"),set:se("set"),delete:se("delete"),clear:se("clear")}:{add(e){t||_e(e)||Ee(e)||(e=Me(e));const n=Me(this),r=le(n),o=r.has.call(n,e);return o||(n.add(e),F(n,"add",e,e)),this},set(e,n){t||_e(n)||Ee(n)||(n=Me(n));const o=Me(this),{has:a,get:l}=le(o);let i=a.call(o,e);i||(e=Me(e),i=a.call(o,e));const s=l.call(o,e);return o.set(e,n),i?(0,r.$H)(n,s)&&F(o,"set",e,n,s):F(o,"add",e,n),this},delete(e){const t=Me(this),{has:n,get:r}=le(t);let o=n.call(t,e);o||(e=Me(e),o=n.call(t,e));const a=r?r.call(t,e):void 0,l=t.delete(e);return o&&F(t,"delete",e,void 0,a),l},clear(){const e=Me(this),t=0!==e.size,n=void 0,r=e.clear();return t&&F(e,"clear",void 0,void 0,n),r}});const o=["keys","values","entries",Symbol.iterator];return o.forEach(r=>{n[r]=ie(r,e,t)}),n}function ce(e,t){const n=ue(e,t);return(t,o,a)=>"__v_isReactive"===o?!e:"__v_isReadonly"===o?e:"__v_raw"===o?t:Reflect.get((0,r.$3)(n,o)&&o in t?n:t,o,a)}const de={get:ce(!1,!1)},fe={get:ce(!1,!0)},pe={get:ce(!0,!1)};const ve=new WeakMap,he=new WeakMap,me=new WeakMap,ge=new WeakMap;function be(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function ye(e){return e["__v_skip"]||!Object.isExtensible(e)?0:be((0,r.Zf)(e))}function we(e){return Ee(e)?e:xe(e,!1,ne,de,ve)}function Re(e){return xe(e,!1,oe,fe,he)}function Ce(e){return xe(e,!0,re,pe,me)}function xe(e,t,n,o,a){if(!(0,r.Gv)(e))return e;if(e["__v_raw"]&&(!t||!e["__v_isReactive"]))return e;const l=ye(e);if(0===l)return e;const i=a.get(e);if(i)return i;const s=new Proxy(e,2===l?o:n);return a.set(e,s),s}function ke(e){return Ee(e)?ke(e["__v_raw"]):!(!e||!e["__v_isReactive"])}function Ee(e){return!(!e||!e["__v_isReadonly"])}function _e(e){return!(!e||!e["__v_isShallow"])}function Se(e){return!!e&&!!e["__v_raw"]}function Me(e){const t=e&&e["__v_raw"];return t?Me(t):e}function Le(e){return!(0,r.$3)(e,"__v_skip")&&Object.isExtensible(e)&&(0,r.yQ)(e,"__v_skip",!0),e}const Ae=e=>(0,r.Gv)(e)?we(e):e,Oe=e=>(0,r.Gv)(e)?Ce(e):e;function Te(e){return!!e&&!0===e["__v_isRef"]}function Ie(e){return We(e,!1)}function Ne(e){return We(e,!0)}function We(e,t){return Te(e)?e:new De(e,t)}class De{constructor(e,t){this.dep=new O,this["__v_isRef"]=!0,this["__v_isShallow"]=!1,this._rawValue=t?e:Me(e),this._value=t?e:Ae(e),this["__v_isShallow"]=t}get value(){return this.dep.track(),this._value}set value(e){const t=this._rawValue,n=this["__v_isShallow"]||_e(e)||Ee(e);e=n?e:Me(e),(0,r.$H)(e,t)&&(this._rawValue=e,this._value=n?e:Ae(e),this.dep.trigger())}}function Pe(e){e.dep&&e.dep.trigger()}function Fe(e){return Te(e)?e.value:e}function Be(e){return(0,r.Tn)(e)?e():Fe(e)}const ze={get:(e,t,n)=>"__v_raw"===t?e:Fe(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const o=e[t];return Te(o)&&!Te(n)?(o.value=n,!0):Reflect.set(e,t,n,r)}};function $e(e){return ke(e)?e:new Proxy(e,ze)}class Ve{constructor(e){this["__v_isRef"]=!0,this._value=void 0;const t=this.dep=new O,{get:n,set:r}=e(t.track.bind(t),t.trigger.bind(t));this._get=n,this._set=r}get value(){return this._value=this._get()}set value(e){this._set(e)}}function je(e){return new Ve(e)}function Ke(e){const t=(0,r.cy)(e)?new Array(e.length):{};for(const n in e)t[n]=Ge(e,n);return t}class He{constructor(e,t,n){this._object=e,this._key=t,this._defaultValue=n,this["__v_isRef"]=!0,this._value=void 0,this._raw=Me(e);let o=!0,a=e;if(!(0,r.cy)(e)||!(0,r.yI)(String(t)))do{o=!Se(a)||_e(a)}while(o&&(a=a["__v_raw"]));this._shallow=o}get value(){let e=this._object[this._key];return this._shallow&&(e=Fe(e)),this._value=void 0===e?this._defaultValue:e}set value(e){if(this._shallow&&Te(this._raw[this._key])){const t=this._object[this._key];if(Te(t))return void(t.value=e)}this._object[this._key]=e}get dep(){return B(this._raw,this._key)}}class Xe{constructor(e){this._getter=e,this["__v_isRef"]=!0,this["__v_isReadonly"]=!0,this._value=void 0}get value(){return this._value=this._getter()}}function Ue(e,t,n){return Te(e)?e:(0,r.Tn)(e)?new Xe(e):(0,r.Gv)(e)&&arguments.length>1?Ge(e,t,n):Ie(e)}function Ge(e,t,n){return new He(e,t,n)}class qe{constructor(e,t,n){this.fn=e,this.setter=t,this._value=void 0,this.dep=new O(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=L-1,this.next=void 0,this.effect=this,this["__v_isReadonly"]=!t,this.isSSR=n}notify(){if(this.flags|=16,!(8&this.flags||a===this))return h(this,!0),!0}get value(){const e=this.dep.track();return R(this),e&&(e.version=this.dep.version),this._value}set value(e){this.setter&&this.setter(e)}}function Ye(e,t,n=!1){let o,a;(0,r.Tn)(e)?o=e:(o=e.get,a=e.set);const l=new qe(o,a,n);return l}const Qe={},Ze=new WeakMap;let Je;function et(e,t=!1,n=Je){if(n){let t=Ze.get(n);t||Ze.set(n,t=[]),t.push(e)}else 0}function tt(e,t,n=r.MZ){const{immediate:o,deep:a,once:l,scheduler:i,augmentJob:u,call:c}=n,f=e=>a?e:_e(e)||!1===a||0===a?nt(e,1):nt(e);let p,v,h,m,g=!1,b=!1;if(Te(e)?(v=()=>e.value,g=_e(e)):ke(e)?(v=()=>f(e),g=!0):(0,r.cy)(e)?(b=!0,g=e.some(e=>ke(e)||_e(e)),v=()=>e.map(e=>Te(e)?e.value:ke(e)?f(e):(0,r.Tn)(e)?c?c(e,2):e():void 0)):v=(0,r.Tn)(e)?t?c?()=>c(e,2):e:()=>{if(h){_();try{h()}finally{S()}}const t=Je;Je=p;try{return c?c(e,3,[m]):e(m)}finally{Je=t}}:r.tE,t&&a){const e=v,t=!0===a?1/0:a;v=()=>nt(e(),t)}const y=s(),w=()=>{p.stop(),y&&y.active&&(0,r.TF)(y.effects,p)};if(l&&t){const e=t;t=(...t)=>{e(...t),w()}}let R=b?new Array(e.length).fill(Qe):Qe;const C=e=>{if(1&p.flags&&(p.dirty||e))if(t){const e=p.run();if(a||g||(b?e.some((e,t)=>(0,r.$H)(e,R[t])):(0,r.$H)(e,R))){h&&h();const n=Je;Je=p;try{const n=[e,R===Qe?void 0:b&&R[0]===Qe?[]:R,m];R=e,c?c(t,3,n):t(...n)}finally{Je=n}}}else p.run()};return u&&u(C),p=new d(v),p.scheduler=i?()=>i(C,!1):C,m=e=>et(e,!1,p),h=p.onStop=()=>{const e=Ze.get(p);if(e){if(c)c(e,4);else for(const t of e)t();Ze.delete(p)}},t?o?C(!0):R=p.run():i?i(C.bind(null,!0),!0):p.run(),w.pause=p.pause.bind(p),w.resume=p.resume.bind(p),w.stop=w,w}function nt(e,t=1/0,n){if(t<=0||!(0,r.Gv)(e)||e["__v_skip"])return e;if(n=n||new Map,(n.get(e)||0)>=t)return e;if(n.set(e,t),t--,Te(e))nt(e.value,t,n);else if((0,r.cy)(e))for(let r=0;r{nt(e,t,n)});else if((0,r.Qd)(e)){for(const r in e)nt(e[r],t,n);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&nt(e[r],t,n)}return e}},90389:function(e,t){"use strict";var n="fas",r="ban",o=512,a=512,l=[128683,"cancel"],i="f05e",s="M367.2 412.5L99.5 144.8c-22.4 31.4-35.5 69.8-35.5 111.2 0 106 86 192 192 192 41.5 0 79.9-13.1 111.2-35.5zm45.3-45.3c22.4-31.4 35.5-69.8 35.5-111.2 0-106-86-192-192-192-41.5 0-79.9 13.1-111.2 35.5L412.5 367.2zM0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.Df=t.mw},90679:function(e,t,n){"use strict";var r=n(1625),o=TypeError;e.exports=function(e,t){if(r(t,e))return e;throw new o("Incorrect invocation")}},90844:function(e,t,n){"use strict";n.d(t,{p:function(){return l}});var r=n(4461),o=n(47378),a=n(10515);const l=(0,o.b_)({...r.X,disabled:Boolean,trigger:{type:(0,o.jq)([String,Array]),default:"hover"},triggerKeys:{type:(0,o.jq)(Array),default:()=>[a.R.enter,a.R.numpadEnter,a.R.space]},focusOnTarget:Boolean})},91181:function(e,t,n){"use strict";var r,o,a,l=n(58622),i=n(44576),s=n(20034),u=n(66699),c=n(39297),d=n(77629),f=n(66119),p=n(30421),v="Object already initialized",h=i.TypeError,m=i.WeakMap,g=function(e){return a(e)?o(e):r(e,{})},b=function(e){return function(t){var n;if(!s(t)||(n=o(t)).type!==e)throw new h("Incompatible receiver, "+e+" required");return n}};if(l||d.state){var y=d.state||(d.state=new m);y.get=y.get,y.has=y.has,y.set=y.set,r=function(e,t){if(y.has(e))throw new h(v);return t.facade=e,y.set(e,t),t},o=function(e){return y.get(e)||{}},a=function(e){return y.has(e)}}else{var w=f("state");p[w]=!0,r=function(e,t){if(c(e,w))throw new h(v);return t.facade=e,u(e,w,t),t},o=function(e){return c(e,w)?e[w]:{}},a=function(e){return c(e,w)}}e.exports={set:r,get:o,has:a,enforce:g,getterFor:b}},91291:function(e,t,n){"use strict";var r=n(80741);e.exports=function(e){var t=+e;return t!==t||0===t?0:r(t)}},91385:function(e,t,n){"use strict";var r=n(9539);e.exports=function(e,t,n){for(var o=e.length-1;o>=0;o--)if(void 0!==e[o])try{n=r(e[o].iterator,t,n)}catch(a){t="throw",n=a}if("throw"===t)throw n;return n}},91646:function(e,t,n){"use strict";n.d(t,{A:function(){return Mb}});n(18111),n(7588);const r="2.12.0",o=Symbol("INSTALLED_KEY");var a=n(38114);const l=(e=[])=>{const t=(t,n)=>{t[o]||(t[o]=!0,e.forEach(e=>t.use(e)),n&&(0,a.Vh)(n,t,!0))};return{version:r,install:t}};var i=n(56768),s=n(90144),u=n(24232),c=n(97687),d=n(92056),f=n(47378),p=n(12235);const v=(0,f.b_)({zIndex:{type:(0,f.jq)([Number,String]),default:100},target:{type:String,default:""},offset:{type:Number,default:0},position:{type:String,values:["top","bottom"],default:"top"}}),h={scroll:({scrollTop:e,fixed:t})=>(0,p.Et)(e)&&(0,p.Lm)(t),[d.YU]:e=>(0,p.Lm)(e)};var m=n(99077),g=n(93513),b=n(28587),y=n(93558),w=n(86894);const R="ElAffix",C=(0,i.pM)({name:R}),x=(0,i.pM)({...C,props:v,emits:h,setup(e,{expose:t,emit:n}){const r=e,o=(0,g.DU)("affix"),a=(0,s.IJ)(),l=(0,s.IJ)(),f=(0,s.IJ)(),{height:p}=(0,c.lWr)(),{height:v,width:h,top:m,bottom:C,update:x}=(0,c.SSU)(l,{windowScroll:!1}),k=(0,c.SSU)(a),E=(0,s.KR)(!1),_=(0,s.KR)(0),S=(0,s.KR)(0),M=(0,i.EW)(()=>({height:E.value?`${v.value}px`:"",width:E.value?`${h.value}px`:""})),L=(0,i.EW)(()=>{if(!E.value)return{};const e=(0,y._V)(r.offset);return{height:`${v.value}px`,width:`${h.value}px`,top:"top"===r.position?e:"",bottom:"bottom"===r.position?e:"",transform:S.value?`translateY(${S.value}px)`:"",zIndex:r.zIndex}}),A=()=>{if(!f.value)return;_.value=f.value instanceof Window?document.documentElement.scrollTop:f.value.scrollTop||0;const{position:e,target:t,offset:n}=r,o=n+v.value;if("top"===e)if(t){const e=k.bottom.value-o;E.value=n>m.value&&k.bottom.value>0,S.value=e<0?e:0}else E.value=n>m.value;else if(t){const e=p.value-k.top.value-o;E.value=p.value-nk.top.value,S.value=e<0?-e:0}else E.value=p.value-n{E.value?(E.value=!1,await(0,i.dY)(),x(),E.value=!0):x()},T=async()=>{x(),await(0,i.dY)(),n("scroll",{scrollTop:_.value,fixed:E.value})};return(0,i.wB)(E,e=>n(d.YU,e)),(0,i.sV)(()=>{var e;r.target?(a.value=null!=(e=document.querySelector(r.target))?e:void 0,a.value||(0,w.$)(R,`Target does not exist: ${r.target}`)):a.value=document.documentElement,f.value=(0,b.Bo)(l.value,!0),x()}),(0,c.MLh)(f,"scroll",T),(0,i.nT)(A),t({update:A,updateRoot:O}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{ref_key:"root",ref:l,class:(0,u.C4)((0,s.R1)(o).b()),style:(0,u.Tr)((0,s.R1)(M))},[(0,i.Lk)("div",{class:(0,u.C4)({[(0,s.R1)(o).m("fixed")]:E.value}),style:(0,u.Tr)((0,s.R1)(L))},[(0,i.RG)(e.$slots,"default")],6)],6))}});var k=(0,m.A)(x,[["__file","affix.vue"]]),E=n(25376);const _=(0,E.GU)(k);var S=n(89559),M=n(45130),L=n(19615),A=n(20017),O=n(57477),T=n(39623),I=n(88559),N=n(78507),W=n(813),D=n(96149),P=n(12251);const F=(0,f.b_)({...D.$,valueKey:{type:String,default:"value"},modelValue:{type:[String,Number],default:""},debounce:{type:Number,default:300},placement:{type:(0,f.jq)(String),values:["top","top-start","top-end","bottom","bottom-start","bottom-end"],default:"bottom-start"},fetchSuggestions:{type:(0,f.jq)([Function,Array]),default:u.tE},popperClass:P.E.popperClass,popperStyle:P.E.popperStyle,triggerOnFocus:{type:Boolean,default:!0},selectWhenUnmatched:Boolean,hideLoading:Boolean,teleported:P.E.teleported,appendTo:P.E.appendTo,highlightFirstItem:Boolean,fitInputWidth:Boolean,loopNavigation:{type:Boolean,default:!0}}),B={[d.l4]:e=>(0,u.Kg)(e)||(0,p.Et)(e),[d.qs]:e=>(0,u.Kg)(e)||(0,p.Et)(e),[d.YU]:e=>(0,u.Kg)(e)||(0,p.Et)(e),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0,select:e=>(0,u.Gv)(e)};var z=n(92436),$=n(81305),V=n(34225),j=n(10515);const K="ElAutocomplete",H=(0,i.pM)({name:K,inheritAttrs:!1}),X=(0,i.pM)({...H,props:F,emits:B,setup(e,{expose:t,emit:n}){const r=e,o=(0,i.EW)(()=>(0,L.A)(r,Object.keys(D.$))),a=(0,i.OA)(),l=(0,z.CB)(),f=(0,g.DU)("autocomplete"),p=(0,s.KR)(),v=(0,s.KR)(),h=(0,s.KR)(),m=(0,s.KR)();let b=!1,y=!1;const R=(0,s.KR)([]),C=(0,s.KR)(-1),x=(0,s.KR)(""),k=(0,s.KR)(!1),E=(0,s.KR)(!1),_=(0,s.KR)(!1),S=(0,$.Bi)(),P=(0,i.EW)(()=>a.style),F=(0,i.EW)(()=>{const e=R.value.length>0;return(e||_.value)&&k.value}),B=(0,i.EW)(()=>!r.hideLoading&&_.value),H=(0,i.EW)(()=>p.value?Array.from(p.value.$el.querySelectorAll("input")):[]),X=()=>{F.value&&(x.value=`${p.value.$el.offsetWidth}px`)},U=()=>{C.value=-1},G=async e=>{if(E.value)return;const t=e=>{_.value=!1,E.value||((0,u.cy)(e)?(R.value=e,C.value=r.highlightFirstItem?0:-1):(0,w.$)(K,"autocomplete suggestions must be an array"))};if(_.value=!0,(0,u.cy)(r.fetchSuggestions))t(r.fetchSuggestions);else{const n=await r.fetchSuggestions(e,t);(0,u.cy)(n)&&t(n)}},q=(0,i.EW)(()=>r.debounce),Y=(0,A.xD)(G,q),Q=e=>{const t=!!e;if(n(d.qs,e),n(d.l4,e),E.value=!1,k.value||(k.value=t),!r.triggerOnFocus&&!e)return E.value=!0,void(R.value=[]);Y(e)},Z=e=>{var t;l.value||("INPUT"!==(null==(t=e.target)?void 0:t.tagName)||H.value.includes(document.activeElement))&&(k.value=!0)},J=e=>{n(d.YU,e)},ee=e=>{var t;if(y)y=!1;else{k.value=!0,n("focus",e);const o=null!=(t=r.modelValue)?t:"";r.triggerOnFocus&&!b&&Y(String(o))}},te=e=>{setTimeout(()=>{var t;(null==(t=h.value)?void 0:t.isFocusInsideContent())?y=!0:(k.value&&ae(),n("blur",e))})},ne=()=>{k.value=!1,n(d.l4,""),n("clear")},re=async()=>{var e;(null==(e=p.value)?void 0:e.isComposing)||(F.value&&C.value>=0&&C.value{F.value&&(e.preventDefault(),e.stopPropagation(),ae())},ae=()=>{k.value=!1},le=()=>{var e;null==(e=p.value)||e.focus()},ie=()=>{var e;null==(e=p.value)||e.blur()},se=async e=>{n(d.qs,e[r.valueKey]),n(d.l4,e[r.valueKey]),n("select",e),R.value=[],C.value=-1},ue=e=>{var t,n;if(!F.value||_.value)return;if(e<0){if(!r.loopNavigation)return void(C.value=-1);e=R.value.length-1}e>=R.value.length&&(e=r.loopNavigation?0:R.value.length-1);const[o,a]=ce(),l=a[e],i=o.scrollTop,{offsetTop:s,scrollHeight:u}=l;s+u>i+o.clientHeight&&(o.scrollTop=s+u-o.clientHeight),s{const e=v.value.querySelector(`.${f.be("suggestion","wrap")}`),t=e.querySelectorAll(`.${f.be("suggestion","list")} li`);return[e,t]},de=(0,c.X2F)(m,()=>{var e;(null==(e=h.value)?void 0:e.isFocusInsideContent())||F.value&&ae()}),fe=e=>{const t=(0,V.CG)(e);switch(t){case j.R.up:e.preventDefault(),ue(C.value-1);break;case j.R.down:e.preventDefault(),ue(C.value+1);break;case j.R.enter:case j.R.numpadEnter:e.preventDefault(),re();break;case j.R.tab:ae();break;case j.R.esc:oe(e);break;case j.R.home:e.preventDefault(),ue(0);break;case j.R.end:e.preventDefault(),ue(R.value.length-1);break;case j.R.pageUp:e.preventDefault(),ue(Math.max(0,C.value-10));break;case j.R.pageDown:e.preventDefault(),ue(Math.min(R.value.length-1,C.value+10));break}};return(0,i.xo)(()=>{null==de||de()}),(0,i.sV)(()=>{var e;const t=null==(e=p.value)?void 0:e.ref;t&&([{key:"role",value:"textbox"},{key:"aria-autocomplete",value:"list"},{key:"aria-controls",value:"id"},{key:"aria-activedescendant",value:`${S.value}-item-${C.value}`}].forEach(({key:e,value:n})=>t.setAttribute(e,n)),b=t.hasAttribute("readonly"))}),t({highlightedIndex:C,activated:k,loading:_,inputRef:p,popperRef:h,suggestions:R,handleSelect:se,handleKeyEnter:re,focus:le,blur:ie,close:ae,highlight:ue,getData:G}),(e,t)=>((0,i.uX)(),(0,i.Wv)((0,s.R1)(N.R7),{ref_key:"popperRef",ref:h,visible:(0,s.R1)(F),placement:e.placement,"fallback-placements":["bottom-start","top-start"],"popper-class":[(0,s.R1)(f).e("popper"),e.popperClass],"popper-style":e.popperStyle,teleported:e.teleported,"append-to":e.appendTo,"gpu-acceleration":!1,pure:"","manual-mode":"",effect:"light",trigger:"click",transition:`${(0,s.R1)(f).namespace.value}-zoom-in-top`,persistent:"",role:"listbox",onBeforeShow:X,onHide:U},{content:(0,i.k6)(()=>[(0,i.Lk)("div",{ref_key:"regionRef",ref:v,class:(0,u.C4)([(0,s.R1)(f).b("suggestion"),(0,s.R1)(f).is("loading",(0,s.R1)(B))]),style:(0,u.Tr)({[e.fitInputWidth?"width":"minWidth"]:x.value,outline:"none"}),role:"region"},[e.$slots.header?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(f).be("suggestion","header")),onClick:(0,M.D$)(()=>{},["stop"])},[(0,i.RG)(e.$slots,"header")],10,["onClick"])):(0,i.Q3)("v-if",!0),(0,i.bF)((0,s.R1)(I.kA),{id:(0,s.R1)(S),tag:"ul","wrap-class":(0,s.R1)(f).be("suggestion","wrap"),"view-class":(0,s.R1)(f).be("suggestion","list"),role:"listbox"},{default:(0,i.k6)(()=>[(0,s.R1)(B)?((0,i.uX)(),(0,i.CE)("li",{key:0},[(0,i.RG)(e.$slots,"loading",{},()=>[(0,i.bF)((0,s.R1)(W.tk),{class:(0,u.C4)((0,s.R1)(f).is("loading"))},{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.Loading))]),_:1},8,["class"])])])):((0,i.uX)(!0),(0,i.CE)(i.FK,{key:1},(0,i.pI)(R.value,(t,n)=>((0,i.uX)(),(0,i.CE)("li",{id:`${(0,s.R1)(S)}-item-${n}`,key:n,class:(0,u.C4)({highlighted:C.value===n}),role:"option","aria-selected":C.value===n,onClick:e=>se(t)},[(0,i.RG)(e.$slots,"default",{item:t},()=>[(0,i.eW)((0,u.v_)(t[e.valueKey]),1)])],10,["id","aria-selected","onClick"]))),128))]),_:3},8,["id","wrap-class","view-class"]),e.$slots.footer?((0,i.uX)(),(0,i.CE)("div",{key:1,class:(0,u.C4)((0,s.R1)(f).be("suggestion","footer")),onClick:(0,M.D$)(()=>{},["stop"])},[(0,i.RG)(e.$slots,"footer")],10,["onClick"])):(0,i.Q3)("v-if",!0)],6)]),default:(0,i.k6)(()=>[(0,i.Lk)("div",{ref_key:"listboxRef",ref:m,class:(0,u.C4)([(0,s.R1)(f).b(),e.$attrs.class]),style:(0,u.Tr)((0,s.R1)(P)),role:"combobox","aria-haspopup":"listbox","aria-expanded":(0,s.R1)(F),"aria-owns":(0,s.R1)(S)},[(0,i.bF)((0,s.R1)(T.WK),(0,i.v6)({ref_key:"inputRef",ref:p},(0,i.v6)((0,s.R1)(o),e.$attrs),{"model-value":e.modelValue,disabled:(0,s.R1)(l),onInput:Q,onChange:J,onFocus:ee,onBlur:te,onClear:ne,onKeydown:fe,onMousedown:Z}),(0,i.eX)({_:2},[e.$slots.prepend?{name:"prepend",fn:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"prepend")])}:void 0,e.$slots.append?{name:"append",fn:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"append")])}:void 0,e.$slots.prefix?{name:"prefix",fn:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"prefix")])}:void 0,e.$slots.suffix?{name:"suffix",fn:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"suffix")])}:void 0]),1040,["model-value","disabled"])],14,["aria-expanded","aria-owns"])]),_:3},8,["visible","placement","popper-class","popper-style","teleported","append-to","transition"]))}});var U=(0,m.A)(X,[["__file","autocomplete.vue"]]);const G=(0,E.GU)(U);n(44114);var q=n(1211),Y=n(20464);const Q=(0,f.b_)({size:{type:[Number,String],values:q.I,default:"",validator:e=>(0,p.Et)(e)},shape:{type:String,values:["circle","square"],default:"circle"},icon:{type:Y.Ze},src:{type:String,default:""},alt:String,srcSet:String,fit:{type:(0,f.jq)(String),default:"cover"}}),Z={error:e=>e instanceof Event},J=(0,i.pM)({name:"ElAvatar"}),ee=(0,i.pM)({...J,props:Q,emits:Z,setup(e,{emit:t}){const n=e,r=(0,g.DU)("avatar"),o=(0,s.KR)(!1),a=(0,i.EW)(()=>{const{size:e,icon:t,shape:o}=n,a=[r.b()];return(0,u.Kg)(e)&&a.push(r.m(e)),t&&a.push(r.m("icon")),o&&a.push(r.m(o)),a}),l=(0,i.EW)(()=>{const{size:e}=n;return(0,p.Et)(e)?r.cssVarBlock({size:(0,y._V)(e)}):void 0}),c=(0,i.EW)(()=>({objectFit:n.fit}));function d(e){o.value=!0,t("error",e)}return(0,i.wB)(()=>n.src,()=>o.value=!1),(e,t)=>((0,i.uX)(),(0,i.CE)("span",{class:(0,u.C4)((0,s.R1)(a)),style:(0,u.Tr)((0,s.R1)(l))},[!e.src&&!e.srcSet||o.value?e.icon?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:1},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)(e.icon)))]),_:1})):(0,i.RG)(e.$slots,"default",{key:2}):((0,i.uX)(),(0,i.CE)("img",{key:0,src:e.src,alt:e.alt,srcset:e.srcSet,style:(0,u.Tr)((0,s.R1)(c)),onError:d},null,44,["src","alt","srcset"]))],6))}});var te=(0,m.A)(ee,[["__file","avatar.vue"]]);const ne=(0,E.GU)(te),re={visibilityHeight:{type:Number,default:200},target:{type:String,default:""},right:{type:Number,default:40},bottom:{type:Number,default:40}},oe={click:e=>e instanceof MouseEvent},ae=(e,t,n)=>{const r=(0,s.IJ)(),o=(0,s.IJ)(),a=(0,s.KR)(!1),l=()=>{r.value&&(a.value=r.value.scrollTop>=e.visibilityHeight)},u=e=>{var n;null==(n=r.value)||n.scrollTo({top:0,behavior:"smooth"}),t("click",e)},d=(0,A.k3)(l,300,!0);return(0,c.MLh)(o,"scroll",d),(0,i.sV)(()=>{var t;o.value=document,r.value=document.documentElement,e.target&&(r.value=null!=(t=document.querySelector(e.target))?t:void 0,r.value||(0,w.$)(n,`target does not exist: ${e.target}`),o.value=r.value),l()}),{visible:a,handleClick:u}},le="ElBacktop",ie=(0,i.pM)({name:le}),se=(0,i.pM)({...ie,props:re,emits:oe,setup(e,{emit:t}){const n=e,r=(0,g.DU)("backtop"),{handleClick:o,visible:a}=ae(n,t,le),l=(0,i.EW)(()=>({right:`${n.right}px`,bottom:`${n.bottom}px`}));return(e,t)=>((0,i.uX)(),(0,i.Wv)(M.eB,{name:`${(0,s.R1)(r).namespace.value}-fade-in`},{default:(0,i.k6)(()=>[(0,s.R1)(a)?((0,i.uX)(),(0,i.CE)("div",{key:0,style:(0,u.Tr)((0,s.R1)(l)),class:(0,u.C4)((0,s.R1)(r).b()),onClick:(0,M.D$)((0,s.R1)(o),["stop"])},[(0,i.RG)(e.$slots,"default",{},()=>[(0,i.bF)((0,s.R1)(W.tk),{class:(0,u.C4)((0,s.R1)(r).e("icon"))},{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.CaretTop))]),_:1},8,["class"])])],14,["onClick"])):(0,i.Q3)("v-if",!0)]),_:3},8,["name"]))}});var ue=(0,m.A)(se,[["__file","backtop.vue"]]);const ce=(0,E.GU)(ue);var de=n(77788),fe=n(81095),pe=n(80047),ve=(n(61701),n(81148),n(1576));const he=(e,t)=>[e>0?e-1:void 0,e,eArray.from(Array.from({length:e}).keys()),ge=e=>e.replace(/\W?m{1,2}|\W?ZZ/g,"").replace(/\W?h{1,2}|\W?s{1,3}|\W?a/gi,"").trim(),be=e=>e.replace(/\W?D{1,2}|\W?Do|\W?d{1,4}|\W?M{1,4}|\W?Y{2,4}/g,"").trim(),ye=function(e,t){const n=(0,u.$P)(e),r=(0,u.$P)(t);return n&&r?e.getTime()===t.getTime():!n&&!r&&e===t},we=function(e,t){const n=(0,u.cy)(e),r=(0,u.cy)(t);return n&&r?e.length===t.length&&e.every((e,n)=>ye(e,t[n])):!n&&!r&&ye(e,t)},Re=function(e,t,n){const r=(0,p.Im)(t)||"x"===t?ve(e).locale(n):ve(e,t).locale(n);return r.isValid()?r:void 0},Ce=function(e,t,n){return(0,p.Im)(t)?e:"x"===t?+e:ve(e).locale(n).format(t)},xe=(e,t)=>{var n;const r=[],o=null==t?void 0:t();for(let a=0;a(0,u.cy)(e)?e.map(e=>e.toDate()):e.toDate(),Ee=(e,t)=>{const n=e.subtract(1,"month").endOf("month").date();return me(t).map((e,r)=>n-(t-r-1))},_e=e=>{const t=e.daysInMonth();return me(t).map((e,t)=>t+1)},Se=e=>me(e.length/7).map(t=>{const n=7*t;return e.slice(n,n+7)}),Me=(0,f.b_)({selectedDay:{type:(0,f.jq)(Object)},range:{type:(0,f.jq)(Array)},date:{type:(0,f.jq)(Object),required:!0},hideHeader:{type:Boolean}}),Le={pick:e=>(0,u.Gv)(e)};var Ae=n(92317);const Oe=["year","years","month","months","date","dates","week","datetime","datetimerange","daterange","monthrange","yearrange"],Te=["sun","mon","tue","wed","thu","fri","sat"];var Ie=n(49700);const Ne=(e,t)=>{ve.extend(Ae);const n=ve.localeData().firstDayOfWeek(),{t:r,lang:o}=(0,Ie.Ym)(),a=ve().locale(o.value),l=(0,i.EW)(()=>!!e.range&&!!e.range.length),s=(0,i.EW)(()=>{let t=[];if(l.value){const[n,r]=e.range,o=me(r.date()-n.date()+1).map(e=>({text:n.date()+e,type:"current"}));let a=o.length%7;a=0===a?0:7-a;const l=me(a).map((e,t)=>({text:t+1,type:"next"}));t=o.concat(l)}else{const r=e.date.startOf("month").day(),o=Ee(e.date,(r-n+7)%7).map(e=>({text:e,type:"prev"})),a=_e(e.date).map(e=>({text:e,type:"current"}));t=[...o,...a];const l=7-(t.length%7||7),i=me(l).map((e,t)=>({text:t+1,type:"next"}));t=t.concat(i)}return Se(t)}),u=(0,i.EW)(()=>{const e=n;return 0===e?Te.map(e=>r(`el.datepicker.weeks.${e}`)):Te.slice(e).concat(Te.slice(0,e)).map(e=>r(`el.datepicker.weeks.${e}`))}),c=(t,n)=>{switch(n){case"prev":return e.date.startOf("month").subtract(1,"month").date(t);case"next":return e.date.startOf("month").add(1,"month").date(t);case"current":return e.date.date(t)}},d=({text:e,type:n})=>{const r=c(e,n);t("pick",r)},f=({text:t,type:n})=>{const r=c(t,n);return{isSelected:r.isSame(e.selectedDay),type:`${n}-month`,day:r.format("YYYY-MM-DD"),date:r.toDate()}};return{now:a,isInRange:l,rows:s,weekDays:u,getFormattedDate:c,handlePickDay:d,getSlotData:f}},We=(0,i.pM)({name:"DateTable"}),De=(0,i.pM)({...We,props:Me,emits:Le,setup(e,{expose:t,emit:n}){const r=e,{isInRange:o,now:a,rows:l,weekDays:c,getFormattedDate:d,handlePickDay:f,getSlotData:p}=Ne(r,n),v=(0,g.DU)("calendar-table"),h=(0,g.DU)("calendar-day"),m=({text:e,type:t})=>{const n=[t];if("current"===t){const o=d(e,t);o.isSame(r.selectedDay,"day")&&n.push(h.is("selected")),o.isSame(a,"day")&&n.push(h.is("today"))}return n};return t({getFormattedDate:d}),(e,t)=>((0,i.uX)(),(0,i.CE)("table",{class:(0,u.C4)([(0,s.R1)(v).b(),(0,s.R1)(v).is("range",(0,s.R1)(o))]),cellspacing:"0",cellpadding:"0"},[e.hideHeader?(0,i.Q3)("v-if",!0):((0,i.uX)(),(0,i.CE)("thead",{key:0},[(0,i.Lk)("tr",null,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(c),e=>((0,i.uX)(),(0,i.CE)("th",{key:e,scope:"col"},(0,u.v_)(e),1))),128))])])),(0,i.Lk)("tbody",null,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(l),(t,n)=>((0,i.uX)(),(0,i.CE)("tr",{key:n,class:(0,u.C4)({[(0,s.R1)(v).e("row")]:!0,[(0,s.R1)(v).em("row","hide-border")]:0===n&&e.hideHeader})},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(t,(t,n)=>((0,i.uX)(),(0,i.CE)("td",{key:n,class:(0,u.C4)(m(t)),onClick:e=>(0,s.R1)(f)(t)},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(h).b())},[(0,i.RG)(e.$slots,"date-cell",{data:(0,s.R1)(p)(t)},()=>[(0,i.Lk)("span",null,(0,u.v_)(t.text),1)])],2)],10,["onClick"]))),128))],2))),128))])],2))}});var Pe=(0,m.A)(De,[["__file","date-table.vue"]]);n(13579);const Fe=(e,t)=>{const n=e.endOf("month"),r=t.startOf("month"),o=n.isSame(r,"week"),a=o?r.add(1,"week"):r;return[[e,n],[a.startOf("week"),t]]},Be=(e,t)=>{const n=e.endOf("month"),r=e.add(1,"month").startOf("month"),o=n.isSame(r,"week")?r.add(1,"week"):r,a=o.endOf("month"),l=t.startOf("month"),i=a.isSame(l,"week")?l.add(1,"week"):l;return[[e,n],[o.startOf("week"),a],[i.startOf("week"),t]]},ze=(e,t,n)=>{const{lang:r}=(0,Ie.Ym)(),o=(0,s.KR)(),a=ve().locale(r.value),l=(0,i.EW)({get(){return e.modelValue?f.value:o.value},set(e){if(!e)return;o.value=e;const n=e.toDate();t(d.qs,n),t(d.l4,n)}}),c=(0,i.EW)(()=>{if(!e.range||!(0,u.cy)(e.range)||2!==e.range.length||e.range.some(e=>!(0,u.$P)(e)))return[];const t=e.range.map(e=>ve(e).locale(r.value)),[o,a]=t;return o.isAfter(a)?((0,w.U)(n,"end time should be greater than start time"),[]):o.isSame(a,"month")?g(o,a):o.add(1,"month").month()!==a.month()?((0,w.U)(n,"start time and end time interval must not exceed two months"),[]):g(o,a)}),f=(0,i.EW)(()=>e.modelValue?ve(e.modelValue).locale(r.value):l.value||(c.value.length?c.value[0][0]:a)),p=(0,i.EW)(()=>f.value.subtract(1,"month").date(1)),v=(0,i.EW)(()=>f.value.add(1,"month").date(1)),h=(0,i.EW)(()=>f.value.subtract(1,"year").date(1)),m=(0,i.EW)(()=>f.value.add(1,"year").date(1)),g=(e,t)=>{const r=e.startOf("week"),o=t.endOf("week"),a=r.get("month"),l=o.get("month");return a===l?[[r,o]]:(a+1)%12===l?Fe(r,o):a+2===l||(a+1)%11===l?Be(r,o):((0,w.U)(n,"start time and end time interval must not exceed two months"),[])},b=e=>{l.value=e},y=e=>{const t={"prev-month":p.value,"next-month":v.value,"prev-year":h.value,"next-year":m.value,today:a},n=t[e];n.isSame(f.value,"day")||b(n)};return{calculateValidatedDateRange:g,date:f,realSelectedDay:l,pickDay:b,selectDate:y,validatedRange:c}},$e=e=>(0,u.cy)(e)&&2===e.length&&e.every(e=>(0,u.$P)(e)),Ve=(0,f.b_)({modelValue:{type:Date},range:{type:(0,f.jq)(Array),validator:$e}}),je={[d.l4]:e=>(0,u.$P)(e),[d.qs]:e=>(0,u.$P)(e)},Ke="ElCalendar",He=(0,i.pM)({name:Ke}),Xe=(0,i.pM)({...He,props:Ve,emits:je,setup(e,{expose:t,emit:n}){const r=e,o=(0,g.DU)("calendar"),{calculateValidatedDateRange:a,date:l,pickDay:c,realSelectedDay:d,selectDate:f,validatedRange:p}=ze(r,n,Ke),{t:v}=(0,Ie.Ym)(),h=(0,i.EW)(()=>{const e=`el.datepicker.month${l.value.format("M")}`;return`${l.value.year()} ${v("el.datepicker.year")} ${v(e)}`});return t({selectedDay:d,pickDay:c,selectDate:f,calculateValidatedDateRange:a}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)((0,s.R1)(o).b())},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(o).e("header"))},[(0,i.RG)(e.$slots,"header",{date:(0,s.R1)(h)},()=>[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(o).e("title"))},(0,u.v_)((0,s.R1)(h)),3),0===(0,s.R1)(p).length?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(o).e("button-group"))},[(0,i.bF)((0,s.R1)(pe.fg),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(pe.S2),{size:"small",onClick:e=>(0,s.R1)(f)("prev-month")},{default:(0,i.k6)(()=>[(0,i.eW)((0,u.v_)((0,s.R1)(v)("el.datepicker.prevMonth")),1)]),_:1},8,["onClick"]),(0,i.bF)((0,s.R1)(pe.S2),{size:"small",onClick:e=>(0,s.R1)(f)("today")},{default:(0,i.k6)(()=>[(0,i.eW)((0,u.v_)((0,s.R1)(v)("el.datepicker.today")),1)]),_:1},8,["onClick"]),(0,i.bF)((0,s.R1)(pe.S2),{size:"small",onClick:e=>(0,s.R1)(f)("next-month")},{default:(0,i.k6)(()=>[(0,i.eW)((0,u.v_)((0,s.R1)(v)("el.datepicker.nextMonth")),1)]),_:1},8,["onClick"])]),_:1})],2)):(0,i.Q3)("v-if",!0)])],2),0===(0,s.R1)(p).length?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(o).e("body"))},[(0,i.bF)(Pe,{date:(0,s.R1)(l),"selected-day":(0,s.R1)(d),onPick:(0,s.R1)(c)},(0,i.eX)({_:2},[e.$slots["date-cell"]?{name:"date-cell",fn:(0,i.k6)(t=>[(0,i.RG)(e.$slots,"date-cell",(0,u._B)((0,i.Ng)(t)))])}:void 0]),1032,["date","selected-day","onPick"])],2)):((0,i.uX)(),(0,i.CE)("div",{key:1,class:(0,u.C4)((0,s.R1)(o).e("body"))},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(p),(t,n)=>((0,i.uX)(),(0,i.Wv)(Pe,{key:n,date:t[0],"selected-day":(0,s.R1)(d),range:t,"hide-header":0!==n,onPick:(0,s.R1)(c)},(0,i.eX)({_:2},[e.$slots["date-cell"]?{name:"date-cell",fn:(0,i.k6)(t=>[(0,i.RG)(e.$slots,"date-cell",(0,u._B)((0,i.Ng)(t)))])}:void 0]),1032,["date","selected-day","range","hide-header","onPick"]))),128))],2))],2))}});var Ue=(0,m.A)(Xe,[["__file","calendar.vue"]]);const Ge=(0,E.GU)(Ue);var qe=n(70683);const Ye=(0,f.b_)({initialIndex:{type:Number,default:0},height:{type:String,default:""},trigger:{type:String,values:["hover","click"],default:"hover"},autoplay:{type:Boolean,default:!0},interval:{type:Number,default:3e3},indicatorPosition:{type:String,values:["","none","outside"],default:""},arrow:{type:String,values:["always","hover","never"],default:"hover"},type:{type:String,values:["","card"],default:""},cardScale:{type:Number,default:.83},loop:{type:Boolean,default:!0},direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},pauseOnHover:{type:Boolean,default:!0},motionBlur:Boolean}),Qe={change:(e,t)=>[e,t].every(p.Et)};n(22489);var Ze=n(65943);const Je=Symbol("carouselContextKey"),et="ElCarouselItem";var tt=n(7023),nt=n(96139);const rt=300,ot=(e,t,n)=>{const{children:r,addChild:o,removeChild:a,ChildrenSorter:l}=(0,tt.W)((0,i.nI)(),et),f=(0,i.Ht)(),p=(0,s.KR)(-1),v=(0,s.KR)(null),h=(0,s.KR)(!1),m=(0,s.KR)(),g=(0,s.KR)(0),b=(0,s.KR)(!0),y=(0,i.EW)(()=>"never"!==e.arrow&&!(0,s.R1)(x)),R=(0,i.EW)(()=>r.value.some(e=>e.props.label.toString().length>0)),C=(0,i.EW)(()=>"card"===e.type),x=(0,i.EW)(()=>"vertical"===e.direction),k=(0,i.EW)(()=>"auto"!==e.height?{height:e.height}:{height:`${g.value}px`,overflow:"hidden"}),E=(0,Ze.A)(e=>{O(e)},rt,{trailing:!0}),_=(0,Ze.A)(e=>{B(e)},rt),S=e=>!b.value||(p.value<=1?e<=1:e>1);function M(){v.value&&(clearInterval(v.value),v.value=null)}function L(){e.interval<=0||!e.autoplay||v.value||(v.value=setInterval(()=>A(),e.interval))}const A=()=>{p.valuee.props.name===t);e.length>0&&(t=r.value.indexOf(e[0]))}if(t=Number(t),Number.isNaN(t)||t!==Math.floor(t))return void(0,w.U)(n,"index must be integer.");const o=r.value.length,a=p.value;p.value=t<0?e.loop?o-1:0:t>=o?e.loop?0:o-1:t,a===p.value&&T(a),V()}function T(e){r.value.forEach((t,n)=>{t.translateItem(n,p.value,e)})}function I(e,t){var n,o,a,l;const i=(0,s.R1)(r),u=i.length;if(0===u||!e.states.inStage)return!1;const c=t+1,d=t-1,f=u-1,p=i[f].states.active,v=i[0].states.active,h=null==(o=null==(n=i[c])?void 0:n.states)?void 0:o.active,m=null==(l=null==(a=i[d])?void 0:a.states)?void 0:l.active;return t===f&&v||h?"left":!!(0===t&&p||m)&&"right"}function N(){h.value=!0,e.pauseOnHover&&M()}function W(){h.value=!1,L()}function D(e){(0,s.R1)(x)||r.value.forEach((t,n)=>{e===I(t,n)&&(t.states.hover=!0)})}function P(){(0,s.R1)(x)||r.value.forEach(e=>{e.states.hover=!1})}function F(e){p.value=e}function B(t){"hover"===e.trigger&&t!==p.value&&(p.value=t)}function z(){O(p.value-1)}function $(){O(p.value+1)}function V(){M(),e.pauseOnHover||L()}function j(t){"auto"===e.height&&(g.value=t)}function K(){var t;const n=null==(t=f.default)?void 0:t.call(f);if(!n)return null;const r=(0,nt.CW)(n),o=r.filter(e=>(0,i.vv)(e)&&e.type.name===et);return 2===(null==o?void 0:o.length)&&e.loop&&!C.value?(b.value=!0,o):(b.value=!1,null)}(0,i.wB)(()=>p.value,(e,n)=>{T(n),b.value&&(e%=2,n%=2),n>-1&&t(d.YU,e,n)});const H=(0,i.EW)({get:()=>b.value?p.value%2:p.value,set:e=>p.value=e});(0,i.wB)(()=>e.autoplay,e=>{e?L():M()}),(0,i.wB)(()=>e.loop,()=>{O(p.value)}),(0,i.wB)(()=>e.interval,()=>{V()});const X=(0,s.IJ)();return(0,i.sV)(()=>{(0,i.wB)(()=>r.value,()=>{r.value.length>0&&O(e.initialIndex)},{immediate:!0}),X.value=(0,c.wYm)(m.value,()=>{T()}),L()}),(0,i.xo)(()=>{M(),m.value&&X.value&&X.value.stop()}),(0,i.Gt)(Je,{root:m,isCardType:C,isVertical:x,items:r,loop:e.loop,cardScale:e.cardScale,addItem:o,removeItem:a,setActiveItem:O,setContainerHeight:j}),{root:m,activeIndex:p,exposeActiveIndex:H,arrowDisplay:y,hasLabel:R,hover:h,isCardType:C,items:r,isVertical:x,containerStyle:k,isItemsTwoLength:b,handleButtonEnter:D,handleButtonLeave:P,handleIndicatorClick:F,handleMouseEnter:N,handleMouseLeave:W,setActiveItem:O,prev:z,next:$,PlaceholderItem:K,isTwoLengthShow:S,ItemsSorter:l,throttledArrowClick:E,throttledIndicatorHover:_}},at="ElCarousel",lt=(0,i.pM)({name:at}),it=(0,i.pM)({...lt,props:Ye,emits:Qe,setup(e,{expose:t,emit:n}){const r=e,{root:o,activeIndex:a,exposeActiveIndex:l,arrowDisplay:c,hasLabel:d,hover:f,isCardType:p,items:v,isVertical:h,containerStyle:m,handleButtonEnter:b,handleButtonLeave:y,handleIndicatorClick:w,handleMouseEnter:R,handleMouseLeave:C,setActiveItem:x,prev:k,next:E,PlaceholderItem:_,isTwoLengthShow:S,ItemsSorter:L,throttledArrowClick:A,throttledIndicatorHover:T}=ot(r,n,at),I=(0,g.DU)("carousel"),{t:N}=(0,Ie.Ym)(),D=(0,i.EW)(()=>{const e=[I.b(),I.m(r.direction)];return(0,s.R1)(p)&&e.push(I.m("card")),e}),P=(0,i.EW)(()=>{const e=[I.e("indicators"),I.em("indicators",r.direction)];return(0,s.R1)(d)&&e.push(I.em("indicators","labels")),"outside"===r.indicatorPosition&&e.push(I.em("indicators","outside")),(0,s.R1)(h)&&e.push(I.em("indicators","right")),e});function F(e){if(!r.motionBlur)return;const t=(0,s.R1)(h)?`${I.namespace.value}-transitioning-vertical`:`${I.namespace.value}-transitioning`;e.currentTarget.classList.add(t)}function B(e){if(!r.motionBlur)return;const t=(0,s.R1)(h)?`${I.namespace.value}-transitioning-vertical`:`${I.namespace.value}-transitioning`;e.currentTarget.classList.remove(t)}return t({activeIndex:l,setActiveItem:x,prev:k,next:E}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{ref_key:"root",ref:o,class:(0,u.C4)((0,s.R1)(D)),onMouseenter:(0,M.D$)((0,s.R1)(R),["stop"]),onMouseleave:(0,M.D$)((0,s.R1)(C),["stop"])},[(0,s.R1)(c)?((0,i.uX)(),(0,i.Wv)(M.eB,{key:0,name:"carousel-arrow-left",persisted:""},{default:(0,i.k6)(()=>[(0,i.bo)((0,i.Lk)("button",{type:"button",class:(0,u.C4)([(0,s.R1)(I).e("arrow"),(0,s.R1)(I).em("arrow","left")]),"aria-label":(0,s.R1)(N)("el.carousel.leftArrow"),onMouseenter:e=>(0,s.R1)(b)("left"),onMouseleave:(0,s.R1)(y),onClick:(0,M.D$)(e=>(0,s.R1)(A)((0,s.R1)(a)-1),["stop"])},[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.ArrowLeft))]),_:1})],42,["aria-label","onMouseenter","onMouseleave","onClick"]),[[M.aG,("always"===e.arrow||(0,s.R1)(f))&&(e.loop||(0,s.R1)(a)>0)]])]),_:1})):(0,i.Q3)("v-if",!0),(0,s.R1)(c)?((0,i.uX)(),(0,i.Wv)(M.eB,{key:1,name:"carousel-arrow-right",persisted:""},{default:(0,i.k6)(()=>[(0,i.bo)((0,i.Lk)("button",{type:"button",class:(0,u.C4)([(0,s.R1)(I).e("arrow"),(0,s.R1)(I).em("arrow","right")]),"aria-label":(0,s.R1)(N)("el.carousel.rightArrow"),onMouseenter:e=>(0,s.R1)(b)("right"),onMouseleave:(0,s.R1)(y),onClick:(0,M.D$)(e=>(0,s.R1)(A)((0,s.R1)(a)+1),["stop"])},[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.ArrowRight))]),_:1})],42,["aria-label","onMouseenter","onMouseleave","onClick"]),[[M.aG,("always"===e.arrow||(0,s.R1)(f))&&(e.loop||(0,s.R1)(a)<(0,s.R1)(v).length-1)]])]),_:1})):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(I).e("container")),style:(0,u.Tr)((0,s.R1)(m)),onTransitionstart:F,onTransitionend:B},[(0,i.bF)((0,s.R1)(_)),(0,i.RG)(e.$slots,"default")],38),(0,i.bF)((0,s.R1)(L),null,{default:(0,i.k6)(()=>["none"!==e.indicatorPosition?((0,i.uX)(),(0,i.CE)("ul",{key:0,class:(0,u.C4)((0,s.R1)(P))},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(v),(t,n)=>(0,i.bo)(((0,i.uX)(),(0,i.CE)("li",{key:n,class:(0,u.C4)([(0,s.R1)(I).e("indicator"),(0,s.R1)(I).em("indicator",e.direction),(0,s.R1)(I).is("active",n===(0,s.R1)(a))]),onMouseenter:e=>(0,s.R1)(T)(n),onClick:(0,M.D$)(e=>(0,s.R1)(w)(n),["stop"])},[(0,i.Lk)("button",{class:(0,u.C4)((0,s.R1)(I).e("button")),"aria-label":(0,s.R1)(N)("el.carousel.indicator",{index:n+1})},[(0,s.R1)(d)?((0,i.uX)(),(0,i.CE)("span",{key:0},(0,u.v_)(t.props.label),1)):(0,i.Q3)("v-if",!0)],10,["aria-label"])],42,["onMouseenter","onClick"])),[[M.aG,(0,s.R1)(S)(n)]])),128))],2)):(0,i.Q3)("v-if",!0)]),_:1}),e.motionBlur?((0,i.uX)(),(0,i.CE)("svg",{key:2,xmlns:"http://www.w3.org/2000/svg",version:"1.1",style:{display:"none"}},[(0,i.Lk)("defs",null,[(0,i.Lk)("filter",{id:"elCarouselHorizontal"},[(0,i.Lk)("feGaussianBlur",{in:"SourceGraphic",stdDeviation:"12,0"})]),(0,i.Lk)("filter",{id:"elCarouselVertical"},[(0,i.Lk)("feGaussianBlur",{in:"SourceGraphic",stdDeviation:"0,10"})])])])):(0,i.Q3)("v-if",!0)],42,["onMouseenter","onMouseleave"]))}});var st=(0,m.A)(it,[["__file","carousel.vue"]]);const ut=(0,f.b_)({name:{type:String,default:""},label:{type:[String,Number],default:""}}),ct=e=>{const t=(0,i.WQ)(Je),n=(0,i.nI)();t||(0,w.U)(et,"usage: "),n||(0,w.U)(et,"compositional hook can only be invoked inside setups");const r=(0,s.KR)(),o=(0,s.KR)(!1),a=(0,s.KR)(0),l=(0,s.KR)(1),u=(0,s.KR)(!1),c=(0,s.KR)(!1),d=(0,s.KR)(!1),f=(0,s.KR)(!1),{isCardType:v,isVertical:h,cardScale:m}=t;function g(e,t,n){const r=n-1,o=t-1,a=t+1,l=n/2;return 0===t&&e===r?-1:t===r&&0===e?n:e=l?n+1:e>a&&e-t>=l?-2:e}function b(e,n){var r,o;const a=(0,s.R1)(h)?(null==(r=t.root.value)?void 0:r.offsetHeight)||0:(null==(o=t.root.value)?void 0:o.offsetWidth)||0;return d.value?a*((2-m)*(e-n)+1)/4:e{var i;const w=(0,s.R1)(v),R=null!=(i=t.items.value.length)?i:Number.NaN,C=e===n;w||(0,p.b0)(o)||(f.value=C||e===o),!C&&R>2&&t.loop&&(e=g(e,n,R));const x=(0,s.R1)(h);u.value=C,w?(d.value=Math.round(Math.abs(e-n))<=1,a.value=b(e,n),l.value=(0,s.R1)(u)?1:m):a.value=y(e,n,x),c.value=!0,C&&r.value&&t.setContainerHeight(r.value.offsetHeight)};function C(){if(t&&(0,s.R1)(v)){const e=t.items.value.findIndex(({uid:e})=>e===n.uid);t.setActiveItem(e)}}const x={props:e,states:(0,s.Kh)({hover:o,translate:a,scale:l,active:u,ready:c,inStage:d,animating:f}),uid:n.uid,getVnode:()=>n.vnode,translateItem:R};return t.addItem(x),(0,i.xo)(()=>{t.removeItem(x)}),{carouselItemRef:r,active:u,animating:f,hover:o,inStage:d,isVertical:h,translate:a,isCardType:v,scale:l,ready:c,handleItemClick:C}},dt=(0,i.pM)({name:et}),ft=(0,i.pM)({...dt,props:ut,setup(e){const t=e,n=(0,g.DU)("carousel"),{carouselItemRef:r,active:o,animating:a,hover:l,inStage:c,isVertical:d,translate:f,isCardType:p,scale:v,ready:h,handleItemClick:m}=ct(t),b=(0,i.EW)(()=>[n.e("item"),n.is("active",o.value),n.is("in-stage",c.value),n.is("hover",l.value),n.is("animating",a.value),{[n.em("item","card")]:p.value,[n.em("item","card-vertical")]:p.value&&d.value}]),y=(0,i.EW)(()=>{const e="translate"+((0,s.R1)(d)?"Y":"X"),t=`${e}(${(0,s.R1)(f)}px)`,n=`scale(${(0,s.R1)(v)})`,r=[t,n].join(" ");return{transform:r}});return(e,t)=>(0,i.bo)(((0,i.uX)(),(0,i.CE)("div",{ref_key:"carouselItemRef",ref:r,class:(0,u.C4)((0,s.R1)(b)),style:(0,u.Tr)((0,s.R1)(y)),onClick:(0,s.R1)(m)},[(0,s.R1)(p)?(0,i.bo)(((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(n).e("mask"))},null,2)),[[M.aG,!(0,s.R1)(o)]]):(0,i.Q3)("v-if",!0),(0,i.RG)(e.$slots,"default")],14,["onClick"])),[[M.aG,(0,s.R1)(h)]])}});var pt=(0,m.A)(ft,[["__file","carousel-item.vue"]]);const vt=(0,E.GU)(st,{CarouselItem:pt}),ht=(0,E.WM)(pt);var mt=n(35856),gt=n(39195),bt=n(92308),yt=1/0;function wt(e){var t=null==e?0:e.length;return t?(0,bt.A)(e,yt):[]}var Rt=wt,Ct=n(98469),xt=n(66810);const kt=Symbol();function Et(e){return!!((0,u.cy)(e)?e.every(({type:e})=>e===i.Mw):(null==e?void 0:e.type)===i.Mw)}var _t=(0,i.pM)({name:"NodeContent",props:{node:{type:Object,required:!0}},setup(e){const t=(0,g.DU)("cascader-node"),{renderLabelFn:n}=(0,i.WQ)(kt),{node:r}=e,{data:o,label:a}=r,l=()=>{const e=null==n?void 0:n({node:r,data:o});return Et(e)?a:null!=e?e:a};return()=>(0,i.bF)("span",{class:t.e("label")},[l()])}});const St=(0,i.pM)({name:"ElCascaderNode"}),Mt=(0,i.pM)({...St,props:{node:{type:Object,required:!0},menuId:String},emits:["expand"],setup(e,{emit:t}){const n=e,r=(0,i.WQ)(kt),o=(0,g.DU)("cascader-node"),a=(0,i.EW)(()=>r.isHoverMenu),l=(0,i.EW)(()=>r.config.multiple),c=(0,i.EW)(()=>r.config.checkStrictly),d=(0,i.EW)(()=>r.config.showPrefix),f=(0,i.EW)(()=>{var e;return null==(e=r.checkedNodes[0])?void 0:e.uid}),p=(0,i.EW)(()=>n.node.isDisabled),v=(0,i.EW)(()=>n.node.isLeaf),h=(0,i.EW)(()=>c.value&&!v.value||!p.value),m=(0,i.EW)(()=>y(r.expandingNode)),b=(0,i.EW)(()=>c.value&&r.checkedNodes.some(y)),y=e=>{var t;const{level:r,uid:o}=n.node;return(null==(t=null==e?void 0:e.pathNodes[r-1])?void 0:t.uid)===o},w=()=>{m.value||r.expandNode(n.node)},R=e=>{const{node:t}=n;e!==t.checked&&r.handleCheckChange(t,e)},C=()=>{r.lazyLoad(n.node,()=>{v.value||w()})},x=e=>{a.value&&(k(),!v.value&&t("expand",e))},k=()=>{const{node:e}=n;h.value&&!e.loading&&(e.loaded?w():C())},E=()=>{!v.value||p.value||c.value||l.value?(r.config.checkOnClickNode&&(l.value||c.value)||v.value&&r.config.checkOnClickLeaf)&&!p.value?_(!n.node.checked):a.value||k():S(!0)},_=e=>{c.value?(R(e),n.node.loaded&&w()):S(e)},S=e=>{n.node.loaded?(R(e),!c.value&&w()):C()};return(t,n)=>((0,i.uX)(),(0,i.CE)("li",{id:`${e.menuId}-${e.node.uid}`,role:"menuitem","aria-haspopup":!(0,s.R1)(v),"aria-owns":(0,s.R1)(v)?void 0:e.menuId,"aria-expanded":(0,s.R1)(m),tabindex:(0,s.R1)(h)?-1:void 0,class:(0,u.C4)([(0,s.R1)(o).b(),(0,s.R1)(o).is("selectable",(0,s.R1)(c)),(0,s.R1)(o).is("active",e.node.checked),(0,s.R1)(o).is("disabled",!(0,s.R1)(h)),(0,s.R1)(m)&&"in-active-path",(0,s.R1)(b)&&"in-checked-path"]),onMouseenter:x,onFocus:x,onClick:E},[(0,i.Q3)(" prefix "),(0,s.R1)(l)&&(0,s.R1)(d)?((0,i.uX)(),(0,i.Wv)((0,s.R1)(Ct.dI),{key:0,"model-value":e.node.checked,indeterminate:e.node.indeterminate,disabled:(0,s.R1)(p),onClick:(0,M.D$)(()=>{},["stop"]),"onUpdate:modelValue":_},null,8,["model-value","indeterminate","disabled","onClick"])):(0,s.R1)(c)&&(0,s.R1)(d)?((0,i.uX)(),(0,i.Wv)((0,s.R1)(xt.ll),{key:1,"model-value":(0,s.R1)(f),label:e.node.uid,disabled:(0,s.R1)(p),"onUpdate:modelValue":_,onClick:(0,M.D$)(()=>{},["stop"])},{default:(0,i.k6)(()=>[(0,i.Q3)("\n Add an empty element to avoid render label,\n do not use empty fragment here for https://github.com/vuejs/vue-next/pull/2485\n "),(0,i.Lk)("span")]),_:1},8,["model-value","label","disabled","onClick"])):(0,s.R1)(v)&&e.node.checked?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:2,class:(0,u.C4)((0,s.R1)(o).e("prefix"))},{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.Check))]),_:1},8,["class"])):(0,i.Q3)("v-if",!0),(0,i.Q3)(" content "),(0,i.bF)((0,s.R1)(_t),{node:e.node},null,8,["node"]),(0,i.Q3)(" postfix "),(0,s.R1)(v)?(0,i.Q3)("v-if",!0):((0,i.uX)(),(0,i.CE)(i.FK,{key:3},[e.node.loading?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:0,class:(0,u.C4)([(0,s.R1)(o).is("loading"),(0,s.R1)(o).e("postfix")])},{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.Loading))]),_:1},8,["class"])):((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:1,class:(0,u.C4)(["arrow-right",(0,s.R1)(o).e("postfix")])},{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.ArrowRight))]),_:1},8,["class"]))],64))],42,["id","aria-haspopup","aria-owns","aria-expanded","tabindex"]))}});var Lt=(0,m.A)(Mt,[["__file","node.vue"]]);const At=(0,i.pM)({name:"ElCascaderMenu"}),Ot=(0,i.pM)({...At,props:{nodes:{type:Array,required:!0},index:{type:Number,required:!0}},setup(e){const t=e,n=(0,i.nI)(),r=(0,g.DU)("cascader-menu"),{t:o}=(0,Ie.Ym)(),a=(0,$.Bi)();let l,c;const d=(0,i.WQ)(kt),f=(0,s.KR)(),p=(0,i.EW)(()=>!t.nodes.length),v=(0,i.EW)(()=>!d.initialLoaded),h=(0,i.EW)(()=>`${a.value}-${t.index}`),m=e=>{l=e.target},b=e=>{var t;if(d.isHoverMenu&&l&&f.value)if(l.contains(e.target)){y();const o=n.vnode.el,{left:a}=o.getBoundingClientRect(),{offsetWidth:i,offsetHeight:s}=o,u=e.clientX-a,c=l.offsetTop,d=c+l.offsetHeight,p=(null==(t=o.querySelector(`.${r.e("wrap")}`))?void 0:t.scrollTop)||0;f.value.innerHTML=`\n \n \n `}else c||(c=window.setTimeout(w,d.config.hoverThreshold))},y=()=>{c&&(clearTimeout(c),c=void 0)},w=()=>{f.value&&(f.value.innerHTML="",y())};return(t,n)=>((0,i.uX)(),(0,i.Wv)((0,s.R1)(I.kA),{key:(0,s.R1)(h),tag:"ul",role:"menu",class:(0,u.C4)((0,s.R1)(r).b()),"wrap-class":(0,s.R1)(r).e("wrap"),"view-class":[(0,s.R1)(r).e("list"),(0,s.R1)(r).is("empty",(0,s.R1)(p))],onMousemove:b,onMouseleave:w},{default:(0,i.k6)(()=>{var n;return[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.nodes,e=>((0,i.uX)(),(0,i.Wv)(Lt,{key:e.uid,node:e,"menu-id":(0,s.R1)(h),onExpand:m},null,8,["node","menu-id"]))),128)),(0,s.R1)(v)?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(r).e("empty-text"))},[(0,i.bF)((0,s.R1)(W.tk),{size:"14",class:(0,u.C4)((0,s.R1)(r).is("loading"))},{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.Loading))]),_:1},8,["class"]),(0,i.eW)(" "+(0,u.v_)((0,s.R1)(o)("el.cascader.loading")),1)],2)):(0,s.R1)(p)?((0,i.uX)(),(0,i.CE)("div",{key:1,class:(0,u.C4)((0,s.R1)(r).e("empty-text"))},[(0,i.RG)(t.$slots,"empty",{},()=>[(0,i.eW)((0,u.v_)((0,s.R1)(o)("el.cascader.noData")),1)])],2)):(null==(n=(0,s.R1)(d))?void 0:n.isHoverMenu)?((0,i.uX)(),(0,i.CE)(i.FK,{key:2},[(0,i.Q3)(" eslint-disable-next-line vue/html-self-closing "),((0,i.uX)(),(0,i.CE)("svg",{ref_key:"hoverZone",ref:f,class:(0,u.C4)((0,s.R1)(r).e("hover-zone"))},null,2))],2112)):(0,i.Q3)("v-if",!0)]}),_:3},8,["class","wrap-class","view-class"]))}});var Tt=(0,m.A)(Ot,[["__file","menu.vue"]]);n(20116),n(18237);let It=0;const Nt=e=>{const t=[e];let{parent:n}=e;while(n)t.unshift(n),n=n.parent;return t};class Wt{constructor(e,t,n,r=!1){this.data=e,this.config=t,this.parent=n,this.root=r,this.uid=It++,this.checked=!1,this.indeterminate=!1,this.loading=!1;const{value:o,label:a,children:l}=t,i=e[l],s=Nt(this);this.level=r?0:n?n.level+1:1,this.value=e[o],this.label=e[a],this.pathNodes=s,this.pathValues=s.map(e=>e.value),this.pathLabels=s.map(e=>e.label),this.childrenData=i,this.children=(i||[]).map(e=>new Wt(e,t,this)),this.loaded=!t.lazy||this.isLeaf||!(0,p.Im)(i),this.text=""}get isDisabled(){const{data:e,parent:t,config:n}=this,{disabled:r,checkStrictly:o}=n,a=(0,u.Tn)(r)?r(e,this):!!e[r];return a||!o&&!!(null==t?void 0:t.isDisabled)}get isLeaf(){const{data:e,config:t,childrenData:n,loaded:r}=this,{lazy:o,leaf:a}=t,l=(0,u.Tn)(a)?a(e,this):e[a];return(0,p.b0)(l)?!(o&&!r)&&!((0,u.cy)(n)&&n.length):!!l}get valueByOption(){return this.config.emitPath?this.pathValues:this.value}appendChild(e){const{childrenData:t,children:n}=this,r=new Wt(e,this.config,this);return(0,u.cy)(t)?t.push(e):this.childrenData=[e],n.push(r),r}calcText(e,t){const n=e?this.pathLabels.join(t):this.label;return this.text=n,n}broadcast(e){this.children.forEach(t=>{var n;t&&(t.broadcast(e),null==(n=t.onParentCheck)||n.call(t,e))})}emit(){var e;const{parent:t}=this;t&&(null==(e=t.onChildCheck)||e.call(t),t.emit())}onParentCheck(e){this.isDisabled||this.setCheckState(e)}onChildCheck(){const{children:e}=this,t=e.filter(e=>!e.isDisabled),n=!!t.length&&t.every(e=>e.checked);this.setCheckState(n)}setCheckState(e){const t=this.children.length,n=this.children.reduce((e,t)=>{const n=t.checked?1:t.indeterminate?.5:0;return e+n},0);this.checked=this.loaded&&this.children.filter(e=>!e.isDisabled).every(e=>e.loaded&&e.checked)&&e,this.indeterminate=this.loaded&&n!==t&&n>0}doCheck(e){if(this.checked===e)return;const{checkStrictly:t,multiple:n}=this.config;t||!n?this.checked=e:(this.broadcast(e),this.setCheckState(e),this.emit())}}const Dt=(e,t)=>e.reduce((e,n)=>(n.isLeaf?e.push(n):(!t&&e.push(n),e=e.concat(Dt(n.children,t))),e),[]);class Pt{constructor(e,t){this.config=t;const n=(e||[]).map(e=>new Wt(e,this.config));this.nodes=n,this.allNodes=Dt(n,!1),this.leafNodes=Dt(n,!0)}getNodes(){return this.nodes}getFlattedNodes(e){return e?this.leafNodes:this.allNodes}appendNode(e,t){const n=t?t.appendChild(e):new Wt(e,this.config);t||this.nodes.push(n),this.appendAllNodesAndLeafNodes(n)}appendNodes(e,t){e.length>0?e.forEach(e=>this.appendNode(e,t)):t&&t.isLeaf&&this.leafNodes.push(t)}appendAllNodesAndLeafNodes(e){this.allNodes.push(e),e.isLeaf&&this.leafNodes.push(e),e.children&&e.children.forEach(e=>{this.appendAllNodesAndLeafNodes(e)})}getNodeByValue(e,t=!1){if((0,p.Xj)(e))return null;const n=this.getFlattedNodes(t).find(t=>(0,gt.A)(t.value,e)||(0,gt.A)(t.pathValues,e));return n||null}getSameNode(e){if(!e)return null;const t=this.getFlattedNodes(!1).find(({value:t,level:n})=>(0,gt.A)(e.value,t)&&e.level===n);return t||null}}const Ft=(0,f.b_)({modelValue:{type:(0,f.jq)([Number,String,Array,Object])},options:{type:(0,f.jq)(Array),default:()=>[]},props:{type:(0,f.jq)(Object),default:()=>({})}}),Bt={expandTrigger:"click",multiple:!1,checkStrictly:!1,emitPath:!0,lazy:!1,lazyLoad:u.tE,value:"value",label:"label",children:"children",leaf:"leaf",disabled:"disabled",hoverThreshold:500,checkOnClickNode:!1,checkOnClickLeaf:!0,showPrefix:!0},zt=(0,f.b_)({...Ft,border:{type:Boolean,default:!0},renderLabel:{type:Function}}),$t=e=>!0,Vt={[d.l4]:$t,[d.YU]:$t,close:()=>!0,"expand-change":e=>e},jt=e=>(0,i.EW)(()=>({...Bt,...e.props}));var Kt=n(6340);const Ht=e=>{if(!e)return 0;const t=e.id.split("-");return Number(t[t.length-2])},Xt=e=>{if(!e)return;const t=e.querySelector("input");t?t.click():(0,Kt.xe)(e)&&e.click()},Ut=(e,t)=>{const n=t.slice(0),r=n.map(e=>e.uid),o=e.reduce((e,t)=>{const o=r.indexOf(t.uid);return o>-1&&(e.push(t),n.splice(o,1),r.splice(o,1)),e},[]);return o.push(...n),o};var Gt=n(76010);const qt=(0,i.pM)({name:"ElCascaderPanel"}),Yt=(0,i.pM)({...qt,props:zt,emits:Vt,setup(e,{expose:t,emit:n}){const r=e;let o=!1;const a=(0,g.DU)("cascader"),l=jt(r),c=(0,i.Ht)();let f;const v=(0,s.KR)(!0),h=(0,s.KR)(!1),m=(0,s.KR)([]),y=(0,s.KR)(),w=(0,s.KR)([]),R=(0,s.KR)(),C=(0,s.KR)([]),x=(0,i.EW)(()=>"hover"===l.value.expandTrigger),k=(0,i.EW)(()=>r.renderLabel||c.default),E=()=>{const{options:e}=r,t=l.value;o=!1,f=new Pt(e,t),w.value=[f.getNodes()],t.lazy&&(0,p.Im)(r.options)?(v.value=!1,_(void 0,e=>{e&&(f=new Pt(e,t),w.value=[f.getNodes()]),v.value=!0,W(!1,!0)})):W(!1,!0)},_=(e,t)=>{const n=l.value;e=e||new Wt({},n,void 0,!0),e.loading=!0;const r=n=>{const r=e,o=r.root?null:r;r.loading=!1,r.loaded=!0,r.childrenData=r.childrenData||[],n&&(null==f||f.appendNodes(n,o)),n&&(null==t||t(n)),0===e.level&&(h.value=!0)},o=()=>{e.loading=!1,e.loaded=!1,0===e.level&&(v.value=!0)};n.lazyLoad(e,r,o)},S=(e,t)=>{var r;const{level:o}=e,a=w.value.slice(0,o);let l;e.isLeaf?l=e.pathNodes[o-2]:(l=e,a.push(e.children)),(null==(r=R.value)?void 0:r.uid)!==(null==l?void 0:l.uid)&&(R.value=e,w.value=a,!t&&n("expand-change",(null==e?void 0:e.pathValues)||[]))},M=(e,t,r=!0)=>{const{checkStrictly:a,multiple:i}=l.value,s=C.value[0];o=!0,!i&&(null==s||s.doCheck(!1)),e.doCheck(t),N(),r&&!i&&!a&&n("close"),!r&&!i&&L(e)},L=e=>{e&&(e=e.parent,L(e),e&&S(e))},O=e=>null==f?void 0:f.getFlattedNodes(e),T=e=>{var t;return null==(t=O(e))?void 0:t.filter(({checked:e})=>!1!==e)},I=()=>{C.value.forEach(e=>e.doCheck(!1)),N(),w.value=w.value.slice(0,1),R.value=void 0,n("expand-change",[])},N=()=>{var e;const{checkStrictly:t,multiple:n}=l.value,r=C.value,o=T(!t),a=Ut(r,o),i=a.map(e=>e.valueByOption);C.value=a,y.value=n?i:null!=(e=i[0])?e:null},W=(e=!1,t=!1)=>{const{modelValue:n}=r,{lazy:a,multiple:i,checkStrictly:s}=l.value,u=!s;if(v.value&&!o&&(t||!(0,gt.A)(n,y.value)))if(a&&!e){const e=(0,Gt.Am)(Rt((0,Gt.bg)(n))),r=e.map(e=>null==f?void 0:f.getNodeByValue(e)).filter(e=>!!e&&!e.loaded&&!e.loading);r.length?r.forEach(e=>{_(e,()=>W(!1,t))}):W(!0,t)}else{const e=i?(0,Gt.bg)(n):[n],r=(0,Gt.Am)(e.map(e=>null==f?void 0:f.getNodeByValue(e,u)));D(r,t),y.value=(0,mt.A)(null!=n?n:void 0)}},D=(e,t=!0)=>{const{checkStrictly:n}=l.value,r=C.value,o=e.filter(e=>!!e&&(n||e.isLeaf)),a=null==f?void 0:f.getSameNode(R.value),u=t&&a||o[0];u?u.pathNodes.forEach(e=>S(e,!0)):R.value=void 0,r.forEach(e=>e.doCheck(!1)),(0,s.Kh)(o).forEach(e=>e.doCheck(!0)),C.value=o,(0,i.dY)(P)},P=()=>{A.oc&&m.value.forEach(e=>{const t=null==e?void 0:e.$el;if(t){const e=t.querySelector(`.${a.namespace.value}-scrollbar__wrap`),n=t.querySelector(`.${a.b("node")}.${a.is("active")}:last-child`)||t.querySelector(`.${a.b("node")}.in-active-path`);(0,b.Rt)(e,n)}})},F=e=>{const t=e.target,n=(0,V.CG)(e);switch(n){case j.R.up:case j.R.down:{e.preventDefault();const r=n===j.R.up?-1:1;(0,Kt.Lw)((0,Kt.rQ)(t,r,`.${a.b("node")}[tabindex="-1"]`));break}case j.R.left:{e.preventDefault();const n=m.value[Ht(t)-1],r=null==n?void 0:n.$el.querySelector(`.${a.b("node")}[aria-expanded="true"]`);(0,Kt.Lw)(r);break}case j.R.right:{e.preventDefault();const n=m.value[Ht(t)+1],r=null==n?void 0:n.$el.querySelector(`.${a.b("node")}[tabindex="-1"]`);(0,Kt.Lw)(r);break}case j.R.enter:case j.R.numpadEnter:Xt(t);break}};(0,i.Gt)(kt,(0,s.Kh)({config:l,expandingNode:R,checkedNodes:C,isHoverMenu:x,initialLoaded:v,renderLabelFn:k,lazyLoad:_,expandNode:S,handleCheckChange:M})),(0,i.wB)(l,(e,t)=>{(0,gt.A)(e,t)||E()},{immediate:!0}),(0,i.wB)(()=>r.options,E,{deep:!0}),(0,i.wB)(()=>r.modelValue,()=>{o=!1,W()},{deep:!0}),(0,i.wB)(()=>y.value,e=>{(0,gt.A)(e,r.modelValue)||(n(d.l4,e),n(d.YU,e))});const B=()=>{h.value||E()};return(0,i.Ic)(()=>m.value=[]),(0,i.sV)(()=>!(0,p.Im)(r.modelValue)&&W()),t({menuList:m,menus:w,checkedNodes:C,handleKeyDown:F,handleCheckChange:M,getFlattedNodes:O,getCheckedNodes:T,clearCheckedNodes:I,calculateCheckedValue:N,scrollToExpandingNode:P,loadLazyRootNodes:B}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)([(0,s.R1)(a).b("panel"),(0,s.R1)(a).is("bordered",e.border)]),onKeydown:F},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(w.value,(t,n)=>((0,i.uX)(),(0,i.Wv)(Tt,{key:n,ref_for:!0,ref:e=>m.value[n]=e,index:n,nodes:[...t]},{empty:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"empty")]),_:2},1032,["index","nodes"]))),128))],34))}});var Qt=(0,m.A)(Yt,[["__file","index.vue"]]);const Zt=(0,E.GU)(Qt);var Jt=n(12687),en=n(86484),tn=n(3829),nn=n(53845),rn=n(99180);const on=(0,f.b_)({...Ft,size:nn.mU,placeholder:String,disabled:{type:Boolean,default:void 0},clearable:Boolean,clearIcon:{type:Y.Ze,default:O.CircleClose},filterable:Boolean,filterMethod:{type:(0,f.jq)(Function),default:(e,t)=>e.text.includes(t)},separator:{type:String,default:" / "},showAllLevels:{type:Boolean,default:!0},collapseTags:Boolean,maxCollapseTags:{type:Number,default:1},collapseTagsTooltip:Boolean,maxCollapseTagsTooltipHeight:{type:[String,Number]},debounce:{type:Number,default:300},beforeFilter:{type:(0,f.jq)(Function),default:()=>!0},placement:{type:(0,f.jq)(String),values:en.DD,default:"bottom-start"},fallbackPlacements:{type:(0,f.jq)(Array),default:["bottom-start","bottom","top-start","top","right","left"]},popperClass:P.E.popperClass,popperStyle:P.E.popperStyle,teleported:P.E.teleported,effect:{type:(0,f.jq)(String),default:"light"},tagType:{...tn.z.type,default:"info"},tagEffect:{...tn.z.effect,default:"light"},validateEvent:{type:Boolean,default:!0},persistent:{type:Boolean,default:!0},showCheckedStrategy:{type:String,values:["parent","child"],default:"child"},checkOnClickNode:Boolean,showPrefix:{type:Boolean,default:!0},...rn.bs}),an=e=>!0,ln={[d.l4]:an,[d.YU]:an,focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0,visibleChange:e=>(0,p.Lm)(e),expandChange:e=>!!e,removeTag:e=>!!e};var sn=n(72142),un=n(44216),cn=n(25488),dn=n(61939);const fn=(0,i.pM)({name:"ElCascader"}),pn=(0,i.pM)({...fn,props:on,emits:ln,setup(e,{expose:t,emit:n}){const r=e,o={modifiers:[{name:"arrowPosition",enabled:!0,phase:"main",fn:({state:e})=>{const{modifiersData:t,placement:n}=e;["right","left","bottom","top"].includes(n)||t.arrow&&(t.arrow.x=35)},requires:["arrow"]}]},a=(0,i.OA)();let l=0,f=0;const p=(0,g.DU)("cascader"),v=(0,g.DU)("input"),{t:h}=(0,Ie.Ym)(),{formItem:m}=(0,un.j)(),b=(0,z.CB)(),{valueOnClear:y}=(0,rn.fQ)(r),{isComposing:R,handleComposition:C}=(0,cn.o)({afterComposition(e){var t;const n=null==(t=e.target)?void 0:t.value;De(n)}}),x=(0,s.KR)(),k=(0,s.KR)(),E=(0,s.KR)(),_=(0,s.KR)(),S=(0,s.KR)(),L=(0,s.KR)(),D=(0,s.KR)(!1),P=(0,s.KR)(!1),F=(0,s.KR)(!1),B=(0,s.KR)(""),$=(0,s.KR)(""),K=(0,s.KR)([]),H=(0,s.KR)([]),X=(0,i.EW)(()=>r.props.multiple?r.collapseTags?K.value.slice(0,r.maxCollapseTags):K.value:[]),U=(0,i.EW)(()=>r.props.multiple&&r.collapseTags?K.value.slice(r.maxCollapseTags):[]),G=(0,i.EW)(()=>a.style),q=(0,i.EW)(()=>{var e;return null!=(e=r.placeholder)?e:h("el.cascader.placeholder")}),Y=(0,i.EW)(()=>$.value||K.value.length>0||R.value?"":q.value),Q=(0,z.NV)(),Z=(0,i.EW)(()=>"small"===Q.value?"small":"default"),J=(0,i.EW)(()=>!!r.props.multiple),ee=(0,i.EW)(()=>!r.filterable||J.value),te=(0,i.EW)(()=>J.value?$.value:B.value),ne=(0,i.EW)(()=>{var e;return(null==(e=S.value)?void 0:e.checkedNodes)||[]}),{wrapperRef:re,isFocused:oe,handleBlur:ae}=(0,dn.K)(E,{disabled:b,beforeBlur(e){var t,n;return(null==(t=x.value)?void 0:t.isFocusInsideContent(e))||(null==(n=k.value)?void 0:n.isFocusInsideContent(e))},afterBlur(){var e;r.validateEvent&&(null==(e=null==m?void 0:m.validate)||e.call(m,"blur").catch(e=>(0,w.U)(e)))}}),le=(0,i.EW)(()=>!(!r.clearable||b.value||F.value||!P.value&&!oe.value)&&!!ne.value.length),ie=(0,i.EW)(()=>{const{showAllLevels:e,separator:t}=r,n=ne.value;return n.length?J.value?"":n[0].calcText(e,t):""}),se=(0,i.EW)(()=>(null==m?void 0:m.validateState)||""),ue=(0,i.EW)({get(){return(0,mt.A)(r.modelValue)},set(e){const t=null!=e?e:y.value;n(d.l4,t),n(d.YU,t),r.validateEvent&&(null==m||m.validate("change").catch(e=>(0,w.U)(e)))}}),ce=(0,i.EW)(()=>[p.b(),p.m(Q.value),p.is("disabled",b.value),a.class]),de=(0,i.EW)(()=>[v.e("icon"),"icon-arrow-down",p.is("reverse",D.value)]),fe=(0,i.EW)(()=>p.is("focus",oe.value)),pe=(0,i.EW)(()=>{var e,t;return null==(t=null==(e=x.value)?void 0:e.popperRef)?void 0:t.contentRef}),ve=e=>{if(oe.value){const t=new FocusEvent("blur",e);ae(t)}he(!1)},he=e=>{var t,o,a;b.value||(e=null!=e?e:!D.value,e!==D.value&&(D.value=e,null==(o=null==(t=E.value)?void 0:t.input)||o.setAttribute("aria-expanded",`${e}`),e?(me(),(0,i.dY)(null==(a=S.value)?void 0:a.scrollToExpandingNode)):r.filterable&&Le(),n("visibleChange",e)))},me=()=>{(0,i.dY)(()=>{var e;null==(e=x.value)||e.updatePopper()})},ge=()=>{F.value=!1},be=e=>{const{showAllLevels:t,separator:n}=r;return{node:e,key:e.uid,text:e.calcText(t,n),hitState:!1,closable:!b.value&&!e.isDisabled}},ye=e=>{var t;const r=e.node;r.doCheck(!1),null==(t=S.value)||t.calculateCheckedValue(),n("removeTag",r.valueByOption)},we=()=>{switch(r.showCheckedStrategy){case"child":return ne.value;case"parent":{const e=Ee(!1),t=e.map(e=>e.value),n=e.filter(e=>!e.parent||!t.includes(e.parent.value));return n}default:return[]}},Re=()=>{if(!J.value)return;const e=we(),t=[];e.forEach(e=>t.push(be(e))),K.value=t},Ce=()=>{var e,t;const{filterMethod:n,showAllLevels:o,separator:a}=r,l=null==(t=null==(e=S.value)?void 0:e.getFlattedNodes(!r.props.checkStrictly))?void 0:t.filter(e=>!e.isDisabled&&(e.calcText(o,a),n(e,te.value)));J.value&&K.value.forEach(e=>{e.hitState=!1}),F.value=!0,H.value=l,me()},xe=()=>{var e;let t;t=F.value&&L.value?L.value.$el.querySelector(`.${p.e("suggestion-item")}`):null==(e=S.value)?void 0:e.$el.querySelector(`.${p.b("node")}[tabindex="-1"]`),t&&(t.focus(),!F.value&&t.click())},ke=()=>{var e,t;const n=null==(e=E.value)?void 0:e.input,r=_.value,o=null==(t=L.value)?void 0:t.$el;if(A.oc&&n){if(o){const e=o.querySelector(`.${p.e("suggestion-list")}`);e.style.minWidth=`${n.offsetWidth}px`}if(r){const{offsetHeight:e}=r,t=K.value.length>0?Math.max(e,l)-2+"px":`${l}px`;n.style.height=t,me()}}},Ee=e=>{var t;return null==(t=S.value)?void 0:t.getCheckedNodes(e)},_e=e=>{me(),n("expandChange",e)},Se=e=>{if(R.value)return;const t=(0,V.CG)(e);switch(t){case j.R.enter:case j.R.numpadEnter:he();break;case j.R.down:he(!0),(0,i.dY)(xe),e.preventDefault();break;case j.R.esc:!0===D.value&&(e.preventDefault(),e.stopPropagation(),he(!1));break;case j.R.tab:he(!1);break}},Me=()=>{var e;null==(e=S.value)||e.clearCheckedNodes(),!D.value&&r.filterable&&Le(),he(!1),n("clear")},Le=()=>{const{value:e}=ie;B.value=e,$.value=e},Ae=e=>{var t,n;const{checked:r}=e;J.value?null==(t=S.value)||t.handleCheckChange(e,!r,!1):(!r&&(null==(n=S.value)||n.handleCheckChange(e,!0,!1)),he(!1))},Oe=e=>{const t=e.target,n=(0,V.CG)(e);switch(n){case j.R.up:case j.R.down:{e.preventDefault();const r=n===j.R.up?-1:1;(0,Kt.Lw)((0,Kt.rQ)(t,r,`.${p.e("suggestion-item")}[tabindex="-1"]`));break}case j.R.enter:case j.R.numpadEnter:t.click();break}},Te=()=>{const e=K.value[K.value.length-1];f=$.value?0:f+1,!e||!f||r.collapseTags&&K.value.length>1||(e.hitState?ye(e):e.hitState=!0)},Ne=(0,i.EW)(()=>r.debounce),We=(0,A.xD)(()=>{const{value:e}=te;if(!e)return;const t=r.beforeFilter(e);(0,u.yL)(t)?t.then(Ce).catch(()=>{}):!1!==t?Ce():ge()},Ne),De=(e,t)=>{!D.value&&he(!0),(null==t?void 0:t.isComposing)||(e?We():ge())},Pe=e=>Number.parseFloat((0,c.eU5)(v.cssVarName("input-height"),e).value)-2,Fe=()=>{var e;null==(e=E.value)||e.focus()},Be=()=>{var e;null==(e=E.value)||e.blur()};return(0,i.wB)(F,me),(0,i.wB)([ne,b,()=>r.collapseTags,()=>r.maxCollapseTags],Re),(0,i.wB)(K,()=>{(0,i.dY)(()=>ke())}),(0,i.wB)(Q,async()=>{await(0,i.dY)();const e=E.value.input;l=Pe(e)||l,ke()}),(0,i.wB)(ie,Le,{immediate:!0}),(0,i.wB)(()=>D.value,e=>{var t;e&&r.props.lazy&&r.props.lazyLoad&&(null==(t=S.value)||t.loadLazyRootNodes())}),(0,i.sV)(()=>{const e=E.value.input,t=Pe(e);l=e.offsetHeight||t,(0,c.wYm)(e,ke)}),t({getCheckedNodes:Ee,cascaderPanelRef:S,togglePopperVisible:he,contentRef:pe,presentText:ie,focus:Fe,blur:Be}),(e,t)=>((0,i.uX)(),(0,i.Wv)((0,s.R1)(N.R7),{ref_key:"tooltipRef",ref:x,visible:D.value,teleported:e.teleported,"popper-class":[(0,s.R1)(p).e("dropdown"),e.popperClass],"popper-style":e.popperStyle,"popper-options":o,"fallback-placements":e.fallbackPlacements,"stop-popper-mouse-event":!1,"gpu-acceleration":!1,placement:e.placement,transition:`${(0,s.R1)(p).namespace.value}-zoom-in-top`,effect:e.effect,pure:"",persistent:e.persistent,onHide:ge},{default:(0,i.k6)(()=>[(0,i.bo)(((0,i.uX)(),(0,i.CE)("div",{ref_key:"wrapperRef",ref:re,class:(0,u.C4)((0,s.R1)(ce)),style:(0,u.Tr)((0,s.R1)(G)),onClick:()=>he(!(0,s.R1)(ee)||void 0),onKeydown:Se,onMouseenter:e=>P.value=!0,onMouseleave:e=>P.value=!1},[(0,i.bF)((0,s.R1)(T.WK),{ref_key:"inputRef",ref:E,modelValue:B.value,"onUpdate:modelValue":e=>B.value=e,placeholder:(0,s.R1)(Y),readonly:(0,s.R1)(ee),disabled:(0,s.R1)(b),"validate-event":!1,size:(0,s.R1)(Q),class:(0,u.C4)((0,s.R1)(fe)),tabindex:(0,s.R1)(J)&&e.filterable&&!(0,s.R1)(b)?-1:void 0,onCompositionstart:(0,s.R1)(C),onCompositionupdate:(0,s.R1)(C),onCompositionend:(0,s.R1)(C),onInput:De},(0,i.eX)({suffix:(0,i.k6)(()=>[(0,s.R1)(le)?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:"clear",class:(0,u.C4)([(0,s.R1)(v).e("icon"),"icon-circle-close"]),onClick:(0,M.D$)(Me,["stop"])},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)(e.clearIcon)))]),_:1},8,["class","onClick"])):((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:"arrow-down",class:(0,u.C4)((0,s.R1)(de)),onClick:(0,M.D$)(e=>he(),["stop"])},{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.ArrowDown))]),_:1},8,["class","onClick"]))]),_:2},[e.$slots.prefix?{name:"prefix",fn:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"prefix")])}:void 0]),1032,["modelValue","onUpdate:modelValue","placeholder","readonly","disabled","size","class","tabindex","onCompositionstart","onCompositionupdate","onCompositionend"]),(0,s.R1)(J)?((0,i.uX)(),(0,i.CE)("div",{key:0,ref_key:"tagWrapper",ref:_,class:(0,u.C4)([(0,s.R1)(p).e("tags"),(0,s.R1)(p).is("validate",Boolean((0,s.R1)(se)))])},[(0,i.RG)(e.$slots,"tag",{data:K.value,deleteTag:ye},()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(X),t=>((0,i.uX)(),(0,i.Wv)((0,s.R1)(Jt.u),{key:t.key,type:e.tagType,size:(0,s.R1)(Z),effect:e.tagEffect,hit:t.hitState,closable:t.closable,"disable-transitions":"",onClose:e=>ye(t)},{default:(0,i.k6)(()=>[(0,i.Lk)("span",null,(0,u.v_)(t.text),1)]),_:2},1032,["type","size","effect","hit","closable","onClose"]))),128))]),e.collapseTags&&K.value.length>e.maxCollapseTags?((0,i.uX)(),(0,i.Wv)((0,s.R1)(N.R7),{key:0,ref_key:"tagTooltipRef",ref:k,disabled:D.value||!e.collapseTagsTooltip,"fallback-placements":["bottom","top","right","left"],placement:"bottom","popper-class":e.popperClass,"popper-style":e.popperStyle,effect:e.effect,persistent:e.persistent},{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(Jt.u),{closable:!1,size:(0,s.R1)(Z),type:e.tagType,effect:e.tagEffect,"disable-transitions":""},{default:(0,i.k6)(()=>[(0,i.Lk)("span",{class:(0,u.C4)((0,s.R1)(p).e("tags-text"))}," + "+(0,u.v_)(K.value.length-e.maxCollapseTags),3)]),_:1},8,["size","type","effect"])]),content:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(I.kA),{"max-height":e.maxCollapseTagsTooltipHeight},{default:(0,i.k6)(()=>[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(p).e("collapse-tags"))},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(U),(t,n)=>((0,i.uX)(),(0,i.CE)("div",{key:n,class:(0,u.C4)((0,s.R1)(p).e("collapse-tag"))},[((0,i.uX)(),(0,i.Wv)((0,s.R1)(Jt.u),{key:t.key,class:"in-tooltip",type:e.tagType,size:(0,s.R1)(Z),effect:e.tagEffect,hit:t.hitState,closable:t.closable,"disable-transitions":"",onClose:e=>ye(t)},{default:(0,i.k6)(()=>[(0,i.Lk)("span",null,(0,u.v_)(t.text),1)]),_:2},1032,["type","size","effect","hit","closable","onClose"]))],2))),128))],2)]),_:1},8,["max-height"])]),_:1},8,["disabled","popper-class","popper-style","effect","persistent"])):(0,i.Q3)("v-if",!0),e.filterable&&!(0,s.R1)(b)?(0,i.bo)(((0,i.uX)(),(0,i.CE)("input",{key:1,"onUpdate:modelValue":e=>$.value=e,type:"text",class:(0,u.C4)((0,s.R1)(p).e("search-input")),placeholder:(0,s.R1)(ie)?"":(0,s.R1)(q),onInput:e=>De($.value,e),onClick:(0,M.D$)(e=>he(!0),["stop"]),onKeydown:(0,M.jR)(Te,["delete"]),onCompositionstart:(0,s.R1)(C),onCompositionupdate:(0,s.R1)(C),onCompositionend:(0,s.R1)(C)},null,42,["onUpdate:modelValue","placeholder","onInput","onClick","onKeydown","onCompositionstart","onCompositionupdate","onCompositionend"])),[[M.Jo,$.value]]):(0,i.Q3)("v-if",!0)],2)):(0,i.Q3)("v-if",!0)],46,["onClick","onMouseenter","onMouseleave"])),[[(0,s.R1)(sn.A),ve,(0,s.R1)(pe)]])]),content:(0,i.k6)(()=>[e.$slots.header?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(p).e("header")),onClick:(0,M.D$)(()=>{},["stop"])},[(0,i.RG)(e.$slots,"header")],10,["onClick"])):(0,i.Q3)("v-if",!0),(0,i.bo)((0,i.bF)((0,s.R1)(Zt),{ref_key:"cascaderPanelRef",ref:S,modelValue:(0,s.R1)(ue),"onUpdate:modelValue":e=>(0,s.i9)(ue)?ue.value=e:null,options:e.options,props:r.props,border:!1,"render-label":e.$slots.default,onExpandChange:_e,onClose:t=>e.$nextTick(()=>he(!1))},{empty:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"empty")]),_:3},8,["modelValue","onUpdate:modelValue","options","props","render-label","onClose"]),[[M.aG,!F.value]]),e.filterable?(0,i.bo)(((0,i.uX)(),(0,i.Wv)((0,s.R1)(I.kA),{key:1,ref_key:"suggestionPanel",ref:L,tag:"ul",class:(0,u.C4)((0,s.R1)(p).e("suggestion-panel")),"view-class":(0,s.R1)(p).e("suggestion-list"),onKeydown:Oe},{default:(0,i.k6)(()=>[H.value.length?((0,i.uX)(!0),(0,i.CE)(i.FK,{key:0},(0,i.pI)(H.value,t=>((0,i.uX)(),(0,i.CE)("li",{key:t.uid,class:(0,u.C4)([(0,s.R1)(p).e("suggestion-item"),(0,s.R1)(p).is("checked",t.checked)]),tabindex:-1,onClick:e=>Ae(t)},[(0,i.RG)(e.$slots,"suggestion-item",{item:t},()=>[(0,i.Lk)("span",null,(0,u.v_)(t.text),1),t.checked?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:0},{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.Check))]),_:1})):(0,i.Q3)("v-if",!0)])],10,["onClick"]))),128)):(0,i.RG)(e.$slots,"empty",{key:1},()=>[(0,i.Lk)("li",{class:(0,u.C4)((0,s.R1)(p).e("empty-text"))},(0,u.v_)((0,s.R1)(h)("el.cascader.noMatch")),3)])]),_:3},8,["class","view-class"])),[[M.aG,F.value]]):(0,i.Q3)("v-if",!0),e.$slots.footer?((0,i.uX)(),(0,i.CE)("div",{key:2,class:(0,u.C4)((0,s.R1)(p).e("footer")),onClick:(0,M.D$)(()=>{},["stop"])},[(0,i.RG)(e.$slots,"footer")],10,["onClick"])):(0,i.Q3)("v-if",!0)]),_:3},8,["visible","teleported","popper-class","popper-style","fallback-placements","placement","transition","effect","persistent"]))}});var vn=(0,m.A)(pn,[["__file","cascader.vue"]]);const hn=(0,E.GU)(vn);var mn=n(11012),gn=n(76769);const bn=(0,f.b_)({tag:{type:String,default:"div"},span:{type:Number,default:24},offset:{type:Number,default:0},pull:{type:Number,default:0},push:{type:Number,default:0},xs:{type:(0,f.jq)([Number,Object]),default:()=>(0,gn.f)({})},sm:{type:(0,f.jq)([Number,Object]),default:()=>(0,gn.f)({})},md:{type:(0,f.jq)([Number,Object]),default:()=>(0,gn.f)({})},lg:{type:(0,f.jq)([Number,Object]),default:()=>(0,gn.f)({})},xl:{type:(0,f.jq)([Number,Object]),default:()=>(0,gn.f)({})}}),yn=Symbol("rowContextKey"),wn=(0,i.pM)({name:"ElCol"}),Rn=(0,i.pM)({...wn,props:bn,setup(e){const t=e,{gutter:n}=(0,i.WQ)(yn,{gutter:(0,i.EW)(()=>0)}),r=(0,g.DU)("col"),o=(0,i.EW)(()=>{const e={};return n.value&&(e.paddingLeft=e.paddingRight=n.value/2+"px"),e}),a=(0,i.EW)(()=>{const e=[],o=["span","offset","pull","push"];o.forEach(n=>{const o=t[n];(0,p.Et)(o)&&("span"===n?e.push(r.b(`${t[n]}`)):o>0&&e.push(r.b(`${n}-${t[n]}`)))});const a=["xs","sm","md","lg","xl"];return a.forEach(n=>{(0,p.Et)(t[n])?e.push(r.b(`${n}-${t[n]}`)):(0,u.Gv)(t[n])&&Object.entries(t[n]).forEach(([t,o])=>{e.push("span"!==t?r.b(`${n}-${t}-${o}`):r.b(`${n}-${o}`))})}),n.value&&e.push(r.is("guttered")),[r.b(),e]});return(e,t)=>((0,i.uX)(),(0,i.Wv)((0,i.$y)(e.tag),{class:(0,u.C4)((0,s.R1)(a)),style:(0,u.Tr)((0,s.R1)(o))},{default:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"default")]),_:3},8,["class","style"]))}});var Cn=(0,m.A)(Rn,[["__file","col.vue"]]);const xn=(0,E.GU)(Cn),kn=e=>(0,p.Et)(e)||(0,u.Kg)(e)||(0,u.cy)(e),En=(0,f.b_)({accordion:Boolean,modelValue:{type:(0,f.jq)([Array,String,Number]),default:()=>(0,gn.f)([])},expandIconPosition:{type:(0,f.jq)([String]),default:"right"},beforeCollapse:{type:(0,f.jq)(Function)}}),_n={[d.l4]:kn,[d.YU]:kn},Sn=Symbol("collapseContextKey");var Mn=n(25951);const Ln="ElCollapse",An=(e,t)=>{const n=(0,s.KR)((0,Mn.A)(e.modelValue)),r=r=>{n.value=r;const o=e.accordion?n.value[0]:n.value;t(d.l4,o),t(d.YU,o)},o=t=>{if(e.accordion)r([n.value[0]===t?"":t]);else{const e=[...n.value],o=e.indexOf(t);o>-1?e.splice(o,1):e.push(t),r(e)}},a=async t=>{const{beforeCollapse:n}=e;if(!n)return void o(t);const r=n(t),a=[(0,u.yL)(r),(0,p.Lm)(r)].includes(!0);a||(0,w.$)(Ln,"beforeCollapse must return type `Promise` or `boolean`"),(0,u.yL)(r)?r.then(e=>{!1!==e&&o(t)}).catch(e=>{(0,w.U)(Ln,`some error occurred: ${e}`)}):r&&o(t)};return(0,i.wB)(()=>e.modelValue,()=>n.value=(0,Mn.A)(e.modelValue),{deep:!0}),(0,i.Gt)(Sn,{activeNames:n,handleItemClick:a}),{activeNames:n,setActiveNames:r}},On=e=>{const t=(0,g.DU)("collapse"),n=(0,i.EW)(()=>[t.b(),t.b(`icon-position-${e.expandIconPosition}`)]);return{rootKls:n}},Tn=(0,i.pM)({name:"ElCollapse"}),In=(0,i.pM)({...Tn,props:En,emits:_n,setup(e,{expose:t,emit:n}){const r=e,{activeNames:o,setActiveNames:a}=An(r,n),{rootKls:l}=On(r);return t({activeNames:o,setActiveNames:a}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)((0,s.R1)(l))},[(0,i.RG)(e.$slots,"default")],2))}});var Nn=(0,m.A)(In,[["__file","collapse.vue"]]),Wn=n(12031);const Dn=(0,f.b_)({title:{type:String,default:""},name:{type:(0,f.jq)([String,Number]),default:void 0},icon:{type:Y.Ze,default:O.ArrowRight},disabled:Boolean}),Pn=e=>{const t=(0,i.WQ)(Sn),{namespace:n}=(0,g.DU)("collapse"),r=(0,s.KR)(!1),o=(0,s.KR)(!1),a=(0,$.Sj)(),l=(0,i.EW)(()=>a.current++),u=(0,i.EW)(()=>{var t;return null!=(t=e.name)?t:`${n.value}-id-${a.prefix}-${(0,s.R1)(l)}`}),c=(0,i.EW)(()=>null==t?void 0:t.activeNames.value.includes((0,s.R1)(u))),d=()=>{setTimeout(()=>{o.value?o.value=!1:r.value=!0},50)},f=n=>{if(e.disabled)return;const a=n.target;(null==a?void 0:a.closest("input, textarea, select"))||(null==t||t.handleItemClick((0,s.R1)(u)),r.value=!1,o.value=!0)},p=e=>{const n=e.target;(null==n?void 0:n.closest("input, textarea, select"))||(e.preventDefault(),null==t||t.handleItemClick((0,s.R1)(u)))};return{focusing:r,id:l,isActive:c,handleFocus:d,handleHeaderClick:f,handleEnterClick:p}},Fn=(e,{focusing:t,isActive:n,id:r})=>{const o=(0,g.DU)("collapse"),a=(0,i.EW)(()=>[o.b("item"),o.is("active",(0,s.R1)(n)),o.is("disabled",e.disabled)]),l=(0,i.EW)(()=>[o.be("item","header"),o.is("active",(0,s.R1)(n)),{focusing:(0,s.R1)(t)&&!e.disabled}]),u=(0,i.EW)(()=>[o.be("item","arrow"),o.is("active",(0,s.R1)(n))]),c=(0,i.EW)(()=>[o.be("item","title")]),d=(0,i.EW)(()=>o.be("item","wrap")),f=(0,i.EW)(()=>o.be("item","content")),p=(0,i.EW)(()=>o.b(`content-${(0,s.R1)(r)}`)),v=(0,i.EW)(()=>o.b(`head-${(0,s.R1)(r)}`));return{itemTitleKls:c,arrowKls:u,headKls:l,rootKls:a,itemWrapperKls:d,itemContentKls:f,scopedContentId:p,scopedHeadId:v}},Bn=(0,i.pM)({name:"ElCollapseItem"}),zn=(0,i.pM)({...Bn,props:Dn,setup(e,{expose:t}){const n=e,{focusing:r,id:o,isActive:a,handleFocus:l,handleHeaderClick:c,handleEnterClick:d}=Pn(n),{arrowKls:f,headKls:p,rootKls:v,itemTitleKls:h,itemWrapperKls:m,itemContentKls:g,scopedContentId:b,scopedHeadId:y}=Fn(n,{focusing:r,isActive:a,id:o});return t({isActive:a}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)((0,s.R1)(v))},[(0,i.Lk)("div",{id:(0,s.R1)(y),class:(0,u.C4)((0,s.R1)(p)),"aria-expanded":(0,s.R1)(a),"aria-controls":(0,s.R1)(b),"aria-describedby":(0,s.R1)(b),tabindex:e.disabled?void 0:0,"aria-disabled":e.disabled,role:"button",onClick:(0,s.R1)(c),onKeydown:(0,M.jR)((0,M.D$)((0,s.R1)(d),["stop"]),["space","enter"]),onFocus:(0,s.R1)(l),onBlur:e=>r.value=!1},[(0,i.Lk)("span",{class:(0,u.C4)((0,s.R1)(h))},[(0,i.RG)(e.$slots,"title",{isActive:(0,s.R1)(a)},()=>[(0,i.eW)((0,u.v_)(e.title),1)])],2),(0,i.RG)(e.$slots,"icon",{isActive:(0,s.R1)(a)},()=>[(0,i.bF)((0,s.R1)(W.tk),{class:(0,u.C4)((0,s.R1)(f))},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)(e.icon)))]),_:1},8,["class"])])],42,["id","aria-expanded","aria-controls","aria-describedby","tabindex","aria-disabled","onClick","onKeydown","onFocus","onBlur"]),(0,i.bF)((0,s.R1)(Wn.o),null,{default:(0,i.k6)(()=>[(0,i.bo)((0,i.Lk)("div",{id:(0,s.R1)(b),role:"region",class:(0,u.C4)((0,s.R1)(m)),"aria-hidden":!(0,s.R1)(a),"aria-labelledby":(0,s.R1)(y)},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(g))},[(0,i.RG)(e.$slots,"default")],2)],10,["id","aria-hidden","aria-labelledby"]),[[M.aG,(0,s.R1)(a)]])]),_:3})],2))}});var $n=(0,m.A)(zn,[["__file","collapse-item.vue"]]);const Vn=(0,E.GU)(Nn,{CollapseItem:$n}),jn=(0,E.WM)($n),Kn=(0,f.b_)({color:{type:(0,f.jq)(Object),required:!0},vertical:Boolean,disabled:Boolean}),Hn=Kn;let Xn=!1;function Un(e,t){if(!A.oc)return;const n=function(e){var n;null==(n=t.drag)||n.call(t,e)},r=function(e){var o;document.removeEventListener("mousemove",n),document.removeEventListener("mouseup",r),document.removeEventListener("touchmove",n),document.removeEventListener("touchend",r),document.onselectstart=null,document.ondragstart=null,Xn=!1,null==(o=t.end)||o.call(t,e)},o=function(e){var o;Xn||(document.onselectstart=()=>!1,document.ondragstart=()=>!1,document.addEventListener("mousemove",n),document.addEventListener("mouseup",r),document.addEventListener("touchmove",n),document.addEventListener("touchend",r),Xn=!0,null==(o=t.start)||o.call(t,e))};e.addEventListener("mousedown",o),e.addEventListener("touchstart",o,{passive:!1})}const Gn=e=>{let t=0,n=e;while(n)t+=n.offsetTop,n=n.offsetParent;return t},qn=(e,t)=>Math.abs(Gn(e)-Gn(t)),Yn=e=>{let t,n;return"touchend"===e.type?(n=e.changedTouches[0].clientY,t=e.changedTouches[0].clientX):e.type.startsWith("touch")?(n=e.touches[0].clientY,t=e.touches[0].clientX):(n=e.clientY,t=e.clientX),{clientX:t,clientY:n}},Qn=(e,{key:t,minValue:n,maxValue:r})=>{const o=(0,i.nI)(),a=(0,s.IJ)(),l=(0,s.IJ)(),u=(0,i.EW)(()=>e.color.get(t));function c(t){var n;if(e.disabled)return;const r=t.target;r!==a.value&&d(t),null==(n=a.value)||n.focus()}function d(n){if(!l.value||!a.value||e.disabled)return;const i=o.vnode.el,s=i.getBoundingClientRect(),{clientX:u,clientY:c}=Yn(n);let d;if(e.vertical){let e=c-s.top;e=Math.max(a.value.offsetHeight/2,e),e=Math.min(e,s.height-a.value.offsetHeight/2),d=Math.round((e-a.value.offsetHeight/2)/(s.height-a.value.offsetHeight)*r)}else{let e=u-s.left;e=Math.max(a.value.offsetWidth/2,e),e=Math.min(e,s.width-a.value.offsetWidth/2),d=Math.round((e-a.value.offsetWidth/2)/(s.width-a.value.offsetWidth)*r)}e.color.set(t,d)}function f(o){if(e.disabled)return;const{shiftKey:a}=o,l=(0,V.CG)(o),i=a?10:1,s="hue"===t?-1:1;let u=!0;switch(l){case j.R.left:case j.R.down:p(-i*s);break;case j.R.right:case j.R.up:p(i*s);break;case j.R.home:e.color.set(t,"hue"===t?r:n);break;case j.R.end:e.color.set(t,"hue"===t?n:r);break;case j.R.pageDown:p(-4*s);break;case j.R.pageUp:p(4*s);break;default:u=!1;break}u&&o.preventDefault()}function p(o){let a=u.value+o;a=ar?r:a,e.color.set(t,a)}return{thumb:a,bar:l,currentValue:u,handleDrag:d,handleClick:c,handleKeydown:f}},Zn=(e,{namespace:t,maxValue:n,bar:r,thumb:o,currentValue:a,handleDrag:l,getBackground:u})=>{const c=(0,i.nI)(),d=(0,g.DU)(t),f=(0,s.KR)(0),p=(0,s.KR)(0),v=(0,s.KR)();function h(){if(!o.value)return 0;if(e.vertical)return 0;const t=c.vnode.el,r=a.value;return t?Math.round(r*(t.offsetWidth-o.value.offsetWidth/2)/n):0}function m(){if(!o.value)return 0;const t=c.vnode.el;if(!e.vertical)return 0;const r=a.value;return t?Math.round(r*(t.offsetHeight-o.value.offsetHeight/2)/n):0}function b(){f.value=h(),p.value=m(),v.value=null==u?void 0:u()}(0,i.sV)(()=>{if(!r.value||!o.value)return;const e={drag:e=>{l(e)},end:e=>{l(e)}};Un(r.value,e),Un(o.value,e),b()}),(0,i.wB)(a,()=>b()),(0,i.wB)(()=>e.color.value,()=>b());const w=(0,i.EW)(()=>[d.b(),d.is("vertical",e.vertical),d.is("disabled",e.disabled)]),R=(0,i.EW)(()=>d.e("bar")),C=(0,i.EW)(()=>d.e("thumb")),x=(0,i.EW)(()=>({background:v.value})),k=(0,i.EW)(()=>({left:(0,y._V)(f.value),top:(0,y._V)(p.value)}));return{rootKls:w,barKls:R,barStyle:x,thumbKls:C,thumbStyle:k,thumbLeft:f,thumbTop:p,update:b}},Jn=0,er=100,tr=(0,i.pM)({name:"ElColorAlphaSlider"}),nr=(0,i.pM)({...tr,props:Kn,setup(e,{expose:t}){const n=e,{currentValue:r,bar:o,thumb:a,handleDrag:l,handleClick:c,handleKeydown:d}=Qn(n,{key:"alpha",minValue:Jn,maxValue:er}),{rootKls:f,barKls:p,barStyle:v,thumbKls:h,thumbStyle:m,update:g}=Zn(n,{namespace:"color-alpha-slider",maxValue:er,currentValue:r,bar:o,thumb:a,handleDrag:l,getBackground:R}),{t:b}=(0,Ie.Ym)(),y=(0,i.EW)(()=>b("el.colorpicker.alphaLabel")),w=(0,i.EW)(()=>b("el.colorpicker.alphaDescription",{alpha:r.value,color:n.color.value}));function R(){if(n.color&&n.color.value){const{r:e,g:t,b:r}=n.color.toRgb();return`linear-gradient(to right, rgba(${e}, ${t}, ${r}, 0) 0%, rgba(${e}, ${t}, ${r}, 1) 100%)`}return""}return t({update:g,bar:o,thumb:a}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)((0,s.R1)(f))},[(0,i.Lk)("div",{ref_key:"bar",ref:o,class:(0,u.C4)((0,s.R1)(p)),style:(0,u.Tr)((0,s.R1)(v)),onClick:(0,s.R1)(c)},null,14,["onClick"]),(0,i.Lk)("div",{ref_key:"thumb",ref:a,class:(0,u.C4)((0,s.R1)(h)),style:(0,u.Tr)((0,s.R1)(m)),"aria-label":(0,s.R1)(y),"aria-valuenow":(0,s.R1)(r),"aria-valuetext":(0,s.R1)(w),"aria-orientation":e.vertical?"vertical":"horizontal","aria-valuemin":Jn,"aria-valuemax":er,role:"slider",tabindex:e.disabled?void 0:0,"aria-disabled":e.disabled,onKeydown:(0,s.R1)(d)},null,46,["aria-label","aria-valuenow","aria-valuetext","aria-orientation","tabindex","aria-disabled","onKeydown"])],2))}});var rr=(0,m.A)(nr,[["__file","alpha-slider.vue"]]);const or=0,ar=360,lr=(0,i.pM)({name:"ElColorHueSlider"}),ir=(0,i.pM)({...lr,props:Hn,setup(e,{expose:t}){const n=e,{currentValue:r,bar:o,thumb:a,handleDrag:l,handleClick:c,handleKeydown:d}=Qn(n,{key:"hue",minValue:or,maxValue:ar}),{rootKls:f,barKls:p,thumbKls:v,thumbStyle:h,thumbTop:m,update:g}=Zn(n,{namespace:"color-hue-slider",maxValue:ar,currentValue:r,bar:o,thumb:a,handleDrag:l}),{t:b}=(0,Ie.Ym)(),y=(0,i.EW)(()=>b("el.colorpicker.hueLabel")),w=(0,i.EW)(()=>b("el.colorpicker.hueDescription",{hue:r.value,color:n.color.value}));return t({bar:o,thumb:a,thumbTop:m,update:g}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)((0,s.R1)(f))},[(0,i.Lk)("div",{ref_key:"bar",ref:o,class:(0,u.C4)((0,s.R1)(p)),onClick:(0,s.R1)(c)},null,10,["onClick"]),(0,i.Lk)("div",{ref_key:"thumb",ref:a,class:(0,u.C4)((0,s.R1)(v)),style:(0,u.Tr)((0,s.R1)(h)),"aria-label":(0,s.R1)(y),"aria-valuenow":(0,s.R1)(r),"aria-valuetext":(0,s.R1)(w),"aria-orientation":e.vertical?"vertical":"horizontal","aria-valuemin":or,"aria-valuemax":ar,role:"slider",tabindex:e.disabled?void 0:0,"aria-disabled":e.disabled,onKeydown:(0,s.R1)(d)},null,46,["aria-label","aria-valuenow","aria-valuetext","aria-orientation","tabindex","aria-disabled","onKeydown"])],2))}});var sr=(0,m.A)(ir,[["__file","hue-slider.vue"]]);const ur=(0,f.b_)({colors:{type:(0,f.jq)(Array),required:!0},color:{type:(0,f.jq)(Object),required:!0},enableAlpha:{type:Boolean,required:!0},disabled:Boolean});var cr=n(16032);const dr=(0,f.b_)({modelValue:{type:(0,f.jq)(String),default:void 0},border:{type:Boolean,default:!0},showAlpha:Boolean,colorFormat:String,disabled:Boolean,predefine:{type:(0,f.jq)(Array)},validateEvent:{type:Boolean,default:!0}}),fr={[d.l4]:e=>(0,u.Kg)(e)||(0,cr.A)(e)},pr=Symbol("colorCommonPickerKey"),vr=Symbol("colorPickerPanelContextKey");var hr=n(41513);class mr{constructor(e={}){this._hue=0,this._saturation=100,this._value=100,this._alpha=100,this._tiny=new hr.q,this._isValid=!1,this.enableAlpha=!1,this.format="",this.value="";for(const t in e)(0,u.$3)(e,t)&&(this[t]=e[t]);e.value?this.fromString(e.value):this.doOnChange()}set(e,t){if(1!==arguments.length||"object"!==typeof e)this[`_${e}`]=t,this._isValid=!0,this.doOnChange();else for(const n in e)(0,u.$3)(e,n)&&this.set(n,e[n])}get(e){return["hue","saturation","value","alpha"].includes(e)?Math.round(this[`_${e}`]):this[`_${e}`]}toRgb(){return this._isValid?this._tiny.toRgb():{r:255,g:255,b:255,a:0}}fromString(e){const t=new hr.q(e);if(this._isValid=t.isValid,t.isValid){const{h:e,s:n,v:r,a:o}=t.toHsv();this._hue=e,this._saturation=100*n,this._value=100*r,this._alpha=100*o}else this._hue=0,this._saturation=100,this._value=100,this._alpha=100;this.doOnChange()}clear(){this._isValid=!1,this.value="",this._hue=0,this._saturation=100,this._value=100,this._alpha=100}compare(e){const t=new hr.q({h:e._hue,s:e._saturation/100,v:e._value/100,a:e._alpha/100});return this._tiny.equals(t)}doOnChange(){const{_hue:e,_saturation:t,_value:n,_alpha:r,format:o,enableAlpha:a}=this;let l=o||(a?"rgb":"hex");"hex"===o&&a&&(l="hex8"),this._tiny=new hr.q({h:e,s:t/100,v:n/100,a:r/100}),this.value=this._isValid?this._tiny.toString(l):""}}const gr=e=>{const{currentColor:t}=(0,i.WQ)(vr),n=(0,s.KR)(o(e.colors,e.color));function r(t){e.color.fromString(e.colors[t])}function o(t,n){return t.map(t=>{const r=new mr({value:t,enableAlpha:e.enableAlpha});return r.selected=r.compare(n),r})}return(0,i.wB)(()=>t.value,t=>{const r=new mr({value:t,enableAlpha:e.enableAlpha});n.value.forEach(e=>{e.selected=r.compare(e)})}),(0,i.nT)(()=>{n.value=o(e.colors,e.color)}),{rgbaColors:n,handleSelect:r}},br=e=>{const t=(0,g.DU)("color-predefine"),n=(0,i.EW)(()=>[t.b(),t.is("disabled",e.disabled)]),r=(0,i.EW)(()=>t.e("colors"));function o(e){return[t.e("color-selector"),t.is("alpha",e.get("alpha")<100),{selected:e.selected}]}return{rootKls:n,colorsKls:r,colorSelectorKls:o}},yr=(0,i.pM)({name:"ElColorPredefine"}),wr=(0,i.pM)({...yr,props:ur,setup(e){const t=e,{rgbaColors:n,handleSelect:r}=gr(t),{rootKls:o,colorsKls:a,colorSelectorKls:l}=br(t),{t:c}=(0,Ie.Ym)(),d=e=>c("el.colorpicker.predefineDescription",{value:e});return(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)((0,s.R1)(o))},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(a))},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(n),(t,n)=>((0,i.uX)(),(0,i.CE)("button",{key:e.colors[n],type:"button",disabled:e.disabled,"aria-label":d(t.value),class:(0,u.C4)((0,s.R1)(l)(t)),onClick:e=>(0,s.R1)(r)(n)},[(0,i.Lk)("div",{style:(0,u.Tr)({backgroundColor:t.value})},null,4)],10,["disabled","aria-label","onClick"]))),128))],2)],2))}});var Rr=(0,m.A)(wr,[["__file","predefine.vue"]]);const Cr=(0,f.b_)({color:{type:(0,f.jq)(Object),required:!0},disabled:Boolean}),xr=e=>{const t=(0,i.nI)(),n=(0,s.KR)(),r=(0,s.KR)(0),o=(0,s.KR)(0),a=(0,s.KR)("hsl(0, 100%, 50%)"),l=(0,i.EW)(()=>e.color.get("saturation")),u=(0,i.EW)(()=>e.color.get("value")),c=(0,i.EW)(()=>e.color.get("hue"));function d(t){var r;if(e.disabled)return;const o=t.target;o!==n.value&&f(t),null==(r=n.value)||r.focus({preventScroll:!0})}function f(n){if(e.disabled)return;const a=t.vnode.el,l=a.getBoundingClientRect(),{clientX:i,clientY:s}=Yn(n);let u=i-l.left,c=s-l.top;u=Math.max(0,u),u=Math.min(u,l.width),c=Math.max(0,c),c=Math.min(c,l.height),o.value=u,r.value=c,e.color.set({saturation:u/l.width*100,value:100-c/l.height*100})}function p(t){if(e.disabled)return;const{shiftKey:n}=t,r=(0,V.CG)(t),o=n?10:1;let a=!0;switch(r){case j.R.left:v(-o);break;case j.R.right:v(o);break;case j.R.up:h(o);break;case j.R.down:h(-o);break;default:a=!1;break}a&&t.preventDefault()}function v(t){let n=l.value+t;n=n<0?0:n>100?100:n,e.color.set("saturation",n)}function h(t){let n=u.value+t;n=n<0?0:n>100?100:n,e.color.set("value",n)}return{cursorRef:n,cursorTop:r,cursorLeft:o,background:a,saturation:l,brightness:u,hue:c,handleClick:d,handleDrag:f,handleKeydown:p}},kr=(e,{cursorTop:t,cursorLeft:n,background:r,handleDrag:o})=>{const a=(0,i.nI)(),l=(0,g.DU)("color-svpanel");function s(){const o=e.color.get("saturation"),l=e.color.get("value"),i=a.vnode.el,{clientWidth:s,clientHeight:u}=i;n.value=o*s/100,t.value=(100-l)*u/100,r.value=`hsl(${e.color.get("hue")}, 100%, 50%)`}(0,i.sV)(()=>{Un(a.vnode.el,{drag:e=>{o(e)},end:e=>{o(e)}}),s()}),(0,i.wB)([()=>e.color.get("hue"),()=>e.color.get("value"),()=>e.color.value],()=>s());const u=(0,i.EW)(()=>l.b()),c=(0,i.EW)(()=>l.e("cursor")),d=(0,i.EW)(()=>({backgroundColor:r.value})),f=(0,i.EW)(()=>({top:(0,y._V)(t.value),left:(0,y._V)(n.value)}));return{rootKls:u,cursorKls:c,rootStyle:d,cursorStyle:f,update:s}},Er=(0,i.pM)({name:"ElSvPanel"}),_r=(0,i.pM)({...Er,props:Cr,setup(e,{expose:t}){const n=e,{cursorRef:r,cursorTop:o,cursorLeft:a,background:l,saturation:c,brightness:d,handleClick:f,handleDrag:p,handleKeydown:v}=xr(n),{rootKls:h,cursorKls:m,rootStyle:g,cursorStyle:b,update:y}=kr(n,{cursorTop:o,cursorLeft:a,background:l,handleDrag:p}),{t:w}=(0,Ie.Ym)(),R=(0,i.EW)(()=>w("el.colorpicker.svLabel")),C=(0,i.EW)(()=>w("el.colorpicker.svDescription",{saturation:c.value,brightness:d.value,color:n.color.value}));return t({update:y}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)((0,s.R1)(h)),style:(0,u.Tr)((0,s.R1)(g)),onClick:(0,s.R1)(f)},[(0,i.Lk)("div",{ref_key:"cursorRef",ref:r,class:(0,u.C4)((0,s.R1)(m)),style:(0,u.Tr)((0,s.R1)(b)),tabindex:e.disabled?void 0:0,"aria-disabled":e.disabled,role:"slider","aria-valuemin":"0,0","aria-valuemax":"100,100","aria-label":(0,s.R1)(R),"aria-valuenow":`${(0,s.R1)(c)},${(0,s.R1)(d)}`,"aria-valuetext":(0,s.R1)(C),onKeydown:(0,s.R1)(v)},null,46,["tabindex","aria-disabled","aria-label","aria-valuenow","aria-valuetext","onKeydown"])],14,["onClick"]))}});var Sr=(0,m.A)(_r,[["__file","sv-panel.vue"]]);const Mr=(e,t)=>{const n=(0,s.Kh)(new mr({enableAlpha:e.showAlpha,format:e.colorFormat||"",value:e.modelValue}));return(0,i.wB)(()=>[e.colorFormat,e.showAlpha],()=>{n.enableAlpha=e.showAlpha,n.format=e.colorFormat||n.format,n.doOnChange(),t(d.l4,n.value)}),{color:n}},Lr=(0,i.pM)({name:"ElColorPickerPanel"}),Ar=(0,i.pM)({...Lr,props:dr,emits:fr,setup(e,{expose:t,emit:n}){const r=e,o=(0,g.DU)("color-picker-panel"),{formItem:a}=(0,un.j)(),l=(0,z.CB)(),c=(0,s.KR)(),f=(0,s.KR)(),p=(0,s.KR)(),v=(0,s.KR)(),h=(0,s.KR)(""),{color:m}=(0,i.WQ)(pr,()=>Mr(r,n),!0);function b(){m.fromString(h.value),m.value!==h.value&&(h.value=m.value)}function y(){var e;r.validateEvent&&(null==(e=null==a?void 0:a.validate)||e.call(a,"blur").catch(e=>(0,w.U)(e)))}function R(){var e,t,n;null==(e=c.value)||e.update(),null==(t=f.value)||t.update(),null==(n=p.value)||n.update()}return(0,i.sV)(()=>{r.modelValue&&(h.value=m.value),(0,i.dY)(R)}),(0,i.wB)(()=>r.modelValue,e=>{e!==m.value&&(e?m.fromString(e):m.clear())}),(0,i.wB)(()=>m.value,e=>{n(d.l4,e),h.value=e,r.validateEvent&&(null==a||a.validate("change").catch(e=>(0,w.U)(e)))}),(0,i.Gt)(vr,{currentColor:(0,i.EW)(()=>m.value)}),t({color:m,inputRef:v,update:R}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)([(0,s.R1)(o).b(),(0,s.R1)(o).is("disabled",(0,s.R1)(l)),(0,s.R1)(o).is("border",e.border)]),onFocusout:y},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(o).e("wrapper"))},[(0,i.bF)(sr,{ref_key:"hueRef",ref:c,class:"hue-slider",color:(0,s.R1)(m),vertical:"",disabled:(0,s.R1)(l)},null,8,["color","disabled"]),(0,i.bF)(Sr,{ref_key:"svRef",ref:f,color:(0,s.R1)(m),disabled:(0,s.R1)(l)},null,8,["color","disabled"])],2),e.showAlpha?((0,i.uX)(),(0,i.Wv)(rr,{key:0,ref_key:"alphaRef",ref:p,color:(0,s.R1)(m),disabled:(0,s.R1)(l)},null,8,["color","disabled"])):(0,i.Q3)("v-if",!0),e.predefine?((0,i.uX)(),(0,i.Wv)(Rr,{key:1,ref:"predefine","enable-alpha":e.showAlpha,color:(0,s.R1)(m),colors:e.predefine,disabled:(0,s.R1)(l)},null,8,["enable-alpha","color","colors","disabled"])):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(o).e("footer"))},[(0,i.bF)((0,s.R1)(T.WK),{ref_key:"inputRef",ref:v,modelValue:h.value,"onUpdate:modelValue":e=>h.value=e,"validate-event":!1,size:"small",disabled:(0,s.R1)(l),onChange:b},null,8,["modelValue","onUpdate:modelValue","disabled"]),(0,i.RG)(e.$slots,"footer")],2)],34))}});var Or=(0,m.A)(Ar,[["__file","color-picker-panel.vue"]]);const Tr=(0,E.GU)(Or);var Ir=n(6301),Nr=n(58501);const Wr=(0,f.b_)({persistent:{type:Boolean,default:!0},modelValue:{type:(0,f.jq)(String),default:void 0},id:String,showAlpha:Boolean,colorFormat:String,disabled:{type:Boolean,default:void 0},size:nn.mU,popperClass:P.E.popperClass,popperStyle:P.E.popperStyle,tabindex:{type:[String,Number],default:0},teleported:P.E.teleported,appendTo:P.E.appendTo,predefine:{type:(0,f.jq)(Array)},validateEvent:{type:Boolean,default:!0},...rn.bs,...(0,Nr.l)(["ariaLabel"])}),Dr={[d.l4]:e=>(0,u.Kg)(e)||(0,cr.A)(e),[d.YU]:e=>(0,u.Kg)(e)||(0,cr.A)(e),activeChange:e=>(0,u.Kg)(e)||(0,cr.A)(e),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent},Pr=(0,i.pM)({name:"ElColorPicker"}),Fr=(0,i.pM)({...Pr,props:Wr,emits:Dr,setup(e,{expose:t,emit:n}){const r=e,{t:o}=(0,Ie.Ym)(),a=(0,g.DU)("color"),{formItem:l}=(0,un.j)(),c=(0,z.NV)(),f=(0,z.CB)(),{valueOnClear:p,isEmptyValue:v}=(0,rn.fQ)(r,null),h=Mr(r,n),{inputId:m,isLabeledByFormItem:b}=(0,un.W)(r,{formItemContext:l}),y=(0,s.KR)(),R=(0,s.KR)(),C=(0,s.KR)(),x=(0,s.KR)(!1),k=(0,s.KR)(!1);let E=!0;const{isFocused:_,handleFocus:S,handleBlur:T}=(0,dn.K)(R,{disabled:f,beforeBlur(e){var t;return null==(t=y.value)?void 0:t.isFocusInsideContent(e)},afterBlur(){var e;X(!1),Y(),r.validateEvent&&(null==(e=null==l?void 0:l.validate)||e.call(l,"blur").catch(e=>(0,w.U)(e)))}}),I=(0,A.jN)(()=>{var e,t;return null!=(t=null==(e=C.value)?void 0:e.color)?t:h.color}),D=(0,i.EW)(()=>(0,L.A)(r,Object.keys(dr))),P=(0,i.EW)(()=>r.modelValue||k.value?H(I,r.showAlpha):"transparent"),F=(0,i.EW)(()=>r.modelValue||k.value?I.value:""),B=(0,i.EW)(()=>b.value?void 0:r.ariaLabel||o("el.colorpicker.defaultLabel")),$=(0,i.EW)(()=>b.value?null==l?void 0:l.labelId:void 0),K=(0,i.EW)(()=>[a.b("picker"),a.is("disabled",f.value),a.bm("picker",c.value),a.is("focused",_.value)]);function H(e,t){const{r:n,g:r,b:o,a:a}=e.toRgb();return t?`rgba(${n}, ${r}, ${o}, ${a})`:`rgb(${n}, ${r}, ${o})`}function X(e){x.value=e}const U=(0,Ir.A)(X,100,{leading:!0});function G(){f.value||X(!0)}function q(){U(!1),Y()}function Y(){(0,i.dY)(()=>{r.modelValue?I.fromString(r.modelValue):(I.value="",(0,i.dY)(()=>{k.value=!1}))})}function Q(){f.value||(x.value&&Y(),U(!x.value))}function Z(){const e=v(I.value)?p.value:I.value;n(d.l4,e),n(d.YU,e),r.validateEvent&&(null==l||l.validate("change").catch(e=>(0,w.U)(e))),U(!1),(0,i.dY)(()=>{const e=new mr({enableAlpha:r.showAlpha,format:r.colorFormat||"",value:r.modelValue});I.compare(e)||Y()})}function J(){U(!1),n(d.l4,p.value),n(d.YU,p.value),r.modelValue!==p.value&&r.validateEvent&&(null==l||l.validate("change").catch(e=>(0,w.U)(e))),Y()}function ee(){var e,t;null==(t=null==(e=null==C?void 0:C.value)?void 0:e.inputRef)||t.focus()}function te(){x.value&&(q(),_.value&&oe())}function ne(e){e.preventDefault(),e.stopPropagation(),X(!1),Y()}function re(e){const t=(0,V.CG)(e);switch(t){case j.R.enter:case j.R.numpadEnter:case j.R.space:e.preventDefault(),e.stopPropagation(),G();break;case j.R.esc:ne(e);break}}function oe(){R.value.focus()}function ae(){R.value.blur()}return(0,i.wB)(()=>F.value,e=>{E&&n("activeChange",e),E=!0}),(0,i.wB)(()=>I.value,()=>{r.modelValue||k.value||(k.value=!0)}),(0,i.wB)(()=>r.modelValue,e=>{e?e&&e!==I.value&&(E=!1,I.fromString(e)):k.value=!1}),(0,i.wB)(()=>x.value,()=>{var e;(0,i.dY)(null==(e=C.value)?void 0:e.update)}),(0,i.Gt)(pr,h),t({color:I,show:G,hide:q,focus:oe,blur:ae}),(e,t)=>((0,i.uX)(),(0,i.Wv)((0,s.R1)(N.R7),{ref_key:"popper",ref:y,visible:x.value,"show-arrow":!1,"fallback-placements":["bottom","top","right","left"],offset:0,"gpu-acceleration":!1,"popper-class":[(0,s.R1)(a).be("picker","panel"),e.popperClass],"popper-style":e.popperStyle,"stop-popper-mouse-event":!1,pure:"",loop:"",role:"dialog",effect:"light",trigger:"click",teleported:e.teleported,transition:`${(0,s.R1)(a).namespace.value}-zoom-in-top`,persistent:e.persistent,"append-to":e.appendTo,onShow:ee,onHide:e=>X(!1)},{content:(0,i.k6)(()=>[(0,i.bo)(((0,i.uX)(),(0,i.Wv)((0,s.R1)(Tr),(0,i.v6)({ref_key:"pickerPanelRef",ref:C},(0,s.R1)(D),{border:!1,"validate-event":!1,onKeydown:(0,M.jR)(ne,["esc"])}),{footer:(0,i.k6)(()=>[(0,i.Lk)("div",null,[(0,i.bF)((0,s.R1)(pe.S2),{class:(0,u.C4)((0,s.R1)(a).be("footer","link-btn")),text:"",size:"small",onClick:J},{default:(0,i.k6)(()=>[(0,i.eW)((0,u.v_)((0,s.R1)(o)("el.colorpicker.clear")),1)]),_:1},8,["class"]),(0,i.bF)((0,s.R1)(pe.S2),{plain:"",size:"small",class:(0,u.C4)((0,s.R1)(a).be("footer","btn")),onClick:Z},{default:(0,i.k6)(()=>[(0,i.eW)((0,u.v_)((0,s.R1)(o)("el.colorpicker.confirm")),1)]),_:1},8,["class"])])]),_:1},16,["onKeydown"])),[[(0,s.R1)(sn.A),te,R.value]])]),default:(0,i.k6)(()=>[(0,i.Lk)("div",(0,i.v6)({id:(0,s.R1)(m),ref_key:"triggerRef",ref:R},e.$attrs,{class:(0,s.R1)(K),role:"button","aria-label":(0,s.R1)(B),"aria-labelledby":(0,s.R1)($),"aria-description":(0,s.R1)(o)("el.colorpicker.description",{color:e.modelValue||""}),"aria-disabled":(0,s.R1)(f),tabindex:(0,s.R1)(f)?void 0:e.tabindex,onKeydown:re,onFocus:(0,s.R1)(S),onBlur:(0,s.R1)(T)}),[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(a).be("picker","trigger")),onClick:Q},[(0,i.Lk)("span",{class:(0,u.C4)([(0,s.R1)(a).be("picker","color"),(0,s.R1)(a).is("alpha",e.showAlpha)])},[(0,i.Lk)("span",{class:(0,u.C4)((0,s.R1)(a).be("picker","color-inner")),style:(0,u.Tr)({backgroundColor:(0,s.R1)(P)})},[(0,i.bo)((0,i.bF)((0,s.R1)(W.tk),{class:(0,u.C4)([(0,s.R1)(a).be("picker","icon"),(0,s.R1)(a).is("icon-arrow-down")])},{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.ArrowDown))]),_:1},8,["class"]),[[M.aG,e.modelValue||k.value]]),(0,i.bo)((0,i.bF)((0,s.R1)(W.tk),{class:(0,u.C4)([(0,s.R1)(a).be("picker","empty"),(0,s.R1)(a).is("icon-close")])},{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.Close))]),_:1},8,["class"]),[[M.aG,!e.modelValue&&!k.value]])],6)],2)],2)],16,["id","aria-label","aria-labelledby","aria-description","aria-disabled","tabindex","onFocus","onBlur"])]),_:1},8,["visible","popper-class","popper-style","teleported","transition","persistent","append-to","onHide"]))}});var Br=(0,m.A)(Fr,[["__file","color-picker.vue"]]);const zr=(0,E.GU)(Br);var $r=n(97722),Vr=n(54880),jr=n(76110),Kr=n(74642),Hr=n(7515),Xr=n(75806),Ur=n(43569),Gr=n(70464),qr=n(32899);const Yr=(0,f.b_)({disabledHours:{type:(0,f.jq)(Function)},disabledMinutes:{type:(0,f.jq)(Function)},disabledSeconds:{type:(0,f.jq)(Function)}}),Qr=(0,f.b_)({visible:Boolean,actualVisible:{type:Boolean,default:void 0},format:{type:String,default:""}}),Zr=(0,f.b_)({valueFormat:String,dateFormat:String,timeFormat:String,disabled:{type:Boolean,default:void 0},modelValue:{type:(0,f.jq)([Date,Array,String,Number]),default:""},defaultValue:{type:(0,f.jq)([Date,Array])},defaultTime:{type:(0,f.jq)([Date,Array])},isRange:Boolean,...Yr,disabledDate:{type:Function},cellClassName:{type:Function},shortcuts:{type:Array,default:()=>[]},arrowControl:Boolean,unlinkPanels:Boolean,showNow:{type:Boolean,default:!0},showConfirm:Boolean,showFooter:Boolean,showWeekNumber:Boolean,type:{type:(0,f.jq)(String),default:"date"},clearable:{type:Boolean,default:!0},border:{type:Boolean,default:!0}}),Jr=Symbol("rootPickerContextKey"),eo="ElIsDefaultFormat",to=["date","dates","year","years","month","months","week","range"],no=(0,f.b_)({cellClassName:{type:(0,f.jq)(Function)},disabledDate:{type:(0,f.jq)(Function)},date:{type:(0,f.jq)(Object),required:!0},minDate:{type:(0,f.jq)(Object)},maxDate:{type:(0,f.jq)(Object)},parsedValue:{type:(0,f.jq)([Object,Array])},rangeState:{type:(0,f.jq)(Object),default:()=>({endDate:null,selecting:!1})},disabled:Boolean}),ro=(0,f.b_)({type:{type:(0,f.jq)(String),required:!0,values:Oe},dateFormat:String,timeFormat:String,showNow:{type:Boolean,default:!0},showConfirm:Boolean,showFooter:{type:Boolean,default:!0},showWeekNumber:Boolean,border:Boolean,disabled:Boolean}),oo=(0,f.b_)({unlinkPanels:Boolean,visible:{type:Boolean,default:!0},showConfirm:Boolean,showFooter:{type:Boolean,default:!0},border:Boolean,disabled:Boolean,parsedValue:{type:(0,f.jq)(Array)}}),ao=e=>({type:String,values:to,default:e}),lo=(0,f.b_)({...ro,parsedValue:{type:(0,f.jq)([Object,Array])},visible:{type:Boolean,default:!0},format:{type:String,default:""}}),io=e=>{if(!(0,u.cy)(e))return!1;const[t,n]=e;return ve.isDayjs(t)&&ve.isDayjs(n)&&ve(t).isValid()&&ve(n).isValid()&&t.isSameOrBefore(n)},so=(e,{lang:t,step:n=1,unit:r,unlinkPanels:o})=>{let a;if((0,u.cy)(e)){let[a,l]=e.map(e=>ve(e).locale(t));return o||(l=a.add(n,r)),[a,l]}return a=e?ve(e):ve(),a=a.locale(t),[a,a.add(n,r)]},uo=(e,t,{columnIndexOffset:n,startDate:r,nextEndDate:o,now:a,unit:l,relativeDateGetter:i,setCellMetadata:s,setRowMetadata:u})=>{for(let c=0;c{const o=ve().locale(r).startOf("month").month(n).year(t).hour(e.hour()).minute(e.minute()).second(e.second()),a=o.daysInMonth();return me(a).map(e=>o.add(e,"day").toDate())},fo=(e,t,n,r,o)=>{const a=ve().year(t).month(n).startOf("month").hour(e.hour()).minute(e.minute()).second(e.second()),l=co(e,t,n,r).find(e=>!(null==o?void 0:o(e)));return l?ve(l).locale(r):a.locale(r)},po=(e,t,n)=>{const r=e.year();if(!(null==n?void 0:n(e.toDate())))return e.locale(t);const o=e.month();if(!co(e,r,o,t).every(n))return fo(e,r,o,t,n);for(let a=0;a<12;a++)if(!co(e,r,a,t).every(n))return fo(e,r,a,t,n);return e},vo=(e,t,n,r)=>{if((0,u.cy)(e))return e.map(e=>vo(e,t,n,r));if((0,u.Kg)(e)){const n=(null==r?void 0:r.value)?ve(e):ve(e,t);if(!n.isValid())return n}return ve(e,t).locale(n)},ho=(0,f.b_)({...no,showWeekNumber:Boolean,selectionMode:ao("date")}),mo=["changerange","pick","select"];var go=n(75101);const bo=(e="")=>["normal","today"].includes(e),yo=(e,t)=>{const{lang:n}=(0,Ie.Ym)(),r=(0,s.KR)(),o=(0,s.KR)(),a=(0,s.KR)(),l=(0,s.KR)(),c=(0,s.KR)([[],[],[],[],[],[]]);let d=!1;const f=e.date.$locale().weekStart||7,p=e.date.locale("en").localeData().weekdaysShort().map(e=>e.toLowerCase()),v=(0,i.EW)(()=>f>3?7-f:-f),h=(0,i.EW)(()=>{const t=e.date.startOf("month");return t.subtract(t.day()||7,"day")}),m=(0,i.EW)(()=>p.concat(p).slice(f,f+7)),g=(0,i.EW)(()=>(0,go.A)((0,s.R1)(x)).some(e=>e.isCurrent)),b=(0,i.EW)(()=>{const t=e.date.startOf("month"),n=t.day()||7,r=t.daysInMonth(),o=t.subtract(1,"month").daysInMonth();return{startOfMonthDay:n,dateCountOfMonth:r,dateCountOfLastMonth:o}}),y=(0,i.EW)(()=>"dates"===e.selectionMode?(0,Gt.bg)(e.parsedValue):[]),w=(e,{count:t,rowIndex:n,columnIndex:r})=>{const{startOfMonthDay:o,dateCountOfMonth:a,dateCountOfLastMonth:l}=(0,s.R1)(b),i=(0,s.R1)(v);if(!(n>=0&&n<=1))return t<=a?e.text=t:(e.text=t-a,e.type="next-month"),!0;{const a=o+i<0?7+o+i:o+i;if(r+7*n>=a)return e.text=t,!0;e.text=l-(a-r%7)+1+7*n,e.type="prev-month"}return!1},R=(t,{columnIndex:n,rowIndex:r},o)=>{const{disabledDate:a,cellClassName:l}=e,i=(0,s.R1)(y),u=w(t,{count:o,rowIndex:r,columnIndex:n}),c=t.dayjs.toDate();return t.selected=i.find(e=>e.isSame(t.dayjs,"day")),t.isSelected=!!t.selected,t.isCurrent=E(t),t.disabled=null==a?void 0:a(c),t.customClass=null==l?void 0:l(c),u},C=t=>{if("week"===e.selectionMode){const[n,r]=e.showWeekNumber?[1,7]:[0,6],o=P(t[n+1]);t[n].inRange=o,t[n].start=o,t[r].inRange=o,t[r].end=o}},x=(0,i.EW)(()=>{const{minDate:t,maxDate:r,rangeState:o,showWeekNumber:a}=e,l=(0,s.R1)(v),i=(0,s.R1)(c),u="day";let d=1;if(uo({row:6,column:7},i,{startDate:t,columnIndexOffset:a?1:0,nextEndDate:o.endDate||r||o.selecting&&t||null,now:ve().locale((0,s.R1)(n)).startOf(u),unit:u,relativeDateGetter:e=>(0,s.R1)(h).add(e-l,u),setCellMetadata:(...e)=>{R(...e,d)&&(d+=1)},setRowMetadata:C}),a)for(let e=0;e<6;e++)i[e][1].dayjs&&(i[e][0]={type:"week",text:i[e][1].dayjs.week()});return i});(0,i.wB)(()=>e.date,async()=>{var e;(null==(e=(0,s.R1)(r))?void 0:e.contains(document.activeElement))&&(await(0,i.dY)(),await k())});const k=async()=>{var e;return null==(e=(0,s.R1)(o))?void 0:e.focus()},E=t=>"date"===e.selectionMode&&bo(t.type)&&_(t,e.parsedValue),_=(t,r)=>!!r&&ve(r).locale((0,s.R1)(n)).isSame(e.date.date(Number(t.text)),"day"),S=(t,n)=>{const r=7*t+(n-(e.showWeekNumber?1:0))-(0,s.R1)(v);return(0,s.R1)(h).add(r,"day")},M=n=>{var r;if(!e.rangeState.selecting)return;let o=n.target;if("SPAN"===o.tagName&&(o=null==(r=o.parentNode)?void 0:r.parentNode),"DIV"===o.tagName&&(o=o.parentNode),"TD"!==o.tagName)return;const i=o.parentNode.rowIndex-1,u=o.cellIndex;(0,s.R1)(x)[i][u].disabled||i===(0,s.R1)(a)&&u===(0,s.R1)(l)||(a.value=i,l.value=u,t("changerange",{selecting:!0,endDate:S(i,u)}))},L=e=>!(0,s.R1)(g)&&1===(null==e?void 0:e.text)&&bo(e.type)||e.isCurrent,A=t=>{d||(0,s.R1)(g)||"date"!==e.selectionMode||D(t,!0)},O=e=>{const t=e.target.closest("td");t&&(d=!0)},T=e=>{const t=e.target.closest("td");t&&(d=!1)},I=n=>{e.rangeState.selecting&&e.minDate?(n>=e.minDate?t("pick",{minDate:e.minDate,maxDate:n}):t("pick",{minDate:n,maxDate:e.minDate}),t("select",!1)):(t("pick",{minDate:n,maxDate:null}),t("select",!0))},N=e=>{const n=e.week(),r=`${e.year()}w${n}`;t("pick",{year:e.year(),week:n,value:r,date:e.startOf("week")})},W=(n,r)=>{const o=r?(0,Gt.bg)(e.parsedValue).filter(e=>(null==e?void 0:e.valueOf())!==n.valueOf()):(0,Gt.bg)(e.parsedValue).concat([n]);t("pick",o)},D=(n,r=!1)=>{if(e.disabled)return;const o=n.target.closest("td");if(!o)return;const a=o.parentNode.rowIndex-1,l=o.cellIndex,i=(0,s.R1)(x)[a][l];if(i.disabled||"week"===i.type)return;const u=S(a,l);switch(e.selectionMode){case"range":I(u);break;case"date":t("pick",u,r);break;case"week":N(u);break;case"dates":W(u,!!i.selected);break}},P=t=>{if("week"!==e.selectionMode)return!1;let n=e.date.startOf("day");if("prev-month"===t.type&&(n=n.subtract(1,"month")),"next-month"===t.type&&(n=n.add(1,"month")),n=n.date(Number.parseInt(t.text,10)),e.parsedValue&&!(0,u.cy)(e.parsedValue)){const t=(e.parsedValue.day()-f+7)%7-1,r=e.parsedValue.subtract(t,"day");return r.isSame(n,"day")}return!1};return{WEEKS:m,rows:x,tbodyRef:r,currentCellRef:o,focus:k,isCurrent:E,isWeekActive:P,isSelectedCell:L,handlePickDate:D,handleMouseUp:T,handleMouseDown:O,handleMouseMove:M,handleFocus:A}},wo=(e,{isCurrent:t,isWeekActive:n})=>{const r=(0,g.DU)("date-table"),{t:o}=(0,Ie.Ym)(),a=(0,i.EW)(()=>[r.b(),r.is("week-mode","week"===e.selectionMode&&!e.disabled)]),l=(0,i.EW)(()=>o("el.datepicker.dateTablePrompt")),s=n=>{const r=[];return bo(n.type)&&!n.disabled?(r.push("available"),"today"===n.type&&r.push("today")):r.push(n.type),t(n)&&r.push("current"),n.inRange&&(bo(n.type)||"week"===e.selectionMode)&&(r.push("in-range"),n.start&&r.push("start-date"),n.end&&r.push("end-date")),(n.disabled||e.disabled)&&r.push("disabled"),n.selected&&r.push("selected"),n.customClass&&r.push(n.customClass),r.join(" ")},u=e=>[r.e("row"),{current:n(e)}];return{tableKls:a,tableLabel:l,weekHeaderClass:r.e("week-header"),getCellClasses:s,getRowKls:u,t:o}},Ro=(0,f.b_)({cell:{type:(0,f.jq)(Object)}});var Co=(0,i.pM)({name:"ElDatePickerCell",props:Ro,setup(e){const t=(0,g.DU)("date-table-cell"),{slots:n}=(0,i.WQ)(Jr);return()=>{const{cell:r}=e;return(0,i.RG)(n,"default",{...r},()=>{var e;return[(0,i.bF)("div",{class:t.b()},[(0,i.bF)("span",{class:t.e("text")},[null!=(e=null==r?void 0:r.renderText)?e:null==r?void 0:r.text])])]})}}});const xo=(0,i.pM)({__name:"basic-date-table",props:ho,emits:mo,setup(e,{expose:t,emit:n}){const r=e,{WEEKS:o,rows:a,tbodyRef:l,currentCellRef:c,focus:d,isCurrent:f,isWeekActive:p,isSelectedCell:v,handlePickDate:h,handleMouseUp:m,handleMouseDown:g,handleMouseMove:b,handleFocus:y}=yo(r,n),{tableLabel:w,tableKls:R,getCellClasses:C,getRowKls:x,weekHeaderClass:k,t:E}=wo(r,{isCurrent:f,isWeekActive:p});let _=!1;return(0,i.xo)(()=>{_=!0}),t({focus:d}),(e,t)=>((0,i.uX)(),(0,i.CE)("table",{"aria-label":(0,s.R1)(w),class:(0,u.C4)((0,s.R1)(R)),cellspacing:"0",cellpadding:"0",role:"grid",onClick:(0,s.R1)(h),onMousemove:(0,s.R1)(b),onMousedown:(0,s.R1)(g),onMouseup:(0,s.R1)(m)},[(0,i.Lk)("tbody",{ref_key:"tbodyRef",ref:l},[(0,i.Lk)("tr",null,[e.showWeekNumber?((0,i.uX)(),(0,i.CE)("th",{key:0,scope:"col",class:(0,u.C4)((0,s.R1)(k))},null,2)):(0,i.Q3)("v-if",!0),((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(o),(e,t)=>((0,i.uX)(),(0,i.CE)("th",{key:t,"aria-label":(0,s.R1)(E)("el.datepicker.weeksFull."+e),scope:"col"},(0,u.v_)((0,s.R1)(E)("el.datepicker.weeks."+e)),9,["aria-label"]))),128))]),((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(a),(t,n)=>((0,i.uX)(),(0,i.CE)("tr",{key:n,class:(0,u.C4)((0,s.R1)(x)(e.showWeekNumber?t[2]:t[1]))},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(t,(t,r)=>((0,i.uX)(),(0,i.CE)("td",{key:`${n}.${r}`,ref_for:!0,ref:e=>!(0,s.R1)(_)&&(0,s.R1)(v)(t)&&(c.value=e),class:(0,u.C4)((0,s.R1)(C)(t)),"aria-current":t.isCurrent?"date":void 0,"aria-selected":t.isCurrent,tabindex:e.disabled?void 0:(0,s.R1)(v)(t)?0:-1,"aria-disabled":e.disabled,onFocus:(0,s.R1)(y)},[(0,i.bF)((0,s.R1)(Co),{cell:t},null,8,["cell"])],42,["aria-current","aria-selected","tabindex","aria-disabled","onFocus"]))),128))],2))),128))],512)],42,["aria-label","onClick","onMousemove","onMousedown","onMouseup"]))}});var ko=(0,m.A)(xo,[["__file","basic-date-table.vue"]]);const Eo=(0,f.b_)({...no,selectionMode:ao("month")}),_o=(0,i.pM)({__name:"basic-month-table",props:Eo,emits:["changerange","pick","select"],setup(e,{expose:t,emit:n}){const r=e,o=(0,g.DU)("month-table"),{t:a,lang:l}=(0,Ie.Ym)(),c=(0,s.KR)(),d=(0,s.KR)(),f=(0,s.KR)(r.date.locale("en").localeData().monthsShort().map(e=>e.toLowerCase())),p=(0,s.KR)([[],[],[]]),v=(0,s.KR)(),h=(0,s.KR)(),m=(0,i.EW)(()=>{var e,t,n;const o=p.value,a=ve().locale(l.value).startOf("month");for(let l=0;l<3;l++){const i=o[l];for(let o=0;o<4;o++){const s=i[o]||(i[o]={row:l,column:o,type:"normal",inRange:!1,start:!1,end:!1,text:-1,disabled:!1,isSelected:!1,customClass:void 0,date:void 0,dayjs:void 0,isCurrent:void 0,selected:void 0,renderText:void 0,timestamp:void 0});s.type="normal";const u=4*l+o,c=r.date.startOf("year").month(u),d=r.rangeState.endDate||r.maxDate||r.rangeState.selecting&&r.minDate||null;s.inRange=!!(r.minDate&&c.isSameOrAfter(r.minDate,"month")&&d&&c.isSameOrBefore(d,"month"))||!!(r.minDate&&c.isSameOrBefore(r.minDate,"month")&&d&&c.isSameOrAfter(d,"month")),(null==(e=r.minDate)?void 0:e.isSameOrAfter(d))?(s.start=!(!d||!c.isSame(d,"month")),s.end=r.minDate&&c.isSame(r.minDate,"month")):(s.start=!(!r.minDate||!c.isSame(r.minDate,"month")),s.end=!(!d||!c.isSame(d,"month")));const f=a.isSame(c);f&&(s.type="today");const p=c.toDate();s.text=u,s.disabled=(null==(t=r.disabledDate)?void 0:t.call(r,p))||!1,s.date=p,s.customClass=null==(n=r.cellClassName)?void 0:n.call(r,p),s.dayjs=c,s.timestamp=c.valueOf(),s.isSelected=R(s)}}return o}),b=()=>{var e;null==(e=d.value)||e.focus()},w=e=>{const t={},n=r.date.year(),o=new Date,a=e.text;return t.disabled=r.disabled||!!r.disabledDate&&co(r.date,n,a,l.value).every(r.disabledDate),t.current=(0,Gt.bg)(r.parsedValue).some(e=>ve.isDayjs(e)&&e.year()===n&&e.month()===a),t.today=o.getFullYear()===n&&o.getMonth()===a,e.customClass&&(t[e.customClass]=!0),e.inRange&&(t["in-range"]=!0,e.start&&(t["start-date"]=!0),e.end&&(t["end-date"]=!0)),t},R=e=>{const t=r.date.year(),n=e.text;return(0,Gt.bg)(r.date).some(e=>e.year()===t&&e.month()===n)},C=e=>{var t;if(!r.rangeState.selecting)return;let o=e.target;if("SPAN"===o.tagName&&(o=null==(t=o.parentNode)?void 0:t.parentNode),"DIV"===o.tagName&&(o=o.parentNode),"TD"!==o.tagName)return;const a=o.parentNode.rowIndex,l=o.cellIndex;m.value[a][l].disabled||a===v.value&&l===h.value||(v.value=a,h.value=l,n("changerange",{selecting:!0,endDate:r.date.startOf("year").month(4*a+l)}))},x=e=>{var t;if(r.disabled)return;const o=null==(t=e.target)?void 0:t.closest("td");if("TD"!==(null==o?void 0:o.tagName))return;if((0,y.nB)(o,"disabled"))return;const a=o.cellIndex,i=o.parentNode.rowIndex,s=4*i+a,u=r.date.startOf("year").month(s);if("months"===r.selectionMode){if("keydown"===e.type)return void n("pick",(0,Gt.bg)(r.parsedValue),!1);const t=fo(r.date,r.date.year(),s,l.value,r.disabledDate),a=(0,y.nB)(o,"current")?(0,Gt.bg)(r.parsedValue).filter(e=>(null==e?void 0:e.year())!==t.year()||(null==e?void 0:e.month())!==t.month()):(0,Gt.bg)(r.parsedValue).concat([ve(t)]);n("pick",a)}else"range"===r.selectionMode?r.rangeState.selecting?(r.minDate&&u>=r.minDate?n("pick",{minDate:r.minDate,maxDate:u}):n("pick",{minDate:u,maxDate:r.minDate}),n("select",!1)):(n("pick",{minDate:u,maxDate:null}),n("select",!0)):n("pick",s)};return(0,i.wB)(()=>r.date,async()=>{var e,t;(null==(e=c.value)?void 0:e.contains(document.activeElement))&&(await(0,i.dY)(),null==(t=d.value)||t.focus())}),t({focus:b}),(e,t)=>((0,i.uX)(),(0,i.CE)("table",{role:"grid","aria-label":(0,s.R1)(a)("el.datepicker.monthTablePrompt"),class:(0,u.C4)((0,s.R1)(o).b()),onClick:x,onMousemove:C},[(0,i.Lk)("tbody",{ref_key:"tbodyRef",ref:c},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(m),(e,t)=>((0,i.uX)(),(0,i.CE)("tr",{key:t},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e,(e,t)=>((0,i.uX)(),(0,i.CE)("td",{key:t,ref_for:!0,ref:t=>e.isSelected&&(d.value=t),class:(0,u.C4)(w(e)),"aria-selected":!!e.isSelected,"aria-label":(0,s.R1)(a)("el.datepicker.month"+(+e.text+1)),tabindex:e.isSelected?0:-1,onKeydown:[(0,M.jR)((0,M.D$)(x,["prevent","stop"]),["space"]),(0,M.jR)((0,M.D$)(x,["prevent","stop"]),["enter"])]},[(0,i.bF)((0,s.R1)(Co),{cell:{...e,renderText:(0,s.R1)(a)("el.datepicker.months."+f.value[e.text])}},null,8,["cell"])],42,["aria-selected","aria-label","tabindex","onKeydown"]))),128))]))),128))],512)],42,["aria-label"]))}});var So=(0,m.A)(_o,[["__file","basic-month-table.vue"]]);const Mo=(0,f.b_)({...no,selectionMode:ao("year")}),Lo=(0,i.pM)({__name:"basic-year-table",props:Mo,emits:["changerange","pick","select"],setup(e,{expose:t,emit:n}){const r=e,o=(e,t)=>{const n=ve(String(e)).locale(t).startOf("year"),r=n.endOf("year"),o=r.dayOfYear();return me(o).map(e=>n.add(e,"day").toDate())},a=(0,g.DU)("year-table"),{t:l,lang:c}=(0,Ie.Ym)(),d=(0,s.KR)(),f=(0,s.KR)(),p=(0,i.EW)(()=>10*Math.floor(r.date.year()/10)),v=(0,s.KR)([[],[],[]]),h=(0,s.KR)(),m=(0,s.KR)(),b=(0,i.EW)(()=>{var e,t,n;const o=v.value,a=ve().locale(c.value).startOf("year");for(let l=0;l<3;l++){const i=o[l];for(let o=0;o<4;o++){if(4*l+o>=10)break;let s=i[o];s||(s={row:l,column:o,type:"normal",inRange:!1,start:!1,end:!1,text:-1,disabled:!1,isSelected:!1,customClass:void 0,date:void 0,dayjs:void 0,isCurrent:void 0,selected:void 0,renderText:void 0,timestamp:void 0}),s.type="normal";const u=4*l+o+p.value,c=ve().year(u),d=r.rangeState.endDate||r.maxDate||r.rangeState.selecting&&r.minDate||null;s.inRange=!!(r.minDate&&c.isSameOrAfter(r.minDate,"year")&&d&&c.isSameOrBefore(d,"year"))||!!(r.minDate&&c.isSameOrBefore(r.minDate,"year")&&d&&c.isSameOrAfter(d,"year")),(null==(e=r.minDate)?void 0:e.isSameOrAfter(d))?(s.start=!(!d||!c.isSame(d,"year")),s.end=!(!r.minDate||!c.isSame(r.minDate,"year"))):(s.start=!(!r.minDate||!c.isSame(r.minDate,"year")),s.end=!(!d||!c.isSame(d,"year")));const f=a.isSame(c);f&&(s.type="today"),s.text=u;const v=c.toDate();s.disabled=(null==(t=r.disabledDate)?void 0:t.call(r,v))||!1,s.date=v,s.customClass=null==(n=r.cellClassName)?void 0:n.call(r,v),s.dayjs=c,s.timestamp=c.valueOf(),s.isSelected=C(s),i[o]=s}}return o}),w=()=>{var e;null==(e=f.value)||e.focus()},R=e=>{const t={},n=ve().locale(c.value),a=e.text;return t.disabled=r.disabled||!!r.disabledDate&&o(a,c.value).every(r.disabledDate),t.today=n.year()===a,t.current=(0,Gt.bg)(r.parsedValue).some(e=>e.year()===a),e.customClass&&(t[e.customClass]=!0),e.inRange&&(t["in-range"]=!0,e.start&&(t["start-date"]=!0),e.end&&(t["end-date"]=!0)),t},C=e=>{const t=e.text;return(0,Gt.bg)(r.date).some(e=>e.year()===t)},x=e=>{var t;if(r.disabled)return;const o=null==(t=e.target)?void 0:t.closest("td");if(!o||!o.textContent||(0,y.nB)(o,"disabled"))return;const a=o.cellIndex,l=o.parentNode.rowIndex,i=4*l+a+p.value,s=ve().year(i);if("range"===r.selectionMode)r.rangeState.selecting?(r.minDate&&s>=r.minDate?n("pick",{minDate:r.minDate,maxDate:s}):n("pick",{minDate:s,maxDate:r.minDate}),n("select",!1)):(n("pick",{minDate:s,maxDate:null}),n("select",!0));else if("years"===r.selectionMode){if("keydown"===e.type)return void n("pick",(0,Gt.bg)(r.parsedValue),!1);const t=po(s.startOf("year"),c.value,r.disabledDate),a=(0,y.nB)(o,"current")?(0,Gt.bg)(r.parsedValue).filter(e=>(null==e?void 0:e.year())!==i):(0,Gt.bg)(r.parsedValue).concat([t]);n("pick",a)}else n("pick",i)},k=e=>{var t;if(!r.rangeState.selecting)return;const o=null==(t=e.target)?void 0:t.closest("td");if(!o)return;const a=o.parentNode.rowIndex,l=o.cellIndex;b.value[a][l].disabled||a===h.value&&l===m.value||(h.value=a,m.value=l,n("changerange",{selecting:!0,endDate:ve().year(p.value).add(4*a+l,"year")}))};return(0,i.wB)(()=>r.date,async()=>{var e,t;(null==(e=d.value)?void 0:e.contains(document.activeElement))&&(await(0,i.dY)(),null==(t=f.value)||t.focus())}),t({focus:w}),(e,t)=>((0,i.uX)(),(0,i.CE)("table",{role:"grid","aria-label":(0,s.R1)(l)("el.datepicker.yearTablePrompt"),class:(0,u.C4)((0,s.R1)(a).b()),onClick:x,onMousemove:k},[(0,i.Lk)("tbody",{ref_key:"tbodyRef",ref:d},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(b),(e,t)=>((0,i.uX)(),(0,i.CE)("tr",{key:t},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e,(e,n)=>((0,i.uX)(),(0,i.CE)("td",{key:`${t}_${n}`,ref_for:!0,ref:t=>e.isSelected&&(f.value=t),class:(0,u.C4)(["available",R(e)]),"aria-selected":e.isSelected,"aria-label":String(e.text),tabindex:e.isSelected?0:-1,onKeydown:[(0,M.jR)((0,M.D$)(x,["prevent","stop"]),["space"]),(0,M.jR)((0,M.D$)(x,["prevent","stop"]),["enter"])]},[(0,i.bF)((0,s.R1)(Co),{cell:e},null,8,["cell"])],42,["aria-selected","aria-label","tabindex","onKeydown"]))),128))]))),128))],512)],42,["aria-label"]))}});var Ao=(0,m.A)(Lo,[["__file","basic-year-table.vue"]]);const Oo=["hours","minutes","seconds"],To="EP_PICKER_BASE",Io="ElPopperOptions",No=Symbol("commonPickerContextKey"),Wo="HH:mm:ss",Do="YYYY-MM-DD",Po={date:Do,dates:Do,week:"gggg[w]ww",year:"YYYY",years:"YYYY",month:"YYYY-MM",months:"YYYY-MM",datetime:`${Do} ${Wo}`,monthrange:"YYYY-MM",yearrange:"YYYY",daterange:Do,datetimerange:`${Do} ${Wo}`},Fo=(0,f.b_)({...Qr,datetimeRole:String,parsedValue:{type:(0,f.jq)(Object)}}),Bo=({getAvailableHours:e,getAvailableMinutes:t,getAvailableSeconds:n})=>{const r=(r,o,a,l)=>{const i={hour:e,minute:t,second:n};let s=r;return["hour","minute","second"].forEach(e=>{if(i[e]){let t;const n=i[e];switch(e){case"minute":t=n(s.hour(),o,l);break;case"second":t=n(s.hour(),s.minute(),o,l);break;default:t=n(o,l);break}if((null==t?void 0:t.length)&&!t.includes(s[e]())){const n=a?0:t.length-1;s=s[e](t[n])}}}),s},o={},a=([e,t])=>{o[e]=t};return{timePickerOptions:o,getAvailableTime:r,onSetOption:a}},zo=e=>{const t=(e,t)=>e||t,n=e=>!0!==e;return e.map(t).filter(n)},$o=(e,t,n)=>{const r=(t,n)=>xe(24,e&&(()=>null==e?void 0:e(t,n))),o=(e,n,r)=>xe(60,t&&(()=>null==t?void 0:t(e,n,r))),a=(e,t,r,o)=>xe(60,n&&(()=>null==n?void 0:n(e,t,r,o)));return{getHoursList:r,getMinutesList:o,getSecondsList:a}},Vo=(e,t,n)=>{const{getHoursList:r,getMinutesList:o,getSecondsList:a}=$o(e,t,n),l=(e,t)=>zo(r(e,t)),i=(e,t,n)=>zo(o(e,t,n)),s=(e,t,n,r)=>zo(a(e,t,n,r));return{getAvailableHours:l,getAvailableMinutes:i,getAvailableSeconds:s}},jo=e=>{const t=(0,s.KR)(e.parsedValue);return(0,i.wB)(()=>e.visible,n=>{n||(t.value=e.parsedValue)}),t},Ko=(0,f.b_)({role:{type:String,required:!0},spinnerDate:{type:(0,f.jq)(Object),required:!0},showSeconds:{type:Boolean,default:!0},arrowControl:Boolean,amPmMode:{type:(0,f.jq)(String),default:""},...Yr});var Ho=n(34436);const Xo=(0,i.pM)({__name:"basic-time-spinner",props:Ko,emits:[d.YU,"select-range","set-option"],setup(e,{emit:t}){const n=e,r=(0,i.WQ)(To),{isRange:o,format:a}=r.props,l=(0,g.DU)("time"),{getHoursList:c,getMinutesList:f,getSecondsList:v}=$o(n.disabledHours,n.disabledMinutes,n.disabledSeconds);let h=!1;const m=(0,s.KR)(),b=(0,s.KR)(),w=(0,s.KR)(),R=(0,s.KR)(),C={hours:b,minutes:w,seconds:R},x=(0,i.EW)(()=>n.showSeconds?Oo:Oo.slice(0,2)),k=(0,i.EW)(()=>{const{spinnerDate:e}=n,t=e.hour(),r=e.minute(),o=e.second();return{hours:t,minutes:r,seconds:o}}),E=(0,i.EW)(()=>{const{hours:e,minutes:t}=(0,s.R1)(k),{role:r,spinnerDate:a}=n,l=o?void 0:a;return{hours:c(r,l),minutes:f(e,r,l),seconds:v(e,t,r,l)}}),_=(0,i.EW)(()=>{const{hours:e,minutes:t,seconds:n}=(0,s.R1)(k);return{hours:he(e,23),minutes:he(t,59),seconds:he(n,59)}}),S=(0,Ir.A)(e=>{h=!1,A(e)},200),M=e=>{const t=!!n.amPmMode;if(!t)return"";const r="A"===n.amPmMode;let o=e<12?" am":" pm";return r&&(o=o.toUpperCase()),o},L=e=>{let n=[0,0];const r=a||Wo,o=r.indexOf("HH"),l=r.indexOf("mm"),i=r.indexOf("ss");switch(e){case"hours":-1!==o&&(n=[o,o+2]);break;case"minutes":-1!==l&&(n=[l,l+2]);break;case"seconds":-1!==i&&(n=[i,i+2]);break}const[s,u]=n;t("select-range",s,u),m.value=e},A=e=>{D(e,(0,s.R1)(k)[e])},T=()=>{A("hours"),A("minutes"),A("seconds")},N=e=>e.querySelector(`.${l.namespace.value}-scrollbar__wrap`),D=(e,t)=>{if(n.arrowControl)return;const r=(0,s.R1)(C[e]);r&&r.$el&&(N(r.$el).scrollTop=Math.max(0,t*P(e)))},P=e=>{const t=(0,s.R1)(C[e]),n=null==t?void 0:t.$el.querySelector("li");return n&&Number.parseFloat((0,y.gd)(n,"height"))||0},F=()=>{z(1)},B=()=>{z(-1)},z=e=>{m.value||L("hours");const t=m.value,n=(0,s.R1)(k)[t],r="hours"===m.value?24:60,o=$(t,n,e,r);V(t,o),D(t,o),(0,i.dY)(()=>L(t))},$=(e,t,n,r)=>{let o=(t+n+r)%r;const a=(0,s.R1)(E)[e];while(a[o]&&o!==t)o=(o+n+r)%r;return o},V=(e,r)=>{const o=(0,s.R1)(E)[e],a=o[r];if(a)return;const{hours:l,minutes:i,seconds:u}=(0,s.R1)(k);let c;switch(e){case"hours":c=n.spinnerDate.hour(r).minute(i).second(u);break;case"minutes":c=n.spinnerDate.hour(l).minute(r).second(u);break;case"seconds":c=n.spinnerDate.hour(l).minute(i).second(r);break}t(d.YU,c)},j=(e,{value:t,disabled:n})=>{n||(V(e,t),L(e),D(e,t))},K=e=>{const t=(0,s.R1)(C[e]);if(!t)return;h=!0,S(e);const n=Math.min(Math.round((N(t.$el).scrollTop-(.5*H(e)-10)/P(e)+3)/P(e)),"hours"===e?23:59);V(e,n)},H=e=>(0,s.R1)(C[e]).$el.offsetHeight,X=()=>{const e=e=>{const t=(0,s.R1)(C[e]);t&&t.$el&&(N(t.$el).onscroll=()=>{K(e)})};e("hours"),e("minutes"),e("seconds")};(0,i.sV)(()=>{(0,i.dY)(()=>{!n.arrowControl&&X(),T(),"start"===n.role&&L("hours")})});const U=(e,t)=>{C[t].value=null!=e?e:void 0};return t("set-option",[`${n.role}_scrollDown`,z]),t("set-option",[`${n.role}_emitSelectRange`,L]),(0,i.wB)(()=>n.spinnerDate,()=>{h||T()}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)([(0,s.R1)(l).b("spinner"),{"has-seconds":e.showSeconds}])},[e.arrowControl?(0,i.Q3)("v-if",!0):((0,i.uX)(!0),(0,i.CE)(i.FK,{key:0},(0,i.pI)((0,s.R1)(x),t=>((0,i.uX)(),(0,i.Wv)((0,s.R1)(I.kA),{key:t,ref_for:!0,ref:e=>U(e,t),class:(0,u.C4)((0,s.R1)(l).be("spinner","wrapper")),"wrap-style":"max-height: inherit;","view-class":(0,s.R1)(l).be("spinner","list"),noresize:"",tag:"ul",onMouseenter:e=>L(t),onMousemove:e=>A(t)},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(E)[t],(n,r)=>((0,i.uX)(),(0,i.CE)("li",{key:r,class:(0,u.C4)([(0,s.R1)(l).be("spinner","item"),(0,s.R1)(l).is("active",r===(0,s.R1)(k)[t]),(0,s.R1)(l).is("disabled",n)]),onClick:e=>j(t,{value:r,disabled:n})},["hours"===t?((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[(0,i.eW)((0,u.v_)(("0"+(e.amPmMode?r%12||12:r)).slice(-2))+(0,u.v_)(M(r)),1)],64)):((0,i.uX)(),(0,i.CE)(i.FK,{key:1},[(0,i.eW)((0,u.v_)(("0"+r).slice(-2)),1)],64))],10,["onClick"]))),128))]),_:2},1032,["class","view-class","onMouseenter","onMousemove"]))),128)),e.arrowControl?((0,i.uX)(!0),(0,i.CE)(i.FK,{key:1},(0,i.pI)((0,s.R1)(x),t=>((0,i.uX)(),(0,i.CE)("div",{key:t,class:(0,u.C4)([(0,s.R1)(l).be("spinner","wrapper"),(0,s.R1)(l).is("arrow")]),onMouseenter:e=>L(t)},[(0,i.bo)(((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{class:(0,u.C4)(["arrow-up",(0,s.R1)(l).be("spinner","arrow")])},{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.ArrowUp))]),_:1},8,["class"])),[[(0,s.R1)(Ho.wc),B]]),(0,i.bo)(((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{class:(0,u.C4)(["arrow-down",(0,s.R1)(l).be("spinner","arrow")])},{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.ArrowDown))]),_:1},8,["class"])),[[(0,s.R1)(Ho.wc),F]]),(0,i.Lk)("ul",{class:(0,u.C4)((0,s.R1)(l).be("spinner","list"))},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(_)[t],(n,r)=>((0,i.uX)(),(0,i.CE)("li",{key:r,class:(0,u.C4)([(0,s.R1)(l).be("spinner","item"),(0,s.R1)(l).is("active",n===(0,s.R1)(k)[t]),(0,s.R1)(l).is("disabled",(0,s.R1)(E)[t][n])])},[(0,s.R1)(p.Et)(n)?((0,i.uX)(),(0,i.CE)(i.FK,{key:0},["hours"===t?((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[(0,i.eW)((0,u.v_)(("0"+(e.amPmMode?n%12||12:n)).slice(-2))+(0,u.v_)(M(n)),1)],64)):((0,i.uX)(),(0,i.CE)(i.FK,{key:1},[(0,i.eW)((0,u.v_)(("0"+n).slice(-2)),1)],64))],64)):(0,i.Q3)("v-if",!0)],2))),128))],2)],42,["onMouseenter"]))),128)):(0,i.Q3)("v-if",!0)],2))}});var Uo=(0,m.A)(Xo,[["__file","basic-time-spinner.vue"]]);const Go=(0,i.pM)({__name:"panel-time-pick",props:Fo,emits:["pick","select-range","set-picker-option"],setup(e,{emit:t}){const n=e,r=(0,i.WQ)(To),{arrowControl:o,disabledHours:a,disabledMinutes:l,disabledSeconds:c,defaultValue:d}=r.props,{getAvailableHours:f,getAvailableMinutes:v,getAvailableSeconds:h}=Vo(a,l,c),m=(0,g.DU)("time"),{t:b,lang:y}=(0,Ie.Ym)(),w=(0,s.KR)([0,2]),R=jo(n),C=(0,i.EW)(()=>(0,p.b0)(n.actualVisible)?`${m.namespace.value}-zoom-in-top`:""),x=(0,i.EW)(()=>n.format.includes("ss")),k=(0,i.EW)(()=>n.format.includes("A")?"A":n.format.includes("a")?"a":""),E=e=>{const t=ve(e).locale(y.value),n=D(t);return t.isSame(n)},_=()=>{const e=R.value;t("pick",e,!1),(0,i.dY)(()=>{R.value=e})},S=(e=!1,r=!1)=>{r||t("pick",n.parsedValue,e)},L=e=>{if(!n.visible)return;const r=D(e).millisecond(0);t("pick",r,!0)},A=(e,n)=>{t("select-range",e,n),w.value=[e,n]},O=e=>{const t=n.format,r=t.indexOf("HH"),o=t.indexOf("mm"),a=t.indexOf("ss"),l=[],i=[];-1!==r&&(l.push(r),i.push("hours")),-1!==o&&(l.push(o),i.push("minutes")),-1!==a&&x.value&&(l.push(a),i.push("seconds"));const s=l.indexOf(w.value[0]),u=(s+e+l.length)%l.length;I["start_emitSelectRange"](i[u])},T=e=>{const t=(0,V.CG)(e),{left:n,right:r,up:o,down:a}=j.R;if([n,r].includes(t)){const r=t===n?-1:1;return O(r),void e.preventDefault()}if([o,a].includes(t)){const n=t===o?-1:1;return I["start_scrollDown"](n),void e.preventDefault()}},{timePickerOptions:I,onSetOption:N,getAvailableTime:W}=Bo({getAvailableHours:f,getAvailableMinutes:v,getAvailableSeconds:h}),D=e=>W(e,n.datetimeRole||"",!0),P=e=>e?ve(e,n.format).locale(y.value):null,F=()=>ve(d).locale(y.value);return t("set-picker-option",["isValidValue",E]),t("set-picker-option",["parseUserInput",P]),t("set-picker-option",["handleKeydownInput",T]),t("set-picker-option",["getRangeAvailableTime",D]),t("set-picker-option",["getDefaultValue",F]),(e,t)=>((0,i.uX)(),(0,i.Wv)(M.eB,{name:(0,s.R1)(C)},{default:(0,i.k6)(()=>[e.actualVisible||e.visible?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(m).b("panel"))},[(0,i.Lk)("div",{class:(0,u.C4)([(0,s.R1)(m).be("panel","content"),{"has-seconds":(0,s.R1)(x)}])},[(0,i.bF)(Uo,{ref:"spinner",role:e.datetimeRole||"start","arrow-control":(0,s.R1)(o),"show-seconds":(0,s.R1)(x),"am-pm-mode":(0,s.R1)(k),"spinner-date":e.parsedValue,"disabled-hours":(0,s.R1)(a),"disabled-minutes":(0,s.R1)(l),"disabled-seconds":(0,s.R1)(c),onChange:L,onSetOption:(0,s.R1)(N),onSelectRange:A},null,8,["role","arrow-control","show-seconds","am-pm-mode","spinner-date","disabled-hours","disabled-minutes","disabled-seconds","onSetOption"])],2),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(m).be("panel","footer"))},[(0,i.Lk)("button",{type:"button",class:(0,u.C4)([(0,s.R1)(m).be("panel","btn"),"cancel"]),onClick:_},(0,u.v_)((0,s.R1)(b)("el.datepicker.cancel")),3),(0,i.Lk)("button",{type:"button",class:(0,u.C4)([(0,s.R1)(m).be("panel","btn"),"confirm"]),onClick:e=>S()},(0,u.v_)((0,s.R1)(b)("el.datepicker.confirm")),11,["onClick"])],2)],2)):(0,i.Q3)("v-if",!0)]),_:1},8,["name"]))}});var qo=(0,m.A)(Go,[["__file","panel-time-pick.vue"]]);const Yo=(0,i.pM)({__name:"panel-date-pick",props:lo,emits:["pick","set-picker-option","panel-change"],setup(e,{emit:t}){const n=e,r=(e,t,n)=>!0,o=(0,g.DU)("picker-panel"),a=(0,g.DU)("date-picker"),l=(0,i.OA)(),c=(0,i.Ht)(),{t:d,lang:f}=(0,Ie.Ym)(),p=(0,i.WQ)(To),v=(0,i.WQ)(eo,void 0),{shortcuts:h,disabledDate:m,cellClassName:b,defaultTime:y}=p.props,w=(0,s.lW)(p.props,"defaultValue"),R=(0,s.KR)(),C=(0,s.KR)(ve().locale(f.value)),x=(0,s.KR)(!1);let k=!1;const E=(0,i.EW)(()=>ve(y).locale(f.value)),_=(0,i.EW)(()=>C.value.month()),S=(0,i.EW)(()=>C.value.year()),L=(0,s.KR)([]),A=(0,s.KR)(null),I=(0,s.KR)(null),N=e=>!(L.value.length>0)||r(e,L.value,n.format||"HH:mm:ss"),D=e=>!y||ce.value||x.value||k?te.value?e.millisecond(0):e.startOf("day"):E.value.year(e.year()).month(e.month()).date(e.date()),P=(e,...n)=>{if(e)if((0,u.cy)(e)){const r=e.map(D);t("pick",r,...n)}else t("pick",D(e),...n);else t("pick",e,...n);A.value=null,I.value=null,x.value=!1,k=!1},F=async(e,t)=>{if("date"===U.value&&ve.isDayjs(e)){const r=(0,Gt.Q3)(n.parsedValue);let o=r?r.year(e.year()).month(e.month()).date(e.date()):e;N(o)||(o=L.value[0][0].year(e.year()).month(e.month()).date(e.date())),C.value=o,P(o,te.value||t)}else"week"===U.value?P(e.date):"dates"===U.value&&P(e,!0)},B=e=>{const t=e?"add":"subtract";C.value=C.value[t](1,"month"),Ae("month")},$=e=>{const t=C.value,n=e?"add":"subtract";C.value="year"===K.value?t[n](10,"year"):t[n](1,"year"),Ae("year")},K=(0,s.KR)("date"),H=(0,i.EW)(()=>{const e=d("el.datepicker.year");if("year"===K.value){const t=10*Math.floor(S.value/10);return e?`${t} ${e} - ${t+9} ${e}`:`${t} - ${t+9}`}return`${S.value} ${e}`}),X=e=>{const n=(0,u.Tn)(e.value)?e.value():e.value;if(n)return k=!0,void P(ve(n).locale(f.value));e.onClick&&e.onClick({attrs:l,slots:c,emit:t})},U=(0,i.EW)(()=>{const{type:e}=n;return["week","month","months","year","years","dates"].includes(e)?e:"date"}),G=(0,i.EW)(()=>"dates"===U.value||"months"===U.value||"years"===U.value),q=(0,i.EW)(()=>"date"===U.value?K.value:U.value),Y=(0,i.EW)(()=>!!h.length),Q=async(e,t)=>{"month"===U.value?(C.value=fo(C.value,C.value.year(),e,f.value,m),P(C.value,!1)):"months"===U.value?P(e,null==t||t):(C.value=fo(C.value,C.value.year(),e,f.value,m),K.value="date",["month","year","date","week"].includes(U.value)&&(P(C.value,!0),await(0,i.dY)(),_e())),Ae("month")},Z=async(e,t)=>{if("year"===U.value){const t=C.value.startOf("year").year(e);C.value=po(t,f.value,m),P(C.value,!1)}else if("years"===U.value)P(e,null==t||t);else{const t=C.value.year(e);C.value=po(t,f.value,m),K.value="month",["month","year","date","week"].includes(U.value)&&(P(C.value,!0),await(0,i.dY)(),_e())}Ae("year")},J=(0,z.CB)(),ee=async e=>{J.value||(K.value=e,await(0,i.dY)(),_e())},te=(0,i.EW)(()=>"datetime"===n.type||"datetimerange"===n.type),ne=(0,i.EW)(()=>{const e=te.value||"dates"===U.value,t="years"===U.value,n="months"===U.value,r="date"===K.value,o="year"===K.value,a="month"===K.value;return e&&r||t&&o||n&&a}),re=(0,i.EW)(()=>!G.value&&n.showNow||n.showConfirm),oe=(0,i.EW)(()=>!!m&&(!n.parsedValue||((0,u.cy)(n.parsedValue)?m(n.parsedValue[0].toDate()):m(n.parsedValue.toDate())))),ae=()=>{if(G.value)P(n.parsedValue);else{let e=(0,Gt.Q3)(n.parsedValue);if(!e){const t=ve(y).locale(f.value),n=Ee();e=t.year(n.year()).month(n.month()).date(n.date())}C.value=e,P(e)}},le=(0,i.EW)(()=>!!m&&m(ve().locale(f.value).toDate())),ie=()=>{const e=ve().locale(f.value),t=e.toDate();x.value=!0,m&&m(t)||!N(t)||(C.value=ve().locale(f.value),P(C.value))},se=(0,i.EW)(()=>n.timeFormat||be(n.format)||Wo),ue=(0,i.EW)(()=>n.dateFormat||ge(n.format)||Do),ce=(0,i.EW)(()=>{if(I.value)return I.value;if(!n.parsedValue&&!w.value)return;const e=(0,Gt.Q3)(n.parsedValue)||C.value;return e.format(se.value)}),de=(0,i.EW)(()=>{if(A.value)return A.value;if(!n.parsedValue&&!w.value)return;const e=(0,Gt.Q3)(n.parsedValue)||C.value;return e.format(ue.value)}),fe=(0,s.KR)(!1),he=()=>{fe.value=!0},me=()=>{fe.value=!1},ye=e=>({hour:e.hour(),minute:e.minute(),second:e.second(),year:e.year(),month:e.month(),date:e.date()}),we=(e,t,r)=>{const{hour:o,minute:a,second:l}=ye(e),i=(0,Gt.Q3)(n.parsedValue),s=i?i.hour(o).minute(a).second(l):e;C.value=s,P(C.value,!0),r||(fe.value=t)},Re=e=>{const t=ve(e,se.value).locale(f.value);if(t.isValid()&&N(t)){const{year:e,month:n,date:r}=ye(C.value);C.value=t.year(e).month(n).date(r),I.value=null,fe.value=!1,P(C.value,!0)}},Ce=e=>{const t=vo(e,ue.value,f.value,v);if(t.isValid()){if(m&&m(t.toDate()))return;const{hour:e,minute:n,second:r}=ye(C.value);C.value=t.hour(e).minute(n).second(r),A.value=null,P(C.value,!0)}},xe=e=>ve.isDayjs(e)&&e.isValid()&&(!m||!m(e.toDate())),ke=e=>vo(e,n.format,f.value,v),Ee=()=>{const e=ve(w.value).locale(f.value);if(!w.value){const e=E.value;return ve().hour(e.hour()).minute(e.minute()).second(e.second()).locale(f.value)}return e},_e=()=>{var e;["week","month","year","date"].includes(U.value)&&(null==(e=R.value)||e.focus())},Se=()=>{_e(),"week"===U.value&&Le(j.R.down)},Me=e=>{const t=(0,V.CG)(e),n=[j.R.up,j.R.down,j.R.left,j.R.right,j.R.home,j.R.end,j.R.pageUp,j.R.pageDown];n.includes(t)&&(Le(t),e.stopPropagation(),e.preventDefault()),[j.R.enter,j.R.space,j.R.numpadEnter].includes(t)&&null===A.value&&null===I.value&&(e.preventDefault(),P(C.value,!1))},Le=e=>{var n;const{up:r,down:o,left:a,right:l,home:i,end:s,pageUp:c,pageDown:d}=j.R,p={year:{[r]:-4,[o]:4,[a]:-1,[l]:1,offset:(e,t)=>e.setFullYear(e.getFullYear()+t)},month:{[r]:-4,[o]:4,[a]:-1,[l]:1,offset:(e,t)=>e.setMonth(e.getMonth()+t)},week:{[r]:-1,[o]:1,[a]:-1,[l]:1,offset:(e,t)=>e.setDate(e.getDate()+7*t)},date:{[r]:-7,[o]:7,[a]:-1,[l]:1,[i]:e=>-e.getDay(),[s]:e=>6-e.getDay(),[c]:e=>-new Date(e.getFullYear(),e.getMonth(),0).getDate(),[d]:e=>new Date(e.getFullYear(),e.getMonth()+1,0).getDate(),offset:(e,t)=>e.setDate(e.getDate()+t)}},v=C.value.toDate();while(Math.abs(C.value.diff(v,"year",!0))<1){const r=p[q.value];if(!r)return;if(r.offset(v,(0,u.Tn)(r[e])?r[e](v):null!=(n=r[e])?n:0),m&&m(v))break;const o=ve(v).locale(f.value);C.value=o,t("pick",o,!0);break}},Ae=e=>{t("panel-change",C.value.toDate(),e,K.value)};return(0,i.wB)(()=>U.value,e=>{["month","year"].includes(e)?K.value=e:K.value="years"!==e?"months"!==e?"date":"month":"year"},{immediate:!0}),(0,i.wB)(()=>w.value,e=>{e&&(C.value=Ee())},{immediate:!0}),(0,i.wB)(()=>n.parsedValue,e=>{if(e){if(G.value)return;if((0,u.cy)(e))return;C.value=e}else C.value=Ee()},{immediate:!0}),t("set-picker-option",["isValidValue",xe]),t("set-picker-option",["parseUserInput",ke]),t("set-picker-option",["handleFocusPicker",Se]),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)([(0,s.R1)(o).b(),(0,s.R1)(a).b(),(0,s.R1)(o).is("border",e.border),(0,s.R1)(o).is("disabled",(0,s.R1)(J)),{"has-sidebar":e.$slots.sidebar||(0,s.R1)(Y),"has-time":(0,s.R1)(te)}])},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(o).e("body-wrapper"))},[(0,i.RG)(e.$slots,"sidebar",{class:(0,u.C4)((0,s.R1)(o).e("sidebar"))}),(0,s.R1)(Y)?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(o).e("sidebar"))},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(h),(e,t)=>((0,i.uX)(),(0,i.CE)("button",{key:t,type:"button",disabled:(0,s.R1)(J),class:(0,u.C4)((0,s.R1)(o).e("shortcut")),onClick:t=>X(e)},(0,u.v_)(e.text),11,["disabled","onClick"]))),128))],2)):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(o).e("body"))},[(0,s.R1)(te)?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(a).e("time-header"))},[(0,i.Lk)("span",{class:(0,u.C4)((0,s.R1)(a).e("editor-wrap"))},[(0,i.bF)((0,s.R1)(T.WK),{placeholder:(0,s.R1)(d)("el.datepicker.selectDate"),"model-value":(0,s.R1)(de),size:"small","validate-event":!1,disabled:(0,s.R1)(J),onInput:e=>A.value=e,onChange:Ce},null,8,["placeholder","model-value","disabled","onInput"])],2),(0,i.bo)(((0,i.uX)(),(0,i.CE)("span",{class:(0,u.C4)((0,s.R1)(a).e("editor-wrap"))},[(0,i.bF)((0,s.R1)(T.WK),{placeholder:(0,s.R1)(d)("el.datepicker.selectTime"),"model-value":(0,s.R1)(ce),size:"small","validate-event":!1,disabled:(0,s.R1)(J),onFocus:he,onInput:e=>I.value=e,onChange:Re},null,8,["placeholder","model-value","disabled","onInput"]),(0,i.bF)((0,s.R1)(qo),{visible:fe.value,format:(0,s.R1)(se),"parsed-value":C.value,onPick:we},null,8,["visible","format","parsed-value"])],2)),[[(0,s.R1)(sn.A),me]])],2)):(0,i.Q3)("v-if",!0),(0,i.bo)((0,i.Lk)("div",{class:(0,u.C4)([(0,s.R1)(a).e("header"),("year"===K.value||"month"===K.value)&&(0,s.R1)(a).em("header","bordered")])},[(0,i.Lk)("span",{class:(0,u.C4)((0,s.R1)(a).e("prev-btn"))},[(0,i.Lk)("button",{type:"button","aria-label":(0,s.R1)(d)("el.datepicker.prevYear"),class:(0,u.C4)(["d-arrow-left",(0,s.R1)(o).e("icon-btn")]),disabled:(0,s.R1)(J),onClick:e=>$(!1)},[(0,i.RG)(e.$slots,"prev-year",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.DArrowLeft))]),_:1})])],10,["aria-label","disabled","onClick"]),(0,i.bo)((0,i.Lk)("button",{type:"button","aria-label":(0,s.R1)(d)("el.datepicker.prevMonth"),class:(0,u.C4)([(0,s.R1)(o).e("icon-btn"),"arrow-left"]),disabled:(0,s.R1)(J),onClick:e=>B(!1)},[(0,i.RG)(e.$slots,"prev-month",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.ArrowLeft))]),_:1})])],10,["aria-label","disabled","onClick"]),[[M.aG,"date"===K.value]])],2),(0,i.Lk)("span",{role:"button",class:(0,u.C4)((0,s.R1)(a).e("header-label")),"aria-live":"polite",tabindex:e.disabled?void 0:0,"aria-disabled":e.disabled,onKeydown:(0,M.jR)(e=>ee("year"),["enter"]),onClick:e=>ee("year")},(0,u.v_)((0,s.R1)(H)),43,["tabindex","aria-disabled","onKeydown","onClick"]),(0,i.bo)((0,i.Lk)("span",{role:"button","aria-live":"polite",tabindex:e.disabled?void 0:0,"aria-disabled":e.disabled,class:(0,u.C4)([(0,s.R1)(a).e("header-label"),{active:"month"===K.value}]),onKeydown:(0,M.jR)(e=>ee("month"),["enter"]),onClick:e=>ee("month")},(0,u.v_)((0,s.R1)(d)(`el.datepicker.month${(0,s.R1)(_)+1}`)),43,["tabindex","aria-disabled","onKeydown","onClick"]),[[M.aG,"date"===K.value]]),(0,i.Lk)("span",{class:(0,u.C4)((0,s.R1)(a).e("next-btn"))},[(0,i.bo)((0,i.Lk)("button",{type:"button","aria-label":(0,s.R1)(d)("el.datepicker.nextMonth"),class:(0,u.C4)([(0,s.R1)(o).e("icon-btn"),"arrow-right"]),disabled:(0,s.R1)(J),onClick:e=>B(!0)},[(0,i.RG)(e.$slots,"next-month",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.ArrowRight))]),_:1})])],10,["aria-label","disabled","onClick"]),[[M.aG,"date"===K.value]]),(0,i.Lk)("button",{type:"button","aria-label":(0,s.R1)(d)("el.datepicker.nextYear"),class:(0,u.C4)([(0,s.R1)(o).e("icon-btn"),"d-arrow-right"]),disabled:(0,s.R1)(J),onClick:e=>$(!0)},[(0,i.RG)(e.$slots,"next-year",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.DArrowRight))]),_:1})])],10,["aria-label","disabled","onClick"])],2)],2),[[M.aG,"time"!==K.value]]),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(o).e("content")),onKeydown:Me},["date"===K.value?((0,i.uX)(),(0,i.Wv)(ko,{key:0,ref_key:"currentViewRef",ref:R,"selection-mode":(0,s.R1)(U),date:C.value,"parsed-value":e.parsedValue,"disabled-date":(0,s.R1)(m),disabled:(0,s.R1)(J),"cell-class-name":(0,s.R1)(b),"show-week-number":e.showWeekNumber,onPick:F},null,8,["selection-mode","date","parsed-value","disabled-date","disabled","cell-class-name","show-week-number"])):(0,i.Q3)("v-if",!0),"year"===K.value?((0,i.uX)(),(0,i.Wv)(Ao,{key:1,ref_key:"currentViewRef",ref:R,"selection-mode":(0,s.R1)(U),date:C.value,"disabled-date":(0,s.R1)(m),disabled:(0,s.R1)(J),"parsed-value":e.parsedValue,"cell-class-name":(0,s.R1)(b),onPick:Z},null,8,["selection-mode","date","disabled-date","disabled","parsed-value","cell-class-name"])):(0,i.Q3)("v-if",!0),"month"===K.value?((0,i.uX)(),(0,i.Wv)(So,{key:2,ref_key:"currentViewRef",ref:R,"selection-mode":(0,s.R1)(U),date:C.value,"parsed-value":e.parsedValue,"disabled-date":(0,s.R1)(m),disabled:(0,s.R1)(J),"cell-class-name":(0,s.R1)(b),onPick:Q},null,8,["selection-mode","date","parsed-value","disabled-date","disabled","cell-class-name"])):(0,i.Q3)("v-if",!0)],34)],2)],2),e.showFooter&&(0,s.R1)(ne)&&(0,s.R1)(re)?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(o).e("footer"))},[(0,i.bo)((0,i.bF)((0,s.R1)(pe.S2),{text:"",size:"small",class:(0,u.C4)((0,s.R1)(o).e("link-btn")),disabled:(0,s.R1)(le),onClick:ie},{default:(0,i.k6)(()=>[(0,i.eW)((0,u.v_)((0,s.R1)(d)("el.datepicker.now")),1)]),_:1},8,["class","disabled"]),[[M.aG,!(0,s.R1)(G)&&e.showNow]]),e.showConfirm?((0,i.uX)(),(0,i.Wv)((0,s.R1)(pe.S2),{key:0,plain:"",size:"small",class:(0,u.C4)((0,s.R1)(o).e("link-btn")),disabled:(0,s.R1)(oe),onClick:ae},{default:(0,i.k6)(()=>[(0,i.eW)((0,u.v_)((0,s.R1)(d)("el.datepicker.confirm")),1)]),_:1},8,["class","disabled"])):(0,i.Q3)("v-if",!0)],2)):(0,i.Q3)("v-if",!0)],2))}});var Qo=(0,m.A)(Yo,[["__file","panel-date-pick.vue"]]);const Zo=(0,f.b_)({...ro,...oo}),Jo=e=>{const{emit:t}=(0,i.nI)(),n=(0,i.OA)(),r=(0,i.Ht)(),o=o=>{const a=(0,u.Tn)(o.value)?o.value():o.value;a?t("pick",[ve(a[0]).locale(e.value),ve(a[1]).locale(e.value)]):o.onClick&&o.onClick({attrs:n,slots:r,emit:t})};return o},ea=(e,{defaultValue:t,defaultTime:n,leftDate:r,rightDate:o,step:a,unit:l,sortDates:c})=>{const{emit:d}=(0,i.nI)(),{pickerNs:f}=(0,i.WQ)(Jr),p=(0,g.DU)("date-range-picker"),{t:v,lang:h}=(0,Ie.Ym)(),m=Jo(h),b=(0,s.KR)(),y=(0,s.KR)(),w=(0,s.KR)({endDate:null,selecting:!1}),R=e=>{w.value=e},C=(e=!1)=>{const t=(0,s.R1)(b),n=(0,s.R1)(y);io([t,n])&&d("pick",[t,n],e)},x=e=>{w.value.selecting=e,e||(w.value.endDate=null)},k=e=>{if((0,u.cy)(e)&&2===e.length){const[t,n]=e;b.value=t,r.value=t,y.value=n,c((0,s.R1)(b),(0,s.R1)(y))}else E()},E=()=>{let[i,c]=so((0,s.R1)(t),{lang:(0,s.R1)(h),step:a,unit:l,unlinkPanels:e.unlinkPanels});const d=e=>e.diff(e.startOf("d"),"ms"),f=(0,s.R1)(n);if(f){let e=0,t=0;if((0,u.cy)(f)){const[n,r]=f.map(ve);e=d(n),t=d(r)}else{const n=d(ve(f));e=n,t=n}i=i.startOf("d").add(e,"ms"),c=c.startOf("d").add(t,"ms")}b.value=void 0,y.value=void 0,r.value=i,o.value=c};return(0,i.wB)(t,e=>{e&&E()},{immediate:!0}),(0,i.wB)(()=>e.parsedValue,e=>{(null==e?void 0:e.length)&&(0,gt.A)(e,[b.value,y.value])||k(e)},{immediate:!0}),(0,i.wB)(()=>e.visible,()=>{e.visible&&k(e.parsedValue)},{immediate:!0}),{minDate:b,maxDate:y,rangeState:w,lang:h,ppNs:f,drpNs:p,handleChangeRange:R,handleRangeConfirm:C,handleShortcutClick:m,onSelect:x,parseValue:k,t:v}},ta=(e,t,n,r)=>{const o=(0,s.KR)("date"),a=(0,s.KR)(),l=(0,s.KR)("date"),u=(0,s.KR)(),c=(0,i.WQ)(To),{disabledDate:d}=c.props,{t:f,lang:p}=(0,Ie.Ym)(),v=(0,i.EW)(()=>n.value.year()),h=(0,i.EW)(()=>n.value.month()),m=(0,i.EW)(()=>r.value.year()),g=(0,i.EW)(()=>r.value.month());function b(e,t){const n=f("el.datepicker.year");if("year"===e.value){const e=10*Math.floor(t.value/10);return n?`${e} ${n} - ${e+9} ${n}`:`${e} - ${e+9}`}return`${t.value} ${n}`}function y(e){null==e||e.focus()}async function w(t,n){if(e.disabled)return;const r="left"===t?o:l,s="left"===t?a:u;r.value=n,await(0,i.dY)(),y(s.value)}async function R(t,s,c){if(e.disabled)return;const f="left"===s,v=f?n:r,h=f?r:n,m=f?o:l,g=f?a:u;if("year"===t){const e=v.value.year(c);v.value=po(e,p.value,d)}"month"===t&&(v.value=fo(v.value,v.value.year(),c,p.value,d)),e.unlinkPanels||(h.value="left"===s?v.value.add(1,"month"):v.value.subtract(1,"month")),m.value="year"===t?"month":"date",await(0,i.dY)(),y(g.value),C(t)}function C(e){t("panel-change",[n.value.toDate(),r.value.toDate()],e)}function x(e,t,n){const r=n?"add":"subtract";return"year"===e?t[r](10,"year"):t[r](1,"year")}return{leftCurrentView:o,rightCurrentView:l,leftCurrentViewRef:a,rightCurrentViewRef:u,leftYear:v,rightYear:m,leftMonth:h,rightMonth:g,leftYearLabel:(0,i.EW)(()=>b(o,v)),rightYearLabel:(0,i.EW)(()=>b(l,m)),showLeftPicker:e=>w("left",e),showRightPicker:e=>w("right",e),handleLeftYearPick:e=>R("year","left",e),handleRightYearPick:e=>R("year","right",e),handleLeftMonthPick:e=>R("month","left",e),handleRightMonthPick:e=>R("month","right",e),handlePanelChange:C,adjustDateByView:x}},na="month",ra=(0,i.pM)({__name:"panel-date-range",props:Zo,emits:["pick","set-picker-option","calendar-change","panel-change"],setup(e,{emit:t}){const n=e,r=(0,i.WQ)(To),o=(0,i.WQ)(eo,void 0),{disabledDate:a,cellClassName:l,defaultTime:c,clearable:d}=r.props,f=(0,s.lW)(r.props,"format"),p=(0,s.lW)(r.props,"shortcuts"),v=(0,s.lW)(r.props,"defaultValue"),{lang:h}=(0,Ie.Ym)(),m=(0,s.KR)(ve().locale(h.value)),g=(0,s.KR)(ve().locale(h.value).add(1,na)),{minDate:b,maxDate:y,rangeState:w,ppNs:R,drpNs:C,handleChangeRange:x,handleRangeConfirm:k,handleShortcutClick:E,onSelect:_,parseValue:S,t:L}=ea(n,{defaultValue:v,defaultTime:c,leftDate:m,rightDate:g,unit:na,sortDates:ze});(0,i.wB)(()=>n.visible,e=>{!e&&w.value.selecting&&(S(n.parsedValue),_(!1))});const A=(0,s.KR)({min:null,max:null}),I=(0,s.KR)({min:null,max:null}),{leftCurrentView:N,rightCurrentView:D,leftCurrentViewRef:P,rightCurrentViewRef:F,leftYear:B,rightYear:$,leftMonth:V,rightMonth:j,leftYearLabel:K,rightYearLabel:H,showLeftPicker:X,showRightPicker:U,handleLeftYearPick:G,handleRightYearPick:q,handleLeftMonthPick:Y,handleRightMonthPick:Q,handlePanelChange:Z,adjustDateByView:J}=ta(n,t,m,g),ee=(0,i.EW)(()=>!!p.value.length),te=(0,i.EW)(()=>null!==A.value.min?A.value.min:b.value?b.value.format(le.value):""),ne=(0,i.EW)(()=>null!==A.value.max?A.value.max:y.value||b.value?(y.value||b.value).format(le.value):""),re=(0,i.EW)(()=>null!==I.value.min?I.value.min:b.value?b.value.format(ae.value):""),oe=(0,i.EW)(()=>null!==I.value.max?I.value.max:y.value||b.value?(y.value||b.value).format(ae.value):""),ae=(0,i.EW)(()=>n.timeFormat||be(f.value||"")||Wo),le=(0,i.EW)(()=>n.dateFormat||ge(f.value||"")||Do),ie=e=>io(e)&&(!a||!a(e[0].toDate())&&!a(e[1].toDate())),se=()=>{m.value=J(N.value,m.value,!1),n.unlinkPanels||(g.value=m.value.add(1,"month")),Z("year")},ue=()=>{m.value=m.value.subtract(1,"month"),n.unlinkPanels||(g.value=m.value.add(1,"month")),Z("month")},ce=()=>{n.unlinkPanels?g.value=J(D.value,g.value,!0):(m.value=J(D.value,m.value,!0),g.value=m.value.add(1,"month")),Z("year")},de=()=>{n.unlinkPanels?g.value=g.value.add(1,"month"):(m.value=m.value.add(1,"month"),g.value=m.value.add(1,"month")),Z("month")},fe=()=>{m.value=J(N.value,m.value,!0),Z("year")},he=()=>{m.value=m.value.add(1,"month"),Z("month")},me=()=>{g.value=J(D.value,g.value,!1),Z("year")},ye=()=>{g.value=g.value.subtract(1,"month"),Z("month")},we=(0,i.EW)(()=>{const e=(V.value+1)%12,t=V.value+1>=12?1:0;return n.unlinkPanels&&new Date(B.value+t,e)n.unlinkPanels&&12*$.value+j.value-(12*B.value+V.value+1)>=12),Ce=(0,z.CB)(),xe=(0,i.EW)(()=>!(b.value&&y.value&&!w.value.selecting&&io([b.value,y.value])&&!Ce.value)),ke=(0,i.EW)(()=>"datetime"===n.type||"datetimerange"===n.type),Ee=(e,t)=>{if(e){if(c){const n=ve(c[t]||c).locale(h.value);return n.year(e.year()).month(e.month()).date(e.date())}return e}},_e=(e,n=!0)=>{const r=e.minDate,o=e.maxDate,a=Ee(r,0),l=Ee(o,1);y.value===l&&b.value===a||(t("calendar-change",[r.toDate(),o&&o.toDate()]),y.value=l,b.value=a,!ke.value&&n&&(n=!a||!l),k(n))},Se=(0,s.KR)(!1),Me=(0,s.KR)(!1),Le=()=>{Se.value=!1},Ae=()=>{Me.value=!1},Oe=(e,t)=>{A.value[t]=e;const r=ve(e,le.value).locale(h.value);if(r.isValid()){if(a&&a(r.toDate()))return;"min"===t?(m.value=r,b.value=(b.value||m.value).year(r.year()).month(r.month()).date(r.date()),n.unlinkPanels||y.value&&!y.value.isBefore(b.value)||(g.value=r.add(1,"month"),y.value=b.value.add(1,"month"))):(g.value=r,y.value=(y.value||g.value).year(r.year()).month(r.month()).date(r.date()),n.unlinkPanels||b.value&&!b.value.isAfter(y.value)||(m.value=r.subtract(1,"month"),b.value=y.value.subtract(1,"month"))),ze(b.value,y.value),k(!0)}},Te=(e,t)=>{A.value[t]=null},Ne=(e,t)=>{I.value[t]=e;const n=ve(e,ae.value).locale(h.value);n.isValid()&&("min"===t?(Se.value=!0,b.value=(b.value||m.value).hour(n.hour()).minute(n.minute()).second(n.second()),m.value=b.value):(Me.value=!0,y.value=(y.value||g.value).hour(n.hour()).minute(n.minute()).second(n.second()),g.value=y.value))},We=(e,t)=>{I.value[t]=null,"min"===t?(m.value=b.value,Se.value=!1,y.value&&!y.value.isBefore(b.value)||(y.value=b.value)):(g.value=y.value,Me.value=!1,y.value&&y.value.isBefore(b.value)&&(b.value=y.value)),k(!0)},De=(e,t,r)=>{I.value.min||(e&&(m.value=e,b.value=(b.value||m.value).hour(e.hour()).minute(e.minute()).second(e.second())),r||(Se.value=t),y.value&&!y.value.isBefore(b.value)||(y.value=b.value,g.value=e,(0,i.dY)(()=>{S(n.parsedValue)})),k(!0))},Pe=(e,t,n)=>{I.value.max||(e&&(g.value=e,y.value=(y.value||g.value).hour(e.hour()).minute(e.minute()).second(e.second())),n||(Me.value=t),y.value&&y.value.isBefore(b.value)&&(b.value=y.value),k(!0))},Fe=()=>{let e=null;(null==r?void 0:r.emptyValues)&&(e=r.emptyValues.valueOnClear.value),m.value=so((0,s.R1)(v),{lang:(0,s.R1)(h),unit:"month",unlinkPanels:n.unlinkPanels})[0],g.value=m.value.add(1,"month"),y.value=void 0,b.value=void 0,k(!0),t("pick",e)},Be=e=>vo(e,f.value||"",h.value,o);function ze(e,t){if(n.unlinkPanels&&t){const n=(null==e?void 0:e.year())||0,r=(null==e?void 0:e.month())||0,o=t.year(),a=t.month();g.value=n===o&&r===a?t.add(1,na):t}else g.value=m.value.add(1,na),t&&(g.value=g.value.hour(t.hour()).minute(t.minute()).second(t.second()))}return t("set-picker-option",["isValidValue",ie]),t("set-picker-option",["parseUserInput",Be]),t("set-picker-option",["handleClear",Fe]),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)([(0,s.R1)(R).b(),(0,s.R1)(C).b(),(0,s.R1)(R).is("border",e.border),(0,s.R1)(R).is("disabled",(0,s.R1)(Ce)),{"has-sidebar":e.$slots.sidebar||(0,s.R1)(ee),"has-time":(0,s.R1)(ke)}])},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(R).e("body-wrapper"))},[(0,i.RG)(e.$slots,"sidebar",{class:(0,u.C4)((0,s.R1)(R).e("sidebar"))}),(0,s.R1)(ee)?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(R).e("sidebar"))},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(p),(e,t)=>((0,i.uX)(),(0,i.CE)("button",{key:t,type:"button",disabled:(0,s.R1)(Ce),class:(0,u.C4)((0,s.R1)(R).e("shortcut")),onClick:t=>(0,s.R1)(E)(e)},(0,u.v_)(e.text),11,["disabled","onClick"]))),128))],2)):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(R).e("body"))},[(0,s.R1)(ke)?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(C).e("time-header"))},[(0,i.Lk)("span",{class:(0,u.C4)((0,s.R1)(C).e("editors-wrap"))},[(0,i.Lk)("span",{class:(0,u.C4)((0,s.R1)(C).e("time-picker-wrap"))},[(0,i.bF)((0,s.R1)(T.WK),{size:"small",disabled:(0,s.R1)(w).selecting||(0,s.R1)(Ce),placeholder:(0,s.R1)(L)("el.datepicker.startDate"),class:(0,u.C4)((0,s.R1)(C).e("editor")),"model-value":(0,s.R1)(te),"validate-event":!1,onInput:e=>Oe(e,"min"),onChange:e=>Te(e,"min")},null,8,["disabled","placeholder","class","model-value","onInput","onChange"])],2),(0,i.bo)(((0,i.uX)(),(0,i.CE)("span",{class:(0,u.C4)((0,s.R1)(C).e("time-picker-wrap"))},[(0,i.bF)((0,s.R1)(T.WK),{size:"small",class:(0,u.C4)((0,s.R1)(C).e("editor")),disabled:(0,s.R1)(w).selecting||(0,s.R1)(Ce),placeholder:(0,s.R1)(L)("el.datepicker.startTime"),"model-value":(0,s.R1)(re),"validate-event":!1,onFocus:e=>Se.value=!0,onInput:e=>Ne(e,"min"),onChange:e=>We(e,"min")},null,8,["class","disabled","placeholder","model-value","onFocus","onInput","onChange"]),(0,i.bF)((0,s.R1)(qo),{visible:Se.value,format:(0,s.R1)(ae),"datetime-role":"start","parsed-value":m.value,onPick:De},null,8,["visible","format","parsed-value"])],2)),[[(0,s.R1)(sn.A),Le]])],2),(0,i.Lk)("span",null,[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.ArrowRight))]),_:1})]),(0,i.Lk)("span",{class:(0,u.C4)([(0,s.R1)(C).e("editors-wrap"),"is-right"])},[(0,i.Lk)("span",{class:(0,u.C4)((0,s.R1)(C).e("time-picker-wrap"))},[(0,i.bF)((0,s.R1)(T.WK),{size:"small",class:(0,u.C4)((0,s.R1)(C).e("editor")),disabled:(0,s.R1)(w).selecting||(0,s.R1)(Ce),placeholder:(0,s.R1)(L)("el.datepicker.endDate"),"model-value":(0,s.R1)(ne),readonly:!(0,s.R1)(b),"validate-event":!1,onInput:e=>Oe(e,"max"),onChange:e=>Te(e,"max")},null,8,["class","disabled","placeholder","model-value","readonly","onInput","onChange"])],2),(0,i.bo)(((0,i.uX)(),(0,i.CE)("span",{class:(0,u.C4)((0,s.R1)(C).e("time-picker-wrap"))},[(0,i.bF)((0,s.R1)(T.WK),{size:"small",class:(0,u.C4)((0,s.R1)(C).e("editor")),disabled:(0,s.R1)(w).selecting||(0,s.R1)(Ce),placeholder:(0,s.R1)(L)("el.datepicker.endTime"),"model-value":(0,s.R1)(oe),readonly:!(0,s.R1)(b),"validate-event":!1,onFocus:e=>(0,s.R1)(b)&&(Me.value=!0),onInput:e=>Ne(e,"max"),onChange:e=>We(e,"max")},null,8,["class","disabled","placeholder","model-value","readonly","onFocus","onInput","onChange"]),(0,i.bF)((0,s.R1)(qo),{"datetime-role":"end",visible:Me.value,format:(0,s.R1)(ae),"parsed-value":g.value,onPick:Pe},null,8,["visible","format","parsed-value"])],2)),[[(0,s.R1)(sn.A),Ae]])],2)],2)):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",{class:(0,u.C4)([[(0,s.R1)(R).e("content"),(0,s.R1)(C).e("content")],"is-left"])},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(C).e("header"))},[(0,i.Lk)("button",{type:"button",class:(0,u.C4)([(0,s.R1)(R).e("icon-btn"),"d-arrow-left"]),"aria-label":(0,s.R1)(L)("el.datepicker.prevYear"),disabled:(0,s.R1)(Ce),onClick:se},[(0,i.RG)(e.$slots,"prev-year",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.DArrowLeft))]),_:1})])],10,["aria-label","disabled"]),(0,i.bo)((0,i.Lk)("button",{type:"button",class:(0,u.C4)([(0,s.R1)(R).e("icon-btn"),"arrow-left"]),"aria-label":(0,s.R1)(L)("el.datepicker.prevMonth"),disabled:(0,s.R1)(Ce),onClick:ue},[(0,i.RG)(e.$slots,"prev-month",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.ArrowLeft))]),_:1})])],10,["aria-label","disabled"]),[[M.aG,"date"===(0,s.R1)(N)]]),e.unlinkPanels?((0,i.uX)(),(0,i.CE)("button",{key:0,type:"button",disabled:!(0,s.R1)(Re)||(0,s.R1)(Ce),class:(0,u.C4)([[(0,s.R1)(R).e("icon-btn"),(0,s.R1)(R).is("disabled",!(0,s.R1)(Re)||(0,s.R1)(Ce))],"d-arrow-right"]),"aria-label":(0,s.R1)(L)("el.datepicker.nextYear"),onClick:fe},[(0,i.RG)(e.$slots,"next-year",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.DArrowRight))]),_:1})])],10,["disabled","aria-label"])):(0,i.Q3)("v-if",!0),e.unlinkPanels&&"date"===(0,s.R1)(N)?((0,i.uX)(),(0,i.CE)("button",{key:1,type:"button",disabled:!(0,s.R1)(we)||(0,s.R1)(Ce),class:(0,u.C4)([[(0,s.R1)(R).e("icon-btn"),(0,s.R1)(R).is("disabled",!(0,s.R1)(we)||(0,s.R1)(Ce))],"arrow-right"]),"aria-label":(0,s.R1)(L)("el.datepicker.nextMonth"),onClick:he},[(0,i.RG)(e.$slots,"next-month",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.ArrowRight))]),_:1})])],10,["disabled","aria-label"])):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",null,[(0,i.Lk)("span",{role:"button",class:(0,u.C4)((0,s.R1)(C).e("header-label")),"aria-live":"polite",tabindex:e.disabled?void 0:0,"aria-disabled":e.disabled,onKeydown:(0,M.jR)(e=>(0,s.R1)(X)("year"),["enter"]),onClick:e=>(0,s.R1)(X)("year")},(0,u.v_)((0,s.R1)(K)),43,["tabindex","aria-disabled","onKeydown","onClick"]),(0,i.bo)((0,i.Lk)("span",{role:"button","aria-live":"polite",tabindex:e.disabled?void 0:0,"aria-disabled":e.disabled,class:(0,u.C4)([(0,s.R1)(C).e("header-label"),{active:"month"===(0,s.R1)(N)}]),onKeydown:(0,M.jR)(e=>(0,s.R1)(X)("month"),["enter"]),onClick:e=>(0,s.R1)(X)("month")},(0,u.v_)((0,s.R1)(L)(`el.datepicker.month${m.value.month()+1}`)),43,["tabindex","aria-disabled","onKeydown","onClick"]),[[M.aG,"date"===(0,s.R1)(N)]])])],2),"date"===(0,s.R1)(N)?((0,i.uX)(),(0,i.Wv)(ko,{key:0,ref_key:"leftCurrentViewRef",ref:P,"selection-mode":"range",date:m.value,"min-date":(0,s.R1)(b),"max-date":(0,s.R1)(y),"range-state":(0,s.R1)(w),"disabled-date":(0,s.R1)(a),"cell-class-name":(0,s.R1)(l),"show-week-number":e.showWeekNumber,disabled:(0,s.R1)(Ce),onChangerange:(0,s.R1)(x),onPick:_e,onSelect:(0,s.R1)(_)},null,8,["date","min-date","max-date","range-state","disabled-date","cell-class-name","show-week-number","disabled","onChangerange","onSelect"])):(0,i.Q3)("v-if",!0),"year"===(0,s.R1)(N)?((0,i.uX)(),(0,i.Wv)(Ao,{key:1,ref_key:"leftCurrentViewRef",ref:P,"selection-mode":"year",date:m.value,"disabled-date":(0,s.R1)(a),"parsed-value":e.parsedValue,disabled:(0,s.R1)(Ce),onPick:(0,s.R1)(G)},null,8,["date","disabled-date","parsed-value","disabled","onPick"])):(0,i.Q3)("v-if",!0),"month"===(0,s.R1)(N)?((0,i.uX)(),(0,i.Wv)(So,{key:2,ref_key:"leftCurrentViewRef",ref:P,"selection-mode":"month",date:m.value,"parsed-value":e.parsedValue,"disabled-date":(0,s.R1)(a),disabled:(0,s.R1)(Ce),onPick:(0,s.R1)(Y)},null,8,["date","parsed-value","disabled-date","disabled","onPick"])):(0,i.Q3)("v-if",!0)],2),(0,i.Lk)("div",{class:(0,u.C4)([[(0,s.R1)(R).e("content"),(0,s.R1)(C).e("content")],"is-right"])},[(0,i.Lk)("div",{class:(0,u.C4)([(0,s.R1)(C).e("header"),(0,s.R1)(R).is("disabled",!(0,s.R1)(Re)||(0,s.R1)(Ce))])},[e.unlinkPanels?((0,i.uX)(),(0,i.CE)("button",{key:0,type:"button",disabled:!(0,s.R1)(Re)||(0,s.R1)(Ce),class:(0,u.C4)([(0,s.R1)(R).e("icon-btn"),"d-arrow-left"]),"aria-label":(0,s.R1)(L)("el.datepicker.prevYear"),onClick:me},[(0,i.RG)(e.$slots,"prev-year",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.DArrowLeft))]),_:1})])],10,["disabled","aria-label"])):(0,i.Q3)("v-if",!0),e.unlinkPanels&&"date"===(0,s.R1)(D)?((0,i.uX)(),(0,i.CE)("button",{key:1,type:"button",disabled:!(0,s.R1)(we)||(0,s.R1)(Ce),class:(0,u.C4)([(0,s.R1)(R).e("icon-btn"),"arrow-left"]),"aria-label":(0,s.R1)(L)("el.datepicker.prevMonth"),onClick:ye},[(0,i.RG)(e.$slots,"prev-month",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.ArrowLeft))]),_:1})])],10,["disabled","aria-label"])):(0,i.Q3)("v-if",!0),(0,i.Lk)("button",{type:"button","aria-label":(0,s.R1)(L)("el.datepicker.nextYear"),class:(0,u.C4)([(0,s.R1)(R).e("icon-btn"),"d-arrow-right"]),disabled:(0,s.R1)(Ce),onClick:ce},[(0,i.RG)(e.$slots,"next-year",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.DArrowRight))]),_:1})])],10,["aria-label","disabled"]),(0,i.bo)((0,i.Lk)("button",{type:"button",class:(0,u.C4)([(0,s.R1)(R).e("icon-btn"),"arrow-right"]),disabled:(0,s.R1)(Ce),"aria-label":(0,s.R1)(L)("el.datepicker.nextMonth"),onClick:de},[(0,i.RG)(e.$slots,"next-month",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.ArrowRight))]),_:1})])],10,["disabled","aria-label"]),[[M.aG,"date"===(0,s.R1)(D)]]),(0,i.Lk)("div",null,[(0,i.Lk)("span",{role:"button",class:(0,u.C4)((0,s.R1)(C).e("header-label")),"aria-live":"polite",tabindex:e.disabled?void 0:0,"aria-disabled":e.disabled,onKeydown:(0,M.jR)(e=>(0,s.R1)(U)("year"),["enter"]),onClick:e=>(0,s.R1)(U)("year")},(0,u.v_)((0,s.R1)(H)),43,["tabindex","aria-disabled","onKeydown","onClick"]),(0,i.bo)((0,i.Lk)("span",{role:"button","aria-live":"polite",tabindex:e.disabled?void 0:0,"aria-disabled":e.disabled,class:(0,u.C4)([(0,s.R1)(C).e("header-label"),{active:"month"===(0,s.R1)(D)}]),onKeydown:(0,M.jR)(e=>(0,s.R1)(U)("month"),["enter"]),onClick:e=>(0,s.R1)(U)("month")},(0,u.v_)((0,s.R1)(L)(`el.datepicker.month${g.value.month()+1}`)),43,["tabindex","aria-disabled","onKeydown","onClick"]),[[M.aG,"date"===(0,s.R1)(D)]])])],2),"date"===(0,s.R1)(D)?((0,i.uX)(),(0,i.Wv)(ko,{key:0,ref_key:"rightCurrentViewRef",ref:F,"selection-mode":"range",date:g.value,"min-date":(0,s.R1)(b),"max-date":(0,s.R1)(y),"range-state":(0,s.R1)(w),"disabled-date":(0,s.R1)(a),"cell-class-name":(0,s.R1)(l),"show-week-number":e.showWeekNumber,disabled:(0,s.R1)(Ce),onChangerange:(0,s.R1)(x),onPick:_e,onSelect:(0,s.R1)(_)},null,8,["date","min-date","max-date","range-state","disabled-date","cell-class-name","show-week-number","disabled","onChangerange","onSelect"])):(0,i.Q3)("v-if",!0),"year"===(0,s.R1)(D)?((0,i.uX)(),(0,i.Wv)(Ao,{key:1,ref_key:"rightCurrentViewRef",ref:F,"selection-mode":"year",date:g.value,"disabled-date":(0,s.R1)(a),"parsed-value":e.parsedValue,disabled:(0,s.R1)(Ce),onPick:(0,s.R1)(q)},null,8,["date","disabled-date","parsed-value","disabled","onPick"])):(0,i.Q3)("v-if",!0),"month"===(0,s.R1)(D)?((0,i.uX)(),(0,i.Wv)(So,{key:2,ref_key:"rightCurrentViewRef",ref:F,"selection-mode":"month",date:g.value,"parsed-value":e.parsedValue,"disabled-date":(0,s.R1)(a),disabled:(0,s.R1)(Ce),onPick:(0,s.R1)(Q)},null,8,["date","parsed-value","disabled-date","disabled","onPick"])):(0,i.Q3)("v-if",!0)],2)],2)],2),e.showFooter&&(0,s.R1)(ke)&&(e.showConfirm||(0,s.R1)(d))?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(R).e("footer"))},[(0,s.R1)(d)?((0,i.uX)(),(0,i.Wv)((0,s.R1)(pe.S2),{key:0,text:"",size:"small",class:(0,u.C4)((0,s.R1)(R).e("link-btn")),onClick:Fe},{default:(0,i.k6)(()=>[(0,i.eW)((0,u.v_)((0,s.R1)(L)("el.datepicker.clear")),1)]),_:1},8,["class"])):(0,i.Q3)("v-if",!0),e.showConfirm?((0,i.uX)(),(0,i.Wv)((0,s.R1)(pe.S2),{key:1,plain:"",size:"small",class:(0,u.C4)((0,s.R1)(R).e("link-btn")),disabled:(0,s.R1)(xe),onClick:e=>(0,s.R1)(k)(!1)},{default:(0,i.k6)(()=>[(0,i.eW)((0,u.v_)((0,s.R1)(L)("el.datepicker.confirm")),1)]),_:1},8,["class","disabled","onClick"])):(0,i.Q3)("v-if",!0)],2)):(0,i.Q3)("v-if",!0)],2))}});var oa=(0,m.A)(ra,[["__file","panel-date-range.vue"]]);const aa=(0,f.b_)({...oo}),la=["pick","set-picker-option","calendar-change"],ia=({unlinkPanels:e,leftDate:t,rightDate:n})=>{const{t:r}=(0,Ie.Ym)(),o=()=>{t.value=t.value.subtract(1,"year"),e.value||(n.value=n.value.subtract(1,"year"))},a=()=>{e.value||(t.value=t.value.add(1,"year")),n.value=n.value.add(1,"year")},l=()=>{t.value=t.value.add(1,"year")},s=()=>{n.value=n.value.subtract(1,"year")},u=(0,i.EW)(()=>`${t.value.year()} ${r("el.datepicker.year")}`),c=(0,i.EW)(()=>`${n.value.year()} ${r("el.datepicker.year")}`),d=(0,i.EW)(()=>t.value.year()),f=(0,i.EW)(()=>n.value.year()===t.value.year()?t.value.year()+1:n.value.year());return{leftPrevYear:o,rightNextYear:a,leftNextYear:l,rightPrevYear:s,leftLabel:u,rightLabel:c,leftYear:d,rightYear:f}},sa="year",ua=(0,i.pM)({name:"DatePickerMonthRange"}),ca=(0,i.pM)({...ua,props:aa,emits:la,setup(e,{emit:t}){const n=e,{lang:r}=(0,Ie.Ym)(),o=(0,i.WQ)(To),a=(0,i.WQ)(eo,void 0),{shortcuts:l,disabledDate:c,cellClassName:d}=o.props,f=(0,s.lW)(o.props,"format"),p=(0,s.lW)(o.props,"defaultValue"),v=(0,s.KR)(ve().locale(r.value)),h=(0,s.KR)(ve().locale(r.value).add(1,sa)),{minDate:m,maxDate:g,rangeState:b,ppNs:y,drpNs:w,handleChangeRange:R,handleRangeConfirm:C,handleShortcutClick:x,onSelect:k,parseValue:E}=ea(n,{defaultValue:p,leftDate:v,rightDate:h,unit:sa,sortDates:V}),_=(0,i.EW)(()=>!!l.length),{leftPrevYear:S,rightNextYear:M,leftNextYear:L,rightPrevYear:A,leftLabel:T,rightLabel:I,leftYear:N,rightYear:D}=ia({unlinkPanels:(0,s.lW)(n,"unlinkPanels"),leftDate:v,rightDate:h}),P=(0,i.EW)(()=>n.unlinkPanels&&D.value>N.value+1),F=(e,n=!0)=>{const r=e.minDate,o=e.maxDate;g.value===o&&m.value===r||(t("calendar-change",[r.toDate(),o&&o.toDate()]),g.value=o,m.value=r,n&&C())},B=()=>{let e=null;(null==o?void 0:o.emptyValues)&&(e=o.emptyValues.valueOnClear.value),v.value=so((0,s.R1)(p),{lang:(0,s.R1)(r),unit:"year",unlinkPanels:n.unlinkPanels})[0],h.value=v.value.add(1,"year"),t("pick",e)},$=e=>vo(e,f.value,r.value,a);function V(e,t){if(n.unlinkPanels&&t){const n=(null==e?void 0:e.year())||0,r=t.year();h.value=n===r?t.add(1,sa):t}else h.value=v.value.add(1,sa)}const j=(0,z.CB)();return(0,i.wB)(()=>n.visible,e=>{!e&&b.value.selecting&&(E(n.parsedValue),k(!1))}),t("set-picker-option",["isValidValue",io]),t("set-picker-option",["parseUserInput",$]),t("set-picker-option",["handleClear",B]),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)([(0,s.R1)(y).b(),(0,s.R1)(w).b(),(0,s.R1)(y).is("border",e.border),(0,s.R1)(y).is("disabled",(0,s.R1)(j)),{"has-sidebar":Boolean(e.$slots.sidebar)||(0,s.R1)(_)}])},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(y).e("body-wrapper"))},[(0,i.RG)(e.$slots,"sidebar",{class:(0,u.C4)((0,s.R1)(y).e("sidebar"))}),(0,s.R1)(_)?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(y).e("sidebar"))},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(l),(e,t)=>((0,i.uX)(),(0,i.CE)("button",{key:t,type:"button",class:(0,u.C4)((0,s.R1)(y).e("shortcut")),disabled:(0,s.R1)(j),onClick:t=>(0,s.R1)(x)(e)},(0,u.v_)(e.text),11,["disabled","onClick"]))),128))],2)):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(y).e("body"))},[(0,i.Lk)("div",{class:(0,u.C4)([[(0,s.R1)(y).e("content"),(0,s.R1)(w).e("content")],"is-left"])},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(w).e("header"))},[(0,i.Lk)("button",{type:"button",class:(0,u.C4)([(0,s.R1)(y).e("icon-btn"),"d-arrow-left"]),disabled:(0,s.R1)(j),onClick:(0,s.R1)(S)},[(0,i.RG)(e.$slots,"prev-year",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.DArrowLeft))]),_:1})])],10,["disabled","onClick"]),e.unlinkPanels?((0,i.uX)(),(0,i.CE)("button",{key:0,type:"button",disabled:!(0,s.R1)(P)||(0,s.R1)(j),class:(0,u.C4)([[(0,s.R1)(y).e("icon-btn"),(0,s.R1)(y).is("disabled",!(0,s.R1)(P)||(0,s.R1)(j))],"d-arrow-right"]),onClick:(0,s.R1)(L)},[(0,i.RG)(e.$slots,"next-year",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.DArrowRight))]),_:1})])],10,["disabled","onClick"])):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",null,(0,u.v_)((0,s.R1)(T)),1)],2),(0,i.bF)(So,{"selection-mode":"range",date:v.value,"min-date":(0,s.R1)(m),"max-date":(0,s.R1)(g),"range-state":(0,s.R1)(b),"disabled-date":(0,s.R1)(c),disabled:(0,s.R1)(j),"cell-class-name":(0,s.R1)(d),onChangerange:(0,s.R1)(R),onPick:F,onSelect:(0,s.R1)(k)},null,8,["date","min-date","max-date","range-state","disabled-date","disabled","cell-class-name","onChangerange","onSelect"])],2),(0,i.Lk)("div",{class:(0,u.C4)([[(0,s.R1)(y).e("content"),(0,s.R1)(w).e("content")],"is-right"])},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(w).e("header"))},[e.unlinkPanels?((0,i.uX)(),(0,i.CE)("button",{key:0,type:"button",disabled:!(0,s.R1)(P)||(0,s.R1)(j),class:(0,u.C4)([[(0,s.R1)(y).e("icon-btn"),(0,s.R1)(y).is("disabled",!(0,s.R1)(P)||(0,s.R1)(j))],"d-arrow-left"]),onClick:(0,s.R1)(A)},[(0,i.RG)(e.$slots,"prev-year",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.DArrowLeft))]),_:1})])],10,["disabled","onClick"])):(0,i.Q3)("v-if",!0),(0,i.Lk)("button",{type:"button",class:(0,u.C4)([(0,s.R1)(y).e("icon-btn"),"d-arrow-right"]),disabled:(0,s.R1)(j),onClick:(0,s.R1)(M)},[(0,i.RG)(e.$slots,"next-year",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.DArrowRight))]),_:1})])],10,["disabled","onClick"]),(0,i.Lk)("div",null,(0,u.v_)((0,s.R1)(I)),1)],2),(0,i.bF)(So,{"selection-mode":"range",date:h.value,"min-date":(0,s.R1)(m),"max-date":(0,s.R1)(g),"range-state":(0,s.R1)(b),"disabled-date":(0,s.R1)(c),disabled:(0,s.R1)(j),"cell-class-name":(0,s.R1)(d),onChangerange:(0,s.R1)(R),onPick:F,onSelect:(0,s.R1)(k)},null,8,["date","min-date","max-date","range-state","disabled-date","disabled","cell-class-name","onChangerange","onSelect"])],2)],2)],2)],2))}});var da=(0,m.A)(ca,[["__file","panel-month-range.vue"]]);const fa=(0,f.b_)({...oo}),pa=["pick","set-picker-option","calendar-change"],va=({unlinkPanels:e,leftDate:t,rightDate:n})=>{const r=()=>{t.value=t.value.subtract(10,"year"),e.value||(n.value=n.value.subtract(10,"year"))},o=()=>{e.value||(t.value=t.value.add(10,"year")),n.value=n.value.add(10,"year")},a=()=>{t.value=t.value.add(10,"year")},l=()=>{n.value=n.value.subtract(10,"year")},s=(0,i.EW)(()=>{const e=10*Math.floor(t.value.year()/10);return`${e}-${e+9}`}),u=(0,i.EW)(()=>{const e=10*Math.floor(n.value.year()/10);return`${e}-${e+9}`}),c=(0,i.EW)(()=>{const e=10*Math.floor(t.value.year()/10)+9;return e}),d=(0,i.EW)(()=>{const e=10*Math.floor(n.value.year()/10);return e});return{leftPrevYear:r,rightNextYear:o,leftNextYear:a,rightPrevYear:l,leftLabel:s,rightLabel:u,leftYear:c,rightYear:d}},ha=10,ma="year",ga=(0,i.pM)({name:"DatePickerYearRange"}),ba=(0,i.pM)({...ga,props:fa,emits:pa,setup(e,{emit:t}){const n=e,{lang:r}=(0,Ie.Ym)(),o=(0,s.KR)(ve().locale(r.value)),a=(0,s.KR)(ve().locale(r.value).add(ha,ma)),l=(0,i.WQ)(eo,void 0),c=(0,i.WQ)(To),{shortcuts:d,disabledDate:f,cellClassName:p}=c.props,v=(0,s.lW)(c.props,"format"),h=(0,s.lW)(c.props,"defaultValue"),{minDate:m,maxDate:g,rangeState:b,ppNs:y,drpNs:w,handleChangeRange:R,handleRangeConfirm:C,handleShortcutClick:x,onSelect:k,parseValue:E}=ea(n,{defaultValue:h,leftDate:o,rightDate:a,step:ha,unit:ma,sortDates:U}),{leftPrevYear:_,rightNextYear:S,leftNextYear:M,rightPrevYear:L,leftLabel:A,rightLabel:T,leftYear:I,rightYear:N}=va({unlinkPanels:(0,s.lW)(n,"unlinkPanels"),leftDate:o,rightDate:a}),D=(0,z.CB)(),P=(0,i.EW)(()=>!!d.length),F=(0,i.EW)(()=>[y.b(),w.b(),y.is("border",n.border),y.is("disabled",D.value),{"has-sidebar":Boolean((0,i.Ht)().sidebar)||P.value}]),B=(0,i.EW)(()=>({content:[y.e("content"),w.e("content"),"is-left"],arrowLeftBtn:[y.e("icon-btn"),"d-arrow-left"],arrowRightBtn:[y.e("icon-btn"),y.is("disabled",!V.value||D.value),"d-arrow-right"]})),$=(0,i.EW)(()=>({content:[y.e("content"),w.e("content"),"is-right"],arrowLeftBtn:[y.e("icon-btn"),y.is("disabled",!V.value||D.value),"d-arrow-left"],arrowRightBtn:[y.e("icon-btn"),"d-arrow-right"]})),V=(0,i.EW)(()=>n.unlinkPanels&&N.value>I.value+1),j=(e,n=!0)=>{const r=e.minDate,o=e.maxDate;g.value===o&&m.value===r||(t("calendar-change",[r.toDate(),o&&o.toDate()]),g.value=o,m.value=r,n&&C())},K=e=>vo(e,v.value,r.value,l),H=e=>io(e)&&(!f||!f(e[0].toDate())&&!f(e[1].toDate())),X=()=>{let e=null;(null==c?void 0:c.emptyValues)&&(e=c.emptyValues.valueOnClear.value);const l=so((0,s.R1)(h),{lang:(0,s.R1)(r),step:ha,unit:ma,unlinkPanels:n.unlinkPanels});o.value=l[0],a.value=l[1],t("pick",e)};function U(e,t){if(n.unlinkPanels&&t){const n=(null==e?void 0:e.year())||0,r=t.year();a.value=n+ha>r?t.add(ha,ma):t}else a.value=o.value.add(ha,ma)}return(0,i.wB)(()=>n.visible,e=>{!e&&b.value.selecting&&(E(n.parsedValue),k(!1))}),t("set-picker-option",["isValidValue",H]),t("set-picker-option",["parseUserInput",K]),t("set-picker-option",["handleClear",X]),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)((0,s.R1)(F))},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(y).e("body-wrapper"))},[(0,i.RG)(e.$slots,"sidebar",{class:(0,u.C4)((0,s.R1)(y).e("sidebar"))}),(0,s.R1)(P)?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(y).e("sidebar"))},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(d),(e,t)=>((0,i.uX)(),(0,i.CE)("button",{key:t,type:"button",class:(0,u.C4)((0,s.R1)(y).e("shortcut")),disabled:(0,s.R1)(D),onClick:t=>(0,s.R1)(x)(e)},(0,u.v_)(e.text),11,["disabled","onClick"]))),128))],2)):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(y).e("body"))},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(B).content)},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(w).e("header"))},[(0,i.Lk)("button",{type:"button",class:(0,u.C4)((0,s.R1)(B).arrowLeftBtn),disabled:(0,s.R1)(D),onClick:(0,s.R1)(_)},[(0,i.RG)(e.$slots,"prev-year",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.DArrowLeft))]),_:1})])],10,["disabled","onClick"]),e.unlinkPanels?((0,i.uX)(),(0,i.CE)("button",{key:0,type:"button",disabled:!(0,s.R1)(V)||(0,s.R1)(D),class:(0,u.C4)((0,s.R1)(B).arrowRightBtn),onClick:(0,s.R1)(M)},[(0,i.RG)(e.$slots,"next-year",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.DArrowRight))]),_:1})])],10,["disabled","onClick"])):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",null,(0,u.v_)((0,s.R1)(A)),1)],2),(0,i.bF)(Ao,{"selection-mode":"range",date:o.value,"min-date":(0,s.R1)(m),"max-date":(0,s.R1)(g),"range-state":(0,s.R1)(b),"disabled-date":(0,s.R1)(f),disabled:(0,s.R1)(D),"cell-class-name":(0,s.R1)(p),onChangerange:(0,s.R1)(R),onPick:j,onSelect:(0,s.R1)(k)},null,8,["date","min-date","max-date","range-state","disabled-date","disabled","cell-class-name","onChangerange","onSelect"])],2),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)($).content)},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(w).e("header"))},[e.unlinkPanels?((0,i.uX)(),(0,i.CE)("button",{key:0,type:"button",disabled:!(0,s.R1)(V)||(0,s.R1)(D),class:(0,u.C4)((0,s.R1)($).arrowLeftBtn),onClick:(0,s.R1)(L)},[(0,i.RG)(e.$slots,"prev-year",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.DArrowLeft))]),_:1})])],10,["disabled","onClick"])):(0,i.Q3)("v-if",!0),(0,i.Lk)("button",{type:"button",class:(0,u.C4)((0,s.R1)($).arrowRightBtn),disabled:(0,s.R1)(D),onClick:(0,s.R1)(S)},[(0,i.RG)(e.$slots,"next-year",{},()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.DArrowRight))]),_:1})])],10,["disabled","onClick"]),(0,i.Lk)("div",null,(0,u.v_)((0,s.R1)(T)),1)],2),(0,i.bF)(Ao,{"selection-mode":"range",date:a.value,"min-date":(0,s.R1)(m),"max-date":(0,s.R1)(g),"range-state":(0,s.R1)(b),"disabled-date":(0,s.R1)(f),disabled:(0,s.R1)(D),"cell-class-name":(0,s.R1)(p),onChangerange:(0,s.R1)(R),onPick:j,onSelect:(0,s.R1)(k)},null,8,["date","min-date","max-date","range-state","disabled-date","disabled","cell-class-name","onChangerange","onSelect"])],2)],2)],2)],2))}});var ya=(0,m.A)(ba,[["__file","panel-year-range.vue"]]);const wa=function(e){switch(e){case"daterange":case"datetimerange":return oa;case"monthrange":return da;case"yearrange":return ya;default:return Qo}},Ra=(e,t)=>{const{lang:n}=(0,Ie.Ym)(),r=(0,s.KR)(!1),o=(0,s.KR)(!1),a=(0,s.KR)(null),l=(0,i.EW)(()=>{const{modelValue:t}=e;return!t||(0,u.cy)(t)&&!t.filter(Boolean).length}),c=r=>{if(!we(e.modelValue,r)){let o;(0,u.cy)(r)?o=r.map(t=>Ce(t,e.valueFormat,n.value)):r&&(o=Ce(r,e.valueFormat,n.value));const a=r?o:r;t(d.l4,a,n.value)}},f=(0,i.EW)(()=>{var t;let r;if(l.value?p.value.getDefaultValue&&(r=p.value.getDefaultValue()):r=(0,u.cy)(e.modelValue)?e.modelValue.map(t=>Re(t,e.valueFormat,n.value)):Re(null!=(t=e.modelValue)?t:"",e.valueFormat,n.value),p.value.getRangeAvailableTime){const e=p.value.getRangeAvailableTime(r);(0,gt.A)(e,r)||(r=e,l.value||c(ke(r)))}return(0,u.cy)(r)&&r.some(e=>!e)&&(r=[]),r}),p=(0,s.KR)({}),v=e=>{p.value[e[0]]=e[1],p.value.panelReady=!0},h=e=>{t("calendar-change",e)},m=(e,n,r)=>{t("panel-change",e,n,r)},g=(e="",t=!1)=>{let n;r.value=t,n=(0,u.cy)(e)?e.map(e=>e.toDate()):e?e.toDate():e,a.value=null,c(n)};return{parsedValue:f,pickerActualVisible:o,pickerOptions:p,pickerVisible:r,userInput:a,valueIsEmpty:l,emitInput:c,onCalendarChange:h,onPanelChange:m,onPick:g,onSetPickerOption:v}};function Ca(e){return"function"===typeof e||"[object Object]"===Object.prototype.toString.call(e)&&!(0,i.vv)(e)}ve.extend(Ae),ve.extend(Kr),ve.extend(jr),ve.extend(Hr),ve.extend(Xr),ve.extend(Ur),ve.extend(Gr),ve.extend(qr);var xa=(0,i.pM)({name:"ElDatePickerPanel",install:null,props:Zr,emits:[d.l4,"calendar-change","panel-change","visible-change","pick"],setup(e,{slots:t,emit:n}){const r=(0,g.DU)("picker-panel"),o=(0,i.WQ)(To,void 0);if((0,p.b0)(o)){const t=(0,s.Kh)({...(0,s.QW)(e)});(0,i.Gt)(To,{props:t})}(0,i.Gt)(Jr,{slots:t,pickerNs:r});const{parsedValue:a,onCalendarChange:l,onPanelChange:u,onSetPickerOption:c,onPick:d}=(0,i.WQ)(No,()=>Ra(e,n),!0);return()=>{const n=wa(e.type);return(0,i.bF)(n,(0,i.v6)(e,{parsedValue:a.value,"onSet-picker-option":c,"onCalendar-change":l,"onPanel-change":u,onPick:d}),Ca(t)?t:{default:()=>[t]})}}});const ka=(0,E.GU)(xa),Ea=(0,f.b_)({automaticDropdown:{type:Boolean,default:!0},id:{type:(0,f.jq)([Array,String])},name:{type:(0,f.jq)([Array,String])},popperClass:P.E.popperClass,popperStyle:P.E.popperStyle,format:String,valueFormat:String,dateFormat:String,timeFormat:String,type:{type:String,default:""},clearable:{type:Boolean,default:!0},clearIcon:{type:(0,f.jq)([String,Object]),default:O.CircleClose},editable:{type:Boolean,default:!0},prefixIcon:{type:(0,f.jq)([String,Object]),default:""},size:nn.mU,readonly:Boolean,disabled:Boolean,placeholder:{type:String,default:""},popperOptions:{type:(0,f.jq)(Object),default:()=>({})},modelValue:{type:(0,f.jq)([Date,Array,String,Number]),default:""},rangeSeparator:{type:String,default:"-"},startPlaceholder:String,endPlaceholder:String,defaultValue:{type:(0,f.jq)([Date,Array])},defaultTime:{type:(0,f.jq)([Date,Array])},isRange:Boolean,...Yr,disabledDate:{type:Function},cellClassName:{type:Function},shortcuts:{type:Array,default:()=>[]},arrowControl:Boolean,tabindex:{type:(0,f.jq)([String,Number]),default:0},validateEvent:{type:Boolean,default:!0},unlinkPanels:Boolean,placement:{type:(0,f.jq)(String),values:en.DD,default:"bottom"},fallbackPlacements:{type:(0,f.jq)(Array),default:["bottom","top","right","left"]},...rn.bs,...(0,Nr.l)(["ariaLabel"]),showNow:{type:Boolean,default:!0},showConfirm:{type:Boolean,default:!0},showFooter:{type:Boolean,default:!0},showWeekNumber:Boolean}),_a=(0,f.b_)({id:{type:(0,f.jq)(Array)},name:{type:(0,f.jq)(Array)},modelValue:{type:(0,f.jq)([Array,String])},startPlaceholder:String,endPlaceholder:String,disabled:Boolean}),Sa=(0,f.b_)({...Ea,type:{type:(0,f.jq)(String),default:"date"}});var Ma=n(53716);const La=(0,i.pM)({name:"PickerRangeTrigger",inheritAttrs:!1}),Aa=(0,i.pM)({...La,props:_a,emits:["mouseenter","mouseleave","click","touchstart","focus","blur","startInput","endInput","startChange","endChange"],setup(e,{expose:t,emit:n}){const r=e,{formItem:o}=(0,un.j)(),{inputId:a}=(0,un.W)((0,s.Kh)({id:(0,i.EW)(()=>{var e;return null==(e=r.id)?void 0:e[0]})}),{formItemContext:o}),l=(0,Ma.O)(),c=(0,g.DU)("date"),d=(0,g.DU)("range"),f=(0,s.KR)(),p=(0,s.KR)(),{wrapperRef:v,isFocused:h}=(0,dn.K)(f,{disabled:(0,i.EW)(()=>r.disabled)}),m=e=>{n("click",e)},b=e=>{n("mouseenter",e)},y=e=>{n("mouseleave",e)},w=e=>{n("touchstart",e)},R=e=>{n("startInput",e)},C=e=>{n("endInput",e)},x=e=>{n("startChange",e)},k=e=>{n("endChange",e)},E=()=>{var e;null==(e=f.value)||e.focus()},_=()=>{var e,t;null==(e=f.value)||e.blur(),null==(t=p.value)||t.blur()};return t({focus:E,blur:_}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{ref_key:"wrapperRef",ref:v,class:(0,u.C4)([(0,s.R1)(c).is("active",(0,s.R1)(h)),e.$attrs.class]),style:(0,u.Tr)(e.$attrs.style),onClick:m,onMouseenter:b,onMouseleave:y,onTouchstartPassive:w},[(0,i.RG)(e.$slots,"prefix"),(0,i.Lk)("input",(0,i.v6)((0,s.R1)(l),{id:(0,s.R1)(a),ref_key:"inputRef",ref:f,name:e.name&&e.name[0],placeholder:e.startPlaceholder,value:e.modelValue&&e.modelValue[0],class:(0,s.R1)(d).b("input"),disabled:e.disabled,onInput:R,onChange:x}),null,16,["id","name","placeholder","value","disabled"]),(0,i.RG)(e.$slots,"range-separator"),(0,i.Lk)("input",(0,i.v6)((0,s.R1)(l),{id:e.id&&e.id[1],ref_key:"endInputRef",ref:p,name:e.name&&e.name[1],placeholder:e.endPlaceholder,value:e.modelValue&&e.modelValue[1],class:(0,s.R1)(d).b("input"),disabled:e.disabled,onInput:C,onChange:k}),null,16,["id","name","placeholder","value","disabled"]),(0,i.RG)(e.$slots,"suffix")],38))}});var Oa=(0,m.A)(Aa,[["__file","picker-range-trigger.vue"]]);const Ta=(0,i.pM)({name:"Picker"}),Ia=(0,i.pM)({...Ta,props:Ea,emits:[d.l4,d.YU,"focus","blur","clear","calendar-change","panel-change","visible-change","keydown"],setup(e,{expose:t,emit:n}){const r=e,o=(0,i.OA)(),a=(0,g.DU)("date"),l=(0,g.DU)("input"),f=(0,g.DU)("range"),{formItem:p}=(0,un.j)(),v=(0,i.WQ)(Io,{}),h=(0,rn.fQ)(r,null),m=(0,s.KR)(),b=(0,s.KR)(),y=(0,s.KR)(null);let R=!1;const C=(0,z.CB)(),x=Ra(r,n),{parsedValue:k,pickerActualVisible:E,userInput:_,pickerVisible:S,pickerOptions:L,valueIsEmpty:A,emitInput:I,onPick:D,onSetPickerOption:P,onCalendarChange:F,onPanelChange:B}=x,{isFocused:$,handleFocus:K,handleBlur:H}=(0,dn.K)(b,{disabled:C,beforeFocus(){return r.readonly},afterFocus(){r.automaticDropdown&&(S.value=!0)},beforeBlur(e){var t;return!R&&(null==(t=m.value)?void 0:t.isFocusInsideContent(e))},afterBlur(){Ce(),S.value=!1,R=!1,r.validateEvent&&(null==p||p.validate("blur").catch(e=>(0,w.U)(e)))}}),X=(0,s.KR)(!1),U=(0,i.EW)(()=>[a.b("editor"),a.bm("editor",r.type),l.e("wrapper"),a.is("disabled",C.value),a.is("active",S.value),f.b("editor"),be?f.bm("editor",be.value):"",o.class]),G=(0,i.EW)(()=>[l.e("icon"),f.e("close-icon"),de.value?"":f.em("close-icon","hidden")]);(0,i.wB)(S,e=>{e?(0,i.dY)(()=>{e&&(y.value=r.modelValue)}):(_.value=null,(0,i.dY)(()=>{q(r.modelValue)}))});const q=(e,t)=>{!t&&we(e,y.value)||(n(d.YU,e),t&&(y.value=e),r.validateEvent&&(null==p||p.validate("change").catch(e=>(0,w.U)(e))))},Y=e=>{n("keydown",e)},Q=(0,i.EW)(()=>b.value?Array.from(b.value.$el.querySelectorAll("input")):[]),Z=(e,t,n)=>{const r=Q.value;r.length&&(n&&"min"!==n?"max"===n&&(r[1].setSelectionRange(e,t),r[1].focus()):(r[0].setSelectionRange(e,t),r[0].focus()))},J=()=>{E.value=!0},ee=()=>{n("visible-change",!0)},te=()=>{E.value=!1,S.value=!1,n("visible-change",!1)},ne=()=>{S.value=!0},re=()=>{S.value=!1},oe=(0,i.EW)(()=>{const e=Ee(k.value);return(0,u.cy)(_.value)?[_.value[0]||e&&e[0]||"",_.value[1]||e&&e[1]||""]:null!==_.value?_.value:!le.value&&A.value||!S.value&&A.value?"":e?ie.value||se.value||ue.value?e.join(", "):e:""}),ae=(0,i.EW)(()=>r.type.includes("time")),le=(0,i.EW)(()=>r.type.startsWith("time")),ie=(0,i.EW)(()=>"dates"===r.type),se=(0,i.EW)(()=>"months"===r.type),ue=(0,i.EW)(()=>"years"===r.type),ce=(0,i.EW)(()=>r.prefixIcon||(ae.value?O.Clock:O.Calendar)),de=(0,i.EW)(()=>r.clearable&&!C.value&&!r.readonly&&!A.value&&(X.value||$.value)),fe=e=>{r.readonly||C.value||(de.value&&(e.stopPropagation(),L.value.handleClear?L.value.handleClear():I(h.valueOnClear.value),q(h.valueOnClear.value,!0),te()),n("clear"))},pe=async e=>{var t;r.readonly||C.value||"INPUT"===(null==(t=e.target)?void 0:t.tagName)&&!$.value&&r.automaticDropdown||(S.value=!0)},ve=()=>{r.readonly||C.value||!A.value&&r.clearable&&(X.value=!0)},he=()=>{X.value=!1},me=e=>{var t;r.readonly||C.value||"INPUT"===(null==(t=e.touches[0].target)?void 0:t.tagName)&&!$.value&&r.automaticDropdown||(S.value=!0)},ge=(0,i.EW)(()=>r.type.includes("range")),be=(0,z.NV)(),ye=(0,i.EW)(()=>{var e,t;return null==(t=null==(e=(0,s.R1)(m))?void 0:e.popperRef)?void 0:t.contentRef}),Re=(0,c.X2F)(b,e=>{const t=(0,s.R1)(ye),n=(0,c.F4c)(b);t&&(e.target===t||e.composedPath().includes(t))||e.target===n||n&&e.composedPath().includes(n)||(S.value=!1)});(0,i.xo)(()=>{null==Re||Re()});const Ce=()=>{if(_.value){const e=xe(oe.value);e&&(_e(e)&&I(ke(e)),_.value=null)}""===_.value&&(I(h.valueOnClear.value),q(h.valueOnClear.value,!0),_.value=null)},xe=e=>e?L.value.parseUserInput(e):null,Ee=e=>{if(!e)return null;const t=(0,u.cy)(e)?e.map(e=>e.format(r.format)):e.format(r.format);return t},_e=e=>L.value.isValidValue(e),Se=async e=>{if(r.readonly||C.value)return;const t=(0,V.CG)(e);if(Y(e),t!==j.R.esc)if(t===j.R.down&&(L.value.handleFocusPicker&&(e.preventDefault(),e.stopPropagation()),!1===S.value&&(S.value=!0,await(0,i.dY)()),L.value.handleFocusPicker))L.value.handleFocusPicker();else{if(t!==j.R.tab)return t===j.R.enter||t===j.R.numpadEnter?(S.value?(null===_.value||""===_.value||_e(xe(oe.value)))&&(Ce(),S.value=!1):S.value=!0,e.preventDefault(),void e.stopPropagation()):void(_.value?e.stopPropagation():L.value.handleKeydownInput&&L.value.handleKeydownInput(e));R=!0}else!0===S.value&&(S.value=!1,e.preventDefault(),e.stopPropagation())},Me=e=>{_.value=e,S.value||(S.value=!0)},Le=e=>{const t=e.target;_.value?_.value=[t.value,_.value[1]]:_.value=[t.value,null]},Ae=e=>{const t=e.target;_.value?_.value=[_.value[0],t.value]:_.value=[null,t.value]},Oe=()=>{var e;const t=_.value,n=xe(t&&t[0]),r=(0,s.R1)(k);if(n&&n.isValid()){_.value=[Ee(n),(null==(e=oe.value)?void 0:e[1])||null];const t=[n,r&&(r[1]||null)];_e(t)&&(I(ke(t)),_.value=null)}},Te=()=>{var e;const t=(0,s.R1)(_),n=xe(t&&t[1]),r=(0,s.R1)(k);if(n&&n.isValid()){_.value=[(null==(e=(0,s.R1)(oe))?void 0:e[0])||null,Ee(n)];const t=[r&&r[0],n];_e(t)&&(I(ke(t)),_.value=null)}},Ie=()=>{var e;null==(e=b.value)||e.focus()},Ne=()=>{var e;null==(e=b.value)||e.blur()};return(0,i.Gt)(To,{props:r,emptyValues:h}),(0,i.Gt)(No,x),t({focus:Ie,blur:Ne,handleOpen:ne,handleClose:re,onPick:D}),(e,t)=>((0,i.uX)(),(0,i.Wv)((0,s.R1)(N.R7),(0,i.v6)({ref_key:"refPopper",ref:m,visible:(0,s.R1)(S),effect:"light",pure:"",trigger:"click"},e.$attrs,{role:"dialog",teleported:"",transition:`${(0,s.R1)(a).namespace.value}-zoom-in-top`,"popper-class":[`${(0,s.R1)(a).namespace.value}-picker__popper`,e.popperClass],"popper-style":e.popperStyle,"popper-options":(0,s.R1)(v),"fallback-placements":e.fallbackPlacements,"gpu-acceleration":!1,placement:e.placement,"stop-popper-mouse-event":!1,"hide-after":0,persistent:"",onBeforeShow:J,onShow:ee,onHide:te}),{default:(0,i.k6)(()=>[(0,s.R1)(ge)?((0,i.uX)(),(0,i.Wv)(Oa,{key:1,id:e.id,ref_key:"inputRef",ref:b,"model-value":(0,s.R1)(oe),name:e.name,disabled:(0,s.R1)(C),readonly:!e.editable||e.readonly,"start-placeholder":e.startPlaceholder,"end-placeholder":e.endPlaceholder,class:(0,u.C4)((0,s.R1)(U)),style:(0,u.Tr)(e.$attrs.style),"aria-label":e.ariaLabel,tabindex:e.tabindex,autocomplete:"off",role:"combobox",onClick:pe,onFocus:(0,s.R1)(K),onBlur:(0,s.R1)(H),onStartInput:Le,onStartChange:Oe,onEndInput:Ae,onEndChange:Te,onMousedown:pe,onMouseenter:ve,onMouseleave:he,onTouchstartPassive:me,onKeydown:Se},{prefix:(0,i.k6)(()=>[(0,s.R1)(ce)?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:0,class:(0,u.C4)([(0,s.R1)(l).e("icon"),(0,s.R1)(f).e("icon")])},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)((0,s.R1)(ce))))]),_:1},8,["class"])):(0,i.Q3)("v-if",!0)]),"range-separator":(0,i.k6)(()=>[(0,i.RG)(e.$slots,"range-separator",{},()=>[(0,i.Lk)("span",{class:(0,u.C4)((0,s.R1)(f).b("separator"))},(0,u.v_)(e.rangeSeparator),3)])]),suffix:(0,i.k6)(()=>[e.clearIcon?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:0,class:(0,u.C4)((0,s.R1)(G)),onMousedown:(0,M.D$)((0,s.R1)(u.tE),["prevent"]),onClick:fe},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)(e.clearIcon)))]),_:1},8,["class","onMousedown"])):(0,i.Q3)("v-if",!0)]),_:3},8,["id","model-value","name","disabled","readonly","start-placeholder","end-placeholder","class","style","aria-label","tabindex","onFocus","onBlur"])):((0,i.uX)(),(0,i.Wv)((0,s.R1)(T.WK),{key:0,id:e.id,ref_key:"inputRef",ref:b,"container-role":"combobox","model-value":(0,s.R1)(oe),name:e.name,size:(0,s.R1)(be),disabled:(0,s.R1)(C),placeholder:e.placeholder,class:(0,u.C4)([(0,s.R1)(a).b("editor"),(0,s.R1)(a).bm("editor",e.type),(0,s.R1)(a).is("focus",(0,s.R1)(S)),e.$attrs.class]),style:(0,u.Tr)(e.$attrs.style),readonly:!e.editable||e.readonly||(0,s.R1)(ie)||(0,s.R1)(se)||(0,s.R1)(ue)||"week"===e.type,"aria-label":e.ariaLabel,tabindex:e.tabindex,"validate-event":!1,onInput:Me,onFocus:(0,s.R1)(K),onBlur:(0,s.R1)(H),onKeydown:Se,onChange:Ce,onMousedown:pe,onMouseenter:ve,onMouseleave:he,onTouchstartPassive:me,onClick:(0,M.D$)(()=>{},["stop"])},{prefix:(0,i.k6)(()=>[(0,s.R1)(ce)?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:0,class:(0,u.C4)((0,s.R1)(l).e("icon")),onMousedown:(0,M.D$)(pe,["prevent"]),onTouchstartPassive:me},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)((0,s.R1)(ce))))]),_:1},8,["class","onMousedown"])):(0,i.Q3)("v-if",!0)]),suffix:(0,i.k6)(()=>[(0,s.R1)(de)&&e.clearIcon?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:0,class:(0,u.C4)(`${(0,s.R1)(l).e("icon")} clear-icon`),onMousedown:(0,M.D$)((0,s.R1)(u.tE),["prevent"]),onClick:fe},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)(e.clearIcon)))]),_:1},8,["class","onMousedown"])):(0,i.Q3)("v-if",!0)]),_:1},8,["id","model-value","name","size","disabled","placeholder","class","style","readonly","aria-label","tabindex","onFocus","onBlur","onClick"]))]),content:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"default",{visible:(0,s.R1)(S),actualVisible:(0,s.R1)(E),parsedValue:(0,s.R1)(k),format:e.format,dateFormat:e.dateFormat,timeFormat:e.timeFormat,unlinkPanels:e.unlinkPanels,type:e.type,defaultValue:e.defaultValue,showNow:e.showNow,showConfirm:e.showConfirm,showFooter:e.showFooter,showWeekNumber:e.showWeekNumber,onPick:(0,s.R1)(D),onSelectRange:Z,onSetPickerOption:(0,s.R1)(P),onCalendarChange:(0,s.R1)(F),onPanelChange:(0,s.R1)(B),onMousedown:(0,M.D$)(()=>{},["stop"])})]),_:3},16,["visible","transition","popper-class","popper-style","popper-options","fallback-placements","placement"]))}});var Na=(0,m.A)(Ia,[["__file","picker.vue"]]);function Wa(e){return"function"===typeof e||"[object Object]"===Object.prototype.toString.call(e)&&!(0,i.vv)(e)}var Da=(0,i.pM)({name:"ElDatePicker",install:null,props:Sa,emits:[d.l4],setup(e,{expose:t,emit:n,slots:r}){const o=(0,i.EW)(()=>!e.format);(0,i.Gt)(eo,o),(0,i.Gt)(Io,(0,s.Kh)((0,s.lW)(e,"popperOptions")));const a=(0,s.KR)(),l={focus:()=>{var e;null==(e=a.value)||e.focus()},blur:()=>{var e;null==(e=a.value)||e.blur()},handleOpen:()=>{var e;null==(e=a.value)||e.handleOpen()},handleClose:()=>{var e;null==(e=a.value)||e.handleClose()}};t(l);const u=e=>{n(d.l4,e)};return()=>{var t;const n=null!=(t=e.format)?t:Po[e.type]||Do;return(0,i.bF)(Na,(0,i.v6)(e,{format:n,type:e.type,ref:a,"onUpdate:modelValue":u}),{default:e=>(0,i.bF)(ka,(0,i.v6)({border:!1},e),Wa(r)?r:{default:()=>[r]}),"range-separator":r["range-separator"]})}}});const Pa=(0,E.GU)(Da);var Fa=n(59869),Ba=n(9267),za=n(58165),$a=n(49385),Va=n(62086);const ja=(0,i.pM)({name:"ImgEmpty"}),Ka=(0,i.pM)({...ja,setup(e){const t=(0,g.DU)("empty"),n=(0,$.Bi)();return(e,r)=>((0,i.uX)(),(0,i.CE)("svg",{viewBox:"0 0 79 86",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},[(0,i.Lk)("defs",null,[(0,i.Lk)("linearGradient",{id:`linearGradient-1-${(0,s.R1)(n)}`,x1:"38.8503086%",y1:"0%",x2:"61.1496914%",y2:"100%"},[(0,i.Lk)("stop",{"stop-color":`var(${(0,s.R1)(t).cssVarBlockName("fill-color-1")})`,offset:"0%"},null,8,["stop-color"]),(0,i.Lk)("stop",{"stop-color":`var(${(0,s.R1)(t).cssVarBlockName("fill-color-4")})`,offset:"100%"},null,8,["stop-color"])],8,["id"]),(0,i.Lk)("linearGradient",{id:`linearGradient-2-${(0,s.R1)(n)}`,x1:"0%",y1:"9.5%",x2:"100%",y2:"90.5%"},[(0,i.Lk)("stop",{"stop-color":`var(${(0,s.R1)(t).cssVarBlockName("fill-color-1")})`,offset:"0%"},null,8,["stop-color"]),(0,i.Lk)("stop",{"stop-color":`var(${(0,s.R1)(t).cssVarBlockName("fill-color-6")})`,offset:"100%"},null,8,["stop-color"])],8,["id"]),(0,i.Lk)("rect",{id:`path-3-${(0,s.R1)(n)}`,x:"0",y:"0",width:"17",height:"36"},null,8,["id"])]),(0,i.Lk)("g",{stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"},[(0,i.Lk)("g",{transform:"translate(-1268.000000, -535.000000)"},[(0,i.Lk)("g",{transform:"translate(1268.000000, 535.000000)"},[(0,i.Lk)("path",{d:"M39.5,86 C61.3152476,86 79,83.9106622 79,81.3333333 C79,78.7560045 57.3152476,78 35.5,78 C13.6847524,78 0,78.7560045 0,81.3333333 C0,83.9106622 17.6847524,86 39.5,86 Z",fill:`var(${(0,s.R1)(t).cssVarBlockName("fill-color-3")})`},null,8,["fill"]),(0,i.Lk)("polygon",{fill:`var(${(0,s.R1)(t).cssVarBlockName("fill-color-7")})`,transform:"translate(27.500000, 51.500000) scale(1, -1) translate(-27.500000, -51.500000) ",points:"13 58 53 58 42 45 2 45"},null,8,["fill"]),(0,i.Lk)("g",{transform:"translate(34.500000, 31.500000) scale(-1, 1) rotate(-25.000000) translate(-34.500000, -31.500000) translate(7.000000, 10.000000)"},[(0,i.Lk)("polygon",{fill:`var(${(0,s.R1)(t).cssVarBlockName("fill-color-7")})`,transform:"translate(11.500000, 5.000000) scale(1, -1) translate(-11.500000, -5.000000) ",points:"2.84078316e-14 3 18 3 23 7 5 7"},null,8,["fill"]),(0,i.Lk)("polygon",{fill:`var(${(0,s.R1)(t).cssVarBlockName("fill-color-5")})`,points:"-3.69149156e-15 7 38 7 38 43 -3.69149156e-15 43"},null,8,["fill"]),(0,i.Lk)("rect",{fill:`url(#linearGradient-1-${(0,s.R1)(n)})`,transform:"translate(46.500000, 25.000000) scale(-1, 1) translate(-46.500000, -25.000000) ",x:"38",y:"7",width:"17",height:"36"},null,8,["fill"]),(0,i.Lk)("polygon",{fill:`var(${(0,s.R1)(t).cssVarBlockName("fill-color-2")})`,transform:"translate(39.500000, 3.500000) scale(-1, 1) translate(-39.500000, -3.500000) ",points:"24 7 41 7 55 -3.63806207e-12 38 -3.63806207e-12"},null,8,["fill"])]),(0,i.Lk)("rect",{fill:`url(#linearGradient-2-${(0,s.R1)(n)})`,x:"13",y:"45",width:"40",height:"36"},null,8,["fill"]),(0,i.Lk)("g",{transform:"translate(53.000000, 45.000000)"},[(0,i.Lk)("use",{fill:`var(${(0,s.R1)(t).cssVarBlockName("fill-color-8")})`,transform:"translate(8.500000, 18.000000) scale(-1, 1) translate(-8.500000, -18.000000) ","xlink:href":`#path-3-${(0,s.R1)(n)}`},null,8,["fill","xlink:href"]),(0,i.Lk)("polygon",{fill:`var(${(0,s.R1)(t).cssVarBlockName("fill-color-9")})`,mask:`url(#mask-4-${(0,s.R1)(n)})`,transform:"translate(12.000000, 9.000000) scale(-1, 1) translate(-12.000000, -9.000000) ",points:"7 0 24 0 20 18 7 16.5"},null,8,["fill","mask"])]),(0,i.Lk)("polygon",{fill:`var(${(0,s.R1)(t).cssVarBlockName("fill-color-2")})`,transform:"translate(66.000000, 51.500000) scale(-1, 1) translate(-66.000000, -51.500000) ",points:"62 45 79 45 70 58 53 58"},null,8,["fill"])])])])]))}});var Ha=(0,m.A)(Ka,[["__file","img-empty.vue"]]);const Xa=(0,f.b_)({image:{type:String,default:""},imageSize:Number,description:{type:String,default:""}}),Ua=(0,i.pM)({name:"ElEmpty"}),Ga=(0,i.pM)({...Ua,props:Xa,setup(e){const t=e,{t:n}=(0,Ie.Ym)(),r=(0,g.DU)("empty"),o=(0,i.EW)(()=>t.description||n("el.table.emptyText")),a=(0,i.EW)(()=>({width:(0,y._V)(t.imageSize)}));return(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)((0,s.R1)(r).b())},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(r).e("image")),style:(0,u.Tr)((0,s.R1)(a))},[e.image?((0,i.uX)(),(0,i.CE)("img",{key:0,src:e.image,ondragstart:"return false"},null,8,["src"])):(0,i.RG)(e.$slots,"image",{key:1},()=>[(0,i.bF)(Ha)])],6),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(r).e("description"))},[e.$slots.description?(0,i.RG)(e.$slots,"description",{key:0}):((0,i.uX)(),(0,i.CE)("p",{key:1},(0,u.v_)((0,s.R1)(o)),1))],2),e.$slots.default?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(r).e("bottom"))},[(0,i.RG)(e.$slots,"default")],2)):(0,i.Q3)("v-if",!0)],2))}});var qa=(0,m.A)(Ga,[["__file","empty.vue"]]);const Ya=(0,E.GU)(qa);var Qa=n(82006),Za=n(57009),Ja=n(58828),el=n(81418);const tl=(0,f.b_)({modelValue:{type:(0,f.jq)(Array)},max:Number,tagType:{...tn.z.type,default:"info"},tagEffect:tn.z.effect,trigger:{type:(0,f.jq)(String),default:j.R.enter},draggable:Boolean,delimiter:{type:[String,RegExp],default:""},size:nn.mU,clearable:Boolean,clearIcon:{type:Y.Ze,default:O.CircleClose},disabled:{type:Boolean,default:void 0},validateEvent:{type:Boolean,default:!0},readonly:Boolean,autofocus:Boolean,id:{type:String,default:void 0},tabindex:{type:[String,Number],default:0},maxlength:{type:[String,Number]},minlength:{type:[String,Number]},placeholder:String,autocomplete:{type:(0,f.jq)(String),default:"off"},saveOnBlur:{type:Boolean,default:!0},collapseTags:Boolean,collapseTagsTooltip:Boolean,maxCollapseTags:{type:Number,default:1},ariaLabel:String}),nl={[d.l4]:e=>(0,u.cy)(e)||(0,p.b0)(e),[d.YU]:e=>(0,u.cy)(e)||(0,p.b0)(e),[d.qs]:e=>(0,u.Kg)(e),"add-tag":e=>(0,u.Kg)(e)||(0,u.cy)(e),"remove-tag":(e,t)=>(0,u.Kg)(e)&&(0,p.Et)(t),"drag-tag":(e,t,n)=>(0,p.Et)(e)&&(0,p.Et)(t)&&(0,u.Kg)(n),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0};var rl=n(2808);function ol({props:e,emit:t,formItem:n}){const r=(0,z.CB)(),o=(0,z.NV)(),a=(0,s.IJ)(),l=(0,s.KR)(),u=(0,s.KR)(),c=(0,i.EW)(()=>["small"].includes(o.value)?"small":"default"),f=(0,i.EW)(()=>{var t;return(null==(t=e.modelValue)?void 0:t.length)?void 0:e.placeholder}),v=(0,i.EW)(()=>!(e.readonly||r.value)),h=(0,i.EW)(()=>{var t,n;return!(0,p.b0)(e.max)&&(null!=(n=null==(t=e.modelValue)?void 0:t.length)?n:0)>=e.max}),m=(0,i.EW)(()=>{var t;return e.collapseTags?null==(t=e.modelValue)?void 0:t.slice(0,e.maxCollapseTags):e.modelValue}),g=(0,i.EW)(()=>{var t;return e.collapseTags?null==(t=e.modelValue)?void 0:t.slice(e.maxCollapseTags):[]}),b=n=>{var r;const o=[...null!=(r=e.modelValue)?r:[],...(0,Mn.A)(n)];t(d.l4,o),t(d.YU,o),t("add-tag",n),l.value=void 0},y=t=>{var n,r;const o=t.split(e.delimiter).filter(e=>e&&e!==t);if(e.max){const t=e.max-(null!=(r=null==(n=e.modelValue)?void 0:n.length)?r:0);o.splice(t)}return 1===o.length?o[0]:o},R=n=>{if(h.value)l.value=void 0;else if(!T.value){if(e.delimiter&&l.value){const e=y(l.value);e.length&&b(e)}t(d.qs,n.target.value)}},C=t=>{var n;if(T.value)return;const r=(0,V.CG)(t);switch(r){case e.trigger:t.preventDefault(),t.stopPropagation(),k();break;case j.R.numpadEnter:e.trigger===j.R.enter&&(t.preventDefault(),t.stopPropagation(),k());break;case j.R.backspace:!l.value&&(null==(n=e.modelValue)?void 0:n.length)&&(t.preventDefault(),t.stopPropagation(),E(e.modelValue.length-1));break}},x=t=>{if(T.value||!(0,rl.m0)())return;const n=(0,V.CG)(t);switch(n){case j.R.space:e.trigger===j.R.space&&(t.preventDefault(),t.stopPropagation(),k());break}},k=()=>{var e;const t=null==(e=l.value)?void 0:e.trim();t&&!h.value&&b(t)},E=n=>{var r;const o=(null!=(r=e.modelValue)?r:[]).slice(),[a]=o.splice(n,1);t(d.l4,o),t(d.YU,o),t("remove-tag",a,n)},_=()=>{l.value=void 0,t(d.l4,void 0),t(d.YU,void 0),t("clear")},S=(n,r,o)=>{var a;const l=(null!=(a=e.modelValue)?a:[]).slice(),[i]=l.splice(n,1),s=r>n&&"before"===o?-1:r{var e;null==(e=a.value)||e.focus()},L=()=>{var e;null==(e=a.value)||e.blur()},{wrapperRef:A,isFocused:O}=(0,dn.K)(a,{disabled:r,beforeBlur(e){var t;return null==(t=u.value)?void 0:t.isFocusInsideContent(e)},afterBlur(){var t;e.saveOnBlur?k():l.value=void 0,e.validateEvent&&(null==(t=null==n?void 0:n.validate)||t.call(n,"blur").catch(e=>(0,w.U)(e)))}}),{isComposing:T,handleCompositionStart:I,handleCompositionUpdate:N,handleCompositionEnd:W}=(0,cn.o)({afterComposition:R});return(0,i.wB)(()=>e.modelValue,()=>{var t;e.validateEvent&&(null==(t=null==n?void 0:n.validate)||t.call(n,d.YU).catch(e=>(0,w.U)(e)))}),{inputRef:a,wrapperRef:A,tagTooltipRef:u,isFocused:O,isComposing:T,inputValue:l,size:o,tagSize:c,placeholder:f,closable:v,disabled:r,inputLimit:h,showTagList:m,collapseTagList:g,handleDragged:S,handleInput:R,handleKeydown:C,handleKeyup:x,handleAddTag:k,handleRemoveTag:E,handleClear:_,handleCompositionStart:I,handleCompositionUpdate:N,handleCompositionEnd:W,focus:M,blur:L}}function al(){const e=(0,s.KR)(!1),t=()=>{e.value=!0},n=()=>{e.value=!1};return{hovering:e,handleMouseEnter:t,handleMouseLeave:n}}var ll=n(3337);function il({wrapperRef:e,handleDragged:t,afterDragged:n}){const r=(0,g.DU)("input-tag"),o=(0,s.IJ)(),a=(0,s.KR)(!1);let l,i,u,c;function d(e){return`.${r.e("inner")} .${r.namespace.value}-tag:nth-child(${e+1})`}function f(t,n){l=n,i=e.value.querySelector(d(n)),i&&(i.style.opacity="0.5"),t.dataTransfer.effectAllowed="move"}function v(t,n){if(u=n,t.preventDefault(),t.dataTransfer.dropEffect="move",(0,p.b0)(l)||l===n)return void(a.value=!1);const i=e.value.querySelector(d(n)).getBoundingClientRect(),s=!(l+1===n),f=!(l-1===n),v=t.clientX-i.left,h=s?f?.5:1:-1,m=f?s?.5:0:1;c=v<=i.width*h?"before":v>i.width*m?"after":void 0;const g=e.value.querySelector(`.${r.e("inner")}`),b=g.getBoundingClientRect(),w=Number.parseFloat((0,y.gd)(g,"gap"))/2,R=i.top-b.top;let C=-9999;if("before"===c)C=Math.max(i.left-b.left-w,Math.floor(-w/2));else if("after"===c){const e=i.right-b.left;C=e+(b.width===e?Math.floor(w/2):w)}(0,y.eC)(o.value,{top:`${R}px`,left:`${C}px`}),a.value=!!c}function h(e){e.preventDefault(),i&&(i.style.opacity=""),!c||(0,p.b0)(l)||(0,p.b0)(u)||l===u||t(l,u,c),a.value=!1,l=void 0,i=null,u=void 0,c=void 0,null==n||n()}return{dropIndicatorRef:o,showDropIndicator:a,handleDragStart:f,handleDragOver:v,handleDragEnd:h}}var sl=n(42934);function ul({props:e,isFocused:t,hovering:n,disabled:r,inputValue:o,size:a,validateState:l,validateIcon:u,needStatusIcon:d}){const f=(0,i.OA)(),p=(0,i.Ht)(),v=(0,g.DU)("input-tag"),h=(0,g.DU)("input"),m=(0,s.KR)(),b=(0,s.KR)(),y=(0,i.EW)(()=>[v.b(),v.is("focused",t.value),v.is("hovering",n.value),v.is("disabled",r.value),v.m(a.value),v.e("wrapper"),f.class]),w=(0,i.EW)(()=>[f.style]),R=(0,i.EW)(()=>{var t,n;return[v.e("inner"),v.is("draggable",e.draggable),v.is("left-space",!(null==(t=e.modelValue)?void 0:t.length)&&!p.prefix),v.is("right-space",!(null==(n=e.modelValue)?void 0:n.length)&&!x.value)]}),C=(0,i.EW)(()=>{var a;return e.clearable&&!r.value&&!e.readonly&&((null==(a=e.modelValue)?void 0:a.length)||o.value)&&(t.value||n.value)}),x=(0,i.EW)(()=>p.suffix||C.value||l.value&&u.value&&d.value),k=(0,s.Kh)({innerWidth:0,collapseItemWidth:0}),E=()=>{if(!b.value)return 0;const e=window.getComputedStyle(b.value);return Number.parseFloat(e.gap||"6px")},_=()=>{k.innerWidth=Number.parseFloat(window.getComputedStyle(b.value).width)},S=()=>{k.collapseItemWidth=m.value.getBoundingClientRect().width},M=(0,i.EW)(()=>{if(!e.collapseTags)return{};const t=E(),n=t+sl.R,r=m.value&&1===e.maxCollapseTags?k.innerWidth-k.collapseItemWidth-t-n:k.innerWidth-n;return{maxWidth:`${Math.max(r,0)}px`}});return(0,c.wYm)(b,_),(0,c.wYm)(m,S),{ns:v,nsInput:h,containerKls:y,containerStyle:w,innerKls:R,showClear:C,showSuffix:x,tagStyle:M,collapseItemRef:m,innerRef:b}}const cl=(0,i.pM)({name:"ElInputTag",inheritAttrs:!1}),dl=(0,i.pM)({...cl,props:tl,emits:nl,setup(e,{expose:t,emit:n}){const r=e,o=(0,Ma.O)(),a=(0,i.Ht)(),{form:l,formItem:c}=(0,un.j)(),{inputId:d}=(0,un.W)(r,{formItemContext:c}),f=(0,i.EW)(()=>{var e;return null!=(e=null==l?void 0:l.statusIcon)&&e}),p=(0,i.EW)(()=>(null==c?void 0:c.validateState)||""),v=(0,i.EW)(()=>p.value&&Y.vK[p.value]),{inputRef:h,wrapperRef:m,tagTooltipRef:g,isFocused:b,inputValue:y,size:w,tagSize:R,placeholder:C,closable:x,disabled:k,showTagList:E,collapseTagList:_,handleDragged:S,handleInput:L,handleKeydown:A,handleKeyup:O,handleRemoveTag:T,handleClear:I,handleCompositionStart:D,handleCompositionUpdate:P,handleCompositionEnd:F,focus:B,blur:z}=ol({props:r,emit:n,formItem:c}),{hovering:$,handleMouseEnter:V,handleMouseLeave:j}=al(),{calculatorRef:K,inputStyle:H}=(0,ll.v)(),{dropIndicatorRef:X,showDropIndicator:U,handleDragStart:G,handleDragOver:q,handleDragEnd:Q}=il({wrapperRef:m,handleDragged:S,afterDragged:B}),{ns:Z,nsInput:J,containerKls:ee,containerStyle:te,innerKls:ne,showClear:re,showSuffix:oe,tagStyle:ae,collapseItemRef:le,innerRef:ie}=ul({props:r,hovering:$,isFocused:b,inputValue:y,disabled:k,size:w,validateState:p,validateIcon:v,needStatusIcon:f});return t({focus:B,blur:z}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{ref_key:"wrapperRef",ref:m,class:(0,u.C4)((0,s.R1)(ee)),style:(0,u.Tr)((0,s.R1)(te)),onMouseenter:(0,s.R1)(V),onMouseleave:(0,s.R1)(j)},[(0,s.R1)(a).prefix?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(Z).e("prefix"))},[(0,i.RG)(e.$slots,"prefix")],2)):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",{ref_key:"innerRef",ref:ie,class:(0,u.C4)((0,s.R1)(ne))},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(E),(t,n)=>((0,i.uX)(),(0,i.Wv)((0,s.R1)(Jt.u),{key:n,size:(0,s.R1)(R),closable:(0,s.R1)(x),type:e.tagType,effect:e.tagEffect,draggable:(0,s.R1)(x)&&e.draggable,style:(0,u.Tr)((0,s.R1)(ae)),"disable-transitions":"",onClose:e=>(0,s.R1)(T)(n),onDragstart:e=>(0,s.R1)(G)(e,n),onDragover:e=>(0,s.R1)(q)(e,n),onDragend:(0,s.R1)(Q),onDrop:(0,M.D$)(()=>{},["stop"])},{default:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"tag",{value:t,index:n},()=>[(0,i.eW)((0,u.v_)(t),1)])]),_:2},1032,["size","closable","type","effect","draggable","style","onClose","onDragstart","onDragover","onDragend","onDrop"]))),128)),e.collapseTags&&e.modelValue&&e.modelValue.length>e.maxCollapseTags?((0,i.uX)(),(0,i.Wv)((0,s.R1)(N.R7),{key:0,ref_key:"tagTooltipRef",ref:g,disabled:!e.collapseTagsTooltip,"fallback-placements":["bottom","top","right","left"],effect:e.tagEffect,placement:"bottom"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",{ref_key:"collapseItemRef",ref:le},[(0,i.bF)((0,s.R1)(Jt.u),{closable:!1,size:(0,s.R1)(R),type:e.tagType,effect:e.tagEffect,"disable-transitions":""},{default:(0,i.k6)(()=>[(0,i.eW)(" + "+(0,u.v_)(e.modelValue.length-e.maxCollapseTags),1)]),_:1},8,["size","type","effect"])],512)]),content:(0,i.k6)(()=>[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(Z).e("input-tag-list"))},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(_),(t,n)=>((0,i.uX)(),(0,i.Wv)((0,s.R1)(Jt.u),{key:n,size:(0,s.R1)(R),closable:(0,s.R1)(x),type:e.tagType,effect:e.tagEffect,"disable-transitions":"",onClose:t=>(0,s.R1)(T)(n+e.maxCollapseTags)},{default:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"tag",{value:t,index:n+e.maxCollapseTags},()=>[(0,i.eW)((0,u.v_)(t),1)])]),_:2},1032,["size","closable","type","effect","onClose"]))),128))],2)]),_:3},8,["disabled","effect"])):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(Z).e("input-wrapper"))},[(0,i.bo)((0,i.Lk)("input",(0,i.v6)({id:(0,s.R1)(d),ref_key:"inputRef",ref:h,"onUpdate:modelValue":e=>(0,s.i9)(y)?y.value=e:null},(0,s.R1)(o),{type:"text",minlength:e.minlength,maxlength:e.maxlength,disabled:(0,s.R1)(k),readonly:e.readonly,autocomplete:e.autocomplete,tabindex:e.tabindex,placeholder:(0,s.R1)(C),autofocus:e.autofocus,ariaLabel:e.ariaLabel,class:(0,s.R1)(Z).e("input"),style:(0,s.R1)(H),onCompositionstart:(0,s.R1)(D),onCompositionupdate:(0,s.R1)(P),onCompositionend:(0,s.R1)(F),onInput:(0,s.R1)(L),onKeydown:(0,s.R1)(A),onKeyup:(0,s.R1)(O)}),null,16,["id","onUpdate:modelValue","minlength","maxlength","disabled","readonly","autocomplete","tabindex","placeholder","autofocus","ariaLabel","onCompositionstart","onCompositionupdate","onCompositionend","onInput","onKeydown","onKeyup"]),[[M.Jo,(0,s.R1)(y)]]),(0,i.Lk)("span",{ref_key:"calculatorRef",ref:K,"aria-hidden":"true",class:(0,u.C4)((0,s.R1)(Z).e("input-calculator")),textContent:(0,u.v_)((0,s.R1)(y))},null,10,["textContent"])],2),(0,i.bo)((0,i.Lk)("div",{ref_key:"dropIndicatorRef",ref:X,class:(0,u.C4)((0,s.R1)(Z).e("drop-indicator"))},null,2),[[M.aG,(0,s.R1)(U)]])],2),(0,s.R1)(oe)?((0,i.uX)(),(0,i.CE)("div",{key:1,class:(0,u.C4)((0,s.R1)(Z).e("suffix"))},[(0,i.RG)(e.$slots,"suffix"),(0,s.R1)(re)?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:0,class:(0,u.C4)([(0,s.R1)(Z).e("icon"),(0,s.R1)(Z).e("clear")]),onMousedown:(0,M.D$)((0,s.R1)(u.tE),["prevent"]),onClick:(0,s.R1)(I)},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)(e.clearIcon)))]),_:1},8,["class","onMousedown","onClick"])):(0,i.Q3)("v-if",!0),(0,s.R1)(p)&&(0,s.R1)(v)&&(0,s.R1)(f)?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:1,class:(0,u.C4)([(0,s.R1)(J).e("icon"),(0,s.R1)(J).e("validateIcon"),(0,s.R1)(J).is("loading","validating"===(0,s.R1)(p))])},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)((0,s.R1)(v))))]),_:1},8,["class"])):(0,i.Q3)("v-if",!0)],2)):(0,i.Q3)("v-if",!0)],46,["onMouseenter","onMouseleave"]))}});var fl=(0,m.A)(dl,[["__file","input-tag.vue"]]);const pl=(0,E.GU)(fl),vl=(0,f.b_)({type:{type:String,values:["primary","success","warning","info","danger","default"],default:void 0},underline:{type:[Boolean,String],values:[!0,!1,"always","never","hover"],default:void 0},disabled:Boolean,href:{type:String,default:""},target:{type:String,default:"_self"},icon:{type:Y.Ze}}),hl={click:e=>e instanceof MouseEvent};var ml=n(30261);const gl=(0,i.pM)({name:"ElLink"}),bl=(0,i.pM)({...gl,props:vl,emits:hl,setup(e,{emit:t}){const n=e,r=(0,a.H3)("link");(0,ml.b)({scope:"el-link",from:"The underline option (boolean)",replacement:"'always' | 'hover' | 'never'",version:"3.0.0",ref:"https://element-plus.org/en-US/component/link.html#underline"},(0,i.EW)(()=>(0,p.Lm)(n.underline)));const o=(0,g.DU)("link"),l=(0,i.EW)(()=>{var e,t,a;return[o.b(),o.m(null!=(a=null!=(t=n.type)?t:null==(e=r.value)?void 0:e.type)?a:"default"),o.is("disabled",n.disabled),o.is("underline","always"===c.value),o.is("hover-underline","hover"===c.value&&!n.disabled)]}),c=(0,i.EW)(()=>{var e,t,o;return(0,p.Lm)(n.underline)?n.underline?"hover":"never":null!=(o=null!=(t=n.underline)?t:null==(e=r.value)?void 0:e.underline)?o:"hover"});function d(e){n.disabled||t("click",e)}return(e,t)=>((0,i.uX)(),(0,i.CE)("a",{class:(0,u.C4)((0,s.R1)(l)),href:e.disabled||!e.href?void 0:e.href,target:e.disabled||!e.href?void 0:e.target,onClick:d},[e.icon?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:0},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)(e.icon)))]),_:1})):(0,i.Q3)("v-if",!0),e.$slots.default?((0,i.uX)(),(0,i.CE)("span",{key:1,class:(0,u.C4)((0,s.R1)(o).e("inner"))},[(0,i.RG)(e.$slots,"default")],2)):(0,i.Q3)("v-if",!0),e.$slots.icon?(0,i.RG)(e.$slots,"icon",{key:2}):(0,i.Q3)("v-if",!0)],10,["href","target"]))}});var yl=(0,m.A)(bl,[["__file","link.vue"]]);const wl=(0,E.GU)(yl);class Rl{constructor(e,t){this.parent=e,this.domNode=t,this.subIndex=0,this.subIndex=0,this.init()}init(){this.subMenuItems=this.domNode.querySelectorAll("li"),this.addListeners()}gotoSubIndex(e){e===this.subMenuItems.length?e=0:e<0&&(e=this.subMenuItems.length-1),this.subMenuItems[e].focus(),this.subIndex=e}addListeners(){const e=this.parent.domNode;Array.prototype.forEach.call(this.subMenuItems,t=>{t.addEventListener("keydown",t=>{const n=(0,V.CG)(t);let r=!1;switch(n){case j.R.down:this.gotoSubIndex(this.subIndex+1),r=!0;break;case j.R.up:this.gotoSubIndex(this.subIndex-1),r=!0;break;case j.R.tab:(0,Kt.Hl)(e,"mouseleave");break;case j.R.enter:case j.R.numpadEnter:case j.R.space:r=!0,t.currentTarget.click();break}return r&&(t.preventDefault(),t.stopPropagation()),!1})})}}class Cl{constructor(e,t){this.domNode=e,this.submenu=null,this.submenu=null,this.init(t)}init(e){this.domNode.setAttribute("tabindex","0");const t=this.domNode.querySelector(`.${e}-menu`);t&&(this.submenu=new Rl(this,t)),this.addListeners()}addListeners(){this.domNode.addEventListener("keydown",e=>{const t=(0,V.CG)(e);let n=!1;switch(t){case j.R.down:(0,Kt.Hl)(e.currentTarget,"mouseenter"),this.submenu&&this.submenu.gotoSubIndex(0),n=!0;break;case j.R.up:(0,Kt.Hl)(e.currentTarget,"mouseenter"),this.submenu&&this.submenu.gotoSubIndex(this.submenu.subMenuItems.length-1),n=!0;break;case j.R.tab:(0,Kt.Hl)(e.currentTarget,"mouseleave");break;case j.R.enter:case j.R.numpadEnter:case j.R.space:n=!0,e.currentTarget.click();break}n&&e.preventDefault()})}}class xl{constructor(e,t){this.domNode=e,this.init(t)}init(e){const t=this.domNode.childNodes;Array.from(t).forEach(t=>{1===t.nodeType&&new Cl(t,e)})}}const kl=(0,i.pM)({name:"ElMenuCollapseTransition"}),El=(0,i.pM)({...kl,setup(e){const t=(0,g.DU)("menu"),n={onBeforeEnter:e=>e.style.opacity="0.2",onEnter(e,n){(0,y.iQ)(e,`${t.namespace.value}-opacity-transition`),e.style.opacity="1",n()},onAfterEnter(e){(0,y.vy)(e,`${t.namespace.value}-opacity-transition`),e.style.opacity=""},onBeforeLeave(e){e.dataset||(e.dataset={}),(0,y.nB)(e,t.m("collapse"))?((0,y.vy)(e,t.m("collapse")),e.dataset.oldOverflow=e.style.overflow,e.dataset.scrollWidth=e.clientWidth.toString(),(0,y.iQ)(e,t.m("collapse"))):((0,y.iQ)(e,t.m("collapse")),e.dataset.oldOverflow=e.style.overflow,e.dataset.scrollWidth=e.clientWidth.toString(),(0,y.vy)(e,t.m("collapse"))),e.style.width=`${e.scrollWidth}px`,e.style.overflow="hidden"},onLeave(e){(0,y.iQ)(e,"horizontal-collapse-transition"),e.style.width=`${e.dataset.scrollWidth}px`}};return(e,t)=>((0,i.uX)(),(0,i.Wv)(M.eB,(0,i.v6)({mode:"out-in"},(0,s.R1)(n)),{default:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"default")]),_:3},16))}});var _l=(0,m.A)(El,[["__file","menu-collapse-transition.vue"]]);function Sl(e,t){const n=(0,i.EW)(()=>{let n=e.parent;const r=[t.value];while("ElMenu"!==n.type.name)n.props.index&&r.unshift(n.props.index),n=n.parent;return r}),r=(0,i.EW)(()=>{let t=e.parent;while(t&&!["ElMenu","ElSubMenu"].includes(t.type.name))t=t.parent;return t});return{parentMenu:r,indexPath:n}}function Ml(e){const t=(0,i.EW)(()=>{const t=e.backgroundColor;return t?new hr.q(t).shade(20).toString():""});return t}const Ll=(e,t)=>{const n=(0,g.DU)("menu");return(0,i.EW)(()=>n.cssVarBlock({"text-color":e.textColor||"","hover-text-color":e.textColor||"","bg-color":e.backgroundColor||"","hover-bg-color":Ml(e).value||"","active-color":e.activeTextColor||"",level:`${t}`}))},Al="rootMenu",Ol="subMenu:",Tl=(0,f.b_)({index:{type:String,required:!0},showTimeout:Number,hideTimeout:Number,popperClass:String,popperStyle:{type:(0,f.jq)([String,Object])},disabled:Boolean,teleported:{type:Boolean,default:void 0},popperOffset:Number,expandCloseIcon:{type:Y.Ze},expandOpenIcon:{type:Y.Ze},collapseCloseIcon:{type:Y.Ze},collapseOpenIcon:{type:Y.Ze}}),Il="ElSubMenu";var Nl=(0,i.pM)({name:Il,props:Tl,setup(e,{slots:t,expose:n}){const r=(0,i.nI)(),{indexPath:o,parentMenu:a}=Sl(r,(0,i.EW)(()=>e.index)),l=(0,g.DU)("menu"),c=(0,g.DU)("sub-menu"),d=(0,i.WQ)(Al);d||(0,w.$)(Il,"can not inject root menu");const f=(0,i.WQ)(`${Ol}${a.value.uid}`);f||(0,w.$)(Il,"can not inject sub menu");const v=(0,s.KR)({}),h=(0,s.KR)({});let m;const b=(0,s.KR)(!1),y=(0,s.KR)(),R=(0,s.KR)(),C=(0,i.EW)(()=>0===f.level),x=(0,i.EW)(()=>"horizontal"===I.value&&C.value?"bottom-start":"right-start"),k=(0,i.EW)(()=>{const t="horizontal"===I.value&&C.value||"vertical"===I.value&&!d.props.collapse;return t?e.expandCloseIcon&&e.expandOpenIcon?L.value?e.expandOpenIcon:e.expandCloseIcon:O.ArrowDown:e.collapseCloseIcon&&e.collapseOpenIcon?L.value?e.collapseOpenIcon:e.collapseCloseIcon:O.ArrowRight}),E=(0,i.EW)(()=>{const t=e.teleported;return(0,p.b0)(t)?C.value:t}),_=(0,i.EW)(()=>d.props.collapse?`${l.namespace.value}-zoom-in-left`:`${l.namespace.value}-zoom-in-top`),S=(0,i.EW)(()=>"horizontal"===I.value&&C.value?["bottom-start","bottom-end","top-start","top-end","right-start","left-start"]:["right-start","right","right-end","left-start","bottom-start","bottom-end","top-start","top-end"]),L=(0,i.EW)(()=>d.openedMenus.includes(e.index)),T=(0,i.EW)(()=>[...Object.values(v.value),...Object.values(h.value)].some(({active:e})=>e)),I=(0,i.EW)(()=>d.props.mode),D=(0,i.EW)(()=>d.props.persistent),P=(0,s.Kh)({index:e.index,indexPath:o,active:T}),F=Ll(d.props,f.level+1),B=(0,i.EW)(()=>{var t;return null!=(t=e.popperOffset)?t:d.props.popperOffset}),z=(0,i.EW)(()=>{var t;return null!=(t=e.popperClass)?t:d.props.popperClass}),$=(0,i.EW)(()=>{var t;return null!=(t=e.popperStyle)?t:d.props.popperStyle}),V=(0,i.EW)(()=>{var t;return null!=(t=e.showTimeout)?t:d.props.showTimeout}),j=(0,i.EW)(()=>{var t;return null!=(t=e.hideTimeout)?t:d.props.hideTimeout}),K=()=>{var e,t,n;return null==(n=null==(t=null==(e=R.value)?void 0:e.popperRef)?void 0:t.popperInstanceRef)?void 0:n.destroy()},H=e=>{e||K()},X=()=>{"hover"===d.props.menuTrigger&&"horizontal"===d.props.mode||d.props.collapse&&"vertical"===d.props.mode||e.disabled||d.handleSubMenuClick({index:e.index,indexPath:o.value,active:T.value})},U=(t,n=V.value)=>{var r;"focus"!==t.type&&("click"===d.props.menuTrigger&&"horizontal"===d.props.mode||!d.props.collapse&&"vertical"===d.props.mode||e.disabled?f.mouseInChild.value=!0:(f.mouseInChild.value=!0,null==m||m(),({stop:m}=(0,A.TO)(()=>{d.openMenu(e.index,o.value)},n)),E.value&&(null==(r=a.value.vnode.el)||r.dispatchEvent(new MouseEvent("mouseenter"))),"mouseenter"===t.type&&t.target&&(0,i.dY)(()=>{(0,Kt.pW)(t.target,{preventScroll:!0})})))},G=(t=!1)=>{var n;"click"===d.props.menuTrigger&&"horizontal"===d.props.mode||!d.props.collapse&&"vertical"===d.props.mode?f.mouseInChild.value=!1:(null==m||m(),f.mouseInChild.value=!1,({stop:m}=(0,A.TO)(()=>!b.value&&d.closeMenu(e.index,o.value),j.value)),E.value&&t&&(null==(n=f.handleMouseleave)||n.call(f,!0)))};(0,i.wB)(()=>d.props.collapse,e=>H(Boolean(e)));{const e=e=>{h.value[e.index]=e},t=e=>{delete h.value[e.index]};(0,i.Gt)(`${Ol}${r.uid}`,{addSubMenu:e,removeSubMenu:t,handleMouseleave:G,mouseInChild:b,level:f.level+1})}return n({opened:L}),(0,i.sV)(()=>{d.addSubMenu(P),f.addSubMenu(P)}),(0,i.xo)(()=>{f.removeSubMenu(P),d.removeSubMenu(P)}),()=>{var n;const o=[null==(n=t.title)?void 0:n.call(t),(0,i.h)(W.tk,{class:c.e("icon-arrow"),style:{transform:L.value?e.expandCloseIcon&&e.expandOpenIcon||e.collapseCloseIcon&&e.collapseOpenIcon&&d.props.collapse?"none":"rotateZ(180deg)":"none"}},{default:()=>(0,u.Kg)(k.value)?(0,i.h)(r.appContext.components[k.value]):(0,i.h)(k.value)})],a=d.isMenuPopup?(0,i.h)(N.R7,{ref:R,visible:L.value,effect:"light",pure:!0,offset:B.value,showArrow:!1,persistent:D.value,popperClass:z.value,popperStyle:$.value,placement:x.value,teleported:E.value,fallbackPlacements:S.value,transition:_.value,gpuAcceleration:!1},{content:()=>{var e;return(0,i.h)("div",{class:[l.m(I.value),l.m("popup-container"),z.value],onMouseenter:e=>U(e,100),onMouseleave:()=>G(!0),onFocus:e=>U(e,100)},[(0,i.h)("ul",{class:[l.b(),l.m("popup"),l.m(`popup-${x.value}`)],style:F.value},[null==(e=t.default)?void 0:e.call(t)])])},default:()=>(0,i.h)("div",{class:c.e("title"),onClick:X},o)}):(0,i.h)(i.FK,{},[(0,i.h)("div",{class:c.e("title"),ref:y,onClick:X},o),(0,i.h)(Wn.o,{},{default:()=>{var e;return(0,i.bo)((0,i.h)("ul",{role:"menu",class:[l.b(),l.m("inline")],style:F.value},[null==(e=t.default)?void 0:e.call(t)]),[[M.aG,L.value]])}})]);return(0,i.h)("li",{class:[c.b(),c.is("active",T.value),c.is("opened",L.value),c.is("disabled",e.disabled)],role:"menuitem",ariaHaspopup:!0,ariaExpanded:L.value,onMouseenter:U,onMouseleave:()=>G(),onFocus:U},[a])}}});const Wl=(0,f.b_)({mode:{type:String,values:["horizontal","vertical"],default:"vertical"},defaultActive:{type:String,default:""},defaultOpeneds:{type:(0,f.jq)(Array),default:()=>(0,gn.f)([])},uniqueOpened:Boolean,router:Boolean,menuTrigger:{type:String,values:["hover","click"],default:"hover"},collapse:Boolean,backgroundColor:String,textColor:String,activeTextColor:String,closeOnClickOutside:Boolean,collapseTransition:{type:Boolean,default:!0},ellipsis:{type:Boolean,default:!0},popperOffset:{type:Number,default:6},ellipsisIcon:{type:Y.Ze,default:()=>O.More},popperEffect:{type:(0,f.jq)(String),default:"dark"},popperClass:String,popperStyle:{type:(0,f.jq)([String,Object])},showTimeout:{type:Number,default:300},hideTimeout:{type:Number,default:300},persistent:{type:Boolean,default:!0}}),Dl=e=>(0,u.cy)(e)&&e.every(e=>(0,u.Kg)(e)),Pl={close:(e,t)=>(0,u.Kg)(e)&&Dl(t),open:(e,t)=>(0,u.Kg)(e)&&Dl(t),select:(e,t,n,r)=>(0,u.Kg)(e)&&Dl(t)&&(0,u.Gv)(n)&&((0,p.b0)(r)||r instanceof Promise)},Fl=64;var Bl=(0,i.pM)({name:"ElMenu",props:Wl,emits:Pl,setup(e,{emit:t,slots:n,expose:r}){const o=(0,i.nI)(),a=o.appContext.config.globalProperties.$router,l=(0,s.KR)(),u=(0,s.KR)(),d=(0,g.DU)("menu"),f=(0,g.DU)("sub-menu");let p=Fl;const v=(0,s.KR)(-1),h=(0,s.KR)(e.defaultOpeneds&&!e.collapse?e.defaultOpeneds.slice(0):[]),m=(0,s.KR)(e.defaultActive),b=(0,s.KR)({}),y=(0,s.KR)({}),w=(0,i.EW)(()=>"horizontal"===e.mode||"vertical"===e.mode&&e.collapse),R=()=>{const t=m.value&&b.value[m.value];if(!t||"horizontal"===e.mode||e.collapse)return;const n=t.indexPath;n.forEach(e=>{const t=y.value[e];t&&C(e,t.indexPath)})},C=(n,r)=>{h.value.includes(n)||(e.uniqueOpened&&(h.value=h.value.filter(e=>r.includes(e))),h.value.push(n),t("open",n,r))},x=e=>{const t=h.value.indexOf(e);-1!==t&&h.value.splice(t,1)},k=(e,n)=>{x(e),t("close",e,n)},E=({index:e,indexPath:t})=>{const n=h.value.includes(e);n?k(e,t):C(e,t)},_=n=>{("horizontal"===e.mode||e.collapse)&&(h.value=[]);const{index:r,indexPath:o}=n;if(!(0,cr.A)(r)&&!(0,cr.A)(o))if(e.router&&a){const e=n.route||r,l=a.push(e).then(e=>(e||(m.value=r),e));t("select",r,o,{index:r,indexPath:o,route:e},l)}else m.value=r,t("select",r,o,{index:r,indexPath:o})},S=t=>{var n;const r=b.value,o=r[t]||m.value&&r[m.value]||r[e.defaultActive];m.value=null!=(n=null==o?void 0:o.index)?n:t},M=e=>{const t=getComputedStyle(e),n=Number.parseInt(t.marginLeft,10),r=Number.parseInt(t.marginRight,10);return e.offsetWidth+n+r||0},L=()=>{if(!l.value)return-1;const e=Array.from(l.value.childNodes).filter(e=>"#comment"!==e.nodeName&&("#text"!==e.nodeName||e.nodeValue)),t=getComputedStyle(l.value),n=Number.parseInt(t.paddingLeft,10),r=Number.parseInt(t.paddingRight,10),o=l.value.clientWidth-n-r;let a=0,i=0;return e.forEach((e,t)=>{a+=M(e),a<=o-p&&(i=t+1)}),i===e.length?-1:i},A=e=>y.value[e].indexPath,O=(e,t=33.34)=>{let n;return()=>{n&&clearTimeout(n),n=setTimeout(()=>{e()},t)}};let T=!0;const I=()=>{const e=(0,c.F4c)(u);if(e&&(p=M(e)||Fl),v.value===L())return;const t=()=>{v.value=-1,(0,i.dY)(()=>{v.value=L()})};T?t():O(t)(),T=!1};let N;(0,i.wB)(()=>e.defaultActive,e=>{b.value[e]||(m.value=""),S(e)}),(0,i.wB)(()=>e.collapse,e=>{e&&(h.value=[])}),(0,i.wB)(b.value,R),(0,i.nT)(()=>{"horizontal"===e.mode&&e.ellipsis?N=(0,c.wYm)(l,I).stop:null==N||N()});const D=(0,s.KR)(!1);{const t=e=>{y.value[e.index]=e},n=e=>{delete y.value[e.index]},r=e=>{b.value[e.index]=e},a=e=>{delete b.value[e.index]};(0,i.Gt)(Al,(0,s.Kh)({props:e,openedMenus:h,items:b,subMenus:y,activeIndex:m,isMenuPopup:w,addMenuItem:r,removeMenuItem:a,addSubMenu:t,removeSubMenu:n,openMenu:C,closeMenu:k,handleMenuItemClick:_,handleSubMenuClick:E})),(0,i.Gt)(`${Ol}${o.uid}`,{addSubMenu:t,removeSubMenu:n,mouseInChild:D,level:0})}(0,i.sV)(()=>{"horizontal"===e.mode&&new xl(o.vnode.el,d.namespace.value)});{const e=e=>{const{indexPath:t}=y.value[e];t.forEach(e=>C(e,t))};r({open:e,close:x,updateActiveIndex:S,handleResize:I})}const P=Ll(e,0);return()=>{var r,o;let a=null!=(o=null==(r=n.default)?void 0:r.call(n))?o:[];const s=[];if("horizontal"===e.mode&&l.value){const t=(0,nt.CW)(a).filter(e=>8!==(null==e?void 0:e.shapeFlag)),n=-1===v.value?t:t.slice(0,v.value),r=-1===v.value?[]:t.slice(v.value);(null==r?void 0:r.length)&&e.ellipsis&&(a=n,s.push((0,i.h)(Nl,{ref:u,index:"sub-menu-more",class:f.e("hide-arrow"),popperOffset:e.popperOffset},{title:()=>(0,i.h)(W.tk,{class:f.e("icon-more")},{default:()=>(0,i.h)(e.ellipsisIcon)}),default:()=>r})))}const c=e.closeOnClickOutside?[[sn.A,()=>{h.value.length&&(D.value||(h.value.forEach(e=>t("close",e,A(e))),h.value=[]))}]]:[],p=(0,i.bo)((0,i.h)("ul",{key:String(e.collapse),role:"menubar",ref:l,style:P.value,class:{[d.b()]:!0,[d.m(e.mode)]:!0,[d.m("collapse")]:e.collapse}},[...a,...s]),c);return e.collapseTransition&&"vertical"===e.mode?(0,i.h)(_l,()=>p):p}}});const zl=(0,f.b_)({index:{type:(0,f.jq)([String,null]),default:null},route:{type:(0,f.jq)([String,Object])},disabled:Boolean}),$l={click:e=>(0,u.Kg)(e.index)&&(0,u.cy)(e.indexPath)},Vl="ElMenuItem",jl=(0,i.pM)({name:Vl}),Kl=(0,i.pM)({...jl,props:zl,emits:$l,setup(e,{expose:t,emit:n}){const r=e;(0,p.Xj)(r.index)&&(0,w.U)(Vl,'Missing required prop: "index"');const o=(0,i.nI)(),a=(0,i.WQ)(Al),l=(0,g.DU)("menu"),c=(0,g.DU)("menu-item");a||(0,w.$)(Vl,"can not inject root menu");const{parentMenu:d,indexPath:f}=Sl(o,(0,s.lW)(r,"index")),v=(0,i.WQ)(`${Ol}${d.value.uid}`);v||(0,w.$)(Vl,"can not inject sub menu");const h=(0,i.EW)(()=>r.index===a.activeIndex),m=(0,s.Kh)({index:r.index,indexPath:f,active:h}),b=()=>{r.disabled||(a.handleMenuItemClick({index:r.index,indexPath:f.value,route:r.route}),n("click",m))};return(0,i.sV)(()=>{v.addSubMenu(m),a.addMenuItem(m)}),(0,i.xo)(()=>{v.removeSubMenu(m),a.removeMenuItem(m)}),t({parentMenu:d,rootMenu:a,active:h,nsMenu:l,nsMenuItem:c,handleClick:b}),(e,t)=>((0,i.uX)(),(0,i.CE)("li",{class:(0,u.C4)([(0,s.R1)(c).b(),(0,s.R1)(c).is("active",(0,s.R1)(h)),(0,s.R1)(c).is("disabled",e.disabled)]),role:"menuitem",tabindex:"-1",onClick:b},["ElMenu"===(0,s.R1)(d).type.name&&(0,s.R1)(a).props.collapse&&e.$slots.title?((0,i.uX)(),(0,i.Wv)((0,s.R1)(N.R7),{key:0,effect:(0,s.R1)(a).props.popperEffect,placement:"right","fallback-placements":["left"],"popper-class":(0,s.R1)(a).props.popperClass,"popper-style":(0,s.R1)(a).props.popperStyle,persistent:(0,s.R1)(a).props.persistent,"focus-on-target":""},{content:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"title")]),default:(0,i.k6)(()=>[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(l).be("tooltip","trigger"))},[(0,i.RG)(e.$slots,"default")],2)]),_:3},8,["effect","popper-class","popper-style","persistent"])):((0,i.uX)(),(0,i.CE)(i.FK,{key:1},[(0,i.RG)(e.$slots,"default"),(0,i.RG)(e.$slots,"title")],64))],2))}});var Hl=(0,m.A)(Kl,[["__file","menu-item.vue"]]);const Xl={title:String},Ul=(0,i.pM)({name:"ElMenuItemGroup"}),Gl=(0,i.pM)({...Ul,props:Xl,setup(e){const t=(0,g.DU)("menu-item-group");return(e,n)=>((0,i.uX)(),(0,i.CE)("li",{class:(0,u.C4)((0,s.R1)(t).b())},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(t).e("title"))},[e.$slots.title?(0,i.RG)(e.$slots,"title",{key:1}):((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[(0,i.eW)((0,u.v_)(e.title),1)],64))],2),(0,i.Lk)("ul",null,[(0,i.RG)(e.$slots,"default")])],2))}});var ql=(0,m.A)(Gl,[["__file","menu-item-group.vue"]]);const Yl=(0,E.GU)(Bl,{MenuItem:Hl,MenuItemGroup:ql,SubMenu:Nl}),Ql=(0,E.WM)(Hl),Zl=(0,E.WM)(ql),Jl=(0,E.WM)(Nl),ei=(0,f.b_)({icon:{type:Y.Ze,default:()=>O.Back},title:String,content:{type:String,default:""}}),ti={back:()=>!0},ni=(0,i.pM)({name:"ElPageHeader"}),ri=(0,i.pM)({...ni,props:ei,emits:ti,setup(e,{emit:t}){const{t:n}=(0,Ie.Ym)(),r=(0,g.DU)("page-header");function o(){t("back")}return(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)([(0,s.R1)(r).b(),(0,s.R1)(r).is("contentful",!!e.$slots.default),{[(0,s.R1)(r).m("has-breadcrumb")]:!!e.$slots.breadcrumb,[(0,s.R1)(r).m("has-extra")]:!!e.$slots.extra}])},[e.$slots.breadcrumb?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(r).e("breadcrumb"))},[(0,i.RG)(e.$slots,"breadcrumb")],2)):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(r).e("header"))},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(r).e("left"))},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(r).e("back")),role:"button",tabindex:"0",onClick:o},[e.icon||e.$slots.icon?((0,i.uX)(),(0,i.CE)("div",{key:0,"aria-label":e.title||(0,s.R1)(n)("el.pageHeader.title"),class:(0,u.C4)((0,s.R1)(r).e("icon"))},[(0,i.RG)(e.$slots,"icon",{},()=>[e.icon?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:0},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)(e.icon)))]),_:1})):(0,i.Q3)("v-if",!0)])],10,["aria-label"])):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(r).e("title"))},[(0,i.RG)(e.$slots,"title",{},()=>[(0,i.eW)((0,u.v_)(e.title||(0,s.R1)(n)("el.pageHeader.title")),1)])],2)],2),(0,i.bF)((0,s.R1)(za.fR),{direction:"vertical"}),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(r).e("content"))},[(0,i.RG)(e.$slots,"content",{},()=>[(0,i.eW)((0,u.v_)(e.content),1)])],2)],2),e.$slots.extra?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(r).e("extra"))},[(0,i.RG)(e.$slots,"extra")],2)):(0,i.Q3)("v-if",!0)],2),e.$slots.default?((0,i.uX)(),(0,i.CE)("div",{key:1,class:(0,u.C4)((0,s.R1)(r).e("main"))},[(0,i.RG)(e.$slots,"default")],2)):(0,i.Q3)("v-if",!0)],2))}});var oi=(0,m.A)(ri,[["__file","page-header.vue"]]);const ai=(0,E.GU)(oi);var li=n(77815),ii=n(51585),si=n(90844);const ui=(0,f.b_)({title:String,confirmButtonText:String,cancelButtonText:String,confirmButtonType:{type:String,values:ii.Od,default:"primary"},cancelButtonType:{type:String,values:ii.Od,default:"text"},icon:{type:Y.Ze,default:()=>O.QuestionFilled},iconColor:{type:String,default:"#f90"},hideIcon:Boolean,hideAfter:{type:Number,default:200},effect:{...P.E.effect,default:"light"},teleported:P.E.teleported,persistent:P.E.persistent,width:{type:[String,Number],default:150},virtualTriggering:si.p.virtualTriggering,virtualRef:si.p.virtualRef}),ci={confirm:e=>e instanceof MouseEvent,cancel:e=>e instanceof MouseEvent},di=(0,i.pM)({name:"ElPopconfirm"}),fi=(0,i.pM)({...di,props:ui,emits:ci,setup(e,{expose:t,emit:n}){const r=e,{t:o}=(0,Ie.Ym)(),a=(0,g.DU)("popconfirm"),l=(0,s.KR)(),c=(0,s.KR)(),d=(0,i.EW)(()=>{var e;return null==(e=(0,s.R1)(l))?void 0:e.popperRef}),f=()=>{var e,t;null==(t=null==(e=c.value)?void 0:e.focus)||t.call(e)},p=()=>{var e,t;null==(t=null==(e=l.value)?void 0:e.onClose)||t.call(e)},v=(0,i.EW)(()=>({width:(0,y._V)(r.width)})),h=e=>{n("confirm",e),p()},m=e=>{n("cancel",e),p()},b=(0,i.EW)(()=>r.confirmButtonText||o("el.popconfirm.confirmButtonText")),w=(0,i.EW)(()=>r.cancelButtonText||o("el.popconfirm.cancelButtonText"));return t({popperRef:d,hide:p}),(e,t)=>((0,i.uX)(),(0,i.Wv)((0,s.R1)(N.R7),(0,i.v6)({ref_key:"tooltipRef",ref:l,trigger:"click",effect:e.effect},e.$attrs,{"virtual-triggering":e.virtualTriggering,"virtual-ref":e.virtualRef,"popper-class":`${(0,s.R1)(a).namespace.value}-popover`,"popper-style":(0,s.R1)(v),teleported:e.teleported,"fallback-placements":["bottom","top","right","left"],"hide-after":e.hideAfter,persistent:e.persistent,loop:"",onShow:f}),{content:(0,i.k6)(()=>[(0,i.Lk)("div",{ref_key:"rootRef",ref:c,tabindex:"-1",class:(0,u.C4)((0,s.R1)(a).b())},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(a).e("main"))},[!e.hideIcon&&e.icon?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:0,class:(0,u.C4)((0,s.R1)(a).e("icon")),style:(0,u.Tr)({color:e.iconColor})},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)(e.icon)))]),_:1},8,["class","style"])):(0,i.Q3)("v-if",!0),(0,i.eW)(" "+(0,u.v_)(e.title),1)],2),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(a).e("action"))},[(0,i.RG)(e.$slots,"actions",{confirm:h,cancel:m},()=>[(0,i.bF)((0,s.R1)(pe.S2),{size:"small",type:"text"===e.cancelButtonType?"":e.cancelButtonType,text:"text"===e.cancelButtonType,onClick:m},{default:(0,i.k6)(()=>[(0,i.eW)((0,u.v_)((0,s.R1)(w)),1)]),_:1},8,["type","text"]),(0,i.bF)((0,s.R1)(pe.S2),{size:"small",type:"text"===e.confirmButtonType?"":e.confirmButtonType,text:"text"===e.confirmButtonType,onClick:h},{default:(0,i.k6)(()=>[(0,i.eW)((0,u.v_)((0,s.R1)(b)),1)]),_:1},8,["type","text"])])],2)],2)]),default:(0,i.k6)(()=>[e.$slots.reference?(0,i.RG)(e.$slots,"reference",{key:0}):(0,i.Q3)("v-if",!0)]),_:3},16,["effect","virtual-triggering","virtual-ref","popper-class","popper-style","teleported","hide-after","persistent"]))}});var pi=(0,m.A)(fi,[["__file","popconfirm.vue"]]);const vi=(0,E.GU)(pi);var hi=n(30650),mi=n(98072),gi=n(69655),bi=n(48096);const yi=(0,f.b_)({modelValue:{type:Number,default:0},id:{type:String,default:void 0},lowThreshold:{type:Number,default:2},highThreshold:{type:Number,default:4},max:{type:Number,default:5},colors:{type:(0,f.jq)([Array,Object]),default:()=>(0,gn.f)(["","",""])},voidColor:{type:String,default:""},disabledVoidColor:{type:String,default:""},icons:{type:(0,f.jq)([Array,Object]),default:()=>[O.StarFilled,O.StarFilled,O.StarFilled]},voidIcon:{type:Y.Ze,default:()=>O.Star},disabledVoidIcon:{type:Y.Ze,default:()=>O.StarFilled},disabled:{type:Boolean,default:void 0},allowHalf:Boolean,showText:Boolean,showScore:Boolean,textColor:{type:String,default:""},texts:{type:(0,f.jq)(Array),default:()=>(0,gn.f)(["Extremely bad","Disappointed","Fair","Satisfied","Surprise"])},scoreTemplate:{type:String,default:"{value}"},size:nn.mU,clearable:Boolean,...(0,Nr.l)(["ariaLabel"])}),wi={[d.YU]:e=>(0,p.Et)(e),[d.l4]:e=>(0,p.Et)(e)};var Ri=n(87254);const Ci=(0,i.pM)({name:"ElRate"}),xi=(0,i.pM)({...Ci,props:yi,emits:wi,setup(e,{expose:t,emit:n}){const r=e;function o(e,t){const n=e=>(0,u.Gv)(e),r=Object.keys(t).map(e=>+e).filter(r=>{const o=t[r],a=!!n(o)&&o.excluded;return a?ee-t),o=t[r[0]];return n(o)&&o.value||o}const a=(0,i.WQ)(Ri.w,void 0),l=(0,z.NV)(),c=(0,g.DU)("rate"),{inputId:f,isLabeledByFormItem:p}=(0,un.W)(r,{formItemContext:a}),v=(0,s.KR)(r.modelValue),h=(0,s.KR)(-1),m=(0,s.KR)(!0),b=(0,s.KR)([]),y=(0,i.EW)(()=>b.value.map(e=>e.$el.clientWidth)),w=(0,i.EW)(()=>[c.b(),c.m(l.value)]),R=(0,z.CB)(),C=(0,i.EW)(()=>c.cssVarBlock({"void-color":r.voidColor,"disabled-void-color":r.disabledVoidColor,"fill-color":_.value})),x=(0,i.EW)(()=>{let e="";return r.showScore?e=r.scoreTemplate.replace(/\{\s*value\s*\}/,R.value?`${r.modelValue}`:`${v.value}`):r.showText&&(e=r.texts[Math.ceil(v.value)-1]),e}),k=(0,i.EW)(()=>100*r.modelValue-100*Math.floor(r.modelValue)),E=(0,i.EW)(()=>(0,u.cy)(r.colors)?{[r.lowThreshold]:r.colors[0],[r.highThreshold]:{value:r.colors[1],excluded:!0},[r.max]:r.colors[2]}:r.colors),_=(0,i.EW)(()=>{const e=o(v.value,E.value);return(0,u.Gv)(e)?"":e}),S=(0,i.EW)(()=>{let e="";return R.value?e=`${k.value}%`:r.allowHalf&&(e="50%"),{color:_.value,width:e}}),L=(0,i.EW)(()=>{let e=(0,u.cy)(r.icons)?[...r.icons]:{...r.icons};return e=(0,s.IG)(e),(0,u.cy)(e)?{[r.lowThreshold]:e[0],[r.highThreshold]:{value:e[1],excluded:!0},[r.max]:e[2]}:e}),A=(0,i.EW)(()=>o(r.modelValue,L.value)),O=(0,i.EW)(()=>R.value?(0,u.Kg)(r.disabledVoidIcon)?r.disabledVoidIcon:(0,s.IG)(r.disabledVoidIcon):(0,u.Kg)(r.voidIcon)?r.voidIcon:(0,s.IG)(r.voidIcon)),T=(0,i.EW)(()=>o(v.value,L.value));function I(e){const t=R.value&&k.value>0&&e-1r.modelValue,n=r.allowHalf&&m.value&&e-.5<=v.value&&e>v.value;return t||n}function N(e){r.clearable&&e===r.modelValue&&(e=0),n(d.l4,e),r.modelValue!==e&&n(d.YU,e)}function D(e){R.value||(r.allowHalf&&m.value?N(v.value):N(e))}function P(e){if(R.value)return;const t=(0,V.CG)(e),o=r.allowHalf?.5:1;let a=v.value;switch(t){case j.R.up:case j.R.right:a+=o;break;case j.R.left:case j.R.down:a-=o;break}return a=(0,bi.A)(a,0,r.max),a!==v.value?(e.stopPropagation(),e.preventDefault(),n(d.l4,a),n(d.YU,a),a):void 0}function F(e,t){R.value||(r.allowHalf&&t?(m.value=2*t.offsetX<=y.value[e-1],v.value=m.value?e-.5:e):v.value=e,h.value=e)}function B(){R.value||(r.allowHalf&&(m.value=r.modelValue!==Math.floor(r.modelValue)),v.value=r.modelValue,h.value=-1)}return(0,i.wB)(()=>r.modelValue,e=>{v.value=e,m.value=r.modelValue!==Math.floor(r.modelValue)}),r.modelValue||n(d.l4,0),t({setCurrentValue:F,resetCurrentValue:B}),(e,t)=>{var n;return(0,i.uX)(),(0,i.CE)("div",{id:(0,s.R1)(f),class:(0,u.C4)([(0,s.R1)(w),(0,s.R1)(c).is("disabled",(0,s.R1)(R))]),role:"slider","aria-label":(0,s.R1)(p)?void 0:e.ariaLabel||"rating","aria-labelledby":(0,s.R1)(p)?null==(n=(0,s.R1)(a))?void 0:n.labelId:void 0,"aria-valuenow":v.value,"aria-valuetext":(0,s.R1)(x)||void 0,"aria-valuemin":"0","aria-valuemax":e.max,tabindex:"0",style:(0,u.Tr)((0,s.R1)(C)),onKeydown:P},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.max,(e,t)=>((0,i.uX)(),(0,i.CE)("span",{key:t,class:(0,u.C4)((0,s.R1)(c).e("item")),onMousemove:t=>F(e,t),onMouseleave:B,onClick:t=>D(e)},[(0,i.bF)((0,s.R1)(W.tk),{ref_for:!0,ref_key:"iconRefs",ref:b,class:(0,u.C4)([(0,s.R1)(c).e("icon"),{hover:h.value===e},(0,s.R1)(c).is("active",e<=v.value),(0,s.R1)(c).is("focus-visible",e===Math.ceil(v.value||1))])},{default:(0,i.k6)(()=>[(0,i.bo)(((0,i.uX)(),(0,i.Wv)((0,i.$y)((0,s.R1)(T)),null,null,512)),[[M.aG,!I(e)&&e<=v.value]]),(0,i.bo)(((0,i.uX)(),(0,i.Wv)((0,i.$y)((0,s.R1)(O)),null,null,512)),[[M.aG,!I(e)&&e>v.value]]),(0,i.bo)(((0,i.uX)(),(0,i.Wv)((0,i.$y)((0,s.R1)(O)),{class:(0,u.C4)([(0,s.R1)(c).em("decimal","box")])},null,8,["class"])),[[M.aG,I(e)]]),(0,i.bo)((0,i.bF)((0,s.R1)(W.tk),{style:(0,u.Tr)((0,s.R1)(S)),class:(0,u.C4)([(0,s.R1)(c).e("icon"),(0,s.R1)(c).e("decimal")])},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)((0,s.R1)(A))))]),_:2},1032,["style","class"]),[[M.aG,I(e)]])]),_:2},1032,["class"])],42,["onMousemove","onClick"]))),128)),e.showText||e.showScore?((0,i.uX)(),(0,i.CE)("span",{key:0,class:(0,u.C4)((0,s.R1)(c).e("text")),style:(0,u.Tr)({color:e.textColor})},(0,u.v_)((0,s.R1)(x)),7)):(0,i.Q3)("v-if",!0)],46,["id","aria-label","aria-labelledby","aria-valuenow","aria-valuetext","aria-valuemax"])}}});var ki=(0,m.A)(xi,[["__file","rate.vue"]]);const Ei=(0,E.GU)(ki),_i={primary:"icon-primary",success:"icon-success",warning:"icon-warning",error:"icon-error",info:"icon-info"},Si={[_i.primary]:O.InfoFilled,[_i.success]:O.CircleCheckFilled,[_i.warning]:O.WarningFilled,[_i.error]:O.CircleCloseFilled,[_i.info]:O.InfoFilled},Mi=(0,f.b_)({title:{type:String,default:""},subTitle:{type:String,default:""},icon:{type:String,values:["primary","success","warning","info","error"],default:"info"}}),Li=(0,i.pM)({name:"ElResult"}),Ai=(0,i.pM)({...Li,props:Mi,setup(e){const t=e,n=(0,g.DU)("result"),r=(0,i.EW)(()=>{const e=t.icon,n=e&&_i[e]?_i[e]:"icon-info",r=Si[n]||Si["icon-info"];return{class:n,component:r}});return(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)((0,s.R1)(n).b())},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(n).e("icon"))},[(0,i.RG)(e.$slots,"icon",{},()=>[(0,s.R1)(r).component?((0,i.uX)(),(0,i.Wv)((0,i.$y)((0,s.R1)(r).component),{key:0,class:(0,u.C4)((0,s.R1)(r).class)},null,8,["class"])):(0,i.Q3)("v-if",!0)])],2),e.title||e.$slots.title?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(n).e("title"))},[(0,i.RG)(e.$slots,"title",{},()=>[(0,i.Lk)("p",null,(0,u.v_)(e.title),1)])],2)):(0,i.Q3)("v-if",!0),e.subTitle||e.$slots["sub-title"]?((0,i.uX)(),(0,i.CE)("div",{key:1,class:(0,u.C4)((0,s.R1)(n).e("subtitle"))},[(0,i.RG)(e.$slots,"sub-title",{},()=>[(0,i.Lk)("p",null,(0,u.v_)(e.subTitle),1)])],2)):(0,i.Q3)("v-if",!0),e.$slots.extra?((0,i.uX)(),(0,i.CE)("div",{key:2,class:(0,u.C4)((0,s.R1)(n).e("extra"))},[(0,i.RG)(e.$slots,"extra")],2)):(0,i.Q3)("v-if",!0)],2))}});var Oi=(0,m.A)(Ai,[["__file","result.vue"]]);const Ti=(0,E.GU)(Oi),Ii=["start","center","end","space-around","space-between","space-evenly"],Ni=["top","middle","bottom"],Wi=(0,f.b_)({tag:{type:String,default:"div"},gutter:{type:Number,default:0},justify:{type:String,values:Ii,default:"start"},align:{type:String,values:Ni}}),Di=(0,i.pM)({name:"ElRow"}),Pi=(0,i.pM)({...Di,props:Wi,setup(e){const t=e,n=(0,g.DU)("row"),r=(0,i.EW)(()=>t.gutter);(0,i.Gt)(yn,{gutter:r});const o=(0,i.EW)(()=>{const e={};return t.gutter?(e.marginRight=e.marginLeft=`-${t.gutter/2}px`,e):e}),a=(0,i.EW)(()=>[n.b(),n.is(`justify-${t.justify}`,"start"!==t.justify),n.is(`align-${t.align}`,!!t.align)]);return(e,t)=>((0,i.uX)(),(0,i.Wv)((0,i.$y)(e.tag),{class:(0,u.C4)((0,s.R1)(a)),style:(0,u.Tr)((0,s.R1)(o))},{default:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"default")]),_:3},8,["class","style"]))}});var Fi=(0,m.A)(Pi,[["__file","row.vue"]]);const Bi=(0,E.GU)(Fi);var zi=n(76018),$i=n(29615);const Vi=(0,i.pM)({props:{item:{type:Object,required:!0},style:{type:Object},height:Number},setup(){const e=(0,g.DU)("select");return{ns:e}}});function ji(e,t,n,r,o,a){return(0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)(e.ns.be("group","title")),style:(0,u.Tr)({...e.style,lineHeight:`${e.height}px`})},(0,u.v_)(e.item.label),7)}var Ki=(0,m.A)(Vi,[["render",ji],["__file","group-item.vue"]]);function Hi(e,{emit:t}){return{hoverItem:()=>{e.disabled||t("hover",e.index)},selectOptionClick:()=>{e.disabled||t("select",e.item,e.index)}}}var Xi=n(10793);const Ui=(0,f.b_)({allowCreate:Boolean,autocomplete:{type:(0,f.jq)(String),default:"none"},automaticDropdown:Boolean,clearable:Boolean,clearIcon:{type:Y.Ze,default:O.CircleClose},effect:{type:(0,f.jq)(String),default:"light"},collapseTags:Boolean,collapseTagsTooltip:Boolean,maxCollapseTags:{type:Number,default:1},defaultFirstOption:Boolean,disabled:{type:Boolean,default:void 0},estimatedOptionHeight:{type:Number,default:void 0},filterable:Boolean,filterMethod:{type:(0,f.jq)(Function)},height:{type:Number,default:274},itemHeight:{type:Number,default:34},id:String,loading:Boolean,loadingText:String,modelValue:{type:(0,f.jq)([Array,String,Number,Boolean,Object]),default:void 0},multiple:Boolean,multipleLimit:{type:Number,default:0},name:String,noDataText:String,noMatchText:String,remoteMethod:{type:(0,f.jq)(Function)},reserveKeyword:{type:Boolean,default:!0},options:{type:(0,f.jq)(Array),required:!0},placeholder:{type:String},teleported:P.E.teleported,persistent:{type:Boolean,default:!0},popperClass:P.E.popperClass,popperStyle:P.E.popperStyle,popperOptions:{type:(0,f.jq)(Object),default:()=>({})},remote:Boolean,debounce:{type:Number,default:300},size:nn.mU,props:{type:(0,f.jq)(Object),default:()=>Xi.G},valueKey:{type:String,default:"value"},scrollbarAlwaysOn:Boolean,validateEvent:{type:Boolean,default:!0},offset:{type:Number,default:12},remoteShowSuffix:Boolean,showArrow:{type:Boolean,default:!0},placement:{type:(0,f.jq)(String),values:en.DD,default:"bottom-start"},fallbackPlacements:{type:(0,f.jq)(Array),default:["bottom-start","top-start","right","left"]},tagType:{...tn.z.type,default:"info"},tagEffect:{...tn.z.effect,default:"light"},tabindex:{type:[String,Number],default:0},appendTo:P.E.appendTo,fitInputWidth:{type:[Boolean,Number],default:!0,validator(e){return(0,p.Lm)(e)||(0,p.Et)(e)}},suffixIcon:{type:Y.Ze,default:O.ArrowDown},...rn.bs,...(0,Nr.l)(["ariaLabel"])}),Gi=(0,f.b_)({data:Array,disabled:Boolean,hovering:Boolean,item:{type:(0,f.jq)(Object),required:!0},index:Number,style:Object,selected:Boolean,created:Boolean}),qi={[d.l4]:e=>!0,[d.YU]:e=>!0,"remove-tag":e=>!0,"visible-change":e=>!0,focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0},Yi={hover:e=>(0,p.Et)(e),select:(e,t)=>!0},Qi=Symbol("ElSelectV2Injection"),Zi=(0,i.pM)({props:Gi,emits:Yi,setup(e,{emit:t}){const n=(0,i.WQ)(Qi),r=(0,g.DU)("select"),{hoverItem:o,selectOptionClick:a}=Hi(e,{emit:t}),{getLabel:l}=(0,Xi.Y)(n.props),s=n.contentId;return{ns:r,contentId:s,hoverItem:o,selectOptionClick:a,getLabel:l}}});function Ji(e,t,n,r,o,a){return(0,i.uX)(),(0,i.CE)("li",{id:`${e.contentId}-${e.index}`,role:"option","aria-selected":e.selected,"aria-disabled":e.disabled||void 0,style:(0,u.Tr)(e.style),class:(0,u.C4)([e.ns.be("dropdown","item"),e.ns.is("selected",e.selected),e.ns.is("disabled",e.disabled),e.ns.is("created",e.created),e.ns.is("hovering",e.hovering)]),onMousemove:e.hoverItem,onClick:(0,M.D$)(e.selectOptionClick,["stop"])},[(0,i.RG)(e.$slots,"default",{item:e.item,index:e.index,disabled:e.disabled},()=>[(0,i.Lk)("span",null,(0,u.v_)(e.getLabel(e.item)),1)])],46,["id","aria-selected","aria-disabled","onMousemove","onClick"])}var es=(0,m.A)(Zi,[["render",Ji],["__file","option-item.vue"]]),ts=n(88500),ns=Number.isNaN||function(e){return"number"===typeof e&&e!==e};function rs(e,t){return e===t||!(!ns(e)||!ns(t))}function os(e,t){if(e.length!==t.length)return!1;for(var n=0;n{const e=(0,i.nI)(),t=e.proxy.$props;return(0,i.EW)(()=>{const e=(e,t,n)=>({});return t.perfMode?(0,ts.A)(e):as(e)})};var is=n(37063),ss=n(46697);const us=(0,f.Y8)({type:(0,f.jq)([Number,Function]),required:!0}),cs=(0,f.Y8)({type:Number}),ds=(0,f.Y8)({type:Number,default:2}),fs=(0,f.Y8)({type:String,values:["ltr","rtl"],default:"ltr"}),ps=(0,f.Y8)({type:Number,default:0}),vs=(0,f.Y8)({type:Number,required:!0}),hs=(0,f.Y8)({type:String,values:["horizontal","vertical"],default:ss.tT}),ms=(0,f.b_)({className:{type:String,default:""},containerElement:{type:(0,f.jq)([String,Object]),default:"div"},data:{type:(0,f.jq)(Array),default:()=>(0,gn.f)([])},direction:fs,height:{type:[String,Number],required:!0},innerElement:{type:[String,Object],default:"div"},innerProps:{type:(0,f.jq)(Object),default:()=>({})},style:{type:(0,f.jq)([Object,String,Array])},useIsScrolling:Boolean,width:{type:[Number,String],required:!1},perfMode:{type:Boolean,default:!0},scrollbarAlwaysOn:Boolean}),gs=(0,f.b_)({cache:ds,estimatedItemSize:cs,layout:hs,initScrollOffset:ps,total:vs,itemSize:us,...ms}),bs={type:Number,default:6},ys={type:Number,default:0},ws={type:Number,default:2},Rs=(0,f.b_)({columnCache:ds,columnWidth:us,estimatedColumnWidth:cs,estimatedRowHeight:cs,initScrollLeft:ps,initScrollTop:ps,itemKey:{type:(0,f.jq)(Function),default:({columnIndex:e,rowIndex:t})=>`${t}:${e}`},rowCache:ds,rowHeight:us,totalColumn:vs,totalRow:vs,hScrollbarSize:bs,vScrollbarSize:bs,scrollbarStartGap:ys,scrollbarEndGap:ws,role:String,...ms}),Cs=(0,f.b_)({alwaysOn:Boolean,class:String,layout:hs,total:vs,ratio:{type:Number,required:!0},clientSize:{type:Number,required:!0},scrollFrom:{type:Number,required:!0},scrollbarSize:bs,startGap:ys,endGap:ws,visible:Boolean}),xs=(e,t)=>ee===ss.zf||e===ss.rX||e===ss.bx,Es=e=>e===ss.rX;let _s=null;function Ss(e=!1){if(null===_s||e){const e=document.createElement("div"),t=e.style;t.width="50px",t.height="50px",t.overflow="scroll",t.direction="rtl";const n=document.createElement("div"),r=n.style;return r.width="100px",r.height="100px",e.appendChild(n),document.body.appendChild(e),e.scrollLeft>0?_s=ss.sr:(e.scrollLeft=1,_s=0===e.scrollLeft?ss.Cg:ss.KR),document.body.removeChild(e),_s}return _s}function Ms({move:e,size:t,bar:n},r){const o={},a=`translate${n.axis}(${e}px)`;return o[n.size]=t,o.transform=a,"horizontal"===r?o.height="100%":o.width="100%",o}var Ls=n(97017),As=n(15431);const Os=(0,i.pM)({name:"ElVirtualScrollBar",props:Cs,emits:["scroll","start-move","stop-move"],setup(e,{emit:t}){const n=(0,i.EW)(()=>e.startGap+e.endGap),r=(0,g.DU)("virtual-scrollbar"),o=(0,g.DU)("scrollbar"),a=(0,s.KR)(),l=(0,s.KR)();let u=null,c=null;const d=(0,s.Kh)({isDragging:!1,traveled:0}),f=(0,i.EW)(()=>Ls.rc[e.layout]),p=(0,i.EW)(()=>e.clientSize-(0,s.R1)(n)),v=(0,i.EW)(()=>({position:"absolute",width:`${ss.bx===e.layout?p.value:e.scrollbarSize}px`,height:`${ss.bx===e.layout?e.scrollbarSize:p.value}px`,[ss.N9[e.layout]]:"2px",right:"2px",bottom:"2px",borderRadius:"4px"})),h=(0,i.EW)(()=>{const t=e.ratio;if(t>=100)return Number.POSITIVE_INFINITY;if(t>=50)return t*p.value/100;const n=p.value/3;return Math.floor(Math.min(Math.max(t*p.value/100,ss.U4),n))}),m=(0,i.EW)(()=>{if(!Number.isFinite(h.value))return{display:"none"};const t=`${h.value}px`,n=Ms({bar:f.value,size:t,move:d.traveled},e.layout);return n}),b=(0,i.EW)(()=>Math.ceil(e.clientSize-h.value-(0,s.R1)(n))),y=()=>{window.addEventListener("mousemove",x),window.addEventListener("mouseup",C);const e=(0,s.R1)(l);e&&(c=document.onselectstart,document.onselectstart=()=>!1,e.addEventListener("touchmove",x,{passive:!0}),e.addEventListener("touchend",C))},w=()=>{window.removeEventListener("mousemove",x),window.removeEventListener("mouseup",C),document.onselectstart=c,c=null;const e=(0,s.R1)(l);e&&(e.removeEventListener("touchmove",x),e.removeEventListener("touchend",C))},R=e=>{e.stopImmediatePropagation(),e.ctrlKey||[1,2].includes(e.button)||(d.isDragging=!0,d[f.value.axis]=e.currentTarget[f.value.offset]-(e[f.value.client]-e.currentTarget.getBoundingClientRect()[f.value.direction]),t("start-move"),y())},C=()=>{d.isDragging=!1,d[f.value.axis]=0,t("stop-move"),w()},x=e=>{const{isDragging:n}=d;if(!n)return;if(!l.value||!a.value)return;const r=d[f.value.axis];if(!r)return;(0,As.V)(u);const o=-1*(a.value.getBoundingClientRect()[f.value.direction]-e[f.value.client]),i=l.value[f.value.offset]-r,s=o-i;u=(0,As.m)(()=>{d.traveled=Math.max(0,Math.min(s,b.value)),t("scroll",s,b.value)})},k=e=>{const n=Math.abs(e.target.getBoundingClientRect()[f.value.direction]-e[f.value.client]),r=l.value[f.value.offset]/2,o=n-r;d.traveled=Math.max(0,Math.min(o,b.value)),t("scroll",o,b.value)};return(0,i.wB)(()=>e.scrollFrom,e=>{d.isDragging||(d.traveled=Math.ceil(e*b.value))}),(0,i.xo)(()=>{w()}),()=>(0,i.h)("div",{role:"presentation",ref:a,class:[r.b(),e.class,(e.alwaysOn||d.isDragging)&&"always-on"],style:v.value,onMousedown:(0,M.D$)(k,["stop","prevent"]),onTouchstartPrevent:R},(0,i.h)("div",{ref:l,class:o.e("thumb"),style:m.value,onMousedown:R},[]))}}),Ts=({name:e,getOffset:t,getItemSize:n,getItemOffset:r,getEstimatedTotalSize:o,getStartIndexForOffset:a,getStopIndexForStartIndex:l,initCache:d,clearCache:f,validateProps:v})=>(0,i.pM)({name:null!=e?e:"ElVirtualList",props:gs,emits:[ss.xG,ss.k0],setup(e,{emit:h,expose:m}){v(e);const b=(0,i.nI)(),y=(0,g.DU)("vl"),w=(0,s.KR)(d(e,b)),R=ls(),C=(0,s.KR)(),x=(0,s.KR)(),k=(0,s.KR)(),E=(0,s.KR)({isScrolling:!1,scrollDir:"forward",scrollOffset:(0,p.Et)(e.initScrollOffset)?e.initScrollOffset:0,updateRequested:!1,isScrollbarDragging:!1,scrollbarAlwaysOn:e.scrollbarAlwaysOn}),_=(0,i.EW)(()=>{const{total:t,cache:n}=e,{isScrolling:r,scrollDir:o,scrollOffset:i}=(0,s.R1)(E);if(0===t)return[0,0,0,0];const u=a(e,i,(0,s.R1)(w)),c=l(e,u,i,(0,s.R1)(w)),d=r&&o!==ss.Wc?1:Math.max(1,n),f=r&&o!==ss.OX?1:Math.max(1,n);return[Math.max(0,u-d),Math.max(0,Math.min(t-1,c+f)),u,c]}),S=(0,i.EW)(()=>o(e,(0,s.R1)(w))),M=(0,i.EW)(()=>ks(e.layout)),L=(0,i.EW)(()=>[{position:"relative",["overflow-"+(M.value?"x":"y")]:"scroll",WebkitOverflowScrolling:"touch",willChange:"transform"},{direction:e.direction,height:(0,p.Et)(e.height)?`${e.height}px`:e.height,width:(0,p.Et)(e.width)?`${e.width}px`:e.width},e.style]),O=(0,i.EW)(()=>{const e=(0,s.R1)(S),t=(0,s.R1)(M);return{height:t?"100%":`${e}px`,pointerEvents:(0,s.R1)(E).isScrolling?"none":void 0,width:t?`${e}px`:"100%",margin:0,boxSizing:"border-box"}}),T=(0,i.EW)(()=>M.value?e.width:e.height),{onWheel:I}=(0,is.A)({atStartEdge:(0,i.EW)(()=>E.value.scrollOffset<=0),atEndEdge:(0,i.EW)(()=>E.value.scrollOffset>=S.value),layout:(0,i.EW)(()=>e.layout)},e=>{var t,n;null==(n=(t=k.value).onMouseUp)||n.call(t),B(Math.min(E.value.scrollOffset+e,S.value-T.value))});(0,c.MLh)(C,"wheel",I,{passive:!1});const N=()=>{const{total:t}=e;if(t>0){const[e,t,n,r]=(0,s.R1)(_);h(ss.xG,e,t,n,r)}const{scrollDir:n,scrollOffset:r,updateRequested:o}=(0,s.R1)(E);h(ss.k0,n,r,o)},W=e=>{const{clientHeight:t,scrollHeight:n,scrollTop:r}=e.currentTarget,o=(0,s.R1)(E);if(o.scrollOffset===r)return;const a=Math.max(0,Math.min(r,n-t));E.value={...o,isScrolling:!0,scrollDir:xs(o.scrollOffset,a),scrollOffset:a,updateRequested:!1},(0,i.dY)(V)},D=t=>{const{clientWidth:n,scrollLeft:r,scrollWidth:o}=t.currentTarget,a=(0,s.R1)(E);if(a.scrollOffset===r)return;const{direction:l}=e;let u=r;if(l===ss.rX)switch(Ss()){case ss.Cg:u=-r;break;case ss.sr:u=o-n-r;break}u=Math.max(0,Math.min(u,o-n)),E.value={...a,isScrolling:!0,scrollDir:xs(a.scrollOffset,u),scrollOffset:u,updateRequested:!1},(0,i.dY)(V)},P=e=>{(0,s.R1)(M)?D(e):W(e),N()},F=(e,t)=>{const n=(S.value-T.value)/t*e;B(Math.min(S.value-T.value,n))},B=e=>{e=Math.max(e,0),e!==(0,s.R1)(E).scrollOffset&&(E.value={...(0,s.R1)(E),scrollOffset:e,scrollDir:xs((0,s.R1)(E).scrollOffset,e),updateRequested:!0},(0,i.dY)(V))},z=(n,r=ss.YF)=>{const{scrollOffset:o}=(0,s.R1)(E);n=Math.max(0,Math.min(n,e.total-1)),B(t(e,n,r,o,(0,s.R1)(w)))},$=t=>{const{direction:o,itemSize:a,layout:l}=e,i=R.value(f&&a,f&&l,f&&o);let c;if((0,u.$3)(i,String(t)))c=i[t];else{const a=r(e,t,(0,s.R1)(w)),l=n(e,t,(0,s.R1)(w)),u=(0,s.R1)(M),d=o===ss.rX,f=u?a:0;i[t]=c={position:"absolute",left:d?void 0:`${f}px`,right:d?`${f}px`:void 0,top:u?0:`${a}px`,height:u?"100%":`${l}px`,width:u?`${l}px`:"100%"}}return c},V=()=>{E.value.isScrolling=!1,(0,i.dY)(()=>{R.value(-1,null,null)})},j=()=>{const e=C.value;e&&(e.scrollTop=0)};(0,i.sV)(()=>{if(!A.oc)return;const{initScrollOffset:t}=e,n=(0,s.R1)(C);(0,p.Et)(t)&&n&&((0,s.R1)(M)?n.scrollLeft=t:n.scrollTop=t),N()}),(0,i.$u)(()=>{const{direction:t,layout:n}=e,{scrollOffset:r,updateRequested:o}=(0,s.R1)(E),a=(0,s.R1)(C);if(o&&a)if(n===ss.bx)if(t===ss.rX)switch(Ss()){case ss.Cg:a.scrollLeft=-r;break;case ss.KR:a.scrollLeft=r;break;default:{const{clientWidth:e,scrollWidth:t}=a;a.scrollLeft=t-e-r;break}}else a.scrollLeft=r;else a.scrollTop=r}),(0,i.n)(()=>{(0,s.R1)(C).scrollTop=(0,s.R1)(E).scrollOffset});const K={ns:y,clientSize:T,estimatedTotalSize:S,windowStyle:L,windowRef:C,innerRef:x,innerStyle:O,itemsToRender:_,scrollbarRef:k,states:E,getItemStyle:$,onScroll:P,onScrollbarScroll:F,onWheel:I,scrollTo:B,scrollToItem:z,resetScrollTop:j};return m({windowRef:C,innerRef:x,getItemStyleCache:R,scrollTo:B,scrollToItem:z,resetScrollTop:j,states:E}),K},render(e){var t;const{$slots:n,className:r,clientSize:o,containerElement:a,data:l,getItemStyle:s,innerElement:c,itemsToRender:d,innerStyle:f,layout:p,total:v,onScroll:h,onScrollbarScroll:m,states:g,useIsScrolling:b,windowStyle:y,ns:w}=e,[R,C]=d,x=(0,i.$y)(a),k=(0,i.$y)(c),E=[];if(v>0)for(let u=R;u<=C;u++)E.push((0,i.h)(i.FK,{key:u},null==(t=n.default)?void 0:t.call(n,{data:l,index:u,isScrolling:b?g.isScrolling:void 0,style:s(u)})));const _=[(0,i.h)(k,(0,i.v6)(e.innerProps,{style:f,ref:"innerRef"}),(0,u.Kg)(k)?E:{default:()=>E})],S=(0,i.h)(Os,{ref:"scrollbarRef",clientSize:o,layout:p,onScroll:m,ratio:100*o/this.estimatedTotalSize,scrollFrom:g.scrollOffset/(this.estimatedTotalSize-o),total:v,alwaysOn:g.scrollbarAlwaysOn}),M=(0,i.h)(x,{class:[w.e("window"),r],style:y,onScroll:h,ref:"windowRef",key:0},(0,u.Kg)(x)?[_]:{default:()=>[_]});return(0,i.h)("div",{key:0,class:[w.e("wrapper"),g.scrollbarAlwaysOn?"always-on":""]},[M,S])}}),Is=Ts({name:"ElFixedSizeList",getItemOffset:({itemSize:e},t)=>t*e,getItemSize:({itemSize:e})=>e,getEstimatedTotalSize:({total:e,itemSize:t})=>t*e,getOffset:({height:e,total:t,itemSize:n,layout:r,width:o},a,l,i)=>{const s=ks(r)?o:e;const u=Math.max(0,t*n-s),c=Math.min(u,a*n),d=Math.max(0,(a+1)*n-s);switch(l===ss.UZ&&(l=i>=d-s&&i<=c+s?ss.YF:ss.v_),l){case ss.zj:return c;case ss.Y5:return d;case ss.v_:{const e=Math.round(d+(c-d)/2);return eu+Math.floor(s/2)?u:e}case ss.YF:default:return i>=d&&i<=c?i:iMath.max(0,Math.min(e-1,Math.floor(n/t))),getStopIndexForStartIndex:({height:e,total:t,itemSize:n,layout:r,width:o},a,l)=>{const i=a*n,s=ks(r)?o:e,u=Math.ceil((s+l-i)/n);return Math.max(0,Math.min(t-1,a+u-1))},initCache(){},clearCache:!0,validateProps(){}}),Ns=(e,t,n)=>{const{itemSize:r}=e,{items:o,lastVisitedIndex:a}=n;if(t>a){let e=0;if(a>=0){const t=o[a];e=t.offset+t.size}for(let n=a+1;n<=t;n++){const t=r(n);o[n]={offset:e,size:t},e+=t}n.lastVisitedIndex=t}return o[t]},Ws=(e,t,n)=>{const{items:r,lastVisitedIndex:o}=t,a=o>0?r[o].offset:0;return a>=n?Ds(e,t,0,o,n):Ps(e,t,Math.max(0,o),n)},Ds=(e,t,n,r,o)=>{while(n<=r){const a=n+Math.floor((r-n)/2),l=Ns(e,a,t).offset;if(l===o)return a;lo&&(r=a-1)}return Math.max(0,n-1)},Ps=(e,t,n,r)=>{const{total:o}=e;let a=1;while(n{let o=0;if(r>=e&&(r=e-1),r>=0){const e=t[r];o=e.offset+e.size}const a=e-r-1,l=a*n;return o+l},Bs=Ts({name:"ElDynamicSizeList",getItemOffset:(e,t,n)=>Ns(e,t,n).offset,getItemSize:(e,t,{items:n})=>n[t].size,getEstimatedTotalSize:Fs,getOffset:(e,t,n,r,o)=>{const{height:a,layout:l,width:i}=e,s=ks(l)?i:a,u=Ns(e,t,o),c=Fs(e,o),d=Math.max(0,Math.min(c-s,u.offset)),f=Math.max(0,u.offset-s+u.size);switch(n===ss.UZ&&(n=r>=f-s&&r<=d+s?ss.YF:ss.v_),n){case ss.zj:return d;case ss.Y5:return f;case ss.v_:return Math.round(f+(d-f)/2);case ss.YF:default:return r>=f&&r<=d?r:rWs(e,n,t),getStopIndexForStartIndex:(e,t,n,r)=>{const{height:o,total:a,layout:l,width:i}=e,s=ks(l)?i:o,u=Ns(e,t,r),c=n+s;let d=u.offset+u.size,f=t;while(f{var o,a;n.lastVisitedIndex=Math.min(n.lastVisitedIndex,e-1),null==(o=t.exposed)||o.getItemStyleCache(-1),r&&(null==(a=t.proxy)||a.$forceUpdate())}};return n},clearCache:!1,validateProps:({itemSize:e})=>{0}}),zs={loading:Boolean,data:{type:Array,required:!0},hoveringIndex:Number,width:Number,id:String,ariaLabel:String};var $s=(0,i.pM)({name:"ElSelectDropdown",props:zs,setup(e,{slots:t,expose:n}){const r=(0,i.WQ)(Qi),o=(0,g.DU)("select"),{getLabel:a,getValue:l,getDisabled:c}=(0,Xi.Y)(r.props),d=(0,s.KR)([]),f=(0,s.KR)(),v=(0,i.EW)(()=>e.data.length);(0,i.wB)(()=>v.value,()=>{var e,t;null==(t=null==(e=r.tooltipRef.value)?void 0:e.updatePopper)||t.call(e)});const h=(0,i.EW)(()=>(0,p.b0)(r.props.estimatedOptionHeight)),m=(0,i.EW)(()=>h.value?{itemSize:r.props.itemHeight}:{estimatedSize:r.props.estimatedOptionHeight,itemSize:e=>d.value[e]}),b=(e=[],t)=>{const{props:{valueKey:n}}=r;return(0,u.Gv)(t)?e&&e.some(e=>(0,s.ux)((0,$i.A)(e,n))===(0,$i.A)(t,n)):e.includes(t)},y=(e,t)=>{if((0,u.Gv)(t)){const{valueKey:n}=r.props;return(0,$i.A)(e,n)===(0,$i.A)(t,n)}return e===t},w=(e,t)=>r.props.multiple?b(e,l(t)):y(e,l(t)),R=(e,t)=>{const{disabled:n,multiple:o,multipleLimit:a}=r.props;return n||!t&&!!o&&a>0&&e.length>=a},C=t=>e.hoveringIndex===t,x=e=>{const t=f.value;t&&t.scrollToItem(e)},k=()=>{const e=f.value;e&&e.resetScrollTop()},E={listRef:f,isSized:h,isItemDisabled:R,isItemHovering:C,isItemSelected:w,scrollToItem:x,resetScrollTop:k};n(E);const _=e=>{const{index:n,data:o,style:l}=e,u=(0,s.R1)(h),{itemSize:d,estimatedSize:f}=(0,s.R1)(m),{modelValue:p}=r.props,{onSelect:v,onHover:g}=r,b=o[n];if("Group"===b.type)return(0,i.bF)(Ki,{item:b,style:l,height:u?d:f},null);const y=w(p,b),x=R(p,y),k=C(n);return(0,i.bF)(es,(0,i.v6)(e,{selected:y,disabled:c(b)||x,created:!!b.created,hovering:k,item:b,onSelect:v,onHover:g}),{default:e=>{var n;return(null==(n=t.default)?void 0:n.call(t,e))||(0,i.bF)("span",null,[a(b)])}})},{onKeyboardNavigate:S,onKeyboardSelect:M}=r,L=()=>{S("forward")},O=()=>{S("backward")},T=e=>{const t=(0,V.CG)(e),{tab:n,esc:r,down:o,up:a,enter:l,numpadEnter:i}=j.R;switch([r,o,a,l,i].includes(t)&&(e.preventDefault(),e.stopPropagation()),t){case n:case r:break;case o:L();break;case a:O();break;case l:case i:M();break}};return()=>{var n,a,l,u;const{data:c,width:d}=e,{height:p,multiple:v,scrollbarAlwaysOn:g}=r.props,b=(0,i.EW)(()=>!!A.un||g),y=(0,s.R1)(h)?Is:Bs;return(0,i.bF)("div",{class:[o.b("dropdown"),o.is("multiple",v)],style:{width:`${d}px`}},[null==(n=t.header)?void 0:n.call(t),(null==(a=t.loading)?void 0:a.call(t))||(null==(l=t.empty)?void 0:l.call(t))||(0,i.bF)(y,(0,i.v6)({ref:f},(0,s.R1)(m),{className:o.be("dropdown","list"),scrollbarAlwaysOn:b.value,data:c,height:p,width:d,total:c.length,innerElement:"ul",innerProps:{id:e.id,role:"listbox","aria-label":e.ariaLabel,"aria-orientation":"vertical"},onKeydown:T}),{default:e=>(0,i.bF)(_,e,null)}),null==(u=t.footer)?void 0:u.call(t)])}}}),Vs=n(42762);n(17642),n(58004),n(33853),n(45876),n(32475),n(15024),n(31698);function js(e,t){const{aliasProps:n,getLabel:r,getValue:o}=(0,Xi.Y)(e),a=(0,s.KR)(0),l=(0,s.KR)(),u=(0,i.EW)(()=>e.allowCreate&&e.filterable);function c(n){const o=e=>r(e)===n;return e.options&&e.options.some(o)||t.createdOptions.some(o)}function d(t){u.value&&(e.multiple&&t.created?a.value++:l.value=t)}function f(o){if(u.value)if(o&&o.length>0){if(c(o))return void(t.createdOptions=t.createdOptions.filter(e=>r(e)!==t.previousQuery));const e={[n.value.value]:o,[n.value.label]:o,created:!0,[n.value.disabled]:!1};t.createdOptions.length>=a.value?t.createdOptions[a.value]=e:t.createdOptions.push(e)}else if(e.multiple)t.createdOptions.length=a.value;else{const e=l.value;t.createdOptions.length=0,e&&e.created&&t.createdOptions.push(e)}}function p(n){if(!u.value||!n||!n.created||n.created&&e.reserveKeyword&&t.inputValue===r(n))return;const l=t.createdOptions.findIndex(e=>o(e)===o(n));~l&&(t.createdOptions.splice(l,1),a.value--)}function v(){u.value&&(t.createdOptions.length=0,a.value=0)}return(0,i.wB)(()=>e.options,e=>{const n=new Set(e.map(e=>r(e)));t.createdOptions=t.createdOptions.filter(e=>!n.has(r(e)))}),{createNewOption:f,removeNewOption:p,selectNewOption:d,clearAllNewOption:v}}var Ks=n(4642);const Hs=(e,t)=>{const{t:n}=(0,Ie.Ym)(),r=(0,g.DU)("select"),o=(0,g.DU)("input"),{form:a,formItem:l}=(0,un.j)(),{inputId:f}=(0,un.W)(e,{formItemContext:l}),{aliasProps:v,getLabel:h,getValue:m,getDisabled:b,getOptions:y}=(0,Xi.Y)(e),{valueOnClear:R,isEmptyValue:C}=(0,rn.fQ)(e),x=(0,s.Kh)({inputValue:"",cachedOptions:[],createdOptions:[],hoveringIndex:-1,inputHovering:!1,selectionWidth:0,collapseItemWidth:0,previousQuery:null,previousValue:void 0,selectedLabel:"",menuVisibleOnFocus:!1,isBeforeHide:!1}),k=(0,s.KR)(-1),E=(0,s.KR)(!1),_=(0,s.KR)(),S=(0,s.KR)(),M=(0,s.KR)(),L=(0,s.KR)(),O=(0,s.KR)(),T=(0,s.KR)(),I=(0,s.KR)(),N=(0,s.KR)(),W=(0,s.KR)(),D=(0,s.KR)(),{isComposing:P,handleCompositionStart:F,handleCompositionEnd:B,handleCompositionUpdate:$}=(0,cn.o)({afterComposition:e=>st(e)}),K=(0,z.CB)(),{wrapperRef:H,isFocused:X,handleBlur:U}=(0,dn.K)(O,{disabled:K,afterFocus(){e.automaticDropdown&&!Z.value&&(Z.value=!0,x.menuVisibleOnFocus=!0)},beforeBlur(e){var t,n;return(null==(t=M.value)?void 0:t.isFocusInsideContent(e))||(null==(n=L.value)?void 0:n.isFocusInsideContent(e))},afterBlur(){var t;Z.value=!1,x.menuVisibleOnFocus=!1,e.validateEvent&&(null==(t=null==l?void 0:l.validate)||t.call(l,"blur").catch(e=>(0,w.U)(e)))}}),G=(0,i.EW)(()=>fe("")),q=(0,i.EW)(()=>!e.loading&&(e.options.length>0||x.createdOptions.length>0)),Q=(0,s.KR)([]),Z=(0,s.KR)(!1),J=(0,i.EW)(()=>{var e;return null!=(e=null==a?void 0:a.statusIcon)&&e}),ee=(0,i.EW)(()=>{const t=Q.value.length*e.itemHeight;return t>e.height?e.height:t}),te=(0,i.EW)(()=>e.multiple?(0,u.cy)(e.modelValue)&&e.modelValue.length>0:!C(e.modelValue)),ne=(0,i.EW)(()=>e.clearable&&!K.value&&te.value&&(X.value||x.inputHovering)),re=(0,i.EW)(()=>e.remote&&e.filterable&&!e.remoteShowSuffix?"":e.suffixIcon),oe=(0,i.EW)(()=>re.value&&r.is("reverse",Z.value)),ae=(0,i.EW)(()=>(null==l?void 0:l.validateState)||""),le=(0,i.EW)(()=>{if(ae.value)return Y.vK[ae.value]}),ie=(0,i.EW)(()=>e.remote?e.debounce:0),se=(0,i.EW)(()=>e.remote&&!x.inputValue&&!q.value),ue=(0,i.EW)(()=>e.loading?e.loadingText||n("el.select.loading"):e.filterable&&x.inputValue&&q.value&&0===Q.value.length?e.noMatchText||n("el.select.noMatch"):q.value?null:e.noDataText||n("el.select.noData")),ce=(0,i.EW)(()=>e.filterable&&(0,u.Tn)(e.filterMethod)),de=(0,i.EW)(()=>e.filterable&&e.remote&&(0,u.Tn)(e.remoteMethod)),fe=t=>{const n=new RegExp((0,Ks.qr)(t),"i"),r=e=>!(!ce.value&&!de.value)||(!t||n.test(h(e)||""));return e.loading?[]:[...x.createdOptions,...e.options].reduce((t,n)=>{const o=y(n);if((0,u.cy)(o)){const e=o.filter(r);e.length>0&&t.push({label:h(n),type:"Group"},...e)}else(e.remote||r(n))&&t.push(n);return t},[])},pe=()=>{Q.value=fe(x.inputValue)},ve=(0,i.EW)(()=>{const e=new Map;return G.value.forEach((t,n)=>{e.set(Ke(m(t)),{option:t,index:n})}),e}),he=(0,i.EW)(()=>{const e=new Map;return Q.value.forEach((t,n)=>{e.set(Ke(m(t)),{option:t,index:n})}),e}),me=(0,i.EW)(()=>Q.value.every(e=>b(e))),ge=(0,z.NV)(),be=(0,i.EW)(()=>"small"===ge.value?"small":"default"),ye=()=>{var t;if((0,p.Et)(e.fitInputWidth))return void(k.value=e.fitInputWidth);const n=(null==(t=_.value)?void 0:t.offsetWidth)||200;!e.fitInputWidth&&q.value?(0,i.dY)(()=>{k.value=Math.max(n,we())}):k.value=n},we=()=>{var e,t;const n=document.createElement("canvas"),o=n.getContext("2d"),a=r.be("dropdown","item"),l=(null==(t=null==(e=N.value)?void 0:e.listRef)?void 0:t.innerRef)||document,i=l.querySelector(`.${a}`);if(null===i||null===o)return 0;const s=getComputedStyle(i),u=Number.parseFloat(s.paddingLeft)+Number.parseFloat(s.paddingRight);o.font=`bold ${s.font.replace(new RegExp(`\\b${s.fontWeight}\\b`),"")}`;const c=Q.value.reduce((e,t)=>{const n=o.measureText(h(t));return Math.max(n.width,e)},0);return c+u},Re=()=>{if(!S.value)return 0;const e=window.getComputedStyle(S.value);return Number.parseFloat(e.gap||"6px")},Ce=(0,i.EW)(()=>{const t=Re(),n=e.filterable?t+sl.R:0,r=D.value&&1===e.maxCollapseTags?x.selectionWidth-x.collapseItemWidth-t-n:x.selectionWidth-n;return{maxWidth:`${r}px`}}),xe=(0,i.EW)(()=>({maxWidth:`${x.selectionWidth}px`})),ke=(0,i.EW)(()=>(0,u.cy)(e.modelValue)?0===e.modelValue.length&&!x.inputValue:!e.filterable||!x.inputValue),Ee=(0,i.EW)(()=>{var t;const r=null!=(t=e.placeholder)?t:n("el.select.placeholder");return e.multiple||!te.value?r:x.selectedLabel}),_e=(0,i.EW)(()=>{var e,t;return null==(t=null==(e=M.value)?void 0:e.popperRef)?void 0:t.contentRef}),Se=(0,i.EW)(()=>{if(e.multiple){const t=e.modelValue.length;if(t>0&&he.value.has(e.modelValue[t-1])){const{index:n}=he.value.get(e.modelValue[t-1]);return n}}else if(!C(e.modelValue)&&he.value.has(e.modelValue)){const{index:t}=he.value.get(e.modelValue);return t}return-1}),Me=(0,i.EW)({get(){return Z.value&&(e.loading||!se.value)&&(!E.value||!(0,p.Im)(x.previousQuery))},set(e){Z.value=e}}),Le=(0,i.EW)(()=>e.multiple?e.collapseTags?x.cachedOptions.slice(0,e.maxCollapseTags):x.cachedOptions:[]),Ae=(0,i.EW)(()=>e.multiple&&e.collapseTags?x.cachedOptions.slice(e.maxCollapseTags):[]),{createNewOption:Oe,removeNewOption:Te,selectNewOption:Ne,clearAllNewOption:We}=js(e,x),De=t=>{var n;K.value||e.filterable&&Z.value&&t&&!(null==(n=I.value)?void 0:n.contains(t.target))||(x.menuVisibleOnFocus?x.menuVisibleOnFocus=!1:Z.value=!Z.value)},Pe=()=>{x.inputValue.length>0&&!Z.value&&(Z.value=!0),Oe(x.inputValue),(0,i.dY)(()=>{Be(x.inputValue)})},Fe=(0,A.xD)(()=>{Pe(),E.value=!1},ie),Be=t=>{x.previousQuery===t||P.value||(x.previousQuery=t,e.filterable&&(0,u.Tn)(e.filterMethod)?e.filterMethod(t):e.filterable&&e.remote&&(0,u.Tn)(e.remoteMethod)&&e.remoteMethod(t),e.defaultFirstOption&&(e.filterable||e.remote)&&Q.value.length?(0,i.dY)(ze):(0,i.dY)(it))},ze=()=>{const e=Q.value.filter(e=>!e.disabled&&"Group"!==e.type),t=e.find(e=>e.created),n=e[0];x.hoveringIndex=je(Q.value,t||n)},$e=n=>{(0,gt.A)(e.modelValue,n)||t(d.YU,n)},Ve=n=>{t(d.l4,n),$e(n),x.previousValue=e.multiple?String(n):n,(0,i.dY)(()=>{if(e.multiple&&(0,u.cy)(e.modelValue)){const t=x.cachedOptions.slice(),n=e.modelValue.map(e=>ft(e,t));(0,gt.A)(x.cachedOptions,n)||(x.cachedOptions=n)}else vt(!0)})},je=(t=[],n)=>{if(!(0,u.Gv)(n))return t.indexOf(n);const r=e.valueKey;let o=-1;return t.some((e,t)=>(0,$i.A)(e,r)===(0,$i.A)(n,r)&&(o=t,!0)),o},Ke=t=>(0,u.Gv)(t)?(0,$i.A)(t,e.valueKey):t,He=()=>{ye()},Xe=()=>{x.selectionWidth=Number.parseFloat(window.getComputedStyle(S.value).width)},Ue=()=>{x.collapseItemWidth=D.value.getBoundingClientRect().width},Ge=()=>{var e,t;null==(t=null==(e=M.value)?void 0:e.updatePopper)||t.call(e)},qe=()=>{var e,t;null==(t=null==(e=L.value)?void 0:e.updatePopper)||t.call(e)},Ye=t=>{const n=m(t);if(e.multiple){let r=e.modelValue.slice();const o=je(r,n);o>-1?(r=[...r.slice(0,o),...r.slice(o+1)],x.cachedOptions.splice(o,1),Te(t)):(e.multipleLimit<=0||r.length{let o=e.modelValue.slice();const a=je(o,m(r));a>-1&&!K.value&&(o=[...e.modelValue.slice(0,a),...e.modelValue.slice(a+1)],x.cachedOptions.splice(a,1),Ve(o),t("remove-tag",m(r)),Te(r)),n.stopPropagation(),Ze()},Ze=()=>{var e;null==(e=O.value)||e.focus()},Je=()=>{var e;if(Z.value)return Z.value=!1,void(0,i.dY)(()=>{var e;return null==(e=O.value)?void 0:e.blur()});null==(e=O.value)||e.blur()},et=()=>{x.inputValue.length>0?x.inputValue="":Z.value=!1},tt=e=>(0,Vs.A)(e,e=>!x.cachedOptions.some(t=>m(t)===e&&b(t))),nt=n=>{const r=(0,V.CG)(n);if(e.multiple&&r!==j.R.delete&&0===x.inputValue.length){n.preventDefault();const r=e.modelValue.slice(),o=tt(r);if(o<0)return;const a=r[o];r.splice(o,1);const l=x.cachedOptions[o];x.cachedOptions.splice(o,1),Te(l),Ve(r),t("remove-tag",a)}},rt=()=>{let n;n=(0,u.cy)(e.modelValue)?[]:R.value,x.selectedLabel="",Z.value=!1,Ve(n),t("clear"),We(),Ze()},ot=(e,t=void 0)=>{const n=Q.value;if(!["forward","backward"].includes(e)||K.value||n.length<=0||me.value||P.value)return;if(!Z.value)return De();(0,p.b0)(t)&&(t=x.hoveringIndex);let r=-1;"forward"===e?(r=t+1,r>=n.length&&(r=0)):"backward"===e&&(r=t-1,(r<0||r>=n.length)&&(r=n.length-1));const o=n[r];if(b(o)||"Group"===o.type)return ot(e,r);x.hoveringIndex=r,dt(r)},at=()=>{if(!Z.value)return De();~x.hoveringIndex&&Q.value[x.hoveringIndex]&&Ye(Q.value[x.hoveringIndex])},lt=e=>{x.hoveringIndex=null!=e?e:-1},it=()=>{if(e.multiple){const t=e.modelValue.length;if(t>0){const n=e.modelValue[t-1];x.hoveringIndex=Q.value.findIndex(e=>Ke(n)===Ke(m(e)))}else x.hoveringIndex=-1}else x.hoveringIndex=Q.value.findIndex(t=>Ke(m(t))===Ke(e.modelValue))},st=t=>{if(x.inputValue=t.target.value,!e.remote)return Pe();E.value=!0,Fe()},ut=e=>{if(Z.value=!1,X.value){const t=new FocusEvent("blur",e);U(t)}},ct=()=>(x.isBeforeHide=!1,(0,i.dY)(()=>{~Se.value&&dt(Se.value)})),dt=e=>{N.value.scrollToItem(e)},ft=(e,t)=>{const n=Ke(e);if(ve.value.has(n)){const{option:e}=ve.value.get(n);return e}if(t&&t.length){const e=t.find(e=>Ke(m(e))===n);if(e)return e}return{[v.value.value]:e,[v.value.label]:e}},pt=e=>{var t,n;return null!=(n=null==(t=ve.value.get(m(e)))?void 0:t.index)?n:-1},vt=(t=!1)=>{if(e.multiple)if(e.modelValue.length>0){const t=x.cachedOptions.slice();x.cachedOptions.length=0,x.previousValue=e.modelValue.toString();for(const n of e.modelValue){const e=ft(n,t);x.cachedOptions.push(e)}}else x.cachedOptions=[],x.previousValue=void 0;else if(te.value){x.previousValue=e.modelValue;const n=Q.value,r=n.findIndex(t=>Ke(m(t))===Ke(e.modelValue));~r?x.selectedLabel=h(n[r]):x.selectedLabel&&!t||(x.selectedLabel=Ke(e.modelValue))}else x.selectedLabel="",x.previousValue=void 0;We(),ye()};let ht;return(0,i.wB)(()=>e.fitInputWidth,()=>{ye()}),(0,i.wB)(Z,t=>{t?(e.persistent||ye(),Be("")):(x.inputValue="",x.previousQuery=null,x.isBeforeHide=!0,Oe(""))}),(0,i.wB)(()=>e.modelValue,(t,n)=>{var r;const o=!t||(0,u.cy)(t)&&0===t.length;(o||e.multiple&&!(0,gt.A)(t.toString(),x.previousValue)||!e.multiple&&Ke(t)!==Ke(x.previousValue))&&vt(!0),!(0,gt.A)(t,n)&&e.validateEvent&&(null==(r=null==l?void 0:l.validate)||r.call(l,"change").catch(e=>(0,w.U)(e)))},{deep:!0}),(0,i.wB)(()=>e.options,()=>{const e=O.value;(!e||e&&document.activeElement!==e)&&vt()},{deep:!0,flush:"post"}),(0,i.wB)(()=>Q.value,()=>(ye(),N.value&&(0,i.dY)(N.value.resetScrollTop))),(0,i.nT)(()=>{x.isBeforeHide||pe()}),(0,i.nT)(()=>{const{valueKey:t,options:n}=e,r=new Map;for(const e of n){const n=m(e);let o=n;if((0,u.Gv)(o)&&(o=(0,$i.A)(n,t)),r.get(o)){(0,w.U)("ElSelectV2","The option values you provided seem to be duplicated, which may cause some problems, please check.");break}r.set(o,!0)}}),(0,i.sV)(()=>{vt()}),(0,c.wYm)(_,He),(0,c.wYm)(S,Xe),(0,c.wYm)(H,Ge),(0,c.wYm)(W,qe),(0,c.wYm)(D,Ue),(0,i.wB)(()=>Me.value,e=>{e?ht=(0,c.wYm)(N,Ge).stop:(null==ht||ht(),ht=void 0),t("visible-change",e)}),{inputId:f,collapseTagSize:be,currentPlaceholder:Ee,expanded:Z,emptyText:ue,popupHeight:ee,debounce:ie,allOptions:G,allOptionsValueMap:ve,filteredOptions:Q,iconComponent:re,iconReverse:oe,tagStyle:Ce,collapseTagStyle:xe,popperSize:k,dropdownMenuVisible:Me,hasModelValue:te,shouldShowPlaceholder:ke,selectDisabled:K,selectSize:ge,needStatusIcon:J,showClearBtn:ne,states:x,isFocused:X,nsSelect:r,nsInput:o,inputRef:O,menuRef:N,tagMenuRef:W,tooltipRef:M,tagTooltipRef:L,selectRef:_,wrapperRef:H,selectionRef:S,prefixRef:T,suffixRef:I,collapseItemRef:D,popperRef:_e,validateState:ae,validateIcon:le,showTagList:Le,collapseTagList:Ae,debouncedOnInputChange:Fe,deleteTag:Qe,getLabel:h,getValue:m,getDisabled:b,getValueKey:Ke,getIndex:pt,handleClear:rt,handleClickOutside:ut,handleDel:nt,handleEsc:et,focus:Ze,blur:Je,handleMenuEnter:ct,handleResize:He,resetSelectionWidth:Xe,updateTooltip:Ge,updateTagTooltip:qe,updateOptions:pe,toggleMenu:De,scrollTo:dt,onInput:st,onKeyboardNavigate:ot,onKeyboardSelect:at,onSelect:Ye,onHover:lt,handleCompositionStart:F,handleCompositionEnd:B,handleCompositionUpdate:$}},Xs=(0,i.pM)({name:"ElSelectV2",components:{ElSelectMenu:$s,ElTag:Jt.u,ElTooltip:N.R7,ElIcon:W.tk},directives:{ClickOutside:sn.A},props:Ui,emits:qi,setup(e,{emit:t}){const n=(0,i.EW)(()=>{const{modelValue:t,multiple:n}=e,r=n?[]:void 0;return(0,u.cy)(t)?n?t:r:n?r:t}),r=Hs((0,s.Kh)({...(0,s.QW)(e),modelValue:n}),t),{calculatorRef:o,inputStyle:a}=(0,ll.v)(),l=(0,$.Bi)();(0,i.Gt)(Qi,{props:(0,s.Kh)({...(0,s.QW)(e),height:r.popupHeight,modelValue:n}),expanded:r.expanded,tooltipRef:r.tooltipRef,contentId:l,onSelect:r.onSelect,onHover:r.onHover,onKeyboardNavigate:r.onKeyboardNavigate,onKeyboardSelect:r.onKeyboardSelect});const c=(0,i.EW)(()=>e.multiple?r.states.cachedOptions.map(e=>r.getLabel(e)):r.states.selectedLabel);return{...r,modelValue:n,selectedLabel:c,calculatorRef:o,inputStyle:a,contentId:l,BORDER_HORIZONTAL_WIDTH:sl.f}}});function Us(e,t,n,r,o,a){const l=(0,i.g2)("el-tag"),s=(0,i.g2)("el-tooltip"),c=(0,i.g2)("el-icon"),d=(0,i.g2)("el-select-menu"),f=(0,i.gN)("click-outside");return(0,i.bo)(((0,i.uX)(),(0,i.CE)("div",{ref:"selectRef",class:(0,u.C4)([e.nsSelect.b(),e.nsSelect.m(e.selectSize)]),onMouseenter:t=>e.states.inputHovering=!0,onMouseleave:t=>e.states.inputHovering=!1},[(0,i.bF)(s,{ref:"tooltipRef",visible:e.dropdownMenuVisible,teleported:e.teleported,"popper-class":[e.nsSelect.e("popper"),e.popperClass],"popper-style":e.popperStyle,"gpu-acceleration":!1,"stop-popper-mouse-event":!1,"popper-options":e.popperOptions,"fallback-placements":e.fallbackPlacements,effect:e.effect,placement:e.placement,pure:"",transition:`${e.nsSelect.namespace.value}-zoom-in-top`,trigger:"click",persistent:e.persistent,"append-to":e.appendTo,"show-arrow":e.showArrow,offset:e.offset,onBeforeShow:e.handleMenuEnter,onHide:t=>e.states.isBeforeHide=!1},{default:(0,i.k6)(()=>{var t,n;return[(0,i.Lk)("div",{ref:"wrapperRef",class:(0,u.C4)([e.nsSelect.e("wrapper"),e.nsSelect.is("focused",e.isFocused),e.nsSelect.is("hovering",e.states.inputHovering),e.nsSelect.is("filterable",e.filterable),e.nsSelect.is("disabled",e.selectDisabled)]),onClick:(0,M.D$)(e.toggleMenu,["prevent"])},[e.$slots.prefix?((0,i.uX)(),(0,i.CE)("div",{key:0,ref:"prefixRef",class:(0,u.C4)(e.nsSelect.e("prefix"))},[(0,i.RG)(e.$slots,"prefix")],2)):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",{ref:"selectionRef",class:(0,u.C4)([e.nsSelect.e("selection"),e.nsSelect.is("near",e.multiple&&!e.$slots.prefix&&!!e.modelValue.length)])},[e.multiple?(0,i.RG)(e.$slots,"tag",{key:0,data:e.states.cachedOptions,deleteTag:e.deleteTag,selectDisabled:e.selectDisabled},()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.showTagList,t=>((0,i.uX)(),(0,i.CE)("div",{key:e.getValueKey(e.getValue(t)),class:(0,u.C4)(e.nsSelect.e("selected-item"))},[(0,i.bF)(l,{closable:!e.selectDisabled&&!e.getDisabled(t),size:e.collapseTagSize,type:e.tagType,effect:e.tagEffect,"disable-transitions":"",style:(0,u.Tr)(e.tagStyle),onClose:n=>e.deleteTag(n,t)},{default:(0,i.k6)(()=>[(0,i.Lk)("span",{class:(0,u.C4)(e.nsSelect.e("tags-text"))},[(0,i.RG)(e.$slots,"label",{index:e.getIndex(t),label:e.getLabel(t),value:e.getValue(t)},()=>[(0,i.eW)((0,u.v_)(e.getLabel(t)),1)])],2)]),_:2},1032,["closable","size","type","effect","style","onClose"])],2))),128)),e.collapseTags&&e.modelValue.length>e.maxCollapseTags?((0,i.uX)(),(0,i.Wv)(s,{key:0,ref:"tagTooltipRef",disabled:e.dropdownMenuVisible||!e.collapseTagsTooltip,"fallback-placements":["bottom","top","right","left"],effect:e.effect,placement:"bottom","popper-class":e.popperClass,"popper-style":e.popperStyle,teleported:e.teleported},{default:(0,i.k6)(()=>[(0,i.Lk)("div",{ref:"collapseItemRef",class:(0,u.C4)(e.nsSelect.e("selected-item"))},[(0,i.bF)(l,{closable:!1,size:e.collapseTagSize,type:e.tagType,effect:e.tagEffect,style:(0,u.Tr)(e.collapseTagStyle),"disable-transitions":""},{default:(0,i.k6)(()=>[(0,i.Lk)("span",{class:(0,u.C4)(e.nsSelect.e("tags-text"))}," + "+(0,u.v_)(e.modelValue.length-e.maxCollapseTags),3)]),_:1},8,["size","type","effect","style"])],2)]),content:(0,i.k6)(()=>[(0,i.Lk)("div",{ref:"tagMenuRef",class:(0,u.C4)(e.nsSelect.e("selection"))},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.collapseTagList,t=>((0,i.uX)(),(0,i.CE)("div",{key:e.getValueKey(e.getValue(t)),class:(0,u.C4)(e.nsSelect.e("selected-item"))},[(0,i.bF)(l,{class:"in-tooltip",closable:!e.selectDisabled&&!e.getDisabled(t),size:e.collapseTagSize,type:e.tagType,effect:e.tagEffect,"disable-transitions":"",onClose:n=>e.deleteTag(n,t)},{default:(0,i.k6)(()=>[(0,i.Lk)("span",{class:(0,u.C4)(e.nsSelect.e("tags-text"))},[(0,i.RG)(e.$slots,"label",{index:e.getIndex(t),label:e.getLabel(t),value:e.getValue(t)},()=>[(0,i.eW)((0,u.v_)(e.getLabel(t)),1)])],2)]),_:2},1032,["closable","size","type","effect","onClose"])],2))),128))],2)]),_:3},8,["disabled","effect","popper-class","popper-style","teleported"])):(0,i.Q3)("v-if",!0)]):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",{class:(0,u.C4)([e.nsSelect.e("selected-item"),e.nsSelect.e("input-wrapper"),e.nsSelect.is("hidden",!e.filterable||e.selectDisabled)])},[(0,i.bo)((0,i.Lk)("input",{id:e.inputId,ref:"inputRef","onUpdate:modelValue":t=>e.states.inputValue=t,style:(0,u.Tr)(e.inputStyle),autocomplete:e.autocomplete,tabindex:e.tabindex,"aria-autocomplete":"none","aria-haspopup":"listbox",autocapitalize:"off","aria-expanded":e.expanded,"aria-label":e.ariaLabel,class:(0,u.C4)([e.nsSelect.e("input"),e.nsSelect.is(e.selectSize)]),disabled:e.selectDisabled,role:"combobox","aria-controls":e.contentId,"aria-activedescendant":e.states.hoveringIndex>=0?`${e.contentId}-${e.states.hoveringIndex}`:"",readonly:!e.filterable,spellcheck:"false",type:"text",name:e.name,onInput:e.onInput,onCompositionstart:e.handleCompositionStart,onCompositionupdate:e.handleCompositionUpdate,onCompositionend:e.handleCompositionEnd,onKeydown:[(0,M.jR)((0,M.D$)(t=>e.onKeyboardNavigate("backward"),["stop","prevent"]),["up"]),(0,M.jR)((0,M.D$)(t=>e.onKeyboardNavigate("forward"),["stop","prevent"]),["down"]),(0,M.jR)((0,M.D$)(e.onKeyboardSelect,["stop","prevent"]),["enter"]),(0,M.jR)((0,M.D$)(e.handleEsc,["stop","prevent"]),["esc"]),(0,M.jR)((0,M.D$)(e.handleDel,["stop"]),["delete"])],onClick:(0,M.D$)(e.toggleMenu,["stop"])},null,46,["id","onUpdate:modelValue","autocomplete","tabindex","aria-expanded","aria-label","disabled","aria-controls","aria-activedescendant","readonly","name","onInput","onCompositionstart","onCompositionupdate","onCompositionend","onKeydown","onClick"]),[[M.Jo,e.states.inputValue]]),e.filterable?((0,i.uX)(),(0,i.CE)("span",{key:0,ref:"calculatorRef","aria-hidden":"true",class:(0,u.C4)(e.nsSelect.e("input-calculator")),textContent:(0,u.v_)(e.states.inputValue)},null,10,["textContent"])):(0,i.Q3)("v-if",!0)],2),e.shouldShowPlaceholder?((0,i.uX)(),(0,i.CE)("div",{key:1,class:(0,u.C4)([e.nsSelect.e("selected-item"),e.nsSelect.e("placeholder"),e.nsSelect.is("transparent",!e.hasModelValue||e.expanded&&!e.states.inputValue)])},[e.hasModelValue?(0,i.RG)(e.$slots,"label",{key:0,index:null!=(n=null==(t=e.allOptionsValueMap.get(e.modelValue))?void 0:t.index)?n:-1,label:e.currentPlaceholder,value:e.modelValue},()=>[(0,i.Lk)("span",null,(0,u.v_)(e.currentPlaceholder),1)]):((0,i.uX)(),(0,i.CE)("span",{key:1},(0,u.v_)(e.currentPlaceholder),1))],2)):(0,i.Q3)("v-if",!0)],2),(0,i.Lk)("div",{ref:"suffixRef",class:(0,u.C4)(e.nsSelect.e("suffix"))},[e.iconComponent?(0,i.bo)(((0,i.uX)(),(0,i.Wv)(c,{key:0,class:(0,u.C4)([e.nsSelect.e("caret"),e.nsInput.e("icon"),e.iconReverse])},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)(e.iconComponent)))]),_:1},8,["class"])),[[M.aG,!e.showClearBtn]]):(0,i.Q3)("v-if",!0),e.showClearBtn&&e.clearIcon?((0,i.uX)(),(0,i.Wv)(c,{key:1,class:(0,u.C4)([e.nsSelect.e("caret"),e.nsInput.e("icon"),e.nsSelect.e("clear")]),onClick:(0,M.D$)(e.handleClear,["prevent","stop"])},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)(e.clearIcon)))]),_:1},8,["class","onClick"])):(0,i.Q3)("v-if",!0),e.validateState&&e.validateIcon&&e.needStatusIcon?((0,i.uX)(),(0,i.Wv)(c,{key:2,class:(0,u.C4)([e.nsInput.e("icon"),e.nsInput.e("validateIcon"),e.nsInput.is("loading","validating"===e.validateState)])},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)(e.validateIcon)))]),_:1},8,["class"])):(0,i.Q3)("v-if",!0)],2)],10,["onClick"])]}),content:(0,i.k6)(()=>[(0,i.bF)(d,{id:e.contentId,ref:"menuRef",data:e.filteredOptions,width:e.popperSize-e.BORDER_HORIZONTAL_WIDTH,"hovering-index":e.states.hoveringIndex,"scrollbar-always-on":e.scrollbarAlwaysOn,"aria-label":e.ariaLabel},(0,i.eX)({default:(0,i.k6)(t=>[(0,i.RG)(e.$slots,"default",(0,u._B)((0,i.Ng)(t)))]),_:2},[e.$slots.header?{name:"header",fn:(0,i.k6)(()=>[(0,i.Lk)("div",{class:(0,u.C4)(e.nsSelect.be("dropdown","header")),onClick:(0,M.D$)(()=>{},["stop"])},[(0,i.RG)(e.$slots,"header")],10,["onClick"])])}:void 0,e.$slots.loading&&e.loading?{name:"loading",fn:(0,i.k6)(()=>[(0,i.Lk)("div",{class:(0,u.C4)(e.nsSelect.be("dropdown","loading"))},[(0,i.RG)(e.$slots,"loading")],2)])}:e.loading||0===e.filteredOptions.length?{name:"empty",fn:(0,i.k6)(()=>[(0,i.Lk)("div",{class:(0,u.C4)(e.nsSelect.be("dropdown","empty"))},[(0,i.RG)(e.$slots,"empty",{},()=>[(0,i.Lk)("span",null,(0,u.v_)(e.emptyText),1)])],2)])}:void 0,e.$slots.footer?{name:"footer",fn:(0,i.k6)(()=>[(0,i.Lk)("div",{class:(0,u.C4)(e.nsSelect.be("dropdown","footer")),onClick:(0,M.D$)(()=>{},["stop"])},[(0,i.RG)(e.$slots,"footer")],10,["onClick"])])}:void 0]),1032,["id","data","width","hovering-index","scrollbar-always-on","aria-label"])]),_:3},8,["visible","teleported","popper-class","popper-style","popper-options","fallback-placements","effect","placement","transition","persistent","append-to","show-arrow","offset","onBeforeShow","onHide"])],42,["onMouseenter","onMouseleave"])),[[f,e.handleClickOutside,e.popperRef]])}var Gs=(0,m.A)(Xs,[["render",Us],["__file","select.vue"]]);const qs=(0,E.GU)(Gs),Ys=(0,f.b_)({animated:Boolean,count:{type:Number,default:1},rows:{type:Number,default:3},loading:{type:Boolean,default:!0},throttle:{type:(0,f.jq)([Number,Object])}}),Qs=(0,f.b_)({variant:{type:String,values:["circle","rect","h1","h3","text","caption","p","image","button"],default:"text"}}),Zs=(0,i.pM)({name:"ElSkeletonItem"}),Js=(0,i.pM)({...Zs,props:Qs,setup(e){const t=(0,g.DU)("skeleton");return(e,n)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)([(0,s.R1)(t).e("item"),(0,s.R1)(t).e(e.variant)])},["image"===e.variant?((0,i.uX)(),(0,i.Wv)((0,s.R1)(O.PictureFilled),{key:0})):(0,i.Q3)("v-if",!0)],2))}});var eu=(0,m.A)(Js,[["__file","skeleton-item.vue"]]);const tu=(e,t=0)=>{if(0===t)return e;const n=(0,u.Gv)(t)&&Boolean(t.initVal),r=(0,s.KR)(n);let o=null;const a=t=>{(0,p.b0)(t)?r.value=e.value:(o&&clearTimeout(o),o=setTimeout(()=>{r.value=e.value},t))},l=e=>{"leading"===e?(0,p.Et)(t)?a(t):a(t.leading):(0,u.Gv)(t)?a(t.trailing):r.value=!1};return(0,i.sV)(()=>l("leading")),(0,i.wB)(()=>e.value,e=>{l(e?"leading":"trailing")}),r},nu=(0,i.pM)({name:"ElSkeleton"}),ru=(0,i.pM)({...nu,props:Ys,setup(e,{expose:t}){const n=e,r=(0,g.DU)("skeleton"),o=tu((0,s.lW)(n,"loading"),n.throttle);return t({uiLoading:o}),(e,t)=>(0,s.R1)(o)?((0,i.uX)(),(0,i.CE)("div",(0,i.v6)({key:0,class:[(0,s.R1)(r).b(),(0,s.R1)(r).is("animated",e.animated)]},e.$attrs),[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.count,t=>((0,i.uX)(),(0,i.CE)(i.FK,{key:t},[(0,s.R1)(o)?(0,i.RG)(e.$slots,"template",{key:t},()=>[(0,i.bF)(eu,{class:(0,u.C4)((0,s.R1)(r).is("first")),variant:"p"},null,8,["class"]),((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.rows,t=>((0,i.uX)(),(0,i.Wv)(eu,{key:t,class:(0,u.C4)([(0,s.R1)(r).e("paragraph"),(0,s.R1)(r).is("last",t===e.rows&&e.rows>1)]),variant:"p"},null,8,["class"]))),128))]):(0,i.Q3)("v-if",!0)],64))),128))],16)):(0,i.RG)(e.$slots,"default",(0,u._B)((0,i.v6)({key:1},e.$attrs)))}});var ou=(0,m.A)(ru,[["__file","skeleton.vue"]]);const au=(0,E.GU)(ou,{SkeletonItem:eu}),lu=(0,E.WM)(eu);var iu=n(74757);const su=(0,f.b_)({prefixCls:{type:String}}),uu=(0,i.pM)({name:"ElSpaceItem",props:su,setup(e,{slots:t}){const n=(0,g.DU)("space"),r=(0,i.EW)(()=>`${e.prefixCls||n.b()}__item`);return()=>(0,i.h)("div",{class:r.value},(0,i.RG)(t,"default"))}}),cu={small:8,default:12,large:16};function du(e){const t=(0,g.DU)("space"),n=(0,i.EW)(()=>[t.b(),t.m(e.direction),e.class]),r=(0,s.KR)(0),o=(0,s.KR)(0),a=(0,i.EW)(()=>{const t=e.wrap||e.fill?{flexWrap:"wrap"}:{},n={alignItems:e.alignment},a={rowGap:`${o.value}px`,columnGap:`${r.value}px`};return[t,n,a,e.style]}),l=(0,i.EW)(()=>e.fill?{flexGrow:1,minWidth:`${e.fillRatio}%`}:{});return(0,i.nT)(()=>{const{size:t="small",wrap:n,direction:a,fill:l}=e;if((0,u.cy)(t)){const[e=0,n=0]=t;r.value=e,o.value=n}else{let e;e=(0,p.Et)(t)?t:cu[t||"small"]||cu.small,(n||l)&&"horizontal"===a?r.value=o.value=e:"horizontal"===a?(r.value=e,o.value=0):(o.value=e,r.value=0)}}),{classes:n,containerStyle:a,itemStyle:l}}const fu=(0,f.b_)({direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},class:{type:(0,f.jq)([String,Object,Array]),default:""},style:{type:(0,f.jq)([String,Array,Object]),default:""},alignment:{type:(0,f.jq)(String),default:"center"},prefixCls:{type:String},spacer:{type:(0,f.jq)([Object,String,Number,Array]),default:null,validator:e=>(0,i.vv)(e)||(0,p.Et)(e)||(0,u.Kg)(e)},wrap:Boolean,fill:Boolean,fillRatio:{type:Number,default:100},size:{type:[String,Array,Number],values:q.I,validator:e=>(0,p.Et)(e)||(0,u.cy)(e)&&2===e.length&&e.every(p.Et)}}),pu=(0,i.pM)({name:"ElSpace",props:fu,setup(e,{slots:t}){const{classes:n,containerStyle:r,itemStyle:o}=du(e);function a(t,n="",r=[]){const{prefixCls:l}=e;return t.forEach((e,t)=>{(0,nt.zv)(e)?(0,u.cy)(e.children)&&e.children.forEach((e,t)=>{(0,nt.zv)(e)&&(0,u.cy)(e.children)?a(e.children,`${n+t}-`,r):(0,i.vv)(e)&&(null==e?void 0:e.type)===i.Mw?r.push(e):r.push((0,i.bF)(uu,{style:o.value,prefixCls:l,key:`nested-${n+t}`},{default:()=>[e]},nt.Yn.PROPS|nt.Yn.STYLE,["style","prefixCls"]))}):(0,nt.jO)(e)&&r.push((0,i.bF)(uu,{style:o.value,prefixCls:l,key:`LoopKey${n+t}`},{default:()=>[e]},nt.Yn.PROPS|nt.Yn.STYLE,["style","prefixCls"]))}),r}return()=>{var l;const{spacer:s,direction:c}=e,d=(0,i.RG)(t,"default",{key:0},()=>[]);if(0===(null!=(l=d.children)?l:[]).length)return null;if((0,u.cy)(d.children)){let e=a(d.children);if(s){const t=e.length-1;e=e.reduce((e,n,r)=>{const a=[...e,n];return r!==t&&a.push((0,i.bF)("span",{style:[o.value,"vertical"===c?"width: 100%":null],key:r},[(0,i.vv)(s)?s:(0,i.eW)(s,nt.Yn.TEXT)],nt.Yn.STYLE)),a},[])}return(0,i.bF)("div",{class:n.value,style:r.value},e,nt.Yn.STYLE|nt.Yn.CLASS)}return d.children}}}),vu=(0,E.GU)(pu),hu=(0,f.b_)({decimalSeparator:{type:String,default:"."},groupSeparator:{type:String,default:","},precision:{type:Number,default:0},formatter:Function,value:{type:(0,f.jq)([Number,Object]),default:0},prefix:String,suffix:String,title:String,valueStyle:{type:(0,f.jq)([String,Object,Array])}}),mu=(0,i.pM)({name:"ElStatistic"}),gu=(0,i.pM)({...mu,props:hu,setup(e,{expose:t}){const n=e,r=(0,g.DU)("statistic"),o=(0,i.EW)(()=>{const{value:e,formatter:t,precision:r,decimalSeparator:o,groupSeparator:a}=n;if((0,u.Tn)(t))return t(e);if(!(0,p.Et)(e)||Number.isNaN(e))return e;let[l,i=""]=String(e).split(".");return i=i.padEnd(r,"0").slice(0,r>0?r:0),l=l.replace(/\B(?=(\d{3})+(?!\d))/g,a),[l,i].join(i?o:"")});return t({displayValue:o}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)((0,s.R1)(r).b())},[e.$slots.title||e.title?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(r).e("head"))},[(0,i.RG)(e.$slots,"title",{},()=>[(0,i.eW)((0,u.v_)(e.title),1)])],2)):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(r).e("content"))},[e.$slots.prefix||e.prefix?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(r).e("prefix"))},[(0,i.RG)(e.$slots,"prefix",{},()=>[(0,i.Lk)("span",null,(0,u.v_)(e.prefix),1)])],2)):(0,i.Q3)("v-if",!0),(0,i.Lk)("span",{class:(0,u.C4)((0,s.R1)(r).e("number")),style:(0,u.Tr)(e.valueStyle)},(0,u.v_)((0,s.R1)(o)),7),e.$slots.suffix||e.suffix?((0,i.uX)(),(0,i.CE)("div",{key:1,class:(0,u.C4)((0,s.R1)(r).e("suffix"))},[(0,i.RG)(e.$slots,"suffix",{},()=>[(0,i.Lk)("span",null,(0,u.v_)(e.suffix),1)])],2)):(0,i.Q3)("v-if",!0)],2)],2))}});var bu=(0,m.A)(gu,[["__file","statistic.vue"]]);const yu=(0,E.GU)(bu),wu=(0,f.b_)({format:{type:String,default:"HH:mm:ss"},prefix:String,suffix:String,title:String,value:{type:(0,f.jq)([Number,Object]),default:0},valueStyle:{type:(0,f.jq)([String,Object,Array])}}),Ru={finish:()=>!0,[d.YU]:e=>(0,p.Et)(e)},Cu=[["Y",31536e6],["M",2592e6],["D",864e5],["H",36e5],["m",6e4],["s",1e3],["S",1]],xu=e=>(0,p.Et)(e)?new Date(e).getTime():e.valueOf(),ku=(e,t)=>{let n=e;const r=/\[([^\]]*)]/g,o=Cu.reduce((e,[t,r])=>{const o=new RegExp(`${t}+(?![^\\[\\]]*\\])`,"g");if(o.test(e)){const t=Math.floor(n/r);return n-=t*r,e.replace(o,e=>String(t).padStart(e.length,"0"))}return e},t);return o.replace(r,"$1")},Eu=(0,i.pM)({name:"ElCountdown"}),_u=(0,i.pM)({...Eu,props:wu,emits:Ru,setup(e,{expose:t,emit:n}){const r=e;let o;const a=(0,s.KR)(0),l=(0,i.EW)(()=>ku(a.value,r.format)),u=e=>ku(e,r.format),c=()=>{o&&((0,As.V)(o),o=void 0)},f=()=>{const e=xu(r.value),t=()=>{let r=e-Date.now();n(d.YU,r),r<=0?(r=0,c(),n("finish")):o=(0,As.m)(t),a.value=r};o=(0,As.m)(t)};return(0,i.sV)(()=>{a.value=xu(r.value)-Date.now(),(0,i.wB)(()=>[r.value,r.format],()=>{c(),f()},{immediate:!0})}),(0,i.xo)(()=>{c()}),t({displayValue:l}),(e,t)=>((0,i.uX)(),(0,i.Wv)((0,s.R1)(yu),{value:a.value,title:e.title,prefix:e.prefix,suffix:e.suffix,"value-style":e.valueStyle,formatter:u},(0,i.eX)({_:2},[(0,i.pI)(e.$slots,(t,n)=>({name:n,fn:(0,i.k6)(()=>[(0,i.RG)(e.$slots,n)])}))]),1032,["value","title","prefix","suffix","value-style"]))}});var Su=(0,m.A)(_u,[["__file","countdown.vue"]]);const Mu=(0,E.GU)(Su),Lu=(0,f.b_)({space:{type:[Number,String],default:""},active:{type:Number,default:0},direction:{type:String,default:"horizontal",values:["horizontal","vertical"]},alignCenter:{type:Boolean},simple:{type:Boolean},finishStatus:{type:String,values:["wait","process","finish","error","success"],default:"finish"},processStatus:{type:String,values:["wait","process","finish","error","success"],default:"process"}}),Au={[d.YU]:(e,t)=>[e,t].every(p.Et)},Ou="ElSteps",Tu=(0,i.pM)({name:"ElSteps"}),Iu=(0,i.pM)({...Tu,props:Lu,emits:Au,setup(e,{emit:t}){const n=e,r=(0,g.DU)("steps"),{children:o,addChild:a,removeChild:l,ChildrenSorter:c}=(0,tt.W)((0,i.nI)(),"ElStep");return(0,i.wB)(o,()=>{o.value.forEach((e,t)=>{e.setIndex(t)})}),(0,i.Gt)(Ou,{props:n,steps:o,addStep:a,removeStep:l}),(0,i.wB)(()=>n.active,(e,n)=>{t(d.YU,e,n)}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)([(0,s.R1)(r).b(),(0,s.R1)(r).m(e.simple?"simple":e.direction)])},[(0,i.RG)(e.$slots,"default"),(0,i.bF)((0,s.R1)(c))],2))}});var Nu=(0,m.A)(Iu,[["__file","steps.vue"]]);const Wu=(0,f.b_)({title:{type:String,default:""},icon:{type:Y.Ze},description:{type:String,default:""},status:{type:String,values:["","wait","process","finish","error","success"],default:""}}),Du=(0,i.pM)({name:"ElStep"}),Pu=(0,i.pM)({...Du,props:Wu,setup(e){const t=e,n=(0,g.DU)("step"),r=(0,s.KR)(-1),o=(0,s.KR)({}),a=(0,s.KR)(""),l=(0,i.WQ)(Ou),c=(0,i.nI)();let d=0,f=0;(0,i.sV)(()=>{(0,i.wB)([()=>l.props.active,()=>l.props.processStatus,()=>l.props.finishStatus],([e],[t])=>{f=t||0,d=e-f,S(e)},{immediate:!0})});const v=(0,i.EW)(()=>t.status||a.value),h=(0,i.EW)(()=>{const e=l.steps.value[r.value-1];return e?e.internalStatus.value:"wait"}),m=(0,i.EW)(()=>l.props.alignCenter),b=(0,i.EW)(()=>"vertical"===l.props.direction),y=(0,i.EW)(()=>l.props.simple),w=(0,i.EW)(()=>l.steps.value.length),R=(0,i.EW)(()=>{var e;return(null==(e=l.steps.value[w.value-1])?void 0:e.uid)===c.uid}),C=(0,i.EW)(()=>y.value?"":l.props.space),x=(0,i.EW)(()=>[n.b(),n.is(y.value?"simple":l.props.direction),n.is("flex",R.value&&!C.value&&!m.value),n.is("center",m.value&&!b.value&&!y.value)]),k=(0,i.EW)(()=>{const e={flexBasis:(0,p.Et)(C.value)?`${C.value}px`:C.value?C.value:100/(w.value-(m.value?0:1))+"%"};return b.value||R.value&&(e.maxWidth=100/w.value+"%"),e}),E=e=>{r.value=e},_=e=>{const t="wait"===e,n=1===Math.abs(d)?0:d>0?150*(r.value+1-f):150*-(r.value+1-l.props.active),a={transitionDelay:`${n}ms`},i=e===l.props.processStatus||t?0:100;a.borderWidth=i&&!y.value?"1px":0,a["vertical"===l.props.direction?"height":"width"]=`${i}%`,o.value=a},S=e=>{e>r.value?a.value=l.props.finishStatus:e===r.value&&"error"!==h.value?a.value=l.props.processStatus:a.value="wait";const t=l.steps.value[r.value-1];t&&t.calcProgress(a.value)},M={uid:c.uid,getVnode:()=>c.vnode,currentStatus:v,internalStatus:a,setIndex:E,calcProgress:_};return l.addStep(M),(0,i.xo)(()=>{l.removeStep(M)}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{style:(0,u.Tr)((0,s.R1)(k)),class:(0,u.C4)((0,s.R1)(x))},[(0,i.Q3)(" icon & line "),(0,i.Lk)("div",{class:(0,u.C4)([(0,s.R1)(n).e("head"),(0,s.R1)(n).is((0,s.R1)(v))])},[(0,s.R1)(y)?(0,i.Q3)("v-if",!0):((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(n).e("line"))},[(0,i.Lk)("i",{class:(0,u.C4)((0,s.R1)(n).e("line-inner")),style:(0,u.Tr)(o.value)},null,6)],2)),(0,i.Lk)("div",{class:(0,u.C4)([(0,s.R1)(n).e("icon"),(0,s.R1)(n).is(e.icon||e.$slots.icon?"icon":"text")])},[(0,i.RG)(e.$slots,"icon",{},()=>[e.icon?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:0,class:(0,u.C4)((0,s.R1)(n).e("icon-inner"))},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)(e.icon)))]),_:1},8,["class"])):"success"===(0,s.R1)(v)?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:1,class:(0,u.C4)([(0,s.R1)(n).e("icon-inner"),(0,s.R1)(n).is("status")])},{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.Check))]),_:1},8,["class"])):"error"===(0,s.R1)(v)?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:2,class:(0,u.C4)([(0,s.R1)(n).e("icon-inner"),(0,s.R1)(n).is("status")])},{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.Close))]),_:1},8,["class"])):(0,s.R1)(y)?(0,i.Q3)("v-if",!0):((0,i.uX)(),(0,i.CE)("div",{key:3,class:(0,u.C4)((0,s.R1)(n).e("icon-inner"))},(0,u.v_)(r.value+1),3))])],2)],2),(0,i.Q3)(" title & description "),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(n).e("main"))},[(0,i.Lk)("div",{class:(0,u.C4)([(0,s.R1)(n).e("title"),(0,s.R1)(n).is((0,s.R1)(v))])},[(0,i.RG)(e.$slots,"title",{},()=>[(0,i.eW)((0,u.v_)(e.title),1)])],2),(0,s.R1)(y)?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(n).e("arrow"))},null,2)):((0,i.uX)(),(0,i.CE)("div",{key:1,class:(0,u.C4)([(0,s.R1)(n).e("description"),(0,s.R1)(n).is((0,s.R1)(v))])},[(0,i.RG)(e.$slots,"description",{},()=>[(0,i.eW)((0,u.v_)(e.description),1)])],2))],2)],6))}});var Fu=(0,m.A)(Pu,[["__file","item.vue"]]);const Bu=(0,E.GU)(Nu,{Step:Fu}),zu=(0,E.WM)(Fu);var $u=n(55558),Vu=n(84757),ju=(e=>(e["ASC"]="asc",e["DESC"]="desc",e))(ju||{}),Ku=(e=>(e["LEFT"]="left",e["CENTER"]="center",e["RIGHT"]="right",e))(Ku||{}),Hu=(e=>(e["LEFT"]="left",e["RIGHT"]="right",e))(Hu||{});const Xu={["asc"]:"desc",["desc"]:"asc"},Uu=Symbol("placeholder"),Gu=(e,t,n)=>{var r;const o={flexGrow:0,flexShrink:0,...n?{}:{flexGrow:e.flexGrow||0,flexShrink:e.flexShrink||1}};n||(o.flexShrink=1);const a={...null!=(r=e.style)?r:{},...o,flexBasis:"auto",width:e.width};return t||(e.maxWidth&&(a.maxWidth=e.maxWidth),e.minWidth&&(a.minWidth=e.minWidth)),a};function qu(e,t,n){const r=(0,i.EW)(()=>(0,s.R1)(t).map((e,t)=>{var n,r;return{...e,key:null!=(r=null!=(n=e.key)?n:e.dataKey)?r:t}})),o=(0,i.EW)(()=>(0,s.R1)(r).filter(e=>!e.hidden)),a=(0,i.EW)(()=>(0,s.R1)(o).filter(e=>"left"===e.fixed||!0===e.fixed)),l=(0,i.EW)(()=>(0,s.R1)(o).filter(e=>"right"===e.fixed)),c=(0,i.EW)(()=>(0,s.R1)(o).filter(e=>!e.fixed)),d=(0,i.EW)(()=>{const e=[];return(0,s.R1)(a).forEach(t=>{e.push({...t,placeholderSign:Uu})}),(0,s.R1)(c).forEach(t=>{e.push(t)}),(0,s.R1)(l).forEach(t=>{e.push({...t,placeholderSign:Uu})}),e}),f=(0,i.EW)(()=>(0,s.R1)(a).length||(0,s.R1)(l).length),p=(0,i.EW)(()=>(0,s.R1)(r).reduce((t,r)=>(t[r.key]=Gu(r,(0,s.R1)(n),e.fixed),t),{})),v=(0,i.EW)(()=>(0,s.R1)(o).reduce((e,t)=>e+t.width,0)),h=e=>(0,s.R1)(r).find(t=>t.key===e),m=e=>(0,s.R1)(p)[e],g=(e,t)=>{e.width=t};function b(t){var n;const{key:r}=t.currentTarget.dataset;if(!r)return;const{sortState:o,sortBy:a}=e;let l=ju.ASC;l=(0,u.Gv)(o)?Xu[o[r]]:Xu[a.order],null==(n=e.onColumnSort)||n.call(e,{column:h(r),key:r,order:l})}return{columns:r,columnsStyles:p,columnsTotalWidth:v,fixedColumnsOnLeft:a,fixedColumnsOnRight:l,hasFixedColumns:f,mainColumns:d,normalColumns:c,visibleColumns:o,getColumn:h,getColumnStyle:m,updateColumnWidth:g,onColumnSorted:b}}const Yu=(e,{mainTableRef:t,leftTableRef:n,rightTableRef:r,onMaybeEndReached:o})=>{const a=(0,s.KR)({scrollLeft:0,scrollTop:0});function l(e){var o,a,l;const{scrollTop:i}=e;null==(o=t.value)||o.scrollTo(e),null==(a=n.value)||a.scrollToTop(i),null==(l=r.value)||l.scrollToTop(i)}function u(e){a.value=e,l(e)}function c(e){a.value.scrollTop=e,l((0,s.R1)(a))}function d(e){var n,r;a.value.scrollLeft=e,null==(r=null==(n=t.value)?void 0:n.scrollTo)||r.call(n,(0,s.R1)(a))}function f(t){var n;u(t),null==(n=e.onScroll)||n.call(e,t)}function p({scrollTop:e}){const{scrollTop:t}=(0,s.R1)(a);e!==t&&c(e)}function v(e,n="auto"){var r;null==(r=t.value)||r.scrollToRow(e,n)}return(0,i.wB)(()=>(0,s.R1)(a).scrollTop,(e,t)=>{e>t&&o()}),{scrollPos:a,scrollTo:u,scrollToLeft:d,scrollToTop:c,scrollToRow:v,onScroll:f,onVerticalScroll:p}},Qu=(e,{mainTableRef:t,leftTableRef:n,rightTableRef:r,tableInstance:o,ns:a,isScrolling:l})=>{const u=(0,i.nI)(),{emit:c}=u,d=(0,s.IJ)(!1),f=(0,s.KR)(e.defaultExpandedRowKeys||[]),v=(0,s.KR)(-1),h=(0,s.IJ)(null),m=(0,s.KR)({}),g=(0,s.KR)({}),b=(0,s.IJ)({}),y=(0,s.IJ)({}),w=(0,s.IJ)({}),R=(0,i.EW)(()=>(0,p.Et)(e.estimatedRowHeight));function C(t){var n;null==(n=e.onRowsRendered)||n.call(e,t),t.rowCacheEnd>(0,s.R1)(v)&&(v.value=t.rowCacheEnd)}function x({hovered:e,rowKey:t}){if(l.value)return;const n=o.vnode.el,r=n.querySelectorAll(`[rowkey="${String(t)}"]`);r.forEach(t=>{e?t.classList.add(a.is("hovered")):t.classList.remove(a.is("hovered"))})}function k({expanded:t,rowData:n,rowIndex:r,rowKey:l}){var u,d;const p=[...(0,s.R1)(f)],v=p.indexOf(l);t?-1===v&&p.push(l):v>-1&&p.splice(v,1),f.value=p,c("update:expandedRowKeys",p),null==(u=e.onRowExpand)||u.call(e,{expanded:t,rowData:n,rowIndex:r,rowKey:l}),null==(d=e.onExpandedRowsChange)||d.call(e,p);const h=o.vnode.el,m=h.querySelector(`.${a.is("hovered")}[rowkey="${String(l)}"]`);m&&(0,i.dY)(()=>x({hovered:!0,rowKey:l}))}const E=(0,Ir.A)(()=>{var e,o,a,l;d.value=!0,m.value={...(0,s.R1)(m),...(0,s.R1)(g)},_((0,s.R1)(h),!1),g.value={},h.value=null,null==(e=t.value)||e.forceUpdate(),null==(o=n.value)||o.forceUpdate(),null==(a=r.value)||a.forceUpdate(),null==(l=u.proxy)||l.$forceUpdate(),d.value=!1},0);function _(e,o=!1){(0,s.R1)(R)&&[t,n,r].forEach(t=>{const n=(0,s.R1)(t);n&&n.resetAfterRowIndex(e,o)})}function S(e,t,n){const r=(0,s.R1)(h);(null===r||r>n)&&(h.value=n),g.value[e]=t}function M({rowKey:e,height:t,rowIndex:n},r){r?r===Hu.RIGHT?w.value[e]=t:b.value[e]=t:y.value[e]=t;const o=Math.max(...[b,w,y].map(t=>t.value[e]||0));(0,s.R1)(m)[e]!==o&&(S(e,o,n),E())}return{expandedRowKeys:f,lastRenderedRowIndex:v,isDynamic:R,isResetting:d,rowHeights:m,resetAfterIndex:_,onRowExpanded:k,onRowHovered:x,onRowsRendered:C,onRowHeightChange:M}},Zu=(e,{expandedRowKeys:t,lastRenderedRowIndex:n,resetAfterIndex:r})=>{const o=(0,s.KR)({}),a=(0,i.EW)(()=>{const n={},{data:r,rowKey:a}=e,l=(0,s.R1)(t);if(!l||!l.length)return r;const i=[],c=new Set;l.forEach(e=>c.add(e));let d=r.slice();d.forEach(e=>n[e[a]]=0);while(d.length>0){const e=d.shift();i.push(e),c.has(e[a])&&(0,u.cy)(e.children)&&e.children.length>0&&(d=[...e.children,...d],e.children.forEach(t=>n[t[a]]=n[e[a]]+1))}return o.value=n,i}),l=(0,i.EW)(()=>{const{data:t,expandColumnKey:n}=e;return n?(0,s.R1)(a):t});return(0,i.wB)(l,(e,t)=>{e!==t&&(n.value=-1,r(0,!0))}),{data:l,depthMap:o}},Ju=(e,t)=>e+t,ec=e=>(0,u.cy)(e)?e.reduce(Ju,0):e,tc=(e,t,n={})=>(0,u.Tn)(e)?e(t):null!=e?e:n,nc=e=>(["width","maxWidth","minWidth","height"].forEach(t=>{e[t]=(0,y._V)(e[t])}),e),rc=e=>(0,i.vv)(e)?t=>(0,i.h)(e,t):e,oc=(e,{columnsTotalWidth:t,rowsHeight:n,fixedColumnsOnLeft:r,fixedColumnsOnRight:o})=>{const a=(0,i.EW)(()=>{const{fixed:n,width:r,vScrollbarSize:o}=e,a=r-o;return n?Math.max(Math.round((0,s.R1)(t)),a):a}),l=(0,i.EW)(()=>{const{height:t=0,maxHeight:r=0,footerHeight:o,hScrollbarSize:a}=e;if(r>0){const e=(0,s.R1)(h),t=(0,s.R1)(n),l=(0,s.R1)(v),i=l+e+t+a;return Math.min(i,r-o)}return t-o}),u=(0,i.EW)(()=>{const{maxHeight:t}=e,r=(0,s.R1)(l);if((0,p.Et)(t)&&t>0)return r;const o=(0,s.R1)(n)+(0,s.R1)(v)+(0,s.R1)(h);return Math.min(r,o)}),c=e=>e.width,d=(0,i.EW)(()=>ec((0,s.R1)(r).map(c))),f=(0,i.EW)(()=>ec((0,s.R1)(o).map(c))),v=(0,i.EW)(()=>ec(e.headerHeight)),h=(0,i.EW)(()=>{var t;return((null==(t=e.fixedData)?void 0:t.length)||0)*e.rowHeight}),m=(0,i.EW)(()=>(0,s.R1)(l)-(0,s.R1)(v)-(0,s.R1)(h)),g=(0,i.EW)(()=>{const{style:t={},height:n,width:r}=e;return nc({...t,height:n,width:r})}),b=(0,i.EW)(()=>nc({height:e.footerHeight})),w=(0,i.EW)(()=>({top:(0,y._V)((0,s.R1)(v)),bottom:(0,y._V)(e.footerHeight),width:(0,y._V)(e.width)}));return{bodyWidth:a,fixedTableHeight:u,mainTableHeight:l,leftTableWidth:d,rightTableWidth:f,windowHeight:m,footerHeight:b,emptyStyle:w,rootStyle:g,headerHeight:v}};function ac(e){const t=(0,s.KR)(),n=(0,s.KR)(),r=(0,s.KR)(),{columns:o,columnsStyles:a,columnsTotalWidth:l,fixedColumnsOnLeft:c,fixedColumnsOnRight:d,hasFixedColumns:f,mainColumns:v,onColumnSorted:h}=qu(e,(0,s.lW)(e,"columns"),(0,s.lW)(e,"fixed")),{scrollTo:m,scrollToLeft:b,scrollToTop:y,scrollToRow:w,onScroll:R,onVerticalScroll:C,scrollPos:x}=Yu(e,{mainTableRef:t,leftTableRef:n,rightTableRef:r,onMaybeEndReached:ee}),k=(0,g.DU)("table-v2"),E=(0,i.nI)(),_=(0,s.IJ)(!1),{expandedRowKeys:S,lastRenderedRowIndex:M,isDynamic:L,isResetting:A,rowHeights:O,resetAfterIndex:T,onRowExpanded:I,onRowHeightChange:N,onRowHovered:W,onRowsRendered:D}=Qu(e,{mainTableRef:t,leftTableRef:n,rightTableRef:r,tableInstance:E,ns:k,isScrolling:_}),{data:P,depthMap:F}=Zu(e,{expandedRowKeys:S,lastRenderedRowIndex:M,resetAfterIndex:T}),B=(0,i.EW)(()=>{const{estimatedRowHeight:t,rowHeight:n}=e,r=(0,s.R1)(P);return(0,p.Et)(t)?Object.values((0,s.R1)(O)).reduce((e,t)=>e+t,0):r.length*n}),{bodyWidth:z,fixedTableHeight:$,mainTableHeight:V,leftTableWidth:j,rightTableWidth:K,windowHeight:H,footerHeight:X,emptyStyle:U,rootStyle:G,headerHeight:q}=oc(e,{columnsTotalWidth:l,fixedColumnsOnLeft:c,fixedColumnsOnRight:d,rowsHeight:B}),Y=(0,s.KR)(),Q=(0,i.EW)(()=>{const t=0===(0,s.R1)(P).length;return(0,u.cy)(e.fixedData)?0===e.fixedData.length&&t:t});function Z(t){const{estimatedRowHeight:n,rowHeight:r,rowKey:o}=e;return n?(0,s.R1)(O)[(0,s.R1)(P)[t][o]]||n:r}const J=(0,s.KR)(!1);function ee(){const{onEndReached:t}=e;if(!t)return;const{scrollTop:n}=(0,s.R1)(x),r=(0,s.R1)(B),o=(0,s.R1)(H),a=r-(n+o)+e.hScrollbarSize;!J.value&&(0,s.R1)(M)>=0&&r<=n+(0,s.R1)(V)-(0,s.R1)(q)?(J.value=!0,t(a)):J.value=!1}return(0,i.wB)(()=>(0,s.R1)(B),()=>J.value=!1),(0,i.wB)(()=>e.expandedRowKeys,e=>S.value=e,{deep:!0}),{columns:o,containerRef:Y,mainTableRef:t,leftTableRef:n,rightTableRef:r,isDynamic:L,isResetting:A,isScrolling:_,hasFixedColumns:f,columnsStyles:a,columnsTotalWidth:l,data:P,expandedRowKeys:S,depthMap:F,fixedColumnsOnLeft:c,fixedColumnsOnRight:d,mainColumns:v,bodyWidth:z,emptyStyle:U,rootStyle:G,footerHeight:X,mainTableHeight:V,fixedTableHeight:$,leftTableWidth:j,rightTableWidth:K,showEmpty:Q,getRowHeight:Z,onColumnSorted:h,onRowHovered:W,onRowExpanded:I,onRowsRendered:D,onRowHeightChange:N,scrollTo:m,scrollToLeft:b,scrollToTop:y,scrollToRow:w,onScroll:R,onVerticalScroll:C}}const lc=Symbol("tableV2"),ic="tableV2GridScrollLeft",sc=String,uc={type:(0,f.jq)(Array),required:!0},cc=((0,f.jq)(Object),{type:(0,f.jq)(Array)}),dc={...cc,required:!0},fc=String,pc={type:(0,f.jq)(Array),default:()=>(0,gn.f)([])},vc={type:Number,required:!0},hc={type:(0,f.jq)([String,Number,Symbol]),default:"id"},mc={type:(0,f.jq)(Object)},gc=(0,f.b_)({class:String,columns:uc,columnsStyles:{type:(0,f.jq)(Object),required:!0},depth:Number,expandColumnKey:fc,estimatedRowHeight:{...Rs.estimatedRowHeight,default:void 0},isScrolling:Boolean,onRowExpand:{type:(0,f.jq)(Function)},onRowHover:{type:(0,f.jq)(Function)},onRowHeightChange:{type:(0,f.jq)(Function)},rowData:{type:(0,f.jq)(Object),required:!0},rowEventHandlers:{type:(0,f.jq)(Object)},rowIndex:{type:Number,required:!0},rowKey:hc,style:{type:(0,f.jq)(Object)}}),bc={type:Number,required:!0},yc=(0,f.b_)({class:String,columns:uc,fixedHeaderData:{type:(0,f.jq)(Array)},headerData:{type:(0,f.jq)(Array),required:!0},headerHeight:{type:(0,f.jq)([Number,Array]),default:50},rowWidth:bc,rowHeight:{type:Number,default:50},height:bc,width:bc}),wc=(0,f.b_)({columns:uc,data:dc,fixedData:cc,estimatedRowHeight:gc.estimatedRowHeight,width:vc,height:vc,headerWidth:vc,headerHeight:yc.headerHeight,bodyWidth:vc,rowHeight:vc,cache:gs.cache,useIsScrolling:Boolean,scrollbarAlwaysOn:Rs.scrollbarAlwaysOn,scrollbarStartGap:Rs.scrollbarStartGap,scrollbarEndGap:Rs.scrollbarEndGap,class:sc,style:mc,containerStyle:mc,getRowHeight:{type:(0,f.jq)(Function),required:!0},rowKey:gc.rowKey,onRowsRendered:{type:(0,f.jq)(Function)},onScroll:{type:(0,f.jq)(Function)}}),Rc=(0,f.b_)({cache:wc.cache,estimatedRowHeight:gc.estimatedRowHeight,rowKey:hc,headerClass:{type:(0,f.jq)([String,Function])},headerProps:{type:(0,f.jq)([Object,Function])},headerCellProps:{type:(0,f.jq)([Object,Function])},headerHeight:yc.headerHeight,footerHeight:{type:Number,default:0},rowClass:{type:(0,f.jq)([String,Function])},rowProps:{type:(0,f.jq)([Object,Function])},rowHeight:{type:Number,default:50},cellProps:{type:(0,f.jq)([Object,Function])},columns:uc,data:dc,dataGetter:{type:(0,f.jq)(Function)},fixedData:cc,expandColumnKey:gc.expandColumnKey,expandedRowKeys:pc,defaultExpandedRowKeys:pc,class:sc,fixed:Boolean,style:{type:(0,f.jq)(Object)},width:vc,height:vc,maxHeight:Number,useIsScrolling:Boolean,indentSize:{type:Number,default:12},iconSize:{type:Number,default:12},hScrollbarSize:Rs.hScrollbarSize,vScrollbarSize:Rs.vScrollbarSize,scrollbarAlwaysOn:Cs.alwaysOn,sortBy:{type:(0,f.jq)(Object),default:()=>({})},sortState:{type:(0,f.jq)(Object),default:void 0},onColumnSort:{type:(0,f.jq)(Function)},onExpandedRowsChange:{type:(0,f.jq)(Function)},onEndReached:{type:(0,f.jq)(Function)},onRowExpand:gc.onRowExpand,onScroll:wc.onScroll,onRowsRendered:wc.onRowsRendered,rowEventHandlers:gc.rowEventHandlers}),Cc="ElTableV2Header",xc=(0,i.pM)({name:Cc,props:yc,setup(e,{slots:t,expose:n}){const r=(0,g.DU)("table-v2"),o=(0,i.WQ)(ic),a=(0,s.KR)(),l=(0,i.EW)(()=>nc({width:e.width,height:e.height})),u=(0,i.EW)(()=>nc({width:e.rowWidth,height:e.height})),c=(0,i.EW)(()=>(0,Mn.A)((0,s.R1)(e.headerHeight))),d=e=>{const t=(0,s.R1)(a);(0,i.dY)(()=>{(null==t?void 0:t.scroll)&&t.scroll({left:e})})},f=()=>{const n=r.e("fixed-header-row"),{columns:o,fixedHeaderData:a,rowHeight:l}=e;return null==a?void 0:a.map((e,r)=>{var a;const i=nc({height:l,width:"100%"});return null==(a=t.fixed)?void 0:a.call(t,{class:n,columns:o,rowData:e,rowIndex:-(r+1),style:i})})},p=()=>{const n=r.e("dynamic-header-row"),{columns:o}=e;return(0,s.R1)(c).map((e,r)=>{var a;const l=nc({width:"100%",height:e});return null==(a=t.dynamic)?void 0:a.call(t,{class:n,columns:o,headerIndex:r,style:l})})};return(0,i.$u)(()=>{(null==o?void 0:o.value)&&d(o.value)}),n({scrollToLeft:d}),()=>{if(!(e.height<=0))return(0,i.bF)("div",{ref:a,class:e.class,style:(0,s.R1)(l),role:"rowgroup"},[(0,i.bF)("div",{style:(0,s.R1)(u),class:r.e("header")},[p(),f()])])}}});var kc=xc;const Ec=({atXEndEdge:e,atXStartEdge:t,atYEndEdge:n,atYStartEdge:r},o)=>{let a=null,l=0,i=0;const s=(o,a)=>{const l=o<=0&&t.value||o>=0&&e.value,i=a<=0&&r.value||a>=0&&n.value;return l&&i},u=e=>{(0,As.V)(a);let t=e.deltaX,n=e.deltaY;Math.abs(t)>Math.abs(n)?n=0:t=0,e.shiftKey&&0!==n&&(t=n,n=0),s(l,i)&&s(l+t,i+n)||(l+=t,i+=n,e.preventDefault(),a=(0,As.m)(()=>{o(l,i),l=0,i=0}))};return{hasReachedEdge:s,onWheel:u}},_c=(e,t,n,r,o,a,l)=>{const i=(0,s.KR)(0),u=(0,s.KR)(0);let d,f=0,p=0;const v=e=>{(0,As.V)(d),i.value=e.touches[0].clientX,u.value=e.touches[0].clientY,f=0,p=0},h=e=>{e.preventDefault(),(0,As.V)(d),f+=i.value-e.touches[0].clientX,p+=u.value-e.touches[0].clientY,i.value=e.touches[0].clientX,u.value=e.touches[0].clientY,d=(0,As.m)(()=>{const e=r.value-(0,s.R1)(a),i=o.value-(0,s.R1)(l),u=Math.min(t.value.scrollLeft+f,e),c=Math.min(t.value.scrollTop+p,i);n({scrollLeft:u,scrollTop:c}),f=0,p=0})};return(0,c.MLh)(e,"touchstart",v,{passive:!0}),(0,c.MLh)(e,"touchmove",h,{passive:!1}),{touchStartX:i,touchStartY:u,handleTouchStart:v,handleTouchMove:h}},Sc=({name:e,clearCache:t,getColumnPosition:n,getColumnStartIndexForOffset:r,getColumnStopIndexForStartIndex:o,getEstimatedTotalHeight:a,getEstimatedTotalWidth:l,getColumnOffset:d,getRowOffset:f,getRowPosition:v,getRowStartIndexForOffset:h,getRowStopIndexForStartIndex:m,initCache:y,injectToInstance:w,validateProps:R})=>(0,i.pM)({name:null!=e?e:"ElVirtualList",props:Rs,emits:[ss.xG,ss.k0],setup(e,{emit:C,expose:x,slots:k}){const E=(0,g.DU)("vl");R(e);const _=(0,i.nI)(),S=(0,s.KR)(y(e,_));null==w||w(_,S);const M=(0,s.KR)(),L=(0,s.KR)(),O=(0,s.KR)(),T=(0,s.KR)(),I=(0,s.KR)({isScrolling:!1,scrollLeft:(0,p.Et)(e.initScrollLeft)?e.initScrollLeft:0,scrollTop:(0,p.Et)(e.initScrollTop)?e.initScrollTop:0,updateRequested:!1,xAxisScrollDir:ss.OX,yAxisScrollDir:ss.OX}),N=ls(),W=(0,i.EW)(()=>Number.parseInt(`${e.height}`,10)),D=(0,i.EW)(()=>Number.parseInt(`${e.width}`,10)),P=(0,i.EW)(()=>{const{totalColumn:t,totalRow:n,columnCache:a}=e,{isScrolling:l,xAxisScrollDir:i,scrollLeft:u}=(0,s.R1)(I);if(0===t||0===n)return[0,0,0,0];const c=r(e,u,(0,s.R1)(S)),d=o(e,c,u,(0,s.R1)(S)),f=l&&i!==ss.Wc?1:Math.max(1,a),p=l&&i!==ss.OX?1:Math.max(1,a);return[Math.max(0,c-f),Math.max(0,Math.min(t-1,d+p)),c,d]}),F=(0,i.EW)(()=>{const{totalColumn:t,totalRow:n,rowCache:r}=e,{isScrolling:o,yAxisScrollDir:a,scrollTop:l}=(0,s.R1)(I);if(0===t||0===n)return[0,0,0,0];const i=h(e,l,(0,s.R1)(S)),u=m(e,i,l,(0,s.R1)(S)),c=o&&a!==ss.Wc?1:Math.max(1,r),d=o&&a!==ss.OX?1:Math.max(1,r);return[Math.max(0,i-c),Math.max(0,Math.min(n-1,u+d)),i,u]}),B=(0,i.EW)(()=>a(e,(0,s.R1)(S))),z=(0,i.EW)(()=>l(e,(0,s.R1)(S))),$=(0,i.EW)(()=>{var t;return[{position:"relative",overflow:"hidden",WebkitOverflowScrolling:"touch",willChange:"transform"},{direction:e.direction,height:(0,p.Et)(e.height)?`${e.height}px`:e.height,width:(0,p.Et)(e.width)?`${e.width}px`:e.width},null!=(t=e.style)?t:{}]}),V=(0,i.EW)(()=>{const e=`${(0,s.R1)(z)}px`,t=`${(0,s.R1)(B)}px`;return{height:t,pointerEvents:(0,s.R1)(I).isScrolling?"none":void 0,width:e,margin:0,boxSizing:"border-box"}}),j=()=>{const{totalColumn:t,totalRow:n}=e;if(t>0&&n>0){const[e,t,n,r]=(0,s.R1)(P),[o,a,l,i]=(0,s.R1)(F);C(ss.xG,{columnCacheStart:e,columnCacheEnd:t,rowCacheStart:o,rowCacheEnd:a,columnVisibleStart:n,columnVisibleEnd:r,rowVisibleStart:l,rowVisibleEnd:i})}const{scrollLeft:r,scrollTop:o,updateRequested:a,xAxisScrollDir:l,yAxisScrollDir:i}=(0,s.R1)(I);C(ss.k0,{xAxisScrollDir:l,scrollLeft:r,yAxisScrollDir:i,scrollTop:o,updateRequested:a})},K=t=>{const{clientHeight:n,clientWidth:r,scrollHeight:o,scrollLeft:a,scrollTop:l,scrollWidth:u}=t.currentTarget,c=(0,s.R1)(I);if(c.scrollTop===l&&c.scrollLeft===a)return;let d=a;if(Es(e.direction))switch(Ss()){case ss.Cg:d=-a;break;case ss.sr:d=u-r-a;break}I.value={...c,isScrolling:!0,scrollLeft:d,scrollTop:Math.max(0,Math.min(l,o-n)),updateRequested:!0,xAxisScrollDir:xs(c.scrollLeft,d),yAxisScrollDir:xs(c.scrollTop,l)},(0,i.dY)(()=>te()),ne(),j()},H=(e,t)=>{const n=(0,s.R1)(W),r=(B.value-n)/t*e;G({scrollTop:Math.min(B.value-n,r)})},X=(e,t)=>{const n=(0,s.R1)(D),r=(z.value-n)/t*e;G({scrollLeft:Math.min(z.value-n,r)})},{onWheel:U}=Ec({atXStartEdge:(0,i.EW)(()=>I.value.scrollLeft<=0),atXEndEdge:(0,i.EW)(()=>I.value.scrollLeft>=z.value-(0,s.R1)(D)),atYStartEdge:(0,i.EW)(()=>I.value.scrollTop<=0),atYEndEdge:(0,i.EW)(()=>I.value.scrollTop>=B.value-(0,s.R1)(W))},(e,t)=>{var n,r,o,a;null==(r=null==(n=L.value)?void 0:n.onMouseUp)||r.call(n),null==(a=null==(o=O.value)?void 0:o.onMouseUp)||a.call(o);const l=(0,s.R1)(D),i=(0,s.R1)(W);G({scrollLeft:Math.min(I.value.scrollLeft+e,z.value-l),scrollTop:Math.min(I.value.scrollTop+t,B.value-i)})});(0,c.MLh)(M,"wheel",U,{passive:!1});const G=({scrollLeft:e=I.value.scrollLeft,scrollTop:t=I.value.scrollTop})=>{e=Math.max(e,0),t=Math.max(t,0);const n=(0,s.R1)(I);t===n.scrollTop&&e===n.scrollLeft||(I.value={...n,xAxisScrollDir:xs(n.scrollLeft,e),yAxisScrollDir:xs(n.scrollTop,t),scrollLeft:e,scrollTop:t,updateRequested:!0},(0,i.dY)(()=>te()),ne(),j())},{touchStartX:q,touchStartY:Y,handleTouchStart:Q,handleTouchMove:Z}=_c(M,I,G,z,B,D,W),J=(t=0,n=0,r=ss.YF)=>{const o=(0,s.R1)(I);n=Math.max(0,Math.min(n,e.totalColumn-1)),t=Math.max(0,Math.min(t,e.totalRow-1));const i=(0,b.F_)(E.namespace.value),u=(0,s.R1)(S),c=a(e,u),p=l(e,u);G({scrollLeft:d(e,n,r,o.scrollLeft,u,p>e.width?i:0),scrollTop:f(e,t,r,o.scrollTop,u,c>e.height?i:0)})},ee=(r,o)=>{const{columnWidth:a,direction:l,rowHeight:i}=e,c=N.value(t&&a,t&&i,t&&l),d=`${r},${o}`;if((0,u.$3)(c,d))return c[d];{const[,t]=n(e,o,(0,s.R1)(S)),a=(0,s.R1)(S),i=Es(l),[u,f]=v(e,r,a),[p]=n(e,o,a);return c[d]={position:"absolute",left:i?void 0:`${t}px`,right:i?`${t}px`:void 0,top:`${f}px`,height:`${u}px`,width:`${p}px`},c[d]}},te=()=>{I.value.isScrolling=!1,(0,i.dY)(()=>{N.value(-1,null,null)})};(0,i.sV)(()=>{if(!A.oc)return;const{initScrollLeft:t,initScrollTop:n}=e,r=(0,s.R1)(M);r&&((0,p.Et)(t)&&(r.scrollLeft=t),(0,p.Et)(n)&&(r.scrollTop=n)),j()});const ne=()=>{const{direction:t}=e,{scrollLeft:n,scrollTop:r,updateRequested:o}=(0,s.R1)(I),a=(0,s.R1)(M);if(o&&a){if(t===ss.rX)switch(Ss()){case ss.Cg:a.scrollLeft=-n;break;case ss.KR:a.scrollLeft=n;break;default:{const{clientWidth:e,scrollWidth:t}=a;a.scrollLeft=t-e-n;break}}else a.scrollLeft=Math.max(0,n);a.scrollTop=Math.max(0,r)}},{resetAfterColumnIndex:re,resetAfterRowIndex:oe,resetAfter:ae}=_.proxy;x({windowRef:M,innerRef:T,getItemStyleCache:N,touchStartX:q,touchStartY:Y,handleTouchStart:Q,handleTouchMove:Z,scrollTo:G,scrollToItem:J,states:I,resetAfterColumnIndex:re,resetAfterRowIndex:oe,resetAfter:ae});const le=()=>{const{scrollbarAlwaysOn:t,scrollbarStartGap:n,scrollbarEndGap:r,totalColumn:o,totalRow:a}=e,l=(0,s.R1)(D),u=(0,s.R1)(W),c=(0,s.R1)(z),d=(0,s.R1)(B),{scrollLeft:f,scrollTop:p}=(0,s.R1)(I),v=(0,i.h)(Os,{ref:L,alwaysOn:t,startGap:n,endGap:r,class:E.e("horizontal"),clientSize:l,layout:"horizontal",onScroll:X,ratio:100*l/c,scrollFrom:f/(c-l),total:a,visible:!0}),h=(0,i.h)(Os,{ref:O,alwaysOn:t,startGap:n,endGap:r,class:E.e("vertical"),clientSize:u,layout:"vertical",onScroll:H,ratio:100*u/d,scrollFrom:p/(d-u),total:o,visible:!0});return{horizontalScrollbar:v,verticalScrollbar:h}},ie=()=>{var t;const[n,r]=(0,s.R1)(P),[o,a]=(0,s.R1)(F),{data:l,totalColumn:u,totalRow:c,useIsScrolling:d,itemKey:f}=e,p=[];if(c>0&&u>0)for(let e=o;e<=a;e++)for(let o=n;o<=r;o++){const n=f({columnIndex:o,data:l,rowIndex:e});p.push((0,i.h)(i.FK,{key:n},null==(t=k.default)?void 0:t.call(k,{columnIndex:o,data:l,isScrolling:d?(0,s.R1)(I).isScrolling:void 0,style:ee(e,o),rowIndex:e})))}return p},se=()=>{const t=(0,i.$y)(e.innerElement),n=ie();return[(0,i.h)(t,(0,i.v6)(e.innerProps,{style:(0,s.R1)(V),ref:T}),(0,u.Kg)(t)?n:{default:()=>n})]},ue=()=>{const t=(0,i.$y)(e.containerElement),{horizontalScrollbar:n,verticalScrollbar:r}=le(),o=se();return(0,i.h)("div",{key:0,class:E.e("wrapper"),role:e.role},[(0,i.h)(t,{class:e.className,style:(0,s.R1)($),onScroll:K,ref:M},(0,u.Kg)(t)?o:{default:()=>o}),n,r])};return ue}}),{max:Mc,min:Lc,floor:Ac}=Math,Oc={column:"columnWidth",row:"rowHeight"},Tc={column:"lastVisitedColumnIndex",row:"lastVisitedRowIndex"},Ic=(e,t,n,r)=>{const[o,a,l]=[n[r],e[Oc[r]],n[Tc[r]]];if(t>l){let e=0;if(l>=0){const t=o[l];e=t.offset+t.size}for(let n=l+1;n<=t;n++){const t=a(n);o[n]={offset:e,size:t},e+=t}n[Tc[r]]=t}return o[t]},Nc=(e,t,n,r,o,a)=>{while(n<=r){const l=n+Ac((r-n)/2),i=Ic(e,l,t,a).offset;if(i===o)return l;i{const a="column"===o?e.totalColumn:e.totalRow;let l=1;while(n{const[o,a]=[t[r],t[Tc[r]]],l=a>0?o[a].offset:0;return l>=n?Nc(e,t,0,a,n,r):Wc(e,t,Mc(0,a),n,r)},Pc=({totalRow:e},{estimatedRowHeight:t,lastVisitedRowIndex:n,row:r})=>{let o=0;if(n>=e&&(n=e-1),n>=0){const e=r[n];o=e.offset+e.size}const a=e-n-1,l=a*t;return o+l},Fc=({totalColumn:e},{column:t,estimatedColumnWidth:n,lastVisitedColumnIndex:r})=>{let o=0;if(r>e&&(r=e-1),r>=0){const e=t[r];o=e.offset+e.size}const a=e-r-1,l=a*n;return o+l},Bc={column:Fc,row:Pc},zc=(e,t,n,r,o,a,l)=>{const[i,s]=["row"===a?e.height:e.width,Bc[a]],u=Ic(e,t,o,a),c=s(e,o),d=Mc(0,Lc(c-i,u.offset)),f=Mc(0,u.offset-i+l+u.size);switch(n===ss.UZ&&(n=r>=f-i&&r<=d+i?ss.YF:ss.v_),n){case ss.zj:return d;case ss.Y5:return f;case ss.v_:return Math.round(f+(d-f)/2);case ss.YF:default:return r>=f&&r<=d?r:f>d||r{const r=Ic(e,t,n,"column");return[r.size,r.offset]},getRowPosition:(e,t,n)=>{const r=Ic(e,t,n,"row");return[r.size,r.offset]},getColumnOffset:(e,t,n,r,o,a)=>zc(e,t,n,r,o,"column",a),getRowOffset:(e,t,n,r,o,a)=>zc(e,t,n,r,o,"row",a),getColumnStartIndexForOffset:(e,t,n)=>Dc(e,n,t,"column"),getColumnStopIndexForStartIndex:(e,t,n,r)=>{const o=Ic(e,t,r,"column"),a=n+e.width;let l=o.offset+o.size,i=t;while(iDc(e,n,t,"row"),getRowStopIndexForStartIndex:(e,t,n,r)=>{const{totalRow:o,height:a}=e,l=Ic(e,t,r,"row"),i=n+a;let s=l.size+l.offset,u=t;while(u{const n=({columnIndex:n,rowIndex:r},o)=>{var a,l;o=!!(0,p.b0)(o)||o,(0,p.Et)(n)&&(t.value.lastVisitedColumnIndex=Math.min(t.value.lastVisitedColumnIndex,n-1)),(0,p.Et)(r)&&(t.value.lastVisitedRowIndex=Math.min(t.value.lastVisitedRowIndex,r-1)),null==(a=e.exposed)||a.getItemStyleCache.value(-1,null,null),o&&(null==(l=e.proxy)||l.$forceUpdate())},r=(e,t)=>{n({columnIndex:e},t)},o=(e,t)=>{n({rowIndex:e},t)};Object.assign(e.proxy,{resetAfterColumnIndex:r,resetAfterRowIndex:o,resetAfter:n})},initCache:({estimatedColumnWidth:e=ss.Tc,estimatedRowHeight:t=ss.Tc})=>{const n={column:{},estimatedColumnWidth:e,estimatedRowHeight:t,lastVisitedColumnIndex:-1,lastVisitedRowIndex:-1,row:{}};return n},clearCache:!1,validateProps:({columnWidth:e,rowHeight:t})=>{0}}),Vc=Sc({name:"ElFixedSizeGrid",getColumnPosition:({columnWidth:e},t)=>[e,t*e],getRowPosition:({rowHeight:e},t)=>[e,t*e],getEstimatedTotalHeight:({totalRow:e,rowHeight:t})=>t*e,getEstimatedTotalWidth:({totalColumn:e,columnWidth:t})=>t*e,getColumnOffset:({totalColumn:e,columnWidth:t,width:n},r,o,a,l,i)=>{n=Number(n);const s=Math.max(0,e*t-n),u=Math.min(s,r*t),c=Math.max(0,r*t-n+i+t);switch("smart"===o&&(o=a>=c-n&&a<=u+n?ss.YF:ss.v_),o){case ss.zj:return u;case ss.Y5:return c;case ss.v_:{const e=Math.round(c+(u-c)/2);return es+Math.floor(n/2)?s:e}case ss.YF:default:return a>=c&&a<=u?a:c>u||a{t=Number(t);const s=Math.max(0,n*e-t),u=Math.min(s,r*e),c=Math.max(0,r*e-t+i+e);switch(o===ss.UZ&&(o=a>=c-t&&a<=u+t?ss.YF:ss.v_),o){case ss.zj:return u;case ss.Y5:return c;case ss.v_:{const e=Math.round(c+(u-c)/2);return es+Math.floor(t/2)?s:e}case ss.YF:default:return a>=c&&a<=u?a:c>u||aMath.max(0,Math.min(t-1,Math.floor(n/e))),getColumnStopIndexForStartIndex:({columnWidth:e,totalColumn:t,width:n},r,o)=>{const a=r*e,l=Math.ceil((n+o-a)/e);return Math.max(0,Math.min(t-1,r+l-1))},getRowStartIndexForOffset:({rowHeight:e,totalRow:t},n)=>Math.max(0,Math.min(t-1,Math.floor(n/e))),getRowStopIndexForStartIndex:({rowHeight:e,totalRow:t,height:n},r,o)=>{const a=r*e,l=Math.ceil((n+o-a)/e);return Math.max(0,Math.min(t-1,r+l-1))},initCache:()=>{},clearCache:!0,validateProps:({columnWidth:e,rowHeight:t})=>{0}}),jc="ElTableV2Grid",Kc=e=>{const t=(0,s.KR)(),n=(0,s.KR)(),r=(0,s.KR)(0),o=(0,i.EW)(()=>{const{data:t,rowHeight:n,estimatedRowHeight:r}=e;if(!r)return t.length*n}),a=(0,i.EW)(()=>{const{fixedData:t,rowHeight:n}=e;return((null==t?void 0:t.length)||0)*n}),l=(0,i.EW)(()=>ec(e.headerHeight)),c=(0,i.EW)(()=>{const{height:t}=e;return Math.max(0,t-(0,s.R1)(l)-(0,s.R1)(a))}),d=(0,i.EW)(()=>(0,s.R1)(l)+(0,s.R1)(a)>0),f=({data:t,rowIndex:n})=>t[n][e.rowKey];function v({rowCacheStart:t,rowCacheEnd:n,rowVisibleStart:r,rowVisibleEnd:o}){var a;null==(a=e.onRowsRendered)||a.call(e,{rowCacheStart:t,rowCacheEnd:n,rowVisibleStart:r,rowVisibleEnd:o})}function h(e,t){var r;null==(r=n.value)||r.resetAfterRowIndex(e,t)}function m(e,o){const a=(0,s.R1)(t),l=(0,s.R1)(n);(0,u.Gv)(e)?(null==a||a.scrollToLeft(e.scrollLeft),r.value=e.scrollLeft,null==l||l.scrollTo(e)):(null==a||a.scrollToLeft(e),r.value=e,null==l||l.scrollTo({scrollLeft:e,scrollTop:o}))}function g(e){var t;null==(t=(0,s.R1)(n))||t.scrollTo({scrollTop:e})}function b(e,t){var r;null==(r=(0,s.R1)(n))||r.scrollToItem(e,1,t)}function y(){var e,r;null==(e=(0,s.R1)(n))||e.$forceUpdate(),null==(r=(0,s.R1)(t))||r.$forceUpdate()}return(0,i.wB)(()=>e.bodyWidth,()=>{var t;(0,p.Et)(e.estimatedRowHeight)&&(null==(t=n.value)||t.resetAfter({columnIndex:0},!1))}),{bodyRef:n,forceUpdate:y,fixedRowHeight:a,gridHeight:c,hasHeader:d,headerHeight:l,headerRef:t,totalHeight:o,itemKey:f,onItemRendered:v,resetAfterRowIndex:h,scrollTo:m,scrollToTop:g,scrollToRow:b,scrollLeft:r}},Hc=(0,i.pM)({name:jc,props:wc,setup(e,{slots:t,expose:n}){const{ns:r}=(0,i.WQ)(lc),{bodyRef:o,fixedRowHeight:a,gridHeight:l,hasHeader:u,headerRef:c,headerHeight:d,totalHeight:f,forceUpdate:v,itemKey:h,onItemRendered:m,resetAfterRowIndex:g,scrollTo:b,scrollToTop:y,scrollToRow:w,scrollLeft:R}=Kc(e);(0,i.Gt)(ic,R),(0,i.n)(async()=>{var e;await(0,i.dY)();const t=null==(e=o.value)?void 0:e.states.scrollTop;t&&y(Math.round(t)+1)}),n({forceUpdate:v,totalHeight:f,scrollTo:b,scrollToTop:y,scrollToRow:w,resetAfterRowIndex:g});const C=()=>e.bodyWidth;return()=>{const{cache:n,columns:f,data:v,fixedData:g,useIsScrolling:b,scrollbarAlwaysOn:y,scrollbarEndGap:w,scrollbarStartGap:R,style:x,rowHeight:k,bodyWidth:E,estimatedRowHeight:_,headerWidth:S,height:M,width:L,getRowHeight:A,onScroll:O}=e,T=(0,p.Et)(_),I=T?$c:Vc,N=(0,s.R1)(d);return(0,i.bF)("div",{role:"table",class:[r.e("table"),e.class],style:x},[(0,i.bF)(I,{ref:o,data:v,useIsScrolling:b,itemKey:h,columnCache:0,columnWidth:T?C:E,totalColumn:1,totalRow:v.length,rowCache:n,rowHeight:T?A:k,width:L,height:(0,s.R1)(l),class:r.e("body"),role:"rowgroup",scrollbarStartGap:R,scrollbarEndGap:w,scrollbarAlwaysOn:y,onScroll:O,onItemRendered:m,perfMode:!1},{default:e=>{var n;const r=v[e.rowIndex];return null==(n=t.row)?void 0:n.call(t,{...e,columns:f,rowData:r})}}),(0,s.R1)(u)&&(0,i.bF)(kc,{ref:c,class:r.e("header-wrapper"),columns:f,headerData:v,headerHeight:e.headerHeight,fixedHeaderData:g,rowWidth:S,rowHeight:k,width:L,height:Math.min(N+(0,s.R1)(a),M)},{dynamic:t.header,fixed:t.row})])}}});var Xc=Hc;function Uc(e){return"function"===typeof e||"[object Object]"===Object.prototype.toString.call(e)&&!(0,i.vv)(e)}const Gc=(e,{slots:t})=>{const{mainTableRef:n,...r}=e;return(0,i.bF)(Xc,(0,i.v6)({ref:n},r),Uc(t)?t:{default:()=>[t]})};var qc=Gc;function Yc(e){return"function"===typeof e||"[object Object]"===Object.prototype.toString.call(e)&&!(0,i.vv)(e)}const Qc=(e,{slots:t})=>{if(!e.columns.length)return;const{leftTableRef:n,...r}=e;return(0,i.bF)(Xc,(0,i.v6)({ref:n},r),Yc(t)?t:{default:()=>[t]})};var Zc=Qc;function Jc(e){return"function"===typeof e||"[object Object]"===Object.prototype.toString.call(e)&&!(0,i.vv)(e)}const ed=(e,{slots:t})=>{if(!e.columns.length)return;const{rightTableRef:n,...r}=e;return(0,i.bF)(Xc,(0,i.v6)({ref:n},r),Jc(t)?t:{default:()=>[t]})};var td=ed;const nd=e=>{const{isScrolling:t}=(0,i.WQ)(lc),n=(0,s.KR)(!1),r=(0,s.KR)(),o=(0,i.EW)(()=>(0,p.Et)(e.estimatedRowHeight)&&e.rowIndex>=0),a=(t=!1)=>{const o=(0,s.R1)(r);if(!o)return;const{columns:a,onRowHeightChange:l,rowKey:u,rowIndex:c,style:d}=e,{height:f}=o.getBoundingClientRect();n.value=!0,(0,i.dY)(()=>{if(t||f!==Number.parseInt(d.height)){const e=a[0],t=(null==e?void 0:e.placeholderSign)===Uu;null==l||l({rowKey:u,height:f,rowIndex:c},e&&!t&&e.fixed)}})},l=(0,i.EW)(()=>{const{rowData:t,rowIndex:n,rowKey:r,onRowHover:o}=e,a=e.rowEventHandlers||{},l={};return Object.entries(a).forEach(([e,o])=>{(0,u.Tn)(o)&&(l[e]=e=>{o({event:e,rowData:t,rowIndex:n,rowKey:r})})}),o&&[{name:"onMouseleave",hovered:!1},{name:"onMouseenter",hovered:!0}].forEach(({name:e,hovered:a})=>{const i=l[e];l[e]=e=>{o({event:e,hovered:a,rowData:t,rowIndex:n,rowKey:r}),null==i||i(e)}}),l}),c=t=>{const{onRowExpand:n,rowData:r,rowIndex:o,rowKey:a}=e;null==n||n({expanded:t,rowData:r,rowIndex:o,rowKey:a})};return(0,i.sV)(()=>{(0,s.R1)(o)&&a(!0)}),{isScrolling:t,measurable:o,measured:n,rowRef:r,eventHandlers:l,onExpand:c}},rd="ElTableV2TableRow",od=(0,i.pM)({name:rd,props:gc,setup(e,{expose:t,slots:n,attrs:r}){const{eventHandlers:o,isScrolling:a,measurable:l,measured:c,rowRef:d,onExpand:f}=nd(e);return t({onExpand:f}),()=>{const{columns:t,columnsStyles:p,expandColumnKey:v,depth:h,rowData:m,rowIndex:g,style:b}=e;let y=t.map((e,r)=>{const o=(0,u.cy)(m.children)&&m.children.length>0&&e.key===v;return n.cell({column:e,columns:t,columnIndex:r,depth:h,style:p[e.key],rowData:m,rowIndex:g,isScrolling:(0,s.R1)(a),expandIconProps:o?{rowData:m,rowIndex:g,onExpand:f}:void 0})});if(n.row&&(y=n.row({cells:y.map(e=>(0,u.cy)(e)&&1===e.length?e[0]:e),style:b,columns:t,depth:h,rowData:m,rowIndex:g,isScrolling:(0,s.R1)(a)})),(0,s.R1)(l)){const{height:t,...n}=b||{},a=(0,s.R1)(c);return(0,i.bF)("div",(0,i.v6)({ref:d,class:e.class,style:a?b:n,role:"row"},r,(0,s.R1)(o)),[y])}return(0,i.bF)("div",(0,i.v6)(r,{ref:d,class:e.class,style:b,role:"row"},(0,s.R1)(o)),[y])}}});var ad=od;function ld(e){return"function"===typeof e||"[object Object]"===Object.prototype.toString.call(e)&&!(0,i.vv)(e)}const id=(e,{slots:t})=>{const{columns:n,columnsStyles:r,depthMap:o,expandColumnKey:a,expandedRowKeys:l,estimatedRowHeight:s,hasFixedColumns:u,rowData:c,rowIndex:d,style:f,isScrolling:p,rowProps:v,rowClass:h,rowKey:m,rowEventHandlers:g,ns:b,onRowHovered:y,onRowExpanded:w}=e,R=tc(h,{columns:n,rowData:c,rowIndex:d},""),C=tc(v,{columns:n,rowData:c,rowIndex:d}),x=c[m],k=o[x]||0,E=Boolean(a),_=d<0,S=[b.e("row"),R,b.is("expanded",E&&l.includes(x)),b.is("fixed",!k&&_),b.is("customized",Boolean(t.row)),{[b.e(`row-depth-${k}`)]:E&&d>=0}],M=u?y:void 0,L={...C,columns:n,columnsStyles:r,class:S,depth:k,expandColumnKey:a,estimatedRowHeight:_?void 0:s,isScrolling:p,rowIndex:d,rowData:c,rowKey:x,rowEventHandlers:g,style:f},A=e=>{null==M||M({hovered:!0,rowKey:x,event:e,rowData:c,rowIndex:d})},O=e=>{null==M||M({hovered:!1,rowKey:x,event:e,rowData:c,rowIndex:d})};return(0,i.bF)(ad,(0,i.v6)(L,{onRowExpand:w,onMouseenter:A,onMouseleave:O,rowkey:x}),ld(t)?t:{default:()=>[t]})};var sd=id;const ud=(e,{slots:t})=>{var n;const{cellData:r,style:o}=e,a=(null==(n=null==r?void 0:r.toString)?void 0:n.call(r))||"",l=(0,i.RG)(t,"default",e,()=>[a]);return(0,i.bF)("div",{class:e.class,title:a,style:o},[l])};ud.displayName="ElTableV2Cell",ud.inheritAttrs=!1;var cd=ud;const dd=e=>{const{expanded:t,expandable:n,onExpand:r,style:o,size:a}=e,l={onClick:n?()=>r(!t):void 0,class:e.class};return(0,i.bF)(W.tk,(0,i.v6)(l,{size:a,style:o}),{default:()=>[(0,i.bF)(O.ArrowRight,null,null)]})};var fd=dd;const pd=({columns:e,column:t,columnIndex:n,depth:r,expandIconProps:o,isScrolling:a,rowData:l,rowIndex:s,style:c,expandedRowKeys:d,ns:f,cellProps:p,expandColumnKey:v,indentSize:h,iconSize:m,rowKey:g},{slots:b})=>{const y=nc(c);if(t.placeholderSign===Uu)return(0,i.bF)("div",{class:f.em("row-cell","placeholder"),style:y},null);const{cellRenderer:w,dataKey:R,dataGetter:C}=t,x=(0,u.Tn)(C)?C({columns:e,column:t,columnIndex:n,rowData:l,rowIndex:s}):(0,$i.A)(l,null!=R?R:""),k=tc(p,{cellData:x,columns:e,column:t,columnIndex:n,rowIndex:s,rowData:l}),E={class:f.e("cell-text"),columns:e,column:t,columnIndex:n,cellData:x,isScrolling:a,rowData:l,rowIndex:s},_=rc(w),S=_?_(E):(0,i.RG)(b,"default",E,()=>[(0,i.bF)(cd,E,null)]),M=[f.e("row-cell"),t.class,t.align===Ku.CENTER&&f.is("align-center"),t.align===Ku.RIGHT&&f.is("align-right")],L=s>=0&&v&&t.key===v,A=s>=0&&d.includes(l[g]);let O;const T=`margin-inline-start: ${r*h}px;`;return L&&(O=(0,u.Gv)(o)?(0,i.bF)(fd,(0,i.v6)(o,{class:[f.e("expand-icon"),f.is("expanded",A)],size:m,expanded:A,style:T,expandable:!0}),null):(0,i.bF)("div",{style:[T,`width: ${m}px; height: ${m}px;`].join(" ")},null)),(0,i.bF)("div",(0,i.v6)({class:M,style:y},k,{role:"cell"}),[O,S])};pd.inheritAttrs=!1;var vd=pd;const hd=(0,f.b_)({class:String,columns:uc,columnsStyles:{type:(0,f.jq)(Object),required:!0},headerIndex:Number,style:{type:(0,f.jq)(Object)}}),md=(0,i.pM)({name:"ElTableV2HeaderRow",props:hd,setup(e,{slots:t}){return()=>{const{columns:n,columnsStyles:r,headerIndex:o,style:a}=e;let l=n.map((e,a)=>t.cell({columns:n,column:e,columnIndex:a,headerIndex:o,style:r[e.key]}));return t.header&&(l=t.header({cells:l.map(e=>(0,u.cy)(e)&&1===e.length?e[0]:e),columns:n,headerIndex:o})),(0,i.bF)("div",{class:e.class,style:a,role:"row"},[l])}}});var gd=md;function bd(e){return"function"===typeof e||"[object Object]"===Object.prototype.toString.call(e)&&!(0,i.vv)(e)}const yd=({columns:e,columnsStyles:t,headerIndex:n,style:r,headerClass:o,headerProps:a,ns:l},{slots:s})=>{const u={columns:e,headerIndex:n},c=[l.e("header-row"),tc(o,u,""),l.is("customized",Boolean(s.header))],d={...tc(a,u),columnsStyles:t,class:c,columns:e,headerIndex:n,style:r};return(0,i.bF)(gd,d,bd(s)?s:{default:()=>[s]})};var wd=yd;const Rd=(e,{slots:t})=>(0,i.RG)(t,"default",e,()=>{var t,n;return[(0,i.bF)("div",{class:e.class,title:null==(t=e.column)?void 0:t.title},[null==(n=e.column)?void 0:n.title])]});Rd.displayName="ElTableV2HeaderCell",Rd.inheritAttrs=!1;var Cd=Rd;const xd=e=>{const{sortOrder:t}=e;return(0,i.bF)(W.tk,{size:14,class:e.class},{default:()=>[t===ju.ASC?(0,i.bF)(O.SortUp,null,null):(0,i.bF)(O.SortDown,null,null)]})};var kd=xd;const Ed=(e,{slots:t})=>{const{column:n,ns:r,style:o,onColumnSorted:a}=e,l=nc(o);if(n.placeholderSign===Uu)return(0,i.bF)("div",{class:r.em("header-row-cell","placeholder"),style:l},null);const{headerCellRenderer:s,headerClass:u,sortable:c}=n,d={...e,class:r.e("header-cell-text")},f=rc(s),p=f?f(d):(0,i.RG)(t,"default",d,()=>[(0,i.bF)(Cd,d,null)]),{sortBy:v,sortState:h,headerCellProps:m}=e;let g,b;if(h){const e=h[n.key];g=Boolean(Xu[e]),b=g?e:ju.ASC}else g=n.key===v.key,b=g?v.order:ju.ASC;const y=[r.e("header-cell"),tc(u,e,""),n.align===Ku.CENTER&&r.is("align-center"),n.align===Ku.RIGHT&&r.is("align-right"),c&&r.is("sortable")],w={...tc(m,e),onClick:n.sortable?a:void 0,class:y,style:l,["data-key"]:n.key};return(0,i.bF)("div",(0,i.v6)(w,{role:"columnheader"}),[p,c&&(0,i.bF)(kd,{class:[r.e("sort-icon"),g&&r.is("sorting")],sortOrder:b},null)])};var _d=Ed;const Sd=(e,{slots:t})=>{var n;return(0,i.bF)("div",{class:e.class,style:e.style},[null==(n=t.default)?void 0:n.call(t)])};Sd.displayName="ElTableV2Footer";var Md=Sd;const Ld=(e,{slots:t})=>{const n=(0,i.RG)(t,"default",{},()=>[(0,i.bF)(Ya,null,null)]);return(0,i.bF)("div",{class:e.class,style:e.style},[n])};Ld.displayName="ElTableV2Empty";var Ad=Ld;const Od=(e,{slots:t})=>{var n;return(0,i.bF)("div",{class:e.class,style:e.style},[null==(n=t.default)?void 0:n.call(t)])};Od.displayName="ElTableV2Overlay";var Td=Od;function Id(e){return"function"===typeof e||"[object Object]"===Object.prototype.toString.call(e)&&!(0,i.vv)(e)}const Nd="ElTableV2",Wd=(0,i.pM)({name:Nd,props:Rc,setup(e,{slots:t,expose:n}){const r=(0,g.DU)("table-v2"),{columnsStyles:o,fixedColumnsOnLeft:a,fixedColumnsOnRight:l,mainColumns:u,mainTableHeight:c,fixedTableHeight:d,leftTableWidth:f,rightTableWidth:p,data:v,depthMap:h,expandedRowKeys:m,hasFixedColumns:b,mainTableRef:y,leftTableRef:w,rightTableRef:R,isDynamic:C,isResetting:x,isScrolling:k,bodyWidth:E,emptyStyle:_,rootStyle:S,footerHeight:M,showEmpty:L,scrollTo:A,scrollToLeft:O,scrollToTop:T,scrollToRow:I,getRowHeight:N,onColumnSorted:W,onRowHeightChange:D,onRowHovered:P,onRowExpanded:F,onRowsRendered:B,onScroll:z,onVerticalScroll:$}=ac(e);return n({scrollTo:A,scrollToLeft:O,scrollToTop:T,scrollToRow:I}),(0,i.Gt)(lc,{ns:r,isResetting:x,isScrolling:k}),()=>{const{cache:n,cellProps:g,estimatedRowHeight:x,expandColumnKey:k,fixedData:A,headerHeight:O,headerClass:T,headerProps:I,headerCellProps:V,sortBy:j,sortState:K,rowHeight:H,rowClass:X,rowEventHandlers:U,rowKey:G,rowProps:q,scrollbarAlwaysOn:Y,indentSize:Q,iconSize:Z,useIsScrolling:J,vScrollbarSize:ee,width:te}=e,ne=(0,s.R1)(v),re={cache:n,class:r.e("main"),columns:(0,s.R1)(u),data:ne,fixedData:A,estimatedRowHeight:x,bodyWidth:(0,s.R1)(E),headerHeight:O,headerWidth:(0,s.R1)(E),height:(0,s.R1)(c),mainTableRef:y,rowKey:G,rowHeight:H,scrollbarAlwaysOn:Y,scrollbarStartGap:2,scrollbarEndGap:ee,useIsScrolling:J,width:te,getRowHeight:N,onRowsRendered:B,onScroll:z},oe=(0,s.R1)(f),ae=(0,s.R1)(d),le={cache:n,class:r.e("left"),columns:(0,s.R1)(a),data:ne,fixedData:A,estimatedRowHeight:x,leftTableRef:w,rowHeight:H,bodyWidth:oe,headerWidth:oe,headerHeight:O,height:ae,rowKey:G,scrollbarAlwaysOn:Y,scrollbarStartGap:2,scrollbarEndGap:ee,useIsScrolling:J,width:oe,getRowHeight:N,onScroll:$},ie=(0,s.R1)(p),se={cache:n,class:r.e("right"),columns:(0,s.R1)(l),data:ne,fixedData:A,estimatedRowHeight:x,rightTableRef:R,rowHeight:H,bodyWidth:ie,headerWidth:ie,headerHeight:O,height:ae,rowKey:G,scrollbarAlwaysOn:Y,scrollbarStartGap:2,scrollbarEndGap:ee,width:ie,style:`${r.cssVarName("table-scrollbar-size")}: ${ee}px`,useIsScrolling:J,getRowHeight:N,onScroll:$},ue=(0,s.R1)(o),ce={ns:r,depthMap:(0,s.R1)(h),columnsStyles:ue,expandColumnKey:k,expandedRowKeys:(0,s.R1)(m),estimatedRowHeight:x,hasFixedColumns:(0,s.R1)(b),rowProps:q,rowClass:X,rowKey:G,rowEventHandlers:U,onRowHovered:P,onRowExpanded:F,onRowHeightChange:D},de={cellProps:g,expandColumnKey:k,indentSize:Q,iconSize:Z,rowKey:G,expandedRowKeys:(0,s.R1)(m),ns:r},fe={ns:r,headerClass:T,headerProps:I,columnsStyles:ue},pe={ns:r,sortBy:j,sortState:K,headerCellProps:V,onColumnSorted:W},ve={row:e=>(0,i.bF)(sd,(0,i.v6)(e,ce),{row:t.row,cell:e=>{let n;return t.cell?(0,i.bF)(vd,(0,i.v6)(e,de,{style:ue[e.column.key]}),Id(n=t.cell(e))?n:{default:()=>[n]}):(0,i.bF)(vd,(0,i.v6)(e,de,{style:ue[e.column.key]}),null)}}),header:e=>(0,i.bF)(wd,(0,i.v6)(e,fe),{header:t.header,cell:e=>{let n;return t["header-cell"]?(0,i.bF)(_d,(0,i.v6)(e,pe,{style:ue[e.column.key]}),Id(n=t["header-cell"](e))?n:{default:()=>[n]}):(0,i.bF)(_d,(0,i.v6)(e,pe,{style:ue[e.column.key]}),null)}})},he=[e.class,r.b(),r.e("root"),r.is("dynamic",(0,s.R1)(C))],me={class:r.e("footer"),style:(0,s.R1)(M)};return(0,i.bF)("div",{class:he,style:(0,s.R1)(S)},[(0,i.bF)(qc,re,Id(ve)?ve:{default:()=>[ve]}),(0,i.bF)(Zc,le,Id(ve)?ve:{default:()=>[ve]}),(0,i.bF)(td,se,Id(ve)?ve:{default:()=>[ve]}),t.footer&&(0,i.bF)(Md,me,{default:t.footer}),(0,s.R1)(L)&&(0,i.bF)(Ad,{class:r.e("empty"),style:(0,s.R1)(_)},{default:t.empty}),t.overlay&&(0,i.bF)(Td,{class:r.e("overlay")},{default:t.overlay})])}}});var Dd=Wd;const Pd=(0,f.b_)({disableWidth:Boolean,disableHeight:Boolean,onResize:{type:(0,f.jq)(Function)}}),Fd=e=>{const t=(0,s.KR)(),n=(0,s.KR)(0),r=(0,s.KR)(0);let o;return(0,i.sV)(()=>{o=(0,c.wYm)(t,([e])=>{const{width:t,height:o}=e.contentRect,{paddingLeft:a,paddingRight:l,paddingTop:i,paddingBottom:s}=getComputedStyle(e.target),u=Number.parseInt(a)||0,c=Number.parseInt(l)||0,d=Number.parseInt(i)||0,f=Number.parseInt(s)||0;n.value=t-u-c,r.value=o-d-f}).stop}),(0,i.xo)(()=>{null==o||o()}),(0,i.wB)([n,r],([t,n])=>{var r;null==(r=e.onResize)||r.call(e,{width:t,height:n})}),{sizer:t,width:n,height:r}},Bd=(0,i.pM)({name:"ElAutoResizer",props:Pd,setup(e,{slots:t}){const n=(0,g.DU)("auto-resizer"),{height:r,width:o,sizer:a}=Fd(e),l={width:"100%",height:"100%"};return()=>{var e;return(0,i.bF)("div",{ref:a,class:n.b(),style:l},[null==(e=t.default)?void 0:e.call(t,{height:r.value,width:o.value})])}}});var zd=Bd;const $d=(0,E.GU)(Dd),Vd=(0,E.GU)(zd);var jd=n(4275),Kd=n(74253),Hd=n(20037),Xd=n(65070),Ud=n(31158);function Gd(e){return e!==e}var qd=Gd;function Yd(e,t,n){var r=n-1,o=e.length;while(++r-1}var tf=ef;function nf(e,t,n){var r=-1,o=null==e?0:e.length;while(++r=pf){var u=t?null:ff(e);if(u)return(0,uf.A)(u);l=!1,o=of.A,s=new Xd.A}else s=t?[]:i;e:while(++r{const n=[];for(let r=e;r<=t;r++)n.push(r);return n},{t:o,lang:a}=(0,Ie.Ym)(),l=(0,g.DU)("time"),c=(0,g.DU)("picker"),d=(0,i.WQ)(To),{arrowControl:f,disabledHours:p,disabledMinutes:v,disabledSeconds:h,defaultValue:m}=d.props,b=(0,i.EW)(()=>[l.be("range-picker","body"),l.be("panel","content"),l.is("arrow",f),k.value?"has-seconds":""]),y=(0,i.EW)(()=>[l.be("range-picker","body"),l.be("panel","content"),l.is("arrow",f),k.value?"has-seconds":""]),w=(0,i.EW)(()=>n.parsedValue[0]),R=(0,i.EW)(()=>n.parsedValue[1]),C=jo(n),x=()=>{const e=C.value;t("pick",e,!1),(0,i.dY)(()=>{C.value=e})},k=(0,i.EW)(()=>n.format.includes("ss")),E=(0,i.EW)(()=>n.format.includes("A")?"A":n.format.includes("a")?"a":""),_=(e=!1)=>{t("pick",[w.value,R.value],e)},S=e=>{A(e.millisecond(0),R.value)},M=e=>{A(w.value,e.millisecond(0))},L=e=>{const t=e.map(e=>ve(e).locale(a.value)),n=$(t);return t[0].isSame(n[0])&&t[1].isSame(n[1])},A=(e,r)=>{n.visible&&t("pick",[e,r],!0)},O=(0,i.EW)(()=>w.value>R.value),T=(0,s.KR)([0,2]),I=(e,n)=>{t("select-range",e,n,"min"),T.value=[e,n]},N=(0,i.EW)(()=>k.value?11:8),W=(e,n)=>{t("select-range",e,n,"max");const r=(0,s.R1)(N);T.value=[e+r,n+r]},D=e=>{const t=k.value?[0,3,6,11,14,17]:[0,3,8,11],n=["hours","minutes"].concat(k.value?["seconds"]:[]),r=t.indexOf(T.value[0]),o=(r+e+t.length)%t.length,a=t.length/2;o{const t=(0,V.CG)(e),{left:n,right:r,up:o,down:a}=j.R;if([n,r].includes(t)){const r=t===n?-1:1;return D(r),void e.preventDefault()}if([o,a].includes(t)){const n=t===o?-1:1,r=T.value[0]{const n=p?p(e):[],o="start"===e,a=t||(o?R.value:w.value),l=a.hour(),i=o?r(l+1,23):r(0,l-1);return bf(n,i)},B=(e,t,n)=>{const o=v?v(e,t):[],a="start"===t,l=n||(a?R.value:w.value),i=l.hour();if(e!==i)return o;const s=l.minute(),u=a?r(s+1,59):r(0,s-1);return bf(o,u)},z=(e,t,n,o)=>{const a=h?h(e,t,n):[],l="start"===n,i=o||(l?R.value:w.value),s=i.hour(),u=i.minute();if(e!==s||t!==u)return a;const c=i.second(),d=l?r(c+1,59):r(0,c-1);return bf(a,d)},$=([e,t])=>[G(e,"start",!0,t),G(t,"end",!1,e)],{getAvailableHours:K,getAvailableMinutes:H,getAvailableSeconds:X}=Vo(F,B,z),{timePickerOptions:U,getAvailableTime:G,onSetOption:q}=Bo({getAvailableHours:K,getAvailableMinutes:H,getAvailableSeconds:X}),Y=e=>e?(0,u.cy)(e)?e.map(e=>ve(e,n.format).locale(a.value)):ve(e,n.format).locale(a.value):null,Q=()=>{if((0,u.cy)(m))return m.map(e=>ve(e).locale(a.value));const e=ve(m).locale(a.value);return[e,e.add(60,"m")]};return t("set-picker-option",["parseUserInput",Y]),t("set-picker-option",["isValidValue",L]),t("set-picker-option",["handleKeydownInput",P]),t("set-picker-option",["getDefaultValue",Q]),t("set-picker-option",["getRangeAvailableTime",$]),(e,t)=>e.actualVisible?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)([(0,s.R1)(l).b("range-picker"),(0,s.R1)(c).b("panel")])},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(l).be("range-picker","content"))},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(l).be("range-picker","cell"))},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(l).be("range-picker","header"))},(0,u.v_)((0,s.R1)(o)("el.datepicker.startTime")),3),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(b))},[(0,i.bF)(Uo,{ref:"minSpinner",role:"start","show-seconds":(0,s.R1)(k),"am-pm-mode":(0,s.R1)(E),"arrow-control":(0,s.R1)(f),"spinner-date":(0,s.R1)(w),"disabled-hours":F,"disabled-minutes":B,"disabled-seconds":z,onChange:S,onSetOption:(0,s.R1)(q),onSelectRange:I},null,8,["show-seconds","am-pm-mode","arrow-control","spinner-date","onSetOption"])],2)],2),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(l).be("range-picker","cell"))},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(l).be("range-picker","header"))},(0,u.v_)((0,s.R1)(o)("el.datepicker.endTime")),3),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(y))},[(0,i.bF)(Uo,{ref:"maxSpinner",role:"end","show-seconds":(0,s.R1)(k),"am-pm-mode":(0,s.R1)(E),"arrow-control":(0,s.R1)(f),"spinner-date":(0,s.R1)(R),"disabled-hours":F,"disabled-minutes":B,"disabled-seconds":z,onChange:M,onSetOption:(0,s.R1)(q),onSelectRange:W},null,8,["show-seconds","am-pm-mode","arrow-control","spinner-date","onSetOption"])],2)],2)],2),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(l).be("panel","footer"))},[(0,i.Lk)("button",{type:"button",class:(0,u.C4)([(0,s.R1)(l).be("panel","btn"),"cancel"]),onClick:e=>x()},(0,u.v_)((0,s.R1)(o)("el.datepicker.cancel")),11,["onClick"]),(0,i.Lk)("button",{type:"button",class:(0,u.C4)([(0,s.R1)(l).be("panel","btn"),"confirm"]),disabled:(0,s.R1)(O),onClick:e=>_()},(0,u.v_)((0,s.R1)(o)("el.datepicker.confirm")),11,["disabled","onClick"])],2)],2)):(0,i.Q3)("v-if",!0)}});var Rf=(0,m.A)(wf,[["__file","panel-time-range.vue"]]);ve.extend(jr);var Cf=(0,i.pM)({name:"ElTimePicker",install:null,props:{...Ea,isRange:Boolean},emits:[d.l4],setup(e,t){const n=(0,s.KR)(),[r,o]=e.isRange?["timerange",Rf]:["time",qo],a=e=>t.emit(d.l4,e);return(0,i.Gt)(Io,e.popperOptions),t.expose({focus:()=>{var e;null==(e=n.value)||e.focus()},blur:()=>{var e;null==(e=n.value)||e.blur()},handleOpen:()=>{var e;null==(e=n.value)||e.handleOpen()},handleClose:()=>{var e;null==(e=n.value)||e.handleClose()}}),()=>{var t;const l=null!=(t=e.format)?t:Wo;return(0,i.bF)(Na,(0,i.v6)(e,{ref:n,type:r,format:l,"onUpdate:modelValue":a}),{default:e=>(0,i.bF)(o,e,null)})}}});const xf=(0,E.GU)(Cf),kf=(0,f.b_)({format:{type:String,default:"HH:mm"},modelValue:{type:(0,f.jq)(String)},disabled:{type:Boolean,default:void 0},editable:{type:Boolean,default:!0},effect:{type:(0,f.jq)(String),default:"light"},clearable:{type:Boolean,default:!0},size:nn.mU,placeholder:String,start:{type:String,default:"09:00"},end:{type:String,default:"18:00"},step:{type:String,default:"00:30"},minTime:{type:(0,f.jq)(String)},maxTime:{type:(0,f.jq)(String)},includeEndTime:Boolean,name:String,prefixIcon:{type:(0,f.jq)([String,Object]),default:()=>O.Clock},clearIcon:{type:(0,f.jq)([String,Object]),default:()=>O.CircleClose},popperClass:{type:String,default:""},popperStyle:{type:(0,f.jq)([String,Object])},...rn.bs}),Ef=e=>{const t=(e||"").split(":");if(t.length>=2){let n=Number.parseInt(t[0],10);const r=Number.parseInt(t[1],10),o=e.toUpperCase();return o.includes("AM")&&12===n?n=0:o.includes("PM")&&12!==n&&(n+=12),{hours:n,minutes:r}}return null},_f=(e,t)=>{const n=Ef(e);if(!n)return-1;const r=Ef(t);if(!r)return-1;const o=n.minutes+60*n.hours,a=r.minutes+60*r.hours;return o===a?0:o>a?1:-1},Sf=e=>`${e}`.padStart(2,"0"),Mf=e=>`${Sf(e.hours)}:${Sf(e.minutes)}`,Lf=(e,t)=>{const n=Ef(e);if(!n)return"";const r=Ef(t);if(!r)return"";const o={hours:n.hours,minutes:n.minutes};return o.minutes+=r.minutes,o.hours+=r.hours,o.hours+=Math.floor(o.minutes/60),o.minutes=o.minutes%60,Mf(o)},Af=(0,i.pM)({name:"ElTimeSelect"}),Of=(0,i.pM)({...Af,props:kf,emits:[d.YU,"blur","focus","clear",d.l4],setup(e,{expose:t}){const n=e;ve.extend(jr);const{Option:r}=zi.AV,o=(0,g.DU)("input"),a=(0,s.KR)(),l=(0,z.CB)(),{lang:c}=(0,Ie.Ym)(),f=(0,i.EW)(()=>n.modelValue),p=(0,i.EW)(()=>{const e=Ef(n.start);return e?Mf(e):null}),v=(0,i.EW)(()=>{const e=Ef(n.end);return e?Mf(e):null}),h=(0,i.EW)(()=>{const e=Ef(n.step);return e?Mf(e):null}),m=(0,i.EW)(()=>{const e=Ef(n.minTime||"");return e?Mf(e):null}),b=(0,i.EW)(()=>{const e=Ef(n.maxTime||"");return e?Mf(e):null}),y=(0,i.EW)(()=>{var e;const t=[],r=(e,n)=>{t.push({value:e,disabled:_f(n,m.value||"-1:-1")<=0||_f(n,b.value||"100:100")>=0})};if(n.start&&n.end&&n.step){let o,a=p.value;while(a&&v.value&&_f(a,v.value)<=0)o=ve(a,"HH:mm").locale(c.value).format(n.format),r(o,a),a=Lf(a,h.value);if(n.includeEndTime&&v.value&&(null==(e=t[t.length-1])?void 0:e.value)!==v.value){const e=ve(v.value,"HH:mm").locale(c.value).format(n.format);r(e,v.value)}}return t}),w=()=>{var e,t;null==(t=null==(e=a.value)?void 0:e.blur)||t.call(e)},R=()=>{var e,t;null==(t=null==(e=a.value)?void 0:e.focus)||t.call(e)};return t({blur:w,focus:R}),(e,t)=>((0,i.uX)(),(0,i.Wv)((0,s.R1)(zi.AV),{ref_key:"select",ref:a,"model-value":(0,s.R1)(f),disabled:(0,s.R1)(l),clearable:e.clearable,"clear-icon":e.clearIcon,size:e.size,effect:e.effect,placeholder:e.placeholder,"default-first-option":"",filterable:e.editable,"empty-values":e.emptyValues,"value-on-clear":e.valueOnClear,"popper-class":e.popperClass,"popper-style":e.popperStyle,"onUpdate:modelValue":t=>e.$emit((0,s.R1)(d.l4),t),onChange:t=>e.$emit((0,s.R1)(d.YU),t),onBlur:t=>e.$emit("blur",t),onFocus:t=>e.$emit("focus",t),onClear:()=>e.$emit("clear")},{prefix:(0,i.k6)(()=>[e.prefixIcon?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:0,class:(0,u.C4)((0,s.R1)(o).e("prefix-icon"))},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)(e.prefixIcon)))]),_:1},8,["class"])):(0,i.Q3)("v-if",!0)]),default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(y),e=>((0,i.uX)(),(0,i.Wv)((0,s.R1)(r),{key:e.value,label:e.value,value:e.value,disabled:e.disabled},null,8,["label","value","disabled"]))),128))]),_:1},8,["model-value","disabled","clearable","clear-icon","size","effect","placeholder","filterable","empty-values","value-on-clear","popper-class","popper-style","onUpdate:modelValue","onChange","onBlur","onFocus","onClear"]))}});var Tf=(0,m.A)(Of,[["__file","time-select.vue"]]);const If=(0,E.GU)(Tf),Nf="timeline",Wf=(0,i.pM)({name:"ElTimeline",props:{reverse:Boolean},setup(e,{slots:t}){const n=(0,g.DU)("timeline");return(0,i.Gt)(Nf,t),()=>{var r,o;const a=(0,nt.CW)(null!=(o=null==(r=t.default)?void 0:r.call(t))?o:[]).filter(e=>{var t;return"ElTimelineItem"===(null==(t=null==e?void 0:e.type)?void 0:t.name)});return(0,i.h)("ul",{class:[n.b()]},e.reverse?a.reverse():a)}}}),Df=(0,f.b_)({timestamp:{type:String,default:""},hideTimestamp:Boolean,center:Boolean,placement:{type:String,values:["top","bottom"],default:"bottom"},type:{type:String,values:["primary","success","warning","danger","info"],default:""},color:{type:String,default:""},size:{type:String,values:["normal","large"],default:"normal"},icon:{type:Y.Ze},hollow:Boolean}),Pf=(0,i.pM)({name:"ElTimelineItem"}),Ff=(0,i.pM)({...Pf,props:Df,setup(e){const t=e,n=(0,g.DU)("timeline-item"),r=(0,i.EW)(()=>[n.e("node"),n.em("node",t.size||""),n.em("node",t.type||""),n.is("hollow",t.hollow)]);return(e,t)=>((0,i.uX)(),(0,i.CE)("li",{class:(0,u.C4)([(0,s.R1)(n).b(),{[(0,s.R1)(n).e("center")]:e.center}])},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(n).e("tail"))},null,2),e.$slots.dot?(0,i.Q3)("v-if",!0):((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(r)),style:(0,u.Tr)({backgroundColor:e.color})},[e.icon?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:0,class:(0,u.C4)((0,s.R1)(n).e("icon"))},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)(e.icon)))]),_:1},8,["class"])):(0,i.Q3)("v-if",!0)],6)),e.$slots.dot?((0,i.uX)(),(0,i.CE)("div",{key:1,class:(0,u.C4)((0,s.R1)(n).e("dot"))},[(0,i.RG)(e.$slots,"dot")],2)):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(n).e("wrapper"))},[e.hideTimestamp||"top"!==e.placement?(0,i.Q3)("v-if",!0):((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)([(0,s.R1)(n).e("timestamp"),(0,s.R1)(n).is("top")])},(0,u.v_)(e.timestamp),3)),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(n).e("content"))},[(0,i.RG)(e.$slots,"default")],2),e.hideTimestamp||"bottom"!==e.placement?(0,i.Q3)("v-if",!0):((0,i.uX)(),(0,i.CE)("div",{key:1,class:(0,u.C4)([(0,s.R1)(n).e("timestamp"),(0,s.R1)(n).is("bottom")])},(0,u.v_)(e.timestamp),3))],2)],2))}});var Bf=(0,m.A)(Ff,[["__file","timeline-item.vue"]]);const zf=(0,E.GU)(Wf,{TimelineItem:Bf}),$f=(0,E.WM)(Bf),Vf="left-check-change",jf="right-check-change",Kf=(0,f.b_)({data:{type:(0,f.jq)(Array),default:()=>[]},titles:{type:(0,f.jq)(Array),default:()=>[]},buttonTexts:{type:(0,f.jq)(Array),default:()=>[]},filterPlaceholder:String,filterMethod:{type:(0,f.jq)(Function)},leftDefaultChecked:{type:(0,f.jq)(Array),default:()=>[]},rightDefaultChecked:{type:(0,f.jq)(Array),default:()=>[]},renderContent:{type:(0,f.jq)(Function)},modelValue:{type:(0,f.jq)(Array),default:()=>[]},format:{type:(0,f.jq)(Object),default:()=>({})},filterable:Boolean,props:{type:(0,f.jq)(Object),default:()=>(0,gn.f)({label:"label",key:"key",disabled:"disabled"})},targetOrder:{type:String,values:["original","push","unshift"],default:"original"},validateEvent:{type:Boolean,default:!0}}),Hf=(e,t)=>[e,t].every(u.cy)||(0,u.cy)(e)&&(0,cr.A)(t),Xf={[d.YU]:(e,t,n)=>[e,n].every(u.cy)&&["left","right"].includes(t),[d.l4]:e=>(0,u.cy)(e),[Vf]:Hf,[jf]:Hf},Uf="checked-change",Gf=(0,f.b_)({data:Kf.data,optionRender:{type:(0,f.jq)(Function)},placeholder:String,title:String,filterable:Boolean,format:Kf.format,filterMethod:Kf.filterMethod,defaultChecked:Kf.leftDefaultChecked,props:Kf.props}),qf={[Uf]:Hf},Yf=e=>{const t={label:"label",key:"key",disabled:"disabled"};return(0,i.EW)(()=>({...t,...e.props}))},Qf=(e,t,n)=>{const r=Yf(e),o=(0,i.EW)(()=>e.data.filter(n=>{if((0,u.Tn)(e.filterMethod))return e.filterMethod(t.query,n);{const e=String(n[r.value.label]||n[r.value.key]);return e.toLowerCase().includes(t.query.toLowerCase())}})),a=(0,i.EW)(()=>o.value.filter(e=>!e[r.value.disabled])),l=(0,i.EW)(()=>{const n=t.checked.length,r=e.data.length,{noChecked:o,hasChecked:a}=e.format;return o&&a?n>0?a.replace(/\${checked}/g,n.toString()).replace(/\${total}/g,r.toString()):o.replace(/\${total}/g,r.toString()):`${n}/${r}`}),s=(0,i.EW)(()=>{const e=t.checked.length;return e>0&&e{const e=a.value.map(e=>e[r.value.key]);t.allChecked=e.length>0&&e.every(e=>t.checked.includes(e))},d=e=>{t.checked=e?a.value.map(e=>e[r.value.key]):[]};return(0,i.wB)(()=>t.checked,(e,r)=>{if(c(),t.checkChangeByUser){const t=e.concat(r).filter(t=>!e.includes(t)||!r.includes(t));n(Uf,e,t)}else n(Uf,e),t.checkChangeByUser=!0}),(0,i.wB)(a,()=>{c()}),(0,i.wB)(()=>e.data,()=>{const e=[],n=o.value.map(e=>e[r.value.key]);t.checked.forEach(t=>{n.includes(t)&&e.push(t)}),t.checkChangeByUser=!1,t.checked=e}),(0,i.wB)(()=>e.defaultChecked,(e,n)=>{if(n&&e.length===n.length&&e.every(e=>n.includes(e)))return;const o=[],l=a.value.map(e=>e[r.value.key]);e.forEach(e=>{l.includes(e)&&o.push(e)}),t.checkChangeByUser=!1,t.checked=o},{immediate:!0}),{filteredData:o,checkableData:a,checkedSummary:l,isIndeterminate:s,updateAllChecked:c,handleAllCheckedChange:d}},Zf=(0,i.pM)({name:"ElTransferPanel"}),Jf=(0,i.pM)({...Zf,props:Gf,emits:qf,setup(e,{expose:t,emit:n}){const r=e,o=(0,i.Ht)(),a=({option:e})=>e,{t:l}=(0,Ie.Ym)(),c=(0,g.DU)("transfer"),d=(0,s.Kh)({checked:[],allChecked:!1,query:"",checkChangeByUser:!0}),f=Yf(r),{filteredData:v,checkedSummary:h,isIndeterminate:m,handleAllCheckedChange:b}=Qf(r,d,n),y=(0,i.EW)(()=>!(0,p.Im)(d.query)&&(0,p.Im)(v.value)),w=(0,i.EW)(()=>!(0,p.Im)(o.default()[0].children)),{checked:R,allChecked:C,query:x}=(0,s.QW)(d);return t({query:x}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)((0,s.R1)(c).b("panel"))},[(0,i.Lk)("p",{class:(0,u.C4)((0,s.R1)(c).be("panel","header"))},[(0,i.bF)((0,s.R1)(Ct.dI),{modelValue:(0,s.R1)(C),"onUpdate:modelValue":e=>(0,s.i9)(C)?C.value=e:null,indeterminate:(0,s.R1)(m),"validate-event":!1,onChange:(0,s.R1)(b)},{default:(0,i.k6)(()=>[(0,i.eW)((0,u.v_)(e.title)+" ",1),(0,i.Lk)("span",null,(0,u.v_)((0,s.R1)(h)),1)]),_:1},8,["modelValue","onUpdate:modelValue","indeterminate","onChange"])],2),(0,i.Lk)("div",{class:(0,u.C4)([(0,s.R1)(c).be("panel","body"),(0,s.R1)(c).is("with-footer",(0,s.R1)(w))])},[e.filterable?((0,i.uX)(),(0,i.Wv)((0,s.R1)(T.WK),{key:0,modelValue:(0,s.R1)(x),"onUpdate:modelValue":e=>(0,s.i9)(x)?x.value=e:null,class:(0,u.C4)((0,s.R1)(c).be("panel","filter")),size:"default",placeholder:e.placeholder,"prefix-icon":(0,s.R1)(O.Search),clearable:"","validate-event":!1},null,8,["modelValue","onUpdate:modelValue","class","placeholder","prefix-icon"])):(0,i.Q3)("v-if",!0),(0,i.bo)((0,i.bF)((0,s.R1)(Ct.o5),{modelValue:(0,s.R1)(R),"onUpdate:modelValue":e=>(0,s.i9)(R)?R.value=e:null,"validate-event":!1,class:(0,u.C4)([(0,s.R1)(c).is("filterable",e.filterable),(0,s.R1)(c).be("panel","list")])},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)((0,s.R1)(v),t=>((0,i.uX)(),(0,i.Wv)((0,s.R1)(Ct.dI),{key:t[(0,s.R1)(f).key],class:(0,u.C4)((0,s.R1)(c).be("panel","item")),value:t[(0,s.R1)(f).key],disabled:t[(0,s.R1)(f).disabled],"validate-event":!1},{default:(0,i.k6)(()=>{var n;return[(0,i.bF)(a,{option:null==(n=e.optionRender)?void 0:n.call(e,t)},null,8,["option"])]}),_:2},1032,["class","value","disabled"]))),128))]),_:1},8,["modelValue","onUpdate:modelValue","class"]),[[M.aG,!(0,s.R1)(y)&&!(0,s.R1)(p.Im)(e.data)]]),(0,i.bo)((0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(c).be("panel","empty"))},[(0,i.RG)(e.$slots,"empty",{},()=>[(0,i.eW)((0,u.v_)((0,s.R1)(y)?(0,s.R1)(l)("el.transfer.noMatch"):(0,s.R1)(l)("el.transfer.noData")),1)])],2),[[M.aG,(0,s.R1)(y)||(0,s.R1)(p.Im)(e.data)]])],2),(0,s.R1)(w)?((0,i.uX)(),(0,i.CE)("p",{key:0,class:(0,u.C4)((0,s.R1)(c).be("panel","footer"))},[(0,i.RG)(e.$slots,"default")],2)):(0,i.Q3)("v-if",!0)],2))}});var ep=(0,m.A)(Jf,[["__file","transfer-panel.vue"]]);const tp=e=>{const t=Yf(e),n=(0,i.EW)(()=>e.data.reduce((e,n)=>(e[n[t.value.key]]=n)&&e,{})),r=(0,i.EW)(()=>e.data.filter(n=>!e.modelValue.includes(n[t.value.key]))),o=(0,i.EW)(()=>"original"===e.targetOrder?e.data.filter(n=>e.modelValue.includes(n[t.value.key])):e.modelValue.reduce((e,t)=>{const r=n.value[t];return r&&e.push(r),e},[]));return{sourceData:r,targetData:o}},np=(e,t,n)=>{const r=Yf(e),o=(e,t,r)=>{n(d.l4,e),n(d.YU,e,t,r)},a=()=>{const n=e.modelValue.slice();t.rightChecked.forEach(e=>{const t=n.indexOf(e);t>-1&&n.splice(t,1)}),o(n,"left",t.rightChecked)},l=()=>{let n=e.modelValue.slice();const a=e.data.filter(n=>{const o=n[r.value.key];return t.leftChecked.includes(o)&&!e.modelValue.includes(o)}).map(e=>e[r.value.key]);n="unshift"===e.targetOrder?a.concat(n):n.concat(a),"original"===e.targetOrder&&(n=e.data.filter(e=>n.includes(e[r.value.key])).map(e=>e[r.value.key])),o(n,"right",t.leftChecked)};return{addToLeft:a,addToRight:l}},rp=(e,t)=>{const n=(n,r)=>{e.leftChecked=n,r&&t(Vf,n,r)},r=(n,r)=>{e.rightChecked=n,r&&t(jf,n,r)};return{onSourceCheckedChange:n,onTargetCheckedChange:r}},op=(0,i.pM)({name:"ElTransfer"}),ap=(0,i.pM)({...op,props:Kf,emits:Xf,setup(e,{expose:t,emit:n}){const r=e,o=(0,i.Ht)(),{t:a}=(0,Ie.Ym)(),l=(0,g.DU)("transfer"),{formItem:c}=(0,un.j)(),d=(0,s.Kh)({leftChecked:[],rightChecked:[]}),f=Yf(r),{sourceData:v,targetData:h}=tp(r),{onSourceCheckedChange:m,onTargetCheckedChange:b}=rp(d,n),{addToLeft:y,addToRight:R}=np(r,d,n),C=(0,s.KR)(),x=(0,s.KR)(),k=e=>{switch(e){case"left":C.value.query="";break;case"right":x.value.query="";break}},E=(0,i.EW)(()=>2===r.buttonTexts.length),_=(0,i.EW)(()=>r.titles[0]||a("el.transfer.titles.0")),S=(0,i.EW)(()=>r.titles[1]||a("el.transfer.titles.1")),M=(0,i.EW)(()=>r.filterPlaceholder||a("el.transfer.filterPlaceholder"));(0,i.wB)(()=>r.modelValue,()=>{var e;r.validateEvent&&(null==(e=null==c?void 0:c.validate)||e.call(c,"change").catch(e=>(0,w.U)(e)))});const L=(0,i.EW)(()=>e=>{var t;if(r.renderContent)return r.renderContent(i.h,e);const n=((null==(t=o.default)?void 0:t.call(o,{option:e}))||[]).filter(e=>e.type!==i.Mw);return n.length?n:(0,i.h)("span",e[f.value.label]||e[f.value.key])});return t({clearQuery:k,leftPanel:C,rightPanel:x}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)((0,s.R1)(l).b())},[(0,i.bF)(ep,{ref_key:"leftPanel",ref:C,data:(0,s.R1)(v),"option-render":(0,s.R1)(L),placeholder:(0,s.R1)(M),title:(0,s.R1)(_),filterable:e.filterable,format:e.format,"filter-method":e.filterMethod,"default-checked":e.leftDefaultChecked,props:r.props,onCheckedChange:(0,s.R1)(m)},{empty:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"left-empty")]),default:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"left-footer")]),_:3},8,["data","option-render","placeholder","title","filterable","format","filter-method","default-checked","props","onCheckedChange"]),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(l).e("buttons"))},[(0,i.bF)((0,s.R1)(pe.S2),{type:"primary",class:(0,u.C4)([(0,s.R1)(l).e("button"),(0,s.R1)(l).is("with-texts",(0,s.R1)(E))]),disabled:(0,s.R1)(p.Im)(d.rightChecked),onClick:(0,s.R1)(y)},{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.ArrowLeft))]),_:1}),(0,s.R1)(p.b0)(e.buttonTexts[0])?(0,i.Q3)("v-if",!0):((0,i.uX)(),(0,i.CE)("span",{key:0},(0,u.v_)(e.buttonTexts[0]),1))]),_:1},8,["class","disabled","onClick"]),(0,i.bF)((0,s.R1)(pe.S2),{type:"primary",class:(0,u.C4)([(0,s.R1)(l).e("button"),(0,s.R1)(l).is("with-texts",(0,s.R1)(E))]),disabled:(0,s.R1)(p.Im)(d.leftChecked),onClick:(0,s.R1)(R)},{default:(0,i.k6)(()=>[(0,s.R1)(p.b0)(e.buttonTexts[1])?(0,i.Q3)("v-if",!0):((0,i.uX)(),(0,i.CE)("span",{key:0},(0,u.v_)(e.buttonTexts[1]),1)),(0,i.bF)((0,s.R1)(W.tk),null,{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(O.ArrowRight))]),_:1})]),_:1},8,["class","disabled","onClick"])],2),(0,i.bF)(ep,{ref_key:"rightPanel",ref:x,data:(0,s.R1)(h),"option-render":(0,s.R1)(L),placeholder:(0,s.R1)(M),filterable:e.filterable,format:e.format,"filter-method":e.filterMethod,title:(0,s.R1)(S),"default-checked":e.rightDefaultChecked,props:r.props,onCheckedChange:(0,s.R1)(b)},{empty:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"right-empty")]),default:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"right-footer")]),_:3},8,["data","option-render","placeholder","filterable","format","filter-method","title","default-checked","props","onCheckedChange"])],2))}});var lp=(0,m.A)(ap,[["__file","transfer.vue"]]);const ip=(0,E.GU)(lp);var sp=n(31802);const up=(e,{attrs:t,emit:n},{select:r,tree:o,key:a})=>{const l=(0,g.DU)("tree-select");(0,i.wB)(()=>e.data,()=>{e.filterable&&(0,i.dY)(()=>{var e,t;null==(t=o.value)||t.filter(null==(e=r.value)?void 0:e.states.inputValue)})},{flush:"post"});const u=e=>{var t;const n=e.at(-1);if(!n.expanded||!n.childNodes.at(-1)){const n=null==(t=o.value.el$)?void 0:t.querySelector(`[data-key="${e.at(-1).key}"]`);return void(null==n||n.focus({preventScroll:!0}))}u([n.childNodes.at(-1)])};(0,i.sV)(()=>{(0,c.MLh)(()=>{var e;return null==(e=r.value)?void 0:e.$el},"keydown",async e=>{const t=(0,V.CG)(e),{dropdownMenuVisible:n}=r.value;[j.R.down,j.R.up].includes(t)&&n&&(await(0,i.dY)(),setTimeout(()=>{var e,n,a;if(j.R.up===t){const e=o.value.store.root.childNodes;return void u(e)}null==(a=null==(n=null==(e=r.value.optionsArray[r.value.states.hoveringIndex].$el)?void 0:e.parentNode)?void 0:n.parentNode)||a.focus({preventScroll:!0})}))},{capture:!0})});const f={...(0,L.A)((0,s.QW)(e),Object.keys(zi.AV.props)),...t,class:(0,i.EW)(()=>t.class),style:(0,i.EW)(()=>t.style),"onUpdate:modelValue":e=>n(d.l4,e),valueKey:a,popperClass:(0,i.EW)(()=>{const t=[l.e("popper")];return e.popperClass&&t.push(e.popperClass),t.join(" ")}),filterMethod:(t="")=>{var n;e.filterMethod?e.filterMethod(t):e.remoteMethod?e.remoteMethod(t):null==(n=o.value)||n.filter(t)}};return f},cp=(0,i.pM)({extends:zi.P9,setup(e,t){const n=zi.P9.setup(e,t);delete n.selectOptionClick;const r=(0,i.nI)().proxy;return(0,i.dY)(()=>{n.select.states.cachedOptions.get(r.value)||n.select.onOptionCreate(r)}),(0,i.wB)(()=>t.attrs.visible,e=>{(0,i.dY)(()=>{n.states.visible=e})},{immediate:!0}),n},methods:{selectOptionClick(){this.$el.parentElement.click()}}});function dp(e){return e||0===e}function fp(e){return(0,u.cy)(e)&&e.length}function pp(e){return(0,u.cy)(e)?e:dp(e)?[e]:[]}function vp(e,t,n,r,o){for(let a=0;a{(0,i.wB)([()=>e.modelValue,a],()=>{e.showCheckbox&&(0,i.dY)(()=>{const t=a.value;t&&!(0,gt.A)(t.getCheckedKeys(),pp(e.modelValue))&&t.setCheckedKeys(pp(e.modelValue))})},{immediate:!0,deep:!0});const c=(0,i.EW)(()=>({value:l.value,label:"label",children:"children",disabled:"disabled",isLeaf:"isLeaf",...e.props})),f=(e,t)=>{var n;const r=c.value[e];return(0,u.Tn)(r)?r(t,null==(n=a.value)?void 0:n.getNode(f("value",t))):t[r]},v=pp(e.modelValue).map(t=>vp(e.data||[],e=>f("value",e)===t,e=>f("children",e),(e,t,n,r)=>r&&f("value",r))).filter(e=>dp(e)),h=(0,i.EW)(()=>{if(!e.renderAfterExpand&&!e.lazy)return[];const t=[];return hp(e.data.concat(e.cacheData),e=>{const n=f("value",e);t.push({value:n,currentLabel:f("label",e),isDisabled:f("disabled",e)})},e=>f("children",e)),t}),m=()=>{var e;return null==(e=a.value)?void 0:e.getCheckedKeys().filter(e=>{var t;const n=null==(t=a.value)?void 0:t.getNode(e);return!(0,cr.A)(n)&&(0,p.Im)(n.childNodes)})};return{...(0,L.A)((0,s.QW)(e),Object.keys(sp.qk.props)),...t,nodeKey:l,expandOnClickNode:(0,i.EW)(()=>!e.checkStrictly&&e.expandOnClickNode),defaultExpandedKeys:(0,i.EW)(()=>e.defaultExpandedKeys?e.defaultExpandedKeys.concat(v):v),renderContent:(t,{node:r,data:o,store:a})=>t(cp,{value:f("value",o),label:f("label",o),disabled:f("disabled",o),visible:r.visible},e.renderContent?()=>e.renderContent(t,{node:r,data:o,store:a}):n.default?()=>n.default({node:r,data:o,store:a}):void 0),filterNodeMethod:(t,n,r)=>{if(e.filterNodeMethod)return e.filterNodeMethod(t,n,r);if(!t)return!0;const o=new RegExp((0,Ks.qr)(t),"i");return o.test(f("label",n)||"")},onNodeClick:(n,r,a)=>{var l,i,s;if(null==(l=t.onNodeClick)||l.call(t,n,r,a),!e.showCheckbox||!e.checkOnClickNode)if(e.showCheckbox||!e.checkStrictly&&!r.isLeaf)e.expandOnClickNode&&a.proxy.handleExpandIconClick();else if(!f("disabled",n)){const e=null==(i=o.value)?void 0:i.states.options.get(f("value",n));null==(s=o.value)||s.handleOptionSelect(e)}},onCheck:(n,l)=>{var s;if(!e.showCheckbox)return;const u=f("value",n),c={};hp([a.value.store.root],e=>c[e.key]=e,e=>e.childNodes);const p=l.checkedKeys,v=e.multiple?pp(e.modelValue).filter(e=>!(e in c)&&!p.includes(e)):[],h=v.concat(p);if(e.checkStrictly)r(d.l4,e.multiple?h:h.includes(u)?u:void 0);else if(e.multiple){const e=m();r(d.l4,v.concat(e))}else{const t=vp([n],e=>!fp(f("children",e))&&!f("disabled",e),e=>f("children",e)),o=t?f("value",t):void 0,a=dp(e.modelValue)&&!!vp([n],t=>f("value",t)===e.modelValue,e=>f("children",e));r(d.l4,o===e.modelValue||a?void 0:o)}(0,i.dY)(()=>{var r;const o=pp(e.modelValue);a.value.setCheckedKeys(o),null==(r=t.onCheck)||r.call(t,n,{checkedKeys:a.value.getCheckedKeys(),checkedNodes:a.value.getCheckedNodes(),halfCheckedKeys:a.value.getHalfCheckedKeys(),halfCheckedNodes:a.value.getHalfCheckedNodes()})}),null==(s=o.value)||s.focus()},onNodeExpand:(n,o,l)=>{var s;null==(s=t.onNodeExpand)||s.call(t,n,o,l),(0,i.dY)(()=>{if(!e.checkStrictly&&e.lazy&&e.multiple&&o.checked){const t={},n=a.value.getCheckedKeys();hp([a.value.store.root],e=>t[e.key]=e,e=>e.childNodes);const o=pp(e.modelValue).filter(e=>!(e in t)&&!n.includes(e)),l=m();r(d.l4,o.concat(l))}})},cacheOptions:h}};var gp=n(4344),bp=(0,i.pM)({props:{data:{type:Array,default:()=>[]}},setup(e){const t=(0,i.WQ)(gp.u);return(0,i.wB)(()=>e.data,()=>{var n;e.data.forEach(e=>{t.states.cachedOptions.has(e.value)||t.states.cachedOptions.set(e.value,e)});const r=(null==(n=t.selectRef)?void 0:n.querySelectorAll("input"))||[];A.oc&&!Array.from(r).includes(document.activeElement)&&t.setSelected()},{flush:"post",immediate:!0}),()=>{}}});const yp=(0,i.pM)({name:"ElTreeSelect",inheritAttrs:!1,props:{...zi.AV.props,...sp.qk.props,cacheData:{type:Array,default:()=>[]}},setup(e,t){const{slots:n,expose:r}=t,o=(0,s.KR)(),a=(0,s.KR)(),l=(0,i.EW)(()=>e.nodeKey||e.valueKey||"value"),u=up(e,t,{select:o,tree:a,key:l}),{cacheOptions:c,...d}=mp(e,t,{select:o,tree:a,key:l}),f=(0,s.Kh)({});return r(f),(0,i.sV)(()=>{Object.assign(f,{...(0,L.A)(a.value,["filter","updateKeyChildren","getCheckedNodes","setCheckedNodes","getCheckedKeys","setCheckedKeys","setChecked","getHalfCheckedNodes","getHalfCheckedKeys","getCurrentKey","getCurrentNode","setCurrentKey","setCurrentNode","getNode","remove","append","insertBefore","insertAfter"]),...(0,L.A)(o.value,["focus","blur","selectedLabel"]),treeRef:a.value,selectRef:o.value})}),()=>(0,i.h)(zi.AV,(0,s.Kh)({...u,ref:e=>o.value=e}),{...n,default:()=>[(0,i.h)(bp,{data:c.value}),(0,i.h)(sp.qk,(0,s.Kh)({...d,ref:e=>a.value=e}))]})}});var wp=(0,m.A)(yp,[["__file","tree-select.vue"]]);const Rp=(0,E.GU)(wp),Cp=Symbol(),xp={key:-1,level:-1,data:{}};var kp=(e=>(e["KEY"]="id",e["LABEL"]="label",e["CHILDREN"]="children",e["DISABLED"]="disabled",e["CLASS"]="",e))(kp||{}),Ep=(e=>(e["ADD"]="add",e["DELETE"]="delete",e))(Ep||{});const _p={type:Number,default:26},Sp=(0,f.b_)({data:{type:(0,f.jq)(Array),default:()=>(0,gn.f)([])},emptyText:{type:String},height:{type:Number,default:200},props:{type:(0,f.jq)(Object),default:()=>(0,gn.f)({children:"children",label:"label",disabled:"disabled",value:"id",class:""})},highlightCurrent:Boolean,showCheckbox:Boolean,defaultCheckedKeys:{type:(0,f.jq)(Array),default:()=>(0,gn.f)([])},checkStrictly:Boolean,defaultExpandedKeys:{type:(0,f.jq)(Array),default:()=>(0,gn.f)([])},indent:{type:Number,default:16},itemSize:_p,icon:{type:Y.Ze},expandOnClickNode:{type:Boolean,default:!0},checkOnClickNode:Boolean,checkOnClickLeaf:{type:Boolean,default:!0},currentNodeKey:{type:(0,f.jq)([String,Number])},accordion:Boolean,filterMethod:{type:(0,f.jq)(Function)},perfMode:{type:Boolean,default:!0},scrollbarAlwaysOn:Boolean}),Mp=(0,f.b_)({node:{type:(0,f.jq)(Object),default:()=>(0,gn.f)(xp)},expanded:Boolean,checked:Boolean,indeterminate:Boolean,showCheckbox:Boolean,disabled:Boolean,current:Boolean,hiddenExpandIcon:Boolean,itemSize:_p}),Lp=(0,f.b_)({node:{type:(0,f.jq)(Object),required:!0}}),Ap="node-click",Op="node-drop",Tp="node-expand",Ip="node-collapse",Np="current-change",Wp="check",Dp="check-change",Pp="node-contextmenu",Fp={[Ap]:(e,t,n)=>e&&t&&n,[Op]:(e,t,n)=>e&&t&&n,[Tp]:(e,t)=>e&&t,[Ip]:(e,t)=>e&&t,[Np]:(e,t)=>e&&t,[Wp]:(e,t)=>e&&t,[Dp]:(e,t)=>e&&(0,p.Lm)(t),[Pp]:(e,t,n)=>e&&t&&n},Bp={click:(e,t)=>!(!e||!t),drop:(e,t)=>!(!e||!t),toggle:e=>!!e,check:(e,t)=>e&&(0,p.Lm)(t)};function zp(e,t){const n=(0,s.KR)(new Set),r=(0,s.KR)(new Set),{emit:o}=(0,i.nI)();(0,i.wB)([()=>t.value,()=>e.defaultCheckedKeys],()=>(0,i.dY)(()=>{w(e.defaultCheckedKeys)}),{immediate:!0});const a=()=>{if(!t.value||!e.showCheckbox||e.checkStrictly)return;const{levelTreeNodeMap:o,maxLevel:a}=t.value,l=n.value,i=new Set;for(let e=a;e>=1;--e){const t=o.get(e);t&&t.forEach(e=>{const t=e.children;let n=!e.isLeaf||e.disabled||l.has(e.key);if(t){let r=!0,o=!1;for(const e of t){const t=e.key;if(e.isEffectivelyChecked||(n=!1),l.has(t))o=!0;else{if(i.has(t)){r=!1,o=!0;break}r=!1}}r?l.add(e.key):o?(i.add(e.key),l.delete(e.key)):(l.delete(e.key),i.delete(e.key))}e.isEffectivelyChecked=n})}r.value=i},l=e=>n.value.has(e.key),u=e=>r.value.has(e.key),c=(t,r,o=!0,l=!0)=>{const i=n.value,s=t.children;!e.checkStrictly&&o&&(null==s?void 0:s.length)&&(r=s.some(e=>!e.isEffectivelyChecked));const u=(t,n)=>{i[n?Ep.ADD:Ep.DELETE](t.key);const r=t.children;!e.checkStrictly&&r&&r.forEach(e=>{e.disabled&&!e.children||u(e,n)})};u(t,r),l&&a(),o&&d(t,r)},d=(e,t)=>{const{checkedNodes:n,checkedKeys:r}=m(),{halfCheckedNodes:a,halfCheckedKeys:l}=g();o(Wp,e.data,{checkedKeys:r,checkedNodes:n,halfCheckedKeys:l,halfCheckedNodes:a}),o(Dp,e.data,t)};function f(e=!1){return m(e).checkedKeys}function p(e=!1){return m(e).checkedNodes}function v(){return g().halfCheckedKeys}function h(){return g().halfCheckedNodes}function m(r=!1){const o=[],a=[];if((null==t?void 0:t.value)&&e.showCheckbox){const{treeNodeMap:e}=t.value;n.value.forEach(t=>{const n=e.get(t);n&&(!r||r&&n.isLeaf)&&(a.push(t),o.push(n.data))})}return{checkedKeys:a,checkedNodes:o}}function g(){const n=[],o=[];if((null==t?void 0:t.value)&&e.showCheckbox){const{treeNodeMap:e}=t.value;r.value.forEach(t=>{const r=e.get(t);r&&(o.push(t),n.push(r.data))})}return{halfCheckedNodes:n,halfCheckedKeys:o}}function b(e){n.value.clear(),r.value.clear(),(0,i.dY)(()=>{w(e)})}function y(n,r){if((null==t?void 0:t.value)&&e.showCheckbox){const e=t.value.treeNodeMap.get(n);e&&c(e,r,!1)}}function w(n){if(null==t?void 0:t.value){const{treeNodeMap:r}=t.value;if(e.showCheckbox&&r&&(null==n?void 0:n.length)>0){for(const e of n){const t=r.get(e);t&&!l(t)&&c(t,!0,!1,!1)}a()}}}return{updateCheckedKeys:a,toggleCheckbox:c,isChecked:l,isIndeterminate:u,getCheckedKeys:f,getCheckedNodes:p,getHalfCheckedKeys:v,getHalfCheckedNodes:h,setChecked:y,setCheckedKeys:b}}function $p(e,t){const n=(0,s.KR)(new Set([])),r=(0,s.KR)(new Set([])),o=(0,i.EW)(()=>(0,u.Tn)(e.filterMethod));function a(a){var l;if(!o.value)return;const i=new Set,s=r.value,u=n.value,c=[],d=(null==(l=t.value)?void 0:l.treeNodes)||[],f=e.filterMethod;function p(e){e.forEach(e=>{c.push(e),(null==f?void 0:f(a,e.data,e))?c.forEach(e=>{i.add(e.key),e.expanded=!0}):(e.expanded=!1,e.isLeaf&&u.add(e.key));const t=e.children;if(t&&p(t),!e.isLeaf)if(i.has(e.key)){if(t){let n=!0;for(const e of t)if(!u.has(e.key)){n=!1;break}n?s.add(e.key):s.delete(e.key)}}else u.add(e.key);c.pop()})}return u.clear(),p(d),i}function l(e){return r.value.has(e.key)}return{hiddenExpandIconKeySet:r,hiddenNodeKeySet:n,doFilter:a,isForceHiddenExpandIcon:l}}function Vp(e,t){const n=(0,s.KR)(new Set),r=(0,s.KR)(),o=(0,s.IJ)(),a=(0,s.KR)(),{isIndeterminate:l,isChecked:c,toggleCheckbox:d,getCheckedKeys:f,getCheckedNodes:p,getHalfCheckedKeys:v,getHalfCheckedNodes:h,setChecked:m,setCheckedKeys:g}=zp(e,o),{doFilter:b,hiddenNodeKeySet:y,isForceHiddenExpandIcon:w}=$p(e,o),R=(0,i.EW)(()=>{var t;return(null==(t=e.props)?void 0:t.value)||kp.KEY}),C=(0,i.EW)(()=>{var t;return(null==(t=e.props)?void 0:t.children)||kp.CHILDREN}),x=(0,i.EW)(()=>{var t;return(null==(t=e.props)?void 0:t.disabled)||kp.DISABLED}),k=(0,i.EW)(()=>{var t;return(null==(t=e.props)?void 0:t.label)||kp.LABEL}),E=(0,i.EW)(()=>{var e;const t=n.value,r=y.value,a=[],l=(null==(e=o.value)?void 0:e.treeNodes)||[],i=[];for(let n=l.length-1;n>=0;--n)i.push(l[n]);while(i.length){const e=i.pop();if(!r.has(e.key)&&(a.push(e),e.children&&t.has(e.key)))for(let t=e.children.length-1;t>=0;--t)i.push(e.children[t])}return a}),_=(0,i.EW)(()=>E.value.length>0);function S(e){const t=new Map,r=new Map;let o=1;function a(e,l=1,i=void 0){var s;const u=[];for(const o of e){const e=A(o),c={level:l,key:e,data:o};c.label=T(o),c.parent=i;const d=L(o);c.disabled=O(o),c.isLeaf=!d||0===d.length,c.expanded=n.value.has(e),d&&d.length&&(c.children=a(d,l+1,c)),u.push(c),t.set(e,c),r.has(l)||r.set(l,[]),null==(s=r.get(l))||s.push(c)}return l>o&&(o=l),u}const l=a(e);return{treeNodeMap:t,levelTreeNodeMap:r,maxLevel:o,treeNodes:l}}function M(e){const t=b(e);t&&(n.value=t)}function L(e){return e[C.value]}function A(e){return e?e[R.value]:""}function O(e){return e[x.value]}function T(e){return e[k.value]}function I(e){const t=n.value;t.has(e.key)?z(e):B(e)}function N(e){const t=new Set,r=o.value.treeNodeMap;n.value.forEach(e=>{const t=r.get(e);n.value.delete(t.key),t.expanded=!1}),e.forEach(e=>{let n=r.get(e);while(n&&!t.has(n.key))t.add(n.key),n.expanded=!0,n=n.parent}),n.value=t}function W(n,r){t(Ap,n.data,n,r),P(n),e.expandOnClickNode&&I(n),e.showCheckbox&&(e.checkOnClickNode||n.isLeaf&&e.checkOnClickLeaf)&&!n.disabled&&d(n,!c(n),!0)}function D(e,n){t(Op,e.data,e,n)}function P(e){V(e)||(r.value=e.key,t(Np,e.data,e))}function F(e,t){d(e,t)}function B(r){const a=n.value;if(o.value&&e.accordion){const{treeNodeMap:e}=o.value;a.forEach(t=>{const n=e.get(t);r&&r.level===(null==n?void 0:n.level)&&(a.delete(t),n.expanded=!1)})}a.add(r.key);const l=U(r.key);l&&(l.expanded=!0,t(Tp,l.data,l))}function z(e){n.value.delete(e.key);const r=U(e.key);r&&(r.expanded=!1,t(Ip,r.data,r))}function $(e){return!!e.disabled}function V(e){const t=r.value;return void 0!==t&&t===e.key}function j(){var e,t;if(r.value)return null==(t=null==(e=o.value)?void 0:e.treeNodeMap.get(r.value))?void 0:t.data}function K(){return r.value}function H(e){r.value=e}function X(e){o.value=S(e)}function U(e){var t;const n=(0,u.Gv)(e)?A(e):e;return null==(t=o.value)?void 0:t.treeNodeMap.get(n)}function G(e,t="auto"){const n=U(e);n&&a.value&&a.value.scrollToItem(E.value.indexOf(n),t)}function q(e){var t;null==(t=a.value)||t.scrollTo(e)}return(0,i.wB)(()=>e.currentNodeKey,e=>{r.value=e},{immediate:!0}),(0,i.wB)(()=>e.defaultExpandedKeys,e=>{n.value=new Set(e)},{immediate:!0}),(0,i.wB)(()=>e.data,e=>{X(e)},{immediate:!0}),{tree:o,flattenTree:E,isNotEmpty:_,listRef:a,getKey:A,getChildren:L,toggleExpand:I,toggleCheckbox:d,isChecked:c,isIndeterminate:l,isDisabled:$,isCurrent:V,isForceHiddenExpandIcon:w,handleNodeClick:W,handleNodeDrop:D,handleNodeCheck:F,getCurrentNode:j,getCurrentKey:K,setCurrentKey:H,getCheckedKeys:f,getCheckedNodes:p,getHalfCheckedKeys:v,getHalfCheckedNodes:h,setChecked:m,setCheckedKeys:g,filter:M,setData:X,getNode:U,expandNode:B,collapseNode:z,setExpandedKeys:N,scrollToNode:G,scrollTo:q}}var jp=(0,i.pM)({name:"ElTreeNodeContent",props:Lp,setup(e){const t=(0,i.WQ)(Cp),n=(0,g.DU)("tree");return()=>{const r=e.node,{data:o}=r;return(null==t?void 0:t.ctx.slots.default)?t.ctx.slots.default({node:r,data:o}):(0,i.h)(Kd.$g,{tag:"span",truncated:!0,class:n.be("node","label")},()=>[null==r?void 0:r.label])}}});const Kp=(0,i.pM)({name:"ElTreeNode"}),Hp=(0,i.pM)({...Kp,props:Mp,emits:Bp,setup(e,{emit:t}){const n=e,r=(0,i.WQ)(Cp),o=(0,g.DU)("tree"),a=(0,i.EW)(()=>{var e;return null!=(e=null==r?void 0:r.props.indent)?e:16}),l=(0,i.EW)(()=>{var e;return null!=(e=null==r?void 0:r.props.icon)?e:O.CaretRight}),c=e=>{const t=null==r?void 0:r.props.props.class;if(!t)return{};let n;if((0,u.Tn)(t)){const{data:r}=e;n=t(r,e)}else n=t;return(0,u.Kg)(n)?{[n]:!0}:n},d=e=>{t("click",n.node,e)},f=e=>{t("drop",n.node,e)},p=()=>{t("toggle",n.node)},v=e=>{t("check",n.node,e)},h=e=>{var t,o,a,l;(null==(a=null==(o=null==(t=null==r?void 0:r.instance)?void 0:t.vnode)?void 0:o.props)?void 0:a["onNodeContextmenu"])&&(e.stopPropagation(),e.preventDefault()),null==r||r.ctx.emit(Pp,e,null==(l=n.node)?void 0:l.data,n.node)};return(e,t)=>{var n,r,m;return(0,i.uX)(),(0,i.CE)("div",{ref:"node$",class:(0,u.C4)([(0,s.R1)(o).b("node"),(0,s.R1)(o).is("expanded",e.expanded),(0,s.R1)(o).is("current",e.current),(0,s.R1)(o).is("focusable",!e.disabled),(0,s.R1)(o).is("checked",!e.disabled&&e.checked),c(e.node)]),role:"treeitem",tabindex:"-1","aria-expanded":e.expanded,"aria-disabled":e.disabled,"aria-checked":e.checked,"data-key":null==(n=e.node)?void 0:n.key,onClick:(0,M.D$)(d,["stop"]),onContextmenu:h,onDragover:(0,M.D$)(()=>{},["prevent"]),onDragenter:(0,M.D$)(()=>{},["prevent"]),onDrop:(0,M.D$)(f,["stop"])},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(o).be("node","content")),style:(0,u.Tr)({paddingLeft:(e.node.level-1)*(0,s.R1)(a)+"px",height:e.itemSize+"px"})},[(0,s.R1)(l)?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:0,class:(0,u.C4)([(0,s.R1)(o).is("leaf",!!(null==(r=e.node)?void 0:r.isLeaf)),(0,s.R1)(o).is("hidden",e.hiddenExpandIcon),{expanded:!(null==(m=e.node)?void 0:m.isLeaf)&&e.expanded},(0,s.R1)(o).be("node","expand-icon")]),onClick:(0,M.D$)(p,["stop"])},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)((0,s.R1)(l))))]),_:1},8,["class","onClick"])):(0,i.Q3)("v-if",!0),e.showCheckbox?((0,i.uX)(),(0,i.Wv)((0,s.R1)(Ct.dI),{key:1,"model-value":e.checked,indeterminate:e.indeterminate,disabled:e.disabled,onChange:v,onClick:(0,M.D$)(()=>{},["stop"])},null,8,["model-value","indeterminate","disabled","onClick"])):(0,i.Q3)("v-if",!0),(0,i.bF)((0,s.R1)(jp),{node:{...e.node,expanded:e.expanded}},null,8,["node"])],6)],42,["aria-expanded","aria-disabled","aria-checked","data-key","onClick","onDragover","onDragenter","onDrop"])}}});var Xp=(0,m.A)(Hp,[["__file","tree-node.vue"]]);const Up=(0,i.pM)({name:"ElTreeV2"}),Gp=(0,i.pM)({...Up,props:Sp,emits:Fp,setup(e,{expose:t,emit:n}){const r=e,o=(0,i.Ht)(),a=(0,i.EW)(()=>r.itemSize);(0,i.Gt)(Cp,{ctx:{emit:n,slots:o},props:r,instance:(0,i.nI)()}),(0,i.Gt)(Ri.w,void 0);const{t:l}=(0,Ie.Ym)(),c=(0,g.DU)("tree"),{flattenTree:d,isNotEmpty:f,listRef:p,toggleExpand:v,isIndeterminate:h,isChecked:m,isDisabled:b,isCurrent:y,isForceHiddenExpandIcon:w,handleNodeClick:R,handleNodeDrop:C,handleNodeCheck:x,toggleCheckbox:k,getCurrentNode:E,getCurrentKey:_,setCurrentKey:S,getCheckedKeys:M,getCheckedNodes:L,getHalfCheckedKeys:A,getHalfCheckedNodes:O,setChecked:T,setCheckedKeys:I,filter:N,setData:W,getNode:D,expandNode:P,collapseNode:F,setExpandedKeys:B,scrollToNode:z,scrollTo:$}=Vp(r,n);return t({toggleCheckbox:k,getCurrentNode:E,getCurrentKey:_,setCurrentKey:S,getCheckedKeys:M,getCheckedNodes:L,getHalfCheckedKeys:A,getHalfCheckedNodes:O,setChecked:T,setCheckedKeys:I,filter:N,setData:W,getNode:D,expandNode:P,collapseNode:F,setExpandedKeys:B,scrollToNode:z,scrollTo:$}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)([(0,s.R1)(c).b(),{[(0,s.R1)(c).m("highlight-current")]:e.highlightCurrent}]),role:"tree"},[(0,s.R1)(f)?((0,i.uX)(),(0,i.Wv)((0,s.R1)(Is),{key:0,ref_key:"listRef",ref:p,"class-name":(0,s.R1)(c).b("virtual-list"),data:(0,s.R1)(d),total:(0,s.R1)(d).length,height:e.height,"item-size":(0,s.R1)(a),"perf-mode":e.perfMode,"scrollbar-always-on":e.scrollbarAlwaysOn},{default:(0,i.k6)(({data:t,index:n,style:r})=>[((0,i.uX)(),(0,i.Wv)(Xp,{key:t[n].key,style:(0,u.Tr)(r),node:t[n],expanded:t[n].expanded,"show-checkbox":e.showCheckbox,checked:(0,s.R1)(m)(t[n]),indeterminate:(0,s.R1)(h)(t[n]),"item-size":(0,s.R1)(a),disabled:(0,s.R1)(b)(t[n]),current:(0,s.R1)(y)(t[n]),"hidden-expand-icon":(0,s.R1)(w)(t[n]),onClick:(0,s.R1)(R),onToggle:(0,s.R1)(v),onCheck:(0,s.R1)(x),onDrop:(0,s.R1)(C)},null,8,["style","node","expanded","show-checkbox","checked","indeterminate","item-size","disabled","current","hidden-expand-icon","onClick","onToggle","onCheck","onDrop"]))]),_:1},8,["class-name","data","total","height","item-size","perf-mode","scrollbar-always-on"])):((0,i.uX)(),(0,i.CE)("div",{key:1,class:(0,u.C4)((0,s.R1)(c).e("empty-block"))},[(0,i.RG)(e.$slots,"empty",{},()=>{var t;return[(0,i.Lk)("span",{class:(0,u.C4)((0,s.R1)(c).e("empty-text"))},(0,u.v_)(null!=(t=e.emptyText)?t:(0,s.R1)(l)("el.tree.emptyText")),3)]})],2))],2))}});var qp=(0,m.A)(Gp,[["__file","tree.vue"]]);const Yp=(0,E.GU)(qp);var Qp=n(47358);const Zp=(0,f.b_)({zIndex:{type:Number,default:9},rotate:{type:Number,default:-22},width:Number,height:Number,image:String,content:{type:(0,f.jq)([String,Array]),default:"Element Plus"},font:{type:(0,f.jq)(Object)},gap:{type:(0,f.jq)(Array),default:()=>[100,100]},offset:{type:(0,f.jq)(Array)}});function Jp(e){return e.replace(/([A-Z])/g,"-$1").toLowerCase()}function ev(e){return Object.keys(e).map(t=>`${Jp(t)}: ${e[t]};`).join(" ")}function tv(){return window.devicePixelRatio||1}const nv=(e,t)=>{let n=!1;return e.removedNodes.length&&t&&(n=Array.from(e.removedNodes).includes(t)),"attributes"===e.type&&e.target===t&&(n=!0),n},rv={left:[0,.5],start:[0,.5],center:[.5,0],right:[1,-.5],end:[1,-.5]};function ov(e,t,n=1){const r=document.createElement("canvas"),o=r.getContext("2d"),a=e*n,l=t*n;return r.setAttribute("width",`${a}px`),r.setAttribute("height",`${l}px`),o.save(),[o,r,a,l]}function av(){function e(e,t,n,r,o,a,l,i,s){const[c,d,f,p]=ov(r,o,n);let v=0;if(e instanceof HTMLImageElement)c.drawImage(e,0,0,f,p);else{const{color:t,fontSize:r,fontStyle:l,fontWeight:i,fontFamily:d,textAlign:p,textBaseline:h}=a,m=Number(r)*n;c.font=`${l} normal ${i} ${m}px/${o}px ${d}`,c.fillStyle=t,c.textAlign=p,c.textBaseline=h;const g=(0,u.cy)(e)?e:[e];if("top"!==h&&g[0]){const e=c.measureText(g[0]);c.textBaseline="top";const t=c.measureText(g[0]);v=e.actualBoundingBoxAscent-t.actualBoundingBoxAscent}null==g||g.forEach((e,t)=>{const[r,o]=rv[p];c.fillText(null!=e?e:"",f*r+s*o,t*(m+a.fontGap*n))})}const h=Math.PI/180*Number(t),m=Math.max(r,o),[g,b,y]=ov(m,m,n);function w(e,t){const n=e*Math.cos(h)-t*Math.sin(h),r=e*Math.sin(h)+t*Math.cos(h);return[n,r]}g.translate(y/2,y/2),g.rotate(h),f>0&&p>0&&g.drawImage(d,-f/2,-p/2);let R=0,C=0,x=0,k=0;const E=f/2,_=p/2,S=[[0-E,0-_],[0+E,0-_],[0+E,0+_],[0-E,0+_]];S.forEach(([e,t])=>{const[n,r]=w(e,t);R=Math.min(R,n),C=Math.max(C,n),x=Math.min(x,r),k=Math.max(k,r)});const M=R+y/2,L=x+y/2,A=C-R,O=k-x,T=l*n,I=i*n,N=2*(A+T),W=O+I,[D,P]=ov(N,W);function F(e=0,t=0){D.drawImage(b,M,L,A,O,e,t+v,A,O)}return F(),F(A+T,-O/2-I/2),F(A+T,+O/2+I/2),[P.toDataURL(),N/n,W/n]}return e}const lv=(0,i.pM)({name:"ElWatermark"}),iv=(0,i.pM)({...lv,props:Zp,setup(e){const t=e,n={position:"relative"},r=(0,i.EW)(()=>{var e,n;return null!=(n=null==(e=t.font)?void 0:e.fontGap)?n:3}),o=(0,i.EW)(()=>{var e,n;return null!=(n=null==(e=t.font)?void 0:e.color)?n:"rgba(0,0,0,.15)"}),a=(0,i.EW)(()=>{var e,n;return null!=(n=null==(e=t.font)?void 0:e.fontSize)?n:16}),l=(0,i.EW)(()=>{var e,n;return null!=(n=null==(e=t.font)?void 0:e.fontWeight)?n:"normal"}),d=(0,i.EW)(()=>{var e,n;return null!=(n=null==(e=t.font)?void 0:e.fontStyle)?n:"normal"}),f=(0,i.EW)(()=>{var e,n;return null!=(n=null==(e=t.font)?void 0:e.fontFamily)?n:"sans-serif"}),v=(0,i.EW)(()=>{var e,n;return null!=(n=null==(e=t.font)?void 0:e.textAlign)?n:"center"}),h=(0,i.EW)(()=>{var e,n;return null!=(n=null==(e=t.font)?void 0:e.textBaseline)?n:"hanging"}),m=(0,i.EW)(()=>t.gap[0]),g=(0,i.EW)(()=>t.gap[1]),b=(0,i.EW)(()=>m.value/2),y=(0,i.EW)(()=>g.value/2),w=(0,i.EW)(()=>{var e,n;return null!=(n=null==(e=t.offset)?void 0:e[0])?n:b.value}),R=(0,i.EW)(()=>{var e,n;return null!=(n=null==(e=t.offset)?void 0:e[1])?n:y.value}),C=()=>{const e={zIndex:t.zIndex,position:"absolute",left:0,top:0,width:"100%",height:"100%",pointerEvents:"none",backgroundRepeat:"repeat"};let n=w.value-b.value,r=R.value-y.value;return n>0&&(e.left=`${n}px`,e.width=`calc(100% - ${n}px)`,n=0),r>0&&(e.top=`${r}px`,e.height=`calc(100% - ${r}px)`,r=0),e.backgroundPosition=`${n}px ${r}px`,e},x=(0,s.IJ)(null),k=(0,s.IJ)(),E=(0,s.KR)(!1),_=()=>{k.value&&(k.value.remove(),k.value=void 0)},S=(e,t)=>{var n;x.value&&k.value&&(E.value=!0,k.value.setAttribute("style",ev({...C(),backgroundImage:`url('${e}')`,backgroundSize:`${Math.floor(t)}px`})),null==(n=x.value)||n.append(k.value),setTimeout(()=>{E.value=!1}))},M=e=>{let n=120,o=64,l=0;const{image:i,content:s,width:c,height:d,rotate:v}=t;if(!i&&e.measureText){e.font=`${Number(a.value)}px ${f.value}`;const t=(0,u.cy)(s)?s:[s];let i=0,c=0;t.forEach(t=>{const{width:n,fontBoundingBoxAscent:r,fontBoundingBoxDescent:o,actualBoundingBoxAscent:a,actualBoundingBoxDescent:l}=e.measureText(t),s=(0,p.b0)(r)?a+l:r+o;n>i&&(i=Math.ceil(n)),s>c&&(c=Math.ceil(s))}),n=i,o=c*t.length+(t.length-1)*r.value;const d=Math.PI/180*Number(v);l=Math.ceil(Math.abs(Math.sin(d)*o)/2),n+=l}return[null!=c?c:n,null!=d?d:o,l]},L=av(),A=()=>{const e=document.createElement("canvas"),n=e.getContext("2d"),i=t.image,s=t.content,u=t.rotate;if(n){k.value||(k.value=document.createElement("div"));const e=tv(),[t,c,p]=M(n),b=n=>{const[i,s]=L(n||"",u,e,t,c,{color:o.value,fontSize:a.value,fontStyle:d.value,fontWeight:l.value,fontFamily:f.value,fontGap:r.value,textAlign:v.value,textBaseline:h.value},m.value,g.value,p);S(i,s)};if(i){const e=new Image;e.onload=()=>{b(e)},e.onerror=()=>{b(s)},e.crossOrigin="anonymous",e.referrerPolicy="no-referrer",e.src=i}else b(s)}};(0,i.sV)(()=>{A()}),(0,i.wB)(()=>t,()=>{A()},{deep:!0,flush:"post"}),(0,i.xo)(()=>{_()});const O=e=>{E.value||e.forEach(e=>{nv(e,k.value)&&(_(),A())})};return(0,c.P1n)(x,O,{attributes:!0,subtree:!0,childList:!0}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{ref_key:"containerRef",ref:x,style:(0,u.Tr)([n])},[(0,i.RG)(e.$slots,"default")],4))}});var sv=(0,m.A)(iv,[["__file","watermark.vue"]]);const uv=(0,E.GU)(sv);var cv=n(98769);const dv=(0,f.b_)({zIndex:{type:Number,default:1001},visible:Boolean,fill:{type:String,default:"rgba(0,0,0,0.5)"},pos:{type:(0,f.jq)(Object)},targetAreaClickable:{type:Boolean,default:!0}}),fv=Math.min,pv=Math.max,vv=Math.round,hv=Math.floor,mv=e=>({x:e,y:e}),gv={left:"right",right:"left",bottom:"top",top:"bottom"},bv={start:"end",end:"start"};function yv(e,t,n){return pv(e,fv(t,n))}function wv(e,t){return"function"===typeof e?e(t):e}function Rv(e){return e.split("-")[0]}function Cv(e){return e.split("-")[1]}function xv(e){return"x"===e?"y":"x"}function kv(e){return"y"===e?"height":"width"}const Ev=new Set(["top","bottom"]);function _v(e){return Ev.has(Rv(e))?"y":"x"}function Sv(e){return xv(_v(e))}function Mv(e,t,n){void 0===n&&(n=!1);const r=Cv(e),o=Sv(e),a=kv(o);let l="x"===o?r===(n?"end":"start")?"right":"left":"start"===r?"bottom":"top";return t.reference[a]>t.floating[a]&&(l=Pv(l)),[l,Pv(l)]}function Lv(e){const t=Pv(e);return[Av(e),t,Av(t)]}function Av(e){return e.replace(/start|end/g,e=>bv[e])}const Ov=["left","right"],Tv=["right","left"],Iv=["top","bottom"],Nv=["bottom","top"];function Wv(e,t,n){switch(e){case"top":case"bottom":return n?t?Tv:Ov:t?Ov:Tv;case"left":case"right":return t?Iv:Nv;default:return[]}}function Dv(e,t,n,r){const o=Cv(e);let a=Wv(Rv(e),"start"===n,r);return o&&(a=a.map(e=>e+"-"+o),t&&(a=a.concat(a.map(Av)))),a}function Pv(e){return e.replace(/left|right|bottom|top/g,e=>gv[e])}function Fv(e){return{top:0,right:0,bottom:0,left:0,...e}}function Bv(e){return"number"!==typeof e?Fv(e):{top:e,right:e,bottom:e,left:e}}function zv(e){const{x:t,y:n,width:r,height:o}=e;return{width:r,height:o,top:n,left:t,right:t+r,bottom:n+o,x:t,y:n}}function $v(e,t,n){let{reference:r,floating:o}=e;const a=_v(t),l=Sv(t),i=kv(l),s=Rv(t),u="y"===a,c=r.x+r.width/2-o.width/2,d=r.y+r.height/2-o.height/2,f=r[i]/2-o[i]/2;let p;switch(s){case"top":p={x:c,y:r.y-o.height};break;case"bottom":p={x:c,y:r.y+r.height};break;case"right":p={x:r.x+r.width,y:d};break;case"left":p={x:r.x-o.width,y:d};break;default:p={x:r.x,y:r.y}}switch(Cv(t)){case"start":p[l]-=f*(n&&u?-1:1);break;case"end":p[l]+=f*(n&&u?-1:1);break}return p}const Vv=async(e,t,n)=>{const{placement:r="bottom",strategy:o="absolute",middleware:a=[],platform:l}=n,i=a.filter(Boolean),s=await(null==l.isRTL?void 0:l.isRTL(t));let u=await l.getElementRects({reference:e,floating:t,strategy:o}),{x:c,y:d}=$v(u,r,s),f=r,p={},v=0;for(let h=0;h({name:"arrow",options:e,async fn(t){const{x:n,y:r,placement:o,rects:a,platform:l,elements:i,middlewareData:s}=t,{element:u,padding:c=0}=wv(e,t)||{};if(null==u)return{};const d=Bv(c),f={x:n,y:r},p=Sv(o),v=kv(p),h=await l.getDimensions(u),m="y"===p,g=m?"top":"left",b=m?"bottom":"right",y=m?"clientHeight":"clientWidth",w=a.reference[v]+a.reference[p]-f[p]-a.floating[v],R=f[p]-a.reference[p],C=await(null==l.getOffsetParent?void 0:l.getOffsetParent(u));let x=C?C[y]:0;x&&await(null==l.isElement?void 0:l.isElement(C))||(x=i.floating[y]||a.floating[v]);const k=w/2-R/2,E=x/2-h[v]/2-1,_=fv(d[g],E),S=fv(d[b],E),M=_,L=x-h[v]-S,A=x/2-h[v]/2+k,O=yv(M,A,L),T=!s.arrow&&null!=Cv(o)&&A!==O&&a.reference[v]/2-(Ae<=0)){var S,M;const e=((null==(S=a.flip)?void 0:S.index)||0)+1,t=x[e];if(t){const n="alignment"===d&&b!==_v(t);if(!n||_.every(e=>_v(e.placement)!==b||e.overflows[0]>0))return{data:{index:e,overflows:_},reset:{placement:t}}}let n=null==(M=_.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0])?void 0:M.placement;if(!n)switch(p){case"bestFit":{var L;const e=null==(L=_.filter(e=>{if(C){const t=_v(e.placement);return t===b||"y"===t}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0])?void 0:L[0];e&&(n=e);break}case"initialPlacement":n=i;break}if(o!==n)return{reset:{placement:n}}}return{}}}};const Xv=new Set(["left","top"]);async function Uv(e,t){const{placement:n,platform:r,elements:o}=e,a=await(null==r.isRTL?void 0:r.isRTL(o.floating)),l=Rv(n),i=Cv(n),s="y"===_v(n),u=Xv.has(l)?-1:1,c=a&&s?-1:1,d=wv(t,e);let{mainAxis:f,crossAxis:p,alignmentAxis:v}="number"===typeof d?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return i&&"number"===typeof v&&(p="end"===i?-1*v:v),s?{x:p*c,y:f*u}:{x:f*u,y:p*c}}const Gv=function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){var n,r;const{x:o,y:a,placement:l,middlewareData:i}=t,s=await Uv(t,e);return l===(null==(n=i.offset)?void 0:n.placement)&&null!=(r=i.arrow)&&r.alignmentOffset?{}:{x:o+s.x,y:a+s.y,data:{...s,placement:l}}}}},qv=function(e){return void 0===e&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:r,placement:o}=t,{mainAxis:a=!0,crossAxis:l=!1,limiter:i={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...s}=wv(e,t),u={x:n,y:r},c=await jv(t,s),d=_v(Rv(o)),f=xv(d);let p=u[f],v=u[d];if(a){const e="y"===f?"top":"left",t="y"===f?"bottom":"right",n=p+c[e],r=p-c[t];p=yv(n,p,r)}if(l){const e="y"===d?"top":"left",t="y"===d?"bottom":"right",n=v+c[e],r=v-c[t];v=yv(n,v,r)}const h=i.fn({...t,[f]:p,[d]:v});return{...h,data:{x:h.x-n,y:h.y-r,enabled:{[f]:a,[d]:l}}}}}};function Yv(){return"undefined"!==typeof window}function Qv(e){return eh(e)?(e.nodeName||"").toLowerCase():"#document"}function Zv(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function Jv(e){var t;return null==(t=(eh(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function eh(e){return!!Yv()&&(e instanceof Node||e instanceof Zv(e).Node)}function th(e){return!!Yv()&&(e instanceof Element||e instanceof Zv(e).Element)}function nh(e){return!!Yv()&&(e instanceof HTMLElement||e instanceof Zv(e).HTMLElement)}function rh(e){return!(!Yv()||"undefined"===typeof ShadowRoot)&&(e instanceof ShadowRoot||e instanceof Zv(e).ShadowRoot)}const oh=new Set(["inline","contents"]);function ah(e){const{overflow:t,overflowX:n,overflowY:r,display:o}=bh(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!oh.has(o)}const lh=new Set(["table","td","th"]);function ih(e){return lh.has(Qv(e))}const sh=[":popover-open",":modal"];function uh(e){return sh.some(t=>{try{return e.matches(t)}catch(n){return!1}})}const ch=["transform","translate","scale","rotate","perspective"],dh=["transform","translate","scale","rotate","perspective","filter"],fh=["paint","layout","strict","content"];function ph(e){const t=hh(),n=th(e)?bh(e):e;return ch.some(e=>!!n[e]&&"none"!==n[e])||!!n.containerType&&"normal"!==n.containerType||!t&&!!n.backdropFilter&&"none"!==n.backdropFilter||!t&&!!n.filter&&"none"!==n.filter||dh.some(e=>(n.willChange||"").includes(e))||fh.some(e=>(n.contain||"").includes(e))}function vh(e){let t=wh(e);while(nh(t)&&!gh(t)){if(ph(t))return t;if(uh(t))return null;t=wh(t)}return null}function hh(){return!("undefined"===typeof CSS||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}const mh=new Set(["html","body","#document"]);function gh(e){return mh.has(Qv(e))}function bh(e){return Zv(e).getComputedStyle(e)}function yh(e){return th(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function wh(e){if("html"===Qv(e))return e;const t=e.assignedSlot||e.parentNode||rh(e)&&e.host||Jv(e);return rh(t)?t.host:t}function Rh(e){const t=wh(e);return gh(t)?e.ownerDocument?e.ownerDocument.body:e.body:nh(t)&&ah(t)?t:Rh(t)}function Ch(e,t,n){var r;void 0===t&&(t=[]),void 0===n&&(n=!0);const o=Rh(e),a=o===(null==(r=e.ownerDocument)?void 0:r.body),l=Zv(o);if(a){const e=xh(l);return t.concat(l,l.visualViewport||[],ah(o)?o:[],e&&n?Ch(e):[])}return t.concat(o,Ch(o,[],n))}function xh(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function kh(e){const t=bh(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const o=nh(e),a=o?e.offsetWidth:n,l=o?e.offsetHeight:r,i=vv(n)!==a||vv(r)!==l;return i&&(n=a,r=l),{width:n,height:r,$:i}}function Eh(e){return th(e)?e:e.contextElement}function _h(e){const t=Eh(e);if(!nh(t))return mv(1);const n=t.getBoundingClientRect(),{width:r,height:o,$:a}=kh(t);let l=(a?vv(n.width):n.width)/r,i=(a?vv(n.height):n.height)/o;return l&&Number.isFinite(l)||(l=1),i&&Number.isFinite(i)||(i=1),{x:l,y:i}}const Sh=mv(0);function Mh(e){const t=Zv(e);return hh()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:Sh}function Lh(e,t,n){return void 0===t&&(t=!1),!(!n||t&&n!==Zv(e))&&t}function Ah(e,t,n,r){void 0===t&&(t=!1),void 0===n&&(n=!1);const o=e.getBoundingClientRect(),a=Eh(e);let l=mv(1);t&&(r?th(r)&&(l=_h(r)):l=_h(e));const i=Lh(a,n,r)?Mh(a):mv(0);let s=(o.left+i.x)/l.x,u=(o.top+i.y)/l.y,c=o.width/l.x,d=o.height/l.y;if(a){const e=Zv(a),t=r&&th(r)?Zv(r):r;let n=e,o=xh(n);while(o&&r&&t!==n){const e=_h(o),t=o.getBoundingClientRect(),r=bh(o),a=t.left+(o.clientLeft+parseFloat(r.paddingLeft))*e.x,l=t.top+(o.clientTop+parseFloat(r.paddingTop))*e.y;s*=e.x,u*=e.y,c*=e.x,d*=e.y,s+=a,u+=l,n=Zv(o),o=xh(n)}}return zv({width:c,height:d,x:s,y:u})}function Oh(e,t){const n=yh(e).scrollLeft;return t?t.left+n:Ah(Jv(e)).left+n}function Th(e,t){const n=e.getBoundingClientRect(),r=n.left+t.scrollLeft-Oh(e,n),o=n.top+t.scrollTop;return{x:r,y:o}}function Ih(e){let{elements:t,rect:n,offsetParent:r,strategy:o}=e;const a="fixed"===o,l=Jv(r),i=!!t&&uh(t.floating);if(r===l||i&&a)return n;let s={scrollLeft:0,scrollTop:0},u=mv(1);const c=mv(0),d=nh(r);if((d||!d&&!a)&&(("body"!==Qv(r)||ah(l))&&(s=yh(r)),nh(r))){const e=Ah(r);u=_h(r),c.x=e.x+r.clientLeft,c.y=e.y+r.clientTop}const f=!l||d||a?mv(0):Th(l,s);return{width:n.width*u.x,height:n.height*u.y,x:n.x*u.x-s.scrollLeft*u.x+c.x+f.x,y:n.y*u.y-s.scrollTop*u.y+c.y+f.y}}function Nh(e){return Array.from(e.getClientRects())}function Wh(e){const t=Jv(e),n=yh(e),r=e.ownerDocument.body,o=pv(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),a=pv(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight);let l=-n.scrollLeft+Oh(e);const i=-n.scrollTop;return"rtl"===bh(r).direction&&(l+=pv(t.clientWidth,r.clientWidth)-o),{width:o,height:a,x:l,y:i}}const Dh=25;function Ph(e,t){const n=Zv(e),r=Jv(e),o=n.visualViewport;let a=r.clientWidth,l=r.clientHeight,i=0,s=0;if(o){a=o.width,l=o.height;const e=hh();(!e||e&&"fixed"===t)&&(i=o.offsetLeft,s=o.offsetTop)}const u=Oh(r);if(u<=0){const e=r.ownerDocument,t=e.body,n=getComputedStyle(t),o="CSS1Compat"===e.compatMode&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,l=Math.abs(r.clientWidth-t.clientWidth-o);l<=Dh&&(a-=l)}else u<=Dh&&(a+=u);return{width:a,height:l,x:i,y:s}}const Fh=new Set(["absolute","fixed"]);function Bh(e,t){const n=Ah(e,!0,"fixed"===t),r=n.top+e.clientTop,o=n.left+e.clientLeft,a=nh(e)?_h(e):mv(1),l=e.clientWidth*a.x,i=e.clientHeight*a.y,s=o*a.x,u=r*a.y;return{width:l,height:i,x:s,y:u}}function zh(e,t,n){let r;if("viewport"===t)r=Ph(e,n);else if("document"===t)r=Wh(Jv(e));else if(th(t))r=Bh(t,n);else{const n=Mh(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return zv(r)}function $h(e,t){const n=wh(e);return!(n===t||!th(n)||gh(n))&&("fixed"===bh(n).position||$h(n,t))}function Vh(e,t){const n=t.get(e);if(n)return n;let r=Ch(e,[],!1).filter(e=>th(e)&&"body"!==Qv(e)),o=null;const a="fixed"===bh(e).position;let l=a?wh(e):e;while(th(l)&&!gh(l)){const t=bh(l),n=ph(l);n||"fixed"!==t.position||(o=null);const i=a?!n&&!o:!n&&"static"===t.position&&!!o&&Fh.has(o.position)||ah(l)&&!n&&$h(e,l);i?r=r.filter(e=>e!==l):o=t,l=wh(l)}return t.set(e,r),r}function jh(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e;const a="clippingAncestors"===n?uh(t)?[]:Vh(t,this._c):[].concat(n),l=[...a,r],i=l[0],s=l.reduce((e,n)=>{const r=zh(t,n,o);return e.top=pv(r.top,e.top),e.right=fv(r.right,e.right),e.bottom=fv(r.bottom,e.bottom),e.left=pv(r.left,e.left),e},zh(t,i,o));return{width:s.right-s.left,height:s.bottom-s.top,x:s.left,y:s.top}}function Kh(e){const{width:t,height:n}=kh(e);return{width:t,height:n}}function Hh(e,t,n){const r=nh(t),o=Jv(t),a="fixed"===n,l=Ah(e,!0,a,t);let i={scrollLeft:0,scrollTop:0};const s=mv(0);function u(){s.x=Oh(o)}if(r||!r&&!a)if(("body"!==Qv(t)||ah(o))&&(i=yh(t)),r){const e=Ah(t,!0,a,t);s.x=e.x+t.clientLeft,s.y=e.y+t.clientTop}else o&&u();a&&!r&&o&&u();const c=!o||r||a?mv(0):Th(o,i),d=l.left+i.scrollLeft-s.x-c.x,f=l.top+i.scrollTop-s.y-c.y;return{x:d,y:f,width:l.width,height:l.height}}function Xh(e){return"static"===bh(e).position}function Uh(e,t){if(!nh(e)||"fixed"===bh(e).position)return null;if(t)return t(e);let n=e.offsetParent;return Jv(e)===n&&(n=n.ownerDocument.body),n}function Gh(e,t){const n=Zv(e);if(uh(e))return n;if(!nh(e)){let t=wh(e);while(t&&!gh(t)){if(th(t)&&!Xh(t))return t;t=wh(t)}return n}let r=Uh(e,t);while(r&&ih(r)&&Xh(r))r=Uh(r,t);return r&&gh(r)&&Xh(r)&&!ph(r)?n:r||vh(e)||n}const qh=async function(e){const t=this.getOffsetParent||Gh,n=this.getDimensions,r=await n(e.floating);return{reference:Hh(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function Yh(e){return"rtl"===bh(e).direction}const Qh={convertOffsetParentRelativeRectToViewportRelativeRect:Ih,getDocumentElement:Jv,getClippingRect:jh,getOffsetParent:Gh,getElementRects:qh,getClientRects:Nh,getDimensions:Kh,getScale:_h,isElement:th,isRTL:Yh};function Zh(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function Jh(e,t){let n,r=null;const o=Jv(e);function a(){var e;clearTimeout(n),null==(e=r)||e.disconnect(),r=null}function l(i,s){void 0===i&&(i=!1),void 0===s&&(s=1),a();const u=e.getBoundingClientRect(),{left:c,top:d,width:f,height:p}=u;if(i||t(),!f||!p)return;const v=hv(d),h=hv(o.clientWidth-(c+f)),m=hv(o.clientHeight-(d+p)),g=hv(c),b=-v+"px "+-h+"px "+-m+"px "+-g+"px",y={rootMargin:b,threshold:pv(0,fv(1,s))||1};let w=!0;function R(t){const r=t[0].intersectionRatio;if(r!==s){if(!w)return l();r?l(!1,r):n=setTimeout(()=>{l(!1,1e-7)},1e3)}1!==r||Zh(u,e.getBoundingClientRect())||l(),w=!1}try{r=new IntersectionObserver(R,{...y,root:o.ownerDocument})}catch(C){r=new IntersectionObserver(R,y)}r.observe(e)}return l(!0),a}function em(e,t,n,r){void 0===r&&(r={});const{ancestorScroll:o=!0,ancestorResize:a=!0,elementResize:l="function"===typeof ResizeObserver,layoutShift:i="function"===typeof IntersectionObserver,animationFrame:s=!1}=r,u=Eh(e),c=o||a?[...u?Ch(u):[],...Ch(t)]:[];c.forEach(e=>{o&&e.addEventListener("scroll",n,{passive:!0}),a&&e.addEventListener("resize",n)});const d=u&&i?Jh(u,n):null;let f,p=-1,v=null;l&&(v=new ResizeObserver(e=>{let[r]=e;r&&r.target===u&&v&&(v.unobserve(t),cancelAnimationFrame(p),p=requestAnimationFrame(()=>{var e;null==(e=v)||e.observe(t)})),n()}),u&&!s&&v.observe(u),v.observe(t));let h=s?Ah(e):null;function m(){const t=Ah(e);h&&!Zh(h,t)&&n(),h=t,f=requestAnimationFrame(m)}return s&&m(),n(),()=>{var e;c.forEach(e=>{o&&e.removeEventListener("scroll",n),a&&e.removeEventListener("resize",n)}),null==d||d(),null==(e=v)||e.disconnect(),v=null,s&&cancelAnimationFrame(f)}}const tm=jv,nm=Gv,rm=qv,om=Hv,am=Kv,lm=(e,t,n)=>{const r=new Map,o={platform:Qh,...n},a={...o.platform,_c:r};return Vv(e,t,{...o,platform:a})};var im=n(64340);const sm=(e,t,n,r,o)=>{const a=(0,s.KR)(null),l=()=>{let t;return t=(0,u.Kg)(e.value)?document.querySelector(e.value):(0,u.Tn)(e.value)?e.value():e.value,t},c=()=>{const e=l();if(!e||!t.value)return void(a.value=null);cm(e)||e.scrollIntoView(o.value);const{left:n,top:r,width:i,height:s}=e.getBoundingClientRect();a.value={left:n,top:r,width:i,height:s,radius:0}};(0,i.sV)(()=>{(0,i.wB)([t,e],()=>{c()},{immediate:!0}),window.addEventListener("resize",c)}),(0,i.xo)(()=>{window.removeEventListener("resize",c)});const d=e=>{var t;return null!=(t=(0,u.cy)(n.value.offset)?n.value.offset[e]:n.value.offset)?t:6},f=(0,i.EW)(()=>{var e;if(!a.value)return a.value;const t=d(0),r=d(1),o=(null==(e=n.value)?void 0:e.radius)||2;return{left:a.value.left-t,top:a.value.top-r,width:a.value.width+2*t,height:a.value.height+2*r,radius:o}}),p=(0,i.EW)(()=>{const e=l();return r.value&&e&&window.DOMRect?{getBoundingClientRect(){var e,t,n,r;return window.DOMRect.fromRect({width:(null==(e=f.value)?void 0:e.width)||0,height:(null==(t=f.value)?void 0:t.height)||0,x:(null==(n=f.value)?void 0:n.left)||0,y:(null==(r=f.value)?void 0:r.top)||0})}}:e||void 0});return{mergedPosInfo:f,triggerTarget:p}},um=Symbol("ElTour");function cm(e){const t=window.innerWidth||document.documentElement.clientWidth,n=window.innerHeight||document.documentElement.clientHeight,{top:r,right:o,bottom:a,left:l}=e.getBoundingClientRect();return r>=0&&l>=0&&o<=t&&a<=n}const dm=(e,t,n,r,o,a,l,u)=>{const c=(0,s.KR)(),d=(0,s.KR)(),f=(0,s.KR)({}),p={x:c,y:d,placement:r,strategy:o,middlewareData:f},v=(0,i.EW)(()=>{const e=[nm((0,s.R1)(a)),om(),rm(),fm()];return(0,s.R1)(u)&&(0,s.R1)(n)&&e.push(am({element:(0,s.R1)(n)})),e}),h=async()=>{if(!A.oc)return;const n=(0,s.R1)(e),a=(0,s.R1)(t);if(!n||!a)return;const l=await lm(n,a,{placement:(0,s.R1)(r),strategy:(0,s.R1)(o),middleware:(0,s.R1)(v)});(0,im.YD)(p).forEach(e=>{p[e].value=l[e]})},m=(0,i.EW)(()=>{if(!(0,s.R1)(e))return{position:"fixed",top:"50%",left:"50%",transform:"translate3d(-50%, -50%, 0)",maxWidth:"100vw",zIndex:(0,s.R1)(l)};const{overflow:t}=(0,s.R1)(f);return{position:(0,s.R1)(o),zIndex:(0,s.R1)(l),top:null!=(0,s.R1)(d)?`${(0,s.R1)(d)}px`:"",left:null!=(0,s.R1)(c)?`${(0,s.R1)(c)}px`:"",maxWidth:(null==t?void 0:t.maxWidth)?`${null==t?void 0:t.maxWidth}px`:""}}),g=(0,i.EW)(()=>{if(!(0,s.R1)(u))return{};const{arrow:e}=(0,s.R1)(f);return{left:null!=(null==e?void 0:e.x)?`${null==e?void 0:e.x}px`:"",top:null!=(null==e?void 0:e.y)?`${null==e?void 0:e.y}px`:""}});let b;return(0,i.sV)(()=>{const n=(0,s.R1)(e),r=(0,s.R1)(t);n&&r&&(b=em(n,r,h)),(0,i.nT)(()=>{h()})}),(0,i.xo)(()=>{b&&b()}),{update:h,contentStyle:m,arrowStyle:g}},fm=()=>({name:"overflow",async fn(e){const t=await tm(e);let n=0;t.left>0&&(n=t.left),t.right>0&&(n=t.right);const r=e.rects.floating.width;return{data:{maxWidth:r-n}}}});var pm=n(32667);const vm=(0,i.pM)({name:"ElTourMask",inheritAttrs:!1}),hm=(0,i.pM)({...vm,props:dv,setup(e){const t=e,{ns:n}=(0,i.WQ)(um),r=(0,i.EW)(()=>{var e,n;return null!=(n=null==(e=t.pos)?void 0:e.radius)?n:2}),o=(0,i.EW)(()=>{const e=r.value,t=`a${e},${e} 0 0 1`;return{topRight:`${t} ${e},${e}`,bottomRight:`${t} ${-e},${e}`,bottomLeft:`${t} ${-e},${-e}`,topLeft:`${t} ${e},${-e}`}}),{width:a,height:l}=(0,c.lWr)(),d=(0,i.EW)(()=>{const e=a.value,n=l.value,i=o.value,s=`M${e},0 L0,0 L0,${n} L${e},${n} L${e},0 Z`,u=r.value;return t.pos?`${s} M${t.pos.left+u},${t.pos.top} h${t.pos.width-2*u} ${i.topRight} v${t.pos.height-2*u} ${i.bottomRight} h${-t.pos.width+2*u} ${i.bottomLeft} v${-t.pos.height+2*u} ${i.topLeft} z`:s}),f=(0,i.EW)(()=>({position:"fixed",left:0,right:0,top:0,bottom:0,zIndex:t.zIndex,pointerEvents:t.pos&&t.targetAreaClickable?"none":"auto"})),p=(0,i.EW)(()=>({fill:t.fill,pointerEvents:"auto",cursor:"auto"}));return(0,pm.t)((0,s.lW)(t,"visible"),{ns:n}),(e,t)=>e.visible?((0,i.uX)(),(0,i.CE)("div",(0,i.v6)({key:0,class:(0,s.R1)(n).e("mask"),style:(0,s.R1)(f)},e.$attrs),[((0,i.uX)(),(0,i.CE)("svg",{style:{width:"100%",height:"100%"}},[(0,i.Lk)("path",{class:(0,u.C4)((0,s.R1)(n).e("hollow")),style:(0,u.Tr)((0,s.R1)(p)),d:(0,s.R1)(d)},null,14,["d"])]))],16)):(0,i.Q3)("v-if",!0)}});var mm=(0,m.A)(hm,[["__file","mask.vue"]]),gm=n(76834);const bm=["absolute","fixed"],ym=["top-start","top-end","top","bottom-start","bottom-end","bottom","left-start","left-end","left","right-start","right-end","right"],wm=(0,f.b_)({placement:{type:(0,f.jq)(String),values:ym,default:"bottom"},reference:{type:(0,f.jq)(Object),default:null},strategy:{type:(0,f.jq)(String),values:bm,default:"absolute"},offset:{type:Number,default:10},showArrow:Boolean,zIndex:{type:Number,default:2001}}),Rm={close:()=>!0},Cm=(0,i.pM)({name:"ElTourContent"}),xm=(0,i.pM)({...Cm,props:wm,emits:Rm,setup(e,{emit:t}){const n=e,r=(0,s.KR)(n.placement),o=(0,s.KR)(n.strategy),a=(0,s.KR)(null),l=(0,s.KR)(null);(0,i.wB)(()=>n.placement,()=>{r.value=n.placement});const{contentStyle:c,arrowStyle:d}=dm((0,s.lW)(n,"reference"),a,l,r,o,(0,s.lW)(n,"offset"),(0,s.lW)(n,"zIndex"),(0,s.lW)(n,"showArrow")),f=(0,i.EW)(()=>r.value.split("-")[0]),{ns:p}=(0,i.WQ)(um),v=()=>{t("close")},h=e=>{"pointer"===e.detail.focusReason&&e.preventDefault()};return(e,t)=>((0,i.uX)(),(0,i.CE)("div",{ref_key:"contentRef",ref:a,style:(0,u.Tr)((0,s.R1)(c)),class:(0,u.C4)((0,s.R1)(p).e("content")),"data-side":(0,s.R1)(f),tabindex:"-1"},[(0,i.bF)((0,s.R1)(gm.A),{loop:"",trapped:"","focus-start-el":"container","focus-trap-el":a.value||void 0,onReleaseRequested:v,onFocusoutPrevented:h},{default:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"default")]),_:3},8,["focus-trap-el"]),e.showArrow?((0,i.uX)(),(0,i.CE)("span",{key:0,ref_key:"arrowRef",ref:l,style:(0,u.Tr)((0,s.R1)(d)),class:(0,u.C4)((0,s.R1)(p).e("arrow"))},null,6)):(0,i.Q3)("v-if",!0)],14,["data-side"]))}});var km=(0,m.A)(xm,[["__file","content.vue"]]),Em=(0,i.pM)({name:"ElTourSteps",props:{current:{type:Number,default:0}},emits:["update-total"],setup(e,{slots:t,emit:n}){let r=0;return()=>{var o,a;const l=null==(o=t.default)?void 0:o.call(t),i=[];let s=0;function c(e){(0,u.cy)(e)&&e.forEach(e=>{var t;const n=null==(t=(null==e?void 0:e.type)||{})?void 0:t.name;"ElTourStep"===n&&(i.push(e),s+=1)})}return l.length&&c((0,nt.CW)(null==(a=l[0])?void 0:a.children)),r!==s&&(r=s,n("update-total",s)),i.length?i[e.current]:null}}}),_m=n(38299);const Sm=(0,f.b_)({modelValue:Boolean,current:{type:Number,default:0},showArrow:{type:Boolean,default:!0},showClose:{type:Boolean,default:!0},closeIcon:{type:Y.Ze},placement:wm.placement,contentStyle:{type:(0,f.jq)([Object])},mask:{type:(0,f.jq)([Boolean,Object]),default:!0},gap:{type:(0,f.jq)(Object),default:()=>({offset:6,radius:2})},zIndex:{type:Number},scrollIntoViewOptions:{type:(0,f.jq)([Boolean,Object]),default:()=>({block:"center"})},type:{type:(0,f.jq)(String)},appendTo:{type:_m.k.to.type,default:"body"},closeOnPressEscape:{type:Boolean,default:!0},targetAreaClickable:{type:Boolean,default:!0}}),Mm={[d.l4]:e=>(0,p.Lm)(e),["update:current"]:e=>(0,p.Et)(e),close:e=>(0,p.Et)(e),finish:()=>!0,change:e=>(0,p.Et)(e)};var Lm=n(62401);const Am=(0,i.pM)({name:"ElTour"}),Om=(0,i.pM)({...Am,props:Sm,emits:Mm,setup(e,{emit:t}){const n=e,r=(0,g.DU)("tour"),o=(0,s.KR)(0),a=(0,s.KR)(),l=(0,c.hRP)(n,"current",t,{passive:!0}),f=(0,i.EW)(()=>{var e;return null==(e=a.value)?void 0:e.target}),v=(0,i.EW)(()=>[r.b(),"primary"===x.value?r.m("primary"):""]),h=(0,i.EW)(()=>{var e;return(null==(e=a.value)?void 0:e.placement)||n.placement}),m=(0,i.EW)(()=>{var e,t;return null!=(t=null==(e=a.value)?void 0:e.contentStyle)?t:n.contentStyle}),b=(0,i.EW)(()=>{var e,t;return null!=(t=null==(e=a.value)?void 0:e.mask)?t:n.mask}),y=(0,i.EW)(()=>!!b.value&&n.modelValue),w=(0,i.EW)(()=>(0,p.Lm)(b.value)?void 0:b.value),R=(0,i.EW)(()=>{var e,t;return!!f.value&&(null!=(t=null==(e=a.value)?void 0:e.showArrow)?t:n.showArrow)}),C=(0,i.EW)(()=>{var e,t;return null!=(t=null==(e=a.value)?void 0:e.scrollIntoViewOptions)?t:n.scrollIntoViewOptions}),x=(0,i.EW)(()=>{var e,t;return null!=(t=null==(e=a.value)?void 0:e.type)?t:n.type}),{nextZIndex:k}=(0,Lm.YK)(),E=k(),_=(0,i.EW)(()=>{var e;return null!=(e=n.zIndex)?e:E}),{mergedPosInfo:S,triggerTarget:M}=sm(f,(0,s.lW)(n,"modelValue"),(0,s.lW)(n,"gap"),b,C);(0,i.wB)(()=>n.modelValue,e=>{e||(l.value=0)});const L=()=>{n.closeOnPressEscape&&(t(d.l4,!1),t("close",l.value))},A=e=>{o.value=e},O=(0,i.Ht)();return(0,i.Gt)(um,{currentStep:a,current:l,total:o,showClose:(0,s.lW)(n,"showClose"),closeIcon:(0,s.lW)(n,"closeIcon"),mergedType:x,ns:r,slots:O,updateModelValue(e){t(d.l4,e)},onClose(){t("close",l.value)},onFinish(){t("finish")},onChange(){t(d.YU,l.value)}}),(e,t)=>((0,i.uX)(),(0,i.CE)(i.FK,null,[(0,i.bF)((0,s.R1)(cv.Nr),{to:e.appendTo},{default:(0,i.k6)(()=>{var t,n;return[(0,i.Lk)("div",(0,i.v6)({class:(0,s.R1)(v)},e.$attrs),[(0,i.bF)(mm,{visible:(0,s.R1)(y),fill:null==(t=(0,s.R1)(w))?void 0:t.color,style:(0,u.Tr)(null==(n=(0,s.R1)(w))?void 0:n.style),pos:(0,s.R1)(S),"z-index":(0,s.R1)(_),"target-area-clickable":e.targetAreaClickable},null,8,["visible","fill","style","pos","z-index","target-area-clickable"]),e.modelValue?((0,i.uX)(),(0,i.Wv)(km,{key:(0,s.R1)(l),reference:(0,s.R1)(M),placement:(0,s.R1)(h),"show-arrow":(0,s.R1)(R),"z-index":(0,s.R1)(_),style:(0,u.Tr)((0,s.R1)(m)),onClose:L},{default:(0,i.k6)(()=>[(0,i.bF)((0,s.R1)(Em),{current:(0,s.R1)(l),onUpdateTotal:A},{default:(0,i.k6)(()=>[(0,i.RG)(e.$slots,"default")]),_:3},8,["current"])]),_:3},8,["reference","placement","show-arrow","z-index","style"])):(0,i.Q3)("v-if",!0)],16)]}),_:3},8,["to"]),(0,i.Q3)(" just for IDE "),(0,i.Q3)("v-if",!0)],64))}});var Tm=(0,m.A)(Om,[["__file","tour.vue"]]),Im=n(71074);const Nm=(0,f.b_)({target:{type:(0,f.jq)([String,Object,Function])},title:String,description:String,showClose:{type:Boolean,default:void 0},closeIcon:{type:Y.Ze},showArrow:{type:Boolean,default:void 0},placement:wm.placement,mask:{type:(0,f.jq)([Boolean,Object]),default:void 0},contentStyle:{type:(0,f.jq)([Object])},prevButtonProps:{type:(0,f.jq)(Object)},nextButtonProps:{type:(0,f.jq)(Object)},scrollIntoViewOptions:{type:(0,f.jq)([Boolean,Object]),default:void 0},type:{type:(0,f.jq)(String)}}),Wm={close:()=>!0},Dm=(0,i.pM)({name:"ElTourStep"}),Pm=(0,i.pM)({...Dm,props:Nm,emits:Wm,setup(e,{emit:t}){const n=e,{Close:r}=Y.H2,{t:o}=(0,Ie.Ym)(),{currentStep:a,current:l,total:c,showClose:d,closeIcon:f,mergedType:p,ns:v,slots:h,updateModelValue:m,onClose:g,onFinish:b,onChange:y}=(0,i.WQ)(um);(0,i.wB)(n,e=>{a.value=e},{immediate:!0});const w=(0,i.EW)(()=>{var e;return null!=(e=n.showClose)?e:d.value}),R=(0,i.EW)(()=>{var e,t;return null!=(t=null!=(e=n.closeIcon)?e:f.value)?t:r}),C=e=>{if(e)return(0,Im.A)(e,["children","onClick"])},x=()=>{var e,t;l.value-=1,(null==(e=n.prevButtonProps)?void 0:e.onClick)&&(null==(t=n.prevButtonProps)||t.onClick()),y()},k=()=>{var e;l.value>=c.value-1?E():l.value+=1,(null==(e=n.nextButtonProps)?void 0:e.onClick)&&n.nextButtonProps.onClick(),y()},E=()=>{_(),b()},_=()=>{m(!1),g(),t("close")},S=e=>{const t=e.target;if(null==t?void 0:t.isContentEditable)return;const n=(0,V.CG)(e);switch(n){case j.R.left:e.preventDefault(),l.value>0&&x();break;case j.R.right:e.preventDefault(),k();break}};return(0,i.sV)(()=>{window.addEventListener("keydown",S)}),(0,i.xo)(()=>{window.removeEventListener("keydown",S)}),(e,t)=>((0,i.uX)(),(0,i.CE)(i.FK,null,[(0,s.R1)(w)?((0,i.uX)(),(0,i.CE)("button",{key:0,"aria-label":(0,s.R1)(o)("el.tour.close"),class:(0,u.C4)((0,s.R1)(v).e("closebtn")),type:"button",onClick:_},[(0,i.bF)((0,s.R1)(W.tk),{class:(0,u.C4)((0,s.R1)(v).e("close"))},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)((0,s.R1)(R))))]),_:1},8,["class"])],10,["aria-label"])):(0,i.Q3)("v-if",!0),(0,i.Lk)("header",{class:(0,u.C4)([(0,s.R1)(v).e("header"),{"show-close":(0,s.R1)(d)}])},[(0,i.RG)(e.$slots,"header",{},()=>[(0,i.Lk)("span",{role:"heading",class:(0,u.C4)((0,s.R1)(v).e("title"))},(0,u.v_)(e.title),3)])],2),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(v).e("body"))},[(0,i.RG)(e.$slots,"default",{},()=>[(0,i.Lk)("span",null,(0,u.v_)(e.description),1)])],2),(0,i.Lk)("footer",{class:(0,u.C4)((0,s.R1)(v).e("footer"))},[(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(v).b("indicators"))},[(0,s.R1)(h).indicators?((0,i.uX)(),(0,i.Wv)((0,i.$y)((0,s.R1)(h).indicators),{key:0,current:(0,s.R1)(l),total:(0,s.R1)(c)},null,8,["current","total"])):((0,i.uX)(!0),(0,i.CE)(i.FK,{key:1},(0,i.pI)((0,s.R1)(c),(e,t)=>((0,i.uX)(),(0,i.CE)("span",{key:e,class:(0,u.C4)([(0,s.R1)(v).b("indicator"),(0,s.R1)(v).is("active",t===(0,s.R1)(l))])},null,2))),128))],2),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(v).b("buttons"))},[(0,s.R1)(l)>0?((0,i.uX)(),(0,i.Wv)((0,s.R1)(pe.S2),(0,i.v6)({key:0,size:"small",type:(0,s.R1)(p)},C(e.prevButtonProps),{onClick:x}),{default:(0,i.k6)(()=>{var t,n;return[(0,i.eW)((0,u.v_)(null!=(n=null==(t=e.prevButtonProps)?void 0:t.children)?n:(0,s.R1)(o)("el.tour.previous")),1)]}),_:1},16,["type"])):(0,i.Q3)("v-if",!0),(0,s.R1)(l)<=(0,s.R1)(c)-1?((0,i.uX)(),(0,i.Wv)((0,s.R1)(pe.S2),(0,i.v6)({key:1,size:"small",type:"primary"===(0,s.R1)(p)?"default":"primary"},C(e.nextButtonProps),{onClick:k}),{default:(0,i.k6)(()=>{var t,n;return[(0,i.eW)((0,u.v_)(null!=(n=null==(t=e.nextButtonProps)?void 0:t.children)?n:(0,s.R1)(l)===(0,s.R1)(c)-1?(0,s.R1)(o)("el.tour.finish"):(0,s.R1)(o)("el.tour.next")),1)]}),_:1},16,["type"])):(0,i.Q3)("v-if",!0)],2)],2)],64))}});var Fm=(0,m.A)(Pm,[["__file","step.vue"]]);const Bm=(0,E.GU)(Tm,{TourStep:Fm}),zm=(0,E.WM)(Fm),$m=(0,f.b_)({container:{type:(0,f.jq)([String,Object])},offset:{type:Number,default:0},bound:{type:Number,default:15},duration:{type:Number,default:300},marker:{type:Boolean,default:!0},type:{type:(0,f.jq)(String),default:"default"},direction:{type:(0,f.jq)(String),default:"vertical"},selectScrollTop:Boolean}),Vm={change:e=>(0,u.Kg)(e),click:(e,t)=>e instanceof MouseEvent&&((0,u.Kg)(t)||(0,p.b0)(t))},jm=Symbol("anchor"),Km=e=>{if(!A.oc||""===e)return null;if((0,u.Kg)(e))try{return document.querySelector(e)}catch(t){return null}return e};function Hm(e){let t=0;const n=(...n)=>{t&&(0,As.V)(t),t=(0,As.m)(()=>{e(...n),t=0})};return n.cancel=()=>{(0,As.V)(t),t=0},n}const Xm=(0,i.pM)({name:"ElAnchor"}),Um=(0,i.pM)({...Xm,props:$m,emits:Vm,setup(e,{expose:t,emit:n}){const r=e,o=(0,i.Ht)(),a=(0,s.KR)(""),l=(0,s.KR)({}),f=(0,s.KR)(null),v=(0,s.KR)(null),h=(0,s.KR)(),m={};let y=!1,w=0;const R=(0,g.DU)("anchor"),C=(0,i.EW)(()=>[R.b(),"underline"===r.type?R.m("underline"):"",R.m(r.direction)]),x=e=>{m[e.href]=e.el},k=e=>{delete m[e]},E=e=>{const t=a.value;t!==e&&(a.value=e,n(d.YU,e))};let _=null,S="";const M=e=>{if(!h.value)return;const t=Km(e);if(!t)return;if(_){if(S===e)return;_()}S=e,y=!0;const n=(0,b.aF)(t,h.value),o=qn(t,n),a=n.scrollHeight-n.clientHeight,l=Math.min(o-r.offset,a);_=(0,b.mg)(h.value,w,l,r.duration,()=>{setTimeout(()=>{y=!1,S=""},20)})},L=e=>{e&&(E(e),M(e))},A=(e,t)=>{n("click",e,t),L(t)},O=Hm(()=>{h.value&&(w=(0,b.hY)(h.value));const e=T();y||(0,p.b0)(e)||E(e)}),T=()=>{if(!h.value)return;const e=(0,b.hY)(h.value),t=[];for(const n of Object.keys(m)){const e=Km(n);if(!e)continue;const o=(0,b.aF)(e,h.value),a=qn(e,o);t.push({top:a-r.offset-r.bound,href:n})}t.sort((e,t)=>e.top-t.top);for(let n=0;ne))return o.href}},I=()=>{const e=Km(r.container);!e||(0,p.l6)(e)?h.value=window:h.value=e};(0,c.MLh)(h,"scroll",O);const N=()=>{(0,i.dY)(()=>{if(!f.value||!v.value||!a.value)return void(l.value={});const e=m[a.value];if(!e)return void(l.value={});const t=f.value.getBoundingClientRect(),n=v.value.getBoundingClientRect(),o=e.getBoundingClientRect();if("horizontal"===r.direction){const e=o.left-t.left;l.value={left:`${e}px`,width:`${o.width}px`,opacity:1}}else{const e=o.top-t.top+(o.height-n.height)/2;l.value={top:`${e}px`,opacity:1}}})};return(0,i.wB)(a,N),(0,i.wB)(()=>{var e;return null==(e=o.default)?void 0:e.call(o)},N),(0,i.sV)(()=>{I();const e=decodeURIComponent(window.location.hash),t=Km(e);t?L(e):O()}),(0,i.wB)(()=>r.container,()=>{I()}),(0,i.Gt)(jm,{ns:R,direction:r.direction,currentAnchor:a,addLink:x,removeLink:k,handleClick:A}),t({scrollTo:L}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{ref_key:"anchorRef",ref:f,class:(0,u.C4)((0,s.R1)(C))},[e.marker?((0,i.uX)(),(0,i.CE)("div",{key:0,ref_key:"markerRef",ref:v,class:(0,u.C4)((0,s.R1)(R).e("marker")),style:(0,u.Tr)(l.value)},null,6)):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(R).e("list"))},[(0,i.RG)(e.$slots,"default")],2)],2))}});var Gm=(0,m.A)(Um,[["__file","anchor.vue"]]);const qm=(0,f.b_)({title:String,href:String}),Ym=(0,i.pM)({name:"ElAnchorLink"}),Qm=(0,i.pM)({...Ym,props:qm,setup(e){const t=e,n=(0,s.KR)(null),{ns:r,direction:o,currentAnchor:a,addLink:l,removeLink:c,handleClick:d}=(0,i.WQ)(jm),f=(0,i.EW)(()=>[r.e("link"),r.is("active",a.value===t.href)]),p=e=>{d(e,t.href)};return(0,i.wB)(()=>t.href,(e,t)=>{(0,i.dY)(()=>{t&&c(t),e&&l({href:e,el:n.value})})}),(0,i.sV)(()=>{const{href:e}=t;e&&l({href:e,el:n.value})}),(0,i.xo)(()=>{const{href:e}=t;e&&c(e)}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)((0,s.R1)(r).e("item"))},[(0,i.Lk)("a",{ref_key:"linkRef",ref:n,class:(0,u.C4)((0,s.R1)(f)),href:e.href,onClick:p},[(0,i.RG)(e.$slots,"default",{},()=>[(0,i.eW)((0,u.v_)(e.title),1)])],10,["href"]),e.$slots["sub-link"]&&"vertical"===(0,s.R1)(o)?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(r).e("list"))},[(0,i.RG)(e.$slots,"sub-link")],2)):(0,i.Q3)("v-if",!0)],2))}});var Zm=(0,m.A)(Qm,[["__file","anchor-link.vue"]]);const Jm=(0,E.GU)(Gm,{AnchorLink:Zm}),eg=(0,E.WM)(Zm),tg={label:"label",value:"value",disabled:"disabled"},ng=(0,f.b_)({direction:{type:(0,f.jq)(String),default:"horizontal"},options:{type:(0,f.jq)(Array),default:()=>[]},modelValue:{type:[String,Number,Boolean],default:void 0},props:{type:(0,f.jq)(Object),default:()=>tg},block:Boolean,size:nn.mU,disabled:{type:Boolean,default:void 0},validateEvent:{type:Boolean,default:!0},id:String,name:String,...(0,Nr.l)(["ariaLabel"])}),rg={[d.l4]:e=>(0,u.Kg)(e)||(0,p.Et)(e)||(0,p.Lm)(e),[d.YU]:e=>(0,u.Kg)(e)||(0,p.Et)(e)||(0,p.Lm)(e)},og=(0,i.pM)({name:"ElSegmented"}),ag=(0,i.pM)({...og,props:ng,emits:rg,setup(e,{emit:t}){const n=e,r=(0,g.DU)("segmented"),o=(0,$.Bi)(),a=(0,z.NV)(),l=(0,z.CB)(),{formItem:f}=(0,un.j)(),{inputId:p,isLabeledByFormItem:v}=(0,un.W)(n,{formItemContext:f}),h=(0,s.KR)(null),m=(0,c.YC1)(),b=(0,s.Kh)({isInit:!1,width:0,height:0,translateX:0,translateY:0,focusVisible:!1}),y=(e,r)=>{const o=x(r);t(d.l4,o),t(d.YU,o),e.target.checked=o===n.modelValue},R=(0,i.EW)(()=>({...tg,...n.props})),C=e=>e,x=e=>(0,u.Gv)(e)?e[R.value.value]:e,k=e=>(0,u.Gv)(e)?e[R.value.label]:e,E=e=>!!(l.value||(0,u.Gv)(e)&&e[R.value.disabled]),_=e=>n.modelValue===x(e),S=e=>n.options.find(t=>x(t)===e),M=e=>[r.e("item"),r.is("selected",_(e)),r.is("disabled",E(e))],L=()=>{if(!h.value)return;const e=h.value.querySelector(".is-selected"),t=h.value.querySelector(".is-selected input");if(!e||!t)return b.width=0,b.height=0,b.translateX=0,b.translateY=0,void(b.focusVisible=!1);b.isInit=!0,"vertical"===n.direction?(b.height=e.offsetHeight,b.translateY=e.offsetTop):(b.width=e.offsetWidth,b.translateX=e.offsetLeft);try{b.focusVisible=t.matches(":focus-visible")}catch(r){}},A=(0,i.EW)(()=>[r.b(),r.m(a.value),r.is("block",n.block)]),O=(0,i.EW)(()=>({width:"vertical"===n.direction?"100%":`${b.width}px`,height:"vertical"===n.direction?`${b.height}px`:"100%",transform:"vertical"===n.direction?`translateY(${b.translateY}px)`:`translateX(${b.translateX}px)`,display:b.isInit?"block":"none"})),T=(0,i.EW)(()=>[r.e("item-selected"),r.is("disabled",E(S(n.modelValue))),r.is("focus-visible",b.focusVisible)]),I=(0,i.EW)(()=>n.name||o.value);return(0,c.wYm)(h,L),(0,i.wB)(m,L),(0,i.wB)(()=>n.modelValue,()=>{var e;L(),n.validateEvent&&(null==(e=null==f?void 0:f.validate)||e.call(f,"change").catch(e=>(0,w.U)(e)))},{flush:"post"}),(e,t)=>e.options.length?((0,i.uX)(),(0,i.CE)("div",{key:0,id:(0,s.R1)(p),ref_key:"segmentedRef",ref:h,class:(0,u.C4)((0,s.R1)(A)),role:"radiogroup","aria-label":(0,s.R1)(v)?void 0:e.ariaLabel||"segmented","aria-labelledby":(0,s.R1)(v)?(0,s.R1)(f).labelId:void 0},[(0,i.Lk)("div",{class:(0,u.C4)([(0,s.R1)(r).e("group"),(0,s.R1)(r).m(e.direction)])},[(0,i.Lk)("div",{style:(0,u.Tr)((0,s.R1)(O)),class:(0,u.C4)((0,s.R1)(T))},null,6),((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.options,(t,n)=>((0,i.uX)(),(0,i.CE)("label",{key:n,class:(0,u.C4)(M(t))},[(0,i.Lk)("input",{class:(0,u.C4)((0,s.R1)(r).e("item-input")),type:"radio",name:(0,s.R1)(I),disabled:E(t),checked:_(t),onChange:e=>y(e,t)},null,42,["name","disabled","checked","onChange"]),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(r).e("item-label"))},[(0,i.RG)(e.$slots,"default",{item:C(t)},()=>[(0,i.eW)((0,u.v_)(k(t)),1)])],2)],2))),128))],2)],10,["id","aria-label","aria-labelledby"])):(0,i.Q3)("v-if",!0)}});var lg=(0,m.A)(ag,[["__file","segmented.vue"]]);const ig=(0,E.GU)(lg),sg=(e,t)=>{const n=e.toLowerCase(),r=t.label||t.value||"";return r.toLowerCase().includes(n)},ug=(e,t,n)=>{const{selectionEnd:r}=e;if(null===r)return;const o=e.value,a=(0,Mn.A)(t);let l,i=-1;for(let s=r-1;s>=0;--s){const e=o[s];if(e!==n&&"\n"!==e&&"\r"!==e){if(a.includes(e)){const t=-1===i?r:i,n=o.slice(s+1,t);l={pattern:n,start:s+1,end:t,prefix:e,prefixIndex:s,splitIndex:i,selectionEnd:r};break}}else i=s}return l},cg=(e,t={debug:!1,useSelectionEnd:!1})=>{const n=null!==e.selectionStart?e.selectionStart:0,r=null!==e.selectionEnd?e.selectionEnd:0,o=t.useSelectionEnd?r:n,a=["direction","boxSizing","width","height","overflowX","overflowY","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderStyle","paddingTop","paddingRight","paddingBottom","paddingLeft","fontStyle","fontVariant","fontWeight","fontStretch","fontSize","fontSizeAdjust","lineHeight","fontFamily","textAlign","textTransform","textIndent","textDecoration","letterSpacing","wordSpacing","tabSize","MozTabSize"];if(t.debug){const e=document.querySelector("#input-textarea-caret-position-mirror-div");(null==e?void 0:e.parentNode)&&e.parentNode.removeChild(e)}const l=document.createElement("div");l.id="input-textarea-caret-position-mirror-div",document.body.appendChild(l);const i=l.style,s=window.getComputedStyle(e),u="INPUT"===e.nodeName;i.whiteSpace=u?"nowrap":"pre-wrap",u||(i.wordWrap="break-word"),i.position="absolute",t.debug||(i.visibility="hidden"),a.forEach(e=>{if(u&&"lineHeight"===e)if("border-box"===s.boxSizing){const e=Number.parseInt(s.height),t=Number.parseInt(s.paddingTop)+Number.parseInt(s.paddingBottom)+Number.parseInt(s.borderTopWidth)+Number.parseInt(s.borderBottomWidth),n=t+Number.parseInt(s.lineHeight);i.lineHeight=e>n?e-t+"px":e===n?s.lineHeight:"0"}else i.lineHeight=s.height;else i[e]=s[e]}),(0,rl.gm)()?e.scrollHeight>Number.parseInt(s.height)&&(i.overflowY="scroll"):i.overflow="hidden",l.textContent=e.value.slice(0,Math.max(0,o)),u&&l.textContent&&(l.textContent=l.textContent.replace(/\s/g," "));const c=document.createElement("span");c.textContent=e.value.slice(Math.max(0,o))||".",c.style.position="relative",c.style.left=-e.scrollLeft+"px",c.style.top=-e.scrollTop+"px",l.appendChild(c);const d={top:c.offsetTop+Number.parseInt(s.borderTopWidth),left:c.offsetLeft+Number.parseInt(s.borderLeftWidth),height:1.5*Number.parseInt(s.fontSize)};return t.debug?c.style.backgroundColor="#aaa":document.body.removeChild(l),d.left>=e.clientWidth&&(d.left=e.clientWidth),d},dg=(0,f.b_)({...D.$,options:{type:(0,f.jq)(Array),default:()=>[]},prefix:{type:(0,f.jq)([String,Array]),default:"@",validator:e=>(0,u.Kg)(e)?1===e.length:e.every(e=>(0,u.Kg)(e)&&1===e.length)},split:{type:String,default:" ",validator:e=>1===e.length},filterOption:{type:(0,f.jq)([Boolean,Function]),default:()=>sg,validator:e=>!1===e||(0,u.Tn)(e)},placement:{type:(0,f.jq)(String),default:"bottom"},showArrow:Boolean,offset:{type:Number,default:0},whole:Boolean,checkIsWhole:{type:(0,f.jq)(Function)},modelValue:String,loading:Boolean,popperClass:P.E.popperClass,popperStyle:P.E.popperStyle,popperOptions:{type:(0,f.jq)(Object),default:()=>({})},props:{type:(0,f.jq)(Object),default:()=>pg}}),fg={[d.l4]:e=>(0,u.Kg)(e),"whole-remove":(e,t)=>(0,u.Kg)(e)&&(0,u.Kg)(t),input:e=>(0,u.Kg)(e),search:(e,t)=>(0,u.Kg)(e)&&(0,u.Kg)(t),select:(e,t)=>(0,u.Gv)(e)&&(0,u.Kg)(t),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent},pg={value:"value",label:"label",disabled:"disabled"},vg=(0,f.b_)({options:{type:(0,f.jq)(Array),default:()=>[]},loading:Boolean,disabled:Boolean,contentId:String,ariaLabel:String}),hg={select:e=>(0,u.Kg)(e.value)},mg=(0,i.pM)({name:"ElMentionDropdown"}),gg=(0,i.pM)({...mg,props:vg,emits:hg,setup(e,{expose:t,emit:n}){const r=e,o=(0,g.DU)("mention"),{t:a}=(0,Ie.Ym)(),l=(0,s.KR)(-1),c=(0,s.KR)(),d=(0,s.KR)(),f=(0,s.KR)(),p=(e,t)=>[o.be("dropdown","item"),o.is("hovering",l.value===t),o.is("disabled",e.disabled||r.disabled)],v=e=>{e.disabled||r.disabled||n("select",e)},h=e=>{l.value=e},m=(0,i.EW)(()=>r.disabled||r.options.every(e=>e.disabled)),y=(0,i.EW)(()=>r.options[l.value]),w=()=>{y.value&&n("select",y.value)},R=e=>{const{options:t}=r;if(0===t.length||m.value)return;"next"===e?(l.value++,l.value===t.length&&(l.value=0)):"prev"===e&&(l.value--,l.value<0&&(l.value=t.length-1));const n=t[l.value];n.disabled?R(e):(0,i.dY)(()=>C(n))},C=e=>{var t,n,a,l;const{options:i}=r,s=i.findIndex(t=>t.value===e.value),u=null==(t=d.value)?void 0:t[s];if(u){const e=null==(a=null==(n=f.value)?void 0:n.querySelector)?void 0:a.call(n,`.${o.be("dropdown","wrap")}`);e&&(0,b.Rt)(e,u)}null==(l=c.value)||l.handleScroll()},x=()=>{m.value||0===r.options.length?l.value=-1:l.value=0};return(0,i.wB)(()=>r.options,x,{immediate:!0}),t({hoveringIndex:l,navigateOptions:R,selectHoverOption:w,hoverOption:y}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{ref_key:"dropdownRef",ref:f,class:(0,u.C4)((0,s.R1)(o).b("dropdown"))},[e.$slots.header?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)((0,s.R1)(o).be("dropdown","header"))},[(0,i.RG)(e.$slots,"header")],2)):(0,i.Q3)("v-if",!0),(0,i.bo)((0,i.bF)((0,s.R1)(I.kA),{id:e.contentId,ref_key:"scrollbarRef",ref:c,tag:"ul","wrap-class":(0,s.R1)(o).be("dropdown","wrap"),"view-class":(0,s.R1)(o).be("dropdown","list"),role:"listbox","aria-label":e.ariaLabel,"aria-orientation":"vertical"},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.options,(t,n)=>((0,i.uX)(),(0,i.CE)("li",{id:`${e.contentId}-${n}`,ref_for:!0,ref_key:"optionRefs",ref:d,key:n,class:(0,u.C4)(p(t,n)),role:"option","aria-disabled":t.disabled||e.disabled||void 0,"aria-selected":l.value===n,onMousemove:e=>h(n),onClick:(0,M.D$)(e=>v(t),["stop"])},[(0,i.RG)(e.$slots,"label",{item:t,index:n},()=>{var e;return[(0,i.Lk)("span",null,(0,u.v_)(null!=(e=t.label)?e:t.value),1)]})],42,["id","aria-disabled","aria-selected","onMousemove","onClick"]))),128))]),_:3},8,["id","wrap-class","view-class","aria-label"]),[[M.aG,e.options.length>0&&!e.loading]]),e.loading?((0,i.uX)(),(0,i.CE)("div",{key:1,class:(0,u.C4)((0,s.R1)(o).be("dropdown","loading"))},[(0,i.RG)(e.$slots,"loading",{},()=>[(0,i.eW)((0,u.v_)((0,s.R1)(a)("el.mention.loading")),1)])],2)):(0,i.Q3)("v-if",!0),e.$slots.footer?((0,i.uX)(),(0,i.CE)("div",{key:2,class:(0,u.C4)((0,s.R1)(o).be("dropdown","footer"))},[(0,i.RG)(e.$slots,"footer")],2)):(0,i.Q3)("v-if",!0)],2))}});var bg=(0,m.A)(gg,[["__file","mention-dropdown.vue"]]);const yg=(0,i.pM)({name:"ElMention",inheritAttrs:!1}),wg=(0,i.pM)({...yg,props:dg,emits:fg,setup(e,{expose:t,emit:n}){const r=e,o=(0,i.EW)(()=>(0,L.A)(r,Object.keys(D.$))),a=(0,g.DU)("mention"),l=(0,z.CB)(),c=(0,$.Bi)(),f=(0,s.KR)(),p=(0,s.KR)(),v=(0,s.KR)(),h=(0,s.KR)(!1),m=(0,s.KR)(),b=(0,s.KR)(),y=(0,i.EW)(()=>r.showArrow?r.placement:`${r.placement}-start`),w=(0,i.EW)(()=>r.showArrow?["bottom","top"]:["bottom-start","top-start"]),R=(0,i.EW)(()=>({...pg,...r.props})),C=e=>{const t={label:e[R.value.label],value:e[R.value.value],disabled:e[R.value.disabled]};return{...e,...t}},x=(0,i.EW)(()=>r.options.map(C)),k=(0,i.EW)(()=>{const{filterOption:e}=r;return b.value&&e?x.value.filter(t=>e(b.value.pattern,t)):x.value}),E=(0,i.EW)(()=>h.value&&(!!k.value.length||r.loading)),_=(0,i.EW)(()=>{var e;return`${c.value}-${null==(e=v.value)?void 0:e.hoveringIndex}`}),S=e=>{n(d.l4,e),n(d.qs,e),B()},A=e=>{var t,o,a,l;if(null==(t=f.value)?void 0:t.isComposing)return;const s=(0,V.CG)(e);switch(s){case j.R.left:case j.R.right:B();break;case j.R.up:case j.R.down:if(!h.value)return;e.preventDefault(),null==(o=v.value)||o.navigateOptions(s===j.R.up?"prev":"next");break;case j.R.enter:case j.R.numpadEnter:if(!h.value)return void("textarea"!==r.type&&B());e.preventDefault(),(null==(a=v.value)?void 0:a.hoverOption)?null==(l=v.value)||l.selectHoverOption():h.value=!1;break;case j.R.esc:if(!h.value)return;e.preventDefault(),h.value=!1;break;case j.R.backspace:if(r.whole&&b.value){const{splitIndex:t,selectionEnd:o,pattern:a,prefixIndex:l,prefix:s}=b.value,c=F();if(!c)return;const f=c.value,p=x.value.find(e=>e.value===a),v=(0,u.Tn)(r.checkIsWhole)?r.checkIsWhole(a,s):p;if(v&&-1!==t&&t+1===o){e.preventDefault();const r=f.slice(0,l)+f.slice(t+1);n(d.l4,r),n(d.qs,r),n("whole-remove",a,s);const o=l;(0,i.dY)(()=>{c.selectionStart=o,c.selectionEnd=o,H()})}}}},{wrapperRef:O}=(0,dn.K)(f,{disabled:l,afterFocus(){B()},beforeBlur(e){var t;return null==(t=p.value)?void 0:t.isFocusInsideContent(e)},afterBlur(){h.value=!1}}),I=()=>{B()},W=e=>r.options.find(t=>e.value===t[R.value.value]),P=e=>{if(!b.value)return;const t=F();if(!t)return;const o=t.value,{split:a}=r,l=o.slice(b.value.end),s=l.startsWith(a),u=`${e.value}${s?"":a}`,c=o.slice(0,b.value.start)+u+l;n(d.l4,c),n(d.qs,c),n("select",W(e),b.value.prefix);const f=b.value.start+u.length+(s?1:0);(0,i.dY)(()=>{t.selectionStart=f,t.selectionEnd=f,t.focus(),H()})},F=()=>{var e,t;return"textarea"===r.type?null==(e=f.value)?void 0:e.textarea:null==(t=f.value)?void 0:t.input},B=()=>{setTimeout(()=>{K(),H(),(0,i.dY)(()=>{var e;return null==(e=p.value)?void 0:e.updatePopper()})},0)},K=()=>{const e=F();if(!e)return;const t=cg(e),n=e.getBoundingClientRect(),r=O.value.getBoundingClientRect();m.value={position:"absolute",width:0,height:`${t.height}px`,left:t.left+n.left-r.left+"px",top:t.top+n.top-r.top+"px"}},H=()=>{const e=F();if(document.activeElement!==e)return void(h.value=!1);const{prefix:t,split:o}=r;if(b.value=ug(e,t,o),b.value&&-1===b.value.splitIndex)return h.value=!0,void n("search",b.value.pattern,b.value.prefix);h.value=!1};return t({input:f,tooltip:p,dropdownVisible:E}),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{ref_key:"wrapperRef",ref:O,class:(0,u.C4)((0,s.R1)(a).b())},[(0,i.bF)((0,s.R1)(T.WK),(0,i.v6)((0,i.v6)((0,s.R1)(o),e.$attrs),{ref_key:"elInputRef",ref:f,"model-value":e.modelValue,disabled:(0,s.R1)(l),role:(0,s.R1)(E)?"combobox":void 0,"aria-activedescendant":(0,s.R1)(E)?(0,s.R1)(_)||"":void 0,"aria-controls":(0,s.R1)(E)?(0,s.R1)(c):void 0,"aria-expanded":(0,s.R1)(E)||void 0,"aria-label":e.ariaLabel,"aria-autocomplete":(0,s.R1)(E)?"none":void 0,"aria-haspopup":(0,s.R1)(E)?"listbox":void 0,onInput:S,onKeydown:A,onMousedown:I}),(0,i.eX)({_:2},[(0,i.pI)(e.$slots,(t,n)=>({name:n,fn:(0,i.k6)(t=>[(0,i.RG)(e.$slots,n,(0,u._B)((0,i.Ng)(t)))])}))]),1040,["model-value","disabled","role","aria-activedescendant","aria-controls","aria-expanded","aria-label","aria-autocomplete","aria-haspopup"]),(0,i.bF)((0,s.R1)(N.R7),{ref_key:"tooltipRef",ref:p,visible:(0,s.R1)(E),"popper-class":[(0,s.R1)(a).e("popper"),e.popperClass],"popper-style":e.popperStyle,"popper-options":e.popperOptions,placement:(0,s.R1)(y),"fallback-placements":(0,s.R1)(w),effect:"light",pure:"",offset:e.offset,"show-arrow":e.showArrow},{default:(0,i.k6)(()=>[(0,i.Lk)("div",{style:(0,u.Tr)(m.value)},null,4)]),content:(0,i.k6)(()=>{var t;return[(0,i.bF)(bg,{ref_key:"dropdownRef",ref:v,options:(0,s.R1)(k),disabled:(0,s.R1)(l),loading:e.loading,"content-id":(0,s.R1)(c),"aria-label":e.ariaLabel,onSelect:P,onClick:(0,M.D$)(null==(t=f.value)?void 0:t.focus,["stop"])},(0,i.eX)({_:2},[(0,i.pI)(e.$slots,(t,n)=>({name:n,fn:(0,i.k6)(t=>[(0,i.RG)(e.$slots,n,(0,u._B)((0,i.Ng)(t)))])}))]),1032,["options","disabled","loading","content-id","aria-label","onClick"])]}),_:3},8,["visible","popper-class","popper-style","popper-options","placement","fallback-placements","offset","show-arrow"])],2))}});var Rg=(0,m.A)(wg,[["__file","mention.vue"]]);const Cg=(0,E.GU)(Rg),xg=(0,f.b_)({layout:{type:String,default:"horizontal",values:["horizontal","vertical"]},lazy:Boolean}),kg={resizeStart:(e,t)=>!0,resize:(e,t)=>!0,resizeEnd:(e,t)=>!0,collapse:(e,t,n)=>!0},Eg=Symbol("splitterRootContextKey");function _g(e){const t=(0,s.KR)(),{width:n,height:r}=(0,c.Lhy)(t),o=(0,i.EW)(()=>"horizontal"===e.value?n.value:r.value);return{containerEl:t,containerSize:o}}function Sg(e){return Number(e.slice(0,-1))/100}function Mg(e){return Number(e.slice(0,-2))}function Lg(e){return(0,u.Kg)(e)&&e.endsWith("%")}function Ag(e){return(0,u.Kg)(e)&&e.endsWith("px")}function Og(e,t){const n=(0,i.EW)(()=>e.value.map(e=>e.size)),r=(0,i.EW)(()=>e.value.length),o=(0,s.KR)([]);(0,i.wB)([n,r,t],()=>{var n;let a=[],l=0;for(let o=0;oe+(t||0),0);if(i>1||!l){const e=1/i;a=a.map(t=>void 0===t?0:t*e)}else{const e=(1-i)/l;a=a.map(t=>void 0===t?e:t)}o.value=a});const a=e=>e*t.value,l=(0,i.EW)(()=>o.value.map(a));return{percentSizes:o,pxSizes:l}}function Tg(e,t,n,r){const o=e=>e*t.value||0;function a(e,t){return Lg(e)?o(Sg(e)):Ag(e)?Mg(e):null!=e?e:t}const l=(0,s.KR)(0),c=(0,s.KR)(null);let d=[],f=u.tE;const p=(0,i.EW)(()=>e.value.map(e=>[e.min,e.max]));(0,i.wB)(r,()=>{if(l.value){const e=new MouseEvent("mouseup",{bubbles:!0});window.dispatchEvent(e)}});const v=e=>{l.value=0,c.value={index:e,confirmed:!1},d=n.value},h=(n,o)=>{var i,s;let v=null;if((!c.value||!c.value.confirmed)&&0!==o)if(o>0)v=n,c.value={index:n,confirmed:!0};else for(let e=n;e>=0;e-=1)if(d[e]>0){v=e,c.value={index:e,confirmed:!0};break}const h=null!=(s=null!=v?v:null==(i=c.value)?void 0:i.index)?s:n,m=[...d],g=h+1,b=a(p.value[h][0],0),y=a(p.value[g][0],0),w=a(p.value[h][1],t.value||0),R=a(p.value[g][1],t.value||0);let C=o;m[h]+Cw&&(C=w-m[h]),m[g]-C>R&&(C=m[g]-R),m[h]+=C,m[g]-=C,l.value=C,f=()=>{e.value.forEach((e,t)=>{e.size=m[t]}),f=u.tE},r.value||f()},m=()=>{r.value&&f(),l.value=0,c.value=null,d=[]},g=[],b=(t,r)=>{g.length||g.push(...n.value);const o=n.value,a="start"===r?t:t+1,l="start"===r?t+1:t,i=o[a],s=o[l];if(0!==i&&0!==s)o[a]=0,o[l]+=i,g[t]=i;else{const e=i+s,n=g[t],r=e-n;o[l]=n,o[a]=r}e.value.forEach((e,t)=>{e.size=o[t]})};return{lazyOffset:l,onMoveStart:v,onMoving:h,onMoveEnd:m,movingIndex:c,onCollapse:b}}const Ig=(0,i.pM)({name:"ElSplitter"}),Ng=(0,i.pM)({...Ig,props:xg,emits:kg,setup(e,{emit:t}){const n=e,r=(0,g.DU)("splitter"),o=(0,s.lW)(n,"layout"),a=(0,s.lW)(n,"lazy"),{containerEl:l,containerSize:c}=_g(o),{removeChild:d,children:f,addChild:p,ChildrenSorter:v}=(0,tt.W)((0,i.nI)(),"ElSplitterPanel");(0,i.wB)(f,()=>{y.value=null,f.value.forEach((e,t)=>{e.setIndex(t)})});const{percentSizes:h,pxSizes:m}=Og(f,c),{lazyOffset:b,movingIndex:y,onMoveStart:w,onMoving:R,onMoveEnd:C,onCollapse:x}=Tg(f,c,m,a),k=(0,i.EW)(()=>({[r.cssVarBlockName("bar-offset")]:a.value?`${b.value}px`:void 0})),E=e=>{w(e),t("resizeStart",e,m.value)},_=(e,n)=>{R(e,n),a.value||t("resize",e,m.value)},S=async e=>{C(),await(0,i.dY)(),t("resizeEnd",e,m.value)},M=(e,n)=>{x(e,n),t("collapse",e,n,m.value)};return(0,i.Gt)(Eg,(0,s.Kh)({panels:f,percentSizes:h,pxSizes:m,layout:o,lazy:a,movingIndex:y,containerSize:c,onMoveStart:E,onMoving:_,onMoveEnd:S,onCollapse:M,registerPanel:p,unregisterPanel:d})),(e,t)=>((0,i.uX)(),(0,i.CE)("div",{ref_key:"containerEl",ref:l,class:(0,u.C4)([(0,s.R1)(r).b(),(0,s.R1)(r).e((0,s.R1)(o))]),style:(0,u.Tr)((0,s.R1)(k))},[(0,i.RG)(e.$slots,"default"),(0,i.bF)((0,s.R1)(v)),(0,i.Q3)(" Prevent iframe touch events from breaking "),(0,s.R1)(y)?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)([(0,s.R1)(r).e("mask"),(0,s.R1)(r).e(`mask-${(0,s.R1)(o)}`)])},null,2)):(0,i.Q3)("v-if",!0)],6))}});var Wg=(0,m.A)(Ng,[["__file","splitter.vue"]]);function Dg(e){return e&&(0,u.Gv)(e)?e:{start:!!e,end:!!e}}function Pg(e,t,n,r){return!!((null==e?void 0:e.collapsible.end)&&t>0)||!!((null==n?void 0:n.collapsible.start)&&0===r&&t>0)}const Fg=(0,i.pM)({name:"ElSplitterBar"}),Bg=(0,i.pM)({...Fg,props:{index:{type:Number,required:!0},layout:{type:String,values:["horizontal","vertical"],default:"horizontal"},resizable:{type:Boolean,default:!0},lazy:Boolean,startCollapsible:Boolean,endCollapsible:Boolean},emits:["moveStart","moving","moveEnd","collapse"],setup(e,{emit:t}){const n=e,r=(0,g.DU)("splitter-bar"),o=(0,i.EW)(()=>"horizontal"===n.layout),a=(0,i.EW)(()=>o.value?{width:0}:{height:0}),l=(0,i.EW)(()=>({width:o.value?"16px":"100%",height:o.value?"100%":"16px",cursor:n.resizable?o.value?"ew-resize":"ns-resize":"auto",touchAction:"none"})),c=(0,i.EW)(()=>{const e=r.e("dragger");return{[`${e}-horizontal`]:o.value,[`${e}-vertical`]:!o.value,[`${e}-active`]:!!d.value}}),d=(0,s.KR)(null),f=e=>{n.resizable&&(d.value=[e.pageX,e.pageY],t("moveStart",n.index),window.addEventListener("mouseup",m),window.addEventListener("mousemove",v))},p=e=>{if(n.resizable&&1===e.touches.length){e.preventDefault();const r=e.touches[0];d.value=[r.pageX,r.pageY],t("moveStart",n.index),window.addEventListener("touchend",b),window.addEventListener("touchmove",h)}},v=e=>{const{pageX:r,pageY:a}=e,l=r-d.value[0],i=a-d.value[1],s=o.value?l:i;t("moving",n.index,s)},h=e=>{if(1===e.touches.length){e.preventDefault();const r=e.touches[0],a=r.pageX-d.value[0],l=r.pageY-d.value[1],i=o.value?a:l;t("moving",n.index,i)}},m=()=>{d.value=null,window.removeEventListener("mouseup",m),window.removeEventListener("mousemove",v),t("moveEnd",n.index)},b=()=>{d.value=null,window.removeEventListener("touchend",b),window.removeEventListener("touchmove",h),t("moveEnd",n.index)},y=(0,i.EW)(()=>o.value?O.ArrowLeft:O.ArrowUp),w=(0,i.EW)(()=>o.value?O.ArrowRight:O.ArrowDown);return(n,o)=>((0,i.uX)(),(0,i.CE)("div",{class:(0,u.C4)([(0,s.R1)(r).b()]),style:(0,u.Tr)((0,s.R1)(a))},[e.startCollapsible?((0,i.uX)(),(0,i.CE)("div",{key:0,class:(0,u.C4)([(0,s.R1)(r).e("collapse-icon"),(0,s.R1)(r).e(`${e.layout}-collapse-icon-start`)]),onClick:n=>t("collapse",e.index,"start")},[(0,i.RG)(n.$slots,"start-collapsible",{},()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)((0,s.R1)(y)),{style:{width:"12px",height:"12px"}}))])],10,["onClick"])):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",{class:(0,u.C4)([(0,s.R1)(r).e("dragger"),(0,s.R1)(c),(0,s.R1)(r).is("disabled",!e.resizable),(0,s.R1)(r).is("lazy",e.resizable&&e.lazy)]),style:(0,u.Tr)((0,s.R1)(l)),onMousedown:f,onTouchstart:p},null,38),e.endCollapsible?((0,i.uX)(),(0,i.CE)("div",{key:1,class:(0,u.C4)([(0,s.R1)(r).e("collapse-icon"),(0,s.R1)(r).e(`${e.layout}-collapse-icon-end`)]),onClick:n=>t("collapse",e.index,"end")},[(0,i.RG)(n.$slots,"end-collapsible",{},()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)((0,s.R1)(w)),{style:{width:"12px",height:"12px"}}))])],10,["onClick"])):(0,i.Q3)("v-if",!0)],6))}});var zg=(0,m.A)(Bg,[["__file","split-bar.vue"]]);const $g=(0,f.b_)({min:{type:[String,Number]},max:{type:[String,Number]},size:{type:[String,Number]},resizable:{type:Boolean,default:!0},collapsible:Boolean}),Vg={"update:size":e=>"number"===typeof e||"string"===typeof e},jg="ElSplitterPanel",Kg=(0,i.pM)({name:jg}),Hg=(0,i.pM)({...Kg,props:$g,emits:Vg,setup(e,{expose:t,emit:n}){const r=e,o=(0,g.DU)("splitter-panel"),a=(0,i.WQ)(Eg);a||(0,w.$)(jg,"usage: ");const{panels:l,layout:u,lazy:c,containerSize:d,pxSizes:f}=(0,s.QW)(a),{registerPanel:p,unregisterPanel:v,onCollapse:h,onMoveEnd:m,onMoveStart:b,onMoving:y}=a,R=(0,s.KR)(),C=(0,i.nI)(),x=C.uid,k=(0,s.KR)(0),E=(0,i.EW)(()=>l.value[k.value]),_=e=>{k.value=e},S=(0,i.EW)(()=>{var e;return E.value&&null!=(e=f.value[k.value])?e:0}),M=(0,i.EW)(()=>{var e;return E.value&&null!=(e=f.value[k.value+1])?e:0}),L=(0,i.EW)(()=>E.value?l.value[k.value+1]:null),A=(0,i.EW)(()=>{var e;return!!L.value&&(r.resizable&&(null==(e=L.value)?void 0:e.resizable)&&(0!==S.value||!r.min)&&(0!==M.value||!L.value.min))}),O=(0,i.EW)(()=>!!E.value&&k.value!==l.value.length-1),T=(0,i.EW)(()=>Pg(E.value,S.value,L.value,M.value)),I=(0,i.EW)(()=>Pg(L.value,M.value,E.value,S.value));function N(e){return Lg(e)?Sg(e)*d.value||0:Ag(e)?Mg(e):null!=e?e:0}let W=!1;(0,i.wB)(()=>r.size,()=>{if(!W&&E.value){if(!d.value)return void(E.value.size=r.size);const e=N(r.size),t=N(r.max),o=N(r.min),a=Math.min(Math.max(e,o||0),t||e);a!==e&&n("update:size",a),E.value.size=a}}),(0,i.wB)(()=>{var e;return null==(e=E.value)?void 0:e.size},e=>{e!==r.size&&(W=!0,n("update:size",e),(0,i.dY)(()=>W=!1))}),(0,i.wB)(()=>r.resizable,e=>{E.value&&(E.value.resizable=e)});const D=(0,s.Kh)({el:R.value,uid:x,getVnode:()=>C.vnode,setIndex:_,...r,collapsible:(0,i.EW)(()=>Dg(r.collapsible))});return p(D),(0,i.xo)(()=>v(D)),t({splitterPanelRef:R}),(e,t)=>((0,i.uX)(),(0,i.CE)(i.FK,null,[(0,i.Lk)("div",(0,i.v6)({ref_key:"panelEl",ref:R,class:[(0,s.R1)(o).b()],style:{flexBasis:`${(0,s.R1)(S)}px`}},e.$attrs),[(0,i.RG)(e.$slots,"default")],16),(0,s.R1)(O)?((0,i.uX)(),(0,i.Wv)(zg,{key:0,index:k.value,layout:(0,s.R1)(u),lazy:(0,s.R1)(c),resizable:(0,s.R1)(A),"start-collapsible":(0,s.R1)(T),"end-collapsible":(0,s.R1)(I),onMoveStart:(0,s.R1)(b),onMoving:(0,s.R1)(y),onMoveEnd:(0,s.R1)(m),onCollapse:(0,s.R1)(h)},{"start-collapsible":(0,i.k6)(()=>[(0,i.RG)(e.$slots,"start-collapsible")]),"end-collapsible":(0,i.k6)(()=>[(0,i.RG)(e.$slots,"end-collapsible")]),_:3},8,["index","layout","lazy","resizable","start-collapsible","end-collapsible","onMoveStart","onMoving","onMoveEnd","onCollapse"])):(0,i.Q3)("v-if",!0)],64))}});var Xg=(0,m.A)(Hg,[["__file","split-panel.vue"]]);const Ug=(0,E.GU)(Wg,{SplitPanel:Xg}),Gg=(0,E.WM)(Xg);var qg=[_,S.KR,G,Vd,ne,ce,de.z_,fe.vp,fe.WZ,pe.S2,pe.fg,Ge,qe.Ik,vt,ht,hn,Zt,mn.mO,Ct.dI,Ct.$n,Ct.o5,xn,Vn,jn,Wn.o,Tr,zr,$r.H6,Vr.lX,Vr.Mb,Vr.LK,Vr.bZ,Vr.ZO,Pa,ka,Fa.TS,Fa.MF,Ba.kZ,za.fR,$a.pw,Va.dW,Va.c6,Va.Iy,Ya,Qa.US,Qa.xE,W.tk,Za.Zq,Ja.Tg,T.WK,el.lq,pl,wl,Yl,Ql,Zl,Jl,ai,li.aQ,vi,hi.Vc,mi.uN,gi.ve,xt.ll,xt.Zh,xt.MQ,Ei,Ti,Bi,I.kA,zi.AV,zi.P9,zi.EL,qs,au,lu,iu.B8,vu,yu,Mu,Bu,zu,$u.qi,Vu.Up,Vu.o8,$d,jd.q,jd.v$,Jt.u,Kd.$g,xf,If,zf,$f,N.R7,ip,sp.qk,Rp,Yp,Qp.j5,uv,Bm,zm,Jm,eg,ig,Cg,Ug,Gg];const Yg="ElInfiniteScroll",Qg=50,Zg=200,Jg=0,eb={delay:{type:Number,default:Zg},distance:{type:Number,default:Jg},disabled:{type:Boolean,default:!1},immediate:{type:Boolean,default:!0}},tb=(e,t)=>Object.entries(eb).reduce((n,[r,o])=>{var a,l;const{type:i,default:s}=o,u=e.getAttribute(`infinite-scroll-${r}`);let c=null!=(l=null!=(a=t[u])?a:u)?l:s;return c="false"!==c&&c,c=i(c),n[r]=Number.isNaN(c)?s:c,n},{}),nb=e=>{const{observer:t}=e[Yg];t&&(t.disconnect(),delete e[Yg].observer)},rb=(e,t)=>{const{container:n,containerEl:r,instance:o,observer:a,lastScrollTop:l}=e[Yg],{disabled:i,distance:s}=tb(e,o),{clientHeight:u,scrollHeight:c,scrollTop:d}=r,f=d-l;if(e[Yg].lastScrollTop=d,a||i||f<0)return;let p=!1;if(n===e)p=c-(u+d)<=s;else{const{clientTop:t,scrollHeight:n}=e,o=qn(e,r);p=d+u>=o+t+n-s}p&&t.call(o)};function ob(e,t){const{containerEl:n,instance:r}=e[Yg],{disabled:o}=tb(e,r);o||0===n.clientHeight||(n.scrollHeight<=n.clientHeight?t.call(r):nb(e))}const ab={async mounted(e,t){const{instance:n,value:r}=t;(0,ml.b)({scope:Yg,from:"the directive v-infinite-scroll",replacement:"the el-scrollbar infinite scroll",version:"3.0.0",ref:"https://element-plus.org/en-US/component/scrollbar#infinite-scroll"},!0),(0,u.Tn)(r)||(0,w.$)(Yg,"'v-infinite-scroll' binding value must be a function"),await(0,i.dY)();const{delay:o,immediate:a}=tb(e,n),l=(0,b.Bo)(e,!0),s=l===window?document.documentElement:l,c=(0,Ze.A)(rb.bind(null,e,r),o);if(l){if(e[Yg]={instance:n,container:l,containerEl:s,delay:o,cb:r,onScroll:c,lastScrollTop:s.scrollTop},a){const t=new MutationObserver((0,Ze.A)(ob.bind(null,e,r),Qg));e[Yg].observer=t,t.observe(e,{childList:!0,subtree:!0}),ob(e,r)}l.addEventListener("scroll",c)}},unmounted(e){if(!e[Yg])return;const{container:t,onScroll:n}=e[Yg];null==t||t.removeEventListener("scroll",n),nb(e)},async updated(e){if(e[Yg]){const{containerEl:t,cb:n,observer:r}=e[Yg];t.clientHeight&&r&&ob(e,n)}else await(0,i.dY)()}},lb=ab;lb.install=e=>{e.directive("InfiniteScroll",lb)};const ib=lb;var sb=n(55445),ub=n(99114);const cb={install(e){sb.A._context=e._context,ub.A._context=e._context,e.directive("loading",ub.A),e.config.globalProperties.$loading=sb.A},directive:ub.A,service:sb.A};var db=n(51219),fb=n(12933);const pb=["primary","success","info","warning","error"],vb=(0,f.b_)({customClass:{type:String,default:""},dangerouslyUseHTMLString:Boolean,duration:{type:Number,default:4500},icon:{type:Y.Ze},id:{type:String,default:""},message:{type:(0,f.jq)([String,Object,Function]),default:""},offset:{type:Number,default:0},onClick:{type:(0,f.jq)(Function),default:()=>{}},onClose:{type:(0,f.jq)(Function),required:!0},position:{type:String,values:["top-right","top-left","bottom-right","bottom-left"],default:"top-right"},showClose:{type:Boolean,default:!0},title:{type:String,default:""},type:{type:String,values:[...pb,""],default:""},zIndex:Number,closeIcon:{type:Y.Ze,default:O.Close}}),hb={destroy:()=>!0},mb=(0,i.pM)({name:"ElNotification"}),gb=(0,i.pM)({...mb,props:vb,emits:hb,setup(e,{expose:t}){const n=e,{ns:r,zIndex:o}=(0,a.ht)("notification"),{nextZIndex:l,currentZIndex:d}=o,f=(0,s.KR)(!1);let p;const v=(0,i.EW)(()=>{const e=n.type;return e&&Y.rz[n.type]?r.m(e):""}),h=(0,i.EW)(()=>n.type&&Y.rz[n.type]||n.icon),m=(0,i.EW)(()=>n.position.endsWith("right")?"right":"left"),g=(0,i.EW)(()=>n.position.startsWith("top")?"top":"bottom"),b=(0,i.EW)(()=>{var e;return{[g.value]:`${n.offset}px`,zIndex:null!=(e=n.zIndex)?e:d.value}});function y(){n.duration>0&&({stop:p}=(0,A.TO)(()=>{f.value&&R()},n.duration))}function w(){null==p||p()}function R(){f.value=!1}function C(e){const t=(0,V.CG)(e);switch(t){case j.R.delete:case j.R.backspace:w();break;case j.R.esc:f.value&&R();break;default:y();break}}return(0,i.sV)(()=>{y(),l(),f.value=!0}),(0,c.MLh)(document,"keydown",C),t({visible:f,close:R}),(e,t)=>((0,i.uX)(),(0,i.Wv)(M.eB,{name:(0,s.R1)(r).b("fade"),onBeforeLeave:e.onClose,onAfterLeave:t=>e.$emit("destroy"),persisted:""},{default:(0,i.k6)(()=>[(0,i.bo)((0,i.Lk)("div",{id:e.id,class:(0,u.C4)([(0,s.R1)(r).b(),e.customClass,(0,s.R1)(m)]),style:(0,u.Tr)((0,s.R1)(b)),role:"alert",onMouseenter:w,onMouseleave:y,onClick:e.onClick},[(0,s.R1)(h)?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:0,class:(0,u.C4)([(0,s.R1)(r).e("icon"),(0,s.R1)(v)])},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)((0,s.R1)(h))))]),_:1},8,["class"])):(0,i.Q3)("v-if",!0),(0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(r).e("group"))},[(0,i.Lk)("h2",{class:(0,u.C4)((0,s.R1)(r).e("title")),textContent:(0,u.v_)(e.title)},null,10,["textContent"]),(0,i.bo)((0,i.Lk)("div",{class:(0,u.C4)((0,s.R1)(r).e("content")),style:(0,u.Tr)(e.title?void 0:{margin:0})},[(0,i.RG)(e.$slots,"default",{},()=>[e.dangerouslyUseHTMLString?((0,i.uX)(),(0,i.CE)(i.FK,{key:1},[(0,i.Q3)(" Caution here, message could've been compromised, never use user's input as message "),(0,i.Lk)("p",{innerHTML:e.message},null,8,["innerHTML"])],2112)):((0,i.uX)(),(0,i.CE)("p",{key:0},(0,u.v_)(e.message),1))])],6),[[M.aG,e.message]]),e.showClose?((0,i.uX)(),(0,i.Wv)((0,s.R1)(W.tk),{key:0,class:(0,u.C4)((0,s.R1)(r).e("closeBtn")),onClick:(0,M.D$)(R,["stop"])},{default:(0,i.k6)(()=>[((0,i.uX)(),(0,i.Wv)((0,i.$y)(e.closeIcon)))]),_:1},8,["class","onClick"])):(0,i.Q3)("v-if",!0)],2)],46,["id","onClick"]),[[M.aG,f.value]])]),_:3},8,["name","onBeforeLeave","onAfterLeave"]))}});var bb=(0,m.A)(gb,[["__file","notification.vue"]]);const yb={"top-left":[],"top-right":[],"bottom-left":[],"bottom-right":[]},wb=16;let Rb=1;const Cb=function(e={},t){if(!A.oc)return{close:()=>{}};((0,u.Kg)(e)||(0,i.vv)(e))&&(e={message:e});const n=e.position||"top-right";let r=e.offset||0;yb[n].forEach(({vm:e})=>{var t;r+=((null==(t=e.el)?void 0:t.offsetHeight)||0)+wb}),r+=wb;const o="notification_"+Rb++,a=e.onClose,l={...e,offset:r,id:o,onClose:()=>{xb(o,n,a)}};let s=document.body;(0,p.vq)(e.appendTo)?s=e.appendTo:(0,u.Kg)(e.appendTo)&&(s=document.querySelector(e.appendTo)),(0,p.vq)(s)||((0,w.U)("ElNotification","the appendTo option is not an HTMLElement. Falling back to document.body."),s=document.body);const c=document.createElement("div"),d=(0,i.bF)(bb,l,(0,u.Tn)(l.message)?l.message:(0,i.vv)(l.message)?()=>l.message:null);return d.appContext=(0,p.b0)(t)?Cb._context:t,d.props.onDestroy=()=>{(0,M.XX)(null,c)},(0,M.XX)(d,c),yb[n].push({vm:d}),s.appendChild(c.firstElementChild),{close:()=>{d.component.exposed.visible.value=!1}}};function xb(e,t,n){const r=yb[t],o=r.findIndex(({vm:t})=>{var n;return(null==(n=t.component)?void 0:n.props.id)===e});if(-1===o)return;const{vm:a}=r[o];if(!a)return;null==n||n(a);const l=a.el.offsetHeight,i=t.split("-")[0];r.splice(o,1);const s=r.length;if(!(s<1))for(let u=o;u{e.component.exposed.visible.value=!1})}function Eb(e="top-right"){var t,n,r,o;let a=(null==(r=null==(n=null==(t=yb[e][0])?void 0:t.vm.component)?void 0:n.props)?void 0:r.offset)||0;for(const{vm:l}of yb[e])l.component.props.offset=a,a+=((null==(o=l.el)?void 0:o.offsetHeight)||0)+wb}pb.forEach(e=>{Cb[e]=(t={},n)=>(((0,u.Kg)(t)||(0,i.vv)(t))&&(t={message:t}),Cb({...t,type:e},n))}),Cb.closeAll=kb,Cb.updateOffsets=Eb,Cb._context=null;const _b=(0,E._u)(Cb,"$notify");var Sb=[ib,cb,db.nk,fb.s,_b,hi.IK],Mb=l([...qg,...Sb])},92056:function(e,t,n){"use strict";n.d(t,{YU:function(){return o},l4:function(){return r},qs:function(){return a}});const r="update:modelValue",o="change",a="input"},92140:function(e,t,n){"use strict";var r=n(78227),o=r("toStringTag"),a={};a[o]="z",e.exports="[object z]"===String(a)},92308:function(e,t,n){"use strict";n.d(t,{A:function(){return d}});var r=n(1821),o=n(72990),a=n(26162),l=n(23506),i=o.A?o.A.isConcatSpreadable:void 0;function s(e){return(0,l.A)(e)||(0,a.A)(e)||!!(i&&e&&e[i])}var u=s;function c(e,t,n,o,a){var l=-1,i=e.length;n||(n=u),a||(a=[]);while(++l0&&n(s)?t>1?c(s,t-1,n,o,a):(0,r.A)(a,s):o||(a[a.length]=s)}return a}var d=c},92317:function(e,t,n){n(18111),n(61701),function(t,n){e.exports=n()}(0,function(){"use strict";return function(e,t,n){var r=t.prototype,o=function(e){return e&&(e.indexOf?e:e.s)},a=function(e,t,n,r,a){var l=e.name?e:e.$locale(),i=o(l[t]),s=o(l[n]),u=i||s.map(function(e){return e.slice(0,r)});if(!a)return u;var c=l.weekStart;return u.map(function(e,t){return u[(t+(c||0))%7]})},l=function(){return n.Ls[n.locale()]},i=function(e,t){return e.formats[t]||function(e){return e.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(e,t,n){return t||n.slice(1)})}(e.formats[t.toUpperCase()])},s=function(){var e=this;return{months:function(t){return t?t.format("MMMM"):a(e,"months")},monthsShort:function(t){return t?t.format("MMM"):a(e,"monthsShort","months",3)},firstDayOfWeek:function(){return e.$locale().weekStart||0},weekdays:function(t){return t?t.format("dddd"):a(e,"weekdays")},weekdaysMin:function(t){return t?t.format("dd"):a(e,"weekdaysMin","weekdays",2)},weekdaysShort:function(t){return t?t.format("ddd"):a(e,"weekdaysShort","weekdays",3)},longDateFormat:function(t){return i(e.$locale(),t)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};r.localeData=function(){return s.bind(this)()},n.localeData=function(){var e=l();return{firstDayOfWeek:function(){return e.weekStart||0},weekdays:function(){return n.weekdays()},weekdaysShort:function(){return n.weekdaysShort()},weekdaysMin:function(){return n.weekdaysMin()},months:function(){return n.months()},monthsShort:function(){return n.monthsShort()},longDateFormat:function(t){return i(e,t)},meridiem:e.meridiem,ordinal:e.ordinal}},n.months=function(){return a(l(),"months")},n.monthsShort=function(){return a(l(),"monthsShort","months",3)},n.weekdays=function(e){return a(l(),"weekdays",null,null,e)},n.weekdaysShort=function(e){return a(l(),"weekdaysShort","weekdays",3,e)},n.weekdaysMin=function(e){return a(l(),"weekdaysMin","weekdays",2,e)}}})},92436:function(e,t,n){"use strict";n.d(t,{CB:function(){return u},NV:function(){return s}});var r=n(90144),o=n(56768),a=n(53845);const l=e=>{const t=(0,o.nI)();return(0,o.EW)(()=>{var n,r;return null==(r=null==(n=null==t?void 0:t.proxy)?void 0:n.$props)?void 0:r[e]})};var i=n(87254);const s=(e,t={})=>{const n=(0,r.KR)(void 0),s=t.prop?n:l("size"),u=t.global?n:(0,a.wC)(),c=t.form?{size:void 0}:(0,o.WQ)(i.F,void 0),d=t.formItem?{size:void 0}:(0,o.WQ)(i.w,void 0);return(0,o.EW)(()=>s.value||(0,r.R1)(e)||(null==d?void 0:d.size)||(null==c?void 0:c.size)||u.value||"")},u=e=>{const t=l("disabled"),n=(0,o.WQ)(i.F,void 0);return(0,o.EW)(()=>{var o,a,l;return null!=(l=null!=(a=null!=(o=t.value)?o:(0,r.R1)(e))?a:null==n?void 0:n.disabled)&&l})}},92796:function(e,t,n){"use strict";var r=n(79039),o=n(94901),a=/#|\.prototype\./,l=function(e,t){var n=s[i(e)];return n===c||n!==u&&(o(t)?r(t):!!t)},i=l.normalize=function(e){return String(e).replace(a,".").toLowerCase()},s=l.data={},u=l.NATIVE="N",c=l.POLYFILL="P";e.exports=l},92804:function(e){"use strict";var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",n=t+"+/",r=t+"-_",o=function(e){for(var t={},n=0;n<64;n++)t[e.charAt(n)]=n;return t};e.exports={i2c:n,c2i:o(n),i2cUrl:r,c2iUrl:o(r)}},93212:function(e,t){"use strict";var n="fas",r="tag",o=512,a=512,l=[127991],i="f02b",s="M32.5 96l0 149.5c0 17 6.7 33.3 18.7 45.3l192 192c25 25 65.5 25 90.5 0L483.2 333.3c25-25 25-65.5 0-90.5l-192-192C279.2 38.7 263 32 246 32L96.5 32c-35.3 0-64 28.7-64 64zm112 16a32 32 0 1 1 0 64 32 32 0 1 1 0-64z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t._2=t.mw},93291:function(e,t,n){"use strict";n.d(t,{Ll:function(){return r},MP:function(){return l},NP:function(){return s},aw:function(){return o},d:function(){return a},fI:function(){return u},oV:function(){return i},r3:function(){return c}});const r="focus-trap.focus-after-trapped",o="focus-trap.focus-after-released",a="focus-trap.focusout-prevented",l={cancelable:!0,bubbles:!1},i={cancelable:!0,bubbles:!1},s="focusAfterTrapped",u="focusAfterReleased",c=Symbol("elFocusTrap")},93422:function(e,t){"use strict";var n="fas",r="chevron-left",o=320,a=512,l=[9001],i="f053",s="M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256 246.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.Wz=t.mw},93513:function(e,t,n){"use strict";n.d(t,{DU:function(){return c},E9:function(){return u},Lt:function(){return a},O5:function(){return s}});var r=n(56768),o=n(90144);const a="el",l="is-",i=(e,t,n,r,o)=>{let a=`${e}-${t}`;return n&&(a+=`-${n}`),r&&(a+=`__${r}`),o&&(a+=`--${o}`),a},s=Symbol("namespaceContextKey"),u=e=>{const t=e||((0,r.nI)()?(0,r.WQ)(s,(0,o.KR)(a)):(0,o.KR)(a)),n=(0,r.EW)(()=>(0,o.R1)(t)||a);return n},c=(e,t)=>{const n=u(t),r=(t="")=>i(n.value,e,t,"",""),o=t=>t?i(n.value,e,"",t,""):"",a=t=>t?i(n.value,e,"","",t):"",s=(t,r)=>t&&r?i(n.value,e,t,r,""):"",c=(t,r)=>t&&r?i(n.value,e,"",t,r):"",d=(t,r)=>t&&r?i(n.value,e,t,"",r):"",f=(t,r,o)=>t&&r&&o?i(n.value,e,t,r,o):"",p=(e,...t)=>{const n=!(t.length>=1)||t[0];return e&&n?`${l}${e}`:""},v=e=>{const t={};for(const r in e)e[r]&&(t[`--${n.value}-${r}`]=e[r]);return t},h=t=>{const r={};for(const o in t)t[o]&&(r[`--${n.value}-${e}-${o}`]=t[o]);return r},m=e=>`--${n.value}-${e}`,g=t=>`--${n.value}-${e}-${t}`;return{namespace:n,b:r,e:o,m:a,be:s,em:c,bm:d,bem:f,is:p,cssVar:v,cssVarName:m,cssVarBlock:h,cssVarBlockName:g}}},93516:function(e,t,n){"use strict";var r=n(39078);function o(e,t){var n=t?(0,r.A)(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}t.A=o},93558:function(e,t,n){"use strict";n.d(t,{_V:function(){return h},eC:function(){return v},gd:function(){return p},iQ:function(){return d},nB:function(){return c},vy:function(){return f}});n(18111),n(22489),n(7588);var r=n(12235),o=n(20017),a=n(24232),l=n(64340),i=n(86894);const s="utils/dom/style",u=(e="")=>e.split(" ").filter(e=>!!e.trim()),c=(e,t)=>{if(!e||!t)return!1;if(t.includes(" "))throw new Error("className should not contain space.");return e.classList.contains(t)},d=(e,t)=>{e&&t.trim()&&e.classList.add(...u(t))},f=(e,t)=>{e&&t.trim()&&e.classList.remove(...u(t))},p=(e,t)=>{var n;if(!o.oc||!e||!t)return"";let r=(0,a.PT)(t);"float"===r&&(r="cssFloat");try{const t=e.style[r];if(t)return t;const o=null==(n=document.defaultView)?void 0:n.getComputedStyle(e,"");return o?o[r]:""}catch(l){return e.style[r]}},v=(e,t,n)=>{if(e&&t)if((0,a.Gv)(t))(0,l.Mc)(t).forEach(([t,n])=>v(e,t,n));else{const r=(0,a.PT)(t);e.style[r]=n}};function h(e,t="px"){return e||0===e?(0,r.Et)(e)||(0,r.Hp)(e)?`${e}${t}`:(0,a.Kg)(e)?e:void(0,i.U)(s,"binding value must be a string or number"):""}},94373:function(e,t,n){"use strict";n.d(t,{A:function(){return mn}});var r={};n.r(r),n.d(r,{hasBrowserEnv:function(){return De},hasStandardBrowserEnv:function(){return Fe},hasStandardBrowserWebWorkerEnv:function(){return Be},navigator:function(){return Pe},origin:function(){return ze}});n(44114),n(18111),n(7588),n(79577),n(41549),n(49797),n(49631),n(35623),n(59848);function o(e,t){return function(){return e.apply(t,arguments)}}const{toString:a}=Object.prototype,{getPrototypeOf:l}=Object,{iterator:i,toStringTag:s}=Symbol,u=(e=>t=>{const n=a.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),c=e=>(e=e.toLowerCase(),t=>u(t)===e),d=e=>t=>typeof t===e,{isArray:f}=Array,p=d("undefined");function v(e){return null!==e&&!p(e)&&null!==e.constructor&&!p(e.constructor)&&b(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const h=c("ArrayBuffer");function m(e){let t;return t="undefined"!==typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&h(e.buffer),t}const g=d("string"),b=d("function"),y=d("number"),w=e=>null!==e&&"object"===typeof e,R=e=>!0===e||!1===e,C=e=>{if("object"!==u(e))return!1;const t=l(e);return(null===t||t===Object.prototype||null===Object.getPrototypeOf(t))&&!(s in e)&&!(i in e)},x=e=>{if(!w(e)||v(e))return!1;try{return 0===Object.keys(e).length&&Object.getPrototypeOf(e)===Object.prototype}catch(t){return!1}},k=c("Date"),E=c("File"),_=c("Blob"),S=c("FileList"),M=e=>w(e)&&b(e.pipe),L=e=>{let t;return e&&("function"===typeof FormData&&e instanceof FormData||b(e.append)&&("formdata"===(t=u(e))||"object"===t&&b(e.toString)&&"[object FormData]"===e.toString()))},A=c("URLSearchParams"),[O,T,I,N]=["ReadableStream","Request","Response","Headers"].map(c),W=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function D(e,t,{allOwnKeys:n=!1}={}){if(null===e||"undefined"===typeof e)return;let r,o;if("object"!==typeof e&&(e=[e]),f(e))for(r=0,o=e.length;r0)if(r=n[o],t===r.toLowerCase())return r;return null}const F=(()=>"undefined"!==typeof globalThis?globalThis:"undefined"!==typeof self?self:"undefined"!==typeof window?window:n.g)(),B=e=>!p(e)&&e!==F;function z(){const{caseless:e,skipUndefined:t}=B(this)&&this||{},n={},r=(r,o)=>{if("__proto__"===o||"constructor"===o||"prototype"===o)return;const a=e&&P(n,o)||o;C(n[a])&&C(r)?n[a]=z(n[a],r):C(r)?n[a]=z({},r):f(r)?n[a]=r.slice():t&&p(r)||(n[a]=r)};for(let o=0,a=arguments.length;o(D(t,(t,r)=>{n&&b(t)?Object.defineProperty(e,r,{value:o(t,n),writable:!0,enumerable:!0,configurable:!0}):Object.defineProperty(e,r,{value:t,writable:!0,enumerable:!0,configurable:!0})},{allOwnKeys:r}),e),V=e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),j=(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),Object.defineProperty(e.prototype,"constructor",{value:e,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},K=(e,t,n,r)=>{let o,a,i;const s={};if(t=t||{},null==e)return t;do{o=Object.getOwnPropertyNames(e),a=o.length;while(a-- >0)i=o[a],r&&!r(i,e,t)||s[i]||(t[i]=e[i],s[i]=!0);e=!1!==n&&l(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},H=(e,t,n)=>{e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return-1!==r&&r===n},X=e=>{if(!e)return null;if(f(e))return e;let t=e.length;if(!y(t))return null;const n=new Array(t);while(t-- >0)n[t]=e[t];return n},U=(e=>t=>e&&t instanceof e)("undefined"!==typeof Uint8Array&&l(Uint8Array)),G=(e,t)=>{const n=e&&e[i],r=n.call(e);let o;while((o=r.next())&&!o.done){const n=o.value;t.call(e,n[0],n[1])}},q=(e,t)=>{let n;const r=[];while(null!==(n=e.exec(t)))r.push(n);return r},Y=c("HTMLFormElement"),Q=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(e,t,n){return t.toUpperCase()+n}),Z=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),J=c("RegExp"),ee=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};D(n,(n,o)=>{let a;!1!==(a=t(n,o,e))&&(r[o]=a||n)}),Object.defineProperties(e,r)},te=e=>{ee(e,(t,n)=>{if(b(e)&&-1!==["arguments","caller","callee"].indexOf(n))return!1;const r=e[n];b(r)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")}))})},ne=(e,t)=>{const n={},r=e=>{e.forEach(e=>{n[e]=!0})};return f(e)?r(e):r(String(e).split(t)),n},re=()=>{},oe=(e,t)=>null!=e&&Number.isFinite(e=+e)?e:t;function ae(e){return!!(e&&b(e.append)&&"FormData"===e[s]&&e[i])}const le=e=>{const t=new Array(10),n=(e,r)=>{if(w(e)){if(t.indexOf(e)>=0)return;if(v(e))return e;if(!("toJSON"in e)){t[r]=e;const o=f(e)?[]:{};return D(e,(e,t)=>{const a=n(e,r+1);!p(a)&&(o[t]=a)}),t[r]=void 0,o}}return e};return n(e,0)},ie=c("AsyncFunction"),se=e=>e&&(w(e)||b(e))&&b(e.then)&&b(e.catch),ue=((e,t)=>e?setImmediate:t?((e,t)=>(F.addEventListener("message",({source:n,data:r})=>{n===F&&r===e&&t.length&&t.shift()()},!1),n=>{t.push(n),F.postMessage(e,"*")}))(`axios@${Math.random()}`,[]):e=>setTimeout(e))("function"===typeof setImmediate,b(F.postMessage)),ce="undefined"!==typeof queueMicrotask?queueMicrotask.bind(F):"undefined"!==typeof process&&process.nextTick||ue,de=e=>null!=e&&b(e[i]);var fe={isArray:f,isArrayBuffer:h,isBuffer:v,isFormData:L,isArrayBufferView:m,isString:g,isNumber:y,isBoolean:R,isObject:w,isPlainObject:C,isEmptyObject:x,isReadableStream:O,isRequest:T,isResponse:I,isHeaders:N,isUndefined:p,isDate:k,isFile:E,isBlob:_,isRegExp:J,isFunction:b,isStream:M,isURLSearchParams:A,isTypedArray:U,isFileList:S,forEach:D,merge:z,extend:$,trim:W,stripBOM:V,inherits:j,toFlatObject:K,kindOf:u,kindOfTest:c,endsWith:H,toArray:X,forEachEntry:G,matchAll:q,isHTMLForm:Y,hasOwnProperty:Z,hasOwnProp:Z,reduceDescriptors:ee,freezeMethods:te,toObjectSet:ne,toCamelCase:Q,noop:re,toFiniteNumber:oe,findKey:P,global:F,isContextDefined:B,isSpecCompliantForm:ae,toJSONObject:le,isAsyncFn:ie,isThenable:se,setImmediate:ue,asap:ce,isIterable:de};n(61701),n(13579),n(61806);class pe extends Error{static from(e,t,n,r,o,a){const l=new pe(e.message,t||e.code,n,r,o);return l.cause=e,l.name=e.name,a&&Object.assign(l,a),l}constructor(e,t,n,r,o){super(e),this.name="AxiosError",this.isAxiosError=!0,t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),o&&(this.response=o,this.status=o.status)}toJSON(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:fe.toJSONObject(this.config),code:this.code,status:this.status}}}pe.ERR_BAD_OPTION_VALUE="ERR_BAD_OPTION_VALUE",pe.ERR_BAD_OPTION="ERR_BAD_OPTION",pe.ECONNABORTED="ECONNABORTED",pe.ETIMEDOUT="ETIMEDOUT",pe.ERR_NETWORK="ERR_NETWORK",pe.ERR_FR_TOO_MANY_REDIRECTS="ERR_FR_TOO_MANY_REDIRECTS",pe.ERR_DEPRECATED="ERR_DEPRECATED",pe.ERR_BAD_RESPONSE="ERR_BAD_RESPONSE",pe.ERR_BAD_REQUEST="ERR_BAD_REQUEST",pe.ERR_CANCELED="ERR_CANCELED",pe.ERR_NOT_SUPPORT="ERR_NOT_SUPPORT",pe.ERR_INVALID_URL="ERR_INVALID_URL";var ve=pe,he=null;function me(e){return fe.isPlainObject(e)||fe.isArray(e)}function ge(e){return fe.endsWith(e,"[]")?e.slice(0,-2):e}function be(e,t,n){return e?e.concat(t).map(function(e,t){return e=ge(e),!n&&t?"["+e+"]":e}).join(n?".":""):t}function ye(e){return fe.isArray(e)&&!e.some(me)}const we=fe.toFlatObject(fe,{},null,function(e){return/^is[A-Z]/.test(e)});function Re(e,t,n){if(!fe.isObject(e))throw new TypeError("target must be an object");t=t||new(he||FormData),n=fe.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(e,t){return!fe.isUndefined(t[e])});const r=n.metaTokens,o=n.visitor||c,a=n.dots,l=n.indexes,i=n.Blob||"undefined"!==typeof Blob&&Blob,s=i&&fe.isSpecCompliantForm(t);if(!fe.isFunction(o))throw new TypeError("visitor must be a function");function u(e){if(null===e)return"";if(fe.isDate(e))return e.toISOString();if(fe.isBoolean(e))return e.toString();if(!s&&fe.isBlob(e))throw new ve("Blob is not supported. Use a Buffer instead.");return fe.isArrayBuffer(e)||fe.isTypedArray(e)?s&&"function"===typeof Blob?new Blob([e]):Buffer.from(e):e}function c(e,n,o){let i=e;if(e&&!o&&"object"===typeof e)if(fe.endsWith(n,"{}"))n=r?n:n.slice(0,-2),e=JSON.stringify(e);else if(fe.isArray(e)&&ye(e)||(fe.isFileList(e)||fe.endsWith(n,"[]"))&&(i=fe.toArray(e)))return n=ge(n),i.forEach(function(e,r){!fe.isUndefined(e)&&null!==e&&t.append(!0===l?be([n],r,a):null===l?n:n+"[]",u(e))}),!1;return!!me(e)||(t.append(be(o,n,a),u(e)),!1)}const d=[],f=Object.assign(we,{defaultVisitor:c,convertValue:u,isVisitable:me});function p(e,n){if(!fe.isUndefined(e)){if(-1!==d.indexOf(e))throw Error("Circular reference detected in "+n.join("."));d.push(e),fe.forEach(e,function(e,r){const a=!(fe.isUndefined(e)||null===e)&&o.call(t,e,fe.isString(r)?r.trim():r,n,f);!0===a&&p(e,n?n.concat(r):[r])}),d.pop()}}if(!fe.isObject(e))throw new TypeError("data must be an object");return p(e),t}var Ce=Re;function xe(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(e){return t[e]})}function ke(e,t){this._pairs=[],e&&Ce(e,this,t)}const Ee=ke.prototype;Ee.append=function(e,t){this._pairs.push([e,t])},Ee.toString=function(e){const t=e?function(t){return e.call(this,t,xe)}:xe;return this._pairs.map(function(e){return t(e[0])+"="+t(e[1])},"").join("&")};var _e=ke;function Se(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function Me(e,t,n){if(!t)return e;const r=n&&n.encode||Se,o=fe.isFunction(n)?{serialize:n}:n,a=o&&o.serialize;let l;if(l=a?a(t,o):fe.isURLSearchParams(t)?t.toString():new _e(t,o).toString(r),l){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+l}return e}class Le{constructor(){this.handlers=[]}use(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){fe.forEach(this.handlers,function(t){null!==t&&e(t)})}}var Ae=Le,Oe={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1,legacyInterceptorReqResOrdering:!0},Te="undefined"!==typeof URLSearchParams?URLSearchParams:_e,Ie="undefined"!==typeof FormData?FormData:null,Ne="undefined"!==typeof Blob?Blob:null,We={isBrowser:!0,classes:{URLSearchParams:Te,FormData:Ie,Blob:Ne},protocols:["http","https","file","blob","url","data"]};const De="undefined"!==typeof window&&"undefined"!==typeof document,Pe="object"===typeof navigator&&navigator||void 0,Fe=De&&(!Pe||["ReactNative","NativeScript","NS"].indexOf(Pe.product)<0),Be=(()=>"undefined"!==typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"===typeof self.importScripts)(),ze=De&&window.location.href||"http://localhost";var $e={...r,...We};function Ve(e,t){return Ce(e,new $e.classes.URLSearchParams,{visitor:function(e,t,n,r){return $e.isNode&&fe.isBuffer(e)?(this.append(t,e.toString("base64")),!1):r.defaultVisitor.apply(this,arguments)},...t})}function je(e){return fe.matchAll(/\w+|\[(\w*)]/g,e).map(e=>"[]"===e[0]?"":e[1]||e[0])}function Ke(e){const t={},n=Object.keys(e);let r;const o=n.length;let a;for(r=0;r=e.length;if(a=!a&&fe.isArray(r)?r.length:a,i)return fe.hasOwnProp(r,a)?r[a]=[r[a],n]:r[a]=n,!l;r[a]&&fe.isObject(r[a])||(r[a]=[]);const s=t(e,n,r[a],o);return s&&fe.isArray(r[a])&&(r[a]=Ke(r[a])),!l}if(fe.isFormData(e)&&fe.isFunction(e.entries)){const n={};return fe.forEachEntry(e,(e,r)=>{t(je(e),r,n,0)}),n}return null}var Xe=He;function Ue(e,t,n){if(fe.isString(e))try{return(t||JSON.parse)(e),fe.trim(e)}catch(r){if("SyntaxError"!==r.name)throw r}return(n||JSON.stringify)(e)}const Ge={transitional:Oe,adapter:["xhr","http","fetch"],transformRequest:[function(e,t){const n=t.getContentType()||"",r=n.indexOf("application/json")>-1,o=fe.isObject(e);o&&fe.isHTMLForm(e)&&(e=new FormData(e));const a=fe.isFormData(e);if(a)return r?JSON.stringify(Xe(e)):e;if(fe.isArrayBuffer(e)||fe.isBuffer(e)||fe.isStream(e)||fe.isFile(e)||fe.isBlob(e)||fe.isReadableStream(e))return e;if(fe.isArrayBufferView(e))return e.buffer;if(fe.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let l;if(o){if(n.indexOf("application/x-www-form-urlencoded")>-1)return Ve(e,this.formSerializer).toString();if((l=fe.isFileList(e))||n.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return Ce(l?{"files[]":e}:e,t&&new t,this.formSerializer)}}return o||r?(t.setContentType("application/json",!1),Ue(e)):e}],transformResponse:[function(e){const t=this.transitional||Ge.transitional,n=t&&t.forcedJSONParsing,r="json"===this.responseType;if(fe.isResponse(e)||fe.isReadableStream(e))return e;if(e&&fe.isString(e)&&(n&&!this.responseType||r)){const n=t&&t.silentJSONParsing,a=!n&&r;try{return JSON.parse(e,this.parseReviver)}catch(o){if(a){if("SyntaxError"===o.name)throw ve.from(o,ve.ERR_BAD_RESPONSE,this,null,this.response);throw o}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:$e.classes.FormData,Blob:$e.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};fe.forEach(["delete","get","head","post","put","patch"],e=>{Ge.headers[e]={}});var qe=Ge;const Ye=fe.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]);var Qe=e=>{const t={};let n,r,o;return e&&e.split("\n").forEach(function(e){o=e.indexOf(":"),n=e.substring(0,o).trim().toLowerCase(),r=e.substring(o+1).trim(),!n||t[n]&&Ye[n]||("set-cookie"===n?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)}),t};const Ze=Symbol("internals");function Je(e){return e&&String(e).trim().toLowerCase()}function et(e){return!1===e||null==e?e:fe.isArray(e)?e.map(et):String(e)}function tt(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;while(r=n.exec(e))t[r[1]]=r[2];return t}const nt=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function rt(e,t,n,r,o){return fe.isFunction(r)?r.call(this,t,n):(o&&(t=n),fe.isString(t)?fe.isString(r)?-1!==t.indexOf(r):fe.isRegExp(r)?r.test(t):void 0:void 0)}function ot(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,t,n)=>t.toUpperCase()+n)}function at(e,t){const n=fe.toCamelCase(" "+t);["get","set","has"].forEach(r=>{Object.defineProperty(e,r+n,{value:function(e,n,o){return this[r].call(this,t,e,n,o)},configurable:!0})})}class lt{constructor(e){e&&this.set(e)}set(e,t,n){const r=this;function o(e,t,n){const o=Je(t);if(!o)throw new Error("header name must be a non-empty string");const a=fe.findKey(r,o);(!a||void 0===r[a]||!0===n||void 0===n&&!1!==r[a])&&(r[a||t]=et(e))}const a=(e,t)=>fe.forEach(e,(e,n)=>o(e,n,t));if(fe.isPlainObject(e)||e instanceof this.constructor)a(e,t);else if(fe.isString(e)&&(e=e.trim())&&!nt(e))a(Qe(e),t);else if(fe.isObject(e)&&fe.isIterable(e)){let n,r,o={};for(const t of e){if(!fe.isArray(t))throw TypeError("Object iterator must return a key-value pair");o[r=t[0]]=(n=o[r])?fe.isArray(n)?[...n,t[1]]:[n,t[1]]:t[1]}a(o,t)}else null!=e&&o(t,e,n);return this}get(e,t){if(e=Je(e),e){const n=fe.findKey(this,e);if(n){const e=this[n];if(!t)return e;if(!0===t)return tt(e);if(fe.isFunction(t))return t.call(this,e,n);if(fe.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=Je(e),e){const n=fe.findKey(this,e);return!(!n||void 0===this[n]||t&&!rt(this,this[n],n,t))}return!1}delete(e,t){const n=this;let r=!1;function o(e){if(e=Je(e),e){const o=fe.findKey(n,e);!o||t&&!rt(n,n[o],o,t)||(delete n[o],r=!0)}}return fe.isArray(e)?e.forEach(o):o(e),r}clear(e){const t=Object.keys(this);let n=t.length,r=!1;while(n--){const o=t[n];e&&!rt(this,this[o],o,e,!0)||(delete this[o],r=!0)}return r}normalize(e){const t=this,n={};return fe.forEach(this,(r,o)=>{const a=fe.findKey(n,o);if(a)return t[a]=et(r),void delete t[o];const l=e?ot(o):String(o).trim();l!==o&&delete t[o],t[l]=et(r),n[l]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return fe.forEach(this,(n,r)=>{null!=n&&!1!==n&&(t[r]=e&&fe.isArray(n)?n.join(", "):n)}),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,t])=>e+": "+t).join("\n")}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const n=new this(e);return t.forEach(e=>n.set(e)),n}static accessor(e){const t=this[Ze]=this[Ze]={accessors:{}},n=t.accessors,r=this.prototype;function o(e){const t=Je(e);n[t]||(at(r,e),n[t]=!0)}return fe.isArray(e)?e.forEach(o):o(e),this}}lt.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),fe.reduceDescriptors(lt.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[n]=e}}}),fe.freezeMethods(lt);var it=lt;function st(e,t){const n=this||qe,r=t||n,o=it.from(r.headers);let a=r.data;return fe.forEach(e,function(e){a=e.call(n,a,o.normalize(),t?t.status:void 0)}),o.normalize(),a}function ut(e){return!(!e||!e.__CANCEL__)}class ct extends ve{constructor(e,t,n){super(null==e?"canceled":e,ve.ERR_CANCELED,t,n),this.name="CanceledError",this.__CANCEL__=!0}}var dt=ct;function ft(e,t,n){const r=n.config.validateStatus;n.status&&r&&!r(n.status)?t(new ve("Request failed with status code "+n.status,[ve.ERR_BAD_REQUEST,ve.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n)):e(n)}function pt(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function vt(e,t){e=e||10;const n=new Array(e),r=new Array(e);let o,a=0,l=0;return t=void 0!==t?t:1e3,function(i){const s=Date.now(),u=r[l];o||(o=s),n[a]=i,r[a]=s;let c=l,d=0;while(c!==a)d+=n[c++],c%=e;if(a=(a+1)%e,a===l&&(l=(l+1)%e),s-o{o=a,n=null,r&&(clearTimeout(r),r=null),e(...t)},i=(...e)=>{const t=Date.now(),i=t-o;i>=a?l(e,t):(n=e,r||(r=setTimeout(()=>{r=null,l(n)},a-i)))},s=()=>n&&l(n);return[i,s]}var gt=mt;const bt=(e,t,n=3)=>{let r=0;const o=ht(50,250);return gt(n=>{const a=n.loaded,l=n.lengthComputable?n.total:void 0,i=a-r,s=o(i),u=a<=l;r=a;const c={loaded:a,total:l,progress:l?a/l:void 0,bytes:i,rate:s||void 0,estimated:s&&l&&u?(l-a)/s:void 0,event:n,lengthComputable:null!=l,[t?"download":"upload"]:!0};e(c)},n)},yt=(e,t)=>{const n=null!=e;return[r=>t[0]({lengthComputable:n,total:e,loaded:r}),t[1]]},wt=e=>(...t)=>fe.asap(()=>e(...t));n(64979);var Rt=$e.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,$e.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL($e.origin),$e.navigator&&/(msie|trident)/i.test($e.navigator.userAgent)):()=>!0,Ct=$e.hasStandardBrowserEnv?{write(e,t,n,r,o,a,l){if("undefined"===typeof document)return;const i=[`${e}=${encodeURIComponent(t)}`];fe.isNumber(n)&&i.push(`expires=${new Date(n).toUTCString()}`),fe.isString(r)&&i.push(`path=${r}`),fe.isString(o)&&i.push(`domain=${o}`),!0===a&&i.push("secure"),fe.isString(l)&&i.push(`SameSite=${l}`),document.cookie=i.join("; ")},read(e){if("undefined"===typeof document)return null;const t=document.cookie.match(new RegExp("(?:^|; )"+e+"=([^;]*)"));return t?decodeURIComponent(t[1]):null},remove(e){this.write(e,"",Date.now()-864e5,"/")}}:{write(){},read(){return null},remove(){}};function xt(e){return"string"===typeof e&&/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function kt(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function Et(e,t,n){let r=!xt(t);return e&&(r||0==n)?kt(e,t):t}const _t=e=>e instanceof it?{...e}:e;function St(e,t){t=t||{};const n={};function r(e,t,n,r){return fe.isPlainObject(e)&&fe.isPlainObject(t)?fe.merge.call({caseless:r},e,t):fe.isPlainObject(t)?fe.merge({},t):fe.isArray(t)?t.slice():t}function o(e,t,n,o){return fe.isUndefined(t)?fe.isUndefined(e)?void 0:r(void 0,e,n,o):r(e,t,n,o)}function a(e,t){if(!fe.isUndefined(t))return r(void 0,t)}function l(e,t){return fe.isUndefined(t)?fe.isUndefined(e)?void 0:r(void 0,e):r(void 0,t)}function i(n,o,a){return a in t?r(n,o):a in e?r(void 0,n):void 0}const s={url:a,method:a,data:a,baseURL:l,transformRequest:l,transformResponse:l,paramsSerializer:l,timeout:l,timeoutMessage:l,withCredentials:l,withXSRFToken:l,adapter:l,responseType:l,xsrfCookieName:l,xsrfHeaderName:l,onUploadProgress:l,onDownloadProgress:l,decompress:l,maxContentLength:l,maxBodyLength:l,beforeRedirect:l,transport:l,httpAgent:l,httpsAgent:l,cancelToken:l,socketPath:l,responseEncoding:l,validateStatus:i,headers:(e,t,n)=>o(_t(e),_t(t),n,!0)};return fe.forEach(Object.keys({...e,...t}),function(r){if("__proto__"===r||"constructor"===r||"prototype"===r)return;const a=fe.hasOwnProp(s,r)?s[r]:o,l=a(e[r],t[r],r);fe.isUndefined(l)&&a!==i||(n[r]=l)}),n}var Mt=e=>{const t=St({},e);let{data:n,withXSRFToken:r,xsrfHeaderName:o,xsrfCookieName:a,headers:l,auth:i}=t;if(t.headers=l=it.from(l),t.url=Me(Et(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),i&&l.set("Authorization","Basic "+btoa((i.username||"")+":"+(i.password?unescape(encodeURIComponent(i.password)):""))),fe.isFormData(n))if($e.hasStandardBrowserEnv||$e.hasStandardBrowserWebWorkerEnv)l.setContentType(void 0);else if(fe.isFunction(n.getHeaders)){const e=n.getHeaders(),t=["content-type","content-length"];Object.entries(e).forEach(([e,n])=>{t.includes(e.toLowerCase())&&l.set(e,n)})}if($e.hasStandardBrowserEnv&&(r&&fe.isFunction(r)&&(r=r(t)),r||!1!==r&&Rt(t.url))){const e=o&&a&&Ct.read(a);e&&l.set(o,e)}return t};const Lt="undefined"!==typeof XMLHttpRequest;var At=Lt&&function(e){return new Promise(function(t,n){const r=Mt(e);let o=r.data;const a=it.from(r.headers).normalize();let l,i,s,u,c,{responseType:d,onUploadProgress:f,onDownloadProgress:p}=r;function v(){u&&u(),c&&c(),r.cancelToken&&r.cancelToken.unsubscribe(l),r.signal&&r.signal.removeEventListener("abort",l)}let h=new XMLHttpRequest;function m(){if(!h)return;const r=it.from("getAllResponseHeaders"in h&&h.getAllResponseHeaders()),o=d&&"text"!==d&&"json"!==d?h.response:h.responseText,a={data:o,status:h.status,statusText:h.statusText,headers:r,config:e,request:h};ft(function(e){t(e),v()},function(e){n(e),v()},a),h=null}h.open(r.method.toUpperCase(),r.url,!0),h.timeout=r.timeout,"onloadend"in h?h.onloadend=m:h.onreadystatechange=function(){h&&4===h.readyState&&(0!==h.status||h.responseURL&&0===h.responseURL.indexOf("file:"))&&setTimeout(m)},h.onabort=function(){h&&(n(new ve("Request aborted",ve.ECONNABORTED,e,h)),h=null)},h.onerror=function(t){const r=t&&t.message?t.message:"Network Error",o=new ve(r,ve.ERR_NETWORK,e,h);o.event=t||null,n(o),h=null},h.ontimeout=function(){let t=r.timeout?"timeout of "+r.timeout+"ms exceeded":"timeout exceeded";const o=r.transitional||Oe;r.timeoutErrorMessage&&(t=r.timeoutErrorMessage),n(new ve(t,o.clarifyTimeoutError?ve.ETIMEDOUT:ve.ECONNABORTED,e,h)),h=null},void 0===o&&a.setContentType(null),"setRequestHeader"in h&&fe.forEach(a.toJSON(),function(e,t){h.setRequestHeader(t,e)}),fe.isUndefined(r.withCredentials)||(h.withCredentials=!!r.withCredentials),d&&"json"!==d&&(h.responseType=r.responseType),p&&([s,c]=bt(p,!0),h.addEventListener("progress",s)),f&&h.upload&&([i,u]=bt(f),h.upload.addEventListener("progress",i),h.upload.addEventListener("loadend",u)),(r.cancelToken||r.signal)&&(l=t=>{h&&(n(!t||t.type?new dt(null,e,h):t),h.abort(),h=null)},r.cancelToken&&r.cancelToken.subscribe(l),r.signal&&(r.signal.aborted?l():r.signal.addEventListener("abort",l)));const g=pt(r.url);g&&-1===$e.protocols.indexOf(g)?n(new ve("Unsupported protocol "+g+":",ve.ERR_BAD_REQUEST,e)):h.send(o||null)})};n(22489);const Ot=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let n,r=new AbortController;const o=function(e){if(!n){n=!0,l();const t=e instanceof Error?e:this.reason;r.abort(t instanceof ve?t:new dt(t instanceof Error?t.message:t))}};let a=t&&setTimeout(()=>{a=null,o(new ve(`timeout of ${t}ms exceeded`,ve.ETIMEDOUT))},t);const l=()=>{e&&(a&&clearTimeout(a),a=null,e.forEach(e=>{e.unsubscribe?e.unsubscribe(o):e.removeEventListener("abort",o)}),e=null)};e.forEach(e=>e.addEventListener("abort",o));const{signal:i}=r;return i.unsubscribe=()=>fe.asap(l),i}};var Tt=Ot;const It=function*(e,t){let n=e.byteLength;if(!t||n{const o=Nt(e,t);let a,l=0,i=e=>{a||(a=!0,r&&r(e))};return new ReadableStream({async pull(e){try{const{done:t,value:r}=await o.next();if(t)return i(),void e.close();let a=r.byteLength;if(n){let e=l+=a;n(e)}e.enqueue(new Uint8Array(r))}catch(t){throw i(t),t}},cancel(e){return i(e),o.return()}},{highWaterMark:2})},Pt=65536,{isFunction:Ft}=fe,Bt=(({Request:e,Response:t})=>({Request:e,Response:t}))(fe.global),{ReadableStream:zt,TextEncoder:$t}=fe.global,Vt=(e,...t)=>{try{return!!e(...t)}catch(n){return!1}},jt=e=>{e=fe.merge.call({skipUndefined:!0},Bt,e);const{fetch:t,Request:n,Response:r}=e,o=t?Ft(t):"function"===typeof fetch,a=Ft(n),l=Ft(r);if(!o)return!1;const i=o&&Ft(zt),s=o&&("function"===typeof $t?(e=>t=>e.encode(t))(new $t):async e=>new Uint8Array(await new n(e).arrayBuffer())),u=a&&i&&Vt(()=>{let e=!1;const t=new n($e.origin,{body:new zt,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t}),c=l&&i&&Vt(()=>fe.isReadableStream(new r("").body)),d={stream:c&&(e=>e.body)};o&&(()=>{["text","arrayBuffer","blob","formData","stream"].forEach(e=>{!d[e]&&(d[e]=(t,n)=>{let r=t&&t[e];if(r)return r.call(t);throw new ve(`Response type '${e}' is not supported`,ve.ERR_NOT_SUPPORT,n)})})})();const f=async e=>{if(null==e)return 0;if(fe.isBlob(e))return e.size;if(fe.isSpecCompliantForm(e)){const t=new n($e.origin,{method:"POST",body:e});return(await t.arrayBuffer()).byteLength}return fe.isArrayBufferView(e)||fe.isArrayBuffer(e)?e.byteLength:(fe.isURLSearchParams(e)&&(e+=""),fe.isString(e)?(await s(e)).byteLength:void 0)},p=async(e,t)=>{const n=fe.toFiniteNumber(e.getContentLength());return null==n?f(t):n};return async e=>{let{url:o,method:l,data:i,signal:s,cancelToken:f,timeout:v,onDownloadProgress:h,onUploadProgress:m,responseType:g,headers:b,withCredentials:y="same-origin",fetchOptions:w}=Mt(e),R=t||fetch;g=g?(g+"").toLowerCase():"text";let C=Tt([s,f&&f.toAbortSignal()],v),x=null;const k=C&&C.unsubscribe&&(()=>{C.unsubscribe()});let E;try{if(m&&u&&"get"!==l&&"head"!==l&&0!==(E=await p(b,i))){let e,t=new n(o,{method:"POST",body:i,duplex:"half"});if(fe.isFormData(i)&&(e=t.headers.get("content-type"))&&b.setContentType(e),t.body){const[e,n]=yt(E,bt(wt(m)));i=Dt(t.body,Pt,e,n)}}fe.isString(y)||(y=y?"include":"omit");const t=a&&"credentials"in n.prototype,s={...w,signal:C,method:l.toUpperCase(),headers:b.normalize().toJSON(),body:i,duplex:"half",credentials:t?y:void 0};x=a&&new n(o,s);let f=await(a?R(x,w):R(o,s));const v=c&&("stream"===g||"response"===g);if(c&&(h||v&&k)){const e={};["status","statusText","headers"].forEach(t=>{e[t]=f[t]});const t=fe.toFiniteNumber(f.headers.get("content-length")),[n,o]=h&&yt(t,bt(wt(h),!0))||[];f=new r(Dt(f.body,Pt,n,()=>{o&&o(),k&&k()}),e)}g=g||"text";let _=await d[fe.findKey(d,g)||"text"](f,e);return!v&&k&&k(),await new Promise((t,n)=>{ft(t,n,{data:_,headers:it.from(f.headers),status:f.status,statusText:f.statusText,config:e,request:x})})}catch(_){if(k&&k(),_&&"TypeError"===_.name&&/Load failed|fetch/i.test(_.message))throw Object.assign(new ve("Network Error",ve.ERR_NETWORK,e,x,_&&_.response),{cause:_.cause||_});throw ve.from(_,_&&_.code,e,x,_&&_.response)}}},Kt=new Map,Ht=e=>{let t=e&&e.env||{};const{fetch:n,Request:r,Response:o}=t,a=[r,o,n];let l,i,s=a.length,u=s,c=Kt;while(u--)l=a[u],i=c.get(l),void 0===i&&c.set(l,i=u?new Map:jt(t)),c=i;return i};Ht();const Xt={http:he,xhr:At,fetch:{get:Ht}};fe.forEach(Xt,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(n){}Object.defineProperty(e,"adapterName",{value:t})}});const Ut=e=>`- ${e}`,Gt=e=>fe.isFunction(e)||null===e||!1===e;function qt(e,t){e=fe.isArray(e)?e:[e];const{length:n}=e;let r,o;const a={};for(let l=0;l`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build"));let t=n?e.length>1?"since :\n"+e.map(Ut).join("\n"):" "+Ut(e[0]):"as no adapter specified";throw new ve("There is no suitable adapter to dispatch the request "+t,"ERR_NOT_SUPPORT")}return o}var Yt={getAdapter:qt,adapters:Xt};function Qt(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new dt(null,e)}function Zt(e){Qt(e),e.headers=it.from(e.headers),e.data=st.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1);const t=Yt.getAdapter(e.adapter||qe.adapter,e);return t(e).then(function(t){return Qt(e),t.data=st.call(e,e.transformResponse,t),t.headers=it.from(t.headers),t},function(t){return ut(t)||(Qt(e),t&&t.response&&(t.response.data=st.call(e,e.transformResponse,t.response),t.response.headers=it.from(t.response.headers))),Promise.reject(t)})}const Jt="1.13.5",en={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{en[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}});const tn={};function nn(e,t,n){if("object"!==typeof e)throw new ve("options must be an object",ve.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let o=r.length;while(o-- >0){const a=r[o],l=t[a];if(l){const t=e[a],n=void 0===t||l(t,a,e);if(!0!==n)throw new ve("option "+a+" must be "+n,ve.ERR_BAD_OPTION_VALUE);continue}if(!0!==n)throw new ve("Unknown option "+a,ve.ERR_BAD_OPTION)}}en.transitional=function(e,t,n){function r(e,t){return"[Axios v"+Jt+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}return(n,o,a)=>{if(!1===e)throw new ve(r(o," has been removed"+(t?" in "+t:"")),ve.ERR_DEPRECATED);return t&&!tn[o]&&(tn[o]=!0,console.warn(r(o," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,o,a)}},en.spelling=function(e){return(t,n)=>(console.warn(`${n} is likely a misspelling of ${e}`),!0)};var rn={assertOptions:nn,validators:en};const on=rn.validators;class an{constructor(e){this.defaults=e||{},this.interceptors={request:new Ae,response:new Ae}}async request(e,t){try{return await this._request(e,t)}catch(n){if(n instanceof Error){let e={};Error.captureStackTrace?Error.captureStackTrace(e):e=new Error;const t=e.stack?e.stack.replace(/^.+\n/,""):"";try{n.stack?t&&!String(n.stack).endsWith(t.replace(/^.+\n.+\n/,""))&&(n.stack+="\n"+t):n.stack=t}catch(r){}}throw n}}_request(e,t){"string"===typeof e?(t=t||{},t.url=e):t=e||{},t=St(this.defaults,t);const{transitional:n,paramsSerializer:r,headers:o}=t;void 0!==n&&rn.assertOptions(n,{silentJSONParsing:on.transitional(on.boolean),forcedJSONParsing:on.transitional(on.boolean),clarifyTimeoutError:on.transitional(on.boolean),legacyInterceptorReqResOrdering:on.transitional(on.boolean)},!1),null!=r&&(fe.isFunction(r)?t.paramsSerializer={serialize:r}:rn.assertOptions(r,{encode:on.function,serialize:on.function},!0)),void 0!==t.allowAbsoluteUrls||(void 0!==this.defaults.allowAbsoluteUrls?t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:t.allowAbsoluteUrls=!0),rn.assertOptions(t,{baseUrl:on.spelling("baseURL"),withXsrfToken:on.spelling("withXSRFToken")},!0),t.method=(t.method||this.defaults.method||"get").toLowerCase();let a=o&&fe.merge(o.common,o[t.method]);o&&fe.forEach(["delete","get","head","post","put","patch","common"],e=>{delete o[e]}),t.headers=it.concat(a,o);const l=[];let i=!0;this.interceptors.request.forEach(function(e){if("function"===typeof e.runWhen&&!1===e.runWhen(t))return;i=i&&e.synchronous;const n=t.transitional||Oe,r=n&&n.legacyInterceptorReqResOrdering;r?l.unshift(e.fulfilled,e.rejected):l.push(e.fulfilled,e.rejected)});const s=[];let u;this.interceptors.response.forEach(function(e){s.push(e.fulfilled,e.rejected)});let c,d=0;if(!i){const e=[Zt.bind(this),void 0];e.unshift(...l),e.push(...s),c=e.length,u=Promise.resolve(t);while(d{if(!n._listeners)return;let t=n._listeners.length;while(t-- >0)n._listeners[t](e);n._listeners=null}),this.promise.then=e=>{let t;const r=new Promise(e=>{n.subscribe(e),t=e}).then(e);return r.cancel=function(){n.unsubscribe(t)},r},e(function(e,r,o){n.reason||(n.reason=new dt(e,r,o),t(n.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}toAbortSignal(){const e=new AbortController,t=t=>{e.abort(t)};return this.subscribe(t),e.signal.unsubscribe=()=>this.unsubscribe(t),e.signal}static source(){let e;const t=new sn(function(t){e=t});return{token:t,cancel:e}}}var un=sn;function cn(e){return function(t){return e.apply(null,t)}}function dn(e){return fe.isObject(e)&&!0===e.isAxiosError}const fn={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(fn).forEach(([e,t])=>{fn[t]=e});var pn=fn;function vn(e){const t=new ln(e),n=o(ln.prototype.request,t);return fe.extend(n,ln.prototype,t,{allOwnKeys:!0}),fe.extend(n,t,null,{allOwnKeys:!0}),n.create=function(t){return vn(St(e,t))},n}const hn=vn(qe);hn.Axios=ln,hn.CanceledError=dt,hn.CancelToken=un,hn.isCancel=ut,hn.VERSION=Jt,hn.toFormData=Ce,hn.AxiosError=ve,hn.Cancel=hn.CanceledError,hn.all=function(e){return Promise.all(e)},hn.spread=cn,hn.isAxiosError=dn,hn.mergeConfig=St,hn.AxiosHeaders=it,hn.formToJSON=e=>Xe(fe.isHTMLForm(e)?new FormData(e):e),hn.getAdapter=Yt.getAdapter,hn.HttpStatusCode=pn,hn.default=hn;var mn=hn},94402:function(e,t,n){"use strict";var r=n(79504),o=Set.prototype;e.exports={Set:Set,add:r(o.add),has:r(o.has),remove:r(o["delete"]),proto:o}},94564:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n="fas",r="house",o=512,a=512,l=[127968,63498,63500,"home","home-alt","home-lg-alt"],i="f015",s="M277.8 8.6c-12.3-11.4-31.3-11.4-43.5 0l-224 208c-9.6 9-12.8 22.9-8 35.1S18.8 272 32 272l16 0 0 176c0 35.3 28.7 64 64 64l288 0c35.3 0 64-28.7 64-64l0-176 16 0c13.2 0 25-8.1 29.8-20.3s1.6-26.2-8-35.1l-224-208zM240 320l32 0c26.5 0 48 21.5 48 48l0 96-128 0 0-96c0-26.5 21.5-48 48-48z";t.definition={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.faHouse=t.definition,t.prefix=n,t.iconName=r,t.width=o,t.height=a,t.ligatures=l,t.unicode=i,t.svgPathData=s,t.aliases=l},94644:function(e,t,n){"use strict";var r,o,a,l=n(77811),i=n(43724),s=n(44576),u=n(94901),c=n(20034),d=n(39297),f=n(36955),p=n(16823),v=n(66699),h=n(36840),m=n(62106),g=n(1625),b=n(42787),y=n(52967),w=n(78227),R=n(33392),C=n(91181),x=C.enforce,k=C.get,E=s.Int8Array,_=E&&E.prototype,S=s.Uint8ClampedArray,M=S&&S.prototype,L=E&&b(E),A=_&&b(_),O=Object.prototype,T=s.TypeError,I=w("toStringTag"),N=R("TYPED_ARRAY_TAG"),W="TypedArrayConstructor",D=l&&!!y&&"Opera"!==f(s.opera),P=!1,F={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},B={BigInt64Array:8,BigUint64Array:8},z=function(e){if(!c(e))return!1;var t=f(e);return"DataView"===t||d(F,t)||d(B,t)},$=function(e){var t=b(e);if(c(t)){var n=k(t);return n&&d(n,W)?n[W]:$(t)}},V=function(e){if(!c(e))return!1;var t=f(e);return d(F,t)||d(B,t)},j=function(e){if(V(e))return e;throw new T("Target is not a typed array")},K=function(e){if(u(e)&&(!y||g(L,e)))return e;throw new T(p(e)+" is not a typed array constructor")},H=function(e,t,n,r){if(i){if(n)for(var o in F){var a=s[o];if(a&&d(a.prototype,e))try{delete a.prototype[e]}catch(l){try{a.prototype[e]=t}catch(u){}}}A[e]&&!n||h(A,e,n?t:D&&_[e]||t,r)}},X=function(e,t,n){var r,o;if(i){if(y){if(n)for(r in F)if(o=s[r],o&&d(o,e))try{delete o[e]}catch(a){}if(L[e]&&!n)return;try{return h(L,e,n?t:D&&L[e]||t)}catch(a){}}for(r in F)o=s[r],!o||o[e]&&!n||h(o,e,t)}};for(r in F)o=s[r],a=o&&o.prototype,a?x(a)[W]=o:D=!1;for(r in B)o=s[r],a=o&&o.prototype,a&&(x(a)[W]=o);if((!D||!u(L)||L===Function.prototype)&&(L=function(){throw new T("Incorrect invocation")},D))for(r in F)s[r]&&y(s[r],L);if((!D||!A||A===O)&&(A=L.prototype,D))for(r in F)s[r]&&y(s[r].prototype,A);if(D&&b(M)!==A&&y(M,A),i&&!d(A,I))for(r in P=!0,m(A,I,{configurable:!0,get:function(){return c(this)?this[N]:void 0}}),F)s[r]&&v(s[r],N,r);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:D,TYPED_ARRAY_TAG:P&&N,aTypedArray:j,aTypedArrayConstructor:K,exportTypedArrayMethod:H,exportTypedArrayStaticMethod:X,getTypedArrayConstructor:$,isView:z,isTypedArray:V,TypedArray:L,TypedArrayPrototype:A}},94901:function(e){"use strict";var t="object"==typeof document&&document.all;e.exports="undefined"==typeof t&&void 0!==t?function(e){return"function"==typeof e||e===t}:function(e){return"function"==typeof e}},94921:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n="fas",r="floppy-disk",o=448,a=512,l=[128190,128426,"save"],i="f0c7",s="M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-242.7c0-17-6.7-33.3-18.7-45.3L352 50.7C340 38.7 323.7 32 306.7 32L64 32zm32 96c0-17.7 14.3-32 32-32l160 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-64zM224 288a64 64 0 1 1 0 128 64 64 0 1 1 0-128z";t.definition={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.faFloppyDisk=t.definition,t.prefix=n,t.iconName=r,t.width=o,t.height=a,t.ligatures=l,t.unicode=i,t.svgPathData=s,t.aliases=l},96139:function(e,t,n){"use strict";n.d(t,{CW:function(){return f},Yn:function(){return i},jO:function(){return c},oh:function(){return d},zv:function(){return s}});n(44114),n(18111),n(7588);var r=n(56768),o=n(24232),a=n(86894);const l="utils/vue/vnode";var i=(e=>(e[e["TEXT"]=1]="TEXT",e[e["CLASS"]=2]="CLASS",e[e["STYLE"]=4]="STYLE",e[e["PROPS"]=8]="PROPS",e[e["FULL_PROPS"]=16]="FULL_PROPS",e[e["HYDRATE_EVENTS"]=32]="HYDRATE_EVENTS",e[e["STABLE_FRAGMENT"]=64]="STABLE_FRAGMENT",e[e["KEYED_FRAGMENT"]=128]="KEYED_FRAGMENT",e[e["UNKEYED_FRAGMENT"]=256]="UNKEYED_FRAGMENT",e[e["NEED_PATCH"]=512]="NEED_PATCH",e[e["DYNAMIC_SLOTS"]=1024]="DYNAMIC_SLOTS",e[e["HOISTED"]=-1]="HOISTED",e[e["BAIL"]=-2]="BAIL",e))(i||{});function s(e){return(0,r.vv)(e)&&e.type===r.FK}function u(e){return(0,r.vv)(e)&&e.type===r.Mw}function c(e){return(0,r.vv)(e)&&!s(e)&&!u(e)}const d=e=>{if(!(0,r.vv)(e))return(0,a.U)(l,"[getNormalizedProps] must be a VNode"),{};const t=e.props||{},n=((0,r.vv)(e.type)?e.type.props:void 0)||{},i={};return Object.keys(n).forEach(e=>{(0,o.$3)(n[e],"default")&&(i[e]=n[e].default)}),Object.keys(t).forEach(e=>{i[(0,o.PT)(e)]=t[e]}),i},f=e=>{const t=(0,o.cy)(e)?e:[e],n=[];return t.forEach(e=>{var t;(0,o.cy)(e)?n.push(...f(e)):(0,r.vv)(e)&&(null==(t=e.component)?void 0:t.subTree)?n.push(e,...f(e.component.subTree)):(0,r.vv)(e)&&(0,o.cy)(e.children)?n.push(...f(e.children)):(0,r.vv)(e)&&2===e.shapeFlag?n.push(...f(e.type())):n.push(e)}),n}},96149:function(e,t,n){"use strict";n.d(t,{$:function(){return d},p:function(){return f}});var r=n(57477),o=n(53845),a=n(20464),l=n(76769),i=n(58501),s=n(92056),u=n(47378),c=n(24232);const d=(0,u.b_)({id:{type:String,default:void 0},size:o.mU,disabled:{type:Boolean,default:void 0},modelValue:{type:(0,u.jq)([String,Number,Object]),default:""},modelModifiers:{type:(0,u.jq)(Object),default:()=>({})},maxlength:{type:[String,Number]},minlength:{type:[String,Number]},type:{type:(0,u.jq)(String),default:"text"},resize:{type:String,values:["none","both","horizontal","vertical"]},autosize:{type:(0,u.jq)([Boolean,Object]),default:!1},autocomplete:{type:(0,u.jq)(String),default:"off"},formatter:{type:Function},parser:{type:Function},placeholder:{type:String},form:{type:String},readonly:Boolean,clearable:Boolean,clearIcon:{type:a.Ze,default:r.CircleClose},showPassword:Boolean,showWordLimit:Boolean,wordLimitPosition:{type:String,values:["inside","outside"],default:"inside"},suffixIcon:{type:a.Ze},prefixIcon:{type:a.Ze},containerRole:{type:String,default:void 0},tabindex:{type:[String,Number],default:0},validateEvent:{type:Boolean,default:!0},inputStyle:{type:(0,u.jq)([Object,Array,String]),default:()=>(0,l.f)({})},autofocus:Boolean,rows:{type:Number,default:2},...(0,i.l)(["ariaLabel"]),inputmode:{type:(0,u.jq)(String),default:void 0},name:String}),f={[s.l4]:e=>(0,c.Kg)(e),input:e=>(0,c.Kg)(e),change:(e,t)=>(0,c.Kg)(e)&&(t instanceof Event||void 0===t),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0,mouseleave:e=>e instanceof MouseEvent,mouseenter:e=>e instanceof MouseEvent,keydown:e=>e instanceof Event,compositionstart:e=>e instanceof CompositionEvent,compositionupdate:e=>e instanceof CompositionEvent,compositionend:e=>e instanceof CompositionEvent}},96166:function(e,t,n){"use strict";n.d(t,{A:function(){return v}});var r=n(35318),o=(n(44114),n(83110)),a=n(39314),l=(0,a.A)(Object.keys,Object),i=l,s=Object.prototype,u=s.hasOwnProperty;function c(e){if(!(0,o.A)(e))return i(e);var t=[];for(var n in Object(e))u.call(e,n)&&"constructor"!=n&&t.push(n);return t}var d=c,f=n(41805);function p(e){return(0,f.A)(e)?(0,r.A)(e):d(e)}var v=p},96319:function(e,t,n){"use strict";var r=n(28551),o=n(9539);e.exports=function(e,t,n,a){try{return a?t(r(n)[0],n[1]):t(n)}catch(l){o(e,"throw",l)}}},96395:function(e){"use strict";e.exports=!1},96801:function(e,t,n){"use strict";var r=n(43724),o=n(48686),a=n(24913),l=n(28551),i=n(25397),s=n(71072);t.f=r&&!o?Object.defineProperties:function(e,t){l(e);var n,r=i(t),o=s(t),u=o.length,c=0;while(u>c)a.f(e,n=o[c++],r[n]);return e}},96837:function(e){"use strict";var t=TypeError,n=9007199254740991;e.exports=function(e){if(e>n)throw t("Maximum allowed index exceeded");return e}},97017:function(e,t,n){"use strict";n.d(t,{Ap:function(){return a},Rd:function(){return r},rc:function(){return o}});const r=4,o={vertical:{offset:"offsetHeight",scroll:"scrollTop",scrollSize:"scrollHeight",size:"height",key:"vertical",axis:"Y",client:"clientY",direction:"top"},horizontal:{offset:"offsetWidth",scroll:"scrollLeft",scrollSize:"scrollWidth",size:"width",key:"horizontal",axis:"X",client:"clientX",direction:"left"}},a=({move:e,size:t,bar:n})=>({[n.size]:t,transform:`translate${n.axis}(${e}%)`})},97040:function(e,t,n){"use strict";var r=n(43724),o=n(24913),a=n(6980);e.exports=function(e,t,n){r?o.f(e,t,a(0,n)):e[t]=n}},97080:function(e,t,n){"use strict";var r=n(94402).has;e.exports=function(e){return r(e),e}},97197:function(e,t,n){"use strict";n(85331)},97447:function(e,t){"use strict";var n="fas",r="upload",o=448,a=512,l=[],i="f093",s="M256 109.3L256 320c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-210.7-41.4 41.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L256 109.3zM224 400c44.2 0 80-35.8 80-80l80 0c35.3 0 64 28.7 64 64l0 32c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64l0-32c0-35.3 28.7-64 64-64l80 0c0 44.2 35.8 80 80 80zm144 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.Jm=t.mw},97579:function(e,t){"use strict";var n="fas",r="paste",o=512,a=512,l=["file-clipboard"],i="f0ea",s="M64 0C28.7 0 0 28.7 0 64L0 384c0 35.3 28.7 64 64 64l112 0 0-224c0-61.9 50.1-112 112-112l64 0 0-48c0-35.3-28.7-64-64-64L64 0zM248 112l-144 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24zm40 48c-35.3 0-64 28.7-64 64l0 224c0 35.3 28.7 64 64 64l160 0c35.3 0 64-28.7 64-64l0-165.5c0-17-6.7-33.3-18.7-45.3l-58.5-58.5c-12-12-28.3-18.7-45.3-18.7L288 160z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.R9=t.mw},97619:function(e,t,n){"use strict";var r=n(36445);t.mw={prefix:r.prefix,iconName:r.iconName,icon:[r.width,r.height,r.aliases,r.unicode,r.svgPathData]},t.dB=t.mw,r.prefix,r.iconName,r.width,r.height,r.aliases,r.unicode,r.svgPathData,r.aliases},97687:function(e,t,n){"use strict";n.d(t,{X2F:function(){return f},F4c:function(){return i},YC1:function(){return p},eU5:function(){return b},fho:function(){return y},SSU:function(){return E},Lhy:function(){return _},MLh:function(){return c},BLq:function(){return S},P1n:function(){return T},wYm:function(){return k},hRP:function(){return $},esz:function(){return V},lWr:function(){return j}});n(44114),n(18111),n(81148),n(22489),n(20116),n(30531),n(7588),n(61701),n(18237),n(13579),n(17642),n(58004),n(33853),n(45876),n(32475),n(15024),n(31698),n(79577),n(41549),n(49797),n(49631),n(35623),n(64979);var r=n(20017),o=n(56768),a=n(90144),l=!1;function i(e){var t;const n=(0,r.x_)(e);return null!=(t=null==n?void 0:n.$el)?t:n}const s=r.oc?window:void 0,u=r.oc?window.document:void 0;r.oc&&window.navigator,r.oc&&window.location;function c(...e){let t,n,a,l;if((0,r.Kg)(e[0])||Array.isArray(e[0])?([n,a,l]=e,t=s):[t,n,a,l]=e,!t)return r.lQ;Array.isArray(n)||(n=[n]),Array.isArray(a)||(a=[a]);const u=[],c=()=>{u.forEach(e=>e()),u.length=0},d=(e,t,n,r)=>(e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)),f=(0,o.wB)(()=>[i(t),(0,r.x_)(l)],([e,t])=>{c(),e&&u.push(...n.flatMap(n=>a.map(r=>d(e,n,r,t))))},{immediate:!0,flush:"post"}),p=()=>{f(),c()};return(0,r.Uo)(p),p}let d=!1;function f(e,t,n={}){const{window:o=s,ignore:a=[],capture:l=!0,detectIframe:u=!1}=n;if(!o)return;r.un&&!d&&(d=!0,Array.from(o.document.body.children).forEach(e=>e.addEventListener("click",r.lQ)));let f=!0;const p=e=>a.some(t=>{if("string"===typeof t)return Array.from(o.document.querySelectorAll(t)).some(t=>t===e.target||e.composedPath().includes(t));{const n=i(t);return n&&(e.target===n||e.composedPath().includes(n))}}),v=n=>{const r=i(e);r&&r!==n.target&&!n.composedPath().includes(r)&&(0===n.detail&&(f=!p(n)),f?t(n):f=!0)},h=[c(o,"click",v,{passive:!0,capture:l}),c(o,"pointerdown",t=>{const n=i(e);n&&(f=!t.composedPath().includes(n)&&!p(t))},{passive:!0}),u&&c(o,"blur",n=>{var r;const a=i(e);"IFRAME"!==(null==(r=o.document.activeElement)?void 0:r.tagName)||(null==a?void 0:a.contains(o.document.activeElement))||t(n)})].filter(Boolean),m=()=>h.forEach(e=>e());return m}Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;function p(e={}){var t;const{window:n=s}=e,o=null!=(t=e.document)?t:null==n?void 0:n.document,a=(0,r.bW)(()=>null,()=>null==o?void 0:o.activeElement);return n&&(c(n,"blur",e=>{null===e.relatedTarget&&a.trigger()},!0),c(n,"focus",a.trigger,!0)),a}function v(e,t=!1){const n=(0,a.KR)(),o=()=>n.value=Boolean(e());return o(),(0,r.rd)(o,t),n}Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;function h(e){return JSON.parse(JSON.stringify(e))}const m="undefined"!==typeof globalThis?globalThis:"undefined"!==typeof window?window:"undefined"!==typeof n.g?n.g:"undefined"!==typeof self?self:{},g="__vueuse_ssr_handlers__";m[g]=m[g]||{};m[g];Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;function b(e,t,{window:n=s,initialValue:l=""}={}){const u=(0,a.KR)(l),c=(0,o.EW)(()=>{var e;return i(t)||(null==(e=null==n?void 0:n.document)?void 0:e.documentElement)});return(0,o.wB)([c,()=>(0,r.x_)(e)],([e,t])=>{var r;if(e&&n){const o=null==(r=n.getComputedStyle(e).getPropertyValue(t))?void 0:r.trim();u.value=o||l}},{immediate:!0}),(0,o.wB)(u,t=>{var n;(null==(n=c.value)?void 0:n.style)&&c.value.style.setProperty((0,r.x_)(e),t)}),u}Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;function y({document:e=u}={}){if(!e)return(0,a.KR)("visible");const t=(0,a.KR)(e.visibilityState);return c(e,"visibilitychange",()=>{t.value=e.visibilityState}),t}Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;var w=Object.getOwnPropertySymbols,R=Object.prototype.hasOwnProperty,C=Object.prototype.propertyIsEnumerable,x=(e,t)=>{var n={};for(var r in e)R.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&w)for(var r of w(e))t.indexOf(r)<0&&C.call(e,r)&&(n[r]=e[r]);return n};function k(e,t,n={}){const a=n,{window:l=s}=a,u=x(a,["window"]);let c;const d=v(()=>l&&"ResizeObserver"in l),f=()=>{c&&(c.disconnect(),c=void 0)},p=(0,o.wB)(()=>i(e),e=>{f(),d.value&&l&&e&&(c=new ResizeObserver(t),c.observe(e,u))},{immediate:!0,flush:"post"}),h=()=>{f(),p()};return(0,r.Uo)(h),{isSupported:d,stop:h}}function E(e,t={}){const{reset:n=!0,windowResize:l=!0,windowScroll:s=!0,immediate:u=!0}=t,d=(0,a.KR)(0),f=(0,a.KR)(0),p=(0,a.KR)(0),v=(0,a.KR)(0),h=(0,a.KR)(0),m=(0,a.KR)(0),g=(0,a.KR)(0),b=(0,a.KR)(0);function y(){const t=i(e);if(!t)return void(n&&(d.value=0,f.value=0,p.value=0,v.value=0,h.value=0,m.value=0,g.value=0,b.value=0));const r=t.getBoundingClientRect();d.value=r.height,f.value=r.bottom,p.value=r.left,v.value=r.right,h.value=r.top,m.value=r.width,g.value=r.x,b.value=r.y}return k(e,y),(0,o.wB)(()=>i(e),e=>!e&&y()),s&&c("scroll",y,{capture:!0,passive:!0}),l&&c("resize",y,{passive:!0}),(0,r.rd)(()=>{u&&y()}),{height:d,bottom:f,left:p,right:v,top:h,width:m,x:g,y:b,update:y}}Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;function _(e,t={width:0,height:0},n={}){const{window:r=s,box:l="content-box"}=n,u=(0,o.EW)(()=>{var t,n;return null==(n=null==(t=i(e))?void 0:t.namespaceURI)?void 0:n.includes("svg")}),c=(0,a.KR)(t.width),d=(0,a.KR)(t.height);return k(e,([t])=>{const n="border-box"===l?t.borderBoxSize:"content-box"===l?t.contentBoxSize:t.devicePixelContentBoxSize;if(r&&u.value){const t=i(e);if(t){const e=r.getComputedStyle(t);c.value=parseFloat(e.width),d.value=parseFloat(e.height)}}else if(n){const e=Array.isArray(n)?n:[n];c.value=e.reduce((e,{inlineSize:t})=>e+t,0),d.value=e.reduce((e,{blockSize:t})=>e+t,0)}else c.value=t.contentRect.width,d.value=t.contentRect.height},n),(0,o.wB)(()=>i(e),e=>{c.value=e?t.width:0,d.value=e?t.height:0}),{width:c,height:d}}new Map;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;function S(e,t,n={}){const{root:a,rootMargin:l="0px",threshold:u=.1,window:c=s}=n,d=v(()=>c&&"IntersectionObserver"in c);let f=r.lQ;const p=d.value?(0,o.wB)(()=>({el:i(e),root:i(a)}),({el:e,root:n})=>{if(f(),!e)return;const o=new IntersectionObserver(t,{root:n,rootMargin:l,threshold:u});o.observe(e),f=()=>{o.disconnect(),f=r.lQ}},{immediate:!0,flush:"post"}):r.lQ,h=()=>{f(),p()};return(0,r.Uo)(h),{isSupported:d,stop:h}}Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;var M=Object.getOwnPropertySymbols,L=Object.prototype.hasOwnProperty,A=Object.prototype.propertyIsEnumerable,O=(e,t)=>{var n={};for(var r in e)L.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&M)for(var r of M(e))t.indexOf(r)<0&&A.call(e,r)&&(n[r]=e[r]);return n};function T(e,t,n={}){const a=n,{window:l=s}=a,u=O(a,["window"]);let c;const d=v(()=>l&&"MutationObserver"in l),f=()=>{c&&(c.disconnect(),c=void 0)},p=(0,o.wB)(()=>i(e),e=>{f(),d.value&&l&&e&&(c=new MutationObserver(t),c.observe(e,u))},{immediate:!0}),h=()=>{f(),p()};return(0,r.Uo)(h),{isSupported:d,stop:h}}Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;var I;(function(e){e["UP"]="UP",e["RIGHT"]="RIGHT",e["DOWN"]="DOWN",e["LEFT"]="LEFT",e["NONE"]="NONE"})(I||(I={}));Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;var N=Object.defineProperty,W=Object.getOwnPropertySymbols,D=Object.prototype.hasOwnProperty,P=Object.prototype.propertyIsEnumerable,F=(e,t,n)=>t in e?N(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,B=(e,t)=>{for(var n in t||(t={}))D.call(t,n)&&F(e,n,t[n]);if(W)for(var n of W(t))P.call(t,n)&&F(e,n,t[n]);return e};const z={easeInSine:[.12,0,.39,0],easeOutSine:[.61,1,.88,1],easeInOutSine:[.37,0,.63,1],easeInQuad:[.11,0,.5,0],easeOutQuad:[.5,1,.89,1],easeInOutQuad:[.45,0,.55,1],easeInCubic:[.32,0,.67,0],easeOutCubic:[.33,1,.68,1],easeInOutCubic:[.65,0,.35,1],easeInQuart:[.5,0,.75,0],easeOutQuart:[.25,1,.5,1],easeInOutQuart:[.76,0,.24,1],easeInQuint:[.64,0,.78,0],easeOutQuint:[.22,1,.36,1],easeInOutQuint:[.83,0,.17,1],easeInExpo:[.7,0,.84,0],easeOutExpo:[.16,1,.3,1],easeInOutExpo:[.87,0,.13,1],easeInCirc:[.55,0,1,.45],easeOutCirc:[0,.55,.45,1],easeInOutCirc:[.85,0,.15,1],easeInBack:[.36,0,.66,-.56],easeOutBack:[.34,1.56,.64,1],easeInOutBack:[.68,-.6,.32,1.6]};B({linear:r.D_},z);function $(e,t,n,i={}){var s,u,c,d,f;const{clone:p=!1,passive:v=!1,eventName:m,deep:g=!1,defaultValue:b}=i,y=(0,o.nI)(),w=n||(null==y?void 0:y.emit)||(null==(s=null==y?void 0:y.$emit)?void 0:s.bind(y))||(null==(c=null==(u=null==y?void 0:y.proxy)?void 0:u.$emit)?void 0:c.bind(null==y?void 0:y.proxy));let R=m;if(!t)if(l){const e=null==(f=null==(d=null==y?void 0:y.proxy)?void 0:d.$options)?void 0:f.model;t=(null==e?void 0:e.value)||"value",m||(R=(null==e?void 0:e.event)||"input")}else t="modelValue";R=m||R||`update:${t.toString()}`;const C=e=>p?(0,r.Tn)(p)?p(e):h(e):e,x=()=>(0,r.C8)(e[t])?C(e[t]):b;if(v){const n=x(),r=(0,a.KR)(n);return(0,o.wB)(()=>e[t],e=>r.value=C(e)),(0,o.wB)(r,n=>{(n!==e[t]||g)&&w(R,n)},{deep:g}),r}return(0,o.EW)({get(){return x()},set(e){w(R,e)}})}function V({window:e=s}={}){if(!e)return(0,a.KR)(!1);const t=(0,a.KR)(e.document.hasFocus());return c(e,"blur",()=>{t.value=!1}),c(e,"focus",()=>{t.value=!0}),t}function j(e={}){const{window:t=s,initialWidth:n=1/0,initialHeight:o=1/0,listenOrientation:l=!0,includeScrollbar:i=!0}=e,u=(0,a.KR)(n),d=(0,a.KR)(o),f=()=>{t&&(i?(u.value=t.innerWidth,d.value=t.innerHeight):(u.value=t.document.documentElement.clientWidth,d.value=t.document.documentElement.clientHeight))};return f(),(0,r.rd)(f),c("resize",f,{passive:!0}),l&&c("orientationchange",f,{passive:!0}),{width:u,height:d}}},97722:function(e,t,n){"use strict";n.d(t,{H6:function(){return a}});var r=n(21588),o=n(25376);const a=(0,o.GU)(r.A)},97751:function(e,t,n){"use strict";var r=n(44576),o=n(94901),a=function(e){return o(e)?e:void 0};e.exports=function(e,t){return arguments.length<2?a(r[e]):r[e]&&r[e][t]}},98072:function(e,t,n){"use strict";n.d(t,{uN:function(){return f}});var r=n(56768),o=n(90144),a=n(80782),l=n(66125),i=n(99077);const s=(0,r.pM)({name:"ElPopper",inheritAttrs:!1}),u=(0,r.pM)({...s,props:l.Ft,setup(e,{expose:t}){const n=e,l=(0,o.KR)(),i=(0,o.KR)(),s=(0,o.KR)(),u=(0,o.KR)(),c=(0,r.EW)(()=>n.role),d={triggerRef:l,popperInstanceRef:i,contentRef:s,referenceRef:u,role:c};return t(d),(0,r.Gt)(a.p,d),(e,t)=>(0,r.RG)(e.$slots,"default")}});var c=(0,i.A)(u,[["__file","popper.vue"]]),d=n(25376);const f=(0,d.GU)(c)},98469:function(e,t,n){"use strict";n.d(t,{dI:function(){return j},$n:function(){return K},o5:function(){return H}});var r=n(56768),o=n(90144),a=n(24232),l=n(45130),i=n(53845),s=n(58501),u=n(92056),c=n(12235);const d={modelValue:{type:[Number,String,Boolean],default:void 0},label:{type:[String,Boolean,Number,Object],default:void 0},value:{type:[String,Boolean,Number,Object],default:void 0},indeterminate:Boolean,disabled:{type:Boolean,default:void 0},checked:Boolean,name:{type:String,default:void 0},trueValue:{type:[String,Number],default:void 0},falseValue:{type:[String,Number],default:void 0},trueLabel:{type:[String,Number],default:void 0},falseLabel:{type:[String,Number],default:void 0},id:{type:String,default:void 0},border:Boolean,size:i.mU,tabindex:[String,Number],validateEvent:{type:Boolean,default:!0},ariaLabel:String,...(0,s.l)(["ariaControls"])},f={[u.l4]:e=>(0,a.Kg)(e)||(0,c.Et)(e)||(0,c.Lm)(e),change:e=>(0,a.Kg)(e)||(0,c.Et)(e)||(0,c.Lm)(e)};var p=n(99077);n(44114);const v=Symbol("checkboxGroupContextKey");var h=n(87254),m=n(92436);const g=({model:e,isChecked:t})=>{const n=(0,r.WQ)(v,void 0),o=(0,r.WQ)(h.F,void 0),a=(0,r.EW)(()=>{var r,o;const a=null==(r=null==n?void 0:n.max)?void 0:r.value,l=null==(o=null==n?void 0:n.min)?void 0:o.value;return!(0,c.b0)(a)&&e.value.length>=a&&!t.value||!(0,c.b0)(l)&&e.value.length<=l&&t.value}),l=(0,m.CB)((0,r.EW)(()=>{var e,t;return void 0===n?null!=(e=null==o?void 0:o.disabled)?e:a.value:(null==(t=n.disabled)?void 0:t.value)||a.value}));return{isDisabled:l,isLimitDisabled:a}};n(18111),n(13579);var b=n(44216),y=n(86894);const w=(e,{model:t,isLimitExceeded:n,hasOwnLabel:o,isDisabled:a,isLabeledByFormItem:l})=>{const i=(0,r.WQ)(v,void 0),{formItem:s}=(0,b.j)(),{emit:c}=(0,r.nI)();function d(t){var n,r,o,a;return[!0,e.trueValue,e.trueLabel].includes(t)?null==(r=null!=(n=e.trueValue)?n:e.trueLabel)||r:null!=(a=null!=(o=e.falseValue)?o:e.falseLabel)&&a}function f(e,t){c(u.YU,d(e),t)}function p(e){if(n.value)return;const t=e.target;c(u.YU,d(t.checked),e)}async function h(i){if(!n.value&&!o.value&&!a.value&&l.value){const n=i.composedPath(),o=n.some(e=>"LABEL"===e.tagName);o||(t.value=d([!1,e.falseValue,e.falseLabel].includes(t.value)),await(0,r.dY)(),f(t.value,i))}}const m=(0,r.EW)(()=>(null==i?void 0:i.validateEvent)||e.validateEvent);return(0,r.wB)(()=>e.modelValue,()=>{m.value&&(null==s||s.validate("change").catch(e=>(0,y.U)(e)))}),{handleChange:p,onClickRoot:h}},R=e=>{const t=(0,o.KR)(!1),{emit:n}=(0,r.nI)(),l=(0,r.WQ)(v,void 0),i=(0,r.EW)(()=>!1===(0,c.b0)(l)),s=(0,o.KR)(!1),d=(0,r.EW)({get(){var n,r;return i.value?null==(n=null==l?void 0:l.modelValue)?void 0:n.value:null!=(r=e.modelValue)?r:t.value},set(e){var r,o;i.value&&(0,a.cy)(e)?(s.value=void 0!==(null==(r=null==l?void 0:l.max)?void 0:r.value)&&e.length>(null==l?void 0:l.max.value)&&e.length>d.value.length,!1===s.value&&(null==(o=null==l?void 0:l.changeEvent)||o.call(l,e))):(n(u.l4,e),t.value=e)}});return{model:d,isGroup:i,isLimitExceeded:s}};n(61701);var C=n(39195);const x=(e,t,{model:n})=>{const l=(0,r.WQ)(v,void 0),i=(0,o.KR)(!1),s=(0,r.EW)(()=>(0,c.Xj)(e.value)?e.label:e.value),u=(0,r.EW)(()=>{const t=n.value;return(0,c.Lm)(t)?t:(0,a.cy)(t)?(0,a.Gv)(s.value)?t.map(o.ux).some(e=>(0,C.A)(e,s.value)):t.map(o.ux).includes(s.value):null!==t&&void 0!==t?t===e.trueValue||t===e.trueLabel:!!t}),d=(0,m.NV)((0,r.EW)(()=>{var e;return null==(e=null==l?void 0:l.size)?void 0:e.value}),{prop:!0}),f=(0,m.NV)((0,r.EW)(()=>{var e;return null==(e=null==l?void 0:l.size)?void 0:e.value})),p=(0,r.EW)(()=>!!t.default||!(0,c.Xj)(s.value));return{checkboxButtonSize:d,isChecked:u,isFocused:i,checkboxSize:f,hasOwnLabel:p,actualValue:s}};var k=n(30261);const E=(e,t)=>{const{formItem:n}=(0,b.j)(),{model:o,isGroup:l,isLimitExceeded:i}=R(e),{isFocused:s,isChecked:u,checkboxButtonSize:d,checkboxSize:f,hasOwnLabel:p,actualValue:v}=x(e,t,{model:o}),{isDisabled:h}=g({model:o,isChecked:u}),{inputId:m,isLabeledByFormItem:y}=(0,b.W)(e,{formItemContext:n,disableIdGeneration:p,disableIdManagement:l}),{handleChange:C,onClickRoot:E}=w(e,{model:o,isLimitExceeded:i,hasOwnLabel:p,isDisabled:h,isLabeledByFormItem:y}),_=()=>{function t(){var t,n;(0,a.cy)(o.value)&&!o.value.includes(v.value)?o.value.push(v.value):o.value=null==(n=null!=(t=e.trueValue)?t:e.trueLabel)||n}e.checked&&t()};return _(),(0,k.b)({from:"label act as value",replacement:"value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},(0,r.EW)(()=>l.value&&(0,c.Xj)(e.value))),(0,k.b)({from:"true-label",replacement:"true-value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},(0,r.EW)(()=>!!e.trueLabel)),(0,k.b)({from:"false-label",replacement:"false-value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},(0,r.EW)(()=>!!e.falseLabel)),{inputId:m,isLabeledByFormItem:y,isChecked:u,isDisabled:h,isFocused:s,checkboxButtonSize:d,checkboxSize:f,hasOwnLabel:p,model:o,actualValue:v,handleChange:C,onClickRoot:E}};var _=n(93513);const S=(0,r.pM)({name:"ElCheckbox"}),M=(0,r.pM)({...S,props:d,emits:f,setup(e){const t=e,n=(0,r.Ht)(),{inputId:i,isLabeledByFormItem:s,isChecked:u,isDisabled:c,isFocused:d,checkboxSize:f,hasOwnLabel:p,model:v,actualValue:h,handleChange:m,onClickRoot:g}=E(t,n),b=(0,r.EW)(()=>{var e,n,r,o;return t.trueValue||t.falseValue||t.trueLabel||t.falseLabel?{"true-value":null==(n=null!=(e=t.trueValue)?e:t.trueLabel)||n,"false-value":null!=(o=null!=(r=t.falseValue)?r:t.falseLabel)&&o}:{value:h.value}}),y=(0,_.DU)("checkbox"),w=(0,r.EW)(()=>[y.b(),y.m(f.value),y.is("disabled",c.value),y.is("bordered",t.border),y.is("checked",u.value)]),R=(0,r.EW)(()=>[y.e("input"),y.is("disabled",c.value),y.is("checked",u.value),y.is("indeterminate",t.indeterminate),y.is("focus",d.value)]);return(e,t)=>((0,r.uX)(),(0,r.Wv)((0,r.$y)(!(0,o.R1)(p)&&(0,o.R1)(s)?"span":"label"),{for:!(0,o.R1)(p)&&(0,o.R1)(s)?null:(0,o.R1)(i),class:(0,a.C4)((0,o.R1)(w)),"aria-controls":e.indeterminate?e.ariaControls:null,"aria-checked":e.indeterminate?"mixed":void 0,"aria-label":e.ariaLabel,onClick:(0,o.R1)(g)},{default:(0,r.k6)(()=>[(0,r.Lk)("span",{class:(0,a.C4)((0,o.R1)(R))},[(0,r.bo)((0,r.Lk)("input",(0,r.v6)({id:(0,o.R1)(i),"onUpdate:modelValue":e=>(0,o.i9)(v)?v.value=e:null,class:(0,o.R1)(y).e("original"),type:"checkbox",indeterminate:e.indeterminate,name:e.name,tabindex:e.tabindex,disabled:(0,o.R1)(c)},(0,o.R1)(b),{onChange:(0,o.R1)(m),onFocus:e=>d.value=!0,onBlur:e=>d.value=!1,onClick:(0,l.D$)(()=>{},["stop"])}),null,16,["id","onUpdate:modelValue","indeterminate","name","tabindex","disabled","onChange","onFocus","onBlur","onClick"]),[[l.lH,(0,o.R1)(v)]]),(0,r.Lk)("span",{class:(0,a.C4)((0,o.R1)(y).e("inner"))},null,2)],2),(0,o.R1)(p)?((0,r.uX)(),(0,r.CE)("span",{key:0,class:(0,a.C4)((0,o.R1)(y).e("label"))},[(0,r.RG)(e.$slots,"default"),e.$slots.default?(0,r.Q3)("v-if",!0):((0,r.uX)(),(0,r.CE)(r.FK,{key:0},[(0,r.eW)((0,a.v_)(e.label),1)],64))],2)):(0,r.Q3)("v-if",!0)]),_:3},8,["for","class","aria-controls","aria-checked","aria-label","onClick"]))}});var L=(0,p.A)(M,[["__file","checkbox.vue"]]);const A=(0,r.pM)({name:"ElCheckboxButton"}),O=(0,r.pM)({...A,props:d,emits:f,setup(e){const t=e,n=(0,r.Ht)(),{isFocused:i,isChecked:s,isDisabled:u,checkboxButtonSize:c,model:d,actualValue:f,handleChange:p}=E(t,n),h=(0,r.EW)(()=>{var e,n,r,o;return t.trueValue||t.falseValue||t.trueLabel||t.falseLabel?{"true-value":null==(n=null!=(e=t.trueValue)?e:t.trueLabel)||n,"false-value":null!=(o=null!=(r=t.falseValue)?r:t.falseLabel)&&o}:{value:f.value}}),m=(0,r.WQ)(v,void 0),g=(0,_.DU)("checkbox"),b=(0,r.EW)(()=>{var e,t,n,r;const o=null!=(t=null==(e=null==m?void 0:m.fill)?void 0:e.value)?t:"";return{backgroundColor:o,borderColor:o,color:null!=(r=null==(n=null==m?void 0:m.textColor)?void 0:n.value)?r:"",boxShadow:o?`-1px 0 0 0 ${o}`:void 0}}),y=(0,r.EW)(()=>[g.b("button"),g.bm("button",c.value),g.is("disabled",u.value),g.is("checked",s.value),g.is("focus",i.value)]);return(e,t)=>((0,r.uX)(),(0,r.CE)("label",{class:(0,a.C4)((0,o.R1)(y))},[(0,r.bo)((0,r.Lk)("input",(0,r.v6)({"onUpdate:modelValue":e=>(0,o.i9)(d)?d.value=e:null,class:(0,o.R1)(g).be("button","original"),type:"checkbox",name:e.name,tabindex:e.tabindex,disabled:(0,o.R1)(u)},(0,o.R1)(h),{onChange:(0,o.R1)(p),onFocus:e=>i.value=!0,onBlur:e=>i.value=!1,onClick:(0,l.D$)(()=>{},["stop"])}),null,16,["onUpdate:modelValue","name","tabindex","disabled","onChange","onFocus","onBlur","onClick"]),[[l.lH,(0,o.R1)(d)]]),e.$slots.default||e.label?((0,r.uX)(),(0,r.CE)("span",{key:0,class:(0,a.C4)((0,o.R1)(g).be("button","inner")),style:(0,a.Tr)((0,o.R1)(s)?(0,o.R1)(b):void 0)},[(0,r.RG)(e.$slots,"default",{},()=>[(0,r.eW)((0,a.v_)(e.label),1)])],6)):(0,r.Q3)("v-if",!0)],2))}});var T=(0,p.A)(O,[["__file","checkbox-button.vue"]]),I=n(71074),N=n(19615),W=n(47378);const D=(0,W.b_)({modelValue:{type:(0,W.jq)(Array),default:()=>[]},disabled:{type:Boolean,default:void 0},min:Number,max:Number,size:i.mU,fill:String,textColor:String,tag:{type:String,default:"div"},validateEvent:{type:Boolean,default:!0},options:{type:(0,W.jq)(Array)},props:{type:(0,W.jq)(Object),default:()=>F},type:{type:String,values:["checkbox","button"],default:"checkbox"},...(0,s.l)(["ariaLabel"])}),P={[u.l4]:e=>(0,a.cy)(e),change:e=>(0,a.cy)(e)},F={label:"label",value:"value",disabled:"disabled"},B=(0,r.pM)({name:"ElCheckboxGroup"}),z=(0,r.pM)({...B,props:D,emits:P,setup(e,{emit:t}){const n=e,l=(0,_.DU)("checkbox"),i=(0,m.CB)(),{formItem:s}=(0,b.j)(),{inputId:c,isLabeledByFormItem:d}=(0,b.W)(n,{formItemContext:s}),f=async e=>{t(u.l4,e),await(0,r.dY)(),t(u.YU,e)},p=(0,r.EW)({get(){return n.modelValue},set(e){f(e)}}),h=(0,r.EW)(()=>({...F,...n.props})),g=e=>{const{label:t,value:n,disabled:r}=h.value,o={label:e[t],value:e[n],disabled:e[r]};return{...(0,I.A)(e,[t,n,r]),...o}},w=(0,r.EW)(()=>"button"===n.type?T:L);return(0,r.Gt)(v,{...(0,N.A)((0,o.QW)(n),["size","min","max","validateEvent","fill","textColor"]),disabled:i,modelValue:p,changeEvent:f}),(0,r.wB)(()=>n.modelValue,(e,t)=>{n.validateEvent&&!(0,C.A)(e,t)&&(null==s||s.validate("change").catch(e=>(0,y.U)(e)))}),(e,t)=>{var n;return(0,r.uX)(),(0,r.Wv)((0,r.$y)(e.tag),{id:(0,o.R1)(c),class:(0,a.C4)((0,o.R1)(l).b("group")),role:"group","aria-label":(0,o.R1)(d)?void 0:e.ariaLabel||"checkbox-group","aria-labelledby":(0,o.R1)(d)?null==(n=(0,o.R1)(s))?void 0:n.labelId:void 0},{default:(0,r.k6)(()=>[(0,r.RG)(e.$slots,"default",{},()=>[((0,r.uX)(!0),(0,r.CE)(r.FK,null,(0,r.pI)(e.options,(e,t)=>((0,r.uX)(),(0,r.Wv)((0,r.$y)((0,o.R1)(w)),(0,r.v6)({key:t},g(e)),null,16))),128))])]),_:3},8,["id","class","aria-label","aria-labelledby"])}}});var $=(0,p.A)(z,[["__file","checkbox-group.vue"]]),V=n(25376);const j=(0,V.GU)(L,{CheckboxButton:T,CheckboxGroup:$}),K=(0,V.WM)(T),H=(0,V.WM)($)},98769:function(e,t,n){"use strict";n.d(t,{Nr:function(){return u}});var r=n(56768),o=n(38299),a=n(99077);const l=(0,r.pM)({__name:"teleport",props:o.k,setup(e){return(e,t)=>e.disabled?(0,r.RG)(e.$slots,"default",{key:0}):((0,r.uX)(),(0,r.Wv)(r.Im,{key:1,to:e.to},[(0,r.RG)(e.$slots,"default")],8,["to"]))}});var i=(0,a.A)(l,[["__file","teleport.vue"]]),s=n(25376);const u=(0,s.GU)(i)},98950:function(e,t,n){"use strict";n.d(t,{$W:function(){return ka},Kk:function(){return Sa},Qq:function(){return Ma},Yv:function(){return Ea},qg:function(){return _a}});n(44114),n(18111),n(22489),n(20116),n(30531),n(7588),n(61701),n(18237),n(13579),n(17642),n(58004),n(33853),n(45876),n(32475),n(15024),n(31698); /*! * Font Awesome Free 7.2.0 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * Copyright 2026 Fonticons, Inc. */ function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,l=!0,i=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return l=e.done,e},e:function(e){i=!0,a=e},f:function(){try{l||null==n.return||n.return()}finally{if(i)throw a}}}}function c(e,t,n){return(t=w(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function d(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function f(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a,l,i=[],s=!0,u=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=a.call(n)).done)&&(i.push(r.value),i.length!==t);s=!0);}catch(e){u=!0,o=e}finally{try{if(!s&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(u)throw o}}return i}}function p(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function v(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function h(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function m(e){for(var t=1;t-1;o--){var a=n[o],l=(a.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(l)>-1&&(r=a)}return N.head.insertBefore(t,r),e}}var In="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function Nn(){var e=12,t="";while(e-- >0)t+=In[62*Math.random()|0];return t}function Wn(e){for(var t=[],n=(e||[]).length>>>0;n--;)t[n]=e[n];return t}function Dn(e){return e.classList?Wn(e.classList):(e.getAttribute("class")||"").split(" ").filter(function(e){return e})}function Pn(e){return"".concat(e).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function Fn(e){return Object.keys(e||{}).reduce(function(t,n){return t+"".concat(n,'="').concat(Pn(e[n]),'" ')},"").trim()}function Bn(e){return Object.keys(e||{}).reduce(function(t,n){return t+"".concat(n,": ").concat(e[n].trim(),";")},"")}function zn(e){return e.size!==On.size||e.x!==On.x||e.y!==On.y||e.rotate!==On.rotate||e.flipX||e.flipY}function $n(e){var t=e.transform,n=e.containerWidth,r=e.iconWidth,o={transform:"translate(".concat(n/2," 256)")},a="translate(".concat(32*t.x,", ").concat(32*t.y,") "),l="scale(".concat(t.size/16*(t.flipX?-1:1),", ").concat(t.size/16*(t.flipY?-1:1),") "),i="rotate(".concat(t.rotate," 0 0)"),s={transform:"".concat(a," ").concat(l," ").concat(i)},u={transform:"translate(".concat(r/2*-1," -256)")};return{outer:o,inner:s,path:u}}function Vn(e){var t=e.transform,n=e.width,r=void 0===n?Xt:n,o=e.height,a=void 0===o?Xt:o,l=e.startCentered,i=void 0!==l&&l,s="";return s+=i&&F?"translate(".concat(t.x/An-r/2,"em, ").concat(t.y/An-a/2,"em) "):i?"translate(calc(-50% + ".concat(t.x/An,"em), calc(-50% + ").concat(t.y/An,"em)) "):"translate(".concat(t.x/An,"em, ").concat(t.y/An,"em) "),s+="scale(".concat(t.size/An*(t.flipX?-1:1),", ").concat(t.size/An*(t.flipY?-1:1),") "),s+="rotate(".concat(t.rotate,"deg) "),s}var jn=":root, :host {\n --fa-font-solid: normal 900 1em/1 'Font Awesome 7 Free';\n --fa-font-regular: normal 400 1em/1 'Font Awesome 7 Free';\n --fa-font-light: normal 300 1em/1 'Font Awesome 7 Pro';\n --fa-font-thin: normal 100 1em/1 'Font Awesome 7 Pro';\n --fa-font-duotone: normal 900 1em/1 'Font Awesome 7 Duotone';\n --fa-font-duotone-regular: normal 400 1em/1 'Font Awesome 7 Duotone';\n --fa-font-duotone-light: normal 300 1em/1 'Font Awesome 7 Duotone';\n --fa-font-duotone-thin: normal 100 1em/1 'Font Awesome 7 Duotone';\n --fa-font-brands: normal 400 1em/1 'Font Awesome 7 Brands';\n --fa-font-sharp-solid: normal 900 1em/1 'Font Awesome 7 Sharp';\n --fa-font-sharp-regular: normal 400 1em/1 'Font Awesome 7 Sharp';\n --fa-font-sharp-light: normal 300 1em/1 'Font Awesome 7 Sharp';\n --fa-font-sharp-thin: normal 100 1em/1 'Font Awesome 7 Sharp';\n --fa-font-sharp-duotone-solid: normal 900 1em/1 'Font Awesome 7 Sharp Duotone';\n --fa-font-sharp-duotone-regular: normal 400 1em/1 'Font Awesome 7 Sharp Duotone';\n --fa-font-sharp-duotone-light: normal 300 1em/1 'Font Awesome 7 Sharp Duotone';\n --fa-font-sharp-duotone-thin: normal 100 1em/1 'Font Awesome 7 Sharp Duotone';\n --fa-font-slab-regular: normal 400 1em/1 'Font Awesome 7 Slab';\n --fa-font-slab-press-regular: normal 400 1em/1 'Font Awesome 7 Slab Press';\n --fa-font-whiteboard-semibold: normal 600 1em/1 'Font Awesome 7 Whiteboard';\n --fa-font-thumbprint-light: normal 300 1em/1 'Font Awesome 7 Thumbprint';\n --fa-font-notdog-solid: normal 900 1em/1 'Font Awesome 7 Notdog';\n --fa-font-notdog-duo-solid: normal 900 1em/1 'Font Awesome 7 Notdog Duo';\n --fa-font-etch-solid: normal 900 1em/1 'Font Awesome 7 Etch';\n --fa-font-graphite-thin: normal 100 1em/1 'Font Awesome 7 Graphite';\n --fa-font-jelly-regular: normal 400 1em/1 'Font Awesome 7 Jelly';\n --fa-font-jelly-fill-regular: normal 400 1em/1 'Font Awesome 7 Jelly Fill';\n --fa-font-jelly-duo-regular: normal 400 1em/1 'Font Awesome 7 Jelly Duo';\n --fa-font-chisel-regular: normal 400 1em/1 'Font Awesome 7 Chisel';\n --fa-font-utility-semibold: normal 600 1em/1 'Font Awesome 7 Utility';\n --fa-font-utility-duo-semibold: normal 600 1em/1 'Font Awesome 7 Utility Duo';\n --fa-font-utility-fill-semibold: normal 600 1em/1 'Font Awesome 7 Utility Fill';\n}\n\n.svg-inline--fa {\n box-sizing: content-box;\n display: var(--fa-display, inline-block);\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n width: var(--fa-width, 1.25em);\n}\n.svg-inline--fa.fa-2xs {\n vertical-align: 0.1em;\n}\n.svg-inline--fa.fa-xs {\n vertical-align: 0em;\n}\n.svg-inline--fa.fa-sm {\n vertical-align: -0.0714285714em;\n}\n.svg-inline--fa.fa-lg {\n vertical-align: -0.2em;\n}\n.svg-inline--fa.fa-xl {\n vertical-align: -0.25em;\n}\n.svg-inline--fa.fa-2xl {\n vertical-align: -0.3125em;\n}\n.svg-inline--fa.fa-pull-left,\n.svg-inline--fa .fa-pull-start {\n float: inline-start;\n margin-inline-end: var(--fa-pull-margin, 0.3em);\n}\n.svg-inline--fa.fa-pull-right,\n.svg-inline--fa .fa-pull-end {\n float: inline-end;\n margin-inline-start: var(--fa-pull-margin, 0.3em);\n}\n.svg-inline--fa.fa-li {\n width: var(--fa-li-width, 2em);\n inset-inline-start: calc(-1 * var(--fa-li-width, 2em));\n inset-block-start: 0.25em; /* syncing vertical alignment with Web Font rendering */\n}\n\n.fa-layers-counter, .fa-layers-text {\n display: inline-block;\n position: absolute;\n text-align: center;\n}\n\n.fa-layers {\n display: inline-block;\n height: 1em;\n position: relative;\n text-align: center;\n vertical-align: -0.125em;\n width: var(--fa-width, 1.25em);\n}\n.fa-layers .svg-inline--fa {\n inset: 0;\n margin: auto;\n position: absolute;\n transform-origin: center center;\n}\n\n.fa-layers-text {\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n transform-origin: center center;\n}\n\n.fa-layers-counter {\n background-color: var(--fa-counter-background-color, #ff253a);\n border-radius: var(--fa-counter-border-radius, 1em);\n box-sizing: border-box;\n color: var(--fa-inverse, #fff);\n line-height: var(--fa-counter-line-height, 1);\n max-width: var(--fa-counter-max-width, 5em);\n min-width: var(--fa-counter-min-width, 1.5em);\n overflow: hidden;\n padding: var(--fa-counter-padding, 0.25em 0.5em);\n right: var(--fa-right, 0);\n text-overflow: ellipsis;\n top: var(--fa-top, 0);\n transform: scale(var(--fa-counter-scale, 0.25));\n transform-origin: top right;\n}\n\n.fa-layers-bottom-right {\n bottom: var(--fa-bottom, 0);\n right: var(--fa-right, 0);\n top: auto;\n transform: scale(var(--fa-layers-scale, 0.25));\n transform-origin: bottom right;\n}\n\n.fa-layers-bottom-left {\n bottom: var(--fa-bottom, 0);\n left: var(--fa-left, 0);\n right: auto;\n top: auto;\n transform: scale(var(--fa-layers-scale, 0.25));\n transform-origin: bottom left;\n}\n\n.fa-layers-top-right {\n top: var(--fa-top, 0);\n right: var(--fa-right, 0);\n transform: scale(var(--fa-layers-scale, 0.25));\n transform-origin: top right;\n}\n\n.fa-layers-top-left {\n left: var(--fa-left, 0);\n right: auto;\n top: var(--fa-top, 0);\n transform: scale(var(--fa-layers-scale, 0.25));\n transform-origin: top left;\n}\n\n.fa-1x {\n font-size: 1em;\n}\n\n.fa-2x {\n font-size: 2em;\n}\n\n.fa-3x {\n font-size: 3em;\n}\n\n.fa-4x {\n font-size: 4em;\n}\n\n.fa-5x {\n font-size: 5em;\n}\n\n.fa-6x {\n font-size: 6em;\n}\n\n.fa-7x {\n font-size: 7em;\n}\n\n.fa-8x {\n font-size: 8em;\n}\n\n.fa-9x {\n font-size: 9em;\n}\n\n.fa-10x {\n font-size: 10em;\n}\n\n.fa-2xs {\n font-size: calc(10 / 16 * 1em); /* converts a 10px size into an em-based value that's relative to the scale's 16px base */\n line-height: calc(1 / 10 * 1em); /* sets the line-height of the icon back to that of it's parent */\n vertical-align: calc((6 / 10 - 0.375) * 1em); /* vertically centers the icon taking into account the surrounding text's descender */\n}\n\n.fa-xs {\n font-size: calc(12 / 16 * 1em); /* converts a 12px size into an em-based value that's relative to the scale's 16px base */\n line-height: calc(1 / 12 * 1em); /* sets the line-height of the icon back to that of it's parent */\n vertical-align: calc((6 / 12 - 0.375) * 1em); /* vertically centers the icon taking into account the surrounding text's descender */\n}\n\n.fa-sm {\n font-size: calc(14 / 16 * 1em); /* converts a 14px size into an em-based value that's relative to the scale's 16px base */\n line-height: calc(1 / 14 * 1em); /* sets the line-height of the icon back to that of it's parent */\n vertical-align: calc((6 / 14 - 0.375) * 1em); /* vertically centers the icon taking into account the surrounding text's descender */\n}\n\n.fa-lg {\n font-size: calc(20 / 16 * 1em); /* converts a 20px size into an em-based value that's relative to the scale's 16px base */\n line-height: calc(1 / 20 * 1em); /* sets the line-height of the icon back to that of it's parent */\n vertical-align: calc((6 / 20 - 0.375) * 1em); /* vertically centers the icon taking into account the surrounding text's descender */\n}\n\n.fa-xl {\n font-size: calc(24 / 16 * 1em); /* converts a 24px size into an em-based value that's relative to the scale's 16px base */\n line-height: calc(1 / 24 * 1em); /* sets the line-height of the icon back to that of it's parent */\n vertical-align: calc((6 / 24 - 0.375) * 1em); /* vertically centers the icon taking into account the surrounding text's descender */\n}\n\n.fa-2xl {\n font-size: calc(32 / 16 * 1em); /* converts a 32px size into an em-based value that's relative to the scale's 16px base */\n line-height: calc(1 / 32 * 1em); /* sets the line-height of the icon back to that of it's parent */\n vertical-align: calc((6 / 32 - 0.375) * 1em); /* vertically centers the icon taking into account the surrounding text's descender */\n}\n\n.fa-width-auto {\n --fa-width: auto;\n}\n\n.fa-fw,\n.fa-width-fixed {\n --fa-width: 1.25em;\n}\n\n.fa-ul {\n list-style-type: none;\n margin-inline-start: var(--fa-li-margin, 2.5em);\n padding-inline-start: 0;\n}\n.fa-ul > li {\n position: relative;\n}\n\n.fa-li {\n inset-inline-start: calc(-1 * var(--fa-li-width, 2em));\n position: absolute;\n text-align: center;\n width: var(--fa-li-width, 2em);\n line-height: inherit;\n}\n\n/* Heads Up: Bordered Icons will not be supported in the future!\n - This feature will be deprecated in the next major release of Font Awesome (v8)!\n - You may continue to use it in this version *v7), but it will not be supported in Font Awesome v8.\n*/\n/* Notes:\n* --@{v.$css-prefix}-border-width = 1/16 by default (to render as ~1px based on a 16px default font-size)\n* --@{v.$css-prefix}-border-padding =\n ** 3/16 for vertical padding (to give ~2px of vertical whitespace around an icon considering it's vertical alignment)\n ** 4/16 for horizontal padding (to give ~4px of horizontal whitespace around an icon)\n*/\n.fa-border {\n border-color: var(--fa-border-color, #eee);\n border-radius: var(--fa-border-radius, 0.1em);\n border-style: var(--fa-border-style, solid);\n border-width: var(--fa-border-width, 0.0625em);\n box-sizing: var(--fa-border-box-sizing, content-box);\n padding: var(--fa-border-padding, 0.1875em 0.25em);\n}\n\n.fa-pull-left,\n.fa-pull-start {\n float: inline-start;\n margin-inline-end: var(--fa-pull-margin, 0.3em);\n}\n\n.fa-pull-right,\n.fa-pull-end {\n float: inline-end;\n margin-inline-start: var(--fa-pull-margin, 0.3em);\n}\n\n.fa-beat {\n animation-name: fa-beat;\n animation-delay: var(--fa-animation-delay, 0s);\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 1s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\n}\n\n.fa-bounce {\n animation-name: fa-bounce;\n animation-delay: var(--fa-animation-delay, 0s);\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 1s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\n}\n\n.fa-fade {\n animation-name: fa-fade;\n animation-delay: var(--fa-animation-delay, 0s);\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 1s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n}\n\n.fa-beat-fade {\n animation-name: fa-beat-fade;\n animation-delay: var(--fa-animation-delay, 0s);\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 1s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n}\n\n.fa-flip {\n animation-name: fa-flip;\n animation-delay: var(--fa-animation-delay, 0s);\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 1s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\n}\n\n.fa-shake {\n animation-name: fa-shake;\n animation-delay: var(--fa-animation-delay, 0s);\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 1s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, linear);\n}\n\n.fa-spin {\n animation-name: fa-spin;\n animation-delay: var(--fa-animation-delay, 0s);\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 2s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, linear);\n}\n\n.fa-spin-reverse {\n --fa-animation-direction: reverse;\n}\n\n.fa-pulse,\n.fa-spin-pulse {\n animation-name: fa-spin;\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 1s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, steps(8));\n}\n\n@media (prefers-reduced-motion: reduce) {\n .fa-beat,\n .fa-bounce,\n .fa-fade,\n .fa-beat-fade,\n .fa-flip,\n .fa-pulse,\n .fa-shake,\n .fa-spin,\n .fa-spin-pulse {\n animation: none !important;\n transition: none !important;\n }\n}\n@keyframes fa-beat {\n 0%, 90% {\n transform: scale(1);\n }\n 45% {\n transform: scale(var(--fa-beat-scale, 1.25));\n }\n}\n@keyframes fa-bounce {\n 0% {\n transform: scale(1, 1) translateY(0);\n }\n 10% {\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\n }\n 30% {\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\n }\n 50% {\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\n }\n 57% {\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\n }\n 64% {\n transform: scale(1, 1) translateY(0);\n }\n 100% {\n transform: scale(1, 1) translateY(0);\n }\n}\n@keyframes fa-fade {\n 50% {\n opacity: var(--fa-fade-opacity, 0.4);\n }\n}\n@keyframes fa-beat-fade {\n 0%, 100% {\n opacity: var(--fa-beat-fade-opacity, 0.4);\n transform: scale(1);\n }\n 50% {\n opacity: 1;\n transform: scale(var(--fa-beat-fade-scale, 1.125));\n }\n}\n@keyframes fa-flip {\n 50% {\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\n }\n}\n@keyframes fa-shake {\n 0% {\n transform: rotate(-15deg);\n }\n 4% {\n transform: rotate(15deg);\n }\n 8%, 24% {\n transform: rotate(-18deg);\n }\n 12%, 28% {\n transform: rotate(18deg);\n }\n 16% {\n transform: rotate(-22deg);\n }\n 20% {\n transform: rotate(22deg);\n }\n 32% {\n transform: rotate(-12deg);\n }\n 36% {\n transform: rotate(12deg);\n }\n 40%, 100% {\n transform: rotate(0deg);\n }\n}\n@keyframes fa-spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n.fa-rotate-90 {\n transform: rotate(90deg);\n}\n\n.fa-rotate-180 {\n transform: rotate(180deg);\n}\n\n.fa-rotate-270 {\n transform: rotate(270deg);\n}\n\n.fa-flip-horizontal {\n transform: scale(-1, 1);\n}\n\n.fa-flip-vertical {\n transform: scale(1, -1);\n}\n\n.fa-flip-both,\n.fa-flip-horizontal.fa-flip-vertical {\n transform: scale(-1, -1);\n}\n\n.fa-rotate-by {\n transform: rotate(var(--fa-rotate-angle, 0));\n}\n\n.svg-inline--fa .fa-primary {\n fill: var(--fa-primary-color, currentColor);\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa .fa-secondary {\n fill: var(--fa-secondary-color, currentColor);\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-primary {\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa mask .fa-primary,\n.svg-inline--fa mask .fa-secondary {\n fill: black;\n}\n\n.svg-inline--fa.fa-inverse {\n fill: var(--fa-inverse, #fff);\n}\n\n.fa-stack {\n display: inline-block;\n height: 2em;\n line-height: 2em;\n position: relative;\n vertical-align: middle;\n width: 2.5em;\n}\n\n.fa-inverse {\n color: var(--fa-inverse, #fff);\n}\n\n.svg-inline--fa.fa-stack-1x {\n --fa-width: 1.25em;\n height: 1em;\n width: var(--fa-width);\n}\n.svg-inline--fa.fa-stack-2x {\n --fa-width: 2.5em;\n height: 2em;\n width: var(--fa-width);\n}\n\n.fa-stack-1x,\n.fa-stack-2x {\n inset: 0;\n margin: auto;\n position: absolute;\n z-index: var(--fa-stack-z-index, auto);\n}";function Kn(){var e=Ut,t=Gt,n=Sn.cssPrefix,r=Sn.replacementClass,o=jn;if(n!==e||r!==t){var a=new RegExp("\\.".concat(e,"\\-"),"g"),l=new RegExp("\\--".concat(e,"\\-"),"g"),i=new RegExp("\\.".concat(t),"g");o=o.replace(a,".".concat(n,"-")).replace(l,"--".concat(n,"-")).replace(i,".".concat(r))}return o}var Hn=!1;function Xn(){Sn.autoAddCss&&!Hn&&(Tn(Kn()),Hn=!0)}var Un={mixout:function(){return{dom:{css:Kn,insertCss:Xn}}},hooks:function(){return{beforeDOMElementCreation:function(){Xn()},beforeI2svg:function(){Xn()}}}},Gn=I||{};Gn[Ht]||(Gn[Ht]={}),Gn[Ht].styles||(Gn[Ht].styles={}),Gn[Ht].hooks||(Gn[Ht].hooks={}),Gn[Ht].shims||(Gn[Ht].shims=[]);var qn=Gn[Ht],Yn=[],Qn=function(){N.removeEventListener("DOMContentLoaded",Qn),Zn=1,Yn.map(function(e){return e()})},Zn=!1;function Jn(e){P&&(Zn?setTimeout(e,0):Yn.push(e))}function er(e){var t=e.tag,n=e.attributes,r=void 0===n?{}:n,o=e.children,a=void 0===o?[]:o;return"string"===typeof e?Pn(e):"<".concat(t," ").concat(Fn(r),">").concat(a.map(er).join(""),"")}function tr(e,t,n){if(e&&e[t]&&e[t][n])return{prefix:t,iconName:n,icon:e[t][n]}}P&&(Zn=(N.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(N.readyState),Zn||N.addEventListener("DOMContentLoaded",Qn));var nr=function(e,t){return function(n,r,o,a){return e.call(t,n,r,o,a)}},rr=function(e,t,n,r){var o,a,l,i=Object.keys(e),s=i.length,u=void 0!==r?nr(t,r):t;for(void 0===n?(o=1,l=e[i[0]]):(o=0,l=n);o2&&void 0!==arguments[2]?arguments[2]:{},r=n.skipHooks,o=void 0!==r&&r,a=ar(t);"function"!==typeof qn.hooks.addPack||o?qn.styles[e]=m(m({},qn.styles[e]||{}),a):qn.hooks.addPack(e,ar(t)),"fas"===e&&lr("fa",t)}var ir=qn.styles,sr=qn.shims,ur=Object.keys(fn),cr=ur.reduce(function(e,t){return e[t]=Object.keys(fn[t]),e},{}),dr=null,fr={},pr={},vr={},hr={},mr={};function gr(e){return~wn.indexOf(e)}function br(e,t){var n=t.split("-"),r=n[0],o=n.slice(1).join("-");return r!==e||""===o||gr(o)?null:o}var yr=function(){var e=function(e){return rr(ir,function(t,n,r){return t[r]=rr(n,e,{}),t},{})};fr=e(function(e,t,n){if(t[3]&&(e[t[3]]=n),t[2]){var r=t[2].filter(function(e){return"number"===typeof e});r.forEach(function(t){e[t.toString(16)]=n})}return e}),pr=e(function(e,t,n){if(e[n]=n,t[2]){var r=t[2].filter(function(e){return"string"===typeof e});r.forEach(function(t){e[t]=n})}return e}),mr=e(function(e,t,n){var r=t[2];return e[n]=n,r.forEach(function(t){e[t]=n}),e});var t="far"in ir||Sn.autoFetchSvg,n=rr(sr,function(e,n){var r=n[0],o=n[1],a=n[2];return"far"!==o||t||(o="fas"),"string"===typeof r&&(e.names[r]={prefix:o,iconName:a}),"number"===typeof r&&(e.unicodes[r.toString(16)]={prefix:o,iconName:a}),e},{names:{},unicodes:{}});vr=n.names,hr=n.unicodes,dr=Mr(Sn.styleDefault,{family:Sn.familyDefault})};function wr(e,t){return(fr[e]||{})[t]}function Rr(e,t){return(pr[e]||{})[t]}function Cr(e,t){return(mr[e]||{})[t]}function xr(e){return vr[e]||{prefix:null,iconName:null}}function kr(e){var t=hr[e],n=wr("fas",e);return t||(n?{prefix:"fas",iconName:n}:null)||{prefix:null,iconName:null}}function Er(){return dr}Ln(function(e){dr=Mr(e.styleDefault,{family:Sn.familyDefault})}),yr();var _r=function(){return{prefix:null,iconName:null,rest:[]}};function Sr(e){var t=K,n=ur.reduce(function(e,t){return e[t]="".concat(Sn.cssPrefix,"-").concat(t),e},{});return Me.forEach(function(r){(e.includes(n[r])||e.some(function(e){return cr[r].includes(e)}))&&(t=r)}),t}function Mr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.family,r=void 0===n?K:n,o=sn[r][e];if(r===H&&!e)return"fad";var a=cn[r][e]||cn[r][o],l=e in qn.styles?e:null,i=a||l||null;return i}function Lr(e){var t=[],n=null;return e.forEach(function(e){var r=br(Sn.cssPrefix,e);r?n=r:e&&t.push(e)}),{iconName:n,rest:t}}function Ar(e){return e.sort().filter(function(e,t,n){return n.indexOf(e)===t})}var Or=Ft.concat(Ie);function Tr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.skipLookups,r=void 0!==n&&n,o=null,a=Ar(e.filter(function(e){return Or.includes(e)})),l=Ar(e.filter(function(e){return!Or.includes(e)})),i=a.filter(function(e){return o=e,!j.includes(e)}),s=g(i,1),u=s[0],c=void 0===u?null:u,d=Sr(a),f=m(m({},Lr(l)),{},{prefix:Mr(c,{family:d})});return m(m(m({},f),Dr({values:e,family:d,styles:ir,config:Sn,canonical:f,givenPrefix:o})),Ir(r,o,f))}function Ir(e,t,n){var r=n.prefix,o=n.iconName;if(e||!r||!o)return{prefix:r,iconName:o};var a="fa"===t?xr(o):{},l=Cr(r,o);return o=a.iconName||l||o,r=a.prefix||r,"far"!==r||ir["far"]||!ir["fas"]||Sn.autoFetchSvg||(r="fas"),{prefix:r,iconName:o}}var Nr=Me.filter(function(e){return e!==K||e!==H}),Wr=Object.keys(Dt).filter(function(e){return e!==K}).map(function(e){return Object.keys(Dt[e])}).flat();function Dr(e){var t=e.values,n=e.family,r=e.canonical,o=e.givenPrefix,a=void 0===o?"":o,l=e.styles,i=void 0===l?{}:l,s=e.config,u=void 0===s?{}:s,c=n===H,d=t.includes("fa-duotone")||t.includes("fad"),f="duotone"===u.familyDefault,p="fad"===r.prefix||"fa-duotone"===r.prefix;if(!c&&(d||f||p)&&(r.prefix="fad"),(t.includes("fa-brands")||t.includes("fab"))&&(r.prefix="fab"),!r.prefix&&Nr.includes(n)){var v=Object.keys(i).find(function(e){return Wr.includes(e)});if(v||u.autoFetchSvg){var h=Oe.get(n).defaultShortPrefixId;r.prefix=h,r.iconName=Cr(r.prefix,r.iconName)||r.iconName}}return"fa"!==r.prefix&&"fa"!==a||(r.prefix=Er()||"fas"),r}var Pr=function(){function e(){l(this,e),this.definitions={}}return s(e,[{key:"add",value:function(){for(var e=this,t=arguments.length,n=new Array(t),r=0;r0&&i.forEach(function(t){"string"===typeof t&&(e[o][t]=l)}),e[o][a]=l}),e}}])}(),Fr=[],Br={},zr={},$r=Object.keys(zr);function Vr(e,t){var n=t.mixoutsTo;return Fr=e,Br={},Object.keys(zr).forEach(function(e){-1===$r.indexOf(e)&&delete zr[e]}),Fr.forEach(function(e){var t=e.mixout?e.mixout():{};if(Object.keys(t).forEach(function(e){"function"===typeof t[e]&&(n[e]=t[e]),"object"===R(t[e])&&Object.keys(t[e]).forEach(function(r){n[e]||(n[e]={}),n[e][r]=t[e][r]})}),e.hooks){var r=e.hooks();Object.keys(r).forEach(function(e){Br[e]||(Br[e]=[]),Br[e].push(r[e])})}e.provides&&e.provides(zr)}),n}function jr(e,t){for(var n=arguments.length,r=new Array(n>2?n-2:0),o=2;o1?t-1:0),r=1;r0&&void 0!==arguments[0]?arguments[0]:{};return P?(Kr("beforeI2svg",e),Hr("pseudoElements2svg",e),Hr("i2svg",e)):Promise.reject(new Error("Operation requires a DOM of some kind."))},watch:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.autoReplaceSvgRoot;!1===Sn.autoReplaceSvg&&(Sn.autoReplaceSvg=!0),Sn.observeMutations=!0,Jn(function(){Zr({autoReplaceSvgRoot:t}),Kr("watch",e)})}},Yr={icon:function(e){if(null===e)return null;if("object"===R(e)&&e.prefix&&e.iconName)return{prefix:e.prefix,iconName:Cr(e.prefix,e.iconName)||e.iconName};if(Array.isArray(e)&&2===e.length){var t=0===e[1].indexOf("fa-")?e[1].slice(3):e[1],n=Mr(e[0]);return{prefix:n,iconName:Cr(n,t)||t}}if("string"===typeof e&&(e.indexOf("".concat(Sn.cssPrefix,"-"))>-1||e.match(vn))){var r=Tr(e.split(" "),{skipLookups:!0});return{prefix:r.prefix||Er(),iconName:Cr(r.prefix,r.iconName)||r.iconName}}if("string"===typeof e){var o=Er();return{prefix:o,iconName:Cr(o,e)||e}}}},Qr={noAuto:Gr,config:Sn,dom:qr,parse:Yr,library:Ur,findIconDefinition:Xr,toHtml:er},Zr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.autoReplaceSvgRoot,n=void 0===t?N:t;(Object.keys(qn.styles).length>0||Sn.autoFetchSvg)&&P&&Sn.autoReplaceSvg&&Qr.dom.i2svg({node:n})};function Jr(e,t){return Object.defineProperty(e,"abstract",{get:t}),Object.defineProperty(e,"html",{get:function(){return e.abstract.map(function(e){return er(e)})}}),Object.defineProperty(e,"node",{get:function(){if(P){var t=N.createElement("div");return t.innerHTML=e.html,t.children}}}),e}function eo(e){var t=e.children,n=e.main,r=e.mask,o=e.attributes,a=e.styles,l=e.transform;if(zn(l)&&n.found&&!r.found){var i=n.width,s=n.height,u={x:i/s/2,y:.5};o["style"]=Bn(m(m({},a),{},{"transform-origin":"".concat(u.x+l.x/16,"em ").concat(u.y+l.y/16,"em")}))}return[{tag:"svg",attributes:o,children:t}]}function to(e){var t=e.prefix,n=e.iconName,r=e.children,o=e.attributes,a=e.symbol,l=!0===a?"".concat(t,"-").concat(Sn.cssPrefix,"-").concat(n):a;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:m(m({},o),{},{id:l}),children:r}]}]}function no(e){var t=["aria-label","aria-labelledby","title","role"];return t.some(function(t){return t in e})}function ro(e){var t=e.icons,n=t.main,r=t.mask,o=e.prefix,a=e.iconName,l=e.transform,i=e.symbol,s=e.maskId,u=e.extra,c=e.watchable,d=void 0!==c&&c,f=r.found?r:n,p=f.width,v=f.height,h=[Sn.replacementClass,a?"".concat(Sn.cssPrefix,"-").concat(a):""].filter(function(e){return-1===u.classes.indexOf(e)}).filter(function(e){return""!==e||!!e}).concat(u.classes).join(" "),g={children:[],attributes:m(m({},u.attributes),{},{"data-prefix":o,"data-icon":a,class:h,role:u.attributes.role||"img",viewBox:"0 0 ".concat(p," ").concat(v)})};no(u.attributes)||u.attributes["aria-hidden"]||(g.attributes["aria-hidden"]="true"),d&&(g.attributes[qt]="");var b=m(m({},g),{},{prefix:o,iconName:a,main:n,mask:r,maskId:s,transform:l,symbol:i,styles:m({},u.styles)}),y=r.found&&n.found?Hr("generateAbstractMask",b)||{children:[],attributes:{}}:Hr("generateAbstractIcon",b)||{children:[],attributes:{}},w=y.children,R=y.attributes;return b.children=w,b.attributes=R,i?to(b):eo(b)}function oo(e){var t=e.content,n=e.width,r=e.height,o=e.transform,a=e.extra,l=e.watchable,i=void 0!==l&&l,s=m(m({},a.attributes),{},{class:a.classes.join(" ")});i&&(s[qt]="");var u=m({},a.styles);zn(o)&&(u["transform"]=Vn({transform:o,startCentered:!0,width:n,height:r}),u["-webkit-transform"]=u["transform"]);var c=Bn(u);c.length>0&&(s["style"]=c);var d=[];return d.push({tag:"span",attributes:s,children:[t]}),d}function ao(e){var t=e.content,n=e.extra,r=m(m({},n.attributes),{},{class:n.classes.join(" ")}),o=Bn(n.styles);o.length>0&&(r["style"]=o);var a=[];return a.push({tag:"span",attributes:r,children:[t]}),a}var lo=qn.styles;function io(e){var t=e[0],n=e[1],r=e.slice(4),o=g(r,1),a=o[0],l=null;return l=Array.isArray(a)?{tag:"g",attributes:{class:"".concat(Sn.cssPrefix,"-").concat(yn.GROUP)},children:[{tag:"path",attributes:{class:"".concat(Sn.cssPrefix,"-").concat(yn.SECONDARY),fill:"currentColor",d:a[0]}},{tag:"path",attributes:{class:"".concat(Sn.cssPrefix,"-").concat(yn.PRIMARY),fill:"currentColor",d:a[1]}}]}:{tag:"path",attributes:{fill:"currentColor",d:a}},{found:!0,width:t,height:n,icon:l}}var so={found:!1,width:512,height:512};function uo(e,t){on||Sn.showMissingIcons||!e||console.error('Icon with name "'.concat(e,'" and prefix "').concat(t,'" is missing.'))}function co(e,t){var n=t;return"fa"===t&&null!==Sn.styleDefault&&(t=Er()),new Promise(function(r,o){if("fa"===n){var a=xr(e)||{};e=a.iconName||e,t=a.prefix||t}if(e&&t&&lo[t]&&lo[t][e]){var l=lo[t][e];return r(io(l))}uo(e,t),r(m(m({},so),{},{icon:Sn.showMissingIcons&&e&&Hr("missingIconAbstract")||{}}))})}var fo=function(){},po=Sn.measurePerformance&&D&&D.mark&&D.measure?D:{mark:fo,measure:fo},vo='FA "7.2.0"',ho=function(e){return po.mark("".concat(vo," ").concat(e," begins")),function(){return mo(e)}},mo=function(e){po.mark("".concat(vo," ").concat(e," ends")),po.measure("".concat(vo," ").concat(e),"".concat(vo," ").concat(e," begins"),"".concat(vo," ").concat(e," ends"))},go={begin:ho,end:mo},bo=function(){};function yo(e){var t=e.getAttribute?e.getAttribute(qt):null;return"string"===typeof t}function wo(e){var t=e.getAttribute?e.getAttribute(Zt):null,n=e.getAttribute?e.getAttribute(Jt):null;return t&&n}function Ro(e){return e&&e.classList&&e.classList.contains&&e.classList.contains(Sn.replacementClass)}function Co(){if(!0===Sn.autoReplaceSvg)return So.replace;var e=So[Sn.autoReplaceSvg];return e||So.replace}function xo(e){return N.createElementNS("http://www.w3.org/2000/svg",e)}function ko(e){return N.createElement(e)}function Eo(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.ceFn,r=void 0===n?"svg"===e.tag?xo:ko:n;if("string"===typeof e)return N.createTextNode(e);var o=r(e.tag);Object.keys(e.attributes||[]).forEach(function(t){o.setAttribute(t,e.attributes[t])});var a=e.children||[];return a.forEach(function(e){o.appendChild(Eo(e,{ceFn:r}))}),o}function _o(e){var t=" ".concat(e.outerHTML," ");return t="".concat(t,"Font Awesome fontawesome.com "),t}var So={replace:function(e){var t=e[0];if(t.parentNode)if(e[1].forEach(function(e){t.parentNode.insertBefore(Eo(e),t)}),null===t.getAttribute(qt)&&Sn.keepOriginalSource){var n=N.createComment(_o(t));t.parentNode.replaceChild(n,t)}else t.remove()},nest:function(e){var t=e[0],n=e[1];if(~Dn(t).indexOf(Sn.replacementClass))return So.replace(e);var r=new RegExp("".concat(Sn.cssPrefix,"-.*"));if(delete n[0].attributes.id,n[0].attributes.class){var o=n[0].attributes.class.split(" ").reduce(function(e,t){return t===Sn.replacementClass||t.match(r)?e.toSvg.push(t):e.toNode.push(t),e},{toNode:[],toSvg:[]});n[0].attributes.class=o.toSvg.join(" "),0===o.toNode.length?t.removeAttribute("class"):t.setAttribute("class",o.toNode.join(" "))}var a=n.map(function(e){return er(e)}).join("\n");t.setAttribute(qt,""),t.innerHTML=a}};function Mo(e){e()}function Lo(e,t){var n="function"===typeof t?t:bo;if(0===e.length)n();else{var r=Mo;Sn.mutateApproach===tn&&(r=I.requestAnimationFrame||Mo),r(function(){var t=Co(),r=go.begin("mutate");e.map(t),r(),n()})}}var Ao=!1;function Oo(){Ao=!0}function To(){Ao=!1}var Io=null;function No(e){if(W&&Sn.observeMutations){var t=e.treeCallback,n=void 0===t?bo:t,r=e.nodeCallback,o=void 0===r?bo:r,a=e.pseudoElementsCallback,l=void 0===a?bo:a,i=e.observeMutationsRoot,s=void 0===i?N:i;Io=new W(function(e){if(!Ao){var t=Er();Wn(e).forEach(function(e){if("childList"===e.type&&e.addedNodes.length>0&&!yo(e.addedNodes[0])&&(Sn.searchPseudoElements&&l(e.target),n(e.target)),"attributes"===e.type&&e.target.parentNode&&Sn.searchPseudoElements&&l([e.target],!0),"attributes"===e.type&&yo(e.target)&&~bn.indexOf(e.attributeName))if("class"===e.attributeName&&wo(e.target)){var r=Tr(Dn(e.target)),a=r.prefix,i=r.iconName;e.target.setAttribute(Zt,a||t),i&&e.target.setAttribute(Jt,i)}else Ro(e.target)&&o(e.target)})}}),P&&Io.observe(s,{childList:!0,attributes:!0,characterData:!0,subtree:!0})}}function Wo(){Io&&Io.disconnect()}function Do(e){var t=e.getAttribute("style"),n=[];return t&&(n=t.split(";").reduce(function(e,t){var n=t.split(":"),r=n[0],o=n.slice(1);return r&&o.length>0&&(e[r]=o.join(":").trim()),e},{})),n}function Po(e){var t=e.getAttribute("data-prefix"),n=e.getAttribute("data-icon"),r=void 0!==e.innerText?e.innerText.trim():"",o=Tr(Dn(e));return o.prefix||(o.prefix=Er()),t&&n&&(o.prefix=t,o.iconName=n),o.iconName&&o.prefix||(o.prefix&&r.length>0&&(o.iconName=Rr(o.prefix,e.innerText)||wr(o.prefix,or(e.innerText))),!o.iconName&&Sn.autoFetchSvg&&e.firstChild&&e.firstChild.nodeType===Node.TEXT_NODE&&(o.iconName=e.firstChild.data)),o}function Fo(e){var t=Wn(e.attributes).reduce(function(e,t){return"class"!==e.name&&"style"!==e.name&&(e[t.name]=t.value),e},{});return t}function Bo(){return{iconName:null,prefix:null,transform:On,symbol:!1,mask:{iconName:null,prefix:null,rest:[]},maskId:null,extra:{classes:[],styles:{},attributes:{}}}}function zo(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{styleParser:!0},n=Po(e),r=n.iconName,o=n.prefix,a=n.rest,l=Fo(e),i=jr("parseNodeAttributes",{},e),s=t.styleParser?Do(e):[];return m({iconName:r,prefix:o,transform:On,mask:{iconName:null,prefix:null,rest:[]},maskId:null,symbol:!1,extra:{classes:a,styles:s,attributes:l}},i)}var $o=qn.styles;function Vo(e){var t="nest"===Sn.autoReplaceSvg?zo(e,{styleParser:!1}):zo(e);return~t.extra.classes.indexOf(hn)?Hr("generateLayersText",e,t):Hr("generateSvgReplacementMutation",e,t)}function jo(){return[].concat(b(Ie),b(Ft))}function Ko(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(!P)return Promise.resolve();var n=N.documentElement.classList,r=function(e){return n.add("".concat(en,"-").concat(e))},o=function(e){return n.remove("".concat(en,"-").concat(e))},a=Sn.autoFetchSvg?jo():j.concat(Object.keys($o));a.includes("fa")||a.push("fa");var l=[".".concat(hn,":not([").concat(qt,"])")].concat(a.map(function(e){return".".concat(e,":not([").concat(qt,"])")})).join(", ");if(0===l.length)return Promise.resolve();var i=[];try{i=Wn(e.querySelectorAll(l))}catch(c){}if(!(i.length>0))return Promise.resolve();r("pending"),o("complete");var s=go.begin("onTree"),u=i.reduce(function(e,t){try{var n=Vo(t);n&&e.push(n)}catch(c){on||"MissingIcon"===c.name&&console.error(c)}return e},[]);return new Promise(function(e,n){Promise.all(u).then(function(n){Lo(n,function(){r("active"),r("complete"),o("pending"),"function"===typeof t&&t(),s(),e()})}).catch(function(e){s(),n(e)})})}function Ho(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;Vo(e).then(function(e){e&&Lo([e],t)})}function Xo(e){return function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=(t||{}).icon?t:Xr(t||{}),o=n.mask;return o&&(o=(o||{}).icon?o:Xr(o||{})),e(r,m(m({},n),{},{mask:o}))}}var Uo=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.transform,r=void 0===n?On:n,o=t.symbol,a=void 0!==o&&o,l=t.mask,i=void 0===l?null:l,s=t.maskId,u=void 0===s?null:s,c=t.classes,d=void 0===c?[]:c,f=t.attributes,p=void 0===f?{}:f,v=t.styles,h=void 0===v?{}:v;if(e){var g=e.prefix,b=e.iconName,y=e.icon;return Jr(m({type:"icon"},e),function(){return Kr("beforeDOMElementCreation",{iconDefinition:e,params:t}),ro({icons:{main:io(y),mask:i?io(i.icon):{found:!1,width:null,height:null,icon:{}}},prefix:g,iconName:b,transform:m(m({},On),r),symbol:a,maskId:u,extra:{attributes:p,styles:h,classes:d}})})}},Go={mixout:function(){return{icon:Xo(Uo)}},hooks:function(){return{mutationObserverCallbacks:function(e){return e.treeCallback=Ko,e.nodeCallback=Ho,e}}},provides:function(e){e.i2svg=function(e){var t=e.node,n=void 0===t?N:t,r=e.callback,o=void 0===r?function(){}:r;return Ko(n,o)},e.generateSvgReplacementMutation=function(e,t){var n=t.iconName,r=t.prefix,o=t.transform,a=t.symbol,l=t.mask,i=t.maskId,s=t.extra;return new Promise(function(t,u){Promise.all([co(n,r),l.iconName?co(l.iconName,l.prefix):Promise.resolve({found:!1,width:512,height:512,icon:{}})]).then(function(l){var u=g(l,2),c=u[0],d=u[1];t([e,ro({icons:{main:c,mask:d},prefix:r,iconName:n,transform:o,symbol:a,maskId:i,extra:s,watchable:!0})])}).catch(u)})},e.generateAbstractIcon=function(e){var t,n=e.children,r=e.attributes,o=e.main,a=e.transform,l=e.styles,i=Bn(l);return i.length>0&&(r["style"]=i),zn(a)&&(t=Hr("generateAbstractTransformGrouping",{main:o,transform:a,containerWidth:o.width,iconWidth:o.width})),n.push(t||o.icon),{children:n,attributes:r}}}},qo={mixout:function(){return{layer:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.classes,r=void 0===n?[]:n;return Jr({type:"layer"},function(){Kr("beforeDOMElementCreation",{assembler:e,params:t});var n=[];return e(function(e){Array.isArray(e)?e.map(function(e){n=n.concat(e.abstract)}):n=n.concat(e.abstract)}),[{tag:"span",attributes:{class:["".concat(Sn.cssPrefix,"-layers")].concat(b(r)).join(" ")},children:n}]})}}}},Yo={mixout:function(){return{counter:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.title,r=void 0===n?null:n,o=t.classes,a=void 0===o?[]:o,l=t.attributes,i=void 0===l?{}:l,s=t.styles,u=void 0===s?{}:s;return Jr({type:"counter",content:e},function(){return Kr("beforeDOMElementCreation",{content:e,params:t}),ao({content:e.toString(),title:r,extra:{attributes:i,styles:u,classes:["".concat(Sn.cssPrefix,"-layers-counter")].concat(b(a))}})})}}}},Qo={mixout:function(){return{text:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.transform,r=void 0===n?On:n,o=t.classes,a=void 0===o?[]:o,l=t.attributes,i=void 0===l?{}:l,s=t.styles,u=void 0===s?{}:s;return Jr({type:"text",content:e},function(){return Kr("beforeDOMElementCreation",{content:e,params:t}),oo({content:e,transform:m(m({},On),r),extra:{attributes:i,styles:u,classes:["".concat(Sn.cssPrefix,"-layers-text")].concat(b(a))}})})}}},provides:function(e){e.generateLayersText=function(e,t){var n=t.transform,r=t.extra,o=null,a=null;if(F){var l=parseInt(getComputedStyle(e).fontSize,10),i=e.getBoundingClientRect();o=i.width/l,a=i.height/l}return Promise.resolve([e,oo({content:e.innerHTML,width:o,height:a,transform:n,extra:r,watchable:!0})])}}},Zo=new RegExp('"',"ug"),Jo=[1105920,1112319],ea=m(m(m(m({},{FontAwesome:{normal:"fas",400:"fas"}}),Ae),Kt),$e),ta=Object.keys(ea).reduce(function(e,t){return e[t.toLowerCase()]=ea[t],e},{}),na=Object.keys(ta).reduce(function(e,t){var n=ta[t];return e[t]=n[900]||b(Object.entries(n))[0][1],e},{});function ra(e){var t=e.replace(Zo,"");return or(b(t)[0]||"")}function oa(e){var t=e.getPropertyValue("font-feature-settings").includes("ss01"),n=e.getPropertyValue("content"),r=n.replace(Zo,""),o=r.codePointAt(0),a=o>=Jo[0]&&o<=Jo[1],l=2===r.length&&r[0]===r[1];return a||l||t}function aa(e,t){var n=e.replace(/^['"]|['"]$/g,"").toLowerCase(),r=parseInt(t),o=isNaN(r)?"normal":r;return(ta[n]||{})[o]||na[n]}function la(e,t){var n="".concat(Qt).concat(t.replace(":","-"));return new Promise(function(r,o){if(null!==e.getAttribute(n))return r();var a=Wn(e.children),l=a.filter(function(e){return e.getAttribute(Yt)===t})[0],i=I.getComputedStyle(e,t),s=i.getPropertyValue("font-family"),u=s.match(mn),c=i.getPropertyValue("font-weight"),d=i.getPropertyValue("content");if(l&&!u)return e.removeChild(l),r();if(u&&"none"!==d&&""!==d){var f=i.getPropertyValue("content"),p=aa(s,c),v=ra(f),h=u[0].startsWith("FontAwesome"),g=oa(i),b=wr(p,v),y=b;if(h){var w=kr(v);w.iconName&&w.prefix&&(b=w.iconName,p=w.prefix)}if(!b||g||l&&l.getAttribute(Zt)===p&&l.getAttribute(Jt)===y)r();else{e.setAttribute(n,y),l&&e.removeChild(l);var R=Bo(),C=R.extra;C.attributes[Yt]=t,co(b,p).then(function(o){var a=ro(m(m({},R),{},{icons:{main:o,mask:_r()},prefix:p,iconName:y,extra:C,watchable:!0})),l=N.createElementNS("http://www.w3.org/2000/svg","svg");"::before"===t?e.insertBefore(l,e.firstChild):e.appendChild(l),l.outerHTML=a.map(function(e){return er(e)}).join("\n"),e.removeAttribute(n),r()}).catch(o)}}else r()})}function ia(e){return Promise.all([la(e,"::before"),la(e,"::after")])}function sa(e){return e.parentNode!==document.head&&!~nn.indexOf(e.tagName.toUpperCase())&&!e.getAttribute(Yt)&&(!e.parentNode||"svg"!==e.parentNode.tagName)}var ua=function(e){return!!e&&rn.some(function(t){return e.includes(t)})},ca=function(e){if(!e)return[];var t=new Set,n=e.split(/,(?![^()]*\))/).map(function(e){return e.trim()});n=n.flatMap(function(e){return e.includes("(")?e:e.split(",").map(function(e){return e.trim()})});var r,o=u(n);try{for(o.s();!(r=o.n()).done;){var a=r.value;if(ua(a)){var l=rn.reduce(function(e,t){return e.replace(t,"")},a);""!==l&&"*"!==l&&t.add(l)}}}catch(i){o.e(i)}finally{o.f()}return t};function da(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(P){var n;if(t)n=e;else if(Sn.searchPseudoElementsFullScan)n=e.querySelectorAll("*");else{var r,o=new Set,a=u(document.styleSheets);try{for(a.s();!(r=a.n()).done;){var l=r.value;try{var i,s=u(l.cssRules);try{for(s.s();!(i=s.n()).done;){var c,d=i.value,f=ca(d.selectorText),p=u(f);try{for(p.s();!(c=p.n()).done;){var v=c.value;o.add(v)}}catch(m){p.e(m)}finally{p.f()}}}catch(m){s.e(m)}finally{s.f()}}catch(g){Sn.searchPseudoElementsWarnings&&console.warn("Font Awesome: cannot parse stylesheet: ".concat(l.href," (").concat(g.message,')\nIf it declares any Font Awesome CSS pseudo-elements, they will not be rendered as SVG icons. Add crossorigin="anonymous" to the , enable searchPseudoElementsFullScan for slower but more thorough DOM parsing, or suppress this warning by setting searchPseudoElementsWarnings to false.'))}}}catch(m){a.e(m)}finally{a.f()}if(!o.size)return;var h=Array.from(o).join(", ");try{n=e.querySelectorAll(h)}catch(b){}}return new Promise(function(e,t){var r=Wn(n).filter(sa).map(ia),o=go.begin("searchPseudoElements");Oo(),Promise.all(r).then(function(){o(),To(),e()}).catch(function(){o(),To(),t()})})}}var fa={hooks:function(){return{mutationObserverCallbacks:function(e){return e.pseudoElementsCallback=da,e}}},provides:function(e){e.pseudoElements2svg=function(e){var t=e.node,n=void 0===t?N:t;Sn.searchPseudoElements&&da(n)}}},pa=!1,va={mixout:function(){return{dom:{unwatch:function(){Oo(),pa=!0}}}},hooks:function(){return{bootstrap:function(){No(jr("mutationObserverCallbacks",{}))},noAuto:function(){Wo()},watch:function(e){var t=e.observeMutationsRoot;pa?To():No(jr("mutationObserverCallbacks",{observeMutationsRoot:t}))}}}},ha=function(e){var t={size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0};return e.toLowerCase().split(" ").reduce(function(e,t){var n=t.toLowerCase().split("-"),r=n[0],o=n.slice(1).join("-");if(r&&"h"===o)return e.flipX=!0,e;if(r&&"v"===o)return e.flipY=!0,e;if(o=parseFloat(o),isNaN(o))return e;switch(r){case"grow":e.size=e.size+o;break;case"shrink":e.size=e.size-o;break;case"left":e.x=e.x-o;break;case"right":e.x=e.x+o;break;case"up":e.y=e.y-o;break;case"down":e.y=e.y+o;break;case"rotate":e.rotate=e.rotate+o;break}return e},t)},ma={mixout:function(){return{parse:{transform:function(e){return ha(e)}}}},hooks:function(){return{parseNodeAttributes:function(e,t){var n=t.getAttribute("data-fa-transform");return n&&(e.transform=ha(n)),e}}},provides:function(e){e.generateAbstractTransformGrouping=function(e){var t=e.main,n=e.transform,r=e.containerWidth,o=e.iconWidth,a={transform:"translate(".concat(r/2," 256)")},l="translate(".concat(32*n.x,", ").concat(32*n.y,") "),i="scale(".concat(n.size/16*(n.flipX?-1:1),", ").concat(n.size/16*(n.flipY?-1:1),") "),s="rotate(".concat(n.rotate," 0 0)"),u={transform:"".concat(l," ").concat(i," ").concat(s)},c={transform:"translate(".concat(o/2*-1," -256)")},d={outer:a,inner:u,path:c};return{tag:"g",attributes:m({},d.outer),children:[{tag:"g",attributes:m({},d.inner),children:[{tag:t.icon.tag,children:t.icon.children,attributes:m(m({},t.icon.attributes),d.path)}]}]}}}},ga={x:0,y:0,width:"100%",height:"100%"};function ba(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return e.attributes&&(e.attributes.fill||t)&&(e.attributes.fill="black"),e}function ya(e){return"g"===e.tag?e.children:[e]}var wa={hooks:function(){return{parseNodeAttributes:function(e,t){var n=t.getAttribute("data-fa-mask"),r=n?Tr(n.split(" ").map(function(e){return e.trim()})):_r();return r.prefix||(r.prefix=Er()),e.mask=r,e.maskId=t.getAttribute("data-fa-mask-id"),e}}},provides:function(e){e.generateAbstractMask=function(e){var t=e.children,n=e.attributes,r=e.main,o=e.mask,a=e.maskId,l=e.transform,i=r.width,s=r.icon,u=o.width,c=o.icon,d=$n({transform:l,containerWidth:u,iconWidth:i}),f={tag:"rect",attributes:m(m({},ga),{},{fill:"white"})},p=s.children?{children:s.children.map(ba)}:{},v={tag:"g",attributes:m({},d.inner),children:[ba(m({tag:s.tag,attributes:m(m({},s.attributes),d.path)},p))]},h={tag:"g",attributes:m({},d.outer),children:[v]},g="mask-".concat(a||Nn()),b="clip-".concat(a||Nn()),y={tag:"mask",attributes:m(m({},ga),{},{id:g,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[f,h]},w={tag:"defs",children:[{tag:"clipPath",attributes:{id:b},children:ya(c)},y]};return t.push(w,{tag:"rect",attributes:m({fill:"currentColor","clip-path":"url(#".concat(b,")"),mask:"url(#".concat(g,")")},ga)}),{children:t,attributes:n}}}},Ra={provides:function(e){var t=!1;I.matchMedia&&(t=I.matchMedia("(prefers-reduced-motion: reduce)").matches),e.missingIconAbstract=function(){var e=[],n={fill:"currentColor"},r={attributeType:"XML",repeatCount:"indefinite",dur:"2s"};e.push({tag:"path",attributes:m(m({},n),{},{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"})});var o=m(m({},r),{},{attributeName:"opacity"}),a={tag:"circle",attributes:m(m({},n),{},{cx:"256",cy:"364",r:"28"}),children:[]};return t||a.children.push({tag:"animate",attributes:m(m({},r),{},{attributeName:"r",values:"28;14;28;28;14;28;"})},{tag:"animate",attributes:m(m({},o),{},{values:"1;0;1;1;0;1;"})}),e.push(a),e.push({tag:"path",attributes:m(m({},n),{},{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),children:t?[]:[{tag:"animate",attributes:m(m({},o),{},{values:"1;0;0;0;0;1;"})}]}),t||e.push({tag:"path",attributes:m(m({},n),{},{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),children:[{tag:"animate",attributes:m(m({},o),{},{values:"0;0;1;1;0;0;"})}]}),{tag:"g",attributes:{class:"missing"},children:e}}}},Ca={hooks:function(){return{parseNodeAttributes:function(e,t){var n=t.getAttribute("data-fa-symbol"),r=null!==n&&(""===n||n);return e["symbol"]=r,e}}}},xa=[Un,Go,qo,Yo,Qo,fa,va,ma,wa,Ra,Ca];Vr(xa,{mixoutsTo:Qr});Qr.noAuto;var ka=Qr.config,Ea=Qr.library,_a=(Qr.dom,Qr.parse),Sa=(Qr.findIconDefinition,Qr.toHtml,Qr.icon),Ma=(Qr.layer,Qr.text);Qr.counter},99077:function(e,t,n){"use strict";n.d(t,{A:function(){return r}});var r=(e,t)=>{const n=e.__vccOpts||e;for(const[r,o]of t)n[r]=o;return n}},99114:function(e,t,n){"use strict";n.d(t,{A:function(){return c}});var r=n(90144),o=n(55445),a=n(24232);const l=Symbol("ElLoading"),i=e=>`element-loading-${(0,a.Tg)(e)}`,s=(e,t)=>{var n,s,u,d;const f=t.instance,p=e=>(0,a.Gv)(t.value)?t.value[e]:void 0,v=e=>{const t=(0,a.Kg)(e)&&(null==f?void 0:f[e])||e;return(0,r.KR)(t)},h=t=>v(p(t)||e.getAttribute(i(t))),m=null!=(n=p("fullscreen"))?n:t.modifiers.fullscreen,g={text:h("text"),svg:h("svg"),svgViewBox:h("svgViewBox"),spinner:h("spinner"),background:h("background"),customClass:h("customClass"),fullscreen:m,target:null!=(s=p("target"))?s:m?void 0:e,body:null!=(u=p("body"))?u:t.modifiers.body,lock:null!=(d=p("lock"))?d:t.modifiers.lock},b=(0,o.A)(g);b._context=c._context,e[l]={options:g,instance:b}},u=(e,t)=>{for(const n of Object.keys(e))(0,r.i9)(e[n])&&(e[n].value=t[n])},c={mounted(e,t){t.value&&s(e,t)},updated(e,t){const n=e[l];if(!t.value)return null==n||n.instance.close(),void(e[l]=null);n?u(n.options,(0,a.Gv)(t.value)?t.value:{text:e.getAttribute(i("text")),svg:e.getAttribute(i("svg")),svgViewBox:e.getAttribute(i("svgViewBox")),spinner:e.getAttribute(i("spinner")),background:e.getAttribute(i("background")),customClass:e.getAttribute(i("customClass"))}):s(e,t)},unmounted(e){var t;null==(t=e[l])||t.instance.close(),e[l]=null},_context:null}},99180:function(e,t,n){"use strict";n.d(t,{bs:function(){return p},fQ:function(){return v},mf:function(){return u}});n(18111),n(81148),n(13579);var r=n(56768),o=n(90144),a=n(39195),l=n(47378),i=n(24232),s=n(86894);const u=Symbol("emptyValuesContextKey"),c="use-empty-values",d=["",void 0,null],f=void 0,p=(0,l.b_)({emptyValues:Array,valueOnClear:{type:(0,l.jq)([String,Number,Boolean,Function]),default:void 0,validator:e=>(e=(0,i.Tn)(e)?e():e,(0,i.cy)(e)?e.every(e=>!e):!e)}}),v=(e,t)=>{const n=(0,r.nI)()?(0,r.WQ)(u,(0,o.KR)({})):(0,o.KR)({}),l=(0,r.EW)(()=>e.emptyValues||n.value.emptyValues||d),p=(0,r.EW)(()=>(0,i.Tn)(e.valueOnClear)?e.valueOnClear():void 0!==e.valueOnClear?e.valueOnClear:(0,i.Tn)(n.value.valueOnClear)?n.value.valueOnClear():void 0!==n.value.valueOnClear?n.value.valueOnClear:void 0!==t?t:f),v=e=>{let t=!0;return t=(0,i.cy)(e)?l.value.some(t=>(0,a.A)(e,t)):l.value.includes(e),t};return v(p.value)||(0,s.U)(c,"value-on-clear should be a value of empty-values"),{emptyValues:l,valueOnClear:p,isEmptyValue:v}}},99288:function(e,t){"use strict";var n="fas",r="file-signature",o=640,a=512,l=[],i="f573",s="M64.1 64c0-35.3 28.7-64 64-64L277.6 0c17 0 33.3 6.7 45.3 18.7L429.3 125.3c12 12 18.7 28.3 18.7 45.3l0 97.5-132 132-42.1 0-16.1-53.6c-4.7-15.7-19.1-26.4-35.5-26.4-11.3 0-21.9 5.1-28.9 13.9L133.3 409c-8.3 10.3-6.6 25.5 3.7 33.7s25.5 6.6 33.7-3.8l47.1-58.8 15.2 50.7c3 10.2 12.4 17.1 23 17.1l31.5 0c-.9 3.1-1.7 6.3-2.3 9.5l-10.9 54.5-146.2 0c-35.3 0-64-28.7-64-64l0-384zm208-5.5l0 93.5c0 13.3 10.7 24 24 24l93.5 0-117.5-117.5zm60.2 408.4c2.5-12.4 8.6-23.8 17.5-32.7l118.9-118.9 80 80-118.9 118.9c-8.9 8.9-20.3 15-32.7 17.5l-59.6 11.9c-.9 .2-1.9 .3-2.9 .3-8 0-14.6-6.5-14.6-14.6 0-1 .1-1.9 .3-2.9l11.9-59.6zm267.8-123l-28.8 28.8-80-80 28.8-28.8c22.1-22.1 57.9-22.1 80 0s22.1 57.9 0 80z";t.mw={prefix:n,iconName:r,icon:[o,a,l,i,s]},t.UD=t.mw},99648:function(e,t,n){"use strict";n(85331)}}]); -//# sourceMappingURL=chunk-vendors.c0852d4e.js.map \ No newline at end of file +//# sourceMappingURL=chunk-vendors.229dcca1.js.map \ No newline at end of file diff --git a/frontend-dist/js/chunk-vendors.229dcca1.js.gz b/frontend-dist/js/chunk-vendors.229dcca1.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..f1c9cf68a88d88c107e54e729647ae3ddc84872b GIT binary patch literal 518194 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\n ) : null}\n \n \n )\n }\n },\n})\n\nexport type TabNavInstance = InstanceType & {\n scrollToActiveTab: () => Promise\n removeFocus: () => void\n focusActiveTab: () => void\n scheduleRender: () => void\n tabListRef: HTMLDivElement | undefined\n tabBarRef: TabBarInstance | undefined\n}\n\nexport default TabNav\n","import {\n computed,\n createVNode,\n defineComponent,\n getCurrentInstance,\n nextTick,\n provide,\n ref,\n renderSlot,\n watch,\n} from 'vue'\nimport { omit } from 'lodash-unified'\nimport {\n buildProps,\n definePropType,\n getEventCode,\n isNumber,\n isString,\n isUndefined,\n} from '@element-plus/utils'\nimport { EVENT_CODE, UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport ElIcon from '@element-plus/components/icon'\nimport { Plus } from '@element-plus/icons-vue'\nimport { useNamespace, useOrderedChildren } from '@element-plus/hooks'\nimport { tabsRootContextKey } from './constants'\nimport TabNav from './tab-nav'\n\nimport type { ExtractPropTypes, VNode, __ExtractPublicPropTypes } from 'vue'\nimport type { Awaitable } from '@element-plus/utils'\nimport type { TabNavInstance } from './tab-nav'\nimport type { TabPaneName, TabsPaneContext } from './constants'\n\nexport const tabsProps = buildProps({\n /**\n * @description type of Tab\n */\n type: {\n type: String,\n values: ['card', 'border-card', ''],\n default: '',\n },\n /**\n * @description whether Tab is closable\n */\n closable: Boolean,\n /**\n * @description whether Tab is addable\n */\n addable: Boolean,\n /**\n * @description binding value, name of the selected tab\n */\n modelValue: {\n type: [String, Number],\n },\n /**\n * @description initial value when `model-value` is not set\n */\n defaultValue: {\n type: [String, Number],\n },\n /**\n * @description whether Tab is addable and closable\n */\n editable: Boolean,\n /**\n * @description position of tabs\n */\n tabPosition: {\n type: String,\n values: ['top', 'right', 'bottom', 'left'],\n default: 'top',\n },\n /**\n * @description hook function before switching tab. If `false` is returned or a `Promise` is returned and then is rejected, switching will be prevented\n */\n beforeLeave: {\n type: definePropType<\n (newName: TabPaneName, oldName: TabPaneName) => Awaitable\n >(Function),\n default: () => true,\n },\n /**\n * @description whether width of tab automatically fits its container\n */\n stretch: Boolean,\n /**\n * @description tabs tabindex\n */\n tabindex: {\n type: [String, Number],\n default: 0,\n },\n} as const)\nexport type TabsProps = ExtractPropTypes\nexport type TabsPropsPublic = __ExtractPublicPropTypes\n\nconst isPaneName = (value: unknown): value is string | number =>\n isString(value) || isNumber(value)\n\nexport const tabsEmits = {\n [UPDATE_MODEL_EVENT]: (name: TabPaneName) => isPaneName(name),\n tabClick: (pane: TabsPaneContext, ev: Event) => ev instanceof Event,\n tabChange: (name: TabPaneName) => isPaneName(name),\n edit: (paneName: TabPaneName | undefined, action: 'remove' | 'add') =>\n ['remove', 'add'].includes(action),\n tabRemove: (name: TabPaneName) => isPaneName(name),\n tabAdd: () => true,\n}\nexport type TabsEmits = typeof tabsEmits\n\nexport type TabsPanes = Record\n\nconst Tabs = defineComponent({\n name: 'ElTabs',\n\n props: tabsProps,\n emits: tabsEmits,\n\n setup(props, { emit, slots, expose }) {\n const ns = useNamespace('tabs')\n\n const isVertical = computed(() =>\n ['left', 'right'].includes(props.tabPosition)\n )\n\n const {\n children: panes,\n addChild: registerPane,\n removeChild: unregisterPane,\n ChildrenSorter: PanesSorter,\n } = useOrderedChildren(getCurrentInstance()!, 'ElTabPane')\n\n const nav$ = ref()\n const currentName = ref(\n (isUndefined(props.modelValue) ? props.defaultValue : props.modelValue) ??\n '0'\n )\n\n const setCurrentName = async (value?: TabPaneName, trigger = false) => {\n // should do nothing.\n if (currentName.value === value || isUndefined(value)) return\n\n try {\n let canLeave\n if (props.beforeLeave) {\n const result = props.beforeLeave(value, currentName.value)\n canLeave = result instanceof Promise ? await result : result\n } else {\n canLeave = true\n }\n\n if (canLeave !== false) {\n const isFocusInsidePane = panes.value\n .find((item) => item.paneName === currentName.value)\n ?.isFocusInsidePane()\n\n currentName.value = value\n if (trigger) {\n emit(UPDATE_MODEL_EVENT, value)\n emit('tabChange', value)\n }\n\n nav$.value?.removeFocus?.()\n if (isFocusInsidePane) {\n nav$.value?.focusActiveTab()\n }\n }\n } catch {}\n }\n\n const handleTabClick = (\n tab: TabsPaneContext,\n tabName: TabPaneName,\n event: Event\n ) => {\n if (tab.props.disabled) return\n emit('tabClick', tab, event)\n setCurrentName(tabName, true)\n }\n\n const handleTabRemove = (pane: TabsPaneContext, ev: Event) => {\n if (pane.props.disabled || isUndefined(pane.props.name)) return\n ev.stopPropagation()\n emit('edit', pane.props.name, 'remove')\n emit('tabRemove', pane.props.name)\n }\n\n const handleTabAdd = () => {\n emit('edit', undefined, 'add')\n emit('tabAdd')\n }\n\n const handleKeydown = (event: KeyboardEvent) => {\n const code = getEventCode(event)\n if ([EVENT_CODE.enter, EVENT_CODE.numpadEnter].includes(code))\n handleTabAdd()\n }\n\n const swapChildren = (\n vnode: VNode & {\n el: HTMLDivElement\n children: VNode[]\n }\n ) => {\n const actualFirstChild = vnode.el.firstChild!\n const firstChild = ['bottom', 'right'].includes(props.tabPosition)\n ? vnode.children[0].el!\n : vnode.children[1].el!\n\n if (actualFirstChild !== firstChild) {\n actualFirstChild.before(firstChild)\n }\n }\n\n watch(\n () => props.modelValue,\n (modelValue) => setCurrentName(modelValue)\n )\n\n watch(currentName, async () => {\n await nextTick()\n nav$.value?.scrollToActiveTab()\n })\n\n provide(tabsRootContextKey, {\n props,\n currentName,\n registerPane,\n unregisterPane,\n nav$,\n })\n\n expose({\n currentName,\n get tabNavRef() {\n return omit(nav$.value, ['scheduleRender'])\n },\n })\n\n return () => {\n const addSlot = slots['add-icon']\n const newButton =\n props.editable || props.addable ? (\n \n {addSlot ? (\n renderSlot(slots, 'add-icon')\n ) : (\n \n \n \n )}\n \n ) : null\n\n const tabNav = () => (\n \n )\n\n const header = (\n \n {createVNode(PanesSorter, null, {\n default: tabNav,\n $stable: true,\n })}\n {newButton}\n \n )\n\n const panels = (\n
{renderSlot(slots, 'default')}
\n )\n\n return (\n \n {panels}\n {header}\n \n )\n }\n },\n})\n\nexport type TabsInstance = InstanceType & {\n currentName: TabPaneName\n tabNavRef: TabNavInstance | undefined\n}\n\nexport default Tabs\n","import { buildProps } from '@element-plus/utils'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\nimport type TabPane from './tab-pane.vue'\n\nexport const tabPaneProps = buildProps({\n /**\n * @description title of the tab\n */\n label: {\n type: String,\n default: '',\n },\n /**\n * @description identifier corresponding to the name of Tabs, representing the alias of the tab-pane, the default is ordinal number of the tab-pane in the sequence, e.g. the first tab-pane is '0'\n */\n name: {\n type: [String, Number],\n },\n /**\n * @description whether Tab is closable\n */\n closable: {\n type: Boolean,\n default: undefined,\n },\n /**\n * @description whether Tab is disabled\n */\n disabled: Boolean,\n /**\n * @description whether Tab is lazily rendered\n */\n lazy: Boolean,\n} as const)\n\nexport type TabPaneProps = ExtractPropTypes\nexport type TabPanePropsPublic = __ExtractPublicPropTypes\n\nexport type TabPaneInstance = InstanceType & unknown\n","\n\n\n","import { withInstall, withNoopInstall } from '@element-plus/utils'\nimport Tabs from './src/tabs'\nimport TabPane from './src/tab-pane.vue'\n\nimport type { SFCWithInstall } from '@element-plus/utils'\n\nexport const ElTabs: SFCWithInstall & {\n TabPane: typeof TabPane\n} = withInstall(Tabs, {\n TabPane,\n})\nexport const ElTabPane: SFCWithInstall =\n withNoopInstall(TabPane)\nexport default ElTabs\n\nexport * from './src/tabs'\nexport * from './src/tab-bar'\nexport * from './src/tab-nav'\nexport * from './src/tab-pane'\nexport * from './src/constants'\n","import type { InjectionKey } from 'vue'\nimport type { SelectContext, SelectGroupContext } from './type'\n\n// For individual build sharing injection key, we had to make `Symbol` to string\nexport const selectGroupKey: InjectionKey =\n Symbol('ElSelectGroup')\n\nexport const selectKey: InjectionKey = Symbol('ElSelect')\n","import { buildProps, definePropType } from '@element-plus/utils'\n\nimport type { Measurable } from './constants'\nimport type Trigger from './trigger.vue'\n\nexport const popperTriggerProps = buildProps({\n /** @description Indicates the reference element to which the popper is attached */\n virtualRef: {\n type: definePropType(Object),\n },\n /** @description Indicates whether virtual triggering is enabled */\n virtualTriggering: Boolean,\n onMouseenter: {\n type: definePropType<(e: Event) => void>(Function),\n },\n onMouseleave: {\n type: definePropType<(e: Event) => void>(Function),\n },\n onClick: {\n type: definePropType<(e: Event) => void>(Function),\n },\n onKeydown: {\n type: definePropType<(e: Event) => void>(Function),\n },\n onFocus: {\n type: definePropType<(e: Event) => void>(Function),\n },\n onBlur: {\n type: definePropType<(e: Event) => void>(Function),\n },\n onContextmenu: {\n type: definePropType<(e: Event) => void>(Function),\n },\n id: String,\n open: Boolean,\n} as const)\n\nexport type PopperTriggerProps = typeof popperTriggerProps\n\nexport type PopperTriggerInstance = InstanceType & unknown\n\n/** @deprecated use `popperTriggerProps` instead, and it will be deprecated in the next major version */\nexport const usePopperTriggerProps = popperTriggerProps\n\n/** @deprecated use `PopperTriggerInstance` instead, and it will be deprecated in the next major version */\nexport type ElPopperArrowTrigger = PopperTriggerInstance\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/environment-v8-version');\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\nvar $String = globalThis.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol('symbol detection');\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","import { camelize, hyphenate, capitalize as toCapitalize } from '@vue/shared'\n\nexport { camelize, hyphenate }\nexport const kebabCase = hyphenate\n\n/**\n * fork from {@link https://github.com/sindresorhus/escape-string-regexp}\n */\nexport const escapeStringRegexp = (string = '') =>\n string.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&').replace(/-/g, '\\\\x2d')\n\n// NOTE: improve capitalize types. Restore previous code after the [PR](https://github.com/vuejs/core/pull/6212) merge\nexport const capitalize = (str: T) =>\n toCapitalize(str) as Capitalize\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'moon';\nvar width = 512;\nvar height = 512;\nvar aliases = [127769,9214];\nvar unicode = 'f186';\nvar svgPathData = 'M256 0C114.6 0 0 114.6 0 256S114.6 512 256 512c68.8 0 131.3-27.2 177.3-71.4 7.3-7 9.4-17.9 5.3-27.1s-13.7-14.9-23.8-14.1c-4.9 .4-9.8 .6-14.8 .6-101.6 0-184-82.4-184-184 0-72.1 41.5-134.6 102.1-164.8 9.1-4.5 14.3-14.3 13.1-24.4S322.6 8.5 312.7 6.3C294.4 2.2 275.4 0 256 0z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n aliases,\n unicode,\n svgPathData\n ]};\n\nexports.faMoon = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = aliases;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;\nexports.aliases = aliases;","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'trash-can';\nvar width = 448;\nvar height = 512;\nvar aliases = [61460,\"trash-alt\"];\nvar unicode = 'f2ed';\nvar svgPathData = 'M136.7 5.9C141.1-7.2 153.3-16 167.1-16l113.9 0c13.8 0 26 8.8 30.4 21.9L320 32 416 32c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64S14.3 32 32 32l96 0 8.7-26.1zM32 144l384 0 0 304c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64l0-304zm88 64c-13.3 0-24 10.7-24 24l0 192c0 13.3 10.7 24 24 24s24-10.7 24-24l0-192c0-13.3-10.7-24-24-24zm104 0c-13.3 0-24 10.7-24 24l0 192c0 13.3 10.7 24 24 24s24-10.7 24-24l0-192c0-13.3-10.7-24-24-24zm104 0c-13.3 0-24 10.7-24 24l0 192c0 13.3 10.7 24 24 24s24-10.7 24-24l0-192c0-13.3-10.7-24-24-24z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n aliases,\n unicode,\n svgPathData\n ]};\n\nexports.faTrashCan = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = aliases;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;\nexports.aliases = aliases;","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;\n","export interface CacheOptions {\r\n // initial value of _value.\r\n _initialValue: Value;\r\n // Custom comparison function if shallow compare isn't enough. Returns true if nothing changed.\r\n _equal?: EqualCachePropFunction;\r\n // If true always updates _value and _previous, otherwise they update only when they changed.\r\n _alwaysUpdateValues?: boolean;\r\n}\r\n\r\nexport type CacheValues = [value: T, changed: boolean, previous?: T];\r\n\r\nexport type EqualCachePropFunction = (currentVal: Value, newVal: Value) => boolean;\r\n\r\nexport type CacheUpdater = (current: Value, previous?: Value) => Value;\r\n\r\nexport type UpdateCacheContextual = (newValue: Value, force?: boolean) => CacheValues;\r\n\r\nexport type UpdateCache = (force?: boolean) => CacheValues;\r\n\r\nexport type GetCurrentCache = (force?: boolean) => CacheValues;\r\n\r\nexport type Cache = [UpdateCache, GetCurrentCache];\r\n\r\nexport type CacheContextual = [UpdateCacheContextual, GetCurrentCache];\r\n\r\ntype CreateCache = {\r\n (options: CacheOptions): CacheContextual;\r\n (options: CacheOptions, update: CacheUpdater): Cache;\r\n (\r\n options: CacheOptions,\r\n update?: CacheUpdater\r\n ): CacheContextual | Cache;\r\n};\r\n\r\nexport const createCache: CreateCache = (\r\n options: CacheOptions,\r\n update?: CacheUpdater\r\n): CacheContextual | Cache => {\r\n const { _initialValue, _equal, _alwaysUpdateValues } = options;\r\n let _value: Value = _initialValue;\r\n let _previous: Value | undefined;\r\n\r\n const cacheUpdateContextual: UpdateCacheContextual = (newValue, force?) => {\r\n const curr = _value;\r\n\r\n const newVal = newValue;\r\n const changed = force || (_equal ? !_equal(curr, newVal) : curr !== newVal);\r\n\r\n if (changed || _alwaysUpdateValues) {\r\n _value = newVal;\r\n _previous = curr;\r\n }\r\n\r\n return [_value, changed, _previous];\r\n };\r\n const cacheUpdateIsolated: UpdateCache = (force?) =>\r\n cacheUpdateContextual(update!(_value, _previous), force);\r\n\r\n const getCurrentCache: GetCurrentCache = (force?: boolean) => [\r\n _value,\r\n !!force, // changed\r\n _previous,\r\n ];\r\n\r\n return [update ? cacheUpdateIsolated : cacheUpdateContextual, getCurrentCache] as\r\n | CacheContextual\r\n | Cache;\r\n};\r\n","export const isBrowser =\r\n // deno has the global `window` defined\r\n typeof window !== 'undefined' &&\r\n // make sure HTML element is available\r\n typeof HTMLElement !== 'undefined' &&\r\n // make sure document is defined\r\n !!window.document;\r\n","import { isBrowser } from '../compatibility/isBrowser';\r\n\r\nexport const wnd = (isBrowser ? window : {}) as typeof window;\r\nexport const mathMax = Math.max;\r\nexport const mathMin = Math.min;\r\nexport const mathRound = Math.round;\r\nexport const mathFloor = Math.floor;\r\nexport const mathCeil = Math.ceil;\r\nexport const mathAbs = Math.abs;\r\nexport const mathSign = Math.sign;\r\nexport const cAF = wnd.cancelAnimationFrame;\r\nexport const rAF = wnd.requestAnimationFrame;\r\nexport const setT = wnd.setTimeout;\r\nexport const clearT = wnd.clearTimeout;\r\n","import { wnd } from '../utils/alias';\r\n\r\nconst getApi = (name: string) =>\r\n (typeof wnd[name as keyof typeof wnd] !== 'undefined'\r\n ? wnd[name as keyof typeof wnd]\r\n : undefined) as T;\r\n\r\nexport const MutationObserverConstructor = getApi('MutationObserver');\r\nexport const IntersectionObserverConstructor =\r\n getApi('IntersectionObserver');\r\nexport const ResizeObserverConstructor = getApi('ResizeObserver');\r\nexport const scrollT = getApi AnimationTimeline>('ScrollTimeline');\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport type { PlainObject } from '../../typings';\r\n\r\nexport const isUndefined = (obj: any): obj is undefined => obj === undefined;\r\n\r\nexport const isNull = (obj: any): obj is null => obj === null;\r\n\r\nexport const type = (obj: any): string =>\r\n isUndefined(obj) || isNull(obj)\r\n ? `${obj}`\r\n : Object.prototype.toString\r\n .call(obj)\r\n .replace(/^\\[object (.+)\\]$/, '$1')\r\n .toLowerCase();\r\n\r\nexport const isNumber = (obj: any): obj is number => typeof obj === 'number';\r\n\r\nexport const isString = (obj: any): obj is string => typeof obj === 'string';\r\n\r\nexport const isBoolean = (obj: any): obj is boolean => typeof obj === 'boolean';\r\n\r\nexport const isFunction = (obj: any): obj is (...args: any[]) => any => typeof obj === 'function';\r\n\r\nexport const isArray = (obj: any): obj is Array => Array.isArray(obj);\r\n\r\nexport const isObject = (obj: any): obj is object =>\r\n typeof obj === 'object' && !isArray(obj) && !isNull(obj);\r\n\r\n/**\r\n * Returns true if the given object is array like, false otherwise.\r\n * @param obj The Object\r\n */\r\nexport const isArrayLike = (obj: any): obj is ArrayLike => {\r\n const length = !!obj && obj.length;\r\n const lengthCorrectFormat = isNumber(length) && length > -1 && length % 1 == 0;\r\n\r\n return isArray(obj) || (!isFunction(obj) && lengthCorrectFormat)\r\n ? length > 0 && isObject(obj)\r\n ? length - 1 in obj\r\n : true\r\n : false;\r\n};\r\n\r\n/**\r\n * Returns true if the given object is a \"plain\" (e.g. { key: value }) object, false otherwise.\r\n * @param obj The Object.\r\n */\r\nexport const isPlainObject = (obj: any): obj is PlainObject =>\r\n !!obj && obj.constructor === Object;\r\n\r\n/**\r\n * Checks whether the given object is a HTMLElement.\r\n * @param obj The object which shall be checked.\r\n */\r\nexport const isHTMLElement = (obj: any): obj is HTMLElement => obj instanceof HTMLElement;\r\n\r\n/**\r\n * Checks whether the given object is a Element.\r\n * @param obj The object which shall be checked.\r\n */\r\nexport const isElement = (obj: any): obj is Element => obj instanceof Element;\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport type { PlainObject } from '../../typings';\r\nimport { isArray, isArrayLike, isString } from './types';\r\n\r\ntype RunEachItem = ((...args: any) => any | any[]) | false | null | undefined;\r\n\r\nexport function each | ReadonlyArray>(\r\n array: T,\r\n callback: (\r\n value: T extends Array | ReadonlyArray ? V : never,\r\n index: number,\r\n source: T\r\n ) => boolean | unknown\r\n): T;\r\nexport function each>(\r\n arrayLikeObject: T,\r\n callback: (\r\n value: T extends ArrayLike ? V : never,\r\n index: number,\r\n source: T\r\n ) => boolean | unknown\r\n): T;\r\nexport function each(\r\n obj: T,\r\n callback: (value: any, key: string, source: T) => boolean | unknown\r\n): T;\r\nexport function each(\r\n source: Array | ArrayLike | ReadonlyArray | PlainObject,\r\n callback: (value: any, indexOrKey: any, source: any) => boolean | unknown\r\n): Array | ArrayLike | ReadonlyArray | Set | PlainObject {\r\n if (isArrayLike(source)) {\r\n for (let i = 0; i < source.length; i++) {\r\n if (callback(source[i], i, source) === false) {\r\n break;\r\n }\r\n }\r\n } else if (source) {\r\n // cant use support func keys here due to circular dep\r\n each(Object.keys(source), (key) => callback(source[key], key, source));\r\n }\r\n return source;\r\n}\r\n\r\n/**\r\n * Returns true when the passed item is in the passed array and false otherwise.\r\n * @param arr The array.\r\n * @param item The item.\r\n * @returns Whether the item is in the array.\r\n */\r\nexport const inArray = (arr: T[] | readonly T[], item: T): boolean =>\r\n arr.indexOf(item) >= 0;\r\n\r\n/**\r\n * Concats two arrays and returns an new array without modifying any of the passed arrays.\r\n * @param a Array A.\r\n * @param b Array B.\r\n * @returns A new array which has the entries of both arrays.\r\n */\r\nexport const concat = (a: T[] | ReadonlyArray, b: T[] | ReadonlyArray): T[] => a.concat(b);\r\n\r\n/**\r\n * Pushesh all given items into the given array and returns it.\r\n * @param array The array the items shall be pushed into.\r\n * @param items The items which shall be pushed into the array.\r\n */\r\nexport const push = (array: T[], items: T | ArrayLike, arrayIsSingleItem?: boolean): T[] => {\r\n if (!arrayIsSingleItem && !isString(items) && isArrayLike(items)) {\r\n Array.prototype.push.apply(array, items as T[]);\r\n } else {\r\n array.push(items as T);\r\n }\r\n return array;\r\n};\r\n\r\n/**\r\n * Creates a shallow-copied Array instance from an array-like or iterable object.\r\n * @param arr The object from which the array instance shall be created.\r\n */\r\nexport const from = (arr?: ArrayLike | Set) => Array.from(arr || []);\r\n\r\n/**\r\n * Creates an array if the passed value is not an array, or returns the value if it is.\r\n * If the passed value is an array like structure and not a string it will be converted into an array.\r\n * @param value The value.\r\n * @returns An array which represents the passed value(s).\r\n */\r\nexport const createOrKeepArray = (value: T | T[] | ArrayLike): T[] => {\r\n if (isArray(value)) {\r\n return value;\r\n }\r\n return !isString(value) && isArrayLike(value) ? from(value) : [value];\r\n};\r\n\r\n/**\r\n * Check whether the passed array is empty.\r\n * @param array The array which shall be checked.\r\n */\r\nexport const isEmptyArray = (array: any[] | null | undefined): boolean => !!array && !array.length;\r\n\r\n/**\r\n * Deduplicates all items of the array.\r\n * @param array The array to be deduplicated.\r\n * @returns The deduplicated array.\r\n */\r\nexport const deduplicateArray = (array: T): T => from(new Set(array)) as T;\r\n\r\n/**\r\n * Calls all functions in the passed array/set of functions.\r\n * @param arr The array filled with function which shall be called.\r\n * @param args The args with which each function is called.\r\n * @param keep True when the Set / array should not be cleared afterwards, false otherwise.\r\n */\r\nexport const runEachAndClear = (arr: RunEachItem[], args?: any[], keep?: boolean): void => {\r\n // eslint-disable-next-line prefer-spread\r\n const runFn = (fn: RunEachItem) => (fn ? fn.apply(undefined, args || []) : true); // return true when fn is falsy to not break the loop\r\n each(arr, runFn);\r\n if (!keep) {\r\n (arr as any[]).length = 0;\r\n }\r\n};\r\n","export const strPaddingTop = 'paddingTop';\r\nexport const strPaddingRight = 'paddingRight';\r\nexport const strPaddingLeft = 'paddingLeft';\r\nexport const strPaddingBottom = 'paddingBottom';\r\nexport const strMarginLeft = 'marginLeft';\r\nexport const strMarginRight = 'marginRight';\r\nexport const strMarginBottom = 'marginBottom';\r\nexport const strOverflowX = 'overflowX';\r\nexport const strOverflowY = 'overflowY';\r\nexport const strWidth = 'width';\r\nexport const strHeight = 'height';\r\nexport const strVisible = 'visible';\r\nexport const strHidden = 'hidden';\r\nexport const strScroll = 'scroll';\r\n\r\nexport const capitalizeFirstLetter = (str: string | number | false | null | undefined): string => {\r\n const finalStr = String(str || '');\r\n return finalStr ? finalStr[0].toUpperCase() + finalStr.slice(1) : '';\r\n};\r\n","import type { WH } from '../dom/dimensions';\r\nimport type { XY } from '../dom/offset';\r\nimport type { TRBL } from '../dom/style';\r\nimport type { PlainObject } from '../../typings';\r\nimport { each } from './array';\r\nimport { mathRound } from './alias';\r\nimport { strHeight, strWidth } from './strings';\r\n\r\n/**\r\n * Compares two objects and returns true if all values of the passed prop names are identical, false otherwise or if one of the two object is falsy.\r\n * @param a Object a.\r\n * @param b Object b.\r\n * @param props The props which shall be compared.\r\n */\r\nexport const equal = (\r\n a: T | undefined,\r\n b: T | undefined,\r\n props: Array | ReadonlyArray,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n propMutation?: ((value: any) => any) | null | false\r\n): boolean => {\r\n if (a && b) {\r\n let result = true;\r\n each(props, (prop) => {\r\n const compareA = propMutation ? propMutation(a[prop]) : a[prop];\r\n const compareB = propMutation ? propMutation(b[prop]) : b[prop];\r\n if (compareA !== compareB) {\r\n result = false;\r\n }\r\n });\r\n return result;\r\n }\r\n return false;\r\n};\r\n\r\n/**\r\n * Compares object a with object b and returns true if both have the same property values, false otherwise.\r\n * Also returns false if one of the objects is undefined or null.\r\n * @param a Object a.\r\n * @param b Object b.\r\n */\r\nexport const equalWH = (a?: Partial>, b?: Partial>) =>\r\n equal>>(a, b, ['w', 'h']);\r\n\r\n/**\r\n * Compares object a with object b and returns true if both have the same property values, false otherwise.\r\n * Also returns false if one of the objects is undefined or null.\r\n * @param a Object a.\r\n * @param b Object b.\r\n */\r\nexport const equalXY = (a?: Partial>, b?: Partial>) =>\r\n equal>>(a, b, ['x', 'y']);\r\n\r\n/**\r\n * Compares object a with object b and returns true if both have the same property values, false otherwise.\r\n * Also returns false if one of the objects is undefined or null.\r\n * @param a Object a.\r\n * @param b Object b.\r\n */\r\nexport const equalTRBL = (a?: TRBL, b?: TRBL) => equal(a, b, ['t', 'r', 'b', 'l']);\r\n\r\n/**\r\n * Compares two DOM Rects for their equality of their width and height properties\r\n * Also returns false if one of the DOM Rects is undefined or null.\r\n * @param a DOM Rect a.\r\n * @param b DOM Rect b.\r\n * @param round Whether the values should be rounded.\r\n */\r\nexport const equalBCRWH = (a?: DOMRect, b?: DOMRect, round?: boolean) =>\r\n equal(a, b, [strWidth, strHeight], round && ((value) => mathRound(value)));\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { isNumber, isFunction } from './types';\r\nimport { from } from './array';\r\nimport { rAF, cAF, setT, clearT } from './alias';\r\n\r\ntype DebouncerFn = (task: () => void) => () => void;\r\n\r\nexport type DebounceTiming = { _debouncer: DebouncerFn } | number | false | null | undefined;\r\nexport type DebounceLeading = boolean | null | undefined;\r\n\r\nexport interface DebounceOptions any> {\r\n /**\r\n * The timing for debouncing. If false, null or undefined, no debounce is applied.\r\n */\r\n _debounceTiming?: DebounceTiming | (() => DebounceTiming);\r\n /**\r\n * The timing which determines when the debounced will be called even when the debounce timing did not call it yet.\r\n */\r\n _maxDebounceTiming?: DebounceTiming | (() => DebounceTiming);\r\n /**\r\n * Defines the calling on the leading edge of the timeout.\r\n */\r\n _leading?: DebounceLeading | (() => DebounceLeading);\r\n /**\r\n * Function which merges parameters for each canceled debounce.\r\n * If parameters can't be merged the function will return null, otherwise it returns the merged parameters.\r\n */\r\n _mergeParams?: (\r\n prev: Parameters,\r\n curr: Parameters\r\n ) => Parameters | false | null | undefined;\r\n}\r\n\r\nexport interface Debounced any> {\r\n (...args: Parameters): ReturnType;\r\n _flush(): void;\r\n}\r\n\r\nexport const bind =
(\r\n fn: (...args: [...A, ...B]) => R,\r\n ...args: A\r\n): ((...args: B) => R) => fn.bind(0, ...args);\r\n\r\n/**\r\n * Creates a timeout and cleartimeout tuple. The timeout function always clears the previously created timeout before it runs.\r\n * @param timeout The timeout in ms. If no timeout (or 0) is passed requestAnimationFrame is used instead of setTimeout.\r\n * @returns A tuple with the timeout function as the first value and the clearTimeout function as the second value.\r\n */\r\nexport const selfClearTimeout = (timeout?: number | (() => number)) => {\r\n let id: number;\r\n const setTFn = timeout ? setT : rAF!;\r\n const clearTFn = timeout ? clearT : cAF!;\r\n return [\r\n (callback: () => any) => {\r\n clearTFn(id);\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore\r\n id = setTFn(() => callback(), isFunction(timeout) ? timeout() : timeout);\r\n },\r\n () => clearTFn(id),\r\n ] as [timeout: (callback: () => any) => void, clear: () => void];\r\n};\r\n\r\nconst getDebouncer = (\r\n debounceTiming: DebounceTiming | (() => DebounceTiming)\r\n): DebouncerFn | false | null | undefined | void => {\r\n const debounceTimingResult = isFunction(debounceTiming) ? debounceTiming() : debounceTiming;\r\n if (isNumber(debounceTimingResult)) {\r\n const schedule = debounceTimingResult ? setT! : rAF!;\r\n const clear = debounceTimingResult ? clearT : cAF;\r\n return (task) => {\r\n const timeoutId = schedule!(\r\n () => task(),\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore\r\n debounceTimingResult\r\n );\r\n return () => {\r\n clear!(timeoutId);\r\n };\r\n };\r\n }\r\n\r\n return debounceTimingResult && debounceTimingResult._debouncer;\r\n};\r\n\r\n/**\r\n * Debounces the given function either with a timeout or a animation frame.\r\n * @param functionToDebounce The function which shall be debounced.\r\n * @param options Options for debouncing.\r\n */\r\nexport const debounce = any>(\r\n functionToDebounce: FunctionToDebounce,\r\n options?: DebounceOptions\r\n): Debounced => {\r\n const {\r\n _debounceTiming: _timeout,\r\n _maxDebounceTiming: _maxDelay,\r\n _leading,\r\n _mergeParams,\r\n } = options || {};\r\n let cancelMaxTimeoutDebouncer: (() => void) | undefined;\r\n let cancelTimeoutDebounder: (() => void) | undefined;\r\n let prevArguments: Parameters | null | undefined;\r\n let leadingInvoked: boolean | undefined;\r\n\r\n const invokeFunctionToDebounce = function (args: Parameters) {\r\n if (cancelTimeoutDebounder) {\r\n cancelTimeoutDebounder();\r\n }\r\n if (cancelMaxTimeoutDebouncer) {\r\n cancelMaxTimeoutDebouncer();\r\n }\r\n\r\n leadingInvoked = cancelTimeoutDebounder = cancelMaxTimeoutDebouncer = prevArguments = undefined;\r\n // eslint-disable-next-line\r\n // @ts-ignore\r\n functionToDebounce.apply(this, args);\r\n };\r\n\r\n const mergeParms = (\r\n curr: Parameters\r\n ): Parameters | false | null | undefined =>\r\n _mergeParams && prevArguments ? _mergeParams(prevArguments, curr) : curr;\r\n\r\n const flush = () => {\r\n /* istanbul ignore next */\r\n if (cancelTimeoutDebounder && prevArguments) {\r\n invokeFunctionToDebounce(mergeParms(prevArguments) || prevArguments);\r\n }\r\n };\r\n\r\n const debouncedFn = function () {\r\n // eslint-disable-next-line prefer-rest-params\r\n const args: Parameters = from(arguments) as Parameters;\r\n const timeoutDebouncer = getDebouncer(_timeout);\r\n\r\n if (timeoutDebouncer) {\r\n const leading = typeof _leading === 'function' ? _leading() : _leading;\r\n const maxDelayDebouncer = getDebouncer(_maxDelay);\r\n const mergeParamsResult = mergeParms(args);\r\n const invokedArgs = mergeParamsResult || args;\r\n const boundInvoke = invokeFunctionToDebounce.bind(0, invokedArgs);\r\n\r\n if (cancelTimeoutDebounder) {\r\n cancelTimeoutDebounder();\r\n }\r\n\r\n if (leading && !leadingInvoked) {\r\n boundInvoke();\r\n leadingInvoked = true;\r\n cancelTimeoutDebounder = timeoutDebouncer(() => (leadingInvoked = undefined));\r\n } else {\r\n cancelTimeoutDebounder = timeoutDebouncer(boundInvoke);\r\n\r\n if (maxDelayDebouncer && !cancelMaxTimeoutDebouncer) {\r\n cancelMaxTimeoutDebouncer = maxDelayDebouncer(flush);\r\n }\r\n }\r\n\r\n prevArguments = invokedArgs;\r\n } else {\r\n invokeFunctionToDebounce(args);\r\n }\r\n };\r\n debouncedFn._flush = flush;\r\n\r\n return debouncedFn as Debounced;\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport type { PlainObject } from '../../typings';\r\nimport { isArray, isFunction, isPlainObject, isNull } from './types';\r\nimport { each } from './array';\r\n\r\n/**\r\n * Determines whether the passed object has a property with the passed name.\r\n * @param obj The object.\r\n * @param prop The name of the property.\r\n */\r\nexport const hasOwnProperty = (obj: any, prop: string | number | symbol): boolean =>\r\n Object.prototype.hasOwnProperty.call(obj, prop);\r\n\r\n/**\r\n * Returns the names of the enumerable string properties and methods of an object.\r\n * @param obj The object of which the properties shall be returned.\r\n */\r\nexport const keys = (obj: any): Array => (obj ? Object.keys(obj) : []);\r\n\r\ntype AssignDeep = {\r\n (target: T, object1: U): T & U;\r\n (target: T, object1: U, object2: V): T & U & V;\r\n (target: T, object1: U, object2: V, object3: W): T & U & V & W;\r\n (target: T, object1: U, object2: V, object3: W, object4: X): T & U & V & W & X;\r\n (\r\n target: T,\r\n object1: U,\r\n object2: V,\r\n object3: W,\r\n object4: X,\r\n object5: Y\r\n ): T & U & V & W & X & Y;\r\n (\r\n target: T,\r\n object1?: U,\r\n object2?: V,\r\n object3?: W,\r\n object4?: X,\r\n object5?: Y,\r\n object6?: Z\r\n ): T & U & V & W & X & Y & Z;\r\n};\r\n\r\n// https://github.com/jquery/jquery/blob/master/src/core.js#L116\r\nexport const assignDeep: AssignDeep = (\r\n target: T,\r\n object1?: U,\r\n object2?: V,\r\n object3?: W,\r\n object4?: X,\r\n object5?: Y,\r\n object6?: Z\r\n): T & U & V & W & X & Y & Z => {\r\n const sources: Array = [object1, object2, object3, object4, object5, object6];\r\n\r\n // Handle case when target is a string or something (possible in deep copy)\r\n if ((typeof target !== 'object' || isNull(target)) && !isFunction(target)) {\r\n target = {} as T;\r\n }\r\n\r\n each(sources, (source) => {\r\n // Extend the base object\r\n each(source, (_, key) => {\r\n const copy: any = source[key];\r\n\r\n // Prevent Object.prototype pollution\r\n // Prevent never-ending loop\r\n if (target === copy) {\r\n return true;\r\n }\r\n\r\n const copyIsArray = isArray(copy);\r\n\r\n // Recurse if we're merging plain objects or arrays\r\n if (copy && isPlainObject(copy)) {\r\n const src = target[key as keyof T];\r\n let clone: any = src;\r\n\r\n // Ensure proper type for the source value\r\n if (copyIsArray && !isArray(src)) {\r\n clone = [];\r\n } else if (!copyIsArray && !isPlainObject(src)) {\r\n clone = {};\r\n }\r\n\r\n // Never move original objects, clone them\r\n target[key as keyof T] = assignDeep(clone, copy) as any;\r\n } else {\r\n target[key as keyof T] = copyIsArray ? copy.slice() : copy;\r\n }\r\n });\r\n });\r\n\r\n // Return the modified object\r\n return target as any;\r\n};\r\n\r\nexport const removeUndefinedProperties = (target: T, deep?: boolean): T =>\r\n each(assignDeep({}, target), (value, key, copy) => {\r\n if (value === undefined) {\r\n delete copy[key];\r\n } else if (deep && value && isPlainObject(value)) {\r\n copy[key as keyof typeof copy] = removeUndefinedProperties(value, deep) as any;\r\n }\r\n });\r\n\r\n/**\r\n * Returns true if the given object is empty, false otherwise.\r\n * @param obj The Object.\r\n */\r\nexport const isEmptyObject = (obj: any): boolean => !keys(obj).length;\r\n","export const noop = () => {};\r\n","import { mathMax, mathMin } from './alias';\r\n\r\n/**\r\n * Caps the passed number between the `min` and `max` bounds.\r\n * @param min The min bound.\r\n * @param max The max bound.\r\n * @param number The number to be capped.\r\n * @returns The capped number between min and max.\r\n */\r\nexport const capNumber = (min: number, max: number, number: number) =>\r\n mathMax(min, mathMin(max, number));\r\n","import type { HTMLElementTarget } from './types';\r\nimport { bind, deduplicateArray, each, from, isArray } from '../utils';\r\n\r\nexport type AttributeElementTarget = HTMLElementTarget | Element;\r\n\r\nexport type DomTokens = string | string[] | false | null | undefined | void;\r\n\r\nexport const getDomTokensArray = (tokens: DomTokens) =>\r\n deduplicateArray((isArray(tokens) ? tokens : (tokens || '').split(' ')).filter((token) => token));\r\n\r\n/**\r\n * Gets a attribute with the given attribute of the given element.\r\n * @param elm The element of which the attribute shall be get.\r\n * @param attrName The attribute name which shall be get.\r\n * @returns The attribute value or `null` when the attribute is not set or `false` if the element is undefined.\r\n */\r\nexport const getAttr = (elm: AttributeElementTarget, attrName: string) =>\r\n elm && elm.getAttribute(attrName);\r\n\r\n/**\r\n * Returns whether the given attribute exists on the given element.\r\n * @param elm The element.\r\n * @param attrName The attribute.\r\n * @returns A Truthy value indicates a present attrubte.\r\n */\r\nexport const hasAttr = (elm: AttributeElementTarget, attrName: string) =>\r\n elm && elm.hasAttribute(attrName);\r\n\r\n/**\r\n * Sets the given attributes to the given element.\r\n * @param elm The element of which the attributes shall be removed.\r\n * @param attrName The attribute names separated by a space.\r\n */\r\nexport const setAttrs = (\r\n elm: AttributeElementTarget,\r\n attrNames: string | string[],\r\n value: string | number | false | null | undefined\r\n) => {\r\n each(getDomTokensArray(attrNames), (attrName) => {\r\n if (elm) {\r\n elm.setAttribute(attrName, String(value || ''));\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * Removes the given attributes from the given element.\r\n * @param elm The element of which the attribute shall be removed.\r\n * @param attrName The attribute names separated by a space.\r\n */\r\nexport const removeAttrs = (elm: AttributeElementTarget, attrNames: string | string[]): void => {\r\n each(getDomTokensArray(attrNames), (attrName) => elm && elm.removeAttribute(attrName));\r\n};\r\n\r\nexport const domTokenListAttr = (elm: AttributeElementTarget, attrName: string) => {\r\n const initialArr = getDomTokensArray(getAttr(elm, attrName));\r\n const setElmAttr = bind(setAttrs, elm, attrName);\r\n const domTokenListOperation = (operationTokens: DomTokens, operation: 'add' | 'delete') => {\r\n const initialArrSet = new Set(initialArr);\r\n each(getDomTokensArray(operationTokens), (token) => {\r\n initialArrSet[operation](token);\r\n });\r\n return from(initialArrSet).join(' ');\r\n };\r\n\r\n return {\r\n _remove: (removeTokens: DomTokens) => setElmAttr(domTokenListOperation(removeTokens, 'delete')),\r\n _add: (addTokens: DomTokens) => setElmAttr(domTokenListOperation(addTokens, 'add')),\r\n _has: (hasTokens: DomTokens) => {\r\n const tokenSet = getDomTokensArray(hasTokens);\r\n return tokenSet.reduce(\r\n (boolean, token) => boolean && initialArr.includes(token),\r\n tokenSet.length > 0\r\n );\r\n },\r\n };\r\n};\r\n\r\n/**\r\n * Treats the given attribute like the \"class\" attribute and removes the given value from it.\r\n * @param elm The element.\r\n * @param attrName The attributeName to which the value shall be removed.\r\n * @param value The value which shall be removed.\r\n */\r\nexport const removeAttrClass = (\r\n elm: AttributeElementTarget,\r\n attrName: string,\r\n value: DomTokens\r\n): (() => void) => {\r\n domTokenListAttr(elm, attrName)._remove(value);\r\n return bind(addAttrClass, elm, attrName, value);\r\n};\r\n\r\n/**\r\n * Treats the given attribute like the \"class\" attribute and adds value to it.\r\n * @param elm The element.\r\n * @param attrName The attributeName to which the value shall be added.\r\n * @param value The value which shall be added.\r\n */\r\nexport const addAttrClass = (\r\n elm: AttributeElementTarget,\r\n attrName: string,\r\n value: DomTokens\r\n): (() => void) => {\r\n domTokenListAttr(elm, attrName)._add(value);\r\n return bind(removeAttrClass, elm, attrName, value);\r\n};\r\n\r\nexport const addRemoveAttrClass = (\r\n elm: AttributeElementTarget,\r\n attrName: string,\r\n value: DomTokens,\r\n add?: boolean\r\n) => (add ? addAttrClass : removeAttrClass)(elm, attrName, value);\r\n\r\n/**\r\n * Treats the given attribute like the \"class\" attribute and checks if the given value is in it.\r\n * @param elm The element.\r\n * @param attrName The attributeName from which the content shall be checked.\r\n * @param value The value.\r\n * @returns True if the given attribute has the value in it, false otherwise.\r\n */\r\nexport const hasAttrClass = (\r\n elm: AttributeElementTarget,\r\n attrName: string,\r\n value: DomTokens\r\n): boolean => domTokenListAttr(elm, attrName)._has(value);\r\n","import type { AttributeElementTarget, DomTokens } from './attribute';\r\nimport { each, from } from '../utils/array';\r\nimport { bind } from '../utils/function';\r\nimport { domTokenListAttr } from './attribute';\r\n\r\nconst createDomTokenListClass = (elm: AttributeElementTarget) => domTokenListAttr(elm, 'class');\r\n\r\n/**\r\n * Check whether the given element has the given class name(s).\r\n * @param elm The element.\r\n * @param className The class name(s).\r\n */\r\nexport const hasClass = (elm: AttributeElementTarget, className: DomTokens): boolean =>\r\n createDomTokenListClass(elm)._has(className);\r\n\r\n/**\r\n * Removes the given class name(s) from the given element.\r\n * @param elm The element.\r\n * @param className The class name(s) which shall be removed. (separated by spaces)\r\n */\r\nexport const removeClass = (elm: AttributeElementTarget, className: DomTokens): void => {\r\n createDomTokenListClass(elm)._remove(className);\r\n};\r\n\r\n/**\r\n * Adds the given class name(s) to the given element.\r\n * @param elm The element.\r\n * @param className The class name(s) which shall be added. (separated by spaces)\r\n * @returns A function which removes the added class name(s).\r\n */\r\nexport const addClass = (elm: AttributeElementTarget, className: DomTokens): (() => void) => {\r\n createDomTokenListClass(elm)._add(className);\r\n return bind(removeClass, elm, className);\r\n};\r\n\r\n/**\r\n * Takes two className strings, compares them and returns the difference as array.\r\n * @param classNameA ClassName A.\r\n * @param classNameB ClassName B.\r\n */\r\nexport const diffClass = (\r\n classNameA: string | false | null | undefined,\r\n classNameB: string | false | null | undefined\r\n) => {\r\n const set = new Set(classNameA ? classNameA.split(' ') : []);\r\n\r\n each(classNameB ? classNameB.split(' ') : [], (className) => {\r\n set[set.has(className) ? 'delete' : 'add'](className);\r\n });\r\n\r\n return from(set);\r\n};\r\n","import type { NodeElementTarget } from './types';\r\nimport { isElement } from '../utils/types';\r\nimport { push, from } from '../utils/array';\r\n\r\n/**\r\n * Find all elements with the passed selector, outgoing (and including) the passed element or the document if no element was provided.\r\n * @param selector The selector which has to be searched by.\r\n * @param elm The element from which the search shall be outgoing.\r\n */\r\nexport const find = (selector: string, elm?: NodeElementTarget): Element[] => {\r\n const rootElm = elm ? isElement(elm) && elm : document;\r\n return rootElm ? from(rootElm.querySelectorAll(selector)) : [];\r\n};\r\n\r\n/**\r\n * Find the first element with the passed selector, outgoing (and including) the passed element or the document if no element was provided.\r\n * @param selector The selector which has to be searched by.\r\n * @param elm The element from which the search shall be outgoing.\r\n */\r\nexport const findFirst = (selector: string, elm?: NodeElementTarget): NodeElementTarget => {\r\n const rootElm = elm ? isElement(elm) && elm : document;\r\n return rootElm && rootElm.querySelector(selector);\r\n};\r\n\r\n/**\r\n * Determines whether the passed element is matching with the passed selector.\r\n * @param elm The element which has to be compared with the passed selector.\r\n * @param selector The selector which has to be compared with the passed element. Additional selectors: ':visible' and ':hidden'.\r\n */\r\nexport const is = (elm: NodeElementTarget, selector: string): boolean =>\r\n isElement(elm) && elm.matches(selector);\r\n\r\nexport const isBodyElement = (elm: NodeElementTarget) => is(elm, 'body'); // don't do targetElement === ownerDocument.body in case initialization happens in memory\r\n\r\n/**\r\n * Returns the children (no text-nodes or comments) of the passed element which are matching the passed selector. An empty array is returned if the passed element is null.\r\n * @param elm The element of which the children shall be returned.\r\n * @param selector The selector which must match with the children elements.\r\n */\r\nexport const children = (elm: NodeElementTarget, selector?: string): ReadonlyArray => {\r\n const childs: Array = [];\r\n\r\n return isElement(elm)\r\n ? push(\r\n childs,\r\n from(elm.children).filter((child) => (selector ? is(child, selector) : child))\r\n )\r\n : childs;\r\n};\r\n\r\n/**\r\n * Returns the childNodes (incl. text-nodes or comments etc.) of the passed element. An empty array is returned if the passed element is null.\r\n * @param elm The element of which the childNodes shall be returned.\r\n */\r\nexport const contents = (elm: NodeElementTarget): ReadonlyArray =>\r\n elm ? from(elm.childNodes) : [];\r\n\r\n/**\r\n * Returns the parent element of the passed element, or null if the passed element is null.\r\n * @param elm The element of which the parent element shall be returned.\r\n */\r\nexport const parent = (elm: NodeElementTarget): NodeElementTarget => elm && elm.parentElement;\r\n\r\n/**\r\n * Returns the closest element to the passed element which matches the given selector.\r\n * @param elm The element.\r\n * @param selector The selector.\r\n * @returns The closest element to the passed element which matches the given selector.\r\n */\r\nexport const closest = (elm: NodeElementTarget, selector: string): NodeElementTarget =>\r\n isElement(elm) && elm.closest(selector);\r\n\r\n/**\r\n * Gets the focused element of the passed or default document.\r\n * @returns The focused element of the passed document.\r\n */\r\nexport const getFocusedElement = (doc?: Document) => (doc || document).activeElement;\r\n\r\n/**\r\n * Determines whether the given element lies between two selectors in the DOM.\r\n * @param elm The element.\r\n * @param highBoundarySelector The high boundary selector.\r\n * @param deepBoundarySelector The deep boundary selector.\r\n */\r\nexport const liesBetween = (\r\n elm: NodeElementTarget,\r\n highBoundarySelector: string,\r\n deepBoundarySelector: string\r\n): boolean => {\r\n const closestHighBoundaryElm = closest(elm, highBoundarySelector);\r\n const closestDeepBoundaryElm = elm && findFirst(deepBoundarySelector, closestHighBoundaryElm);\r\n const deepBoundaryIsValid =\r\n closest(closestDeepBoundaryElm, highBoundarySelector) === closestHighBoundaryElm;\r\n\r\n return closestHighBoundaryElm && closestDeepBoundaryElm\r\n ? closestHighBoundaryElm === elm ||\r\n closestDeepBoundaryElm === elm ||\r\n (deepBoundaryIsValid &&\r\n closest(closest(elm, deepBoundarySelector), highBoundarySelector) !==\r\n closestHighBoundaryElm)\r\n : false;\r\n};\r\n","import type { NodeElementTarget, NodeElementTargetCollection } from './types';\r\nimport { createOrKeepArray, each } from '../utils/array';\r\nimport { parent } from './traversal';\r\nimport { bind } from '../utils';\r\n\r\n/**\r\n * Removes the given Nodes from their parent.\r\n * @param nodes The Nodes which shall be removed.\r\n */\r\nexport const removeElements = (nodes: NodeElementTargetCollection): void => {\r\n each(createOrKeepArray(nodes), (node) => {\r\n const parentElm = parent(node);\r\n if (node && parentElm) {\r\n parentElm.removeChild(node);\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * Appends the given children at the end of the given Node.\r\n * @param node The Node to which the children shall be appended.\r\n * @param children The Nodes which shall be appended.\r\n * @returns A function which removes the inserted nodes.\r\n */\r\nexport const appendChildren = (node: NodeElementTarget, children: NodeElementTargetCollection) =>\r\n bind(\r\n removeElements,\r\n node &&\r\n children &&\r\n each(createOrKeepArray(children), (child) => {\r\n if (child) {\r\n node.appendChild(child);\r\n }\r\n })\r\n );\r\n","// at the time of implementation TypeScript doesn't offer any TrustedTypes typescript definitions\r\n// https://github.com/microsoft/TypeScript/issues/30024\r\nlet trustedTypePolicy: unknown | undefined;\r\n\r\nexport const getTrustedTypePolicy = () => trustedTypePolicy;\r\nexport const setTrustedTypePolicy = (newTrustedTypePolicy: unknown | undefined) => {\r\n trustedTypePolicy = newTrustedTypePolicy;\r\n};\r\n","import { each } from '../utils/array';\r\nimport { setAttrs } from './attribute';\r\nimport { contents } from './traversal';\r\nimport { removeElements } from './manipulation';\r\nimport { getTrustedTypePolicy } from '../../trustedTypePolicy';\r\n\r\n/**\r\n * Creates a div DOM node.\r\n */\r\nexport const createDiv = (classNames?: string): HTMLDivElement => {\r\n const div = document.createElement('div');\r\n setAttrs(div, 'class', classNames);\r\n return div;\r\n};\r\n\r\n/**\r\n * Creates DOM nodes modeled after the passed html string and returns the root dom nodes as a array.\r\n * @param html The html string after which the DOM nodes shall be created.\r\n */\r\nexport const createDOM = (html: string): ReadonlyArray => {\r\n const createdDiv = createDiv();\r\n const trustedTypesPolicy = getTrustedTypePolicy();\r\n const trimmedHtml = html.trim();\r\n createdDiv.innerHTML = trustedTypesPolicy\r\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (trustedTypesPolicy as any).createHTML(trimmedHtml)\r\n : trimmedHtml;\r\n\r\n return each(contents(createdDiv), (elm) => removeElements(elm));\r\n};\r\n","import type { PlainObject, StyleObject, StyleObjectKey, StyleObjectValue } from '../../typings';\r\nimport type { XY } from './offset';\r\nimport type { HTMLElementTarget } from './types';\r\nimport { wnd } from '../utils/alias';\r\nimport { each, from } from '../utils/array';\r\nimport { isString, isNumber, isObject, isNull, isBoolean } from '../utils/types';\r\n\r\nexport interface TRBL {\r\n t: number;\r\n r: number;\r\n b: number;\r\n l: number;\r\n}\r\n\r\nconst getCSSVal = (computedStyle: CSSStyleDeclaration, prop: StyleObjectKey): string =>\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n computedStyle.getPropertyValue(prop) || computedStyle[prop as any] || '';\r\n\r\nconst validFiniteNumber = (number: number) => {\r\n const notNaN = number || 0;\r\n return isFinite(notNaN) ? notNaN : 0;\r\n};\r\n\r\nconst parseToZeroOrNumber = (value?: string): number => validFiniteNumber(parseFloat(value || ''));\r\n\r\nexport const roundCssNumber = (value: number) => Math.round(value * 10000) / 10000;\r\n\r\nexport const ratioToCssPercent = (ratio: number) =>\r\n `${roundCssNumber(validFiniteNumber(ratio) * 100)}%`;\r\n\r\nexport const numberToCssPx = (number: number) => `${roundCssNumber(validFiniteNumber(number))}px`;\r\n\r\nexport function setStyles(\r\n elm: HTMLElementTarget,\r\n styles: StyleObject | false | null | undefined\r\n): void {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\r\n elm &&\r\n styles &&\r\n each(styles, (rawValue: StyleObjectValue, name) => {\r\n try {\r\n const elmStyle = elm.style;\r\n const value =\r\n isNull(rawValue) || isBoolean(rawValue)\r\n ? ''\r\n : isNumber(rawValue)\r\n ? numberToCssPx(rawValue)\r\n : rawValue;\r\n\r\n if (name.indexOf('--') === 0) {\r\n elmStyle.setProperty(name, value);\r\n } else {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n elmStyle[name as any] = value;\r\n }\r\n // eslint-disable-next-line no-empty\r\n } catch {}\r\n });\r\n}\r\n\r\nexport function getStyles(\r\n elm: HTMLElementTarget,\r\n styles: Array | ReadonlyArray,\r\n pseudoElm?: string | null | undefined\r\n): Partial>;\r\nexport function getStyles(\r\n elm: HTMLElementTarget,\r\n styles: StyleObjectKey,\r\n pseudoElm?: string | null | undefined\r\n): string;\r\nexport function getStyles(\r\n elm: HTMLElementTarget,\r\n styles: Array | ReadonlyArray | StyleObjectKey,\r\n pseudoElm?: string | null | undefined\r\n): Partial> | string {\r\n const getSingleStyle = isString(styles);\r\n let getStylesResult: string | PlainObject = getSingleStyle ? '' : {};\r\n\r\n if (elm) {\r\n const computedStyle = wnd.getComputedStyle(elm, pseudoElm) || elm.style;\r\n getStylesResult = getSingleStyle\r\n ? getCSSVal(computedStyle, styles)\r\n : from(styles).reduce((result, key) => {\r\n result[key] = getCSSVal(computedStyle, key);\r\n return result;\r\n }, getStylesResult as PlainObject);\r\n }\r\n return getStylesResult;\r\n}\r\n\r\n/**\r\n * Returns the top right bottom left values of the passed css property.\r\n * @param elm The element of which the values shall be returned.\r\n * @param propertyPrefix The css property prefix. (e.g. \"border\")\r\n * @param propertySuffix The css property suffix. (e.g. \"width\")\r\n */\r\nexport const topRightBottomLeft = (\r\n elm?: HTMLElementTarget,\r\n propertyPrefix?: string,\r\n propertySuffix?: string\r\n): TRBL => {\r\n const finalPrefix = propertyPrefix ? `${propertyPrefix}-` : '';\r\n const finalSuffix = propertySuffix ? `-${propertySuffix}` : '';\r\n const top = `${finalPrefix}top${finalSuffix}` as StyleObjectKey;\r\n const right = `${finalPrefix}right${finalSuffix}` as StyleObjectKey;\r\n const bottom = `${finalPrefix}bottom${finalSuffix}` as StyleObjectKey;\r\n const left = `${finalPrefix}left${finalSuffix}` as StyleObjectKey;\r\n const result = getStyles(elm, [top, right, bottom, left]);\r\n return {\r\n t: parseToZeroOrNumber(result[top]),\r\n r: parseToZeroOrNumber(result[right]),\r\n b: parseToZeroOrNumber(result[bottom]),\r\n l: parseToZeroOrNumber(result[left]),\r\n };\r\n};\r\n\r\nexport const getTrasformTranslateValue = (\r\n value: string | number | XY,\r\n isHorizontal?: boolean\r\n) =>\r\n `translate${\r\n isObject(value) ? `(${value.x},${value.y})` : `${isHorizontal ? 'X' : 'Y'}(${value})`\r\n }`;\r\n","import type { HTMLElementTarget } from './types';\r\nimport { getStyles } from './style';\r\nimport { mathRound, wnd } from '../utils/alias';\r\nimport { bind } from '../utils/function';\r\nimport { strHeight, strWidth } from '../utils/strings';\r\n\r\nexport interface WH {\r\n w: T;\r\n h: T;\r\n}\r\n\r\nconst elementHasDimensions = (elm: HTMLElement): boolean =>\r\n !!(elm.offsetWidth || elm.offsetHeight || elm.getClientRects().length);\r\nconst zeroObj: WH = {\r\n w: 0,\r\n h: 0,\r\n};\r\n\r\nconst getElmWidthHeightProperty = (\r\n property: E extends HTMLElement ? 'client' | 'offset' | 'scroll' : 'inner',\r\n elm: E | false | null | undefined\r\n): Readonly =>\r\n elm\r\n ? {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n w: (elm as any)[`${property}Width`],\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n h: (elm as any)[`${property}Height`],\r\n }\r\n : zeroObj;\r\n\r\n/**\r\n * Returns the window inner- width and height.\r\n */\r\nexport const getWindowSize = (customWnd?: Window): Readonly =>\r\n getElmWidthHeightProperty('inner', customWnd || wnd);\r\n\r\n/**\r\n * Returns the scroll- width and height of the passed element. If the element is null the width and height values are 0.\r\n * @param elm The element of which the scroll- width and height shall be returned.\r\n */\r\nexport const getOffsetSize = bind(getElmWidthHeightProperty, 'offset') satisfies (\r\n elm: HTMLElementTarget\r\n) => Readonly;\r\n\r\n/**\r\n * Returns the client- width and height of the passed element. If the element is null the width and height values are 0.\r\n * @param elm The element of which the client- width and height shall be returned.\r\n */\r\nexport const getClientSize = bind(getElmWidthHeightProperty, 'client') satisfies (\r\n elm: HTMLElementTarget\r\n) => Readonly;\r\n\r\n/**\r\n * Returns the client- width and height of the passed element. If the element is null the width and height values are 0.\r\n * @param elm The element of which the client- width and height shall be returned.\r\n */\r\nexport const getScrollSize = bind(getElmWidthHeightProperty, 'scroll') satisfies (\r\n elm: HTMLElementTarget\r\n) => Readonly;\r\n\r\n/**\r\n * Returns the fractional- width and height of the passed element. If the element is null the width and height values are 0.\r\n * @param elm The element of which the fractional- width and height shall be returned.\r\n */\r\nexport const getFractionalSize = (elm: HTMLElementTarget): Readonly => {\r\n const cssWidth = parseFloat(getStyles(elm, strWidth)) || 0;\r\n const cssHeight = parseFloat(getStyles(elm, strHeight)) || 0;\r\n return {\r\n w: cssWidth - mathRound(cssWidth),\r\n h: cssHeight - mathRound(cssHeight),\r\n };\r\n};\r\n\r\n/**\r\n * Returns the BoundingClientRect of the passed element.\r\n * @param elm The element of which the BoundingClientRect shall be returned.\r\n */\r\nexport const getBoundingClientRect = (elm: HTMLElement): DOMRect => elm.getBoundingClientRect();\r\n\r\n/**\r\n * Determines whether the passed element has any dimensions.\r\n * @param elm The element.\r\n */\r\nexport const hasDimensions = (elm: HTMLElementTarget): boolean =>\r\n !!elm && elementHasDimensions(elm);\r\n\r\n/**\r\n * Determines whether the passed DOM Rect has any dimensions.\r\n */\r\nexport const domRectHasDimensions = (rect?: DOMRectReadOnly | false | null) =>\r\n !!(rect && (rect[strHeight] || rect[strWidth]));\r\n\r\n/**\r\n * Determines whether current DOM Rect has appeared according the the previous dom rect..\r\n * @param currContentRect The current DOM Rect.\r\n * @param prevContentRect The previous DOM Rect.\r\n * @returns Whether the dom rect appeared.\r\n */\r\nexport const domRectAppeared = (\r\n currContentRect: DOMRectReadOnly | false | null | undefined,\r\n prevContentRect: DOMRectReadOnly | false | null | undefined\r\n) => {\r\n const rectHasDimensions = domRectHasDimensions(currContentRect);\r\n const rectHadDimensions = domRectHasDimensions(prevContentRect);\r\n return !rectHadDimensions && rectHasDimensions;\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport type { DomTokens } from './attribute';\r\nimport { each, runEachAndClear } from '../utils/array';\r\nimport { bind } from '../utils/function';\r\nimport { keys } from '../utils';\r\nimport { getDomTokensArray } from './attribute';\r\n\r\nexport interface EventListenerOptions {\r\n _capture?: boolean;\r\n _passive?: boolean;\r\n _once?: boolean;\r\n}\r\n\r\nexport type EventListenerTarget = EventTarget | false | null | undefined;\r\n\r\nexport type EventListenerMap = {\r\n [eventNames: string]: ((event: any) => any) | false | null | undefined;\r\n};\r\n\r\n/**\r\n * Removes the passed event listener for the passed event names with the passed options.\r\n * @param target The element from which the listener shall be removed.\r\n * @param eventNames The eventsnames for which the listener shall be removed.\r\n * @param listener The listener which shall be removed.\r\n * @param capture The options of the removed listener.\r\n */\r\nexport const removeEventListener = (\r\n target: EventListenerTarget,\r\n eventNames: DomTokens,\r\n listener: (event: T) => any,\r\n capture?: boolean\r\n): void => {\r\n each(getDomTokensArray(eventNames), (eventName) => {\r\n if (target) {\r\n target.removeEventListener(eventName, listener as EventListener, capture);\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * Adds the passed event listener for the passed event names with the passed options.\r\n * @param target The element to which the listener shall be added.\r\n * @param eventNames The eventsnames for which the listener shall be called.\r\n * @param listener The listener which is called on the eventnames.\r\n * @param options The options of the added listener.\r\n */\r\nexport const addEventListener = (\r\n target: EventListenerTarget,\r\n eventNames: DomTokens,\r\n listener: ((event: T) => any) | false | null | undefined,\r\n options?: EventListenerOptions\r\n): (() => void) => {\r\n const passive = (options && options._passive) ?? true;\r\n const capture = (options && options._capture) || false;\r\n const once = (options && options._once) || false;\r\n const nativeOptions: AddEventListenerOptions = {\r\n passive,\r\n capture,\r\n };\r\n\r\n return bind(\r\n runEachAndClear,\r\n getDomTokensArray(eventNames).map((eventName) => {\r\n const finalListener = (\r\n once\r\n ? (evt: T) => {\r\n removeEventListener(target, eventName, finalListener, capture);\r\n if (listener) {\r\n listener(evt);\r\n }\r\n }\r\n : listener\r\n ) as EventListener;\r\n\r\n if (target) {\r\n target.addEventListener(eventName, finalListener, nativeOptions);\r\n }\r\n\r\n return bind(removeEventListener, target, eventName, finalListener, capture);\r\n })\r\n );\r\n};\r\n\r\n/**\r\n * Adds the passed event listeners for the passed event names with the passed options.\r\n * @param target The element to which the listener shall be added.\r\n * @param eventListenerMap A map which descirbes the event names and event listeners to be added.\r\n * @param options The options of the added listeners.\r\n */\r\nexport const addEventListeners = (\r\n target: EventListenerTarget,\r\n eventListenerMap: EventListenerMap,\r\n options?: EventListenerOptions\r\n): (() => void) =>\r\n bind(\r\n runEachAndClear,\r\n keys(eventListenerMap).map((eventNames) =>\r\n addEventListener(target, eventNames, eventListenerMap[eventNames], options)\r\n )\r\n );\r\n\r\n/**\r\n * Shorthand for the stopPropagation event Method.\r\n * @param evt The event of which the stopPropagation method shall be called.\r\n */\r\nexport const stopPropagation = (evt: Event): void => evt.stopPropagation();\r\n\r\n/**\r\n * Shorthand for the preventDefault event Method.\r\n * @param evt The event of which the preventDefault method shall be called.\r\n */\r\nexport const preventDefault = (evt: Event): void => evt.preventDefault();\r\n\r\n/**\r\n * Shorthand for the stopPropagation and preventDefault event Method.\r\n * @param evt The event of which the stopPropagation and preventDefault methods shall be called.\r\n */\r\nexport const stopAndPrevent = (evt: Event): void =>\r\n (stopPropagation(evt) as undefined) || (preventDefault(evt) as undefined);\r\n","import type { XY } from './offset';\r\nimport type { WH } from './dimensions';\r\nimport { capNumber, isNumber, mathAbs, mathSign } from '../utils';\r\n\r\nexport interface ScrollCoordinates {\r\n /** The start (origin) scroll coordinates for each axis. */\r\n _start: XY;\r\n /** The end scroll coordinates for each axis. */\r\n _end: XY;\r\n}\r\n\r\n/**\r\n * Scroll the passed element to the passed position.\r\n * @param elm The element to be scrolled.\r\n * @param position The scroll position.\r\n */\r\nexport const scrollElementTo = (\r\n elm: HTMLElement,\r\n position: Partial> | number | false | null | undefined\r\n): void => {\r\n const { x, y } = isNumber(position) ? { x: position, y: position } : position || {};\r\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\r\n isNumber(x) && (elm.scrollLeft = x);\r\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\r\n isNumber(y) && (elm.scrollTop = y);\r\n};\r\n\r\n/**\r\n * Scroll the passed element to the passed position.\r\n * @param elm The element to be scrolled.\r\n * @param position The scroll position.\r\n */\r\nexport const getElementScroll = (elm: HTMLElement): Readonly => ({\r\n x: elm.scrollLeft,\r\n y: elm.scrollTop,\r\n});\r\n\r\n/**\r\n * Scroll Coordinates which are 0.\r\n */\r\nexport const getZeroScrollCoordinates = (): ScrollCoordinates => ({\r\n _start: { x: 0, y: 0 },\r\n _end: { x: 0, y: 0 },\r\n});\r\n\r\n/**\r\n * Sanatizes raw scroll coordinates.\r\n * The passed `overflowAmount` is used as the \"max\" value for each axis if the sign of the raw max value is not `0`.\r\n * Makes sure that each axis has `0` either in the start or end coordinates.\r\n * @param rawScrollCoordinates The raw scroll coordinates.\r\n * @param overflowAmount The overflow amount.\r\n * @returns\r\n */\r\nexport const sanitizeScrollCoordinates = (\r\n rawScrollCoordinates: ScrollCoordinates,\r\n overflowAmount: WH\r\n) => {\r\n const { _start, _end } = rawScrollCoordinates;\r\n const { w, h } = overflowAmount;\r\n const sanitizeAxis = (start: number, end: number, amount: number) => {\r\n let newStart = mathSign(start) * amount;\r\n let newEnd = mathSign(end) * amount;\r\n\r\n if (newStart === newEnd) {\r\n const startAbs = mathAbs(start);\r\n const endAbs = mathAbs(end);\r\n\r\n newEnd = startAbs > endAbs ? 0 : newEnd;\r\n newStart = startAbs < endAbs ? 0 : newStart;\r\n }\r\n\r\n // in doubt set start to 0\r\n newStart = newStart === newEnd ? 0 : newStart;\r\n\r\n return [newStart + 0, newEnd + 0] as const; // \"+ 0\" prevents \"-0\" to be in the result\r\n };\r\n\r\n const [startX, endX] = sanitizeAxis(_start.x, _end.x, w);\r\n const [startY, endY] = sanitizeAxis(_start.y, _end.y, h);\r\n\r\n return {\r\n _start: {\r\n x: startX,\r\n y: startY,\r\n },\r\n _end: {\r\n x: endX,\r\n y: endY,\r\n },\r\n };\r\n};\r\n\r\n/**\r\n * Returns whether the passed scroll coordinates represent the browsers default scroll direction.\r\n * For the default scroll direction the following must be true:\r\n * 1. Start value is `0`.\r\n * 2. End value <= Start value.\r\n * @param scrollCoordinates The scroll coordinates.\r\n */\r\nexport const isDefaultDirectionScrollCoordinates = ({\r\n _start,\r\n _end,\r\n}: ScrollCoordinates): XY => {\r\n const getAxis = (start: number, end: number) => start === 0 && start <= end;\r\n\r\n return {\r\n x: getAxis(_start.x, _end.x),\r\n y: getAxis(_start.y, _end.y),\r\n };\r\n};\r\n\r\n/**\r\n * Gets the current scroll percent between 0..1 for each axis.\r\n * @param scrollCoordinates The scroll coordinates.\r\n * @param currentScroll The current scroll position of the element.\r\n */\r\nexport const getScrollCoordinatesPercent = (\r\n { _start, _end }: ScrollCoordinates,\r\n currentScroll: XY\r\n) => {\r\n const getAxis = (start: number, end: number, current: number) =>\r\n capNumber(0, 1, (start - current) / (start - end) || 0);\r\n\r\n return {\r\n x: getAxis(_start.x, _end.x, currentScroll.x),\r\n y: getAxis(_start.y, _end.y, currentScroll.y),\r\n };\r\n};\r\n\r\n/**\r\n * Gets the scroll position of the given percent.\r\n * @param scrollCoordinates The scroll coordinates.\r\n * @param percent The percentage of the scroll.\r\n */\r\nexport const getScrollCoordinatesPosition = (\r\n { _start, _end }: ScrollCoordinates,\r\n percent: XY\r\n) => {\r\n const getAxis = (start: number, end: number, p: number) => start + (end - start) * p;\r\n\r\n return {\r\n x: getAxis(_start.x, _end.x, percent.x),\r\n y: getAxis(_start.y, _end.y, percent.y),\r\n };\r\n};\r\n","import type { NodeElementTarget } from './types';\r\n// import { getAttr, removeAttrs, setAttrs } from './attribute';\r\n\r\nexport const focusElement = (element: NodeElementTarget /*, forceTabIndex?: boolean*/) => {\r\n if (element && (element as HTMLElement).focus) {\r\n // const tabIndexStr = 'tabindex';\r\n // const originalTabIndex = getAttr(element as HTMLElement, tabIndexStr);\r\n // if (forceTabIndex) {\r\n // setAttrs(element as HTMLElement, tabIndexStr, '-1');\r\n // }\r\n\r\n (element as HTMLElement).focus({\r\n preventScroll: true,\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore\r\n focusVisible: false,\r\n });\r\n\r\n // if (forceTabIndex) {\r\n // if (originalTabIndex) {\r\n // setAttrs(element as HTMLElement, tabIndexStr, originalTabIndex);\r\n // } else {\r\n // removeAttrs(element as HTMLElement, tabIndexStr);\r\n // }\r\n // }\r\n }\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { isBoolean, isFunction, isString } from './utils/types';\r\nimport { keys } from './utils/object';\r\nimport { each, push, from, isEmptyArray, runEachAndClear, createOrKeepArray } from './utils/array';\r\nimport { bind } from './utils/function';\r\n\r\nexport type EventListener, N extends keyof EventArgs> = (\r\n ...args: EventArgs[N]\r\n) => void;\r\n\r\nexport type EventListeners> = {\r\n [K in keyof EventArgs]?: EventListener | EventListener[] | null;\r\n};\r\n\r\nexport type RemoveEvent> = {\r\n (name?: N, listener?: EventListener): void;\r\n (name?: N, listener?: EventListener[]): void;\r\n (\r\n name?: N,\r\n listener?: EventListener | EventListener[]\r\n ): void;\r\n};\r\n\r\nexport type AddEvent> = {\r\n (eventListeners: EventListeners, pure?: boolean): () => void;\r\n (name: N, listener: EventListener): () => void;\r\n (name: N, listener: EventListener[]): () => void;\r\n (\r\n nameOrEventListeners: N | EventListeners,\r\n listener?: EventListener | EventListener[] | boolean\r\n ): () => void;\r\n};\r\n\r\nexport type TriggerEvent> = {\r\n (name: N, args: EventArgs[N]): void;\r\n};\r\n\r\nexport type EventListenerHub> = [\r\n AddEvent,\r\n RemoveEvent,\r\n TriggerEvent,\r\n];\r\n\r\nconst manageListener = , N extends keyof EventArgs>(\r\n callback: (listener?: EventListener) => void,\r\n listener?: EventListener | EventListener[]\r\n) => {\r\n each(createOrKeepArray(listener), callback);\r\n};\r\n\r\nexport const createEventListenerHub = >(\r\n initialEventListeners?: EventListeners\r\n): EventListenerHub => {\r\n const events = new Map>>();\r\n\r\n const removeEvent: RemoveEvent = (name, listener) => {\r\n if (name) {\r\n const eventSet = events.get(name);\r\n manageListener((currListener) => {\r\n if (eventSet) {\r\n eventSet[currListener ? 'delete' : 'clear'](currListener! as any);\r\n }\r\n }, listener);\r\n } else {\r\n events.forEach((eventSet) => {\r\n eventSet.clear();\r\n });\r\n events.clear();\r\n }\r\n };\r\n\r\n const addEvent: AddEvent = (\r\n nameOrEventListeners: keyof EventArgs | EventListeners,\r\n listenerOrPure?:\r\n | EventListener\r\n | EventListener[]\r\n | boolean\r\n ) => {\r\n if (isString(nameOrEventListeners)) {\r\n const eventSet = events.get(nameOrEventListeners) || new Set();\r\n events.set(nameOrEventListeners, eventSet);\r\n\r\n manageListener(\r\n (currListener) => {\r\n if (isFunction(currListener)) {\r\n eventSet.add(currListener);\r\n }\r\n },\r\n listenerOrPure as Exclude\r\n );\r\n\r\n return bind(\r\n removeEvent,\r\n nameOrEventListeners,\r\n listenerOrPure as Exclude\r\n );\r\n }\r\n if (isBoolean(listenerOrPure) && listenerOrPure) {\r\n removeEvent();\r\n }\r\n\r\n const eventListenerKeys = keys(nameOrEventListeners) as (keyof EventListeners)[];\r\n const offFns: (() => void)[] = [];\r\n each(eventListenerKeys, (key) => {\r\n const eventListener = (nameOrEventListeners as EventListeners)[key];\r\n if (eventListener) {\r\n push(offFns, addEvent(key, eventListener));\r\n }\r\n });\r\n\r\n return bind(runEachAndClear, offFns);\r\n };\r\n\r\n const triggerEvent: TriggerEvent = (name, args) => {\r\n each(from(events.get(name)), (event) => {\r\n if (args && !isEmptyArray(args)) {\r\n (event as (...eventArgs: EventArgs[keyof EventArgs]) => void).apply(0, args);\r\n } else {\r\n (event as () => void)();\r\n }\r\n });\r\n };\r\n\r\n addEvent(initialEventListeners || {});\r\n\r\n return [addEvent, removeEvent, triggerEvent];\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport type { OverlayScrollbars, OverlayScrollbarsStatic } from '../overlayscrollbars';\r\nimport type { EventListener, EventListenerArgs, EventListeners } from '../eventListeners';\r\nimport { each, keys } from '../support';\r\n\r\nexport type PluginModuleInstance = Record;\r\n\r\nexport type InstancePluginEvent = {\r\n /**\r\n * Adds event listeners to the instance.\r\n * @param eventListeners An object which contains the added listeners.\r\n * @returns Returns a function which removes the added listeners.\r\n */\r\n (eventListeners: EventListeners): () => void;\r\n /**\r\n * Adds a single event listener to the instance.\r\n * @param name The name of the event.\r\n * @param listener The listener which is invoked on that event.\r\n * @returns Returns a function which removes the added listeners.\r\n */\r\n (name: N, listener: EventListener): () => void;\r\n /**\r\n * Adds multiple event listeners to the instance.\r\n * @param name The name of the event.\r\n * @param listener The listeners which are invoked on that event.\r\n * @returns Returns a function which removes the added listeners.\r\n */\r\n (name: N, listener: EventListener[]): () => void;\r\n};\r\n\r\n/**\r\n * Describes a OverlayScrollbars plugin module.\r\n * Plugin modules must be side-effect free and deterministic. (same input produces same output)\r\n */\r\nexport type PluginModule<\r\n S extends PluginModuleInstance | void = PluginModuleInstance | void,\r\n I extends PluginModuleInstance | void = PluginModuleInstance | void,\r\n> = (S extends PluginModuleInstance\r\n ? {\r\n /**\r\n * Creates a plugin which is bound to the static object.\r\n * The function will be called once with the static object as soon as the plugin is registered.\r\n * The plugin can add new methods or fields to the passed static object.\r\n * @param osStatic The static object the plugin is bound to.\r\n * @returns The plugins instance object or a falsy value if the plugin doesn't need any instance object.\r\n */\r\n static: (osStatic: OverlayScrollbarsStatic) => S | void;\r\n }\r\n : object) &\r\n (I extends PluginModuleInstance\r\n ? {\r\n /**\r\n * Creates a A plugin which is bound to an instance.\r\n * The function will be called each time a new instance is created.\r\n * The plugin can add new methods or fields to the passed instance object.\r\n * @param osInstance The instance object the plugin is bound to.\r\n * @param event A function which adds events to the instance which can't be removed from outside the plugin. (instance events added with the `on` function can be removed with the optional `pure` parameter)\r\n * @param osStatic The static object the plugin is bound to.\r\n * @returns The plugins instance object or a falsy value if the plugin doesn't need any instance object.\r\n */\r\n instance: (\r\n osInstance: OverlayScrollbars,\r\n event: InstancePluginEvent,\r\n osStatic: OverlayScrollbarsStatic\r\n ) => I | void;\r\n }\r\n : object);\r\n\r\n/**\r\n * Describes a OverlayScrollbar plugin.\r\n */\r\nexport type Plugin<\r\n Name extends string = string,\r\n S extends PluginModuleInstance | void = PluginModuleInstance | void,\r\n I extends PluginModuleInstance | void = PluginModuleInstance | void,\r\n> = {\r\n /** The field is the plugins name. Plugin names must be globally unique, please choose wisely. */\r\n [pluginName in Name]: PluginModule;\r\n};\r\n\r\n/**\r\n * Describes a OverlayScrollbar plugin which has only a static module.\r\n */\r\nexport type StaticPlugin<\r\n Name extends string = string,\r\n T extends PluginModuleInstance = PluginModuleInstance,\r\n> = Plugin;\r\n\r\n/**\r\n * Describes a OverlayScrollbar plugin which has only a instance module.\r\n */\r\nexport type InstancePlugin<\r\n Name extends string = string,\r\n T extends PluginModuleInstance = PluginModuleInstance,\r\n> = Plugin;\r\n\r\n/**\r\n * Infers the type of the static modules instance of the passed plugin.\r\n */\r\nexport type InferStaticPluginModuleInstance =\r\n T extends StaticPlugin\r\n ? T[Name]['static'] extends (...args: any[]) => any\r\n ? ReturnType\r\n : void\r\n : void;\r\n\r\n/**\r\n * Infers the type of the instance modules instance of the passed plugin.\r\n */\r\nexport type InferInstancePluginModuleInstance =\r\n T extends InstancePlugin\r\n ? T[Name]['instance'] extends (...args: any[]) => any\r\n ? ReturnType\r\n : void\r\n : void;\r\n\r\n/** All registered plugin modules. */\r\nexport const pluginModules: Record = {};\r\n\r\n/** All static plugin module instances. */\r\nexport const staticPluginModuleInstances: Record = {};\r\n\r\n/**\r\n * Adds plugins.\r\n * @param addedPlugin The plugin(s) to add.\r\n * @returns The added plugin modules of the registered plugins.\r\n */\r\nexport const addPlugins = (addedPlugin: Plugin[]) => {\r\n each(addedPlugin, (plugin) =>\r\n each(plugin, (_, key) => {\r\n pluginModules[key] = plugin[key];\r\n })\r\n );\r\n};\r\n\r\nexport const registerPluginModuleInstances = (\r\n plugin: Plugin,\r\n staticObj: OverlayScrollbarsStatic,\r\n instanceInfo?: [\r\n instanceObj: OverlayScrollbars,\r\n event: InstancePluginEvent,\r\n instancePluginMap?: Record,\r\n ]\r\n): Array =>\r\n keys(plugin).map((name) => {\r\n const { static: osStatic, instance: osInstance } = (\r\n plugin as Plugin\r\n )[name];\r\n const [instanceObj, event, instancePluginMap] = instanceInfo || [];\r\n const ctor = instanceInfo ? osInstance : osStatic;\r\n if (ctor) {\r\n const instance = instanceInfo\r\n ? (\r\n ctor as Extract<\r\n typeof ctor,\r\n (\r\n osInstance: OverlayScrollbars,\r\n event: InstancePluginEvent,\r\n osStatic: OverlayScrollbarsStatic\r\n ) => PluginModuleInstance | void\r\n >\r\n )(instanceObj!, event!, staticObj)\r\n : (\r\n ctor as Extract<\r\n typeof ctor,\r\n (osStatic: OverlayScrollbarsStatic) => PluginModuleInstance | void\r\n >\r\n )(staticObj);\r\n return ((instancePluginMap || staticPluginModuleInstances)[name] = instance);\r\n }\r\n });\r\n\r\nexport const getStaticPluginModuleInstance = (\r\n pluginModuleName: T extends StaticPlugin ? N : never\r\n): InferStaticPluginModuleInstance | undefined =>\r\n staticPluginModuleInstances[pluginModuleName] as InferStaticPluginModuleInstance | undefined;\r\n","import type {\r\n Options,\r\n PartialOptions,\r\n OverflowBehavior,\r\n ScrollbarsVisibilityBehavior,\r\n ScrollbarsAutoHideBehavior,\r\n ScrollbarsClickScrollBehavior,\r\n} from '../../options';\r\nimport type { OptionsTemplate, OptionsTemplateValue } from './validation';\r\nimport type { StaticPlugin } from '../plugins';\r\nimport { validateOptions, optionsTemplateTypes as oTypes } from './validation';\r\n\r\nexport const optionsValidationPluginModuleName = '__osOptionsValidationPlugin';\r\n\r\nexport const OptionsValidationPlugin = /* @__PURE__ */ (() => ({\r\n [optionsValidationPluginModuleName]: {\r\n static: () => {\r\n const numberAllowedValues: OptionsTemplateValue = oTypes.number;\r\n const booleanAllowedValues: OptionsTemplateValue = oTypes.boolean;\r\n const arrayNullValues: OptionsTemplateValue | null> = [\r\n oTypes.array,\r\n oTypes.null,\r\n ];\r\n const overflowAllowedValues: OptionsTemplateValue =\r\n 'hidden scroll visible visible-hidden';\r\n const scrollbarsVisibilityAllowedValues: OptionsTemplateValue =\r\n 'visible hidden auto';\r\n const scrollbarsAutoHideAllowedValues: OptionsTemplateValue =\r\n 'never scroll leavemove';\r\n const scrollbarsClickScrollAllowedValues: OptionsTemplateValue =\r\n [booleanAllowedValues, oTypes.string];\r\n\r\n const optionsTemplate: OptionsTemplate = {\r\n paddingAbsolute: booleanAllowedValues, // true || false\r\n showNativeOverlaidScrollbars: booleanAllowedValues, // true || false\r\n update: {\r\n elementEvents: arrayNullValues, // array of tuples || null\r\n attributes: arrayNullValues,\r\n debounce: [oTypes.number, oTypes.array, oTypes.object, oTypes.null], // number || number array || object || null\r\n ignoreMutation: [oTypes.function, oTypes.null], // function || null\r\n },\r\n overflow: {\r\n x: overflowAllowedValues, // visible-hidden || visible-scroll || hidden || scroll\r\n y: overflowAllowedValues, // visible-hidden || visible-scroll || hidden || scroll\r\n },\r\n scrollbars: {\r\n theme: [oTypes.string, oTypes.null], // string || null\r\n visibility: scrollbarsVisibilityAllowedValues, // visible || hidden || auto\r\n autoHide: scrollbarsAutoHideAllowedValues, // never || scroll || leave || move ||\r\n autoHideDelay: numberAllowedValues, // number\r\n autoHideSuspend: booleanAllowedValues, // true || false\r\n dragScroll: booleanAllowedValues, // true || false\r\n clickScroll: scrollbarsClickScrollAllowedValues, // true || false || instant\r\n pointers: [oTypes.array, oTypes.null], // string array\r\n },\r\n /*\r\n textarea: {\r\n dynWidth: booleanAllowedValues, // true || false\r\n dynHeight: booleanAllowedValues, // true || false\r\n inheritedAttrs: stringArrayNullAllowedValues, // string || array || nul\r\n },\r\n */\r\n };\r\n return (options: PartialOptions, doWriteErrors?: boolean): PartialOptions => {\r\n const [validated, foreign] = validateOptions(optionsTemplate, options, doWriteErrors);\r\n return { ...foreign, ...validated };\r\n };\r\n },\r\n },\r\n}))() satisfies StaticPlugin;\r\n","import { strOverflowX, strOverflowY } from './support';\r\n\r\nconst dataAttributePrefix = `data-overlayscrollbars`;\r\n\r\n// environment\r\nexport const classNameEnvironment = 'os-environment';\r\nexport const classNameEnvironmentScrollbarHidden = `${classNameEnvironment}-scrollbar-hidden`;\r\n\r\n// initialize\r\nexport const dataAttributeInitialize = `${dataAttributePrefix}-initialize`;\r\n\r\n// shared\r\nexport const dataValueNoClipping = 'noClipping';\r\n\r\n// body\r\nexport const dataAttributeHtmlBody = `${dataAttributePrefix}-body`;\r\n\r\n// host\r\nexport const dataAttributeHost = dataAttributePrefix;\r\nexport const dataValueHostIsHost = 'host';\r\n\r\n// viewport\r\nexport const dataAttributeViewport = `${dataAttributePrefix}-viewport`;\r\nexport const dataValueViewportOverflowXPrefix = strOverflowX;\r\nexport const dataValueViewportOverflowYPrefix = strOverflowY;\r\nexport const dataValueViewportArrange = 'arrange';\r\nexport const dataValueViewportMeasuring = 'measuring';\r\nexport const dataValueViewportScrolling = 'scrolling';\r\nexport const dataValueViewportScrollbarHidden = 'scrollbarHidden';\r\nexport const dataValueViewportNoContent = 'noContent';\r\n\r\n// padding\r\nexport const dataAttributePadding = `${dataAttributePrefix}-padding`;\r\n\r\n// content\r\nexport const dataAttributeContent = `${dataAttributePrefix}-content`;\r\n\r\n// size observer\r\nexport const classNameSizeObserver = 'os-size-observer';\r\nexport const classNameSizeObserverAppear = `${classNameSizeObserver}-appear`;\r\nexport const classNameSizeObserverListener = `${classNameSizeObserver}-listener`;\r\nexport const classNameSizeObserverListenerScroll = `${classNameSizeObserverListener}-scroll`;\r\nexport const classNameSizeObserverListenerItem = `${classNameSizeObserverListener}-item`;\r\nexport const classNameSizeObserverListenerItemFinal = `${classNameSizeObserverListenerItem}-final`;\r\n\r\n// trinsic observer\r\nexport const classNameTrinsicObserver = 'os-trinsic-observer';\r\n\r\n// scrollbars\r\nexport const classNameScrollbarThemeNone = 'os-theme-none';\r\nexport const classNameScrollbar = 'os-scrollbar';\r\nexport const classNameScrollbarRtl = `${classNameScrollbar}-rtl`;\r\nexport const classNameScrollbarHorizontal = `${classNameScrollbar}-horizontal`;\r\nexport const classNameScrollbarVertical = `${classNameScrollbar}-vertical`;\r\nexport const classNameScrollbarTrack = `${classNameScrollbar}-track`;\r\nexport const classNameScrollbarHandle = `${classNameScrollbar}-handle`;\r\nexport const classNameScrollbarVisible = `${classNameScrollbar}-visible`;\r\nexport const classNameScrollbarCornerless = `${classNameScrollbar}-cornerless`;\r\nexport const classNameScrollbarTransitionless = `${classNameScrollbar}-transitionless`;\r\nexport const classNameScrollbarInteraction = `${classNameScrollbar}-interaction`;\r\nexport const classNameScrollbarUnusable = `${classNameScrollbar}-unusable`;\r\nexport const classNameScrollbarAutoHide = `${classNameScrollbar}-auto-hide`;\r\nexport const classNameScrollbarAutoHideHidden = `${classNameScrollbarAutoHide}-hidden`;\r\nexport const classNameScrollbarWheel = `${classNameScrollbar}-wheel`;\r\nexport const classNameScrollbarTrackInteractive = `${classNameScrollbarTrack}-interactive`;\r\nexport const classNameScrollbarHandleInteractive = `${classNameScrollbarHandle}-interactive`;\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport type { StaticPlugin } from '../plugins';\r\nimport {\r\n createDOM,\r\n appendChildren,\r\n getOffsetSize,\r\n addEventListener,\r\n addClass,\r\n equalWH,\r\n cAF,\r\n rAF,\r\n stopPropagation,\r\n bind,\r\n scrollElementTo,\r\n strWidth,\r\n strHeight,\r\n setStyles,\r\n} from '../../support';\r\nimport {\r\n classNameSizeObserverListenerScroll,\r\n classNameSizeObserverListenerItem,\r\n classNameSizeObserverListenerItemFinal,\r\n} from '../../classnames';\r\n\r\nexport const sizeObserverPluginName = '__osSizeObserverPlugin';\r\n\r\nexport const SizeObserverPlugin = /* @__PURE__ */ (() => ({\r\n [sizeObserverPluginName]: {\r\n static:\r\n () =>\r\n (\r\n listenerElement: HTMLElement,\r\n onSizeChangedCallback: (appear: boolean) => any,\r\n observeAppearChange: boolean | null | undefined\r\n ): [appearCallback: () => void, offFns: (() => any)[]] => {\r\n const scrollAmount = 3333333;\r\n const scrollEventName = 'scroll';\r\n const observerElementChildren = createDOM(\r\n `
`\r\n );\r\n const observerElementChildrenRoot = observerElementChildren[0] as HTMLElement;\r\n const shrinkElement = observerElementChildrenRoot.lastChild as HTMLElement;\r\n const expandElement = observerElementChildrenRoot.firstChild as HTMLElement;\r\n const expandElementChild = expandElement?.firstChild as HTMLElement;\r\n\r\n let cacheSize = getOffsetSize(observerElementChildrenRoot);\r\n let currSize = cacheSize;\r\n let isDirty = false;\r\n let rAFId: number;\r\n\r\n const reset = () => {\r\n scrollElementTo(expandElement, scrollAmount);\r\n scrollElementTo(shrinkElement, scrollAmount);\r\n };\r\n const onResized = (appear?: unknown) => {\r\n rAFId = 0;\r\n if (isDirty) {\r\n cacheSize = currSize;\r\n onSizeChangedCallback(appear === true);\r\n }\r\n };\r\n const onScroll = (scrollEvent?: Event | false) => {\r\n currSize = getOffsetSize(observerElementChildrenRoot);\r\n isDirty = !scrollEvent || !equalWH(currSize, cacheSize);\r\n\r\n if (scrollEvent) {\r\n stopPropagation(scrollEvent);\r\n\r\n if (isDirty && !rAFId) {\r\n cAF!(rAFId);\r\n rAFId = rAF!(onResized);\r\n }\r\n } else {\r\n onResized(scrollEvent === false);\r\n }\r\n\r\n reset();\r\n };\r\n const destroyFns = [\r\n appendChildren(listenerElement, observerElementChildren),\r\n addEventListener(expandElement, scrollEventName, onScroll),\r\n addEventListener(shrinkElement, scrollEventName, onScroll),\r\n ];\r\n\r\n addClass(listenerElement, classNameSizeObserverListenerScroll);\r\n\r\n // lets assume that the divs will never be that large and a constant value is enough\r\n setStyles(expandElementChild, {\r\n [strWidth]: scrollAmount,\r\n [strHeight]: scrollAmount,\r\n });\r\n\r\n rAF!(reset);\r\n\r\n return [observeAppearChange ? bind(onScroll, false) : reset, destroyFns];\r\n },\r\n },\r\n}))() satisfies StaticPlugin;\r\n","import type { Env } from '../../environment';\r\nimport type { Options, OptionsCheckFn, OverflowBehavior } from '../../options';\r\nimport type { OverflowStyle } from '../../typings';\r\nimport {\r\n getStyles,\r\n strHidden,\r\n strOverflowX,\r\n strOverflowY,\r\n strScroll,\r\n strVisible,\r\n XY,\r\n} from '../../support';\r\n\r\nexport const getShowNativeOverlaidScrollbars = (checkOption: OptionsCheckFn, env: Env) => {\r\n const { _nativeScrollbarsOverlaid } = env;\r\n const [showNativeOverlaidScrollbarsOption, showNativeOverlaidScrollbarsChanged] = checkOption(\r\n 'showNativeOverlaidScrollbars'\r\n );\r\n\r\n return [\r\n showNativeOverlaidScrollbarsOption &&\r\n _nativeScrollbarsOverlaid.x &&\r\n _nativeScrollbarsOverlaid.y,\r\n showNativeOverlaidScrollbarsChanged,\r\n ] as const;\r\n};\r\n\r\nexport const overflowIsVisible = (overflow: string) => overflow.indexOf(strVisible) === 0;\r\n\r\nexport const overflowBehaviorToOverflowStyle = (\r\n overflowBehavior: OverflowBehavior\r\n): OverflowStyle => overflowBehavior.replace(`${strVisible}-`, '') as OverflowStyle;\r\n\r\nexport const overflowCssValueToOverflowStyle = (\r\n cssValue: string | undefined,\r\n hasOverflow?: boolean\r\n): OverflowStyle => {\r\n if (cssValue === 'auto') {\r\n return hasOverflow ? strScroll : strHidden;\r\n }\r\n\r\n const finalCssValue = cssValue || strHidden;\r\n return [strHidden, strScroll, strVisible].includes(finalCssValue)\r\n ? (finalCssValue as OverflowStyle)\r\n : strHidden;\r\n};\r\n\r\nexport const getElementOverflowStyle = (\r\n element: HTMLElement,\r\n hasOverflow: Partial>\r\n): XY => {\r\n const { overflowX, overflowY } = getStyles(element, [strOverflowX, strOverflowY]);\r\n\r\n return {\r\n x: overflowCssValueToOverflowStyle(overflowX, hasOverflow.x),\r\n y: overflowCssValueToOverflowStyle(overflowY, hasOverflow.y),\r\n };\r\n};\r\n","import type { ObserversSetupState } from '../../setups';\r\nimport type { Options, OptionsCheckFn } from '../../options';\r\nimport type { StructureSetupElementsObj } from '../../setups/structureSetup/structureSetup.elements';\r\nimport type { Env } from '../../environment';\r\nimport type { WH, XY } from '../../support';\r\nimport type { OverflowStyle, StyleObject, StyleObjectKey } from '../../typings';\r\nimport type { StructureSetupState } from '../../setups/structureSetup';\r\nimport type { StaticPlugin } from '../plugins';\r\nimport {\r\n getShowNativeOverlaidScrollbars,\r\n getElementOverflowStyle,\r\n} from '../../setups/structureSetup/structureSetup.utils';\r\nimport { dataValueViewportArrange, dataAttributeViewport } from '../../classnames';\r\nimport {\r\n keys,\r\n noop,\r\n each,\r\n assignDeep,\r\n strMarginBottom,\r\n strMarginLeft,\r\n strMarginRight,\r\n strPaddingBottom,\r\n strPaddingLeft,\r\n strPaddingRight,\r\n strPaddingTop,\r\n getStyles,\r\n setStyles,\r\n removeAttrClass,\r\n strWidth,\r\n strScroll,\r\n} from '../../support';\r\n\r\nexport const scrollbarsHidingPluginName = '__osScrollbarsHidingPlugin';\r\n\r\nexport const ScrollbarsHidingPlugin = /* @__PURE__ */ (() => ({\r\n [scrollbarsHidingPluginName]: {\r\n static: () => ({\r\n _viewportArrangement: (\r\n structureSetupElements: StructureSetupElementsObj,\r\n structureSetupState: StructureSetupState,\r\n observersSetupState: ObserversSetupState,\r\n env: Env,\r\n checkOptions: OptionsCheckFn\r\n ) => {\r\n const { _viewportIsTarget, _viewport } = structureSetupElements;\r\n const { _nativeScrollbarsHiding, _nativeScrollbarsOverlaid, _nativeScrollbarsSize } = env;\r\n const doViewportArrange =\r\n !_viewportIsTarget &&\r\n !_nativeScrollbarsHiding &&\r\n (_nativeScrollbarsOverlaid.x || _nativeScrollbarsOverlaid.y);\r\n const [showNativeOverlaidScrollbars] = getShowNativeOverlaidScrollbars(checkOptions, env);\r\n\r\n /**\r\n * Gets the hide offset matching the passed overflow state.\r\n * @param viewportOverflowState The overflow state of the viewport\r\n */\r\n const _getViewportOverflowHideOffset = (viewportOverflowStyle: XY) => {\r\n const arrangeHideOffset =\r\n _nativeScrollbarsHiding || showNativeOverlaidScrollbars ? 0 : 42;\r\n\r\n const getHideOffsetPerAxis = (\r\n isOverlaid: boolean,\r\n overflowScroll: boolean,\r\n nativeScrollbarSize: number\r\n ) => {\r\n const nonScrollbarStylingHideOffset = isOverlaid\r\n ? arrangeHideOffset\r\n : nativeScrollbarSize;\r\n const scrollbarsHideOffset =\r\n overflowScroll && !_nativeScrollbarsHiding ? nonScrollbarStylingHideOffset : 0;\r\n const scrollbarsHideOffsetArrange = isOverlaid && !!arrangeHideOffset;\r\n\r\n return [scrollbarsHideOffset, scrollbarsHideOffsetArrange] as const;\r\n };\r\n\r\n const [xScrollbarsHideOffset, xScrollbarsHideOffsetArrange] = getHideOffsetPerAxis(\r\n _nativeScrollbarsOverlaid.x,\r\n viewportOverflowStyle.x === strScroll,\r\n _nativeScrollbarsSize.x\r\n );\r\n const [yScrollbarsHideOffset, yScrollbarsHideOffsetArrange] = getHideOffsetPerAxis(\r\n _nativeScrollbarsOverlaid.y,\r\n viewportOverflowStyle.y === strScroll,\r\n _nativeScrollbarsSize.y\r\n );\r\n\r\n return {\r\n _scrollbarsHideOffset: {\r\n x: xScrollbarsHideOffset,\r\n y: yScrollbarsHideOffset,\r\n },\r\n _scrollbarsHideOffsetArrange: {\r\n x: xScrollbarsHideOffsetArrange,\r\n y: yScrollbarsHideOffsetArrange,\r\n },\r\n };\r\n };\r\n\r\n /**\r\n * Hides the native scrollbars according to the passed parameters.\r\n * @param viewportOverflowStyle The viewport overflow style.\r\n * @param directionIsRTL Whether the direction is RTL or not.\r\n * @param viewportArrange Whether special styles related to the viewport arrange strategy shall be applied.\r\n * @param viewportStyleObj The viewport style object to which the needed styles shall be applied.\r\n */\r\n const _hideNativeScrollbars = (\r\n viewportOverflowStyle: XY\r\n ): StyleObject | undefined => {\r\n if (!_viewportIsTarget) {\r\n const { _directionIsRTL } = observersSetupState;\r\n const viewportStyleObj: StyleObject = assignDeep(\r\n {},\r\n {\r\n [strMarginRight]: 0,\r\n [strMarginBottom]: 0,\r\n [strMarginLeft]: 0,\r\n }\r\n );\r\n const { _scrollbarsHideOffset, _scrollbarsHideOffsetArrange } =\r\n _getViewportOverflowHideOffset(viewportOverflowStyle);\r\n const { x: arrangeX, y: arrangeY } = _scrollbarsHideOffsetArrange;\r\n const { x: hideOffsetX, y: hideOffsetY } = _scrollbarsHideOffset;\r\n const { _viewportPaddingStyle } = structureSetupState;\r\n const horizontalMarginKey: keyof StyleObject = _directionIsRTL\r\n ? strMarginLeft\r\n : strMarginRight;\r\n const viewportHorizontalPaddingKey: keyof StyleObject = _directionIsRTL\r\n ? strPaddingLeft\r\n : strPaddingRight;\r\n const horizontalMarginValue = _viewportPaddingStyle[horizontalMarginKey] as number;\r\n const verticalMarginValue = _viewportPaddingStyle[strMarginBottom] as number;\r\n const horizontalPaddingValue = _viewportPaddingStyle[\r\n viewportHorizontalPaddingKey\r\n ] as number;\r\n const verticalPaddingValue = _viewportPaddingStyle[strPaddingBottom] as number;\r\n\r\n // horizontal\r\n viewportStyleObj[strWidth] = `calc(100% + ${\r\n hideOffsetY + horizontalMarginValue * -1\r\n }px)`;\r\n viewportStyleObj[horizontalMarginKey] = -hideOffsetY + horizontalMarginValue;\r\n\r\n // vertical\r\n viewportStyleObj[strMarginBottom] = -hideOffsetX + verticalMarginValue;\r\n\r\n // viewport arrange additional styles\r\n if (doViewportArrange) {\r\n viewportStyleObj[viewportHorizontalPaddingKey] =\r\n horizontalPaddingValue + (arrangeY ? hideOffsetY : 0);\r\n viewportStyleObj[strPaddingBottom] =\r\n verticalPaddingValue + (arrangeX ? hideOffsetX : 0);\r\n }\r\n\r\n return viewportStyleObj;\r\n }\r\n };\r\n\r\n /**\r\n * Sets the styles of the viewport arrange element.\r\n * @param viewportOverflowStyle The viewport overflow style according to which the scrollbars shall be hidden.\r\n * @param viewportScrollSize The content scroll size.\r\n * @param directionIsRTL Whether the direction is RTL or not.\r\n * @returns A boolean which indicates whether the viewport arrange element was adjusted.\r\n */\r\n const _arrangeViewport = (\r\n viewportOverflowStyle: XY,\r\n viewportScrollSize: WH,\r\n sizeFraction: WH\r\n ) => {\r\n if (doViewportArrange) {\r\n const { _viewportPaddingStyle } = structureSetupState;\r\n const { _scrollbarsHideOffset, _scrollbarsHideOffsetArrange } =\r\n _getViewportOverflowHideOffset(viewportOverflowStyle);\r\n const { x: arrangeX, y: arrangeY } = _scrollbarsHideOffsetArrange;\r\n const { x: hideOffsetX, y: hideOffsetY } = _scrollbarsHideOffset;\r\n const { _directionIsRTL } = observersSetupState;\r\n const viewportArrangeHorizontalPaddingKey: keyof StyleObject = _directionIsRTL\r\n ? strPaddingRight\r\n : strPaddingLeft;\r\n const viewportArrangeHorizontalPaddingValue = _viewportPaddingStyle[\r\n viewportArrangeHorizontalPaddingKey\r\n ] as number;\r\n const viewportArrangeVerticalPaddingValue = _viewportPaddingStyle.paddingTop as number;\r\n const fractionalContentWidth = viewportScrollSize.w + sizeFraction.w;\r\n const fractionalContenHeight = viewportScrollSize.h + sizeFraction.h;\r\n const arrangeSize = {\r\n w:\r\n hideOffsetY && arrangeY\r\n ? `${\r\n hideOffsetY + fractionalContentWidth - viewportArrangeHorizontalPaddingValue\r\n }px`\r\n : '',\r\n h:\r\n hideOffsetX && arrangeX\r\n ? `${\r\n hideOffsetX + fractionalContenHeight - viewportArrangeVerticalPaddingValue\r\n }px`\r\n : '',\r\n };\r\n\r\n setStyles(_viewport, {\r\n '--os-vaw': arrangeSize.w,\r\n '--os-vah': arrangeSize.h,\r\n });\r\n }\r\n\r\n return doViewportArrange;\r\n };\r\n\r\n /**\r\n * Removes all styles applied because of the viewport arrange strategy.\r\n */\r\n const _undoViewportArrange = () => {\r\n if (doViewportArrange) {\r\n const { _hasOverflow, _viewportPaddingStyle: viewportPaddingStyle } =\r\n structureSetupState;\r\n const viewportOverflowStyle = getElementOverflowStyle(_viewport, _hasOverflow);\r\n const { _scrollbarsHideOffsetArrange } =\r\n _getViewportOverflowHideOffset(viewportOverflowStyle);\r\n const { x: arrangeX, y: arrangeY } = _scrollbarsHideOffsetArrange;\r\n const finalPaddingStyle: StyleObject = {};\r\n const assignProps = (props: string[]) =>\r\n each(props, (prop) => {\r\n finalPaddingStyle[prop as StyleObjectKey] =\r\n viewportPaddingStyle[prop as StyleObjectKey];\r\n });\r\n\r\n if (arrangeX) {\r\n assignProps([strMarginBottom, strPaddingTop, strPaddingBottom]);\r\n }\r\n\r\n if (arrangeY) {\r\n assignProps([strMarginLeft, strMarginRight, strPaddingLeft, strPaddingRight]);\r\n }\r\n\r\n const prevStyle = getStyles(_viewport, keys(finalPaddingStyle) as StyleObjectKey[]);\r\n const addArrange = removeAttrClass(\r\n _viewport,\r\n dataAttributeViewport,\r\n dataValueViewportArrange\r\n );\r\n\r\n setStyles(_viewport, finalPaddingStyle);\r\n\r\n return () => {\r\n setStyles(\r\n _viewport,\r\n assignDeep({}, prevStyle, _hideNativeScrollbars(viewportOverflowStyle))\r\n );\r\n addArrange();\r\n };\r\n }\r\n return noop;\r\n };\r\n\r\n return {\r\n _arrangeViewport,\r\n _undoViewportArrange,\r\n _hideNativeScrollbars,\r\n };\r\n },\r\n }),\r\n },\r\n}))() satisfies StaticPlugin;\r\n","import type { StaticPlugin } from '../plugins';\r\nimport { animateNumber, noop, selfClearTimeout } from '../../support';\r\n\r\nexport const clickScrollPluginModuleName = '__osClickScrollPlugin';\r\n\r\nexport const ClickScrollPlugin = /* @__PURE__ */ (() => ({\r\n [clickScrollPluginModuleName]: {\r\n static:\r\n () =>\r\n (\r\n moveHandleRelative: (deltaMovement: number) => void,\r\n targetOffset: number,\r\n handleLength: number,\r\n onClickScrollCompleted: (stopped: boolean) => void\r\n ) => {\r\n // click scroll animation has 2 main parts:\r\n // 1. the \"click\" which scrolls 100% of the viewport in a certain amount of time\r\n // 2. the \"press\" which scrolls to the point where the cursor is located, the \"press\" always waits for the \"click\" to finish\r\n // The \"click\" should not be canceled by a \"pointerup\" event because very fast clicks or taps would cancel it too fast\r\n // The \"click\" should only be canceled by a subsequent \"pointerdown\" event because otherwise 2 animations would run\r\n // The \"press\" should be canceld by the next \"pointerup\" event\r\n\r\n let stopped = false;\r\n let stopPressAnimation = noop;\r\n const linearScrollMs = 133;\r\n const easedScrollMs = 222;\r\n const [setPressAnimationTimeout, clearPressAnimationTimeout] =\r\n selfClearTimeout(linearScrollMs);\r\n const targetOffsetSign = Math.sign(targetOffset);\r\n const handleLengthWithTargetSign = handleLength * targetOffsetSign;\r\n const handleLengthWithTargetSignHalf = handleLengthWithTargetSign / 2;\r\n const easing = (x: number) => 1 - (1 - x) * (1 - x); // easeOutQuad;\r\n const easedEndPressAnimation = (from: number, to: number) =>\r\n animateNumber(from, to, easedScrollMs, moveHandleRelative, easing);\r\n const linearPressAnimation = (linearFrom: number, msFactor: number) =>\r\n animateNumber(\r\n linearFrom,\r\n targetOffset - handleLengthWithTargetSign,\r\n linearScrollMs * msFactor,\r\n (progress, _, completed) => {\r\n moveHandleRelative(progress);\r\n\r\n if (completed) {\r\n stopPressAnimation = easedEndPressAnimation(progress, targetOffset);\r\n }\r\n }\r\n );\r\n const stopClickAnimation = animateNumber(\r\n 0,\r\n handleLengthWithTargetSign,\r\n easedScrollMs,\r\n (clickAnimationProgress, _, clickAnimationCompleted) => {\r\n moveHandleRelative(clickAnimationProgress);\r\n\r\n if (clickAnimationCompleted) {\r\n onClickScrollCompleted(stopped);\r\n\r\n if (!stopped) {\r\n const remainingScrollDistance = targetOffset - clickAnimationProgress;\r\n const continueWithPress =\r\n Math.sign(remainingScrollDistance - handleLengthWithTargetSignHalf) ===\r\n targetOffsetSign;\r\n\r\n if (continueWithPress) {\r\n setPressAnimationTimeout(() => {\r\n const remainingLinearScrollDistance =\r\n remainingScrollDistance - handleLengthWithTargetSign;\r\n const linearBridge =\r\n Math.sign(remainingLinearScrollDistance) === targetOffsetSign;\r\n\r\n stopPressAnimation = linearBridge\r\n ? linearPressAnimation(\r\n clickAnimationProgress,\r\n Math.abs(remainingLinearScrollDistance) / handleLength\r\n )\r\n : easedEndPressAnimation(clickAnimationProgress, targetOffset);\r\n });\r\n }\r\n }\r\n }\r\n },\r\n easing\r\n );\r\n\r\n return (stopClick?: boolean) => {\r\n stopped = true;\r\n\r\n if (stopClick) {\r\n stopClickAnimation();\r\n }\r\n\r\n clearPressAnimationTimeout();\r\n stopPressAnimation();\r\n };\r\n },\r\n },\r\n}))() satisfies StaticPlugin;\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport type { DeepPartial, DeepReadonly } from './typings';\r\nimport {\r\n assignDeep,\r\n each,\r\n isObject,\r\n keys,\r\n isArray,\r\n hasOwnProperty,\r\n isFunction,\r\n isEmptyObject,\r\n concat,\r\n} from './support';\r\n\r\nexport type OptionsField = string;\r\n\r\nexport type OptionsPrimitiveValue =\r\n | boolean\r\n | number\r\n | string\r\n | Array\r\n | ReadonlyArray\r\n | [any]\r\n | [any, ...any[]]\r\n | ((this: any, ...args: any[]) => any)\r\n | null;\r\n\r\nexport type OptionsObject = {\r\n [field: OptionsField]: OptionsPrimitiveValue | OptionsObject;\r\n};\r\n\r\ntype OptionsObjectFieldNameTuples = T extends OptionsPrimitiveValue\r\n ? []\r\n : {\r\n [K in Extract]: [K, ...OptionsObjectFieldNameTuples];\r\n }[Extract];\r\n\r\ntype JoinOptionsObjectFieldTuples<\r\n T extends OptionsField[],\r\n IncompletePath extends boolean = false,\r\n> = T extends [infer F]\r\n ? F\r\n : T extends [infer F, ...infer R]\r\n ? F extends OptionsField\r\n ?\r\n | (IncompletePath extends true ? F : never)\r\n | `${F}.${JoinOptionsObjectFieldTuples>}`\r\n : never\r\n : OptionsField;\r\n\r\ntype SplitJoinedOptionsObjectFieldTuples = string extends S\r\n ? OptionsField[]\r\n : S extends ''\r\n ? []\r\n : S extends `${infer T}.${infer U}`\r\n ? [T, ...SplitJoinedOptionsObjectFieldTuples]\r\n : [S];\r\n\r\ntype OptionsObjectFieldTuplesType = T extends [infer F]\r\n ? F extends keyof O\r\n ? O[F]\r\n : never\r\n : T extends [infer F, ...infer R]\r\n ? F extends keyof O\r\n ? O[F] extends OptionsPrimitiveValue\r\n ? O[F]\r\n : OptionsObjectFieldTuplesType>\r\n : never\r\n : never;\r\n\r\ntype OptionsObjectFieldPath = JoinOptionsObjectFieldTuples<\r\n OptionsObjectFieldNameTuples,\r\n true\r\n>;\r\n\r\ntype OptionsObjectFieldPathType<\r\n O extends OptionsObject,\r\n P extends string,\r\n> = OptionsObjectFieldTuplesType>;\r\n\r\nconst opsStringify = (value: any) =>\r\n JSON.stringify(value, (_, val) => {\r\n if (isFunction(val)) {\r\n throw 0;\r\n }\r\n return val;\r\n });\r\n\r\nconst getPropByPath = (obj: any, path: string): T =>\r\n obj\r\n ? `${path}`\r\n .split('.')\r\n .reduce((o, prop) => (o && hasOwnProperty(o, prop) ? o[prop] : undefined), obj)\r\n : (undefined as T);\r\n\r\n/**\r\n * The overflow behavior of an axis.\r\n */\r\nexport type OverflowBehavior =\r\n /** No scrolling is possible and the content is clipped. */\r\n | 'hidden'\r\n /** No scrolling is possible and the content isn't clipped. */\r\n | 'visible'\r\n /** Scrolling is possible if there is an overflow. */\r\n | 'scroll'\r\n /**\r\n * If the other axis has no overflow the behavior is similar to `visible`.\r\n * If the other axis has overflow the behavior is similar to `hidden`.\r\n */\r\n | 'visible-hidden'\r\n /**\r\n * If the other axis has no overflow the behavior is similar to `visible`.\r\n * If the other axis has overflow the behavior is similar to `scroll`.\r\n */\r\n | 'visible-scroll';\r\n\r\n/**\r\n * The scrollbars visibility behavior.\r\n */\r\nexport type ScrollbarsVisibilityBehavior =\r\n /** The scrollbars are always visible. */\r\n | 'visible'\r\n /** The scrollbars are always hidden. */\r\n | 'hidden'\r\n /** The scrollbars are only visibile if there is overflow. */\r\n | 'auto';\r\n\r\n/**\r\n * The scrollbars auto hide behavior\r\n */\r\nexport type ScrollbarsAutoHideBehavior =\r\n /** The scrollbars are never hidden automatically. */\r\n | 'never'\r\n /** The scrollbars are hidden unless the user scrolls. */\r\n | 'scroll'\r\n /** The scrollbars are hidden unless the pointer moves in the host element or the user scrolls. */\r\n | 'move'\r\n /** The scrollbars are hidden if the pointer leaves the host element or unless the user scrolls. */\r\n | 'leave';\r\n\r\n/**\r\n * The scrollbar click scroll behavior.\r\n */\r\nexport type ScrollbarsClickScrollBehavior = boolean | 'instant';\r\n\r\n/**\r\n * A debounce value:\r\n * If a tuple is provided you can customize the `timeout` and the `maxWait` in milliseconds. The third value `leading` indicates whether the debounce is also executed on the leading edge\r\n * Only a number customizes the `timeout` in milliseconds.\r\n * If the `timeout` is `0`, a debounce still exists. (its executed via `requestAnimationFrame`).\r\n */\r\nexport type OptionsDebounceValue =\r\n | [\r\n timeout?: number | false | null | undefined,\r\n maxWait?: number | false | null | undefined,\r\n leading?: boolean | null | undefined,\r\n ]\r\n | number\r\n | false\r\n | null;\r\n\r\n/**\r\n * @deprecated Use the debounce object instead.\r\n */\r\nexport type OptionsDebounceLegacy = OptionsDebounceValue;\r\n\r\n/**\r\n * The options of a OverlayScrollbars instance.\r\n */\r\nexport type Options = {\r\n /** Whether the padding shall be absolute. */\r\n paddingAbsolute: boolean;\r\n /** Whether to show the native scrollbars. Has only an effect it the native scrollbars are overlaid. */\r\n showNativeOverlaidScrollbars: boolean;\r\n /** Customizes the automatic update behavior. */\r\n update: {\r\n /**\r\n * The given Event(s) from the elements with the given selector(s) will trigger an update.\r\n * Useful for everything the MutationObserver and ResizeObserver can't detect\r\n * e.g.: and Images `load` event or the `transitionend` / `animationend` events.\r\n */\r\n elementEvents: Array<[elementSelector: string, eventNames: string]> | null;\r\n /**\r\n * Options to debounce updates to fine-tune performance.\r\n * It is possible to debounce updates caused by mutations, resizes, events and environmental changes.\r\n */\r\n debounce:\r\n | {\r\n /** Debounce updates which were triggered by a MutationObserver. */\r\n mutation: OptionsDebounceValue;\r\n /** Debounce updates which were triggered by a ResizeObserver. */\r\n resize: OptionsDebounceValue;\r\n /** Debounce updates which were triggered by a Event. */\r\n event: OptionsDebounceValue;\r\n /** Debounce updates which were triggered by environmental changes. (e.g. zooming & window resize) */\r\n env: OptionsDebounceValue;\r\n }\r\n | OptionsDebounceLegacy;\r\n /**\r\n * HTML attributes which will trigger an update if they're changed.\r\n * Basic attributes like `id`, `class`, `style` etc. are always observed and doesn't have to be added explicitly.\r\n */\r\n attributes: string[] | null;\r\n /**\r\n * A function which makes it possible to ignore a content mutation or null if nothing shall be ignored.\r\n * @param mutation The MutationRecord from the MutationObserver.\r\n * @returns A Truthy value if the mutation shall be ignored, a falsy value otherwise.\r\n */\r\n ignoreMutation: ((mutation: MutationRecord) => any) | null;\r\n };\r\n /** Customizes the overflow behavior per axis. */\r\n overflow: {\r\n /** The overflow behavior of the horizontal (x) axis. */\r\n x: OverflowBehavior;\r\n /** The overflow behavior of the vertical (y) axis. */\r\n y: OverflowBehavior;\r\n };\r\n /** Customizes appearance of the scrollbars. */\r\n scrollbars: {\r\n /**\r\n * The scrollbars theme.\r\n * The theme value will be added as `class` to all `scrollbar` elements of the instance.\r\n */\r\n theme: string | null;\r\n /** The scrollbars visibility behavior. */\r\n visibility: ScrollbarsVisibilityBehavior;\r\n /** The scrollbars auto hide behavior. */\r\n autoHide: ScrollbarsAutoHideBehavior;\r\n /** The scrollbars auto hide delay in milliseconds. */\r\n autoHideDelay: number;\r\n /** Whether the scrollbars auto hide behavior is suspended until a scroll happened. */\r\n autoHideSuspend: boolean;\r\n /** Whether it is possible to drag the handle of a scrollbar to scroll the viewport. */\r\n dragScroll: boolean;\r\n /** Whether it is possible to click the track of a scrollbar to scroll the viewport. */\r\n clickScroll: ScrollbarsClickScrollBehavior;\r\n /**\r\n * An array of pointer types which shall be supported.\r\n * Common pointer types are: `mouse`, `pen` and `touch`.\r\n * https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/pointerType\r\n */\r\n pointers: string[] | null;\r\n };\r\n};\r\n\r\nexport type ReadonlyOptions = DeepReadonly;\r\n\r\nexport type PartialOptions = DeepPartial;\r\n\r\nexport type OptionsCheckFn =

>(\r\n path: P\r\n) => [value: OptionsObjectFieldPathType, changed: boolean];\r\n\r\nexport const defaultOptionsUpdateDebounceMutation = [0, 33] satisfies OptionsDebounceValue;\r\nexport const defaultOptionsUpdateDebounceEvent = [33, 99] satisfies OptionsDebounceValue;\r\nexport const defaultOptionsUpdateDebounceEnv = [222, 666, true] satisfies OptionsDebounceValue;\r\nexport const defaultOptions: ReadonlyOptions = {\r\n paddingAbsolute: false,\r\n showNativeOverlaidScrollbars: false,\r\n update: {\r\n elementEvents: [['img', 'load']],\r\n debounce: {\r\n mutation: defaultOptionsUpdateDebounceMutation,\r\n resize: null,\r\n event: defaultOptionsUpdateDebounceEvent,\r\n env: defaultOptionsUpdateDebounceEnv,\r\n },\r\n attributes: null,\r\n ignoreMutation: null,\r\n },\r\n overflow: {\r\n x: 'scroll',\r\n y: 'scroll',\r\n },\r\n scrollbars: {\r\n theme: 'os-theme-dark',\r\n visibility: 'auto',\r\n autoHide: 'never',\r\n autoHideDelay: 1300,\r\n autoHideSuspend: false,\r\n dragScroll: true,\r\n clickScroll: false,\r\n pointers: ['mouse', 'touch', 'pen'],\r\n },\r\n} satisfies OptionsObject & Options;\r\n\r\nexport const getOptionsDiff = (currOptions: T, newOptions: DeepPartial): DeepPartial => {\r\n const diff: DeepPartial = {};\r\n const optionsKeys = concat(keys(newOptions), keys(currOptions)) as Array<\r\n keyof T & keyof DeepPartial\r\n >;\r\n\r\n each(optionsKeys, (optionKey) => {\r\n const currOptionValue = currOptions[optionKey];\r\n const newOptionValue = newOptions[optionKey];\r\n\r\n if (isObject(currOptionValue) && isObject(newOptionValue)) {\r\n assignDeep((diff[optionKey] = {} as any), getOptionsDiff(currOptionValue, newOptionValue));\r\n // delete empty nested objects\r\n if (isEmptyObject(diff[optionKey])) {\r\n delete diff[optionKey];\r\n }\r\n } else if (hasOwnProperty(newOptions, optionKey) && newOptionValue !== currOptionValue) {\r\n let isDiff = true;\r\n\r\n if (isArray(currOptionValue) || isArray(newOptionValue)) {\r\n try {\r\n if (opsStringify(currOptionValue) === opsStringify(newOptionValue)) {\r\n isDiff = false;\r\n }\r\n // eslint-disable-next-line no-empty\r\n } catch {}\r\n }\r\n\r\n if (isDiff) {\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore\r\n diff[optionKey] = newOptionValue;\r\n }\r\n }\r\n });\r\n\r\n return diff;\r\n};\r\n\r\nexport const createOptionCheck =\r\n (\r\n options: T,\r\n changedOptions: DeepPartial,\r\n force?: boolean\r\n ): OptionsCheckFn =>\r\n (path) => [\r\n getPropByPath(options, path),\r\n force || getPropByPath(changedOptions, path) !== undefined,\r\n ];\r\n","let nonce: string | undefined;\r\n\r\nexport const getNonce = () => nonce;\r\nexport const setNonce = (newNonce: string | undefined) => {\r\n nonce = newNonce;\r\n};\r\n","import type { XY, EventListener } from './support';\r\nimport type { Options, PartialOptions } from './options';\r\nimport type { Initialization, PartialInitialization } from './initialization';\r\nimport type { StyleObjectKey } from './typings';\r\nimport { defaultOptions } from './options';\r\nimport { classNameEnvironment, classNameEnvironmentScrollbarHidden } from './classnames';\r\nimport {\r\n createDOM,\r\n addClass,\r\n appendChildren,\r\n getFractionalSize,\r\n getClientSize,\r\n getOffsetSize,\r\n removeAttrs,\r\n removeElements,\r\n assignDeep,\r\n createCache,\r\n equalXY,\r\n createEventListenerHub,\r\n scrollT,\r\n bind,\r\n wnd,\r\n getStyles,\r\n isBodyElement,\r\n isFunction,\r\n addEventListener,\r\n} from './support';\r\nimport { getNonce } from './nonce';\r\n\r\ntype EnvironmentEventArgs = {\r\n r: [scrollbarSizeChanged?: boolean];\r\n};\r\n\r\nexport interface Env {\r\n readonly _nativeScrollbarsSize: XY;\r\n readonly _nativeScrollbarsOverlaid: XY;\r\n readonly _nativeScrollbarsHiding: boolean;\r\n readonly _scrollTimeline: boolean;\r\n readonly _staticDefaultInitialization: Initialization;\r\n readonly _staticDefaultOptions: Options;\r\n _addResizeListener(listener: EventListener): () => void;\r\n _getDefaultInitialization(): Initialization;\r\n _setDefaultInitialization(newInitialization: PartialInitialization): Initialization;\r\n _getDefaultOptions(): Options;\r\n _setDefaultOptions(newDefaultOptions: PartialOptions): Options;\r\n}\r\n\r\nlet environmentInstance: Env;\r\n\r\nconst createEnvironment = (): Env => {\r\n const getNativeScrollbarSize = (\r\n measureElm: HTMLElement,\r\n measureElmChild: HTMLElement,\r\n clear?: boolean\r\n ): XY => {\r\n // fix weird safari issue where getComputedStyle returns all empty styles by appending twice\r\n appendChildren(document.body, measureElm);\r\n appendChildren(document.body, measureElm);\r\n\r\n const cSize = getClientSize(measureElm);\r\n const oSize = getOffsetSize(measureElm);\r\n const fSize = getFractionalSize(measureElmChild);\r\n\r\n if (clear) {\r\n removeElements(measureElm);\r\n }\r\n\r\n return {\r\n x: oSize.h - cSize.h + fSize.h,\r\n y: oSize.w - cSize.w + fSize.w,\r\n };\r\n };\r\n\r\n const getNativeScrollbarsHiding = (testElm: HTMLElement): boolean => {\r\n let result = false;\r\n const revertClass = addClass(testElm, classNameEnvironmentScrollbarHidden);\r\n try {\r\n result =\r\n getStyles(testElm, 'scrollbar-width' as StyleObjectKey) === 'none' ||\r\n getStyles(testElm, 'display', '::-webkit-scrollbar') === 'none';\r\n // eslint-disable-next-line no-empty\r\n } catch {}\r\n revertClass();\r\n return result;\r\n };\r\n\r\n // changes to this styles need to be reflected in the \"hide native scrollbars\" section of the structure styles\r\n const envStyle = `.${classNameEnvironment}{scroll-behavior:auto!important;position:fixed;opacity:0;visibility:hidden;overflow:scroll;height:200px;width:200px;z-index:-1}.${classNameEnvironment} div{width:200%;height:200%;margin:10px 0}.${classNameEnvironmentScrollbarHidden}{scrollbar-width:none!important}.${classNameEnvironmentScrollbarHidden}::-webkit-scrollbar,.${classNameEnvironmentScrollbarHidden}::-webkit-scrollbar-corner{appearance:none!important;display:none!important;width:0!important;height:0!important}`;\r\n const envDOM = createDOM(\r\n `

`\r\n );\r\n const envElm = envDOM[0] as HTMLElement;\r\n const envChildElm = envElm.firstChild as HTMLElement;\r\n const styleElm = envElm.lastChild as HTMLStyleElement;\r\n const nonce = getNonce();\r\n\r\n if (nonce) {\r\n styleElm.nonce = nonce;\r\n }\r\n\r\n const [addEvent, , triggerEvent] = createEventListenerHub();\r\n const [updateNativeScrollbarSizeCache, getNativeScrollbarSizeCache] = createCache(\r\n {\r\n _initialValue: getNativeScrollbarSize(envElm, envChildElm),\r\n _equal: equalXY,\r\n },\r\n bind(getNativeScrollbarSize, envElm, envChildElm, true)\r\n );\r\n const [nativeScrollbarsSize] = getNativeScrollbarSizeCache();\r\n const nativeScrollbarsHiding = getNativeScrollbarsHiding(envElm);\r\n const nativeScrollbarsOverlaid = {\r\n x: nativeScrollbarsSize.x === 0,\r\n y: nativeScrollbarsSize.y === 0,\r\n };\r\n const staticDefaultInitialization: Initialization = {\r\n elements: {\r\n host: null,\r\n padding: !nativeScrollbarsHiding,\r\n viewport: (target) => nativeScrollbarsHiding && isBodyElement(target) && target,\r\n content: false,\r\n },\r\n scrollbars: {\r\n slot: true,\r\n },\r\n cancel: {\r\n nativeScrollbarsOverlaid: false,\r\n body: null,\r\n },\r\n };\r\n const staticDefaultOptions = assignDeep({}, defaultOptions);\r\n const getDefaultOptions = bind(\r\n assignDeep as typeof assignDeep,\r\n {} as Options,\r\n staticDefaultOptions\r\n );\r\n const getDefaultInitialization = bind(\r\n assignDeep as typeof assignDeep,\r\n {} as Initialization,\r\n staticDefaultInitialization\r\n );\r\n\r\n const env: Env = {\r\n _nativeScrollbarsSize: nativeScrollbarsSize,\r\n _nativeScrollbarsOverlaid: nativeScrollbarsOverlaid,\r\n _nativeScrollbarsHiding: nativeScrollbarsHiding,\r\n _scrollTimeline: !!scrollT,\r\n _addResizeListener: bind(addEvent, 'r'),\r\n _getDefaultInitialization: getDefaultInitialization,\r\n _setDefaultInitialization: (newInitializationStrategy) =>\r\n assignDeep(staticDefaultInitialization, newInitializationStrategy) &&\r\n getDefaultInitialization(),\r\n _getDefaultOptions: getDefaultOptions,\r\n _setDefaultOptions: (newDefaultOptions) =>\r\n assignDeep(staticDefaultOptions, newDefaultOptions) && getDefaultOptions(),\r\n _staticDefaultInitialization: assignDeep({}, staticDefaultInitialization),\r\n _staticDefaultOptions: assignDeep({}, staticDefaultOptions),\r\n };\r\n\r\n removeAttrs(envElm, 'style');\r\n removeElements(envElm);\r\n\r\n // needed in case content has css viewport units\r\n addEventListener(wnd, 'resize', () => {\r\n triggerEvent('r', []);\r\n });\r\n\r\n if (\r\n isFunction(wnd.matchMedia) &&\r\n !nativeScrollbarsHiding &&\r\n (!nativeScrollbarsOverlaid.x || !nativeScrollbarsOverlaid.y)\r\n ) {\r\n const addZoomListener = (onZoom: () => void) => {\r\n const media = wnd.matchMedia(`(resolution: ${wnd.devicePixelRatio}dppx)`);\r\n addEventListener(\r\n media,\r\n 'change',\r\n () => {\r\n onZoom();\r\n addZoomListener(onZoom);\r\n },\r\n {\r\n _once: true,\r\n }\r\n );\r\n };\r\n addZoomListener(() => {\r\n const [updatedNativeScrollbarSize, nativeScrollbarSizeChanged] =\r\n updateNativeScrollbarSizeCache();\r\n\r\n assignDeep(env._nativeScrollbarsSize, updatedNativeScrollbarSize); // keep the object and just re-assign!\r\n triggerEvent('r', [nativeScrollbarSizeChanged]);\r\n });\r\n }\r\n\r\n return env;\r\n};\r\n\r\nexport const getEnvironment = (): Env => {\r\n if (!environmentInstance) {\r\n environmentInstance = createEnvironment();\r\n }\r\n return environmentInstance;\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport {\r\n each,\r\n noop,\r\n MutationObserverConstructor,\r\n addEventListener,\r\n is,\r\n find,\r\n push,\r\n runEachAndClear,\r\n bind,\r\n isEmptyArray,\r\n deduplicateArray,\r\n inArray,\r\n concat,\r\n getAttr,\r\n isString,\r\n} from '../support';\r\n\r\ntype DOMContentObserverCallback = (contentChangedThroughEvent: boolean) => any;\r\n\r\ntype DOMTargetObserverCallback = (targetChangedAttrs: string[], targetStyleChanged: boolean) => any;\r\n\r\ninterface DOMObserverOptionsBase {\r\n _attributes?: string[];\r\n /**\r\n * A function which can ignore a changed attribute if it returns true.\r\n * for DOMTargetObserver this applies to the changes to the observed target\r\n * for DOMContentObserver this applies to changes to nested targets -> nested targets are elements which match the \"_nestedTargetSelector\" selector\r\n */\r\n _ignoreTargetChange?: DOMObserverIgnoreTargetChange;\r\n}\r\n\r\ninterface DOMContentObserverOptions extends DOMObserverOptionsBase {\r\n _eventContentChange?: DOMObserverEventContentChange; // [selector, eventname(s) | function returning eventname(s)] -> eventnames divided by whitespaces\r\n _nestedTargetSelector?: string;\r\n _ignoreContentChange?: DOMObserverIgnoreContentChange; // function which will prevent marking certain dom changes as content change if it returns true\r\n}\r\n\r\ninterface DOMTargetObserverOptions extends DOMObserverOptionsBase {\r\n /**\r\n * Marks certain attributes as style changing, should be a subset of the _attributes prop.\r\n * Used to set the \"targetStyleChanged\" param in the DOMTargetObserverCallback.\r\n */\r\n _styleChangingAttributes?: string[] | readonly string[];\r\n}\r\n\r\ntype ContentChangeArrayItem = [selector?: string, eventNames?: string] | null | undefined;\r\n\r\nexport type DOMObserverEventContentChange =\r\n | Array\r\n | false\r\n | null\r\n | undefined;\r\n\r\nexport type DOMObserverIgnoreContentChange = (\r\n mutation: MutationRecord,\r\n isNestedTarget: boolean,\r\n domObserverTarget: HTMLElement,\r\n domObserverOptions?: DOMContentObserverOptions\r\n) => boolean;\r\n\r\nexport type DOMObserverIgnoreTargetChange = (\r\n target: Node,\r\n attributeName: string,\r\n oldAttributeValue: string | null,\r\n newAttributeValue: string | null\r\n) => boolean;\r\n\r\nexport type DOMObserverCallback = ContentObserver extends true\r\n ? DOMContentObserverCallback\r\n : DOMTargetObserverCallback;\r\n\r\nexport type DOMObserverOptions = ContentObserver extends true\r\n ? DOMContentObserverOptions\r\n : DOMTargetObserverOptions;\r\n\r\nexport type DOMObserver = [\r\n construct: () => () => void,\r\n update: () => void | false | Parameters>,\r\n];\r\n\r\ntype EventContentChangeUpdateElement = (\r\n getElements?: (selector: string) => Node[],\r\n removed?: boolean\r\n) => void;\r\ntype EventContentChange = [destroy: () => void, updateElements: EventContentChangeUpdateElement];\r\n\r\n/**\r\n * Creates a set of helper functions to observe events of elements inside the target element.\r\n * @param target The target element of which the children elements shall be observed. (not only direct children but also nested ones)\r\n * @param eventContentChange The event content change array. (array of tuples: selector and eventname(s))\r\n * @param callback Callback which is called if one of the elements emits the corresponding event.\r\n * @returns A object which contains a set of helper functions to destroy and update the observation of elements.\r\n */\r\nconst createEventContentChange = (\r\n target: HTMLElement,\r\n callback: (...args: any) => any,\r\n eventContentChange?: DOMObserverEventContentChange\r\n): EventContentChange => {\r\n let destroyed = false;\r\n const map = eventContentChange ? new WeakMap any)[]>() : false; // weak map to prevent memory leak for detached elements\r\n const destroy = () => {\r\n destroyed = true;\r\n };\r\n const updateElements: EventContentChangeUpdateElement = (getElements) => {\r\n if (map && eventContentChange) {\r\n const eventElmList = eventContentChange.map((item) => {\r\n const [selector, eventNames] = item || [];\r\n const elements = eventNames && selector ? (getElements || find)(selector, target) : [];\r\n return [elements, eventNames] as const;\r\n });\r\n\r\n each(eventElmList, (item) =>\r\n each(item[0], (elm) => {\r\n const eventNames = item[1];\r\n const entries = map.get(elm) || [];\r\n const isTargetChild = target.contains(elm);\r\n\r\n if (isTargetChild && eventNames) {\r\n const removeListener = addEventListener(elm, eventNames, (event: Event) => {\r\n if (destroyed) {\r\n removeListener();\r\n map.delete(elm);\r\n } else {\r\n callback(event);\r\n }\r\n });\r\n map.set(elm, push(entries, removeListener));\r\n } else {\r\n runEachAndClear(entries);\r\n map.delete(elm);\r\n }\r\n })\r\n );\r\n }\r\n };\r\n\r\n updateElements();\r\n\r\n return [destroy, updateElements];\r\n};\r\n\r\n/**\r\n * Creates a DOM observer which observes DOM changes to either the target element or its children.\r\n * @param target The element which shall be observed.\r\n * @param isContentObserver Whether this observer is just observing the target or just the targets children. (not only direct children but also nested ones)\r\n * @param callback The callback which gets called if a change was detected.\r\n * @param options The options for DOM change detection.\r\n * @returns A object which represents the instance of the DOM observer.\r\n */\r\nexport const createDOMObserver = (\r\n target: HTMLElement,\r\n isContentObserver: ContentObserver,\r\n callback: DOMObserverCallback,\r\n options?: DOMObserverOptions\r\n): DOMObserver => {\r\n let isConnected = false;\r\n const {\r\n _attributes,\r\n _styleChangingAttributes,\r\n _eventContentChange,\r\n _nestedTargetSelector,\r\n _ignoreTargetChange,\r\n _ignoreContentChange,\r\n } = (options as DOMContentObserverOptions & DOMTargetObserverOptions) || {};\r\n const [destroyEventContentChange, updateEventContentChangeElements] = createEventContentChange(\r\n target,\r\n () => isConnected && (callback as DOMContentObserverCallback)(true),\r\n _eventContentChange\r\n );\r\n\r\n // MutationObserver\r\n const finalAttributes = _attributes || [];\r\n const finalStyleChangingAttributes = _styleChangingAttributes || [];\r\n const observedAttributes = concat(finalAttributes, finalStyleChangingAttributes);\r\n const observerCallback = (\r\n fromRecords: boolean,\r\n mutations: MutationRecord[]\r\n ): void | Parameters> => {\r\n if (!isEmptyArray(mutations)) {\r\n const ignoreTargetChange = _ignoreTargetChange || noop;\r\n const ignoreContentChange = _ignoreContentChange || noop;\r\n const totalChangedNodes: Node[] = [];\r\n const targetChangedAttrs: string[] = [];\r\n let targetStyleChanged: boolean | '' | null | undefined = false;\r\n let contentChanged: boolean | '' | null | undefined = false;\r\n let childListChanged: boolean | '' | null | undefined = false;\r\n\r\n each(mutations, (mutation) => {\r\n const {\r\n attributeName,\r\n target: mutationTarget,\r\n type,\r\n oldValue,\r\n addedNodes,\r\n removedNodes,\r\n } = mutation;\r\n const isAttributesType = type === 'attributes';\r\n const isChildListType = type === 'childList';\r\n const targetIsMutationTarget = target === mutationTarget;\r\n const isAttrChange = isAttributesType && attributeName;\r\n const newValue =\r\n isAttrChange && getAttr(mutationTarget as HTMLElement, attributeName || '');\r\n // narrow down attributeValue type to `string` or `null` but don't overwrite `` with `null`\r\n const attributeValue = isString(newValue) ? newValue : null;\r\n const attributeChanged = isAttrChange && oldValue !== attributeValue;\r\n const styleChangingAttrChanged =\r\n inArray(finalStyleChangingAttributes, attributeName) && attributeChanged;\r\n\r\n // if is content observer and something changed in children\r\n if (isContentObserver && (isChildListType || !targetIsMutationTarget)) {\r\n const contentAttrChanged = isAttributesType && attributeChanged;\r\n const isNestedTarget =\r\n contentAttrChanged &&\r\n _nestedTargetSelector &&\r\n is(mutationTarget, _nestedTargetSelector);\r\n const baseAssertion = isNestedTarget\r\n ? !ignoreTargetChange(mutationTarget, attributeName, oldValue, attributeValue)\r\n : !isAttributesType || contentAttrChanged;\r\n const contentFinalChanged =\r\n baseAssertion && !ignoreContentChange(mutation, !!isNestedTarget, target, options);\r\n\r\n each(addedNodes, (node) => push(totalChangedNodes, node));\r\n each(removedNodes, (node) => push(totalChangedNodes, node));\r\n\r\n contentChanged = contentChanged || contentFinalChanged;\r\n childListChanged = childListChanged || isChildListType;\r\n }\r\n // if is target observer and target attr changed\r\n if (\r\n !isContentObserver &&\r\n targetIsMutationTarget &&\r\n attributeChanged &&\r\n !ignoreTargetChange(mutationTarget, attributeName!, oldValue, attributeValue)\r\n ) {\r\n push(targetChangedAttrs, attributeName);\r\n targetStyleChanged = targetStyleChanged || styleChangingAttrChanged;\r\n }\r\n });\r\n\r\n // adds / removes the new elements from the event content change\r\n updateEventContentChangeElements((selector: string) =>\r\n deduplicateArray(totalChangedNodes).reduce((arr, node) => {\r\n push(arr, find(selector, node));\r\n return is(node, selector) ? push(arr, node) : arr;\r\n }, [])\r\n );\r\n\r\n if (isContentObserver) {\r\n if (!fromRecords && contentChanged) {\r\n (callback as DOMContentObserverCallback)(false);\r\n }\r\n return [false] satisfies Parameters> as Parameters<\r\n DOMObserverCallback\r\n >;\r\n }\r\n\r\n if (!isEmptyArray(targetChangedAttrs) || targetStyleChanged) {\r\n const args = [\r\n deduplicateArray(targetChangedAttrs),\r\n targetStyleChanged,\r\n ] satisfies Parameters & Parameters>;\r\n\r\n if (!fromRecords) {\r\n (callback as DOMTargetObserverCallback).apply(0, args);\r\n }\r\n\r\n return args as Parameters>;\r\n }\r\n }\r\n };\r\n const mutationObserver: MutationObserver = new MutationObserverConstructor!(\r\n bind(observerCallback, false)\r\n );\r\n\r\n return [\r\n () => {\r\n mutationObserver.observe(target, {\r\n attributes: true,\r\n attributeOldValue: true,\r\n attributeFilter: observedAttributes,\r\n subtree: isContentObserver,\r\n childList: isContentObserver,\r\n characterData: isContentObserver,\r\n });\r\n isConnected = true;\r\n\r\n return () => {\r\n if (isConnected) {\r\n destroyEventContentChange();\r\n mutationObserver.disconnect();\r\n isConnected = false;\r\n }\r\n };\r\n },\r\n () => {\r\n if (isConnected) {\r\n return observerCallback(true, mutationObserver.takeRecords());\r\n }\r\n },\r\n ];\r\n};\r\n","import type { SizeObserverPlugin } from '../plugins';\r\nimport {\r\n createCache,\r\n createDOM,\r\n runEachAndClear,\r\n addEventListener,\r\n addClass,\r\n push,\r\n ResizeObserverConstructor,\r\n appendChildren,\r\n domRectHasDimensions,\r\n bind,\r\n noop,\r\n domRectAppeared,\r\n concat,\r\n debounce,\r\n isBoolean,\r\n isArray,\r\n isEmptyArray,\r\n} from '../support';\r\nimport {\r\n classNameSizeObserver,\r\n classNameSizeObserverAppear,\r\n classNameSizeObserverListener,\r\n} from '../classnames';\r\nimport { getStaticPluginModuleInstance, sizeObserverPluginName } from '../plugins';\r\n\r\nexport interface SizeObserverOptions {\r\n /** Whether appearing should be observed. */\r\n _appear?: boolean;\r\n}\r\n\r\nexport interface SizeObserverCallbackParams {\r\n _sizeChanged: boolean;\r\n _appear?: boolean;\r\n}\r\n\r\nexport type SizeObserver = () => () => void;\r\n\r\nlet resizeObserverBoxSupport: boolean | null = null;\r\n\r\n/**\r\n * Creates a size observer which observes any size, padding, border, margin and box-sizing changes of the target element. Depending on the options also direction and appear can be observed.\r\n * @param target The target element which shall be observed.\r\n * @param onSizeChangedCallback The callback which gets called after a size change was detected.\r\n * @param options The options for size detection, whether to observe also direction and appear.\r\n * @returns A object which represents the instance of the size observer.\r\n */\r\nexport const createSizeObserver = (\r\n target: HTMLElement,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSizeChangedCallback: (params: SizeObserverCallbackParams) => any,\r\n options?: SizeObserverOptions\r\n): SizeObserver => {\r\n const { _appear: observeAppearChange } = options || {};\r\n const sizeObserverPlugin =\r\n getStaticPluginModuleInstance(sizeObserverPluginName);\r\n const [updateResizeObserverContentRectCache] = createCache({\r\n _initialValue: false,\r\n _alwaysUpdateValues: true,\r\n });\r\n\r\n return () => {\r\n const destroyFns: (() => void)[] = [];\r\n const polyfillElements = createDOM(\r\n `
`\r\n );\r\n const polyfillRootElement = polyfillElements[0] as HTMLElement;\r\n const polyfillTargetElement = polyfillRootElement.firstChild as HTMLElement;\r\n\r\n const onSizeChangedCallbackProxy = (sizeChangedContext?: ResizeObserverEntry[] | boolean) => {\r\n const isResizeObserverCall = isArray(sizeChangedContext) && !isEmptyArray(sizeChangedContext);\r\n\r\n let skip = false;\r\n let appear = false;\r\n\r\n // if triggered from RO.\r\n if (isResizeObserverCall) {\r\n const resizeObserverEntry = sizeChangedContext[0];\r\n const [currContentRect, , prevContentRect] = updateResizeObserverContentRectCache(\r\n resizeObserverEntry.contentRect\r\n );\r\n const hasDimensions = domRectHasDimensions(currContentRect);\r\n appear = domRectAppeared(currContentRect, prevContentRect);\r\n skip = !appear && !hasDimensions; // skip if display is none or when window resize\r\n }\r\n // else if it triggered with appear from polyfill\r\n else {\r\n appear = sizeChangedContext === true;\r\n }\r\n\r\n if (!skip) {\r\n onSizeChangedCallback({\r\n _sizeChanged: true,\r\n _appear: appear,\r\n });\r\n }\r\n };\r\n\r\n if (ResizeObserverConstructor) {\r\n if (!isBoolean(resizeObserverBoxSupport)) {\r\n const detectSupportResizeObserver = new ResizeObserverConstructor(noop);\r\n detectSupportResizeObserver.observe(target, {\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore -> void === undefined\r\n get box() {\r\n resizeObserverBoxSupport = true;\r\n },\r\n });\r\n resizeObserverBoxSupport = resizeObserverBoxSupport || false;\r\n detectSupportResizeObserver.disconnect();\r\n }\r\n\r\n /*\r\n const { port1, port2 } = new MessageChannel();\r\n const tasks: Set<() => void> = new Set();\r\n const debounceTiming: DebounceTiming = {\r\n _debouncer: (task) => {\r\n tasks.add(task);\r\n port2.postMessage(0);\r\n return () => {\r\n tasks.delete(task);\r\n };\r\n },\r\n };\r\n port1.onmessage = () => {\r\n tasks.forEach((task) => task());\r\n };\r\n */\r\n const debouncedOnSizeChangedCallbackProxy = debounce(onSizeChangedCallbackProxy, {\r\n _debounceTiming: 0,\r\n _maxDebounceTiming: 0,\r\n });\r\n const resizeObserverCallback = (entries: ResizeObserverEntry[]) =>\r\n debouncedOnSizeChangedCallbackProxy(entries);\r\n const contentBoxResizeObserver = new ResizeObserverConstructor(resizeObserverCallback);\r\n contentBoxResizeObserver.observe(resizeObserverBoxSupport ? target : polyfillTargetElement);\r\n\r\n push(destroyFns, [\r\n () => {\r\n contentBoxResizeObserver.disconnect();\r\n /*\r\n port1.close();\r\n port2.close();\r\n tasks.clear();\r\n */\r\n },\r\n !resizeObserverBoxSupport && appendChildren(target, polyfillRootElement),\r\n ]);\r\n\r\n if (resizeObserverBoxSupport) {\r\n const borderBoxResizeObserver = new ResizeObserverConstructor(resizeObserverCallback);\r\n borderBoxResizeObserver.observe(target, {\r\n box: 'border-box',\r\n });\r\n push(destroyFns, () => borderBoxResizeObserver.disconnect());\r\n }\r\n } else if (sizeObserverPlugin) {\r\n const [pluginAppearCallback, pluginDestroyFns] = sizeObserverPlugin(\r\n polyfillTargetElement,\r\n onSizeChangedCallbackProxy,\r\n observeAppearChange\r\n );\r\n push(\r\n destroyFns,\r\n concat(\r\n [\r\n addClass(polyfillRootElement, classNameSizeObserverAppear),\r\n addEventListener(polyfillRootElement, 'animationstart', pluginAppearCallback),\r\n appendChildren(target, polyfillRootElement),\r\n ],\r\n pluginDestroyFns\r\n )\r\n );\r\n } else {\r\n return noop;\r\n }\r\n\r\n return bind(runEachAndClear, destroyFns);\r\n };\r\n};\r\n","import type { WH, CacheValues } from '../support';\r\nimport { createSizeObserver } from './sizeObserver';\r\nimport { classNameTrinsicObserver } from '../classnames';\r\nimport {\r\n createDiv,\r\n getOffsetSize,\r\n runEachAndClear,\r\n createCache,\r\n push,\r\n IntersectionObserverConstructor,\r\n appendChildren,\r\n bind,\r\n} from '../support';\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nexport type TrinsicObserverCallback = (heightIntrinsic: CacheValues) => any;\r\nexport type TrinsicObserver = [\r\n construct: () => () => void,\r\n update: () => void | false | null | undefined | Parameters,\r\n];\r\n\r\n/**\r\n * Creates a trinsic observer which observes changes to intrinsic or extrinsic sizing for the height of the target element.\r\n * @param target The element which shall be observed.\r\n * @param onTrinsicChangedCallback The callback which gets called after a change was detected.\r\n * @returns A object which represents the instance of the trinsic observer.\r\n */\r\nexport const createTrinsicObserver = (\r\n target: HTMLElement,\r\n onTrinsicChangedCallback: TrinsicObserverCallback\r\n): TrinsicObserver => {\r\n let intersectionObserverInstance: undefined | IntersectionObserver;\r\n const isHeightIntrinsic = (ioEntryOrSize: IntersectionObserverEntry | WH): boolean =>\r\n (ioEntryOrSize as WH).h === 0 ||\r\n (ioEntryOrSize as IntersectionObserverEntry).isIntersecting ||\r\n (ioEntryOrSize as IntersectionObserverEntry).intersectionRatio > 0;\r\n const trinsicObserver = createDiv(classNameTrinsicObserver);\r\n const [updateHeightIntrinsicCache] = createCache({\r\n _initialValue: false,\r\n });\r\n const triggerOnTrinsicChangedCallback = (\r\n updateValue: IntersectionObserverEntry | WH | undefined,\r\n fromRecords?: boolean\r\n ): void | Parameters => {\r\n if (updateValue) {\r\n const heightIntrinsic = updateHeightIntrinsicCache(isHeightIntrinsic(updateValue));\r\n const [, heightIntrinsicChanged] = heightIntrinsic;\r\n return (\r\n heightIntrinsicChanged &&\r\n !fromRecords &&\r\n onTrinsicChangedCallback(heightIntrinsic) && [heightIntrinsic]\r\n );\r\n }\r\n };\r\n const intersectionObserverCallback = (\r\n fromRecords: boolean,\r\n entries: IntersectionObserverEntry[]\r\n ) => triggerOnTrinsicChangedCallback(entries.pop(), fromRecords);\r\n\r\n return [\r\n () => {\r\n const destroyFns: (() => void)[] = [];\r\n\r\n if (IntersectionObserverConstructor) {\r\n intersectionObserverInstance = new IntersectionObserverConstructor(\r\n bind(intersectionObserverCallback, false),\r\n { root: target }\r\n );\r\n intersectionObserverInstance.observe(trinsicObserver);\r\n push(destroyFns, () => {\r\n intersectionObserverInstance!.disconnect();\r\n });\r\n } else {\r\n const onSizeChanged = () => {\r\n const newSize = getOffsetSize(trinsicObserver);\r\n triggerOnTrinsicChangedCallback(newSize);\r\n };\r\n push(destroyFns, createSizeObserver(trinsicObserver, onSizeChanged)());\r\n onSizeChanged();\r\n }\r\n\r\n return bind(runEachAndClear, push(destroyFns, appendChildren(target, trinsicObserver)));\r\n },\r\n () =>\r\n intersectionObserverInstance &&\r\n intersectionObserverCallback(true, intersectionObserverInstance.takeRecords()),\r\n ];\r\n};\r\n","import type { Options, OptionsCheckFn, OptionsDebounceValue } from '../../options';\r\nimport type { ScrollbarsHidingPlugin } from '../../plugins';\r\nimport type { SizeObserverCallbackParams } from '../../observers';\r\nimport type { StructureSetupElementsObj } from '../structureSetup/structureSetup.elements';\r\nimport type { Setup, SetupUpdateInfo, StructureSetupState } from '../../setups';\r\nimport type { CacheValues, DebounceLeading, DebounceTiming, WH } from '../../support';\r\nimport type { PlainObject } from '../../typings';\r\nimport { defaultOptionsUpdateDebounceEnv, defaultOptionsUpdateDebounceEvent } from '../../options';\r\nimport { getStaticPluginModuleInstance, scrollbarsHidingPluginName } from '../../plugins';\r\nimport {\r\n classNameScrollbar,\r\n dataAttributeHost,\r\n dataAttributeViewport,\r\n dataValueViewportMeasuring,\r\n dataValueViewportArrange,\r\n dataValueNoClipping,\r\n} from '../../classnames';\r\nimport { getEnvironment } from '../../environment';\r\nimport { createDOMObserver, createSizeObserver, createTrinsicObserver } from '../../observers';\r\nimport {\r\n ResizeObserverConstructor,\r\n assignDeep,\r\n closest,\r\n createCache,\r\n debounce,\r\n equalWH,\r\n getFractionalSize,\r\n isArray,\r\n isFunction,\r\n isNumber,\r\n isPlainObject,\r\n keys,\r\n liesBetween,\r\n getScrollSize,\r\n getElementScroll,\r\n scrollElementTo,\r\n domRectAppeared,\r\n concat,\r\n getStyles,\r\n hasAttrClass,\r\n} from '../../support';\r\n\r\nexport interface ObserversSetupState {\r\n _heightIntrinsic: boolean;\r\n _directionIsRTL: boolean;\r\n}\r\n\r\nexport interface ObserversSetupUpdateInfo extends SetupUpdateInfo {\r\n _takeRecords?: boolean;\r\n}\r\n\r\nexport type ObserversSetupUpdateHints = {\r\n _sizeChanged?: boolean;\r\n _directionChanged?: boolean;\r\n _heightIntrinsicChanged?: boolean;\r\n _hostMutation?: boolean;\r\n _contentMutation?: boolean;\r\n _appear?: boolean;\r\n _scrollbarSizeChanged?: boolean;\r\n};\r\n\r\nexport type ObserversSetup = Setup<\r\n ObserversSetupUpdateInfo,\r\n ObserversSetupState,\r\n ObserversSetupUpdateHints\r\n>;\r\n\r\nexport const createObserversSetup = (\r\n structureSetupElements: StructureSetupElementsObj,\r\n structureSetupState: StructureSetupState,\r\n getCurrentOption: OptionsCheckFn,\r\n onObserversUpdated: (updateHints: ObserversSetupUpdateHints) => void\r\n): ObserversSetup => {\r\n // latest debounce options\r\n let debounceMutation: OptionsDebounceValue | undefined;\r\n let debounceResize: OptionsDebounceValue | undefined;\r\n let debounceEvent: OptionsDebounceValue | undefined;\r\n let debounceEnv: OptionsDebounceValue | undefined;\r\n\r\n let updateContentMutationObserver: (() => void) | undefined;\r\n let destroyContentMutationObserver: (() => void) | undefined;\r\n let prevContentRect: DOMRectReadOnly | undefined;\r\n let prevDirectionIsRTL: boolean | undefined;\r\n const hostSelector = `[${dataAttributeHost}]`;\r\n\r\n // TODO: observer textarea attrs if textarea\r\n\r\n const viewportSelector = `[${dataAttributeViewport}]`;\r\n const baseStyleChangingAttrs = ['id', 'class', 'style', 'open', 'wrap', 'cols', 'rows'];\r\n const {\r\n _target,\r\n _host,\r\n _viewport,\r\n _scrollOffsetElement,\r\n _content,\r\n _viewportIsTarget,\r\n _isBody,\r\n _viewportHasClass,\r\n _viewportAddRemoveClass,\r\n _removeScrollObscuringStyles,\r\n } = structureSetupElements;\r\n const getDirectionIsRTL = (elm: HTMLElement): boolean => getStyles(elm, 'direction') === 'rtl';\r\n const createDebouncedObservesUpdate = () => {\r\n let currDebounceTiming: DebounceTiming;\r\n let currMaxDebounceTiming: DebounceTiming;\r\n let currDebounceLeading: DebounceLeading;\r\n const debouncedFn = debounce(onObserversUpdated, {\r\n _debounceTiming: () => currDebounceTiming,\r\n _maxDebounceTiming: () => currMaxDebounceTiming,\r\n _leading: () => currDebounceLeading,\r\n _mergeParams(prev, curr) {\r\n const [prevObj] = prev;\r\n const [currObj] = curr;\r\n return [\r\n concat(keys(prevObj), keys(currObj)).reduce((obj, key) => {\r\n obj[key] = prevObj[key as keyof typeof prevObj] || currObj[key as keyof typeof currObj];\r\n return obj;\r\n }, {} as PlainObject),\r\n ] as [Partial];\r\n },\r\n });\r\n const fn = (\r\n updateHints: ObserversSetupUpdateHints,\r\n debounceOption: OptionsDebounceValue | false | undefined\r\n ) => {\r\n if (isArray(debounceOption)) {\r\n const [timing, maxTiming, leading] = debounceOption;\r\n currDebounceTiming = timing;\r\n currMaxDebounceTiming = maxTiming;\r\n currDebounceLeading = leading;\r\n } else if (isNumber(debounceOption)) {\r\n currDebounceTiming = debounceOption;\r\n currMaxDebounceTiming = false;\r\n currDebounceLeading = false;\r\n } else {\r\n currDebounceTiming = false;\r\n currMaxDebounceTiming = false;\r\n currDebounceLeading = false;\r\n }\r\n\r\n debouncedFn(updateHints);\r\n };\r\n fn._flush = debouncedFn._flush;\r\n\r\n return fn;\r\n };\r\n\r\n const state: ObserversSetupState = {\r\n _heightIntrinsic: false,\r\n _directionIsRTL: getDirectionIsRTL(_target),\r\n };\r\n const env = getEnvironment();\r\n const scrollbarsHidingPlugin = getStaticPluginModuleInstance(\r\n scrollbarsHidingPluginName\r\n );\r\n const [updateContentSizeCache] = createCache>(\r\n {\r\n _equal: equalWH,\r\n _initialValue: { w: 0, h: 0 },\r\n },\r\n () => {\r\n const undoViewportArrange =\r\n scrollbarsHidingPlugin &&\r\n scrollbarsHidingPlugin._viewportArrangement(\r\n structureSetupElements,\r\n structureSetupState,\r\n state,\r\n env,\r\n getCurrentOption\r\n )._undoViewportArrange;\r\n\r\n const viewportIsTargetBody = _isBody && _viewportIsTarget;\r\n const noClipping =\r\n !viewportIsTargetBody && hasAttrClass(_host, dataAttributeHost, dataValueNoClipping);\r\n const isArranged = !_viewportIsTarget && _viewportHasClass(dataValueViewportArrange);\r\n const scrollOffset = isArranged && getElementScroll(_scrollOffsetElement);\r\n const revertScrollObscuringStyles = scrollOffset && _removeScrollObscuringStyles();\r\n\r\n const revertMeasuring = _viewportAddRemoveClass(dataValueViewportMeasuring, noClipping);\r\n const redoViewportArrange = isArranged && undoViewportArrange && undoViewportArrange();\r\n const viewportScroll = getScrollSize(_viewport);\r\n const fractional = getFractionalSize(_viewport);\r\n\r\n if (redoViewportArrange) {\r\n redoViewportArrange();\r\n }\r\n\r\n scrollElementTo(_scrollOffsetElement, scrollOffset);\r\n if (revertScrollObscuringStyles) {\r\n revertScrollObscuringStyles();\r\n }\r\n if (noClipping) {\r\n revertMeasuring();\r\n }\r\n\r\n return {\r\n w: viewportScroll.w + fractional.w,\r\n h: viewportScroll.h + fractional.h,\r\n };\r\n }\r\n );\r\n const onObserversUpdatedDebounced = createDebouncedObservesUpdate();\r\n const setDirection = (updateHints: ObserversSetupUpdateHints) => {\r\n const newDirectionIsRTL = getDirectionIsRTL(_target);\r\n assignDeep(updateHints, { _directionChanged: prevDirectionIsRTL !== newDirectionIsRTL });\r\n assignDeep(state, { _directionIsRTL: newDirectionIsRTL });\r\n prevDirectionIsRTL = newDirectionIsRTL;\r\n };\r\n const onTrinsicChanged = (\r\n heightIntrinsicCache: CacheValues,\r\n fromRecords?: true\r\n ): ObserversSetupUpdateHints => {\r\n const [heightIntrinsic, heightIntrinsicChanged] = heightIntrinsicCache;\r\n const updateHints: ObserversSetupUpdateHints = {\r\n _heightIntrinsicChanged: heightIntrinsicChanged,\r\n };\r\n\r\n assignDeep(state, { _heightIntrinsic: heightIntrinsic });\r\n\r\n if (!fromRecords) {\r\n onObserversUpdated(updateHints);\r\n }\r\n\r\n return updateHints;\r\n };\r\n const onSizeChanged = ({ _sizeChanged, _appear }: SizeObserverCallbackParams) => {\r\n // only don't debounce appear since it shouldn't happen that frequently\r\n const updateFn = _appear ? onObserversUpdated : onObserversUpdatedDebounced;\r\n const updateHints: ObserversSetupUpdateHints = {\r\n _sizeChanged: _sizeChanged || _appear,\r\n _appear,\r\n };\r\n\r\n setDirection(updateHints);\r\n updateFn(updateHints, debounceResize);\r\n };\r\n const onContentMutation = (\r\n contentChangedThroughEvent: boolean,\r\n fromRecords?: true\r\n ): ObserversSetupUpdateHints => {\r\n const [, _contentMutation] = updateContentSizeCache();\r\n const updateHints: ObserversSetupUpdateHints = {\r\n _contentMutation,\r\n };\r\n\r\n setDirection(updateHints);\r\n\r\n if (_contentMutation && !fromRecords) {\r\n onObserversUpdatedDebounced(\r\n updateHints,\r\n contentChangedThroughEvent ? debounceEvent : debounceMutation\r\n );\r\n }\r\n\r\n return updateHints;\r\n };\r\n const onHostMutation = (\r\n targetChangedAttrs: string[],\r\n targetStyleChanged: boolean,\r\n fromRecords?: true\r\n ): ObserversSetupUpdateHints => {\r\n const updateHints: ObserversSetupUpdateHints = {\r\n _hostMutation: targetStyleChanged,\r\n };\r\n\r\n setDirection(updateHints);\r\n\r\n if (targetStyleChanged && !fromRecords) {\r\n onObserversUpdatedDebounced(updateHints, debounceMutation);\r\n }\r\n /*\r\n else if (!_viewportIsTarget) {\r\n updateViewportAttrsFromHost(targetChangedAttrs);\r\n }\r\n */\r\n\r\n return updateHints;\r\n };\r\n const [constructTrinsicObserver, updateTrinsicObserver] = _content\r\n ? createTrinsicObserver(_host, onTrinsicChanged)\r\n : [];\r\n const constructSizeObserver =\r\n !_viewportIsTarget &&\r\n createSizeObserver(_host, onSizeChanged, {\r\n _appear: true,\r\n });\r\n const [constructHostMutationObserver, updateHostMutationObserver] = createDOMObserver(\r\n _host,\r\n false,\r\n onHostMutation,\r\n {\r\n _styleChangingAttributes: baseStyleChangingAttrs,\r\n _attributes: baseStyleChangingAttrs,\r\n }\r\n );\r\n const viewportIsTargetResizeObserver =\r\n _viewportIsTarget &&\r\n ResizeObserverConstructor &&\r\n new ResizeObserverConstructor((entries) => {\r\n const currContentRect = entries[entries.length - 1].contentRect;\r\n onSizeChanged({\r\n _sizeChanged: true,\r\n _appear: domRectAppeared(currContentRect, prevContentRect),\r\n });\r\n prevContentRect = currContentRect;\r\n });\r\n\r\n return [\r\n () => {\r\n // order is matter!\r\n // updateViewportAttrsFromHost();\r\n if (viewportIsTargetResizeObserver) {\r\n viewportIsTargetResizeObserver.observe(_host);\r\n }\r\n const destroySizeObserver = constructSizeObserver && constructSizeObserver();\r\n const destroyTrinsicObserver = constructTrinsicObserver && constructTrinsicObserver();\r\n const destroyHostMutationObserver = constructHostMutationObserver();\r\n const removeResizeListener = env._addResizeListener((_scrollbarSizeChanged) => {\r\n const [, _contentMutation] = updateContentSizeCache();\r\n onObserversUpdatedDebounced(\r\n { _scrollbarSizeChanged, _contentMutation, _sizeChanged: _isBody },\r\n debounceEnv\r\n );\r\n });\r\n\r\n return () => {\r\n if (viewportIsTargetResizeObserver) {\r\n viewportIsTargetResizeObserver.disconnect();\r\n }\r\n if (destroySizeObserver) {\r\n destroySizeObserver();\r\n }\r\n if (destroyTrinsicObserver) {\r\n destroyTrinsicObserver();\r\n }\r\n if (destroyContentMutationObserver) {\r\n destroyContentMutationObserver();\r\n }\r\n destroyHostMutationObserver();\r\n removeResizeListener();\r\n };\r\n },\r\n ({ _checkOption, _takeRecords, _force }) => {\r\n const updateHints: ObserversSetupUpdateHints = {};\r\n\r\n const [ignoreMutation] = _checkOption('update.ignoreMutation');\r\n const [attributes, attributesChanged] = _checkOption('update.attributes');\r\n const [elementEvents, elementEventsChanged] = _checkOption('update.elementEvents');\r\n const [debounceValue, debounceChanged] = _checkOption('update.debounce');\r\n const contentMutationObserverChanged = elementEventsChanged || attributesChanged;\r\n const takeRecords = _takeRecords || _force;\r\n const ignoreMutationFromOptions = (mutation: MutationRecord) =>\r\n isFunction(ignoreMutation) && ignoreMutation(mutation);\r\n\r\n if (contentMutationObserverChanged) {\r\n if (updateContentMutationObserver) {\r\n updateContentMutationObserver();\r\n }\r\n if (destroyContentMutationObserver) {\r\n destroyContentMutationObserver();\r\n }\r\n\r\n const [construct, update] = createDOMObserver(\r\n _content || _viewport,\r\n true,\r\n onContentMutation,\r\n {\r\n _attributes: concat(baseStyleChangingAttrs, attributes || []),\r\n _eventContentChange: elementEvents,\r\n _nestedTargetSelector: hostSelector,\r\n _ignoreContentChange: (mutation, isNestedTarget) => {\r\n const { target: mutationTarget, attributeName } = mutation;\r\n const ignore =\r\n !isNestedTarget && attributeName && !_viewportIsTarget\r\n ? liesBetween(mutationTarget, hostSelector, viewportSelector)\r\n : false;\r\n return (\r\n ignore ||\r\n !!closest(mutationTarget, `.${classNameScrollbar}`) || // ignore explicitely all scrollbar elements\r\n !!ignoreMutationFromOptions(mutation)\r\n );\r\n },\r\n }\r\n );\r\n\r\n destroyContentMutationObserver = construct();\r\n updateContentMutationObserver = update;\r\n }\r\n\r\n if (debounceChanged) {\r\n onObserversUpdatedDebounced._flush();\r\n // parse and distribute the debounce option\r\n if (isArray(debounceValue) || isNumber(debounceValue)) {\r\n // deprecated behavior: Value applies to mutation. resize and event are undefined\r\n debounceMutation = debounceValue;\r\n debounceResize = false;\r\n debounceEvent = defaultOptionsUpdateDebounceEvent;\r\n debounceEnv = defaultOptionsUpdateDebounceEnv;\r\n } else if (isPlainObject(debounceValue)) {\r\n debounceMutation = debounceValue.mutation;\r\n debounceResize = debounceValue.resize;\r\n debounceEvent = debounceValue.event;\r\n debounceEnv = debounceValue.env;\r\n } else {\r\n debounceMutation = false;\r\n debounceResize = false;\r\n debounceEvent = false;\r\n debounceEnv = false;\r\n }\r\n }\r\n\r\n if (takeRecords) {\r\n const hostUpdateResult = updateHostMutationObserver();\r\n const trinsicUpdateResult = updateTrinsicObserver && updateTrinsicObserver();\r\n const contentUpdateResult =\r\n updateContentMutationObserver && updateContentMutationObserver();\r\n\r\n if (hostUpdateResult) {\r\n assignDeep(\r\n updateHints,\r\n onHostMutation(hostUpdateResult[0], hostUpdateResult[1], takeRecords)\r\n );\r\n }\r\n\r\n if (trinsicUpdateResult) {\r\n assignDeep(updateHints, onTrinsicChanged(trinsicUpdateResult[0], takeRecords));\r\n }\r\n\r\n if (contentUpdateResult) {\r\n assignDeep(updateHints, onContentMutation(contentUpdateResult[0], takeRecords));\r\n }\r\n }\r\n\r\n setDirection(updateHints);\r\n\r\n return updateHints;\r\n },\r\n state,\r\n ];\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport type { DeepPartial } from './typings';\r\nimport { isFunction, isHTMLElement, isNull, isUndefined } from './support';\r\nimport { getEnvironment } from './environment';\r\n\r\ntype FallbackStaticInitializtationElement =\r\n Extract, (...args: Args) => any> extends (\r\n ...args: infer P\r\n ) => any\r\n ? (...args: P) => HTMLElement\r\n : never;\r\ntype FallbackDynamicInitializtationElement =\r\n Extract, (...args: Args) => any> extends (\r\n ...args: infer P\r\n ) => any\r\n ? (...args: P) => HTMLElement\r\n : never;\r\n\r\nexport type StaticInitialization = HTMLElement | false | null;\r\nexport type DynamicInitialization = HTMLElement | boolean | null;\r\n\r\n/**\r\n * Static elements are elements which MUST be present in the final DOM.\r\n * If an `HTMLElement` is passed the passed element will be taken as the repsective element.\r\n * With `false`, `null` or `undefined` an appropriate element is generated automatically.\r\n */\r\nexport type StaticInitializationElement =\r\n /** A function which returns the the StaticInitialization value. */\r\n | ((...args: Args) => StaticInitialization)\r\n /** The StaticInitialization value. */\r\n | StaticInitialization;\r\n\r\n/**\r\n * Dynamic elements are elements which CAN be present in the final DOM.\r\n * If an `HTMLElement`is passed the passed element will be taken as the repsective element.\r\n * With `true` an appropriate element is generated automatically.\r\n * With `false`, `null` or `undefined` the element won't be in the DOM.\r\n */\r\nexport type DynamicInitializationElement =\r\n /** A function which returns the the DynamicInitialization value. */\r\n | ((...args: Args) => DynamicInitialization)\r\n /** The DynamicInitialization value. */\r\n | DynamicInitialization;\r\n\r\n/**\r\n * Describes how a OverlayScrollbar instance should initialize.\r\n */\r\nexport type Initialization = {\r\n /**\r\n * Customizes which elements are generated and used.\r\n * If a function is passed to any of the fields, it receives the `target` element as its argument.\r\n * Any passed function should be a \"pure\" function. (same input produces same output)\r\n */\r\n elements: {\r\n /**\r\n * Assign a custom element as the host element.\r\n * Only relevant if the target element is a Textarea.\r\n */\r\n host: StaticInitializationElement<[target: InitializationTargetElement]>;\r\n /** Assign a custom element as the viewport element. */\r\n viewport: StaticInitializationElement<[target: InitializationTargetElement]>;\r\n /** Assign a custom element as the padding element or force the element not to be generated. */\r\n padding: DynamicInitializationElement<[target: InitializationTargetElement]>;\r\n /** Assign a custom element as the content element or force the element not to be generated. */\r\n content: DynamicInitializationElement<[target: InitializationTargetElement]>;\r\n };\r\n /**\r\n * Customizes elements related to the scrollbars.\r\n * If a function is passed, it receives the `target`, `host` and `viewport` element as arguments.\r\n */\r\n scrollbars: {\r\n slot: DynamicInitializationElement<\r\n [target: InitializationTargetElement, host: HTMLElement, viewport: HTMLElement]\r\n >;\r\n };\r\n /**\r\n * Customizes the cancelation behavior.\r\n */\r\n cancel: {\r\n /** Whether the initialization shall be canceled if the native scrollbars are overlaid. */\r\n nativeScrollbarsOverlaid: boolean;\r\n /**\r\n * Whether the initialization shall be canceled if its applied to a body element.\r\n * With `true` an initialization is always canceled, with `false` its never canceled.\r\n * With `null` the initialization will only be canceled when the initialization would affect the browsers functionality. (window.scrollTo, mobile browser behavior etc.)\r\n */\r\n body: boolean | null;\r\n };\r\n};\r\n\r\nexport type PartialInitialization = DeepPartial;\r\n\r\n/** The initialization target element. */\r\nexport type InitializationTargetElement = HTMLElement; // | HTMLTextAreaElement;\r\n\r\n/**\r\n * The initialization target object.\r\n * OverlayScrollbars({ target: myElement }) is equivalent to OverlayScrollbars(myElement).\r\n */\r\nexport type InitializationTargetObject = PartialInitialization & {\r\n target: InitializationTargetElement;\r\n};\r\n\r\n/** The initialization target. */\r\nexport type InitializationTarget = InitializationTargetElement | InitializationTargetObject;\r\n\r\nexport const resolveInitialization = (\r\n args: any,\r\n value: any\r\n): T => (isFunction(value) ? value.apply(0, args) : value);\r\n\r\nexport const staticInitializationElement = (\r\n args: Args,\r\n fallbackStaticInitializationElement: FallbackStaticInitializtationElement,\r\n defaultStaticInitializationElement: StaticInitializationElement,\r\n staticInitializationElementValue?: StaticInitializationElement\r\n): HTMLElement => {\r\n const staticInitialization = isUndefined(staticInitializationElementValue)\r\n ? defaultStaticInitializationElement\r\n : staticInitializationElementValue;\r\n const resolvedInitialization = resolveInitialization(\r\n args,\r\n staticInitialization\r\n );\r\n return resolvedInitialization || fallbackStaticInitializationElement.apply(0, args);\r\n};\r\n\r\nexport const dynamicInitializationElement = (\r\n args: Args,\r\n fallbackDynamicInitializationElement: FallbackDynamicInitializtationElement,\r\n defaultDynamicInitializationElement: DynamicInitializationElement,\r\n dynamicInitializationElementValue?: DynamicInitializationElement\r\n): HTMLElement | false => {\r\n const dynamicInitialization = isUndefined(dynamicInitializationElementValue)\r\n ? defaultDynamicInitializationElement\r\n : dynamicInitializationElementValue;\r\n const resolvedInitialization = resolveInitialization(\r\n args,\r\n dynamicInitialization\r\n );\r\n return (\r\n !!resolvedInitialization &&\r\n (isHTMLElement(resolvedInitialization)\r\n ? resolvedInitialization\r\n : fallbackDynamicInitializationElement.apply(0, args))\r\n );\r\n};\r\n\r\nexport const cancelInitialization = (\r\n isBody: boolean,\r\n cancelInitializationValue?: DeepPartial | false | null | undefined\r\n): boolean => {\r\n const { nativeScrollbarsOverlaid, body } = cancelInitializationValue || {};\r\n const { _nativeScrollbarsOverlaid, _nativeScrollbarsHiding, _getDefaultInitialization } =\r\n getEnvironment();\r\n const { nativeScrollbarsOverlaid: defaultNativeScrollbarsOverlaid, body: defaultbody } =\r\n _getDefaultInitialization().cancel;\r\n\r\n const resolvedNativeScrollbarsOverlaid =\r\n nativeScrollbarsOverlaid ?? defaultNativeScrollbarsOverlaid;\r\n const resolvedDocumentScrollingElement = isUndefined(body) ? defaultbody : body;\r\n\r\n const finalNativeScrollbarsOverlaid =\r\n (_nativeScrollbarsOverlaid.x || _nativeScrollbarsOverlaid.y) &&\r\n resolvedNativeScrollbarsOverlaid;\r\n const finalDocumentScrollingElement =\r\n isBody &&\r\n (isNull(resolvedDocumentScrollingElement)\r\n ? !_nativeScrollbarsHiding\r\n : resolvedDocumentScrollingElement);\r\n\r\n return !!finalNativeScrollbarsOverlaid || !!finalDocumentScrollingElement;\r\n};\r\n","import type { XY } from '../../support';\r\nimport type {\r\n InitializationTarget,\r\n InitializationTargetElement,\r\n InitializationTargetObject,\r\n} from '../../initialization';\r\nimport type { StructureSetupElementsObj } from '../structureSetup/structureSetup.elements';\r\nimport type { ScrollbarsSetupEvents } from './scrollbarsSetup.events';\r\nimport type { StyleObject } from '../../typings';\r\nimport type { StructureSetupState } from '../structureSetup';\r\nimport { dynamicInitializationElement as generalDynamicInitializationElement } from '../../initialization';\r\nimport { getEnvironment } from '../../environment';\r\nimport {\r\n classNameScrollbar,\r\n classNameScrollbarHorizontal,\r\n classNameScrollbarVertical,\r\n classNameScrollbarTrack,\r\n classNameScrollbarHandle,\r\n} from '../../classnames';\r\nimport {\r\n addClass,\r\n appendChildren,\r\n createDiv,\r\n each,\r\n getTrasformTranslateValue,\r\n isBoolean,\r\n parent,\r\n push,\r\n removeClass,\r\n removeElements,\r\n runEachAndClear,\r\n scrollT,\r\n bind,\r\n getElementScroll,\r\n numberToCssPx,\r\n setStyles,\r\n capNumber,\r\n getScrollCoordinatesPercent,\r\n isDefaultDirectionScrollCoordinates,\r\n roundCssNumber,\r\n} from '../../support';\r\n\r\nexport interface ScrollbarStructure {\r\n _scrollbar: HTMLElement;\r\n _track: HTMLElement;\r\n _handle: HTMLElement;\r\n}\r\n\r\nexport interface ScrollbarsSetupElement {\r\n _scrollbarStructures: ScrollbarStructure[];\r\n _clone: () => ScrollbarStructure;\r\n _style: (\r\n elmStyle: (\r\n scrollbarStructure: ScrollbarStructure\r\n ) => [HTMLElement | false | null | undefined, StyleObject]\r\n ) => void;\r\n}\r\n\r\nexport interface ScrollbarsSetupElementsObj {\r\n _scrollbarsAddRemoveClass: (\r\n classNames: string | false | null | undefined,\r\n add?: boolean,\r\n isHorizontal?: boolean\r\n ) => void;\r\n _refreshScrollbarsHandleLength: () => void;\r\n _refreshScrollbarsHandleOffset: () => void;\r\n _refreshScrollbarsScrollbarOffset: () => void;\r\n _refreshScrollbarsScrollCoordinates: () => void;\r\n _horizontal: ScrollbarsSetupElement;\r\n _vertical: ScrollbarsSetupElement;\r\n}\r\n\r\nexport type ScrollbarsSetupElements = [\r\n elements: ScrollbarsSetupElementsObj,\r\n appendElements: () => () => void,\r\n];\r\n\r\ntype ScrollbarStyleFn = (\r\n scrollbarStructure: ScrollbarStructure\r\n) => [HTMLElement | false | null | undefined, StyleObject | false | null | undefined];\r\n\r\nexport const createScrollbarsSetupElements = (\r\n target: InitializationTarget,\r\n structureSetupElements: StructureSetupElementsObj,\r\n structureSetupState: StructureSetupState,\r\n scrollbarsSetupEvents: ScrollbarsSetupEvents\r\n): ScrollbarsSetupElements => {\r\n const cssCustomPropViewportPercent = '--os-viewport-percent';\r\n const cssCustomPropScrollPercent = '--os-scroll-percent';\r\n const cssCustomPropScrollDirection = '--os-scroll-direction';\r\n const { _getDefaultInitialization } = getEnvironment();\r\n const { scrollbars: defaultInitScrollbars } = _getDefaultInitialization();\r\n const { slot: defaultInitScrollbarsSlot } = defaultInitScrollbars;\r\n const {\r\n _target,\r\n _host,\r\n _viewport,\r\n _targetIsElm,\r\n _scrollOffsetElement,\r\n _isBody,\r\n _viewportIsTarget,\r\n } = structureSetupElements;\r\n const { scrollbars: scrollbarsInit } = (_targetIsElm ? {} : target) as InitializationTargetObject;\r\n const { slot: initScrollbarsSlot } = scrollbarsInit || {};\r\n const destroyFns: (() => void)[] = [];\r\n const horizontalScrollbars: ScrollbarStructure[] = [];\r\n const verticalScrollbars: ScrollbarStructure[] = [];\r\n const evaluatedScrollbarSlot = generalDynamicInitializationElement<\r\n [InitializationTargetElement, HTMLElement, HTMLElement]\r\n >(\r\n [_target, _host, _viewport],\r\n () => (_viewportIsTarget && _isBody ? _target : _host),\r\n defaultInitScrollbarsSlot,\r\n initScrollbarsSlot\r\n );\r\n\r\n const initScrollTimeline = (axis: keyof XY) => {\r\n if (scrollT) {\r\n let currAnimation: Animation | null = null;\r\n let currAnimationTransform: string[] = [];\r\n const timeline = new scrollT({\r\n source: _scrollOffsetElement,\r\n axis,\r\n });\r\n const cancelAnimation = () => {\r\n if (currAnimation) {\r\n currAnimation.cancel();\r\n }\r\n currAnimation = null;\r\n };\r\n const _setScrollPercentAnimation = (structure: ScrollbarStructure) => {\r\n const { _scrollCoordinates } = structureSetupState;\r\n const defaultDirectionScroll =\r\n isDefaultDirectionScrollCoordinates(_scrollCoordinates)[axis];\r\n const isHorizontal = axis === 'x';\r\n const transformArray = [\r\n getTrasformTranslateValue(0, isHorizontal),\r\n getTrasformTranslateValue(`calc(-100% + 100cq${isHorizontal ? 'w' : 'h'})`, isHorizontal),\r\n ];\r\n const transform = defaultDirectionScroll ? transformArray : transformArray.reverse();\r\n\r\n // if the animation keyframes are identical, do nothing and keep current animation\r\n if (\r\n currAnimationTransform[0] === transform[0] &&\r\n currAnimationTransform[1] === transform[1]\r\n ) {\r\n return cancelAnimation;\r\n }\r\n\r\n currAnimationTransform = transform;\r\n\r\n cancelAnimation();\r\n currAnimation = structure._handle.animate(\r\n {\r\n // dummy keyframe which fixes bug where the scrollbar handle is reverted to origin position when it should be at its max position\r\n clear: ['left'],\r\n // transform is a temporary fix for: https://github.com/KingSora/OverlayScrollbars/issues/705\r\n // can be reverted to just animate \"cssCustomPropScrollPercent\" when browsers implement an optimization possibility\r\n transform,\r\n // [cssCustomPropScrollPercent]: [0, 1],\r\n },\r\n {\r\n timeline,\r\n }\r\n );\r\n\r\n return cancelAnimation;\r\n };\r\n\r\n return {\r\n _setScrollPercentAnimation,\r\n };\r\n }\r\n };\r\n const scrollTimeline = {\r\n x: initScrollTimeline('x'),\r\n y: initScrollTimeline('y'),\r\n };\r\n const getViewportPercent = () => {\r\n const { _overflowAmount, _overflowEdge } = structureSetupState;\r\n const getAxisValue = (axisViewportSize: number, axisOverflowAmount: number) =>\r\n capNumber(0, 1, axisViewportSize / (axisViewportSize + axisOverflowAmount) || 0);\r\n\r\n return {\r\n x: getAxisValue(_overflowEdge.x, _overflowAmount.x),\r\n y: getAxisValue(_overflowEdge.y, _overflowAmount.y),\r\n };\r\n };\r\n const scrollbarStructureAddRemoveClass = (\r\n scrollbarStructures: ScrollbarStructure[],\r\n classNames: string | false | null | undefined,\r\n add?: boolean\r\n ) => {\r\n const action = add ? addClass : removeClass;\r\n each(scrollbarStructures, (scrollbarStructure) => {\r\n action(scrollbarStructure._scrollbar, classNames);\r\n });\r\n };\r\n const scrollbarStyle = (\r\n scrollbarStructures: ScrollbarStructure[],\r\n elmStyle: ScrollbarStyleFn\r\n ) => {\r\n each(scrollbarStructures, (scrollbarStructure) => {\r\n const [elm, styles] = elmStyle(scrollbarStructure);\r\n setStyles(elm, styles);\r\n });\r\n };\r\n const scrollbarsAddRemoveClass = (\r\n className: string | false | null | undefined,\r\n add?: boolean,\r\n onlyHorizontal?: boolean\r\n ) => {\r\n const singleAxis = isBoolean(onlyHorizontal);\r\n const runHorizontal = singleAxis ? onlyHorizontal : true;\r\n const runVertical = singleAxis ? !onlyHorizontal : true;\r\n if (runHorizontal) {\r\n scrollbarStructureAddRemoveClass(horizontalScrollbars, className, add);\r\n }\r\n if (runVertical) {\r\n scrollbarStructureAddRemoveClass(verticalScrollbars, className, add);\r\n }\r\n };\r\n const refreshScrollbarsHandleLength = () => {\r\n const viewportPercent = getViewportPercent();\r\n const createScrollbarStyleFn =\r\n (axisViewportPercent: number): ScrollbarStyleFn =>\r\n (structure: ScrollbarStructure) => [\r\n structure._scrollbar,\r\n {\r\n [cssCustomPropViewportPercent]: roundCssNumber(axisViewportPercent) + '',\r\n },\r\n ];\r\n\r\n scrollbarStyle(horizontalScrollbars, createScrollbarStyleFn(viewportPercent.x));\r\n scrollbarStyle(verticalScrollbars, createScrollbarStyleFn(viewportPercent.y));\r\n };\r\n const refreshScrollbarsHandleOffset = () => {\r\n if (!scrollT) {\r\n const { _scrollCoordinates } = structureSetupState;\r\n const scrollPercent = getScrollCoordinatesPercent(\r\n _scrollCoordinates,\r\n getElementScroll(_scrollOffsetElement)\r\n );\r\n const createScrollbarStyleFn =\r\n (axisScrollPercent: number): ScrollbarStyleFn =>\r\n (structure: ScrollbarStructure) => [\r\n structure._scrollbar,\r\n {\r\n [cssCustomPropScrollPercent]: roundCssNumber(axisScrollPercent) + '',\r\n },\r\n ];\r\n\r\n scrollbarStyle(horizontalScrollbars, createScrollbarStyleFn(scrollPercent.x));\r\n scrollbarStyle(verticalScrollbars, createScrollbarStyleFn(scrollPercent.y));\r\n }\r\n };\r\n const refreshScrollbarsScrollCoordinates = () => {\r\n const { _scrollCoordinates } = structureSetupState;\r\n const defaultDirectionScroll = isDefaultDirectionScrollCoordinates(_scrollCoordinates);\r\n const createScrollbarStyleFn =\r\n (axisIsDefaultDirectionScrollCoordinates: boolean): ScrollbarStyleFn =>\r\n (structure: ScrollbarStructure) => [\r\n structure._scrollbar,\r\n {\r\n [cssCustomPropScrollDirection]: axisIsDefaultDirectionScrollCoordinates ? '0' : '1',\r\n },\r\n ];\r\n\r\n scrollbarStyle(horizontalScrollbars, createScrollbarStyleFn(defaultDirectionScroll.x));\r\n scrollbarStyle(verticalScrollbars, createScrollbarStyleFn(defaultDirectionScroll.y));\r\n\r\n // temporary fix for: https://github.com/KingSora/OverlayScrollbars/issues/705\r\n if (scrollT) {\r\n horizontalScrollbars.forEach(scrollTimeline.x!._setScrollPercentAnimation);\r\n verticalScrollbars.forEach(scrollTimeline.y!._setScrollPercentAnimation);\r\n }\r\n };\r\n const refreshScrollbarsScrollbarOffset = () => {\r\n if (_viewportIsTarget && !_isBody) {\r\n const { _overflowAmount, _scrollCoordinates } = structureSetupState;\r\n const isDefaultDirectionScroll = isDefaultDirectionScrollCoordinates(_scrollCoordinates);\r\n const scrollPercent = getScrollCoordinatesPercent(\r\n _scrollCoordinates,\r\n getElementScroll(_scrollOffsetElement)\r\n );\r\n const styleScrollbarPosition: ScrollbarStyleFn = (structure: ScrollbarStructure) => {\r\n const { _scrollbar } = structure;\r\n const elm = parent(_scrollbar) === _viewport && _scrollbar;\r\n const getTranslateValue = (\r\n axisScrollPercent: number,\r\n axisOverflowAmount: number,\r\n axisIsDefaultCoordinates: boolean\r\n ) => {\r\n const px = axisOverflowAmount * axisScrollPercent;\r\n return numberToCssPx(axisIsDefaultCoordinates ? px : -px);\r\n };\r\n\r\n return [\r\n elm,\r\n elm && {\r\n transform: getTrasformTranslateValue({\r\n x: getTranslateValue(scrollPercent.x, _overflowAmount.x, isDefaultDirectionScroll.x),\r\n y: getTranslateValue(scrollPercent.y, _overflowAmount.y, isDefaultDirectionScroll.y),\r\n }),\r\n },\r\n ];\r\n };\r\n\r\n scrollbarStyle(horizontalScrollbars, styleScrollbarPosition);\r\n scrollbarStyle(verticalScrollbars, styleScrollbarPosition);\r\n }\r\n };\r\n const generateScrollbarDOM = (isHorizontal?: boolean): ScrollbarStructure => {\r\n const xyKey = isHorizontal ? 'x' : 'y';\r\n const scrollbarClassName = isHorizontal\r\n ? classNameScrollbarHorizontal\r\n : classNameScrollbarVertical;\r\n const scrollbar = createDiv(`${classNameScrollbar} ${scrollbarClassName}`);\r\n const track = createDiv(classNameScrollbarTrack);\r\n const handle = createDiv(classNameScrollbarHandle);\r\n const result = {\r\n _scrollbar: scrollbar,\r\n _track: track,\r\n _handle: handle,\r\n };\r\n const timeline = scrollTimeline[xyKey];\r\n\r\n push(isHorizontal ? horizontalScrollbars : verticalScrollbars, result);\r\n push(destroyFns, [\r\n appendChildren(scrollbar, track),\r\n appendChildren(track, handle),\r\n bind(removeElements, scrollbar),\r\n timeline && timeline._setScrollPercentAnimation(result),\r\n scrollbarsSetupEvents(result, scrollbarsAddRemoveClass, isHorizontal),\r\n ]);\r\n\r\n return result;\r\n };\r\n const generateHorizontalScrollbarStructure = bind(generateScrollbarDOM, true);\r\n const generateVerticalScrollbarStructure = bind(generateScrollbarDOM, false);\r\n const appendElements = () => {\r\n appendChildren(evaluatedScrollbarSlot, horizontalScrollbars[0]._scrollbar);\r\n appendChildren(evaluatedScrollbarSlot, verticalScrollbars[0]._scrollbar);\r\n\r\n return bind(runEachAndClear, destroyFns);\r\n };\r\n\r\n generateHorizontalScrollbarStructure();\r\n generateVerticalScrollbarStructure();\r\n\r\n return [\r\n {\r\n _refreshScrollbarsHandleLength: refreshScrollbarsHandleLength,\r\n _refreshScrollbarsHandleOffset: refreshScrollbarsHandleOffset,\r\n _refreshScrollbarsScrollCoordinates: refreshScrollbarsScrollCoordinates,\r\n _refreshScrollbarsScrollbarOffset: refreshScrollbarsScrollbarOffset,\r\n _scrollbarsAddRemoveClass: scrollbarsAddRemoveClass,\r\n _horizontal: {\r\n _scrollbarStructures: horizontalScrollbars,\r\n _clone: generateHorizontalScrollbarStructure,\r\n _style: bind(scrollbarStyle, horizontalScrollbars),\r\n },\r\n _vertical: {\r\n _scrollbarStructures: verticalScrollbars,\r\n _clone: generateVerticalScrollbarStructure,\r\n _style: bind(scrollbarStyle, verticalScrollbars),\r\n },\r\n },\r\n appendElements,\r\n ];\r\n};\r\n","import type { XY } from '../../support';\r\nimport type { ClickScrollPlugin } from '../../plugins';\r\nimport type { ReadonlyOptions } from '../../options';\r\nimport type { StructureSetupState } from '../../setups';\r\nimport type { ScrollbarsSetupElementsObj, ScrollbarStructure } from './scrollbarsSetup.elements';\r\nimport type { StructureSetupElementsObj } from '../structureSetup/structureSetup.elements';\r\nimport {\r\n classNameScrollbarHandle,\r\n classNameScrollbarInteraction,\r\n classNameScrollbarWheel,\r\n dataAttributeHost,\r\n dataAttributeViewport,\r\n} from '../../classnames';\r\nimport { clickScrollPluginModuleName, getStaticPluginModuleInstance } from '../../plugins';\r\nimport {\r\n getBoundingClientRect,\r\n getOffsetSize,\r\n addEventListener,\r\n preventDefault,\r\n runEachAndClear,\r\n selfClearTimeout,\r\n parent,\r\n closest,\r\n push,\r\n bind,\r\n mathRound,\r\n strWidth,\r\n strHeight,\r\n getElementScroll,\r\n scrollElementTo,\r\n getFocusedElement,\r\n setT,\r\n hasAttr,\r\n stopAndPrevent,\r\n isFunction,\r\n mathAbs,\r\n focusElement,\r\n} from '../../support';\r\n\r\nexport type ScrollbarsSetupEvents = (\r\n scrollbarStructure: ScrollbarStructure,\r\n scrollbarsAddRemoveClass: ScrollbarsSetupElementsObj['_scrollbarsAddRemoveClass'],\r\n isHorizontal?: boolean\r\n) => () => void;\r\n\r\nexport const createScrollbarsSetupEvents = (\r\n options: ReadonlyOptions,\r\n structureSetupElements: StructureSetupElementsObj,\r\n structureSetupState: StructureSetupState,\r\n scrollbarHandlePointerInteraction: (event: PointerEvent) => void\r\n): ScrollbarsSetupEvents => {\r\n return (scrollbarStructure, scrollbarsAddRemoveClass, isHorizontal) => {\r\n const {\r\n _host,\r\n _viewport,\r\n _viewportIsTarget,\r\n _scrollOffsetElement,\r\n _documentElm,\r\n _removeScrollObscuringStyles,\r\n } = structureSetupElements;\r\n const { _scrollbar, _track, _handle } = scrollbarStructure;\r\n const [wheelTimeout, clearWheelTimeout] = selfClearTimeout(333);\r\n const [scrollSnapScrollTransitionTimeout, clearScrollSnapScrollTransitionTimeout] =\r\n selfClearTimeout(444);\r\n const scrollOffsetElementScrollBy = (coordinates: XY) => {\r\n if (isFunction(_scrollOffsetElement.scrollBy)) {\r\n _scrollOffsetElement.scrollBy({\r\n behavior: 'smooth',\r\n left: coordinates.x,\r\n top: coordinates.y,\r\n });\r\n }\r\n };\r\n\r\n const createInteractiveScrollEvents = () => {\r\n const releasePointerCaptureEvents = 'pointerup pointercancel lostpointercapture';\r\n const clientXYKey = `client${isHorizontal ? 'X' : 'Y'}` as 'clientX' | 'clientY';\r\n const widthHeightKey = isHorizontal ? strWidth : strHeight;\r\n const leftTopKey = isHorizontal ? 'left' : 'top';\r\n const whKey = isHorizontal ? 'w' : 'h';\r\n const xyKey = isHorizontal ? 'x' : 'y';\r\n\r\n const createRelativeHandleMove =\r\n (mouseDownScroll: number, invertedScale: number) => (deltaMovement: number) => {\r\n const { _overflowAmount } = structureSetupState;\r\n const handleTrackDiff = getOffsetSize(_track)[whKey] - getOffsetSize(_handle)[whKey];\r\n const scrollDeltaPercent = (invertedScale * deltaMovement) / handleTrackDiff;\r\n const scrollDelta = scrollDeltaPercent * _overflowAmount[xyKey];\r\n\r\n scrollElementTo(_scrollOffsetElement, {\r\n [xyKey]: mouseDownScroll + scrollDelta,\r\n });\r\n };\r\n const pointerdownCleanupFns: Array<() => void> = [];\r\n\r\n return addEventListener(_track, 'pointerdown', (pointerDownEvent: PointerEvent) => {\r\n const isDragScroll =\r\n closest(pointerDownEvent.target as Node, `.${classNameScrollbarHandle}`) === _handle;\r\n const pointerCaptureElement = isDragScroll ? _handle : _track;\r\n\r\n const scrollbarOptions = options.scrollbars;\r\n const dragClickScrollOption = scrollbarOptions[isDragScroll ? 'dragScroll' : 'clickScroll'];\r\n const { button, isPrimary, pointerType } = pointerDownEvent;\r\n const { pointers } = scrollbarOptions;\r\n\r\n const continuePointerDown =\r\n button === 0 &&\r\n isPrimary &&\r\n dragClickScrollOption &&\r\n (pointers || []).includes(pointerType);\r\n\r\n if (continuePointerDown) {\r\n runEachAndClear(pointerdownCleanupFns);\r\n clearScrollSnapScrollTransitionTimeout();\r\n\r\n const instantClickScroll =\r\n !isDragScroll && (pointerDownEvent.shiftKey || dragClickScrollOption === 'instant');\r\n const getHandleRect = bind(getBoundingClientRect, _handle);\r\n const getTrackRect = bind(getBoundingClientRect, _track);\r\n const getHandleOffset = (handleRect?: DOMRect, trackRect?: DOMRect) =>\r\n (handleRect || getHandleRect())[leftTopKey] - (trackRect || getTrackRect())[leftTopKey];\r\n const axisScale =\r\n mathRound(getBoundingClientRect(_scrollOffsetElement)[widthHeightKey]) /\r\n getOffsetSize(_scrollOffsetElement)[whKey] || 1;\r\n const moveHandleRelative = createRelativeHandleMove(\r\n getElementScroll(_scrollOffsetElement)[xyKey],\r\n 1 / axisScale\r\n );\r\n const pointerDownOffset = pointerDownEvent[clientXYKey];\r\n const handleRect = getHandleRect();\r\n const trackRect = getTrackRect();\r\n const handleLength = handleRect[widthHeightKey];\r\n const handleCenter = getHandleOffset(handleRect, trackRect) + handleLength / 2;\r\n const relativeTrackPointerOffset = pointerDownOffset - trackRect[leftTopKey];\r\n const startOffset = isDragScroll ? 0 : relativeTrackPointerOffset - handleCenter;\r\n const releasePointerCapture = (pointerUpEvent: PointerEvent) => {\r\n runEachAndClear(pointerupCleanupFns);\r\n pointerCaptureElement.releasePointerCapture(pointerUpEvent.pointerId);\r\n };\r\n const nonAnimatedScroll = isDragScroll || instantClickScroll;\r\n const revertScrollObscuringStyles = _removeScrollObscuringStyles();\r\n\r\n const pointerupCleanupFns = [\r\n addEventListener(_documentElm, releasePointerCaptureEvents, releasePointerCapture),\r\n addEventListener(_documentElm, 'selectstart', (event: Event) => preventDefault(event), {\r\n _passive: false,\r\n }),\r\n addEventListener(_track, releasePointerCaptureEvents, releasePointerCapture),\r\n nonAnimatedScroll &&\r\n addEventListener(_track, 'pointermove', (pointerMoveEvent: PointerEvent) =>\r\n moveHandleRelative(\r\n startOffset + (pointerMoveEvent[clientXYKey] - pointerDownOffset)\r\n )\r\n ),\r\n nonAnimatedScroll &&\r\n (() => {\r\n const withoutSnapScrollOffset = getElementScroll(_scrollOffsetElement);\r\n revertScrollObscuringStyles();\r\n const withSnapScrollOffset = getElementScroll(_scrollOffsetElement);\r\n const snapScrollDiff = {\r\n x: withSnapScrollOffset.x - withoutSnapScrollOffset.x,\r\n y: withSnapScrollOffset.y - withoutSnapScrollOffset.y,\r\n };\r\n\r\n if (mathAbs(snapScrollDiff.x) > 3 || mathAbs(snapScrollDiff.y) > 3) {\r\n _removeScrollObscuringStyles();\r\n scrollElementTo(_scrollOffsetElement, withoutSnapScrollOffset);\r\n scrollOffsetElementScrollBy(snapScrollDiff);\r\n scrollSnapScrollTransitionTimeout(revertScrollObscuringStyles);\r\n }\r\n }),\r\n ];\r\n\r\n pointerCaptureElement.setPointerCapture(pointerDownEvent.pointerId);\r\n\r\n if (instantClickScroll) {\r\n moveHandleRelative(startOffset);\r\n } else if (!isDragScroll) {\r\n const animateClickScroll = getStaticPluginModuleInstance(\r\n clickScrollPluginModuleName\r\n );\r\n if (animateClickScroll) {\r\n const stopClickScrollAnimation = animateClickScroll(\r\n moveHandleRelative,\r\n startOffset,\r\n handleLength,\r\n (stopped) => {\r\n // if the scroll animation doesn't continue with a press\r\n if (stopped) {\r\n revertScrollObscuringStyles();\r\n } else {\r\n push(pointerupCleanupFns, revertScrollObscuringStyles);\r\n }\r\n }\r\n );\r\n\r\n push(pointerupCleanupFns, stopClickScrollAnimation);\r\n push(pointerdownCleanupFns, bind(stopClickScrollAnimation, true));\r\n }\r\n }\r\n }\r\n });\r\n };\r\n\r\n let wheelScrollBy = true;\r\n\r\n return bind(runEachAndClear, [\r\n addEventListener(_handle, 'pointermove pointerleave', scrollbarHandlePointerInteraction),\r\n addEventListener(_scrollbar, 'pointerenter', () => {\r\n scrollbarsAddRemoveClass(classNameScrollbarInteraction, true);\r\n }),\r\n addEventListener(_scrollbar, 'pointerleave pointercancel', () => {\r\n scrollbarsAddRemoveClass(classNameScrollbarInteraction, false);\r\n }),\r\n // focus viewport when clicking on a scrollbar (mouse only)\r\n !_viewportIsTarget &&\r\n addEventListener(_scrollbar, 'mousedown', () => {\r\n const focusedElement = getFocusedElement();\r\n // dont steal focus from buttons or other interactive elements\r\n if (\r\n hasAttr(focusedElement, dataAttributeViewport) ||\r\n hasAttr(focusedElement, dataAttributeHost) ||\r\n focusedElement === document.body\r\n ) {\r\n setT(bind(focusElement, _viewport), 25);\r\n }\r\n }),\r\n // propagate wheel events to viewport when mouse is over scrollbar\r\n addEventListener(\r\n _scrollbar,\r\n 'wheel',\r\n (wheelEvent: WheelEvent) => {\r\n const { deltaX, deltaY, deltaMode } = wheelEvent;\r\n\r\n // the first wheel event is swallowed, simulate scroll to compensate for it\r\n if (wheelScrollBy && deltaMode === 0 && parent(_scrollbar) === _host) {\r\n scrollOffsetElementScrollBy({\r\n x: deltaX,\r\n y: deltaY,\r\n });\r\n }\r\n\r\n wheelScrollBy = false;\r\n scrollbarsAddRemoveClass(classNameScrollbarWheel, true);\r\n wheelTimeout(() => {\r\n wheelScrollBy = true;\r\n scrollbarsAddRemoveClass(classNameScrollbarWheel);\r\n });\r\n\r\n preventDefault(wheelEvent);\r\n },\r\n { _passive: false, _capture: true }\r\n ),\r\n // solve problem of interaction causing `click` events (https://github.com/KingSora/OverlayScrollbars/issues/251)\r\n // 1. on `scrollbar` pointer down register a `document` click event which gets prevented and propagation is stopped\r\n // 2. on `document` pointerup / pointercancel remove that click event after a timeout (in case the click is never triggered)\r\n addEventListener(\r\n _scrollbar,\r\n 'pointerdown',\r\n () => {\r\n const removeClickEvent = addEventListener(\r\n _documentElm,\r\n 'click',\r\n (clickEvent: Event) => {\r\n removePointerEvents();\r\n stopAndPrevent(clickEvent);\r\n },\r\n {\r\n _once: true,\r\n _capture: true,\r\n _passive: false,\r\n }\r\n );\r\n const removePointerEvents = addEventListener(\r\n _documentElm,\r\n 'pointerup pointercancel',\r\n () => {\r\n removePointerEvents();\r\n setTimeout(removeClickEvent, 150);\r\n },\r\n {\r\n _capture: true,\r\n _passive: true,\r\n }\r\n );\r\n },\r\n { _capture: true, _passive: true }\r\n ),\r\n createInteractiveScrollEvents(),\r\n clearWheelTimeout,\r\n clearScrollSnapScrollTransitionTimeout,\r\n ]);\r\n };\r\n};\r\n","import type { OverflowBehavior, ReadonlyOptions } from '../../options';\r\nimport type { ScrollbarsSetupElementsObj } from './scrollbarsSetup.elements';\r\nimport type {\r\n ObserversSetupState,\r\n ObserversSetupUpdateHints,\r\n Setup,\r\n SetupUpdateInfo,\r\n StructureSetupState,\r\n StructureSetupUpdateHints,\r\n} from '../../setups';\r\nimport type { InitializationTarget } from '../../initialization';\r\nimport type { OverflowStyle } from '../../typings';\r\nimport type { StructureSetupElementsObj } from '../structureSetup/structureSetup.elements';\r\nimport {\r\n classNameScrollbarThemeNone,\r\n classNameScrollbarVisible,\r\n classNameScrollbarUnusable,\r\n classNameScrollbarCornerless,\r\n classNameScrollbarAutoHideHidden,\r\n classNameScrollbarHandleInteractive,\r\n classNameScrollbarTrackInteractive,\r\n classNameScrollbarRtl,\r\n classNameScrollbarAutoHide,\r\n} from '../../classnames';\r\nimport { getEnvironment } from '../../environment';\r\nimport {\r\n bind,\r\n noop,\r\n addEventListener,\r\n push,\r\n runEachAndClear,\r\n selfClearTimeout,\r\n strScroll,\r\n strVisible,\r\n} from '../../support';\r\nimport { createScrollbarsSetupElements } from './scrollbarsSetup.elements';\r\nimport { createScrollbarsSetupEvents } from './scrollbarsSetup.events';\r\nimport {\r\n getStaticPluginModuleInstance,\r\n ScrollbarsHidingPlugin,\r\n scrollbarsHidingPluginName,\r\n} from '../../plugins';\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\r\nexport interface ScrollbarsSetupState {}\r\n\r\nexport interface ScrollbarsSetupUpdateInfo extends SetupUpdateInfo {\r\n _observersUpdateHints?: ObserversSetupUpdateHints;\r\n _structureUpdateHints?: StructureSetupUpdateHints;\r\n}\r\n\r\nexport type ScrollbarsSetup = [\r\n ...Setup,\r\n /** The elements created by the scrollbars setup. */\r\n ScrollbarsSetupElementsObj,\r\n];\r\n\r\nexport const createScrollbarsSetup = (\r\n target: InitializationTarget,\r\n options: ReadonlyOptions,\r\n observersSetupState: ObserversSetupState,\r\n structureSetupState: StructureSetupState,\r\n structureSetupElements: StructureSetupElementsObj,\r\n onScroll: (event: Event) => void\r\n): ScrollbarsSetup => {\r\n let mouseInHost: boolean | undefined;\r\n let autoHideIsMove: boolean | undefined;\r\n let autoHideIsLeave: boolean | undefined;\r\n let autoHideIsNever: boolean | undefined;\r\n let prevTheme: string | null | undefined;\r\n let instanceAutoHideSuspendScrollDestroyFn = noop;\r\n let instanceAutoHideDelay = 0;\r\n const hoverablePointerTypes = ['mouse', 'pen'];\r\n\r\n // needed to not fire unnecessary operations for pointer events on ios safari which will cause side effects: https://github.com/KingSora/OverlayScrollbars/issues/560\r\n const isHoverablePointerType = (event: PointerEvent) =>\r\n hoverablePointerTypes.includes(event.pointerType);\r\n\r\n const [requestScrollAnimationFrame, cancelScrollAnimationFrame] = selfClearTimeout();\r\n const [autoHideInstantInteractionTimeout, clearAutoHideInstantInteractionTimeout] =\r\n selfClearTimeout(100);\r\n const [autoHideSuspendTimeout, clearAutoHideSuspendTimeout] = selfClearTimeout(100);\r\n const [auotHideTimeout, clearAutoHideTimeout] = selfClearTimeout(() => instanceAutoHideDelay);\r\n const [elements, appendElements] = createScrollbarsSetupElements(\r\n target,\r\n structureSetupElements,\r\n structureSetupState,\r\n createScrollbarsSetupEvents(\r\n options,\r\n structureSetupElements,\r\n structureSetupState,\r\n (event) => isHoverablePointerType(event) && manageScrollbarsAutoHideInstantInteraction()\r\n )\r\n );\r\n const { _host, _scrollEventElement, _isBody } = structureSetupElements;\r\n const {\r\n _scrollbarsAddRemoveClass,\r\n _refreshScrollbarsHandleLength,\r\n _refreshScrollbarsHandleOffset,\r\n _refreshScrollbarsScrollCoordinates,\r\n _refreshScrollbarsScrollbarOffset,\r\n } = elements;\r\n const manageScrollbarsAutoHide = (removeAutoHide: boolean, delayless?: boolean) => {\r\n clearAutoHideTimeout();\r\n if (removeAutoHide) {\r\n _scrollbarsAddRemoveClass(classNameScrollbarAutoHideHidden);\r\n } else {\r\n const hide = bind(_scrollbarsAddRemoveClass, classNameScrollbarAutoHideHidden, true);\r\n if (instanceAutoHideDelay > 0 && !delayless) {\r\n auotHideTimeout(hide);\r\n } else {\r\n hide();\r\n }\r\n }\r\n };\r\n const manageScrollbarsAutoHideInstantInteraction = () => {\r\n if (autoHideIsLeave ? !mouseInHost : !autoHideIsNever) {\r\n manageScrollbarsAutoHide(true);\r\n autoHideInstantInteractionTimeout(() => {\r\n manageScrollbarsAutoHide(false);\r\n });\r\n }\r\n };\r\n const manageAutoHideSuspension = (add: boolean) => {\r\n _scrollbarsAddRemoveClass(classNameScrollbarAutoHide, add, true);\r\n _scrollbarsAddRemoveClass(classNameScrollbarAutoHide, add, false);\r\n };\r\n const onHostMouseEnter = (event: PointerEvent) => {\r\n if (isHoverablePointerType(event)) {\r\n mouseInHost = autoHideIsLeave;\r\n if (autoHideIsLeave) {\r\n manageScrollbarsAutoHide(true);\r\n }\r\n }\r\n };\r\n const destroyFns: (() => void)[] = [\r\n clearAutoHideTimeout,\r\n clearAutoHideInstantInteractionTimeout,\r\n clearAutoHideSuspendTimeout,\r\n cancelScrollAnimationFrame,\r\n () => instanceAutoHideSuspendScrollDestroyFn(),\r\n\r\n addEventListener(_host, 'pointerover', onHostMouseEnter, { _once: true }),\r\n addEventListener(_host, 'pointerenter', onHostMouseEnter),\r\n addEventListener(_host, 'pointerleave', (event: PointerEvent) => {\r\n if (isHoverablePointerType(event)) {\r\n mouseInHost = false;\r\n if (autoHideIsLeave) {\r\n manageScrollbarsAutoHide(false);\r\n }\r\n }\r\n }),\r\n addEventListener(_host, 'pointermove', (event: PointerEvent) => {\r\n if (isHoverablePointerType(event) && autoHideIsMove) {\r\n manageScrollbarsAutoHideInstantInteraction();\r\n }\r\n }),\r\n addEventListener(_scrollEventElement, 'scroll', (event) => {\r\n requestScrollAnimationFrame(() => {\r\n _refreshScrollbarsHandleOffset();\r\n manageScrollbarsAutoHideInstantInteraction();\r\n });\r\n\r\n onScroll(event);\r\n\r\n _refreshScrollbarsScrollbarOffset();\r\n }),\r\n ];\r\n const scrollbarsHidingPlugin = getStaticPluginModuleInstance(\r\n scrollbarsHidingPluginName\r\n );\r\n\r\n return [\r\n () => bind(runEachAndClear, push(destroyFns, appendElements())),\r\n ({ _checkOption, _force, _observersUpdateHints, _structureUpdateHints }) => {\r\n const {\r\n _overflowEdgeChanged,\r\n _overflowAmountChanged,\r\n _overflowStyleChanged,\r\n _scrollCoordinatesChanged,\r\n } = _structureUpdateHints || {};\r\n const { _directionChanged, _appear } = _observersUpdateHints || {};\r\n const { _directionIsRTL } = observersSetupState;\r\n const { _nativeScrollbarsOverlaid, _nativeScrollbarsHiding } = getEnvironment();\r\n const { _overflowStyle, _hasOverflow } = structureSetupState;\r\n const [showNativeOverlaidScrollbarsOption, showNativeOverlaidScrollbarsChanged] =\r\n _checkOption('showNativeOverlaidScrollbars');\r\n const [theme, themeChanged] = _checkOption('scrollbars.theme');\r\n const [visibility, visibilityChanged] = _checkOption('scrollbars.visibility');\r\n const [autoHide, autoHideChanged] = _checkOption('scrollbars.autoHide');\r\n const [autoHideSuspend, autoHideSuspendChanged] = _checkOption('scrollbars.autoHideSuspend');\r\n const [autoHideDelay] = _checkOption('scrollbars.autoHideDelay');\r\n const [dragScroll, dragScrollChanged] = _checkOption('scrollbars.dragScroll');\r\n const [clickScroll, clickScrollChanged] = _checkOption('scrollbars.clickScroll');\r\n const [overflow, overflowChanged] = _checkOption('overflow');\r\n const trulyAppeared = _appear && !_force;\r\n const hasOverflow = _hasOverflow.x || _hasOverflow.y;\r\n const updateScrollbars =\r\n _overflowEdgeChanged ||\r\n _overflowAmountChanged ||\r\n _scrollCoordinatesChanged ||\r\n _directionChanged ||\r\n _force;\r\n const updateVisibility = _overflowStyleChanged || visibilityChanged || overflowChanged;\r\n const showNativeOverlaidScrollbars =\r\n showNativeOverlaidScrollbarsOption &&\r\n _nativeScrollbarsOverlaid.x &&\r\n _nativeScrollbarsOverlaid.y;\r\n const cantHideScrollbars = !_nativeScrollbarsHiding && !scrollbarsHidingPlugin;\r\n const showNativeScrollbars = showNativeOverlaidScrollbars || cantHideScrollbars;\r\n\r\n const setScrollbarVisibility = (\r\n overflowBehavior: OverflowBehavior,\r\n overflowStyle: OverflowStyle,\r\n isHorizontal: boolean\r\n ) => {\r\n const isVisible =\r\n overflowBehavior.includes(strScroll) &&\r\n (visibility === strVisible || (visibility === 'auto' && overflowStyle === strScroll));\r\n\r\n _scrollbarsAddRemoveClass(classNameScrollbarVisible, isVisible, isHorizontal);\r\n\r\n return isVisible;\r\n };\r\n\r\n instanceAutoHideDelay = autoHideDelay;\r\n\r\n if (trulyAppeared) {\r\n if (autoHideSuspend && hasOverflow) {\r\n manageAutoHideSuspension(false);\r\n instanceAutoHideSuspendScrollDestroyFn();\r\n autoHideSuspendTimeout(() => {\r\n instanceAutoHideSuspendScrollDestroyFn = addEventListener(\r\n _scrollEventElement,\r\n 'scroll',\r\n bind(manageAutoHideSuspension, true),\r\n {\r\n _once: true,\r\n }\r\n );\r\n });\r\n } else {\r\n manageAutoHideSuspension(true);\r\n }\r\n }\r\n\r\n if (showNativeOverlaidScrollbarsChanged || cantHideScrollbars) {\r\n _scrollbarsAddRemoveClass(classNameScrollbarThemeNone, showNativeScrollbars);\r\n }\r\n\r\n if (themeChanged) {\r\n _scrollbarsAddRemoveClass(prevTheme);\r\n _scrollbarsAddRemoveClass(theme, true);\r\n\r\n prevTheme = theme;\r\n }\r\n\r\n if (autoHideSuspendChanged && !autoHideSuspend) {\r\n manageAutoHideSuspension(true);\r\n }\r\n\r\n if (autoHideChanged) {\r\n autoHideIsMove = autoHide === 'move';\r\n autoHideIsLeave = autoHide === 'leave';\r\n autoHideIsNever = autoHide === 'never';\r\n manageScrollbarsAutoHide(autoHideIsNever, true);\r\n }\r\n\r\n if (dragScrollChanged) {\r\n _scrollbarsAddRemoveClass(classNameScrollbarHandleInteractive, dragScroll);\r\n }\r\n\r\n if (clickScrollChanged) {\r\n _scrollbarsAddRemoveClass(classNameScrollbarTrackInteractive, !!clickScroll);\r\n }\r\n\r\n // always update scrollbar visibility before scrollbar size\r\n // the scrollbar size is influenced whether both or just one scrollbar is visible (because of the corner element)\r\n if (updateVisibility) {\r\n const xVisible = setScrollbarVisibility(overflow.x, _overflowStyle.x, true);\r\n const yVisible = setScrollbarVisibility(overflow.y, _overflowStyle.y, false);\r\n const hasCorner = xVisible && yVisible;\r\n\r\n _scrollbarsAddRemoveClass(classNameScrollbarCornerless, !hasCorner);\r\n }\r\n\r\n // always update scrollbar sizes after the visibility\r\n if (updateScrollbars) {\r\n _refreshScrollbarsHandleOffset();\r\n _refreshScrollbarsHandleLength();\r\n _refreshScrollbarsScrollbarOffset();\r\n if (_scrollCoordinatesChanged) {\r\n _refreshScrollbarsScrollCoordinates();\r\n }\r\n\r\n _scrollbarsAddRemoveClass(classNameScrollbarUnusable, !_hasOverflow.x, true);\r\n _scrollbarsAddRemoveClass(classNameScrollbarUnusable, !_hasOverflow.y, false);\r\n _scrollbarsAddRemoveClass(classNameScrollbarRtl, _directionIsRTL && !_isBody);\r\n }\r\n },\r\n {},\r\n elements,\r\n ];\r\n};\r\n","import type {\r\n InitializationTarget,\r\n InitializationTargetElement,\r\n InitializationTargetObject,\r\n} from '../../initialization';\r\nimport {\r\n isHTMLElement,\r\n appendChildren,\r\n createDiv,\r\n contents,\r\n parent,\r\n removeElements,\r\n push,\r\n runEachAndClear,\r\n removeAttrs,\r\n hasAttrClass,\r\n addEventListener,\r\n bind,\r\n inArray,\r\n addAttrClass,\r\n addRemoveAttrClass,\r\n setAttrs,\r\n getAttr,\r\n isBodyElement,\r\n getFocusedElement,\r\n wnd,\r\n focusElement,\r\n stopAndPrevent,\r\n getOffsetSize,\r\n getScrollSize,\r\n getStyles,\r\n strOverflowX,\r\n strOverflowY,\r\n} from '../../support';\r\nimport {\r\n dataAttributeHost,\r\n dataAttributeInitialize,\r\n dataAttributeViewport,\r\n dataValueViewportScrollbarHidden,\r\n dataAttributePadding,\r\n dataAttributeContent,\r\n dataAttributeHtmlBody,\r\n dataValueHostIsHost,\r\n dataValueViewportScrolling,\r\n} from '../../classnames';\r\nimport { getEnvironment } from '../../environment';\r\nimport {\r\n staticInitializationElement as generalStaticInitializationElement,\r\n dynamicInitializationElement as generalDynamicInitializationElement,\r\n} from '../../initialization';\r\nimport { overflowIsVisible } from './structureSetup.utils';\r\n\r\nexport type StructureSetupElements = [\r\n elements: StructureSetupElementsObj,\r\n appendElements: () => () => void,\r\n canceled: () => void,\r\n];\r\n\r\nexport interface StructureSetupElementsObj {\r\n _target: InitializationTargetElement;\r\n _host: HTMLElement;\r\n _viewport: HTMLElement;\r\n _padding: HTMLElement | false;\r\n _content: HTMLElement | false;\r\n _scrollOffsetElement: HTMLElement;\r\n _scrollEventElement: HTMLElement | Document;\r\n _originalScrollOffsetElement: HTMLElement;\r\n // ctx ----\r\n _isBody: boolean;\r\n _documentElm: Document;\r\n _targetIsElm: boolean;\r\n _viewportIsTarget: boolean;\r\n _windowElm: () => Window;\r\n _viewportHasClass: (viewportAttributeClassName: string) => boolean;\r\n _viewportAddRemoveClass: (viewportAttributeClassName: string, add?: boolean) => () => void;\r\n _removeScrollObscuringStyles: () => () => void;\r\n}\r\n\r\nexport const createStructureSetupElements = (\r\n target: InitializationTarget\r\n): StructureSetupElements => {\r\n const env = getEnvironment();\r\n const { _getDefaultInitialization, _nativeScrollbarsHiding } = env;\r\n const { elements: defaultInitElements } = _getDefaultInitialization();\r\n const {\r\n padding: defaultPaddingInitialization,\r\n viewport: defaultViewportInitialization,\r\n content: defaultContentInitialization,\r\n } = defaultInitElements;\r\n const targetIsElm = isHTMLElement(target);\r\n const targetStructureInitialization = (targetIsElm ? {} : target) as InitializationTargetObject;\r\n const { elements: initElements } = targetStructureInitialization;\r\n const {\r\n padding: paddingInitialization,\r\n viewport: viewportInitialization,\r\n content: contentInitialization,\r\n } = initElements || {};\r\n\r\n const targetElement = targetIsElm ? target : targetStructureInitialization.target;\r\n const isBody = isBodyElement(targetElement);\r\n const ownerDocument = targetElement.ownerDocument;\r\n const docElement = ownerDocument.documentElement;\r\n const getDocumentWindow = () => ownerDocument.defaultView || wnd;\r\n const staticInitializationElement = bind(generalStaticInitializationElement, [targetElement]);\r\n const dynamicInitializationElement = bind(generalDynamicInitializationElement, [targetElement]);\r\n const createNewDiv = bind(createDiv, '');\r\n const generateViewportElement = bind(\r\n staticInitializationElement,\r\n createNewDiv,\r\n defaultViewportInitialization\r\n );\r\n const generateContentElement = bind(\r\n dynamicInitializationElement,\r\n createNewDiv,\r\n defaultContentInitialization\r\n );\r\n const elementHasOverflow = (elm: HTMLElement) => {\r\n const offsetSize = getOffsetSize(elm);\r\n const scrollSize = getScrollSize(elm);\r\n const overflowX = getStyles(elm, strOverflowX);\r\n const overflowY = getStyles(elm, strOverflowY);\r\n\r\n return (\r\n (scrollSize.w - offsetSize.w > 0 && !overflowIsVisible(overflowX)) ||\r\n (scrollSize.h - offsetSize.h > 0 && !overflowIsVisible(overflowY))\r\n );\r\n };\r\n const possibleViewportElement = generateViewportElement(viewportInitialization);\r\n const viewportIsTarget = possibleViewportElement === targetElement;\r\n const viewportIsTargetBody = viewportIsTarget && isBody;\r\n const possibleContentElement = !viewportIsTarget && generateContentElement(contentInitialization);\r\n // edge case if passed viewportElement is contentElement:\r\n // viewport element has higher priority and content element will not be generated\r\n // will act the same way as initialization: `{ elements: { viewport, content: false } }`\r\n const viewportIsContent = !viewportIsTarget && possibleViewportElement === possibleContentElement;\r\n const viewportElement = viewportIsTargetBody ? docElement : possibleViewportElement;\r\n const hostElement = viewportIsTargetBody ? viewportElement : targetElement;\r\n const paddingElement =\r\n !viewportIsTarget &&\r\n dynamicInitializationElement(createNewDiv, defaultPaddingInitialization, paddingInitialization);\r\n const contentElement = !viewportIsContent && possibleContentElement;\r\n const generatedElements = [contentElement, viewportElement, paddingElement, hostElement].map(\r\n (elm) => isHTMLElement(elm) && !parent(elm) && elm\r\n );\r\n const elementIsGenerated = (elm: HTMLElement | false) => elm && inArray(generatedElements, elm);\r\n const originalNonBodyScrollOffsetElement =\r\n !elementIsGenerated(viewportElement) && elementHasOverflow(viewportElement)\r\n ? viewportElement\r\n : targetElement;\r\n const scrollOffsetElement = viewportIsTargetBody ? docElement : viewportElement;\r\n const scrollEventElement = viewportIsTargetBody ? ownerDocument : viewportElement;\r\n\r\n const evaluatedTargetObj: StructureSetupElementsObj = {\r\n _target: targetElement,\r\n _host: hostElement,\r\n _viewport: viewportElement,\r\n _padding: paddingElement,\r\n _content: contentElement,\r\n _scrollOffsetElement: scrollOffsetElement,\r\n _scrollEventElement: scrollEventElement,\r\n _originalScrollOffsetElement: isBody ? docElement : originalNonBodyScrollOffsetElement,\r\n _documentElm: ownerDocument,\r\n _isBody: isBody,\r\n _targetIsElm: targetIsElm,\r\n _viewportIsTarget: viewportIsTarget,\r\n _windowElm: getDocumentWindow,\r\n _viewportHasClass: (viewportAttributeClassName: string) =>\r\n hasAttrClass(viewportElement, dataAttributeViewport, viewportAttributeClassName),\r\n _viewportAddRemoveClass: (viewportAttributeClassName: string, add?: boolean) =>\r\n addRemoveAttrClass(viewportElement, dataAttributeViewport, viewportAttributeClassName, add),\r\n _removeScrollObscuringStyles: () =>\r\n addRemoveAttrClass(\r\n scrollOffsetElement,\r\n dataAttributeViewport,\r\n dataValueViewportScrolling,\r\n true\r\n ),\r\n };\r\n const { _target, _host, _padding, _viewport, _content } = evaluatedTargetObj;\r\n const destroyFns: (() => void)[] = [\r\n () => {\r\n // always remove dataAttributeHost & dataAttributeInitialize from host and from element if target is body\r\n removeAttrs(_host, [dataAttributeHost, dataAttributeInitialize]);\r\n removeAttrs(_target, dataAttributeInitialize);\r\n if (isBody) {\r\n removeAttrs(docElement, [dataAttributeInitialize, dataAttributeHost]);\r\n }\r\n },\r\n ];\r\n let targetContents = contents(\r\n [_content, _viewport, _padding, _host, _target].find((elm) => elm && !elementIsGenerated(elm))\r\n );\r\n const contentSlot = viewportIsTargetBody ? _target : _content || _viewport;\r\n const destroy = bind(runEachAndClear, destroyFns);\r\n const appendElements = () => {\r\n const docWnd = getDocumentWindow();\r\n const initActiveElm = getFocusedElement();\r\n const unwrap = (elm: HTMLElement | false | null | undefined) => {\r\n appendChildren(parent(elm), contents(elm));\r\n removeElements(elm);\r\n };\r\n // wrapping / unwrapping will cause the focused element to blur, this should prevent those events to surface\r\n const prepareWrapUnwrapFocus = (activeElement: Element | false | null | undefined) =>\r\n addEventListener(activeElement, 'focusin focusout focus blur', stopAndPrevent, {\r\n _capture: true,\r\n _passive: false,\r\n });\r\n const tabIndexStr = 'tabindex';\r\n const originalViewportTabIndex = getAttr(_viewport, tabIndexStr);\r\n const undoInitWrapUndwrapFocus = prepareWrapUnwrapFocus(initActiveElm);\r\n setAttrs(_host, dataAttributeHost, viewportIsTarget ? '' : dataValueHostIsHost);\r\n setAttrs(_padding, dataAttributePadding, '');\r\n setAttrs(_viewport, dataAttributeViewport, '');\r\n setAttrs(_content, dataAttributeContent, '');\r\n\r\n if (!viewportIsTarget) {\r\n setAttrs(_viewport, tabIndexStr, originalViewportTabIndex || '-1');\r\n if (isBody) {\r\n setAttrs(docElement, dataAttributeHtmlBody, '');\r\n }\r\n }\r\n\r\n appendChildren(contentSlot, targetContents);\r\n appendChildren(_host, _padding);\r\n appendChildren(_padding || _host, !viewportIsTarget && _viewport);\r\n appendChildren(_viewport, _content);\r\n\r\n push(destroyFns, [\r\n undoInitWrapUndwrapFocus,\r\n () => {\r\n const destroyActiveElm = getFocusedElement();\r\n const viewportIsGenerated = elementIsGenerated(_viewport);\r\n // if the focused element is viewport and viewport will be destroyed shift the focus to target\r\n // otherwise keep the focused element\r\n const destroyFocusElement =\r\n viewportIsGenerated && destroyActiveElm === _viewport ? _target : destroyActiveElm;\r\n const undoDestroyWrapUndwrapFocus = prepareWrapUnwrapFocus(destroyFocusElement);\r\n removeAttrs(_padding, dataAttributePadding);\r\n removeAttrs(_content, dataAttributeContent);\r\n removeAttrs(_viewport, dataAttributeViewport);\r\n if (isBody) {\r\n removeAttrs(docElement, dataAttributeHtmlBody);\r\n }\r\n if (originalViewportTabIndex) {\r\n setAttrs(_viewport, tabIndexStr, originalViewportTabIndex);\r\n } else {\r\n removeAttrs(_viewport, tabIndexStr);\r\n }\r\n\r\n if (elementIsGenerated(_content)) {\r\n unwrap(_content);\r\n }\r\n if (viewportIsGenerated) {\r\n unwrap(_viewport);\r\n }\r\n if (elementIsGenerated(_padding)) {\r\n unwrap(_padding);\r\n }\r\n\r\n focusElement(destroyFocusElement);\r\n undoDestroyWrapUndwrapFocus();\r\n },\r\n ]);\r\n\r\n if (_nativeScrollbarsHiding && !viewportIsTarget) {\r\n addAttrClass(_viewport, dataAttributeViewport, dataValueViewportScrollbarHidden);\r\n push(destroyFns, bind(removeAttrs, _viewport, dataAttributeViewport));\r\n }\r\n\r\n // keep the original focused element focused except when\r\n // the target is body and viewport is not target, then shift the focus to the viewport element\r\n focusElement(\r\n !viewportIsTarget && isBody && initActiveElm === _target && docWnd.top === docWnd\r\n ? _viewport\r\n : initActiveElm\r\n );\r\n undoInitWrapUndwrapFocus();\r\n\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore\r\n targetContents = 0;\r\n\r\n return destroy;\r\n };\r\n\r\n return [evaluatedTargetObj, appendElements, destroy];\r\n};\r\n","import type { CreateStructureUpdateSegment } from '../structureSetup';\r\nimport { setStyles, strHeight } from '../../../support';\r\n\r\n/**\r\n * Lifecycle with the responsibility to adjust the trinsic behavior of the content element.\r\n * @param structureUpdateHub\r\n * @returns\r\n */\r\nexport const createTrinsicUpdateSegment: CreateStructureUpdateSegment =\r\n ({ _content }) =>\r\n ({ _observersUpdateHints, _observersState, _force }) => {\r\n const { _heightIntrinsicChanged } = _observersUpdateHints || {};\r\n const { _heightIntrinsic } = _observersState;\r\n const heightIntrinsicChanged = _content && (_heightIntrinsicChanged || _force);\r\n\r\n if (heightIntrinsicChanged) {\r\n setStyles(_content, {\r\n [strHeight]: _heightIntrinsic && '100%',\r\n });\r\n }\r\n };\r\n","import type { StyleObject } from '../../../typings';\r\nimport type { CreateStructureUpdateSegment } from '../structureSetup';\r\nimport {\r\n createCache,\r\n topRightBottomLeft,\r\n equalTRBL,\r\n assignDeep,\r\n bind,\r\n strMarginBottom,\r\n strMarginLeft,\r\n strMarginRight,\r\n strPaddingBottom,\r\n strPaddingLeft,\r\n strPaddingRight,\r\n strPaddingTop,\r\n strWidth,\r\n setStyles,\r\n} from '../../../support';\r\nimport { getEnvironment } from '../../../environment';\r\n\r\n/**\r\n * Lifecycle with the responsibility to adjust the padding styling of the padding and viewport element.\r\n * @param structureUpdateHub\r\n * @returns\r\n */\r\nexport const createPaddingUpdateSegment: CreateStructureUpdateSegment = (\r\n { _host, _padding, _viewport, _viewportIsTarget },\r\n state\r\n) => {\r\n const [updatePaddingCache, currentPaddingCache] = createCache(\r\n {\r\n _equal: equalTRBL,\r\n _initialValue: topRightBottomLeft(),\r\n },\r\n bind(topRightBottomLeft, _host, 'padding', '')\r\n );\r\n\r\n return ({ _checkOption, _observersUpdateHints, _observersState, _force }) => {\r\n let [padding, paddingChanged] = currentPaddingCache(_force);\r\n const { _nativeScrollbarsHiding } = getEnvironment();\r\n const { _sizeChanged, _contentMutation, _directionChanged } = _observersUpdateHints || {};\r\n const { _directionIsRTL } = _observersState;\r\n const [paddingAbsolute, paddingAbsoluteChanged] = _checkOption('paddingAbsolute');\r\n const contentMutation = _force || _contentMutation;\r\n\r\n if (_sizeChanged || paddingChanged || contentMutation) {\r\n [padding, paddingChanged] = updatePaddingCache(_force);\r\n }\r\n\r\n const paddingStyleChanged =\r\n !_viewportIsTarget && (paddingAbsoluteChanged || _directionChanged || paddingChanged);\r\n\r\n if (paddingStyleChanged) {\r\n // if there is no padding element and no scrollbar styling, paddingAbsolute isn't supported\r\n const paddingRelative = !paddingAbsolute || (!_padding && !_nativeScrollbarsHiding);\r\n const paddingHorizontal = padding.r + padding.l;\r\n const paddingVertical = padding.t + padding.b;\r\n\r\n const paddingStyle: StyleObject = {\r\n [strMarginRight]: paddingRelative && !_directionIsRTL ? -paddingHorizontal : 0,\r\n [strMarginBottom]: paddingRelative ? -paddingVertical : 0,\r\n [strMarginLeft]: paddingRelative && _directionIsRTL ? -paddingHorizontal : 0,\r\n top: paddingRelative ? -padding.t : 0,\r\n right: paddingRelative ? (_directionIsRTL ? -padding.r : 'auto') : 0,\r\n left: paddingRelative ? (_directionIsRTL ? 'auto' : -padding.l) : 0,\r\n [strWidth]: paddingRelative && `calc(100% + ${paddingHorizontal}px)`,\r\n };\r\n const viewportStyle: StyleObject = {\r\n [strPaddingTop]: paddingRelative ? padding.t : 0,\r\n [strPaddingRight]: paddingRelative ? padding.r : 0,\r\n [strPaddingBottom]: paddingRelative ? padding.b : 0,\r\n [strPaddingLeft]: paddingRelative ? padding.l : 0,\r\n };\r\n\r\n // if there is no padding element apply the style to the viewport element instead\r\n setStyles(_padding || _viewport, paddingStyle);\r\n setStyles(_viewport, viewportStyle);\r\n\r\n assignDeep(state, {\r\n _padding: padding,\r\n _paddingAbsolute: !paddingRelative,\r\n _viewportPaddingStyle: _padding\r\n ? viewportStyle\r\n : assignDeep({}, paddingStyle, viewportStyle),\r\n });\r\n }\r\n\r\n return {\r\n _paddingStyleChanged: paddingStyleChanged,\r\n };\r\n };\r\n};\r\n","import type { ScrollCoordinates, WH, XY } from '../../../support';\r\nimport type { ScrollbarsHidingPlugin } from '../../../plugins/scrollbarsHidingPlugin';\r\nimport type { OverflowStyle } from '../../../typings';\r\nimport type { CreateStructureUpdateSegment } from '../structureSetup';\r\nimport {\r\n createCache,\r\n getScrollSize,\r\n getFractionalSize,\r\n equalWH,\r\n getClientSize,\r\n equalXY,\r\n assignDeep,\r\n bind,\r\n wnd,\r\n mathMax,\r\n getWindowSize,\r\n addRemoveAttrClass,\r\n capitalizeFirstLetter,\r\n setStyles,\r\n strVisible,\r\n strHidden,\r\n keys,\r\n strScroll,\r\n scrollElementTo,\r\n getElementScroll,\r\n sanitizeScrollCoordinates,\r\n getStyles,\r\n equal,\r\n getZeroScrollCoordinates,\r\n hasDimensions,\r\n addEventListener,\r\n stopPropagation,\r\n rAF,\r\n hasAttrClass,\r\n} from '../../../support';\r\nimport { getEnvironment } from '../../../environment';\r\nimport {\r\n dataAttributeHost,\r\n dataValueNoClipping,\r\n dataValueViewportScrollbarHidden,\r\n dataAttributePadding,\r\n dataValueViewportOverflowXPrefix,\r\n dataValueViewportOverflowYPrefix,\r\n dataValueViewportNoContent,\r\n dataValueViewportMeasuring,\r\n} from '../../../classnames';\r\nimport { getStaticPluginModuleInstance, scrollbarsHidingPluginName } from '../../../plugins';\r\nimport {\r\n getShowNativeOverlaidScrollbars,\r\n getElementOverflowStyle,\r\n overflowBehaviorToOverflowStyle,\r\n overflowCssValueToOverflowStyle,\r\n overflowIsVisible,\r\n} from '../structureSetup.utils';\r\nimport { OverflowBehavior } from '../../../options';\r\n\r\ninterface FlowDirectionStyles {\r\n display?: string;\r\n direction?: string;\r\n flexDirection?: string;\r\n writingMode?: string;\r\n}\r\n\r\n/**\r\n * Lifecycle with the responsibility to set the correct overflow and scrollbar hiding styles of the viewport element.\r\n * @param structureUpdateHub\r\n * @returns\r\n */\r\nexport const createOverflowUpdateSegment: CreateStructureUpdateSegment = (\r\n structureSetupElements,\r\n structureSetupState\r\n) => {\r\n const env = getEnvironment();\r\n const {\r\n _host,\r\n _padding,\r\n _viewport,\r\n _viewportIsTarget,\r\n _scrollEventElement,\r\n _scrollOffsetElement,\r\n _isBody,\r\n _viewportAddRemoveClass,\r\n _windowElm,\r\n } = structureSetupElements;\r\n const { _nativeScrollbarsHiding } = env;\r\n const viewportIsTargetBody = _isBody && _viewportIsTarget;\r\n const max0 = bind(mathMax, 0);\r\n const flowDirectionCanBeNonDefaultMap: Record<\r\n keyof FlowDirectionStyles,\r\n (styleValue: string) => boolean\r\n > = {\r\n display: () => false,\r\n direction: (directionStyle) => directionStyle !== 'ltr',\r\n flexDirection: (flexDirectionStyle) => flexDirectionStyle.endsWith('-reverse'),\r\n writingMode: (writingModeStyle) => writingModeStyle !== 'horizontal-tb',\r\n };\r\n const flowDirectionStyleArr = keys(flowDirectionCanBeNonDefaultMap) as Array<\r\n keyof FlowDirectionStyles\r\n >;\r\n const whCacheOptions = {\r\n _equal: equalWH,\r\n _initialValue: { w: 0, h: 0 },\r\n };\r\n const partialXYOptions = {\r\n _equal: equalXY,\r\n _initialValue: {},\r\n };\r\n\r\n const setMeasuringMode = (active: boolean) => {\r\n // viewportIsTargetBody never needs measuring\r\n _viewportAddRemoveClass(dataValueViewportMeasuring, !viewportIsTargetBody && active);\r\n };\r\n\r\n const getMeasuredScrollCoordinates = (flowDirectionStyles: FlowDirectionStyles) => {\r\n const flowDirectionCanBeNonDefault = flowDirectionStyleArr.some((styleName) => {\r\n const styleValue = flowDirectionStyles[styleName];\r\n return styleValue && flowDirectionCanBeNonDefaultMap[styleName](styleValue);\r\n });\r\n\r\n // if the direction can not be non-default return default scroll coordinates (only the sign of the numbers matters)\r\n if (!flowDirectionCanBeNonDefault) {\r\n return {\r\n _start: { x: 0, y: 0 },\r\n _end: { x: 1, y: 1 },\r\n };\r\n }\r\n\r\n setMeasuringMode(true);\r\n\r\n const originalScrollOffset = getElementScroll(_scrollOffsetElement);\r\n const removeNoContent = _viewportAddRemoveClass(dataValueViewportNoContent, true);\r\n const removeScrollBlock = addEventListener(\r\n _scrollEventElement,\r\n strScroll,\r\n (event) => {\r\n const scrollEventScrollOffset = getElementScroll(_scrollOffsetElement);\r\n // if scroll offset didnt change\r\n if (\r\n event.isTrusted &&\r\n scrollEventScrollOffset.x === originalScrollOffset.x &&\r\n scrollEventScrollOffset.y === originalScrollOffset.y\r\n ) {\r\n stopPropagation(event);\r\n }\r\n },\r\n {\r\n _capture: true,\r\n _once: true,\r\n }\r\n );\r\n\r\n scrollElementTo(_scrollOffsetElement, {\r\n x: 0,\r\n y: 0,\r\n });\r\n removeNoContent();\r\n\r\n const _start = getElementScroll(_scrollOffsetElement);\r\n const scrollSize = getScrollSize(_scrollOffsetElement);\r\n scrollElementTo(_scrollOffsetElement, {\r\n x: scrollSize.w,\r\n y: scrollSize.h,\r\n });\r\n\r\n const tmp = getElementScroll(_scrollOffsetElement);\r\n scrollElementTo(_scrollOffsetElement, {\r\n // if tmp is very close start there porbably wasn't any scroll happening so scroll again in different direction\r\n x: tmp.x - _start.x < 1 && -scrollSize.w,\r\n y: tmp.y - _start.y < 1 && -scrollSize.h,\r\n });\r\n\r\n const _end = getElementScroll(_scrollOffsetElement);\r\n scrollElementTo(_scrollOffsetElement, originalScrollOffset);\r\n rAF(() => removeScrollBlock());\r\n\r\n return {\r\n _start,\r\n _end,\r\n };\r\n };\r\n const getOverflowAmount = (\r\n viewportScrollSize: WH,\r\n viewportClientSize: WH\r\n ): WH => {\r\n const tollerance = wnd.devicePixelRatio % 1 !== 0 ? 1 : 0;\r\n const amount = {\r\n w: max0(viewportScrollSize.w - viewportClientSize.w),\r\n h: max0(viewportScrollSize.h - viewportClientSize.h),\r\n };\r\n\r\n return {\r\n w: amount.w > tollerance ? amount.w : 0,\r\n h: amount.h > tollerance ? amount.h : 0,\r\n };\r\n };\r\n const getViewportOverflowStyle = (\r\n hasOverflow: Partial>,\r\n overflowBehavior: XY\r\n ): XY => {\r\n const getAxisOverflowStyle = (\r\n axisBehavior: OverflowBehavior,\r\n axisHasOverflow: boolean | undefined,\r\n perpendicularBehavior: OverflowBehavior,\r\n perpendicularOverflow: boolean | undefined\r\n ): OverflowStyle => {\r\n // convert behavior to style:\r\n // 'visible' -> 'hidden'\r\n // 'hidden' -> 'hidden'\r\n // 'scroll' -> 'scroll'\r\n // 'visible-hidden' -> 'hidden'\r\n // 'visible-scroll' -> 'scroll'\r\n const behaviorStyle =\r\n axisBehavior === strVisible ? strHidden : overflowBehaviorToOverflowStyle(axisBehavior);\r\n const axisOverflowVisible = overflowIsVisible(axisBehavior);\r\n const perpendicularOverflowVisible = overflowIsVisible(perpendicularBehavior);\r\n\r\n // if no axis has overflow set 'hidden'\r\n if (!axisHasOverflow && !perpendicularOverflow) {\r\n return strHidden;\r\n }\r\n\r\n // if both axis have a visible behavior ('visible', 'visible-hidden', 'visible-scroll') set 'visible'\r\n if (axisOverflowVisible && perpendicularOverflowVisible) {\r\n return strVisible;\r\n }\r\n\r\n // this this axis has a visible behavior\r\n if (axisOverflowVisible) {\r\n const nonPerpendicularOverflow = axisHasOverflow ? strVisible : strHidden;\r\n return axisHasOverflow && perpendicularOverflow\r\n ? behaviorStyle // if both axis have an overflow set ('hidden' or 'scroll')\r\n : nonPerpendicularOverflow; // if only this axis has an overflow set 'visible', if no axis has an overflow set 'hidden'\r\n }\r\n\r\n const nonOverflow =\r\n perpendicularOverflowVisible && perpendicularOverflow ? strVisible : strHidden;\r\n return axisHasOverflow\r\n ? behaviorStyle // if this axis has an overflow\r\n : nonOverflow; // if the perp. axis has a visible behavior and has an overflow set 'visible', otherwise set 'hidden'\r\n };\r\n\r\n return {\r\n x: getAxisOverflowStyle(overflowBehavior.x, hasOverflow.x, overflowBehavior.y, hasOverflow.y),\r\n y: getAxisOverflowStyle(overflowBehavior.y, hasOverflow.y, overflowBehavior.x, hasOverflow.x),\r\n };\r\n };\r\n const setViewportOverflowStyle = (viewportOverflowStyle: XY) => {\r\n // `createAllOverflowStyleClassNames` and `allOverflowStyleClassNames` could be one scope further up but would increase bundle size\r\n const createAllOverflowStyleClassNames = (isHorizontal?: boolean) =>\r\n [strVisible, strHidden, strScroll].map((style) =>\r\n createViewportOverflowStyleClassName(overflowCssValueToOverflowStyle(style), isHorizontal)\r\n );\r\n const allOverflowStyleClassNames = createAllOverflowStyleClassNames(true)\r\n .concat(createAllOverflowStyleClassNames())\r\n .join(' ');\r\n\r\n _viewportAddRemoveClass(allOverflowStyleClassNames);\r\n _viewportAddRemoveClass(\r\n (keys(viewportOverflowStyle) as Array)\r\n .map((axis) =>\r\n createViewportOverflowStyleClassName(viewportOverflowStyle[axis], axis === 'x')\r\n )\r\n .join(' '),\r\n true\r\n );\r\n };\r\n\r\n const [updateSizeFraction, getCurrentSizeFraction] = createCache>(\r\n whCacheOptions,\r\n bind(getFractionalSize, _viewport)\r\n );\r\n const [updateViewportScrollSizeCache, getCurrentViewportScrollSizeCache] = createCache<\r\n WH\r\n >(whCacheOptions, bind(getScrollSize, _viewport));\r\n const [updateOverflowAmountCache, getCurrentOverflowAmountCache] =\r\n createCache>(whCacheOptions);\r\n const [updateHasOverflowCache] = createCache>>(partialXYOptions);\r\n const [updateOverflowEdge, getCurrentOverflowEdgeCache] = createCache>(whCacheOptions);\r\n const [updateOverflowStyleCache] = createCache>>(partialXYOptions);\r\n const [updateFlowDirectionStyles] = createCache(\r\n {\r\n _equal: (currVal, newValu) => equal(currVal, newValu, flowDirectionStyleArr),\r\n _initialValue: {},\r\n },\r\n () => (hasDimensions(_viewport) ? getStyles(_viewport, flowDirectionStyleArr) : {})\r\n );\r\n const [updateMeasuredScrollCoordinates, getCurrentMeasuredScrollCoordinates] =\r\n createCache({\r\n _equal: (currVal, newVal) =>\r\n equalXY(currVal._start, newVal._start) && equalXY(currVal._end, newVal._end),\r\n _initialValue: getZeroScrollCoordinates(),\r\n });\r\n\r\n const scrollbarsHidingPlugin = getStaticPluginModuleInstance(\r\n scrollbarsHidingPluginName\r\n );\r\n\r\n const createViewportOverflowStyleClassName = (\r\n overflowStyle: OverflowStyle,\r\n isHorizontal?: boolean\r\n ) => {\r\n const prefix = isHorizontal\r\n ? dataValueViewportOverflowXPrefix\r\n : dataValueViewportOverflowYPrefix;\r\n return `${prefix}${capitalizeFirstLetter(overflowStyle)}`;\r\n };\r\n\r\n return (\r\n { _checkOption, _observersUpdateHints, _observersState, _force },\r\n { _paddingStyleChanged }\r\n ) => {\r\n const {\r\n _sizeChanged,\r\n _hostMutation,\r\n _contentMutation,\r\n _directionChanged,\r\n _appear,\r\n _scrollbarSizeChanged,\r\n } = _observersUpdateHints || {};\r\n const scrollbarsHidingPluginViewportArrangement =\r\n scrollbarsHidingPlugin &&\r\n scrollbarsHidingPlugin._viewportArrangement(\r\n structureSetupElements,\r\n structureSetupState,\r\n _observersState,\r\n env,\r\n _checkOption\r\n );\r\n\r\n const { _arrangeViewport, _undoViewportArrange, _hideNativeScrollbars } =\r\n scrollbarsHidingPluginViewportArrangement || {};\r\n\r\n const [showNativeOverlaidScrollbars, showNativeOverlaidScrollbarsChanged] =\r\n getShowNativeOverlaidScrollbars(_checkOption, env);\r\n const [overflow, overflowChanged] = _checkOption('overflow');\r\n const overflowXVisible = overflowIsVisible(overflow.x);\r\n const overflowYVisible = overflowIsVisible(overflow.y);\r\n\r\n const viewportChanged =\r\n _sizeChanged ||\r\n _paddingStyleChanged ||\r\n _contentMutation ||\r\n _directionChanged ||\r\n _scrollbarSizeChanged ||\r\n showNativeOverlaidScrollbarsChanged;\r\n\r\n let sizeFractionCache = getCurrentSizeFraction(_force);\r\n let viewportScrollSizeCache = getCurrentViewportScrollSizeCache(_force);\r\n let overflowAmuntCache = getCurrentOverflowAmountCache(_force);\r\n let overflowEdgeCache = getCurrentOverflowEdgeCache(_force);\r\n\r\n if (showNativeOverlaidScrollbarsChanged && _nativeScrollbarsHiding) {\r\n _viewportAddRemoveClass(dataValueViewportScrollbarHidden, !showNativeOverlaidScrollbars);\r\n }\r\n\r\n if (viewportChanged) {\r\n if (hasAttrClass(_host, dataAttributeHost, dataValueNoClipping)) {\r\n setMeasuringMode(true);\r\n }\r\n\r\n const redoViewportArrange = _undoViewportArrange && _undoViewportArrange();\r\n\r\n const [sizeFraction] = (sizeFractionCache = updateSizeFraction(_force));\r\n const [viewportScrollSize] = (viewportScrollSizeCache =\r\n updateViewportScrollSizeCache(_force));\r\n const viewportClientSize = getClientSize(_viewport);\r\n const windowInnerSize = viewportIsTargetBody && getWindowSize(_windowElm());\r\n const overflowAmountScrollSize = {\r\n w: max0(viewportScrollSize.w + sizeFraction.w),\r\n h: max0(viewportScrollSize.h + sizeFraction.h),\r\n };\r\n\r\n const overflowAmountClientSize = {\r\n w: max0(\r\n (windowInnerSize\r\n ? windowInnerSize.w\r\n : viewportClientSize.w + max0(viewportClientSize.w - viewportScrollSize.w)) +\r\n sizeFraction.w\r\n ),\r\n h: max0(\r\n (windowInnerSize\r\n ? windowInnerSize.h\r\n : viewportClientSize.h + max0(viewportClientSize.h - viewportScrollSize.h)) +\r\n sizeFraction.h\r\n ),\r\n };\r\n\r\n if (redoViewportArrange) {\r\n redoViewportArrange();\r\n }\r\n\r\n overflowEdgeCache = updateOverflowEdge(overflowAmountClientSize);\r\n overflowAmuntCache = updateOverflowAmountCache(\r\n getOverflowAmount(overflowAmountScrollSize, overflowAmountClientSize),\r\n _force\r\n );\r\n }\r\n\r\n const [overflowEdge, overflowEdgeChanged] = overflowEdgeCache;\r\n const [overflowAmount, overflowAmountChanged] = overflowAmuntCache;\r\n const [viewportScrollSize, viewportScrollSizeChanged] = viewportScrollSizeCache;\r\n const [sizeFraction, sizeFractionChanged] = sizeFractionCache;\r\n const [hasOverflow, hasOverflowChanged] = updateHasOverflowCache({\r\n x: overflowAmount.w > 0,\r\n y: overflowAmount.h > 0,\r\n });\r\n const removeClipping =\r\n (overflowXVisible && overflowYVisible && (hasOverflow.x || hasOverflow.y)) ||\r\n (overflowXVisible && hasOverflow.x && !hasOverflow.y) ||\r\n (overflowYVisible && hasOverflow.y && !hasOverflow.x);\r\n const adjustViewportStyle =\r\n _paddingStyleChanged ||\r\n _directionChanged ||\r\n _scrollbarSizeChanged ||\r\n sizeFractionChanged ||\r\n viewportScrollSizeChanged ||\r\n overflowEdgeChanged ||\r\n overflowAmountChanged ||\r\n overflowChanged ||\r\n showNativeOverlaidScrollbarsChanged ||\r\n viewportChanged ||\r\n (_hostMutation && viewportIsTargetBody);\r\n const [flowDirectionStyles, flowDirectionStylesChanged] = updateFlowDirectionStyles(_force);\r\n const adjustMeasuredScrollCoordinates =\r\n _directionChanged || _appear || flowDirectionStylesChanged || hasOverflowChanged || _force;\r\n const [scrollCoordinates, scrollCoordinatesChanged] = adjustMeasuredScrollCoordinates\r\n ? updateMeasuredScrollCoordinates(getMeasuredScrollCoordinates(flowDirectionStyles), _force)\r\n : getCurrentMeasuredScrollCoordinates();\r\n\r\n let viewportOverflowStyle = getViewportOverflowStyle(hasOverflow, overflow);\r\n\r\n setMeasuringMode(false);\r\n\r\n if (adjustViewportStyle) {\r\n setViewportOverflowStyle(viewportOverflowStyle);\r\n\r\n viewportOverflowStyle = getElementOverflowStyle(_viewport, hasOverflow);\r\n\r\n if (_hideNativeScrollbars && _arrangeViewport) {\r\n _arrangeViewport(viewportOverflowStyle, viewportScrollSize, sizeFraction);\r\n\r\n setStyles(_viewport, _hideNativeScrollbars(viewportOverflowStyle));\r\n }\r\n }\r\n\r\n const [overflowStyle, overflowStyleChanged] = updateOverflowStyleCache(viewportOverflowStyle);\r\n\r\n addRemoveAttrClass(_host, dataAttributeHost, dataValueNoClipping, removeClipping);\r\n addRemoveAttrClass(_padding, dataAttributePadding, dataValueNoClipping, removeClipping);\r\n\r\n assignDeep(structureSetupState, {\r\n _overflowStyle: overflowStyle,\r\n _overflowEdge: {\r\n x: overflowEdge.w,\r\n y: overflowEdge.h,\r\n },\r\n _overflowAmount: {\r\n x: overflowAmount.w,\r\n y: overflowAmount.h,\r\n },\r\n _hasOverflow: hasOverflow,\r\n _scrollCoordinates: sanitizeScrollCoordinates(scrollCoordinates, overflowAmount),\r\n });\r\n\r\n return {\r\n _overflowStyleChanged: overflowStyleChanged,\r\n _overflowEdgeChanged: overflowEdgeChanged,\r\n _overflowAmountChanged: overflowAmountChanged,\r\n _scrollCoordinatesChanged: scrollCoordinatesChanged || overflowAmountChanged,\r\n };\r\n };\r\n};\r\n","import type { TRBL, XY, ScrollCoordinates } from '../../support';\r\nimport type { StructureSetupElementsObj } from './structureSetup.elements';\r\nimport type {\r\n ObserversSetupState,\r\n ObserversSetupUpdateHints,\r\n Setup,\r\n SetupUpdateInfo,\r\n} from '../../setups';\r\nimport type { InitializationTarget } from '../../initialization';\r\nimport type { StyleObject, OverflowStyle } from '../../typings';\r\nimport {\r\n assignDeep,\r\n each,\r\n getElementScroll,\r\n getZeroScrollCoordinates,\r\n scrollElementTo,\r\n strHidden,\r\n strMarginBottom,\r\n strMarginLeft,\r\n strMarginRight,\r\n strPaddingBottom,\r\n strPaddingLeft,\r\n strPaddingRight,\r\n strPaddingTop,\r\n} from '../../support';\r\nimport { getEnvironment } from '../../environment';\r\nimport { createStructureSetupElements } from './structureSetup.elements';\r\nimport {\r\n createOverflowUpdateSegment,\r\n createPaddingUpdateSegment,\r\n createTrinsicUpdateSegment,\r\n} from './updateSegments';\r\n\r\nexport interface StructureSetupState {\r\n _padding: TRBL;\r\n _paddingAbsolute: boolean;\r\n _viewportPaddingStyle: StyleObject;\r\n _overflowEdge: XY;\r\n _overflowAmount: XY;\r\n _overflowStyle: XY;\r\n _hasOverflow: XY;\r\n _scrollCoordinates: ScrollCoordinates;\r\n}\r\n\r\nexport interface StructureSetupUpdateInfo extends SetupUpdateInfo {\r\n _observersState: ObserversSetupState;\r\n _observersUpdateHints?: ObserversSetupUpdateHints;\r\n}\r\n\r\nexport type StructureSetupUpdateHints = {\r\n _overflowEdgeChanged?: boolean;\r\n _overflowAmountChanged?: boolean;\r\n _overflowStyleChanged?: boolean;\r\n _paddingStyleChanged?: boolean;\r\n _scrollCoordinatesChanged?: boolean;\r\n};\r\n\r\nexport type StructureSetup = [\r\n ...Setup,\r\n /** The elements created by the structure setup. */\r\n StructureSetupElementsObj,\r\n /** Function to be called when the initialization was canceled. */\r\n () => void,\r\n];\r\n\r\nexport type StructureUpdateSegment = (\r\n updateInfo: StructureSetupUpdateInfo,\r\n updateHints: Readonly\r\n) => StructureSetupUpdateHints | void;\r\n\r\nexport type CreateStructureUpdateSegment = (\r\n structureSetupElements: StructureSetupElementsObj,\r\n state: StructureSetupState\r\n) => StructureUpdateSegment;\r\n\r\nexport const createStructureSetup = (target: InitializationTarget): StructureSetup => {\r\n const [elements, appendStructureElements, canceled] = createStructureSetupElements(target);\r\n const state: StructureSetupState = {\r\n _padding: {\r\n t: 0,\r\n r: 0,\r\n b: 0,\r\n l: 0,\r\n },\r\n _paddingAbsolute: false,\r\n _viewportPaddingStyle: {\r\n [strMarginRight]: 0,\r\n [strMarginBottom]: 0,\r\n [strMarginLeft]: 0,\r\n [strPaddingTop]: 0,\r\n [strPaddingRight]: 0,\r\n [strPaddingBottom]: 0,\r\n [strPaddingLeft]: 0,\r\n },\r\n _overflowEdge: { x: 0, y: 0 },\r\n _overflowAmount: { x: 0, y: 0 },\r\n _overflowStyle: {\r\n x: strHidden,\r\n y: strHidden,\r\n },\r\n _hasOverflow: {\r\n x: false,\r\n y: false,\r\n },\r\n _scrollCoordinates: getZeroScrollCoordinates(),\r\n };\r\n const { _target, _scrollOffsetElement, _viewportIsTarget, _removeScrollObscuringStyles } =\r\n elements;\r\n const { _nativeScrollbarsHiding, _nativeScrollbarsOverlaid } = getEnvironment();\r\n const doViewportArrange =\r\n !_nativeScrollbarsHiding && (_nativeScrollbarsOverlaid.x || _nativeScrollbarsOverlaid.y);\r\n\r\n const updateSegments: StructureUpdateSegment[] = [\r\n createTrinsicUpdateSegment(elements, state),\r\n createPaddingUpdateSegment(elements, state),\r\n createOverflowUpdateSegment(elements, state),\r\n ];\r\n\r\n return [\r\n appendStructureElements,\r\n (updateInfo) => {\r\n const updateHints: StructureSetupUpdateHints = {};\r\n const adjustScrollOffset = doViewportArrange;\r\n const scrollOffset = adjustScrollOffset && getElementScroll(_scrollOffsetElement);\r\n const revertScrollObscuringStyles = scrollOffset && _removeScrollObscuringStyles();\r\n\r\n each(updateSegments, (updateSegment) => {\r\n assignDeep(updateHints, updateSegment(updateInfo, updateHints) || {});\r\n });\r\n\r\n scrollElementTo(_scrollOffsetElement, scrollOffset);\r\n if (revertScrollObscuringStyles) {\r\n revertScrollObscuringStyles();\r\n }\r\n if (!_viewportIsTarget) {\r\n scrollElementTo(_target, 0);\r\n }\r\n\r\n return updateHints;\r\n },\r\n state,\r\n elements,\r\n canceled,\r\n ];\r\n};\r\n","import type { OptionsCheckFn, Options, PartialOptions, ReadonlyOptions } from '../options';\r\nimport type { DeepReadonly } from '../typings';\r\nimport type { InitializationTarget } from '../initialization';\r\nimport type { ObserversSetupState, ObserversSetupUpdateHints } from './observersSetup';\r\nimport type { StructureSetupState, StructureSetupUpdateHints } from './structureSetup';\r\nimport type { StructureSetupElementsObj } from './structureSetup/structureSetup.elements';\r\nimport type { ScrollbarsSetupElementsObj } from './scrollbarsSetup/scrollbarsSetup.elements';\r\nimport { createOptionCheck } from '../options';\r\nimport {\r\n assignDeep,\r\n bind,\r\n getElementScroll,\r\n isEmptyObject,\r\n keys,\r\n runEachAndClear,\r\n scrollElementTo,\r\n} from '../support';\r\nimport { createObserversSetup } from './observersSetup';\r\nimport { createScrollbarsSetup } from './scrollbarsSetup';\r\nimport { createStructureSetup } from './structureSetup';\r\n\r\nexport type SetupUpdateHints = Partial>;\r\n\r\nexport type SetupUpdateInfo = {\r\n _checkOption: OptionsCheckFn;\r\n _changedOptions: PartialOptions;\r\n _force: boolean;\r\n};\r\n\r\nexport type Setup<\r\n U extends SetupUpdateInfo,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n S extends Readonly>,\r\n H extends SetupUpdateHints | void,\r\n> = [\r\n /** The create function which returns the `destroy` function. */\r\n _create: () => () => void,\r\n /** Function which updates the setup and returns the update result. */\r\n _update: (updateInfo: U) => H,\r\n /** Function which returns the current state. */\r\n _state: S,\r\n];\r\n\r\nexport interface SetupsUpdateInfo {\r\n /** The options that changed or `undefined` if none changed. */\r\n _changedOptions?: PartialOptions;\r\n /** Whether chache should be ignored. */\r\n _force?: boolean;\r\n /** Whether observers should take their records and thus update as well. */\r\n _takeRecords?: boolean;\r\n /** Whether one or more scrollbars has been cloned. */\r\n _cloneScrollbar?: boolean;\r\n}\r\n\r\nexport interface SetupsUpdateHints {\r\n readonly _observersUpdateHints: DeepReadonly;\r\n readonly _structureUpdateHints: DeepReadonly;\r\n}\r\n\r\nexport interface SetupsState {\r\n readonly _observersSetupState: DeepReadonly;\r\n readonly _structureSetupState: DeepReadonly;\r\n}\r\n\r\nexport interface SetupsElements {\r\n readonly _structureSetupElements: DeepReadonly;\r\n readonly _scrollbarsSetupElements: DeepReadonly;\r\n}\r\n\r\nexport type Setups = [\r\n construct: () => () => void,\r\n update: (updateInfo: SetupsUpdateInfo) => boolean,\r\n getState: () => SetupsState,\r\n elements: SetupsElements,\r\n canceled: () => void,\r\n];\r\n\r\nexport const createSetups = (\r\n target: InitializationTarget,\r\n options: ReadonlyOptions,\r\n isDestroyed: () => boolean,\r\n onUpdated: (updateInfo: SetupsUpdateInfo, updateHints: SetupsUpdateHints) => void,\r\n onScroll: (scrollEvent: Event) => void\r\n): Setups => {\r\n let cacheAndOptionsInitialized = false;\r\n const getCurrentOption = createOptionCheck(options, {});\r\n const [\r\n structureSetupCreate,\r\n structureSetupUpdate,\r\n structureSetupState,\r\n structureSetupElements,\r\n structureSetupCanceled,\r\n ] = createStructureSetup(target);\r\n const [observersSetupCreate, observersSetupUpdate, observersSetupState] = createObserversSetup(\r\n structureSetupElements,\r\n structureSetupState,\r\n getCurrentOption,\r\n (observersUpdateHints) => {\r\n update({}, observersUpdateHints);\r\n }\r\n );\r\n const [scrollbarsSetupCreate, scrollbarsSetupUpdate, , scrollbarsSetupElements] =\r\n createScrollbarsSetup(\r\n target,\r\n options,\r\n observersSetupState,\r\n structureSetupState,\r\n structureSetupElements,\r\n onScroll\r\n );\r\n\r\n const updateHintsAreTruthy = (hints: SetupUpdateHints) =>\r\n keys(hints).some((key) => !!hints[key as keyof typeof hints]);\r\n\r\n const update = (\r\n updateInfo: SetupsUpdateInfo,\r\n observerUpdateHints?: ObserversSetupUpdateHints\r\n ): boolean => {\r\n if (isDestroyed()) {\r\n return false;\r\n }\r\n\r\n const {\r\n _changedOptions: rawChangedOptions,\r\n _force: rawForce,\r\n _takeRecords,\r\n _cloneScrollbar,\r\n } = updateInfo;\r\n\r\n const _changedOptions = rawChangedOptions || {};\r\n const _force = !!rawForce || !cacheAndOptionsInitialized;\r\n const baseUpdateInfoObj: SetupUpdateInfo = {\r\n _checkOption: createOptionCheck(options, _changedOptions, _force),\r\n _changedOptions,\r\n _force,\r\n };\r\n\r\n if (_cloneScrollbar) {\r\n scrollbarsSetupUpdate(baseUpdateInfoObj);\r\n return false;\r\n }\r\n\r\n const observersHints =\r\n observerUpdateHints ||\r\n observersSetupUpdate(\r\n assignDeep({}, baseUpdateInfoObj, {\r\n _takeRecords,\r\n })\r\n );\r\n\r\n const structureHints = structureSetupUpdate(\r\n assignDeep({}, baseUpdateInfoObj, {\r\n _observersState: observersSetupState,\r\n _observersUpdateHints: observersHints,\r\n })\r\n );\r\n\r\n scrollbarsSetupUpdate(\r\n assignDeep({}, baseUpdateInfoObj, {\r\n _observersUpdateHints: observersHints,\r\n _structureUpdateHints: structureHints,\r\n })\r\n );\r\n\r\n const truthyObserversHints = updateHintsAreTruthy(observersHints);\r\n const truthyStructureHints = updateHintsAreTruthy(structureHints);\r\n const changed =\r\n truthyObserversHints || truthyStructureHints || !isEmptyObject(_changedOptions) || _force;\r\n\r\n cacheAndOptionsInitialized = true;\r\n\r\n if (changed) {\r\n onUpdated(updateInfo, {\r\n _observersUpdateHints: observersHints,\r\n _structureUpdateHints: structureHints,\r\n });\r\n }\r\n\r\n return changed;\r\n };\r\n\r\n return [\r\n () => {\r\n const { _originalScrollOffsetElement, _scrollOffsetElement, _removeScrollObscuringStyles } =\r\n structureSetupElements;\r\n const initialScroll = getElementScroll(_originalScrollOffsetElement);\r\n const destroyFns = [observersSetupCreate(), structureSetupCreate(), scrollbarsSetupCreate()];\r\n const revertScrollObscuringStyles = _removeScrollObscuringStyles();\r\n\r\n scrollElementTo(_scrollOffsetElement, initialScroll);\r\n revertScrollObscuringStyles();\r\n\r\n return bind(runEachAndClear, destroyFns);\r\n },\r\n update,\r\n () => ({\r\n _observersSetupState: observersSetupState,\r\n _structureSetupState: structureSetupState,\r\n }),\r\n {\r\n _structureSetupElements: structureSetupElements,\r\n _scrollbarsSetupElements: scrollbarsSetupElements,\r\n },\r\n structureSetupCanceled,\r\n ];\r\n};\r\n","import type { OverlayScrollbars } from './overlayscrollbars';\r\n\r\nconst targetInstanceMap: WeakMap = new WeakMap();\r\n\r\n/**\r\n * Adds the given OverlayScrollbars instance to the given element.\r\n * @param target The element which is the target of the OverlayScrollbars instance.\r\n * @param osInstance The OverlayScrollbars instance.\r\n */\r\nexport const addInstance = (target: Element, osInstance: OverlayScrollbars): void => {\r\n targetInstanceMap.set(target, osInstance);\r\n};\r\n\r\n/**\r\n * Removes a OverlayScrollbars instance from the given element.\r\n * @param target The element from which its OverlayScrollbars instance shall be removed.\r\n */\r\nexport const removeInstance = (target: Element): void => {\r\n targetInstanceMap.delete(target);\r\n};\r\n\r\n/**\r\n * Gets the OverlayScrollbars from the given element or undefined if it doesn't have one.\r\n * @param target The element of which its OverlayScrollbars instance shall be get.\r\n */\r\nexport const getInstance = (target: Element): OverlayScrollbars | undefined =>\r\n targetInstanceMap.get(target);\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport type { XY, TRBL } from './support';\r\nimport type { Options, PartialOptions, ReadonlyOptions } from './options';\r\nimport type {\r\n InferInstancePluginModuleInstance,\r\n InferStaticPluginModuleInstance,\r\n InstancePlugin,\r\n OptionsValidationPlugin,\r\n Plugin,\r\n PluginModuleInstance,\r\n StaticPlugin,\r\n} from './plugins';\r\nimport type { Initialization, InitializationTarget, PartialInitialization } from './initialization';\r\nimport type { OverflowStyle } from './typings';\r\nimport type { EventListenerArgs, EventListener, EventListeners } from './eventListeners';\r\nimport type {\r\n ScrollbarsSetupElement,\r\n ScrollbarStructure,\r\n} from './setups/scrollbarsSetup/scrollbarsSetup.elements';\r\nimport {\r\n addPlugins,\r\n getStaticPluginModuleInstance,\r\n optionsValidationPluginModuleName,\r\n pluginModules,\r\n registerPluginModuleInstances,\r\n} from './plugins';\r\nimport { createSetups } from './setups';\r\nimport { addInstance, getInstance, removeInstance } from './instances';\r\nimport { cancelInitialization } from './initialization';\r\nimport { getEnvironment } from './environment';\r\nimport { getOptionsDiff } from './options';\r\nimport {\r\n assignDeep,\r\n isEmptyObject,\r\n isFunction,\r\n isHTMLElement,\r\n createEventListenerHub,\r\n isPlainObject,\r\n keys,\r\n isArray,\r\n push,\r\n runEachAndClear,\r\n bind,\r\n removeUndefinedProperties,\r\n} from './support';\r\nimport { setNonce } from './nonce';\r\nimport { setTrustedTypePolicy } from './trustedTypePolicy';\r\n\r\n// Notes:\r\n// Height intrinsic detection use \"content: true\" init strategy - or open ticket for custom height intrinsic observer\r\n\r\n/**\r\n * Describes the OverlayScrollbars environment.\r\n */\r\nexport interface Environment {\r\n /** The native scrollbars size of the browser / system. */\r\n scrollbarsSize: XY;\r\n /** Whether the native scrollbars are overlaid. */\r\n scrollbarsOverlaid: XY;\r\n /** Whether the browser supports native scrollbars hiding. */\r\n scrollbarsHiding: boolean;\r\n /** Whether the browser supports the ScrollTimeline API. */\r\n scrollTimeline: boolean;\r\n /** The default Initialization to use if nothing else is specified. */\r\n staticDefaultInitialization: Initialization;\r\n /** The default Options to use if nothing else is specified. */\r\n staticDefaultOptions: Options;\r\n\r\n /** Returns the current default Initialization. */\r\n getDefaultInitialization(): Initialization;\r\n /** Returns the current default Options. */\r\n getDefaultOptions(): Options;\r\n\r\n /**\r\n * Sets a new default Initialization.\r\n * If the new default Initialization is partially filled, its deeply merged with the current default Initialization.\r\n * @param newDefaultInitialization The new default Initialization.\r\n * @returns The current default Initialization.\r\n */\r\n setDefaultInitialization(newDefaultInitialization: PartialInitialization): Initialization;\r\n /**\r\n * Sets new default Options.\r\n * If the new default Options are partially filled, they're deeply merged with the current default Options.\r\n * @param newDefaultOptions The new default Options.\r\n * @returns The current default options.\r\n */\r\n setDefaultOptions(newDefaultOptions: PartialOptions): Options;\r\n}\r\n\r\n/**\r\n * The primary entry point to OverlayScrollbars.\r\n */\r\nexport interface OverlayScrollbarsStatic {\r\n /**\r\n * Returns the current OverlayScrollbars instance if the target already has an instance.\r\n * @param target The initialization target to from which the instance shall be returned.\r\n */\r\n (target: InitializationTarget): OverlayScrollbars | undefined;\r\n /**\r\n * Initializes a new OverlayScrollbars instance to the given target\r\n * or returns the current OverlayScrollbars instance if the target already has an instance.\r\n * @param target The target.\r\n * @param options The options. (Can be just an empty object)\r\n * @param eventListeners Optional event listeners.\r\n */\r\n (\r\n target: InitializationTarget,\r\n options: PartialOptions,\r\n eventListeners?: EventListeners\r\n ): OverlayScrollbars;\r\n\r\n /**\r\n * Checks whether the passed value is a valid and not destroyed overlayscrollbars instance.\r\n * @param osInstance The value which shall be checked.\r\n */\r\n valid(osInstance: any): osInstance is OverlayScrollbars;\r\n /**\r\n * Gets the environment.\r\n */\r\n env(): Environment;\r\n /**\r\n * Sets the nonce attribute for inline styles.\r\n */\r\n nonce(newNonce: string | undefined): void;\r\n /**\r\n * Sets the trusted type policy used for DOM operations.\r\n */\r\n trustedTypePolicy(newTrustedTypePolicy: unknown | undefined): void;\r\n /**\r\n * Adds a single plugin.\r\n * @param plugin The plugin to be added.\r\n * @returns The plugins static modules instance or `void` if no instance was found.\r\n */\r\n plugin

(\r\n plugin: P\r\n ): P extends StaticPlugin ? InferStaticPluginModuleInstance

: void;\r\n /**\r\n * Adds multiple plugins.\r\n * @param plugins The plugins to be added.\r\n * @returns The plugins static modules instances or `void` if no instance was found.\r\n */\r\n plugin

(\r\n plugins: P\r\n ): P extends [Plugin, ...Plugin[]]\r\n ? {\r\n [K in keyof P]: P[K] extends StaticPlugin ? InferStaticPluginModuleInstance : void;\r\n }\r\n : void;\r\n}\r\n\r\n/**\r\n * Describes a OverlayScrollbars instances state.\r\n */\r\nexport interface State {\r\n /** Describes the current padding in pixel. */\r\n padding: TRBL;\r\n /** Whether the current padding is absolute. */\r\n paddingAbsolute: boolean;\r\n /** The client width (x) & height (y) of the viewport in pixel. */\r\n overflowEdge: XY;\r\n /** The overflow amount in pixel. */\r\n overflowAmount: XY;\r\n /** The css overflow style of the viewport. */\r\n overflowStyle: XY;\r\n /** Whether the viewport has an overflow. */\r\n hasOverflow: XY;\r\n /** The scroll coordinates of the viewport. */\r\n scrollCoordinates: {\r\n /** The start (origin) scroll coordinates for each axis. */\r\n start: XY;\r\n /** The end scroll coordinates for each axis. */\r\n end: XY;\r\n };\r\n /** Whether the direction is considered rtl. */\r\n directionRTL: boolean;\r\n /** Whether the instance is considered destroyed. */\r\n destroyed: boolean;\r\n}\r\n\r\n/**\r\n * Describes the elements of a scrollbar.\r\n */\r\nexport interface ScrollbarElements {\r\n /**\r\n * The root element of the scrollbar.\r\n * The HTML structure looks like this:\r\n * \r\n * \r\n * \r\n * \r\n * \r\n */\r\n scrollbar: HTMLElement;\r\n /** The track element of the scrollbar. */\r\n track: HTMLElement;\r\n /** The handle element of the scrollbar. */\r\n handle: HTMLElement;\r\n}\r\n\r\n/**\r\n * Describes the elements of a scrollbar and provides the possibility to clone them.\r\n */\r\nexport interface CloneableScrollbarElements extends ScrollbarElements {\r\n /**\r\n * Clones the current scrollbar and returns the cloned elements.\r\n * The returned elements aren't added to the DOM.\r\n */\r\n clone(): ScrollbarElements;\r\n}\r\n\r\n/**\r\n * Describes the elements of a OverlayScrollbars instance.\r\n */\r\nexport interface Elements {\r\n /** The element the instance was applied to. */\r\n target: HTMLElement;\r\n /** The host element. Its the root of all other elements. */\r\n host: HTMLElement;\r\n /**\r\n * The element which is responsible to apply correct paddings.\r\n * Depending on the Initialization it can be the same as the viewport element.\r\n */\r\n padding: HTMLElement;\r\n /** The element which is responsible to do any scrolling. */\r\n viewport: HTMLElement;\r\n /**\r\n * The element which is responsible to hold the content.\r\n * Depending on the Initialization it can be the same as the viewport element.\r\n */\r\n content: HTMLElement;\r\n /**\r\n * The element through which you can get the current `scrollLeft` or `scrollTop` offset.\r\n * Depending on the target element it can be the same as the viewport element.\r\n */\r\n scrollOffsetElement: HTMLElement;\r\n /**\r\n * The element through which you can add `scroll` events.\r\n * Depending on the target element it can be the same as the viewport element.\r\n */\r\n scrollEventElement: HTMLElement | Document;\r\n /** The horizontal scrollbar elements. */\r\n scrollbarHorizontal: CloneableScrollbarElements;\r\n /** The vertical scrollbar elements. */\r\n scrollbarVertical: CloneableScrollbarElements;\r\n}\r\n\r\n/**\r\n * Describes a OverlayScrollbars instance.\r\n */\r\nexport interface OverlayScrollbars {\r\n /** Gets the current options of the instance. */\r\n options(): Options;\r\n /**\r\n * Sets the options of the instance.\r\n * If the new options are partially filled, they're deeply merged with either the current options or the current default options.\r\n * @param newOptions The new options which should be applied.\r\n * @param pure Whether the options should be reset before the new options are added.\r\n * @returns Returns the current options of the instance.\r\n */\r\n options(newOptions: PartialOptions, pure?: boolean): Options;\r\n\r\n /**\r\n * Adds event listeners to the instance.\r\n * @param eventListeners An object which contains the added listeners.\r\n * @param pure Whether all already added event listeners should be removed before the new listeners are added.\r\n * @returns Returns a function which removes the added listeners.\r\n */\r\n on(eventListeners: EventListeners, pure?: boolean): () => void;\r\n /**\r\n * Adds a single event listener to the instance.\r\n * @param name The name of the event.\r\n * @param listener The listener which is invoked on that event.\r\n * @returns Returns a function which removes the added listeners.\r\n */\r\n on(name: N, listener: EventListener): () => void;\r\n /**\r\n * Adds multiple event listeners to the instance.\r\n * @param name The name of the event.\r\n * @param listener The listeners which are invoked on that event.\r\n * @returns Returns a function which removes the added listeners.\r\n */\r\n on(name: N, listener: EventListener[]): () => void;\r\n\r\n /**\r\n * Removes a single event listener from the instance.\r\n * @param name The name of the event.\r\n * @param listener The listener which shall be removed.\r\n */\r\n off(name: N, listener: EventListener): void;\r\n /**\r\n * Removes multiple event listeners from the instance.\r\n * @param name The name of the event.\r\n * @param listener The listeners which shall be removed.\r\n */\r\n off(name: N, listener: EventListener[]): void;\r\n\r\n /**\r\n * Updates the instance.\r\n * @param force Whether the update should force the cache to be invalidated.\r\n * @returns A boolean which indicates whether the `update` event was triggered through this update.\r\n * The update event is only triggered if something changed because of this update.\r\n */\r\n update(force?: boolean): boolean;\r\n /** Returns the state of the instance. */\r\n state(): State;\r\n /** Returns the elements of the instance. */\r\n elements(): Elements;\r\n /** Destroys the instance and removes all added elements. */\r\n destroy(): void;\r\n /** Returns the instance of the passed plugin or `undefined` if no instance was found. */\r\n plugin

(osPlugin: P): InferInstancePluginModuleInstance

| undefined;\r\n}\r\n\r\nexport const OverlayScrollbars: OverlayScrollbarsStatic = (\r\n target: InitializationTarget,\r\n options?: PartialOptions,\r\n eventListeners?: EventListeners\r\n) => {\r\n const { _getDefaultOptions } = getEnvironment();\r\n const targetIsElement = isHTMLElement(target);\r\n const instanceTarget = targetIsElement ? target : target.target;\r\n const potentialInstance = getInstance(instanceTarget);\r\n if (options && !potentialInstance) {\r\n let destroyed = false;\r\n const destroyFns: (() => void)[] = [];\r\n const instancePluginModuleInstances: Record = {};\r\n const validateOptions = (newOptions: PartialOptions) => {\r\n const newOptionsWithoutUndefined = removeUndefinedProperties(newOptions, true);\r\n const pluginValidate = getStaticPluginModuleInstance(\r\n optionsValidationPluginModuleName\r\n );\r\n return pluginValidate\r\n ? pluginValidate(newOptionsWithoutUndefined, true)\r\n : newOptionsWithoutUndefined;\r\n };\r\n const currentOptions: ReadonlyOptions = assignDeep(\r\n {},\r\n _getDefaultOptions(),\r\n validateOptions(options)\r\n );\r\n const [addPluginEvent, removePluginEvents, triggerPluginEvent] =\r\n createEventListenerHub();\r\n const [addInstanceEvent, removeInstanceEvents, triggerInstanceEvent] =\r\n createEventListenerHub(eventListeners);\r\n const triggerEvent: typeof triggerPluginEvent = (name, args) => {\r\n triggerInstanceEvent(name, args);\r\n triggerPluginEvent(name, args);\r\n };\r\n const [setupsConstruct, setupsUpdate, setupsState, setupsElements, setupsCanceled] =\r\n createSetups(\r\n target,\r\n currentOptions,\r\n () => destroyed,\r\n ({ _changedOptions, _force }, { _observersUpdateHints, _structureUpdateHints }) => {\r\n const {\r\n _sizeChanged,\r\n _directionChanged,\r\n _heightIntrinsicChanged,\r\n _contentMutation,\r\n _hostMutation,\r\n _appear,\r\n } = _observersUpdateHints;\r\n\r\n const {\r\n _overflowEdgeChanged,\r\n _overflowAmountChanged,\r\n _overflowStyleChanged,\r\n _scrollCoordinatesChanged,\r\n } = _structureUpdateHints;\r\n\r\n triggerEvent('updated', [\r\n instance,\r\n {\r\n updateHints: {\r\n sizeChanged: !!_sizeChanged,\r\n directionChanged: !!_directionChanged,\r\n heightIntrinsicChanged: !!_heightIntrinsicChanged,\r\n overflowEdgeChanged: !!_overflowEdgeChanged,\r\n overflowAmountChanged: !!_overflowAmountChanged,\r\n overflowStyleChanged: !!_overflowStyleChanged,\r\n scrollCoordinatesChanged: !!_scrollCoordinatesChanged,\r\n contentMutation: !!_contentMutation,\r\n hostMutation: !!_hostMutation,\r\n appear: !!_appear,\r\n },\r\n changedOptions: _changedOptions || {},\r\n force: !!_force,\r\n },\r\n ]);\r\n },\r\n\r\n (scrollEvent) => triggerEvent('scroll', [instance, scrollEvent])\r\n );\r\n\r\n const destroy = (canceled: boolean) => {\r\n removeInstance(instanceTarget);\r\n runEachAndClear(destroyFns);\r\n\r\n destroyed = true;\r\n\r\n triggerEvent('destroyed', [instance, canceled]);\r\n removePluginEvents();\r\n removeInstanceEvents();\r\n };\r\n\r\n const instance: OverlayScrollbars = {\r\n options(newOptions?: PartialOptions, pure?: boolean) {\r\n if (newOptions) {\r\n const base = pure ? _getDefaultOptions() : {};\r\n const changedOptions = getOptionsDiff(\r\n currentOptions,\r\n assignDeep(base, validateOptions(newOptions))\r\n );\r\n if (!isEmptyObject(changedOptions)) {\r\n assignDeep(currentOptions, changedOptions);\r\n setupsUpdate({ _changedOptions: changedOptions });\r\n }\r\n }\r\n return assignDeep({}, currentOptions);\r\n },\r\n on: addInstanceEvent,\r\n off: (name, listener) => {\r\n if (name && listener) {\r\n removeInstanceEvents(name, listener);\r\n }\r\n },\r\n state() {\r\n const { _observersSetupState, _structureSetupState } = setupsState();\r\n const { _directionIsRTL } = _observersSetupState;\r\n const {\r\n _overflowEdge,\r\n _overflowAmount,\r\n _overflowStyle,\r\n _hasOverflow,\r\n _padding,\r\n _paddingAbsolute,\r\n _scrollCoordinates,\r\n } = _structureSetupState;\r\n return assignDeep(\r\n {},\r\n {\r\n overflowEdge: _overflowEdge,\r\n overflowAmount: _overflowAmount,\r\n overflowStyle: _overflowStyle,\r\n hasOverflow: _hasOverflow,\r\n scrollCoordinates: {\r\n start: _scrollCoordinates._start,\r\n end: _scrollCoordinates._end,\r\n },\r\n padding: _padding,\r\n paddingAbsolute: _paddingAbsolute,\r\n directionRTL: _directionIsRTL,\r\n destroyed,\r\n }\r\n );\r\n },\r\n elements() {\r\n const {\r\n _target,\r\n _host,\r\n _padding,\r\n _viewport,\r\n _content,\r\n _scrollOffsetElement,\r\n _scrollEventElement,\r\n } = setupsElements._structureSetupElements;\r\n const { _horizontal, _vertical } = setupsElements._scrollbarsSetupElements;\r\n const translateScrollbarStructure = (\r\n scrollbarStructure: ScrollbarStructure\r\n ): ScrollbarElements => {\r\n const { _handle, _track, _scrollbar } = scrollbarStructure;\r\n return {\r\n scrollbar: _scrollbar,\r\n track: _track,\r\n handle: _handle,\r\n };\r\n };\r\n const translateScrollbarsSetupElement = (\r\n scrollbarsSetupElement: ScrollbarsSetupElement\r\n ): CloneableScrollbarElements => {\r\n const { _scrollbarStructures, _clone } = scrollbarsSetupElement;\r\n const translatedStructure = translateScrollbarStructure(_scrollbarStructures[0]);\r\n\r\n return assignDeep({}, translatedStructure, {\r\n clone: () => {\r\n const result = translateScrollbarStructure(_clone());\r\n setupsUpdate({ _cloneScrollbar: true });\r\n return result;\r\n },\r\n });\r\n };\r\n return assignDeep(\r\n {},\r\n {\r\n target: _target,\r\n host: _host,\r\n padding: _padding || _viewport,\r\n viewport: _viewport,\r\n content: _content || _viewport,\r\n scrollOffsetElement: _scrollOffsetElement,\r\n scrollEventElement: _scrollEventElement,\r\n scrollbarHorizontal: translateScrollbarsSetupElement(_horizontal),\r\n scrollbarVertical: translateScrollbarsSetupElement(_vertical),\r\n }\r\n );\r\n },\r\n update: (_force?: boolean) => setupsUpdate({ _force, _takeRecords: true }),\r\n destroy: bind(destroy, false),\r\n plugin:

(plugin: P) =>\r\n instancePluginModuleInstances[keys(plugin)[0]] as\r\n | InferInstancePluginModuleInstance

\r\n | undefined,\r\n };\r\n\r\n push(destroyFns, [setupsCanceled]);\r\n\r\n // valid inside plugins\r\n addInstance(instanceTarget, instance);\r\n\r\n // init plugins\r\n registerPluginModuleInstances(pluginModules, OverlayScrollbars, [\r\n instance,\r\n addPluginEvent,\r\n instancePluginModuleInstances,\r\n ]);\r\n\r\n if (\r\n cancelInitialization(\r\n setupsElements._structureSetupElements._isBody,\r\n !targetIsElement && target.cancel\r\n )\r\n ) {\r\n destroy(true);\r\n return instance;\r\n }\r\n\r\n push(destroyFns, setupsConstruct());\r\n\r\n triggerEvent('initialized', [instance]);\r\n\r\n instance.update();\r\n\r\n return instance;\r\n }\r\n return potentialInstance!;\r\n};\r\n\r\nOverlayScrollbars.plugin = (plugins: Plugin | Plugin[]) => {\r\n const isArr = isArray(plugins);\r\n const pluginsToAdd: Plugin[] =\r\n isArr ? plugins : [plugins];\r\n const result = pluginsToAdd.map(\r\n (plugin) => registerPluginModuleInstances(plugin, OverlayScrollbars)[0]\r\n );\r\n addPlugins(pluginsToAdd);\r\n return isArr ? result : (result[0] as any);\r\n};\r\nOverlayScrollbars.valid = (osInstance: any): osInstance is OverlayScrollbars => {\r\n const hasElmsFn = osInstance && (osInstance as OverlayScrollbars).elements;\r\n const elements = isFunction(hasElmsFn) && hasElmsFn();\r\n return isPlainObject(elements) && !!getInstance(elements.target);\r\n};\r\nOverlayScrollbars.env = () => {\r\n const {\r\n _nativeScrollbarsSize,\r\n _nativeScrollbarsOverlaid,\r\n _nativeScrollbarsHiding,\r\n _scrollTimeline,\r\n _staticDefaultInitialization,\r\n _staticDefaultOptions,\r\n _getDefaultInitialization,\r\n _setDefaultInitialization,\r\n _getDefaultOptions,\r\n _setDefaultOptions,\r\n } = getEnvironment();\r\n return assignDeep(\r\n {},\r\n {\r\n scrollbarsSize: _nativeScrollbarsSize,\r\n scrollbarsOverlaid: _nativeScrollbarsOverlaid,\r\n scrollbarsHiding: _nativeScrollbarsHiding,\r\n scrollTimeline: _scrollTimeline,\r\n staticDefaultInitialization: _staticDefaultInitialization,\r\n staticDefaultOptions: _staticDefaultOptions,\r\n\r\n getDefaultInitialization: _getDefaultInitialization,\r\n setDefaultInitialization: _setDefaultInitialization,\r\n getDefaultOptions: _getDefaultOptions,\r\n setDefaultOptions: _setDefaultOptions,\r\n }\r\n );\r\n};\r\nOverlayScrollbars.nonce = setNonce;\r\nOverlayScrollbars.trustedTypePolicy = setTrustedTypePolicy;\r\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'link';\nvar width = 576;\nvar height = 512;\nvar aliases = [128279,\"chain\"];\nvar unicode = 'f0c1';\nvar svgPathData = 'M419.5 96c-16.6 0-32.7 4.5-46.8 12.7-15.8-16-34.2-29.4-54.5-39.5 28.2-24 64.1-37.2 101.3-37.2 86.4 0 156.5 70 156.5 156.5 0 41.5-16.5 81.3-45.8 110.6l-71.1 71.1c-29.3 29.3-69.1 45.8-110.6 45.8-86.4 0-156.5-70-156.5-156.5 0-1.5 0-3 .1-4.5 .5-17.7 15.2-31.6 32.9-31.1s31.6 15.2 31.1 32.9c0 .9 0 1.8 0 2.6 0 51.1 41.4 92.5 92.5 92.5 24.5 0 48-9.7 65.4-27.1l71.1-71.1c17.3-17.3 27.1-40.9 27.1-65.4 0-51.1-41.4-92.5-92.5-92.5zM275.2 173.3c-1.9-.8-3.8-1.9-5.5-3.1-12.6-6.5-27-10.2-42.1-10.2-24.5 0-48 9.7-65.4 27.1L91.1 258.2c-17.3 17.3-27.1 40.9-27.1 65.4 0 51.1 41.4 92.5 92.5 92.5 16.5 0 32.6-4.4 46.7-12.6 15.8 16 34.2 29.4 54.6 39.5-28.2 23.9-64 37.2-101.3 37.2-86.4 0-156.5-70-156.5-156.5 0-41.5 16.5-81.3 45.8-110.6l71.1-71.1c29.3-29.3 69.1-45.8 110.6-45.8 86.6 0 156.5 70.6 156.5 156.9 0 1.3 0 2.6 0 3.9-.4 17.7-15.1 31.6-32.8 31.2s-31.6-15.1-31.2-32.8c0-.8 0-1.5 0-2.3 0-33.7-18-63.3-44.8-79.6z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n aliases,\n unicode,\n svgPathData\n ]};\n\nexports.faLink = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = aliases;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;\nexports.aliases = aliases;","import root from './_root.js';\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nexport default now;\n","import isObject from './isObject.js';\nimport now from './now.js';\nimport toNumber from './toNumber.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nexport default debounce;\n","const FOCUSABLE_ELEMENT_SELECTORS = `a[href],button:not([disabled]),button:not([hidden]),:not([tabindex=\"-1\"]),input:not([disabled]),input:not([type=\"hidden\"]),select:not([disabled]),textarea:not([disabled])`\n\nconst isHTMLElement = (e: unknown): e is Element => {\n if (typeof Element === 'undefined') return false\n return e instanceof Element\n}\n\n/**\n * Determine if the testing element is visible on screen no matter if its on the viewport or not\n */\nexport const isVisible = (element: HTMLElement) => {\n if (typeof process !== 'undefined' && process.env.NODE_ENV === 'test')\n return true\n const computed = getComputedStyle(element)\n // element.offsetParent won't work on fix positioned\n // WARNING: potential issue here, going to need some expert advices on this issue\n return computed.position === 'fixed' ? false : element.offsetParent !== null\n}\n\nexport const obtainAllFocusableElements = (\n element: HTMLElement\n): HTMLElement[] => {\n return Array.from(\n element.querySelectorAll(FOCUSABLE_ELEMENT_SELECTORS)\n ).filter((item: HTMLElement) => isFocusable(item) && isVisible(item))\n}\n\n/**\n * @desc Determine if target element is focusable\n * @param element {HTMLElement}\n * @returns {Boolean} true if it is focusable\n */\nexport const isFocusable = (element: HTMLElement): boolean => {\n if (\n element.tabIndex > 0 ||\n (element.tabIndex === 0 && element.getAttribute('tabIndex') !== null)\n ) {\n return true\n }\n if (\n element.tabIndex < 0 ||\n element.hasAttribute('disabled') ||\n element.getAttribute('aria-disabled') === 'true'\n ) {\n return false\n }\n\n switch (element.nodeName) {\n case 'A': {\n // casting current element to Specific HTMLElement in order to be more type precise\n return (\n !!(element as HTMLAnchorElement).href &&\n (element as HTMLAnchorElement).rel !== 'ignore'\n )\n }\n case 'INPUT': {\n return !(\n (element as HTMLInputElement).type === 'hidden' ||\n (element as HTMLInputElement).type === 'file'\n )\n }\n case 'BUTTON':\n case 'SELECT':\n case 'TEXTAREA': {\n return true\n }\n default: {\n return false\n }\n }\n}\n\n/**\n * Trigger an event\n * mouseenter, mouseleave, mouseover, keyup, change, click, etc.\n * @param {HTMLElement} elm\n * @param {String} name\n * @param {*} opts\n */\nexport const triggerEvent = function (\n elm: HTMLElement,\n name: string,\n ...opts: Array\n): HTMLElement {\n let eventName: string\n\n if (name.includes('mouse') || name.includes('click')) {\n eventName = 'MouseEvents'\n } else if (name.includes('key')) {\n eventName = 'KeyboardEvent'\n } else {\n eventName = 'HTMLEvents'\n }\n const evt = document.createEvent(eventName)\n\n evt.initEvent(name, ...opts)\n elm.dispatchEvent(evt)\n return elm\n}\n\nexport const isLeaf = (el: HTMLElement) => !el.getAttribute('aria-owns')\n\nexport const getSibling = (\n el: HTMLElement,\n distance: number,\n elClass: string\n) => {\n const { parentNode } = el\n if (!parentNode) return null\n const siblings = parentNode.querySelectorAll(elClass)\n const index = Array.prototype.indexOf.call(siblings, el)\n return siblings[index + distance] || null\n}\n\nexport const focusElement = (\n el?: HTMLElement | { focus: () => void } | null,\n options?: FocusOptions\n) => {\n if (!el || !el.focus) return\n let cleanup: boolean = false\n\n if (isHTMLElement(el) && !isFocusable(el) && !el.getAttribute('tabindex')) {\n el.setAttribute('tabindex', '-1')\n cleanup = true\n }\n\n el.focus(options)\n\n if (isHTMLElement(el) && cleanup) {\n el.removeAttribute('tabindex')\n }\n}\n\nexport const focusNode = (el: HTMLElement) => {\n if (!el) return\n focusElement(el)\n !isLeaf(el) && el.click()\n}\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nexport default baseHasIn;\n","import castPath from './_castPath.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isIndex from './_isIndex.js';\nimport isLength from './isLength.js';\nimport toKey from './_toKey.js';\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nexport default hasPath;\n","import baseHasIn from './_baseHasIn.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nexport default hasIn;\n","'use strict';\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","import {\n defineComponent,\n h,\n isVNode,\n onMounted,\n shallowRef,\n triggerRef,\n} from 'vue'\nimport { flattedChildren } from '@element-plus/utils'\n\nimport type { Component, ComponentInternalInstance, VNode } from 'vue'\n\ntype ChildEssential = {\n uid: number\n getVnode: () => VNode\n}\n\nconst getOrderedChildren = (\n vm: ComponentInternalInstance,\n childComponentName: string,\n children: Record\n): T[] => {\n const nodes = flattedChildren(vm.subTree).filter(\n (n): n is VNode =>\n isVNode(n) &&\n (n.type as Component)?.name === childComponentName &&\n !!n.component\n )\n const uids = nodes.map((n) => n.component!.uid)\n return uids.map((uid) => children[uid]).filter((p) => !!p)\n}\n\nexport const useOrderedChildren = (\n vm: ComponentInternalInstance,\n childComponentName: string\n) => {\n const children = shallowRef>({})\n const orderedChildren = shallowRef([])\n const nodesMap = new WeakMap()\n\n const addChild = (child: T) => {\n children.value[child.uid] = child\n triggerRef(children)\n\n onMounted(() => {\n const childNode = child.getVnode().el! as Node\n const parentNode = childNode.parentNode!\n\n if (!nodesMap.has(parentNode)) {\n nodesMap.set(parentNode, [])\n\n const originalFn = parentNode.insertBefore.bind(parentNode)\n parentNode.insertBefore = (\n node: T,\n anchor: Node | null\n ) => {\n // Schedule a job to update `orderedChildren` if the root element of child components is moved\n const shouldSortChildren = nodesMap\n .get(parentNode)!\n .some((el) => node === el || anchor === el)\n if (shouldSortChildren) triggerRef(children)\n\n return originalFn(node, anchor)\n }\n }\n\n nodesMap.get(parentNode)!.push(childNode)\n })\n }\n\n const removeChild = (child: T) => {\n delete children.value[child.uid]\n triggerRef(children)\n\n const childNode = child.getVnode().el! as Node\n const parentNode = childNode.parentNode!\n const childNodes = nodesMap.get(parentNode)!\n const index = childNodes.indexOf(childNode)\n childNodes.splice(index, 1)\n }\n\n const sortChildren = () => {\n orderedChildren.value = getOrderedChildren(\n vm,\n childComponentName,\n children.value\n )\n }\n\n const IsolatedRenderer = (props: { render: () => VNode[] }) => {\n return props.render()\n }\n\n // TODO: Refactor `el-description` before converting this to a functional component\n const ChildrenSorter = defineComponent({\n setup(_, { slots }) {\n return () => {\n sortChildren()\n\n return slots.default\n ? // Create a new `ReactiveEffect` to ensure `ChildrenSorter` doesn't track any extra dependencies\n // @ts-ignore TODO: Remove this after Vue is upgraded\n h(IsolatedRenderer, {\n render: slots.default,\n })\n : null\n }\n },\n })\n\n return {\n children: orderedChildren,\n addChild,\n removeChild,\n ChildrenSorter,\n }\n}\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL &&\n !Symbol.sham &&\n typeof Symbol.iterator == 'symbol';\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'circle-info';\nvar width = 512;\nvar height = 512;\nvar aliases = [\"info-circle\"];\nvar unicode = 'f05a';\nvar svgPathData = 'M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM224 160a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-8 64l48 0c13.3 0 24 10.7 24 24l0 88 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l24 0 0-64-24 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n aliases,\n unicode,\n svgPathData\n ]};\n\nexports.faCircleInfo = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = aliases;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;\nexports.aliases = aliases;","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_weekOfYear=t()}(this,(function(){\"use strict\";var e=\"week\",t=\"year\";return function(i,n,r){var f=n.prototype;f.week=function(i){if(void 0===i&&(i=null),null!==i)return this.add(7*(i-this.week()),\"day\");var n=this.$locale().yearStart||1;if(11===this.month()&&this.date()>25){var f=r(this).startOf(t).add(1,t).date(n),s=r(this).endOf(e);if(f.isBefore(s))return 1}var a=r(this).startOf(t).date(n).startOf(e).subtract(1,\"millisecond\"),o=this.diff(a,e,!0);return o<0?r(this).startOf(\"week\").week():Math.ceil(o)},f.weeks=function(e){return void 0===e&&(e=null),this.week(e)}}}));","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar iterate = require('../internals/iterate');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar iteratorClose = require('../internals/iterator-close');\nvar iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');\n\nvar forEachWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('forEach', TypeError);\n\n// `Iterator.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.foreach\n$({ target: 'Iterator', proto: true, real: true, forced: forEachWithoutClosingOnEarlyError }, {\n forEach: function forEach(fn) {\n anObject(this);\n try {\n aCallable(fn);\n } catch (error) {\n iteratorClose(this, 'throw', error);\n }\n\n if (forEachWithoutClosingOnEarlyError) return call(forEachWithoutClosingOnEarlyError, this, fn);\n\n var record = getIteratorDirect(this);\n var counter = 0;\n iterate(record, function (value) {\n fn(value, counter++);\n }, { IS_RECORD: true });\n }\n});\n","\n\n\n","\n\n\n","import { withInstall } from '@element-plus/utils'\nimport Dialog from './src/dialog.vue'\n\nimport type { SFCWithInstall } from '@element-plus/utils'\n\nexport const ElDialog: SFCWithInstall = withInstall(Dialog)\nexport default ElDialog\n\nexport * from './src/use-dialog'\nexport * from './src/dialog'\nexport * from './src/constants'\n","'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar anObjectOrUndefined = require('../internals/an-object-or-undefined');\nvar anUint8Array = require('../internals/an-uint8-array');\nvar notDetached = require('../internals/array-buffer-not-detached');\nvar base64Map = require('../internals/base64-map');\nvar getAlphabetOption = require('../internals/get-alphabet-option');\n\nvar base64Alphabet = base64Map.i2c;\nvar base64UrlAlphabet = base64Map.i2cUrl;\n\nvar charAt = uncurryThis(''.charAt);\n\nvar Uint8Array = globalThis.Uint8Array;\n\nvar INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS = !Uint8Array || !Uint8Array.prototype.toBase64 || !function () {\n try {\n var target = new Uint8Array();\n target.toBase64(null);\n } catch (error) {\n return true;\n }\n}();\n\n// `Uint8Array.prototype.toBase64` method\n// https://github.com/tc39/proposal-arraybuffer-base64\nif (Uint8Array) $({ target: 'Uint8Array', proto: true, forced: INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS }, {\n toBase64: function toBase64(/* options */) {\n var array = anUint8Array(this);\n var options = arguments.length ? anObjectOrUndefined(arguments[0]) : undefined;\n var alphabet = getAlphabetOption(options) === 'base64' ? base64Alphabet : base64UrlAlphabet;\n var omitPadding = !!options && !!options.omitPadding;\n notDetached(this.buffer);\n\n var result = '';\n var i = 0;\n var length = array.length;\n var triplet;\n\n var at = function (shift) {\n return charAt(alphabet, (triplet >> (6 * shift)) & 63);\n };\n\n for (; i + 2 < length; i += 3) {\n triplet = (array[i] << 16) + (array[i + 1] << 8) + array[i + 2];\n result += at(3) + at(2) + at(1) + at(0);\n }\n if (i + 2 === length) {\n triplet = (array[i] << 16) + (array[i + 1] << 8);\n result += at(3) + at(2) + at(1) + (omitPadding ? '' : '=');\n } else if (i + 1 === length) {\n triplet = array[i] << 16;\n result += at(3) + at(2) + (omitPadding ? '' : '==');\n }\n\n return result;\n }\n});\n","'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n","import { buildProps, definePropType, isNumber } from '@element-plus/utils'\nimport { useAriaProps } from '@element-plus/hooks'\n\nimport type {\n ExtractPropTypes,\n StyleValue,\n __ExtractPublicPropTypes,\n} from 'vue'\nimport type Scrollbar from './scrollbar.vue'\n\nexport const scrollbarProps = buildProps({\n /**\n * @description trigger distance(px)\n */\n distance: {\n type: Number,\n default: 0,\n },\n /**\n * @description height of scrollbar\n */\n height: {\n type: [String, Number],\n default: '',\n },\n /**\n * @description max height of scrollbar\n */\n maxHeight: {\n type: [String, Number],\n default: '',\n },\n /**\n * @description whether to use the native scrollbar\n */\n native: Boolean,\n /**\n * @description style of wrap\n */\n wrapStyle: {\n type: definePropType([String, Object, Array]),\n default: '',\n },\n /**\n * @description class of wrap\n */\n wrapClass: {\n type: [String, Array],\n default: '',\n },\n /**\n * @description class of view\n */\n viewClass: {\n type: [String, Array],\n default: '',\n },\n /**\n * @description style of view\n */\n viewStyle: {\n type: [String, Array, Object],\n default: '',\n },\n /**\n * @description do not respond to container size changes, if the container size does not change, it is better to set it to optimize performance\n */\n noresize: Boolean, // 如果 container 尺寸不会发生变化,最好设置它可以优化性能\n /**\n * @description element tag of the view\n */\n tag: {\n type: String,\n default: 'div',\n },\n /**\n * @description always show\n */\n always: Boolean,\n /**\n * @description minimum size of scrollbar\n */\n minSize: {\n type: Number,\n default: 20,\n },\n /**\n * @description Wrap tabindex\n */\n tabindex: {\n type: [String, Number],\n default: undefined,\n },\n /**\n * @description id of view\n */\n id: String,\n /**\n * @description role of view\n */\n role: String,\n ...useAriaProps(['ariaLabel', 'ariaOrientation']),\n} as const)\nexport type ScrollbarProps = ExtractPropTypes\nexport type ScrollbarPropsPublic = __ExtractPublicPropTypes<\n typeof scrollbarProps\n>\n\nexport const scrollbarEmits = {\n 'end-reached': (direction: ScrollbarDirection) =>\n ['left', 'right', 'top', 'bottom'].includes(direction),\n scroll: ({\n scrollTop,\n scrollLeft,\n }: {\n scrollTop: number\n scrollLeft: number\n }) => [scrollTop, scrollLeft].every(isNumber),\n}\nexport type ScrollbarEmits = typeof scrollbarEmits\nexport type ScrollbarDirection = 'top' | 'bottom' | 'left' | 'right'\n\nexport type ScrollbarInstance = InstanceType & unknown\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'arrows-rotate';\nvar width = 512;\nvar height = 512;\nvar aliases = [128472,\"refresh\",\"sync\"];\nvar unicode = 'f021';\nvar svgPathData = 'M65.9 228.5c13.3-93 93.4-164.5 190.1-164.5 53 0 101 21.5 135.8 56.2 .2 .2 .4 .4 .6 .6l7.6 7.2-47.9 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 53.4-11.3-10.7C390.5 28.6 326.5 0 256 0 127 0 20.3 95.4 2.6 219.5 .1 237 12.2 253.2 29.7 255.7s33.7-9.7 36.2-27.1zm443.5 64c2.5-17.5-9.7-33.7-27.1-36.2s-33.7 9.7-36.2 27.1c-13.3 93-93.4 164.5-190.1 164.5-53 0-101-21.5-135.8-56.2-.2-.2-.4-.4-.6-.6l-7.6-7.2 47.9 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 320c-8.5 0-16.7 3.4-22.7 9.5S-.1 343.7 0 352.3l1 127c.1 17.7 14.6 31.9 32.3 31.7S65.2 496.4 65 478.7l-.4-51.5 10.7 10.1c46.3 46.1 110.2 74.7 180.7 74.7 129 0 235.7-95.4 253.4-219.5z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n aliases,\n unicode,\n svgPathData\n ]};\n\nexports.faArrowsRotate = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = aliases;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;\nexports.aliases = aliases;","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'arrow-left';\nvar width = 512;\nvar height = 512;\nvar aliases = [8592];\nvar unicode = 'f060';\nvar svgPathData = 'M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 288 480 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-370.7 0 105.4-105.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n aliases,\n unicode,\n svgPathData\n ]};\n\nexports.faArrowLeft = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = aliases;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;\nexports.aliases = aliases;","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","export const EVENT_CODE = {\n tab: 'Tab',\n enter: 'Enter',\n space: 'Space',\n left: 'ArrowLeft', // 37\n up: 'ArrowUp', // 38\n right: 'ArrowRight', // 39\n down: 'ArrowDown', // 40\n esc: 'Escape',\n delete: 'Delete',\n backspace: 'Backspace',\n numpadEnter: 'NumpadEnter',\n pageUp: 'PageUp',\n pageDown: 'PageDown',\n home: 'Home',\n end: 'End',\n}\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nexport default trimmedEndIndex;\n","import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nexport default baseTrim;\n","import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'copy';\nvar width = 448;\nvar height = 512;\nvar aliases = [];\nvar unicode = 'f0c5';\nvar svgPathData = 'M192 0c-35.3 0-64 28.7-64 64l0 256c0 35.3 28.7 64 64 64l192 0c35.3 0 64-28.7 64-64l0-200.6c0-17.4-7.1-34.1-19.7-46.2L370.6 17.8C358.7 6.4 342.8 0 326.3 0L192 0zM64 128c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l192 0c35.3 0 64-28.7 64-64l0-16-64 0 0 16-192 0 0-256 16 0 0-64-16 0z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n aliases,\n unicode,\n svgPathData\n ]};\n\nexports.faCopy = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = aliases;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;\nexports.aliases = aliases;","import { ref, watch } from 'vue'\nimport { get, isEqual } from 'lodash-unified'\n\nimport type { SelectV2Props } from './token'\nimport type { Option } from './select.types'\n\nexport interface Props {\n label?: string\n value?: string\n disabled?: string\n options?: string\n}\n\nexport const defaultProps: Required = {\n label: 'label',\n value: 'value',\n disabled: 'disabled',\n options: 'options',\n}\n\nexport function useProps(props: Pick) {\n const aliasProps = ref({ ...defaultProps, ...props.props })\n let cache = { ...props.props }\n\n watch(\n () => props.props,\n (val) => {\n // The props is an object, and its properties may be modified without changing the reference. In this case, the watch values before and after are equal. Here, we compare using the cached previous value.\n if (!isEqual(val, cache)) {\n aliasProps.value = { ...defaultProps, ...val }\n cache = { ...val }\n }\n },\n { deep: true }\n )\n\n const getLabel = (option: Option) => get(option, aliasProps.value.label)\n const getValue = (option: Option) => get(option, aliasProps.value.value)\n const getDisabled = (option: Option) => get(option, aliasProps.value.disabled)\n const getOptions = (option: Option) => get(option, aliasProps.value.options)\n\n return {\n aliasProps,\n getLabel,\n getValue,\n getDisabled,\n getOptions,\n }\n}\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar source = require('./faUpRightFromSquare');\nexports.definition = {\n prefix: source.prefix,\n iconName: source.iconName,\n icon: [\n source.width,\n source.height,\n source.aliases,\n source.unicode,\n source.svgPathData\n ]};\n\nexports.faExternalLinkAlt = exports.definition;\nexports.prefix = source.prefix;\nexports.iconName = source.iconName;\nexports.width = source.width;\nexports.height = source.height;\nexports.ligatures = source.aliases;\nexports.unicode = source.unicode;\nexports.svgPathData = source.svgPathData;\nexports.aliases = source.aliases;","/**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\nfunction fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n}\n\nexport default fromPairs;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'i-cursor';\nvar width = 256;\nvar height = 512;\nvar aliases = [];\nvar unicode = 'f246';\nvar svgPathData = 'M.1 29.3C-1.4 47 11.7 62.4 29.3 63.9l8 .7C70.5 67.3 96 95 96 128.3l0 95.7-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 95.7c0 33.3-25.5 61-58.7 63.8l-8 .7C11.7 449.6-1.4 465 .1 482.7S17 513.4 34.7 511.9l8-.7c34.1-2.8 64.2-18.9 85.4-42.9 21.2 24 51.2 40 85.4 42.9l8 .7c17.6 1.5 33.1-11.6 34.5-29.2s-11.6-33.1-29.2-34.5l-8-.7C185.5 444.7 160 417 160 383.7l0-95.7 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-95.7c0-33.3 25.5-61 58.7-63.8l8-.7c17.6-1.5 30.7-16.9 29.2-34.5S239-1.4 221.3 .1l-8 .7c-34.1 2.8-64.2 18.9-85.4 42.9-21.2-24-51.2-40-85.4-42.9l-8-.7C17-1.4 1.6 11.7 .1 29.3z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n aliases,\n unicode,\n svgPathData\n ]};\n\nexports.faICursor = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = aliases;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;\nexports.aliases = aliases;","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'ellipsis';\nvar width = 448;\nvar height = 512;\nvar aliases = [\"ellipsis-h\"];\nvar unicode = 'f141';\nvar svgPathData = 'M0 256a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm168 0a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm224-56a56 56 0 1 1 0 112 56 56 0 1 1 0-112z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n aliases,\n unicode,\n svgPathData\n ]};\n\nexports.faEllipsis = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = aliases;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;\nexports.aliases = aliases;","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","\n\n\n","import { withInstall } from '@element-plus/utils'\nimport CollapseTransition from './src/collapse-transition.vue'\n\nimport type { SFCWithInstall } from '@element-plus/utils'\n\nexport const ElCollapseTransition: SFCWithInstall =\n withInstall(CollapseTransition)\n\nexport default ElCollapseTransition\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","import { isArray, isObject, isString } from '@vue/shared'\nimport { isNil } from 'lodash-unified'\n\nexport {\n isArray,\n isFunction,\n isObject,\n isString,\n isDate,\n isPromise,\n isSymbol,\n isPlainObject,\n} from '@vue/shared'\n\nexport const isUndefined = (val: any): val is undefined => val === undefined\nexport const isBoolean = (val: any): val is boolean => typeof val === 'boolean'\nexport const isNumber = (val: any): val is number => typeof val === 'number'\n\nexport const isEmpty = (val: unknown) =>\n (!val && val !== 0) ||\n (isArray(val) && val.length === 0) ||\n (isObject(val) && !Object.keys(val).length)\n\nexport const isElement = (e: unknown): e is Element => {\n if (typeof Element === 'undefined') return false\n return e instanceof Element\n}\n\nexport const isPropAbsent = (prop: unknown): prop is null | undefined =>\n isNil(prop)\n\nexport const isStringNumber = (val: string): boolean => {\n if (!isString(val)) {\n return false\n }\n return !Number.isNaN(Number(val))\n}\n\nexport const isWindow = (val: unknown): val is Window => val === window\n","import { buildProps, definePropType } from '@element-plus/utils'\nimport { popperContentProps } from '@element-plus/components/popper'\nimport { useAriaProps, useDelayedToggleProps } from '@element-plus/hooks'\nimport { teleportProps } from '@element-plus/components/teleport'\n\nimport type TooltipContent from './content.vue'\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\n\nexport const useTooltipContentProps = buildProps({\n ...useDelayedToggleProps,\n ...popperContentProps,\n /**\n * @description which element the tooltip CONTENT appends to\n */\n appendTo: {\n type: teleportProps.to.type,\n },\n /**\n * @description display content, can be overridden by `slot#content`\n */\n content: {\n type: String,\n default: '',\n },\n /**\n * @description whether `content` is treated as HTML string\n */\n rawContent: Boolean,\n /**\n * @description when tooltip inactive and `persistent` is `false` , popconfirm will be destroyed\n */\n persistent: Boolean,\n // because model toggle prop is generated dynamically\n // so the typing cannot be evaluated by typescript as type:\n // [name]: { type: Boolean, default: null }\n // so we need to declare that again for type checking.\n /**\n * @description visibility of Tooltip\n */\n visible: {\n type: definePropType(Boolean),\n default: null,\n },\n /**\n * @description animation name\n */\n transition: String,\n /**\n * @description whether tooltip content is teleported, if `true` it will be teleported to where `append-to` sets\n */\n teleported: {\n type: Boolean,\n default: true,\n },\n /**\n * @description whether Tooltip is disabled\n */\n disabled: Boolean,\n ...useAriaProps(['ariaLabel']),\n} as const)\n\nexport type ElTooltipContentProps = ExtractPropTypes<\n typeof useTooltipContentProps\n>\nexport type ElTooltipContentPropsPublic = __ExtractPublicPropTypes<\n typeof useTooltipContentProps\n>\n\nexport type TooltipContentInstance = InstanceType &\n unknown\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'code-branch';\nvar width = 448;\nvar height = 512;\nvar aliases = [];\nvar unicode = 'f126';\nvar svgPathData = 'M80 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm80-24c0 32.8-19.7 61-48 73.3l0 70.7 176 0c26.5 0 48-21.5 48-48l0-22.7c-28.3-12.3-48-40.5-48-73.3 0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3l0 22.7c0 61.9-50.1 112-112 112l-176 0 0 70.7c28.3 12.3 48 40.5 48 73.3 0 44.2-35.8 80-80 80S0 476.2 0 432c0-32.8 19.7-61 48-73.3l0-205.3C19.7 141 0 112.8 0 80 0 35.8 35.8 0 80 0s80 35.8 80 80zm232 0a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM80 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n aliases,\n unicode,\n svgPathData\n ]};\n\nexports.faCodeBranch = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = aliases;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;\nexports.aliases = aliases;","import castPath from './_castPath.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nexport default baseGet;\n","\n\n\n","import { withInstall } from '@element-plus/utils'\nimport Tag from './src/tag.vue'\n\nimport type { SFCWithInstall } from '@element-plus/utils'\n\nexport const ElTag: SFCWithInstall = withInstall(Tag)\nexport default ElTag\n\nexport * from './src/tag'\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nexport default stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nexport default stackSet;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n","import { nextTick } from 'vue'\nimport { getEventCode, obtainAllFocusableElements } from '@element-plus/utils'\nimport { EVENT_CODE } from '@element-plus/constants'\n\nimport type { ObjectDirective } from 'vue'\n\nexport const FOCUSABLE_CHILDREN = '_trap-focus-children'\nexport const TRAP_FOCUS_HANDLER = '_trap-focus-handler'\n\nexport interface TrapFocusElement extends HTMLElement {\n [FOCUSABLE_CHILDREN]: HTMLElement[]\n [TRAP_FOCUS_HANDLER]: (e: KeyboardEvent) => void\n}\n\nconst FOCUS_STACK: TrapFocusElement[] = []\n\nconst FOCUS_HANDLER = (e: KeyboardEvent) => {\n // Getting the top layer.\n if (FOCUS_STACK.length === 0) return\n const code = getEventCode(e)\n const focusableElement =\n FOCUS_STACK[FOCUS_STACK.length - 1][FOCUSABLE_CHILDREN]\n if (focusableElement.length > 0 && code === EVENT_CODE.tab) {\n if (focusableElement.length === 1) {\n e.preventDefault()\n if (document.activeElement !== focusableElement[0]) {\n focusableElement[0].focus()\n }\n return\n }\n const goingBackward = e.shiftKey\n const isFirst = e.target === focusableElement[0]\n const isLast = e.target === focusableElement[focusableElement.length - 1]\n if (isFirst && goingBackward) {\n e.preventDefault()\n focusableElement[focusableElement.length - 1].focus()\n }\n if (isLast && !goingBackward) {\n e.preventDefault()\n focusableElement[0].focus()\n }\n\n // the is critical since jsdom did not implement user actions, you can only mock it\n // DELETE ME: when testing env switches to puppeteer\n if (typeof process !== 'undefined' && process.env.NODE_ENV === 'test') {\n const index = focusableElement.indexOf(e.target as HTMLElement)\n if (index !== -1) {\n focusableElement[goingBackward ? index - 1 : index + 1]?.focus()\n }\n }\n }\n}\n\nconst TrapFocus: ObjectDirective = {\n beforeMount(el: TrapFocusElement) {\n el[FOCUSABLE_CHILDREN] = obtainAllFocusableElements(el)\n FOCUS_STACK.push(el)\n if (FOCUS_STACK.length <= 1) {\n document.addEventListener('keydown', FOCUS_HANDLER)\n }\n },\n updated(el: TrapFocusElement) {\n nextTick(() => {\n el[FOCUSABLE_CHILDREN] = obtainAllFocusableElements(el)\n })\n },\n unmounted() {\n FOCUS_STACK.shift()\n if (FOCUS_STACK.length === 0) {\n document.removeEventListener('keydown', FOCUS_HANDLER)\n }\n },\n}\n\nexport default TrapFocus\n","\n\n\n","import { createVNode, isVNode, markRaw, render } from 'vue'\nimport {\n debugWarn,\n hasOwn,\n isClient,\n isElement,\n isFunction,\n isObject,\n isString,\n isUndefined,\n} from '@element-plus/utils'\nimport MessageBoxConstructor from './index.vue'\n\nimport type { AppContext, ComponentPublicInstance, VNode } from 'vue'\nimport type {\n Action,\n Callback,\n ElMessageBoxOptions,\n ElMessageBoxShortcutMethod,\n IElMessageBox,\n MessageBoxData,\n MessageBoxState,\n} from './message-box.type'\n\n// component default merge props & data\n\nconst messageInstance = new Map<\n ComponentPublicInstance<{ doClose: () => void }>, // marking doClose as function\n {\n options: any\n callback: Callback | undefined\n resolve: (res: any) => void\n reject: (reason?: any) => void\n }\n>()\n\nconst getAppendToElement = (props: any): HTMLElement => {\n let appendTo: HTMLElement | null = document.body\n if (props.appendTo) {\n if (isString(props.appendTo)) {\n appendTo = document.querySelector(props.appendTo)\n }\n if (isElement(props.appendTo)) {\n appendTo = props.appendTo\n }\n\n // should fallback to default value with a warning\n if (!isElement(appendTo)) {\n debugWarn(\n 'ElMessageBox',\n 'the appendTo option is not an HTMLElement. Falling back to document.body.'\n )\n appendTo = document.body\n }\n }\n return appendTo\n}\n\nconst initInstance = (\n props: any,\n container: HTMLElement,\n appContext: AppContext | null = null\n) => {\n const vnode = createVNode(\n MessageBoxConstructor,\n props,\n isFunction(props.message) || isVNode(props.message)\n ? {\n default: isFunction(props.message)\n ? props.message\n : () => props.message,\n }\n : null\n )\n vnode.appContext = appContext\n render(vnode, container)\n getAppendToElement(props).appendChild(container.firstElementChild!)\n return vnode.component\n}\n\nconst genContainer = () => {\n return document.createElement('div')\n}\n\nconst showMessage = (options: any, appContext?: AppContext | null) => {\n const container = genContainer()\n // Adding destruct method.\n // when transition leaves emitting `vanish` evt. so that we can do the clean job.\n options.onVanish = () => {\n // not sure if this causes mem leak, need proof to verify that.\n // maybe calling out like 1000 msg-box then close them all.\n render(null, container)\n messageInstance.delete(vm) // Remove vm to avoid mem leak.\n // here we were suppose to call document.body.removeChild(container.firstElementChild)\n // but render(null, container) did that job for us. so that we do not call that directly\n }\n\n options.onAction = (action: Action) => {\n const currentMsg = messageInstance.get(vm)!\n let resolve: Action | { value: string; action: Action }\n if (options.showInput) {\n resolve = { value: vm.inputValue, action }\n } else {\n resolve = action\n }\n if (options.callback) {\n options.callback(resolve, instance.proxy)\n } else {\n if (action === 'cancel' || action === 'close') {\n if (options.distinguishCancelAndClose && action !== 'cancel') {\n currentMsg.reject('close')\n } else {\n currentMsg.reject('cancel')\n }\n } else {\n currentMsg.resolve(resolve)\n }\n }\n }\n\n const instance = initInstance(options, container, appContext)!\n\n // This is how we use message box programmatically.\n // Maybe consider releasing a template version?\n // get component instance like v2.\n const vm = instance.proxy as ComponentPublicInstance<\n {\n visible: boolean\n doClose: () => void\n } & MessageBoxState\n >\n\n for (const prop in options) {\n if (hasOwn(options, prop) && !hasOwn(vm.$props, prop)) {\n if (prop === 'closeIcon' && isObject(options[prop])) {\n vm[prop as keyof ComponentPublicInstance] = markRaw(options[prop])\n } else {\n vm[prop as keyof ComponentPublicInstance] = options[prop]\n }\n }\n }\n\n // change visibility after everything is settled\n vm.visible = true\n return vm\n}\n\nasync function MessageBox(\n options: ElMessageBoxOptions,\n appContext?: AppContext | null\n): Promise\nfunction MessageBox(\n options: ElMessageBoxOptions | string | VNode,\n appContext: AppContext | null = null\n): Promise<{ value: string; action: Action } | Action> {\n if (!isClient) return Promise.reject()\n let callback: Callback | undefined\n if (isString(options) || isVNode(options)) {\n options = {\n message: options,\n }\n } else {\n callback = options.callback\n }\n\n return new Promise((resolve, reject) => {\n const vm = showMessage(\n options,\n appContext ?? (MessageBox as IElMessageBox)._context\n )\n // collect this vm in order to handle upcoming events.\n messageInstance.set(vm, {\n options,\n callback,\n resolve,\n reject,\n })\n })\n}\n\nconst MESSAGE_BOX_VARIANTS = ['alert', 'confirm', 'prompt'] as const\nconst MESSAGE_BOX_DEFAULT_OPTS: Record<\n (typeof MESSAGE_BOX_VARIANTS)[number],\n Partial\n> = {\n alert: { closeOnPressEscape: false, closeOnClickModal: false },\n confirm: { showCancelButton: true },\n prompt: { showCancelButton: true, showInput: true },\n}\n\nMESSAGE_BOX_VARIANTS.forEach((boxType) => {\n ;(MessageBox as IElMessageBox)[boxType] = messageBoxFactory(\n boxType\n ) as ElMessageBoxShortcutMethod\n})\n\nfunction messageBoxFactory(boxType: (typeof MESSAGE_BOX_VARIANTS)[number]) {\n return (\n message: string | VNode,\n title: string | ElMessageBoxOptions,\n options?: ElMessageBoxOptions,\n appContext?: AppContext | null\n ) => {\n let titleOrOpts = ''\n if (isObject(title)) {\n options = title as ElMessageBoxOptions\n titleOrOpts = ''\n } else if (isUndefined(title)) {\n titleOrOpts = ''\n } else {\n titleOrOpts = title as string\n }\n\n return MessageBox(\n Object.assign(\n {\n title: titleOrOpts,\n message,\n type: '',\n ...MESSAGE_BOX_DEFAULT_OPTS[boxType],\n },\n options,\n {\n boxType,\n }\n ),\n appContext\n )\n }\n}\n\nMessageBox.close = () => {\n // instance.setupInstall.doClose()\n // instance.setupInstall.state.visible = false\n\n messageInstance.forEach((_, vm) => {\n vm.doClose()\n })\n\n messageInstance.clear()\n}\n;(MessageBox as IElMessageBox)._context = null\n\nexport default MessageBox as IElMessageBox\n","import MessageBox from './src/messageBox'\n\nimport type { App } from 'vue'\nimport type { SFCWithInstall } from '@element-plus/utils'\n\nconst _MessageBox = MessageBox as SFCWithInstall\n\n_MessageBox.install = (app: App) => {\n _MessageBox._context = app._context\n app.config.globalProperties.$msgbox = _MessageBox\n app.config.globalProperties.$messageBox = _MessageBox\n app.config.globalProperties.$alert = _MessageBox.alert\n app.config.globalProperties.$confirm = _MessageBox.confirm\n app.config.globalProperties.$prompt = _MessageBox.prompt\n}\n\nexport default _MessageBox\nexport const ElMessageBox = _MessageBox\n\nexport * from './src/message-box.type'\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar source = require('./faCircleInfo');\nexports.definition = {\n prefix: source.prefix,\n iconName: source.iconName,\n icon: [\n source.width,\n source.height,\n source.aliases,\n source.unicode,\n source.svgPathData\n ]};\n\nexports.faInfoCircle = exports.definition;\nexports.prefix = source.prefix;\nexports.iconName = source.iconName;\nexports.width = source.width;\nexports.height = source.height;\nexports.ligatures = source.aliases;\nexports.unicode = source.unicode;\nexports.svgPathData = source.svgPathData;\nexports.aliases = source.aliases;","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'folder-open';\nvar width = 576;\nvar height = 512;\nvar aliases = [128194,128449,61717];\nvar unicode = 'f07c';\nvar svgPathData = 'M56 225.6L32.4 296.2 32.4 96c0-35.3 28.7-64 64-64l138.7 0c13.8 0 27.3 4.5 38.4 12.8l38.4 28.8c5.5 4.2 12.3 6.4 19.2 6.4l117.3 0c35.3 0 64 28.7 64 64l0 16-365.4 0c-41.3 0-78 26.4-91.1 65.6zM477.8 448L99 448c-32.8 0-55.9-32.1-45.5-63.2l48-144C108 221.2 126.4 208 147 208l378.8 0c32.8 0 55.9 32.1 45.5 63.2l-48 144c-6.5 19.6-24.9 32.8-45.5 32.8z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n aliases,\n unicode,\n svgPathData\n ]};\n\nexports.faFolderOpen = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = aliases;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;\nexports.aliases = aliases;","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'shield-halved';\nvar width = 512;\nvar height = 512;\nvar aliases = [\"shield-alt\"];\nvar unicode = 'f3ed';\nvar svgPathData = 'M256 0c4.6 0 9.2 1 13.4 2.9L457.8 82.8c22 9.3 38.4 31 38.3 57.2-.5 99.2-41.3 280.7-213.6 363.2-16.7 8-36.1 8-52.8 0-172.4-82.5-213.1-264-213.6-363.2-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.9 1 251.4 0 256 0zm0 66.8l0 378.1c138-66.8 175.1-214.8 176-303.4l-176-74.6 0 0z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n aliases,\n unicode,\n svgPathData\n ]};\n\nexports.faShieldHalved = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = aliases;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;\nexports.aliases = aliases;","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'pager';\nvar width = 512;\nvar height = 512;\nvar aliases = [128223];\nvar unicode = 'f815';\nvar svgPathData = 'M0 128C0 92.7 28.7 64 64 64l384 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128zm64 32l0 64c0 17.7 14.3 32 32 32l320 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32L96 128c-17.7 0-32 14.3-32 32zM88 320c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0zm128 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n aliases,\n unicode,\n svgPathData\n ]};\n\nexports.faPager = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = aliases;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;\nexports.aliases = aliases;","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar iterate = require('../internals/iterate');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar iteratorClose = require('../internals/iterator-close');\nvar iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');\n\nvar someWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('some', TypeError);\n\n// `Iterator.prototype.some` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.some\n$({ target: 'Iterator', proto: true, real: true, forced: someWithoutClosingOnEarlyError }, {\n some: function some(predicate) {\n anObject(this);\n try {\n aCallable(predicate);\n } catch (error) {\n iteratorClose(this, 'throw', error);\n }\n\n if (someWithoutClosingOnEarlyError) return call(someWithoutClosingOnEarlyError, this, predicate);\n\n var record = getIteratorDirect(this);\n var counter = 0;\n return iterate(record, function (value, stop) {\n if (predicate(value, counter++)) return stop();\n }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\n }\n});\n","import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nmodule.exports = function (argument) {\n return isObject(argument) || argument === null;\n};\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'comments';\nvar width = 576;\nvar height = 512;\nvar aliases = [128490,61670];\nvar unicode = 'f086';\nvar svgPathData = 'M384 144c0 97.2-86 176-192 176-26.7 0-52.1-5-75.2-14L35.2 349.2c-9.3 4.9-20.7 3.2-28.2-4.2s-9.2-18.9-4.2-28.2l35.6-67.2C14.3 220.2 0 183.6 0 144 0 46.8 86-32 192-32S384 46.8 384 144zm0 368c-94.1 0-172.4-62.1-188.8-144 120-1.5 224.3-86.9 235.8-202.7 83.3 19.2 145 88.3 145 170.7 0 39.6-14.3 76.2-38.4 105.6l35.6 67.2c4.9 9.3 3.2 20.7-4.2 28.2s-18.9 9.2-28.2 4.2L459.2 498c-23.1 9-48.5 14-75.2 14z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n aliases,\n unicode,\n svgPathData\n ]};\n\nexports.faComments = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = aliases;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;\nexports.aliases = aliases;","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'clock';\nvar width = 512;\nvar height = 512;\nvar aliases = [128339,\"clock-four\"];\nvar unicode = 'f017';\nvar svgPathData = 'M256 0a256 256 0 1 1 0 512 256 256 0 1 1 0-512zM232 120l0 136c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2 280 120c0-13.3-10.7-24-24-24s-24 10.7-24 24z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n aliases,\n unicode,\n svgPathData\n ]};\n\nexports.faClock = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = aliases;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;\nexports.aliases = aliases;","'use strict';\nvar $ = require('../internals/export');\nvar symmetricDifference = require('../internals/set-symmetric-difference');\nvar setMethodGetKeysBeforeCloning = require('../internals/set-method-get-keys-before-cloning-detection');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\nvar FORCED = !setMethodAcceptSetLike('symmetricDifference') || !setMethodGetKeysBeforeCloning('symmetricDifference');\n\n// `Set.prototype.symmetricDifference` method\n// https://tc39.es/ecma262/#sec-set.prototype.symmetricdifference\n$({ target: 'Set', proto: true, real: true, forced: FORCED }, {\n symmetricDifference: symmetricDifference\n});\n","import { isClient } from './browser'\n\nexport const rAF = (fn: () => void) =>\n isClient\n ? window.requestAnimationFrame(fn)\n : (setTimeout(fn, 16) as unknown as number)\n\nexport const cAF = (handle: number) =>\n isClient ? window.cancelAnimationFrame(handle) : clearTimeout(handle)\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar source = require('./faTriangleExclamation');\nexports.definition = {\n prefix: source.prefix,\n iconName: source.iconName,\n icon: [\n source.width,\n source.height,\n source.aliases,\n source.unicode,\n source.svgPathData\n ]};\n\nexports.faExclamationTriangle = exports.definition;\nexports.prefix = source.prefix;\nexports.iconName = source.iconName;\nexports.width = source.width;\nexports.height = source.height;\nexports.ligatures = source.aliases;\nexports.unicode = source.unicode;\nexports.svgPathData = source.svgPathData;\nexports.aliases = source.aliases;","/**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\nfunction isNil(value) {\n return value == null;\n}\n\nexport default isNil;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar $Error = Error;\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String(new $Error(arg).stack); })('zxcasd');\n// eslint-disable-next-line redos/no-vulnerable, sonarjs/slow-regex -- safe\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\n while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n } return stack;\n};\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'chevron-right';\nvar width = 320;\nvar height = 512;\nvar aliases = [9002];\nvar unicode = 'f054';\nvar svgPathData = 'M311.1 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L243.2 256 73.9 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n aliases,\n unicode,\n svgPathData\n ]};\n\nexports.faChevronRight = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = aliases;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;\nexports.aliases = aliases;","export const version = '2.12.0'\n","export const INSTALLED_KEY = Symbol('INSTALLED_KEY')\n","import { provideGlobalConfig } from '@element-plus/components/config-provider'\nimport { INSTALLED_KEY } from '@element-plus/constants'\nimport { version } from './version'\n\nimport type { App, Plugin } from 'vue'\nimport type { ConfigProviderContext } from '@element-plus/components/config-provider'\n\nexport const makeInstaller = (components: Plugin[] = []) => {\n const install = (app: App, options?: ConfigProviderContext) => {\n if (app[INSTALLED_KEY]) return\n\n app[INSTALLED_KEY] = true\n components.forEach((c) => app.use(c))\n\n if (options) provideGlobalConfig(options, app, true)\n }\n\n return {\n version,\n install,\n }\n}\n","import {\n buildProps,\n definePropType,\n isBoolean,\n isNumber,\n} from '@element-plus/utils'\nimport { CHANGE_EVENT } from '@element-plus/constants'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\nimport type { ZIndexProperty } from 'csstype'\nimport type Affix from './affix.vue'\n\nexport const affixProps = buildProps({\n /**\n * @description affix element zIndex value\n * */\n zIndex: {\n type: definePropType([Number, String]),\n default: 100,\n },\n /**\n * @description target container. (CSS selector)\n */\n target: {\n type: String,\n default: '',\n },\n /**\n * @description offset distance\n * */\n offset: {\n type: Number,\n default: 0,\n },\n /**\n * @description position of affix\n * */\n position: {\n type: String,\n values: ['top', 'bottom'],\n default: 'top',\n },\n} as const)\nexport type AffixProps = ExtractPropTypes\nexport type AffixPropsPublic = __ExtractPublicPropTypes\n\nexport const affixEmits = {\n scroll: ({ scrollTop, fixed }: { scrollTop: number; fixed: boolean }) =>\n isNumber(scrollTop) && isBoolean(fixed),\n [CHANGE_EVENT]: (fixed: boolean) => isBoolean(fixed),\n}\nexport type AffixEmits = typeof affixEmits\n\nexport type AffixInstance = InstanceType & unknown\n","\n\n\n","import { withInstall } from '@element-plus/utils'\nimport Affix from './src/affix.vue'\n\nimport type { SFCWithInstall } from '@element-plus/utils'\n\nexport const ElAffix: SFCWithInstall = withInstall(Affix)\nexport default ElAffix\n\nexport * from './src/affix'\n","import {\n NOOP,\n buildProps,\n definePropType,\n isNumber,\n isObject,\n isString,\n} from '@element-plus/utils'\nimport { useTooltipContentProps } from '@element-plus/components/tooltip'\nimport {\n CHANGE_EVENT,\n INPUT_EVENT,\n UPDATE_MODEL_EVENT,\n} from '@element-plus/constants'\nimport { inputProps } from '@element-plus/components/input'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\nimport type Autocomplete from './autocomplete.vue'\nimport type { Placement } from '@element-plus/components/popper'\nimport type { Awaitable } from '@element-plus/utils'\n\nexport type AutocompleteData = Record[]\nexport type AutocompleteFetchSuggestionsCallback = (\n data: AutocompleteData\n) => void\nexport type AutocompleteFetchSuggestions =\n | ((\n queryString: string,\n cb: AutocompleteFetchSuggestionsCallback\n ) => Awaitable | void)\n | AutocompleteData\n\nexport const autocompleteProps = buildProps({\n ...inputProps,\n /**\n * @description key name of the input suggestion object for display\n */\n valueKey: {\n type: String,\n default: 'value',\n },\n /**\n * @description binding value\n */\n modelValue: {\n type: [String, Number],\n default: '',\n },\n /**\n * @description debounce delay when typing, in milliseconds\n */\n debounce: {\n type: Number,\n default: 300,\n },\n /**\n * @description placement of the popup menu\n */\n placement: {\n type: definePropType(String),\n values: [\n 'top',\n 'top-start',\n 'top-end',\n 'bottom',\n 'bottom-start',\n 'bottom-end',\n ],\n default: 'bottom-start',\n },\n /**\n * @description a method to fetch input suggestions. When suggestions are ready, invoke `callback(data:[])` to return them to Autocomplete\n */\n fetchSuggestions: {\n type: definePropType([Function, Array]),\n default: NOOP,\n },\n /**\n * @description custom class name for autocomplete's dropdown\n */\n popperClass: useTooltipContentProps.popperClass,\n /**\n * @description custom style for autocomplete's dropdown\n */\n popperStyle: useTooltipContentProps.popperStyle,\n /**\n * @description whether show suggestions when input focus\n */\n triggerOnFocus: {\n type: Boolean,\n default: true,\n },\n /**\n * @description whether to emit a `select` event on enter when there is no autocomplete match\n */\n selectWhenUnmatched: Boolean,\n /**\n * @description whether to hide the loading icon in remote search\n */\n hideLoading: Boolean,\n /**\n * @description whether select dropdown is teleported to the body\n */\n teleported: useTooltipContentProps.teleported,\n /**\n * @description which select dropdown appends to\n */\n appendTo: useTooltipContentProps.appendTo,\n /**\n * @description whether to highlight first item in remote search suggestions by default\n */\n highlightFirstItem: Boolean,\n /**\n * @description whether the width of the dropdown is the same as the input\n */\n fitInputWidth: Boolean,\n /**\n * @description whether keyboard navigation loops from end to start\n */\n loopNavigation: {\n type: Boolean,\n default: true,\n },\n} as const)\nexport type AutocompleteProps = ExtractPropTypes\nexport type AutocompletePropsPublic = __ExtractPublicPropTypes<\n typeof autocompleteProps\n>\n\nexport const autocompleteEmits = {\n [UPDATE_MODEL_EVENT]: (value: string | number) =>\n isString(value) || isNumber(value),\n [INPUT_EVENT]: (value: string | number) => isString(value) || isNumber(value),\n [CHANGE_EVENT]: (value: string | number) =>\n isString(value) || isNumber(value),\n focus: (evt: FocusEvent) => evt instanceof FocusEvent,\n blur: (evt: FocusEvent) => evt instanceof FocusEvent,\n clear: () => true,\n select: (item: Record) => isObject(item),\n}\nexport type AutocompleteEmits = typeof autocompleteEmits\n\nexport type AutocompleteInstance = InstanceType & unknown\n","\n\n\n","import { withInstall } from '@element-plus/utils'\nimport Autocomplete from './src/autocomplete.vue'\n\nimport type { SFCWithInstall } from '@element-plus/utils'\n\nexport const ElAutocomplete: SFCWithInstall =\n withInstall(Autocomplete)\n\nexport default ElAutocomplete\n\nexport * from './src/autocomplete'\n","import {\n buildProps,\n definePropType,\n iconPropType,\n isNumber,\n} from '@element-plus/utils'\nimport { componentSizes } from '@element-plus/constants'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\nimport type { ObjectFitProperty } from 'csstype'\n\nexport const avatarProps = buildProps({\n /**\n * @description avatar size.\n */\n size: {\n type: [Number, String],\n values: componentSizes,\n default: '',\n validator: (val: unknown): val is number => isNumber(val),\n },\n /**\n * @description avatar shape.\n */\n shape: {\n type: String,\n values: ['circle', 'square'],\n default: 'circle',\n },\n /**\n * @description representation type to icon, more info on icon component.\n */\n icon: {\n type: iconPropType,\n },\n /**\n * @description the source of the image for an image avatar.\n */\n src: {\n type: String,\n default: '',\n },\n /**\n * @description native attribute `alt` of image avatar.\n */\n alt: String,\n /**\n * @description native attribute srcset of image avatar.\n */\n srcSet: String,\n /**\n * @description set how the image fit its container for an image avatar.\n */\n fit: {\n type: definePropType(String),\n default: 'cover',\n },\n} as const)\nexport type AvatarProps = ExtractPropTypes\nexport type AvatarPropsPublic = __ExtractPublicPropTypes\n\nexport const avatarEmits = {\n error: (evt: Event) => evt instanceof Event,\n}\nexport type AvatarEmits = typeof avatarEmits\n","\n\n\n","import { withInstall } from '@element-plus/utils'\nimport Avatar from './src/avatar.vue'\n\nimport type { SFCWithInstall } from '@element-plus/utils'\n\nexport const ElAvatar: SFCWithInstall = withInstall(Avatar)\nexport default ElAvatar\n\nexport * from './src/avatar'\nexport type { AvatarInstance } from './src/instance'\n","import type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\n\nexport const backtopProps = {\n /**\n * @description the button will not show until the scroll height reaches this value.\n */\n visibilityHeight: {\n type: Number,\n default: 200,\n },\n /**\n * @description the target to trigger scroll.\n */\n target: {\n type: String,\n default: '',\n },\n /**\n * @description right distance.\n */\n right: {\n type: Number,\n default: 40,\n },\n /**\n * @description bottom distance.\n */\n bottom: {\n type: Number,\n default: 40,\n },\n} as const\nexport type BacktopProps = ExtractPropTypes\nexport type BacktopPropsPublic = __ExtractPublicPropTypes\n\nexport const backtopEmits = {\n click: (evt: MouseEvent) => evt instanceof MouseEvent,\n}\nexport type BacktopEmits = typeof backtopEmits\n","import { onMounted, ref, shallowRef } from 'vue'\nimport { useEventListener, useThrottleFn } from '@vueuse/core'\nimport { throwError } from '@element-plus/utils'\n\nimport type { SetupContext } from 'vue'\nimport type { BacktopEmits, BacktopProps } from './backtop'\n\nexport const useBackTop = (\n props: BacktopProps,\n emit: SetupContext['emit'],\n componentName: string\n) => {\n const el = shallowRef()\n const container = shallowRef()\n const visible = ref(false)\n\n const handleScroll = () => {\n if (el.value) visible.value = el.value.scrollTop >= props.visibilityHeight\n }\n\n const handleClick = (event: MouseEvent) => {\n el.value?.scrollTo({ top: 0, behavior: 'smooth' })\n emit('click', event)\n }\n\n const handleScrollThrottled = useThrottleFn(handleScroll, 300, true)\n\n useEventListener(container, 'scroll', handleScrollThrottled)\n onMounted(() => {\n container.value = document\n el.value = document.documentElement\n\n if (props.target) {\n el.value = document.querySelector(props.target) ?? undefined\n if (!el.value) {\n throwError(componentName, `target does not exist: ${props.target}`)\n }\n container.value = el.value\n }\n // Give visible an initial value, fix #13066\n handleScroll()\n })\n\n return {\n visible,\n handleClick,\n }\n}\n","\n\n\n","import { withInstall } from '@element-plus/utils'\nimport Backtop from './src/backtop.vue'\n\nimport type { SFCWithInstall } from '@element-plus/utils'\n\nexport const ElBacktop: SFCWithInstall = withInstall(Backtop)\nexport default ElBacktop\n\nexport * from './src/backtop'\nexport type { BacktopInstance } from './src/instance'\n","import dayjs from 'dayjs'\nimport { isArray, isDate, isEmpty } from '@element-plus/utils'\n\nimport type { Dayjs } from 'dayjs'\nimport type { DateOrDates, DayOrDays } from './common/props'\n\nexport type TimeList = [number | undefined, number, undefined | number]\n\nexport const buildTimeList = (value: number, bound: number): TimeList => {\n return [\n value > 0 ? value - 1 : undefined,\n value,\n value < bound ? value + 1 : undefined,\n ]\n}\n\nexport const rangeArr = (n: number) =>\n Array.from(Array.from({ length: n }).keys())\n\nexport const extractDateFormat = (format: string) => {\n return format\n .replace(/\\W?m{1,2}|\\W?ZZ/g, '')\n .replace(/\\W?h{1,2}|\\W?s{1,3}|\\W?a/gi, '')\n .trim()\n}\n\nexport const extractTimeFormat = (format: string) => {\n return format\n .replace(/\\W?D{1,2}|\\W?Do|\\W?d{1,4}|\\W?M{1,4}|\\W?Y{2,4}/g, '')\n .trim()\n}\n\nexport const dateEquals = function (a: Date | unknown, b: Date | unknown) {\n const aIsDate = isDate(a)\n const bIsDate = isDate(b)\n if (aIsDate && bIsDate) {\n return a.getTime() === b.getTime()\n }\n if (!aIsDate && !bIsDate) {\n return a === b\n }\n return false\n}\n\nexport const valueEquals = function (\n a: Array | unknown,\n b: Array | unknown\n) {\n const aIsArray = isArray(a)\n const bIsArray = isArray(b)\n if (aIsArray && bIsArray) {\n if (a.length !== b.length) {\n return false\n }\n return a.every((item, index) => dateEquals(item, b[index]))\n }\n if (!aIsArray && !bIsArray) {\n return dateEquals(a, b)\n }\n return false\n}\n\nexport const parseDate = function (\n date: string | number | Date,\n format: string | undefined,\n lang: string\n) {\n const day =\n isEmpty(format) || format === 'x'\n ? dayjs(date).locale(lang)\n : dayjs(date, format).locale(lang)\n return day.isValid() ? day : undefined\n}\n\nexport const formatter = function (\n date: string | number | Date | Dayjs,\n format: string | undefined,\n lang: string\n) {\n if (isEmpty(format)) return date\n if (format === 'x') return +date\n return dayjs(date).locale(lang).format(format)\n}\n\nexport const makeList = (total: number, method?: () => number[]) => {\n const arr: boolean[] = []\n const disabledArr = method?.()\n for (let i = 0; i < total; i++) {\n arr.push(disabledArr?.includes(i) ?? false)\n }\n return arr\n}\n\nexport const dayOrDaysToDate = (dayOrDays: DayOrDays): DateOrDates => {\n return isArray(dayOrDays)\n ? (dayOrDays.map((d) => d.toDate()) as [Date, Date])\n : dayOrDays.toDate()\n}\n","import { buildProps, definePropType, isObject } from '@element-plus/utils'\nimport { rangeArr } from '@element-plus/components/time-picker'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\nimport type { Dayjs } from 'dayjs'\n\nexport type CalendarDateCellType = 'next' | 'prev' | 'current'\nexport type CalendarDateCell = {\n text: number\n type: CalendarDateCellType\n}\n\nexport const getPrevMonthLastDays = (date: Dayjs, count: number) => {\n const lastDay = date.subtract(1, 'month').endOf('month').date()\n return rangeArr(count).map((_, index) => lastDay - (count - index - 1))\n}\n\nexport const getMonthDays = (date: Dayjs) => {\n const days = date.daysInMonth()\n return rangeArr(days).map((_, index) => index + 1)\n}\n\nexport const toNestedArr = (days: CalendarDateCell[]) =>\n rangeArr(days.length / 7).map((index) => {\n const start = index * 7\n return days.slice(start, start + 7)\n })\n\nexport const dateTableProps = buildProps({\n selectedDay: {\n type: definePropType(Object),\n },\n range: {\n type: definePropType<[Dayjs, Dayjs]>(Array),\n },\n date: {\n type: definePropType(Object),\n required: true,\n },\n hideHeader: {\n type: Boolean,\n },\n} as const)\nexport type DateTableProps = ExtractPropTypes\nexport type DateTablePropsPublic = __ExtractPublicPropTypes<\n typeof dateTableProps\n>\n\nexport const dateTableEmits = {\n pick: (value: Dayjs) => isObject(value),\n}\nexport type DateTableEmits = typeof dateTableEmits\n","export const datePickTypes = [\n 'year',\n 'years',\n 'month',\n 'months',\n 'date',\n 'dates',\n 'week',\n 'datetime',\n 'datetimerange',\n 'daterange',\n 'monthrange',\n 'yearrange',\n] as const\n\nexport const WEEK_DAYS = [\n 'sun',\n 'mon',\n 'tue',\n 'wed',\n 'thu',\n 'fri',\n 'sat',\n] as const\n\nexport type DatePickType = (typeof datePickTypes)[number]\n","import { computed } from 'vue'\nimport dayjs from 'dayjs'\nimport localeData from 'dayjs/plugin/localeData.js'\nimport { useLocale } from '@element-plus/hooks'\nimport { rangeArr } from '@element-plus/components/time-picker'\nimport { WEEK_DAYS } from '@element-plus/constants'\nimport { getMonthDays, getPrevMonthLastDays, toNestedArr } from './date-table'\n\nimport type { SetupContext } from 'vue'\nimport type { Dayjs } from 'dayjs'\nimport type {\n CalendarDateCell,\n CalendarDateCellType,\n DateTableEmits,\n DateTableProps,\n} from './date-table'\n\nexport const useDateTable = (\n props: DateTableProps,\n emit: SetupContext['emit']\n) => {\n dayjs.extend(localeData)\n // https://day.js.org/docs/en/i18n/locale-data\n const firstDayOfWeek: number = dayjs.localeData().firstDayOfWeek()\n\n const { t, lang } = useLocale()\n const now = dayjs().locale(lang.value)\n\n const isInRange = computed(() => !!props.range && !!props.range.length)\n\n const rows = computed(() => {\n let days: CalendarDateCell[] = []\n if (isInRange.value) {\n const [start, end] = props.range!\n const currentMonthRange: CalendarDateCell[] = rangeArr(\n end.date() - start.date() + 1\n ).map((index) => ({\n text: start.date() + index,\n type: 'current',\n }))\n\n let remaining = currentMonthRange.length % 7\n remaining = remaining === 0 ? 0 : 7 - remaining\n const nextMonthRange: CalendarDateCell[] = rangeArr(remaining).map(\n (_, index) => ({\n text: index + 1,\n type: 'next',\n })\n )\n days = currentMonthRange.concat(nextMonthRange)\n } else {\n const firstDay = props.date.startOf('month').day()\n const prevMonthDays: CalendarDateCell[] = getPrevMonthLastDays(\n props.date,\n (firstDay - firstDayOfWeek + 7) % 7\n ).map((day) => ({\n text: day,\n type: 'prev',\n }))\n const currentMonthDays: CalendarDateCell[] = getMonthDays(props.date).map(\n (day) => ({\n text: day,\n type: 'current',\n })\n )\n days = [...prevMonthDays, ...currentMonthDays]\n const remaining = 7 - (days.length % 7 || 7)\n const nextMonthDays: CalendarDateCell[] = rangeArr(remaining).map(\n (_, index) => ({\n text: index + 1,\n type: 'next',\n })\n )\n days = days.concat(nextMonthDays)\n }\n return toNestedArr(days)\n })\n\n const weekDays = computed(() => {\n const start = firstDayOfWeek\n if (start === 0) {\n return WEEK_DAYS.map((_) => t(`el.datepicker.weeks.${_}`))\n } else {\n return WEEK_DAYS.slice(start)\n .concat(WEEK_DAYS.slice(0, start))\n .map((_) => t(`el.datepicker.weeks.${_}`))\n }\n })\n\n const getFormattedDate = (day: number, type: CalendarDateCellType): Dayjs => {\n switch (type) {\n case 'prev':\n return props.date.startOf('month').subtract(1, 'month').date(day)\n case 'next':\n return props.date.startOf('month').add(1, 'month').date(day)\n case 'current':\n return props.date.date(day)\n }\n }\n\n const handlePickDay = ({ text, type }: CalendarDateCell) => {\n const date = getFormattedDate(text, type)\n emit('pick', date)\n }\n\n const getSlotData = ({ text, type }: CalendarDateCell) => {\n const day = getFormattedDate(text, type)\n return {\n isSelected: day.isSame(props.selectedDay),\n type: `${type}-month`,\n day: day.format('YYYY-MM-DD'),\n date: day.toDate(),\n }\n }\n\n return {\n now,\n isInRange,\n rows,\n weekDays,\n getFormattedDate,\n handlePickDay,\n getSlotData,\n }\n}\n","\n\n\n","import { computed, ref } from 'vue'\nimport dayjs from 'dayjs'\nimport { useLocale } from '@element-plus/hooks'\nimport { debugWarn, isArray, isDate } from '@element-plus/utils'\nimport { INPUT_EVENT, UPDATE_MODEL_EVENT } from '@element-plus/constants'\n\nimport type { ComputedRef, SetupContext } from 'vue'\nimport type { Dayjs } from 'dayjs'\nimport type { CalendarDateType, CalendarEmits, CalendarProps } from './calendar'\n\nconst adjacentMonth = (start: Dayjs, end: Dayjs): [Dayjs, Dayjs][] => {\n const firstMonthLastDay = start.endOf('month')\n const lastMonthFirstDay = end.startOf('month')\n\n // Whether the last day of the first month and the first day of the last month is in the same week\n const isSameWeek = firstMonthLastDay.isSame(lastMonthFirstDay, 'week')\n const lastMonthStartDay = isSameWeek\n ? lastMonthFirstDay.add(1, 'week')\n : lastMonthFirstDay\n\n return [\n [start, firstMonthLastDay],\n [lastMonthStartDay.startOf('week'), end],\n ]\n}\n\nconst threeConsecutiveMonth = (start: Dayjs, end: Dayjs): [Dayjs, Dayjs][] => {\n const firstMonthLastDay = start.endOf('month')\n const secondMonthFirstDay = start.add(1, 'month').startOf('month')\n\n // Whether the last day of the first month and the second month is in the same week\n const secondMonthStartDay = firstMonthLastDay.isSame(\n secondMonthFirstDay,\n 'week'\n )\n ? secondMonthFirstDay.add(1, 'week')\n : secondMonthFirstDay\n\n const secondMonthLastDay = secondMonthStartDay.endOf('month')\n const lastMonthFirstDay = end.startOf('month')\n\n // Whether the last day of the second month and the last day of the last month is in the same week\n const lastMonthStartDay = secondMonthLastDay.isSame(lastMonthFirstDay, 'week')\n ? lastMonthFirstDay.add(1, 'week')\n : lastMonthFirstDay\n\n return [\n [start, firstMonthLastDay],\n [secondMonthStartDay.startOf('week'), secondMonthLastDay],\n [lastMonthStartDay.startOf('week'), end],\n ]\n}\n\nexport const useCalendar = (\n props: CalendarProps,\n emit: SetupContext['emit'],\n componentName: string\n) => {\n const { lang } = useLocale()\n\n const selectedDay = ref()\n const now = dayjs().locale(lang.value)\n\n const realSelectedDay = computed({\n get() {\n if (!props.modelValue) return selectedDay.value\n return date.value\n },\n set(val) {\n if (!val) return\n selectedDay.value = val\n const result = val.toDate()\n\n emit(INPUT_EVENT, result)\n emit(UPDATE_MODEL_EVENT, result)\n },\n })\n\n // if range is valid, we get a two-digit array\n const validatedRange = computed(() => {\n if (\n !props.range ||\n !isArray(props.range) ||\n props.range.length !== 2 ||\n props.range.some((item) => !isDate(item))\n )\n return []\n const rangeArrDayjs = props.range.map((_) => dayjs(_).locale(lang.value))\n const [startDayjs, endDayjs] = rangeArrDayjs\n if (startDayjs.isAfter(endDayjs)) {\n debugWarn(componentName, 'end time should be greater than start time')\n return []\n }\n if (startDayjs.isSame(endDayjs, 'month')) {\n // same month\n return calculateValidatedDateRange(startDayjs, endDayjs)\n } else {\n // two months\n if (startDayjs.add(1, 'month').month() !== endDayjs.month()) {\n debugWarn(\n componentName,\n 'start time and end time interval must not exceed two months'\n )\n return []\n }\n return calculateValidatedDateRange(startDayjs, endDayjs)\n }\n })\n\n const date: ComputedRef = computed(() => {\n if (!props.modelValue) {\n return (\n realSelectedDay.value ||\n (validatedRange.value.length ? validatedRange.value[0][0] : now)\n )\n } else {\n return dayjs(props.modelValue).locale(lang.value)\n }\n })\n const prevMonthDayjs = computed(() => date.value.subtract(1, 'month').date(1))\n const nextMonthDayjs = computed(() => date.value.add(1, 'month').date(1))\n const prevYearDayjs = computed(() => date.value.subtract(1, 'year').date(1))\n const nextYearDayjs = computed(() => date.value.add(1, 'year').date(1))\n\n // https://github.com/element-plus/element-plus/issues/3155\n // Calculate the validate date range according to the start and end dates\n const calculateValidatedDateRange = (\n startDayjs: Dayjs,\n endDayjs: Dayjs\n ): [Dayjs, Dayjs][] => {\n const firstDay = startDayjs.startOf('week')\n const lastDay = endDayjs.endOf('week')\n const firstMonth = firstDay.get('month')\n const lastMonth = lastDay.get('month')\n\n // Current mouth\n if (firstMonth === lastMonth) {\n return [[firstDay, lastDay]]\n }\n // Two adjacent months\n else if ((firstMonth + 1) % 12 === lastMonth) {\n return adjacentMonth(firstDay, lastDay)\n }\n // Three consecutive months (compatible: 2021-01-30 to 2021-02-28)\n else if (\n firstMonth + 2 === lastMonth ||\n (firstMonth + 1) % 11 === lastMonth\n ) {\n return threeConsecutiveMonth(firstDay, lastDay)\n }\n // Other cases\n else {\n debugWarn(\n componentName,\n 'start time and end time interval must not exceed two months'\n )\n return []\n }\n }\n\n const pickDay = (day: Dayjs) => {\n realSelectedDay.value = day\n }\n\n const selectDate = (type: CalendarDateType) => {\n const dateMap: Record = {\n 'prev-month': prevMonthDayjs.value,\n 'next-month': nextMonthDayjs.value,\n 'prev-year': prevYearDayjs.value,\n 'next-year': nextYearDayjs.value,\n today: now,\n }\n\n const day = dateMap[type]\n\n if (!day.isSame(date.value, 'day')) {\n pickDay(day)\n }\n }\n\n return {\n calculateValidatedDateRange,\n date,\n realSelectedDay,\n pickDay,\n selectDate,\n validatedRange,\n }\n}\n","import {\n buildProps,\n definePropType,\n isArray,\n isDate,\n} from '@element-plus/utils'\nimport { INPUT_EVENT, UPDATE_MODEL_EVENT } from '@element-plus/constants'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\n\nexport type CalendarDateType =\n | 'prev-month'\n | 'next-month'\n | 'prev-year'\n | 'next-year'\n | 'today'\n\nconst isValidRange = (range: unknown): range is [Date, Date] =>\n isArray(range) && range.length === 2 && range.every((item) => isDate(item))\n\nexport const calendarProps = buildProps({\n /**\n * @description binding value\n */\n modelValue: {\n type: Date,\n },\n /**\n * @description time range, including start time and end time.\n * Start time must be start day of week, end time must be end day of week, the time span cannot exceed two months.\n */\n range: {\n type: definePropType<[Date, Date]>(Array),\n validator: isValidRange,\n },\n} as const)\nexport type CalendarProps = ExtractPropTypes\nexport type CalendarPropsPublic = __ExtractPublicPropTypes\n\nexport const calendarEmits = {\n [UPDATE_MODEL_EVENT]: (value: Date) => isDate(value),\n [INPUT_EVENT]: (value: Date) => isDate(value),\n}\nexport type CalendarEmits = typeof calendarEmits\n","\n\n\n","import { withInstall } from '@element-plus/utils'\nimport Calendar from './src/calendar.vue'\n\nimport type { SFCWithInstall } from '@element-plus/utils'\n\nexport const ElCalendar: SFCWithInstall = withInstall(Calendar)\nexport default ElCalendar\n\nexport * from './src/calendar'\nexport type {\n CalendarDateTableInstance,\n DateTableInstance,\n CalendarInstance,\n} from './src/instance'\n","import { buildProps, isNumber } from '@element-plus/utils'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\n\nexport const carouselProps = buildProps({\n /**\n * @description index of the initially active slide (starting from 0)\n */\n initialIndex: {\n type: Number,\n default: 0,\n },\n /**\n * @description height of the carousel\n */\n height: {\n type: String,\n default: '',\n },\n /**\n * @description how indicators are triggered\n */\n trigger: {\n type: String,\n values: ['hover', 'click'],\n default: 'hover',\n },\n /**\n * @description whether automatically loop the slides\n */\n autoplay: {\n type: Boolean,\n default: true,\n },\n /**\n * @description interval of the auto loop, in milliseconds\n */\n interval: {\n type: Number,\n default: 3000,\n },\n /**\n * @description position of the indicators\n */\n indicatorPosition: {\n type: String,\n values: ['', 'none', 'outside'],\n default: '',\n },\n /**\n * @description when arrows are shown\n */\n arrow: {\n type: String,\n values: ['always', 'hover', 'never'],\n default: 'hover',\n },\n /**\n * @description type of the Carousel\n */\n type: {\n type: String,\n values: ['', 'card'],\n default: '',\n },\n /**\n * @description when type is card, scaled size of secondary cards\n */\n cardScale: {\n type: Number,\n default: 0.83,\n },\n /**\n * @description display the items in loop\n */\n loop: {\n type: Boolean,\n default: true,\n },\n /**\n * @description display direction\n */\n direction: {\n type: String,\n values: ['horizontal', 'vertical'],\n default: 'horizontal',\n },\n /**\n * @description pause autoplay when hover\n */\n pauseOnHover: {\n type: Boolean,\n default: true,\n },\n /**\n * @description infuse dynamism and smoothness into the carousel\n */\n motionBlur: Boolean,\n} as const)\n\nexport const carouselEmits = {\n /**\n * @description triggers when the active slide switches\n * @param current index of the new active slide\n * @param prev index of the old active slide\n */\n change: (current: number, prev: number) => [current, prev].every(isNumber),\n}\n\nexport type CarouselProps = ExtractPropTypes\nexport type CarouselPropsPublic = __ExtractPublicPropTypes\nexport type CarouselEmits = typeof carouselEmits\n","import type { InjectionKey, Ref, VNode } from 'vue'\nimport type { CarouselItemProps } from './carousel-item'\n\nexport type CarouselItemStates = {\n hover: boolean\n translate: number\n scale: number\n active: boolean\n ready: boolean\n inStage: boolean\n animating: boolean\n}\n\nexport type CarouselItemContext = {\n props: CarouselItemProps\n states: CarouselItemStates\n uid: number\n getVnode: () => VNode\n translateItem: (index: number, activeIndex: number, oldIndex?: number) => void\n}\n\nexport type CarouselContext = {\n root: Ref\n items: Ref\n isCardType: Ref\n isVertical: Ref\n loop: boolean\n cardScale: number\n addItem: (item: CarouselItemContext) => void\n removeItem: (item: CarouselItemContext) => void\n setActiveItem: (index: number) => void\n setContainerHeight: (height: number) => void\n}\n\nexport const carouselContextKey: InjectionKey =\n Symbol('carouselContextKey')\n\nexport const CAROUSEL_ITEM_NAME = 'ElCarouselItem'\n","import {\n computed,\n getCurrentInstance,\n isVNode,\n onBeforeUnmount,\n onMounted,\n provide,\n ref,\n shallowRef,\n unref,\n useSlots,\n watch,\n} from 'vue'\nimport { throttle } from 'lodash-unified'\nimport { useResizeObserver } from '@vueuse/core'\nimport { debugWarn, flattedChildren, isString } from '@element-plus/utils'\nimport { useOrderedChildren } from '@element-plus/hooks'\nimport { CHANGE_EVENT } from '@element-plus/constants'\nimport { CAROUSEL_ITEM_NAME, carouselContextKey } from './constants'\n\nimport type { SetupContext } from 'vue'\nimport type { CarouselItemContext } from './constants'\nimport type { CarouselEmits, CarouselProps } from './carousel'\n\nconst THROTTLE_TIME = 300\n\nexport const useCarousel = (\n props: CarouselProps,\n emit: SetupContext['emit'],\n componentName: string\n) => {\n const {\n children: items,\n addChild: addItem,\n removeChild: removeItem,\n ChildrenSorter: ItemsSorter,\n } = useOrderedChildren(\n getCurrentInstance()!,\n CAROUSEL_ITEM_NAME\n )\n\n const slots = useSlots()\n\n // refs\n const activeIndex = ref(-1)\n const timer = ref | null>(null)\n const hover = ref(false)\n const root = ref()\n const containerHeight = ref(0)\n const isItemsTwoLength = ref(true)\n\n // computed\n const arrowDisplay = computed(\n () => props.arrow !== 'never' && !unref(isVertical)\n )\n\n const hasLabel = computed(() => {\n return items.value.some((item) => item.props.label.toString().length > 0)\n })\n\n const isCardType = computed(() => props.type === 'card')\n const isVertical = computed(() => props.direction === 'vertical')\n\n const containerStyle = computed(() => {\n if (props.height !== 'auto') {\n return {\n height: props.height,\n }\n }\n return {\n height: `${containerHeight.value}px`,\n overflow: 'hidden',\n }\n })\n\n // methods\n const throttledArrowClick = throttle(\n (index: number) => {\n setActiveItem(index)\n },\n THROTTLE_TIME,\n { trailing: true }\n )\n\n const throttledIndicatorHover = throttle((index: number) => {\n handleIndicatorHover(index)\n }, THROTTLE_TIME)\n\n const isTwoLengthShow = (index: number) => {\n if (!isItemsTwoLength.value) return true\n return activeIndex.value <= 1 ? index <= 1 : index > 1\n }\n\n function pauseTimer() {\n if (timer.value) {\n clearInterval(timer.value)\n timer.value = null\n }\n }\n\n function startTimer() {\n if (props.interval <= 0 || !props.autoplay || timer.value) return\n timer.value = setInterval(() => playSlides(), props.interval)\n }\n\n const playSlides = () => {\n if (activeIndex.value < items.value.length - 1) {\n activeIndex.value = activeIndex.value + 1\n } else if (props.loop) {\n activeIndex.value = 0\n }\n }\n\n function setActiveItem(index: number | string) {\n if (isString(index)) {\n const filteredItems = items.value.filter(\n (item) => item.props.name === index\n )\n if (filteredItems.length > 0) {\n index = items.value.indexOf(filteredItems[0])\n }\n }\n index = Number(index)\n if (Number.isNaN(index) || index !== Math.floor(index)) {\n debugWarn(componentName, 'index must be integer.')\n return\n }\n const itemCount = items.value.length\n const oldIndex = activeIndex.value\n if (index < 0) {\n activeIndex.value = props.loop ? itemCount - 1 : 0\n } else if (index >= itemCount) {\n activeIndex.value = props.loop ? 0 : itemCount - 1\n } else {\n activeIndex.value = index\n }\n if (oldIndex === activeIndex.value) {\n resetItemPosition(oldIndex)\n }\n resetTimer()\n }\n\n function resetItemPosition(oldIndex?: number) {\n items.value.forEach((item, index) => {\n item.translateItem(index, activeIndex.value, oldIndex)\n })\n }\n\n function itemInStage(item: CarouselItemContext, index: number) {\n const _items = unref(items)\n const itemCount = _items.length\n if (itemCount === 0 || !item.states.inStage) return false\n const nextItemIndex = index + 1\n const prevItemIndex = index - 1\n const lastItemIndex = itemCount - 1\n const isLastItemActive = _items[lastItemIndex].states.active\n const isFirstItemActive = _items[0].states.active\n const isNextItemActive = _items[nextItemIndex]?.states?.active\n const isPrevItemActive = _items[prevItemIndex]?.states?.active\n\n if ((index === lastItemIndex && isFirstItemActive) || isNextItemActive) {\n return 'left'\n } else if ((index === 0 && isLastItemActive) || isPrevItemActive) {\n return 'right'\n }\n return false\n }\n\n function handleMouseEnter() {\n hover.value = true\n if (props.pauseOnHover) {\n pauseTimer()\n }\n }\n\n function handleMouseLeave() {\n hover.value = false\n startTimer()\n }\n\n function handleButtonEnter(arrow: 'left' | 'right') {\n if (unref(isVertical)) return\n items.value.forEach((item, index) => {\n if (arrow === itemInStage(item, index)) {\n item.states.hover = true\n }\n })\n }\n\n function handleButtonLeave() {\n if (unref(isVertical)) return\n items.value.forEach((item) => {\n item.states.hover = false\n })\n }\n\n function handleIndicatorClick(index: number) {\n activeIndex.value = index\n }\n\n function handleIndicatorHover(index: number) {\n if (props.trigger === 'hover' && index !== activeIndex.value) {\n activeIndex.value = index\n }\n }\n\n function prev() {\n setActiveItem(activeIndex.value - 1)\n }\n\n function next() {\n setActiveItem(activeIndex.value + 1)\n }\n\n function resetTimer() {\n pauseTimer()\n if (!props.pauseOnHover) startTimer()\n }\n\n function setContainerHeight(height: number) {\n if (props.height !== 'auto') return\n containerHeight.value = height\n }\n\n function PlaceholderItem() {\n // fix: https://github.com/element-plus/element-plus/issues/12139\n const defaultSlots = slots.default?.()\n if (!defaultSlots) return null\n\n const flatSlots = flattedChildren(defaultSlots)\n\n const normalizeSlots = flatSlots.filter((slot) => {\n return isVNode(slot) && (slot.type as any).name === CAROUSEL_ITEM_NAME\n })\n\n if (normalizeSlots?.length === 2 && props.loop && !isCardType.value) {\n isItemsTwoLength.value = true\n return normalizeSlots\n }\n isItemsTwoLength.value = false\n return null\n }\n\n // watch\n watch(\n () => activeIndex.value,\n (current, prev) => {\n resetItemPosition(prev)\n if (isItemsTwoLength.value) {\n current = current % 2\n prev = prev % 2\n }\n if (prev > -1) {\n emit(CHANGE_EVENT, current, prev)\n }\n }\n )\n\n const exposeActiveIndex = computed({\n get: () => {\n return isItemsTwoLength.value ? activeIndex.value % 2 : activeIndex.value\n },\n set: (value) => (activeIndex.value = value),\n })\n\n watch(\n () => props.autoplay,\n (autoplay) => {\n autoplay ? startTimer() : pauseTimer()\n }\n )\n watch(\n () => props.loop,\n () => {\n setActiveItem(activeIndex.value)\n }\n )\n\n watch(\n () => props.interval,\n () => {\n resetTimer()\n }\n )\n\n const resizeObserver = shallowRef>()\n // lifecycle\n onMounted(() => {\n watch(\n () => items.value,\n () => {\n if (items.value.length > 0) setActiveItem(props.initialIndex)\n },\n {\n immediate: true,\n }\n )\n\n resizeObserver.value = useResizeObserver(root.value, () => {\n resetItemPosition()\n })\n startTimer()\n })\n\n onBeforeUnmount(() => {\n pauseTimer()\n if (root.value && resizeObserver.value) resizeObserver.value.stop()\n })\n\n // provide\n provide(carouselContextKey, {\n root,\n isCardType,\n isVertical,\n items,\n loop: props.loop,\n cardScale: props.cardScale,\n addItem,\n removeItem,\n setActiveItem,\n setContainerHeight,\n })\n\n return {\n root,\n activeIndex,\n exposeActiveIndex,\n arrowDisplay,\n hasLabel,\n hover,\n isCardType,\n items,\n isVertical,\n containerStyle,\n isItemsTwoLength,\n handleButtonEnter,\n handleButtonLeave,\n handleIndicatorClick,\n handleMouseEnter,\n handleMouseLeave,\n setActiveItem,\n prev,\n next,\n PlaceholderItem,\n isTwoLengthShow,\n ItemsSorter,\n throttledArrowClick,\n throttledIndicatorHover,\n }\n}\n","\n\n\n","import { buildProps } from '@element-plus/utils'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\n\nexport const carouselItemProps = buildProps({\n /**\n * @description name of the item, can be used in `setActiveItem`\n */\n name: { type: String, default: '' },\n /**\n * @description text content for the corresponding indicator\n */\n label: {\n type: [String, Number],\n default: '',\n },\n} as const)\n\nexport type CarouselItemProps = ExtractPropTypes\nexport type CarouselItemPropsPublic = __ExtractPublicPropTypes<\n typeof carouselItemProps\n>\n","import {\n getCurrentInstance,\n inject,\n onBeforeUnmount,\n reactive,\n ref,\n unref,\n} from 'vue'\nimport { debugWarn, isUndefined } from '@element-plus/utils'\nimport { CAROUSEL_ITEM_NAME, carouselContextKey } from './constants'\n\nimport type { CarouselItemProps } from './carousel-item'\n\nexport const useCarouselItem = (props: CarouselItemProps) => {\n const carouselContext = inject(carouselContextKey)!\n // instance\n const instance = getCurrentInstance()!\n if (!carouselContext) {\n debugWarn(\n CAROUSEL_ITEM_NAME,\n 'usage: '\n )\n }\n\n if (!instance) {\n debugWarn(\n CAROUSEL_ITEM_NAME,\n 'compositional hook can only be invoked inside setups'\n )\n }\n\n const carouselItemRef = ref()\n const hover = ref(false)\n const translate = ref(0)\n const scale = ref(1)\n const active = ref(false)\n const ready = ref(false)\n const inStage = ref(false)\n const animating = ref(false)\n\n // computed\n const { isCardType, isVertical, cardScale } = carouselContext\n\n // methods\n\n function processIndex(index: number, activeIndex: number, length: number) {\n const lastItemIndex = length - 1\n const prevItemIndex = activeIndex - 1\n const nextItemIndex = activeIndex + 1\n const halfItemIndex = length / 2\n\n if (activeIndex === 0 && index === lastItemIndex) {\n return -1\n } else if (activeIndex === lastItemIndex && index === 0) {\n return length\n } else if (index < prevItemIndex && activeIndex - index >= halfItemIndex) {\n return length + 1\n } else if (index > nextItemIndex && index - activeIndex >= halfItemIndex) {\n return -2\n }\n return index\n }\n\n function calcCardTranslate(index: number, activeIndex: number) {\n const parentWidth = unref(isVertical)\n ? carouselContext.root.value?.offsetHeight || 0\n : carouselContext.root.value?.offsetWidth || 0\n\n if (inStage.value) {\n return (parentWidth * ((2 - cardScale) * (index - activeIndex) + 1)) / 4\n } else if (index < activeIndex) {\n return (-(1 + cardScale) * parentWidth) / 4\n } else {\n return ((3 + cardScale) * parentWidth) / 4\n }\n }\n\n function calcTranslate(\n index: number,\n activeIndex: number,\n isVertical: boolean\n ) {\n const rootEl = carouselContext.root.value\n if (!rootEl) return 0\n\n const distance =\n (isVertical ? rootEl.offsetHeight : rootEl.offsetWidth) || 0\n return distance * (index - activeIndex)\n }\n\n const translateItem = (\n index: number,\n activeIndex: number,\n oldIndex?: number\n ) => {\n const _isCardType = unref(isCardType)\n const carouselItemLength = carouselContext.items.value.length ?? Number.NaN\n\n const isActive = index === activeIndex\n if (!_isCardType && !isUndefined(oldIndex)) {\n animating.value = isActive || index === oldIndex\n }\n\n if (!isActive && carouselItemLength > 2 && carouselContext.loop) {\n index = processIndex(index, activeIndex, carouselItemLength)\n }\n\n const _isVertical = unref(isVertical)\n active.value = isActive\n\n if (_isCardType) {\n inStage.value = Math.round(Math.abs(index - activeIndex)) <= 1\n translate.value = calcCardTranslate(index, activeIndex)\n scale.value = unref(active) ? 1 : cardScale\n } else {\n translate.value = calcTranslate(index, activeIndex, _isVertical)\n }\n\n ready.value = true\n\n if (isActive && carouselItemRef.value) {\n carouselContext.setContainerHeight(carouselItemRef.value.offsetHeight)\n }\n }\n\n function handleItemClick() {\n if (carouselContext && unref(isCardType)) {\n const index = carouselContext.items.value.findIndex(\n ({ uid }) => uid === instance.uid\n )\n carouselContext.setActiveItem(index)\n }\n }\n\n const carouselItemContext = {\n props,\n states: reactive({\n hover,\n translate,\n scale,\n active,\n ready,\n inStage,\n animating,\n }),\n uid: instance.uid,\n getVnode: () => instance.vnode,\n translateItem,\n }\n\n carouselContext.addItem(carouselItemContext)\n\n onBeforeUnmount(() => {\n carouselContext.removeItem(carouselItemContext)\n })\n\n return {\n carouselItemRef,\n active,\n animating,\n hover,\n inStage,\n isVertical,\n translate,\n isCardType,\n scale,\n ready,\n handleItemClick,\n }\n}\n","\n\n\n","import { withInstall, withNoopInstall } from '@element-plus/utils'\nimport Carousel from './src/carousel.vue'\nimport CarouselItem from './src/carousel-item.vue'\n\nimport type { SFCWithInstall } from '@element-plus/utils'\n\nexport const ElCarousel: SFCWithInstall & {\n CarouselItem: typeof CarouselItem\n} = withInstall(Carousel, {\n CarouselItem,\n})\n\nexport default ElCarousel\n\nexport const ElCarouselItem: SFCWithInstall =\n withNoopInstall(CarouselItem)\n\nexport * from './src/carousel'\nexport * from './src/carousel-item'\nexport * from './src/constants'\n\nexport type { CarouselInstance, CarouselItemInstance } from './src/instance'\n","import baseFlatten from './_baseFlatten.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\nfunction flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n}\n\nexport default flattenDeep;\n","import type { InjectionKey, VNode } from 'vue'\nimport type { Nullable } from '@element-plus/utils'\nimport type { default as CascaderNode } from './node'\n\nexport type { CascaderNode, Nullable }\nexport type CascaderNodeValue = string | number | Record\nexport type CascaderNodePathValue = CascaderNodeValue[]\nexport type CascaderValue =\n | CascaderNodeValue\n | CascaderNodePathValue\n | (CascaderNodeValue | CascaderNodePathValue)[]\nexport type CascaderConfig = Required\nexport type ExpandTrigger = 'click' | 'hover'\nexport type isDisabled = (data: CascaderOption, node: CascaderNode) => boolean\nexport type isLeaf = (data: CascaderOption, node: CascaderNode) => boolean\nexport type Resolve = (dataList?: CascaderOption[]) => void\nexport type LazyLoad = (\n node: CascaderNode,\n resolve: Resolve,\n reject: () => void\n) => void\nexport interface RenderLabelProps {\n node: CascaderNode\n data: CascaderOption\n}\nexport type RenderLabel = (props: RenderLabelProps) => VNode | VNode[]\nexport interface CascaderOption extends Record {\n label?: string\n value?: CascaderNodeValue\n children?: CascaderOption[]\n disabled?: boolean\n leaf?: boolean\n}\n\nexport interface CascaderProps {\n expandTrigger?: ExpandTrigger\n multiple?: boolean\n checkStrictly?: boolean\n emitPath?: boolean\n lazy?: boolean\n lazyLoad?: LazyLoad\n value?: string\n label?: string\n children?: string\n disabled?: string | isDisabled\n leaf?: string | isLeaf\n hoverThreshold?: number\n checkOnClickNode?: boolean\n checkOnClickLeaf?: boolean\n showPrefix?: boolean\n}\n\nexport interface Tag {\n node?: CascaderNode\n key: number\n text: string\n hitState?: boolean\n closable: boolean\n}\n\nexport interface ElCascaderPanelContext {\n config: CascaderConfig\n expandingNode: CascaderNode | undefined\n checkedNodes: CascaderNode[]\n isHoverMenu: boolean\n initialLoaded: boolean\n renderLabelFn: RenderLabel\n lazyLoad: (\n node?: CascaderNode,\n cb?: (dataList: CascaderOption[]) => void\n ) => void\n expandNode: (node: CascaderNode, silent?: boolean) => void\n handleCheckChange: (\n node: CascaderNode,\n checked: boolean,\n emitClose?: boolean\n ) => void\n}\n\nexport const CASCADER_PANEL_INJECTION_KEY: InjectionKey =\n Symbol()\n","import { Comment, defineComponent, inject } from 'vue'\nimport { useNamespace } from '@element-plus/hooks'\nimport { isArray } from '@element-plus/utils'\nimport { CASCADER_PANEL_INJECTION_KEY } from './types'\n\nimport type { PropType, VNode } from 'vue'\nimport type { CascaderNode } from './types'\n\nfunction isVNodeEmpty(vnodes?: VNode[] | VNode) {\n return !!(isArray(vnodes)\n ? vnodes.every(({ type }) => type === Comment)\n : vnodes?.type === Comment)\n}\n\nexport default defineComponent({\n name: 'NodeContent',\n props: {\n node: {\n type: Object as PropType,\n required: true,\n },\n },\n setup(props) {\n const ns = useNamespace('cascader-node')\n const { renderLabelFn } = inject(CASCADER_PANEL_INJECTION_KEY)!\n const { node } = props\n const { data, label: nodeLabel } = node\n\n const label = () => {\n const renderLabel = renderLabelFn?.({ node, data })\n return isVNodeEmpty(renderLabel) ? nodeLabel : (renderLabel ?? nodeLabel)\n }\n return () => {label()}\n },\n})\n","\n\n\n","\n\n\n","import { isArray, isEmpty, isFunction, isUndefined } from '@element-plus/utils'\n\nimport type {\n CascaderConfig,\n CascaderNodePathValue,\n CascaderNodeValue,\n CascaderOption,\n} from './types'\n\ntype ChildrenData = CascaderOption[] | undefined\n\nlet uid = 0\n\nconst calculatePathNodes = (node: Node) => {\n const nodes = [node]\n let { parent } = node\n\n while (parent) {\n nodes.unshift(parent)\n parent = parent.parent\n }\n\n return nodes\n}\n\nclass Node {\n readonly uid: number = uid++\n readonly level: number\n readonly value: CascaderNodeValue\n readonly label: string\n readonly pathNodes: Node[]\n readonly pathValues: CascaderNodePathValue\n readonly pathLabels: string[]\n\n childrenData: ChildrenData\n children: Node[]\n text: string\n loaded: boolean\n /**\n * Is it checked\n *\n * @default false\n */\n checked = false\n /**\n * Used to indicate the intermediate state of unchecked and fully checked child nodes\n *\n * @default false\n */\n indeterminate = false\n /**\n * Loading Status\n *\n * @default false\n */\n loading = false\n\n constructor(\n readonly data: CascaderOption,\n readonly config: CascaderConfig,\n readonly parent?: Node,\n readonly root = false\n ) {\n const { value: valueKey, label: labelKey, children: childrenKey } = config\n\n const childrenData = data[childrenKey] as ChildrenData\n const pathNodes = calculatePathNodes(this)\n\n this.level = root ? 0 : parent ? parent.level + 1 : 1\n this.value = data[valueKey] as CascaderNodeValue\n this.label = data[labelKey] as string\n this.pathNodes = pathNodes\n this.pathValues = pathNodes.map((node) => node.value)\n this.pathLabels = pathNodes.map((node) => node.label)\n this.childrenData = childrenData\n this.children = (childrenData || []).map(\n (child) => new Node(child, config, this)\n )\n this.loaded = !config.lazy || this.isLeaf || !isEmpty(childrenData)\n this.text = ''\n }\n\n get isDisabled(): boolean {\n const { data, parent, config } = this\n const { disabled, checkStrictly } = config\n const isDisabled = isFunction(disabled)\n ? disabled(data, this)\n : !!data[disabled]\n return isDisabled || (!checkStrictly && !!parent?.isDisabled)\n }\n\n get isLeaf(): boolean {\n const { data, config, childrenData, loaded } = this\n const { lazy, leaf } = config\n const isLeaf = isFunction(leaf) ? leaf(data, this) : data[leaf]\n\n return isUndefined(isLeaf)\n ? lazy && !loaded\n ? false\n : !(isArray(childrenData) && childrenData.length)\n : !!isLeaf\n }\n\n get valueByOption() {\n return this.config.emitPath ? this.pathValues : this.value\n }\n\n appendChild(childData: CascaderOption) {\n const { childrenData, children } = this\n const node = new Node(childData, this.config, this)\n\n if (isArray(childrenData)) {\n childrenData.push(childData)\n } else {\n this.childrenData = [childData]\n }\n\n children.push(node)\n\n return node\n }\n\n calcText(allLevels: boolean, separator: string) {\n const text = allLevels ? this.pathLabels.join(separator) : this.label\n this.text = text\n return text\n }\n\n broadcast(checked: boolean) {\n this.children.forEach((child) => {\n if (child) {\n // bottom up\n child.broadcast(checked)\n child.onParentCheck?.(checked)\n }\n })\n }\n\n emit() {\n const { parent } = this\n if (parent) {\n parent.onChildCheck?.()\n parent.emit()\n }\n }\n\n onParentCheck(checked: boolean) {\n if (!this.isDisabled) {\n this.setCheckState(checked)\n }\n }\n\n onChildCheck() {\n const { children } = this\n const validChildren = children.filter((child) => !child.isDisabled)\n const checked = validChildren.length\n ? validChildren.every((child) => child.checked)\n : false\n\n this.setCheckState(checked)\n }\n\n setCheckState(checked: boolean) {\n const totalNum = this.children.length\n const checkedNum = this.children.reduce((c, p) => {\n const num = p.checked ? 1 : p.indeterminate ? 0.5 : 0\n return c + num\n }, 0)\n\n this.checked =\n this.loaded &&\n this.children\n .filter((child) => !child.isDisabled)\n .every((child) => child.loaded && child.checked) &&\n checked\n this.indeterminate =\n this.loaded && checkedNum !== totalNum && checkedNum > 0\n }\n\n doCheck(checked: boolean) {\n if (this.checked === checked) return\n\n const { checkStrictly, multiple } = this.config\n\n if (checkStrictly || !multiple) {\n this.checked = checked\n } else {\n // bottom up to unify the calculation of the indeterminate state\n this.broadcast(checked)\n this.setCheckState(checked)\n this.emit()\n }\n }\n}\n\nexport default Node\n","import { isEqual } from 'lodash-unified'\nimport { isPropAbsent } from '@element-plus/utils'\nimport Node from './node'\n\nimport type { Nullable } from '@element-plus/utils'\nimport type {\n CascaderConfig,\n CascaderNodePathValue,\n CascaderNodeValue,\n CascaderOption,\n} from './types'\n\nconst flatNodes = (nodes: Node[], leafOnly: boolean) => {\n return nodes.reduce((res, node) => {\n if (node.isLeaf) {\n res.push(node)\n } else {\n !leafOnly && res.push(node)\n res = res.concat(flatNodes(node.children, leafOnly))\n }\n return res\n }, [] as Node[])\n}\n\nexport default class Store {\n readonly nodes: Node[]\n readonly allNodes: Node[]\n readonly leafNodes: Node[]\n\n constructor(\n data: CascaderOption[],\n readonly config: CascaderConfig\n ) {\n const nodes = (data || []).map(\n (nodeData) => new Node(nodeData, this.config)\n )\n this.nodes = nodes\n this.allNodes = flatNodes(nodes, false)\n this.leafNodes = flatNodes(nodes, true)\n }\n\n getNodes() {\n return this.nodes\n }\n\n getFlattedNodes(leafOnly: boolean) {\n return leafOnly ? this.leafNodes : this.allNodes\n }\n\n appendNode(nodeData: CascaderOption, parentNode?: Node) {\n const node = parentNode\n ? parentNode.appendChild(nodeData)\n : new Node(nodeData, this.config)\n\n if (!parentNode) this.nodes.push(node)\n\n this.appendAllNodesAndLeafNodes(node)\n }\n\n appendNodes(nodeDataList: CascaderOption[], parentNode: Node) {\n if (nodeDataList.length > 0) {\n nodeDataList.forEach((nodeData) => this.appendNode(nodeData, parentNode))\n } else {\n parentNode && parentNode.isLeaf && this.leafNodes.push(parentNode)\n }\n }\n\n appendAllNodesAndLeafNodes(node: Node) {\n this.allNodes.push(node)\n node.isLeaf && this.leafNodes.push(node)\n if (node.children) {\n node.children.forEach((subNode) => {\n this.appendAllNodesAndLeafNodes(subNode)\n })\n }\n }\n\n // when checkStrictly, leaf node first\n getNodeByValue(\n value: CascaderNodeValue | CascaderNodePathValue,\n leafOnly = false\n ): Nullable {\n if (isPropAbsent(value)) return null\n\n const node = this.getFlattedNodes(leafOnly).find(\n (node) => isEqual(node.value, value) || isEqual(node.pathValues, value)\n )\n\n return node || null\n }\n\n getSameNode(node: Node): Nullable {\n if (!node) return null\n\n const node_ = this.getFlattedNodes(false).find(\n ({ value, level }) => isEqual(node.value, value) && node.level === level\n )\n\n return node_ || null\n }\n}\n","import { computed } from 'vue'\nimport { NOOP, buildProps, definePropType } from '@element-plus/utils'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@element-plus/constants'\n\nimport type { PropType } from 'vue'\nimport type {\n CascaderConfig,\n CascaderNodePathValue,\n CascaderOption,\n CascaderProps,\n CascaderValue,\n RenderLabel,\n} from './types'\n\nexport const CommonProps = buildProps({\n /**\n * @description specify which key of node object is used as the node's value\n */\n modelValue: {\n type: definePropType([Number, String, Array, Object]),\n },\n /**\n * @description data of the options, the key of `value` and `label` can be customize by `CascaderProps`.\n */\n options: {\n type: definePropType(Array),\n default: () => [] as CascaderOption[],\n },\n /**\n * @description configuration options, see the following `CascaderProps` table.\n */\n props: {\n type: definePropType(Object),\n default: () => ({}) as CascaderProps,\n },\n} as const)\n\nexport const DefaultProps: CascaderConfig = {\n /**\n * @description trigger mode of expanding options\n */\n expandTrigger: 'click',\n /**\n * @description whether multiple selection is enabled\n */\n multiple: false,\n /**\n * @description whether checked state of a node not affects its parent and child nodes\n */\n checkStrictly: false, // whether all nodes can be selected\n /**\n * @description when checked nodes change, whether to emit an array of node's path, if false, only emit the value of node.\n */\n emitPath: true, // wether to emit an array of all levels value in which node is located\n /**\n * @description whether to dynamic load child nodes, use with `lazyload` attribute\n */\n lazy: false,\n /**\n * @description method for loading child nodes data, only works when `lazy` is true\n */\n lazyLoad: NOOP,\n /**\n * @description specify which key of node object is used as the node's value\n */\n value: 'value',\n /**\n * @description specify which key of node object is used as the node's label\n */\n label: 'label',\n /**\n * @description specify which key of node object is used as the node's children\n */\n children: 'children',\n /**\n * @description specify which key of node object is used as the node's leaf\n */\n leaf: 'leaf',\n /**\n * @description specify which key of node object is used as the node's disabled\n */\n disabled: 'disabled',\n /**\n * @description hover threshold of expanding options\n */\n hoverThreshold: 500,\n /**\n * @description whether to check or uncheck node when clicking on the node\n */\n checkOnClickNode: false,\n /**\n * @description whether to check or uncheck node when clicking on leaf node (last children).\n */\n checkOnClickLeaf: true,\n /**\n * @description whether to show the radio or checkbox prefix\n */\n showPrefix: true,\n}\n\nexport const cascaderPanelProps = buildProps({\n ...CommonProps,\n border: {\n type: Boolean,\n default: true,\n },\n renderLabel: {\n type: Function as PropType,\n },\n})\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst emitChangeFn = (value: CascaderValue | undefined | null) => true\n\nexport const cascaderPanelEmits = {\n [UPDATE_MODEL_EVENT]: emitChangeFn,\n [CHANGE_EVENT]: emitChangeFn,\n close: () => true,\n 'expand-change': (value: CascaderNodePathValue) => value,\n}\n\nexport const useCascaderConfig = (props: { props: CascaderProps }) => {\n return computed(() => ({\n ...DefaultProps,\n ...props.props,\n }))\n}\n","import { isLeaf } from '@element-plus/utils'\n\nimport type { CascaderNode } from './types'\n\nexport const getMenuIndex = (el: HTMLElement) => {\n if (!el) return 0\n const pieces = el.id.split('-')\n return Number(pieces[pieces.length - 2])\n}\n\nexport const checkNode = (el: HTMLElement) => {\n if (!el) return\n\n const input = el.querySelector('input')\n if (input) {\n input.click()\n } else if (isLeaf(el)) {\n el.click()\n }\n}\n\nexport const sortByOriginalOrder = (\n oldNodes: CascaderNode[],\n newNodes: CascaderNode[]\n) => {\n const newNodesCopy = newNodes.slice(0)\n const newIds = newNodesCopy.map((node) => node.uid)\n const res = oldNodes.reduce((acc, item) => {\n const index = newIds.indexOf(item.uid)\n if (index > -1) {\n acc.push(item)\n newNodesCopy.splice(index, 1)\n newIds.splice(index, 1)\n }\n return acc\n }, [] as CascaderNode[])\n\n res.push(...newNodesCopy)\n\n return res\n}\n","\n\n\n","import { withInstall } from '@element-plus/utils'\nimport CascaderPanel from './src/index.vue'\n\nimport type { SFCWithInstall } from '@element-plus/utils'\n\nexport const ElCascaderPanel: SFCWithInstall =\n withInstall(CascaderPanel)\n\nexport default ElCascaderPanel\nexport * from './src/types'\nexport * from './src/config'\nexport * from './src/instance'\n","import { placements } from '@popperjs/core'\nimport { CommonProps } from '@element-plus/components/cascader-panel'\nimport {\n buildProps,\n definePropType,\n iconPropType,\n isBoolean,\n} from '@element-plus/utils'\nimport { useEmptyValuesProps, useSizeProp } from '@element-plus/hooks'\nimport { useTooltipContentProps } from '@element-plus/components/tooltip'\nimport { tagProps } from '@element-plus/components/tag'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport { CircleClose } from '@element-plus/icons-vue'\n\nimport type {\n CascaderNode,\n CascaderValue,\n} from '@element-plus/components/cascader-panel'\nimport type { Placement, PopperEffect } from '@element-plus/components/popper'\n\nexport const cascaderProps = buildProps({\n ...CommonProps,\n /**\n * @description size of input\n */\n size: useSizeProp,\n /**\n * @description placeholder of input\n */\n placeholder: String,\n /**\n * @description whether Cascader is disabled\n */\n disabled: {\n type: Boolean,\n default: undefined,\n },\n /**\n * @description whether selected value can be cleared\n */\n clearable: Boolean,\n /**\n * @description custom clear icon component\n */\n clearIcon: {\n type: iconPropType,\n default: CircleClose,\n },\n /**\n * @description whether the options can be searched\n */\n filterable: Boolean,\n /**\n * @description customize search logic, the first parameter is `node`, the second is `keyword`, and need return a boolean value indicating whether it hits.\n */\n filterMethod: {\n type: definePropType<(node: CascaderNode, keyword: string) => boolean>(\n Function\n ),\n default: (node: CascaderNode, keyword: string) =>\n node.text.includes(keyword),\n },\n /**\n * @description option label separator\n */\n separator: {\n type: String,\n default: ' / ',\n },\n /**\n * @description whether to display all levels of the selected value in the input\n */\n showAllLevels: {\n type: Boolean,\n default: true,\n },\n /**\n * @description whether to collapse tags in multiple selection mode\n */\n collapseTags: Boolean,\n /**\n * @description The max tags number to be shown. To use this, collapse-tags must be true\n */\n maxCollapseTags: {\n type: Number,\n default: 1,\n },\n /**\n * @description whether show all selected tags when mouse hover text of collapse-tags. To use this, collapse-tags must be true\n */\n collapseTagsTooltip: Boolean,\n /**\n * @description The max height of collapse tags tooltip, in pixels. To use this, collapse-tags-tooltip must be true\n */\n maxCollapseTagsTooltipHeight: {\n type: [String, Number],\n },\n /**\n * @description debounce delay when typing filter keyword, in milliseconds\n */\n debounce: {\n type: Number,\n default: 300,\n },\n /**\n * @description hook function before filtering with the value to be filtered as its parameter. If `false` is returned or a `Promise` is returned and then is rejected, filtering will be aborted\n */\n beforeFilter: {\n type: definePropType<(value: string) => boolean | Promise>(Function),\n default: () => true,\n },\n /**\n * @description position of dropdown\n */\n placement: {\n type: definePropType(String),\n values: placements,\n default: 'bottom-start',\n },\n /**\n * @description list of possible positions for dropdown\n */\n fallbackPlacements: {\n type: definePropType(Array),\n default: ['bottom-start', 'bottom', 'top-start', 'top', 'right', 'left'],\n },\n /**\n * @description custom class name for Cascader's dropdown\n */\n popperClass: useTooltipContentProps.popperClass,\n /**\n * @description custom style for Cascader's dropdown\n */\n popperStyle: useTooltipContentProps.popperStyle,\n /**\n * @description whether cascader popup is teleported\n */\n teleported: useTooltipContentProps.teleported,\n /**\n * @description tooltip theme, built-in theme: `dark` / `light`\n */\n effect: {\n type: definePropType(String),\n default: 'light',\n },\n /**\n * @description tag type\n */\n\n tagType: { ...tagProps.type, default: 'info' },\n /**\n * @description tag effect\n */\n tagEffect: { ...tagProps.effect, default: 'light' },\n /**\n * @description whether to trigger form validation\n */\n validateEvent: {\n type: Boolean,\n default: true,\n },\n /**\n * @description when dropdown is inactive and `persistent` is `false`, dropdown will be destroyed\n */\n persistent: {\n type: Boolean,\n default: true,\n },\n /**\n * @description Use `parent` when you want things tidy (like \"Entire Collection\" instead of listing 100 items)\n * Use `child` when every single item matters (like important settings)\n */\n showCheckedStrategy: {\n type: String,\n values: ['parent', 'child'],\n default: 'child',\n },\n /**\n * @description whether to check or uncheck node when clicking on the node\n */\n checkOnClickNode: Boolean,\n /**\n * @description whether to show the radio or checkbox prefix\n */\n showPrefix: {\n type: Boolean,\n default: true,\n },\n ...useEmptyValuesProps,\n})\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst emitChangeFn = (value: CascaderValue | null | undefined) => true\n\nexport const cascaderEmits = {\n [UPDATE_MODEL_EVENT]: emitChangeFn,\n [CHANGE_EVENT]: emitChangeFn,\n focus: (evt: FocusEvent) => evt instanceof FocusEvent,\n blur: (evt: FocusEvent) => evt instanceof FocusEvent,\n clear: () => true,\n visibleChange: (val: boolean) => isBoolean(val),\n expandChange: (val: CascaderValue) => !!val,\n removeTag: (val: CascaderNode['valueByOption']) => !!val,\n}\n\n// Type name is taken(cascader-panel/src/node), needs discussion\n// export type CascaderProps = ExtractPropTypes\n\nexport type CascaderEmits = typeof cascaderEmits\n","\n\n\n","import { withInstall } from '@element-plus/utils'\nimport Cascader from './src/cascader.vue'\n\nimport type { SFCWithInstall } from '@element-plus/utils'\n\nexport const ElCascader: SFCWithInstall = withInstall(Cascader)\n\nexport default ElCascader\n\nexport * from './src/cascader'\nexport * from './src/instances'\n","import { buildProps, isBoolean } from '@element-plus/utils'\nimport { CHANGE_EVENT } from '@element-plus/constants'\n\nimport type CheckTag from './check-tag.vue'\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\n\nexport const checkTagProps = buildProps({\n /**\n * @description is checked\n */\n checked: Boolean,\n /**\n * @description whether the check-tag is disabled\n */\n disabled: Boolean,\n /**\n * @description type of Tag\n */\n type: {\n type: String,\n values: ['primary', 'success', 'info', 'warning', 'danger'],\n default: 'primary',\n },\n} as const)\nexport type CheckTagProps = ExtractPropTypes\nexport type CheckTagPropsPublic = __ExtractPublicPropTypes\n\nexport const checkTagEmits = {\n 'update:checked': (value: boolean) => isBoolean(value),\n [CHANGE_EVENT]: (value: boolean) => isBoolean(value),\n}\nexport type CheckTagEmits = typeof checkTagEmits\n\nexport type CheckTagInstance = InstanceType & unknown\n","\n\n\n","import { withInstall } from '@element-plus/utils'\nimport CheckTag from './src/check-tag.vue'\n\nimport type { SFCWithInstall } from '@element-plus/utils'\n\nexport const ElCheckTag: SFCWithInstall = withInstall(CheckTag)\nexport default ElCheckTag\n\nexport * from './src/check-tag'\n","import { buildProps, definePropType, mutable } from '@element-plus/utils'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\nimport type Col from './col.vue'\n\nexport type ColSizeObject = {\n span?: number\n offset?: number\n pull?: number\n push?: number\n}\nexport type ColSize = number | ColSizeObject\n\nexport const colProps = buildProps({\n /**\n * @description custom element tag\n */\n tag: {\n type: String,\n default: 'div',\n },\n /**\n * @description number of column the grid spans\n */\n span: {\n type: Number,\n default: 24,\n },\n /**\n * @description number of spacing on the left side of the grid\n */\n offset: {\n type: Number,\n default: 0,\n },\n /**\n * @description number of columns that grid moves to the left\n */\n pull: {\n type: Number,\n default: 0,\n },\n /**\n * @description number of columns that grid moves to the right\n */\n push: {\n type: Number,\n default: 0,\n },\n /**\n * @description `<768px` Responsive columns or column props object\n */\n xs: {\n type: definePropType([Number, Object]),\n default: () => mutable({} as const),\n },\n /**\n * @description `≥768px` Responsive columns or column props object\n */\n sm: {\n type: definePropType([Number, Object]),\n default: () => mutable({} as const),\n },\n /**\n * @description `≥992px` Responsive columns or column props object\n */\n md: {\n type: definePropType([Number, Object]),\n default: () => mutable({} as const),\n },\n /**\n * @description `≥1200px` Responsive columns or column props object\n */\n lg: {\n type: definePropType([Number, Object]),\n default: () => mutable({} as const),\n },\n /**\n * @description `≥1920px` Responsive columns or column props object\n */\n xl: {\n type: definePropType([Number, Object]),\n default: () => mutable({} as const),\n },\n} as const)\nexport type ColProps = ExtractPropTypes\nexport type ColPropsPublic = __ExtractPublicPropTypes\nexport type ColInstance = InstanceType & unknown\n","import type { ComputedRef, InjectionKey } from 'vue'\n\ninterface RowContext {\n gutter: ComputedRef\n}\n\nexport const rowContextKey: InjectionKey = Symbol('rowContextKey')\n","\n\n\n","import { withInstall } from '@element-plus/utils'\nimport Col from './src/col.vue'\n\nimport type { SFCWithInstall } from '@element-plus/utils'\n\nexport const ElCol: SFCWithInstall = withInstall(Col)\nexport default ElCol\n\nexport * from './src/col'\n","import {\n buildProps,\n definePropType,\n isArray,\n isNumber,\n isString,\n mutable,\n} from '@element-plus/utils'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@element-plus/constants'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\nimport type { Arrayable, Awaitable } from '@element-plus/utils'\n\nexport type CollapseActiveName = string | number\nexport type CollapseModelValue = Arrayable\n\nexport type CollapseIconPositionType = 'left' | 'right'\n\nexport const emitChangeFn = (value: CollapseModelValue) =>\n isNumber(value) || isString(value) || isArray(value)\n\nexport const collapseProps = buildProps({\n /**\n * @description whether to activate accordion mode\n */\n accordion: Boolean,\n /**\n * @description currently active panel, the type is `string` in accordion mode, otherwise it is `array`\n */\n modelValue: {\n type: definePropType([Array, String, Number]),\n default: () => mutable([] as const),\n },\n /**\n * @description set expand icon position\n */\n expandIconPosition: {\n type: definePropType([String]),\n default: 'right',\n },\n /**\n * @description before-collapse hook before the collapse state changes. If `false` is returned or a `Promise` is returned and then is rejected, will stop collapsing\n */\n beforeCollapse: {\n type: definePropType<(name: CollapseActiveName) => Awaitable>(\n Function\n ),\n },\n} as const)\nexport type CollapseProps = ExtractPropTypes\nexport type CollapsePropsPublic = __ExtractPublicPropTypes\n\nexport const collapseEmits = {\n [UPDATE_MODEL_EVENT]: emitChangeFn,\n [CHANGE_EVENT]: emitChangeFn,\n}\nexport type CollapseEmits = typeof collapseEmits\n","import type { InjectionKey, Ref } from 'vue'\nimport type { CollapseActiveName } from './collapse'\n\nexport interface CollapseContext {\n activeNames: Ref\n handleItemClick: (name: CollapseActiveName) => void\n}\n\nexport const collapseContextKey: InjectionKey =\n Symbol('collapseContextKey')\n","import { computed, provide, ref, watch } from 'vue'\nimport {\n debugWarn,\n ensureArray,\n isBoolean,\n isPromise,\n throwError,\n} from '@element-plus/utils'\nimport { useNamespace } from '@element-plus/hooks'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport { collapseContextKey } from './constants'\n\nimport type { SetupContext } from 'vue'\nimport type {\n CollapseActiveName,\n CollapseEmits,\n CollapseProps,\n} from './collapse'\n\nconst SCOPE = 'ElCollapse'\nexport const useCollapse = (\n props: CollapseProps,\n emit: SetupContext['emit']\n) => {\n const activeNames = ref(ensureArray(props.modelValue))\n\n const setActiveNames = (_activeNames: CollapseActiveName[]) => {\n activeNames.value = _activeNames\n const value = props.accordion ? activeNames.value[0] : activeNames.value\n emit(UPDATE_MODEL_EVENT, value)\n emit(CHANGE_EVENT, value)\n }\n\n const handleChange = (name: CollapseActiveName) => {\n if (props.accordion) {\n setActiveNames([activeNames.value[0] === name ? '' : name])\n } else {\n const _activeNames = [...activeNames.value]\n const index = _activeNames.indexOf(name)\n\n if (index > -1) {\n _activeNames.splice(index, 1)\n } else {\n _activeNames.push(name)\n }\n setActiveNames(_activeNames)\n }\n }\n\n const handleItemClick = async (name: CollapseActiveName) => {\n const { beforeCollapse } = props\n if (!beforeCollapse) {\n handleChange(name)\n return\n }\n\n const shouldChange = beforeCollapse(name)\n const isPromiseOrBool = [\n isPromise(shouldChange),\n isBoolean(shouldChange),\n ].includes(true)\n if (!isPromiseOrBool) {\n throwError(\n SCOPE,\n 'beforeCollapse must return type `Promise` or `boolean`'\n )\n }\n\n if (isPromise(shouldChange)) {\n shouldChange\n .then((result) => {\n if (result !== false) {\n handleChange(name)\n }\n })\n .catch((e) => {\n debugWarn(SCOPE, `some error occurred: ${e}`)\n })\n } else if (shouldChange) {\n handleChange(name)\n }\n }\n\n watch(\n () => props.modelValue,\n () => (activeNames.value = ensureArray(props.modelValue)),\n { deep: true }\n )\n\n provide(collapseContextKey, {\n activeNames,\n handleItemClick,\n })\n return {\n activeNames,\n setActiveNames,\n }\n}\n\nexport const useCollapseDOM = (props: CollapseProps) => {\n const ns = useNamespace('collapse')\n\n const rootKls = computed(() => [\n ns.b(),\n ns.b(`icon-position-${props.expandIconPosition}`),\n ])\n\n return {\n rootKls,\n }\n}\n","\n\n\n","import { buildProps, definePropType, iconPropType } from '@element-plus/utils'\nimport { ArrowRight } from '@element-plus/icons-vue'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\nimport type { CollapseActiveName } from './collapse'\n\nexport const collapseItemProps = buildProps({\n /**\n * @description title of the panel\n */\n title: {\n type: String,\n default: '',\n },\n /**\n * @description unique identification of the panel\n */\n name: {\n type: definePropType([String, Number]),\n default: undefined,\n },\n /**\n * @description icon of the collapse item\n */\n icon: {\n type: iconPropType,\n default: ArrowRight,\n },\n /**\n * @description disable the collapse item\n */\n disabled: Boolean,\n} as const)\nexport type CollapseItemProps = ExtractPropTypes\nexport type CollapseItemPropsPublic = __ExtractPublicPropTypes<\n typeof collapseItemProps\n>\n","import { computed, inject, ref, unref } from 'vue'\nimport { useIdInjection, useNamespace } from '@element-plus/hooks'\nimport { collapseContextKey } from './constants'\n\nimport type { CollapseItemProps } from './collapse-item'\n\nexport const useCollapseItem = (props: CollapseItemProps) => {\n const collapse = inject(collapseContextKey)\n const { namespace } = useNamespace('collapse')\n\n const focusing = ref(false)\n const isClick = ref(false)\n const idInjection = useIdInjection()\n const id = computed(() => idInjection.current++)\n const name = computed(() => {\n return (\n props.name ?? `${namespace.value}-id-${idInjection.prefix}-${unref(id)}`\n )\n })\n\n const isActive = computed(() =>\n collapse?.activeNames.value.includes(unref(name))\n )\n\n const handleFocus = () => {\n setTimeout(() => {\n if (!isClick.value) {\n focusing.value = true\n } else {\n isClick.value = false\n }\n }, 50)\n }\n\n const handleHeaderClick = (e: MouseEvent) => {\n if (props.disabled) return\n const target = e.target as HTMLElement\n if (target?.closest('input, textarea, select')) return\n collapse?.handleItemClick(unref(name))\n focusing.value = false\n isClick.value = true\n }\n\n const handleEnterClick = (e: KeyboardEvent) => {\n const target = e.target as HTMLElement\n if (target?.closest('input, textarea, select')) return\n e.preventDefault()\n collapse?.handleItemClick(unref(name))\n }\n\n return {\n focusing,\n id,\n isActive,\n handleFocus,\n handleHeaderClick,\n handleEnterClick,\n }\n}\n\nexport const useCollapseItemDOM = (\n props: CollapseItemProps,\n { focusing, isActive, id }: Partial>\n) => {\n const ns = useNamespace('collapse')\n\n const rootKls = computed(() => [\n ns.b('item'),\n ns.is('active', unref(isActive)),\n ns.is('disabled', props.disabled),\n ])\n const headKls = computed(() => [\n ns.be('item', 'header'),\n ns.is('active', unref(isActive)),\n { focusing: unref(focusing) && !props.disabled },\n ])\n const arrowKls = computed(() => [\n ns.be('item', 'arrow'),\n ns.is('active', unref(isActive)),\n ])\n const itemTitleKls = computed(() => [ns.be('item', 'title')])\n const itemWrapperKls = computed(() => ns.be('item', 'wrap'))\n const itemContentKls = computed(() => ns.be('item', 'content'))\n const scopedContentId = computed(() => ns.b(`content-${unref(id)}`))\n const scopedHeadId = computed(() => ns.b(`head-${unref(id)}`))\n\n return {\n itemTitleKls,\n arrowKls,\n headKls,\n rootKls,\n itemWrapperKls,\n itemContentKls,\n scopedContentId,\n scopedHeadId,\n }\n}\n","\n\n\n","import { withInstall, withNoopInstall } from '@element-plus/utils'\nimport Collapse from './src/collapse.vue'\nimport CollapseItem from './src/collapse-item.vue'\n\nimport type { SFCWithInstall } from '@element-plus/utils'\n\nexport const ElCollapse: SFCWithInstall & {\n CollapseItem: typeof CollapseItem\n} = withInstall(Collapse, {\n CollapseItem,\n})\nexport default ElCollapse\nexport const ElCollapseItem: SFCWithInstall =\n withNoopInstall(CollapseItem)\n\nexport * from './src/collapse'\nexport * from './src/collapse-item'\nexport * from './src/constants'\nexport type { CollapseInstance, CollapseItemInstance } from './src/instance'\n","import { buildProps, definePropType } from '@element-plus/utils'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\nimport type Color from '../utils/color'\n\nexport const alphaSliderProps = buildProps({\n color: {\n type: definePropType(Object),\n required: true,\n },\n vertical: Boolean,\n disabled: Boolean,\n} as const)\nexport const hueSliderProps = alphaSliderProps\n\nexport type AlphaSliderProps = ExtractPropTypes\nexport type AlphaSliderPropsPublic = __ExtractPublicPropTypes<\n typeof alphaSliderProps\n>\nexport type HueSliderEmits = AlphaSliderProps\nexport type HueSliderProps = AlphaSliderPropsPublic\n","import { isClient } from '@element-plus/utils'\n\nlet isDragging = false\n\nexport interface DraggableOptions {\n drag?: (event: MouseEvent | TouchEvent) => void\n start?: (event: MouseEvent | TouchEvent) => void\n end?: (event: MouseEvent | TouchEvent) => void\n}\n\nexport function draggable(element: HTMLElement, options: DraggableOptions) {\n if (!isClient) return\n\n const moveFn = function (event: MouseEvent | TouchEvent) {\n options.drag?.(event)\n }\n\n const upFn = function (event: MouseEvent | TouchEvent) {\n document.removeEventListener('mousemove', moveFn)\n document.removeEventListener('mouseup', upFn)\n document.removeEventListener('touchmove', moveFn)\n document.removeEventListener('touchend', upFn)\n document.onselectstart = null\n document.ondragstart = null\n\n isDragging = false\n\n options.end?.(event)\n }\n\n const downFn = function (event: MouseEvent | TouchEvent) {\n if (isDragging) return\n document.onselectstart = () => false\n document.ondragstart = () => false\n document.addEventListener('mousemove', moveFn)\n document.addEventListener('mouseup', upFn)\n document.addEventListener('touchmove', moveFn)\n document.addEventListener('touchend', upFn)\n\n isDragging = true\n\n options.start?.(event)\n }\n\n element.addEventListener('mousedown', downFn)\n element.addEventListener('touchstart', downFn, { passive: false })\n}\n","import { isClient } from '../browser'\n\nexport const isInContainer = (\n el?: Element,\n container?: Element | Window\n): boolean => {\n if (!isClient || !el || !container) return false\n\n const elRect = el.getBoundingClientRect()\n\n let containerRect: Pick\n if (container instanceof Element) {\n containerRect = container.getBoundingClientRect()\n } else {\n containerRect = {\n top: 0,\n right: window.innerWidth,\n bottom: window.innerHeight,\n left: 0,\n }\n }\n return (\n elRect.top < containerRect.bottom &&\n elRect.bottom > containerRect.top &&\n elRect.right > containerRect.left &&\n elRect.left < containerRect.right\n )\n}\n\nexport const getOffsetTop = (el: HTMLElement) => {\n let offset = 0\n let parent = el\n\n while (parent) {\n offset += parent.offsetTop\n parent = parent.offsetParent as HTMLElement\n }\n\n return offset\n}\n\nexport const getOffsetTopDistance = (\n el: HTMLElement,\n containerEl: HTMLElement\n) => {\n return Math.abs(getOffsetTop(el) - getOffsetTop(containerEl))\n}\n\nexport const getClientXY = (event: MouseEvent | TouchEvent) => {\n let clientX: number\n let clientY: number\n if (event.type === 'touchend') {\n clientY = (event as TouchEvent).changedTouches[0].clientY\n clientX = (event as TouchEvent).changedTouches[0].clientX\n } else if (event.type.startsWith('touch')) {\n clientY = (event as TouchEvent).touches[0].clientY\n clientX = (event as TouchEvent).touches[0].clientX\n } else {\n clientY = (event as MouseEvent).clientY\n clientX = (event as MouseEvent).clientX\n }\n return {\n clientX,\n clientY,\n }\n}\n","import {\n computed,\n getCurrentInstance,\n onMounted,\n ref,\n shallowRef,\n watch,\n} from 'vue'\nimport { addUnit, getClientXY, getEventCode } from '@element-plus/utils'\nimport { useNamespace } from '@element-plus/hooks'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport { draggable } from '../utils/draggable'\n\nimport type { AlphaSliderProps } from '../props/slider'\n\ninterface UseSliderOptions {\n key: 'hue' | 'alpha'\n minValue: number\n maxValue: number\n}\n\nexport const useSlider = (\n props: AlphaSliderProps,\n { key, minValue, maxValue }: UseSliderOptions\n) => {\n const instance = getCurrentInstance()!\n\n const thumb = shallowRef()\n const bar = shallowRef()\n\n const currentValue = computed(() => props.color.get(key))\n\n function handleClick(event: MouseEvent | TouchEvent) {\n if (props.disabled) return\n const target = event.target\n\n if (target !== thumb.value) {\n handleDrag(event)\n }\n thumb.value?.focus()\n }\n\n function handleDrag(event: MouseEvent | TouchEvent) {\n if (!bar.value || !thumb.value || props.disabled) return\n\n const el = instance.vnode.el as HTMLElement\n const rect = el.getBoundingClientRect()\n const { clientX, clientY } = getClientXY(event)\n let value\n\n if (!props.vertical) {\n let left = clientX - rect.left\n left = Math.max(thumb.value.offsetWidth / 2, left)\n left = Math.min(left, rect.width - thumb.value.offsetWidth / 2)\n\n value = Math.round(\n ((left - thumb.value.offsetWidth / 2) /\n (rect.width - thumb.value.offsetWidth)) *\n maxValue\n )\n } else {\n let top = clientY - rect.top\n top = Math.max(thumb.value.offsetHeight / 2, top)\n top = Math.min(top, rect.height - thumb.value.offsetHeight / 2)\n\n value = Math.round(\n ((top - thumb.value.offsetHeight / 2) /\n (rect.height - thumb.value.offsetHeight)) *\n maxValue\n )\n }\n props.color.set(key, value)\n }\n\n function handleKeydown(event: KeyboardEvent) {\n if (props.disabled) return\n const { shiftKey } = event\n const code = getEventCode(event)\n const step = shiftKey ? 10 : 1\n // NOTE: The hue-slider is opposite in direction to the regular slider, so the hue slider has been reversed here.\n // But this is not the best way to handle it.\n const reverse = key === 'hue' ? -1 : 1\n let isPreventDefault = true\n\n switch (code) {\n case EVENT_CODE.left:\n case EVENT_CODE.down:\n incrementPosition(-step * reverse)\n break\n case EVENT_CODE.right:\n case EVENT_CODE.up:\n incrementPosition(step * reverse)\n break\n case EVENT_CODE.home:\n props.color.set(key, key === 'hue' ? maxValue : minValue)\n break\n case EVENT_CODE.end:\n props.color.set(key, key === 'hue' ? minValue : maxValue)\n break\n case EVENT_CODE.pageDown:\n incrementPosition(-4 * reverse)\n break\n case EVENT_CODE.pageUp:\n incrementPosition(4 * reverse)\n break\n default:\n isPreventDefault = false\n break\n }\n\n isPreventDefault && event.preventDefault()\n }\n\n function incrementPosition(step: number) {\n let next = currentValue.value + step\n next = next < minValue ? minValue : next > maxValue ? maxValue : next\n props.color.set(key, next)\n }\n\n return {\n thumb,\n bar,\n currentValue,\n handleDrag,\n handleClick,\n handleKeydown,\n }\n}\n\ninterface UseSliderDOMOptions\n extends Pick<\n ReturnType,\n 'bar' | 'thumb' | 'currentValue' | 'handleDrag'\n > {\n namespace: string\n maxValue: number\n getBackground?: () => string\n}\n\nexport const useSliderDOM = (\n props: AlphaSliderProps,\n {\n namespace,\n maxValue,\n bar,\n thumb,\n currentValue,\n handleDrag,\n getBackground,\n }: UseSliderDOMOptions\n) => {\n const instance = getCurrentInstance()!\n const ns = useNamespace(namespace)\n\n const thumbLeft = ref(0)\n const thumbTop = ref(0)\n const background = ref()\n\n function getThumbLeft() {\n if (!thumb.value) return 0\n\n if (props.vertical) return 0\n const el = instance.vnode.el\n const value = currentValue.value\n\n if (!el) return 0\n return Math.round(\n (value * (el.offsetWidth - thumb.value.offsetWidth / 2)) / maxValue\n )\n }\n\n function getThumbTop() {\n if (!thumb.value) return 0\n\n const el = instance.vnode.el\n if (!props.vertical) return 0\n const value = currentValue.value\n\n if (!el) return 0\n return Math.round(\n (value * (el.offsetHeight - thumb.value.offsetHeight / 2)) / maxValue\n )\n }\n\n function update() {\n thumbLeft.value = getThumbLeft()\n thumbTop.value = getThumbTop()\n background.value = getBackground?.()\n }\n\n onMounted(() => {\n if (!bar.value || !thumb.value) return\n\n const dragConfig = {\n drag: (event: MouseEvent | TouchEvent) => {\n handleDrag(event)\n },\n end: (event: MouseEvent | TouchEvent) => {\n handleDrag(event)\n },\n }\n\n draggable(bar.value, dragConfig)\n draggable(thumb.value, dragConfig)\n update()\n })\n\n watch(currentValue, () => update())\n\n watch(\n () => props.color.value,\n () => update()\n )\n\n const rootKls = computed(() => [\n ns.b(),\n ns.is('vertical', props.vertical),\n ns.is('disabled', props.disabled),\n ])\n const barKls = computed(() => ns.e('bar'))\n const thumbKls = computed(() => ns.e('thumb'))\n const barStyle = computed(() => ({ background: background.value }))\n const thumbStyle = computed(() => ({\n left: addUnit(thumbLeft.value),\n top: addUnit(thumbTop.value),\n }))\n\n return {\n rootKls,\n barKls,\n barStyle,\n thumbKls,\n thumbStyle,\n thumbLeft,\n thumbTop,\n update,\n }\n}\n","\n\n\n","\n\n\n","import { buildProps, definePropType } from '@element-plus/utils'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\nimport type Color from '../utils/color'\n\nexport const predefineProps = buildProps({\n colors: {\n type: definePropType(Array),\n required: true,\n },\n color: {\n type: definePropType(Object),\n required: true,\n },\n enableAlpha: {\n type: Boolean,\n required: true,\n },\n disabled: Boolean,\n} as const)\n\nexport type PredefineProps = ExtractPropTypes\nexport type PredefinePropsPublic = __ExtractPublicPropTypes<\n typeof predefineProps\n>\n","import { isNil } from 'lodash-unified'\nimport { buildProps, definePropType, isString } from '@element-plus/utils'\nimport { UPDATE_MODEL_EVENT } from '@element-plus/constants'\n\nimport type {\n ComputedRef,\n ExtractPropTypes,\n InjectionKey,\n __ExtractPublicPropTypes,\n} from 'vue'\nimport type ColorPickerPanel from './color-picker-panel.vue'\nimport type Color from './utils/color'\n\nexport const colorPickerPanelProps = buildProps({\n /**\n * @description binding value\n */\n modelValue: {\n type: definePropType(String),\n default: undefined,\n },\n /**\n * @description whether the color picker is bordered\n */\n border: {\n type: Boolean,\n default: true,\n },\n /**\n * @description whether to display the alpha slider\n */\n showAlpha: Boolean,\n /**\n * @description color format of v-model\n */\n colorFormat: String,\n /**\n * @description whether to disable the color picker\n */\n disabled: Boolean,\n /**\n * @description predefined color options\n */\n predefine: {\n type: definePropType(Array),\n },\n /**\n * @description whether to trigger form validation\n */\n validateEvent: {\n type: Boolean,\n default: true,\n },\n} as const)\nexport const colorPickerPanelEmits = {\n [UPDATE_MODEL_EVENT]: (val: string | null) => isString(val) || isNil(val),\n}\n\nexport type ColorPickerPanelProps = ExtractPropTypes<\n typeof colorPickerPanelProps\n>\nexport type ColorPickerPanelPropsPublic = __ExtractPublicPropTypes<\n typeof colorPickerPanelProps\n>\nexport type ColorPickerPanelEmits = typeof colorPickerPanelEmits\nexport type ColorPickerPanelInstance = InstanceType &\n unknown\n\nexport interface ColorPickerPanelContext {\n currentColor: ComputedRef\n}\n\nexport interface CommonColorContext {\n color: Color\n}\n\nexport const ROOT_COMMON_COLOR_INJECTION_KEY: InjectionKey =\n Symbol('colorCommonPickerKey')\nexport const colorPickerPanelContextKey: InjectionKey =\n Symbol('colorPickerPanelContextKey')\n","import { TinyColor } from '@ctrl/tinycolor'\nimport { hasOwn } from '@element-plus/utils'\n\nimport type { ColorFormats } from '@ctrl/tinycolor'\n\ninterface ColorOptions {\n enableAlpha: boolean\n format: string\n value?: string | null\n}\n\nexport default class Color {\n private _hue = 0\n private _saturation = 100\n private _value = 100\n private _alpha = 100\n private _tiny = new TinyColor()\n private _isValid = false\n public enableAlpha = false\n public format = ''\n public value = ''\n public selected?: boolean\n\n constructor(options: Partial = {}) {\n for (const option in options) {\n if (hasOwn(options, option)) {\n this[option] = options[option]\n }\n }\n if (options.value) {\n this.fromString(options.value)\n } else {\n this.doOnChange()\n }\n }\n\n set(prop: { [key: string]: any } | any, value?: number) {\n if (arguments.length === 1 && typeof prop === 'object') {\n for (const p in prop) {\n if (hasOwn(prop, p)) {\n this.set(p, prop[p])\n }\n }\n\n return\n }\n ;(this as any)[`_${prop}`] = value\n this._isValid = true\n this.doOnChange()\n }\n\n get(prop: string) {\n if (['hue', 'saturation', 'value', 'alpha'].includes(prop)) {\n return Math.round((this as any)[`_${prop}`])\n }\n return (this as any)[`_${prop}`]\n }\n\n toRgb() {\n return this._isValid ? this._tiny.toRgb() : { r: 255, g: 255, b: 255, a: 0 }\n }\n\n fromString(value: string) {\n const color = new TinyColor(value)\n this._isValid = color.isValid\n if (color.isValid) {\n const { h, s, v, a } = color.toHsv()\n this._hue = h\n this._saturation = s * 100\n this._value = v * 100\n this._alpha = a * 100\n } else {\n this._hue = 0\n this._saturation = 100\n this._value = 100\n this._alpha = 100\n }\n this.doOnChange()\n }\n\n clear() {\n this._isValid = false\n this.value = ''\n this._hue = 0\n this._saturation = 100\n this._value = 100\n this._alpha = 100\n }\n\n compare(color: this) {\n const compareColor = new TinyColor({\n h: color._hue,\n s: color._saturation / 100,\n v: color._value / 100,\n a: color._alpha / 100,\n })\n return this._tiny.equals(compareColor)\n }\n\n doOnChange() {\n const { _hue, _saturation, _value, _alpha, format, enableAlpha } = this\n let _format = format || (enableAlpha ? 'rgb' : 'hex')\n if (format === 'hex' && enableAlpha) {\n _format = 'hex8'\n }\n this._tiny = new TinyColor({\n h: _hue,\n s: _saturation / 100,\n v: _value / 100,\n a: _alpha / 100,\n })\n this.value = this._isValid\n ? this._tiny.toString(_format as ColorFormats)\n : ''\n }\n}\n","import { computed, inject, ref, watch, watchEffect } from 'vue'\nimport { useNamespace } from '@element-plus/hooks'\nimport { PredefineProps } from '../props/predefine'\nimport { colorPickerPanelContextKey } from '../color-picker-panel'\nimport Color from '../utils/color'\n\nimport type { Ref } from 'vue'\n\nexport const usePredefine = (props: PredefineProps) => {\n const { currentColor } = inject(colorPickerPanelContextKey)!\n\n const rgbaColors = ref(parseColors(props.colors, props.color)) as Ref\n\n watch(\n () => currentColor.value,\n (val) => {\n const color = new Color({\n value: val,\n enableAlpha: props.enableAlpha,\n })\n\n rgbaColors.value.forEach((item) => {\n item.selected = color.compare(item)\n })\n }\n )\n\n watchEffect(() => {\n rgbaColors.value = parseColors(props.colors, props.color)\n })\n\n function handleSelect(index: number) {\n props.color.fromString(props.colors[index])\n }\n\n function parseColors(colors: string[], color: Color) {\n return colors.map((value) => {\n const c = new Color({\n value,\n enableAlpha: props.enableAlpha,\n })\n c.selected = c.compare(color)\n return c\n })\n }\n\n return {\n rgbaColors,\n handleSelect,\n }\n}\n\nexport const usePredefineDOM = (props: PredefineProps) => {\n const ns = useNamespace('color-predefine')\n\n const rootKls = computed(() => [ns.b(), ns.is('disabled', props.disabled)])\n\n const colorsKls = computed(() => ns.e('colors'))\n\n function colorSelectorKls(item: Color) {\n return [\n ns.e('color-selector'),\n ns.is('alpha', item.get('alpha') < 100),\n { selected: item.selected },\n ]\n }\n\n return {\n rootKls,\n colorsKls,\n colorSelectorKls,\n }\n}\n","\n\n\n","import { buildProps, definePropType } from '@element-plus/utils'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\nimport type Color from '../utils/color'\n\nexport const svPanelProps = buildProps({\n color: {\n type: definePropType(Object),\n required: true,\n },\n disabled: Boolean,\n} as const)\n\nexport type SvPanelProps = ExtractPropTypes\nexport type SvPanelPropsPublic = __ExtractPublicPropTypes\n","import { computed, getCurrentInstance, onMounted, ref, watch } from 'vue'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport { useNamespace } from '@element-plus/hooks'\nimport { addUnit, getClientXY, getEventCode } from '@element-plus/utils'\nimport { draggable } from '../utils/draggable'\n\nimport type { SvPanelProps } from '../props/sv-panel'\n\nexport const useSvPanel = (props: SvPanelProps) => {\n const instance = getCurrentInstance()!\n\n const cursorRef = ref()\n const cursorTop = ref(0)\n const cursorLeft = ref(0)\n const background = ref('hsl(0, 100%, 50%)')\n\n const saturation = computed(() => props.color.get('saturation'))\n const brightness = computed(() => props.color.get('value'))\n const hue = computed(() => props.color.get('hue'))\n\n function handleClick(event: MouseEvent | TouchEvent) {\n if (props.disabled) return\n const target = event.target\n\n if (target !== cursorRef.value) {\n handleDrag(event)\n }\n cursorRef.value?.focus({ preventScroll: true })\n }\n\n function handleDrag(event: MouseEvent | TouchEvent) {\n if (props.disabled) return\n\n const el = instance.vnode.el!\n const rect = el.getBoundingClientRect()\n const { clientX, clientY } = getClientXY(event)\n\n let left = clientX - rect.left\n let top = clientY - rect.top\n left = Math.max(0, left)\n left = Math.min(left, rect.width)\n\n top = Math.max(0, top)\n top = Math.min(top, rect.height)\n\n cursorLeft.value = left\n cursorTop.value = top\n props.color.set({\n saturation: (left / rect.width) * 100,\n value: 100 - (top / rect.height) * 100,\n })\n }\n\n function handleKeydown(event: KeyboardEvent) {\n if (props.disabled) return\n const { shiftKey } = event\n const code = getEventCode(event)\n const step = shiftKey ? 10 : 1\n let isPreventDefault = true\n\n switch (code) {\n case EVENT_CODE.left:\n incrementSaturation(-step)\n break\n case EVENT_CODE.right:\n incrementSaturation(step)\n break\n case EVENT_CODE.up:\n incrementBrightness(step)\n break\n case EVENT_CODE.down:\n incrementBrightness(-step)\n break\n default:\n isPreventDefault = false\n break\n }\n\n isPreventDefault && event.preventDefault()\n }\n\n function incrementSaturation(step: number) {\n let next = saturation.value + step\n next = next < 0 ? 0 : next > 100 ? 100 : next\n props.color.set('saturation', next)\n }\n\n function incrementBrightness(step: number) {\n let next = brightness.value + step\n next = next < 0 ? 0 : next > 100 ? 100 : next\n props.color.set('value', next)\n }\n\n return {\n cursorRef,\n cursorTop,\n cursorLeft,\n background,\n saturation,\n brightness,\n hue,\n handleClick,\n handleDrag,\n handleKeydown,\n }\n}\n\nexport const useSvPanelDOM = (\n props: SvPanelProps,\n {\n cursorTop,\n cursorLeft,\n background,\n handleDrag,\n }: Pick<\n ReturnType,\n 'cursorTop' | 'cursorLeft' | 'background' | 'handleDrag'\n >\n) => {\n const instance = getCurrentInstance()!\n const ns = useNamespace('color-svpanel')\n\n function update() {\n const saturation = props.color.get('saturation')\n const brightness = props.color.get('value')\n\n const el = instance.vnode.el!\n const { clientWidth: width, clientHeight: height } = el\n\n cursorLeft.value = (saturation * width) / 100\n cursorTop.value = ((100 - brightness) * height) / 100\n\n background.value = `hsl(${props.color.get('hue')}, 100%, 50%)`\n }\n\n onMounted(() => {\n draggable(instance.vnode.el as HTMLElement, {\n drag: (event) => {\n handleDrag(event)\n },\n end: (event) => {\n handleDrag(event)\n },\n })\n\n update()\n })\n\n watch(\n [\n () => props.color.get('hue'),\n () => props.color.get('value'),\n () => props.color.value,\n ],\n () => update()\n )\n\n const rootKls = computed(() => ns.b())\n const cursorKls = computed(() => ns.e('cursor'))\n const rootStyle = computed(() => ({\n backgroundColor: background.value,\n }))\n const cursorStyle = computed(() => ({\n top: addUnit(cursorTop.value),\n left: addUnit(cursorLeft.value),\n }))\n\n return {\n rootKls,\n cursorKls,\n rootStyle,\n cursorStyle,\n update,\n }\n}\n","\n\n\n","import { reactive, watch } from 'vue'\nimport Color from '../utils/color'\nimport { UPDATE_MODEL_EVENT } from '@element-plus/constants'\n\ntype CommonColorProps = {\n modelValue?: string | null\n showAlpha: boolean\n colorFormat?: string\n}\ntype CommonColorEmits = (event: 'update:modelValue', ...args: any[]) => void\n\nexport const useCommonColor = <\n P extends CommonColorProps,\n E extends CommonColorEmits,\n>(\n props: P,\n emit: E\n) => {\n const color = reactive(\n new Color({\n enableAlpha: props.showAlpha,\n format: props.colorFormat || '',\n value: props.modelValue,\n })\n ) as Color\n\n watch(\n () => [props.colorFormat, props.showAlpha],\n () => {\n color.enableAlpha = props.showAlpha\n color.format = props.colorFormat || color.format\n color.doOnChange()\n emit(UPDATE_MODEL_EVENT, color.value)\n }\n )\n\n return {\n color,\n }\n}\n","\n\n\n","import { withInstall } from '@element-plus/utils'\nimport ColorPickerPanel from './src/color-picker-panel.vue'\n\nimport type { SFCWithInstall } from '@element-plus/utils'\n\nexport const ElColorPickerPanel: SFCWithInstall =\n withInstall(ColorPickerPanel)\nexport default ElColorPickerPanel\n\nexport * from './src/color-picker-panel'\n","import { isNil } from 'lodash-unified'\nimport { buildProps, definePropType, isString } from '@element-plus/utils'\nimport {\n useAriaProps,\n useEmptyValuesProps,\n useSizeProp,\n} from '@element-plus/hooks'\nimport { useTooltipContentProps } from '@element-plus/components/tooltip'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@element-plus/constants'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\nimport type ColorPicker from './color-picker.vue'\n\nexport const colorPickerProps = buildProps({\n /**\n * @description when color-picker inactive and persistent is false, the color panel will be destroyed\n */\n persistent: {\n type: Boolean,\n default: true,\n },\n /**\n * @description binding value\n */\n modelValue: {\n type: definePropType(String),\n default: undefined,\n },\n /**\n * @description ColorPicker id\n */\n id: String,\n /**\n * @description whether to display the alpha slider\n */\n showAlpha: Boolean,\n /**\n * @description color format of v-model\n */\n colorFormat: String,\n /**\n * @description whether to disable the ColorPicker\n */\n disabled: {\n type: Boolean,\n default: undefined,\n },\n /**\n * @description size of ColorPicker\n */\n size: useSizeProp,\n /**\n * @description custom class name for ColorPicker's dropdown\n */\n popperClass: useTooltipContentProps.popperClass,\n /**\n * @description custom style for ColorPicker's dropdown\n */\n popperStyle: useTooltipContentProps.popperStyle,\n /**\n * @description ColorPicker tabindex\n */\n tabindex: {\n type: [String, Number],\n default: 0,\n },\n /**\n * @description whether color-picker popper is teleported to the body\n */\n teleported: useTooltipContentProps.teleported,\n /**\n * @description which color-picker panel appends to\n */\n appendTo: useTooltipContentProps.appendTo,\n /**\n * @description predefined color options\n */\n predefine: {\n type: definePropType(Array),\n },\n /**\n * @description whether to trigger form validation\n */\n validateEvent: {\n type: Boolean,\n default: true,\n },\n ...useEmptyValuesProps,\n ...useAriaProps(['ariaLabel']),\n} as const)\nexport const colorPickerEmits = {\n [UPDATE_MODEL_EVENT]: (val: string | null) => isString(val) || isNil(val),\n [CHANGE_EVENT]: (val: string | null) => isString(val) || isNil(val),\n activeChange: (val: string | null) => isString(val) || isNil(val),\n focus: (evt: FocusEvent) => evt instanceof FocusEvent,\n blur: (evt: FocusEvent) => evt instanceof FocusEvent,\n}\n\nexport type ColorPickerProps = ExtractPropTypes\nexport type ColorPickerPropsPublic = __ExtractPublicPropTypes<\n typeof colorPickerProps\n>\nexport type ColorPickerEmits = typeof colorPickerEmits\nexport type ColorPickerInstance = InstanceType & unknown\n","\n\n\n","import { withInstall } from '@element-plus/utils'\nimport ColorPicker from './src/color-picker.vue'\n\nimport type { SFCWithInstall } from '@element-plus/utils'\n\nexport const ElColorPicker: SFCWithInstall =\n withInstall(ColorPicker)\nexport default ElColorPicker\n\nexport * from './src/color-picker'\n","import { buildProps, definePropType } from '@element-plus/utils'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\nimport type {\n GetDisabledHours,\n GetDisabledMinutes,\n GetDisabledSeconds,\n} from '../common/props'\n\nexport const disabledTimeListsProps = buildProps({\n /**\n * @description To specify the array of hours that cannot be selected\n */\n disabledHours: {\n type: definePropType(Function),\n },\n /**\n * @description To specify the array of minutes that cannot be selected\n */\n disabledMinutes: {\n type: definePropType(Function),\n },\n /**\n * @description To specify the array of seconds that cannot be selected\n */\n disabledSeconds: {\n type: definePropType(Function),\n },\n} as const)\n\nexport type DisabledTimeListsProps = ExtractPropTypes<\n typeof disabledTimeListsProps\n>\nexport type DisabledTimeListsPropsPublic = __ExtractPublicPropTypes<\n typeof disabledTimeListsProps\n>\n\nexport const timePanelSharedProps = buildProps({\n visible: Boolean,\n actualVisible: {\n type: Boolean,\n default: undefined,\n },\n format: {\n type: String,\n default: '',\n },\n} as const)\n\nexport type TimePanelSharedProps = ExtractPropTypes\nexport type TimePanelSharedPropsPublic = __ExtractPublicPropTypes<\n typeof timePanelSharedProps\n>\n","import { buildProps, definePropType } from '@element-plus/utils'\nimport { disabledTimeListsProps } from '@element-plus/components/time-picker/src/props/shared'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\nimport type {\n ModelValueType,\n SingleOrRange,\n} from '@element-plus/components/time-picker'\nimport type { DatePickerType } from '../types'\n\nexport const datePickerPanelProps = buildProps({\n /**\n * @description optional, format of binding value. If not specified, the binding value will be a Date object\n */\n valueFormat: String,\n /**\n * @description optional, format of the date displayed in input's inner panel\n */\n dateFormat: String,\n /**\n * @description optional, format of the time displayed in input's inner panel\n */\n timeFormat: String,\n /**\n * @description whether picker is disabled\n */\n disabled: {\n type: Boolean,\n default: undefined,\n },\n /**\n * @description binding value, if it is an array, the length should be 2\n */\n modelValue: {\n type: definePropType([Date, Array, String, Number]),\n default: '',\n },\n /**\n * @description optional, default date of the calendar\n */\n defaultValue: {\n type: definePropType>([Date, Array]),\n },\n /**\n * @description optional, the time value to use when selecting date range\n */\n defaultTime: {\n type: definePropType>([Date, Array]),\n },\n /**\n * @description whether to pick a time range\n */\n isRange: Boolean,\n ...disabledTimeListsProps,\n /**\n * @description a function determining if a date is disabled with that date as its parameter. Should return a Boolean\n */\n disabledDate: {\n type: Function,\n },\n /**\n * @description set custom className\n */\n cellClassName: {\n type: Function,\n },\n /**\n * @description an object array to set shortcut options\n */\n shortcuts: {\n type: Array,\n default: () => [],\n },\n /**\n * @description whether to pick time using arrow buttons\n */\n arrowControl: Boolean,\n /**\n * @description unlink two date-panels in range-picker\n */\n unlinkPanels: Boolean,\n /**\n * @description whether to show the now button\n */\n showNow: {\n type: Boolean,\n default: true,\n },\n /**\n * @description whether to show the confirm button\n */\n showConfirm: Boolean,\n /**\n * @description whether to show footer\n */\n showFooter: Boolean,\n /**\n * @description whether to show the number of the calendar week\n */\n showWeekNumber: Boolean,\n /**\n * @description type of the picker\n */\n type: {\n type: definePropType(String),\n default: 'date',\n },\n /**\n * @description whether to show clear button in range mode\n */\n clearable: {\n type: Boolean,\n default: true,\n },\n /**\n * @description whether the date picker is bordered\n */\n border: {\n type: Boolean,\n default: true,\n },\n} as const)\n\nexport type DatePickerPanelProps = ExtractPropTypes\nexport type DatePickerPanelPropsPublic = __ExtractPublicPropTypes<\n typeof datePickerPanelProps\n>\n","import type { InjectionKey, SetupContext } from 'vue'\nimport type { UseNamespaceReturn } from '@element-plus/hooks'\n\ninterface DatePickerContext {\n slots: SetupContext['slots']\n pickerNs: UseNamespaceReturn\n}\n\nexport const ROOT_PICKER_INJECTION_KEY: InjectionKey =\n Symbol('rootPickerContextKey')\n\nexport const ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY = 'ElIsDefaultFormat'\n","import { buildProps, definePropType, isArray } from '@element-plus/utils'\nimport { datePickTypes } from '@element-plus/constants'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\nimport type { Dayjs } from 'dayjs'\nimport type { DatePickType } from '@element-plus/constants'\nimport type { DayOrDays } from '@element-plus/components/time-picker'\n\nconst selectionModes = [\n 'date',\n 'dates',\n 'year',\n 'years',\n 'month',\n 'months',\n 'week',\n 'range',\n]\n\nexport type RangeState = {\n endDate: null | Dayjs\n selecting: boolean\n}\n\nexport type DisabledDateType = (date: Date) => boolean\nexport type CellClassNameType = (date: Date) => string\n\nexport const datePickerSharedProps = buildProps({\n cellClassName: {\n type: definePropType(Function),\n },\n disabledDate: {\n type: definePropType(Function),\n },\n date: {\n type: definePropType(Object),\n required: true,\n },\n minDate: {\n type: definePropType(Object),\n },\n maxDate: {\n type: definePropType(Object),\n },\n parsedValue: {\n type: definePropType([Object, Array]),\n },\n rangeState: {\n type: definePropType(Object),\n default: () => ({\n endDate: null,\n selecting: false,\n }),\n },\n disabled: Boolean,\n} as const)\n\nexport const panelSharedProps = buildProps({\n type: {\n type: definePropType(String),\n required: true,\n values: datePickTypes,\n },\n dateFormat: String,\n timeFormat: String,\n showNow: {\n type: Boolean,\n default: true,\n },\n showConfirm: Boolean,\n showFooter: {\n type: Boolean,\n default: true,\n },\n showWeekNumber: Boolean,\n border: Boolean,\n disabled: Boolean,\n} as const)\n\nexport const panelRangeSharedProps = buildProps({\n unlinkPanels: Boolean,\n visible: {\n type: Boolean,\n default: true,\n },\n showConfirm: Boolean,\n showFooter: {\n type: Boolean,\n default: true,\n },\n border: Boolean,\n disabled: Boolean,\n parsedValue: {\n type: definePropType(Array),\n },\n} as const)\n\nexport const selectionModeWithDefault = (\n mode: (typeof selectionModes)[number]\n) => {\n return {\n type: String,\n values: selectionModes,\n default: mode,\n }\n}\n\nexport const rangePickerSharedEmits = {\n pick: (range: [Dayjs, Dayjs]) => isArray(range),\n}\n\nexport type RangePickerSharedEmits = typeof rangePickerSharedEmits\nexport type PanelRangeSharedProps = ExtractPropTypes<\n typeof panelRangeSharedProps\n>\nexport type PanelRangeSharedPropsPublic = __ExtractPublicPropTypes<\n typeof panelRangeSharedProps\n>\n","import { buildProps, definePropType } from '@element-plus/utils'\nimport { panelSharedProps } from './shared'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\nimport type { DayOrDays } from '@element-plus/components/time-picker'\n\nexport const panelDatePickProps = buildProps({\n ...panelSharedProps,\n parsedValue: {\n type: definePropType([Object, Array]),\n },\n visible: {\n type: Boolean,\n default: true,\n },\n format: {\n type: String,\n default: '',\n },\n} as const)\n\nexport type PanelDatePickProps = ExtractPropTypes\nexport type PanelDatePickPropsPublic = __ExtractPublicPropTypes<\n typeof panelDatePickProps\n>\n","import dayjs from 'dayjs'\nimport { isArray, isString } from '@element-plus/utils'\nimport { rangeArr } from '@element-plus/components/time-picker'\n\nimport type { ComputedRef } from 'vue'\nimport type { Dayjs } from 'dayjs'\nimport type { DateCell } from './types'\nimport type { DisabledDateType } from './props/shared'\n\ntype DayRange = [Dayjs | undefined, Dayjs | undefined]\n\nexport const isValidRange = (range: DayRange): boolean => {\n if (!isArray(range)) return false\n\n const [left, right] = range\n\n return (\n dayjs.isDayjs(left) &&\n dayjs.isDayjs(right) &&\n dayjs(left).isValid() &&\n dayjs(right).isValid() &&\n left.isSameOrBefore(right)\n )\n}\n\ntype GetDefaultValueParams = {\n lang: string\n step?: number\n unit: 'month' | 'year'\n unlinkPanels: boolean\n}\n\nexport type DefaultValue = [Date, Date] | Date | undefined\n\nexport const getDefaultValue = (\n defaultValue: DefaultValue,\n { lang, step = 1, unit, unlinkPanels }: GetDefaultValueParams\n) => {\n let start: Dayjs\n\n if (isArray(defaultValue)) {\n let [left, right] = defaultValue.map((d) => dayjs(d).locale(lang))\n if (!unlinkPanels) {\n right = left.add(step, unit)\n }\n return [left, right]\n } else if (defaultValue) {\n start = dayjs(defaultValue)\n } else {\n start = dayjs()\n }\n start = start.locale(lang)\n return [start, start.add(step, unit)]\n}\n\ntype Dimension = {\n row: number\n column: number\n}\n\ntype BuildPickerTableMetadata = {\n startDate?: Dayjs | null\n unit: 'month' | 'day'\n columnIndexOffset: number\n now: Dayjs\n nextEndDate: Dayjs | null\n relativeDateGetter: (index: number) => Dayjs\n setCellMetadata?: (\n cell: DateCell,\n dimension: { rowIndex: number; columnIndex: number }\n ) => void\n setRowMetadata?: (row: DateCell[]) => void\n}\n\nexport const buildPickerTable = (\n dimension: Dimension,\n rows: DateCell[][],\n {\n columnIndexOffset,\n startDate,\n nextEndDate,\n now,\n unit,\n relativeDateGetter,\n setCellMetadata,\n setRowMetadata,\n }: BuildPickerTableMetadata\n) => {\n for (let rowIndex = 0; rowIndex < dimension.row; rowIndex++) {\n const row = rows[rowIndex]\n for (let columnIndex = 0; columnIndex < dimension.column; columnIndex++) {\n let cell = row[columnIndex + columnIndexOffset]\n if (!cell) {\n cell = {\n row: rowIndex,\n column: columnIndex,\n type: 'normal',\n inRange: false,\n start: false,\n end: false,\n }\n }\n const index = rowIndex * dimension.column + columnIndex\n const nextStartDate = relativeDateGetter(index)\n cell.dayjs = nextStartDate\n cell.date = nextStartDate.toDate()\n cell.timestamp = nextStartDate.valueOf()\n cell.type = 'normal'\n\n cell.inRange =\n !!(\n startDate &&\n nextStartDate.isSameOrAfter(startDate, unit) &&\n nextEndDate &&\n nextStartDate.isSameOrBefore(nextEndDate, unit)\n ) ||\n !!(\n startDate &&\n nextStartDate.isSameOrBefore(startDate, unit) &&\n nextEndDate &&\n nextStartDate.isSameOrAfter(nextEndDate, unit)\n )\n\n if (startDate?.isSameOrAfter(nextEndDate)) {\n cell.start = !!nextEndDate && nextStartDate.isSame(nextEndDate, unit)\n cell.end = startDate && nextStartDate.isSame(startDate, unit)\n } else {\n cell.start = !!startDate && nextStartDate.isSame(startDate, unit)\n cell.end = !!nextEndDate && nextStartDate.isSame(nextEndDate, unit)\n }\n\n const isToday = nextStartDate.isSame(now, unit)\n\n if (isToday) {\n cell.type = 'today'\n }\n setCellMetadata?.(cell, { rowIndex, columnIndex })\n row[columnIndex + columnIndexOffset] = cell\n }\n setRowMetadata?.(row)\n }\n}\n\nexport const datesInMonth = (\n date: Dayjs,\n year: number,\n month: number,\n lang: string\n) => {\n const firstDay = dayjs()\n .locale(lang)\n .startOf('month')\n .month(month)\n .year(year)\n .hour(date.hour())\n .minute(date.minute())\n .second(date.second())\n\n const numOfDays = firstDay.daysInMonth()\n return rangeArr(numOfDays).map((n) => firstDay.add(n, 'day').toDate())\n}\n\nexport const getValidDateOfMonth = (\n date: Dayjs,\n year: number,\n month: number,\n lang: string,\n disabledDate?: DisabledDateType\n) => {\n const _value = dayjs()\n .year(year)\n .month(month)\n .startOf('month')\n .hour(date.hour())\n .minute(date.minute())\n .second(date.second())\n const _date = datesInMonth(date, year, month, lang).find((date) => {\n return !disabledDate?.(date)\n })\n if (_date) {\n return dayjs(_date).locale(lang)\n }\n return _value.locale(lang)\n}\n\nexport const getValidDateOfYear = (\n value: Dayjs,\n lang: string,\n disabledDate?: DisabledDateType\n) => {\n const year = value.year()\n if (!disabledDate?.(value.toDate())) {\n return value.locale(lang)\n }\n const month = value.month()\n if (!datesInMonth(value, year, month, lang).every(disabledDate)) {\n return getValidDateOfMonth(value, year, month, lang, disabledDate)\n }\n for (let i = 0; i < 12; i++) {\n if (!datesInMonth(value, year, i, lang).every(disabledDate)) {\n return getValidDateOfMonth(value, year, i, lang, disabledDate)\n }\n }\n return value\n}\n\nexport const correctlyParseUserInput = (\n value: string | Dayjs | Dayjs[],\n format: string,\n lang: string,\n defaultFormat: ComputedRef | undefined\n): Dayjs | Dayjs[] => {\n if (isArray(value)) {\n return value.map(\n (v) => correctlyParseUserInput(v, format, lang, defaultFormat) as Dayjs\n )\n }\n if (isString(value)) {\n const dayjsValue = defaultFormat?.value\n ? dayjs(value)\n : dayjs(value, format)\n if (!dayjsValue.isValid()) {\n // return directly if not valid\n return dayjsValue\n }\n }\n return dayjs(value, format).locale(lang)\n}\n","import { buildProps } from '@element-plus/utils'\nimport { datePickerSharedProps, selectionModeWithDefault } from './shared'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\nimport type { Dayjs } from 'dayjs'\n\nexport const basicDateTableProps = buildProps({\n ...datePickerSharedProps,\n showWeekNumber: Boolean,\n selectionMode: selectionModeWithDefault('date'),\n} as const)\n\nexport const basicDateTableEmits = ['changerange', 'pick', 'select']\n\nexport type BasicDateTableProps = ExtractPropTypes\nexport type BasicDateTablePropsPublic = __ExtractPublicPropTypes<\n typeof basicDateTableProps\n>\nexport type BasicDateTableEmits = typeof basicDateTableEmits\n\nexport type RangePickerEmits = { minDate: Dayjs; maxDate: null }\nexport type DatePickerEmits = Dayjs\nexport type DatesPickerEmits = Dayjs[]\nexport type MonthsPickerEmits = Dayjs[]\nexport type YearsPickerEmits = Dayjs[]\nexport type WeekPickerEmits = {\n year: number\n week: number\n value: string\n date: Dayjs\n}\n\nexport type DateTableEmits =\n | RangePickerEmits\n | DatePickerEmits\n | DatesPickerEmits\n | WeekPickerEmits\n","import { computed, nextTick, ref, unref, watch } from 'vue'\nimport dayjs from 'dayjs'\nimport { flatten } from 'lodash-unified'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport { castArray, isArray } from '@element-plus/utils'\nimport { buildPickerTable } from '../utils'\n\nimport type { SetupContext } from 'vue'\nimport type { Dayjs } from 'dayjs'\nimport type { DateCell } from '../types'\nimport type {\n BasicDateTableEmits,\n BasicDateTableProps,\n} from '../props/basic-date-table'\n\nconst isNormalDay = (type = '') => {\n return ['normal', 'today'].includes(type)\n}\n\nexport const useBasicDateTable = (\n props: BasicDateTableProps,\n emit: SetupContext['emit']\n) => {\n const { lang } = useLocale()\n const tbodyRef = ref()\n const currentCellRef = ref()\n // data\n const lastRow = ref()\n const lastColumn = ref()\n const tableRows = ref([[], [], [], [], [], []])\n\n let focusWithClick = false\n\n // todo better way to get Day.js locale object\n const firstDayOfWeek = (props.date as any).$locale().weekStart || 7\n const WEEKS_CONSTANT = props.date\n .locale('en')\n .localeData()\n .weekdaysShort()\n .map((_) => _.toLowerCase())\n\n const offsetDay = computed(() => {\n // Sunday 7(0), cal the left and right offset days, 3217654, such as Monday is -1, the is to adjust the position of the first two rows of dates\n return firstDayOfWeek > 3 ? 7 - firstDayOfWeek : -firstDayOfWeek\n })\n\n const startDate = computed(() => {\n const startDayOfMonth = props.date.startOf('month')\n return startDayOfMonth.subtract(startDayOfMonth.day() || 7, 'day')\n })\n\n const WEEKS = computed(() => {\n return WEEKS_CONSTANT.concat(WEEKS_CONSTANT).slice(\n firstDayOfWeek,\n firstDayOfWeek + 7\n )\n })\n\n const hasCurrent = computed(() => {\n return flatten(unref(rows)).some((row) => {\n return row.isCurrent\n })\n })\n\n const days = computed(() => {\n const startOfMonth = props.date.startOf('month')\n const startOfMonthDay = startOfMonth.day() || 7 // day of first day\n const dateCountOfMonth = startOfMonth.daysInMonth()\n\n const dateCountOfLastMonth = startOfMonth.subtract(1, 'month').daysInMonth()\n\n return {\n startOfMonthDay,\n dateCountOfMonth,\n dateCountOfLastMonth,\n }\n })\n\n const selectedDate = computed(() => {\n return props.selectionMode === 'dates' ? castArray(props.parsedValue!) : []\n })\n\n // Return value indicates should the counter be incremented\n type CellCoordinate = { columnIndex: number; rowIndex: number }\n type CellMeta = CellCoordinate & {\n count: number\n }\n const setDateText = (\n cell: DateCell,\n { count, rowIndex, columnIndex }: CellMeta\n ): boolean => {\n const { startOfMonthDay, dateCountOfMonth, dateCountOfLastMonth } =\n unref(days)\n const offset = unref(offsetDay)\n if (rowIndex >= 0 && rowIndex <= 1) {\n const numberOfDaysFromPreviousMonth =\n startOfMonthDay + offset < 0\n ? 7 + startOfMonthDay + offset\n : startOfMonthDay + offset\n\n if (columnIndex + rowIndex * 7 >= numberOfDaysFromPreviousMonth) {\n cell.text = count\n return true\n } else {\n cell.text =\n dateCountOfLastMonth -\n (numberOfDaysFromPreviousMonth - (columnIndex % 7)) +\n 1 +\n rowIndex * 7\n cell.type = 'prev-month'\n }\n } else {\n if (count <= dateCountOfMonth) {\n cell.text = count\n } else {\n cell.text = count - dateCountOfMonth\n cell.type = 'next-month'\n }\n return true\n }\n return false\n }\n\n const setCellMetadata = (\n cell: DateCell,\n { columnIndex, rowIndex }: CellCoordinate,\n count: number\n ) => {\n const { disabledDate, cellClassName } = props\n const _selectedDate = unref(selectedDate)\n const shouldIncrement = setDateText(cell, { count, rowIndex, columnIndex })\n\n const cellDate = cell.dayjs!.toDate()\n cell.selected = _selectedDate.find((d) => d.isSame(cell.dayjs, 'day'))\n cell.isSelected = !!cell.selected\n cell.isCurrent = isCurrent(cell)\n cell.disabled = disabledDate?.(cellDate)\n cell.customClass = cellClassName?.(cellDate)\n return shouldIncrement\n }\n\n const setRowMetadata = (row: DateCell[]) => {\n if (props.selectionMode === 'week') {\n const [start, end] = props.showWeekNumber ? [1, 7] : [0, 6]\n const isActive = isWeekActive(row[start + 1])\n row[start].inRange = isActive\n row[start].start = isActive\n row[end].inRange = isActive\n row[end].end = isActive\n }\n }\n\n const rows = computed(() => {\n const { minDate, maxDate, rangeState, showWeekNumber } = props\n\n const offset = unref(offsetDay)\n const rows_ = unref(tableRows)\n const dateUnit = 'day'\n let count = 1\n\n buildPickerTable({ row: 6, column: 7 }, rows_, {\n startDate: minDate,\n columnIndexOffset: showWeekNumber ? 1 : 0,\n nextEndDate:\n rangeState.endDate ||\n maxDate ||\n (rangeState.selecting && minDate) ||\n null,\n now: dayjs().locale(unref(lang)).startOf(dateUnit),\n unit: dateUnit,\n relativeDateGetter: (idx: number) =>\n unref(startDate).add(idx - offset, dateUnit),\n setCellMetadata: (...args) => {\n if (setCellMetadata(...args, count)) {\n count += 1\n }\n },\n\n setRowMetadata,\n })\n\n if (showWeekNumber) {\n for (let rowIndex = 0; rowIndex < 6; rowIndex++) {\n if (rows_[rowIndex][1].dayjs) {\n rows_[rowIndex][0] = {\n type: 'week',\n text: rows_[rowIndex][1].dayjs!.week(),\n }\n }\n }\n }\n\n return rows_\n })\n\n watch(\n () => props.date,\n async () => {\n if (unref(tbodyRef)?.contains(document.activeElement)) {\n await nextTick()\n await focus()\n // currentCellRef.value?.focus()\n }\n }\n )\n\n const focus = async () => unref(currentCellRef)?.focus()\n\n const isCurrent = (cell: DateCell): boolean => {\n return (\n props.selectionMode === 'date' &&\n isNormalDay(cell.type) &&\n cellMatchesDate(cell, props.parsedValue as Dayjs)\n )\n }\n\n const cellMatchesDate = (cell: DateCell, date: Dayjs) => {\n if (!date) return false\n return dayjs(date)\n .locale(unref(lang))\n .isSame(props.date.date(Number(cell.text)), 'day')\n }\n\n const getDateOfCell = (row: number, column: number) => {\n const offsetFromStart =\n row * 7 + (column - (props.showWeekNumber ? 1 : 0)) - unref(offsetDay)\n return unref(startDate).add(offsetFromStart, 'day')\n }\n\n const handleMouseMove = (event: MouseEvent) => {\n if (!props.rangeState.selecting) return\n\n let target = event.target as HTMLElement\n if (target.tagName === 'SPAN') {\n target = target.parentNode?.parentNode as HTMLElement\n }\n if (target.tagName === 'DIV') {\n target = target.parentNode as HTMLElement\n }\n if (target.tagName !== 'TD') return\n\n const row = (target.parentNode as HTMLTableRowElement).rowIndex - 1\n const column = (target as HTMLTableCellElement).cellIndex\n\n // can not select disabled date\n if (unref(rows)[row][column].disabled) return\n\n // only update rangeState when mouse moves to a new cell\n // this avoids frequent Date object creation and improves performance\n if (row !== unref(lastRow) || column !== unref(lastColumn)) {\n lastRow.value = row\n lastColumn.value = column\n emit('changerange', {\n selecting: true,\n endDate: getDateOfCell(row, column),\n })\n }\n }\n\n const isSelectedCell = (cell: DateCell) => {\n return (\n (!unref(hasCurrent) && cell?.text === 1 && isNormalDay(cell.type)) ||\n cell.isCurrent\n )\n }\n\n const handleFocus = (event: FocusEvent) => {\n if (focusWithClick || unref(hasCurrent) || props.selectionMode !== 'date')\n return\n handlePickDate(event, true)\n }\n\n const handleMouseDown = (event: MouseEvent) => {\n const target = (event.target as HTMLElement).closest('td')\n if (!target) return\n focusWithClick = true\n }\n\n const handleMouseUp = (event: MouseEvent) => {\n const target = (event.target as HTMLElement).closest('td')\n if (!target) return\n focusWithClick = false\n }\n\n const handleRangePick = (newDate: Dayjs) => {\n if (!props.rangeState.selecting || !props.minDate) {\n emit('pick', { minDate: newDate, maxDate: null })\n emit('select', true)\n } else {\n if (newDate >= props.minDate) {\n emit('pick', { minDate: props.minDate, maxDate: newDate })\n } else {\n emit('pick', { minDate: newDate, maxDate: props.minDate })\n }\n emit('select', false)\n }\n }\n\n const handleWeekPick = (newDate: Dayjs) => {\n const weekNumber = newDate.week()\n const value = `${newDate.year()}w${weekNumber}`\n emit('pick', {\n year: newDate.year(),\n week: weekNumber,\n value,\n date: newDate.startOf('week'),\n })\n }\n\n const handleDatesPick = (newDate: Dayjs, selected: boolean) => {\n const newValue = selected\n ? castArray(props.parsedValue).filter(\n (d) => d?.valueOf() !== newDate.valueOf()\n )\n : castArray(props.parsedValue).concat([newDate])\n emit('pick', newValue)\n }\n\n const handlePickDate = (\n event: FocusEvent | MouseEvent,\n isKeyboardMovement = false\n ) => {\n if (props.disabled) return\n const target = (event.target as HTMLElement).closest('td')\n\n if (!target) return\n\n const row = (target.parentNode as HTMLTableRowElement).rowIndex - 1\n const column = (target as HTMLTableCellElement).cellIndex\n const cell = unref(rows)[row][column]\n\n if (cell.disabled || cell.type === 'week') return\n\n const newDate = getDateOfCell(row, column)\n\n switch (props.selectionMode) {\n case 'range': {\n handleRangePick(newDate)\n break\n }\n case 'date': {\n emit('pick', newDate, isKeyboardMovement)\n break\n }\n case 'week': {\n handleWeekPick(newDate)\n break\n }\n case 'dates': {\n handleDatesPick(newDate, !!cell.selected)\n break\n }\n default: {\n break\n }\n }\n }\n\n const isWeekActive = (cell: DateCell) => {\n if (props.selectionMode !== 'week') return false\n let newDate = props.date.startOf('day')\n\n if (cell.type === 'prev-month') {\n newDate = newDate.subtract(1, 'month')\n }\n\n if (cell.type === 'next-month') {\n newDate = newDate.add(1, 'month')\n }\n\n newDate = newDate.date(Number.parseInt(cell.text as any, 10))\n\n if (props.parsedValue && !isArray(props.parsedValue)) {\n const dayOffset = ((props.parsedValue.day() - firstDayOfWeek + 7) % 7) - 1\n const weekDate = props.parsedValue.subtract(dayOffset, 'day')\n return weekDate.isSame(newDate, 'day')\n }\n return false\n }\n\n return {\n WEEKS,\n rows,\n tbodyRef,\n currentCellRef,\n\n // cellMatchesDate,\n // getDateOfCell,\n focus,\n isCurrent,\n isWeekActive,\n isSelectedCell,\n\n handlePickDate,\n handleMouseUp,\n handleMouseDown,\n handleMouseMove,\n handleFocus,\n }\n}\n\nexport const useBasicDateTableDOM = (\n props: BasicDateTableProps,\n {\n isCurrent,\n isWeekActive,\n }: Pick, 'isCurrent' | 'isWeekActive'>\n) => {\n const ns = useNamespace('date-table')\n const { t } = useLocale()\n\n const tableKls = computed(() => [\n ns.b(),\n ns.is('week-mode', props.selectionMode === 'week' && !props.disabled),\n ])\n\n const tableLabel = computed(() => t('el.datepicker.dateTablePrompt'))\n\n const getCellClasses = (cell: DateCell) => {\n const classes: string[] = []\n if (isNormalDay(cell.type) && !cell.disabled) {\n classes.push('available')\n if (cell.type === 'today') {\n classes.push('today')\n }\n } else {\n classes.push(cell.type!)\n }\n\n if (isCurrent(cell)) {\n classes.push('current')\n }\n\n if (\n cell.inRange &&\n (isNormalDay(cell.type) || props.selectionMode === 'week')\n ) {\n classes.push('in-range')\n\n if (cell.start) {\n classes.push('start-date')\n }\n\n if (cell.end) {\n classes.push('end-date')\n }\n }\n\n if (cell.disabled || props.disabled) {\n classes.push('disabled')\n }\n\n if (cell.selected) {\n classes.push('selected')\n }\n\n if (cell.customClass) {\n classes.push(cell.customClass)\n }\n\n return classes.join(' ')\n }\n\n const getRowKls = (cell: DateCell) => [\n ns.e('row'),\n { current: isWeekActive(cell) },\n ]\n\n return {\n tableKls,\n tableLabel,\n weekHeaderClass: ns.e('week-header'),\n\n getCellClasses,\n getRowKls,\n t,\n }\n}\n","import { buildProps, definePropType } from '@element-plus/utils'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\nimport type { DateCell } from '../types'\n\nexport const basicCellProps = buildProps({\n cell: {\n type: definePropType(Object),\n },\n} as const)\n\nexport type BasicCellProps = ExtractPropTypes\nexport type BasicCellPropsPublic = __ExtractPublicPropTypes<\n typeof basicCellProps\n>\n","import { defineComponent, inject, renderSlot } from 'vue'\nimport { useNamespace } from '@element-plus/hooks'\nimport { ROOT_PICKER_INJECTION_KEY } from '../constants'\nimport { basicCellProps } from '../props/basic-cell'\n\nexport default defineComponent({\n name: 'ElDatePickerCell',\n props: basicCellProps,\n setup(props) {\n const ns = useNamespace('date-table-cell')\n const { slots } = inject(ROOT_PICKER_INJECTION_KEY)!\n return () => {\n const { cell } = props\n\n return renderSlot(slots, 'default', { ...cell }, () => [\n

\n {cell?.renderText ?? cell?.text}\n
,\n ])\n }\n },\n})\n","\n\n\n","import { buildProps } from '@element-plus/utils'\nimport { datePickerSharedProps, selectionModeWithDefault } from './shared'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\n\nexport const basicMonthTableProps = buildProps({\n ...datePickerSharedProps,\n selectionMode: selectionModeWithDefault('month'),\n})\n\nexport type BasicMonthTableProps = ExtractPropTypes\nexport type BasicMonthTablePropsPublic = __ExtractPublicPropTypes<\n typeof basicMonthTableProps\n>\n","\n\n\n","import { buildProps } from '@element-plus/utils'\nimport { datePickerSharedProps, selectionModeWithDefault } from './shared'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\n\nexport const basicYearTableProps = buildProps({\n ...datePickerSharedProps,\n selectionMode: selectionModeWithDefault('year'),\n} as const)\n\nexport type BasicYearTableProps = ExtractPropTypes\nexport type BasicYearTablePropsPublic = __ExtractPublicPropTypes<\n typeof basicYearTableProps\n>\n","\n\n\n","import type { InjectionKey } from 'vue'\nimport type { CommonPickerContext } from './composables/use-common-picker'\n\nexport const timeUnits = ['hours', 'minutes', 'seconds'] as const\n\nexport const PICKER_BASE_INJECTION_KEY = 'EP_PICKER_BASE'\n\nexport const PICKER_POPPER_OPTIONS_INJECTION_KEY = 'ElPopperOptions'\n\nexport const ROOT_COMMON_PICKER_INJECTION_KEY: InjectionKey =\n Symbol('commonPickerContextKey')\n\nexport const DEFAULT_FORMATS_TIME = 'HH:mm:ss'\n\nexport const DEFAULT_FORMATS_DATE = 'YYYY-MM-DD'\n\nexport const DEFAULT_FORMATS_DATEPICKER = {\n date: DEFAULT_FORMATS_DATE,\n dates: DEFAULT_FORMATS_DATE,\n week: 'gggg[w]ww',\n year: 'YYYY',\n years: 'YYYY',\n month: 'YYYY-MM',\n months: 'YYYY-MM',\n datetime: `${DEFAULT_FORMATS_DATE} ${DEFAULT_FORMATS_TIME}`,\n monthrange: 'YYYY-MM',\n yearrange: 'YYYY',\n daterange: DEFAULT_FORMATS_DATE,\n datetimerange: `${DEFAULT_FORMATS_DATE} ${DEFAULT_FORMATS_TIME}`,\n}\n\nexport type TimeUnit = (typeof timeUnits)[number]\n","import { buildProps, definePropType } from '@element-plus/utils'\nimport { timePanelSharedProps } from './shared'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\nimport type { Dayjs } from 'dayjs'\n\nexport const panelTimePickerProps = buildProps({\n ...timePanelSharedProps,\n datetimeRole: String,\n parsedValue: {\n type: definePropType(Object),\n },\n} as const)\n\nexport type PanelTimePickerProps = ExtractPropTypes\nexport type PanelTimePickerPropsPublic = __ExtractPublicPropTypes<\n typeof panelTimePickerProps\n>\n","import type { Dayjs } from 'dayjs'\nimport type {\n GetDisabledHours,\n GetDisabledMinutes,\n GetDisabledSeconds,\n} from '../common/props'\n\ntype UseTimePanelProps = {\n getAvailableHours: GetDisabledHours\n getAvailableMinutes: GetDisabledMinutes\n getAvailableSeconds: GetDisabledSeconds\n}\n\nexport const useTimePanel = ({\n getAvailableHours,\n getAvailableMinutes,\n getAvailableSeconds,\n}: UseTimePanelProps) => {\n const getAvailableTime = (\n date: Dayjs,\n role: string,\n first: boolean,\n compareDate?: Dayjs\n ) => {\n const availableTimeGetters = {\n hour: getAvailableHours,\n minute: getAvailableMinutes,\n second: getAvailableSeconds,\n } as const\n let result = date\n ;(['hour', 'minute', 'second'] as const).forEach((type) => {\n if (availableTimeGetters[type]) {\n let availableTimeSlots: number[]\n const method = availableTimeGetters[type]\n switch (type) {\n case 'minute': {\n availableTimeSlots = (method as typeof getAvailableMinutes)(\n result.hour(),\n role,\n compareDate\n )\n break\n }\n case 'second': {\n availableTimeSlots = (method as typeof getAvailableSeconds)(\n result.hour(),\n result.minute(),\n role,\n compareDate\n )\n break\n }\n default: {\n availableTimeSlots = (method as typeof getAvailableHours)(\n role,\n compareDate\n )\n break\n }\n }\n\n if (\n availableTimeSlots?.length &&\n !availableTimeSlots.includes(result[type]())\n ) {\n const pos = first ? 0 : availableTimeSlots.length - 1\n result = result[type](availableTimeSlots[pos]) as unknown as Dayjs\n }\n }\n })\n return result\n }\n\n const timePickerOptions: Record void> = {}\n\n const onSetOption = ([key, val]: [string, (...args: any[]) => void]) => {\n timePickerOptions[key] = val\n }\n\n return {\n timePickerOptions,\n\n getAvailableTime,\n onSetOption,\n }\n}\n","import { ref, watch } from 'vue'\nimport { makeList } from '../utils'\n\nimport type { Dayjs } from 'dayjs'\nimport type {\n GetDisabledHours,\n GetDisabledMinutes,\n GetDisabledSeconds,\n} from '../common/props'\n\nconst makeAvailableArr = (disabledList: boolean[]): number[] => {\n const trueOrNumber = (isDisabled: boolean, index: number) =>\n isDisabled || index\n\n const getNumber = (predicate: number | true): predicate is number =>\n predicate !== true\n\n return disabledList.map(trueOrNumber).filter(getNumber)\n}\n\nexport const getTimeLists = (\n disabledHours?: GetDisabledHours,\n disabledMinutes?: GetDisabledMinutes,\n disabledSeconds?: GetDisabledSeconds\n) => {\n const getHoursList = (role: string, compare?: Dayjs) => {\n return makeList(24, disabledHours && (() => disabledHours?.(role, compare)))\n }\n\n const getMinutesList = (hour: number, role: string, compare?: Dayjs) => {\n return makeList(\n 60,\n disabledMinutes && (() => disabledMinutes?.(hour, role, compare))\n )\n }\n\n const getSecondsList = (\n hour: number,\n minute: number,\n role: string,\n compare?: Dayjs\n ) => {\n return makeList(\n 60,\n disabledSeconds && (() => disabledSeconds?.(hour, minute, role, compare))\n )\n }\n\n return {\n getHoursList,\n getMinutesList,\n getSecondsList,\n }\n}\n\nexport const buildAvailableTimeSlotGetter = (\n disabledHours: GetDisabledHours,\n disabledMinutes: GetDisabledMinutes,\n disabledSeconds: GetDisabledSeconds\n) => {\n const { getHoursList, getMinutesList, getSecondsList } = getTimeLists(\n disabledHours,\n disabledMinutes,\n disabledSeconds\n )\n\n const getAvailableHours: GetDisabledHours = (role, compare?) => {\n return makeAvailableArr(getHoursList(role, compare))\n }\n\n const getAvailableMinutes: GetDisabledMinutes = (hour, role, compare?) => {\n return makeAvailableArr(getMinutesList(hour, role, compare))\n }\n\n const getAvailableSeconds: GetDisabledSeconds = (\n hour,\n minute,\n role,\n compare?\n ) => {\n return makeAvailableArr(getSecondsList(hour, minute, role, compare))\n }\n\n return {\n getAvailableHours,\n getAvailableMinutes,\n getAvailableSeconds,\n }\n}\n\nexport const useOldValue = (props: {\n parsedValue?: string | Dayjs | Dayjs[]\n visible: boolean\n}) => {\n const oldValue = ref(props.parsedValue)\n\n watch(\n () => props.visible,\n (val) => {\n if (!val) {\n oldValue.value = props.parsedValue\n }\n }\n )\n\n return oldValue\n}\n","import { buildProps, definePropType } from '@element-plus/utils'\nimport { disabledTimeListsProps } from '../props/shared'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\nimport type { Dayjs } from 'dayjs'\n\nexport const basicTimeSpinnerProps = buildProps({\n role: {\n type: String,\n required: true,\n },\n spinnerDate: {\n type: definePropType(Object),\n required: true,\n },\n showSeconds: {\n type: Boolean,\n default: true,\n },\n arrowControl: Boolean,\n amPmMode: {\n // 'a': am/pm; 'A': AM/PM\n type: definePropType<'a' | 'A' | ''>(String),\n default: '',\n },\n ...disabledTimeListsProps,\n} as const)\n\nexport type BasicTimeSpinnerProps = ExtractPropTypes<\n typeof basicTimeSpinnerProps\n>\nexport type BasicTimeSpinnerPropsPublic = __ExtractPublicPropTypes<\n typeof basicTimeSpinnerProps\n>\n","\n\n\n","\n\n\n","\n\n\n","import { buildProps } from '@element-plus/utils'\nimport { panelRangeSharedProps, panelSharedProps } from './shared'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\n\nexport const panelDateRangeProps = buildProps({\n ...panelSharedProps,\n ...panelRangeSharedProps,\n} as const)\n\nexport type PanelDateRangeProps = ExtractPropTypes\nexport type PanelDateRangePropsPublic = __ExtractPublicPropTypes<\n typeof panelDateRangeProps\n>\n","import { getCurrentInstance, useAttrs, useSlots } from 'vue'\nimport dayjs from 'dayjs'\nimport { isFunction } from '@element-plus/utils'\n\nimport type { SetupContext } from 'vue'\nimport type { useLocale } from '@element-plus/hooks'\nimport type { RangePickerSharedEmits } from '../props/shared'\n\n// FIXME: extract this to `date-picker.ts`\nexport type Shortcut = {\n text: string\n value: [Date, Date] | (() => [Date, Date])\n onClick?: (ctx: Omit, 'expose'>) => void\n}\n\nexport const useShortcut = (lang: ReturnType['lang']) => {\n const { emit } = getCurrentInstance()!\n const attrs = useAttrs()\n const slots = useSlots()\n\n const handleShortcutClick = (shortcut: Shortcut) => {\n const shortcutValues = isFunction(shortcut.value)\n ? shortcut.value()\n : shortcut.value\n\n if (shortcutValues) {\n emit('pick', [\n dayjs(shortcutValues[0]).locale(lang.value),\n dayjs(shortcutValues[1]).locale(lang.value),\n ])\n return\n }\n if (shortcut.onClick) {\n shortcut.onClick({\n attrs,\n slots,\n emit,\n })\n }\n }\n\n return handleShortcutClick\n}\n","import { getCurrentInstance, inject, ref, unref, watch } from 'vue'\nimport dayjs from 'dayjs'\nimport { isArray } from '@element-plus/utils'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport { isEqual } from 'lodash-unified'\nimport { getDefaultValue, isValidRange } from '../utils'\nimport { ROOT_PICKER_INJECTION_KEY } from '../constants'\nimport { useShortcut } from './use-shortcut'\n\nimport type { Ref } from 'vue'\nimport type { Dayjs } from 'dayjs'\nimport type { PanelRangeSharedProps, RangeState } from '../props/shared'\nimport type { DefaultValue } from '../utils'\n\ntype UseRangePickerProps = {\n sortDates: (minDate: Dayjs | undefined, maxDate: Dayjs | undefined) => void\n defaultValue: Ref\n defaultTime?: Ref\n leftDate: Ref\n rightDate: Ref\n step?: number\n unit: 'month' | 'year'\n}\n\nexport const useRangePicker = (\n props: PanelRangeSharedProps,\n {\n defaultValue,\n defaultTime,\n leftDate,\n rightDate,\n step,\n unit,\n\n sortDates,\n }: UseRangePickerProps\n) => {\n const { emit } = getCurrentInstance()!\n\n const { pickerNs } = inject(ROOT_PICKER_INJECTION_KEY)!\n const drpNs = useNamespace('date-range-picker')\n const { t, lang } = useLocale()\n const handleShortcutClick = useShortcut(lang)\n const minDate = ref()\n const maxDate = ref()\n const rangeState = ref({\n endDate: null,\n selecting: false,\n })\n\n const handleChangeRange = (val: RangeState) => {\n rangeState.value = val\n }\n\n const handleRangeConfirm = (visible = false) => {\n const _minDate = unref(minDate)\n const _maxDate = unref(maxDate)\n\n if (isValidRange([_minDate, _maxDate])) {\n emit('pick', [_minDate, _maxDate], visible)\n }\n }\n\n const onSelect = (selecting: boolean) => {\n rangeState.value.selecting = selecting\n if (!selecting) {\n rangeState.value.endDate = null\n }\n }\n\n const parseValue = (parsedValue: PanelRangeSharedProps['parsedValue']) => {\n if (isArray(parsedValue) && parsedValue.length === 2) {\n const [start, end] = parsedValue\n minDate.value = start\n leftDate.value = start\n maxDate.value = end\n sortDates(unref(minDate), unref(maxDate))\n } else {\n restoreDefault()\n }\n }\n\n const restoreDefault = () => {\n let [start, end] = getDefaultValue(unref(defaultValue), {\n lang: unref(lang),\n step,\n unit,\n unlinkPanels: props.unlinkPanels,\n })\n const getShift = (day: Dayjs) => {\n return day.diff(day.startOf('d'), 'ms')\n }\n const maybeTimes = unref(defaultTime)\n if (maybeTimes) {\n let leftShift = 0\n let rightShift = 0\n if (isArray(maybeTimes)) {\n const [timeStart, timeEnd] = maybeTimes.map(dayjs)\n leftShift = getShift(timeStart)\n rightShift = getShift(timeEnd)\n } else {\n const shift = getShift(dayjs(maybeTimes))\n leftShift = shift\n rightShift = shift\n }\n start = start.startOf('d').add(leftShift, 'ms')\n end = end.startOf('d').add(rightShift, 'ms')\n }\n\n minDate.value = undefined\n maxDate.value = undefined\n leftDate.value = start\n rightDate.value = end\n }\n\n watch(\n defaultValue,\n (val) => {\n if (val) {\n restoreDefault()\n }\n },\n { immediate: true }\n )\n\n watch(\n () => props.parsedValue,\n (parsedValue) => {\n if (\n !(parsedValue as [Dayjs, Dayjs])?.length ||\n !isEqual(parsedValue, [minDate.value, maxDate.value])\n ) {\n parseValue(parsedValue)\n }\n },\n {\n immediate: true,\n }\n )\n\n watch(\n () => props.visible,\n () => {\n if (props.visible) {\n parseValue(props.parsedValue)\n }\n },\n { immediate: true }\n )\n\n return {\n minDate,\n maxDate,\n rangeState,\n lang,\n ppNs: pickerNs,\n drpNs,\n\n handleChangeRange,\n handleRangeConfirm,\n handleShortcutClick,\n onSelect,\n parseValue,\n t,\n }\n}\n","import { computed, inject, nextTick, ref } from 'vue'\nimport { useLocale } from '@element-plus/hooks'\nimport { PICKER_BASE_INJECTION_KEY } from '@element-plus/components/time-picker'\nimport { getValidDateOfMonth, getValidDateOfYear } from '../utils'\n\nimport type { PanelDateRangeProps } from '../props/panel-date-range'\nimport type { Dayjs } from 'dayjs'\nimport type { ComputedRef, Ref } from 'vue'\n\ntype CurrentView = 'date' | 'year' | 'month'\ntype CurrentViewRef = { focus: () => void }\n\nexport type Emits = (\n event: 'pick' | 'set-picker-option' | 'calendar-change' | 'panel-change',\n ...args: any[]\n) => void\n\nexport const usePanelDateRange = (\n props: PanelDateRangeProps,\n emit: Emits,\n leftDate: Ref,\n rightDate: Ref\n) => {\n const leftCurrentView = ref('date')\n const leftCurrentViewRef = ref()\n const rightCurrentView = ref('date')\n const rightCurrentViewRef = ref()\n const pickerBase = inject(PICKER_BASE_INJECTION_KEY) as any\n const { disabledDate } = pickerBase.props\n const { t, lang } = useLocale()\n\n const leftYear = computed(() => {\n return leftDate.value.year()\n })\n const leftMonth = computed(() => {\n return leftDate.value.month()\n })\n\n const rightYear = computed(() => {\n return rightDate.value.year()\n })\n const rightMonth = computed(() => {\n return rightDate.value.month()\n })\n\n function computedYearLabel(\n currentView: Ref,\n yearValue: ComputedRef\n ) {\n const yearTranslation = t('el.datepicker.year')\n if (currentView.value === 'year') {\n const startYear = Math.floor(yearValue.value! / 10) * 10\n return yearTranslation\n ? `${startYear} ${yearTranslation} - ${\n startYear + 9\n } ${yearTranslation}`\n : `${startYear} - ${startYear + 9}`\n }\n return `${yearValue.value} ${yearTranslation}`\n }\n\n function focusPicker(currentViewRef?: CurrentViewRef) {\n currentViewRef?.focus()\n }\n\n async function showPicker(\n pickerType: 'left' | 'right',\n view: 'month' | 'year'\n ) {\n if (props.disabled) return\n const currentView =\n pickerType === 'left' ? leftCurrentView : rightCurrentView\n const currentViewRef =\n pickerType === 'left' ? leftCurrentViewRef : rightCurrentViewRef\n currentView.value = view\n await nextTick()\n focusPicker(currentViewRef.value)\n }\n\n async function handlePick(\n mode: 'month' | 'year',\n pickerType: 'left' | 'right',\n value: number\n ) {\n if (props.disabled) return\n const isLeftPicker = pickerType === 'left'\n const startDate = isLeftPicker ? leftDate : rightDate\n const endDate = isLeftPicker ? rightDate : leftDate\n const currentView = isLeftPicker ? leftCurrentView : rightCurrentView\n const currentViewRef = isLeftPicker\n ? leftCurrentViewRef\n : rightCurrentViewRef\n\n if (mode === 'year') {\n const data = startDate.value.year(value)\n startDate.value = getValidDateOfYear(data, lang.value, disabledDate)\n }\n\n if (mode === 'month') {\n startDate.value = getValidDateOfMonth(\n startDate.value,\n startDate.value.year(),\n value,\n lang.value,\n disabledDate\n )\n }\n\n if (!props.unlinkPanels) {\n endDate.value =\n pickerType === 'left'\n ? startDate.value.add(1, 'month')\n : startDate.value.subtract(1, 'month')\n }\n\n currentView.value = mode === 'year' ? 'month' : 'date'\n await nextTick()\n focusPicker(currentViewRef.value)\n handlePanelChange(mode)\n }\n\n function handlePanelChange(mode: 'month' | 'year') {\n emit(\n 'panel-change',\n [leftDate.value.toDate(), rightDate.value.toDate()],\n mode\n )\n }\n\n function adjustDateByView(\n currentView: CurrentView,\n date: Dayjs,\n forward: boolean\n ) {\n const action = forward ? 'add' : 'subtract'\n return currentView === 'year'\n ? date[action](10, 'year')\n : date[action](1, 'year')\n }\n\n return {\n leftCurrentView,\n rightCurrentView,\n leftCurrentViewRef,\n rightCurrentViewRef,\n leftYear,\n rightYear,\n leftMonth,\n rightMonth,\n leftYearLabel: computed(() => computedYearLabel(leftCurrentView, leftYear)),\n rightYearLabel: computed(() =>\n computedYearLabel(rightCurrentView, rightYear)\n ),\n showLeftPicker: (view: 'month' | 'year') => showPicker('left', view),\n showRightPicker: (view: 'month' | 'year') => showPicker('right', view),\n handleLeftYearPick: (year: number) => handlePick('year', 'left', year),\n handleRightYearPick: (year: number) => handlePick('year', 'right', year),\n handleLeftMonthPick: (month: number) => handlePick('month', 'left', month),\n handleRightMonthPick: (month: number) =>\n handlePick('month', 'right', month),\n handlePanelChange,\n adjustDateByView,\n }\n}\n","\n\n\n","import { buildProps } from '@element-plus/utils'\nimport { panelRangeSharedProps } from './shared'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\n\nexport const panelMonthRangeProps = buildProps({\n ...panelRangeSharedProps,\n} as const)\n\nexport const panelMonthRangeEmits = [\n 'pick',\n 'set-picker-option',\n 'calendar-change',\n]\n\nexport type PanelMonthRangeProps = ExtractPropTypes\nexport type PanelMonthRangePropsPublic = __ExtractPublicPropTypes<\n typeof panelMonthRangeProps\n>\n","import { computed } from 'vue'\nimport { useLocale } from '@element-plus/hooks'\n\nimport type { Ref, ToRef } from 'vue'\nimport type { Dayjs } from 'dayjs'\n\nexport const useMonthRangeHeader = ({\n unlinkPanels,\n leftDate,\n rightDate,\n}: {\n unlinkPanels: ToRef\n leftDate: Ref\n rightDate: Ref\n}) => {\n const { t } = useLocale()\n const leftPrevYear = () => {\n leftDate.value = leftDate.value.subtract(1, 'year')\n if (!unlinkPanels.value) {\n rightDate.value = rightDate.value.subtract(1, 'year')\n }\n }\n\n const rightNextYear = () => {\n if (!unlinkPanels.value) {\n leftDate.value = leftDate.value.add(1, 'year')\n }\n rightDate.value = rightDate.value.add(1, 'year')\n }\n\n const leftNextYear = () => {\n leftDate.value = leftDate.value.add(1, 'year')\n }\n\n const rightPrevYear = () => {\n rightDate.value = rightDate.value.subtract(1, 'year')\n }\n const leftLabel = computed(() => {\n return `${leftDate.value.year()} ${t('el.datepicker.year')}`\n })\n\n const rightLabel = computed(() => {\n return `${rightDate.value.year()} ${t('el.datepicker.year')}`\n })\n\n const leftYear = computed(() => {\n return leftDate.value.year()\n })\n\n const rightYear = computed(() => {\n return rightDate.value.year() === leftDate.value.year()\n ? leftDate.value.year() + 1\n : rightDate.value.year()\n })\n\n return {\n leftPrevYear,\n rightNextYear,\n leftNextYear,\n rightPrevYear,\n leftLabel,\n rightLabel,\n leftYear,\n rightYear,\n }\n}\n","\n\n\n","import { buildProps } from '@element-plus/utils'\nimport { panelRangeSharedProps } from './shared'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\n\nexport const panelYearRangeProps = buildProps({\n ...panelRangeSharedProps,\n} as const)\n\nexport const panelYearRangeEmits = [\n 'pick',\n 'set-picker-option',\n 'calendar-change',\n]\n\nexport type PanelYearRangeProps = ExtractPropTypes\nexport type PanelYearRangePropsPublic = __ExtractPublicPropTypes<\n typeof panelYearRangeProps\n>\n","import { computed } from 'vue'\n\nimport type { Ref, ToRef } from 'vue'\nimport type { Dayjs } from 'dayjs'\n\nexport const useYearRangeHeader = ({\n unlinkPanels,\n leftDate,\n rightDate,\n}: {\n unlinkPanels: ToRef\n leftDate: Ref\n rightDate: Ref\n}) => {\n const leftPrevYear = () => {\n leftDate.value = leftDate.value.subtract(10, 'year')\n if (!unlinkPanels.value) {\n rightDate.value = rightDate.value.subtract(10, 'year')\n }\n }\n\n const rightNextYear = () => {\n if (!unlinkPanels.value) {\n leftDate.value = leftDate.value.add(10, 'year')\n }\n rightDate.value = rightDate.value.add(10, 'year')\n }\n\n const leftNextYear = () => {\n leftDate.value = leftDate.value.add(10, 'year')\n }\n\n const rightPrevYear = () => {\n rightDate.value = rightDate.value.subtract(10, 'year')\n }\n\n const leftLabel = computed(() => {\n const leftStartDate = Math.floor(leftDate.value.year() / 10) * 10\n return `${leftStartDate}-${leftStartDate + 9}`\n })\n\n const rightLabel = computed(() => {\n const rightStartDate = Math.floor(rightDate.value.year() / 10) * 10\n return `${rightStartDate}-${rightStartDate + 9}`\n })\n\n const leftYear = computed(() => {\n const leftEndDate = Math.floor(leftDate.value.year() / 10) * 10 + 9\n return leftEndDate\n })\n\n const rightYear = computed(() => {\n const rightStartDate = Math.floor(rightDate.value.year() / 10) * 10\n return rightStartDate\n })\n\n return {\n leftPrevYear,\n rightNextYear,\n leftNextYear,\n rightPrevYear,\n leftLabel,\n rightLabel,\n leftYear,\n rightYear,\n }\n}\n","\n\n\n","import DatePickPanel from './date-picker-com/panel-date-pick.vue'\nimport DateRangePickPanel from './date-picker-com/panel-date-range.vue'\nimport MonthRangePickPanel from './date-picker-com/panel-month-range.vue'\nimport YearRangePickPanel from './date-picker-com/panel-year-range.vue'\n\nimport type { DatePickerType } from './types'\n\nexport const getPanel = function (type: DatePickerType) {\n switch (type) {\n case 'daterange':\n case 'datetimerange': {\n return DateRangePickPanel\n }\n case 'monthrange': {\n return MonthRangePickPanel\n }\n case 'yearrange': {\n return YearRangePickPanel\n }\n default: {\n return DatePickPanel\n }\n }\n}\n","import { computed, ref } from 'vue'\nimport { isEqual } from 'lodash-unified'\nimport { useLocale } from '@element-plus/hooks/use-locale'\nimport { isArray } from '@element-plus/utils'\nimport { UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport { dayOrDaysToDate, formatter, parseDate, valueEquals } from '../utils'\n\nimport type { Dayjs } from 'dayjs'\nimport type {\n DateModelType,\n DayOrDays,\n ModelValueType,\n PickerOptions,\n SingleOrRange,\n UserInput,\n} from '../common/props'\n\ninterface CommonPickerProps {\n modelValue: ModelValueType | null\n valueFormat?: string\n}\ntype CommonPickerEmits = (\n event: 'update:modelValue' | 'calendar-change' | 'panel-change',\n ...args: any[]\n) => void\n\nexport const useCommonPicker = <\n P extends CommonPickerProps,\n E extends CommonPickerEmits,\n>(\n props: P,\n emit: E\n) => {\n const { lang } = useLocale()\n const pickerVisible = ref(false)\n const pickerActualVisible = ref(false)\n const userInput = ref(null)\n\n const valueIsEmpty = computed(() => {\n const { modelValue } = props\n return (\n !modelValue || (isArray(modelValue) && !modelValue.filter(Boolean).length)\n )\n })\n\n const emitInput = (input: SingleOrRange | null) => {\n if (!valueEquals(props.modelValue, input)) {\n let formatted\n if (isArray(input)) {\n formatted = input.map((item) =>\n formatter(item, props.valueFormat, lang.value)\n )\n } else if (input) {\n formatted = formatter(input, props.valueFormat, lang.value)\n }\n const emitVal = input ? formatted : input\n emit(UPDATE_MODEL_EVENT, emitVal, lang.value)\n }\n }\n\n const parsedValue = computed(() => {\n let dayOrDays: DayOrDays\n if (valueIsEmpty.value) {\n if (pickerOptions.value.getDefaultValue) {\n dayOrDays = pickerOptions.value.getDefaultValue()\n }\n } else {\n if (isArray(props.modelValue)) {\n dayOrDays = props.modelValue.map((d) =>\n parseDate(d, props.valueFormat, lang.value)\n ) as [Dayjs, Dayjs]\n } else {\n dayOrDays = parseDate(\n props.modelValue ?? '',\n props.valueFormat,\n lang.value\n )!\n }\n }\n\n if (pickerOptions.value.getRangeAvailableTime) {\n const availableResult = pickerOptions.value.getRangeAvailableTime(\n dayOrDays!\n )\n if (!isEqual(availableResult, dayOrDays!)) {\n dayOrDays = availableResult\n\n // The result is corrected only when model-value exists\n if (!valueIsEmpty.value) {\n emitInput(dayOrDaysToDate(dayOrDays))\n }\n }\n }\n if (isArray(dayOrDays!) && dayOrDays.some((day) => !day)) {\n dayOrDays = [] as unknown as DayOrDays\n }\n return dayOrDays!\n })\n\n const pickerOptions = ref>({})\n\n const onSetPickerOption = (\n e: [T, PickerOptions[T]]\n ) => {\n pickerOptions.value[e[0]] = e[1]\n pickerOptions.value.panelReady = true\n }\n\n const onCalendarChange = (e: [Date, null | Date]) => {\n emit('calendar-change', e)\n }\n\n const onPanelChange = (\n value: [Dayjs, Dayjs],\n mode: 'month' | 'year',\n view: unknown\n ) => {\n emit('panel-change', value, mode, view)\n }\n\n const onPick = (date: any = '', visible = false) => {\n pickerVisible.value = visible\n let result\n if (isArray(date)) {\n result = date.map((_) => _.toDate())\n } else {\n // clear btn emit null\n result = date ? date.toDate() : date\n }\n userInput.value = null\n emitInput(result)\n }\n\n return {\n parsedValue,\n pickerActualVisible,\n pickerOptions,\n pickerVisible,\n userInput,\n valueIsEmpty,\n emitInput,\n onCalendarChange,\n onPanelChange,\n onPick,\n onSetPickerOption,\n }\n}\n\nexport type CommonPickerContext = ReturnType\n","import { defineComponent, inject, provide, reactive, toRefs } from 'vue'\nimport dayjs from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat.js'\nimport advancedFormat from 'dayjs/plugin/advancedFormat.js'\nimport localeData from 'dayjs/plugin/localeData.js'\nimport weekOfYear from 'dayjs/plugin/weekOfYear.js'\nimport weekYear from 'dayjs/plugin/weekYear.js'\nimport dayOfYear from 'dayjs/plugin/dayOfYear.js'\nimport isSameOrAfter from 'dayjs/plugin/isSameOrAfter.js'\nimport isSameOrBefore from 'dayjs/plugin/isSameOrBefore.js'\nimport {\n PICKER_BASE_INJECTION_KEY,\n ROOT_COMMON_PICKER_INJECTION_KEY,\n} from '@element-plus/components/time-picker'\nimport { useNamespace } from '@element-plus/hooks'\nimport { isUndefined } from '@element-plus/utils'\nimport { UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport { datePickerPanelProps } from './props/date-picker-panel'\nimport { ROOT_PICKER_INJECTION_KEY } from './constants'\nimport { getPanel } from './panel-utils'\nimport { useCommonPicker } from '../../time-picker/src/composables/use-common-picker'\n\ndayjs.extend(localeData)\ndayjs.extend(advancedFormat)\ndayjs.extend(customParseFormat)\ndayjs.extend(weekOfYear)\ndayjs.extend(weekYear)\ndayjs.extend(dayOfYear)\ndayjs.extend(isSameOrAfter)\ndayjs.extend(isSameOrBefore)\n\nexport default defineComponent({\n name: 'ElDatePickerPanel',\n install: null,\n props: datePickerPanelProps,\n emits: [\n UPDATE_MODEL_EVENT,\n 'calendar-change',\n 'panel-change',\n 'visible-change',\n 'pick',\n ],\n setup(props, { slots, emit }) {\n const ns = useNamespace('picker-panel')\n const pickerInjection = inject(PICKER_BASE_INJECTION_KEY, undefined)\n if (isUndefined(pickerInjection)) {\n const _props = reactive({\n ...toRefs(props),\n })\n provide(PICKER_BASE_INJECTION_KEY, {\n props: _props,\n })\n }\n\n provide(ROOT_PICKER_INJECTION_KEY, {\n slots,\n pickerNs: ns,\n })\n const {\n parsedValue,\n onCalendarChange,\n onPanelChange,\n onSetPickerOption,\n onPick,\n } = inject(\n ROOT_COMMON_PICKER_INJECTION_KEY,\n () => useCommonPicker(props, emit),\n true\n )\n\n return () => {\n const Component = getPanel(props.type)\n return (\n \n {slots}\n \n )\n }\n },\n})\n","import { withInstall } from '@element-plus/utils'\nimport DatePickerPanel from './src/date-picker-panel'\n\nimport type { SFCWithInstall } from '@element-plus/utils'\n\nexport const ElDatePickerPanel: SFCWithInstall =\n withInstall(DatePickerPanel)\n\nexport default ElDatePickerPanel\nexport * from './src/constants'\nexport * from './src/props/date-picker-panel'\nexport * from './src/types'\nexport type { DatePickerPanelInstance } from './src/instance'\n","import { placements } from '@popperjs/core'\nimport { buildProps, definePropType } from '@element-plus/utils'\nimport {\n useAriaProps,\n useEmptyValuesProps,\n useSizeProp,\n} from '@element-plus/hooks'\nimport { useTooltipContentProps } from '@element-plus/components/tooltip'\nimport { CircleClose } from '@element-plus/icons-vue'\nimport { disabledTimeListsProps } from '../props/shared'\n\nimport type { Component, ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\nimport type { Options } from '@popperjs/core'\nimport type { Dayjs } from 'dayjs'\nimport type { Placement } from '@element-plus/components/popper'\n\nexport type SingleOrRange = T | [T, T]\nexport type DateModelType = number | string | Date\nexport type ModelValueType = DateModelType | number[] | string[] | Date[]\nexport type DayOrDays = SingleOrRange\nexport type DateOrDates = SingleOrRange\nexport type UserInput = SingleOrRange\nexport type GetDisabledHours = (role: string, comparingDate?: Dayjs) => number[]\nexport type GetDisabledMinutes = (\n hour: number,\n role: string,\n comparingDate?: Dayjs\n) => number[]\nexport type GetDisabledSeconds = (\n hour: number,\n minute: number,\n role: string,\n comparingDate?: Dayjs\n) => number[]\n\nexport const timePickerDefaultProps = buildProps({\n /**\n * @description this prop decides if the date picker panel pops up when the input is focused\n */\n automaticDropdown: {\n type: Boolean,\n default: true,\n },\n /**\n * @description same as `id` in native input\n */\n id: {\n type: definePropType>([Array, String]),\n },\n /**\n * @description same as `name` in native input\n */\n name: {\n type: definePropType>([Array, String]),\n },\n /**\n * @description custom class name for TimePicker's dropdown\n */\n popperClass: useTooltipContentProps.popperClass,\n /**\n * @description custom style for TimePicker's dropdown\n */\n popperStyle: useTooltipContentProps.popperStyle,\n /**\n * @description format of the displayed value in the input box\n */\n format: String,\n /**\n * @description optional, format of binding value. If not specified, the binding value will be a Date object\n */\n valueFormat: String,\n /**\n * @description optional, format of the date displayed in input's inner panel\n */\n dateFormat: String,\n /**\n * @description optional, format of the time displayed in input's inner panel\n */\n timeFormat: String,\n /**\n * @description type of the picker\n */\n type: {\n type: String,\n default: '',\n },\n /**\n * @description whether to show clear button\n */\n clearable: {\n type: Boolean,\n default: true,\n },\n /**\n * @description Custom clear icon component\n */\n clearIcon: {\n type: definePropType([String, Object]),\n default: CircleClose,\n },\n /**\n * @description whether the input is editable\n */\n editable: {\n type: Boolean,\n default: true,\n },\n /**\n * @description Custom prefix icon component\n */\n prefixIcon: {\n type: definePropType([String, Object]),\n default: '',\n },\n /**\n * @description size of Input\n */\n size: useSizeProp,\n /**\n * @description whether TimePicker is read only\n */\n readonly: Boolean,\n /**\n * @description whether TimePicker is disabled\n */\n disabled: Boolean,\n /**\n * @description placeholder in non-range mode\n */\n placeholder: {\n type: String,\n default: '',\n },\n /**\n * @description [popper.js](https://popper.js.org/docs/v2/) parameters\n */\n popperOptions: {\n type: definePropType>(Object),\n default: () => ({}),\n },\n /**\n * @description binding value, if it is an array, the length should be 2\n */\n modelValue: {\n type: definePropType([Date, Array, String, Number]),\n default: '',\n },\n /**\n * @description range separator\n */\n rangeSeparator: {\n type: String,\n default: '-',\n },\n /**\n * @description placeholder for the start date in range mode\n */\n startPlaceholder: String,\n /**\n * @description placeholder for the end date in range mode\n */\n endPlaceholder: String,\n /**\n * @description optional, default date of the calendar\n */\n defaultValue: {\n type: definePropType>([Date, Array]),\n },\n /**\n * @description optional, the time value to use when selecting date range\n */\n defaultTime: {\n type: definePropType>([Date, Array]),\n },\n /**\n * @description whether to pick a time range\n */\n isRange: Boolean,\n ...disabledTimeListsProps,\n /**\n * @description a function determining if a date is disabled with that date as its parameter. Should return a Boolean\n */\n disabledDate: {\n type: Function,\n },\n /**\n * @description set custom className\n */\n cellClassName: {\n type: Function,\n },\n /**\n * @description an object array to set shortcut options\n */\n shortcuts: {\n type: Array,\n default: () => [],\n },\n /**\n * @description whether to pick time using arrow buttons\n */\n arrowControl: Boolean,\n /**\n * @description input tabindex\n */\n tabindex: {\n type: definePropType([String, Number]),\n default: 0,\n },\n /**\n * @description whether to trigger form validation\n */\n validateEvent: {\n type: Boolean,\n default: true,\n },\n /**\n * @description unlink two date-panels in range-picker\n */\n unlinkPanels: Boolean,\n /**\n * @description position of dropdown\n */\n placement: {\n type: definePropType(String),\n values: placements,\n default: 'bottom',\n },\n /**\n * @description list of possible positions for dropdown\n */\n fallbackPlacements: {\n type: definePropType(Array),\n default: ['bottom', 'top', 'right', 'left'],\n },\n ...useEmptyValuesProps,\n ...useAriaProps(['ariaLabel']),\n /**\n * @description whether to show the now button\n */\n showNow: {\n type: Boolean,\n default: true,\n },\n /**\n * @description whether to show footer\n */\n showConfirm: {\n type: Boolean,\n default: true,\n },\n /**\n * @description whether to show footer\n */\n showFooter: {\n type: Boolean,\n default: true,\n },\n /**\n * @description whether to show the number of the calendar week\n */\n showWeekNumber: Boolean,\n} as const)\n\nexport type TimePickerDefaultProps = ExtractPropTypes<\n typeof timePickerDefaultProps\n>\nexport type TimePickerDefaultPropsPublic = __ExtractPublicPropTypes<\n typeof timePickerDefaultProps\n>\n\nexport interface PickerOptions {\n isValidValue: (date: DayOrDays) => boolean\n handleKeydownInput: (event: KeyboardEvent) => void\n parseUserInput: (value: UserInput) => DayOrDays\n getRangeAvailableTime: (date: DayOrDays) => DayOrDays\n getDefaultValue: () => DayOrDays\n panelReady: boolean\n handleClear: () => void\n handleFocusPicker?: () => void\n}\n\nexport const timePickerRangeTriggerProps = buildProps({\n id: {\n type: definePropType(Array),\n },\n name: {\n type: definePropType(Array),\n },\n modelValue: {\n type: definePropType([Array, String]),\n },\n startPlaceholder: String,\n endPlaceholder: String,\n disabled: Boolean,\n} as const)\n\n/**\n * @deprecated Use `timePickerRangeTriggerProps` instead. This will be removed in future versions.\n */\nexport const timePickerRngeTriggerProps = timePickerRangeTriggerProps\n","import { timePickerDefaultProps } from '@element-plus/components/time-picker'\nimport { buildProps, definePropType } from '@element-plus/utils'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\nimport type { DatePickerType } from '@element-plus/components/date-picker-panel/src/types'\n\nexport const datePickerProps = buildProps({\n ...timePickerDefaultProps,\n /**\n * @description type of the picker\n */\n type: {\n type: definePropType(String),\n default: 'date',\n },\n} as const)\n\nexport type DatePickerProps = ExtractPropTypes\nexport type DatePickerPropsPublic = __ExtractPublicPropTypes<\n typeof datePickerProps\n>\n","\n\n\n","\n\n\n","import { computed, defineComponent, provide, reactive, ref, toRef } from 'vue'\nimport {\n CommonPicker,\n DEFAULT_FORMATS_DATE,\n DEFAULT_FORMATS_DATEPICKER,\n PICKER_POPPER_OPTIONS_INJECTION_KEY,\n} from '@element-plus/components/time-picker'\nimport { UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport {\n ElDatePickerPanel,\n ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY,\n} from '@element-plus/components/date-picker-panel'\nimport { datePickerProps } from './props'\n\nimport type {\n DateModelType,\n SingleOrRange,\n} from '@element-plus/components/time-picker'\nimport type { DatePickerExpose } from './instance'\n\nexport default defineComponent({\n name: 'ElDatePicker',\n install: null,\n props: datePickerProps,\n emits: [UPDATE_MODEL_EVENT],\n setup(props, { expose, emit, slots }) {\n const isDefaultFormat = computed(() => {\n return !props.format\n })\n provide(ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY, isDefaultFormat)\n provide(\n PICKER_POPPER_OPTIONS_INJECTION_KEY,\n reactive(toRef(props, 'popperOptions'))\n )\n\n const commonPicker = ref>()\n const refProps: DatePickerExpose = {\n focus: () => {\n commonPicker.value?.focus()\n },\n blur: () => {\n commonPicker.value?.blur()\n },\n handleOpen: () => {\n commonPicker.value?.handleOpen()\n },\n handleClose: () => {\n commonPicker.value?.handleClose()\n },\n }\n\n expose(refProps)\n\n const onModelValueUpdated = (val: SingleOrRange | null) => {\n emit(UPDATE_MODEL_EVENT, val)\n }\n\n return () => {\n // since props always have all defined keys on it, {format, ...props} will always overwrite format\n // pick props.format or provide default value here before spreading\n const format =\n props.format ??\n (DEFAULT_FORMATS_DATEPICKER[props.type] || DEFAULT_FORMATS_DATE)\n\n return (\n \n {{\n default: (scopedProps: /**FIXME: remove any type */ any) => (\n \n {slots}\n \n ),\n 'range-separator': slots['range-separator'],\n }}\n \n )\n }\n },\n})\n","import { withInstall } from '@element-plus/utils'\nimport DatePicker from './src/date-picker'\n\nimport type { SFCWithInstall } from '@element-plus/utils'\n\nexport const ElDatePicker: SFCWithInstall =\n withInstall(DatePicker)\n\nexport default ElDatePicker\nexport * from './src/props'\nexport type { DatePickerInstance } from './src/instance'\n","\n\n\n","import { buildProps } from '@element-plus/utils'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\n\nexport const emptyProps = buildProps({\n /**\n * @description image URL of empty\n */\n image: {\n type: String,\n default: '',\n },\n /**\n * @description image size (width) of empty\n */\n imageSize: Number,\n /**\n * @description description of empty\n */\n description: {\n type: String,\n default: '',\n },\n} as const)\n\nexport type EmptyProps = ExtractPropTypes\nexport type EmptyPropsPublic = __ExtractPublicPropTypes\n","\n\n\n","import { withInstall } from '@element-plus/utils'\nimport Empty from './src/empty.vue'\n\nimport type { SFCWithInstall } from '@element-plus/utils'\n\nexport const ElEmpty: SFCWithInstall = withInstall(Empty)\nexport default ElEmpty\n\nexport * from './src/empty'\nexport type { EmptyInstance } from './src/instance'\n","import {\n buildProps,\n definePropType,\n iconPropType,\n isArray,\n isNumber,\n isString,\n isUndefined,\n} from '@element-plus/utils'\nimport { useSizeProp } from '@element-plus/hooks'\nimport {\n CHANGE_EVENT,\n EVENT_CODE,\n INPUT_EVENT,\n UPDATE_MODEL_EVENT,\n} from '@element-plus/constants'\nimport { tagProps } from '@element-plus/components/tag/src/tag'\nimport { CircleClose } from '@element-plus/icons-vue'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\n\nexport const inputTagProps = buildProps({\n /**\n * @description binding value\n */\n modelValue: {\n type: definePropType(Array),\n },\n /**\n * @description max number tags that can be enter\n */\n max: Number,\n /**\n * @description tag type\n */\n tagType: { ...tagProps.type, default: 'info' },\n /**\n * @description tag effect\n */\n tagEffect: tagProps.effect,\n /**\n * @description the key to trigger input tag\n */\n trigger: {\n type: definePropType<'Enter' | 'Space'>(String),\n default: EVENT_CODE.enter,\n },\n /**\n * @description whether tags can be dragged\n */\n draggable: Boolean,\n /**\n * @description add a tag when a delimiter is matched\n */\n delimiter: {\n type: [String, RegExp],\n default: '',\n },\n /**\n * @description input box size\n */\n size: useSizeProp,\n /**\n * @description whether to show clear button\n */\n clearable: Boolean,\n /**\n * @description custom clear icon component\n */\n clearIcon: {\n type: iconPropType,\n default: CircleClose,\n },\n /**\n * @description whether to disable input-tag\n */\n disabled: {\n type: Boolean,\n default: undefined,\n },\n /**\n * @description whether to trigger form validation\n */\n validateEvent: {\n type: Boolean,\n default: true,\n },\n /**\n * @description native input readonly\n */\n readonly: Boolean,\n /**\n * @description native input autofocus\n */\n autofocus: Boolean,\n /**\n * @description same as `id` in native input\n */\n id: {\n type: String,\n default: undefined,\n },\n /**\n * @description same as `tabindex` in native input\n */\n tabindex: {\n type: [String, Number],\n default: 0,\n },\n /**\n * @description same as `maxlength` in native input\n */\n maxlength: {\n type: [String, Number],\n },\n /**\n * @description same as `minlength` in native input\n */\n minlength: {\n type: [String, Number],\n },\n /**\n * @description placeholder of input\n */\n placeholder: String,\n /**\n * @description native input autocomplete\n */\n autocomplete: {\n type: definePropType(String),\n default: 'off',\n },\n /**\n * @description whether to save the input value when the input loses focus\n */\n saveOnBlur: {\n type: Boolean,\n default: true,\n },\n /**\n * @description whether to collapse tags to a text\n */\n collapseTags: Boolean,\n /**\n * @description whether show all selected tags when mouse hover text of collapse-tags. To use this, `collapse-tags` must be true\n */\n collapseTagsTooltip: Boolean,\n /**\n * @description the max tags number to be shown. To use this, `collapse-tags` must be true\n */\n maxCollapseTags: {\n type: Number,\n default: 1,\n },\n /**\n * @description native `aria-label` attribute\n */\n ariaLabel: String,\n} as const)\nexport type InputTagProps = ExtractPropTypes\nexport type InputTagPropsPublic = __ExtractPublicPropTypes\n\nexport const inputTagEmits = {\n [UPDATE_MODEL_EVENT]: (value?: string[]) =>\n isArray(value) || isUndefined(value),\n [CHANGE_EVENT]: (value?: string[]) => isArray(value) || isUndefined(value),\n [INPUT_EVENT]: (value: string) => isString(value),\n 'add-tag': (value: string | string[]) => isString(value) || isArray(value),\n 'remove-tag': (value: string, index: number) =>\n isString(value) && isNumber(index),\n 'drag-tag': (oldIndex: number, newIndex: number, value: string) =>\n isNumber(oldIndex) && isNumber(newIndex) && isString(value),\n focus: (evt: FocusEvent) => evt instanceof FocusEvent,\n blur: (evt: FocusEvent) => evt instanceof FocusEvent,\n clear: () => true,\n}\nexport type InputTagEmits = typeof inputTagEmits\n","import { computed, ref, shallowRef, watch } from 'vue'\nimport {\n CHANGE_EVENT,\n EVENT_CODE,\n INPUT_EVENT,\n UPDATE_MODEL_EVENT,\n} from '@element-plus/constants'\nimport {\n debugWarn,\n ensureArray,\n getEventCode,\n isAndroid,\n isUndefined,\n} from '@element-plus/utils'\nimport { useComposition, useFocusController } from '@element-plus/hooks'\nimport { useFormDisabled, useFormSize } from '@element-plus/components/form'\n\nimport type { TooltipInstance } from '@element-plus/components/tooltip'\nimport type { EmitFn } from '@element-plus/utils'\nimport type { FormItemContext } from '@element-plus/components/form'\nimport type { InputTagEmits, InputTagProps } from '../input-tag'\n\ninterface UseInputTagOptions {\n props: InputTagProps\n emit: EmitFn\n formItem?: FormItemContext\n}\n\nexport function useInputTag({ props, emit, formItem }: UseInputTagOptions) {\n const disabled = useFormDisabled()\n const size = useFormSize()\n\n const inputRef = shallowRef()\n const inputValue = ref()\n const tagTooltipRef = ref()\n\n const tagSize = computed(() => {\n return ['small'].includes(size.value) ? 'small' : 'default'\n })\n const placeholder = computed(() => {\n return props.modelValue?.length ? undefined : props.placeholder\n })\n const closable = computed(() => !(props.readonly || disabled.value))\n const inputLimit = computed(() => {\n return isUndefined(props.max)\n ? false\n : (props.modelValue?.length ?? 0) >= props.max\n })\n const showTagList = computed(() => {\n return props.collapseTags\n ? props.modelValue?.slice(0, props.maxCollapseTags)\n : props.modelValue\n })\n const collapseTagList = computed(() => {\n return props.collapseTags\n ? props.modelValue?.slice(props.maxCollapseTags)\n : []\n })\n\n const addTagsEmit = (value: string | string[]) => {\n const list = [...(props.modelValue ?? []), ...ensureArray(value)]\n\n emit(UPDATE_MODEL_EVENT, list)\n emit(CHANGE_EVENT, list)\n emit('add-tag', value)\n inputValue.value = undefined\n }\n\n const getDelimitedTags = (input: string) => {\n const tags = input\n .split(props.delimiter)\n .filter((val) => val && val !== input)\n if (props.max) {\n const maxInsert = props.max - (props.modelValue?.length ?? 0)\n tags.splice(maxInsert)\n }\n return tags.length === 1 ? tags[0] : tags\n }\n\n const handleInput = (event: Event) => {\n if (inputLimit.value) {\n inputValue.value = undefined\n return\n }\n\n if (isComposing.value) return\n if (props.delimiter && inputValue.value) {\n const tags = getDelimitedTags(inputValue.value)\n if (tags.length) {\n addTagsEmit(tags)\n }\n }\n emit(INPUT_EVENT, (event.target as HTMLInputElement).value)\n }\n\n const handleKeydown = (event: KeyboardEvent) => {\n if (isComposing.value) return\n const code = getEventCode(event)\n\n switch (code) {\n case props.trigger:\n event.preventDefault()\n event.stopPropagation()\n handleAddTag()\n break\n case EVENT_CODE.numpadEnter:\n if (props.trigger === EVENT_CODE.enter) {\n event.preventDefault()\n event.stopPropagation()\n handleAddTag()\n }\n break\n case EVENT_CODE.backspace:\n if (!inputValue.value && props.modelValue?.length) {\n event.preventDefault()\n event.stopPropagation()\n handleRemoveTag(props.modelValue.length - 1)\n }\n break\n }\n }\n\n const handleKeyup = (event: KeyboardEvent) => {\n if (isComposing.value || !isAndroid()) return\n const code = getEventCode(event)\n\n switch (code) {\n case EVENT_CODE.space:\n if (props.trigger === EVENT_CODE.space) {\n event.preventDefault()\n event.stopPropagation()\n handleAddTag()\n }\n break\n }\n }\n\n const handleAddTag = () => {\n const value = inputValue.value?.trim()\n if (!value || inputLimit.value) return\n addTagsEmit(value)\n }\n\n const handleRemoveTag = (index: number) => {\n const value = (props.modelValue ?? []).slice()\n const [item] = value.splice(index, 1)\n\n emit(UPDATE_MODEL_EVENT, value)\n emit(CHANGE_EVENT, value)\n emit('remove-tag', item, index)\n }\n\n const handleClear = () => {\n inputValue.value = undefined\n emit(UPDATE_MODEL_EVENT, undefined)\n emit(CHANGE_EVENT, undefined)\n emit('clear')\n }\n\n const handleDragged = (\n draggingIndex: number,\n dropIndex: number,\n type: 'before' | 'after'\n ) => {\n const value = (props.modelValue ?? []).slice()\n const [draggedItem] = value.splice(draggingIndex, 1)\n const step =\n dropIndex > draggingIndex && type === 'before'\n ? -1\n : dropIndex < draggingIndex && type === 'after'\n ? 1\n : 0\n\n value.splice(dropIndex + step, 0, draggedItem)\n emit(UPDATE_MODEL_EVENT, value)\n emit(CHANGE_EVENT, value)\n emit('drag-tag', draggingIndex, dropIndex + step, draggedItem)\n }\n\n const focus = () => {\n inputRef.value?.focus()\n }\n\n const blur = () => {\n inputRef.value?.blur()\n }\n\n const { wrapperRef, isFocused } = useFocusController(inputRef, {\n disabled,\n beforeBlur(event) {\n return tagTooltipRef.value?.isFocusInsideContent(event)\n },\n afterBlur() {\n if (props.saveOnBlur) {\n handleAddTag()\n } else {\n inputValue.value = undefined\n }\n\n if (props.validateEvent) {\n formItem?.validate?.('blur').catch((err) => debugWarn(err))\n }\n },\n })\n\n const {\n isComposing,\n handleCompositionStart,\n handleCompositionUpdate,\n handleCompositionEnd,\n } = useComposition({ afterComposition: handleInput })\n\n watch(\n () => props.modelValue,\n () => {\n if (props.validateEvent) {\n formItem?.validate?.(CHANGE_EVENT).catch((err) => debugWarn(err))\n }\n }\n )\n\n return {\n inputRef,\n wrapperRef,\n tagTooltipRef,\n isFocused,\n isComposing,\n inputValue,\n size,\n tagSize,\n placeholder,\n closable,\n disabled,\n inputLimit,\n showTagList,\n collapseTagList,\n handleDragged,\n handleInput,\n handleKeydown,\n handleKeyup,\n handleAddTag,\n handleRemoveTag,\n handleClear,\n handleCompositionStart,\n handleCompositionUpdate,\n handleCompositionEnd,\n focus,\n blur,\n }\n}\n","import { ref } from 'vue'\n\nexport function useHovering() {\n const hovering = ref(false)\n\n const handleMouseEnter = () => {\n hovering.value = true\n }\n\n const handleMouseLeave = () => {\n hovering.value = false\n }\n\n return {\n hovering,\n handleMouseEnter,\n handleMouseLeave,\n }\n}\n","import { ref, shallowRef } from 'vue'\nimport { useNamespace } from '@element-plus/hooks'\nimport { getStyle, isUndefined, setStyle } from '@element-plus/utils'\n\nimport type { ShallowRef } from 'vue'\n\ntype DropType = 'before' | 'after'\n\ninterface UseDragTagOptions {\n wrapperRef: ShallowRef\n handleDragged: (\n draggingIndex: number,\n dropIndex: number,\n type: DropType\n ) => void\n afterDragged?: () => void\n}\n\nexport function useDragTag({\n wrapperRef,\n handleDragged,\n afterDragged,\n}: UseDragTagOptions) {\n const ns = useNamespace('input-tag')\n const dropIndicatorRef = shallowRef()\n const showDropIndicator = ref(false)\n\n let draggingIndex: number | undefined\n let draggingTag: HTMLElement | null\n let dropIndex: number | undefined\n let dropType: DropType | undefined\n\n function getTagClassName(index: number) {\n return `.${ns.e('inner')} .${ns.namespace.value}-tag:nth-child(${\n index + 1\n })`\n }\n\n function handleDragStart(event: DragEvent, index: number) {\n draggingIndex = index\n draggingTag = wrapperRef.value!.querySelector(\n getTagClassName(index)\n )\n\n if (draggingTag) {\n draggingTag.style.opacity = '0.5'\n }\n event.dataTransfer!.effectAllowed = 'move'\n }\n\n function handleDragOver(event: DragEvent, index: number) {\n dropIndex = index\n event.preventDefault()\n event.dataTransfer!.dropEffect = 'move'\n\n if (isUndefined(draggingIndex) || draggingIndex === index) {\n showDropIndicator.value = false\n return\n }\n\n const dropPosition = wrapperRef\n .value!.querySelector(getTagClassName(index))!\n .getBoundingClientRect()\n const dropPrev = !(draggingIndex + 1 === index)\n const dropNext = !(draggingIndex - 1 === index)\n const distance = event.clientX - dropPosition.left\n const prevPercent = dropPrev ? (dropNext ? 0.5 : 1) : -1\n const nextPercent = dropNext ? (dropPrev ? 0.5 : 0) : 1\n\n if (distance <= dropPosition.width * prevPercent) {\n dropType = 'before'\n } else if (distance > dropPosition.width * nextPercent) {\n dropType = 'after'\n } else {\n dropType = undefined\n }\n\n const innerEl = wrapperRef.value!.querySelector(\n `.${ns.e('inner')}`\n )!\n const innerPosition = innerEl.getBoundingClientRect()\n const gap = Number.parseFloat(getStyle(innerEl, 'gap')) / 2\n\n const indicatorTop = dropPosition.top - innerPosition.top\n let indicatorLeft = -9999\n\n if (dropType === 'before') {\n indicatorLeft = Math.max(\n dropPosition.left - innerPosition.left - gap,\n Math.floor(-gap / 2)\n )\n } else if (dropType === 'after') {\n const left = dropPosition.right - innerPosition.left\n indicatorLeft =\n left + (innerPosition.width === left ? Math.floor(gap / 2) : gap)\n }\n\n setStyle(dropIndicatorRef.value!, {\n top: `${indicatorTop}px`,\n left: `${indicatorLeft}px`,\n })\n showDropIndicator.value = !!dropType\n }\n\n function handleDragEnd(event: DragEvent) {\n event.preventDefault()\n\n if (draggingTag) {\n draggingTag.style.opacity = ''\n }\n\n if (\n dropType &&\n !isUndefined(draggingIndex) &&\n !isUndefined(dropIndex) &&\n draggingIndex !== dropIndex\n ) {\n handleDragged(draggingIndex, dropIndex, dropType)\n }\n\n showDropIndicator.value = false\n draggingIndex = undefined\n draggingTag = null\n dropIndex = undefined\n dropType = undefined\n afterDragged?.()\n }\n\n return {\n dropIndicatorRef,\n showDropIndicator,\n handleDragStart,\n handleDragOver,\n handleDragEnd,\n }\n}\n","import { computed, reactive, ref, useAttrs, useSlots } from 'vue'\nimport { useNamespace } from '@element-plus/hooks'\nimport { MINIMUM_INPUT_WIDTH } from '@element-plus/constants'\nimport { useResizeObserver } from '@vueuse/core'\n\nimport type { ComputedRef, Ref, StyleValue } from 'vue'\nimport type { ComponentSize } from '@element-plus/constants'\nimport type { InputTagProps } from '../input-tag'\n\ninterface UseInputTagDomOptions {\n props: InputTagProps\n isFocused: Ref\n hovering: Ref\n disabled: ComputedRef\n inputValue: Ref\n size: ComputedRef\n validateState: ComputedRef\n validateIcon: ComputedRef\n needStatusIcon: ComputedRef\n}\n\nexport function useInputTagDom({\n props,\n isFocused,\n hovering,\n disabled,\n inputValue,\n size,\n validateState,\n validateIcon,\n needStatusIcon,\n}: UseInputTagDomOptions) {\n const attrs = useAttrs()\n const slots = useSlots()\n const ns = useNamespace('input-tag')\n const nsInput = useNamespace('input')\n\n const collapseItemRef = ref()\n const innerRef = ref()\n\n const containerKls = computed(() => [\n ns.b(),\n ns.is('focused', isFocused.value),\n ns.is('hovering', hovering.value),\n ns.is('disabled', disabled.value),\n ns.m(size.value),\n ns.e('wrapper'),\n attrs.class,\n ])\n const containerStyle = computed(() => [attrs.style as StyleValue])\n const innerKls = computed(() => [\n ns.e('inner'),\n ns.is('draggable', props.draggable),\n ns.is('left-space', !props.modelValue?.length && !slots.prefix),\n ns.is('right-space', !props.modelValue?.length && !showSuffix.value),\n ])\n const showClear = computed(() => {\n return (\n props.clearable &&\n !disabled.value &&\n !props.readonly &&\n (props.modelValue?.length || inputValue.value) &&\n (isFocused.value || hovering.value)\n )\n })\n const showSuffix = computed(() => {\n return (\n slots.suffix ||\n showClear.value ||\n (validateState.value && validateIcon.value && needStatusIcon.value)\n )\n })\n\n const states = reactive({\n innerWidth: 0,\n collapseItemWidth: 0,\n })\n\n const getGapWidth = () => {\n if (!innerRef.value) return 0\n const style = window.getComputedStyle(innerRef.value)\n return Number.parseFloat(style.gap || '6px')\n }\n\n const resetInnerWidth = () => {\n states.innerWidth = Number.parseFloat(\n window.getComputedStyle(innerRef.value!).width\n )\n }\n\n const resetCollapseItemWidth = () => {\n states.collapseItemWidth =\n collapseItemRef.value!.getBoundingClientRect().width\n }\n\n const tagStyle = computed(() => {\n if (!props.collapseTags) return {}\n const gapWidth = getGapWidth()\n\n const inputSlotWidth = gapWidth + MINIMUM_INPUT_WIDTH\n\n const maxWidth =\n collapseItemRef.value && props.maxCollapseTags === 1\n ? states.innerWidth -\n states.collapseItemWidth -\n gapWidth -\n inputSlotWidth\n : states.innerWidth - inputSlotWidth\n\n return { maxWidth: `${Math.max(maxWidth, 0)}px` }\n })\n\n useResizeObserver(innerRef, resetInnerWidth)\n useResizeObserver(collapseItemRef, resetCollapseItemWidth)\n\n return {\n ns,\n nsInput,\n containerKls,\n containerStyle,\n innerKls,\n showClear,\n showSuffix,\n tagStyle,\n collapseItemRef,\n innerRef,\n }\n}\n","\n\n\n","import { withInstall } from '@element-plus/utils'\nimport InputTag from './src/input-tag.vue'\n\nimport type { SFCWithInstall } from '@element-plus/utils'\n\nexport const ElInputTag: SFCWithInstall = withInstall(InputTag)\nexport default ElInputTag\n\nexport * from './src/input-tag'\nexport type { InputTagInstance } from './src/instance'\n","import { buildProps, iconPropType } from '@element-plus/utils'\n\nimport type { ExtractPropTypes, PropType, __ExtractPublicPropTypes } from 'vue'\nimport type Link from './link.vue'\n\nexport const linkProps = buildProps({\n /**\n * @description type\n */\n type: {\n type: String,\n values: ['primary', 'success', 'warning', 'info', 'danger', 'default'],\n default: undefined,\n },\n /**\n * @description when underlines should appear\n */\n underline: {\n type: [Boolean, String],\n values: [true, false, 'always', 'never', 'hover'],\n default: undefined,\n },\n /**\n * @description whether the component is disabled\n */\n disabled: Boolean,\n /**\n * @description same as native hyperlink's `href`\n */\n href: { type: String, default: '' },\n /**\n * @description same as native hyperlink's `target`\n */\n target: {\n type: String as PropType<'_blank' | '_parent' | '_self' | '_top' | string>,\n default: '_self',\n },\n /**\n * @description icon component\n */\n icon: {\n type: iconPropType,\n },\n} as const)\nexport type LinkProps = ExtractPropTypes\nexport type LinkPropsPublic = __ExtractPublicPropTypes\n\nexport const linkEmits = {\n click: (evt: MouseEvent) => evt instanceof MouseEvent,\n}\nexport type LinkEmits = typeof linkEmits\n\nexport type LinkInstance = InstanceType & unknown\nexport interface LinkConfigContext {\n type?: string\n underline?: string | boolean\n}\n","\n\n\n","import { withInstall } from '@element-plus/utils'\nimport Link from './src/link.vue'\n\nimport type { SFCWithInstall } from '@element-plus/utils'\n\nexport const ElLink: SFCWithInstall = withInstall(Link)\nexport default ElLink\n\nexport * from './src/link'\n","// @ts-nocheck\nimport { getEventCode, triggerEvent } from '@element-plus/utils'\nimport { EVENT_CODE } from '@element-plus/constants'\n\nimport type MenuItem from './menu-item'\n\nclass SubMenu {\n public subMenuItems: NodeList\n public subIndex = 0\n constructor(\n public parent: MenuItem,\n public domNode: ParentNode\n ) {\n this.subIndex = 0\n this.init()\n }\n\n init(): void {\n this.subMenuItems = this.domNode.querySelectorAll('li')\n this.addListeners()\n }\n\n gotoSubIndex(idx: number): void {\n if (idx === this.subMenuItems.length) {\n idx = 0\n } else if (idx < 0) {\n idx = this.subMenuItems.length - 1\n }\n ;(this.subMenuItems[idx] as HTMLElement).focus()\n this.subIndex = idx\n }\n\n addListeners(): void {\n const parentNode = this.parent.domNode\n Array.prototype.forEach.call(this.subMenuItems, (el: Element) => {\n el.addEventListener('keydown', (event: KeyboardEvent) => {\n const code = getEventCode(event)\n let prevDef = false\n\n switch (code) {\n case EVENT_CODE.down: {\n this.gotoSubIndex(this.subIndex + 1)\n prevDef = true\n break\n }\n case EVENT_CODE.up: {\n this.gotoSubIndex(this.subIndex - 1)\n prevDef = true\n break\n }\n case EVENT_CODE.tab: {\n triggerEvent(parentNode as HTMLElement, 'mouseleave')\n break\n }\n case EVENT_CODE.enter:\n case EVENT_CODE.numpadEnter:\n case EVENT_CODE.space: {\n prevDef = true\n ;(event.currentTarget as HTMLElement).click()\n break\n }\n }\n if (prevDef) {\n event.preventDefault()\n event.stopPropagation()\n }\n return false\n })\n })\n }\n}\n\nexport default SubMenu\n","// @ts-nocheck\nimport { getEventCode, triggerEvent } from '@element-plus/utils'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport SubMenu from './submenu'\n\nclass MenuItem {\n public submenu: SubMenu = null\n constructor(\n public domNode: HTMLElement,\n namespace: string\n ) {\n this.submenu = null\n this.init(namespace)\n }\n\n init(namespace: string): void {\n this.domNode.setAttribute('tabindex', '0')\n const menuChild = this.domNode.querySelector(`.${namespace}-menu`)\n if (menuChild) {\n this.submenu = new SubMenu(this, menuChild)\n }\n this.addListeners()\n }\n\n addListeners(): void {\n this.domNode.addEventListener('keydown', (event: KeyboardEvent) => {\n const code = getEventCode(event)\n let prevDef = false\n\n switch (code) {\n case EVENT_CODE.down: {\n triggerEvent(event.currentTarget as HTMLElement, 'mouseenter')\n this.submenu && this.submenu.gotoSubIndex(0)\n prevDef = true\n break\n }\n case EVENT_CODE.up: {\n triggerEvent(event.currentTarget as HTMLElement, 'mouseenter')\n this.submenu &&\n this.submenu.gotoSubIndex(this.submenu.subMenuItems.length - 1)\n prevDef = true\n break\n }\n case EVENT_CODE.tab: {\n triggerEvent(event.currentTarget as HTMLElement, 'mouseleave')\n break\n }\n case EVENT_CODE.enter:\n case EVENT_CODE.numpadEnter:\n case EVENT_CODE.space: {\n prevDef = true\n ;(event.currentTarget as HTMLElement).click()\n break\n }\n }\n if (prevDef) {\n event.preventDefault()\n }\n })\n }\n}\n\nexport default MenuItem\n","import MenuItem from './menu-item'\n\nimport type { RendererNode } from 'vue'\n\nclass Menu {\n constructor(\n public domNode: RendererNode,\n namespace: string\n ) {\n this.init(namespace)\n }\n init(namespace: string): void {\n const menuChildren = this.domNode.childNodes\n Array.from(menuChildren).forEach((child) => {\n if (child.nodeType === 1) {\n new MenuItem(child as HTMLElement, namespace)\n }\n })\n }\n}\n\nexport default Menu\n","\n\n\n","import { computed } from 'vue'\n\nimport type { ComponentInternalInstance, Ref } from 'vue'\n\nexport default function useMenu(\n instance: ComponentInternalInstance,\n currentIndex: Ref\n) {\n const indexPath = computed(() => {\n let parent = instance.parent!\n const path = [currentIndex.value]\n while (parent.type.name !== 'ElMenu') {\n if (parent.props.index) {\n path.unshift(parent.props.index as string)\n }\n parent = parent.parent!\n }\n return path\n })\n\n const parentMenu = computed(() => {\n let parent = instance.parent\n while (parent && !['ElMenu', 'ElSubMenu'].includes(parent.type.name!)) {\n parent = parent.parent\n }\n return parent!\n })\n\n return {\n parentMenu,\n indexPath,\n }\n}\n","import { computed } from 'vue'\nimport { TinyColor } from '@ctrl/tinycolor'\n\nimport type { MenuProps } from './menu'\n\nexport default function useMenuColor(props: MenuProps) {\n const menuBarColor = computed(() => {\n const color = props.backgroundColor\n return color ? new TinyColor(color).shade(20).toString() : ''\n })\n return menuBarColor\n}\n","import { computed } from 'vue'\nimport { useNamespace } from '@element-plus/hooks'\nimport useMenuColor from './use-menu-color'\n\nimport type { MenuProps } from './menu'\n\nexport const useMenuCssVar = (props: MenuProps, level: number) => {\n const ns = useNamespace('menu')\n return computed(() =>\n ns.cssVarBlock({\n 'text-color': props.textColor || '',\n 'hover-text-color': props.textColor || '',\n 'bg-color': props.backgroundColor || '',\n 'hover-bg-color': useMenuColor(props).value || '',\n 'active-color': props.activeTextColor || '',\n level: `${level}`,\n })\n )\n}\n","export const MENU_INJECTION_KEY = 'rootMenu'\n\nexport const SUB_MENU_INJECTION_KEY = 'subMenu:'\n","import {\n Fragment,\n computed,\n defineComponent,\n getCurrentInstance,\n h,\n inject,\n nextTick,\n onBeforeUnmount,\n onMounted,\n provide,\n reactive,\n ref,\n vShow,\n watch,\n withDirectives,\n} from 'vue'\nimport { useTimeoutFn } from '@vueuse/core'\nimport ElCollapseTransition from '@element-plus/components/collapse-transition'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport {\n buildProps,\n definePropType,\n focusElement,\n iconPropType,\n isString,\n isUndefined,\n throwError,\n} from '@element-plus/utils'\nimport { useNamespace } from '@element-plus/hooks'\nimport { ArrowDown, ArrowRight } from '@element-plus/icons-vue'\nimport { ElIcon } from '@element-plus/components/icon'\nimport useMenu from './use-menu'\nimport { useMenuCssVar } from './use-menu-css-var'\nimport { MENU_INJECTION_KEY, SUB_MENU_INJECTION_KEY } from './tokens'\n\nimport type { Placement } from '@element-plus/components/popper'\nimport type { TooltipInstance } from '@element-plus/components/tooltip'\nimport type {\n CSSProperties,\n ExtractPropTypes,\n VNodeArrayChildren,\n __ExtractPublicPropTypes,\n} from 'vue'\nimport type { MenuProvider, SubMenuProvider } from './types'\n\nexport const subMenuProps = buildProps({\n /**\n * @description unique identification\n */\n index: {\n type: String,\n required: true,\n },\n /**\n * @description timeout before showing a sub-menu(inherit `show-timeout` of the menu by default.)\n */\n showTimeout: Number,\n /**\n * @description timeout before hiding a sub-menu(inherit `hide-timeout` of the menu by default.)\n */\n hideTimeout: Number,\n /**\n * @description custom class name for the popup menu\n */\n popperClass: String,\n /**\n * @description custom style for the popup menu\n */\n popperStyle: {\n type: definePropType([String, Object]),\n },\n /**\n * @description whether the sub-menu is disabled\n */\n disabled: Boolean,\n /**\n * @description whether popup menu is teleported to the body\n */\n teleported: {\n type: Boolean,\n default: undefined,\n },\n /**\n * @description offset of the popper (overrides the `popper` of menu)\n */\n popperOffset: Number,\n /**\n * @description Icon when menu are expanded and submenu are closed, `expand-close-icon` and `expand-open-icon` need to be passed together to take effect\n */\n expandCloseIcon: {\n type: iconPropType,\n },\n /**\n * @description Icon when menu are expanded and submenu are opened, `expand-open-icon` and `expand-close-icon` need to be passed together to take effect\n */\n expandOpenIcon: {\n type: iconPropType,\n },\n /**\n * @description Icon when menu are collapsed and submenu are closed, `collapse-close-icon` and `collapse-open-icon` need to be passed together to take effect\n */\n collapseCloseIcon: {\n type: iconPropType,\n },\n /**\n * @description Icon when menu are collapsed and submenu are opened, `collapse-open-icon` and `collapse-close-icon` need to be passed together to take effect\n */\n collapseOpenIcon: {\n type: iconPropType,\n },\n} as const)\nexport type SubMenuProps = ExtractPropTypes\nexport type SubMenuPropsPublic = __ExtractPublicPropTypes\n\nconst COMPONENT_NAME = 'ElSubMenu'\nexport default defineComponent({\n name: COMPONENT_NAME,\n props: subMenuProps,\n\n setup(props, { slots, expose }) {\n const instance = getCurrentInstance()!\n const { indexPath, parentMenu } = useMenu(\n instance,\n computed(() => props.index)\n )\n const nsMenu = useNamespace('menu')\n const nsSubMenu = useNamespace('sub-menu')\n\n // inject\n const rootMenu = inject(MENU_INJECTION_KEY)\n if (!rootMenu) throwError(COMPONENT_NAME, 'can not inject root menu')\n\n const subMenu = inject(\n `${SUB_MENU_INJECTION_KEY}${parentMenu.value!.uid}`\n )\n if (!subMenu) throwError(COMPONENT_NAME, 'can not inject sub menu')\n\n const items = ref({})\n const subMenus = ref({})\n\n let timeout: (() => void) | undefined\n const mouseInChild = ref(false)\n const verticalTitleRef = ref()\n const vPopper = ref()\n\n // computed\n const isFirstLevel = computed(() => subMenu.level === 0)\n const currentPlacement = computed(() =>\n mode.value === 'horizontal' && isFirstLevel.value\n ? 'bottom-start'\n : 'right-start'\n )\n const subMenuTitleIcon = computed(() => {\n const isExpandedMode =\n (mode.value === 'horizontal' && isFirstLevel.value) ||\n (mode.value === 'vertical' && !rootMenu.props.collapse)\n\n if (isExpandedMode) {\n if (props.expandCloseIcon && props.expandOpenIcon) {\n return opened.value ? props.expandOpenIcon : props.expandCloseIcon\n }\n return ArrowDown\n } else {\n if (props.collapseCloseIcon && props.collapseOpenIcon) {\n return opened.value ? props.collapseOpenIcon : props.collapseCloseIcon\n }\n return ArrowRight\n }\n })\n\n const appendToBody = computed(() => {\n const value = props.teleported\n return isUndefined(value) ? isFirstLevel.value : value\n })\n const menuTransitionName = computed(() =>\n rootMenu.props.collapse\n ? `${nsMenu.namespace.value}-zoom-in-left`\n : `${nsMenu.namespace.value}-zoom-in-top`\n )\n const fallbackPlacements = computed(() =>\n mode.value === 'horizontal' && isFirstLevel.value\n ? [\n 'bottom-start',\n 'bottom-end',\n 'top-start',\n 'top-end',\n 'right-start',\n 'left-start',\n ]\n : [\n 'right-start',\n 'right',\n 'right-end',\n 'left-start',\n 'bottom-start',\n 'bottom-end',\n 'top-start',\n 'top-end',\n ]\n )\n const opened = computed(() => rootMenu.openedMenus.includes(props.index))\n const active = computed(() =>\n [...Object.values(items.value), ...Object.values(subMenus.value)].some(\n ({ active }) => active\n )\n )\n\n const mode = computed(() => rootMenu.props.mode)\n const persistent = computed(() => rootMenu.props.persistent)\n const item = reactive({\n index: props.index,\n indexPath,\n active,\n })\n\n const ulStyle = useMenuCssVar(rootMenu.props, subMenu.level + 1)\n\n const subMenuPopperOffset = computed(\n () => props.popperOffset ?? rootMenu.props.popperOffset\n )\n\n const subMenuPopperClass = computed(\n () => props.popperClass ?? rootMenu.props.popperClass\n )\n\n const subMenuPopperStyle = computed(\n () => props.popperStyle ?? rootMenu.props.popperStyle\n )\n\n const subMenuShowTimeout = computed(\n () => props.showTimeout ?? rootMenu.props.showTimeout\n )\n\n const subMenuHideTimeout = computed(\n () => props.hideTimeout ?? rootMenu.props.hideTimeout\n )\n\n // methods\n const doDestroy = () =>\n vPopper.value?.popperRef?.popperInstanceRef?.destroy()\n\n const handleCollapseToggle = (value: boolean) => {\n if (!value) {\n doDestroy()\n }\n }\n\n const handleClick = () => {\n if (\n (rootMenu.props.menuTrigger === 'hover' &&\n rootMenu.props.mode === 'horizontal') ||\n (rootMenu.props.collapse && rootMenu.props.mode === 'vertical') ||\n props.disabled\n )\n return\n\n rootMenu.handleSubMenuClick({\n index: props.index,\n indexPath: indexPath.value,\n active: active.value,\n })\n }\n\n const handleMouseenter = (\n event: MouseEvent | FocusEvent,\n showTimeout = subMenuShowTimeout.value\n ) => {\n if (event.type === 'focus') return\n\n if (\n (rootMenu.props.menuTrigger === 'click' &&\n rootMenu.props.mode === 'horizontal') ||\n (!rootMenu.props.collapse && rootMenu.props.mode === 'vertical') ||\n props.disabled\n ) {\n subMenu.mouseInChild.value = true\n return\n }\n subMenu.mouseInChild.value = true\n\n timeout?.()\n ;({ stop: timeout } = useTimeoutFn(() => {\n rootMenu.openMenu(props.index, indexPath.value)\n }, showTimeout))\n\n if (appendToBody.value) {\n parentMenu.value.vnode.el?.dispatchEvent(new MouseEvent('mouseenter'))\n }\n\n if (event.type === 'mouseenter' && event.target) {\n nextTick(() => {\n focusElement(event.target as HTMLElement, { preventScroll: true })\n })\n }\n }\n\n const handleMouseleave = (deepDispatch = false) => {\n if (\n (rootMenu.props.menuTrigger === 'click' &&\n rootMenu.props.mode === 'horizontal') ||\n (!rootMenu.props.collapse && rootMenu.props.mode === 'vertical')\n ) {\n subMenu.mouseInChild.value = false\n return\n }\n timeout?.()\n subMenu.mouseInChild.value = false\n ;({ stop: timeout } = useTimeoutFn(\n () =>\n !mouseInChild.value &&\n rootMenu.closeMenu(props.index, indexPath.value),\n subMenuHideTimeout.value\n ))\n\n if (appendToBody.value && deepDispatch) {\n subMenu.handleMouseleave?.(true)\n }\n }\n\n watch(\n () => rootMenu.props.collapse,\n (value) => handleCollapseToggle(Boolean(value))\n )\n\n // provide\n {\n const addSubMenu: SubMenuProvider['addSubMenu'] = (item) => {\n subMenus.value[item.index] = item\n }\n const removeSubMenu: SubMenuProvider['removeSubMenu'] = (item) => {\n delete subMenus.value[item.index]\n }\n provide(`${SUB_MENU_INJECTION_KEY}${instance.uid}`, {\n addSubMenu,\n removeSubMenu,\n handleMouseleave,\n mouseInChild,\n level: subMenu.level + 1,\n })\n }\n\n // expose\n expose({\n opened,\n })\n\n // lifecycle\n onMounted(() => {\n rootMenu.addSubMenu(item)\n subMenu.addSubMenu(item)\n })\n\n onBeforeUnmount(() => {\n subMenu.removeSubMenu(item)\n rootMenu.removeSubMenu(item)\n })\n\n return () => {\n const titleTag: VNodeArrayChildren = [\n slots.title?.(),\n h(\n ElIcon,\n {\n class: nsSubMenu.e('icon-arrow'),\n style: {\n transform: opened.value\n ? (props.expandCloseIcon && props.expandOpenIcon) ||\n (props.collapseCloseIcon &&\n props.collapseOpenIcon &&\n rootMenu.props.collapse)\n ? 'none'\n : 'rotateZ(180deg)'\n : 'none',\n },\n },\n {\n default: () =>\n isString(subMenuTitleIcon.value)\n ? h(instance.appContext.components[subMenuTitleIcon.value])\n : h(subMenuTitleIcon.value),\n }\n ),\n ]\n\n // this render function is only used for bypass `Vue`'s compiler caused patching issue.\n const child = rootMenu.isMenuPopup\n ? h(\n ElTooltip,\n {\n ref: vPopper,\n visible: opened.value,\n effect: 'light',\n pure: true,\n offset: subMenuPopperOffset.value,\n showArrow: false,\n persistent: persistent.value,\n popperClass: subMenuPopperClass.value,\n popperStyle: subMenuPopperStyle.value,\n placement: currentPlacement.value,\n teleported: appendToBody.value,\n fallbackPlacements: fallbackPlacements.value,\n transition: menuTransitionName.value,\n gpuAcceleration: false,\n },\n {\n content: () =>\n h(\n 'div',\n {\n class: [\n nsMenu.m(mode.value),\n nsMenu.m('popup-container'),\n subMenuPopperClass.value,\n ],\n onMouseenter: (evt: MouseEvent) =>\n handleMouseenter(evt, 100),\n onMouseleave: () => handleMouseleave(true),\n onFocus: (evt: FocusEvent) => handleMouseenter(evt, 100),\n },\n [\n h(\n 'ul',\n {\n class: [\n nsMenu.b(),\n nsMenu.m('popup'),\n nsMenu.m(`popup-${currentPlacement.value}`),\n ],\n style: ulStyle.value,\n },\n [slots.default?.()]\n ),\n ]\n ),\n default: () =>\n h(\n 'div',\n {\n class: nsSubMenu.e('title'),\n onClick: handleClick,\n },\n titleTag\n ),\n }\n )\n : h(Fragment, {}, [\n h(\n 'div',\n {\n class: nsSubMenu.e('title'),\n ref: verticalTitleRef,\n onClick: handleClick,\n },\n titleTag\n ),\n h(\n ElCollapseTransition,\n {},\n {\n default: () =>\n withDirectives(\n h(\n 'ul',\n {\n role: 'menu',\n class: [nsMenu.b(), nsMenu.m('inline')],\n style: ulStyle.value,\n },\n [slots.default?.()]\n ),\n [[vShow, opened.value]]\n ),\n }\n ),\n ])\n\n return h(\n 'li',\n {\n class: [\n nsSubMenu.b(),\n nsSubMenu.is('active', active.value),\n nsSubMenu.is('opened', opened.value),\n nsSubMenu.is('disabled', props.disabled),\n ],\n role: 'menuitem',\n ariaHaspopup: true,\n ariaExpanded: opened.value,\n onMouseenter: handleMouseenter,\n onMouseleave: () => handleMouseleave(),\n onFocus: handleMouseenter,\n },\n [child]\n )\n }\n },\n})\n","import {\n computed,\n defineComponent,\n getCurrentInstance,\n h,\n nextTick,\n onMounted,\n provide,\n reactive,\n ref,\n watch,\n watchEffect,\n withDirectives,\n} from 'vue'\nimport { unrefElement, useResizeObserver } from '@vueuse/core'\nimport { isNil } from 'lodash-unified'\nimport ElIcon from '@element-plus/components/icon'\nimport { More } from '@element-plus/icons-vue'\nimport {\n buildProps,\n definePropType,\n flattedChildren,\n iconPropType,\n isArray,\n isObject,\n isString,\n isUndefined,\n mutable,\n} from '@element-plus/utils'\nimport { useNamespace } from '@element-plus/hooks'\nimport { ClickOutside as vClickoutside } from '@element-plus/directives'\nimport Menubar from './utils/menu-bar'\nimport ElMenuCollapseTransition from './menu-collapse-transition.vue'\nimport ElSubMenu from './sub-menu'\nimport { useMenuCssVar } from './use-menu-css-var'\nimport { MENU_INJECTION_KEY, SUB_MENU_INJECTION_KEY } from './tokens'\n\nimport type { PopperEffect } from '@element-plus/components/popper'\nimport type { MenuItemClicked, MenuProvider, SubMenuProvider } from './types'\nimport type { NavigationFailure, Router } from 'vue-router'\nimport type {\n CSSProperties,\n Component,\n DirectiveArguments,\n ExtractPropTypes,\n VNode,\n VNodeArrayChildren,\n __ExtractPublicPropTypes,\n} from 'vue'\nimport type { UseResizeObserverReturn } from '@vueuse/core'\n\nexport const menuProps = buildProps({\n /**\n * @description menu display mode\n */\n mode: {\n type: String,\n values: ['horizontal', 'vertical'],\n default: 'vertical',\n },\n /**\n * @description index of active menu on page load\n */\n defaultActive: {\n type: String,\n default: '',\n },\n /**\n * @description array that contains indexes of currently active sub-menus\n */\n defaultOpeneds: {\n type: definePropType(Array),\n default: () => mutable([] as const),\n },\n /**\n * @description whether only one sub-menu can be active\n */\n uniqueOpened: Boolean,\n /**\n * @description whether `vue-router` mode is activated. If true, index will be used as 'path' to activate the route action. Use with `default-active` to set the active item on load.\n */\n router: Boolean,\n /**\n * @description how sub-menus are triggered, only works when `mode` is 'horizontal'\n */\n menuTrigger: {\n type: String,\n values: ['hover', 'click'],\n default: 'hover',\n },\n /**\n * @description whether the menu is collapsed (available only in vertical mode)\n */\n collapse: Boolean,\n /**\n * @description background color of Menu (hex format) (deprecated, use `--bg-color` instead)\n * @deprecated use `--bg-color` instead\n */\n backgroundColor: String,\n /**\n * @description text color of Menu (hex format) (deprecated, use `--text-color` instead)\n * @deprecated use `--text-color` instead\n */\n textColor: String,\n /**\n * @description text color of currently active menu item (hex format) (deprecated, use `--active-color` instead)\n * @deprecated use `--active-color` instead\n */\n activeTextColor: String,\n /**\n * @description optional, whether menu is collapsed when clicking outside\n */\n closeOnClickOutside: Boolean,\n /**\n * @description whether to enable the collapse transition\n */\n collapseTransition: {\n type: Boolean,\n default: true,\n },\n /**\n * @description whether the menu is ellipsis (available only in horizontal mode)\n */\n ellipsis: {\n type: Boolean,\n default: true,\n },\n /**\n * @description offset of the popper (effective for all submenus)\n */\n popperOffset: {\n type: Number,\n default: 6,\n },\n /**\n * @description custom ellipsis icon (available only in horizontal mode and ellipsis is true)\n */\n ellipsisIcon: {\n type: iconPropType,\n default: () => More,\n },\n /**\n * @description Tooltip theme, built-in theme: `dark` / `light` when menu is collapsed\n */\n popperEffect: {\n type: definePropType(String),\n default: 'dark',\n },\n /**\n * @description custom class name for all popup menus\n */\n popperClass: String,\n /**\n * @description custom style for all popup menus\n */\n popperStyle: {\n type: definePropType([String, Object]),\n },\n /**\n * @description control timeout for all menus before showing\n */\n showTimeout: {\n type: Number,\n default: 300,\n },\n /**\n * @description control timeout for all menus before hiding\n */\n hideTimeout: {\n type: Number,\n default: 300,\n },\n /**\n * @description when menu inactive and `persistent` is `false` , dropdown menu will be destroyed\n */\n persistent: {\n type: Boolean,\n default: true,\n },\n} as const)\nexport type MenuProps = ExtractPropTypes\nexport type MenuPropsPublic = __ExtractPublicPropTypes\n\nconst checkIndexPath = (indexPath: unknown): indexPath is string[] =>\n isArray(indexPath) && indexPath.every((path) => isString(path))\n\nexport const menuEmits = {\n close: (index: string, indexPath: string[]) =>\n isString(index) && checkIndexPath(indexPath),\n\n open: (index: string, indexPath: string[]) =>\n isString(index) && checkIndexPath(indexPath),\n\n select: (\n index: string,\n indexPath: string[],\n item: MenuItemClicked,\n routerResult?: Promise\n ) =>\n isString(index) &&\n checkIndexPath(indexPath) &&\n isObject(item) &&\n (isUndefined(routerResult) || routerResult instanceof Promise),\n}\nexport type MenuEmits = typeof menuEmits\n\nconst DEFAULT_MORE_ITEM_WIDTH = 64\n\nexport default defineComponent({\n name: 'ElMenu',\n\n props: menuProps,\n emits: menuEmits,\n\n setup(props, { emit, slots, expose }) {\n const instance = getCurrentInstance()!\n const router = instance.appContext.config.globalProperties.$router as Router\n const menu = ref()\n const subMenu = ref()\n const nsMenu = useNamespace('menu')\n const nsSubMenu = useNamespace('sub-menu')\n let moreItemWidth = DEFAULT_MORE_ITEM_WIDTH\n\n // data\n const sliceIndex = ref(-1)\n\n const openedMenus = ref(\n props.defaultOpeneds && !props.collapse\n ? props.defaultOpeneds.slice(0)\n : []\n )\n const activeIndex = ref(props.defaultActive)\n const items = ref({})\n const subMenus = ref({})\n\n // computed\n const isMenuPopup = computed(\n () =>\n props.mode === 'horizontal' ||\n (props.mode === 'vertical' && props.collapse)\n )\n\n // methods\n const initMenu = () => {\n const activeItem = activeIndex.value && items.value[activeIndex.value]\n if (!activeItem || props.mode === 'horizontal' || props.collapse) return\n\n const indexPath = activeItem.indexPath\n\n // 展开该菜单项的路径上所有子菜单\n // expand all subMenus of the menu item\n indexPath.forEach((index) => {\n const subMenu = subMenus.value[index]\n subMenu && openMenu(index, subMenu.indexPath)\n })\n }\n\n const openMenu: MenuProvider['openMenu'] = (index, indexPath) => {\n if (openedMenus.value.includes(index)) return\n // 将不在该菜单路径下的其余菜单收起\n // collapse all menu that are not under current menu item\n if (props.uniqueOpened) {\n openedMenus.value = openedMenus.value.filter((index: string) =>\n indexPath.includes(index)\n )\n }\n openedMenus.value.push(index)\n emit('open', index, indexPath)\n }\n\n const close = (index: string) => {\n const i = openedMenus.value.indexOf(index)\n if (i !== -1) {\n openedMenus.value.splice(i, 1)\n }\n }\n\n const closeMenu: MenuProvider['closeMenu'] = (index, indexPath) => {\n close(index)\n emit('close', index, indexPath)\n }\n\n const handleSubMenuClick: MenuProvider['handleSubMenuClick'] = ({\n index,\n indexPath,\n }) => {\n const isOpened = openedMenus.value.includes(index)\n\n isOpened ? closeMenu(index, indexPath) : openMenu(index, indexPath)\n }\n\n const handleMenuItemClick: MenuProvider['handleMenuItemClick'] = (\n menuItem\n ) => {\n if (props.mode === 'horizontal' || props.collapse) {\n openedMenus.value = []\n }\n const { index, indexPath } = menuItem\n if (isNil(index) || isNil(indexPath)) return\n\n if (props.router && router) {\n const route = menuItem.route || index\n const routerResult = router.push(route).then((res) => {\n if (!res) activeIndex.value = index\n return res\n })\n emit(\n 'select',\n index,\n indexPath,\n { index, indexPath, route },\n routerResult\n )\n } else {\n activeIndex.value = index\n emit('select', index, indexPath, { index, indexPath })\n }\n }\n\n const updateActiveIndex = (val: string) => {\n const itemsInData = items.value\n const item =\n itemsInData[val] ||\n (activeIndex.value && itemsInData[activeIndex.value]) ||\n itemsInData[props.defaultActive]\n\n activeIndex.value = item?.index ?? val\n }\n\n const calcMenuItemWidth = (menuItem: HTMLElement) => {\n const computedStyle = getComputedStyle(menuItem)\n const marginLeft = Number.parseInt(computedStyle.marginLeft, 10)\n const marginRight = Number.parseInt(computedStyle.marginRight, 10)\n return menuItem.offsetWidth + marginLeft + marginRight || 0\n }\n\n const calcSliceIndex = () => {\n if (!menu.value) return -1\n\n const items = Array.from(menu.value.childNodes).filter(\n (item) =>\n item.nodeName !== '#comment' &&\n (item.nodeName !== '#text' || item.nodeValue)\n ) as HTMLElement[]\n\n const computedMenuStyle = getComputedStyle(menu.value)\n const paddingLeft = Number.parseInt(computedMenuStyle.paddingLeft, 10)\n const paddingRight = Number.parseInt(computedMenuStyle.paddingRight, 10)\n const menuWidth = menu.value.clientWidth - paddingLeft - paddingRight\n\n let calcWidth = 0\n let sliceIndex = 0\n items.forEach((item, index) => {\n calcWidth += calcMenuItemWidth(item)\n if (calcWidth <= menuWidth - moreItemWidth) {\n sliceIndex = index + 1\n }\n })\n return sliceIndex === items.length ? -1 : sliceIndex\n }\n\n const getIndexPath = (index: string) => subMenus.value[index].indexPath\n\n // Common computer monitor FPS is 60Hz, which means 60 redraws per second. Calculation formula: 1000ms/60 ≈ 16.67ms, In order to avoid a certain chance of repeated triggering when `resize`, set wait to 16.67 * 2 = 33.34\n const debounce = (fn: () => void, wait = 33.34) => {\n let timer: ReturnType | null\n return () => {\n timer && clearTimeout(timer)\n timer = setTimeout(() => {\n fn()\n }, wait)\n }\n }\n\n let isFirstTimeRender = true\n const handleResize = () => {\n const el = unrefElement(subMenu)\n if (el) moreItemWidth = calcMenuItemWidth(el) || DEFAULT_MORE_ITEM_WIDTH\n if (sliceIndex.value === calcSliceIndex()) return\n const callback = () => {\n sliceIndex.value = -1\n nextTick(() => {\n sliceIndex.value = calcSliceIndex()\n })\n }\n // execute callback directly when first time resize to avoid shaking\n isFirstTimeRender ? callback() : debounce(callback)()\n isFirstTimeRender = false\n }\n\n watch(\n () => props.defaultActive,\n (currentActive) => {\n if (!items.value[currentActive]) {\n activeIndex.value = ''\n }\n updateActiveIndex(currentActive)\n }\n )\n\n watch(\n () => props.collapse,\n (value) => {\n if (value) openedMenus.value = []\n }\n )\n\n watch(items.value, initMenu)\n\n let resizeStopper: UseResizeObserverReturn['stop']\n watchEffect(() => {\n if (props.mode === 'horizontal' && props.ellipsis)\n resizeStopper = useResizeObserver(menu, handleResize).stop\n else resizeStopper?.()\n })\n\n const mouseInChild = ref(false)\n\n // provide\n {\n const addSubMenu: MenuProvider['addSubMenu'] = (item) => {\n subMenus.value[item.index] = item\n }\n\n const removeSubMenu: MenuProvider['removeSubMenu'] = (item) => {\n delete subMenus.value[item.index]\n }\n\n const addMenuItem: MenuProvider['addMenuItem'] = (item) => {\n items.value[item.index] = item\n }\n\n const removeMenuItem: MenuProvider['removeMenuItem'] = (item) => {\n delete items.value[item.index]\n }\n\n provide(\n MENU_INJECTION_KEY,\n reactive({\n props,\n openedMenus,\n items,\n subMenus,\n activeIndex,\n isMenuPopup,\n\n addMenuItem,\n removeMenuItem,\n addSubMenu,\n removeSubMenu,\n openMenu,\n closeMenu,\n handleMenuItemClick,\n handleSubMenuClick,\n })\n )\n\n provide(`${SUB_MENU_INJECTION_KEY}${instance.uid}`, {\n addSubMenu,\n removeSubMenu,\n mouseInChild,\n level: 0,\n })\n }\n\n // lifecycle\n onMounted(() => {\n if (props.mode === 'horizontal') {\n new Menubar(instance.vnode.el!, nsMenu.namespace.value)\n }\n })\n\n {\n const open = (index: string) => {\n const { indexPath } = subMenus.value[index]\n indexPath.forEach((i) => openMenu(i, indexPath))\n }\n\n expose({\n open,\n close,\n updateActiveIndex,\n handleResize,\n })\n }\n\n const ulStyle = useMenuCssVar(props, 0)\n\n return () => {\n let slot: VNodeArrayChildren = slots.default?.() ?? []\n const vShowMore: VNode[] = []\n\n if (props.mode === 'horizontal' && menu.value) {\n const originalSlot = (\n flattedChildren(slot) as VNodeArrayChildren\n ).filter((vnode) => {\n // Filter text and comment nodes (https://github.com/vuejs/core/blob/c875019d49b4c36a88d929ccadc31ad414747c7b/packages/shared/src/shapeFlags.ts#L5)\n return (vnode as VNode)?.shapeFlag !== 8\n })\n const slotDefault =\n sliceIndex.value === -1\n ? originalSlot\n : originalSlot.slice(0, sliceIndex.value)\n\n const slotMore =\n sliceIndex.value === -1 ? [] : originalSlot.slice(sliceIndex.value)\n\n if (slotMore?.length && props.ellipsis) {\n slot = slotDefault\n vShowMore.push(\n h(\n ElSubMenu,\n {\n ref: subMenu,\n index: 'sub-menu-more',\n class: nsSubMenu.e('hide-arrow'),\n popperOffset: props.popperOffset,\n },\n {\n title: () =>\n h(\n ElIcon,\n {\n class: nsSubMenu.e('icon-more'),\n },\n {\n default: () => h(props.ellipsisIcon as Component),\n }\n ),\n default: () => slotMore,\n }\n )\n )\n }\n }\n\n const directives: DirectiveArguments = props.closeOnClickOutside\n ? [\n [\n vClickoutside,\n () => {\n if (!openedMenus.value.length) return\n\n if (!mouseInChild.value) {\n openedMenus.value.forEach((openedMenu) =>\n emit('close', openedMenu, getIndexPath(openedMenu))\n )\n\n openedMenus.value = []\n }\n },\n ],\n ]\n : []\n\n const vMenu = withDirectives(\n h(\n 'ul',\n {\n key: String(props.collapse),\n role: 'menubar',\n ref: menu,\n style: ulStyle.value,\n class: {\n [nsMenu.b()]: true,\n [nsMenu.m(props.mode)]: true,\n [nsMenu.m('collapse')]: props.collapse,\n },\n },\n [...slot, ...vShowMore]\n ),\n directives\n )\n\n if (props.collapseTransition && props.mode === 'vertical') {\n return h(ElMenuCollapseTransition, () => vMenu)\n }\n\n return vMenu\n }\n },\n})\n","import {\n buildProps,\n definePropType,\n isArray,\n isString,\n} from '@element-plus/utils'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\nimport type { RouteLocationRaw } from 'vue-router'\nimport type { MenuItemRegistered } from './types'\n\nexport const menuItemProps = buildProps({\n /**\n * @description unique identification\n */\n index: {\n type: definePropType([String, null]),\n // will be required in the next major version\n // required: true,\n default: null,\n },\n /**\n * @description Vue Router object\n */\n route: {\n type: definePropType([String, Object]),\n },\n /**\n * @description whether disabled\n */\n disabled: Boolean,\n} as const)\nexport type MenuItemProps = ExtractPropTypes\nexport type MenuItemPropsPublic = __ExtractPublicPropTypes\n\nexport const menuItemEmits = {\n click: (item: MenuItemRegistered) =>\n isString(item.index) && isArray(item.indexPath),\n}\nexport type MenuItemEmits = typeof menuItemEmits\n","\n\n\n","import type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\n\nexport const menuItemGroupProps = {\n /**\n * @description group title\n */\n title: String,\n} as const\nexport type MenuItemGroupProps = ExtractPropTypes\nexport type MenuItemGroupPropsPublic = __ExtractPublicPropTypes<\n typeof menuItemGroupProps\n>\n","\n\n\n","import { withInstall, withNoopInstall } from '@element-plus/utils'\nimport Menu from './src/menu'\nimport MenuItem from './src/menu-item.vue'\nimport MenuItemGroup from './src/menu-item-group.vue'\nimport SubMenu from './src/sub-menu'\n\nimport type { SFCWithInstall } from '@element-plus/utils'\n\nexport const ElMenu: SFCWithInstall & {\n MenuItem: typeof MenuItem\n MenuItemGroup: typeof MenuItemGroup\n SubMenu: typeof SubMenu\n} = withInstall(Menu, {\n MenuItem,\n MenuItemGroup,\n SubMenu,\n})\nexport default ElMenu\nexport const ElMenuItem: SFCWithInstall =\n withNoopInstall(MenuItem)\nexport const ElMenuItemGroup: SFCWithInstall =\n withNoopInstall(MenuItemGroup)\nexport const ElSubMenu: SFCWithInstall =\n withNoopInstall(SubMenu)\n\nexport * from './src/menu'\nexport * from './src/menu-item'\nexport * from './src/menu-item-group'\nexport * from './src/sub-menu'\nexport * from './src/types'\nexport * from './src/instance'\nexport * from './src/tokens'\n","import { buildProps, iconPropType } from '@element-plus/utils'\nimport { Back } from '@element-plus/icons-vue'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\nimport type PageHeader from './page-header.vue'\n\nexport const pageHeaderProps = buildProps({\n /**\n * @description icon component of page header\n */\n icon: {\n type: iconPropType,\n default: () => Back,\n },\n /**\n * @description main title of page header\n */\n title: String,\n /**\n * @description content of page header\n */\n content: {\n type: String,\n default: '',\n },\n} as const)\nexport type PageHeaderProps = ExtractPropTypes\nexport type PageHeaderPropsPublic = __ExtractPublicPropTypes<\n typeof pageHeaderProps\n>\n\nexport const pageHeaderEmits = {\n back: () => true,\n}\nexport type PageHeaderEmits = typeof pageHeaderEmits\n\nexport type PageHeaderInstance = InstanceType & unknown\n","\n\n\n","import { withInstall } from '@element-plus/utils'\nimport PageHeader from './src/page-header.vue'\n\nimport type { SFCWithInstall } from '@element-plus/utils'\n\nexport const ElPageHeader: SFCWithInstall =\n withInstall(PageHeader)\nexport default ElPageHeader\n\nexport * from './src/page-header'\n","import { buttonTypes } from '@element-plus/components/button'\nimport { QuestionFilled } from '@element-plus/icons-vue'\nimport { buildProps, iconPropType } from '@element-plus/utils'\nimport {\n useTooltipContentProps,\n useTooltipTriggerProps,\n} from '@element-plus/components/tooltip'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\nimport type Popconfirm from './popconfirm.vue'\n\nexport const popconfirmProps = buildProps({\n /**\n * @description Title\n */\n title: String,\n /**\n * @description Confirm button text\n */\n confirmButtonText: String,\n /**\n * @description Cancel button text\n */\n cancelButtonText: String,\n /**\n * @description Confirm button type\n */\n confirmButtonType: {\n type: String,\n values: buttonTypes,\n default: 'primary',\n },\n /**\n * @description Cancel button type\n */\n cancelButtonType: {\n type: String,\n values: buttonTypes,\n default: 'text',\n },\n /**\n * @description Icon Component\n */\n icon: {\n type: iconPropType,\n default: () => QuestionFilled,\n },\n /**\n * @description Icon color\n */\n iconColor: {\n type: String,\n default: '#f90',\n },\n /**\n * @description is hide Icon\n */\n hideIcon: Boolean,\n /**\n * @description delay of disappear, in millisecond\n */\n hideAfter: {\n type: Number,\n default: 200,\n },\n /**\n * @description Tooltip theme, built-in theme: `dark` / `light`\n */\n effect: {\n ...useTooltipContentProps.effect,\n default: 'light',\n },\n /**\n * @description whether popconfirm is teleported to the body\n */\n teleported: useTooltipContentProps.teleported,\n /**\n * @description when popconfirm inactive and `persistent` is `false` , popconfirm will be destroyed\n */\n persistent: useTooltipContentProps.persistent,\n /**\n * @description popconfirm width, min width 150px\n */\n width: {\n type: [String, Number],\n default: 150,\n },\n virtualTriggering: useTooltipTriggerProps.virtualTriggering,\n virtualRef: useTooltipTriggerProps.virtualRef,\n} as const)\n\nexport const popconfirmEmits = {\n /**\n * @description triggers when click confirm button\n */\n confirm: (e: MouseEvent) => e instanceof MouseEvent,\n /**\n * @description triggers when click cancel button\n */\n cancel: (e: MouseEvent) => e instanceof MouseEvent,\n}\n\nexport type PopconfirmEmits = typeof popconfirmEmits\n\nexport type PopconfirmProps = ExtractPropTypes\nexport type PopconfirmPropsPublic = __ExtractPublicPropTypes<\n typeof popconfirmProps\n>\n\nexport type PopconfirmInstance = InstanceType & unknown\n","\n\n\n","import { withInstall } from '@element-plus/utils'\nimport Popconfirm from './src/popconfirm.vue'\n\nimport type { SFCWithInstall } from '@element-plus/utils'\n\nexport const ElPopconfirm: SFCWithInstall =\n withInstall(Popconfirm)\nexport default ElPopconfirm\n\nexport * from './src/popconfirm'\n","import { Star, StarFilled } from '@element-plus/icons-vue'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport {\n buildProps,\n definePropType,\n iconPropType,\n isNumber,\n mutable,\n} from '@element-plus/utils'\nimport { useAriaProps, useSizeProp } from '@element-plus/hooks'\n\nimport type { Component, ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\nimport type Rate from './rate.vue'\n\nexport const rateProps = buildProps({\n /**\n * @description binding value\n */\n modelValue: {\n type: Number,\n default: 0,\n },\n /**\n * @description native `id` attribute\n */\n id: {\n type: String,\n default: undefined,\n },\n /**\n * @description threshold value between low and medium level. The value itself will be included in low level\n */\n lowThreshold: {\n type: Number,\n default: 2,\n },\n /**\n * @description threshold value between medium and high level. The value itself will be included in high level\n */\n highThreshold: {\n type: Number,\n default: 4,\n },\n /**\n * @description max rating score\n */\n max: {\n type: Number,\n default: 5,\n },\n /**\n * @description colors for icons. If array, it should have 3 elements, each of which corresponds with a score level, else if object, the key should be threshold value between two levels, and the value should be corresponding color\n */\n colors: {\n type: definePropType>([Array, Object]),\n default: () => mutable(['', '', ''] as const),\n },\n /**\n * @description color of unselected icons\n */\n voidColor: {\n type: String,\n default: '',\n },\n /**\n * @description color of unselected read-only icons\n */\n disabledVoidColor: {\n type: String,\n default: '',\n },\n /**\n * @description icon components. If array, it should have 3 elements, each of which corresponds with a score level, else if object, the key should be threshold value between two levels, and the value should be corresponding icon component\n */\n icons: {\n type: definePropType<\n Array | Record\n >([Array, Object]),\n default: () =>\n [StarFilled, StarFilled, StarFilled] as [Component, Component, Component],\n },\n /**\n * @description component of unselected icons\n */\n voidIcon: {\n type: iconPropType,\n default: () => Star as Component,\n },\n /**\n * @description component of unselected read-only icons\n */\n disabledVoidIcon: {\n type: iconPropType,\n default: () => StarFilled as Component,\n },\n /**\n * @description whether Rate is read-only\n */\n disabled: {\n type: Boolean,\n default: undefined,\n },\n /**\n * @description whether picking half start is allowed\n */\n allowHalf: Boolean,\n /**\n * @description whether to display texts\n */\n showText: Boolean,\n /**\n * @description whether to display current score. show-score and show-text cannot be true at the same time\n */\n showScore: Boolean,\n /**\n * @description color of texts\n */\n textColor: {\n type: String,\n default: '',\n },\n /**\n * @description text array\n */\n texts: {\n type: definePropType(Array),\n default: () =>\n mutable([\n 'Extremely bad',\n 'Disappointed',\n 'Fair',\n 'Satisfied',\n 'Surprise',\n ] as const),\n },\n /**\n * @description score template\n */\n scoreTemplate: {\n type: String,\n default: '{value}',\n },\n /**\n * @description size of Rate\n */\n size: useSizeProp,\n /**\n * @description whether value can be reset to `0`\n */\n clearable: Boolean,\n ...useAriaProps(['ariaLabel']),\n} as const)\n\nexport type RateProps = ExtractPropTypes\nexport type RatePropsPublic = __ExtractPublicPropTypes\n\nexport const rateEmits = {\n [CHANGE_EVENT]: (value: number) => isNumber(value),\n [UPDATE_MODEL_EVENT]: (value: number) => isNumber(value),\n}\nexport type RateEmits = typeof rateEmits\n\nexport type RateInstance = InstanceType & unknown\n","\n\n\n","import { withInstall } from '@element-plus/utils'\nimport Rate from './src/rate.vue'\n\nimport type { SFCWithInstall } from '@element-plus/utils'\n\nexport const ElRate: SFCWithInstall = withInstall(Rate)\nexport default ElRate\n\nexport * from './src/rate'\n","import { buildProps } from '@element-plus/utils'\nimport {\n CircleCheckFilled,\n CircleCloseFilled,\n InfoFilled,\n WarningFilled,\n} from '@element-plus/icons-vue'\n\nimport type { Component, ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\nimport type Result from './result.vue'\n\nexport const IconMap = {\n primary: 'icon-primary',\n success: 'icon-success',\n warning: 'icon-warning',\n error: 'icon-error',\n info: 'icon-info',\n} as const\n\nexport const IconComponentMap: Record<\n (typeof IconMap)[keyof typeof IconMap],\n Component\n> = {\n [IconMap.primary]: InfoFilled,\n [IconMap.success]: CircleCheckFilled,\n [IconMap.warning]: WarningFilled,\n [IconMap.error]: CircleCloseFilled,\n [IconMap.info]: InfoFilled,\n}\n\nexport const resultProps = buildProps({\n /**\n * @description title of result\n */\n title: {\n type: String,\n default: '',\n },\n /**\n * @description sub title of result\n */\n subTitle: {\n type: String,\n default: '',\n },\n /**\n * @description icon type of result\n */\n icon: {\n type: String,\n values: ['primary', 'success', 'warning', 'info', 'error'],\n default: 'info',\n },\n} as const)\n\nexport type ResultProps = ExtractPropTypes\nexport type ResultPropsPublic = __ExtractPublicPropTypes\n\nexport type ResultInstance = InstanceType & unknown\n","\n\n\n","import { withInstall } from '@element-plus/utils'\nimport Result from './src/result.vue'\n\nimport type { SFCWithInstall } from '@element-plus/utils'\n\nexport const ElResult: SFCWithInstall = withInstall(Result)\n\nexport default ElResult\n\nexport * from './src/result'\n","import { buildProps } from '@element-plus/utils'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\nimport type Row from './row.vue'\n\nexport const RowJustify = [\n 'start',\n 'center',\n 'end',\n 'space-around',\n 'space-between',\n 'space-evenly',\n] as const\n\nexport const RowAlign = ['top', 'middle', 'bottom'] as const\n\nexport const rowProps = buildProps({\n /**\n * @description custom element tag\n */\n tag: {\n type: String,\n default: 'div',\n },\n /**\n * @description grid spacing\n */\n gutter: {\n type: Number,\n default: 0,\n },\n /**\n * @description horizontal alignment of flex layout\n */\n justify: {\n type: String,\n values: RowJustify,\n default: 'start',\n },\n /**\n * @description vertical alignment of flex layout\n */\n align: {\n type: String,\n values: RowAlign,\n },\n} as const)\n\nexport type RowProps = ExtractPropTypes\nexport type RowPropsPublic = __ExtractPublicPropTypes\nexport type RowInstance = InstanceType & unknown\n","\n\n\n","import { withInstall } from '@element-plus/utils'\nimport Row from './src/row.vue'\n\nimport type { SFCWithInstall } from '@element-plus/utils'\n\nexport const ElRow: SFCWithInstall = withInstall(Row)\nexport default ElRow\n\nexport * from './src/row'\nexport * from './src/constants'\n","\n\n\n","import type { OptionV2EmitFn, OptionV2Props } from './defaults'\n\nexport function useOption(\n props: OptionV2Props,\n { emit }: { emit: OptionV2EmitFn }\n) {\n return {\n hoverItem: () => {\n if (!props.disabled) {\n emit('hover', props.index)\n }\n },\n selectOptionClick: () => {\n if (!props.disabled) {\n emit('select', props.item, props.index)\n }\n },\n }\n}\n","import { placements } from '@popperjs/core'\nimport {\n useAriaProps,\n useEmptyValuesProps,\n useSizeProp,\n} from '@element-plus/hooks'\nimport {\n buildProps,\n definePropType,\n iconPropType,\n isBoolean,\n isNumber,\n} from '@element-plus/utils'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport { useTooltipContentProps } from '@element-plus/components/tooltip'\nimport { ArrowDown, CircleClose } from '@element-plus/icons-vue'\nimport { tagProps } from '../../tag'\nimport { defaultProps } from './useProps'\n\nimport type SelectV2 from './select.vue'\nimport type { Option, OptionType } from './select.types'\nimport type { Props } from './useProps'\nimport type { EmitFn } from '@element-plus/utils/vue/typescript'\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\nimport type {\n Options,\n Placement,\n PopperEffect,\n} from '@element-plus/components/popper'\n\nexport const selectV2Props = buildProps({\n /**\n * @description whether creating new items is allowed. To use this, `filterable` must be true\n */\n allowCreate: Boolean,\n /**\n * @description autocomplete of select input\n */\n autocomplete: {\n type: definePropType<'none' | 'both' | 'list' | 'inline'>(String),\n default: 'none',\n },\n /**\n * @description for non-filterable Select, this prop decides if the option menu pops up when the input is focused\n */\n automaticDropdown: Boolean,\n /**\n * @description whether select can be cleared\n */\n clearable: Boolean,\n /**\n * @description custom clear icon\n */\n clearIcon: {\n type: iconPropType,\n default: CircleClose,\n },\n /**\n * @description tooltip theme, built-in theme: `dark` / `light`\n */\n effect: {\n type: definePropType(String),\n default: 'light',\n },\n /**\n * @description whether to collapse tags to a text when multiple selecting\n */\n collapseTags: Boolean,\n /**\n * @description whether show all selected tags when mouse hover text of collapse-tags. To use this, `collapse-tags` must be true\n */\n collapseTagsTooltip: Boolean,\n /**\n * @description The max tags number to be shown. To use this, `collapse-tags` must be true\n */\n maxCollapseTags: {\n type: Number,\n default: 1,\n },\n /**\n * @description\n */\n defaultFirstOption: Boolean,\n /**\n * @description is disabled\n */\n disabled: {\n type: Boolean,\n default: undefined,\n },\n /**\n * @description\n */\n estimatedOptionHeight: {\n type: Number,\n default: undefined,\n },\n /**\n * @description whether Select is filterable\n */\n filterable: Boolean,\n /**\n * @description custom filter method, the first parameter is the current input value. To use this, `filterable` must be true\n */\n filterMethod: {\n type: definePropType<(query: string) => void>(Function),\n },\n /**\n * @description The height of the dropdown panel, 34px for each item\n */\n height: {\n type: Number,\n default: 274, // same as select dropdown menu\n },\n /**\n * @description The height of the dropdown item\n */\n itemHeight: {\n type: Number,\n default: 34,\n },\n /**\n * @description native input id\n */\n id: String,\n /**\n * @description whether Select is loading data from server\n */\n loading: Boolean,\n /**\n * @description displayed text while loading data from server, default is 'Loading'\n */\n loadingText: String,\n /**\n * @description biding value\n */\n modelValue: {\n type: definePropType<\n any[] | string | number | boolean | Record | any\n >([Array, String, Number, Boolean, Object]),\n default: undefined,\n },\n /**\n * @description is multiple\n */\n multiple: Boolean,\n /**\n * @description maximum number of options user can select when multiple is true. No limit when set to 0\n */\n multipleLimit: {\n type: Number,\n default: 0,\n },\n /**\n * @description the name attribute of select input\n */\n name: String,\n /**\n * @description displayed text when there is no options, you can also use slot empty, the default is 'No Data'\n */\n noDataText: String,\n /**\n * @description displayed text when no data matches the filtering query, you can also use slot `empty`, default is 'No matching data'\n */\n noMatchText: String,\n /**\n * @description function that gets called when the input value changes. Its parameter is the current input value. To use this, `filterable` must be true\n */\n remoteMethod: {\n type: definePropType<(query: string) => void>(Function),\n },\n /**\n * @description whether reserve the keyword after select filtered option.\n */\n reserveKeyword: {\n type: Boolean,\n default: true,\n },\n /**\n * @description data of the options, the key of `value` and `label` can be customize by `props`\n */\n options: {\n type: definePropType(Array),\n required: true,\n },\n /**\n * @description placeholder, the default is 'Please select'\n */\n placeholder: {\n type: String,\n },\n /**\n * @description whether select dropdown is teleported, if `true` it will be teleported to where `append-to` sets\n */\n teleported: useTooltipContentProps.teleported,\n /**\n * @description when select dropdown is inactive and `persistent` is `false`, select dropdown will be destroyed\n */\n persistent: {\n type: Boolean,\n default: true,\n },\n /**\n * @description custom class name for Select's dropdown\n */\n popperClass: useTooltipContentProps.popperClass,\n /**\n * @description custom style for Select's dropdown\n */\n popperStyle: useTooltipContentProps.popperStyle,\n /**\n * @description [popper.js](https://popper.js.org/docs/v2/) parameters\n */\n popperOptions: {\n type: definePropType>(Object),\n default: () => ({}) as Partial,\n },\n /**\n * @description whether search data from server\n */\n remote: Boolean,\n /**\n * @description debounce delay during remote search, in milliseconds\n */\n debounce: {\n type: Number,\n default: 300,\n },\n /**\n * @description size of component\n */\n size: useSizeProp,\n /**\n * @description configuration options, see the following table\n */\n props: {\n type: definePropType(Object),\n default: () => defaultProps,\n },\n /**\n * @description unique identity key name for value, required when value is an object\n */\n valueKey: {\n type: String,\n default: 'value',\n },\n /**\n * @description Controls whether the scrollbar is always displayed\n */\n scrollbarAlwaysOn: Boolean,\n /**\n * @description whether to trigger form validation\n */\n validateEvent: {\n type: Boolean,\n default: true,\n },\n /**\n * @description offset of the dropdown\n */\n offset: {\n type: Number,\n default: 12,\n },\n /**\n * @description in remote search method show suffix icon\n */\n remoteShowSuffix: Boolean,\n /**\n * @description Determines whether the arrow is displayed\n */\n showArrow: {\n type: Boolean,\n default: true,\n },\n /**\n * @description position of dropdown\n */\n placement: {\n type: definePropType(String),\n values: placements,\n default: 'bottom-start',\n },\n /**\n * @description list of possible positions for dropdown\n */\n fallbackPlacements: {\n type: definePropType(Array),\n default: ['bottom-start', 'top-start', 'right', 'left'],\n },\n /**\n * @description tag type\n */\n tagType: { ...tagProps.type, default: 'info' },\n /**\n * @description tag effect\n */\n tagEffect: { ...tagProps.effect, default: 'light' },\n /**\n * @description tabindex for input\n */\n tabindex: {\n type: [String, Number],\n default: 0,\n },\n /**\n * @description which element the select dropdown appends to\n */\n appendTo: useTooltipContentProps.appendTo,\n /**\n * @description if it is `true`, the width of the dropdown panel is the same as the input box.\n * if it is `false`, the width is automatically calculated based on the value of `label`,\n * or it can be set to a number to make it a fixed width\n */\n fitInputWidth: {\n type: [Boolean, Number],\n default: true,\n validator(val) {\n return isBoolean(val) || isNumber(val)\n },\n },\n suffixIcon: {\n type: iconPropType,\n default: ArrowDown,\n },\n ...useEmptyValuesProps,\n ...useAriaProps(['ariaLabel']),\n} as const)\n\nexport const optionV2Props = buildProps({\n data: Array,\n disabled: Boolean,\n hovering: Boolean,\n item: {\n type: definePropType

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 z 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 z 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%0ACReDX~_DDOf&`P%k2&mdAM- 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[Number, String]),\n },\n /**\n * @description SVG tag's fill attribute\n */\n color: {\n type: String,\n },\n} as const)\nexport type IconProps = ExtractPropTypes\nexport type IconPropsPublic = __ExtractPublicPropTypes\nexport type IconInstance = InstanceType & unknown\n","\n\n\n","import { withInstall } from '@element-plus/utils'\nimport Icon from './src/icon.vue'\n\nimport type { SFCWithInstall } from '@element-plus/utils'\n\nexport const ElIcon: SFCWithInstall = withInstall(Icon)\nexport default ElIcon\n\nexport * from './src/icon'\n","'use strict';\nvar $TypeError = TypeError;\n\nmodule.exports = function (options) {\n var alphabet = options && options.alphabet;\n if (alphabet === undefined || alphabet === 'base64' || alphabet === 'base64url') return alphabet || 'base64';\n throw new $TypeError('Incorrect `alphabet` option');\n};\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","export const componentSizes = ['', 'default', 'small', 'large'] as const\n\nexport type ComponentSize = (typeof componentSizes)[number]\n\nexport const componentSizeMap = {\n large: 40,\n default: 32,\n small: 24,\n} as const\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)\n isClient && /firefox/i.test(window.navigator.userAgent)\n\nexport const isAndroid = (): boolean =>\n isClient && /android/i.test(window.navigator.userAgent)\n\nexport { isClient, isIOS }\n","import { componentSizes, datePickTypes } from '@element-plus/constants'\n\nimport type { ComponentSize, DatePickType } from '@element-plus/constants'\n\nexport const isValidComponentSize = (val: string): val is ComponentSize | '' =>\n ['', ...componentSizes].includes(val)\n\nexport const isValidDatePickType = (val: string): val is DatePickType =>\n ([...datePickTypes] as string[]).includes(val)\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar source = require('./faHouse');\nexports.definition = {\n prefix: source.prefix,\n iconName: source.iconName,\n icon: [\n source.width,\n source.height,\n source.aliases,\n source.unicode,\n source.svgPathData\n ]};\n\nexports.faHome = exports.definition;\nexports.prefix = source.prefix;\nexports.iconName = source.iconName;\nexports.width = source.width;\nexports.height = source.height;\nexports.ligatures = source.aliases;\nexports.unicode = source.unicode;\nexports.svgPathData = source.svgPathData;\nexports.aliases = source.aliases;","'use strict';\nvar globalThis = require('../internals/global-this');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\nvar arrayBufferByteLength = require('../internals/array-buffer-byte-length');\n\nvar DataView = globalThis.DataView;\n\nmodule.exports = function (O) {\n if (!NATIVE_ARRAY_BUFFER || arrayBufferByteLength(O) !== 0) return false;\n try {\n // eslint-disable-next-line no-new -- thrower\n new DataView(O);\n return false;\n } catch (error) {\n return true;\n }\n};\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'chart-bar';\nvar width = 512;\nvar height = 512;\nvar aliases = [\"bar-chart\"];\nvar unicode = 'f080';\nvar svgPathData = 'M32 32c17.7 0 32 14.3 32 32l0 336c0 8.8 7.2 16 16 16l400 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L80 480c-44.2 0-80-35.8-80-80L0 64C0 46.3 14.3 32 32 32zm96 64c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32zm32 80l128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 112l256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n aliases,\n unicode,\n svgPathData\n ]};\n\nexports.faChartBar = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = aliases;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;\nexports.aliases = aliases;","import { computed, ref, shallowRef } from 'vue'\nimport { useResizeObserver } from '@vueuse/core'\nimport { MINIMUM_INPUT_WIDTH } from '@element-plus/constants'\n\nexport function useCalcInputWidth() {\n const calculatorRef = shallowRef()\n const calculatorWidth = ref(0)\n\n const inputStyle = computed(() => ({\n minWidth: `${Math.max(calculatorWidth.value, MINIMUM_INPUT_WIDTH)}px`,\n }))\n\n const resetCalculatorWidth = () => {\n calculatorWidth.value =\n calculatorRef.value?.getBoundingClientRect().width ?? 0\n }\n\n useResizeObserver(calculatorRef, resetCalculatorWidth)\n\n return {\n calculatorRef,\n calculatorWidth,\n inputStyle,\n }\n}\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","import { buildProps } from '@element-plus/utils'\nimport { componentSizes } from '@element-plus/constants'\n\nimport type Tag from './tag.vue'\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\n\nexport const tagProps = buildProps({\n /**\n * @description type of Tag\n */\n type: {\n type: String,\n values: ['primary', 'success', 'info', 'warning', 'danger'],\n default: 'primary',\n },\n /**\n * @description whether Tag can be removed\n */\n closable: Boolean,\n /**\n * @description whether to disable animations\n */\n disableTransitions: Boolean,\n /**\n * @description whether Tag has a highlighted border\n */\n hit: Boolean,\n /**\n * @description background color of the Tag\n */\n color: String,\n /**\n * @description size of Tag\n */\n size: {\n type: String,\n values: componentSizes,\n },\n /**\n * @description theme of Tag\n */\n effect: {\n type: String,\n values: ['dark', 'light', 'plain'],\n default: 'light',\n },\n /**\n * @description whether Tag is rounded\n */\n round: Boolean,\n} as const)\nexport type TagProps = ExtractPropTypes\nexport type TagPropsPublic = __ExtractPublicPropTypes\n\nexport const tagEmits = {\n close: (evt: MouseEvent) => evt instanceof MouseEvent,\n click: (evt: MouseEvent) => evt instanceof MouseEvent,\n}\nexport type TagEmits = typeof tagEmits\n\nexport type TagInstance = InstanceType & unknown\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\n\nvar document = globalThis.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","import type {\n ComputedRef,\n InjectionKey,\n Ref,\n Slots,\n UnwrapRef,\n VNode,\n} from 'vue'\nimport type { TabsProps } from './tabs'\nimport type { TabPaneProps } from './tab-pane'\nimport type { TabNavInstance } from './tab-nav'\n\nexport type TabPaneName = string | number\n\nexport type TabsPaneContext = UnwrapRef<{\n uid: number\n getVnode: () => VNode\n slots: Slots\n props: TabPaneProps\n paneName: ComputedRef\n active: ComputedRef\n index: Ref\n isClosable: ComputedRef\n isFocusInsidePane: () => boolean | undefined\n}>\n\nexport interface TabsRootContext {\n props: TabsProps\n currentName: Ref\n registerPane: (pane: TabsPaneContext) => void\n unregisterPane: (pane: TabsPaneContext) => void\n nav$: Ref\n}\n\nexport const tabsRootContextKey: InjectionKey =\n Symbol('tabsRootContextKey')\n","import { buildProps, definePropType, mutable } from '@element-plus/utils'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\nimport type { TabPaneName, TabsPaneContext } from './constants'\nimport type TabBar from './tab-bar.vue'\n\nexport const tabBarProps = buildProps({\n tabs: {\n type: definePropType(Array),\n default: () => mutable([] as const),\n },\n tabRefs: {\n type: definePropType<{ [key: TabPaneName]: HTMLDivElement }>(Object),\n default: () => mutable({} as const),\n },\n} as const)\n\nexport type TabBarProps = ExtractPropTypes\nexport type TabBarPropsPublic = __ExtractPublicPropTypes\nexport type TabBarInstance = InstanceType & unknown\n","\n\n\n","import {\n computed,\n defineComponent,\n inject,\n nextTick,\n onMounted,\n onUpdated,\n ref,\n shallowRef,\n triggerRef,\n watch,\n} from 'vue'\nimport {\n useDocumentVisibility,\n useElementSize,\n useResizeObserver,\n useWindowFocus,\n} from '@vueuse/core'\nimport {\n buildProps,\n capitalize,\n definePropType,\n getEventCode,\n mutable,\n throwError,\n} from '@element-plus/utils'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { ArrowLeft, ArrowRight, Close } from '@element-plus/icons-vue'\nimport { useNamespace } from '@element-plus/hooks'\nimport useWheel from '@element-plus/components/virtual-list/src/hooks/use-wheel'\nimport { clamp } from 'lodash-unified'\nimport TabBar from './tab-bar.vue'\nimport { tabsRootContextKey } from './constants'\n\nimport type {\n CSSProperties,\n ComponentPublicInstance,\n ExtractPropTypes,\n __ExtractPublicPropTypes,\n} from 'vue'\nimport type { TabBarInstance } from './tab-bar'\nimport type { TabPaneName, TabsPaneContext } from './constants'\n\ninterface Scrollable {\n next?: boolean\n prev?: number\n}\n\nexport const tabNavProps = buildProps({\n panes: {\n type: definePropType(Array),\n default: () => mutable([] as const),\n },\n currentName: {\n type: [String, Number],\n default: '',\n },\n editable: Boolean,\n type: {\n type: String,\n values: ['card', 'border-card', ''],\n default: '',\n },\n stretch: Boolean,\n /**\n * @description tab-nav tabindex\n */\n tabindex: {\n type: [String, Number],\n default: undefined,\n },\n} as const)\n\nexport const tabNavEmits = {\n tabClick: (tab: TabsPaneContext, tabName: TabPaneName, ev: Event) =>\n ev instanceof Event,\n tabRemove: (tab: TabsPaneContext, ev: Event) => ev instanceof Event,\n}\n\nexport type TabNavProps = ExtractPropTypes\nexport type TabNavPropsPublic = __ExtractPublicPropTypes\nexport type TabNavEmits = typeof tabNavEmits\n\nconst COMPONENT_NAME = 'ElTabNav'\nconst TabNav = defineComponent({\n name: COMPONENT_NAME,\n props: tabNavProps,\n emits: tabNavEmits,\n setup(props, { expose, emit }) {\n const rootTabs = inject(tabsRootContextKey)\n if (!rootTabs) throwError(COMPONENT_NAME, ``)\n\n const ns = useNamespace('tabs')\n const visibility = useDocumentVisibility()\n const focused = useWindowFocus()\n\n const navScroll$ = ref()\n const nav$ = ref()\n const el$ = ref()\n const tabRefsMap = ref<{ [key: TabPaneName]: HTMLDivElement }>({})\n\n const tabBarRef = ref()\n\n const scrollable = ref(false)\n const navOffset = ref(0)\n const isFocus = ref(false)\n const focusable = ref(true)\n const tracker = shallowRef()\n\n const isHorizontal = computed(() =>\n ['top', 'bottom'].includes(rootTabs.props.tabPosition)\n )\n\n const sizeName = computed(() => (isHorizontal.value ? 'width' : 'height'))\n const navStyle = computed(() => {\n const dir = sizeName.value === 'width' ? 'X' : 'Y'\n return {\n transform: `translate${dir}(-${navOffset.value}px)`,\n }\n })\n\n const { width: navContainerWidth, height: navContainerHeight } =\n useElementSize(navScroll$)\n const { width: navWidth, height: navHeight } = useElementSize(\n nav$,\n { width: 0, height: 0 },\n { box: 'border-box' }\n )\n\n const navContainerSize = computed(() =>\n isHorizontal.value ? navContainerWidth.value : navContainerHeight.value\n )\n const navSize = computed(() =>\n isHorizontal.value ? navWidth.value : navHeight.value\n )\n\n const { onWheel } = useWheel(\n {\n atStartEdge: computed(() => navOffset.value <= 0),\n atEndEdge: computed(\n () => navSize.value - navOffset.value <= navContainerSize.value\n ),\n layout: computed(() =>\n isHorizontal.value ? 'horizontal' : 'vertical'\n ),\n },\n (offset) => {\n navOffset.value = clamp(\n navOffset.value + offset,\n 0,\n navSize.value - navContainerSize.value\n )\n }\n )\n\n const scrollPrev = () => {\n if (!navScroll$.value) return\n\n const containerSize =\n navScroll$.value[`offset${capitalize(sizeName.value)}`]\n const currentOffset = navOffset.value\n\n if (!currentOffset) return\n\n const newOffset =\n currentOffset > containerSize ? currentOffset - containerSize : 0\n\n navOffset.value = newOffset\n }\n\n const scrollNext = () => {\n if (!navScroll$.value || !nav$.value) return\n\n const navSize = nav$.value[`offset${capitalize(sizeName.value)}`]\n const containerSize =\n navScroll$.value[`offset${capitalize(sizeName.value)}`]\n const currentOffset = navOffset.value\n\n if (navSize - currentOffset <= containerSize) return\n\n const newOffset =\n navSize - currentOffset > containerSize * 2\n ? currentOffset + containerSize\n : navSize - containerSize\n\n navOffset.value = newOffset\n }\n\n const scrollToActiveTab = async () => {\n const nav = nav$.value\n if (!scrollable.value || !el$.value || !navScroll$.value || !nav) return\n\n await nextTick()\n\n const activeTab = tabRefsMap.value[props.currentName]\n if (!activeTab) return\n\n const navScroll = navScroll$.value\n\n const activeTabBounding = activeTab.getBoundingClientRect()\n const navScrollBounding = navScroll.getBoundingClientRect()\n const maxOffset = isHorizontal.value\n ? nav.offsetWidth - navScrollBounding.width\n : nav.offsetHeight - navScrollBounding.height\n const currentOffset = navOffset.value\n let newOffset = currentOffset\n\n if (isHorizontal.value) {\n if (activeTabBounding.left < navScrollBounding.left) {\n newOffset =\n currentOffset - (navScrollBounding.left - activeTabBounding.left)\n }\n if (activeTabBounding.right > navScrollBounding.right) {\n newOffset =\n currentOffset + activeTabBounding.right - navScrollBounding.right\n }\n } else {\n if (activeTabBounding.top < navScrollBounding.top) {\n newOffset =\n currentOffset - (navScrollBounding.top - activeTabBounding.top)\n }\n if (activeTabBounding.bottom > navScrollBounding.bottom) {\n newOffset =\n currentOffset +\n (activeTabBounding.bottom - navScrollBounding.bottom)\n }\n }\n newOffset = Math.max(newOffset, 0)\n navOffset.value = Math.min(newOffset, maxOffset)\n }\n\n const update = () => {\n if (!nav$.value || !navScroll$.value) return\n\n props.stretch && tabBarRef.value?.update()\n\n const navSize = nav$.value[`offset${capitalize(sizeName.value)}`]\n const containerSize =\n navScroll$.value[`offset${capitalize(sizeName.value)}`]\n const currentOffset = navOffset.value\n\n if (containerSize < navSize) {\n scrollable.value = scrollable.value || {}\n scrollable.value.prev = currentOffset\n scrollable.value.next = currentOffset + containerSize < navSize\n if (navSize - currentOffset < containerSize) {\n navOffset.value = navSize - containerSize\n }\n } else {\n scrollable.value = false\n if (currentOffset > 0) {\n navOffset.value = 0\n }\n }\n }\n\n const changeTab = (event: KeyboardEvent) => {\n const code = getEventCode(event)\n let step = 0\n\n switch (code) {\n case EVENT_CODE.left:\n case EVENT_CODE.up:\n step = -1\n break\n case EVENT_CODE.right:\n case EVENT_CODE.down:\n step = 1\n break\n default:\n return\n }\n\n const tabList = Array.from(\n (\n event.currentTarget as HTMLDivElement\n ).querySelectorAll('[role=tab]:not(.is-disabled)')\n )\n const currentIndex = tabList.indexOf(event.target as HTMLDivElement)\n let nextIndex = currentIndex + step\n\n if (nextIndex < 0) {\n nextIndex = tabList.length - 1\n } else if (nextIndex >= tabList.length) {\n nextIndex = 0\n }\n\n tabList[nextIndex].focus({ preventScroll: true }) // 改变焦点元素\n tabList[nextIndex].click() // 选中下一个tab\n setFocus()\n }\n\n const setFocus = () => {\n if (focusable.value) isFocus.value = true\n }\n const removeFocus = () => (isFocus.value = false)\n\n const setRefs = (\n el: Element | ComponentPublicInstance | null,\n key: TabPaneName\n ) => {\n tabRefsMap.value[key] = el as HTMLDivElement\n }\n\n const focusActiveTab = async () => {\n await nextTick()\n\n const activeTab = tabRefsMap.value[props.currentName]\n activeTab?.focus({ preventScroll: true })\n }\n\n watch(visibility, (visibility) => {\n if (visibility === 'hidden') {\n focusable.value = false\n } else if (visibility === 'visible') {\n setTimeout(() => (focusable.value = true), 50)\n }\n })\n watch(focused, (focused) => {\n if (focused) {\n setTimeout(() => (focusable.value = true), 50)\n } else {\n focusable.value = false\n }\n })\n\n useResizeObserver(el$, update)\n\n onMounted(() => setTimeout(() => scrollToActiveTab(), 0))\n onUpdated(() => update())\n\n expose({\n scrollToActiveTab,\n removeFocus,\n focusActiveTab,\n tabListRef: nav$,\n tabBarRef,\n scheduleRender: () => triggerRef(tracker),\n })\n\n return () => {\n const scrollBtn = scrollable.value\n ? [\n \n \n \n \n ,\n \n \n \n \n ,\n ]\n : null\n\n const tabs = props.panes.map((pane, index) => {\n const uid = pane.uid\n const disabled = pane.props.disabled\n const tabName = pane.props.name ?? pane.index ?? `${index}`\n const closable =\n !disabled &&\n (pane.isClosable || (pane.props.closable !== false && props.editable))\n pane.index = `${index}`\n\n const btnClose = closable ? (\n emit('tabRemove', pane, ev)}\n >\n \n \n ) : null\n\n const tabLabelContent = pane.slots.label?.() || pane.props.label\n const tabindex =\n !disabled && pane.active\n ? (props.tabindex ?? rootTabs.props.tabindex)\n : -1\n\n return (\n setRefs(el, tabName)}\n class={[\n ns.e('item'),\n ns.is(rootTabs.props.tabPosition),\n ns.is('active', pane.active),\n ns.is('disabled', disabled),\n ns.is('closable', closable),\n ns.is('focus', isFocus.value),\n ]}\n id={`tab-${tabName}`}\n key={`tab-${uid}`}\n aria-controls={`pane-${tabName}`}\n role=\"tab\"\n aria-selected={pane.active}\n tabindex={tabindex}\n onFocus={() => setFocus()}\n onBlur={() => removeFocus()}\n onClick={(ev: MouseEvent) => {\n removeFocus()\n emit('tabClick', pane, tabName, ev)\n }}\n onKeydown={(ev: KeyboardEvent) => {\n const code = getEventCode(ev)\n if (\n closable &&\n (code === EVENT_CODE.delete || code === EVENT_CODE.backspace)\n ) {\n emit('tabRemove', pane, ev)\n }\n }}\n >\n {...[tabLabelContent, btnClose]}\n \n )\n })\n\n // By tracking the value property, we can schedule a job to re-render `TabNav` when needed.\n // Unlike `instance.update`, the scheduler ensures the job is queued only once even if we trigger it multiple times.\n tracker.value\n\n return (\n \n {scrollBtn}\n

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 literal 0 HcmV?d00001 diff --git a/frontend-dist/js/787.d0dbc2dd.js.gz b/frontend-dist/js/787.d0dbc2dd.js.gz deleted file mode 100644 index e7ba8ce2dd8cbb81b0986dc8902a42f815767cbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1566 zcmV+(2I2W1iwFP!000023Z++VZ`{Nd{(gVOG9Z`{V`shD>^cta6%9mGN)h5kAX%$w zY|rivYtNXO@uuz85)=fb0>KAVM5_X=5UPYI+zY+rqC$TR$tL;4UqH6^HQ7+5DALBB zIp;a^Jaf*OF-R4yC@oo_!5UOFYI|Ud`Uweo>)n+16yXw~=QZtS3lEwrc5}sPr##S1a7Zx43JsJgAw^i3A*6T^(l$vWJ+(puNp&iDWh2Yb zTA#>@a22$x)p`?Q=0XMSmE~m%VFg!L8+AK>SZOpHHbQHG;7V7xI|w48lmocXMq8vj zGy=gjVVp{kVd;8+aZcq6ub$lmEgT$UPq_ve){|ME1U|uC>j5PL(8B3q3*HtW!`;K6g*FOgxHFmQ(kL+^#(Vj2G8uj= zWkGK|zBZP%(l6!5ecZ-A8k9=KF05i^c4`QMw&2=pp}mvT4RJg>Mge}U4r>P_ZYd#&E{$B z7pXNvR3(H@?b;&E=RqCJ2Aa3INM)W$p!zp9GdL}5Sm?;I!`U^kxC8J&$-wc=Vx`5N zVG?Nv)T?!X$EcAYn(@vg-A8-bLyMG2b7ib*DUDT~)uwA5mPRuj<%rA5WP*Wzr)v)mp+M$tg z9m#Bw5r79>N!t#1lk`cMrA}Y45LVGtFY1j7Ca)LMGzoG~jZ@;uC&y3a48liFhDmRk zQ#6P~8X9R52@)D4(xr@zGEieq#@!pg?|t~e&i2)v`(ICGJUNSTwa&A6j;O9Lhzv_A zlh+gS(Im)oUQ;<`(<}ov=h*Dsy|wr0`v*5~4{tvBCv0jZcx{%Aq-{x6_a)LPHfHAa zglr@YMajV~!`SmXa^;udwI9otHQ_M+%NyfpaaL{Qw$VrMsb@mguM`V#r)`@?G^SiD zPzi}9M&Gb&&9FwB!KsDjs!I}DDSi!WfzMLN`VaT4J+kNWBYV~#*>mMs&*JwfT*#j( zSg%`Fy}ZV@T?HG}rd>nWcNMJLtJP(MV|TzwOdar|&>Q(h2;i8VXIwd+Z$8_?fryh- z)6f~1rU|RKZEo5KdLUKwIU;*!MMwe8-{iXBZPv;A@$_(>-li2?Z8Yo}$}${_lxrG7 zG|*k9OvagJBw`oo>B(&jg0c;q?w!dGePAxSN#n;X{8$xb*r#nF>1(_I9>WF^C31>* zhHEPOB!VczG1XlWDrYciQzMTjq)0WDxr23d?KV)t}>IS z^E=s6y;?VI8d_G{Up5oo0a?~UYyVnWdc2}UDg%0!Bnji4*IwRqn|9L-tDzs%!q9wE QnK4QJ0#H$43JMMY09#lCC;$Ke diff --git a/frontend-dist/js/787.d0dbc2dd.js.map.gz b/frontend-dist/js/787.d0dbc2dd.js.map.gz deleted file mode 100644 index 2b7d1e2b14eeb0c140bd84d4a5f6f9a6d061d26c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3272 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.A.get("/api/auth/sessionCheck",{withCredentials:!0}).then(a=>{const o=a.data||{};if(!o.adminRequired)return l.A.commit("setAdminLoggedIn",!0),t();if(o.valid&&"admin"===o.authType)return l.A.commit("setAdminLoggedIn",!0),t();const i=l.A.state.adminLoggedIn;l.A.commit("setAdminLoggedIn",!1),"adminLogin"!==e.name?(i&&n.nk.error(r.Ay.global.t("login.authRequired")),t({name:"adminLogin"})):t()}).catch(()=>{const a=l.A.state.adminLoggedIn;l.A.commit("setAdminLoggedIn",!1),"adminLogin"!==e.name?(a&&n.nk.error(r.Ay.global.t("login.authRequired")),t({name:"adminLogin"})):t()})},d=(e,a,t)=>{i.A.get("/api/auth/sessionCheck",{withCredentials:!0}).then(a=>{const o=a.data||{};if(!o.userRequired)return l.A.commit("setUserLoggedIn",!0),t();if(o.valid)return l.A.commit("setUserLoggedIn",!0),t();const i=l.A.state.userLoggedIn;l.A.commit("setUserLoggedIn",!1),"login"!==e.name?(i&&n.nk.error(r.Ay.global.t("login.authRequired")),t({name:"login"})):t()}).catch(()=>{const a=l.A.state.userLoggedIn;l.A.commit("setUserLoggedIn",!1),"login"!==e.name?(a&&n.nk.error(r.Ay.global.t("login.authRequired")),t({name:"login"})):t()})},c=[{path:"/",name:"home",component:()=>Promise.all([t.e(903),t.e(173),t.e(473),t.e(502)]).then(t.bind(t,67502)),beforeEnter:d},{path:"/login",name:"login",component:()=>Promise.all([t.e(903),t.e(380),t.e(990)]).then(t.bind(t,61880))},{path:"/dashboard",name:"dashboard",component:()=>Promise.all([t.e(903),t.e(173),t.e(540),t.e(473),t.e(130)]).then(t.bind(t,14619)),beforeEnter:s},{path:"/customerConfig",name:"customerConfig",component:()=>Promise.all([t.e(903),t.e(173),t.e(540),t.e(581),t.e(223)]).then(t.bind(t,94223)),beforeEnter:s},{path:"/systemConfig",name:"systemConfig",component:()=>Promise.all([t.e(903),t.e(173),t.e(540),t.e(581),t.e(757)]).then(t.bind(t,55757)),beforeEnter:s},{path:"/adminLogin",name:"adminLogin",component:()=>Promise.all([t.e(903),t.e(380),t.e(730)]).then(t.bind(t,16556))},{path:"/blockimg",name:"blockimg",component:()=>Promise.all([t.e(903),t.e(711)]).then(t.bind(t,5215))},{path:"/whiteliston",name:"whiteliston",component:()=>Promise.all([t.e(903),t.e(773)]).then(t.bind(t,86569))},{path:"/browse/:dir*",name:"publicBrowse",component:()=>t.e(385).then(t.bind(t,57385))},{path:"/:pathMatch(.*)*",name:"notFound",component:()=>Promise.all([t.e(903),t.e(787)]).then(t.bind(t,75875))}],u=(0,o.aE)({history:(0,o.LA)("/"),routes:c});a.A=u},25507:function(e,a,t){t(18111),t(61701);var o=t(60782),n=t(457),l=t(55131);a.A=(0,o.y$)({state:{userConfig:null,bingWallPapers:[],adminLoggedIn:!1,userLoggedIn:!1,uploadMethod:"default",uploadCopyUrlForm:"",compressConfig:{customerCompress:void 0,compressQuality:void 0,compressBar:void 0,serverCompress:void 0,convertToWebp:void 0},storeUploadChannel:"",storeChannelName:null,storeAutoRetry:!0,storeUploadNameType:"",uploadFolder:"",customUrlSettings:{useCustomUrl:"false",customUrlPrefix:""},adminUrlSettings:{useCustomUrl:"false",customUrlPrefix:""},autoReUpload:!0,useDarkMode:null,cusDarkMode:!1},getters:{userConfig:e=>e.userConfig,bingWallPapers:e=>e.bingWallPapers,adminLoggedIn:e=>e.adminLoggedIn,userLoggedIn:e=>e.userLoggedIn,storeUploadMethod:e=>e.uploadMethod,uploadCopyUrlForm:e=>e.uploadCopyUrlForm,compressConfig:e=>e.compressConfig,storeUploadChannel:e=>e.storeUploadChannel,storeChannelName:e=>e.storeChannelName,storeUploadNameType:e=>e.storeUploadNameType,customUrlSettings:e=>e.customUrlSettings,storeAutoRetry:e=>e.storeAutoRetry,adminUrlSettings:e=>e.adminUrlSettings,storeUploadFolder:e=>e.uploadFolder||localStorage.getItem("uploadFolder")||"",useDarkMode:e=>e.useDarkMode,cusDarkMode:e=>e.cusDarkMode,storeAutoReUpload:e=>e.autoReUpload},mutations:{setUserConfig(e,a){e.userConfig=a},setBingWallPapers(e,a){e.bingWallPapers=a},setAdminLoggedIn(e,a){e.adminLoggedIn=a},setUserLoggedIn(e,a){e.userLoggedIn=a},setUploadMethod(e,a){e.uploadMethod=a},setUploadCopyUrlForm(e,a){e.uploadCopyUrlForm=a},setCompressConfig(e,{key:a,value:t}){e.compressConfig[a]=t},setStoreUploadChannel(e,a){e.storeUploadChannel=a},setStoreChannelName(e,a){e.storeChannelName=a},setStoreUploadNameType(e,a){e.storeUploadNameType=a},setCustomUrlSettings(e,{key:a,value:t}){e.customUrlSettings[a]=t},setStoreAutoRetry(e,a){e.storeAutoRetry=a},setAdminUrlSettings(e,{key:a,value:t}){e.adminUrlSettings[a]=t},setUseDarkMode(e,a){e.useDarkMode=a},setCusDarkMode(e,a){e.cusDarkMode=a},setStoreUploadFolder(e,a){e.uploadFolder=a,localStorage.setItem("uploadFolder",a)},setStoreAutoReUpload(e,a){e.autoReUpload=a}},actions:{async fetchUserConfig({commit:e}){try{const a=await n.A.get("/api/userConfig");e("setUserConfig",a.data)}catch(a){console.log(a)}},async fetchBingWallPapers({commit:e}){try{const a=await n.A.get("/api/bing/wallpaper"),t=a.data.data,o=t.map(e=>({url:"https://www.bing.com"+e.url}));await Promise.all(o.map(e=>new Promise((a,t)=>{const o=new Image;o.onload=a,o.onerror=t,o.src=e.url}))),e("setBingWallPapers",o)}catch(a){console.log(a)}}},modules:{},plugins:[(0,l.A)({paths:["userConfig","uploadMethod","uploadCopyUrlForm","compressConfig","storeUploadChannel","storeChannelName","storeAutoRetry","storeUploadNameType","uploadFolder","customUrlSettings","adminUrlSettings","autoReUpload","useDarkMode","cusDarkMode"]})]})},46638:function(e,a,t){t.d(a,{Ay:function(){return f},BY:function(){return h},xS:function(){return g}});t(17642),t(58004),t(33853),t(45876),t(32475),t(15024),t(31698);var o=t(85384),n=JSON.parse('{"login":{"title":"登录到 {owner} 图床","adminTitle":"管理端登录","password":"密码","username":"用户名","passwordPlaceholder":"请输入认证码","usernamePlaceholder":"请输入用户名","adminPasswordPlaceholder":"请输入密码","submit":"登录","success":"登录成功","failed":"登录失败,请检查密码是否正确","adminFailed":"用户名或密码错误","serverError":"服务器错误","systemError":"系统错误","authRequired":"请先认证!","authFailed":"认证失败!"},"upload":{"folderPlaceholder":"上传目录","pasteUpload":"粘贴上传","fileUpload":"文件上传","selectFolderUpload":"选择文件夹上传","dragUploadText":"拖拽 点击 或 {pasteShortcut} 粘贴上传","pasteUrlPlaceholder":"粘贴外链上传,多个外链用换行分隔","pasteUploadBtn":"上 传","pasteSave":"转存","pasteExternal":"外链","history":"上传记录","announcement":"查看公告","noAnnouncement":"暂无公告","announcementTitle":"公告","announcementAck":"我已知晓!","settings":"上传设置","linkFormat":"链接格式","manage":"系统管理","logout":"退出登录","logoutSuccess":"已退出登录","viewDocs":"查看文档","switchUploadMethod":"切换上传方式","copyAll":"整体复制","retryFailed":"失败重试","clearList":"清空列表","clearAll":"清空全部","clearUploaded":"清空已上传"},"uploadForm":{"deleted":"{name}已删除","uploadSuccess":"{name}上传成功","uploadFailed":"{name}上传失败","compressFailedCannotUpload":"{name}压缩失败,无法上传!","fileTooLarge":"{name}文件过大,无法上传!","compressedFileTooLarge":"{name}压缩后文件过大,无法上传!","copySuccess":"复制成功","copyFailed":"复制失败","copyAllSuccess":"整体复制成功","fileNotUploaded":"文件未上传成功,无法复制链接","fileListCleared":"文件列表已清空","fileListEmpty":"文件列表为空","successFilesCleared":"成功上传文件已清空","successFilesEmpty":"成功上传文件为空","noFailedFiles":"无上传失败文件","autoRetryOn":"自动重试已开启","autoRetryOff":"自动重试已关闭","autoRetry":"自动重试","maxRetryReached":"{name} 已达到最大重试次数({max}),停止重试","urlRequestFailed":"粘贴板中的URL地址请求失败","chunkMerging":"分块上传完成,正在合并文件,请耐心等待...","fileSizeTooLarge":"文件过大","chunkInitFailed":"初始化分块上传失败","uploadError":"上传过程中发生错误","imageLoadFailed":"图片加载失败"},"uploadSettings":{"title":"上传设置","uploadChannel":"上传渠道","channelType":"渠道类型","allChannels":"全部","configuredChannelsOnly":"已配置","noConfiguredChannels":"暂无已配置渠道","channelName":"渠道名称","channelNameTooltip":"选择具体的渠道名称,不选择则使用负载均衡或默认渠道","autoSelect":"自动选择","uploadDirectory":"上传目录","uploadDirectoryPlaceholder":"请输入上传目录路径","autoSwitch":"自动切换","autoSwitchTooltip":"对于非分块上传文件,上传失败自动切换到其他渠道上传","fileNaming":"文件命名方式","namingDefault":"默认","namingIndex":"仅前缀","namingOrigin":"仅原名","namingShort":"短链接","filePreprocess":"文件预处理","filePreprocessTooltip":"上传前在本地进行格式转换和压缩,仅对图片文件生效","convertToWebp":"转换为WebP","convertToWebpTooltip":"上传前将图片转换为WebP格式,可有效减小文件体积。转换失败时保持原格式上传","fileCompress":"文件压缩","compressThreshold":"压缩阈值","compressThresholdTooltip":"设置图片大小阈值,超过此值将自动压缩,单位MB","expectedSize":"期望大小","expectedSizeTooltip":"设置压缩后图片大小期望值,单位MB","serverCompress":"服务端压缩","serverCompressTooltip":"1. 在 Telegram 端进行压缩,仅对上传渠道为 Telegram 的图片文件生效
2. 若图片大小(本地压缩后大小)大于10MB,本设置自动失效
3. 若上传分辨率过大、透明背景等图片,建议关闭服务端压缩,否则可能出现未知问题","enableCompress":"开启压缩","confirm":"确定"},"uploadHistory":{"title":"历史记录","totalRecords":"共 {count} 条","switchView":"切换视图","clearRecords":"清空记录","loading":"加载中...","pullToLoadMore":"下拉加载更多","noMoreRecords":"没有更多记录了","emptyHistory":"暂无上传记录","linkCopied":"链接已复制","copyFailed":"复制失败","clearConfirmTitle":"提示","clearConfirmMessage":"确定要清空所有上传记录吗?","clearConfirmOk":"确定","clearConfirmCancel":"取消","recordsCleared":"记录已清空","deleteConfirmMessage":"确定要删除这条记录吗?","recordDeleted":"记录已删除"},"settings":{"linkFormatTitle":"链接格式设置","defaultCopyLink":"默认复制链接","rawLink":"原始链接","customLink":"自定义链接","customLinkTooltip":"默认链接为https://your.domain/file/xxx.jpg
如果启用自定义链接格式,只保留xxx.jpg部分,其他部分请自行输入","enableCustom":"启用自定义","customPrefix":"自定义前缀","customPrefixPlaceholder":"请输入自定义链接前缀","confirm":"确定","s3Link":"S3链接"},"dashboard":{"searchPlaceholder":"搜索:#标签 -#排除标签","sortAsc":"升序","sortDesc":"降序","sortByTime":"时间","sortBySize":"大小","sortByRawName":"文件 ID","sortByFileName":"文件名","selectedItems":"项已选","clearSelection":"清除选择","copy":"复制","delete":"删除","download":"下载","move":"移动","tagManagement":"标签管理","addToBlacklist":"加入黑名单","addToWhitelist":"加入白名单","linkFormat":"链接格式","listView":"列表视图","cardView":"卡片视图","logout":"退出登录","rootDirectory":"根目录","totalFiles":"共 {count} 个文件","noMatchingFiles":"未找到匹配的文件或文件夹","currentDirEmpty":"当前目录为空","adjustSearchHint":"尝试调整搜索条件或筛选器","uploadHint":"上传文件后将显示在这里","loadMore":"加载更多","totalPages":"共 {count} 页","jumpTo":"跳至","preview":"预览","fileName":"文件名","tags":"标签","channelType":"渠道类型","channelNameCol":"渠道名称","uploadAddress":"上传地址","fileSize":"大小","uploadTime":"上传时间","actions":"操作","externalTag":"外链","unknownTag":"未知","detail":"详情","copyLink":"复制链接","moveFile":"移动","downloadFile":"下载","loadFailed":"加载失败","copySuccess":"复制成功","copyFailed":"复制失败","deleteConfirm":"此操作将永久删除该文件, 是否继续?","deleteConfirmTitle":"提示","deleteConfirmOk":"确定","deleteConfirmCancel":"取消","deleteSuccess":"删除成功","deleteFailed":"删除失败","blockConfirm":"此操作将把该文件加入黑名单, 是否继续?","blockSuccess":"加入黑名单成功","blockFailed":"加入黑名单失败","whiteConfirm":"此操作将把该文件加入白名单, 是否继续?","whiteSuccess":"加入白名单成功","whiteFailed":"加入白名单失败","deleteFolderConfirm":"此操作将永久删除文件夹, 是否继续?","deleteFileConfirm":"此操作将永久删除该文件, 是否继续?","batchDeleteConfirm":"此操作将永久删除选中的文件及文件夹, 是否继续?","batchDeleteSuccess":"批量删除成功","batchDeleteFailed":"批量删除失败","batchBlockConfirm":"此操作将把选中的文件加入黑名单, 是否继续?","batchBlockSuccess":"批量加入黑名单成功","batchBlockFailed":"批量加入黑名单失败","batchWhiteConfirm":"此操作将把选中的文件加入白名单, 是否继续?","batchWhiteSuccess":"批量加入白名单成功","batchWhiteFailed":"批量加入白名单失败","noLinksAvailable":"没有可复制的链接","batchCopySuccess":"批量复制 {count} 个链接成功","batchCopyFailed":"批量复制链接失败,请重试","batchCopyLinksSuccess":"批量复制链接成功","copyFileLinkSuccess":"复制文件链接成功","fileListMemoryCacheWarning":"文件列表较大,已切换为内存缓存;刷新页面后需要重新加载列表。","indexingWarning":"索引构建中,当前搜索和排序结果可能不准确,请稍后再试。","loadMoreFailed":"加载更多文件失败,请检查网络连接","moveSuccess":"移动成功","moveFailed":"移动失败","moveTargetSameAsCurrent":"目标文件夹不能是当前文件夹","invalidPageNumber":"请输入有效的页码","pageExceedsMax":"页码不能超过 {max}","loadingData":"正在加载数据,请稍候...","loadDataFailed":"加载数据失败,请检查网络连接","fetchFileListFailed":"获取文件列表失败","refreshFailed":"刷新失败,请重试","selectFilesFirst":"请先选择文件","syncDataError":"同步数据时出错,请检查网络连接","fetchingFileList":"正在获取文件列表...","folderEmptyNoLinks":"文件夹为空,没有可复制的链接","copiedFileLinks":"已复制 {count} 个文件链接","copyFolderLinksFailed":"复制文件夹链接失败,请重试"},"dashboardTabs":{"fileManagement":"文件管理","userManagement":"用户管理","systemSettings":"系统设置","fileUpload":"文件上传"},"fileDetail":{"title":"文件详情","download":"下载","tags":"标签","blacklist":"黑名单","whitelist":"白名单","deleteBtn":"删除","edit":"编辑","rename":"重命名","save":"保存","cancel":"取消","originUrl":"原始链接","fileNameLabel":"文件名","fileNamePlaceholder":"请输入文件名","fileType":"文件类型","fileTypePlaceholder":"如 image/jpeg","fileSizeLabel":"文件大小","imageDimensions":"图片尺寸","noDimensions":"无","uploadTimeLabel":"上传时间","channelTypeAndName":"渠道类型/名称","accessStatusAndReview":"访问状态/审查","uploadIP":"上传IP","uploadAddressLabel":"上传地址","fileTags":"文件标签","noTags":"暂无标签","unknown":"未知","accessNormal":"正常","accessNormalWhitelist":"正常(白名单)","accessBlockedBlacklist":"已屏蔽(黑名单)","accessBlockedReview":"已屏蔽(审查不通过)","orientationLandscape":"横","orientationPortrait":"竖","orientationSquare":"方","linkCopied":"链接已复制","metadataSaved":"元数据保存成功","metadataSaveFailed":"保存元数据失败","renameTitle":"重命名 File ID","renameLabel":"新 File ID","renamePlaceholder":"请输入新的 File ID","renameCancel":"取消","renameConfirm":"确认重命名","renameSuccess":"文件重命名成功","renameConflict":"目标文件名已存在","renameFailed":"重命名失败"},"filter":{"accessStatus":"访问状态","normal":"正常","blocked":"已屏蔽","blackWhiteList":"黑白名单","whiteList":"白名单","blackList":"黑名单","notSet":"未设置","reviewResult":"审查结果","teenContent":"12+内容","adultContent":"成人内容","fileType":"文件类型","image":"图片","video":"视频","audio":"音频","other":"其他","channelType":"渠道类型","externalLink":"外链","channelName":"渠道名称","clearFilters":"清除筛选"},"moveFile":{"title":"移动文件","batchTitle":"批量移动文件","targetDirectory":"目标目录","targetPlaceholder":"请输入目标目录路径","hint":"提示:路径以 / 开头表示根目录,如 /photos/2024/","hintMobile":"提示:路径以 / 开头表示根目录","selectDirectory":"选择目录","cancel":"取消","confirm":"确定","retry":"重试","authFailed":"认证失败,请重新登录","serverError":"服务器错误,请稍后重试","loadTreeFailed":"加载目录树失败,请检查网络连接"},"batchTag":{"title":"批量标签管理","addTab":"添加","removeTab":"移除","clearTab":"清空","addDescription":"为选中的 {count} 个文件添加标签","inputPlaceholder":"输入标签名称","pendingTags":"待添加的标签","noPendingTags":"暂无待添加标签","addToAllFiles":"添加到所有文件","removeDescription":"移除选中文件的共有标签","commonTags":"共有标签","noCommonTags":"选中的文件没有共有标签","clearDescription":"清空选中的 {count} 个文件的所有标签","clearWarningTitle":"⚠️警告","clearWarningDesc":"此操作将清空所有选中文件的标签,且不可恢复","confirmClearAll":"确认清空所有标签","tagAlreadyInList":"标签已在列表中","pleaseAddTags":"请先添加要批量添加的标签","addSuccess":"成功为 {count} 个文件添加标签","addFailed":"批量添加标签失败","removeSuccess":"成功从 {count} 个文件中移除标签","removeFailed":"移除标签失败","clearConfirmMessage":"确定要清空选中的 {count} 个文件的所有标签吗?此操作不可恢复。","clearConfirmTitle":"确认清空","clearConfirmOk":"确定","clearConfirmCancel":"取消","clearCancelled":"已取消清空操作","clearSuccess":"成功清空 {count} 个文件的标签","clearFailed":"清空标签失败","loadCommonTagsFailed":"加载共有标签失败"},"tagManagement":{"title":"标签管理","inputPlaceholder":"输入标签名称","currentTags":"当前标签","noTags":"暂无标签","popularTags":"常用标签","loading":"加载中...","noPopularTags":"暂无常用标签","close":"关闭","tagExists":"标签已存在","addSuccess":"标签添加成功","addFailed":"添加标签失败","removeSuccess":"标签删除成功","removeFailed":"删除标签失败","loadFailed":"加载标签失败"},"mobileAction":{"viewDetail":"查看详情","copyLink":"复制链接","downloadFile":"下载文件","moveFile":"移动文件","tagManagement":"标签管理","moveFolder":"移动文件夹","deleteFile":"删除文件","deleteFolder":"删除文件夹"},"mobileDirectory":{"title":"目录导航","rootDirectory":"根目录","goBack":"返回上一级"},"sysConfig":{"logout":"退出登录"},"sysConfigTabs":{"systemStatus":"系统状态","uploadSettings":"上传设置","securitySettings":"安全设置","pageSettings":"网页设置","otherSettings":"其他设置"},"dateRangeCalendar":{"previousMonth":"上个月","nextMonth":"下个月","startDate":"起始日期","endDate":"结束日期","rangeSeparator":"至","monthTitle":"{year}-{month}","weekdaySun":"日","weekdayMon":"一","weekdayTue":"二","weekdayWed":"三","weekdayThu":"四","weekdayFri":"五","weekdaySat":"六"},"sysStatus":{"systemOverview":"系统运行概览","healthHealthy":"运行正常","healthChecking":"正在检查","healthAttention":"状态读取异常","greetingMorning":"早上好,欢迎回来","greetingNoon":"中午好,保持好状态","greetingAfternoon":"下午好,工作顺利","greetingEvening":"晚上好,辛苦了","greetingLateNight":"夜深了,注意休息","summaryChecking":"正在连接系统服务并读取最新的索引信息…","summaryUnavailable":"暂时无法读取系统状态,请检查网络连接或稍后刷新页面。","summaryEmpty":"系统响应正常,索引服务已就绪,正在等待首个文件上传。","summaryIndexed":"系统响应正常,当前已索引 {files} 个文件。","summaryHealthy":"系统响应正常,当前已索引 {files} 个文件,覆盖 {channels} 个上传渠道。","localTime":"本地时间","localTimezone":"本地时区","totalFiles":"文件总数","clickToRefresh":"点击刷新","indexUpdateTime":"索引更新时间","systemVersion":"系统版本","clickToViewChangelog":"点击查看更新日志","channelDistribution":"上传渠道分布","fileStatusDistribution":"文件状态分布","uploadTrend":"上传趋势","uploadTrendGroupBy":"上传趋势分组方式","totalUploads":"上传总数","byChannelType":"渠道类型","byChannelName":"渠道名称","selectDateRange":"选择日期范围","otherChannels":"其他","uploadsUnit":"次","noData":"暂无数据","totalFilesLabel":"文件总数","statusTypes":"状态类型","systemMaintenance":"系统维护","rebuildIndex":"重建索引","rebuilding":"重建中...","rebuildTooltip":"重新扫描所有文件并更新索引数据,适用于数据不一致时的修复","backupData":"备份数据","backingUp":"备份中...","backupTooltip":"备份所有文件元数据和系统设置到JSON文件","restoreData":"恢复数据","restoring":"恢复中...","restoreTooltip":"从备份文件恢复数据,将覆盖现有的文件元数据和系统设置","cancelOperation":"取消操作","retry":"重试","close":"关闭","records":"条记录","aboutToComplete":"即将完成","seconds":"约 {count} 秒","minutes":"约 {count} 分钟","hoursMinutes":"约 {hours} 小时 {minutes} 分钟","phaseFetching":"正在获取数据","phaseSorting":"正在排序","phaseUploading":"正在上传","phaseFinalizing":"正在完成","phaseBuilding":"正在构建备份","phaseDownloading":"正在生成下载","phaseRestoringFiles":"正在恢复文件","phaseRestoringSettings":"正在恢复设置","phaseCompleted":"已完成","phaseRetrying":"正在重试","rebuildSuccess":"索引重建完成!共处理 {count} 个文件","backupSuccess":"备份完成!共备份 {count} 个文件","backupSuccessWithSettings":"备份完成!共备份 {fileCount} 个文件,{settingsCount} 个设置项","operationInProgress":"已有操作正在进行中","selectJsonFile":"请选择JSON格式的备份文件","restoreConfirmMessage":"恢复操作将覆盖现有的文件元数据和系统设置,此操作不可逆。确定要继续吗?","restoreConfirmTitle":"确认恢复","restoreConfirmOk":"确定恢复","restoreConfirmCancel":"取消","invalidBackupFile":"备份文件格式无效,请选择有效的 JSON 文件","restoreSuccess":"恢复完成!已恢复 {files} 个文件和 {settings} 个设置项,正在重建索引...","restoreFailed":"恢复数据失败","fetchIndexFailed":"获取索引信息失败","unknown":"未知","blocked":"已屏蔽","normalStatus":"正常","latestUpload":"最近上传","earliestUpload":"最早上传","daysAgo":"{count}天前","hoursAgo":"{count}小时前","minutesAgo":"{count}分钟前","justNow":"刚刚","cancellingRebuild":"正在取消索引重建..."},"sysUpload":{"title":"上传渠道管理","titleTooltip":"管理所有上传渠道的配置,点击卡片查看详情或编辑","filterPlaceholder":"筛选渠道类型","addChannel":"添加渠道","loadBalance":"负载均衡","unnamedChannel":"未命名渠道","envVariable":"环境变量","noChannels":"暂无 {type} 渠道","detail":"详情","editBtn":"编辑","deleteBtn":"删除","addDialogTitle":"添加新渠道","channelTypeLabel":"渠道类型","channelTypePlaceholder":"请选择渠道类型","channelNameLabel":"渠道名称","channelNamePlaceholder":"请输入渠道名称","channelNameImmutableTip":"添加后将作为文件关联渠道的唯一标识,不支持修改","channelNameEditDisabledTip":"渠道名称用于关联已上传文件,不支持修改","botTokenLabel":"Bot Token","botTokenPlaceholder":"请输入 Bot Token","chatIdLabel":"Chat ID","chatIdPlaceholder":"请输入 Chat ID","proxyDomain":"代理域名","proxyDomainPlaceholder":"可选,例如: your-proxy.example.com","endpointLabel":"Endpoint","endpointPlaceholder":"例如: https://s3.us-east-005.backblazeb2.com","cdnDomain":"CDN 域名","cdnDomainPlaceholder":"可选,请填写完整 CDN 访问地址前缀,例如:https://cdn.example.com","cdnDomainTip":"可选配置。可用于生成和展示文件访问链接,服务端读取文件内容时也会优先尝试通过 CDN 读取。","bucketName":"存储桶名称","bucketNamePlaceholder":"请输入存储桶名称","bucketRegion":"存储桶区域","bucketRegionPlaceholder":"默认填写 auto","accessKeyId":"访问密钥 ID","accessKeyIdPlaceholder":"请输入访问密钥 ID","secretAccessKey":"机密访问密钥","secretAccessKeyPlaceholder":"请输入机密访问密钥","pathStyle":"路径风格","pathStyleTip":"使用 OpenList 等不兼容主机风格服务时需开启","quotaLimit":"容量限制","quotaLimitGB":"容量上限 (GB)","quotaThreshold":"停用阈值 (%)","channelIdLabel":"Channel ID","channelIdPlaceholder":"请输入 Channel ID","nitroMember":"Nitro 会员","nitroTip":"会员单文件限制 25MB,否则为 10MB","discordWarning":"Discord 有接口频率限制,不建议将其用作大规模并发场景","repoName":"仓库名","repoNamePlaceholder":"格式: username/repo-name","accessToken":"Access Token","accessTokenPlaceholder":"请输入 Access Token","privateRepo":"私有仓库","privateRepoTip":"私有仓库限制 100GB","webdavBaseUrl":"WebDAV 基础地址","webdavBaseUrlPlaceholder":"例如: https://dav.example.com/remote.php/dav/files/user/imgbed/","webdavUsername":"用户名","webdavUsernamePlaceholder":"可选用户名","webdavPassword":"密码","webdavPasswordPlaceholder":"可选密码","webdavPublicUrlPlaceholder":"可选,请填写完整公开访问地址前缀,例如:https://cdn.example.com/imgbed","webdavPublicUrlTip":"可选配置。服务端读取文件内容时会优先尝试通过该公开地址读取,失败后回退 WebDAV API。","webdavHeaders":"自定义请求头","webdavHeadersPlaceholder":"可选 JSON 对象,例如: {\'{\\"X-Api-Key\\":\\"value\\"}\'}","webdavHeadersInvalid":"自定义请求头必须是有效的 JSON 对象","webdavCreateDirectory":"自动创建目录","webdavCreateDirectoryTip":"上传文件前自动创建父级目录","cancel":"取消","confirmAdd":"确认添加","detailDialogTitle":"渠道详情 - {name}","channelNameDetail":"渠道名称","channelTypeDetail":"渠道类型","statusLabel":"状态","enabled":"已启用","disabled":"已禁用","configSource":"配置来源","publicUrl":"公开访问链接","notSet":"未设置","isPathStyle":"是","isNotPathStyle":"否","currentUsage":"当前用量","closeBtn":"关闭","editDialogTitle":"编辑渠道 - {name}","enableChannel":"启用渠道","saveChanges":"保存修改","r2ConfigNote":"请按照
配置 R2 渠道 文档说明添加 R2 渠道","reservedName":"该名称为系统保留名称,请使用其他名称","duplicateName":"该类型下已存在同名渠道,请使用其他名称","fixedChannelCannotDelete":"环境变量配置的渠道无法删除","deleteChannelConfirm":"确定要删除该渠道吗?删除后,仍关联该渠道的文件可能无法访问。","quotaInitConfirm":"首次启用容量限制需要统计现有文件容量,这可能需要一些时间。是否立即统计?","quotaInitTitle":"初始化容量统计","quotaInitConfirmBtn":"立即统计","quotaInitCancelBtn":"稍后手动统计","quotaInitLater":"您可以稍后点击刷新按钮手动统计","quotaCalculating":"正在统计容量,请稍候...","quotaCalculateSuccess":"容量统计完成","quotaCalculateFailed":"统计失败","quotaCalculateError":"统计失败: "},"sysSecurity":{"authManagement":"认证管理","userAuth":"用户端认证","adminAuth":"管理端认证","uploadPassword":"上传密码","confirmPassword":"确认密码","adminUsername":"用户名","adminPassword":"密码","apiTokenManagement":"API Token 管理","imageReview":"图像审查","imageReviewTooltip":"仅对非分块上传文件生效,支持 nsfwjs 和 moderatecontent.com 渠道","enableReview":"开启审查","reviewChannel":"审查渠道","reviewChannelPlaceholder":"请选择审查渠道","apiKey":"API Key","apiPath":"API 路径","ipQuery":"IP 归属地查询","ipQueryTooltip":"上传时按配置调用自定义 API 查询上传 IP 归属地,参数值支持 {\'{ip}\'} 占位符","enableIpQuery":"开启查询","ipQueryChannel":"查询渠道","ipQueryChannelPlaceholder":"请选择查询渠道","customApi":"自定义 API","queryParams":"查询参数","paramNamePlaceholder":"参数名","paramValuePlaceholder":"参数值,如 {\'{ip}\'}","addQueryParam":"添加参数","responseFields":"响应字段","responseFieldsTip":"最终显示内容会按照字段顺序拼接","responseFieldPathPlaceholder":"JSON 路径,如 country.name","addResponseField":"添加字段","uploadManagement":"上传管理","accessManagement":"访问管理","domainFilter":"域名过滤","allowedDomains":"放行域名","allowedDomainsTooltip":"1.针对访问域名设置权限
2.留空默认全部放行,多个域名请用英文逗号分隔","whiteListMode":"白名单模式","enableWhiteList":"是否开启","enableWhiteListTooltip":"1.针对文件设置权限
2.开启后,仅被加入白名单的文件可被访问","imageTransform":"图片尺寸处理","enableImageTransform":"是否开启","enableImageTransformTooltip":"开启后,读取文件接口可通过 width、height 和 fit 参数处理图片尺寸","imageTransformAllowedSizes":"允许尺寸","imageTransformAllowedSizesPlaceholder":"例如 320xauto,640xauto,1280x720","imageTransformAllowedSizesHint":"留空允许任意合法尺寸
多个尺寸用英文逗号分隔,单边未限制时填写 auto","imageTransformAllowedSizesInvalid":"尺寸格式无效,请使用 320xauto、autox480 或 1280x720,单边最大 4096","settingsSaved":"设置已保存","tokenName":"名称","tokenValue":"Token","permissions":"权限","createdAt":"创建时间","status":"状态","expiresAt":"过期时间","operation":"操作","editBtn":"编辑","deleteBtn":"删除","permUpload":"上传","permDelete":"删除","permList":"列出","permManage":"管理","createTokenTitle":"创建新 API Token","tokenNameLabel":"Token 名称","tokenNamePlaceholder":"请输入Token名称","permissionsLabel":"权限","neverExpire":"永不过期","validPeriod":"有效期","autoDeleteOnExpire":"过期自动删除","createBtn":"创建","editTokenTitle":"编辑 API Token","updateBtn":"更新","tokenCreatedTitle":"Token 创建成功","tokenCreatedWarning":"请妥善保存以下Token,关闭此窗口后将无法再次查看完整Token!","fullToken":"完整Token","copyBtn":"复制","savedBtn":"我已保存","tokenCopied":"Token已复制到剪贴板","copyFailed":"复制失败,请手动复制","tokenCreateSuccess":"Token创建成功","tokenCreateFailed":"Token创建失败","tokenUpdateSuccess":"Token更新成功","tokenUpdateFailed":"Token更新失败","tokenDeleteConfirm":"此操作将永久删除该Token,是否继续?","tokenDeleteConfirmTitle":"提示","tokenDeleteConfirmOk":"确定","tokenDeleteConfirmCancel":"取消","tokenDeleteSuccess":"Token删除成功","tokenDeleteFailed":"Token删除失败","tokenListFailed":"获取Token列表失败","passwordUrlReserved":"密码不能包含部分URL保留字符: % & ? # /","confirmUploadPassword":"请再次输入上传密码","confirmAdminPassword":"请再次输入管理密码","passwordMismatch":"两次输入密码不一致","passwordUnchanged":"未修改(留空保持原密码)","adminPasswordChangedRelogin":"管理端密码已修改,即将跳转到登录页","clearPassword":"清除认证信息","tokenNameRequired":"请输入Token名称","permissionsRequired":"请选择权限","validPeriodRequired":"有效期数值必须大于 0","timeUnitSeconds":"秒","timeUnitMinutes":"分钟","timeUnitHours":"小时","timeUnitDays":"天","timeUnitMonths":"月","timeUnitYears":"年","sessionSecurityPolicy":"会话安全策略","secureMode":"Secure 模式","secureModeTooltip":"开启后,Cookie 仅通过 HTTPS 连接传输,请确保您的站点已启用 HTTPS","userSessionMaxAge":"用户端会话有效期","adminSessionMaxAge":"管理端会话有效期","sessionMaxAgeUnit":"天","sessionMaxAgeInvalid":"会话有效期必须为 1-3650 的正整数"},"sysPage":{"settingsSaved":"设置已保存","refreshAnnouncement":"刷新公告已读状态","otherSettings":"其他设置","channelSelectPlaceholder":"请先选择上传渠道"},"sysOthers":{"remoteTelemetry":"远端遥测","remoteTelemetryTooltip":"便于问题查找和定位,建议开启","enable":"启用","cloudflareApiToken":"CloudFlare API Token","cloudflareApiTokenTooltip":"设置后可以使后端拉黑、删除等操作不受CDN缓存限制
建议设置,设置方式请查阅文档","zoneId":"区域ID","accountEmail":"账户邮箱","randomImageApi":"随机图像API","randomImageApiTooltip":"API具体用法请查阅文档","directory":"目录","directoryTooltip":"1. 开放随机图权限的目录,默认为根目录,多个目录用逗号分隔
2. 目录均采用绝对路径,例如/img/cover,表示该目录及其所有子目录的文件可被随机图API访问","publicBrowse":"访客图库","publicBrowseTooltip":"启用后,访客可通过 /browse 路径浏览指定目录的图片(只读,无法删除/移动)","openDirectory":"开放目录","openDirectoryTooltip":"

5H#NcHG@}ZJS)fJFatl%Y*CKu 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